/* ---------- HOME: hero scrub ---------- */
.hero{position:relative;height:340vh}
.stage{position:sticky;top:0;height:100dvh;overflow:hidden;background:#000}
.stage video,.stage img.poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 55%}
.stage img.poster{z-index:1}
.stage video{z-index:2;opacity:0;transition:opacity .4s ease}
.stage.ready video{opacity:1}.stage.ready img.poster{opacity:0;transition:opacity .4s ease .1s}
.vignette{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(to top,rgba(5,5,6,.92) 0%,rgba(5,5,6,.6) 24%,rgba(5,5,6,.18) 46%,rgba(5,5,6,0) 62%),linear-gradient(to right,rgba(5,5,6,.55) 0%,rgba(5,5,6,.15) 38%,rgba(5,5,6,0) 60%),linear-gradient(to bottom,rgba(5,5,6,.5) 0%,rgba(5,5,6,0) 16%)}
.copy{position:absolute;left:0;right:0;bottom:clamp(112px,16vh,160px);top:auto;z-index:4;display:grid;place-items:end start;padding:0 var(--gutter);text-align:left;pointer-events:none}
.beat{grid-area:1/1;max-width:min(92vw,900px);opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .6s var(--ease)}
.beat.on{opacity:1;transform:none}
.beat h1,.beat h2{font-family:var(--display);font-weight:500;letter-spacing:-.024em;line-height:1;font-size:clamp(34px,4.6vw,68px);color:var(--ink);max-width:14ch;text-wrap:balance;text-shadow:0 1px 24px rgba(5,5,6,.35)}
.beat .eyebrow{color:rgba(242,241,236,.82);text-shadow:0 1px 14px rgba(5,5,6,.45)}
/* spec numerals (Porsche register): numbers as structure, one line, light weight */
.spec{display:flex;justify-content:flex-start;gap:clamp(22px,4vw,56px);margin-top:clamp(20px,3vh,34px);flex-wrap:wrap}
.spec>div{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:96px}
.spec b{font-family:var(--display);font-weight:500;font-size:clamp(30px,3.6vw,52px);letter-spacing:-.03em;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums;text-shadow:0 1px 20px rgba(5,5,6,.4)}
.spec b i{font-style:normal;font-size:.42em;letter-spacing:0;margin-left:2px;vertical-align:.55em;color:var(--blue-hi)}
.spec span{font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:rgba(242,241,236,.72);font-variation-settings:"wdth" 108}
@media (max-width:640px){.spec{gap:16px 22px}.spec>div{min-width:40%}.spec b{font-size:30px}}
.beat .eyebrow{display:block;margin-bottom:18px}
.hint{position:absolute;right:clamp(16px,3vw,40px);left:auto;bottom:34px;z-index:4;display:flex;justify-content:flex-end;pointer-events:none;transition:opacity .4s}
.hint.off{opacity:0}
.hint span{font-size:10px;letter-spacing:.22em;text-transform:uppercase;font-weight:600;color:var(--ink-3);display:flex;align-items:center;gap:10px}
.hint i{display:block;width:1px;height:34px;background:linear-gradient(var(--blue-hi),transparent);animation:drop 1.8s ease-in-out infinite}
@keyframes drop{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.cta{position:absolute;left:var(--gutter);right:auto;bottom:44px;z-index:4;display:flex;gap:22px;justify-content:flex-start;align-items:center;opacity:0;transform:translateY(10px);transition:opacity .5s,transform .6s;pointer-events:none}
.cta.on{opacity:1;transform:none;pointer-events:auto}
.progress{position:absolute;right:clamp(16px,3vw,40px);top:50%;transform:translateY(-50%);z-index:4;display:flex;flex-direction:column;gap:10px}
.progress b{display:block;width:2px;height:22px;background:var(--line-2);border-radius:2px;overflow:hidden;position:relative}
.progress b::after{content:"";position:absolute;inset:0;background:var(--blue-hi);transform:scaleY(var(--f,0));transform-origin:top}
/* emblem wall touch affordance: one sequential light-up sweep when the wall enters view on coarse pointers */
.emb.pulse{border-color:rgba(91,157,255,.55);background:var(--surface-2)}
.emb.pulse::before{opacity:1}
.emb.pulse::after{transform:translateX(70%)}
.emb.pulse img{opacity:1}

/* proof strip */
.proof{position:relative;z-index:5;background:var(--canvas);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px var(--gutter);display:flex;flex-wrap:wrap;gap:12px 40px;justify-content:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--ink-2);font-variation-settings:"wdth" 108}
.proof b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.proof em{font-style:normal}

/* ---------- emblem wall ---------- */
.wall{padding:clamp(80px,12vh,150px) var(--gutter) clamp(60px,9vh,110px);background:var(--canvas);position:relative;overflow:hidden}
.wall .head{margin-bottom:clamp(30px,4vw,54px)}
.wall-grid{position:relative;display:grid;grid-template-columns:repeat(6,1fr);gap:10px;max-width:var(--max);margin:0 auto}
.wall-grid::before{content:"";position:absolute;inset:-40px;pointer-events:none;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(31,111,255,.16),transparent 60%);opacity:0;transition:opacity .5s;z-index:0}
.wall-grid.lit::before{opacity:1}
.emb{position:relative;z-index:1;aspect-ratio:1;border-radius:18px;background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;overflow:hidden;isolation:isolate;transition:border-color .35s,transform .5s var(--ease),background .35s;opacity:0;transform:translateY(22px) scale(.96)}
.wall-grid.in .emb{opacity:1;transform:none;transition:opacity .7s ease,transform .9s var(--ease),border-color .35s,background .35s}
.wall-grid.in .emb:nth-child(1){transition-delay:.0s}.wall-grid.in .emb:nth-child(2){transition-delay:.06s}.wall-grid.in .emb:nth-child(3){transition-delay:.12s}.wall-grid.in .emb:nth-child(4){transition-delay:.18s}.wall-grid.in .emb:nth-child(5){transition-delay:.24s}.wall-grid.in .emb:nth-child(6){transition-delay:.3s}.wall-grid.in .emb:nth-child(7){transition-delay:.36s}.wall-grid.in .emb:nth-child(8){transition-delay:.42s}.wall-grid.in .emb:nth-child(9){transition-delay:.48s}.wall-grid.in .emb:nth-child(10){transition-delay:.54s}.wall-grid.in .emb:nth-child(11){transition-delay:.6s}.wall-grid.in .emb:nth-child(12){transition-delay:.66s}
.emb::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,rgba(31,111,255,.22),rgba(31,111,255,0) 62%);opacity:0;transition:opacity .4s;z-index:0}
.emb::after{content:"";position:absolute;inset:-60%;background:linear-gradient(115deg,transparent 42%,rgba(255,255,255,.09) 50%,transparent 58%);transform:translateX(-70%) rotate(0.001deg);transition:transform 1.1s var(--ease);z-index:2;pointer-events:none}
.emb:hover{border-color:rgba(91,157,255,.55);background:var(--surface-2);transform:translateY(-3px)}
.emb:hover::before{opacity:1}
.emb:hover::after{transform:translateX(70%)}
.emb img{position:relative;z-index:1;width:46%;height:46%;object-fit:contain;filter:brightness(0) invert(1);opacity:.86;transition:opacity .35s,transform .6s var(--ease)}
.emb img.tone{filter:grayscale(1) brightness(1.5) contrast(1.2)}
.emb img.wide{width:62%}
.emb:hover img{opacity:1;transform:scale(1.04)}
.emb .multi{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;width:64%}
.emb .multi img{width:100%;height:auto;max-height:26px}
.emb .lab{position:absolute;left:14px;right:14px;bottom:12px;z-index:3;display:flex;flex-direction:column;gap:2px;opacity:0;transform:translateY(6px);transition:opacity .35s,transform .45s var(--ease)}
.emb:hover .lab,.emb:focus-visible .lab{opacity:1;transform:none}
.emb .lab b{font-family:var(--display);font-weight:600;font-size:15px;letter-spacing:-.01em;color:var(--ink)}
.emb .lab span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--blue-hi);font-variation-settings:"wdth" 110}
.emb .idx{position:absolute;left:14px;top:12px;z-index:3;font-size:10px;letter-spacing:.14em;color:var(--ink-3);font-weight:600;font-variant-numeric:tabular-nums}
.wall .note{margin:22px auto 0;max-width:var(--max);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:12px;letter-spacing:.06em;color:var(--ink-3)}
@media (max-width:1100px){.wall-grid{grid-template-columns:repeat(4,1fr)}}
@media (max-width:640px){.wall-grid{grid-template-columns:repeat(3,1fr);gap:8px}.emb{border-radius:14px}.emb .lab{opacity:1;transform:none;left:10px;bottom:8px}.emb .lab b{font-size:11px}.emb .lab span{display:none}.emb .idx{display:none}.emb img{width:44%;height:44%}}
@media (pointer:coarse){.emb .lab{opacity:1;transform:none}}

/* marquee band (secondary motion, small emblems glide) */
.marquee{overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0;background:var(--canvas);-webkit-mask-image:linear-gradient(to right,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(to right,transparent,#000 12%,#000 88%,transparent)}
.marquee .track{display:flex;gap:64px;width:max-content;animation:glide 48s linear infinite}
.marquee:hover .track{animation-play-state:paused}
.marquee .track span{display:inline-flex;align-items:center;gap:14px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--ink-3);white-space:nowrap}
.marquee .track img{height:22px;width:auto;max-width:60px;filter:brightness(0) invert(1);opacity:.55}
.marquee .track img.tone{filter:grayscale(1) brightness(1.5) contrast(1.2)}
@keyframes glide{to{transform:translateX(-50%)}}

/* ---------- diagnostics (pinned) ---------- */
.diag{height:220vh;position:relative}
.diag .pin{position:sticky;top:0;height:100dvh;overflow:hidden;background:#000}
.diag .pin video,.diag .pin img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.diag .pin video{opacity:0;transition:opacity .4s}.diag.ready .pin video{opacity:1}
.diag .shade{position:absolute;inset:0;background:linear-gradient(to right,rgba(5,5,6,.82) 0%,rgba(5,5,6,.45) 40%,rgba(5,5,6,.05) 100%),linear-gradient(to top,rgba(5,5,6,.75) 0%,rgba(5,5,6,0) 45%)}
.diag .text{position:absolute;left:var(--gutter);right:var(--gutter);bottom:clamp(64px,12vh,120px);max-width:660px}
.diag .text .eyebrow{display:block;margin-bottom:16px}
.dbeat{position:absolute;left:0;right:0;bottom:0;opacity:0;transform:translateY(16px);transition:opacity .5s,transform .6s}
.dbeat.on{opacity:1;transform:none;position:relative}
.dbeat h2{font-size:clamp(28px,3.6vw,52px)}
.dbeat p{margin-top:16px}
.dbeat .link{display:inline-block;margin-top:22px}
.dstep{position:absolute;right:var(--gutter);bottom:clamp(64px,12vh,120px);display:flex;gap:8px;font-size:11px;color:var(--ink-3);letter-spacing:.14em;font-weight:600;font-variant-numeric:tabular-nums}
.dstep b{color:var(--blue-hi)}
.dtools{position:absolute;right:var(--gutter);top:clamp(96px,14vh,150px);display:grid;gap:8px;text-align:right}
.dtools span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--ink-3);opacity:0;transform:translateX(8px);transition:opacity .5s,transform .6s,color .4s}
.dtools span.on{opacity:1;transform:none;color:var(--ink-2)}
.dtools span.hot{color:var(--blue-hi)}
@media (max-width:760px){.diag .shade{background:linear-gradient(to top,rgba(5,5,6,.96) 0%,rgba(5,5,6,.86) 32%,rgba(5,5,6,.3) 54%,rgba(5,5,6,0) 70%)}.diag .pin video,.diag .pin img{object-position:50% 42%}.dstep,.dtools{display:none}}

/* ---------- only here (bento, logo-led) ---------- */
.bento{padding:clamp(80px,12vh,150px) var(--gutter);background:var(--canvas)}
.bgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;max-width:var(--max);margin:0 auto}
.bt{position:relative;border-radius:var(--r);overflow:hidden;background:var(--surface);border:1px solid var(--line);min-height:300px;display:grid;grid-template-rows:auto 1fr auto;padding:26px 26px 24px;isolation:isolate;transition:border-color .35s,transform .5s var(--ease),background .35s}
.bt:hover{border-color:rgba(91,157,255,.45);background:var(--surface-2);transform:translateY(-3px)}
.bt::before{content:"";position:absolute;right:-30%;top:-40%;width:70%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(31,111,255,.16),rgba(31,111,255,0) 60%);opacity:0;transition:opacity .5s;z-index:0}
.bt:hover::before{opacity:1}
.bt .mark{position:relative;z-index:1;height:44px;display:flex;align-items:center;gap:14px}
.bt .mark img{height:38px;width:auto;max-width:170px;object-fit:contain;filter:grayscale(1);background:#f2f1ec;padding:6px 10px;border-radius:8px;opacity:.92}
.bt .mark img.em{filter:brightness(0) invert(1);background:none;padding:0;height:34px}
.bt .mark img.tall{height:44px}
.bt .mark img.raw{filter:none}
.bt .mark .plus{font-family:var(--display);font-size:20px;color:var(--ink-3)}
.bt .t{position:relative;z-index:1;align-self:end;padding-top:40px}
.bt .t small{display:block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--blue-hi);margin-bottom:10px;font-variation-settings:"wdth" 110}
.bt .t strong{font-family:var(--display);font-weight:600;font-size:clamp(20px,1.9vw,29px);letter-spacing:-.018em;line-height:1.12;display:block;max-width:20ch}
.bt .t em{font-style:normal;display:block;margin-top:10px;color:var(--ink-2);font-size:14px;max-width:44ch}
.bt .bfoot{position:relative;z-index:1;margin-top:22px;display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.06em;color:var(--ink-3)}
.bt .bfoot .go{width:30px;height:30px;border-radius:50%;border:1px solid var(--line-2);display:grid;place-items:center;font-size:13px;color:var(--ink-2);transition:background .25s,color .25s,border-color .25s}
.bt:hover .bfoot .go{background:var(--blue);border-color:var(--blue);color:#fff}
@media (max-width:760px){.bgrid{grid-template-columns:1fr}.bt{min-height:0}}

/* ---------- team teaser ---------- */
.crew{position:relative;overflow:hidden;background:#000;min-height:80vh;display:grid;align-items:end}
.crew>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%;filter:saturate(.7) brightness(.7)}
.crew .shade{position:absolute;inset:0;background:linear-gradient(to top,rgba(5,5,6,.95),rgba(5,5,6,.3) 55%,rgba(5,5,6,.5))}
.crew .inner{position:relative;z-index:2;padding:clamp(120px,20vh,240px) var(--gutter) clamp(64px,9vh,110px);display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:32px;align-items:end}
.crew .eyebrow{display:block;margin-bottom:14px}
.crew p{margin-top:16px;color:var(--ink-2);max-width:56ch}
.crew .acts{display:flex;gap:18px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
@media (max-width:860px){.crew .inner{grid-template-columns:1fr}.crew .acts{justify-content:flex-start}}

/* ---------- light interlude ---------- */
.inter{padding:clamp(90px,14vh,170px) var(--gutter);text-align:center}
.inter .h-section{max-width:22ch;margin:0 auto}
.inter .eyebrow{display:block;margin-bottom:16px}
.inter .lede{margin:22px auto 0;max-width:60ch}
.inter .links{display:flex;gap:28px;justify-content:center;margin-top:30px;flex-wrap:wrap}

/* ---------- owners ---------- */
.owners{padding:clamp(80px,12vh,150px) var(--gutter);background:var(--canvas)}
.owners .top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:end;margin-bottom:clamp(28px,4vw,48px)}
@media (max-width:760px){.owners .top{grid-template-columns:1fr}}

/* ---------- book ---------- */
.book{position:relative;background:#000;overflow:hidden}
.book>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 45%;filter:saturate(.8) brightness(.45)}
.book .shade{position:absolute;inset:0;background:linear-gradient(to right,rgba(5,5,6,.94),rgba(5,5,6,.6) 55%,rgba(5,5,6,.85))}
.book .inner{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,4vw,64px);padding:clamp(90px,13vh,160px) var(--gutter);align-items:center}
.book .eyebrow{display:block;margin-bottom:14px}
.book dl{display:grid;grid-template-columns:auto 1fr;gap:10px 22px;margin-top:28px;font-size:15px}
.book dt{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--ink-3);padding-top:4px;font-variation-settings:"wdth" 110}
.book dd{color:var(--ink-2)}
.book dd b{color:var(--ink);font-weight:500}
@media (max-width:860px){.book .inner{grid-template-columns:1fr}}

@media (prefers-reduced-motion:reduce){
  .stage video,.diag video{display:none}.stage img.poster{opacity:1 !important}.beat,.dbeat{transition:none}.hint i,.marquee .track{animation:none}
  .wall-grid .emb{opacity:1;transform:none}.since .mini div::before{width:calc(100% - 16px)}
}

/* ============================================================ TYPE SYSTEM v5 (Bodoni Moda + Raleway) home overrides */
.beat h1,.beat h2{font-family:var(--display);font-optical-sizing:none;font-variation-settings:"opsz" 14;font-weight:600;letter-spacing:-.01em;line-height:1.02;max-width:19ch}
.spec b,.emb .lab b,.bt .t strong,.bt .mark .plus{font-family:var(--display);font-optical-sizing:none;font-variation-settings:"opsz" 14;font-weight:600}
.spec b{letter-spacing:-.03em}
.spec span,.proof{font-family:var(--sans);font-weight:500;letter-spacing:.18em;font-variation-settings:normal}
.spec span{font-size:10.5px}
.spec>div{min-width:90px}
.proof{letter-spacing:.14em;font-size:11.5px}
.emb .lab b,.bt .t strong{letter-spacing:-.006em}
@media (max-width:640px){.beat h1,.beat h2{max-width:none}.spec{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}.spec>div{min-width:0}.spec span{letter-spacing:.12em;font-size:10px}}

/* mobile overrides live LAST so they beat the base rules at equal specificity */
@media (max-width:640px){
  /* MOBILE HERO v2 (2026-08-21): cinematic band, not a full-bleed crop. The film occupies the top 58dvh of the
     pinned stage (showing far more of the frame), the copy sits BELOW it on the canvas, and the in-hero CTA row is
     gone: the persistent bottom bar (.mcta) is the one call/schedule control on phones. */
  .hero{height:240vh}
  .progress{display:none}.hint{display:none}
  .stage video,.stage img.poster{height:min(58dvh,480px);top:0;bottom:auto;object-position:center 62%}
  .vignette{height:min(58dvh,480px);bottom:auto;background:linear-gradient(to top,rgba(5,5,6,.9) 0%,rgba(5,5,6,.25) 22%,rgba(5,5,6,0) 40%)}
  .copy{top:calc(min(58dvh,480px) + 10px);bottom:auto;place-items:start start;padding:0 var(--gutter)}
  .beat{max-width:none}
  .beat h1,.beat h2{font-size:clamp(30px,8.6vw,42px);max-width:none}
  .spec{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;margin-top:16px}
  .spec>div{min-width:0}
  .spec b{font-size:26px}
  .spec span{letter-spacing:.12em;font-size:9.5px}
  .cta{display:none}
  /* proof strip -> 2x2 stat tiles (address moves to footer/contact on phones) */
  .proof{display:grid;grid-template-columns:1fr 1fr;gap:0;padding:0;text-align:left;letter-spacing:.1em;font-size:10px}
  .proof span{padding:14px 18px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
  .proof em{display:block;font-style:normal;margin-top:2px;color:var(--ink-2)}
  .proof span:nth-child(2n){border-right:0}
  .proof span:nth-child(n+3){border-bottom:0}
  .proof span:nth-child(5){display:none}
  .proof b{display:block;font-family:var(--display);font-optical-sizing:none;font-variation-settings:"opsz" 14;font-weight:600;font-size:24px;letter-spacing:-.01em;margin-bottom:4px}
}

@media (max-width:640px){
  /* DIAG MOBILE v2 (2026-08-22, owner: "zoomed in and blurry on mobile"). The diagnostics film is 16:9 (1280x720);
     object-fit:cover on a portrait 100dvh pin showed a third of the frame scaled ~3x. Now a full-width 16:9 band
     in the upper screen with the copy directly below it, same grammar as the mobile hero. */
  .diag{height:200vh}
  .diag .pin video,.diag .pin img{top:18dvh;height:56.25vw;bottom:auto;object-fit:cover;object-position:center}
  .diag .shade{display:none}
  .diag .text{top:calc(18dvh + 56.25vw + 26px);bottom:auto;max-width:none}
}

/* round-2 (2026-08-23): bento shimmer like the emblem wall; tighter mobile gap above the map */
.bt::after{content:"";position:absolute;inset:-60%;background:linear-gradient(115deg,transparent 42%,rgba(255,255,255,.09) 50%,transparent 58%);transform:translateX(-70%) rotate(0.001deg);transition:transform 1.1s var(--ease);z-index:2;pointer-events:none}
.bt:hover::after,.bt.pulse::after{transform:translateX(70%)}
.bt.pulse{border-color:rgba(91,157,255,.45);background:var(--surface-2)}
.bt.pulse::before{opacity:1}
@media (max-width:640px){.care{padding-bottom:44px}.drive{padding-top:36px}}
