:root{
  --night:#0A1020; --panel:#111A2E; --silver:#DCE4F2; --mist:#8C98B0; --brass:#D6A55C; --brass-hi:#E6BA78;
  --line:rgba(220,228,242,.14);
  --sans:"Archivo","Helvetica Neue",Arial,sans-serif;
  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --pad:clamp(20px,5vw,80px);
  color-scheme:dark;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
/* The page is dark by design (particles glow additively); both themes use the same tokens. */
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --night:#0A1020; --silver:#DCE4F2; --mist:#8C98B0; --brass:#D6A55C; } }
:root[data-theme="dark"]{ --night:#0A1020; --silver:#DCE4F2; --mist:#8C98B0; --brass:#D6A55C; }
*,*::before,*::after{ box-sizing:inherit; }
html{ scroll-padding-top:env(safe-area-inset-top,0px); background:var(--night); }
body{ margin:0; background:var(--night); color:var(--silver); font-family:var(--sans); font-stretch:105%; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
.sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

#scene{ position:fixed; top:0; left:0; width:100%; height:100vh; height:100lvh; z-index:0; pointer-events:none; display:block; }
#vh-probe{ position:absolute; top:0; left:0; width:1px; height:100vh; visibility:hidden; pointer-events:none; }
.fallback{ position:fixed; inset:0; z-index:0; display:none;
  background:radial-gradient(55% 45% at 72% 32%, rgba(214,165,92,.16), transparent 70%),
             radial-gradient(45% 40% at 25% 75%, rgba(127,167,255,.10), transparent 70%); }
.no-webgl .fallback{ display:block; }
main, footer{ position:relative; z-index:1; }

/* nav */
.nav{ position:fixed; top:0; left:0; right:0; z-index:10; display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:calc(env(safe-area-inset-top,0px) + 18px) var(--pad) 18px;
  background:linear-gradient(to bottom, rgba(10,16,32,.9), rgba(10,16,32,0)); }
.wordmark{ display:flex; align-items:center; gap:10px; font-weight:700; font-stretch:120%; font-size:19px; letter-spacing:-.01em; color:var(--silver); text-decoration:none; white-space:nowrap; }
.proto{ font-weight:400; font-stretch:100%; font-size:12px; color:var(--mist); border:1px solid var(--line); border-radius:999px; padding:3px 9px; letter-spacing:0; }
.nav-links{ display:flex; align-items:center; gap:28px; }
.nav-links a:not(.btn){ color:var(--mist); text-decoration:none; font-size:15px; transition:color .2s; }
.nav-links a:not(.btn):hover{ color:var(--silver); }

/* buttons */
.btn{ display:inline-flex; align-items:center; justify-content:center; min-height:50px; padding:0 26px; border-radius:999px;
  font-family:var(--sans); font-stretch:112%; font-weight:600; font-size:16px; text-decoration:none; white-space:nowrap;
  transition:background-color .2s, border-color .2s, color .2s; }
.btn-primary{ background:var(--brass); color:var(--night); }
.btn-primary:hover{ background:var(--brass-hi); }
.btn-ghost{ border:1px solid var(--line); color:var(--silver); background:rgba(10,16,32,.35); }
.btn-ghost:hover{ border-color:var(--silver); }
.nav .btn{ min-height:40px; padding:0 18px; font-size:14px; }
a:focus-visible{ outline:2px solid var(--brass); outline-offset:3px; }

/* shared type */
.readable{ text-shadow:0 2px 28px rgba(10,16,32,.7); }
.statement{ margin:0; font-weight:620; font-stretch:116%; font-size:clamp(30px,4.4vw,70px); line-height:1.07; letter-spacing:-.018em; }
.statement .s{ font-family:var(--serif); font-weight:300; font-stretch:100%; letter-spacing:-.008em; }
.col{ max-width:min(780px,54vw); }

section{ position:relative; padding:0 var(--pad); }
.screen{ min-height:100vh; min-height:100svh; display:flex; flex-direction:column; justify-content:center; }

/* hero */
.hero{ justify-content:flex-end; padding-bottom:clamp(40px,8vh,96px); }
.edition{ margin:0 0 clamp(14px,2.4vh,28px); font-size:clamp(12px,1vw,15px); font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--brass); }
.hero h1{ margin:0; font-weight:560; font-stretch:122%; font-size:clamp(46px,9.4vw,156px); line-height:.9; letter-spacing:-.028em; }
.hero-foot{ margin-top:clamp(28px,4.5vh,52px); display:grid; grid-template-columns:minmax(0,1fr) auto; gap:24px 40px; align-items:end; }
.deck{ margin:0; font-family:var(--serif); font-weight:300; font-size:clamp(22px,2.4vw,38px); line-height:1.2; max-width:25ch; }
.actions{ display:flex; gap:12px; flex-wrap:wrap; }

/* intro */
.intro .statement{ max-width:16ch; }

/* topics */
.topics{ padding-top:24vh; padding-bottom:26vh; }
.topics-intro{ margin:0 0 5vh; font-family:var(--serif); font-weight:300; font-size:clamp(20px,2vw,30px); color:var(--mist); max-width:30ch; }
.topic-list{ list-style:none; margin:0; padding:0; }
.topic{ margin:0; padding:2.2vh 0; font-weight:600; font-stretch:122%; font-size:clamp(38px,6.6vw,108px); line-height:1; letter-spacing:-.028em; opacity:.2; will-change:opacity; }

/* both sides (sticky) */
.duel{ height:320vh; padding:0; }
.duel-pin{ position:sticky; top:0; height:100vh; height:100svh; display:flex; flex-direction:column; justify-content:center; padding:0 var(--pad); overflow:hidden; }
.duel-title{ max-width:14ch; font-size:clamp(28px,3.4vw,54px); }
.panels{ position:relative; height:clamp(290px,40vh,380px); max-width:min(600px,48vw); margin-top:5vh; }
.panel{ position:absolute; inset:0; opacity:0; transform:translateY(22px); transition:opacity .55s ease, transform .55s ease; pointer-events:none; }
.panel.is-active{ opacity:1; transform:none; pointer-events:auto; }
.panel-num{ font-family:var(--serif); font-weight:300; color:var(--brass); font-size:clamp(52px,6.4vw,104px); line-height:1; font-variant-numeric:lining-nums; }
.panel h3{ margin:.12em 0 .3em; font-weight:620; font-stretch:120%; font-size:clamp(36px,4.6vw,72px); line-height:1; letter-spacing:-.022em; }
.panel p{ margin:0; font-family:var(--serif); font-weight:300; font-size:clamp(19px,1.6vw,24px); line-height:1.42; color:var(--mist); max-width:32ch; }
.steps{ display:flex; gap:10px; max-width:min(600px,48vw); margin-top:3vh; }
.step{ flex:1; font-size:14px; color:var(--mist); }
.step i{ display:block; position:relative; height:2px; margin-bottom:10px; background:var(--line); overflow:hidden; }
.step b{ position:absolute; inset:0; background:var(--brass); transform-origin:left center; transform:scaleX(0); }

/* numbers */
.numbers{ padding-top:22vh; padding-bottom:22vh; }
.num-row{ display:flex; flex-wrap:wrap; align-items:baseline; column-gap:.32em; font-size:clamp(36px,6.4vw,104px); line-height:1.1; letter-spacing:-.02em; }
.num{ font-family:var(--serif); font-weight:300; color:var(--brass); min-width:2.2em; font-variant-numeric:lining-nums tabular-nums; }
.num-label{ font-weight:560; font-stretch:116%; }

/* finale */
.cta{ align-items:center; text-align:center; }
.cta .statement{ max-width:13ch; font-size:clamp(40px,6.6vw,108px); line-height:1.02; }
.cta-note{ margin:3.5vh 0 4vh; font-family:var(--serif); font-weight:300; font-size:clamp(18px,1.6vw,24px); color:var(--mist); }
.cta .actions{ justify-content:center; }

footer{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:20px 48px;
  padding:48px var(--pad) calc(36px + env(safe-area-inset-bottom,0px)); border-top:1px solid var(--line); background:var(--night); color:var(--mist); font-size:15px; }
footer p{ margin:0; }
.org{ font-family:var(--serif); font-weight:300; font-size:clamp(20px,1.8vw,28px); line-height:1.25; color:var(--silver); max-width:34ch; }
.foot-meta{ display:flex; flex-wrap:wrap; gap:10px 28px; }

.section-actions{ margin-top:clamp(28px,4.5vh,48px); }
.panel-btn{ margin-top:22px; }

/* progress rail */
.rail{ position:fixed; right:clamp(14px,2vw,28px); top:50%; transform:translateY(-50%); z-index:5; display:flex; flex-direction:column; gap:18px; }
.rail::before{ content:""; position:absolute; left:50%; top:4px; bottom:4px; width:1px; background:var(--line); transform:translateX(-50%); }
.rail span{ position:relative; width:7px; height:7px; border-radius:50%; background:var(--night); border:1px solid var(--mist); transition:background-color .3s, border-color .3s, transform .3s; }
.rail span.on{ background:var(--brass); border-color:var(--brass); transform:scale(1.35); }

@media (max-width:760px){
  .hide-m, .proto, .rail{ display:none; }
  .hero-foot{ grid-template-columns:1fr; }
  .col, .panels, .steps{ max-width:none; }
  .intro{ justify-content:flex-end; padding-bottom:14vh; }
  .duel-pin{ justify-content:flex-end; padding-bottom:10vh; }
  .panels{ height:clamp(210px,30vh,260px); }
}
@media (prefers-reduced-motion: reduce){
  .panel{ transition:none; }
  .btn, .rail span{ transition:none; }
}

/* v3 additions */
.topic{ font-size:clamp(30px,4.6vw,76px); padding:1.3vh 0; }
.note{ margin:3vh 0 0; font-family:var(--serif); font-weight:300; font-size:clamp(17px,1.4vw,21px); line-height:1.45; color:var(--mist); max-width:44ch; }
.facts{ list-style:none; margin:4vh 0 0; padding:0; max-width:34em; }
.facts li{ display:flex; flex-wrap:wrap; gap:4px 12px; align-items:baseline; padding:14px 0; border-top:1px solid var(--line); font-size:clamp(17px,1.4vw,21px); }
.facts b{ font-weight:620; font-stretch:114%; }
.facts span{ font-family:var(--serif); font-weight:300; color:var(--mist); }
.dates{ padding-top:20vh; padding-bottom:16vh; }
.dates-head .statement{ font-size:clamp(40px,6vw,96px); }
.date-list{ list-style:none; margin:4vh 0 0; padding:0; }
.date-row{ min-height:34vh; display:flex; flex-direction:column; justify-content:center; max-width:min(720px,50vw); opacity:.3; will-change:opacity; }
.date-when{ font-family:var(--serif); font-weight:300; color:var(--brass); font-size:clamp(40px,5.4vw,88px); line-height:1; font-variant-numeric:lining-nums; }
.date-what{ margin-top:.35em; font-weight:620; font-stretch:116%; font-size:clamp(22px,2.3vw,36px); line-height:1.12; letter-spacing:-.01em; }
.date-note{ margin-top:.5em; font-family:var(--serif); font-weight:300; font-size:clamp(17px,1.35vw,20px); color:var(--mist); }
.badge-next{ display:inline-block; vertical-align:middle; margin-left:14px; padding:4px 11px; border-radius:999px; background:var(--brass); color:var(--night); font-family:var(--sans); font-stretch:105%; font-weight:600; font-size:13px; line-height:1.2; }
@media (max-width:760px){
  .date-row{ max-width:none; min-height:40vh; }
  .facts{ max-width:none; }
}
.badge-next[hidden]{ display:none; }
.numbers .num-row{ font-size:clamp(32px,4.8vw,80px); max-width:60vw; }
@media (max-width:760px){ .numbers .num-row{ max-width:none; } }
@media (max-width:760px){ .readable{ text-shadow:0 1px 2px rgba(10,16,32,.9), 0 0 12px rgba(10,16,32,.9); } }

/* ===== inner pages (rules, register, thanks, 404) ===== */
#stars{ position:fixed; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; display:block; }
.page{ position:relative; z-index:1; }
.page-hero{ padding:calc(env(safe-area-inset-top,0px) + 150px) var(--pad) 7vh; }
.eyebrow-link{ display:inline-block; margin-bottom:28px; color:var(--mist); text-decoration:none; font-size:15px; }
.eyebrow-link:hover{ color:var(--silver); }
.page-title{ margin:0; font-weight:580; font-stretch:122%; font-size:clamp(46px,7.6vw,124px); line-height:.92; letter-spacing:-.028em; }
.page-lead{ margin:clamp(22px,3.5vh,36px) 0 0; font-family:var(--serif); font-weight:300; font-size:clamp(21px,2.2vw,34px); line-height:1.22; max-width:30ch; }
.page-body{ padding:0 var(--pad) 12vh; display:grid; grid-template-columns:minmax(0,220px) minmax(0,1fr); gap:0 clamp(32px,6vw,96px); align-items:start; }
.toc{ position:sticky; top:110px; display:flex; flex-direction:column; gap:10px; padding-top:8px; }
.toc a{ color:var(--mist); text-decoration:none; font-size:15px; }
.toc a:hover{ color:var(--silver); }
.rule-sec{ padding:5vh 0; border-top:1px solid var(--line); max-width:62em; }
.rule-sec:first-child{ border-top:0; padding-top:0; }
.rule-sec h2{ margin:0 0 .6em; font-weight:620; font-stretch:118%; font-size:clamp(28px,3.2vw,48px); line-height:1.02; letter-spacing:-.02em; }
.rule-sec h2 .s{ font-family:var(--serif); font-weight:300; font-stretch:100%; letter-spacing:-.005em; }
.rule-sec p, .rule-sec li{ font-family:var(--serif); font-weight:300; font-size:clamp(18px,1.45vw,21px); line-height:1.5; color:var(--silver); }
.rule-sec p{ margin:0 0 1em; max-width:62ch; }
.rule-sec ul{ margin:0 0 1em; padding-left:1.1em; max-width:62ch; }
.rule-sec li{ margin:.35em 0; }
.rule-sec li::marker{ color:var(--brass); }
.muted{ color:var(--mist) !important; }
.table-wrap{ overflow-x:auto; margin:1.2em 0 1.4em; max-width:100%; }
.score-table{ border-collapse:collapse; min-width:300px; width:100%; max-width:720px; font-size:16px; }
.score-table th, .score-table td{ text-align:left; padding:12px 14px 12px 0; border-bottom:1px solid var(--line); vertical-align:top; }
.score-table th{ font-weight:600; font-stretch:112%; color:var(--mist); font-size:14px; }
.score-table td{ font-family:var(--serif); font-weight:300; font-size:18px; }
.score-table td.pts{ font-family:var(--serif); color:var(--brass); white-space:nowrap; }
.faq details{ border-top:1px solid var(--line); max-width:62em; }
.faq details:last-child{ border-bottom:1px solid var(--line); }
.faq summary{ list-style:none; cursor:pointer; display:flex; justify-content:space-between; gap:24px; align-items:center; padding:20px 0;
  font-weight:600; font-stretch:114%; font-size:clamp(19px,1.7vw,24px); }
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{ content:"+"; font-family:var(--serif); font-weight:300; font-size:32px; line-height:1; color:var(--brass); transition:transform .2s; }
.faq details[open] summary::after{ transform:rotate(45deg); }
.faq details p{ margin:0 0 22px; font-family:var(--serif); font-weight:300; font-size:clamp(18px,1.45vw,21px); line-height:1.5; max-width:62ch; }
.doc-note{ padding:22px 24px; border:1px solid var(--line); border-radius:14px; background:rgba(17,26,46,.55); max-width:62ch; }
.doc-note p:last-child{ margin-bottom:0; }

/* form */
.notice{ margin:0 var(--pad) 5vh; padding:18px 22px; border-radius:14px; border:1px solid rgba(214,165,92,.5); background:rgba(214,165,92,.1); max-width:62em; font-size:16px; line-height:1.5; }
.notice strong{ color:var(--brass); font-weight:600; }
.reg{ padding:0 var(--pad) 14vh; max-width:calc(900px + var(--pad)*2); }
.reg fieldset{ margin:0 0 5vh; padding:0; border:0; }
.reg fieldset[disabled]{ opacity:.55; }
.reg legend{ padding:0; margin-bottom:.8em; font-weight:620; font-stretch:118%; font-size:clamp(24px,2.6vw,36px); letter-spacing:-.015em; }
.reg legend .s{ font-family:var(--serif); font-weight:300; font-stretch:100%; font-size:.7em; color:var(--mist); letter-spacing:0; margin-left:.4em; }
.grid2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px 22px; }
.grid3{ display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1.3fr) minmax(0,1fr); gap:18px 22px; }
.member{ padding:18px 0; border-top:1px solid var(--line); }
.member h3{ margin:0 0 12px; font-weight:600; font-stretch:112%; font-size:16px; color:var(--mist); }
.field{ display:flex; flex-direction:column; gap:8px; }
.field label{ font-size:14px; font-weight:560; font-stretch:108%; color:var(--silver); }
.field .hint{ font-size:13px; color:var(--mist); }
.field input, .field select, .field textarea{ width:100%; min-height:48px; padding:12px 14px; border-radius:10px; border:1px solid var(--line); background:rgba(10,16,32,.7);
  color:var(--silver); font:inherit; font-size:16px; font-stretch:100%; }
.field textarea{ min-height:110px; resize:vertical; }
.field input:focus, .field select:focus, .field textarea:focus{ outline:2px solid var(--brass); outline-offset:1px; border-color:transparent; }
.check{ display:flex; gap:12px; align-items:flex-start; margin:0 0 14px; font-family:var(--serif); font-weight:300; font-size:18px; line-height:1.45; max-width:62ch; }
.check input{ margin-top:5px; width:18px; height:18px; accent-color:var(--brass); flex:none; }
.hp{ position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden; }
.reg .btn{ border:0; cursor:pointer; font-size:17px; min-height:54px; padding:0 30px; }
.reg .btn[disabled]{ opacity:.45; cursor:not-allowed; }
.form-foot{ display:flex; flex-wrap:wrap; gap:14px 24px; align-items:center; }
.form-foot p{ margin:0; font-size:14px; color:var(--mist); max-width:48ch; }

.simple{ min-height:100vh; min-height:100svh; display:flex; flex-direction:column; justify-content:center; padding:0 var(--pad); }
.simple .actions{ margin-top:5vh; }

@media (max-width:860px){
  .page-body{ grid-template-columns:1fr; }
  .toc{ position:static; flex-direction:row; flex-wrap:wrap; gap:8px 18px; margin-bottom:4vh; }
  .grid2, .grid3{ grid-template-columns:1fr; }
}
footer a{ color:inherit; text-decoration-color:rgba(220,228,242,.3); text-underline-offset:3px; }
footer a:hover{ color:var(--silver); }

/* never let anything widen the page sideways on phones */
body{ overflow-x:clip; }
.page-body > *{ min-width:0; }
