/* AshenFall. Static, no build step. */

@font-face{font-family:"Cinzel";src:url(../fonts/cinzel-900.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:"Big Shoulders Display";src:url(../fonts/big-shoulders-800.woff2) format("woff2");font-weight:800;font-style:normal;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible Next";src:url(../fonts/atkinson-next.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(../fonts/jetbrains-mono.woff2) format("woff2");font-weight:400 600;font-style:normal;font-display:swap}

:root{
  /* The Rift sets --era from 0 (all Past) to 1 (all Present). Everything below tints with it. */
  --era:.5;
  --seam:50;
  --ink-warm:#1a1109;
  --ink-cool:#061620;
  --ink:color-mix(in oklab,var(--ink-warm),var(--ink-cool) calc(var(--era) * 100%));
  --panel:color-mix(in oklab,var(--ink) 90%,var(--text) 4%);
  --panel-solid:color-mix(in oklab,var(--ink) 94%,var(--text) 3%);
  --line:color-mix(in oklab,#b8893a,#6fb4d4 calc(var(--era) * 100%));
  --hair:color-mix(in oklab,var(--line) 42%,transparent);
  --text:#ece7dc;
  --muted:#aca79b;
  --brass:#d9a441;
  --brass-hi:#f2c25e;
  --brass-lo:#a87b24;
  --on-brass:#1a1206;
  --past:#ee9a52;
  --ember:#ff9a5c;
  --rift:#cdeeff;
  --wm-past:#efe2cb;
  --wm-now:#e6f3f8;
  --concept-ground:#6d6e72;
  --ok:#8fe0ab;
  --err:#ffb4a0;
  --now:#9fd8ee;
  --ash:#b9b4aa;

  --c-warden:#e0793a;
  --c-duskblade:#a077f2;
  --c-hexweaver:#d83a63;
  --c-chronomancer:#3ec6e0;
  --c-lightbinder:#f3e2a0;
  --c-wildcaller:#4fbf7a;

  --display:"Big Shoulders Display","Arial Narrow",sans-serif;
  --brand:"Cinzel","Times New Roman",serif;
  --body:"Atkinson Hyperlegible Next",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Consolas,monospace;

  --gut:clamp(16px,4vw,48px);
  --wrap:min(1240px,100% - var(--gut) * 2);
  --bar-h:58px;
  --ease:cubic-bezier(.16,1,.3,1);
  --r:2px;
}

*,*::before,*::after{box-sizing:border-box}
html{color-scheme:dark;scroll-behavior:smooth;scroll-padding-top:calc(var(--bar-h) + 16px);scrollbar-width:thin;scrollbar-color:color-mix(in oklab,var(--line) 60%,#222) var(--ink);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--text);font:400 1.0625rem/1.6 var(--body);caret-color:var(--brass);accent-color:var(--brass);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
img,video,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
h1,h2,h3,p,ul,ol,dl,figure{margin:0}
ul,ol{padding:0;list-style:none}
::selection{background:color-mix(in oklab,var(--brass) 60%,transparent);color:var(--text)}
:focus-visible{outline:2px solid var(--brass-hi);outline-offset:3px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.skip{position:fixed;left:12px;top:-60px;z-index:100;background:var(--brass);color:var(--on-brass);padding:.6rem 1rem;font-weight:700;text-decoration:none;transition:top .2s var(--ease)}
.skip:focus{top:12px}
[hidden]{display:none!important}

/* ---------- type ---------- */
.h2 span{display:inline-block}
.h2{font:800 clamp(2.1rem,5.2vw,4rem)/.98 var(--display);text-transform:uppercase;letter-spacing:.01em;text-wrap:balance;max-width:18ch}
.h3{font:800 clamp(1.5rem,2.6vw,2.1rem)/1.05 var(--display);text-transform:uppercase;letter-spacing:.02em;text-wrap:balance}
.intro{margin-top:1.1rem;max-width:56ch;color:var(--muted);font-size:1.125rem;text-wrap:pretty}
.mono,.cap,.log,.tag,.era,.axis,.cval,.zlv,.zmeta,.foot,.st,.lt,.fk,.chip{font-family:var(--mono)}

.wrap{width:var(--wrap);margin-inline:auto}
.sec{padding-block:clamp(4.5rem,9vw,8rem) 0}
.sec:last-of-type{padding-bottom:clamp(4rem,8vw,7rem)}
.sec .intro + *{margin-top:clamp(1.75rem,3.2vw,2.75rem)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:48px;padding:0 1.5rem;border:1px solid transparent;border-radius:var(--r);font:800 1.1rem/1 var(--display);letter-spacing:.07em;text-transform:uppercase;text-decoration:none;white-space:nowrap;transition:background-color .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}
.btn-brass{background:var(--brass);color:var(--on-brass);box-shadow:0 1px 0 var(--brass-hi) inset,0 2px 6px rgb(0 0 0/.45)}
.btn-brass:hover{background:var(--brass-hi)}
.btn-brass:active{background:var(--brass-lo);transform:translateY(1px)}
.btn-ghost{border-color:color-mix(in oklab,var(--brass) 70%,transparent);color:var(--brass-hi)}
.btn-ghost:hover{background:color-mix(in oklab,var(--brass) 16%,transparent)}
.btn-sm{min-height:38px;padding:0 1rem;font-size:1rem}
.btn-wide{width:100%}
.btn[disabled],.btn[aria-busy="true"]{opacity:.65;cursor:progress}

/* ---------- top bar ---------- */
.bar{position:fixed;inset:0 0 auto 0;z-index:50;height:var(--bar-h);display:flex;align-items:center;gap:clamp(1rem,3vw,2.5rem);padding-inline:var(--gut);border-bottom:1px solid transparent;transition:background-color .3s var(--ease),border-color .3s var(--ease)}
.bar::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to bottom,color-mix(in oklab,var(--ink-cool) 78%,transparent),transparent);transition:opacity .3s var(--ease)}
.bar.is-solid{background:color-mix(in oklab,var(--ink) 92%,transparent);border-color:var(--hair);backdrop-filter:blur(8px)}
.bar.is-solid::before{opacity:0}
.bar-brand{display:inline-flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--text)}
.mark{width:20px;height:28px;color:var(--text);--ash:var(--text)}
.bar-name{font:900 1.05rem/1 var(--brand);letter-spacing:.14em;color:var(--text)}
.bar-nav{display:flex;gap:clamp(.9rem,2vw,1.8rem);margin-left:auto}
.bar-nav a{font:800 .98rem/1 var(--display);letter-spacing:.09em;text-transform:uppercase;text-decoration:none;color:color-mix(in oklab,var(--text) 82%,transparent);padding:.5rem 0;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}
.bar-nav a:hover{color:var(--text)}
.bar-nav a[aria-current="true"]{color:var(--text);border-bottom-color:var(--brass)}
.bar .btn{margin-left:0}

/* ---------- hero ---------- */
.hero{position:relative;min-height:max(100svh,640px);display:grid;grid-template-rows:1fr auto;isolation:isolate;overflow:clip}
.rift{position:absolute;inset:0;z-index:-1;overflow:hidden;cursor:ew-resize;touch-action:pan-y;user-select:none;-webkit-user-select:none;background:#07090b}
.rift-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 62%;pointer-events:none}
.rift-now{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--seam) * 1%) 0 0);pointer-events:none}
.rift-seam{position:absolute;top:0;bottom:0;left:calc(var(--seam) * 1%);width:0;pointer-events:none}
.rift-seam::before{content:"";position:absolute;top:0;bottom:0;left:-1px;width:2px;background:#e6f6ff}
.rift-seam::after{content:"";position:absolute;top:0;bottom:0;left:-26px;width:52px;background:linear-gradient(90deg,transparent,color-mix(in oklab,var(--now) 34%,transparent),transparent);mix-blend-mode:screen}
.rift-handle{position:absolute;top:50%;left:clamp(26px,calc(var(--seam) * 1%),calc(100% - 26px));translate:-50% -50%;width:52px;height:52px;display:grid;place-items:center;background:rgb(8 12 16/.88);border:1px solid var(--rift);border-radius:50%;color:#e6f6ff;cursor:ew-resize;touch-action:none;z-index:2}
.rift-handle svg{width:26px;height:26px}
.rift-handle:hover{background:var(--panel-solid)}
.rift:not(.is-touched) .rift-handle::after{content:"";position:absolute;inset:-9px;border:1px solid rgb(205 238 255/.55);border-radius:50%;animation:ping 2.4s var(--ease) infinite}
@keyframes ping{0%{transform:scale(.85);opacity:.9}100%{transform:scale(1.5);opacity:0}}
.hero::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,rgb(5 8 10/.78) 0%,rgb(5 8 10/.56) 28%,rgb(5 8 10/.14) 52%,transparent 66%),linear-gradient(to top,rgb(5 8 10/.92) 0,transparent 34%),linear-gradient(to bottom,rgb(5 8 10/.55) 0,transparent 20%)}

.hero-copy{position:relative;z-index:1;align-self:center;width:min(34rem,var(--wrap));margin-left:max(var(--gut),calc((100% - 1240px) / 2));padding-top:calc(var(--bar-h) + 2rem);padding-bottom:2rem;pointer-events:none}
.hero-copy > *{pointer-events:auto}
.wordmark{position:relative;display:block;width:fit-content;font:900 clamp(3.4rem,8.6vw,6rem)/.9 var(--brand);letter-spacing:.04em;margin-bottom:1.4rem;text-shadow:0 2px 0 rgb(0 0 0/.55),0 8px 22px rgb(0 0 0/.55)}
.wm-layer{display:block}
.wm-now{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--wmx,0px)) 0 0)}
.wm-ashen{display:block}
.wm-fall{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}
.wm-mark{width:.62em;height:.86em;margin-right:.2em;margin-bottom:.04em;filter:drop-shadow(0 2px 8px rgb(0 0 0/.55))}
.wm-then .wm-ashen{color:var(--wm-past)}
.wm-then .wm-fall,.wm-then .wm-mark{color:var(--past)}
.wm-then .wm-mark{--ash:var(--wm-past)}
.wm-now .wm-ashen{color:var(--wm-now)}
.wm-now .wm-fall,.wm-now .wm-mark{color:var(--now)}
.wm-now .wm-mark{--ash:var(--wm-now)}
.lead{font-size:clamp(1.08rem,1.9vw,1.28rem);line-height:1.55;max-width:38ch;color:#f0ebe0;text-shadow:0 1px 14px rgb(0 0 0/.75);text-wrap:pretty}

.signup-hero{margin-top:1.7rem;display:grid;grid-template-columns:1fr auto;gap:0;max-width:30rem}
.signup input[type=email],.signup select{width:100%;min-height:48px;padding:0 1rem;background:rgb(6 9 12/.82);border:1px solid color-mix(in oklab,var(--line) 70%,transparent);border-right-width:1px;border-radius:var(--r);color:var(--text);font:400 1rem/1.2 var(--body)}
.signup-hero input[type=email]{border-radius:var(--r) 0 0 var(--r);border-right:0}
.signup-hero .btn{border-radius:0 var(--r) var(--r) 0}
.signup input::placeholder{color:#8f8a7f}
.signup input:hover,.signup select:hover{border-color:var(--brass)}
.signup input:focus-visible,.signup select:focus-visible{outline:2px solid var(--brass-hi);outline-offset:1px;border-color:var(--brass)}
.signup-note{grid-column:1 / -1;margin-top:.7rem;font-size:.9rem;line-height:1.45;color:#c7c1b4;text-shadow:0 1px 8px rgb(0 0 0/.8)}
.signup-note.is-ok{color:var(--ok)}
.signup-note.is-err{color:var(--err)}
.steam-link{margin-top:1rem}

/* event log + era meter */
.strip{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(16rem,26rem);gap:clamp(1rem,3vw,3rem);align-items:end;padding:1rem var(--gut) 1.15rem;background:linear-gradient(to top,rgb(5 8 10/.86),rgb(5 8 10/.62));border-top:1px solid var(--hair)}
.log{display:flex;flex-direction:column;justify-content:flex-end;gap:.28rem;min-height:5.6rem;font-size:.8125rem;line-height:1.5;color:var(--text);overflow:hidden}
.log li{display:flex;gap:.8rem;animation:logIn .5s var(--ease) both}
.log .ts{color:#8f8b80;flex:none}
.log .sys{color:#ece6d8}
.log .past{color:var(--past)}
.log .now{color:var(--now)}
@keyframes logIn{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
.era{font-size:.75rem}
.era-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.45rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.era-val{font-weight:500;font-size:1rem;letter-spacing:.04em;color:var(--text);font-variant-numeric:tabular-nums}
.era-meter{position:relative;height:26px}
.era-meter::before{content:"";position:absolute;inset:6px 0;background:color-mix(in oklab,var(--text) 7%,transparent);-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 calc(2.5% - 2px),transparent calc(2.5% - 2px) 2.5%);mask-image:repeating-linear-gradient(90deg,#000 0 calc(2.5% - 2px),transparent calc(2.5% - 2px) 2.5%)}
.era-meter::after{content:"";position:absolute;left:0;top:6px;bottom:6px;width:calc(var(--seam,0) * 1%);background:linear-gradient(90deg,var(--past),var(--now));-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 calc(2.5% - 2px),transparent calc(2.5% - 2px) 2.5%);mask-image:repeating-linear-gradient(90deg,#000 0 calc(2.5% - 2px),transparent calc(2.5% - 2px) 2.5%);opacity:.9;pointer-events:none}
.era-range{position:absolute;inset:0;width:100%;height:100%;margin:0;background:transparent;-webkit-appearance:none;appearance:none;cursor:ew-resize;z-index:1}
.era-range::-webkit-slider-runnable-track{height:26px;background:transparent}
.era-range::-moz-range-track{height:26px;background:transparent}
.era-range::-webkit-slider-thumb{-webkit-appearance:none;width:5px;height:26px;border-radius:0;background:var(--text);border:0;box-shadow:0 0 0 1px rgb(0 0 0/.6)}
.era-range::-moz-range-thumb{width:5px;height:26px;border-radius:0;background:var(--text);border:0;box-shadow:0 0 0 1px rgb(0 0 0/.6)}
.era-range:focus-visible{outline:2px solid var(--brass-hi);outline-offset:2px}
.era-ends{display:flex;justify-content:space-between;margin-top:.35rem;letter-spacing:.1em;text-transform:uppercase}
.e-past{color:var(--past)}
.e-now{color:var(--now)}

/* ---------- shared panels and captions ---------- */
.panel{background:var(--panel);border:1px solid var(--hair);border-radius:var(--r)}
.cap{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .8rem;padding-top:.7rem;margin-top:.7rem;border-top:1px dashed var(--hair);font-size:.78rem;line-height:1.5;color:var(--muted)}
.tag{display:inline-block;padding:.08em .5em;border:1px solid currentColor;font-size:.72rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;line-height:1.6}
.tag.real{color:var(--now)}
.tag.concept{color:var(--past)}

/* ---------- world ---------- */
.world-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(1.25rem,3vw,2.75rem);align-items:start}
.zones{padding:1rem 1rem 1.1rem}
.axis{display:grid;grid-template-columns:repeat(40,1fr);margin:0 0 .5rem;font-size:.7rem;color:var(--muted);line-height:1}
.axis span{justify-self:start;transform:translateX(-2px)}
.axis span:last-child{justify-self:end;transform:none}
.zone-list{display:flex;flex-direction:column;gap:.35rem}
.zrow{--z:var(--muted);display:block;width:100%;text-align:left;padding:.7rem .75rem .75rem;background:transparent;border:1px solid transparent;border-radius:var(--r);transition:background-color .18s var(--ease),border-color .18s var(--ease)}
button.zrow:hover{background:color-mix(in oklab,var(--z) 9%,transparent)}
.zrow[aria-pressed="true"]{background:color-mix(in oklab,var(--z) 13%,transparent);border-color:color-mix(in oklab,var(--z) 55%,transparent)}
.zhead{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
.zname{font:800 1.3rem/1.1 var(--display);letter-spacing:.03em;text-transform:uppercase;color:var(--text)}
.zlv{font-size:.78rem;color:var(--muted);white-space:nowrap}
.zmeta{display:block;margin-top:.4rem;font-size:.78rem;color:var(--muted)}
.ztrack{position:relative;display:block;height:14px;margin-top:.45rem;background:color-mix(in oklab,var(--text) 6%,transparent);-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 calc(2.5% - 1px),transparent calc(2.5% - 1px) 2.5%);mask-image:repeating-linear-gradient(90deg,#000 0 calc(2.5% - 1px),transparent calc(2.5% - 1px) 2.5%)}
.zbar{position:absolute;top:0;bottom:0;left:calc((var(--from) - 1) * 2.5%);width:calc((var(--to) - var(--from) + 1) * 2.5%);background:var(--z);transform-origin:left center;transition:transform .9s steps(18,end) var(--d,0s)}
.zones .zfoot{margin-top:.9rem;padding:.8rem .75rem 0}
.zrow-planned{--z:#8a8579;cursor:default;opacity:.85}
.zrow-planned .zname{color:var(--muted)}
.zrow-planned .zbar{background:repeating-linear-gradient(135deg,color-mix(in oklab,var(--muted) 60%,transparent) 0 3px,transparent 3px 7px)}

.viewer{position:sticky;top:calc(var(--bar-h) + 1.25rem)}
.viewer-frame{position:relative;aspect-ratio:16/9;background:#05070a;border:1px solid color-mix(in oklab,var(--z,var(--muted)) 60%,transparent);border-radius:var(--r);overflow:hidden;transition:border-color .4s var(--ease)}
.viewer-frame video{width:100%;height:100%;object-fit:cover}
.vpause{position:absolute;right:.7rem;bottom:.7rem;width:40px;height:40px;display:grid;place-items:center;background:rgb(6 9 12/.82);border:1px solid color-mix(in oklab,var(--text) 40%,transparent);border-radius:50%;color:var(--text)}
.vpause svg{width:18px;height:18px}
.vpause .i-play{display:none}
.vpause[aria-pressed="true"] .i-play{display:block}
.vpause[aria-pressed="true"] .i-pause{display:none}
.vpause:hover{background:var(--panel-solid)}
.zone-blurb{margin-top:.7rem;max-width:58ch;color:var(--text)}

/* ---------- chronoshift ---------- */
.era-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.25rem,3vw,2.75rem);align-items:start}
.era-col{display:flex;flex-direction:column;gap:clamp(1.25rem,2.4vw,2rem)}
.era-col-now{padding-top:clamp(2.5rem,7vw,6rem)}
.shot img{width:100%;aspect-ratio:16/9;object-fit:cover;border:1px solid var(--hair);border-radius:var(--r)}
.facts{margin-top:.55rem;color:var(--text)}
.fk{display:inline-block;margin-right:.5rem;padding:.04em .45em;font-size:.72rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink);background:var(--past)}
.fk.now{background:var(--now)}
.rules{display:flex;flex-direction:column;gap:.55rem;padding:1rem 1.1rem;background:var(--panel);border:1px solid var(--hair);border-radius:var(--r);font-size:.9rem}
.rules li{display:flex;gap:.9rem;align-items:baseline}
.lt{flex:none;min-width:4.4rem;font-size:.72rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--text)}

/* ---------- tour ---------- */
.tour{margin-top:clamp(4.5rem,9vw,8rem)}
.tour-frame{position:relative;width:100%;aspect-ratio:21/9;max-height:78svh;background:#05070a;overflow:hidden;border-block:1px solid var(--hair)}
.tour-frame video{width:100%;height:100%;object-fit:cover}
.tour-play{position:absolute;left:50%;top:50%;translate:-50% -50%;width:92px;height:92px;display:grid;place-items:center;background:rgb(6 9 12/.78);border:1px solid var(--text);border-radius:50%;color:var(--text);transition:background-color .2s var(--ease),transform .2s var(--ease)}
.tour-play svg{width:38px;height:38px;margin-left:5px}
.tour-play:hover{background:var(--brass);color:var(--on-brass);border-color:var(--brass)}
.tour-play.is-gone{display:none}
.tour-copy{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem 2rem;margin-top:1.1rem}
.tour-copy .cap{border-top:0;margin:0;padding:0}

/* ---------- classes (meter) ---------- */
.meter{padding:.4rem 0 0}
.cls-list{display:flex;flex-direction:column}
.crow{--c:var(--muted);--n:20;border-top:1px solid var(--hair)}
.crow:first-child{border-top:0}
.chead{display:grid;grid-template-columns:minmax(9rem,15rem) minmax(0,1fr) 2.6rem 1.4rem;align-items:center;gap:clamp(.6rem,1.6vw,1.4rem);width:100%;padding:1rem clamp(.8rem,2vw,1.4rem);background:transparent;border:0;text-align:left;transition:background-color .18s var(--ease)}
.chead:hover{background:color-mix(in oklab,var(--c) 7%,transparent)}
.cname{font:800 1.5rem/1 var(--display);letter-spacing:.03em;text-transform:uppercase;color:var(--text)}
.cname small{display:block;margin-top:.3rem;font:400 .76rem/1 var(--mono);letter-spacing:.08em;color:var(--c)}
.croles{display:block;margin-top:.5rem;font:400 .72rem/1.2 var(--mono);font-style:normal;letter-spacing:.03em;text-transform:none;color:var(--muted)}
.ctrack{position:relative;display:block;height:28px;background:color-mix(in oklab,var(--text) 6%,transparent);-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 calc(5% - 3px),transparent calc(5% - 3px) 5%);mask-image:repeating-linear-gradient(90deg,#000 0 calc(5% - 3px),transparent calc(5% - 3px) 5%)}
.cbar{position:absolute;top:0;bottom:0;left:0;width:calc(var(--n) * 5% - 2px);background:var(--c);transform-origin:left center;transition:transform 1s steps(20,end) var(--d,0s)}
.cval{font-weight:500;font-size:1.05rem;text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}
.cchev{width:20px;height:20px;color:var(--muted);transition:rotate .3s var(--ease)}
.chead[aria-expanded="true"] .cchev{rotate:180deg;color:var(--c)}
.cdetail{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s var(--ease)}
.js .cdetail{grid-template-rows:0fr}
.js .chead[aria-expanded="true"] + .cdetail{grid-template-rows:1fr}
.cin{overflow:hidden;min-height:0;padding:0 clamp(.8rem,2vw,1.4rem)}
.chead[aria-expanded="true"] + .cdetail .cin{padding-bottom:1.3rem}
.ctag{font-size:1.05rem;color:var(--text);margin-bottom:.9rem}
.cfacts{display:flex;flex-wrap:wrap;gap:.6rem 2.4rem;margin-bottom:.9rem}
.cfacts dt{font:400 .72rem/1 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:.3rem}
.cfacts dd{margin:0}
.specs{display:flex;flex-wrap:wrap;gap:.5rem}
.specs li{padding:.35rem .75rem;border:1px solid color-mix(in oklab,var(--c) 55%,transparent);border-radius:var(--r);font-size:.9rem;color:var(--text)}
.specs b{font:800 1rem/1 var(--display);letter-spacing:.05em;text-transform:uppercase;color:var(--c);margin-right:.5rem}
.foot{padding:.9rem clamp(.8rem,2vw,1.4rem) 1rem;border-top:1px solid var(--hair);font-size:.78rem;color:var(--muted)}

/* ---------- races ---------- */
.races-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(1.25rem,3vw,2.75rem);align-items:start}
.viewer-race{position:static}
.race-frame{background:var(--concept-ground);border:1px solid var(--hair);border-radius:var(--r);overflow:hidden}
.race-frame img{width:100%;aspect-ratio:900/788;object-fit:cover;background:var(--concept-ground);transition:opacity .25s var(--ease)}
.race-frame img.is-swap{opacity:0}
.roster{padding:.35rem}
.rrow{display:grid;grid-template-columns:1fr;gap:.2rem;width:100%;text-align:left;padding:.85rem 1rem;background:transparent;border:1px solid transparent;border-radius:var(--r);transition:background-color .18s var(--ease),border-color .18s var(--ease)}
.rrow:hover{background:rgb(255 255 255/.04)}
.rrow[aria-pressed="true"]{background:color-mix(in oklab,var(--brass) 12%,transparent);border-color:color-mix(in oklab,var(--brass) 55%,transparent)}
.rname{font:800 1.45rem/1 var(--display);letter-spacing:.03em;text-transform:uppercase;color:var(--text)}
.rwork{font:400 .74rem/1.3 var(--mono);letter-spacing:.06em;color:var(--muted)}
.rdesc{color:var(--muted);font-size:.9rem}

/* ---------- build log ---------- */
.logbook{padding:1.1rem clamp(.9rem,2vw,1.6rem) 1.4rem}
.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.1rem;padding-bottom:1rem;border-bottom:1px dashed var(--hair)}
.chip{padding:.5rem .9rem;background:transparent;border:1px solid var(--hair);border-radius:var(--r);font-size:.8rem;letter-spacing:.05em;color:var(--muted);transition:background-color .15s,color .15s,border-color .15s}
.chip b{font-weight:500;margin-left:.35rem;color:inherit}
.chip:hover{color:var(--text);border-color:var(--brass)}
.chip[aria-pressed="true"]{background:var(--brass);border-color:var(--brass);color:var(--on-brass)}
.entries{display:flex;flex-direction:column}
.entries li{display:flex;gap:1rem;align-items:baseline;padding:.62rem 0;border-bottom:1px solid color-mix(in oklab,var(--hair) 55%,transparent);color:var(--text)}
.entries li:last-child{border-bottom:0}
.st{flex:none;width:6.6rem;font-size:.72rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase}
.st-built{color:var(--ok)}
.st-doing{color:var(--ember)}
.st-planned{color:var(--now)}

/* ---------- join + faq ---------- */
.sec-join{padding-bottom:clamp(4rem,8vw,7rem)}
.join-grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(1.5rem,4vw,4rem);align-items:start}
.price{margin-top:1.4rem;display:flex;gap:1rem;align-items:baseline;color:var(--text)}
.signup-join{padding:clamp(1.1rem,2.4vw,1.8rem);display:grid;gap:1.1rem}
.field label{display:block;margin-bottom:.4rem;font:800 .98rem/1 var(--display);letter-spacing:.08em;text-transform:uppercase}
.opt{margin-left:.4rem;font:400 .72rem/1 var(--mono);letter-spacing:.04em;text-transform:none;color:var(--muted)}
.signup-join select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6' fill='none' stroke='%23aca79b' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center;background-size:20px;padding-right:2.4rem}
.signup-join select option{background:var(--panel-solid);color:var(--text)}
.signup-join .signup-note{margin-top:0;color:var(--muted);text-shadow:none}
.signup-join .signup-note.is-ok{color:var(--ok)}
.signup-join .signup-note.is-err{color:var(--err)}
.faq-wrap{margin-top:clamp(3.5rem,7vw,6rem)}
.faq{margin-top:1.2rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(1.5rem,4vw,4rem)}
.faq details{border-top:1px solid var(--hair)}
.faq details:nth-last-child(-n+2){border-bottom:1px solid var(--hair)}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.05rem 0;list-style:none;cursor:pointer;font:800 1.2rem/1.15 var(--display);letter-spacing:.03em;text-transform:uppercase}
.faq summary::-webkit-details-marker{display:none}
.faq summary svg{width:20px;height:20px;flex:none;color:var(--muted);transition:rotate .3s var(--ease)}
.faq summary:hover{color:var(--text)}
.faq details[open] summary svg{rotate:180deg;color:var(--brass-hi)}
.faq details p{padding:0 0 1.2rem;max-width:52ch;color:var(--text)}

/* ---------- footer ---------- */
.foot-bar{border-top:1px solid var(--hair);padding:2rem 0 2.4rem;color:var(--muted);font-size:.9rem}
.foot-in{display:grid;grid-template-columns:auto 1fr auto;gap:1rem 2.5rem;align-items:center}
.foot-in a:not(.bar-brand){text-decoration-thickness:1px;text-underline-offset:3px}
.foot-in a:not(.bar-brand):hover{color:var(--text)}

/* ---------- reveal ---------- */
.js [data-reveal]{transition:opacity .8s var(--ease),translate .8s var(--ease)}
.js [data-reveal].pre{opacity:0;translate:0 18px}
.js .zones.pre .zbar,.js .meter.pre .cbar{transform:scaleX(0)}
.js .entries li{transition:opacity .5s var(--ease),translate .5s var(--ease)}
.js .logbook.pre .entries li{opacity:0;translate:-8px 0}

/* ---------- ash stream in the mark ---------- */
.mark .ash-stream,.wm-mark .ash-stream{animation:ashFall 1.8s linear infinite}
@keyframes ashFall{to{stroke-dashoffset:-7.6}}

/* ---------- responsive ---------- */
@media (max-width:1040px){
  .bar-nav{display:none}
  .bar .btn{margin-left:auto}
  .world-grid,.races-grid,.join-grid{grid-template-columns:1fr}
  .viewer{position:static}
  .viewer-race{order:-1}
  .era-grid{grid-template-columns:1fr}
  .era-col-now{padding-top:0}
  .faq{grid-template-columns:1fr}
  .faq details:nth-last-child(2){border-bottom:0}
}
@media (max-width:760px){
  .hero{min-height:max(100svh,720px)}
  .hero::before{background:linear-gradient(to top,rgb(5 8 10/.96) 0,rgb(5 8 10/.9) 40%,rgb(5 8 10/.25) 60%,transparent 76%),linear-gradient(to bottom,rgb(5 8 10/.55) 0,transparent 16%)}
  .hero-copy{align-self:end;width:var(--wrap);margin-left:var(--gut);padding-top:0;padding-bottom:1rem}
  .wordmark{font-size:clamp(2.7rem,13vw,3.8rem);margin-bottom:.8rem}
  .wm-fall{justify-content:flex-start}
  .lead{max-width:none}
  .strip{grid-template-columns:1fr;gap:.9rem;padding-block:.8rem 1rem}
  .log{min-height:4.4rem}
  .log li:nth-child(n+4){display:none}
  .rift-handle{top:30%}
  .signup-hero{grid-template-columns:1fr;gap:.55rem}
  .signup-hero input[type=email]{border-radius:var(--r);border-right:1px solid color-mix(in oklab,var(--line) 70%,transparent)}
  .signup-hero .btn{border-radius:var(--r);width:100%}
  .chead{grid-template-columns:minmax(0,1fr) 2rem 1.2rem;grid-template-areas:"n v c" "t t t";row-gap:.7rem}
  .chead .cname{grid-area:n}
  .chead .cval{grid-area:v}
  .chead .cchev{grid-area:c}
  .chead .ctrack{grid-area:t}
  .foot-in{grid-template-columns:1fr}
  .tour-frame{aspect-ratio:16/10}
  .tour-play{width:76px;height:76px}
  .entries li{flex-direction:column;gap:.15rem}
  .st{width:auto}
  .zhead{flex-wrap:wrap;gap:.2rem 1rem}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .rift:not(.is-touched) .rift-handle::after{display:none}
}
@media (hover:none){
  .rift{cursor:default}
}
@media (forced-colors:active){
  .btn-brass{border-color:ButtonText}
  .rift-seam::before{background:CanvasText}
}
