/* ==========================================================================
   MAQUETTE 04 — « ONE PAGE » · Chandeng
   Le couloir de la galerie en prologue, puis un éditorial sobre.
   Typographie : Futura BT (Book 400 / Medium 500 / Bold 700) — locale.
   Noir #0A0A0B, lumière chaude. Animations : transform/opacity uniquement.
   ========================================================================== */

:root{
  --bg:#0A0A0B;
  --ink:#F2EFE9;
  --ink-dim:rgba(242,239,233,.5);
  --ink-faint:rgba(242,239,233,.32);
  --warm:#FFE9D0;
  --font:'Futura BT','Futura','Century Gothic',sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --hair:rgba(255,255,255,.25);
  --edge:rgba(255,255,255,.09);
  --pad:clamp(24px,4.5vw,56px);
}

*{margin:0;padding:0;box-sizing:border-box}
html{background:var(--bg);scroll-behavior:smooth}

body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  font-weight:400;
  font-size:14px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

::selection{background:rgba(255,233,208,.22);color:var(--ink)}
a{color:inherit}

:focus-visible{outline:1px solid var(--hair);outline-offset:4px}

/* ---- canvas fixe en fond ------------------------------------------------ */
#bg{position:fixed;inset:0;z-index:0}
#bg canvas{display:block;width:100%;height:100%}

/* ---- entrée : fade + translateY, stagger par --d ------------------------ */
.anim{opacity:0;transform:translateY(18px)}
body.is-loaded .anim{
  opacity:1;transform:none;
  transition:opacity 1s var(--ease),transform 1s var(--ease);
  transition-delay:var(--d,0s);
}

/* ---- nav ---------------------------------------------------------------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:20;
  display:flex;justify-content:space-between;align-items:center;
  padding:26px var(--pad);
  font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  transition:background .5s ease,padding .5s ease,border-color .5s ease;
  border-bottom:1px solid transparent;
}
.nav.is-solid{
  background:rgba(10,10,11,.78);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-bottom-color:var(--edge);
  padding:16px var(--pad);
}
.nav .brand{font-weight:700;letter-spacing:.06em;text-decoration:none}
.nav-links{display:flex;align-items:center;gap:10px;color:var(--ink-dim)}
.nav-links a{color:var(--ink-dim);text-decoration:none;transition:color .25s ease}
.nav-links a:hover{color:var(--ink)}
.nav-links .dot{opacity:.6}

/* ---- hero --------------------------------------------------------------- */
.hero{position:relative;z-index:3;height:100vh;height:100svh;pointer-events:none}
.hero-inner{
  position:relative;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:0 24px;
  will-change:opacity,transform;
}
.hero-kicker{font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}
.hero-title{
  font-family:var(--font);font-weight:500;
  font-size:clamp(3.2rem,8.2vw,7.2rem);
  line-height:.98;letter-spacing:.015em;text-transform:uppercase;
  margin:2.2vh 0 2vh;
}
.hero-claim{
  font-family:var(--font);font-weight:500;
  font-size:clamp(20px,1.9vw,27px);
  line-height:1.42;max-width:34em;color:var(--ink);
}
.hero-sub{
  margin-top:1.8vh;
  font-size:clamp(11px,1vw,12.5px);font-weight:500;
  letter-spacing:.1em;line-height:2;text-transform:uppercase;
  color:var(--ink-dim);max-width:60em;
}

.hero-hint{
  position:absolute;left:0;right:0;margin:0 auto;width:max-content;
  bottom:4.5vh;
  display:flex;flex-direction:column;align-items:center;gap:14px;
  font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);
  text-align:center;white-space:nowrap;
}
.hint-line{position:relative;width:1px;height:44px;background:rgba(242,239,233,.16);overflow:hidden}
.hint-line::after{
  content:"";position:absolute;left:0;top:0;width:1px;height:32%;
  background:linear-gradient(rgba(242,239,233,0),var(--ink));
  transform:translateY(-120%);
  animation:hintDrop 2.6s var(--ease) infinite;
}
@keyframes hintDrop{
  0%{transform:translateY(-120%)}
  45%{transform:translateY(340%)}
  100%{transform:translateY(340%)}
}

/* ---- couloir : la zone de scroll ---------------------------------------- */
.stage{height:340vh;position:relative;z-index:1}

/* ---- étiquettes --------------------------------------------------------- */
.cartels{position:fixed;inset:0;z-index:4;pointer-events:none}
.cartel{
  position:absolute;top:53%;
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;line-height:1.75;
  opacity:0;will-change:opacity,transform;
}
.cartel::before{content:"";display:block;width:34px;height:1px;background:var(--hair);margin-bottom:16px}
.cartel.left{left:clamp(24px,7vw,112px)}
.cartel.right{right:clamp(24px,7vw,112px);text-align:right}
.cartel.right::before{margin-left:auto}
.cartel-no{display:block;font-weight:700;color:var(--ink)}
.cartel-name{display:block;font-weight:400;color:var(--ink-dim)}

/* ---- sections éditoriales (fond opaque au-dessus du canvas) ------------- */
.demo,.savoir,.parcours,.showreels,.zoom,.marques,.contact,.footer{
  position:relative;z-index:3;background:var(--bg);
}
.demo{padding:26vh var(--pad) 18vh}
.savoir{padding:6vh var(--pad) 20vh}
.parcours{padding:4vh var(--pad) 20vh}
.showreels{padding:2vh var(--pad) 20vh}
.zoom{padding:2vh var(--pad) 20vh}
.marques{padding:6vh var(--pad) 12vh}
.contact{padding:16vh var(--pad) 12vh}

.sec-head{max-width:1280px;margin:0 auto}
.sec-title{
  font-family:var(--font);font-weight:500;
  font-size:clamp(2.3rem,4.6vw,3.7rem);line-height:1.04;letter-spacing:.005em;
}
.sec-meta,.sec-kicker{
  margin-top:2.2vh;font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);
}
.sec-intro{
  margin-top:3.5vh;max-width:46em;
  font-family:var(--font);font-weight:400;font-size:clamp(20px,1.65vw,24px);line-height:1.55;
}

/* ---- 2 · salle de projection (bande démo) ------------------------------- */
.player{
  position:relative;max-width:1100px;margin:7vh auto 0;
  aspect-ratio:16/9;background:#000;border:1px solid var(--edge);
  overflow:hidden;
}
.player video{display:block;width:100%;height:100%;object-fit:cover}

.player-play{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:76px;height:76px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--ink);background:rgba(10,10,11,.45);border:1px solid rgba(255,255,255,.35);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  cursor:pointer;transition:opacity .4s ease,border-color .3s ease,transform .3s ease;
  padding-left:4px;
}
.player-play:hover{border-color:var(--ink);transform:translate(-50%,-50%) scale(1.05)}
.player.is-playing .player-play{opacity:0;pointer-events:none}
.player-play[hidden]{display:none}

.player-sound{
  position:absolute;right:18px;bottom:18px;
  width:44px;height:44px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--ink);background:rgba(10,10,11,.55);border:1px solid rgba(255,255,255,.25);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  cursor:pointer;transition:border-color .3s ease,opacity .3s ease;
}
.player-sound:hover{border-color:var(--ink)}
.player-sound .ico-on{display:none}
.player-sound.is-on .ico-on{display:block}
.player-sound.is-on .ico-off{display:none}

/* ---- timeline permanente du lecteur ------------------------------------- */
.player::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:76px;
  background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.62));
  pointer-events:none;
}
.player-play,.player-sound{z-index:3}
.player-timeline{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:24px 14px 0;cursor:pointer;touch-action:none;
}
.player-time{
  position:absolute;left:14px;bottom:13px;
  font-size:10.5px;font-weight:500;letter-spacing:.08em;
  color:rgba(242,239,233,.8);font-variant-numeric:tabular-nums;
  pointer-events:none;text-shadow:0 1px 4px rgba(0,0,0,.7);
}
.player-track{position:relative;height:2px;background:rgba(255,255,255,.22);transition:height .18s ease}
.player-progress{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--ink)}
.player-knob{
  position:absolute;top:50%;left:0;width:9px;height:9px;margin-left:-4.5px;
  border-radius:50%;background:var(--ink);transform:translateY(-50%);
  box-shadow:0 0 0 3px rgba(10,10,11,.35);
}
.player-timeline:hover .player-track,.player-timeline:focus-visible .player-track{height:4px}

/* ---- 3 · savoir-faire ---------------------------------------------------- */
.skills{
  max-width:1280px;margin:8vh auto 0;
  display:grid;grid-template-columns:1fr 1fr;gap:7vh 6vw;
}
.skill::before{content:"";display:block;width:34px;height:1px;background:var(--hair);margin-bottom:20px}
.skill h3{
  font-family:var(--font);font-weight:500;
  font-size:clamp(22px,2vw,27px);line-height:1.2;
}
.skill p{
  margin-top:1.6vh;max-width:46ch;
  font-family:var(--font);font-weight:400;font-size:clamp(17px,1.4vw,19px);line-height:1.6;
  color:var(--ink-dim);
}

/* ---- 4 · mon parcours ---------------------------------------------------- */
.parcours-body{max-width:1280px;margin:6vh auto 0}
.parcours-body p{
  font-family:var(--font);font-weight:400;font-size:clamp(20px,1.75vw,24px);line-height:1.65;
}
.parcours-body p + p{margin-top:4.5vh}
.parcours-note{
  margin-top:7vh !important;
  font-family:var(--font) !important;font-weight:500 !important;font-size:11px !important;
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint) !important;
}

/* ---- 5 · showreels ------------------------------------------------------- */
.reels{
  max-width:1280px;margin:8vh auto 0;
  display:grid;grid-template-columns:repeat(4,1fr);gap:2.2vw 1.6vw;
}
.reel{
  appearance:none;background:none;border:0;padding:0;text-align:left;color:inherit;
  font:inherit;cursor:pointer;display:block;
}
.reel-thumb{
  position:relative;display:block;aspect-ratio:16/9;overflow:hidden;
  background:#0d0d0e;border:1px solid var(--edge);
}
.reel-thumb img{
  display:block;width:100%;height:100%;object-fit:cover;opacity:.82;
  transform:scale(1.001);
  transition:transform .7s var(--ease),opacity .5s ease;
}
.reel:hover .reel-thumb img,.reel:focus-visible .reel-thumb img{transform:scale(1.035);opacity:1}

.reel-play{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:46px;height:46px;border-radius:50%;
  border:1px solid rgba(255,255,255,.4);background:rgba(10,10,11,.4);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .35s ease;
}
.reel-play::after{
  content:"";position:absolute;top:50%;left:50%;transform:translate(-38%,-50%);
  border-left:11px solid var(--ink);border-top:7px solid transparent;border-bottom:7px solid transparent;
}
.reel:hover .reel-play,.reel:focus-visible .reel-play{opacity:1}
@media (hover:none){.reel-play{opacity:.85}}

.reel-meta{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding-top:12px;font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
}
.reel-year{color:rgba(242,239,233,.85)}
.reel-dur{color:var(--ink-faint);font-weight:400;white-space:nowrap}

/* ---- 6 · zoom sur les projets -------------------------------------------- */
.zoom-claim{
  font-family:var(--font);font-weight:400;
  font-size:clamp(20px,1.65vw,24px);line-height:1.55;
  max-width:60em;margin:0 auto;text-align:center;
}
.zoom-stage{max-width:1280px;margin:7vh auto 0;border:1px solid var(--edge);background:#000}
.zoom-stage video{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}

/* ---- 7 · le mur des marques ---------------------------------------------- */
.marques-mur{max-width:1280px;margin:0 auto;border:1px solid var(--edge)}
.marques-mur img{display:block;width:100%;height:auto}
.marques-nums{
  margin-top:8vh;text-align:center;
  font-size:12px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim);
}

/* ---- 8 · contact --------------------------------------------------------- */
.contact-claim{
  font-family:var(--font);font-weight:500;
  font-size:clamp(30px,4vw,54px);line-height:1.12;max-width:20em;
}
.contact-grid{
  margin-top:9vh;display:flex;justify-content:space-between;align-items:flex-end;
  gap:6vh 60px;flex-wrap:wrap;max-width:1280px;
}
.contact-q{
  max-width:26em;font-family:var(--font);font-weight:400;font-size:clamp(19px,1.55vw,22px);line-height:1.55;
  color:var(--ink-dim);
}
.contact-co{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.contact-mail{
  font-family:var(--font);font-weight:500;font-size:clamp(15px,1.25vw,17px);letter-spacing:.01em;
  text-decoration:none;border-bottom:1px solid var(--hair);padding-bottom:3px;
  transition:border-color .25s ease;
}
.contact-mail:hover{border-color:var(--ink)}
.contact-tel{
  font-family:var(--font);font-weight:400;font-size:14px;letter-spacing:.04em;color:var(--ink-dim);
  text-decoration:none;transition:color .25s ease;
}
.contact-tel:hover{color:var(--ink)}
.contact-note{
  margin-top:8px;font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);
}

/* ---- footer / mentions --------------------------------------------------- */
.footer{border-top:1px solid var(--edge);padding:6vh var(--pad)}
.footer-legal{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:rgba(242,239,233,.35)}

/* ---- lecteur plein écran (lightbox) -------------------------------------- */
.lightbox{
  position:fixed;inset:0;z-index:60;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:5vh 5vw;background:rgba(8,8,9,.96);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.lightbox[hidden]{display:none}
.lb-title{
  font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);
  margin-bottom:16px;
}
.lb-stage{width:min(1160px,94vw)}
.lb-stage video,
.lb-stage iframe{display:block;width:100%;aspect-ratio:16/9;background:#000;border:1px solid var(--edge)}
.lb-stage video[hidden],
.lb-stage iframe[hidden]{display:none}
.lb-close{
  position:fixed;top:3vh;right:4vw;width:48px;height:48px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:var(--ink);
  background:rgba(10,10,11,.5);border:1px solid rgba(255,255,255,.3);cursor:pointer;
  transition:border-color .3s ease;
}
.lb-close:hover{border-color:var(--ink)}

/* ---- révélations des sections HTML -------------------------------------- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.is-in{opacity:1;transform:none}
.skills .reveal:nth-child(2n){transition-delay:.08s}
.reels .reveal:nth-child(4n+2){transition-delay:.06s}
.reels .reveal:nth-child(4n+3){transition-delay:.12s}
.reels .reveal:nth-child(4n+4){transition-delay:.18s}

/* ---- grain + vignette ---------------------------------------------------- */
.vignette{
  position:fixed;inset:0;z-index:5;pointer-events:none;
  background:radial-gradient(125% 95% at 50% 42%,rgba(0,0,0,0) 40%,rgba(0,0,0,.5) 100%);
}
.grain{
  position:fixed;inset:0;z-index:6;pointer-events:none;opacity:.045;
  background-size:160px 160px;
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='160'%20height='160'%3E%3Cfilter%20id='n'%3E%3CfeTurbulence%20type='fractalNoise'%20baseFrequency='0.8'%20numOctaves='2'%20stitchTiles='stitch'/%3E%3CfeColorMatrix%20type='saturate'%20values='0'/%3E%3C/filter%3E%3Crect%20width='160'%20height='160'%20filter='url(%23n)'/%3E%3C/svg%3E");
}

.noscript{
  position:fixed;bottom:24px;left:24px;z-index:30;
  font-size:11px;letter-spacing:.08em;color:var(--ink-dim);
}

/* ---- responsive ---------------------------------------------------------- */
section[id]{scroll-margin-top:84px}
@media (max-width:1199px){
  .reels{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:899px){
  .skills{grid-template-columns:1fr;gap:6vh}
  .reels{grid-template-columns:repeat(2,1fr)}
  .contact-grid{flex-direction:column;align-items:flex-start}
}
@media (max-width:599px){
  .reels{grid-template-columns:1fr;gap:22px}
  .reel,.reel-thumb,.reel-meta{min-width:0}
}
@media (max-width:767px){
  .nav-links{display:none}
  .cartel.left,.cartel.right{left:0;right:0;text-align:center;top:auto;bottom:9vh;padding:0 24px}
  .cartel::before{margin:0 auto 12px}
  .cartel.right::before{margin:0 auto 12px}
  .hero-title{letter-spacing:.005em}
  .hero-claim br{display:none}
  .demo{padding-top:18vh}
  .player-play{width:58px;height:58px}
}

/* ---- reduced motion ------------------------------------------------------ */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .anim{opacity:1;transform:none;transition:none}
  .hint-line::after{animation:none;display:none}
  .reveal{opacity:1;transform:none;transition:none}
  .nav-links a,.footer-contact a,.reel-thumb img,.player-play,.player-sound,.lb-close{transition:none}
}
