@font-face{font-family:'Bodoni Moda';font-weight:400 900;font-style:normal;font-display:swap;src:url(/fonts/bodoni-moda-855ea6.woff2) format('woff2')}
@font-face{font-family:'Bodoni Moda';font-weight:400 900;font-style:italic;font-display:swap;src:url(/fonts/bodoni-moda-italic-07ad25.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-weight:200 800;font-style:normal;font-display:swap;src:url(/fonts/manrope-814019.woff2) format('woff2')}

/* ============ tokens (see design-system.md) ============ */
:root{
  --bg:#0a1220;--bg2:#0d1829;--bg3:#111f35;--ink:#f3eee4;--muted:#98a3b3;--gold:#c6a568;--gold-d:#7d5f2e;
  --ink-2:#c9cfd8;
  --hair:rgba(198,165,104,.24);--hair-strong:rgba(198,165,104,.55);--hair-faint:rgba(243,238,228,.08);
  --panel:rgba(13,24,41,.62);--panel-solid:rgba(13,24,41,.86);--panel-hover:rgba(17,31,53,.9);
  --disp:'Bodoni Moda',Georgia,serif;--sans:'Manrope',system-ui,sans-serif;
  --fs-d1:clamp(48px,5.6vw,92px);--fs-d2:clamp(36px,4.2vw,64px);--fs-d3:clamp(26px,2.2vw,34px);--fs-d4:clamp(21px,1.9vw,28px);
  --fs-body:16px;--fs-small:15px;--fs-caps:11.5px;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--s9:96px;--s10:128px;--s11:160px;
  --pad:clamp(24px,6vw,96px);--maxw:1240px;
  --shadow-panel:0 40px 90px -40px rgba(2,5,10,.75),0 1px 0 rgba(243,238,228,.04) inset;
  --ease-out:cubic-bezier(.2,.7,.2,1);--ease-io:cubic-bezier(.65,0,.35,1);
  --t-fast:.28s;--t-med:.6s;--t-reveal:1.1s;--stagger:.11s;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink)}
body{font-family:var(--sans);font-weight:400;font-size:var(--fs-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:rgba(198,165,104,.35);color:var(--ink)}

/* ============ stage ============ */
.stage{position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--bg) url(frames/d/0001.webp?v=fgoheggigl) center/cover no-repeat}
@media (max-aspect-ratio:9/10){.stage{background-image:url(frames/m/0001.webp?v=fgoheggigl)}}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(5,9,17,.55) 100%)}
.copy-scrim{position:absolute;inset:0;opacity:0;pointer-events:none;background:linear-gradient(90deg,rgba(6,11,20,.80) 0%,rgba(6,11,20,.62) 30%,rgba(6,11,20,.30) 46%,rgba(6,11,20,0) 64%)}
.shade{position:absolute;inset:0;opacity:0;pointer-events:none;
  background:radial-gradient(70% 55% at 50% 30%,rgba(198,165,104,.07),transparent 70%),linear-gradient(180deg,rgba(10,18,32,.80),rgba(10,18,32,.93))}
/* film grain: fixed, very low opacity, never animates */
.grain{position:fixed;inset:-50%;z-index:4;pointer-events:none;opacity:.07;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ============ hero copy ============ */
.hero-copy{position:fixed;z-index:3;left:var(--pad);top:50%;transform:translateY(-54%);max-width:min(540px,38vw);opacity:0;visibility:hidden;will-change:opacity,transform}
.hero-copy h1{font-family:var(--disp);font-weight:400;font-size:var(--fs-d1);line-height:1.0;letter-spacing:-.015em;margin:0 0 var(--s6);text-wrap:balance}
.hero-copy .lede{font-family:var(--disp);font-size:var(--fs-d4);line-height:1.28;margin:0 0 var(--s4);max-width:15em;text-wrap:balance}
.hero-copy .sub{font-size:var(--fs-caps);font-weight:600;letter-spacing:.2em;text-transform:uppercase;line-height:2;color:var(--ink-2);margin:0 0 var(--s7);max-width:460px}
.hero-copy h1,.hero-copy p{text-shadow:0 1px 24px rgba(4,8,15,.55)}
/* hero colour hierarchy: ink headline with one gold word, ink lede, quiet caps line */
.hero-copy h1,.hero-copy .lede{color:var(--ink)}
.hero-copy .lustre{display:inline-block;color:var(--gold);
  background:linear-gradient(180deg,#e0c48e 0%,#d4b67b 42%,var(--gold) 78%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  text-shadow:none;filter:drop-shadow(0 1px 18px rgba(4,8,15,.5))}
.hero-copy .sub{color:var(--muted)}

/* ============ buttons ============ */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;isolation:isolate;
  font-family:var(--sans);font-size:var(--fs-caps);font-weight:600;letter-spacing:.24em;text-transform:uppercase;text-decoration:none;
  padding:20px 38px;border:1px solid var(--gold);background:var(--gold);color:var(--bg);transition:color var(--t-med) var(--ease-out),border-color var(--t-med) var(--ease-out)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--bg);transform:scaleX(0);transform-origin:right;transition:transform var(--t-med) var(--ease-io)}
.btn:hover::before,.btn:focus-visible::before{transform:scaleX(1);transform-origin:left}
.btn:hover,.btn:focus-visible{color:var(--gold)}
.btn:focus-visible{outline:1px solid var(--gold);outline-offset:5px}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--hair-strong)}
.btn.ghost::before{background:var(--gold)}
.btn.ghost:hover,.btn.ghost:focus-visible{color:var(--bg);border-color:var(--gold)}

/* scroll cue: a thin gold line, no text */
.cue{position:fixed;z-index:3;left:50%;bottom:34px;width:1px;height:56px;background:rgba(243,238,228,.16);overflow:hidden;transition:opacity .6s}
.cue span{position:absolute;left:0;top:-40%;width:1px;height:40%;background:var(--gold);animation:cue 2.6s var(--ease-io) infinite}
@keyframes cue{to{top:110%}}

/* ============ scroll lengths ============ */
main{position:relative;z-index:2}
.scrub{height:560vh}
.settle{height:150vh}

/* ============ shared patterns ============ */
.panel{position:relative;background:var(--panel);border:1px solid var(--hair);box-shadow:var(--shadow-panel);
  backdrop-filter:blur(14px) saturate(115%);-webkit-backdrop-filter:blur(14px) saturate(115%)}
.panel::after{content:"";position:absolute;inset:10px;border:1px solid var(--hair-faint);pointer-events:none}
.corner{position:absolute;width:14px;height:14px;border-color:var(--gold);border-style:solid;border-width:0;pointer-events:none}
.corner.tl{top:-1px;left:-1px;border-top-width:1px;border-left-width:1px}
.corner.tr{top:-1px;right:-1px;border-top-width:1px;border-right-width:1px}
.corner.bl{bottom:-1px;left:-1px;border-bottom-width:1px;border-left-width:1px}
.corner.br{bottom:-1px;right:-1px;border-bottom-width:1px;border-right-width:1px}
/* divider: hairline - lozenge - hairline */
.rule-orn{display:flex;align-items:center;justify-content:center;gap:14px;margin:0 auto}
.rule-orn::before,.rule-orn::after{content:"";width:64px;height:1px;background:linear-gradient(90deg,transparent,var(--hair-strong))}
.rule-orn::after{background:linear-gradient(90deg,var(--hair-strong),transparent)}
.rule-orn i{width:5px;height:5px;transform:rotate(45deg);border:1px solid var(--gold)}

/* reveal motion */
[data-reveal]{opacity:0;transform:translateY(18px);transition:opacity var(--t-reveal) var(--ease-out),transform var(--t-reveal) var(--ease-out);transition-delay:calc(var(--d,0) * var(--stagger))}
[data-reveal].in{opacity:1;transform:none}
[data-reveal].done{transition-delay:0s}

/* ============ intro (trust statement) ============ */
.intro{max-width:480px}
.intro-eyebrow{font-size:var(--fs-caps);font-weight:600;letter-spacing:.24em;text-transform:uppercase;line-height:2;color:var(--ink-2);margin:0 0 var(--s6);text-wrap:balance}
.intro-eyebrow .gold{color:var(--gold);white-space:nowrap}
.intro-statement{font-family:var(--disp);font-weight:400;font-size:clamp(36px,3.5vw,54px);line-height:1.1;letter-spacing:-.01em;margin:0;text-wrap:balance}
.intro-rule{display:block;width:56px;height:1px;background:var(--gold);margin:var(--s7) 0}
.intro-support{font-size:var(--fs-body);line-height:1.75;color:var(--muted);margin:0;max-width:420px;text-wrap:pretty}

/* ============ split pane (desktop >= 1024px) ============ */
.split{position:relative;height:calc(100vh + 6 * 90vh)}
.split-pin{position:sticky;top:0;height:100vh;display:flex;align-items:center;padding:var(--s8) var(--pad)}
.split-frame{position:relative;width:100%;max-width:var(--maxw);height:min(760px,100%);margin:0 auto;display:grid;grid-template-columns:42fr 58fr;
  background:var(--panel);border:1px solid var(--hair);box-shadow:var(--shadow-panel);backdrop-filter:blur(14px) saturate(115%);-webkit-backdrop-filter:blur(14px) saturate(115%)}
.split-frame::after{content:"";position:absolute;inset:10px;border:1px solid var(--hair-faint);pointer-events:none}
.split-left,.split-right{position:relative;display:flex;align-items:center;padding:var(--s7) clamp(40px,4.5vw,72px)}
.split-right{border-left:1px solid var(--hair);padding-right:clamp(72px,5.6vw,88px)}
.areas-stack{position:relative;width:100%;height:100%}
/* each area is vertically centred in the pane, so short and long panels sit with equal air above and below */
.area{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;
  opacity:0;visibility:hidden;transform:translateY(16px);
  transition:opacity .9s var(--ease-out),transform .9s var(--ease-out),visibility 0s linear .9s}
.area.on{opacity:1;visibility:visible;transform:none;transition:opacity .9s var(--ease-out) .12s,transform .9s var(--ease-out) .12s,visibility 0s}
.area.past{transform:translateY(-12px)}
.area-body{max-width:580px}
.area-idx{display:flex;align-items:center;gap:18px;font-family:var(--disp);font-size:34px;line-height:1;color:var(--gold);margin:0 0 var(--s5)}
.area-idx::after{content:"";width:64px;height:1px;background:var(--gold-d)}
.area h2{font-family:var(--disp);font-weight:400;font-size:clamp(30px,2.5vw,38px);line-height:1.1;letter-spacing:-.01em;margin:0 0 var(--s3);text-wrap:balance}
/* Bodoni's display optical size draws the hyphen as an invisible hairline; set that one glyph at text size */
.area h2 .hy{font-variation-settings:'opsz' 11}
.area-desc{font-family:var(--disp);font-style:italic;font-size:19px;line-height:1.45;color:var(--ink-2);margin:0 0 var(--s5);max-width:520px;text-wrap:balance}
/* bullets: hairline above the list, gold lozenge marker, generous leading */
.area-list{list-style:none;margin:0;padding:var(--s5) 0 0;border-top:1px solid var(--hair);max-width:540px}
.area-list li{position:relative;padding-left:26px;font-size:15px;line-height:1.6;letter-spacing:.005em;color:var(--ink);text-wrap:pretty}
.area-list li+li{margin-top:var(--s3)}
.area-list li::before{content:"";position:absolute;left:2px;top:.62em;width:5px;height:5px;transform:rotate(45deg);border:1px solid var(--gold);background:rgba(198,165,104,.25)}
.area-close{font-size:15px;line-height:1.65;color:var(--muted);margin:var(--s5) 0 var(--s6);max-width:520px;text-wrap:pretty}
.area .btn{align-self:flex-start}
/* shorter desktop viewports: tighten the type so the longest panel (5 bullets) fits the frame */
@media (min-width:1024px) and (max-height:820px){
  .split-pin{padding:var(--s6) var(--pad)}
  .split-left,.split-right{padding-top:var(--s6);padding-bottom:var(--s6)}
  .area-idx{font-size:28px;margin-bottom:var(--s4)}
  .area h2{font-size:clamp(28px,2.4vw,34px)}
  .area-desc{font-size:17px;margin-bottom:var(--s5)}
  .area-list{padding-top:var(--s4)}
  .area-list li{font-size:14px;line-height:1.5}
  .area-list li+li{margin-top:var(--s2)}
  .area-close{font-size:14px;margin:var(--s5) 0}
  .area .btn{padding:16px 32px}
}
/* accent (owner pick: B is the default). Prototype switches: ?accent=a (gold italic only), ?accent=plain (v3 look).
   Rule: the italic subheading is the panel's gold text; bullet lead phrases are bright ink at 600, the rest steps back to --ink-2. */
:root{--gold-soft:#d4b67b}
:root:not([data-accent="plain"]) .area-desc{color:var(--gold-soft)}
:root:not([data-accent="a"]):not([data-accent="plain"]) .area-list li{color:var(--ink-2)}
:root:not([data-accent="a"]):not([data-accent="plain"]) .area-list .lead{color:var(--ink);font-weight:600;letter-spacing:.003em}
/* area 06 (longest panel): a wider measure so the semi-bold last bullet stays on one line, and slightly tighter bullet spacing (desktop only) */
@media (min-width:1024px){
  .area[data-i="5"] .area-list{max-width:580px}
}
@media (min-width:1024px) and (min-height:821px){
  .area[data-i="5"] .area-list li+li{margin-top:10px}
}
/* progress rail: 1px track, six ticks, gold fill + active tick (v3: stronger track and ticks) */
.rail{position:absolute;right:32px;top:50%;height:240px;transform:translateY(-50%);width:1px;margin:0;padding:0;list-style:none;background:rgba(198,165,104,.38);
  display:flex;flex-direction:column;justify-content:space-between}
.rail-fill{position:absolute;left:0;top:0;width:1px;height:0;background:var(--gold);transition:height .25s linear}
.rail li{position:relative;width:13px;height:1px;margin-left:-6px;background:rgba(198,165,104,.72);transition:background var(--t-med) var(--ease-out),width var(--t-med) var(--ease-out),margin var(--t-med) var(--ease-out),height var(--t-med) var(--ease-out)}
.rail li.on{background:var(--gold);width:27px;height:2px;margin-left:-13px;box-shadow:0 0 0 1px rgba(10,18,32,.6)}

/* desktop scroll performance: live backdrop-filter on the pinned frame cost ~50ms per frame.
   When scroll.js adds .nbf, the frame shows a pre-blurred copy of the stage (canvas drawn once with the same
   blur(14px) saturate(115%), plus copies of the vignette, scrim and shade), kept aligned to the viewport with one
   transform. Same look, no per-frame blur. Without .nbf (reduced motion, no canvas filter support) the live blur stays. */
.sf-blur{display:none}
@media (min-width:1024px){
  .nbf .split-frame{background:none;backdrop-filter:none;-webkit-backdrop-filter:none;isolation:isolate;border-color:transparent}
  /* the layer covers the border box like backdrop-filter does; the hairline border is redrawn on top of it */
  .nbf .sf-blur{display:block;position:absolute;inset:-1px;z-index:-1;overflow:hidden;pointer-events:none;contain:strict}
  .nbf .split-frame::before{content:"";position:absolute;inset:-1px;border:1px solid var(--hair);pointer-events:none}
  .sf-blur-in{position:absolute;left:0;top:0;will-change:transform}
  .sf-blur-in canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
  .sf-tint{position:absolute;inset:0;background:var(--panel)}
  /* while the frame is on screen everything under the grain is dark navy, where the overlay blend reduces to a
     tiny lift; a normal-blend copy of the same noise at .02 matches it within about one level (8-bit) and skips
     the per-frame blend readback */
  .gq .grain{mix-blend-mode:normal;opacity:.02}
}

/* ============ stacked layout (< 1024px) ============ */
@media (max-width:1023px){
  .split{height:auto;padding:var(--s9) var(--pad) var(--s10)}
  .split-pin{position:static;height:auto;display:block;padding:0}
  .split-frame{display:block;height:auto;background:none;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;max-width:var(--maxw)}
  .split-frame::after,.split-frame>.corner{display:none}
  .split-left{display:block;padding:clamp(56px,8vw,88px) clamp(26px,5vw,56px);margin:0 0 var(--s8);background:var(--panel);border:1px solid var(--hair);box-shadow:var(--shadow-panel);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
  .intro{max-width:620px}
  .split-right{display:block;padding:0;border:0}
  .areas-stack{height:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--hair);border:1px solid var(--hair);box-shadow:var(--shadow-panel)}
  .area,.area.on,.area.past{position:relative;inset:auto;justify-content:flex-start;visibility:visible;background:var(--panel-solid);padding:var(--s8) clamp(28px,4vw,44px)}
  .area.rv{opacity:0;transform:translateY(18px);transition:opacity var(--t-reveal) var(--ease-out),transform var(--t-reveal) var(--ease-out);transition-delay:calc(var(--d,0) * var(--stagger))}
  .area.rv.in{opacity:1;transform:none}
  .area.rv.done{transition-delay:0s}
  .area-idx{font-family:var(--sans);font-size:var(--fs-caps);font-weight:600;letter-spacing:.24em;margin-bottom:var(--s5)}
  .area-idx::after{width:28px}
  .area h2{font-size:var(--fs-d3);line-height:1.14;margin-bottom:var(--s3)}
  .area-desc{font-size:17px;margin-bottom:var(--s5)}
  .area-list{padding-top:var(--s5)}
  .area-list li{font-size:14.5px;line-height:1.6;padding-left:22px}
  .area-list li+li{margin-top:var(--s3)}
  .area-close{font-size:14.5px;margin:var(--s5) 0 0}
  .rail{display:none}
  /* stacked cards: same outlined button as desktop, after the closing line; touch-sized (min 48px), not full-bleed */
  .area .btn{display:inline-flex;min-height:48px;padding:16px 32px;margin-top:var(--s6)}
}
/* tablet two-up cards: equal-height cards per row (grid stretch), body as a column, button pinned to the card bottom.
   The closing line keeps a 32px minimum gap above the button. */
@media (min-width:701px) and (max-width:1023px){
  .area-body{display:flex;flex-direction:column;flex:1 1 auto}
  .area-close{margin-bottom:var(--s6)}
  .area .btn{margin-top:auto;align-self:flex-start}
}
@media (max-width:700px){
  .split{padding:var(--s9) 18px var(--s10)}
  .areas-stack{grid-template-columns:1fr}
  .area,.area.on,.area.past{padding:var(--s7) 28px}
}

/* ============ close ============ */
.close{position:relative;text-align:center;padding:var(--s11) var(--pad) var(--s10);
  background:radial-gradient(60% 50% at 50% 0%,rgba(198,165,104,.08),transparent 70%),linear-gradient(180deg,rgba(10,18,32,0) 0%,var(--bg) 26%)}
.close-inner{max-width:880px;margin:0 auto}
.close .rule-orn{margin-bottom:var(--s7)}
.close h2{font-family:var(--disp);font-weight:400;font-size:var(--fs-d2);line-height:1.06;letter-spacing:-.01em;margin:0 0 var(--s5)}
.close-lede{font-size:var(--fs-caps);font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--s8)}
.also{list-style:none;margin:0 auto var(--s8);padding:0;max-width:780px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s8);text-align:left;border-bottom:1px solid var(--hair)}
/* each item is a quiet link to request.html?area=<slug>: same look as before, the whole row is the target */
.also li{break-inside:avoid;border-top:1px solid var(--hair);font-size:var(--fs-body);letter-spacing:.01em}
.also a{display:flex;align-items:center;gap:18px;padding:20px 4px;color:var(--ink);text-decoration:none;transition:color var(--t-fast),padding var(--t-med) var(--ease-out)}
.also a::before{content:"";flex:none;width:5px;height:5px;transform:rotate(45deg);border:1px solid var(--gold-d);transition:border-color var(--t-fast),background var(--t-fast)}
.also a:hover,.also a:focus-visible{color:var(--gold);padding-left:10px}
.also a:hover::before,.also a:focus-visible::before{border-color:var(--gold);background:var(--gold)}
.also a:focus-visible{outline:1px solid var(--gold);outline-offset:-1px}
.actions{display:flex;gap:var(--s4);justify-content:center;flex-wrap:wrap}

/* ============ footer ============ */
.foot{position:relative;z-index:2;background:var(--bg);display:flex;justify-content:space-between;align-items:center;gap:var(--s5);
  max-width:none;padding:var(--s6) var(--pad);border-top:1px solid var(--hair)}
.foot-mark{font-family:var(--disp);font-size:15px;letter-spacing:.32em;text-transform:uppercase;color:var(--ink)}
.foot-copy{font-size:12px;letter-spacing:.14em;color:var(--muted)}

/* ============ responsive ============ */
@media (max-width:700px){
  :root{--fs-caps:11px}
  .hero-copy{left:24px;right:24px;max-width:none;top:auto;bottom:max(9vh,56px);transform:none}
  .hero-copy h1{font-size:clamp(42px,12vw,56px);margin-bottom:var(--s5)}
  .hero-copy .sub{margin-bottom:var(--s6)}
  .copy-scrim{background:linear-gradient(0deg,rgba(6,11,20,.88) 0%,rgba(6,11,20,.6) 40%,rgba(6,11,20,0) 70%)}
  .scrub{height:480vh}
  .close{padding:var(--s10) 24px var(--s9)}
  .also{grid-template-columns:1fr}
  .actions .btn{width:100%}
  .foot{flex-direction:column;text-align:center}
}

/* ============ reduced motion: static poster, no scrub, no reveal motion ============ */
.rm .scrub{height:0}
.rm .settle{height:100vh}
.rm .stage{background-image:url(frames/d/0370.webp?v=fgoheggigl)}
@media (max-aspect-ratio:9/10){.rm .stage{background-image:url(frames/m/0370.webp?v=fgoheggigl)}}
.rm .cue{display:none}
.rm [data-reveal],.rm .area.rv{opacity:1;transform:none;transition:none}
.rm .btn,.rm .btn::before,.rm .also a,.rm .also a::before{transition:none}
/* reduced motion, desktop: no pin animation; left sticky (static), all six stacked on the right */
@media (min-width:1024px){
  .rm .split{height:auto}
  .rm .split-pin{position:relative;height:auto;display:block;padding:var(--s9) var(--pad)}
  .rm .split-frame{height:auto;align-items:start}
  .rm .split-left{position:sticky;top:0;height:100vh;align-self:start}
  .rm .split-right{display:block;padding:var(--s7) clamp(40px,4.5vw,72px)}
  .rm .areas-stack{height:auto}
  .rm .area{position:relative;inset:auto;opacity:1;visibility:visible;transform:none;transition:none;padding:var(--s8) 0;border-top:1px solid var(--hair)}
  .rm .area:first-child{border-top:0}
  .rm .rail{display:none}
}
/* ---- Arrival (approved default, see arrival.js). Nothing below matches without the .arr class (absent with &arrival=off). */
.arr{--arr-bg:#0a1220}
.arr.arr-black{--arr-bg:#000}
.arr-cv{opacity:0;visibility:hidden}
.arr-h,.arr-cue{position:fixed;z-index:3;left:50%;margin:0;pointer-events:none;opacity:0;transform:translate(-50%,8px);transition:opacity 1.6s var(--ease-out),transform 1.6s var(--ease-out);white-space:nowrap}
.arr-h{top:50%;transform:translate(-50%,calc(-50% + 8px));font-family:var(--disp);font-weight:400;font-size:clamp(34px,5.2vw,76px);line-height:1.1;letter-spacing:-.015em;color:var(--ink);text-shadow:0 1px 24px rgba(4,8,15,.55)}
/* the gold word matches the hero's .lustre treatment */
.arr-h .arr-gold{display:inline-block;color:var(--gold);background:linear-gradient(180deg,#e0c48e 0%,#d4b67b 42%,var(--gold) 78%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none;filter:drop-shadow(0 1px 18px rgba(4,8,15,.5))}
.arr-h.on{opacity:1;transform:translate(-50%,-50%)}
.arr-cue{bottom:104px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:rgba(243,238,228,.62);padding-left:.32em}
.arr-cue.on{opacity:1;transform:translate(-50%,0)}
.arr .stage::after{content:"";position:absolute;inset:0;background:var(--arr-bg);opacity:0;pointer-events:none;transition:opacity 1.2s var(--ease-io)}
.arr-rm-dim .stage::after{opacity:1}
.arr-hold .hero-copy{opacity:0!important;visibility:hidden!important}
.rm.arr .hero-copy{transition:opacity .8s,visibility .8s}
