/* ─── FONTS (locales) ─────────────────────────────────── */
@font-face{font-family:'Lyyra';src:url('../fonts/Lyyra_Extended.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Lyyra';src:url('../fonts/Lyyra_Extended_Light.woff2') format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Signifier';src:url('../fonts/signifier-extralight.woff2') format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Signifier';src:url('../fonts/signifier-extralight-italic.woff2') format('woff2');font-weight:300;font-style:italic;font-display:swap}

/* ─── THÈMES ──────────────────────────────────────────────
   Les couleurs passent par 4 variables, animées au scroll (brun → clair → brun…).
   Sans animation, chaque section porte son propre thème (voir « html:not(.anim) »). */
:root{
  --bg:rgb(247,246,241); --fg:rgb(28,24,21); --mute:rgb(87,77,75); --line:rgb(213,210,202);
  --gold:#b89b6a;
  --sans:'Lyyra','Helvetica Neue',Arial,sans-serif;
  --serif:'Signifier',Georgia,'Times New Roman',serif;
  --pad:clamp(20px,5vw,80px); --max:1320px; --nav:72px;
  --ease:cubic-bezier(.2,.7,.2,1);
  --lf:clamp(18px,1.8vw,26px);
}
html.anim{scrollbar-gutter:stable}
html.locked,html.locked body{overflow:hidden}
/* au départ (et au retour au wordmark), rien d’autre que le hero ne doit dépasser en bas d’écran */
html.locked main>section:not(.hero),html.locked .foot{visibility:hidden}
html.anim{--bg:rgb(35,27,24); --fg:rgb(244,239,230); --mute:rgb(201,193,183); --line:rgb(75,65,60)}
html .values{--bg:rgb(35,27,24);--fg:rgb(244,239,230);--mute:rgb(201,193,183);--line:rgb(75,65,60);background:var(--bg);color:var(--fg)}
html .contact,html .foot{--bg:rgb(35,27,24);--fg:rgb(244,239,230);--mute:rgb(201,193,183);--line:rgb(75,65,60);background:var(--bg);color:var(--fg)}

/* ─── BASE ────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:var(--bg)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{background:var(--bg);color:var(--fg);font-family:var(--serif);font-weight:300;font-size:clamp(18px,1.5vw,21px);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
svg{display:block;overflow:visible}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
section[id]{scroll-margin-top:calc(var(--nav) - 1px)}
:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:12px;top:-64px;z-index:200;background:var(--fg);color:var(--bg);padding:10px 16px;font:400 13px var(--sans);letter-spacing:.1em;text-transform:uppercase;transition:top .2s}
.skip:focus{top:12px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}

/* logos: couleur pilotée par currentColor, croix blanche = « knock-out » */
.logo,.mini,.hcmark{fill:currentColor}
.k{fill:var(--knock,var(--bg))}

/* ─── TYPE ────────────────────────────────────────────── */
.eyebrow{font:400 13px/1.5 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
.h-lg{font:400 clamp(26px,3.6vw,50px)/1.15 var(--sans);letter-spacing:.02em;text-transform:uppercase}
.lead{font:300 var(--lf)/1.6 var(--sans);letter-spacing:.06em;text-transform:uppercase}

/* ─── REVEAL ──────────────────────────────────────────── */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}}

/* ─── NAV ─────────────────────────────────────────────── */
.nav{position:fixed;inset:0 0 auto 0;z-index:100;transition:box-shadow .4s}
.nav-in{max-width:calc(var(--max) + 2*var(--pad));margin:0 auto;padding:0 var(--pad);height:var(--nav);display:flex;align-items:center}
.nav.has-logo{background:var(--bg);background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 1px 0 var(--line)}
/* le logo se déploie à gauche quand le hero est passé; les entrées glissent pour lui faire place */
.nav-logo{width:0;margin-right:0;opacity:0;visibility:hidden;overflow:hidden;flex:none;color:var(--fg);pointer-events:none;transition:width .5s var(--ease),margin .5s var(--ease),opacity .4s}
.nav-logo svg{width:112px}
.nav.has-logo .nav-logo{visibility:visible;width:112px;margin-right:clamp(32px,4.5vw,64px);opacity:1;pointer-events:auto}
.nav-links{display:flex;gap:clamp(22px,3vw,44px)}
.nav-links a,.lang a,.burger{font:400 13px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.nav-links a{transition:color .3s}
.nav-links a:hover{color:var(--fg)}
.lang{display:flex;gap:16px;margin-left:auto}
.lang a{opacity:.6;padding-bottom:2px;border-bottom:1px solid transparent;transition:opacity .3s}
.lang a:hover{opacity:1}
.lang a[aria-current]{opacity:1;color:var(--fg);border-bottom-color:currentColor}
.burger{display:none;background:none;border:0;cursor:pointer;padding:8px 0}
.menu{position:fixed;inset:0;z-index:99;background:var(--bg);display:flex;flex-direction:column;justify-content:center;gap:26px;padding:var(--pad)}
.menu[hidden]{display:none}
.menu a:not(.lang a){font:400 clamp(20px,6vw,28px) var(--sans);letter-spacing:.04em;text-transform:uppercase}
.menu .lang{margin:24px 0 0}

/* ─── HERO ────────────────────────────────────────────── */
.hero{height:100vh;height:100svh;min-height:620px;position:relative;margin-bottom:-11svh}
.anim:not(.ready) .hero-in{visibility:hidden}
.hero-in{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--nav) + 8px) var(--pad) 36px}
.hc{width:clamp(250px,32vw,500px);color:var(--fg)}
.hcmark{width:100%;height:auto}
.lower{width:100%;max-width:var(--max);margin-top:clamp(24px,5vh,64px);display:flex;flex-direction:column;align-items:center}
.rule{width:100%;height:1px;background:var(--fg);transform-origin:left center}
.trio{width:100%;display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(8px,2vh,24px)}
.cell{position:relative;display:block;text-align:center;container-type:inline-size;padding:clamp(10px,2vh,28px) 0 0;color:var(--fg);--knock:var(--bg);--u:min(1cqw,.5vh)}
/* logos à la même échelle, noms alignés optiquement sur une même ligne (unités --u = 1% de la largeur de cellule) */
[data-h=brandli]{--wu:63.6;--mu:16.5}
[data-h=durhone]{--wu:78.2;--mu:26}
[data-h=jacot]{--wu:67.9;--mu:26.2}
.cell .logo,.lgbox .logo{display:block;width:calc(var(--u)*var(--wu));height:auto;max-width:100%;margin:calc(var(--u)*var(--mu)) auto 0}
.filet{position:absolute;background:var(--fg);--f:1}
.cell .filet.filet-b{display:none}
.cell:not(:first-child) .filet{left:0;top:8%;bottom:6%;width:1px;transform:scaleY(var(--f));transform-origin:center top}
.cap{margin-top:clamp(26px,5.5vh,56px);font:300 clamp(15px,1.55vw,22px)/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--mute);text-align:center}

/* DÉFILER: pulsation du texte + goutte qui descend le long du filet */
.cue{display:none;position:absolute;bottom:18px;left:50%;transform:translateX(-50%);flex-direction:column;align-items:center;gap:12px;padding:10px 18px;background:none;border:0;cursor:pointer;font:400 13px var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--fg)}
.anim .cue{display:flex}
.cue span{animation:cuepulse 2.4s ease-in-out infinite;transition:letter-spacing .4s var(--ease)}
.cue i{position:relative;display:block;width:1px;height:56px;overflow:hidden;background:color-mix(in srgb,var(--fg) 25%,transparent)}
.cue i::after{content:'';position:absolute;left:0;top:0;width:100%;height:42%;background:var(--fg);animation:cuedrop 2.4s cubic-bezier(.6,0,.3,1) infinite}
.cue:hover span{animation:none;opacity:1;letter-spacing:.3em}
@keyframes cuepulse{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes cuedrop{0%{transform:translateY(-110%)}70%,100%{transform:translateY(260%)}}

/* ─── 01 · LABEL ──────────────────────────────────────── */
.label{padding:clamp(36px,4vw,64px) 0 clamp(70px,9vw,140px)}
.grid2{display:grid;grid-template-columns:3fr 9fr;gap:40px}
/* haut des capitales du label aligné sur celui de la 1re ligne du texte: text-box-trim (Chrome/Safari récents), sinon repli mesuré */
.grid2 .eyebrow,.tgrid .eyebrow{padding-top:calc(var(--lf)*.45 - 5.2px)}
@supports (text-box:trim-start cap alphabetic){
  .grid2 .eyebrow,.grid2 .lead,.tgrid .eyebrow,.tgrid .lead{text-box:trim-start cap alphabetic;padding-top:0}
}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,64px);margin-top:clamp(32px,5vw,64px);font-size:clamp(18px,1.4vw,21px)}

/* ─── 02 · VALEURS ────────────────────────────────────── */
.values{padding:clamp(80px,10vw,160px) 0}
.vgrid{display:grid;grid-template-columns:5fr 7fr;gap:clamp(32px,6vw,100px)}
.vsticky{position:sticky;top:calc(var(--nav) + 40px)}
.vsticky .h-lg{margin-top:20px}
.vnum{margin-top:clamp(16px,3vw,40px);font:300 clamp(120px,20vw,280px)/1 var(--sans);color:var(--gold);transition:opacity .3s}
.val{min-height:62vh;display:flex;flex-direction:column;justify-content:center;padding:40px 0;border-top:1px solid var(--line);opacity:.28;transition:opacity .5s}
.val.is-active{opacity:1}
.val .vn{display:none}
.val h3{font:400 clamp(20px,2.3vw,32px)/1.2 var(--sans);letter-spacing:.03em;text-transform:uppercase;margin-bottom:24px}
.val p{max-width:34em;font-size:clamp(18px,1.7vw,24px);line-height:1.6}

/* ─── 03 · MAISONS ────────────────────────────────────── */
.houses-sec{padding:clamp(80px,10vw,160px) 0}
.houses-sec header{margin-bottom:clamp(32px,5vw,64px)}
.houses-sec .h-lg,.together .h-lg,.contact .h-lg{margin-top:18px}
.houses{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;max-width:1600px;margin:0 auto;padding:0 var(--pad)}
.house{min-width:0;display:flex;flex-direction:column;background:var(--tone);color:#f7f6f1;--knock:var(--tone)}
.ph{position:relative;overflow:hidden;background:var(--tone);aspect-ratio:8/7}
.ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.hcap{flex:1;container-type:inline-size;--u:calc(.84cqw);padding:clamp(24px,2.6vw,40px) clamp(22px,2.4vw,36px) clamp(26px,2.6vw,40px);border-top:1px solid rgba(247,246,241,.16)}
.lgbox{min-height:calc(var(--u)*66);display:flex;flex-direction:column;align-items:center}
.hr{display:block;width:44px;height:1px;background:rgba(247,246,241,.4);margin:clamp(18px,2vw,28px) auto}
.since,.where{font:400 13px/1.6 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.since{color:#f7f6f1}
.where{margin-top:6px;min-height:3.4em;color:rgba(247,246,241,.72)}
.more{display:inline-block;margin-top:clamp(18px,2vw,28px);font:400 13px var(--sans);letter-spacing:.12em;text-transform:uppercase;padding-bottom:3px;border-bottom:1px solid rgba(247,246,241,.45);transition:color .3s,border-color .3s}
.house:hover .more,.more:focus-visible{color:var(--gold);border-color:var(--gold);animation:pulse 1.8s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

/* ─── 04 · ENSEMBLE ───────────────────────────────────── */
.together{padding:clamp(80px,10vw,160px) 0}
.together .lead{margin-top:0}
.together .tlist{margin-top:clamp(32px,4vw,56px)}
.tgrid{display:grid;grid-template-columns:5fr 7fr;gap:clamp(32px,7vw,120px);align-items:start}
.tlist{margin-top:clamp(32px,4vw,56px)}
.tlist>div{display:grid;grid-template-columns:230px 1fr;gap:24px;padding:22px 0;border-top:1px solid var(--line)}
.tlist dt{font:400 13px/1.7 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
.tlist dd{font-size:clamp(18px,1.4vw,21px)}
/* ─── 05 · CONTACT + FOOTER ───────────────────────────── */
.contact{padding:clamp(80px,10vw,150px) 0 clamp(50px,6vw,90px)}
.cgrid{display:grid;grid-template-columns:5fr 7fr;gap:clamp(32px,7vw,120px)}
.contact .lead{margin-top:24px}
.todo{display:inline-block;margin-top:32px;font:400 13px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);border-bottom:1px dashed var(--gold)}
.clinks{margin-top:20px}
.crow{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px 16px;padding:26px 0;border-top:1px solid var(--line)}
.crow:last-child{border-bottom:1px solid var(--line)}
.m{display:flex;align-items:center}
.mini{height:clamp(24px,2.4vw,32px);width:auto}
.m-brandli .mini{height:clamp(38px,3.8vw,52px)}
.cgo{font:400 22px/1 var(--sans);padding:6px;transition:color .3s,transform .3s var(--ease)}
.cgo:hover{color:var(--gold);transform:translate(3px,-3px)}
.cmail{grid-column:1/-1;font:400 clamp(15px,1.5vw,22px)/1.4 var(--sans);letter-spacing:.01em;overflow-wrap:anywhere;transition:color .3s}
.cmail:hover{color:var(--gold)}
.foot{color:var(--mute)}
.foot-in{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:24px 40px;padding-top:36px;padding-bottom:40px}
.foot-in::before{content:'';position:absolute;top:0;left:var(--pad);right:var(--pad);height:1px;background:var(--line)}
.foot-logo{width:112px;color:var(--fg)}
.foot p,.foot-in>a{font:400 13px var(--sans);letter-spacing:.08em;text-transform:uppercase}
.foot-in>a:hover{color:var(--gold)}
.foot .lang{margin-left:auto}
.foot-in>a.credit{color:var(--mute);opacity:.4;letter-spacing:.08em;transition:opacity .3s,color .3s}
.foot-in>a.credit:hover{opacity:1;color:var(--fg)}

/* ─── RESPONSIVE ──────────────────────────────────────── */
@media (max-width:900px){
  .nav-links,.nav-in>.lang{display:none}
  .burger{display:block;margin-left:auto}
  .grid2,.tgrid,.cgrid,.vgrid{grid-template-columns:1fr}
  .grid2{gap:20px}
  .grid2 .eyebrow,.tgrid .eyebrow{padding-top:0}
  .cols{grid-template-columns:1fr}
  .vsticky{position:static}
  .vnum{display:none}
  .val{min-height:0;opacity:1;padding:36px 0}
  .val .vn{display:block;font:300 clamp(64px,18vw,96px)/1 var(--sans);color:var(--gold);margin-bottom:12px}
  .houses{grid-template-columns:1fr;gap:12px}
  .ph{aspect-ratio:21/9}
  .hcap{display:grid;grid-template-columns:46% 1fr;column-gap:16px;align-items:center;--u:calc(.55cqw)}
  .hcap .lgbox{grid-row:1/span 3;min-height:0}
  .hcap .logo{margin-top:0}
  .hr{display:none}
  .where{min-height:0}
  .more{margin-top:14px;justify-self:start;white-space:nowrap;font-size:12px;letter-spacing:.08em}
  .since,.where{font-size:12px;letter-spacing:.08em}
    .tlist>div{grid-template-columns:1fr;gap:6px}
  .foot .lang{margin-left:0}
}
@media (max-width:800px){
  .hero{min-height:560px;margin-bottom:0}
  .label{padding-top:clamp(56px,15vw,88px)}
  .hc{width:clamp(180px,48vw,260px)}
  .lower{margin-top:clamp(16px,3vh,32px)}
  .trio{grid-template-columns:1fr;margin-top:6px}
  .cell{padding:clamp(6px,1.4vh,16px) 0 clamp(14px,2.6svh,24px)}
  .cell:not(:first-child) .filet{left:16%;right:16%;top:0;bottom:auto;width:auto;height:1px;transform:scaleX(var(--f));transform-origin:left center}
  .cell{--u:min(.78cqw,.33svh)}
  .cell .logo{margin-top:calc(var(--u)*4)}
  .cell .filet.filet-b{display:block;left:16%;right:16%;top:auto;bottom:0;width:auto;height:1px;transform:scaleX(var(--f));transform-origin:left center}
  .cell:last-child{padding-bottom:clamp(18px,3svh,28px)}
  .cap{font-size:clamp(15px,4.4vw,19px);margin-top:clamp(18px,3.2svh,30px)}
  .cue{bottom:8px}
  .cue i{height:36px}
}
@media (prefers-reduced-motion:reduce){
  .house:hover .more{animation:none}
  .nav-logo,.cue span,.cue i::after{animation:none;transition:none}
}

.nav.on-dark{--bg:rgb(35,27,24);--fg:rgb(244,239,230);--mute:rgb(201,193,183);--line:rgb(75,65,60)}
