/* Hanamira Production — polices hébergées localement (aucun appel à Google Fonts) */
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
  src:url("../fonts/inter-variable.woff2") format("woff2");
}
@font-face{
  font-family:'Inter';
  font-style:italic;
  font-weight:400;
  font-display:swap;
  src:url("../fonts/inter-italic.woff2") format("woff2");
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("../fonts/ibm-plex-mono-regular.woff2") format("woff2");
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url("../fonts/ibm-plex-mono-medium.woff2") format("woff2");
}
@font-face{
  font-family:'Caladea';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("../fonts/caladea-regular.woff2") format("woff2");
}

:root{
  --bg:#E9E8E4; --ink:#161616; --dim:#7F7D78; --red:#CE261C; --cream:#E4E0D6; --rule:#C8C6C0;
  color-scheme:light;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
html{scroll-padding-top:env(safe-area-inset-top,0px);scroll-behavior:smooth}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;-webkit-font-smoothing:antialiased}
body::after{content:"";position:fixed;inset:0;pointer-events:none;opacity:.05;z-index:50;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
video{max-width:100%;display:block}
.wrap{max-width:560px;margin:0 auto;padding:0 22px}
.mono{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace}
.serif{font-family:Caladea,Georgia,serif}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}

/* header */
header{display:flex;align-items:center;justify-content:space-between;padding:28px 0 0}
header img{width:96px;height:auto}
nav{display:flex;align-items:center;gap:16px;font-size:12px}
header>a{flex-shrink:0}
@media (max-width:959px){nav>a{display:none}}
@media (max-width:400px){header img{width:84px}nav{gap:11px;font-size:11.5px}}
.lang{display:inline-flex;align-items:center;gap:2px;color:var(--dim);font-size:11px}
.lang button{all:unset;cursor:pointer;padding:6px 2px;color:var(--dim)}
.lang button[aria-pressed="true"]{color:var(--ink);font-weight:500;text-decoration:underline;text-underline-offset:3px}
.lang button:focus-visible{outline:2px solid var(--red);outline-offset:2px}


/* section bar (Magnetism / OMAR hairline) */
.bar{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--ink);padding-top:9px;font-size:11px}

/* hero: who → what → where → act */
.hero{text-align:center;padding:64px 0 0}
.portrait{width:112px;height:112px;margin:0 auto 24px;object-fit:cover}
.name{margin:0;font-size:20px;font-weight:500;letter-spacing:-.01em}
.role{margin:6px 0 0;font-size:15px;line-height:1.45;text-wrap:balance}
.where{margin:10px 0 0;font-size:13px;color:var(--dim)}
.status{display:inline-flex;align-items:center;gap:8px;margin-top:22px;font-size:11px}
.dot{width:7px;height:7px;border-radius:50%;background:var(--red);display:inline-block;animation:rec 1.6s steps(1,end) infinite}
@keyframes rec{50%{opacity:.2}}

/* CTA — L'Étiquette field + black square */
.ask{display:block;margin:18px auto 0;max-width:360px;text-align:left}
.ask .lead{display:block;font-size:13px;margin-bottom:6px}
.ask .field{display:flex;height:50px;border:1.5px solid var(--ink);background:transparent}
.ask .lbl{flex:1;display:flex;align-items:center;padding:0 16px;font-size:12px;font-weight:500;letter-spacing:.07em}
.ask .go{width:50px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-size:19px;transition:background .15s}
.clients .k{display:block;font-size:10px;letter-spacing:.07em;text-transform:uppercase;margin-bottom:7px}
.clients .names{display:block;color:var(--ink)}
.ask:active .go,.ask:hover .go{background:var(--red)}
.alt{display:block;margin-top:12px;font-size:11px;color:var(--dim);text-align:center}
.alt u{text-decoration:none;color:var(--ink)}

/* clients line */
.clients{margin-top:44px;text-align:center;font-size:12px;color:var(--dim);line-height:1.6;text-wrap:balance}
.clients span{color:var(--ink)}

/* work */
.work{margin-top:72px}
.rail{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:22px -22px 0;padding:0 22px;scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.card{flex:0 0 82%;scroll-snap-align:start;scroll-margin-left:22px}
.frame{position:relative;aspect-ratio:4/5;overflow:hidden;background:#000}
.frame video,.frame img{width:100%;height:100%;object-fit:cover}
.frame.ph{background:#D7D5CF;display:grid;place-items:center}
.frame.ph>span{font-size:11px;color:var(--dim)}
.label{position:absolute;left:12px;top:16px}
.label span{display:inline-block;background:var(--bg);color:var(--ink)}
.label .cat{font-family:Caladea,Georgia,serif;font-size:11px;padding:3px 7px}
.label .sub{display:block;width:max-content;font-family:Caladea,Georgia,serif;font-size:12px;padding:3px 9px}
.label .ttl{display:block;width:max-content;font-weight:700;font-size:21px;padding:2px 9px 3px;letter-spacing:-.01em}
.cap{display:flex;justify-content:space-between;border-top:1px solid var(--ink);padding-top:8px;font-size:10px}
.progress{height:2px;background:var(--rule);margin-top:24px;position:relative}
.progress i{position:absolute;left:0;top:0;height:2px;background:var(--ink);width:25%;transition:width .4s}
.hint{display:flex;justify-content:space-between;color:var(--dim);font-size:10px;margin-top:10px}

/* how it works — a real sequence */
.how{margin-top:84px}
.how ol{list-style:none;margin:0;padding:0}
.how li{display:grid;grid-template-columns:44px 1fr;gap:0;padding:18px 0;border-bottom:1px solid var(--rule)}
.how li .n{font-size:11px;padding-top:3px}
.how li p{margin:0;font-size:15px;line-height:1.4}
.how li small{display:block;margin-top:4px;font-size:12px;color:var(--dim)}

/* final call */
.final{margin-top:96px;text-align:center}
.final h2{margin:22px 0 0;font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1.1;text-wrap:balance}
.final .ask{margin-top:26px}
.about{margin-top:64px;font-size:13px;line-height:1.55;text-align:center}
.about p{margin:0}
.about .gap{height:18px}
.about .mail{color:var(--dim)}
.about em{font-size:12px}

footer{margin-top:72px;background:var(--cream);padding:26px 0 calc(96px + env(safe-area-inset-bottom,0px))}
footer .row{display:flex;justify-content:space-between;font-size:10px;line-height:1.6}
footer .rec{margin-top:22px;font-size:10px;display:flex;align-items:center;gap:8px}
footer .rec b{width:7px;height:7px;border-radius:50%;background:var(--red)}

/* sticky call — appears once the hero button has scrolled away */
.sticky{position:fixed;left:0;right:0;bottom:0;z-index:40;padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));background:var(--bg);border-top:1px solid var(--ink);transform:translateY(110%);transition:transform .3s ease}
.sticky.on{transform:none}
.sticky a{display:flex;height:50px;border:1.5px solid var(--ink);max-width:560px;margin:0 auto}
.sticky .lbl{flex:1;display:flex;align-items:center;gap:10px;padding:0 14px;font-size:12px;font-weight:500;letter-spacing:.06em}
.sticky .go{width:50px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-size:20px}



/* ===== DESKTOP (≥ 960px): its own layout ===== */
.hcta{display:none}
@media (min-width:960px){
  .wrap{max-width:1240px;padding:0 48px}
  header{padding:36px 0 0}
  header img{width:132px}
  nav{gap:28px;font-size:13px}
  .hcta{display:inline-flex;align-items:stretch;border:1.5px solid var(--ink);font-size:11px;letter-spacing:.06em;height:38px}
  .hcta span{display:flex;align-items:center;padding:0 14px}
  .hcta b{width:38px;display:grid;place-items:center;background:var(--ink);color:var(--bg);font-weight:400;transition:background .15s}
  .hcta:hover b{background:var(--red)}
  nav .lang{order:4}
  .hcta{order:5;margin-left:6px}

  .hero{display:grid;grid-template-columns:1fr 360px;gap:80px;align-items:end;text-align:left;padding:120px 0 0}
  .hero .portrait{grid-column:2;grid-row:1;width:360px;height:450px;margin:0}
  .htext{grid-column:1;grid-row:1;padding-bottom:4px}
  .name{font-size:64px;font-weight:700;letter-spacing:-.035em;line-height:1}
  .role{font-size:24px;margin-top:18px;letter-spacing:-.01em}
  .where{font-size:15px;margin-top:10px}
  .status{margin-top:34px}
  .ask{margin:16px 0 0;max-width:380px}
  .alt{text-align:left}
  .clients{text-align:left;margin-top:40px;font-size:13px}

  .work{margin-top:140px}
  .rail{display:grid;grid-template-columns:1fr 1fr;gap:56px 32px;overflow:visible;margin:32px 0 0;padding:0}
  .card{flex:none}
  .frame{aspect-ratio:16/9}
  .label{left:18px;top:20px}
  .label .ttl{font-size:28px}
  .cap{font-size:11px;padding-top:10px}
  .progress,#hint{display:none}
  .card .frame video,.card .frame img{transition:transform .6s ease}
  .card:hover .frame video,.card:hover .frame img{transform:scale(1.03)}

  .how{margin-top:140px}
  .how ol{display:grid;grid-template-columns:repeat(3,1fr);gap:0 32px}
  .how li{grid-template-columns:1fr;padding:26px 0 30px}
  .how li .n{padding:0 0 14px}
  .how li p{font-size:18px}
  .how li small{font-size:13px;margin-top:6px}

  .final{margin-top:150px;text-align:left}
  .fgrid{display:grid;grid-template-columns:1.2fr 1fr;gap:80px;align-items:start;margin-top:40px}
  .final h2{font-size:64px;margin:0;letter-spacing:-.035em;line-height:1}
  .final .ask{margin:6px 0 0}
  .about{text-align:left;margin-top:48px}
  footer{margin-top:120px;padding-bottom:30px}
  .sticky{display:none}
  #legal .in{max-width:720px;padding-top:48px}
}

/* legal notice — opens on #legal */
#legal{display:none;position:fixed;inset:0;z-index:60;background:var(--bg);overflow-y:auto;-webkit-overflow-scrolling:touch}
#legal:target{display:block}
#legal .in{max-width:560px;margin:0 auto;padding:calc(28px + env(safe-area-inset-top,0px)) 22px calc(60px + env(safe-area-inset-bottom,0px))}
#legal .top{display:flex;justify-content:space-between;align-items:center;font-size:12px}
#legal h2{font-size:26px;font-weight:700;letter-spacing:-.02em;margin:44px 0 8px}
#legal h3{font-size:11px;font-weight:500;margin:34px 0 8px;padding-top:9px;border-top:1px solid var(--ink)}
#legal p{font-size:14px;line-height:1.55;margin:0 0 10px}
#legal .upd{font-size:11px;color:var(--dim)}
#legal b{font-weight:500}
html[lang="fr"] .l-en, html[lang="en"] .l-fr{display:none}
footer .legal-link{text-decoration:underline;text-underline-offset:3px}

/* intro */
#intro{position:fixed;inset:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .45s ease}
#intro.gone{opacity:0;pointer-events:none}
#intro img{width:min(78vw,420px);filter:url(#mb);will-change:transform}
#intro .foot{position:absolute;left:22px;right:22px;bottom:calc(28px + env(safe-area-inset-bottom,0px));display:flex;justify-content:space-between;font-size:11px}
@media (prefers-reduced-motion:reduce){#intro{display:none}.progress i,.sticky{transition:none}.dot{animation:none}html{scroll-behavior:auto}}
