/* Galaxies: a full-screen, state-based experience in the site's type, on a night sky. Same chrome as Inside AI. */
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root,html[data-theme="dark"]{--bg:#02030a;--panel:#14161f;--panel2:#20232f;--ink:#f5f5f7;--mute:#a3a8b8;--line:rgba(255,255,255,.15);--accent:#5ab0ff;--accent-ink:#04101f;--warm:#ffb45c;--pink:#ff6aa8;--violet:#a98bff;--warn:#ff6961;--good:#30d158}
*{box-sizing:border-box}
html,body{height:100%;margin:0;overflow:hidden;background:var(--bg);color:var(--ink);font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;font-feature-settings:"kern","calt","cv11";letter-spacing:-.011em;-webkit-font-smoothing:antialiased}
body{background:var(--glow),var(--bg);overscroll-behavior:none}
h1,h2,h3,p,ol,ul{margin:0}
button,input,select{font:inherit;color:inherit;letter-spacing:inherit}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:8px;top:-60px;z-index:60;background:var(--accent);color:var(--accent-ink);padding:10px 14px;border-radius:10px;text-decoration:none;font-weight:600}.skip:focus{top:8px}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:8px}
.num,output,.vec{font-variant-numeric:tabular-nums}

/* chrome */
.top{position:fixed;inset:0 0 auto 0;height:56px;z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}
.home{display:inline-flex;align-items:center;gap:6px;color:var(--mute);text-decoration:none;font-size:.82rem;font-weight:500;min-height:44px}.home:hover{color:var(--ink)}
.prog{display:flex;align-items:center;gap:12px;font-size:.78rem;font-weight:600;letter-spacing:.12em}
.prog__n{color:var(--mute);font-variant-numeric:tabular-nums;letter-spacing:.06em}
.top__r{justify-self:end;display:flex;gap:4px}
.ibtn{display:inline-grid;place-items:center;min-width:44px;min-height:44px;border:0;border-radius:12px;background:transparent;color:var(--mute);cursor:pointer}.ibtn:hover{color:var(--ink);background:var(--panel)}
.ibtn.sm{min-width:40px;min-height:40px;background:var(--panel);color:var(--ink);border:1px solid var(--line);font-weight:600;font-size:.82rem;padding:0 10px;border-radius:10px}
.foot{position:fixed;inset:auto 0 0 0;height:72px;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 max(16px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(16px,env(safe-area-inset-left))}
.hint{flex:1;text-align:center;color:var(--mute);font-size:.85rem;min-height:1em}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-weight:600;font-size:.95rem;cursor:pointer;transition:background .15s,transform .15s,border-color .15s}
.btn:hover{border-color:var(--mute)}.btn:active{transform:scale(.98)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08)}
.btn.ghost{background:transparent}.btn[disabled]{opacity:.38;cursor:not-allowed}
.btn[aria-pressed="true"]:not(.primary){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.btn.huge{min-height:60px;padding:0 38px;font-size:1.1rem}.btn.big-btn{min-height:56px;padding:0 26px;font-size:1.05rem}.btn.small{min-height:40px;font-size:.85rem;padding:0 16px}
.btn kbd{font:600 .68rem/1 inherit;padding:3px 6px;border-radius:5px;border:1px solid var(--line);color:var(--mute)}
.link{background:none;border:0;color:var(--accent);font-weight:600;cursor:pointer;min-height:44px;padding:0 6px;font-size:.88rem}.link:hover{text-decoration:underline}
.link.pulse{animation:pulse 1.6s ease-in-out 3}
@keyframes pulse{50%{opacity:.45}}
.nojs{position:fixed;inset:80px 24px auto;text-align:center}

/* stage and scene transitions */
#stage{position:fixed;inset:56px 0 72px 0;outline:0}
.scene{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;padding:8px max(20px,env(safe-area-inset-left)) 24px;opacity:0;transition:opacity .35s ease,transform .45s cubic-bezier(.2,.8,.2,1);display:flex}
.scene.in-fwd{transform:translateY(22px)}.scene.in-back{transform:translateY(-22px)}.scene.in{opacity:1;transform:none}
.scene.out-fwd{opacity:0;transform:translateY(-22px);transition-duration:.18s}.scene.out-back{opacity:0;transform:translateY(22px);transition-duration:.18s}
.wrap{margin:auto;width:100%;max-width:1180px;padding:8px 0;outline:0}
.wrap.center{display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px}
.wrap.swap{animation:swapin .5s cubic-bezier(.2,.8,.2,1)}@keyframes swapin{from{opacity:0;transform:translateY(14px)}}

/* type */
.kicker{font-size:.75rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.giant{font-size:clamp(2.2rem,7.2vw,5.8rem);line-height:1.02;font-weight:650;letter-spacing:-.035em;max-width:18ch;text-wrap:balance}
.big{font-size:clamp(1.8rem,4.6vw,3.5rem);line-height:1.06;font-weight:650;letter-spacing:-.03em;text-wrap:balance;max-width:22ch}.big.sm{font-size:clamp(1.4rem,3vw,2.2rem);max-width:26ch}.big.narrow{max-width:16ch}
.center .big,.center .giant{margin-inline:auto}
.lede{font-size:clamp(1.05rem,2vw,1.5rem);line-height:1.4;max-width:32ch;color:var(--ink);text-wrap:balance}
.sub{font-size:1.05rem;line-height:1.5;color:var(--mute);max-width:44ch;text-wrap:pretty}.sub.small,.small{font-size:.9rem}.dim{color:var(--mute)}.center .sub{margin-inline:auto}
.reveal{font-size:clamp(1.05rem,1.8vw,1.35rem);font-weight:600;line-height:1.4;max-width:40ch;padding-left:16px;border-left:3px solid var(--accent);text-align:left;animation:swapin .5s both;text-wrap:balance}
.center .reveal{text-align:center;border-left:0;padding:0;color:var(--ink)}
.reveal[hidden],[hidden]{display:none!important}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:center}
.key{display:flex;gap:16px;flex-wrap:wrap;align-items:center;font-size:.82rem;color:var(--mute)}.kx{white-space:nowrap}
.mk{vertical-align:-2px}

/* choices */
.chips{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:760px}.chips.col{flex-direction:column;align-items:stretch;max-width:560px;width:100%}
.chip{min-height:52px;padding:12px 22px;border-radius:16px;border:1px solid var(--line);background:var(--panel);font-weight:550;font-size:1.02rem;cursor:pointer;text-align:left}.chip:hover{border-color:var(--mute)}
.chip[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.fb,.feedback{min-height:3em;max-width:46ch;color:var(--ink);font-size:1.05rem;line-height:1.5}
/* menu */
dialog{border:1px solid var(--line);border-radius:22px;background:var(--panel);color:var(--ink);padding:0;width:min(520px,92vw);max-height:86vh}dialog.wide{width:min(860px,94vw)}dialog::backdrop{background:rgba(0,0,0,.6)}
.menu__in{padding:20px;display:flex;flex-direction:column;gap:12px;max-height:86vh}.menu__in h2{font-size:1.2rem}
.menu__item{display:flex;gap:14px;width:100%;min-height:46px;align-items:center;padding:0 12px;border:0;border-radius:12px;background:transparent;cursor:pointer;text-align:left;font-weight:550}.menu__item:hover:not([disabled]){background:var(--panel2)}.menu__item[disabled]{opacity:.35;cursor:not-allowed}.menu__item[aria-current]{color:var(--accent)}.menu__n{font-variant-numeric:tabular-nums;color:var(--mute);width:2ch}
.menu__row{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* ---- finish: depth, glass and light. Everything above stays the layout; this layer is the look. ---- */
:root,html[data-theme="dark"]{--glass:rgba(22,26,40,.55);--glass-hi:rgba(255,255,255,.08);--shadow:0 24px 60px -24px rgba(0,0,0,.8),0 2px 8px rgba(0,0,0,.35);--glow2:rgba(169,139,255,.12);--glow3:rgba(255,106,168,.06)}
body{background:radial-gradient(70rem 40rem at 50% -14%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%),radial-gradient(46rem 32rem at 100% 100%,var(--glow2),transparent 70%),radial-gradient(40rem 30rem at 0% 90%,var(--glow3),transparent 70%),var(--bg)}
.top{background:linear-gradient(var(--bg),color-mix(in srgb,var(--bg) 0%,transparent));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.foot{background:linear-gradient(0deg,var(--bg) 40%,color-mix(in srgb,var(--bg) 0%,transparent))}
.prog__name{background:linear-gradient(90deg,var(--ink),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.btn{background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:inset 0 1px 0 var(--glass-hi)}
.btn.primary{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 84%,#fff),var(--accent));border-color:color-mix(in srgb,var(--accent) 70%,#000);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 10px 26px -10px var(--accent)}
.btn.primary:hover{filter:none;transform:translateY(-1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 14px 30px -10px var(--accent)}
.ibtn.sm{background:var(--glass);box-shadow:inset 0 1px 0 var(--glass-hi)}
.giant,.big{background:linear-gradient(180deg,var(--ink) 55%,color-mix(in srgb,var(--ink) 72%,var(--accent)));-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:.06em}
.alarm .big{background:none;color:var(--warn)}.verdict .bad{background:none}
.kicker{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}
.panel,.plot,details,.chip,.card{background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:inset 0 1px 0 var(--glass-hi),var(--shadow)}
.chip,.card{transition:transform .18s cubic-bezier(.2,.8,.2,1),border-color .18s,box-shadow .18s}.chip:hover{transform:translateY(-2px)}
.chip[aria-pressed="true"]{background:color-mix(in srgb,var(--accent) 14%,var(--glass))}
@keyframes rise{from{opacity:0;transform:translateY(18px) scale(.97)}}
.reveal{background:var(--glass);border-radius:0 16px 16px 0;padding:12px 18px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.center .reveal{border-radius:18px;padding:14px 22px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}
.stepper li{background:var(--glass)}.stepper li[aria-current]{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 84%,#fff),var(--accent))}
.seg{background:var(--glass);box-shadow:inset 0 1px 0 var(--glass-hi)}.seg button[aria-pressed="true"],.seg button[aria-selected="true"]{box-shadow:0 4px 12px -4px rgba(0,0,0,.5)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.panel,.plot,details,.chip,.card,.btn,.reveal{background:var(--panel)}}
@media (prefers-reduced-transparency:reduce){.panel,.plot,details,.chip,.card,.btn,.reveal,.top{background:var(--panel);-webkit-backdrop-filter:none;backdrop-filter:none}}

/* ---- photographs: real pictures in rounded frames, with overlays that show what a system is doing ---- */
.photo{position:relative;margin:0;overflow:hidden;border-radius:26px;background:var(--panel2);box-shadow:var(--shadow),0 0 0 1px var(--line);isolation:isolate}
.photo>.ph{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;user-select:none}
.photo figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 16px 12px;font-size:.78rem;font-weight:600;color:#fff;text-align:left;background:linear-gradient(transparent,rgba(0,0,0,.72));z-index:3}
.photo.op{width:min(560px,88vw);aspect-ratio:16/10;animation:rise .8s cubic-bezier(.2,.8,.2,1) both}
.photo.op .ph{animation:kb 9s ease-out both}
/* credits */
.credbox{flex:none}.credbox summary{font-size:.88rem}
#credList{max-height:34vh;overflow-y:auto;padding-bottom:8px}
.credits{list-style:none;padding:0;margin:0;display:grid;gap:10px;font-size:.78rem;line-height:1.4}
.credits li{display:flex;gap:10px;align-items:center}.credits img{width:52px;height:38px;object-fit:cover;border-radius:8px;flex:none}
.credits a{color:var(--accent);font-weight:600}

@media (max-width:860px){.photo.op{width:min(560px,92vw)}.pair figcaption{font-size:.72rem}}
@media (max-width:520px){.evid{grid-template-columns:1fr}.mosaic{gap:6px}.photo.op{aspect-ratio:4/3}.ov-chat .bub{font-size:.8rem}.earthbg{bottom:-60vmin}}
@media (max-height:560px) and (orientation:landscape){.photo.op{width:min(340px,50vw)}.photo.robo{width:240px}.apartstage{width:320px}}
@media (prefers-reduced-motion:reduce){.photo .ph,.earthbg .ph{animation:none!important}.ov-face .mesh{stroke-dashoffset:0}}
@media (forced-colors:active){.ov,.shards,.earthbg{display:none}}

/* ---- getting around: the scene rail, the chapters menu, key ideas, chapter banners, the recap ---- */
.prog__n{border:0;background:none;color:var(--mute);font:inherit;letter-spacing:.06em;font-variant-numeric:tabular-nums;min-height:40px;padding:0 8px;border-radius:10px;cursor:pointer}.prog__n:hover{color:var(--ink);background:var(--panel)}
.prog__ch{color:var(--mute);font-weight:600;letter-spacing:.02em;white-space:nowrap;font-size:.76rem;min-width:13ch}
.rail{display:flex;align-items:center}
.rail__s{position:relative;width:11px;height:28px;padding:0;border:0;background:none;cursor:pointer}
.rail__s::before{content:"";position:absolute;left:2px;right:2px;top:12px;height:4px;border-radius:2px;background:var(--line);transition:background .3s,transform .3s}
.rail__s.gap{margin-left:7px}
.rail__s.seen::before{background:color-mix(in srgb,var(--accent) 55%,var(--line))}
.rail__s.now::before{background:linear-gradient(90deg,var(--accent),var(--violet));transform:scaleY(1.9);box-shadow:0 0 10px var(--accent)}
.rail__s:hover::before{background:var(--ink)}
.rail__s:focus-visible{outline-offset:0}
.chapters{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-auto-rows:max-content;align-content:start;gap:12px;overflow-y:auto;min-height:0;padding:2px}
.chap{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--panel2)}
.chap.here{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.chap__art{height:76px;overflow:hidden;background:var(--panel);display:grid;place-items:center}
.chap__art img,.chap__art svg{width:100%;height:100%;object-fit:cover;display:block}
.chap__art:has(.creature){display:flex;justify-content:center;gap:0}.chap__art .creature{width:auto;height:150%;flex:none;margin:-8% -4% 0}
.chap__body{padding:10px 8px 8px}.chap h3{font-size:1rem;padding:0 8px 4px}.chap h3 small{display:block;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:700}
.chap ol{list-style:none;padding:0;margin:0}
.menu__item{min-height:40px;gap:10px;font-size:.9rem}.menu__item .tick{margin-left:auto;color:var(--good);font-weight:700}
.menu__item[aria-current]{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.menu__head{display:flex;flex-direction:column;gap:2px}
.keys{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.78rem;color:var(--mute)}.keys kbd{display:inline-block;min-width:22px;padding:2px 6px;margin-right:4px;border-radius:6px;border:1px solid var(--line);font:600 .72rem/1.4 inherit;text-align:center;color:var(--ink);background:var(--panel2)}
.ideas{margin:0;display:grid;grid-auto-rows:max-content;gap:8px;overflow-y:auto;min-height:0}
.idea{padding:10px 14px;border-radius:14px;background:var(--panel2)}.idea dt{font-weight:700}.idea dd{margin:2px 0 0;color:var(--mute);font-size:.9rem;line-height:1.4}.idea .link{min-height:32px;padding:0;font-size:.82rem}
.idea.later dt::after{content:"coming up";margin-left:8px;font-size:.66rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);border:1px solid var(--line);border-radius:999px;padding:1px 7px;vertical-align:2px}
.chtoast{position:fixed;left:50%;top:70px;z-index:30;display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 26px;border-radius:18px;background:var(--glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:inset 0 1px 0 var(--glass-hi),var(--shadow);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);transform:translate(-50%,-14px);opacity:0;pointer-events:none;transition:opacity .4s,transform .5s cubic-bezier(.2,.8,.2,1)}
.chtoast.on{opacity:1;transform:translate(-50%,0)}
.chtoast small{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.chtoast b{font-size:1.15rem;letter-spacing:-.01em}
.recap{width:min(620px,100%);padding:18px 20px;border-radius:22px;background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:inset 0 1px 0 var(--glass-hi),var(--shadow);text-align:left;display:flex;flex-direction:column;gap:10px;animation:swapin .6s both}
.recap ol{list-style:none;padding:0;margin:0;display:grid;gap:8px}.recap li{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:baseline;line-height:1.4}.recap .num{font-weight:700;color:var(--accent);font-size:.8rem}
@media (max-width:1060px){.prog__ch{display:none}}
@media (max-width:520px){.prog__name{display:none}.rail__s{width:8px}.rail__s.gap{margin-left:4px}.chapters{grid-template-columns:1fr}.chap__art{height:56px}}
@media (max-width:400px){.rail{display:none}}
@media (prefers-reduced-transparency:reduce){.chtoast,.recap{background:var(--panel);-webkit-backdrop-filter:none;backdrop-filter:none}}


/* ---- Galaxies: the stage, panels and scenes ---- */
body{background:radial-gradient(80rem 50rem at 70% -10%,rgba(90,120,255,.14),transparent 70%),radial-gradient(60rem 40rem at 0% 110%,rgba(255,106,168,.08),transparent 70%),var(--bg)}
body::before{content:"";position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(1px 1px at 12% 22%,rgba(255,255,255,.7),transparent),radial-gradient(1px 1px at 72% 18%,rgba(255,255,255,.5),transparent),radial-gradient(1.2px 1.2px at 38% 72%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 88% 64%,rgba(200,220,255,.6),transparent),radial-gradient(1px 1px at 55% 40%,rgba(255,255,255,.35),transparent),radial-gradient(1px 1px at 22% 88%,rgba(255,230,200,.5),transparent);opacity:.8}
.panel{padding:20px;border:1px solid var(--line);border-radius:22px;display:flex;flex-direction:column;gap:12px;min-width:0}
.framed{position:relative;border-radius:24px;overflow:hidden;background:#02030a;box-shadow:0 0 0 1px var(--line),var(--shadow)}
.sky{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;outline:0}.sky:active{cursor:grabbing}.sky:focus-visible{box-shadow:inset 0 0 0 3px var(--accent)}
.stage__hud{position:absolute;left:12px;top:12px;z-index:3;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.stage__hud .dim{background:rgba(0,0,0,.45);padding:4px 10px;border-radius:999px}
.row.left{justify-content:flex-start}
.ctl{display:grid;grid-template-columns:96px minmax(0,1fr) 64px;gap:10px;align-items:center;font-size:.88rem;font-weight:600;min-height:40px}.ctl input[type=range]{width:100%;accent-color:var(--accent);height:28px}.ctl output{font-weight:700;color:var(--mute);font-size:.8rem;text-align:right}
.seg.wrapseg{flex-wrap:wrap;border-radius:18px}
.sw{display:inline-flex;align-items:center;gap:7px;font-size:.88rem;font-weight:550;min-height:36px}.sw input{width:20px;height:20px;accent-color:var(--accent)}
.chip.sm{min-height:44px;padding:9px 16px;font-size:.92rem}
.chip.nope{animation:shake .4s}@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.desc{color:var(--mute);line-height:1.45;min-height:3em}
.split2{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.75fr);gap:20px;align-items:stretch;height:100%;max-height:calc(100dvh - 150px);min-height:500px}
.stagebox{min-height:340px}.side{overflow-y:auto}
.trail{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}

/* floating labels on a galaxy */
.glabels{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.glabel{position:absolute;left:0;top:0;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:.74rem;font-weight:650;color:#fff;padding:3px 9px 3px 4px;border-radius:999px;background:rgba(10,14,28,.62);border:1px solid rgba(255,255,255,.18);margin:-10px 0 0 -4px;transition:opacity .3s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.glabel i{width:8px;height:8px;border-radius:50%;background:var(--warm);box-shadow:0 0 8px var(--warm)}.glabel.blue i{background:#8fc2ff;box-shadow:0 0 8px #8fc2ff}.glabel.pink i{background:var(--pink);box-shadow:0 0 8px var(--pink)}.glabel.dust i{background:#6b5242;box-shadow:none;border:1px solid #c9a98d}

/* 00 deep field */
.deep{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:22px;align-items:center}
.viewer{position:relative;overflow:hidden;aspect-ratio:1.1;max-height:calc(100dvh - 170px);cursor:grab;touch-action:none;outline:0}.viewer:focus-visible{box-shadow:0 0 0 3px var(--accent)}
.viewer img{width:100%;height:100%;object-fit:cover;transform-origin:center;transition:transform .9s cubic-bezier(.2,.8,.2,1);user-select:none}
.viewer:active img{transition:none}
.vw__hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);font-size:.74rem;font-weight:600;color:#fff;background:rgba(0,0,0,.55);padding:5px 12px;border-radius:999px;pointer-events:none;animation:fadeout 1s 5s forwards}@keyframes fadeout{to{opacity:0}}
.deep__side{display:flex;flex-direction:column;gap:14px}.vw__btns{display:flex;gap:8px}
.moon{display:flex;gap:12px;align-items:center}.moon svg{width:96px;flex:none;filter:drop-shadow(0 0 22px rgba(255,255,255,.18))}.moon span{font-size:.82rem;color:var(--mute)}

/* 01 address */
.addr{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.8fr);grid-template-rows:1fr auto;gap:18px 28px;align-items:center;min-height:100%}
.addr__stage{position:relative;aspect-ratio:1;width:min(100%,620px,calc(100dvh - 260px));justify-self:center}
.lvl{position:absolute;inset:0;display:grid;place-items:center;transition:transform 1s cubic-bezier(.3,.7,.2,1),opacity .9s}
.lvl>img,.lvl>svg{width:100%;height:100%;object-fit:contain;display:block}.lvl>img.round{width:78%;height:78%;filter:drop-shadow(0 0 40px rgba(90,160,255,.35))}
.lvl.from-in{transform:scale(2.6);opacity:0}.lvl.from-out{transform:scale(.25);opacity:0}.lvl.to-out{transform:scale(.18);opacity:0}.lvl.to-in{transform:scale(2.6);opacity:0}
.here{position:absolute;left:50%;top:73%;display:flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;color:#fff;background:rgba(0,0,0,.55);padding:3px 10px 3px 4px;border-radius:999px;transform:translate(-8px,-50%)}.here i{width:14px;height:14px;border-radius:50%;border:2px solid #7dffae;box-shadow:0 0 12px #7dffae;animation:pulse 1.6s infinite}
.addr__info{display:flex;flex-direction:column;gap:12px}
.inset{display:flex;gap:12px;align-items:center}.inset .photo{width:150px;aspect-ratio:3/2;flex:none;border-radius:14px}
.crumbs{grid-column:1/-1;list-style:none;padding:0;margin:0;display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.crumbs button{border:1px solid var(--line);background:var(--glass);color:var(--mute);border-radius:999px;padding:0 14px;min-height:38px;font-weight:600;font-size:.82rem;cursor:pointer}
.crumbs li+li::before{content:"›";color:var(--mute);margin-right:6px}.crumbs li{display:flex;align-items:center}
.crumbs button.on{color:var(--ink)}.crumbs button[aria-current]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}

/* 02 builder */
.bld{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.7fr);gap:20px;height:100%;max-height:calc(100dvh - 150px);min-height:520px}
.bld__stage{min-height:360px}.bld__panel{overflow-y:auto}

/* 03 sorting */
.sort{display:flex;flex-direction:column;gap:16px}.sort__head{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.gcard{border:1px solid var(--line);border-radius:20px;overflow:hidden;display:flex;flex-direction:column}
.gcard .photo{aspect-ratio:4/3;border-radius:0;box-shadow:none}
.gcard__b{padding:12px;display:flex;flex-direction:column;gap:8px}.pick{display:flex;flex-wrap:wrap;gap:6px}.pick .chip{min-height:38px;padding:6px 12px;font-size:.82rem;border-radius:12px}
.pick .chip[disabled]{opacity:.35}.gcard.done{border-color:color-mix(in srgb,var(--good) 60%,transparent)}.gcard.done .chip[aria-pressed="true"]{border-color:var(--good);box-shadow:inset 0 0 0 1px var(--good)}
.gfb{min-height:2.8em;line-height:1.4}
.fork{display:flex;flex-direction:column;gap:12px;padding:18px;border-radius:22px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);background:var(--glass)}
.forkd{position:relative;aspect-ratio:600/220;width:min(760px,100%);margin:0 auto}.forkd svg{position:absolute;inset:0;width:100%;height:100%}
.fk{position:absolute;display:flex;flex-direction:column;align-items:center;gap:4px;transform:translate(-50%,-50%);font-size:.76rem;font-weight:700}.fk img{width:clamp(56px,11vw,96px);aspect-ratio:1;object-fit:cover;border-radius:50%;box-shadow:0 0 0 2px var(--line),0 0 24px rgba(90,176,255,.25)}
.fk.e{left:10%;top:50%}.fk.s{left:80%;top:22%}.fk.b{left:80%;top:78%}.fk.i{left:42%;top:84%}

/* 04 to 06 */
.q{display:flex;flex-direction:column;gap:8px}
.halo{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity 1s;background:radial-gradient(circle at 50% 50%,rgba(169,139,255,.5),rgba(169,139,255,.22) 34%,rgba(169,139,255,.08) 56%,transparent 70%);mix-blend-mode:screen}.halo.on{opacity:1}
.chartbox{height:190px;border-radius:16px;background:rgba(0,0,0,.35);border:1px solid var(--line)}.chartbox canvas{width:100%;height:100%;display:block}
.orbits canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.stage__hud .num{background:rgba(0,0,0,.45);padding:4px 10px;border-radius:999px;font-weight:700}

/* 07 collision */
.phase{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:3;max-width:min(560px,90%);text-align:center;font-weight:650;font-size:.9rem;background:rgba(6,10,24,.7);border:1px solid var(--line);padding:8px 16px;border-radius:14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.phase:empty{display:none}
.facts{margin:0;padding-left:18px;display:grid;gap:8px;font-size:.9rem;line-height:1.45;color:var(--mute)}.facts b{color:var(--ink)}
.tag{padding:1px 8px;border-radius:999px;font-weight:700;font-size:.82em}.tag.blue{background:rgba(120,170,255,.2);color:#b9d6ff}.tag.gold{background:rgba(255,190,110,.2);color:#ffd9a8}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:10px}.duo .photo{aspect-ratio:1;border-radius:16px}.duo figcaption{font-size:.7rem;padding:24px 10px 8px}

/* 08 redshift */
.rs{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.spec{height:110px;border-radius:12px;overflow:hidden;border:1px solid var(--line)}.spec canvas{width:100%;height:100%;display:block}
.expbox{height:min(42vh,360px)}.expbox canvas{width:100%;height:100%;display:block;cursor:pointer}

/* 09 lookback */
.lb{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.85fr);gap:22px;align-items:center}
.lb__photo{aspect-ratio:1.15;max-height:calc(100dvh - 170px)}
.lb input[type=range]{width:100%;accent-color:var(--accent);height:32px}
.stops{list-style:none;padding:0;margin:0;display:flex;justify-content:space-between;gap:4px;font-size:.68rem;color:var(--mute);font-weight:600}.stops li{flex:1;text-align:center;line-height:1.2}.stops li:first-child{text-align:left}.stops li:last-child{text-align:right}.stops li.on{color:var(--ink)}
.when{display:flex;flex-direction:column;gap:2px}.when b{font-size:clamp(1.5rem,3.4vw,2.4rem);letter-spacing:-.02em;background:linear-gradient(90deg,var(--accent),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent}.when p{color:var(--mute);min-height:3em}
.timeline{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;font-size:.68rem;color:var(--mute);font-weight:600}.timeline i{position:relative;height:8px;border-radius:5px;background:linear-gradient(90deg,#ff8a3d,#a98bff 40%,#5ab0ff)}.timeline i::after{content:"";position:absolute;top:-5px;right:var(--r,0);width:4px;height:18px;border-radius:2px;background:#fff;box-shadow:0 0 10px #fff}
.timeline span:last-child{text-align:right}

/* 10 final */
.fin{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.9fr);gap:22px;align-items:center}
.hero{aspect-ratio:1;max-height:calc(100dvh - 170px)}
.fin__p{display:flex;flex-direction:column;gap:14px}
.closing{display:grid;gap:2px;font-size:clamp(1.2rem,3vw,2rem);font-weight:750;letter-spacing:-.02em}.closing p:nth-child(1){color:var(--accent)}.closing p:nth-child(2){color:var(--violet)}.closing p:nth-child(3){color:var(--warm)}

@media (max-width:860px){
  .addr__stage{width:min(100%,46vh)}
  .deep,.addr,.bld,.split2,.rs,.lb,.fin{grid-template-columns:minmax(0,1fr);height:auto;max-height:none}
  .bld__stage,.stagebox{min-height:0;height:56vh}.addr__stage{max-height:46vh}.side,.bld__panel{overflow:visible}
  .viewer,.lb__photo,.hero{max-height:52vh;aspect-ratio:auto;height:52vh}
}
@media (max-width:520px){.ctl{grid-template-columns:84px minmax(0,1fr) 56px}.duo{grid-template-columns:1fr 1fr}.cards{grid-template-columns:1fr 1fr}.gcard__b{padding:8px}.pick .chip{font-size:.74rem;padding:4px 8px;min-height:34px}}
@media (prefers-reduced-motion:reduce){.lvl,.viewer img{transition:none}.here i{animation:none}}
.seg{display:inline-flex;max-width:100%;flex-wrap:wrap;padding:4px;border-radius:999px;border:1px solid var(--line);background:var(--glass);gap:2px;box-shadow:inset 0 1px 0 var(--glass-hi)}
.seg button{border:0;background:transparent;padding:0 16px;min-height:40px;border-radius:999px;font-weight:600;color:var(--mute);cursor:pointer;font-size:.88rem}.seg button:hover{color:var(--ink)}
.seg.sm button{min-height:34px;padding:0 12px;font-size:.8rem}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg);box-shadow:0 4px 12px -4px rgba(0,0,0,.6)}
.stops li{min-width:0;overflow-wrap:anywhere}.timeline span{min-width:0;overflow-wrap:anywhere}
@media (max-width:520px){.stops{font-size:.56rem}.stops li:not(.on){color:transparent}.timeline{font-size:.6rem}}
@media (max-width:860px){.top{grid-template-columns:auto 1fr auto}.home span{display:none}.prog{justify-self:center}.scene{padding-inline:16px}}
