:root{
    --noir:#0a0a0a;
    --noir2:#121212;
    --or1:#ecd29a;
    --or2:#c49a4e;
    --or3:#8a6528;
    --blanc:#f4efe6;
    --gris:#9a948a;
    --display:"Jost","Futura","Avenir Next Condensed","Trebuchet MS",Arial,sans-serif;
    --body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
    --serif:Georgia,"Times New Roman",serif;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  body{
    background:var(--noir);
    color:var(--blanc);
    font-family:var(--body);
    overflow-x:hidden;
  }
  ::selection{background:var(--or2);color:var(--noir)}

  /* ---------- fixed canvas background ---------- */
  #bg{position:fixed;inset:0;z-index:0;background:var(--noir)}
  #film{width:100%;height:100%;display:block}
  #bg::after{
    content:"";position:absolute;inset:0;
    background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%);
    pointer-events:none;
  }

  #progress{
    position:fixed;top:0;left:0;height:3px;width:0%;z-index:50;
    background:linear-gradient(90deg,var(--or3),var(--or1));
    box-shadow:0 0 12px rgba(232,200,122,.6);
  }

  header{
    position:fixed;top:0;left:0;right:0;z-index:40;
    display:flex;align-items:center;justify-content:space-between;
    padding:22px 34px;
    background:linear-gradient(180deg,rgba(10,10,10,.75),transparent);
  }
  .wordmark{
    font-family:var(--display);
    font-size:20px;letter-spacing:.42em;text-transform:uppercase;font-weight:700;
    background:linear-gradient(115deg,var(--or1) 20%,var(--or2) 55%,var(--or1) 90%);
    -webkit-background-clip:text;background-clip:text;color:transparent;
    text-decoration:none;
  }
  nav{display:flex;gap:28px}
  nav a{
    color:var(--blanc);opacity:.75;text-decoration:none;
    font-size:12px;letter-spacing:.22em;text-transform:uppercase;
    transition:opacity .25s,color .25s;
  }
  nav a:hover,nav a:focus-visible{opacity:1;color:var(--or1)}
  nav a:focus-visible{outline:1px solid var(--or2);outline-offset:4px}
  nav a{position:relative}
  nav a::after{
    content:"";position:absolute;left:0;right:100%;bottom:-6px;height:1px;
    background:linear-gradient(90deg,var(--or1),var(--or2));
    transition:right .35s ease;
  }
  nav a.active{opacity:1;color:var(--or1)}
  nav a.active::after{right:0}
  @media(max-width:760px){nav{display:none}}
  .book{
    font-family:var(--display);font-size:11px;letter-spacing:.28em;text-transform:uppercase;
    color:var(--noir);font-weight:700;text-decoration:none;
    background:linear-gradient(115deg,var(--or1),var(--or2));
    padding:10px 20px;border-radius:2px;white-space:nowrap;
  }
  .book:hover{filter:brightness(1.12)}

  /* ---------- viewfinder HUD ---------- */
  .mono{font-family:"SF Mono",Menlo,Consolas,monospace}
  #telemetry{
    position:fixed;top:70px;right:34px;z-index:39;
    font-family:"SF Mono",Menlo,Consolas,monospace;
    font-size:10px;letter-spacing:.22em;color:var(--or2);
    text-transform:uppercase;opacity:.85;text-align:right;
  }
  #timecode{
    position:fixed;bottom:26px;left:34px;z-index:39;
    font-family:"SF Mono",Menlo,Consolas,monospace;
    font-size:11px;letter-spacing:.24em;color:var(--or1);
    text-transform:uppercase;opacity:.9;display:flex;align-items:center;gap:10px;
  }
  #timecode .rec{
    width:8px;height:8px;border-radius:50%;background:#c0392b;
    animation:blink 1.4s steps(1) infinite;
  }
  @keyframes blink{50%{opacity:.15}}
  @media(prefers-reduced-motion:reduce){#timecode .rec{animation:none}}
  @media(max-width:760px){#telemetry{display:none}}

  #reticle{
    position:fixed;z-index:38;left:50%;top:54%;
    width:130px;height:130px;transform:translate(-50%,-50%);
    pointer-events:none;
  }
  #reticle::before{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;
    transform:translate(-50%,-50%);border-radius:50%;background:var(--or1);
    box-shadow:0 0 10px var(--or1);}
  #reticle i{position:absolute;width:26px;height:26px;border:2px solid var(--or1);opacity:.95}
  #reticle i:nth-child(1){left:0;top:0;border-right:none;border-bottom:none}
  #reticle i:nth-child(2){right:0;top:0;border-left:none;border-bottom:none}
  #reticle i:nth-child(3){left:0;bottom:0;border-right:none;border-top:none}
  #reticle i:nth-child(4){right:0;bottom:0;border-left:none;border-top:none}
  #reticle span{
    position:absolute;left:50%;bottom:-24px;transform:translateX(-50%);
    font-family:"SF Mono",Menlo,Consolas,monospace;font-size:9px;
    letter-spacing:.3em;color:var(--or1);white-space:nowrap;
  }

  #track{position:relative;z-index:10}
  .stage{
    min-height:100vh;position:relative;
    display:flex;align-items:center;justify-content:center;
  }
  .breath{min-height:55vh}

  .panel{
    width:min(1060px,92vw);
    background:linear-gradient(165deg,rgba(10,10,10,.87),rgba(14,13,11,.78));
    -webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);
    border:1px solid rgba(196,154,78,.28);
    border-radius:4px;
    padding:clamp(34px,6vw,72px);
    visibility:hidden;
  }

  .kicker{
    font-family:var(--display);
    font-size:12px;letter-spacing:.5em;text-transform:uppercase;
    color:var(--or2);margin-bottom:18px;
  }
  .more{
    display:inline-block;margin-top:24px;
    font-family:var(--display);font-size:12px;letter-spacing:.3em;text-transform:uppercase;
    color:var(--or1);text-decoration:none;font-weight:700;
    border-bottom:1px solid rgba(196,154,78,.5);padding-bottom:6px;
    transition:color .25s,border-color .25s;
  }
  .more:hover,.more:focus-visible{color:var(--blanc);border-color:var(--or1)}
  .quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:8px}
  @media(max-width:820px){.quotes{grid-template-columns:1fr}}
  .quotes blockquote{
    border-left:1px solid rgba(196,154,78,.45);padding-left:20px;margin:0;
  }
  .quotes .q{font-size:15px;line-height:1.7;color:var(--blanc);font-style:italic}
  .quotes .who{
    margin-top:14px;font-size:10px;letter-spacing:.22em;
    text-transform:uppercase;color:var(--or2);
  }
  /* FAQ — accordéon natif details/summary */
  .faq{margin-top:8px}
  .faq details{border-top:1px solid rgba(196,154,78,.28)}
  .faq details:last-child{border-bottom:1px solid rgba(196,154,78,.28)}
  .faq summary{
    cursor:pointer;list-style:none;padding:20px 34px 20px 0;position:relative;
    font-family:var(--display);font-size:15px;letter-spacing:.14em;
    text-transform:uppercase;font-weight:700;color:var(--blanc);
    transition:color .25s;
  }
  .faq summary::-webkit-details-marker{display:none}
  .faq summary::after{
    content:"+";position:absolute;right:6px;top:50%;transform:translateY(-50%);
    font-family:"SF Mono",Menlo,Consolas,monospace;font-size:18px;color:var(--or2);
    transition:transform .3s;
  }
  .faq details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
  .faq summary:hover,.faq summary:focus-visible{color:var(--or1)}
  .faq details p{padding:0 0 22px;max-width:66ch}
  /* ouverture fluide (navigateurs modernes : hauteur interpolée + fondu ;
     anciens : bascule instantanée, contenu toujours accessible) */
  .faq details::details-content{
    display:block;block-size:0;overflow:hidden;opacity:0;
    transform:translateY(-6px);
    transition:block-size .38s cubic-bezier(.4,0,.2,1),
               opacity .3s ease .08s,
               transform .38s cubic-bezier(.4,0,.2,1),
               content-visibility .38s allow-discrete;
  }
  .faq details[open]::details-content{
    block-size:auto;block-size:calc-size(auto, size);
    opacity:1;transform:none;
  }
  @media(prefers-reduced-motion:reduce){
    .faq details::details-content{transition:none}
  }
  h1,h2{
    font-family:var(--display);text-transform:uppercase;font-weight:700;
    letter-spacing:.08em;line-height:1.06;text-wrap:balance;
  }
  h2{font-size:clamp(30px,4.6vw,54px);margin-bottom:22px}
  .gold{
    background:linear-gradient(115deg,var(--or1),var(--or2));
    -webkit-background-clip:text;background-clip:text;color:transparent;
  }
  .serif{
    font-family:var(--serif);font-style:italic;font-weight:400;
    text-transform:none;letter-spacing:.02em;
  }
  .panel p{color:var(--gris);font-size:16px;line-height:1.75;max-width:62ch}
  .panel p strong{color:var(--blanc);font-weight:600}

  #hero{flex-direction:column;text-align:center;min-height:100vh}
  #hero .logo{
    width:clamp(56px,10vh,92px);height:clamp(56px,10vh,92px);border-radius:50%;
    border:1px solid rgba(196,154,78,.5);
    box-shadow:0 0 40px rgba(196,154,78,.25);
    margin-bottom:clamp(14px,3vh,34px);
  }
  #hero h1{
    font-size:clamp(44px,9vw,116px);letter-spacing:.3em;padding-left:.3em;
    background:linear-gradient(115deg,var(--or1) 15%,var(--or2) 50%,var(--or1) 85%);
    -webkit-background-clip:text;background-clip:text;color:transparent;
    filter:drop-shadow(0 4px 30px rgba(0,0,0,.8));
  }
  #hero .sub{
    margin-top:20px;font-size:clamp(13px,1.6vw,17px);
    letter-spacing:.48em;text-transform:uppercase;color:var(--blanc);opacity:.9;
  }
  #hero .regions{margin-top:14px;font-size:12px;letter-spacing:.34em;color:var(--gris)}
  .scrollcue{
    margin-top:clamp(30px,8vh,80px);
    display:flex;flex-direction:column;align-items:center;gap:10px;
    font-size:11px;letter-spacing:.4em;text-transform:uppercase;color:var(--or1);
  }
  .scrollcue .line{
    width:1px;height:56px;overflow:hidden;position:relative;
    background:rgba(196,154,78,.25);
  }
  .scrollcue .line::after{
    content:"";position:absolute;left:0;top:-50%;width:100%;height:50%;
    background:linear-gradient(180deg,transparent,var(--or1));
    animation:drop 1.8s ease-in-out infinite;
  }
  @keyframes drop{to{top:110%}}
  @media(prefers-reduced-motion:reduce){.scrollcue .line::after{animation:none}}

  .manifest{
    text-align:center;background:none;border:none;
    -webkit-backdrop-filter:none;backdrop-filter:none;
  }
  .manifest h2{
    font-size:clamp(34px,6vw,80px);letter-spacing:.14em;
    text-shadow:0 4px 40px rgba(0,0,0,.9);
  }
  .manifest p{
    margin:26px auto 0;color:var(--blanc);opacity:.85;font-size:18px;
    text-shadow:0 2px 18px rgba(0,0,0,.9);
  }

  .chapter-grid{
    display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(24px,4vw,52px);
    align-items:center;
  }
  @media(max-width:820px){.chapter-grid{grid-template-columns:1fr}}
  .chapter-grid .photos{display:grid;gap:14px}
  .chapter-grid .photos figure{
    position:relative;overflow:hidden;margin:0;border-radius:3px;
    border:1px solid rgba(196,154,78,.18);
  }
  .chapter-grid .photos img{
    width:100%;height:100%;display:block;object-fit:cover;
    transition:transform .5s ease;
  }
  .chapter-grid .photos figure:hover img{transform:scale(1.04)}
  .chapter-grid .photos .duo{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .chapter-grid .photos > figure{aspect-ratio:16/10}
  .chapter-grid .photos .duo figure{aspect-ratio:4/5}
  /* réticule AF au survol — même effet que les galeries du portfolio */
  .chapter-grid .photos figure::after,
  .fw-grid a::before{
    content:"";position:absolute;inset:18%;
    border:1px solid var(--or1);opacity:0;transition:opacity .3s;
    pointer-events:none;z-index:2;
    -webkit-mask:linear-gradient(#000 0 0) top left/26px 26px no-repeat,
                 linear-gradient(#000 0 0) top right/26px 26px no-repeat,
                 linear-gradient(#000 0 0) bottom left/26px 26px no-repeat,
                 linear-gradient(#000 0 0) bottom right/26px 26px no-repeat;
    mask:linear-gradient(#000 0 0) top left/26px 26px no-repeat,
         linear-gradient(#000 0 0) top right/26px 26px no-repeat,
         linear-gradient(#000 0 0) bottom left/26px 26px no-repeat,
         linear-gradient(#000 0 0) bottom right/26px 26px no-repeat;
  }
  .chapter-grid .photos figure:hover::after,
  .fw-grid a:hover::before{opacity:.9}
  .specs{margin-top:26px;display:flex;flex-wrap:wrap;gap:10px}
  .specs span{
    font-size:11px;letter-spacing:.2em;text-transform:uppercase;
    color:var(--or1);border:1px solid rgba(196,154,78,.4);
    padding:7px 14px;border-radius:2px;
  }
  .specs .exif{
    font-family:"SF Mono",Menlo,Consolas,monospace;
    background:rgba(196,154,78,.12);border-style:dashed;
  }

  .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px}
  @media(max-width:820px){.cards{grid-template-columns:1fr}}
  /* process : 4 étapes reliées par un fil doré */
  .steps{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin-top:8px}
  @media(max-width:820px){.steps{grid-template-columns:1fr 1fr;gap:30px 20px}}
  .step{position:relative;padding-top:22px}
  .step::before{
    content:"";position:absolute;top:0;left:0;right:-26px;height:1px;
    background:linear-gradient(90deg,var(--or2),rgba(196,154,78,.15));
  }
  .step:last-child::before{right:0}
  .step::after{
    content:"";position:absolute;top:-3px;left:0;width:7px;height:7px;
    border-radius:50%;background:var(--or1);box-shadow:0 0 10px rgba(236,210,154,.7);
  }
  .step .num{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:11px;
    letter-spacing:.3em;color:var(--or2)}
  .step h3{font-family:var(--display);text-transform:uppercase;letter-spacing:.12em;
    font-size:17px;margin:10px 0 8px;color:var(--blanc)}
  .step p{font-size:13px;line-height:1.65;color:var(--gris)}
  .card{
    border:1px solid rgba(196,154,78,.25);border-radius:3px;
    padding:30px 26px;background:rgba(10,10,10,.5);
    transition:border-color .3s,transform .3s;
  }
  .card:hover{border-color:var(--or1);transform:translateY(-4px)}
  .card .num{font-family:var(--display);font-size:13px;letter-spacing:.3em;color:var(--or2)}
  .card h3{
    font-family:var(--display);text-transform:uppercase;letter-spacing:.12em;
    font-size:19px;margin:14px 0 12px;color:var(--blanc);
  }
  .card p{font-size:14px;line-height:1.7;color:var(--gris)}

  .cta{
    display:inline-block;margin-top:34px;
    font-family:var(--display);font-size:14px;letter-spacing:.32em;text-transform:uppercase;
    color:var(--noir);text-decoration:none;font-weight:700;
    background:linear-gradient(115deg,var(--or1),var(--or2));
    padding:18px 42px;border-radius:2px;border:none;cursor:pointer;
    transition:filter .25s,transform .25s;
  }
  .cta:hover,.cta:focus-visible{filter:brightness(1.12);transform:translateY(-2px)}
  .cta:focus-visible{outline:2px solid var(--blanc);outline-offset:3px}
  .cta.ghost{
    background:none;color:var(--or1);
    border:1px solid rgba(196,154,78,.55);
  }

  /* featured works teaser */
  .fw-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:26px}
  @media(max-width:820px){.fw-grid{grid-template-columns:1fr}}
  .fw-grid a{
    position:relative;display:block;border-radius:3px;overflow:hidden;
    border:1px solid rgba(196,154,78,.18);
  }
  .fw-grid img{width:100%;height:auto;display:block;transition:transform .5s ease;aspect-ratio:4/3;object-fit:cover}
  .fw-grid a:hover img{transform:scale(1.05)}
  .fw-grid a::after{
    content:attr(data-label);position:absolute;left:12px;bottom:10px;
    font-family:"SF Mono",Menlo,Consolas,monospace;font-size:10px;
    letter-spacing:.24em;text-transform:uppercase;color:var(--or1);
    text-shadow:0 2px 8px rgba(0,0,0,.9);
  }

  .stats{
    display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
    background:rgba(196,154,78,.28);border:1px solid rgba(196,154,78,.28);
    border-radius:3px;overflow:hidden;margin-top:30px;
  }
  @media(max-width:760px){.stats{grid-template-columns:repeat(2,1fr)}}
  .stats div{background:rgba(10,10,10,.85);padding:22px 14px;text-align:center}
  .stats b{
    display:block;font-family:var(--display);font-size:30px;letter-spacing:.06em;
    background:linear-gradient(115deg,var(--or1),var(--or2));
    -webkit-background-clip:text;background-clip:text;color:transparent;
  }
  .stats small{
    display:block;margin-top:8px;font-size:9px;letter-spacing:.24em;
    text-transform:uppercase;color:var(--gris);
  }

  form{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:10px}
  @media(max-width:680px){form{grid-template-columns:1fr}}
  .field{display:flex;flex-direction:column;gap:8px}
  .field.full{grid-column:1/-1}
  label{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--or2)}
  input,select,textarea{
    background:rgba(255,255,255,.045);
    border:1px solid rgba(196,154,78,.3);
    border-radius:2px;color:var(--blanc);
    padding:14px 16px;font-size:15px;font-family:var(--body);
  }
  input:focus,select:focus,textarea:focus{
    outline:none;border-color:var(--or1);
    box-shadow:0 0 0 3px rgba(196,154,78,.15);
  }
  textarea{min-height:110px;resize:vertical}
  .ig{margin-top:26px;font-size:13px;letter-spacing:.18em;color:var(--gris)}
  .ig a{color:var(--or1);text-decoration:none}

  footer{
    position:relative;z-index:10;text-align:center;
    padding:34px 20px 42px;font-size:11px;letter-spacing:.3em;
    text-transform:uppercase;color:var(--gris);
    background:linear-gradient(0deg,rgba(10,10,10,.92),transparent);
  }

  #loader{
    position:fixed;inset:0;z-index:100;background:var(--noir);
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;
    transition:opacity .7s ease;
  }
  #loader.done{opacity:0;pointer-events:none}
  #loader .wordmark{font-size:26px}
  #loader .bar{width:180px;height:2px;background:rgba(255,255,255,.1);overflow:hidden}
  #loader .bar i{display:block;height:100%;width:0%;background:linear-gradient(90deg,var(--or3),var(--or1));transition:width .2s}
  #loader .pct{font-size:11px;letter-spacing:.4em;color:var(--gris)}

  /* index badge on gallery tiles */
  .gallery{counter-reset:fig}
  .gallery figure{counter-increment:fig}
  .gallery figure::before{content:counter(fig,decimal-leading-zero);
    position:absolute;top:10px;left:13px;z-index:2;
    font-family:"SF Mono",Menlo,Consolas,monospace;font-size:10px;
    letter-spacing:.25em;color:var(--or1);opacity:0;transition:opacity .3s;
    text-shadow:0 1px 8px rgba(0,0,0,.9);pointer-events:none}
  .gallery figure:hover::before{opacity:.95}
  /* AF viewfinder cursor on photos */
  .gallery figure,.gallery img,.photos figure,.photos img,.fw-grid a{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='34' height='34' viewBox='0 0 34 34'><g fill='none' stroke='%23ecd29a' stroke-width='2'><path d='M2 10V2h8M24 2h8v8M32 24v8h-8M10 32H2v-8'/></g><circle cx='17' cy='17' r='2.4' fill='%23ecd29a'/></svg>") 17 17, zoom-in}
  /* cross-document page transitions (progressive enhancement) */
  @view-transition{navigation:auto}
  @media(prefers-reduced-motion:reduce){
    ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none !important}
  }
