/* =====================================================================
   CTFY · Midnight Theta · site.css
   Foundation, glass, global chrome (G1–G5), heroes (H1–H7), shared parts.
   Module layouts live in css/modules.css (P0b). Page-only styling lives
   in css/pages/<name>.css. Spec: docs/redesign/01, 02, 03, 09a.
   Sections:
    1  Tokens          2  Base / reset      3  Type            4  Grain
    5  Glass           6  Buttons, chips    7  Cards           8  Icons
    9  Forms          10  Layout, chapters 11  Reveal states  12  Backgrounds
   13  Film           14  G1 dock          15  G1 sheet       16  G2 footer
   17  G3 CTA dock    18  G4 toggle        19  G5 crumbs      20  Heroes
   21  Accordions, tabs                    22  Utilities      23  Modes
   ===================================================================== */

/* ===== 1. Tokens ===================================================== */
/* Metric-matched fallbacks per script (P6, computed with fontTools from the real Cormorant 500 / Manrope 400 files,
   Latin and Cyrillic samples separately): text set in the fallback takes the same space, so the web fonts swap in
   without a layout shift. Times New Roman is the closest system serif to Cormorant's narrow proportions. */
@font-face{font-family:"Cormorant Fallback";src:local("Times New Roman"),local("TimesNewRomanPSMT"),local("Times");size-adjust:96.75%;ascent-override:95.5%;descent-override:29.66%;line-gap-override:0%;unicode-range:U+0000-03FF,U+1E00-1FFF,U+2000-206F,U+20A0-20CF,U+2100-218F,U+2200-22FF}
@font-face{font-family:"Cormorant Fallback";src:local("Times New Roman"),local("TimesNewRomanPSMT"),local("Times");size-adjust:96.87%;ascent-override:95.39%;descent-override:29.63%;line-gap-override:0%;unicode-range:U+0400-052F,U+1C80-1C8F,U+2DE0-2DFF,U+A640-A69F}
@font-face{font-family:"Manrope Fallback";src:local("Arial"),local("ArialMT"),local("Helvetica Neue"),local("Roboto");size-adjust:102.27%;ascent-override:104.23%;descent-override:29.33%;line-gap-override:0%;unicode-range:U+0000-03FF,U+1E00-1FFF,U+2000-206F,U+20A0-20CF,U+2100-218F,U+2200-22FF}
@font-face{font-family:"Manrope Fallback";src:local("Arial"),local("ArialMT"),local("Helvetica Neue"),local("Roboto");size-adjust:103.91%;ascent-override:102.59%;descent-override:28.87%;line-gap-override:0%;unicode-range:U+0400-052F,U+1C80-1C8F,U+2DE0-2DFF,U+A640-A69F}
:root{
  /* Colour (01 §2.1) */
  --bg-0:#06070B; --bg-1:#0A0C12; --bg-2:#0F121A; --bg-3:#151925; --bg-4:#1C2130;
  --line-1:rgba(236,234,229,.08); --line-2:rgba(236,234,229,.16);
  --text-1:#ECEAE5; --text-2:#B4B6BE; --text-3:#8B8F9A;
  --theta-500:#3E55F5; --theta-400:#6B7DFF; --theta-300:#A3AEFF;
  --theta-glow:rgba(62,85,245,.45); --cyan-300:#8FDCFF;
  --champ-400:#CBB384; --champ-600:#8E7646;
  --paper-0:#F4F2ED; --paper-1:#EAE7E0;
  --ink-1:#11131A; --ink-2:#464A55; --ink-3:#62666F; --theta-700:#2B3BC4;
  --line-p:rgba(17,19,26,.10);
  --ok:#6FD6A6; --err:#FF8A7A; --ok-p:#1F7A52; --err-p:#B3372B;

  /* Context colours: flip inside .ch--paper (components read these) */
  --fg-1:var(--text-1); --fg-2:var(--text-2); --fg-3:var(--text-3);
  --fg-link:var(--theta-300); --hair:var(--line-1); --hair-2:var(--line-2);
  --surface:var(--bg-3); --surface-2:var(--bg-4); --page:var(--bg-1);

  /* Allowed gradients (01 §2.3) */
  --g-bloom:radial-gradient(40% 40% at 50% 55%,rgba(62,85,245,.28),rgba(62,85,245,.08) 45%,transparent 70%);
  --g-champ:linear-gradient(90deg,transparent,var(--champ-600) 20%,var(--champ-400) 50%,var(--champ-600) 80%,transparent);
  --g-vignette:radial-gradient(120% 90% at 50% 40%,transparent 35%,rgba(6,7,11,.55) 70%,var(--bg-0) 100%);
  --g-fade:linear-gradient(to bottom,transparent 55%,var(--bg-1) 100%);

  /* Type (01 §3) — sizes; BG scales them through --k-display / --k-text */
  --font-display:"Cormorant Garamond","Cormorant Fallback","Lora",Georgia,serif;
  --font-sans:"Manrope","Manrope Fallback",system-ui,-apple-system,"Segoe UI",sans-serif;
  --k-display:1; --k-text:1;
  --t-display-xl:clamp(3.1rem,1.4rem + 4.6vw,6.25rem);
  --t-display-l:clamp(2.6rem,1.6rem + 4.2vw,5.5rem);
  --t-display-m:clamp(2.1rem,1.5rem + 2.6vw,3.75rem);
  --t-quote:clamp(1.9rem,1.2rem + 2.8vw,4rem);
  --t-title:clamp(1.125rem,1rem + .45vw,1.375rem);
  --t-lead:clamp(1.0625rem,1rem + .35vw,1.25rem);
  --t-body:1.0625rem;
  --t-small:.9375rem;
  --t-micro:.75rem;
  --t-num-xl:clamp(3.25rem,2rem + 5vw,7rem);
  --t-num-m:clamp(2rem,1.5rem + 2vw,3.25rem);

  /* Space, grid, shape (01 §4) */
  --gutter:clamp(20px,4vw,56px);
  --container:1240px; --container-wide:1440px; --measure:68ch;
  --section-y:clamp(96px,12vw,192px); --section-y-tight:clamp(64px,8vw,120px);
  --r-xl:32px; --r-l:24px; --r-m:16px; --r-s:10px; --r-pill:999px;
  --lift-paper:0 1px 2px rgba(17,19,26,.06),0 18px 40px -24px rgba(17,19,26,.22);
  --hi-top:inset 0 1px 0 rgba(255,255,255,.06);
  --dock-h:64px; --dock-top:14px;

  /* Motion (02 §2) */
  --dur-instant:100ms; --dur-fast:160ms; --dur-base:220ms; --dur-slow:320ms;
  --dur-reveal:700ms; --dur-hero:800ms;
  --ease-out:cubic-bezier(0.23,1,0.32,1); --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --ease-drawer:cubic-bezier(0.32,0.72,0,1); --ease-pop:cubic-bezier(0.34,1.56,0.64,1);
  --breath:10s; --stagger:70ms; --rise:18px;

  /* Glass (01 §5) */
  --edge:linear-gradient(140deg,rgba(255,255,255,.42),rgba(255,255,255,.08) 32%,rgba(255,255,255,.02) 58%,rgba(255,255,255,.22) 100%);
  --veil-fill:rgba(16,19,28,.38);
  --lens-fill:rgba(20,24,36,.52);
  --solid-fill:rgba(20,24,36,.92);
}
/* Bulgarian: Cyrillic Cormorant runs wider (01 §3.4). Applies to the page and to any lang="bg" block. */
[lang="bg"]{--k-display:.9; --k-text:.97}
[lang="en"]{--k-display:1; --k-text:1}

/* ===== 2. Base / reset =============================================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;color-scheme:dark;background:var(--bg-1);
  scroll-padding-top:calc(var(--dock-h) + var(--dock-top) + 16px)}
html.has-cta-dock{scroll-padding-bottom:96px}
html.is-locked{overflow:hidden}
body{margin:0;min-height:100vh;min-height:100svh;background:var(--page);color:var(--fg-2);
  font:400 calc(var(--t-body) * var(--k-text))/1.7 var(--font-sans);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
main{display:block}
img,video,canvas,svg{display:block;max-width:100%}
/* <picture> is only a source switcher: its <img> lays out as a direct child of the frame (modules that need a
   box, e.g. .m-frame>picture, still set display:block themselves) */
picture{display:contents}
img,video{height:auto}
p,figure,blockquote,dl,dd{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,h5,h6{margin:0;color:var(--fg-1);font-weight:inherit;text-wrap:balance}
p,li,dd,figcaption{text-wrap:pretty}
a{color:inherit;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
button{-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
::selection{background:rgba(62,85,245,.45);color:#fff}
:focus{outline:none}
:focus-visible{outline:2px solid var(--theta-400);outline-offset:3px;border-radius:4px}
hr{height:1px;border:0;margin:0;background:var(--hair)}
table{border-collapse:collapse;width:100%}

/* ===== 3. Type (01 §3.2–3.4) ========================================= */
.t-display-xl,.t-display-l,.t-display-m,.t-quote{font-family:var(--font-display);color:var(--fg-1)}
.t-display-xl{font-weight:500;font-size:calc(var(--t-display-xl) * var(--k-display));line-height:.94;letter-spacing:-.02em}
.t-display-l{font-weight:500;font-size:calc(var(--t-display-l) * var(--k-display));line-height:.98;letter-spacing:-.015em}
.t-display-m{font-weight:500;font-size:calc(var(--t-display-m) * var(--k-display));line-height:1.04;letter-spacing:-.01em}
.t-quote{font-style:italic;font-weight:400;font-size:calc(var(--t-quote) * var(--k-display));line-height:1.12;letter-spacing:-.01em}
.t-title{font:600 calc(var(--t-title) * var(--k-text))/1.3 var(--font-sans);letter-spacing:-.01em;color:var(--fg-1)}
.t-lead{font:400 calc(var(--t-lead) * var(--k-text))/1.6 var(--font-sans);letter-spacing:-.005em;max-width:60ch}
.t-body{font:400 calc(var(--t-body) * var(--k-text))/1.7 var(--font-sans);max-width:var(--measure)}
.t-small{font:500 calc(var(--t-small) * var(--k-text))/1.55 var(--font-sans)}
.t-micro{font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.t-num-xl{font:300 var(--t-num-xl)/.9 var(--font-sans);letter-spacing:-.045em;font-variant-numeric:tabular-nums;color:var(--fg-1)}
.t-num-m{font:300 var(--t-num-m)/1 var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--fg-1)}
/* Unclassed headings fall back onto the scale */
h1:not([class]){font:500 calc(var(--t-display-l) * var(--k-display))/.98 var(--font-display);letter-spacing:-.015em}
h2:not([class]){font:500 calc(var(--t-display-m) * var(--k-display))/1.04 var(--font-display);letter-spacing:-.01em}
h3:not([class]),h4:not([class]){font:600 calc(var(--t-title) * var(--k-text))/1.3 var(--font-sans);letter-spacing:-.01em}
:lang(bg) :is(h1,h2,h3){hyphens:auto;-webkit-hyphens:auto}
em,i{font-style:italic}
.t-display-xl em,.t-display-l em,.t-display-m em{color:inherit}
strong,b{font-weight:600;color:var(--fg-1)}
.br-d{display:none}
@media (min-width:1024px){.br-d{display:inline}}
br.d{display:none}
@media (min-width:1024px){br.d{display:inline}}
.eyebrow{display:inline-flex;align-items:center;gap:12px;color:var(--fg-3);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.eyebrow::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--theta-500);box-shadow:0 0 12px var(--theta-glow)}
.eyebrow--plain::before{display:none}
.prose{max-width:var(--measure)}
.prose>*+*{margin-top:1.1em}
.prose a,.text-link{color:var(--fg-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.prose a:hover,.text-link:hover{text-decoration-thickness:2px}
.fg-1{color:var(--fg-1)} .fg-2{color:var(--fg-2)} .fg-3{color:var(--fg-3)}
.champ{color:var(--champ-400)}
.ch--paper .champ{color:var(--champ-600)} /* ≥24px numerals only on paper */

/* ===== 4. Grain (01 §7): one static 128px tile, 3.5% overlay ========= */
body::after{content:"";position:fixed;inset:0;z-index:400;pointer-events:none;
  background:url("../media/ui/grain.png") 0 0/128px 128px repeat;opacity:.035;mix-blend-mode:overlay}

/* ===== 5. Liquid glass (01 §5) ======================================= */
/* Only surfaces marked .is-live get a backdrop-filter (budget: 3 per desktop viewport, 1 on mobile). */
.glass-veil{background:var(--veil-fill);border:1px solid rgba(255,255,255,.10);box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}
.glass-veil.is-live{-webkit-backdrop-filter:blur(16px) saturate(170%);backdrop-filter:blur(16px) saturate(170%)}
.glass-lens{position:relative;isolation:isolate;border:1px solid transparent;background:var(--lens-fill) padding-box;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.20),inset 0 -18px 36px -24px rgba(255,255,255,.08),0 30px 60px -30px rgba(0,0,0,.7),0 2px 8px rgba(0,0,0,.3)}
.glass-lens.is-live{-webkit-backdrop-filter:blur(28px) saturate(185%);backdrop-filter:blur(28px) saturate(185%)}
/* Edge light: a masked 1px ring, never a border-box gradient under a translucent fill */
.glass-lens::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:var(--edge);pointer-events:none;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
          mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
/* Specular sheen: --mx/--my set by core.js on [data-glass] (fine pointers); fixed top-left on touch */
.glass-lens::after,.glass-paper::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;
  background:radial-gradient(260px circle at var(--mx,30%) var(--my,0%),rgba(255,255,255,.14),transparent 60%);
  opacity:var(--sheen,.6);transition:opacity var(--dur-fast) var(--ease-out)}
.glass-paper{position:relative;isolation:isolate;--sheen:.5;background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.75);
  -webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);box-shadow:var(--lift-paper)}
.glass-solid{background:var(--solid-fill)!important}
/* Refraction (01 §5.3): js/liquid-glass.js sets --lg and .is-liquid on ≤4 [data-liquid] surfaces in Chromium */
.is-liquid.is-live:not(.dock){-webkit-backdrop-filter:var(--lg) blur(6px) saturate(190%);backdrop-filter:var(--lg) blur(6px) saturate(190%)}
@media (max-width:1023px){
  .is-live:not(.dock){-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .glass-lens{background:var(--solid-fill) padding-box}
  .glass-paper{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(244,242,237,.94)}
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .glass-veil,.glass-lens{background:rgba(20,24,36,.94)} .glass-paper{background:var(--paper-0)}
}

/* ===== 6. Buttons (01 §6.1) and chips (01 §6.2) ====================== */
.btn{--h:52px;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:var(--h);
  padding:6px 26px;border:0;border-radius:var(--r-pill);font:600 15px/1.25 var(--font-sans);letter-spacing:-.005em;
  text-align:center;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:transform var(--dur-instant) var(--ease-out),background-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.btn .icon{width:16px;height:16px;transition:transform var(--dur-fast) var(--ease-out)}
.btn:active{transform:scale(.98)}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.4;pointer-events:none}
.btn--pearl{background:var(--text-1);color:var(--bg-1)}
.btn--glass{color:var(--text-1)}
.btn--glass:not(.glass-lens):not(.glass-veil){background:var(--lens-fill);box-shadow:inset 0 0 0 1px var(--line-2)}
.btn--ink{background:var(--ink-1);color:var(--paper-0)}
.btn--sm{--h:44px;padding:4px 18px;font-size:14px}
.btn--block{display:flex;width:100%}
.ch--paper .btn--pearl{background:var(--ink-1);color:var(--paper-0)} /* primary on paper */
.ch--paper .btn--glass:not(.glass-lens){background:rgba(255,255,255,.6);color:var(--ink-1);box-shadow:inset 0 0 0 1px rgba(17,19,26,.16)}
@media (hover:hover) and (pointer:fine){
  .btn:hover .icon{transform:translateX(3px)}
  .btn--pearl:hover{background:#F7F5F0}
  .btn--glass:hover{--sheen:1}
  .btn--ink:hover,.ch--paper .btn--pearl:hover{background:#232633}
}
/* Tertiary link (01 §6.1): underline grows from the left, arrow nudges 3px */
.link{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0;border:0;background:none;color:var(--fg-link);
  font:600 15px/1.3 var(--font-sans);text-decoration:none;cursor:pointer}
.link>span{position:relative}
.link>span::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--dur-fast) var(--ease-out)}
.link .icon{width:16px;height:16px;transition:transform var(--dur-fast) var(--ease-out)}
.link:active{transform:scale(.98)}
.link--paper{color:var(--theta-700)}
@media (hover:hover) and (pointer:fine){.link:hover>span::after{transform:scaleX(1)}.link:hover .icon{transform:translateX(3px)}}
.btn-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px}

.chip{display:inline-flex;align-items:center;gap:10px;min-height:32px;padding:0 14px;border-radius:var(--r-pill);color:var(--text-1);
  font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
.chip .icon{width:14px;height:14px}
.chip__dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--theta-500);box-shadow:0 0 10px var(--theta-glow)}
.chip--flat{background:var(--bg-3);border:1px solid var(--line-1);color:var(--text-2)}
.chip--theta{min-height:24px;padding:0 10px;background:var(--theta-500);color:#fff;letter-spacing:.1em}
.chip--seal{--lens-fill:rgba(10,12,18,.86);color:var(--champ-400);--edge:var(--g-champ)}
.chip--seal .chip__dot{background:var(--champ-400);box-shadow:0 0 10px rgba(203,179,132,.55)}
.chip--wrap{white-space:normal;text-align:left}
.ch--paper .chip:not(.chip--theta):not(.chip--seal){background:var(--paper-1);border:1px solid var(--line-p);color:var(--ink-2)}
.chip-list{display:flex;flex-wrap:wrap;gap:10px 12px}
.icon-btn{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;border-radius:var(--r-pill);color:var(--text-1);cursor:pointer}
.icon-btn .icon{width:18px;height:18px}
.icon-btn .i-play,.icon-btn[aria-pressed="true"] .i-pause{display:none}
.icon-btn[aria-pressed="true"] .i-play{display:block}
.icon-btn:disabled{opacity:.45;cursor:default}

/* ===== 7. Cards (01 §6.3) ============================================= */
.card{position:relative;display:flex;flex-direction:column;gap:12px;padding:clamp(24px,2.6vw,32px);border-radius:var(--r-l);
  background:var(--surface);border:1px solid var(--hair);box-shadow:var(--hi-top);color:var(--fg-2);
  transition:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}
.card__title{font:600 calc(var(--t-title) * var(--k-text))/1.3 var(--font-sans);letter-spacing:-.01em;color:var(--fg-1)}
.card__text{font:500 calc(var(--t-small) * var(--k-text))/1.55 var(--font-sans);color:var(--fg-2)}
.card__link{margin-top:auto}
.card__media{position:relative;overflow:hidden;margin:calc(-1 * clamp(24px,2.6vw,32px)) calc(-1 * clamp(24px,2.6vw,32px)) 8px;
  aspect-ratio:var(--ratio,16/10);border-radius:var(--r-l) var(--r-l) 0 0}
.card__media img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%);transition:transform 600ms var(--ease-out)}
.card__media::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);pointer-events:none}
.card--media{padding-top:0}
.card--media .card__media{margin-top:0;flex:0 0 auto}
.card--spec{gap:0;background:none;border:0;box-shadow:none;padding:0;border-top:1px solid var(--hair-2);padding-top:28px;border-radius:0}
.card--spec .card__num{font:300 var(--t-num-xl)/.9 var(--font-sans);letter-spacing:-.045em;font-variant-numeric:tabular-nums;color:var(--fg-1);white-space:nowrap}
.card--spec .card__unit{margin-left:.14em;color:var(--champ-400);font-size:.3em;font-weight:500;letter-spacing:.02em}
.card--spec .card__label{margin-top:14px;color:var(--fg-2)}
.card--lens{background:var(--lens-fill) padding-box}
.ch--paper .card:not(.card--spec){background:var(--paper-1);border-color:var(--line-p);box-shadow:var(--lift-paper)}
.ch--paper .card--spec .card__unit{color:var(--ink-3)}
@media (hover:hover) and (pointer:fine){
  .card:not(.card--spec):hover{background-color:var(--surface-2);border-color:var(--hair-2)}
  .card:hover .card__media img{transform:scale(1.03)}
  .ch--paper .card:not(.card--spec):hover{background-color:var(--paper-1);transform:translateY(-4px)}
}

/* ===== 8. Icons (01 §6.4) — Lucide symbols, sprite at the top of <body> */
.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
.icon--24{width:24px;height:24px}
.icon--16{width:16px;height:16px}
.icon--accent{color:var(--fg-link)}
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}

/* ===== 9. Forms (01 §6.5) ============================================= */
.form{display:grid;gap:20px}
.form__row{display:grid;gap:8px}
.form__row--2{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.label{font:600 .875rem/1.4 var(--font-sans);color:var(--fg-1)}
.label small{font-weight:500;color:var(--fg-3)}
.input,.select,.textarea{width:100%;min-height:52px;padding:14px 16px;border-radius:var(--r-m);background:var(--bg-2);border:1px solid var(--line-2);
  color:var(--text-1);font:400 1rem/1.4 var(--font-sans);transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.textarea{min-height:140px;resize:vertical}
.select{appearance:none;-webkit-appearance:none;padding-right:44px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23B4B6BE' stroke-width='1.5' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:18px}
.input::placeholder,.textarea::placeholder{color:var(--text-3)}
.input:hover,.select:hover,.textarea:hover{border-color:rgba(236,234,229,.28)}
.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:2px solid var(--theta-400);outline-offset:3px;border-color:var(--theta-400)}
.input[aria-invalid="true"],.textarea[aria-invalid="true"],.select[aria-invalid="true"]{border-color:var(--err)}
.form__hint{font:500 .875rem/1.5 var(--font-sans);color:var(--fg-3)}
.form__error{display:flex;align-items:flex-start;gap:8px;font:600 .875rem/1.45 var(--font-sans);color:var(--err)}
.form__error .icon{width:16px;height:16px;margin-top:2px}
.form__ok{display:flex;align-items:flex-start;gap:8px;font:600 .9375rem/1.5 var(--font-sans);color:var(--ok)}
.check{display:flex;align-items:flex-start;gap:12px;min-height:44px;padding-top:10px;font:500 .9375rem/1.5 var(--font-sans);color:var(--fg-2);cursor:pointer}
.check input{flex:none;width:20px;height:20px;margin:2px 0 0;accent-color:var(--theta-400)}
.ch--paper .input,.ch--paper .select,.ch--paper .textarea{background:#fff;border-color:var(--line-p);color:var(--ink-1)}
.ch--paper .input::placeholder,.ch--paper .textarea::placeholder{color:var(--ink-3)}
.ch--paper .form__error{color:var(--err-p)} .ch--paper .form__ok{color:var(--ok-p)}
@media (max-width:599px){.form__row--2{grid-template-columns:minmax(0,1fr)}}

/* ===== 10. Layout, chapters and seams (01 §4, §8) ===================== */
.wrap{width:min(var(--container),100% - 2*var(--gutter));margin-inline:auto}
.wrap--wide{width:min(var(--container-wide),100% - 2*var(--gutter))}
.wrap--narrow{width:min(820px,100% - 2*var(--gutter))}
.wrap--bleed{width:100%}
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px}
.grid>*{grid-column:span var(--span,12);min-width:0}
.span-1{--span:1}.span-2{--span:2}.span-3{--span:3}.span-4{--span:4}.span-5{--span:5}.span-6{--span:6}
.span-7{--span:7}.span-8{--span:8}.span-9{--span:9}.span-10{--span:10}.span-11{--span:11}.span-12{--span:12}
@media (max-width:1023px){
  .grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:16px}
  .grid>*{grid-column:span min(var(--span,6),6)}
  .grid>*:is(.span-1,.span-2,.span-3,.span-4,.span-5,.span-6,.span-7,.span-8,.span-9,.span-10,.span-11,.span-12){--span:6}
  .md-span-2{--span:2!important}.md-span-3{--span:3!important}.md-span-4{--span:4!important}
}
@media (max-width:599px){
  .grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .grid>*{--span:4!important}
  .sm-span-2{--span:2!important}
}
.cols{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:var(--gap,24px)}
@media (max-width:1023px){.cols{grid-template-columns:repeat(min(var(--cols,3),2),minmax(0,1fr))}}
@media (max-width:599px){.cols{grid-template-columns:minmax(0,1fr)}}
.stack{display:grid;gap:var(--gap,20px);align-content:start}

/* Chapters: <section class="ch ch--dark|ch--paper"> */
.ch{position:relative;isolation:isolate;padding-block:var(--section-y)}
.ch--tight{padding-block:var(--section-y-tight)}
.ch--flush{padding-block:0}
.ch--dark{background:var(--bg-1);color:var(--text-2)}
.ch--deep{background:var(--bg-0);color:var(--text-2)}
.ch--raised{background:var(--bg-2);color:var(--text-2)}
.ch--line{border-top:1px solid var(--line-1)}
.ch--paper{
  --fg-1:var(--ink-1); --fg-2:var(--ink-2); --fg-3:var(--ink-3); --fg-link:var(--theta-700);
  --hair:var(--line-p); --hair-2:rgba(17,19,26,.18); --surface:var(--paper-1); --surface-2:#E2DED5; --page:var(--paper-0);
  background:var(--paper-0);color:var(--ink-2);color-scheme:light;
  padding-top:calc(160px + var(--section-y));padding-bottom:calc(120px + var(--section-y))}
.ch--paper.ch--tight{padding-top:calc(160px + var(--section-y-tight));padding-bottom:calc(120px + var(--section-y-tight))}
/* Seams: static gradients, dark → paper 160px, paper → dark 120px */
.ch--paper::before,.ch--paper::after{content:"";position:absolute;left:0;right:0;z-index:-1;pointer-events:none}
.ch--paper::before{top:0;height:160px;background:linear-gradient(to bottom,var(--seam-from,var(--bg-1)),#2a2b2f 35%,#c9c6bf 75%,var(--paper-0))}
.ch--paper::after{bottom:0;height:120px;background:linear-gradient(to bottom,var(--paper-0),#c9c6bf 25%,#2a2b2f 65%,var(--seam-to,var(--bg-1)))}
.ch--deep+.ch--paper,.hero+.ch--paper.from-deep{--seam-from:var(--bg-0)}
main>.ch--paper:last-child,.ch--paper:has(+ .ch--deep){--seam-to:var(--bg-0)}
.ch--paper+.ch--paper::before,.ch--paper.no-seam-top::before{display:none}
.ch--paper:has(+ .ch--paper)::after,.ch--paper.no-seam-bottom::after{display:none}
.ch--paper+.ch--paper,.ch--paper.no-seam-top{padding-top:var(--section-y)}
.ch--paper:has(+ .ch--paper),.ch--paper.no-seam-bottom{padding-bottom:var(--section-y)}
.ch--paper :focus-visible{outline-color:var(--theta-700)}
.ch--paper .eyebrow::before{box-shadow:none}
.sec__head{display:grid;gap:20px;max-width:820px;margin-bottom:clamp(40px,5vw,72px)}
.sec__head--center{margin-inline:auto;text-align:center;justify-items:center}
.sec__head .t-lead{color:var(--fg-2)}

/* ===== 11. Reveal states (02 §7.3) — js/core.js adds .is-pending only after html[data-motion-ready] */
.js [data-reveal].is-pending{opacity:0;transform:translateY(var(--rise))}
.js [data-reveal="fade"].is-pending{transform:none}
.js [data-reveal="media"].is-pending{transform:scale(1.04)}
.js [data-reveal="iris"].is-pending{opacity:0;clip-path:inset(10% 10% 10% 10% round var(--iris-r,var(--r-xl)));transform:scale(1.06)}
.js [data-reveal].is-in{transition:opacity var(--dur-reveal) var(--ease-out) var(--delay,0ms),transform var(--dur-reveal) var(--ease-out) var(--delay,0ms)}
.js [data-reveal="iris"].is-in{clip-path:inset(0 round var(--iris-r,var(--r-xl)));transition:opacity 500ms var(--ease-out) var(--delay,0ms),clip-path 900ms var(--ease-out) var(--delay,0ms),transform 900ms var(--ease-out) var(--delay,0ms)}
.count{position:relative;display:inline-block}
.count__real{opacity:0}
.count__clone{position:absolute;top:0;right:0;white-space:nowrap}
/* Headline line masks (used by hero entrance; motion.js may use the same markup) */
.line{display:block;overflow:hidden;padding:0 .14em .1em 0;margin-bottom:-.1em}
.line>span{display:inline-block}

/* ===== 12. Backgrounds (02 §5) ======================================== */
/* BG-A Theta Field: <div class="field" data-theta-field data-preset="…"><div class="field__stage"></div></div>
   The still is the stage background (no-JS, reduced, low-end, WebGL failure); js/theta-field.js fades a live canvas over it. */
.field{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:clip}
.field__stage{position:sticky;top:0;width:100%;height:100%;max-height:100lvh;overflow:hidden;
  background:var(--bg-0) url("../media/bg/theta-field-quiet.webp") 50% 50%/cover no-repeat}
.field[data-preset="hero"] .field__stage{background-image:url("../media/bg/theta-field-hero.webp")}
.field[data-preset="finale"] .field__stage{background-image:url("../media/bg/theta-field-finale.webp")}
.field[data-preset="descent"] .field__stage{background-image:url("../media/bg/theta-field-descent.webp")}
.field__stage::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(60% 50% at 50% 62%,rgba(62,85,245,.18),transparent 70%)} /* BG-B tint if the still fails */
.field::after{content:"";position:absolute;left:0;right:0;bottom:0;height:min(28%,280px);pointer-events:none;background:linear-gradient(to bottom,transparent,var(--field-fade,var(--bg-1)))}
.ch--deep .field{--field-fade:var(--bg-0)}
.field--no-fade::after{display:none}
.field__canvas{position:absolute;inset:0;width:100%!important;height:100%!important;opacity:0;transition:opacity 600ms var(--ease-out)}
.field.is-live .field__canvas{opacity:1}
.field--fixed{position:fixed}
.hero .field__stage{position:absolute;inset:0;height:auto;max-height:none} /* heroes are a viewport tall: no sticky stage (and no scroll-container offset) */
.field__toggle{position:absolute;z-index:3;top:clamp(16px,3vw,32px);right:clamp(12px,2.4vw,var(--gutter))}
.hero .field__toggle{top:auto;bottom:28px;right:max(var(--gutter),(100% - var(--container))/2)}
/* BG-B Aurora (CSS only): three pre-softened gradients drift; paused unless [data-in-view="true"] */
.aurora{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.aurora i{position:absolute;left:50%;top:clamp(160px,32vh,420px);width:70vmax;height:70vmax;margin:-35vmax 0 0 -35vmax;border-radius:50%;
  animation:aurora-drift 40s var(--ease-in-out) infinite alternate;animation-play-state:paused}
.aurora i:nth-child(1){background:radial-gradient(closest-side,rgba(62,85,245,.20),transparent 60%)}
.aurora i:nth-child(2){background:radial-gradient(closest-side,rgba(143,220,255,.08),transparent 60%);animation-duration:52s;animation-delay:-17s}
.aurora i:nth-child(3){background:radial-gradient(closest-side,rgba(203,179,132,.05),transparent 60%);animation-duration:61s;animation-delay:-31s}
.aurora[data-in-view="true"] i{animation-play-state:running;will-change:transform}
@keyframes aurora-drift{from{transform:translate(-8%,4%) rotate(8deg)}to{transform:translate(6%,-3%) rotate(-6deg)}}
/* BG-C Blueprint hairlines; the scan line passes once when the chapter first enters */
.blueprint{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;
  background-image:linear-gradient(var(--line-1) 1px,transparent 1px),linear-gradient(90deg,var(--line-1) 1px,transparent 1px);background-size:80px 80px;
  -webkit-mask-image:radial-gradient(ellipse at 50% 40%,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse at 50% 40%,#000 30%,transparent 75%)}
.blueprint__scan{position:absolute;left:0;right:0;top:0;height:1px;background:var(--theta-400);opacity:0}
.blueprint.is-entered .blueprint__scan{animation:blueprint-scan 1.6s var(--ease-in-out) 1 both}
@keyframes blueprint-scan{0%{transform:translateY(0);opacity:.3}90%{opacity:.3}100%{transform:translateY(var(--scan-h,100vh));opacity:0}}
/* Theta bloom (behind a product or key number) */
.bloom{position:absolute;inset:-20%;z-index:-1;pointer-events:none;background:var(--g-bloom)}
.bloom--breathe{animation:bloom-breathe var(--breath) var(--ease-in-out) infinite}
@keyframes bloom-breathe{0%,100%{opacity:.82}50%{opacity:1}}
.hairline-champ{height:1px;border:0;background:var(--g-champ)}

/* ===== 13. Film, still-first (02 §6) =================================== */
.film{position:relative;margin:0;overflow:hidden;background:var(--bg-0)}
.film__poster,.film__poster img,.film>img,.film video{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;object-position:var(--pos,50% 50%)}
.film video{opacity:0;transition:opacity 400ms var(--ease-out)}
.film.is-playing video{opacity:1}
@media (max-width:600px){.film__poster img,.film>img,.film video{object-position:var(--pos-m,var(--pos,50% 50%))}}
.film--frame{border-radius:var(--r-xl);aspect-ratio:var(--ratio,9/16)}
.film__toggle{position:absolute;z-index:3;right:16px;bottom:16px}

/* ===== 14. G1 Glass Dock (header) ===================================== */
.skip{position:fixed;left:16px;top:-90px;z-index:500;padding:12px 18px;border-radius:var(--r-pill);background:var(--text-1);color:var(--bg-1);
  font:600 15px/1.2 var(--font-sans);text-decoration:none;transition:top var(--dur-fast) var(--ease-out)}
.skip:focus,.skip:focus-visible{top:16px;outline-offset:3px}
.dock-wrap{position:fixed;top:var(--dock-top);left:0;right:0;z-index:100;display:flex;justify-content:center;pointer-events:none;
  transition:transform var(--dur-slow) var(--ease-drawer)}
.dock-wrap[data-hidden="true"]{transform:translateY(-160%)}
.dock-wrap[data-hidden="true"] .dock{box-shadow:none}
.dock{pointer-events:auto;position:relative;display:flex;align-items:center;gap:4px;width:min(var(--container),100% - 2*var(--gutter));
  height:var(--dock-h);padding:0 10px 0 14px;border-radius:var(--r-pill);
  transition:background-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}
.dock.glass-veil.is-live{-webkit-backdrop-filter:blur(16px) saturate(170%);backdrop-filter:blur(16px) saturate(170%)}
/* At rest the pill is Veil only where the hero behind it is dark (film, field, stage, portrait, paper band). Over bright
   media (H7 photos, H3 full daylight footage, legacy bodies) it starts dense so the pearl labels hold AA at the worst frame. */
.dock.glass-veil{background:rgba(16,19,28,.8)}
body:has(.hero--cinematic,.hero--stage,.hero--field,.hero--portrait,.hero--paper,.hero--framed,[data-dock-veil]) .dock-wrap:not([data-scrolled="true"]) .dock.glass-veil{background:var(--veil-fill)}
/* Scrolled 8px: Lens (denser fill so pearl labels hold AA over porcelain chapters too) */
.dock-wrap[data-scrolled="true"] .dock{background:rgba(16,19,28,.8);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 30px 60px -30px rgba(0,0,0,.7),0 2px 8px rgba(0,0,0,.3);
  -webkit-backdrop-filter:blur(28px) saturate(185%);backdrop-filter:blur(28px) saturate(185%)}
.dock-wrap[data-scrolled="true"] .dock.is-liquid{-webkit-backdrop-filter:var(--lg) blur(6px) saturate(190%);backdrop-filter:var(--lg) blur(6px) saturate(190%)}
.dock::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(260px circle at var(--mx,30%) var(--my,0%),rgba(255,255,255,.08),transparent 60%)}
.dock__brand{margin-right:auto;display:inline-flex;align-items:center;gap:12px;min-height:44px;padding-right:8px;color:var(--text-1);
  font:600 15px/1.15 var(--font-sans);letter-spacing:-.005em;text-decoration:none;white-space:nowrap}
.dock__logo{width:40px;height:40px;flex:none}
.dock__nav{height:100%}
.dock__list{display:flex;align-items:center;height:100%}
.dock__item{position:relative;display:flex;align-items:center;height:100%}
.dock__link{position:relative;display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 11px;border:0;background:none;
  color:var(--text-2);font:500 14.5px/1 var(--font-sans);text-decoration:none;white-space:nowrap;cursor:pointer;transition:color var(--dur-fast) var(--ease-out)}
.dock__link:hover,.dock__item.is-open>.dock__link,.dock__link[aria-current="page"]{color:var(--text-1)}
.dock__link .icon,.dock__caret .icon{width:14px;height:14px;opacity:.75;transition:transform var(--dur-base) var(--ease-out)}
.dock__caret{display:inline-grid;place-items:center;width:26px;min-height:44px;margin-left:-10px;padding:0;border:0;background:none;color:var(--text-2);cursor:pointer;border-radius:8px}
.dock__caret:hover{color:var(--text-1)}
.dock__item.is-open .dock__caret .icon,.dock__item.is-open>.dock__link .icon{transform:rotate(180deg)}
.dock__item.is-current>.dock__link::after{content:"";position:absolute;left:50%;bottom:4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;
  background:var(--theta-400);box-shadow:0 0 8px var(--theta-glow)}
.dock__item.has-panel.is-current>.dock__link:not(button)::after{margin-left:-2px}
.dock .lang{margin:0 2px 0 6px}
.dock .btn{flex:none}
.dock__menu{display:none;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:var(--r-pill);border:1px solid var(--line-2);background:none;
  color:var(--text-1);font:600 14px/1 var(--font-sans);text-decoration:none;cursor:pointer}
.dock__menu .icon{width:18px;height:18px}
.lang{display:inline-flex;align-items:center;color:var(--text-3);font:600 12px/1 var(--font-sans);letter-spacing:.12em}
.lang a{display:inline-grid;place-items:center;min-width:40px;min-height:44px;color:var(--text-2);text-decoration:none;border-radius:8px}
.lang a:hover,.lang a[aria-current]{color:var(--text-1)}
.lang a[aria-current]{text-decoration:underline;text-decoration-color:var(--theta-400);text-underline-offset:6px;text-decoration-thickness:1.5px}
/* Mega panels (Lens, open from the pill: transform-origin top, scale .98 → 1 + fade) */
.mega{position:absolute;top:calc(100% - 4px);left:-14px;z-index:2;display:flex;gap:28px;padding:24px;border-radius:var(--r-l);
  --lens-fill:rgba(16,19,28,.9);overflow:hidden;-webkit-backdrop-filter:blur(28px) saturate(185%);backdrop-filter:blur(28px) saturate(185%);
  opacity:0;visibility:hidden;transform:translateY(-4px) scale(.98);transform-origin:top left;
  transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),visibility 0s linear var(--dur-base)}
.mega>.mega__aura{position:absolute;inset:-30%;z-index:-1;background:radial-gradient(45% 45% at 80% 85%,rgba(62,85,245,.22),transparent 70%),radial-gradient(40% 40% at 10% 0%,rgba(143,220,255,.06),transparent 70%);pointer-events:none}
.dock__item.is-open>.mega,.no-js .dock__item:hover>.mega,.no-js .dock__item:focus-within>.mega{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.mega__cols{display:flex;gap:28px}
.mega__col{display:grid;align-content:start;gap:2px;min-width:200px}
.mega__h{margin:0 0 8px;padding:0 12px;color:var(--text-3);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.mega__col a{display:flex;align-items:center;min-height:40px;padding:0 12px;border-radius:12px;color:var(--text-2);
  font:500 15px/1.3 var(--font-sans);text-decoration:none;white-space:nowrap;transition:color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}
.mega__col a:hover,.mega__col a:focus-visible{color:var(--text-1);background:rgba(255,255,255,.05)}
.mega__col a[aria-current="page"]{color:var(--text-1)}
.mega__col a[aria-current="page"]::before{content:"";width:4px;height:4px;margin-right:10px;border-radius:50%;background:var(--theta-400);box-shadow:0 0 8px var(--theta-glow)}
.mega__thumb{position:relative;flex:none;width:172px;margin:0;border-radius:var(--r-m);overflow:hidden;background:var(--bg-0);align-self:stretch;min-height:240px}
.mega__thumb img,.mega__thumb video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 45%;filter:saturate(.9)}
.mega__thumb video{opacity:0;transition:opacity 400ms var(--ease-out)}
.mega__thumb.is-playing video{opacity:1}
.mega__thumb::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 50%,rgba(6,7,11,.85));pointer-events:none}
.mega__thumb figcaption{position:absolute;left:12px;right:12px;bottom:12px;z-index:1;color:var(--text-1);font:600 .75rem/1.35 var(--font-sans);letter-spacing:.04em}
/* Breakpoints (03 G1): ≥1400 full · 1180–1399 badge-only logo · <1180 logo + Menu (+ primary ≥600) */
@media (max-width:1399px){.dock__word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.dock__link{padding:0 10px}}
@media (max-width:1179px){
  .dock__nav,.dock .lang,.dock__secondary{display:none}
  .dock__menu{display:inline-flex}
  .dock__brand{gap:10px}
  .dock__word{position:static;width:auto;height:auto;overflow:visible;clip:auto}
  .dock .btn{margin-right:6px}
}
@media (max-width:599px){
  .dock__primary{display:none}
  .dock{padding-left:10px;padding-right:8px}
  .dock__word{max-width:9.5em;white-space:normal;font-size:13px;line-height:1.2;text-wrap:balance}
  .dock__menu{padding:0 14px}
}
@media (max-width:359px){.dock__word{display:none}}

/* ===== 15. G1 mobile sheet ============================================ */
.sheet{position:fixed;inset:0;z-index:150;display:none;flex-direction:column;
  background:linear-gradient(rgba(6,7,11,.96),rgba(6,7,11,.96)),url("../media/bg/theta-field-quiet.webp") 50% 100%/cover no-repeat,var(--bg-0);
  color:var(--text-2);opacity:0;transform:translateY(-24px);
  transition:opacity var(--dur-slow) var(--ease-drawer),transform var(--dur-slow) var(--ease-drawer)}
.sheet.is-mounted,.no-js .sheet:target{display:flex}
.sheet.is-open,.no-js .sheet:target{opacity:1;transform:none}
.sheet__top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(var(--dock-top) + 10px) var(--gutter) 8px;padding-top:max(calc(var(--dock-top) + 10px),env(safe-area-inset-top))}
.sheet__top .dock__brand{margin:0}
.sheet__close{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:var(--r-pill);border:1px solid var(--line-2);background:none;color:var(--text-1);font:600 14px/1 var(--font-sans);cursor:pointer;text-decoration:none}
.sheet__close .icon{width:18px;height:18px}
.sheet__nav{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:12px var(--gutter) 24px}
.sheet__nav>*{border-bottom:1px solid var(--line-1);opacity:0;transform:translateY(-8px);
  transition:opacity var(--dur-slow) var(--ease-out) calc(var(--i,0) * 40ms),transform var(--dur-slow) var(--ease-out) calc(var(--i,0) * 40ms)}
.sheet.is-open .sheet__nav>*,.no-js .sheet:target .sheet__nav>*{opacity:1;transform:none}
.sheet__h{margin:0}
.sheet__acc,.sheet__link{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:64px;padding:8px 0;border:0;background:none;
  color:var(--text-1);font:500 calc(clamp(1.9rem,1.5rem + 2.6vw,2.6rem) * var(--k-display))/1.1 var(--font-display);letter-spacing:-.01em;text-align:left;text-decoration:none;cursor:pointer}
.sheet__acc .icon{width:22px;height:22px;color:var(--text-3);transition:transform var(--dur-base) var(--ease-out)}
.sheet__acc[aria-expanded="true"] .icon{transform:rotate(180deg)}
.sheet__link[aria-current="page"]::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--theta-400);box-shadow:0 0 10px var(--theta-glow)}
.sheet__list{display:grid;gap:0;padding:0 0 18px}
.sheet__list a{display:flex;align-items:center;gap:10px;min-height:44px;color:var(--text-2);font:500 1.0625rem/1.35 var(--font-sans);text-decoration:none}
.sheet__list a[aria-current="page"]{color:var(--text-1)}
.sheet__list a[aria-current="page"]::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--theta-400)}
.sheet__sub{margin:10px 0 2px;color:var(--text-3);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.sheet__foot{display:grid;gap:14px;padding:16px var(--gutter);padding-bottom:max(18px,env(safe-area-inset-bottom));border-top:1px solid var(--line-1);background:rgba(6,7,11,.9)}
.sheet__foot .lang{justify-self:start;margin-left:-10px}
.sheet__ctas{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sheet__ctas .btn{padding-inline:14px}
@media (min-width:1180px){.sheet{display:none!important}}

/* ===== 16. G2 Night footer ============================================ */
.foot{position:relative;isolation:isolate;background:var(--bg-0);border-top:1px solid var(--line-1);color:var(--text-2);padding:0 0 40px}
.foot__wave{display:block;width:100%;height:56px;margin-bottom:clamp(40px,5vw,72px);fill:none;stroke:var(--theta-400);stroke-width:1.25;opacity:.55;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent);mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent)}
.foot__top{display:flex;align-items:flex-start;justify-content:space-between;gap:32px}
.foot__statement{max-width:34ch;color:var(--text-1);font:500 calc(clamp(1.6rem,1.15rem + 1.25vw,2.35rem) * var(--k-display))/1.18 var(--font-display);letter-spacing:-.01em;text-wrap:balance}
.foot__logo{flex:none;width:64px;height:64px}
.foot__cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.25fr);gap:32px;margin-top:clamp(48px,6vw,80px);padding-top:32px;border-top:1px solid var(--line-1)}
.foot__h{margin:0 0 14px;color:var(--text-3);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.foot__toggle{display:none}
.foot__list{display:grid;gap:2px}
.foot__list a,.foot__list li>span{display:inline-flex;align-items:center;gap:10px;min-height:40px;max-width:100%;color:var(--text-2);font:500 .9375rem/1.4 var(--font-sans);text-decoration:none;overflow-wrap:anywhere}
.foot__list a:hover{color:var(--text-1)}
.foot__list .icon{width:18px;height:18px;color:var(--theta-300)}
.foot__list--visit li>span{min-height:32px;align-items:flex-start;padding-top:6px}
.foot__list--visit .icon{margin-top:1px}
.foot__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 28px;margin-top:clamp(40px,5vw,64px);padding-top:20px;border-top:1px solid var(--line-1);font:500 .875rem/1.5 var(--font-sans)}
.foot__bar-end{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px}
.foot__bar-start{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px}
.foot__legal{display:flex;flex-wrap:wrap;gap:0 18px}
.foot__legal a{display:inline-flex;align-items:center;min-height:32px;color:var(--text-2);text-decoration:none}
.foot__legal a:hover,.foot__legal a[aria-current]{color:var(--text-1)}
.socials{display:flex;align-items:center;gap:4px}
.socials a{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--text-2);transition:color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}
.socials a:hover{color:var(--text-1);background:rgba(255,255,255,.05)}
.foot__note{margin-top:24px;max-width:90ch;color:var(--text-3);font:500 calc(var(--t-small) * var(--k-text))/1.55 var(--font-sans)}
@media (max-width:1023px){.foot__cols{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:28px}}
@media (max-width:767px){
  .foot__top{flex-direction:column-reverse;gap:24px}
  .foot__statement{font-size:calc(clamp(1.5rem,1.2rem + 1.4vw,1.9rem) * var(--k-display));line-height:1.15}
  .foot__cols{grid-template-columns:minmax(0,1fr);gap:0;padding-top:8px}
  .foot__col{border-bottom:1px solid var(--line-1)}
  .js .foot__col[data-foot-col] .foot__h{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .js .foot__col[data-foot-col] .foot__toggle{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:56px;padding:0;border:0;background:none;
    color:var(--text-1);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase;cursor:pointer}
  .foot__toggle .icon{width:18px;height:18px;color:var(--text-3);transition:transform var(--dur-base) var(--ease-out)}
  .foot__toggle[aria-expanded="true"] .icon{transform:rotate(180deg)}
  .js .foot__col.is-closed .foot__list{display:none}
  .foot__col .foot__list{padding-bottom:16px}
  .foot__col--visit{border-bottom:0;padding-top:20px}
  .foot__bar{flex-direction:column;align-items:flex-start}
}

/* ===== 17. G3 Mobile CTA Dock ========================================= */
.cta-dock{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:90;display:grid;grid-template-columns:1fr 1fr;gap:8px;
  min-height:64px;padding:6px;border-radius:var(--r-pill);--lens-fill:var(--solid-fill);
  transform:translateY(calc(100% + 28px));visibility:hidden;
  transition:transform var(--dur-slow) var(--ease-drawer),visibility 0s linear var(--dur-slow)}
.cta-dock.is-shown{transform:none;visibility:visible;transition-delay:0s}
.cta-dock .btn{--h:50px;padding:4px 12px;font-size:14px;line-height:1.15}
@media (min-width:1024px){.cta-dock{display:none}}
@media (max-width:374px){.cta-dock .btn{font-size:13px;padding-inline:8px}}

/* ===== 18. G4 Motion toggle =========================================== */
.motion-toggle{display:inline-flex;align-items:center;gap:12px;min-height:44px;padding:0 4px;border:0;background:none;color:var(--text-1);font:600 .875rem/1 var(--font-sans);cursor:pointer}
.switch{position:relative;flex:none;width:42px;height:24px;border-radius:var(--r-pill);background:var(--bg-3);border:1px solid var(--line-2)}
.switch i{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--text-3);transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}
.motion-toggle[aria-pressed="true"] .switch{border-color:var(--theta-400);box-shadow:0 0 12px rgba(62,85,245,.35)}
.motion-toggle[aria-pressed="true"] .switch i{transform:translateX(18px);background:var(--text-1)}
.motion-toggle:disabled{cursor:default;opacity:.6}
.motion-toggle__state{min-width:2.4em;color:var(--text-2);font-weight:500}
.motion-note{color:var(--text-3);font-size:.8125rem}

/* ===== 19. G5 Breadcrumbs ============================================= */
.crumbs{display:flex;max-width:100%}
.crumbs ol{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 0;min-height:32px;padding:4px 14px;border-radius:var(--r-pill);
  background:rgba(10,12,18,.62);border:1px solid rgba(255,255,255,.10);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}
.crumbs li{display:inline-flex;align-items:center;color:var(--text-1);font:600 .75rem/1.3 var(--font-sans);letter-spacing:.06em}
.crumbs li+li::before{content:"";width:3px;height:3px;margin:0 10px;border-radius:50%;background:var(--text-3)}
.crumbs a{position:relative;display:inline-flex;align-items:center;min-height:28px;color:var(--text-2);text-decoration:none}
.crumbs a:hover{color:var(--text-1)}
.crumbs [aria-current="page"]{color:var(--text-1)}
.ch--paper .crumbs ol{background:rgba(255,255,255,.6);border-color:rgba(17,19,26,.1);box-shadow:none}
.ch--paper .crumbs li,.ch--paper .crumbs [aria-current]{color:var(--ink-1)} .ch--paper .crumbs a{color:var(--ink-2)}

/* ===== 20. Heroes (03 H1–H7) ========================================== */
.hero{position:relative;isolation:isolate;overflow:hidden;overflow:clip;display:flex;flex-direction:column;justify-content:flex-end;
  padding:calc(var(--dock-top) + var(--dock-h) + 56px) 0 clamp(64px,9vh,112px);background:var(--bg-1);color:var(--text-1)}
.hero__media{position:absolute;inset:0;z-index:-2}
.hero__shade{position:absolute;inset:0;z-index:-1;pointer-events:none}
.hero__content{width:min(var(--container),100% - 2*var(--gutter));margin-inline:auto}
.hero__content>.crumbs{margin-bottom:24px}
.hero__eyebrow{color:var(--text-1);max-width:62ch}
.hero__title{margin-top:24px}
.hero__lead{margin-top:26px;max-width:50ch;color:var(--text-1)} /* text over film or field uses --text-1 (01 §5.2) */
.hero__ctas{display:flex;flex-wrap:wrap;align-items:center;gap:12px 14px;margin-top:34px}
.hero__ctas>span{display:flex}
.hero__ctas .link{margin-left:12px}
.hero__toggle{position:absolute;z-index:3;right:max(var(--gutter),(100% - var(--container))/2);bottom:28px}
.scroll-cue{position:absolute;left:50%;bottom:26px;width:1px;height:44px;background:var(--line-2)}
.scroll-cue::after{content:"";position:absolute;left:-1px;top:0;width:3px;height:3px;border-radius:50%;background:var(--text-1);animation:cue 2.4s var(--ease-in-out) infinite}
@keyframes cue{0%{transform:translateY(0);opacity:0}20%,80%{opacity:1}100%{transform:translateY(41px);opacity:0}}
.hero.is-paused .scroll-cue::after{animation:none;transform:translateY(20px)}

/* Hero entrance (02 §3): CSS initial state under .js (no first-frame flash); core.js adds .is-in.
   Fail-safe: if core.js never runs, everything appears after 2.5s. */
.js [data-hero]:not(.is-in) .line>span{transform:translateY(115%);animation:hero-failsafe 0s linear 2.5s forwards}
.js [data-hero]:not(.is-in) [data-seq]{opacity:0;transform:translateY(12px);animation:hero-failsafe 0s linear 2.5s forwards}
.js [data-hero]:not(.is-in) [data-seq="fade"]{transform:none}
.js [data-hero]:not(.is-in) [data-seq="rise"]{transform:translateY(24px)}
.js [data-hero]:not(.is-in) [data-seq="iris"]{transform:scale(1.06);clip-path:inset(10% 10% 10% 10% round var(--iris-r,var(--r-xl)))}
@keyframes hero-failsafe{to{opacity:1;transform:none;clip-path:none}}
[data-hero].is-in .line>span{transition:transform var(--dur-hero) var(--ease-out) var(--d,0ms)}
[data-hero].is-in [data-seq]{transition:opacity var(--t,700ms) var(--ease-out) var(--d,0ms),transform var(--t,700ms) var(--ease-out) var(--d,0ms)}
[data-hero].is-in [data-seq="rise"]{--t:var(--dur-hero)}
[data-hero].is-in [data-seq="iris"]{clip-path:inset(0 round var(--iris-r,var(--r-xl)));transition:opacity 500ms var(--ease-out) var(--d,0ms),transform 900ms var(--ease-out) var(--d,0ms),clip-path 900ms var(--ease-out) var(--d,0ms)}
.js [data-hero]:not(.is-in) .chip--seal .chip__dot{transform:scale(0)}
[data-hero].is-in .chip--seal .chip__dot{transition:transform 420ms var(--ease-pop) 1250ms}
[data-hero-out]{transform:translate3d(0,var(--out-y,0px),0);opacity:var(--out-o,1)}

/* H1 · Cinematic Film Hero (Home) */
.hero--cinematic{min-height:clamp(640px,100svh,1080px)}
.hero--cinematic .hero__shade{background:
  linear-gradient(90deg,rgba(6,7,11,.72),rgba(6,7,11,.35) 38%,transparent 58%),var(--g-vignette),var(--g-fade)}
.hero__seal{position:absolute;z-index:2;top:calc(var(--dock-top) + var(--dock-h) + 120px);right:max(var(--gutter),(100% - var(--container))/2)}
@media (max-width:767px){
  .hero--cinematic{justify-content:flex-start;min-height:0;padding-top:calc(min(58svh,520px) - 96px);padding-bottom:72px}
  .hero--cinematic .hero__media{bottom:auto;height:min(58svh,520px)}
  .hero--cinematic .hero__shade{bottom:auto;height:min(58svh,520px);background:linear-gradient(to bottom,rgba(6,7,11,.45),transparent 30%,transparent 55%,var(--bg-1) 100%)}
  .hero__seal{position:static;display:flex;width:min(var(--container),100% - 2*var(--gutter));margin:0 auto 20px}
  .hero--cinematic .hero__toggle{bottom:auto;top:calc(var(--dock-top) + var(--dock-h) + 12px)}
  .hero__ctas>span{width:100%}.hero__ctas .btn{width:100%}.hero__ctas .link{margin-left:0}
  .scroll-cue{display:none}
}

/* H2 · Product Stage Hero */
.hero--stage{min-height:max(640px,92svh);justify-content:flex-start;text-align:center}
.hero--stage .hero__content{position:relative;display:grid;justify-items:center;z-index:2}
.hero--stage .hero__lead{margin-inline:auto}
.hero--stage .hero__ctas{justify-content:center}
.stage{position:relative;z-index:1;width:min(var(--container),100% - 2*var(--gutter));margin:clamp(24px,4vh,48px) auto 0;flex:1;display:flex;align-items:flex-end;justify-content:center}
.stage__bloom{position:absolute;left:10%;right:10%;bottom:0;height:70%;background:var(--g-bloom);pointer-events:none;animation:bloom-breathe var(--breath) var(--ease-in-out) infinite}
.stage__product{position:relative;width:70%;max-width:min(980px,88svh);margin:0}
.stage__product img{width:100%;height:auto;-webkit-mask-image:radial-gradient(closest-side,#000 62%,transparent 100%);mask-image:radial-gradient(closest-side,#000 62%,transparent 100%)}
.stage__reflection{position:absolute;left:0;right:0;top:100%;transform:scaleY(-1);opacity:.12;pointer-events:none;
  -webkit-mask-image:linear-gradient(to top,#000,transparent 35%)!important;mask-image:linear-gradient(to top,#000,transparent 35%)!important}
.stage__chips{position:absolute;inset:0;pointer-events:none}
.stage__chips>li{position:absolute;left:var(--x,0);top:var(--y,0);pointer-events:auto}
@media (min-width:1280px){
  .hero--stage.hero--stage-left{text-align:left}
  .hero--stage.hero--stage-left .hero__content{justify-items:start;position:absolute;left:0;right:0;top:calc(var(--dock-top) + var(--dock-h) + 64px)}
  .hero--stage.hero--stage-left .hero__content>*{max-width:560px}
  .hero--stage.hero--stage-left .hero__ctas{justify-content:flex-start}
  .hero--stage.hero--stage-left .hero__lead{margin-inline:0}
  .hero--stage.hero--stage-left .stage{align-items:center;justify-content:flex-end}
}
@media (max-width:767px){
  .stage__product{width:110%;max-width:none}
  .stage__chips{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:24px}
  .stage__chips>li{position:static}
  .stage{flex-direction:column;align-items:center}
  .stage__chips .chip{white-space:normal}
}

/* H3 · Film Subhero (full / framed) */
.hero--film{min-height:max(560px,78svh)}
.hero--film .hero__shade{background:linear-gradient(90deg,rgba(6,7,11,.66),rgba(6,7,11,.3) 45%,transparent 70%),radial-gradient(120% 90% at 50% 40%,transparent 45%,rgba(6,7,11,.45) 80%,var(--bg-0) 100%),var(--g-fade)}
.hero--film .hero__content>*{max-width:640px}
.hero--framed{min-height:max(640px,86svh);justify-content:center}
.hero--framed .hero__content{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(32px,5vw,80px);align-items:center}
.hero__frame{position:relative;justify-self:end;width:100%;max-width:440px}
.hero__frame .film{height:min(74svh,760px);aspect-ratio:9/16;width:auto;max-width:100%;margin-left:auto;border-radius:var(--r-xl)}
.hero__frame::before{content:"";position:absolute;inset:-25% -35%;z-index:-1;background:var(--g-bloom);pointer-events:none}
.hero__frame .chip-list{position:absolute;left:16px;right:16px;bottom:16px;z-index:3}
@media (max-width:1023px){
  .hero--framed .hero__content{grid-template-columns:minmax(0,1fr)}
  /* phones: a 4:5 crop of the framed film keeps the H1 above the fold */
  .hero__frame{order:-1;justify-self:center;width:100%;max-width:420px}
  .hero__frame .film{height:auto;width:100%;aspect-ratio:4/5}
}

/* H4 · Field Subhero */
.hero--field{min-height:max(560px,70svh)}
.hero--field .hero__content{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px 48px;align-items:end}
.hero--field .hero__main{max-width:760px}
.hero--field.hero--center{text-align:center}
.hero--field.hero--center .hero__content{grid-template-columns:minmax(0,1fr);justify-items:center}
.hero--field.hero--center .hero__lead{margin-inline:auto}
.hero--field.hero--center .hero__ctas{justify-content:center}
.hero__facts{width:min(360px,100%);padding:24px 26px;border-radius:var(--r-l);display:grid;gap:0}
.hero__facts li{display:grid;gap:2px;padding:14px 0;border-top:1px solid var(--line-1);color:var(--text-2);font:500 .9375rem/1.45 var(--font-sans)}
.hero__facts li:first-child{border-top:0;padding-top:0}
.hero__facts b{color:var(--text-1)}
.hero--compact{min-height:max(480px,52svh)}
@media (max-width:1023px){.hero--field .hero__content{grid-template-columns:minmax(0,1fr)}.hero__facts{display:none}}

/* H5 · Portrait Subhero */
.hero--portrait{min-height:max(620px,80svh);justify-content:center;background:var(--bg-1)}
.hero--portrait .hero__content{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(32px,5vw,80px);align-items:center}
.hero__portrait{position:relative;margin:0;justify-self:end;width:100%;max-width:480px;aspect-ratio:4/5;border-radius:var(--r-xl);overflow:hidden;
  box-shadow:0 0 0 1px var(--line-1),0 40px 120px -40px var(--theta-glow)}
.hero__portrait img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 30%)}
.hero__portrait--square{aspect-ratio:1/1}
@media (max-width:1023px){
  .hero--portrait{padding-top:calc(var(--dock-top) + var(--dock-h) + 24px)}
  .hero--portrait .hero__content{grid-template-columns:minmax(0,1fr)}
  .hero__portrait{order:-1;justify-self:stretch;max-width:none;aspect-ratio:16/10}
  .hero__portrait img{object-position:var(--pos-m,var(--pos,50% 30%))}
}

/* H6 · Paper Subhero: dark band, then an immediate dark → paper seam into the body */
.hero--paper{min-height:max(380px,44svh);padding-bottom:clamp(48px,6vh,72px)}
.hero--paper .hero__content>*{max-width:760px}
.hero--paper+.ch--paper{padding-top:calc(160px + var(--section-y-tight))}
.hero__float{position:absolute;z-index:3;right:max(var(--gutter),(100% - var(--container))/2);bottom:-120px;width:min(320px,26vw);margin:0;border-radius:var(--r-l);overflow:hidden;box-shadow:0 30px 80px -30px rgba(0,0,0,.6)}
.hero--paper:has(.hero__float){overflow:visible;z-index:2}
@media (max-width:1023px){.hero__float{display:none}}

/* H7 · Media Hero (default inner-page hero with strong media; text panel over media) */
.hero--media{min-height:clamp(560px,100svh - 24px,980px);justify-content:center;padding-top:calc(var(--dock-top) + var(--dock-h) + 40px)}
.hero--media .hero__shade{background:linear-gradient(90deg,rgba(6,7,11,.78) 0%,rgba(6,7,11,.5) 40%,rgba(6,7,11,.08) 72%,transparent),var(--g-fade)}
.hero--media .hero__media img,.hero--media .hero__media video{object-position:var(--pos,60% 50%)}
.hero__panel{max-width:660px;padding:clamp(26px,3vw,44px);border-radius:var(--r-l);--lens-fill:rgba(14,15,24,.5)}
.hero__panel .hero__title{margin-top:18px}
.hero--media .hero__title{font:500 calc(clamp(2.5rem,1.6rem + 2.6vw,4.1rem) * var(--k-display))/1 var(--font-display);letter-spacing:-.015em;hyphens:manual;-webkit-hyphens:manual}
.hero--media .hero__lead{margin-top:20px;font:400 calc(clamp(1rem,.95rem + .2vw,1.0625rem) * var(--k-text))/1.65 var(--font-sans)}
.hero--media .hero__ctas{margin-top:28px}
.hero--split .hero__media{left:36%;-webkit-mask-image:linear-gradient(90deg,transparent,#000 22%);mask-image:linear-gradient(90deg,transparent,#000 22%)}
.hero--split .hero__shade{background:linear-gradient(90deg,var(--bg-1) 30%,rgba(10,12,18,.4) 52%,transparent 72%),var(--g-fade)}
@media (max-width:760px){
  .hero--media{justify-content:flex-start;min-height:0;padding-top:calc(60svh - 88px);padding-bottom:56px}
  .hero--media .hero__media,.hero--split .hero__media{left:0;bottom:auto;height:60svh;-webkit-mask-image:none;mask-image:none}
  .hero--media .hero__media img,.hero--media .hero__media video{object-position:var(--pos-m,var(--pos,50% 50%))}
  .hero--media .hero__shade,.hero--split .hero__shade{bottom:auto;height:60svh;background:linear-gradient(to bottom,rgba(6,7,11,.4),transparent 30%,transparent 60%,var(--bg-1) 100%)}
  .hero--media .hero__title{font-size:calc(2.2rem * var(--k-display))}
  .hero--media .hero__toggle{bottom:auto;top:calc(60svh - 88px - 60px)}
}

/* ===== 21. Accordions and tabs ======================================== */
/* <details class="acc"> — native, works without JS; compliance answers carry `open` in the markup */
.acc{border-top:1px solid var(--hair)}
.acc:last-of-type{border-bottom:1px solid var(--hair)}
.acc>summary{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px;padding:16px 0;cursor:pointer;list-style:none;
  color:var(--fg-1);font:600 calc(var(--t-title) * var(--k-text))/1.35 var(--font-sans);letter-spacing:-.01em}
.acc>summary::-webkit-details-marker{display:none}
.acc>summary .icon{width:20px;height:20px;color:var(--fg-3);transition:transform var(--dur-base) var(--ease-out)}
.acc[open]>summary .icon{transform:rotate(180deg)}
.acc>summary:hover{color:var(--fg-1)}
.acc__body{padding:0 0 24px;max-width:var(--measure);color:var(--fg-2)}
.acc__body>*+*{margin-top:.9em}
.acc[open] .acc__body{animation:acc-in var(--dur-base) var(--ease-out)}
@keyframes acc-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.acc__note{display:inline-flex;align-items:center;gap:8px;margin-bottom:6px;color:var(--fg-3);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.14em;text-transform:uppercase}
/* Tabs: [data-tabs] > .tabs__list > button.tabs__tab[data-tab=id] + .tabs__panel#id (core.js adds ARIA) */
.tabs__list{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--hair)}
.tabs__tab{min-height:44px;padding:0 18px;border:0;border-radius:var(--r-pill);background:none;color:var(--fg-2);font:600 .9375rem/1.2 var(--font-sans);cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.tabs__tab:hover{color:var(--fg-1)}
.tabs__tab[aria-selected="true"]{background:var(--text-1);color:var(--bg-1)}
.ch--paper .tabs__tab[aria-selected="true"]{background:var(--ink-1);color:var(--paper-0)}
.tabs__panel{margin-top:clamp(28px,4vw,48px)}
.tabs__panel.is-active{animation:acc-in var(--dur-base) var(--ease-out)}
.no-js .tabs__list{display:none}
@media (max-width:599px){.tabs__list{display:flex;width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.tabs__tab{flex:none}}

/* ===== 22. Utilities ================================================== */
.sr-only,.sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.nowrap{white-space:nowrap}
.center{text-align:center}
.no-js .js-only{display:none!important}
@media (max-width:767px){.hide-sm{display:none!important}}
@media (min-width:768px){.only-sm{display:none!important}}

/* ===== 23. Modes: reduced motion, motion off, transparency, contrast, forced colours, print */
[data-motion="off"] *,[data-motion="off"] *::before,[data-motion="off"] *::after{scroll-behavior:auto!important}
[data-motion="off"] [data-reveal].is-pending{transform:none;clip-path:none}
[data-motion="off"] [data-reveal].is-in{transition:opacity 200ms linear}
html.js[data-motion="off"] [data-hero]:not(.is-in) .line>span{opacity:0;transform:none}
[data-motion="off"] [data-hero] [data-seq],[data-motion="off"] [data-hero] .line>span,[data-motion="off"] [data-hero] .chip__dot{transform:none!important}
[data-motion="off"] [data-hero] [data-seq="iris"]{clip-path:none!important}
[data-motion="off"] [data-hero].is-in [data-seq],[data-motion="off"] [data-hero].is-in .line>span{transition:opacity 200ms linear}
[data-motion="off"] [data-hero-out]{transform:none;opacity:1}
[data-motion="off"] .scroll-cue::after{animation:none;transform:translateY(20px)}
[data-motion="off"] .aurora i,[data-motion="off"] .bloom--breathe,[data-motion="off"] .stage__bloom{animation-play-state:paused!important;animation:none!important}
[data-motion="off"] .blueprint__scan{animation:none!important}
[data-motion="off"] .film video{transition-duration:200ms}
[data-motion="off"] .dock-wrap{transform:none!important}
[data-motion="off"] .sheet,[data-motion="off"] .sheet__nav>*{transition-duration:0s!important;transition-delay:0s!important}
[data-motion="off"] .mega{transition-duration:120ms;transform:none}
[data-motion="off"] .acc[open] .acc__body,[data-motion="off"] .tabs__panel.is-active{animation:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important}
  .aurora i,.bloom--breathe,.stage__bloom,.blueprint__scan,.scroll-cue::after{animation:none!important}
  .dock-wrap{transform:none!important}
  .acc[open] .acc__body,.tabs__panel.is-active{animation:none}
}
@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){
  .glass-veil,.glass-lens,.dock,.dock-wrap[data-scrolled="true"] .dock{background:rgba(20,24,36,.94)!important;border-color:var(--line-2);-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .glass-paper{background:var(--paper-0);-webkit-backdrop-filter:none;backdrop-filter:none}
  .crumbs ol{background:rgba(10,12,18,.94)}
  body::after{display:none}
}
@media (forced-colors:active){
  .glass-veil,.glass-lens,.glass-paper,.dock,.dock.glass-veil,.mega,.cta-dock,.crumbs ol,.card,.chip{background:Canvas!important;border:1px solid CanvasText;color:CanvasText;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .glass-lens::before,.glass-lens::after,.dock::after,body::after{display:none}
  .btn{border:1px solid ButtonText}
}
@media print{
  body::after,.dock-wrap,.sheet,.cta-dock,.field,.aurora,.blueprint,.film video,.hero__toggle,.scroll-cue,.skip{display:none!important}
  body,.ch--dark,.ch--deep,.ch--raised,.hero,.foot{background:#fff!important;color:#000!important}
  .js [data-reveal].is-pending,.js [data-hero] [data-seq],.js [data-hero] .line>span{opacity:1!important;transform:none!important}
}

/* Bulgarian: keep the standard Cyrillic letterforms readers know from today's site (Manrope's
   Bulgarian "locl" forms turn т/д into m/g shapes) */
[lang="bg"],[lang="bg"] *{font-feature-settings:"locl" 0!important}

/* breadcrumb links keep their 28px look but get a 44px hit area */
.crumbs a::after{content:"";position:absolute;inset:-8px -6px}
/* chips that carry units (Hz, µA) keep their case: uppercase would turn µA into ΜA and Hz into HZ */
.chip.chip--case{text-transform:none;letter-spacing:.02em}

/* =====================================================================
   MODULES M01–M33 (merged from css/modules.css in P6; see 09b-module-contract.md)
   ===================================================================== */
/* =============================================================================
   CTFY · Midnight Theta · Module library M01–M33  (css/modules.css, P0b)
   Spec: docs/redesign/03-module-library.md · Contract: docs/redesign/09b-module-contract.md
   Builds on css/site.css (09a): tokens, context colours (--fg-*, --hair*, --surface*, --page flip inside
   .ch--paper), .sec__head, .card, .btn, .link, .chip, .glass-*, .icon, .acc, [data-tabs], .bloom, .aurora,
   .blueprint, .field, .film, [data-reveal]. Nothing here redefines those; modules only lay them out.

   Conventions
   - Module root .m-<name>, parts .m-<name>__part, variants .m-<name>--variant.
   - Dark by default; inside .ch--paper every module reads the porcelain context colours automatically.
     .m-dark flips one block back to midnight inside a paper chapter (inverted flagship, bridge card).
   - Before-reveal states are keyed on .is-pending (core.js adds it only when JS + motion run), and the
     choreography runs while .is-in is set. core.js removes .is-in after delay + 700ms + data-reveal-hold,
     so every module with a longer internal sequence documents its hold in the contract.
   - Scenes ([data-scene]) render their designed end state by default. motion.js adds .is-live (desktop,
     pinned) or .is-auto (mobile, plays on view) only while motion is on, and removes them when it is off.
   - Motion is transform + opacity only. Loops pause off-screen ([data-in-view]) and with motion off.
   ============================================================================= */

/* ---------- 0. Module tokens (only what the foundation does not already define) ---------- */
:root{
  --m-price:var(--champ-400);      /* prices and investor figures */
  --m-unit:var(--champ-400);       /* spec units */
  --m-accent:var(--theta-400);     /* lines, fills, nodes */
  --m-band:var(--bg-2);            /* notes, quiet panels */
  --m-on-fg:var(--bg-1);           /* text on a --fg-1 fill (selected segment) */
  --m-lift:var(--hi-top);
  /* theta bloom (01 §2.3) for blooms kept inside their host's width: same light as --g-bloom on a 1.4× box */
  --m-bloom:radial-gradient(56% 40% at 50% 55%,rgba(62,85,245,.28),rgba(62,85,245,.08) 45%,transparent 70%);
}
.ch--paper{--m-price:var(--champ-600);--m-unit:var(--ink-3);--m-accent:var(--theta-700);--m-band:var(--paper-1);--m-on-fg:var(--paper-0);--m-lift:var(--lift-paper)}
.m-dark,.ch--paper .m-dark{
  --fg-1:var(--text-1); --fg-2:var(--text-2); --fg-3:var(--text-3); --fg-link:var(--theta-300);
  --hair:var(--line-1); --hair-2:var(--line-2); --surface:var(--bg-3); --surface-2:var(--bg-4); --page:var(--bg-1);
  --m-price:var(--champ-400); --m-unit:var(--champ-400); --m-accent:var(--theta-400); --m-band:var(--bg-2); --m-on-fg:var(--bg-1); --m-lift:var(--hi-top);
  color:var(--text-2); color-scheme:dark;
}
.ch--paper .m-dark .btn--pearl{background:var(--text-1);color:var(--bg-1)}
.ch--paper .m-dark .chip:not(.chip--theta):not(.chip--seal){background:var(--bg-3);border:1px solid var(--line-1);color:var(--text-2)}
.ch--paper .m-dark :focus-visible{outline-color:var(--theta-400)}

/* ---------- 0b. Shared atoms ---------- */
/* Icon lists (check / x): M07, M09, M11, M14, M31 */
.m-ticks{display:grid}
.m-ticks li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:12px;padding:13px 0;border-top:1px solid var(--hair);color:var(--fg-2)}
.m-ticks .icon{width:18px;height:18px;margin-top:3px;color:var(--fg-link)}

/* Media frame: radius + cover image */
.m-frame{position:relative;isolation:isolate;overflow:hidden;border-radius:var(--r-xl);background:var(--bg-2)}
.m-frame>img,.m-frame>picture,.m-frame>picture>img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.ch--paper .m-frame{background:var(--paper-1);box-shadow:var(--lift-paper)}
.m-frame--empty{display:grid;place-content:center;justify-items:center;gap:10px;padding:20px;background:radial-gradient(60% 50% at 50% 60%,var(--bg-3),var(--bg-2));color:var(--text-3);text-align:center;font-size:.8125rem}
.m-frame--empty .icon{width:28px;height:28px}

/* Iris reveal, transform-only (frame opens from 90% while the picture counter-scales).
   Use on module frames with data-reveal + data-reveal-hold="300". The foundation's data-reveal="iris"
   (clip-path) stays for heroes. */
.js .m-iris.is-pending{opacity:0;transform:scale(.9)}
.js .m-iris.is-pending>img,.js .m-iris.is-pending>picture>img,.js .m-iris.is-pending .m-iris__img{transform:scale(1.18)}
.m-iris.is-in{transition:opacity 420ms var(--ease-out) var(--delay,0ms),transform 900ms var(--ease-out) var(--delay,0ms)}
.m-iris.is-in>img,.m-iris.is-in>picture>img,.m-iris.is-in .m-iris__img{transition:transform 900ms var(--ease-out) var(--delay,0ms)}

/* Snap rail shared by M13 stories and M22 shelf: [data-scroller] > .m-rail + .m-rail-nav */
.m-rail{display:flex;gap:16px;padding-bottom:4px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none}
.m-rail::-webkit-scrollbar{display:none}
.m-rail>*{flex:none;scroll-snap-align:start}
.m-rail:focus-visible{outline-offset:6px;border-radius:var(--r-l)}
.m-rail.is-dragging{scroll-snap-type:none;cursor:grabbing;user-select:none}
.m-rail-nav{display:flex;align-items:center;gap:14px;margin-top:24px}
.m-rail-nav__bar{position:relative;flex:1;height:2px;border-radius:2px;background:var(--hair-2);overflow:hidden}
.m-rail-nav__bar i{position:absolute;inset:0;background:var(--m-accent);transform-origin:left;transform:scaleX(.33)}
.m-rail-nav .icon-btn{flex:none;color:var(--fg-1)}
.ch--paper .m-rail-nav .icon-btn{background:var(--paper-1);border:1px solid var(--line-p)}
[data-scroller]:not(.has-overflow) .m-rail-nav{display:none}

/* ---------- M01 · Proof Ribbon ---------- */
.m-ribbon{position:relative;z-index:2;overflow:hidden;padding-block:4px}
.m-ribbon__track{display:flex;justify-content:center}
.m-ribbon__list{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.m-ribbon__list[aria-hidden="true"]{display:none}
.m-ribbon.is-marquee{-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.m-ribbon.is-marquee .m-ribbon__track{justify-content:flex-start;width:max-content;animation:m-marquee 60s linear infinite;animation-play-state:paused}
.m-ribbon.is-marquee .m-ribbon__list{flex-wrap:nowrap;padding-right:12px}
.m-ribbon.is-marquee .m-ribbon__list[aria-hidden="true"]{display:flex}
.m-ribbon.is-marquee[data-in-view="true"] .m-ribbon__track{animation-play-state:running}
.m-ribbon.is-marquee:hover .m-ribbon__track,.m-ribbon.is-marquee:focus-within .m-ribbon__track{animation-play-state:paused}
@keyframes m-marquee{to{transform:translateX(-50%)}}
.m-ribbon--overlap{margin-top:-22px}            /* Home: half over the hero film, half over --bg-1 */

/* ---------- M02 · Light-up Statement (scene "lightup") ---------- */
.m-lightup{position:relative;isolation:isolate;overflow:hidden;padding-block:var(--section-y);text-align:center}
.m-lightup>.aurora{opacity:.7}
.m-lightup__quote{max-width:24ch;margin:0 auto;color:var(--fg-1)}
.m-lightup__quote em{font-style:normal}         /* the accent inside an italic statement is upright, never coloured */
.m-lightup__by{display:block;margin-top:clamp(24px,3vw,36px);color:var(--fg-3)}
.ch--paper .m-lightup>.aurora{display:none}

/* ---------- M03 · Spec Strip ---------- */
.m-spec{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.m-spec__divider{display:block;width:100%;height:56px;margin-bottom:clamp(32px,4vw,56px)}
.m-spec__item{min-width:0}
.m-spec__rule{display:block;height:1px;background:var(--hair-2);transform-origin:left}
.js .m-spec__item.is-pending .m-spec__rule{transform:scaleX(0)}
.m-spec__item.is-in .m-spec__rule{transition:transform 700ms var(--ease-out) var(--delay,0ms)}
.m-spec__num{margin-top:28px;color:var(--fg-1);white-space:nowrap}
.m-spec__unit{margin-left:.14em;color:var(--m-unit);font-size:.3em;font-weight:500;letter-spacing:.02em}
.m-spec__label{margin-top:14px;color:var(--fg-2);max-width:30ch}
.m-spec__item .link{margin-top:6px}
.m-spec--plain{--m-unit:var(--fg-3)}
/* investor: champagne figures, XL lead figure */
.m-spec--investor{grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr));align-items:end}
.m-spec--investor .m-spec__num{color:var(--m-price)}
.m-spec--investor .m-spec__item:not(:first-child) .m-spec__num{font-size:calc(var(--t-num-m) * 1.25)}
/* word stats: Cormorant words that light up in sequence, no count-up (data-reveal-hold="500" on the group's items) */
.m-spec--words .m-spec__num{font:500 calc(var(--t-display-m) * var(--k-display))/1.04 var(--font-display);letter-spacing:-.01em;white-space:normal}
.js .m-spec--words .m-spec__item.is-pending .m-spec__num{opacity:.18}
.m-spec--words .m-spec__item.is-in .m-spec__num{transition:opacity 900ms var(--ease-out) calc(var(--delay,0ms) + 300ms)}
@media (max-width:1023px){
  .m-spec,.m-spec--investor{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:48px}
  .m-spec--investor .m-spec__item:first-child{grid-column:1/-1}
}
@media (max-width:359px){.m-spec__num{white-space:normal}}

/* ---------- M04 · Chamber Anatomy (hotspots) ---------- */
.m-anatomy{position:relative;isolation:isolate}
.m-anatomy>.blueprint{inset:-6% -4%;opacity:.4}
.m-anatomy__stage{position:relative;max-width:1240px;margin-inline:auto}
.m-anatomy__media{position:relative;aspect-ratio:16/9}
.m-anatomy__media::after{content:"";position:absolute;inset:auto 10% -4% 10%;height:46%;pointer-events:none;
  background:radial-gradient(50% 50% at 50% 60%,rgba(62,85,245,.30),rgba(62,85,245,.08) 50%,transparent 75%);mix-blend-mode:screen}
.m-anatomy__img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 55%);
  -webkit-mask-image:radial-gradient(72% 76% at 50% 50%,#000 62%,transparent 100%);mask-image:radial-gradient(72% 76% at 50% 50%,#000 62%,transparent 100%)}
.m-anatomy__pin{position:absolute;z-index:3;left:var(--x);top:var(--y);display:none;width:44px;height:44px;margin:-22px 0 0 -22px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}
.m-anatomy.is-ready .m-anatomy__pin{display:block}
.m-anatomy__pin::before{content:"";position:absolute;inset:15px;border-radius:50%;background:var(--text-1);box-shadow:0 0 0 3px rgba(10,12,18,.35),0 0 16px var(--theta-glow);transition:transform var(--dur-fast) var(--ease-out)}
.m-anatomy__pin::after{content:"";position:absolute;inset:7px;border-radius:50%;border:1px solid var(--theta-400);opacity:.8;animation:m-breathe var(--breath) var(--ease-in-out) infinite;animation-play-state:paused}
.m-anatomy[data-in-view="true"] .m-anatomy__pin::after{animation-play-state:running}
.m-anatomy__pin:hover::before,.m-anatomy__pin[aria-expanded="true"]::before{transform:scale(1.2)}
.m-anatomy__pin[aria-expanded="true"]::after{border-color:var(--theta-300);box-shadow:0 0 22px var(--theta-glow)}
.m-anatomy__pin:focus-visible{outline:2px solid var(--theta-400);outline-offset:0;border-radius:50%}
@keyframes m-breathe{0%,100%{transform:scale(1);opacity:.8}50%{transform:scale(1.3);opacity:.35}}
/* pins appear one by one when the stage reveals (pop on the dot only) — data-reveal-hold="700" on .m-anatomy__media */
.js .m-anatomy__media.is-pending .m-anatomy__pin{opacity:0;transform:scale(.6)}
.m-anatomy__media.is-in .m-anatomy__pin{transition:opacity 320ms var(--ease-out),transform 420ms var(--ease-pop)}
.m-anatomy__media.is-in .m-anatomy__pin:nth-of-type(1){transition-delay:300ms}
.m-anatomy__media.is-in .m-anatomy__pin:nth-of-type(2){transition-delay:370ms}
.m-anatomy__media.is-in .m-anatomy__pin:nth-of-type(3){transition-delay:440ms}
.m-anatomy__media.is-in .m-anatomy__pin:nth-of-type(4){transition-delay:510ms}
.m-anatomy__media.is-in .m-anatomy__pin:nth-of-type(5){transition-delay:580ms}
.m-anatomy__media.is-in .m-anatomy__pin:nth-of-type(6){transition-delay:650ms}
/* cards: a list under the image without JS */
.m-anatomy__cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:clamp(24px,3vw,40px)}
.m-anatomy__card{display:grid;grid-template-columns:72px minmax(0,1fr);align-content:start;gap:4px 16px;padding:20px 22px 22px;border-radius:var(--r-l);color:var(--text-2)}
.m-anatomy__thumb{grid-row:span 3;width:72px;height:72px;border-radius:var(--r-m);object-fit:cover;object-position:var(--pos,50% 50%)}
.m-anatomy__n{color:var(--text-2)}
.m-anatomy__card h3{color:var(--text-1)}
.m-anatomy__spec{color:var(--theta-300);font:600 .8125rem/1.4 var(--font-sans);letter-spacing:.02em}
.m-anatomy__card>p:last-child{grid-column:1/-1;margin-top:10px;font-size:.9375rem;line-height:1.55}
.m-anatomy__leader{display:none}
@media (min-width:1024px){
  .m-anatomy.is-ready .m-anatomy__cards{position:absolute;inset:0;z-index:4;display:block;margin:0;pointer-events:none}
  .m-anatomy.is-ready .m-anatomy__card{position:absolute;left:0;top:0;width:min(320px,30%);pointer-events:none;opacity:0;visibility:hidden;
    transform:translate(var(--cx,0),var(--cy,0)) translateX(var(--from,8px));
    transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),visibility 0s linear var(--dur-base)}
  .m-anatomy.is-ready .m-anatomy__card.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:translate(var(--cx,0),var(--cy,0));transition-delay:0s}
  .m-anatomy.is-ready .m-anatomy__leader{position:absolute;z-index:3;left:0;top:0;display:block;width:1px;height:1px;background:var(--line-2);transform-origin:0 0;opacity:0;transition:opacity var(--dur-base) var(--ease-out);pointer-events:none}
  .m-anatomy.is-ready .m-anatomy__leader.is-on{opacity:1}
}
@media (max-width:1023px){
  .m-anatomy__media{aspect-ratio:4/3;margin-inline:calc(var(--gutter) * -1)}
  .m-anatomy__img{-webkit-mask-image:linear-gradient(#000 80%,transparent);mask-image:linear-gradient(#000 80%,transparent)}
  .m-anatomy__pin.is-active::before{transform:scale(1.2)}
  .m-anatomy__pin.is-active::after{border-color:var(--theta-300);box-shadow:0 0 22px var(--theta-glow)}
  .m-anatomy.is-ready .m-anatomy__cards{display:flex;gap:12px;margin:20px calc(var(--gutter) * -1) 0;padding:0 var(--gutter) 6px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);scrollbar-width:none}
  .m-anatomy.is-ready .m-anatomy__cards::-webkit-scrollbar{display:none}
  .m-anatomy.is-ready .m-anatomy__card{flex:none;width:min(82vw,340px);scroll-snap-align:start}
}

/* ---------- M05 · Five Inputs Converge (scene "converge") ---------- */
.m-converge{position:relative;isolation:isolate;padding-block:var(--section-y-tight);overflow-x:clip}
.m-converge__pin{position:relative;display:flex;flex-direction:column;align-items:center}
.m-converge__head{order:2;max-width:640px;margin:0;text-align:center;justify-items:center}
.m-converge__stage{--R:.4;--k:.6;position:relative;order:1;width:min(64vmin,640px);aspect-ratio:1;margin-block:clamp(48px,6vw,72px) clamp(32px,4vw,48px);container-type:inline-size}
.m-converge__bloom{position:absolute;inset:-14%;z-index:-1;pointer-events:none;background:radial-gradient(36% 36% at 50% 50%,rgba(62,85,245,.34),rgba(62,85,245,.1) 48%,transparent 72%)}
.m-converge__waves{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.m-converge__wave{fill:none;stroke:var(--theta-400);stroke-width:1.6;stroke-linecap:round;opacity:.75;vector-effect:non-scaling-stroke}
.m-converge__ring{fill:none;stroke:var(--theta-400);stroke-width:1.5;opacity:.9;vector-effect:non-scaling-stroke}
.m-converge:not(.is-live):not(.is-auto) .m-converge__mask{transform:translateX(-200px)}
.m-converge__core{position:absolute;left:50%;top:50%;display:grid;place-content:center;justify-items:center;gap:6px;width:27.8%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);
  background:radial-gradient(closest-side,rgba(28,33,48,.92),rgba(10,12,18,.94));box-shadow:inset 0 0 0 1px rgba(107,125,255,.45),0 0 60px -10px var(--theta-glow);text-align:center}
.m-converge__core b{color:var(--text-1);font:600 clamp(.75rem,.6rem + .5vw,1rem)/1 var(--font-sans);letter-spacing:.24em;padding-left:.24em}
.m-converge__core span{color:var(--text-2);font:300 clamp(1rem,.8rem + .9vw,1.6rem)/1 var(--font-sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.m-converge__nodes{position:absolute;inset:0}
.m-converge__node{position:absolute;left:calc(50% + var(--cx) * var(--R) * 100%);top:calc(50% + var(--cy) * var(--R) * 100%);width:0;height:0;
  transform:translate(calc(var(--cx) * var(--R) * (var(--k) - 1) * 100cqi),calc(var(--cy) * var(--R) * (var(--k) - 1) * 100cqi))}
.m-converge__body{position:absolute;left:0;top:0;transform:translate(-50%,-50%)}
.m-converge__disc{display:grid;place-items:center;width:clamp(40px,10cqi,64px);aspect-ratio:1;border-radius:50%;color:var(--theta-300);box-shadow:0 0 30px -8px var(--theta-glow),inset 0 1px 0 rgba(255,255,255,.14)}
.m-converge__disc .icon{width:42%;height:42%}
.m-converge__label{position:absolute;display:grid;gap:4px;width:max-content;max-width:190px;color:var(--text-1)}
.m-converge__label b{font:600 clamp(.875rem,.8rem + .3vw,1.0625rem)/1.25 var(--font-sans);letter-spacing:-.005em}
.m-converge__spec{color:var(--text-2);font:500 .8125rem/1.4 var(--font-sans)}
.m-converge__node[data-side="top"] .m-converge__label{left:50%;bottom:calc(100% + 12px);transform:translateX(-50%);text-align:center;justify-items:center}
.m-converge__node[data-side="right"] .m-converge__label{left:calc(100% + 16px);top:50%;transform:translateY(-50%)}
.m-converge__node[data-side="left"] .m-converge__label{right:calc(100% + 16px);top:50%;transform:translateY(-50%);text-align:right;justify-items:end}
/* live (desktop, pinned 220vh): starts open and dim; motion.js scrubs it to the converged state */
.m-converge.is-live{padding-block:0}
.m-converge.is-live .m-converge__pin{min-height:100vh;min-height:100svh;justify-content:center;padding-block:clamp(24px,4vh,48px)}
.m-converge.is-live .m-converge__stage{width:min(56vmin,600px);margin-block:clamp(36px,5vh,56px) clamp(12px,2vh,24px)}
.m-converge.is-live .m-converge__head{gap:12px}
.m-converge.is-live .m-converge__node{transform:none;opacity:.3}
.m-converge.is-live .m-converge__ring,.m-converge.is-live .m-converge__spec,.m-converge.is-live .m-converge__head{opacity:0}
.m-converge.is-live .m-converge__bloom,.m-converge.is-auto .m-converge__bloom{opacity:.25}
.m-converge.is-auto .m-converge__node{opacity:.3}
@media (max-width:1023px){
  .m-converge__head{order:0}
  .m-converge__stage{--k:1;width:min(90vw,520px);margin-block:48px 32px}
  .m-converge__ring{opacity:0}
  .m-converge__node .m-converge__label,.m-converge__node[data-side] .m-converge__label{left:50%;right:auto;top:calc(100% + 8px);bottom:auto;transform:translateX(-50%);text-align:center;justify-items:center;max-width:120px}
  .m-converge__node[data-side="top"] .m-converge__label{top:auto;bottom:calc(100% + 8px)}
  .m-converge__label b{font-size:.8125rem}
  .m-converge__spec{display:none}   /* the spec lines repeat in the component cards that follow (03 M05 a11y) */
}

/* ---------- M06 · Brainwave Descent (scene "descent") ---------- */
.m-descent{position:relative;isolation:isolate;padding-block:var(--section-y-tight)}
.m-descent>.field{opacity:.35}
.m-descent__stage{position:relative;display:grid;grid-template-columns:minmax(150px,200px) minmax(0,1fr) minmax(220px,300px);grid-template-areas:"bands wave read";align-items:center;gap:24px;min-height:240px}
.m-descent__bands{grid-area:bands;position:relative;z-index:2;display:grid;gap:18px}
.m-descent__bands li{display:flex;align-items:center;gap:10px;color:var(--text-3);transition:color var(--dur-slow) var(--ease-out)}
.m-descent__bands li.is-active{color:var(--text-1)}
.m-descent__bands .chip{transition:opacity var(--dur-slow) var(--ease-out)}
.m-descent__wave{grid-column:1/-1;grid-row:1;position:relative;height:240px}
.m-descent__wave canvas{position:relative;width:100%;height:100%;-webkit-mask-image:linear-gradient(90deg,transparent 10%,#000 24%,#000 64%,transparent 78%);mask-image:linear-gradient(90deg,transparent 10%,#000 24%,#000 64%,transparent 78%)}
.m-descent__glow{position:absolute;inset:-30% 8% -30% 4%;pointer-events:none;background:radial-gradient(48% 22% at 44% 50%,rgba(62,85,245,.22),transparent 72%),radial-gradient(34% 40% at 44% 52%,rgba(62,85,245,.16),transparent 70%);transition:opacity 900ms var(--ease-out)}
.m-descent__read{grid-area:read;position:relative;z-index:2;display:none;justify-items:end;gap:12px;text-align:right}
.m-descent__readout{display:flex;align-items:baseline;gap:.2em;color:var(--text-1);white-space:nowrap}
.m-descent__readout small{font-size:.3em;font-weight:500;letter-spacing:.02em;color:var(--text-3)}
.m-descent__caption{position:relative;min-height:3.2em;max-width:26ch;color:var(--text-2)}
.m-descent__caption span{display:block;opacity:0;transition:opacity var(--dur-slow) var(--ease-out)}
.m-descent__caption span+span{position:absolute;inset:0}
.m-descent__arc{position:relative;width:52px;height:52px;border-radius:50%;background:var(--line-2);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 1.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 1.5px))}
.m-descent__arc i{position:absolute;inset:0;overflow:hidden}
.m-descent__arc i:first-child{clip-path:inset(0 0 0 50%)}
.m-descent__arc i:last-child{clip-path:inset(0 50% 0 0)}
.m-descent__arc b{position:absolute;inset:0;border-radius:50%;background:linear-gradient(90deg,var(--theta-400) 50%,transparent 50%)}
.m-descent__arc i:first-child b{transform:rotate(180deg)}
.m-descent__arc i:last-child b{transform:rotate(360deg)}
.m-descent__panels{display:none;gap:14px}
.m-descent__panel{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 18px;padding:18px 20px;border-radius:var(--r-l);background:var(--bg-2);border:1px solid var(--line-1)}
.m-descent__panel canvas{grid-column:1/-1;width:100%;height:72px}
.m-descent__panel b{color:var(--text-3);font:600 calc(var(--t-title) * var(--k-text))/1.3 var(--font-sans)}
.m-descent__panel span{color:var(--text-3);font-size:.875rem}
.m-descent__panel--theta{border-color:rgba(107,125,255,.35);background:radial-gradient(70% 90% at 50% 100%,rgba(62,85,245,.16),transparent 70%),var(--bg-2)}
.m-descent__panel--theta b{color:var(--text-1)}
.m-descent__facts{margin-top:clamp(40px,5vw,72px)}
/* live (desktop, pinned 240vh) */
.m-descent.is-live{padding-block:0}
.m-descent.is-live .m-descent__pin{display:grid;align-content:center;min-height:100vh;min-height:100svh}
.m-descent.is-live .m-descent__read{display:grid}
.m-descent.is-live .m-descent__facts{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.m-descent.is-live:not(.is-theta) .m-descent__glow{opacity:0}
.m-descent.is-live .m-descent__bands li[data-band="theta"] .chip{opacity:.45}
.m-descent.is-live.is-theta .m-descent__bands li[data-band="theta"] .chip{opacity:1}
@media (max-width:1023px){
  .m-descent__stage{display:none}
  .m-descent__panels{display:grid}
  .m-descent__facts{margin-top:clamp(32px,6vw,48px)}
}

/* ---------- M07 · Contrast Split (data-reveal + data-reveal-hold="900" on .m-contrast) ---------- */
.m-contrast{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,40px);align-items:stretch}
.m-contrast__card{height:100%;padding:clamp(28px,3.4vw,44px);border-radius:var(--r-l)}
.m-contrast__card h3{color:var(--text-1)}
.m-contrast__card--old{background:var(--bg-2);border:1px solid var(--line-1);filter:saturate(.4);opacity:.72}
.m-contrast__new{position:relative;isolation:isolate}
.m-contrast__new>.bloom{inset:-25% 0;background:var(--m-bloom)}
.m-contrast__wave{width:200px;max-width:100%;height:36px;margin:20px 0 26px;fill:none;stroke-linecap:round;stroke-linejoin:round}
.m-contrast__card--old .m-contrast__wave{stroke:var(--text-3);stroke-width:1.25}
.m-contrast__card--new .m-contrast__wave{stroke:var(--theta-400);stroke-width:1.5}
.m-contrast__card--old .m-ticks .icon{color:var(--text-3)}
.m-contrast__card--new .m-ticks .icon{color:var(--theta-300)}
.m-contrast__card--new .m-ticks li{color:var(--text-1)}
.js .m-contrast.is-pending .m-contrast__card--old{opacity:1}
.js .m-contrast.is-pending .bloom{opacity:0}
.js .m-contrast.is-pending .m-ticks li{opacity:0;transform:translateY(10px)}
.m-contrast.is-in .bloom{transition:opacity 900ms var(--ease-out) 150ms}
.m-contrast.is-in .m-contrast__card--old{transition:opacity var(--dur-reveal) var(--ease-out) 650ms}
.m-contrast.is-in .m-ticks li{transition:opacity 500ms var(--ease-out),transform 500ms var(--ease-out)}
.m-contrast.is-in .m-ticks li:nth-child(1){transition-delay:200ms}.m-contrast.is-in .m-ticks li:nth-child(2){transition-delay:270ms}
.m-contrast.is-in .m-ticks li:nth-child(3){transition-delay:340ms}.m-contrast.is-in .m-ticks li:nth-child(4){transition-delay:410ms}
.m-contrast.is-in .m-ticks li:nth-child(5){transition-delay:480ms}.m-contrast.is-in .m-ticks li:nth-child(6){transition-delay:550ms}
@media (max-width:767px){.m-contrast{grid-template-columns:minmax(0,1fr)}}

/* ---------- M08 · Session in One Scroll (scene "session") ---------- */
.m-session{position:relative;isolation:isolate}
.m-session__pin{padding-block:clamp(40px,5vw,72px)}
.m-session__rail{position:relative;margin-bottom:clamp(32px,4vw,48px)}
.m-session__markers{position:relative;display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));padding-top:22px}
.m-session__track{position:absolute;left:0;right:0;top:5px;height:2px;border-radius:2px;background:var(--line-2);overflow:hidden}
.m-session__fill{position:absolute;inset:0;background:linear-gradient(90deg,var(--theta-500),var(--theta-400));transform-origin:left}
.m-session__marker{position:relative;color:var(--text-1);font:600 .75rem/1.35 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;transition:color var(--dur-slow) var(--ease-out)}
.m-session__marker::before{content:"";position:absolute;left:0;top:-22px;width:12px;height:12px;border-radius:50%;background:var(--theta-400);box-shadow:0 0 0 3px rgba(62,85,245,.22),0 0 14px var(--theta-glow);transition:background-color var(--dur-slow) var(--ease-out),box-shadow var(--dur-slow) var(--ease-out)}
.m-session__rail.is-tracked .m-session__marker{color:var(--text-3)}
.m-session__rail.is-tracked .m-session__marker::before{background:var(--bg-1);box-shadow:inset 0 0 0 1.5px var(--line-2)}
.m-session__rail.is-tracked .m-session__marker.is-done{color:var(--text-1)}
.m-session__rail.is-tracked .m-session__marker.is-done::before{background:var(--theta-400);box-shadow:0 0 0 3px rgba(62,85,245,.22),0 0 14px var(--theta-glow)}
.m-session__steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,2.4vw,32px)}
.m-session__step{display:grid;align-content:start;gap:18px;min-width:0}
.m-session__media{aspect-ratio:16/10;border-radius:var(--r-l)}
.m-session__text{display:grid;gap:8px}
.m-session__n{color:var(--text-3);font:300 var(--t-num-m)/1 var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.m-session__text h3{color:var(--text-1)}
.m-session__text p{color:var(--text-2);max-width:46ch}
.m-session__wave{display:none}
.m-session__wave canvas,.m-session__mwave canvas{display:block;width:100%;height:100%}
.m-session__mwave{display:none;height:64px;margin-top:6px}
@media (min-width:1024px){
  .m-session.is-live .m-session__pin{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-height:100vh;min-height:100svh;padding-block:calc(var(--dock-top) + var(--dock-h) + 24px) clamp(16px,3vh,32px)}
  .m-session.is-live .m-session__steps{grid-template-columns:minmax(0,1fr);align-items:center}
  .m-session.is-live .m-session__step{grid-area:1/1;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:clamp(32px,4vw,64px);opacity:0;pointer-events:none;transition:opacity 500ms var(--ease-out)}
  .m-session.is-live .m-session__step.is-active{opacity:1;pointer-events:auto}
  /* captions hand over in sequence: the outgoing text clears (160ms) before the incoming text arrives, so two
     captions never overlap while the media crossfades underneath */
  .m-session.is-live .m-session__step .m-session__text{opacity:0;transition:opacity 160ms var(--ease-out)}
  .m-session.is-live .m-session__step.is-active .m-session__text{opacity:1;transition:opacity 320ms var(--ease-out) 200ms}
  .m-session.is-live .m-session__text{order:-1;gap:14px}
  .m-session.is-live .m-session__text h3{font-size:calc(var(--t-title) * 1.3)}
  .m-session.is-live .m-session__text p{font-size:var(--t-lead);line-height:1.6}
  .m-session.is-live .m-session__n{color:var(--text-1);font-size:var(--t-num-xl);line-height:.9;letter-spacing:-.045em}
  .m-session.is-live .m-session__media{aspect-ratio:auto;height:min(52vh,520px);border-radius:var(--r-xl)}
  .m-session.is-live .m-session__wave{display:block;height:clamp(64px,10vh,100px);margin-top:clamp(12px,2vh,24px)}
  .m-session.is-live .m-session__rail{margin-bottom:clamp(20px,3vh,36px)}
}
@media (max-width:1023px){
  .m-session__rail{position:sticky;z-index:5;top:calc(var(--dock-top) + var(--dock-h) + 8px);margin-bottom:20px;padding:12px 16px;border-radius:var(--r-m);background:rgba(10,12,18,.92);border:1px solid var(--line-1)}
  .m-session__markers{padding-top:0}
  .m-session__marker{height:12px;font-size:0;letter-spacing:0}
  .m-session__marker::before{top:0}
  .m-session__track{top:auto;bottom:-6px;left:0;right:0}
  .m-session__rail.is-tracked .m-session__fill{transition:transform var(--dur-slow) var(--ease-out)}
  .m-session__steps{grid-template-columns:minmax(0,1fr)}
  .m-session__step{padding:14px;border-radius:var(--r-l);background:var(--bg-2);border:1px solid var(--line-1)}
  .m-session__mwave{display:block}
}

/* ---------- M09 · Sticky Media Chapters ---------- */
.m-chapters{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:0 clamp(32px,8.33%,104px);align-items:start}
.m-chapters__stage{position:sticky;top:14vh;height:72vh;min-height:360px;border-radius:var(--r-xl);overflow:hidden;background:var(--bg-2)}
.m-chapters__media{position:absolute;inset:0;opacity:0;transition:opacity 500ms var(--ease-out)}
.m-chapters__media.is-active{opacity:1}
.m-chapters__media img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.m-chapters__item{display:grid;align-content:center;gap:16px;min-height:80vh;padding-block:clamp(32px,6vh,64px)}
.m-chapters__item h3{color:var(--fg-1)}
.m-chapters__item>p{color:var(--fg-2)}
.m-chapters__index{color:var(--fg-3)}
.m-chapters__inline{display:none}
@media (max-width:1023px){
  .m-chapters{grid-template-columns:minmax(0,1fr)}
  .m-chapters__stage{display:none}
  .m-chapters__item{min-height:0;padding-block:0 clamp(48px,8vw,72px)}
  .m-chapters__inline{display:block;aspect-ratio:16/10;border-radius:var(--r-l)}
}

/* ---------- M10 · Film Showcase ---------- */
.m-film{position:relative;isolation:isolate;padding-block:var(--section-y-tight);background:var(--bg-2);overflow:hidden}
.m-film__grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(40px,6vw,96px);align-items:center}
.m-film__copy{display:grid;gap:20px;align-content:center}
.m-film__copy h2{color:var(--text-1)}
.m-film__copy .t-lead{color:var(--text-2)}
.m-film__copy .chip{justify-self:start}
.m-film__points{display:grid;gap:12px;margin-top:6px}
.m-film__points li{display:flex;align-items:center;gap:14px;color:var(--text-1);font-weight:500}
.m-film__points .icon{width:18px;height:18px;color:var(--theta-300)}
.m-film__close{max-width:40ch;padding-top:20px;border-top:1px solid var(--line-1);color:var(--text-2);font:italic 400 calc(var(--t-title) * 1.25)/1.4 var(--font-display)}
.m-film__stage{position:relative;justify-self:center;width:min(100%,420px)}
.m-film__spill{position:absolute;inset:-14% -30%;z-index:-1;pointer-events:none;opacity:.55;
  -webkit-mask-image:radial-gradient(closest-side,#000 40%,transparent 100%);mask-image:radial-gradient(closest-side,#000 40%,transparent 100%)}
.m-film__spill img{width:100%;height:100%;object-fit:cover}
.m-film__spill--blur img{filter:blur(36px) brightness(.55) saturate(1.2)}   /* stopgap: swap for the pre-blurred spill still when it exists */
.m-film__frame{box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),0 40px 120px -40px var(--theta-glow),0 30px 60px -30px rgba(0,0,0,.7)}
.m-film__frame::after{content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;pointer-events:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 0 0 1px rgba(255,255,255,.08)}
.m-film__chip{position:absolute;z-index:3;left:16px;bottom:18px}
.m-film__frame .film__toggle{z-index:3}
/* centred variant (Home): points | lit 9:16 frame | closing line */
.m-film--centred .m-film__head{margin-inline:auto;text-align:center;justify-items:center}
.m-film--centred .m-film__grid{grid-template-columns:minmax(0,1fr) minmax(280px,380px) minmax(0,1fr);gap:clamp(28px,4vw,64px)}
.m-film--centred .m-film__points{justify-self:end}
.m-film--centred .m-film__close{border-top:0;padding-top:0}
@media (max-width:1023px){
  .m-film__grid,.m-film--centred .m-film__grid{grid-template-columns:minmax(0,1fr)}
  .m-film__stage{order:-1;width:min(86vw,400px)}
  .m-film--centred .m-film__points{justify-self:start}
}

/* ---------- Shared tier card: M11 Offer Ladder + M31 Tier Cards ---------- */
.m-tier{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:14px;height:100%;padding:clamp(26px,2.6vw,34px);border-radius:var(--r-l);color:var(--fg-2)}
.m-tier:not(.glass-lens){background:var(--surface);border:1px solid var(--hair);box-shadow:var(--m-lift)}
.m-tier__name{color:var(--fg-1)}
.m-tier__price{color:var(--m-price);white-space:nowrap}
.m-tier__price small{margin-left:.35em;color:var(--fg-3);font:500 .9375rem/1 var(--font-sans);letter-spacing:0}
.m-tier__term{color:var(--fg-3);font-size:.9375rem}
.m-tier__desc{color:var(--fg-2);font-size:.9375rem;line-height:1.6}
.m-tier .m-ticks li{padding:10px 0;font-size:.9375rem}
.m-tier .m-ticks a{color:var(--fg-link)}
.m-tier__cta{display:grid;justify-items:start;gap:4px;margin-top:auto;padding-top:10px}
.m-tier__cta .btn{width:100%}
.m-tier__badge{position:absolute;top:-13px;left:clamp(26px,2.6vw,34px);display:inline-flex;align-items:center;gap:8px;min-height:26px;padding:0 12px;border-radius:var(--r-pill);
  background:var(--bg-1);color:var(--champ-400);font:600 .6875rem/1 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;box-shadow:inset 0 0 0 1px rgba(203,179,132,.55)}
.m-tier__badge::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--champ-400)}
.m-tier--feature{--edge:var(--g-champ);padding-block:clamp(34px,3.4vw,44px)}
.m-tier--feature .m-tier__name{font-size:calc(var(--t-title) * 1.12)}
.ch--paper .m-tier--feature{background:var(--bg-1) padding-box;box-shadow:0 30px 60px -30px rgba(17,19,26,.55),inset 0 1px 0 rgba(255,255,255,.12)}
.m-tier--feature>.bloom{inset:0;z-index:-1;border-radius:inherit;background:radial-gradient(70% 55% at 50% 0%,rgba(62,85,245,.32),rgba(62,85,245,.08) 55%,transparent 80%)}
@media (hover:hover) and (pointer:fine){
  .m-tier:not(.m-tier--feature){transition:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}
  .m-tier:not(.m-tier--feature):hover{border-color:var(--hair-2);background-color:var(--surface-2)}
  .ch--paper .m-tier:not(.m-tier--feature):hover{background-color:var(--paper-1);transform:translateY(-4px)}
}

/* ---------- M11 · Offer Ladder (data-reveal + data-reveal-hold="1400" on .m-ladder) ---------- */
.m-ladder{position:relative;isolation:isolate}
.m-ladder__path{position:relative;display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:clamp(16px,2vw,24px);height:28px;margin-bottom:22px}
.m-ladder__line{position:absolute;left:calc(100% / (var(--n,3) * 2));right:calc(100% / (var(--n,3) * 2));top:50%;height:1px;background:linear-gradient(90deg,rgba(107,125,255,.25),var(--theta-400));transform-origin:left}
.m-ladder__node{position:relative;justify-self:center;align-self:center;width:12px;height:12px;border-radius:50%;background:var(--page);box-shadow:inset 0 0 0 1.5px var(--m-accent),0 0 14px rgba(62,85,245,.35)}
.m-ladder__node:last-child{width:16px;height:16px;background:var(--m-accent);box-shadow:0 0 0 4px rgba(62,85,245,.18),0 0 22px var(--theta-glow)}
.m-ladder__tiers{position:relative;display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:clamp(16px,2vw,24px);align-items:end}
.m-ladder__tiers>li{position:relative;min-width:0;height:100%}
.m-ladder__tiers>li>.bloom{inset:-18% 0;background:var(--m-bloom)}
.js .m-ladder.is-pending{opacity:1;transform:none}
.js .m-ladder.is-pending .m-ladder__line{transform:scaleX(0)}
.js .m-ladder.is-pending .m-ladder__node{opacity:.25;transform:scale(.6)}
.js .m-ladder.is-pending .m-ladder__tiers>li{opacity:0;transform:translateY(var(--rise))}
.js .m-ladder.is-pending .m-ladder__tiers .bloom{opacity:0}
.m-ladder.is-in .m-ladder__line{transition:transform 1100ms var(--ease-in-out) 200ms}
.m-ladder.is-in .m-ladder__node{transition:opacity 300ms var(--ease-out),transform 420ms var(--ease-pop)}
.m-ladder.is-in .m-ladder__node:nth-child(2){transition-delay:200ms}
.m-ladder.is-in .m-ladder__node:nth-child(3){transition-delay:750ms}
.m-ladder.is-in .m-ladder__node:nth-child(4){transition-delay:1300ms}
.m-ladder.is-in .m-ladder__tiers>li{transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}
.m-ladder.is-in .m-ladder__tiers>li:nth-child(1){transition-delay:250ms}
.m-ladder.is-in .m-ladder__tiers>li:nth-child(2){transition-delay:390ms}
.m-ladder.is-in .m-ladder__tiers>li:nth-child(3){transition-delay:530ms}
.m-ladder.is-in .m-ladder__tiers>li:nth-child(4){transition-delay:670ms}
.m-ladder.is-in .m-ladder__tiers .bloom{transition:opacity 1200ms var(--ease-out) 900ms}
.ch--paper .m-ladder__line{background:linear-gradient(90deg,rgba(98,102,111,.3),var(--ink-3))}
.ch--paper .m-ladder__node:last-child{box-shadow:0 0 0 4px rgba(43,59,196,.15)}
/* partner variant: alternatives, not a sequence (no path; label slot instead of a price) */
.m-ladder--partner .m-ladder__path{display:none}
.m-ladder--partner .m-tier__price{font:300 var(--t-num-m)/1 var(--font-sans);letter-spacing:-.03em}
@media (max-width:1023px){
  .m-ladder{padding-left:30px}
  .m-ladder__path{position:absolute;left:0;top:0;bottom:0;display:block;width:12px;height:auto;margin:0}
  .m-ladder__line{left:5px;right:auto;top:30px;bottom:30px;width:1px;height:auto;background:linear-gradient(180deg,rgba(107,125,255,.25),var(--theta-400));transform-origin:top}
  .ch--paper .m-ladder__line{background:linear-gradient(180deg,rgba(98,102,111,.3),var(--ink-3))}
  .js .m-ladder.is-pending .m-ladder__line{transform:scaleY(0)}
  .m-ladder__node{display:none}
  .m-ladder__tiers{grid-template-columns:minmax(0,1fr);gap:28px}
  .m-ladder__tiers>li::before{content:"";position:absolute;left:-30px;top:30px;width:11px;height:11px;border-radius:50%;background:var(--page);box-shadow:inset 0 0 0 1.5px var(--m-accent)}
  .m-ladder__tiers>li:has(.m-tier--feature)::before{background:var(--m-accent);box-shadow:0 0 14px var(--theta-glow)}
  .m-ladder--partner{padding-left:0}
  .m-ladder--partner .m-ladder__tiers>li::before{display:none}
  .m-ladder--partner .m-ladder__tiers>li:has(.m-tier--feature){order:-1}
}

/* ---------- M12 · Media Cards / Bento (cards are the foundation's .card.card--media) ---------- */
.m-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,24px)}
.m-cards>li{min-width:0}
.m-cards .card{height:100%}
.m-cards .card>.chip{align-self:flex-start}
.m-cards__spot{background:radial-gradient(60% 50% at 50% 70%,var(--bg-4),var(--bg-3))}
.m-cards__spot img{object-fit:contain!important;padding:8% 14%}
.ch--paper .m-cards__spot{background:var(--paper-1)}
.ch--paper .m-cards__spot img{mix-blend-mode:multiply}
.m-cards__cta{display:flex;justify-content:center;margin-top:clamp(28px,3vw,40px)}
/* bento: lead 2×2 + three tiles (the third spans two columns and lies on its side) */
.m-cards--bento{grid-template-columns:repeat(4,minmax(0,1fr))}
.m-cards--bento>.card--lead{grid-column:1/3;grid-row:1/3}
.m-cards__rest{grid-column:3/5;grid-row:1/3;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:inherit}
.m-cards__rest>li{min-width:0}
.m-cards__rest>li:last-child{grid-column:1/-1}
.m-cards__rest>li:last-child .card{flex-direction:row;align-items:stretch;padding-left:0;padding-block:0}
.m-cards__rest>li:last-child .card__media{flex:0 0 42%;aspect-ratio:auto;margin:0 clamp(16px,2vw,24px) 0 0;border-radius:var(--r-l) 0 0 var(--r-l)}
.m-cards__rest>li:last-child .card__body{display:flex;flex-direction:column;gap:10px;padding-block:clamp(20px,2.4vw,28px)}
.card--lead{min-height:clamp(440px,46vw,640px);justify-content:flex-end;overflow:hidden;isolation:isolate;padding:clamp(24px,3vw,40px)}
.card--lead .card__link{margin-top:0}
.card--lead>.chip{align-self:flex-start}
.card--lead .film__toggle{top:16px;bottom:auto}
.card--lead>.card__media{position:absolute;inset:0;z-index:-1;margin:0;aspect-ratio:auto;border-radius:inherit}
.card--lead>.card__media::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,transparent 30%,rgba(6,7,11,.55) 62%,rgba(6,7,11,.92))}
.card--lead>.card__media .film{position:absolute;inset:0}
.card--lead .card__title{max-width:16ch;color:var(--text-1);font:500 calc(var(--t-display-m) * var(--k-display))/1.04 var(--font-display);letter-spacing:-.01em}
.card--lead .card__text{max-width:42ch;color:var(--text-1);font-size:1.0625rem}
@media (max-width:1023px){
  .m-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .m-cards--bento{grid-template-columns:minmax(0,1fr)}
  .m-cards--bento>.card--lead{grid-column:auto;grid-row:auto}
  .m-cards__rest{grid-column:auto;grid-row:auto;display:flex;gap:14px;margin-inline:calc(var(--gutter) * -1);padding:0 var(--gutter) 4px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);scrollbar-width:none}
  .m-cards__rest::-webkit-scrollbar{display:none}
  .m-cards__rest>li{flex:none;width:min(78vw,340px);scroll-snap-align:start}
  .m-cards__rest>li:last-child .card{flex-direction:column;padding:0 clamp(24px,2.6vw,32px) clamp(24px,2.6vw,32px)}
  .m-cards__rest>li:last-child .card__media{flex:none;aspect-ratio:16/10;margin:0 calc(-1 * clamp(24px,2.6vw,32px)) 8px;border-radius:var(--r-l) var(--r-l) 0 0}
  .m-cards__rest>li:last-child .card__body{padding-block:0}
}
@media (max-width:599px){.m-cards:not(.m-cards--bento){grid-template-columns:minmax(0,1fr)}}

/* ---------- M13 · Story Cards ---------- */
.m-stories .m-rail>li{width:calc((100% - 32px) / 3)}
.m-story{position:relative;display:flex;flex-direction:column;height:100%;overflow:hidden;border-radius:var(--r-l);background:var(--surface);border:1px solid var(--hair);box-shadow:var(--m-lift)}
.m-story__media{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--bg-2)}
.m-story__media img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 30%)}
.m-story__media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 52%,rgba(6,7,11,.8))}
.m-story__tag{position:absolute;z-index:2;left:16px;top:16px}
.m-story__who{position:absolute;z-index:2;left:20px;right:20px;bottom:16px;color:var(--text-1);font:600 .9375rem/1.4 var(--font-sans)}
.m-story__body{display:flex;flex:1;flex-direction:column;gap:14px;padding:clamp(20px,2vw,26px)}
.m-story__before{display:grid;gap:4px;color:var(--fg-3);font-size:.9375rem;line-height:1.5;transition:opacity var(--dur-base) var(--ease-out)}
.m-story__before b{color:var(--fg-3);font:600 .6875rem/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.m-story__quote{color:var(--fg-1);font:italic 400 calc(var(--t-title) * 1.25 * var(--k-display))/1.3 var(--font-display);opacity:.88;transition:opacity var(--dur-base) var(--ease-out)}
.m-story__body .link{margin-top:auto}
@media (hover:hover){.m-story:hover .m-story__before{opacity:.5}.m-story:hover .m-story__quote{opacity:1}}
.m-story:focus-within .m-story__before{opacity:.5}.m-story:focus-within .m-story__quote{opacity:1}
/* quote variant (no image) */
.m-story--quote .m-story__body{padding:clamp(26px,2.6vw,34px)}
.m-story__mark{display:block;height:.42em;color:var(--champ-600);font:500 5rem/1 var(--font-display)}
.m-story__by{display:flex;align-items:center;gap:14px;margin-top:auto;color:var(--fg-3);font:600 .75rem/1.4 var(--font-sans);letter-spacing:.14em;text-transform:uppercase}
.m-story__avatar{flex:none;width:72px;height:72px;border-radius:50%;object-fit:cover}
/* wall variant (porcelain masonry, pages/33) */
.m-stories--wall .m-stories__wall{columns:3 300px;column-gap:clamp(16px,2vw,24px)}
.m-stories--wall .m-story{display:inline-flex;width:100%;height:auto;margin-bottom:clamp(16px,2vw,24px);break-inside:avoid}
@media (max-width:1023px){.m-stories .m-rail>li{width:calc((100% - 16px) / 2)}}
@media (max-width:599px){.m-stories .m-rail>li{width:86%}}

/* ---------- M14 · Split Feature ---------- */
.m-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,6vw,96px);align-items:center}
.m-split--57{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.m-split--75{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.m-split__media{position:relative;aspect-ratio:var(--ratio,4/5)}
.m-split__media--card{aspect-ratio:auto!important}
.m-split__chips{position:absolute;z-index:2;left:16px;bottom:16px;display:flex;flex-wrap:wrap;gap:8px}
.m-split__copy{display:grid;gap:18px;align-content:center}
.m-split__copy h2{color:var(--fg-1)}
.m-split__copy .t-lead{color:var(--fg-2)}
.m-split__copy>p:not([class]){max-width:62ch;color:var(--fg-2)}
.m-split__ctas{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-top:10px}
.m-split__aside{margin-top:clamp(12px,2vw,24px)}
.m-split__line{padding-top:18px;border-top:1px solid rgba(62,85,245,.6);color:var(--fg-1);font:italic 400 calc(var(--t-quote) * .62 * var(--k-display))/1.25 var(--font-display);letter-spacing:-.005em}
.m-split__kicker{display:flex;align-items:baseline;gap:14px}
.m-split__kicker b{color:var(--fg-3);font:300 var(--t-num-m)/1 var(--font-sans);letter-spacing:-.03em}
.m-split--flip .m-split__media{order:2}
/* product-split (Home): product still on a dark stage, feature tiles as a glass row over its lower edge */
.m-split--product .m-split__media{aspect-ratio:auto;isolation:isolate}
.m-split__product{position:relative;overflow:hidden}
.m-split__media>.bloom{inset:-20% 0;background:var(--m-bloom)}
.m-split__product img{width:100%;height:auto;-webkit-mask-image:radial-gradient(70% 72% at 50% 46%,#000 60%,transparent 100%);mask-image:radial-gradient(70% 72% at 50% 46%,#000 60%,transparent 100%)}
.m-split__tiles{position:relative;z-index:2;display:grid;grid-template-columns:repeat(var(--cols,2),minmax(0,1fr));gap:10px;margin:-14% 4% 0}
.m-split__tile{display:grid;grid-template-columns:20px minmax(0,1fr);gap:2px 12px;padding:14px 16px;border-radius:var(--r-m);color:var(--text-2);font-size:.875rem;line-height:1.45}
.m-split__tile .icon{grid-row:span 2;width:20px;height:20px;margin-top:2px;color:var(--theta-300)}
.m-split__tile b{color:var(--text-1);font-size:.9375rem}
.m-split--flip .m-split__tile{grid-template-columns:minmax(0,1fr)}
.m-split--flip .m-split__tile .icon{grid-row:auto}
.m-split__badge{position:absolute;z-index:2;left:6%;top:6%}
.m-split__stat{position:relative;order:3;grid-column:1/-1;display:flex;align-items:baseline;gap:clamp(16px,2.5vw,32px);margin-top:clamp(32px,4vw,56px);padding-top:clamp(20px,2.5vw,32px)}
.m-split__stat::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--g-champ)}
.m-split__stat b{color:var(--m-price);font-weight:300}
.m-split__stat span{max-width:46ch;color:var(--fg-1)}
@media (max-width:1023px){
  .m-split,.m-split--57,.m-split--75{grid-template-columns:minmax(0,1fr)}
  .m-split__media,.m-split--flip .m-split__media{order:-1}
  .m-split__media{aspect-ratio:var(--ratio-m,16/10)}
  .m-split--product .m-split__media{margin-inline:calc(var(--gutter) * -1)}
  .m-split__tiles{grid-template-columns:repeat(2,minmax(0,1fr));margin:-8% var(--gutter) 0}
  .m-split--flip .m-split__tile{grid-template-columns:20px minmax(0,1fr)}
  .m-split--flip .m-split__tile .icon{grid-row:span 2}
  .m-split__stat{flex-direction:column;gap:10px}
}
@media (max-width:599px){.m-split__tiles{gap:8px}.m-split__tile,.m-split--flip .m-split__tile{grid-template-columns:minmax(0,1fr);padding:12px 14px}.m-split__tile .icon,.m-split--flip .m-split__tile .icon{grid-row:auto;margin-bottom:4px}}

/* ---------- M15 · FAQ (items are the foundation's <details class="acc">) ---------- */
.m-faq{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,6vw,96px);align-items:start}
.m-faq__head{position:sticky;top:calc(var(--dock-top) + var(--dock-h) + 40px);margin-bottom:0}
.m-faq__list{min-width:0}
.m-faq__tabs{grid-column:1/-1;min-width:0}
.m-faq__intro{max-width:62ch;margin-bottom:20px;color:var(--fg-2)}
/* a heading per panel, shown only without JS (core.js turns panels into tabpanels) */
.m-tab-heading{margin-bottom:16px;color:var(--fg-1)}
[role="tabpanel"]>.m-tab-heading{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:1023px){.m-faq{grid-template-columns:minmax(0,1fr);gap:28px}.m-faq__head{position:static}}

/* ---------- M16 · Booking Panel ---------- */
.m-booking{position:relative;isolation:isolate}
.m-booking>.bloom{inset:-25% 0;background:var(--m-bloom)}
.m-booking__panel{display:grid;gap:16px;padding:clamp(28px,3.4vw,44px);border-radius:var(--r-xl);color:var(--text-2)}
.m-booking__panel h3{color:var(--text-1)}
.m-booking__btns{display:grid;gap:12px;margin-top:8px}
.m-booking__btns .btn{width:100%}
.m-booking__phone{font-size:.9375rem}
.m-booking__phone a,.m-booking__note a{color:var(--theta-300);font-weight:600;text-decoration:none}
.m-booking__note{padding-top:16px;border-top:1px solid var(--line-1);font-size:.9375rem}

/* ---------- M17 · Finale CTA (data-reveal + data-reveal-hold="900" on .m-finale__inner) ---------- */
.m-finale{position:relative;isolation:isolate;display:grid;align-items:center;min-height:80vh;min-height:80svh;padding-block:var(--section-y-tight);overflow:hidden;background:var(--bg-0);text-align:center}
.m-finale__light{position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(55% 45% at 50% 92%,rgba(62,85,245,.30),transparent 70%)}
.js .m-finale:has(.m-finale__inner.is-pending) .m-finale__light{opacity:0}
.m-finale:has(.m-finale__inner.is-in) .m-finale__light{transition:opacity 1600ms var(--ease-out)}
.m-finale__inner{display:grid;justify-items:center;gap:22px}
.m-finale__inner h2{max-width:18ch;color:var(--text-1)}
.m-finale__inner .t-lead{max-width:56ch;color:var(--text-1)}     /* text over the field uses --text-1 (01 §5.2) */
.m-finale__ctas{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 14px;margin-top:10px}
.m-finale__phone{color:var(--text-1);font-size:.9375rem}
.m-finale__phone a{color:var(--theta-300);font-weight:600;text-decoration:none}
.m-finale--compact{min-height:56vh;min-height:56svh}
@media (max-width:599px){.m-finale__ctas{flex-direction:column;align-self:stretch;width:100%}.m-finale__ctas .btn{width:100%}}

/* ---------- M18 · Name Wall ---------- */
.m-names{overflow:hidden}
.m-names__grid{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));margin:0 -1px -1px 0}
.m-names__grid li{display:grid;align-content:center;gap:6px;min-height:clamp(84px,9vw,112px);padding:20px clamp(16px,2vw,28px);border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);text-align:center}
.m-names__grid b{color:var(--fg-3);font:600 calc(var(--t-micro) * 1.4)/1.3 var(--font-sans);letter-spacing:.16em;text-transform:uppercase}
.m-names__grid small{color:var(--fg-3);font-size:.8125rem;line-height:1.4}
@media (max-width:599px){.m-names__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.m-names__grid b{font-size:.9rem;letter-spacing:.12em}}

/* ---------- M19 · ROI Instrument (behaviour: js/roi.js, hooks in the contract) ---------- */
.m-roi{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(20px,2.5vw,32px);align-items:start}
.m-roi__bloom{position:absolute;inset:-10% 0 auto;height:80%;z-index:-1;pointer-events:none;background:radial-gradient(45% 50% at 30% 40%,rgba(62,85,245,.22),transparent 70%),radial-gradient(40% 40% at 78% 50%,rgba(203,179,132,.06),transparent 70%)}
.m-roi__controls{display:grid;gap:22px;padding:clamp(24px,2.8vw,36px);border-radius:var(--r-xl)}
.m-roi__presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;border-radius:var(--r-pill);background:rgba(6,7,11,.5);box-shadow:inset 0 0 0 1px var(--line-1)}
.m-roi__presets button{min-height:44px;padding:0 10px;border:0;border-radius:var(--r-pill);background:none;color:var(--text-2);font:600 .875rem/1.2 var(--font-sans);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.m-roi__presets button:hover{color:var(--text-1)}
.m-roi__presets button[aria-pressed="true"]{background:var(--text-1);color:var(--bg-1)}
.m-roi__field{display:grid;gap:4px}
.m-roi__field label{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:var(--text-2);font:500 .9375rem/1.4 var(--font-sans)}
.m-roi__field output{color:var(--text-1);font:600 1rem/1 var(--font-sans);font-variant-numeric:tabular-nums}
.m-range{position:relative;display:grid;align-items:center;height:44px}
.m-range__track{position:absolute;left:11px;right:11px;height:2px;border-radius:2px;background:var(--line-2);overflow:hidden;pointer-events:none}
.m-range__fill{position:absolute;inset:0;background:var(--theta-400);transform-origin:left;transform:scaleX(var(--p,0))}
.m-range input{position:relative;width:100%;height:44px;margin:0;background:none;-webkit-appearance:none;appearance:none;cursor:pointer}
.m-range input::-webkit-slider-runnable-track{height:2px;background:transparent}
.m-range input::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-10px;border-radius:50%;background:var(--text-1);box-shadow:0 0 0 4px rgba(62,85,245,.28),0 0 18px var(--theta-glow)}
.m-range input::-moz-range-track{height:2px;background:transparent}
.m-range input::-moz-range-thumb{width:22px;height:22px;border:0;border-radius:50%;background:var(--text-1);box-shadow:0 0 0 4px rgba(62,85,245,.28),0 0 18px var(--theta-glow)}
.m-range input:focus-visible{outline:2px solid var(--theta-400);outline-offset:4px;border-radius:var(--r-pill)}
.m-roi__outputs{position:sticky;top:96px;display:grid;gap:22px;padding:clamp(24px,2.8vw,40px);border-radius:var(--r-xl);color:var(--text-2)}
.m-roi__lab{color:var(--text-2);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.16em;text-transform:uppercase}
.m-roi__year{display:grid;gap:10px}
.m-roi__year output{color:var(--champ-400);white-space:nowrap}
.m-roi__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;padding-top:20px;border-top:1px solid var(--line-1)}
.m-roi__payback{display:flex;align-items:center;gap:16px;margin-top:8px}
.m-roi__payback output,.m-roi__month output{display:block;color:var(--text-1);font:300 calc(var(--t-num-m) * .82)/1 var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.m-roi__month output{margin-top:8px}
.m-roi__dial{position:relative;flex:none;width:64px;height:64px;border-radius:50%;background:var(--line-2);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px))}
.m-roi__dial i{position:absolute;inset:0;overflow:hidden}
.m-roi__dial i:first-child{clip-path:inset(0 0 0 50%)}
.m-roi__dial i:last-child{clip-path:inset(0 50% 0 0)}
.m-roi__dial b{position:absolute;inset:0;border-radius:50%;background:linear-gradient(90deg,var(--champ-400) 50%,transparent 50%)}
.m-roi__dial i:first-child b{transform:rotate(120deg)}
.m-roi__dial i:last-child b{transform:rotate(180deg)}
.m-roi__split{display:grid;gap:8px;margin-top:12px}
.m-roi__bar{position:relative;height:6px;border-radius:6px;overflow:hidden;background:var(--line-1)}
.m-roi__bar i{position:absolute;inset:0;transform-origin:left;background:var(--theta-400);transform:scaleX(var(--a,.8))}
.m-roi__bar i+i{transform-origin:right;background:var(--champ-400);transform:scaleX(var(--b,.2))}
.m-roi__legend{display:flex;flex-wrap:wrap;gap:4px 16px;color:var(--text-2);font-size:.8125rem}
.m-roi__legend span::before{content:"";display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:50%;background:var(--theta-400);vertical-align:1px}
.m-roi__legend span+span::before{background:var(--champ-400)}
.m-roi__legend b{color:var(--text-1);font-weight:600}
.m-roi__chart{width:100%;height:auto;overflow:visible}
.m-roi__chart .grid{stroke:var(--line-1);stroke-width:1}
.m-roi__chart .axis{fill:var(--text-3);font:500 12px var(--font-sans)}
.m-roi__chart .rev{fill:none;stroke:var(--theta-400);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.m-roi__chart .inv{stroke:var(--champ-400);stroke-width:1.5;stroke-dasharray:4 5}
.m-roi__chart .dot{fill:var(--champ-400)}
.m-roi__chart .dot-ring{fill:none;stroke:rgba(203,179,132,.45)}
.m-roi__chart .dot-label{fill:var(--champ-400);font:600 12px var(--font-sans)}
.m-roi__disclaimer{padding-top:18px;border-top:1px solid var(--line-1);color:var(--text-2);font-size:.875rem;line-height:1.55}
.m-roi__ctas{display:flex;flex-wrap:wrap;gap:12px}
.m-roi__mini{display:none}
@media (max-width:1023px){
  .m-roi{grid-template-columns:minmax(0,1fr)}
  .m-roi__outputs{position:static}
  .m-roi__mini{position:sticky;z-index:6;top:calc(var(--dock-top) + var(--dock-h) + 8px);display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 18px;border-radius:var(--r-m);background:rgba(10,12,18,.94);border:1px solid var(--line-2);color:var(--text-2);font-size:.8125rem}
  .m-roi__mini b{display:block;color:var(--champ-400);font:300 1.375rem/1.1 var(--font-sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
  .m-roi__mini span+span{text-align:right}
}
@media (max-width:599px){.m-roi__row{grid-template-columns:minmax(0,1fr)}}

/* ---------- M20 · People Cards ---------- */
.m-people{display:grid;gap:clamp(40px,5vw,72px)}
.m-person{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(28px,4vw,64px);align-items:center}
.m-person__photo{aspect-ratio:4/5;border-radius:var(--r-l)}
.m-person__mono{position:relative;isolation:isolate;display:grid;place-items:center;aspect-ratio:4/5;overflow:hidden;border-radius:var(--r-l);background:var(--bg-1)}
.m-person__mono>.aurora{z-index:-1}
.m-person__mono span{display:grid;place-items:center;width:58%;aspect-ratio:1;border-radius:50%;color:var(--text-1);font:500 clamp(3rem,2rem + 4vw,5.5rem)/1 var(--font-display);letter-spacing:.02em}
.m-person__bio{display:grid;gap:10px;align-content:center}
.m-person__bio h3{color:var(--fg-1);font:500 calc(var(--t-display-m) * var(--k-display))/1.04 var(--font-display);letter-spacing:-.01em}
.m-person__role{color:var(--fg-3)}
.m-person__bio p:not([class]){max-width:68ch;margin-top:10px;color:var(--fg-2)}
.m-people--bio-forward .m-person{grid-template-columns:120px minmax(0,1fr);align-items:start}
.m-people--bio-forward .m-person__photo,.m-people--bio-forward .m-person__mono{aspect-ratio:1;border-radius:50%}
.m-people--bio-forward .m-person__mono span{width:100%;font-size:2.4rem}
@media (max-width:767px){.m-person{grid-template-columns:minmax(0,1fr)}.m-person__photo,.m-person__mono{max-width:420px}}

/* ---------- M21 · Product Plinths ---------- */
.m-plinths{display:grid;grid-template-columns:1.5fr repeat(var(--n,3),minmax(0,1fr));gap:clamp(14px,1.8vw,22px)}
.m-plinth{position:relative;isolation:isolate;display:flex;flex-direction:column;height:100%;padding:clamp(16px,1.8vw,22px);border-radius:var(--r-l);background:var(--bg-3);border:1px solid var(--line-1);box-shadow:var(--hi-top)}
.m-plinth__stage{position:relative;display:grid;place-items:center;aspect-ratio:1;margin-bottom:18px;overflow:hidden;border-radius:var(--r-m);background:radial-gradient(60% 50% at 50% 70%,var(--bg-4),var(--bg-3))}
.m-plinth__stage::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(50% 40% at 50% 72%,rgba(236,234,229,.10),transparent 70%);opacity:0;transition:opacity var(--dur-base) var(--ease-out)}
.m-plinth__stage img{position:relative;width:78%;height:78%;object-fit:contain}
.m-plinth__stage--cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.js .m-plinth.is-pending .m-plinth__stage img{transform:translateY(16px)}
.m-plinth.is-in .m-plinth__stage img{transition:transform 900ms var(--ease-out) var(--delay,0ms)}
.m-plinth h3{margin-bottom:6px;color:var(--text-1)}
.m-plinth p{margin-bottom:14px;color:var(--text-2);font-size:.9375rem;line-height:1.55}
.m-plinth .link{margin-top:auto}
.m-plinth--lead{grid-row:span var(--lead-rows,1)}
.m-plinth--lead .m-plinth__stage{flex:1;min-height:260px;aspect-ratio:auto}
@media (hover:hover) and (pointer:fine){.m-plinth:hover{border-color:var(--line-2)}.m-plinth:hover .m-plinth__stage::after{opacity:1}}
@media (max-width:1023px){.m-plinths{grid-template-columns:repeat(2,minmax(0,1fr))}.m-plinth--lead{grid-column:1/-1;grid-row:auto}.m-plinth--lead .m-plinth__stage{flex:none;min-height:0;aspect-ratio:16/10}}

/* ---------- M22 · Scent Shelf + Range Index (range index = foundation [data-tabs]) ---------- */
.m-shelf .m-rail>li{width:calc((100% - 48px) / 4)}
.m-scent{display:flex;flex-direction:column;gap:10px;height:100%}
.m-scent__pack{display:grid;place-items:center;aspect-ratio:1;overflow:hidden;border-radius:var(--r-l);background:var(--paper-1)}
.m-scent__pack img{width:86%;height:86%;object-fit:contain;mix-blend-mode:multiply}
.m-scent .chip{align-self:flex-start;margin-top:6px}
.m-scent h3{color:var(--fg-1)}
.m-scent p{color:var(--fg-2);font-size:.9375rem;line-height:1.55}
.m-range-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(24px,4vw,64px)}
.m-range-list li{padding:14px 0;border-top:1px solid var(--hair);color:var(--fg-2);font-size:.9375rem;line-height:1.5}
.m-range-list b{color:var(--fg-1)}
@media (max-width:1023px){.m-shelf .m-rail>li{width:calc((100% - 16px) / 2)}}
@media (max-width:599px){.m-shelf .m-rail>li{width:72%}.m-range-list{grid-template-columns:minmax(0,1fr)}}

/* ---------- M23 · Journal (index on .card; article reading layout) ---------- */
.m-journal{display:grid;gap:clamp(20px,2.5vw,32px)}
.m-journal__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,24px)}
.m-journal .card{height:100%}
.m-post__soon{position:absolute;z-index:2;right:14px;top:14px}
.m-post__cat{color:var(--fg-link)}
.m-post__title a{color:inherit;text-decoration:none}
.m-post__title a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.m-post--feature{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;padding:0;column-gap:0}
.m-post--feature>.card__media{margin:0;aspect-ratio:16/9;height:100%;border-radius:var(--r-l) 0 0 var(--r-l)}
.m-post--feature>.card__body{display:grid;gap:12px;padding:clamp(24px,3.5vw,48px)}
.m-post--feature .card__title{font:500 calc(var(--t-display-m) * .86 * var(--k-display))/1.06 var(--font-display);letter-spacing:-.01em}
@media (max-width:1023px){.m-journal__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.m-post--feature{grid-template-columns:minmax(0,1fr)}.m-post--feature>.card__media{border-radius:var(--r-l) var(--r-l) 0 0;height:auto}}
@media (max-width:599px){.m-journal__grid{grid-template-columns:minmax(0,1fr)}}
/* Article body (M23 article, pages/40-blog §5.2): porcelain, 68ch */
.m-article{max-width:68ch;margin-inline:auto;color:var(--ink-2);font:400 calc(var(--t-body) * var(--k-text))/1.7 var(--font-sans)}
.m-article>*+*{margin-top:1.25em}
.m-article h2{margin-top:2.2em;color:var(--ink-1);font:500 min(2.75rem,calc(var(--t-display-m) * var(--k-display)))/1.06 var(--font-display);letter-spacing:-.01em;scroll-margin-top:96px}
.m-article h3{margin-top:1.8em;color:var(--ink-1);font:600 calc(var(--t-title) * var(--k-text))/1.3 var(--font-sans)}
.m-article strong{color:var(--ink-1)}
.m-article a{color:var(--theta-700);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.m-article a:hover{text-decoration-thickness:2px}
.m-article ul li{position:relative;padding-left:22px}
.m-article ul li+li{margin-top:.5em}
.m-article ul li::before{content:"";position:absolute;left:4px;top:.68em;width:5px;height:5px;border-radius:50%;background:var(--theta-700)}
.m-article blockquote{padding-left:24px;border-left:2px solid var(--champ-600);color:var(--ink-1);font:italic 400 calc(var(--t-title) * 1.3)/1.35 var(--font-display)}
.m-article__pull{position:relative;max-width:1000px;margin:2em auto;padding-top:28px;text-align:center;color:var(--ink-1);font:italic 400 min(2.6rem,var(--t-quote))/1.15 var(--font-display)}
.m-article__pull::before{content:"";position:absolute;left:30%;right:30%;top:0;height:1px;background:var(--g-champ)}
.m-article figure img{width:100%;height:auto;border-radius:var(--r-l);border:1px solid var(--line-p)}
.m-article figcaption{margin-top:10px;color:var(--ink-3);font-size:.9375rem}
.m-progress{position:fixed;z-index:60;left:0;right:0;top:0;height:2px;background:var(--theta-700);box-shadow:0 1px 0 rgba(236,234,229,.85);transform-origin:left;transform:scaleX(0);pointer-events:none}

/* ---------- M24 · Pillars ---------- */
.m-pillars{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,3.5vw,48px) clamp(20px,3vw,40px)}
.m-pillar{position:relative;display:flex;flex-direction:column;gap:12px;min-width:0}
.m-pillar__disc{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--theta-300);background:var(--bg-3);box-shadow:inset 0 0 0 1px var(--line-2),inset 0 1px 0 rgba(255,255,255,.12),0 0 24px -6px var(--theta-glow)}
.m-pillar__disc .icon{width:20px;height:20px}
.ch--paper .m-pillar__disc{color:var(--theta-700);background:var(--paper-1);box-shadow:inset 0 0 0 1px var(--line-p),0 8px 20px -12px rgba(17,19,26,.3)}
.m-pillar__index{color:var(--fg-3);font:300 var(--t-num-m)/1 var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.m-pillar h3{color:var(--fg-1)}
.m-pillar p{max-width:40ch;color:var(--fg-2)}
/* stagger + optional hairline drawn across the row (data-reveal + data-reveal-hold="700" on .m-pillars) */
.js .m-pillars.is-pending{opacity:1;transform:none}
.js .m-pillars.is-pending>.m-pillar{opacity:0;transform:translateY(var(--rise))}
.m-pillars.is-in>.m-pillar{transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}
.m-pillars.is-in>.m-pillar:nth-child(2){transition-delay:90ms}.m-pillars.is-in>.m-pillar:nth-child(3){transition-delay:180ms}
.m-pillars.is-in>.m-pillar:nth-child(4){transition-delay:270ms}.m-pillars.is-in>.m-pillar:nth-child(5){transition-delay:360ms}
.m-pillars.is-in>.m-pillar:nth-child(6){transition-delay:450ms}
.m-pillars--line::before{content:"";position:absolute;left:0;right:0;top:22px;height:1px;background:var(--hair-2);transform-origin:left;pointer-events:none}
.m-pillars--line .m-pillar__disc{position:relative;z-index:1;box-shadow:0 0 0 10px var(--page),inset 0 0 0 1px var(--hair-2)}
.m-pillars--line .m-pillar__index{position:relative;z-index:1;width:fit-content;padding-right:14px;background:var(--page)}
.js .m-pillars--line.is-pending::before{transform:scaleX(0)}
.m-pillars--line.is-in::before{transition:transform 1100ms var(--ease-in-out) 150ms}
/* numbered + persona: cards with an optional top media strip */
.m-pillars--numbered .m-pillar,.m-pillars--persona .m-pillar{overflow:hidden;padding:clamp(22px,2.4vw,30px);border-radius:var(--r-l);background:var(--surface);border:1px solid var(--hair);box-shadow:var(--m-lift)}
.m-pillar__media{position:relative;margin:calc(-1 * clamp(22px,2.4vw,30px)) calc(-1 * clamp(22px,2.4vw,30px)) 8px;aspect-ratio:16/9;overflow:hidden;background:var(--bg-2)}
.m-pillar__media img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.m-pillar__media--icon{display:grid;place-items:center;background:var(--m-band);color:var(--fg-3)}
.m-pillar__media--icon .icon{width:56px;height:56px;stroke-width:1.2}
.m-pillar__media--icon canvas{position:absolute;left:10%;bottom:14%;width:80%;height:40px}
.m-pillars--persona .m-pillar h3{font:500 calc(var(--t-display-m) * .62 * var(--k-display))/1.08 var(--font-display);letter-spacing:-.01em}
@media (max-width:1023px){.m-pillars{grid-template-columns:repeat(2,minmax(0,1fr))}.m-pillars--line::before{display:none}}
@media (max-width:599px){.m-pillars{grid-template-columns:minmax(0,1fr)}}

/* ---------- M25 · Arrival (route: data-reveal + data-reveal-hold="1100") ---------- */
.m-arrival{display:grid;gap:clamp(32px,4vw,56px)}
.m-arrival__route{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,2vw,24px)}
.m-arrival__route::before{content:"";position:absolute;left:16.6%;right:16.6%;bottom:22px;height:1px;background:linear-gradient(90deg,rgba(107,125,255,.3),var(--theta-400));transform-origin:left;pointer-events:none}
.m-arrival__panel{display:grid;gap:16px;justify-items:center}
.m-arrival__panel .m-frame{width:100%;aspect-ratio:4/5;border-radius:var(--r-l)}
.m-arrival__label{position:relative;display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 14px;border-radius:var(--r-pill);background:var(--bg-1);color:var(--text-1);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.m-arrival__label::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--bg-1);box-shadow:inset 0 0 0 1.5px var(--theta-400),0 0 12px rgba(62,85,245,.4)}
.m-arrival__panel:last-child .m-arrival__label::before{background:var(--theta-400)}
.js .m-arrival__route.is-pending{opacity:1;transform:none}
.js .m-arrival__route.is-pending::before{transform:scaleX(0)}
.js .m-arrival__route.is-pending .m-arrival__panel{opacity:0;transform:translateY(var(--rise))}
.m-arrival__route.is-in::before{transition:transform 1400ms var(--ease-in-out) 300ms}
.m-arrival__route.is-in .m-arrival__panel{transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}
.m-arrival__route.is-in .m-arrival__panel:nth-child(2){transition-delay:180ms}
.m-arrival__route.is-in .m-arrival__panel:nth-child(3){transition-delay:360ms}
.m-arrival__info{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(24px,4vw,64px);align-items:start}
.m-arrival__rows li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:4px 16px;padding:18px 0;border-top:1px solid var(--line-1);color:var(--text-2)}
.m-arrival__rows .icon{grid-row:span 2;margin-top:2px;color:var(--theta-300)}
.m-arrival__rows a{display:inline-flex;align-items:center;justify-self:start;min-height:44px;margin-block:-10px;color:var(--text-1);text-decoration:none}
.m-arrival__rows a:hover{color:var(--theta-300)}
.m-map{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:16/10;border-radius:var(--r-l);background:radial-gradient(50% 60% at 60% 45%,rgba(62,85,245,.18),transparent 70%),var(--bg-2);border:1px solid var(--line-1)}
.m-map>.blueprint{opacity:.6}
.m-map__poster{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;padding:24px;color:var(--text-2);text-align:center}
.m-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:invert(.92) hue-rotate(180deg) saturate(.6)}
.m-map__links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px}
@media (max-width:767px){
  .m-arrival__route{grid-template-columns:minmax(0,1fr);padding-left:26px}
  .m-arrival__route::before{left:5px;right:auto;top:24px;bottom:24px;width:1px;height:auto;background:linear-gradient(180deg,rgba(107,125,255,.3),var(--theta-400));transform-origin:top}
  .js .m-arrival__route.is-pending::before{transform:scaleY(0)}
  .m-arrival__panel{justify-items:start}
  .m-arrival__panel .m-frame{aspect-ratio:16/10}
  .m-arrival__label{padding-left:0;background:none}
  .m-arrival__label::before{position:absolute;left:-26px}
  .m-arrival__info{grid-template-columns:minmax(0,1fr)}
}

/* ---------- M26 · Studio Gallery (grid items are the <li>s; each li is an .m-iris reveal) ---------- */
.m-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,clamp(180px,20vw,300px));gap:clamp(10px,1.4vw,18px)}
.m-gallery>li{min-width:0;min-height:0}
.m-gallery>li:nth-child(1){grid-row:1/3}
.m-gallery>li:nth-child(2){grid-column:2/4}
.m-gallery>li:nth-child(5){grid-column:3/5}
.m-gallery__tile{position:relative;height:100%;overflow:hidden;border-radius:var(--r-l);background:var(--paper-1);box-shadow:var(--lift-paper)}
.m-gallery__tile img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%);transition:transform 600ms var(--ease-out)}
.m-gallery__tile figcaption{position:absolute;left:12px;bottom:12px;max-width:calc(100% - 24px);padding:7px 12px;border-radius:var(--r-s);color:var(--ink-1);font:500 .8125rem/1.35 var(--font-sans);opacity:0;transform:translateY(6px);transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}
.m-gallery__tile:hover figcaption,.m-gallery__tile:focus-visible figcaption{opacity:1;transform:none}
.m-gallery__tile:focus-visible{outline:2px solid var(--theta-700);outline-offset:3px}
@media (hover:hover) and (pointer:fine){.m-gallery__tile:hover img{transform:scale(1.03)}}
@media (max-width:767px){
  .m-gallery{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:clamp(150px,44vw,240px)}
  .m-gallery>li:nth-child(1){grid-row:span 2}
  .m-gallery>li:nth-child(2),.m-gallery>li:nth-child(5){grid-column:auto}
  .m-gallery__tile figcaption{display:none}
}

/* ---------- M27 · Steps Route (data-reveal + data-reveal-hold = n × 380 + 400 on .m-route) ---------- */
.m-route{--n:4;--gap:clamp(20px,2.5vw,36px);position:relative;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:var(--gap)}
.m-route::before{content:"";position:absolute;left:6px;right:calc((100% - (var(--n) - 1) * var(--gap)) / var(--n) - 6px);top:6px;height:1px;background:linear-gradient(90deg,var(--m-accent),rgba(107,125,255,.35));transform-origin:left;pointer-events:none}
.ch--paper .m-route::before{background:linear-gradient(90deg,var(--theta-700),rgba(43,59,196,.3))}
.m-route__step{--i:0;position:relative;display:grid;align-content:start;gap:10px;min-width:0;padding-top:34px}
.m-route__step:nth-child(2){--i:1}.m-route__step:nth-child(3){--i:2}.m-route__step:nth-child(4){--i:3}.m-route__step:nth-child(5){--i:4}
.m-route__step:nth-child(6){--i:5}.m-route__step:nth-child(7){--i:6}.m-route__step:nth-child(8){--i:7}
.m-route__step::before{content:"";position:absolute;left:0;top:0;width:13px;height:13px;border-radius:50%;background:var(--m-accent);box-shadow:0 0 0 4px rgba(62,85,245,.16),0 0 16px var(--theta-glow)}
.ch--paper .m-route__step::before{box-shadow:0 0 0 4px rgba(43,59,196,.12)}
.m-route__n{color:var(--fg-3);font:300 var(--t-num-m)/1 var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.m-route__step h3{color:var(--fg-1)}
.m-route__step p{max-width:34ch;color:var(--fg-2)}
.m-route__media{aspect-ratio:4/3;margin-bottom:8px;border-radius:var(--r-l)}
.m-route__end{margin-top:clamp(28px,3.5vw,48px)}
.m-route__end .m-frame{aspect-ratio:21/9;border-radius:var(--r-l)}
.js .m-route.is-pending{opacity:1;transform:none}
.js .m-route.is-pending::before{transform:scaleX(0)}
.js .m-route.is-pending .m-route__step::before{opacity:.2;transform:scale(.5)}
.js .m-route.is-pending .m-route__step>*{opacity:0;transform:translateY(12px)}
.m-route.is-in::before{transition:transform calc(var(--n) * 240ms) linear 120ms}
.m-route.is-in .m-route__step::before{transition:opacity 260ms var(--ease-out) calc(120ms + var(--i) * 240ms * var(--n) / (var(--n) - 1)),transform 420ms var(--ease-pop) calc(120ms + var(--i) * 240ms * var(--n) / (var(--n) - 1))}
.m-route.is-in .m-route__step>*{transition:opacity var(--dur-reveal) var(--ease-out) calc(220ms + var(--i) * 240ms * var(--n) / (var(--n) - 1)),transform var(--dur-reveal) var(--ease-out) calc(220ms + var(--i) * 240ms * var(--n) / (var(--n) - 1))}
.m-route--week{--n:8}
.m-route--week .m-route__step{padding-top:28px}
.m-route--week .m-route__step p{font-size:.9375rem}
@media (max-width:1023px){
  .m-route,.m-route--week{grid-template-columns:minmax(0,1fr);gap:28px;padding-left:34px}
  .m-route::before{left:6px;right:auto;top:8px;bottom:8px;width:1px;height:auto;background:linear-gradient(180deg,var(--m-accent),rgba(107,125,255,.35));transform-origin:top}
  .ch--paper .m-route::before{background:linear-gradient(180deg,var(--theta-700),rgba(43,59,196,.3))}
  .js .m-route.is-pending::before{transform:scaleY(0)}
  .m-route__step{padding-top:0}
  .m-route__step::before{left:-34px;top:4px}
  .m-route__step p{max-width:52ch}
}

/* ---------- M28 · Feel List (data-reveal + data-reveal-hold="1000" on .m-feel) ---------- */
.m-feel{position:relative;isolation:isolate}
.m-feel>.bloom{inset:-20% 0;background:var(--m-bloom)}
.m-feel__card{display:grid;gap:4px;padding:clamp(26px,3vw,40px);border-radius:var(--r-xl);color:var(--text-2)}
.m-feel__title{margin-bottom:12px;color:var(--fg-1)}
.m-feel__list li{display:flex;align-items:baseline;gap:14px;padding:14px 0;border-top:1px solid var(--hair);color:var(--fg-1);font:400 calc(var(--t-title) * 1.3 * var(--k-display))/1.25 var(--font-display);letter-spacing:-.005em}
.m-feel__list li:first-child{border-top:0}
.m-feel__list .icon{flex:none;width:20px;height:20px;color:var(--fg-link);transform:translateY(2px)}
.m-feel__list a{color:inherit;text-decoration:underline;text-decoration-color:rgba(163,174,255,.5);text-decoration-thickness:1px;text-underline-offset:4px}
.m-feel__list a:hover{text-decoration-color:var(--fg-link)}
.m-feel--sans .m-feel__list li{color:var(--fg-1);font:500 calc(var(--t-body) * var(--k-text))/1.5 var(--font-sans)}
.m-feel__cta{justify-self:start;margin-top:20px}
.js .m-feel.is-pending .m-feel__list li{opacity:.25}
.m-feel.is-in .m-feel__list li{transition:opacity 700ms var(--ease-out)}
.m-feel.is-in .m-feel__list li:nth-child(1){transition-delay:300ms}.m-feel.is-in .m-feel__list li:nth-child(2){transition-delay:420ms}
.m-feel.is-in .m-feel__list li:nth-child(3){transition-delay:540ms}.m-feel.is-in .m-feel__list li:nth-child(4){transition-delay:660ms}
.m-feel.is-in .m-feel__list li:nth-child(5){transition-delay:780ms}.m-feel.is-in .m-feel__list li:nth-child(6){transition-delay:900ms}
.m-feel.is-in .m-feel__list li:nth-child(7){transition-delay:1020ms}.m-feel.is-in .m-feel__list li:nth-child(8){transition-delay:1140ms}
.ch--paper .m-feel__card{background:var(--paper-1);border:1px solid var(--line-p);box-shadow:var(--lift-paper);color:var(--ink-2)}
.ch--paper .m-feel>.bloom{display:none}

/* ---------- M29 · Note ---------- */
.m-note{display:grid;grid-template-columns:20px minmax(0,1fr);gap:14px;max-width:820px;padding:18px 22px;border-radius:var(--r-m);background:var(--m-band);border:1px solid var(--hair);color:var(--fg-2);font:500 calc(var(--t-small) * var(--k-text))/1.6 var(--font-sans)}
.m-note .icon{margin-top:2px;color:var(--fg-3)}
.m-note strong{color:var(--fg-1)}
.m-note a{color:var(--fg-link)}
.m-note--center{margin-inline:auto}
.m-note--points{grid-template-columns:minmax(0,1fr);gap:10px;padding:22px 26px}
.m-note--points li{position:relative;padding-left:20px}
.m-note--points li+li{margin-top:8px}
.m-note--points li::before{content:"";position:absolute;left:3px;top:.7em;width:5px;height:5px;border-radius:50%;background:var(--m-accent)}

/* ---------- M30 · Own-a-Chamber Bridge ---------- */
.m-bridge{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(48px,6vw,88px);background:var(--bg-2);border-block:1px solid var(--line-1)}
.m-bridge__grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(24px,4vw,64px);align-items:center}
.m-bridge__product{position:relative;isolation:isolate}
.m-bridge__product>.bloom{inset:5% 0 -15%;background:var(--m-bloom)}
.m-bridge__product img{width:100%;height:auto;-webkit-mask-image:radial-gradient(68% 70% at 50% 48%,#000 58%,transparent 100%);mask-image:radial-gradient(68% 70% at 50% 48%,#000 58%,transparent 100%)}
.js .m-bridge__product.is-pending{transform:translateX(-24px)}
.m-bridge__copy{display:grid;gap:16px}
.m-bridge__line{max-width:22ch;color:var(--text-1)}
.m-bridge__links{display:flex;flex-wrap:wrap;gap:4px 28px;margin-top:6px}
.m-bridge--wide{padding-block:clamp(72px,9vw,140px)}
.m-bridge--wide .m-bridge__grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.m-bridge--wide .m-bridge__links{gap:12px 14px}
/* in porcelain chapters: a midnight card instead of a band */
.m-bridge--card{padding:0;background:none;border:0;overflow:visible}
.m-bridge--card .m-bridge__grid{padding:clamp(24px,3vw,40px);border-radius:var(--r-xl);background:var(--bg-1);box-shadow:0 30px 60px -30px rgba(17,19,26,.55),inset 0 1px 0 rgba(255,255,255,.1)}
@media (max-width:767px){
  .m-bridge__grid,.m-bridge--wide .m-bridge__grid{grid-template-columns:minmax(0,1fr)}
  .m-bridge__product{max-width:420px}
  .m-bridge__links{flex-direction:column;align-items:flex-start}
  .m-bridge--wide .m-bridge__links{align-items:stretch}
  .m-bridge--wide .m-bridge__links .btn{width:100%}
}

/* ---------- M31 · Tier Cards (B2B) ---------- */
.m-tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,24px);align-items:end}
.m-tiers>li{position:relative;min-width:0;height:100%}
.m-tiers>li>.bloom{inset:-18% 0;background:var(--m-bloom)}
.m-tiers__select{display:none}
@media (max-width:1023px){.m-tiers{grid-template-columns:minmax(0,1fr);gap:28px}}
@media (max-width:599px){
  .m-tiers__select.is-ready{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:4px;margin-bottom:24px;padding:4px;border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hair)}
  .m-tiers__select button{min-height:44px;border:0;border-radius:var(--r-pill);background:none;color:var(--fg-2);font:600 .9375rem/1 var(--font-sans);cursor:pointer}
  .m-tiers__select button[aria-selected="true"]{background:var(--fg-1);color:var(--m-on-fg)}
}

/* ---------- M32 · Topic Cloud ---------- */
.m-topics{display:flex;flex-wrap:wrap;gap:12px}
.m-topic{position:relative;isolation:isolate;display:inline-flex;align-items:center;gap:14px;min-height:56px;padding:10px 24px 10px 12px;overflow:hidden;border-radius:var(--r-pill);
  background:var(--bg-3);box-shadow:inset 0 0 0 1px var(--line-2),inset 0 1px 0 rgba(255,255,255,.08);color:var(--text-1);font:500 calc(var(--t-small) * 1.14 * var(--k-text))/1.35 var(--font-sans)}
.m-topic::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(180px circle at var(--mx,20%) var(--my,0%),rgba(255,255,255,.12),transparent 60%);opacity:.35;transition:opacity var(--dur-fast) var(--ease-out)}
.m-topic:hover::after{opacity:1}
.m-topic__ico{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:rgba(62,85,245,.14);color:var(--theta-300)}
.m-topic__ico .icon{width:18px;height:18px}
.ch--paper .m-topic{background:var(--paper-1);box-shadow:inset 0 0 0 1px var(--line-p),0 8px 20px -14px rgba(17,19,26,.35);color:var(--ink-1)}
.ch--paper .m-topic__ico{background:rgba(43,59,196,.08);color:var(--theta-700)}
.ch--paper .m-topic::after{background:radial-gradient(180px circle at var(--mx,20%) var(--my,0%),rgba(255,255,255,.7),transparent 60%)}

/* ---------- M33 · Method Strip ---------- */
.m-method{position:relative;isolation:isolate}
.m-method>.bloom{inset:-60% 5%}
.m-method__bar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-radius:var(--r-l)}
.m-method__bar>li{display:grid;grid-template-columns:24px minmax(0,1fr);align-content:start;gap:6px 14px;padding:clamp(20px,2.4vw,30px) clamp(20px,2.4vw,32px)}
.m-method__bar>li+li{border-left:1px solid rgba(255,255,255,.08)}
.m-method__bar .icon{grid-row:span 2;width:24px;height:24px;color:var(--theta-300)}
.m-method__bar b{color:var(--text-2);font:600 var(--t-micro)/1.3 var(--font-sans);letter-spacing:.18em;text-transform:uppercase}
.m-method__bar span{color:var(--text-1);font-weight:500;line-height:1.5}
@media (max-width:767px){.m-method__bar{grid-template-columns:minmax(0,1fr)}.m-method__bar>li+li{border-left:0;border-top:1px solid rgba(255,255,255,.08)}}

/* =============================================================================
   Reduced motion + motion off: every module shows its full, designed end state.
   core.js sets html[data-motion="off"] for the toggle and for prefers-reduced-motion; the media query
   below covers the moment before it runs and pages where it failed.
   ============================================================================= */
[data-motion="off"] .m-ribbon__track{animation:none!important;transform:none!important;width:auto!important;justify-content:center!important}
[data-motion="off"] .m-ribbon{-webkit-mask-image:none!important;mask-image:none!important}
[data-motion="off"] .m-ribbon__list{flex-wrap:wrap!important;padding-right:0!important}
[data-motion="off"] .m-ribbon__list[aria-hidden="true"]{display:none!important}
[data-motion="off"] .m-anatomy__pin::after{animation:none!important}
[data-motion="off"] :is(.m-iris,.m-iris>img,.m-iris>picture>img,.m-iris .m-iris__img,.m-spec__rule,.m-ladder__line,.m-ladder__node,.m-ladder__tiers>li,
  .m-route,.m-route__step>*,.m-pillars>.m-pillar,.m-arrival__panel,.m-plinth__stage img,.m-bridge__product,.m-anatomy__pin,.m-contrast .m-ticks li,.m-gallery__tile figcaption){transform:none!important}
[data-motion="off"] .m-route::before,[data-motion="off"] .m-route__step::before,[data-motion="off"] .m-pillars--line::before,[data-motion="off"] .m-arrival__route::before{transform:none!important}
[data-motion="off"] :is(.m-feel__list li,.m-spec--words .m-spec__num,.m-anatomy__pin,.m-ladder__node,.m-ladder__tiers>li,.m-ladder .bloom,
  .m-route__step>*,.m-arrival__panel,.m-pillars>.m-pillar,.m-contrast .bloom,.m-contrast .m-ticks li,.m-finale__light){opacity:1!important}
[data-motion="off"] .m-route__step::before{opacity:1!important}
[data-motion="off"] .m-contrast__card--old{opacity:.72!important}
[data-motion="off"] :is(.m-chapters__media,.m-session__step,.m-session__text,.m-anatomy__card,.m-anatomy__leader,.m-descent__caption span,.m-tier){transition-duration:0s!important}
[data-motion="off"] .ch--paper .m-tier:hover{transform:none}
@media (prefers-reduced-motion:reduce){
  .m-ribbon__track{animation:none!important;transform:none!important;width:auto!important;justify-content:center!important}
  .m-ribbon{-webkit-mask-image:none!important;mask-image:none!important}
  .m-ribbon__list{flex-wrap:wrap!important;padding-right:0!important}
  .m-ribbon__list[aria-hidden="true"]{display:none!important}
  .m-anatomy__pin::after{animation:none!important}
  .ch--paper .m-tier:hover{transform:none}
}

/* M06 mobile panels: the theta chip keeps its own width */
.m-descent__panel .chip{justify-self:start}

/* LCP: framed and portrait hero media stay painted at first paint; only their clip/scale reveal animates (02 §3) */
.js [data-hero]:not(.is-in) [data-seq="iris"]{opacity:1}
/* LCP: the hero lead is often the largest text on a text hero (BG especially); it is visible at first paint and
   only rises its 12px with the sequence, so the page's main content is never hidden behind the entrance */
.js [data-hero]:not(.is-in) .hero__lead[data-seq]{opacity:1}
/* LCP: any hero media (product stage, portrait, framed film) is painted at first paint; text and chips still sequence */
.js [data-hero]:not(.is-in) [data-seq]:has(img,video,picture){opacity:1}
/* LCP: a framed hero film/photo is painted whole at first paint (its iris clip would shrink the LCP area and let the
   video's first frame take over later); it still opens with the scale settle */
.js [data-hero]:not(.is-in) [data-seq="iris"]:has(img,video,picture){clip-path:none}
/* LCP: phone hero media get a whole-pixel height, so a hero film's first frame never measures a fraction larger than
   its poster and takes over the LCP (the poster is the LCP; the film plays over it) */
@supports (height:round(down,10.5px,1px)){
  @media (max-width:767px){
    .hero--cinematic .hero__media,.hero--cinematic .hero__shade{height:round(down,min(58svh,520px),1px)}
  }
  @media (max-width:760px){
    .hero--media .hero__media,.hero--split .hero__media{height:round(down,60svh,1px)}
  }
}
