/* duorolt.com: observatory-panel theme. Dark by default, light by choice. */
@font-face{font-family:"Outfit";font-style:normal;font-weight:100 900;font-display:swap;src:url("/assets/fonts/outfit-latin-wght-normal.woff2") format("woff2")}
@font-face{font-family:"Space Mono";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/space-mono-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Space Mono";font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/space-mono-latin-700-normal.woff2") format("woff2")}

:root{
  --bg:#05060F; --panel:#0A0D1C; --raised:#11162E; --line:#232A4A; --line-strong:#5B6BA3;
  --text:#E9EDFA; --muted:#A3ACCB; --orange:#FF7A1A; --ice:#8FD3FF;
  --link:#8FD3FF; --btn-bg:#FF7A1A; --btn-text:#05060F; --focus:#8FD3FF;
  --ok:#6FE3B8; --no:#FFB4A8; --warn:#F2C14E;
  --c1:#8FD3FF; --c2:#F2C14E; --c3:#FF7A1A; --c4:#FF7E9D; --c5:#6FE3B8;
  --sans:"Outfit",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"Space Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --radius:4px; --gutter:16px; --max:1160px; --read:68ch;
  --sky:url("/assets/img/stars.svg");
  --glow:radial-gradient(900px 480px at 82% -90px,rgba(143,211,255,.11),transparent 70%),radial-gradient(760px 420px at 4% 4%,rgba(255,122,26,.07),transparent 70%);
  --grid:rgba(91,107,163,.22); --btn-glow:0 8px 26px -10px rgba(255,122,26,.75); --plot-shadow:0 40px 90px -50px rgba(143,211,255,.5);
  color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#F4F6FC; --panel:#FFFFFF; --raised:#E9EDF8; --line:#CBD3EA; --line-strong:#6B7AAE;
  --text:#0A0F24; --muted:#434D6F; --orange:#B34700; --ice:#0A5C8F;
  --link:#0A5C8F; --focus:#0A5C8F;
  --ok:#056B49; --no:#A12318; --warn:#7A5200;
  --c1:#0A66A3; --c2:#7A5200; --c3:#B34700; --c4:#B3123F; --c5:#087A55;
  --sky:none;
  --glow:radial-gradient(900px 440px at 82% -90px,rgba(255,122,26,.10),transparent 70%),radial-gradient(820px 440px at 0% 0%,rgba(10,92,143,.08),transparent 70%);
  --grid:rgba(110,125,180,.2); --btn-glow:0 8px 22px -12px rgba(179,71,0,.65); --plot-shadow:0 30px 70px -45px rgba(10,92,143,.55);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:400 1.0625rem/1.65 var(--sans);overflow-wrap:break-word;min-width:320px}
img,svg{max-width:100%;height:auto}
a{color:var(--link);text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:2px}
.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:var(--gutter);top:-4rem;background:var(--btn-bg);color:var(--btn-text);padding:.6rem 1rem;z-index:100;border-radius:var(--radius);font-weight:600}
.skip:focus{top:.5rem}
.wrap{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
h1,h2,h3,h4{font-family:var(--sans);font-weight:650;line-height:1.12;letter-spacing:-.015em;margin:0 0 .6em;text-wrap:balance}
h1{font-size:clamp(2.05rem,5.4vw,3.55rem);letter-spacing:-.025em;font-weight:700}
h2{font-size:clamp(1.45rem,3vw,2rem)}
h3{font-size:1.25rem}
p{margin:0 0 1.1em}
.lede{font-size:clamp(1.12rem,2vw,1.3rem);color:var(--muted);max-width:56ch;line-height:1.55}
.muted{color:var(--muted)}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.75rem;padding:.6rem 1.25rem;border:1px solid transparent;border-radius:var(--radius);background:var(--btn-bg);color:var(--btn-text);font:600 1rem/1.2 var(--sans);text-decoration:none;cursor:pointer;transition:transform .12s ease,background-color .12s ease}
.btn:hover{transform:translateY(-1px);text-decoration:none}
.btn:active{transform:none}
.btn.ghost{background:transparent;color:var(--text);border-color:var(--line-strong)}
.btn.ghost:hover{border-color:var(--text)}
.btn.sm{min-height:2.4rem;padding:.4rem .9rem;font-size:.95rem}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;transform:none}

/* Panels: instrument bezel with corner ticks */
.panel{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);--tick:var(--accent,var(--ice))}
.panel::before{content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:var(--radius);
  background:
  linear-gradient(var(--tick),var(--tick)) 0 0/14px 2px no-repeat,
  linear-gradient(var(--tick),var(--tick)) 0 0/2px 14px no-repeat,
  linear-gradient(var(--tick),var(--tick)) 100% 0/14px 2px no-repeat,
  linear-gradient(var(--tick),var(--tick)) 100% 0/2px 14px no-repeat,
  linear-gradient(var(--tick),var(--tick)) 0 100%/14px 2px no-repeat,
  linear-gradient(var(--tick),var(--tick)) 0 100%/2px 14px no-repeat,
  linear-gradient(var(--tick),var(--tick)) 100% 100%/14px 2px no-repeat,
  linear-gradient(var(--tick),var(--tick)) 100% 100%/2px 14px no-repeat}
.pad{padding:clamp(1rem,3vw,1.6rem)}
[data-cat="1"]{--accent:var(--c1)}[data-cat="2"]{--accent:var(--c2)}[data-cat="3"]{--accent:var(--c3)}[data-cat="4"]{--accent:var(--c4)}[data-cat="5"]{--accent:var(--c5)}

/* Header */
.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.head-in{display:flex;align-items:center;gap:1rem;min-height:3.9rem}
.brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--text);text-decoration:none;font-weight:650;font-size:1.15rem;letter-spacing:-.01em}
.brand svg{width:2rem;height:2rem;flex:none}
.lg-ring{stroke:var(--ice)}.lg-letter{stroke:var(--text)}.lg-dot{fill:var(--orange)}
:root[data-theme="light"] .lg-ring{stroke:#0A5C8F}
.nav{margin-left:auto}
.nav ul{display:flex;gap:.25rem;list-style:none;margin:0;padding:0}
.nav a{display:block;padding:.5rem .8rem;color:var(--muted);text-decoration:none;border-radius:var(--radius);font-weight:500}
.nav a:hover,.nav a[aria-current="page"]{color:var(--text)}
.nav a[aria-current="page"]{box-shadow:inset 0 -2px 0 var(--orange)}
.theme-btn,.nav-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:var(--radius);cursor:pointer;font:500 .95rem var(--sans)}
.theme-btn:hover,.nav-toggle:hover{border-color:var(--line-strong)}
.nav-toggle{display:none;padding:0 .9rem;margin-left:auto}
.theme-btn{display:none}
.js .theme-btn{display:inline-flex}
@media (max-width:820px){
  .head-in{flex-wrap:wrap;padding-top:.4rem;padding-bottom:.4rem}
  .nav{order:5;flex:1 0 100%;margin:0}
  .nav ul{flex-wrap:wrap}
  .js .nav-toggle{display:inline-flex}
  .js .nav{position:absolute;left:0;right:0;top:100%;background:var(--bg);border-bottom:1px solid var(--line);display:none}
  .js .nav.open{display:block}
  .js .nav ul{flex-direction:column;padding:.5rem var(--gutter) 1rem}
  .js .nav a{padding:.8rem .5rem}
  .js .theme-btn{margin-left:0}
}

/* Hero */
.hero{padding:clamp(2rem,6vw,4.5rem) 0 clamp(1.5rem,4vw,3rem)}
.hero-grid{display:grid;gap:2rem;align-items:center}
@media (min-width:900px){.hero-grid{grid-template-columns:1.02fr .98fr;gap:3rem}}
.hero h1{max-width:13ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.6rem}
.plot{padding:.75rem .75rem .5rem}
.plot svg{display:block;width:100%;height:auto}
.plot-cap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;padding:.5rem .35rem .35rem;color:var(--muted);font-size:.88rem}
.plot-read{display:flex;gap:1.4rem;flex-wrap:wrap;padding:.5rem .35rem .2rem;border-top:1px solid var(--line);margin-top:.35rem}
.plot-read b{display:block;font:400 1.02rem/1.2 var(--mono);color:var(--text)}
.plot-read span{font-size:.85rem;color:var(--muted)}
.plot .orbit{fill:none;stroke:var(--line-strong);stroke-width:1}
.plot .orbit.dash{stroke-dasharray:3 5}
.plot .belt{fill:var(--muted);opacity:.55}
.plot .sun{fill:var(--orange)}
.plot .comet-path{fill:none;stroke:var(--ice);stroke-width:1.4;opacity:.75}
.plot .nucleus{fill:var(--text)}
.plot .tail-ion{stroke:var(--ice)}
.plot .tail-dust{stroke:var(--orange)}
.plot text{fill:var(--muted);font:400 11px var(--mono)}

/* Sections */
.section{padding:clamp(2rem,5vw,3.5rem) 0}
.section-h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1.5rem;margin-bottom:1.4rem}
.section-h h2{margin:0}
.section-h p{margin:0;color:var(--muted)}
.cats{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}
.cat{display:flex;flex-direction:column;gap:.5rem;padding:1.1rem 1.1rem 1.2rem;color:var(--text);text-decoration:none;transition:background-color .15s}
.cat:hover{background:var(--raised);text-decoration:none}
.cat h3{margin:.25rem 0 0;font-size:1.2rem;color:var(--text)}
.cat p{margin:0;color:var(--muted);font-size:.95rem;line-height:1.5}
.cat .num{color:var(--accent);font-size:.9rem;margin-top:auto;padding-top:.4rem}
.cat-emb{width:100%;height:84px;color:var(--accent)}
.cat-emb *{vector-effect:non-scaling-stroke}

/* Article rows (dossier list) */
.rows{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
.row{display:grid;grid-template-columns:4px 1fr;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.row-bar{background:var(--accent,var(--ice))}
.row-body{padding:.9rem 1.1rem 1rem}
.row h3{margin:0 0 .25rem;font-size:1.15rem;line-height:1.25}
.row h3 a{color:var(--text);text-decoration:none}
.row h3 a::after{content:"";position:absolute;inset:0}
.row{position:relative}
.row:hover{border-color:var(--line-strong);background:var(--raised)}
.row h3 a:hover{text-decoration:underline}
.row p{margin:0;color:var(--muted);font-size:.97rem;line-height:1.5}
.row-meta{display:flex;flex-wrap:wrap;gap:.2rem 1rem;margin-top:.5rem;font-size:.85rem;color:var(--muted)}
.row-meta .cat-tag{color:var(--accent,var(--ice));font-weight:600}
.two-col{display:grid;gap:.75rem}
@media (min-width:800px){.two-col{grid-template-columns:1fr 1fr}}

/* How we write */
.how{display:grid;gap:1.5rem;align-items:start}
@media (min-width:860px){.how{grid-template-columns:1fr 1.2fr}}
.how ul{margin:0;padding-left:1.1rem;color:var(--muted)}
.how li{margin:.35rem 0}

/* Breadcrumbs, page header */
.crumbs{font-size:.9rem;color:var(--muted);margin:1.4rem 0 .9rem}
.crumbs ol{display:flex;flex-wrap:wrap;gap:.2rem .5rem;list-style:none;margin:0;padding:0}
.crumbs li+li::before{content:"/";margin-right:.5rem;color:var(--line-strong)}
.crumbs a{color:var(--muted)}
.page-head{padding:.5rem 0 1.2rem}
.page-head h1{max-width:20ch;font-size:clamp(1.9rem,4.6vw,3rem)}
.page-head .lede{margin-top:.4rem}
.page{padding-bottom:3rem}
.prose{max-width:var(--read)}
.prose h2{margin-top:2.2rem}
.prose h3{margin-top:1.6rem}
.prose ul,.prose ol{padding-left:1.3rem;margin:0 0 1.1em}
.prose li{margin:.3rem 0}
.prose a{font-weight:500}
.tbl{overflow-x:auto;margin:1.2rem 0 1.5rem;border:1px solid var(--line);border-radius:var(--radius)}
.tbl:focus-visible{outline-offset:0}
.tbl table{border-collapse:collapse;width:100%;min-width:30rem;font-size:.95rem}
.tbl th,.tbl td{padding:.6rem .8rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.tbl th{background:var(--raised);font-weight:600}
.tbl tr:last-child td{border-bottom:0}
.sources li{margin:.5rem 0;word-break:break-word}
.sources{font-size:.95rem;color:var(--muted)}

/* Article */
.art-head{display:grid;gap:1.4rem;align-items:end;padding-bottom:1.2rem}
@media (min-width:900px){.art-head{grid-template-columns:1.25fr .75fr}}
.art-head h1{max-width:18ch;font-size:clamp(1.9rem,4.4vw,3rem)}
.art-art{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:.5rem;color:var(--accent)}
.art-art svg{display:block;width:100%;height:auto}
.art-meta{display:flex;flex-wrap:wrap;gap:.2rem 1.2rem;color:var(--muted);font-size:.92rem;margin-top:.9rem}
.art-meta .cat-tag{color:var(--accent);font-weight:600}
.related{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.next-art{margin-top:2rem}

/* Lock panel (the interface layer only: full text is in the HTML) */
.gate{display:none;margin:1.6rem 0 2rem;max-width:var(--read)}
.gated .gate{display:block}
.gated .rest{display:none}
.gate .pad>h2{font-size:1.4rem;margin-bottom:.4rem}
.gate-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.1rem}
.gate-lock{display:flex;gap:.8rem;align-items:flex-start}
.gate-lock svg{flex:none;width:2rem;height:2rem;color:var(--accent);margin-top:.1rem}
.gate-lock h2{margin:0 0 .4rem}
.earned{margin:1.4rem 0;max-width:var(--read)}
.earned h2{font-size:1.25rem;margin-bottom:.35rem}
.earned ul{margin:.4rem 0 .8rem;padding-left:1.2rem}

/* Game (wheel and questions) */
.game{margin-top:1.2rem}
.game-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;margin-bottom:.9rem}
.pips{display:flex;gap:.4rem;list-style:none;margin:0;padding:0}
.pips li{width:1.05rem;height:1.05rem;border-radius:50%;border:2px solid var(--line-strong);position:relative}
.pips li.now{border-color:var(--orange)}
.pips li.right{background:var(--ok);border-color:var(--ok)}
.pips li.wrong{background:transparent;border-color:var(--no)}
.pips li.wrong::after{content:"";position:absolute;left:50%;top:50%;width:.55rem;height:2px;background:var(--no);transform:translate(-50%,-50%)}
.wheel-box{display:grid;gap:1rem;justify-items:center}
.wheel{position:relative;width:min(100%,280px);aspect-ratio:1}
.wheel svg{width:100%;height:100%;display:block;overflow:visible}
.wheel-rot{transform-origin:150px 150px;transition:transform 3.2s cubic-bezier(.12,.62,.1,1)}
.wheel-rot.no-anim{transition:none}
.wheel text{font:600 13px var(--sans);fill:#05060F}
.wheel-ring{fill:none;stroke:var(--bg);stroke-width:3}
.wheel-hub{fill:var(--bg);stroke:var(--line-strong);stroke-width:2}
.wheel-ptr{fill:var(--orange);stroke:var(--bg);stroke-width:2}
.spin-actions{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center}
.cat-pick{display:grid;gap:.5rem;width:100%;max-width:26rem;margin:.2rem auto 0;padding:0;list-style:none}
.cat-pick .btn{width:100%;justify-content:flex-start;gap:.7rem}
.cat-pick i{width:.8rem;height:.8rem;border-radius:50%;background:var(--accent);flex:none}
.q{margin-top:.4rem}
.q-meta{display:flex;flex-wrap:wrap;gap:.3rem 1rem;color:var(--muted);font-size:.92rem;margin-bottom:.4rem}
.q-meta b{color:var(--accent);font-weight:600}
.q h3{font-size:1.3rem;line-height:1.3;margin:.2rem 0 1rem;outline:none}
.opts{display:grid;gap:.6rem;list-style:none;margin:0;padding:0}
.opt{display:flex;gap:.8rem;align-items:flex-start;width:100%;text-align:left;padding:.8rem 1rem;border:1px solid var(--line-strong);background:var(--panel);color:var(--text);border-radius:var(--radius);font:500 1rem/1.4 var(--sans);cursor:pointer}
.opt:hover:not([disabled]){border-color:var(--text);background:var(--raised)}
.opt .letter{flex:none;font:700 .9rem var(--mono);color:var(--muted);padding-top:.1rem}
.opt[disabled]{cursor:default}
.opt.is-right{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,var(--panel))}
.opt.is-wrong{border-color:var(--no);background:color-mix(in srgb,var(--no) 12%,var(--panel))}
.opt .mark{margin-left:auto;font-weight:700;padding-left:.6rem;flex:none}
.opt.is-right .mark{color:var(--ok)}.opt.is-wrong .mark{color:var(--no)}
.fb{margin-top:1rem;padding:.9rem 1rem;border-left:4px solid var(--line-strong);background:var(--raised);border-radius:0 var(--radius) var(--radius) 0}
.fb.right{border-left-color:var(--ok)}.fb.wrong{border-left-color:var(--no)}
.fb strong{display:block;margin-bottom:.2rem}
.fb p{margin:0 0 .4rem}
.fb .src{font-size:.88rem;color:var(--muted)}
.fb .btn{margin-top:.6rem}
.round-done h3{font-size:1.5rem}
.score{font:700 2.4rem/1 var(--mono);color:var(--accent,var(--orange))}
.resume{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:1rem;padding:.8rem 1rem;border:1px dashed var(--line-strong);border-radius:var(--radius)}
.resume p{margin:0;flex:1 1 14rem}
.no-js-note{color:var(--muted)}
.js .no-js-note{display:none}
.needs-js{display:none}
.js .needs-js{display:block}

/* Explorer */
.tools{display:grid;gap:1rem;margin-bottom:1.2rem}
.search{display:flex;flex-direction:column;gap:.3rem}
.search label{font-weight:600}
.input{width:100%;min-height:2.9rem;padding:.55rem .85rem;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);color:var(--text);font:400 1rem var(--sans)}
textarea.input{min-height:9rem;resize:vertical}
.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;border:0}
.chips legend{font-weight:600;margin-bottom:.4rem;padding:0}
.chip{min-height:2.5rem;padding:.35rem .9rem;border:1px solid var(--line-strong);background:var(--panel);color:var(--text);border-radius:2rem;font:500 .95rem var(--sans);cursor:pointer}
.chip[aria-pressed="true"]{background:var(--text);color:var(--bg);border-color:var(--text)}
.result-count{color:var(--muted);margin:.2rem 0 1rem}
.empty{padding:1.2rem;border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--muted)}

/* Star map */
.smap{display:grid;gap:1rem}
@media (min-width:760px){.smap{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1100px){.smap{grid-template-columns:repeat(6,1fr)}.smap .const{grid-column:span 2}.smap .const:nth-child(4){grid-column:2 / span 2}.smap .const:nth-child(5){grid-column:4 / span 2}}
.const{padding:1rem 1rem 1.1rem}
.const h2{font-size:1.2rem;margin:0}
.const .num{color:var(--accent);font-size:.9rem}
.const-svg{display:block;width:100%;height:auto;margin:.4rem 0 .6rem}
.const-line{stroke:var(--line-strong);stroke-width:1.2;fill:none}
.const-line.on{stroke:var(--accent);opacity:.8}
.star circle.core{fill:var(--panel);stroke:var(--muted);stroke-width:1.6;transition:all .25s}
.star circle.halo{fill:var(--accent);opacity:0;transition:opacity .25s}
.star:hover circle.core,.star:focus-visible circle.core{stroke:var(--text)}
.star.lit circle.core{fill:var(--accent);stroke:var(--accent)}
.star.lit circle.halo{opacity:.22}
.star-list{list-style:none;margin:0;padding:0;font-size:.92rem}
.star-list li{display:flex;gap:.5rem;padding:.25rem 0;border-top:1px solid var(--line)}
.star-list .state{flex:none;width:5.2rem;font-family:var(--mono);font-size:.78rem;color:var(--muted);padding-top:.15rem}
.star-list li.lit .state{color:var(--accent)}
.statbar{display:flex;flex-wrap:wrap;gap:1rem 2.5rem;margin:1rem 0 1.4rem;padding:1rem 1.2rem}
.statbar b{display:block;font:700 1.8rem/1.1 var(--mono);color:var(--text)}
.statbar span{font-size:.9rem;color:var(--muted)}
.data-box{margin-top:2rem;max-width:var(--read)}
.data-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.8rem;align-items:center}
.confirm{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;padding:.8rem 1rem;border:1px solid var(--no);border-radius:var(--radius);margin-top:.8rem}
.confirm p{margin:0}
.state-line{margin-top:.8rem;color:var(--muted)}

/* Forms and alerts */
.form{display:grid;gap:1rem;max-width:36rem}
.field{display:flex;flex-direction:column;gap:.3rem}
.field label{font-weight:600}
.field .hint{font-size:.88rem;color:var(--muted)}
.trap{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.alert{padding:.9rem 1.1rem;border:1px solid var(--line-strong);border-left-width:4px;border-radius:var(--radius);background:var(--panel);margin:1rem 0;max-width:36rem}
.alert.ok{border-left-color:var(--ok)}.alert.err{border-left-color:var(--no)}
.alert p{margin:0 0 .4rem}.alert ul{margin:.4rem 0 0;padding-left:1.2rem}

/* 404 */
.lost{text-align:left;padding:3rem 0 4rem}
.lost .num{font-size:clamp(3.5rem,14vw,7rem);color:var(--orange);line-height:1}

/* Footer */
.site-footer{margin-top:3rem;border-top:1px solid var(--line);background:var(--panel);padding:2.4rem 0 1.4rem}
.foot-grid{display:grid;gap:1.8rem}
@media (min-width:760px){.foot-grid{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.site-footer h2{font-size:1rem;margin-bottom:.7rem;color:var(--text)}
.site-footer ul{list-style:none;margin:0;padding:0}
.site-footer li{margin:.3rem 0}
.site-footer a{color:var(--muted)}
.site-footer a:hover{color:var(--text)}
.site-footer p{color:var(--muted);font-size:.95rem}
.foot-bottom{margin-top:1.8rem;padding-top:1rem;border-top:1px solid var(--line);color:var(--muted);font-size:.88rem}

/* ---------- Polish pass: sky, depth and instrument details ---------- */
body{background-color:var(--bg);background-image:var(--glow),var(--sky);background-repeat:no-repeat,no-repeat,repeat}
.btn{box-shadow:var(--btn-glow)}
.btn.ghost,.btn.ghost:hover,.btn[disabled]{box-shadow:none}
.btn:hover{filter:brightness(1.06)}
.btn.ghost:hover{filter:none;background:var(--raised)}
.brand{font-size:1.2rem}
.brand svg{width:2.15rem;height:2.15rem}

/* Hero: the one place that gets the boldness */
.hero{padding-top:clamp(2.2rem,6vw,4.8rem)}
.hero h1{font-size:clamp(2.5rem,6.4vw,4.7rem);line-height:1;letter-spacing:-.032em;max-width:11ch;margin-bottom:.45em}
.hero .lede{font-size:clamp(1.12rem,2vw,1.32rem)}
.plot{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 60%,var(--panel)),var(--panel));box-shadow:var(--plot-shadow)}
.plot .gs-a{stop-color:var(--orange);stop-opacity:.45}.plot .gs-b{stop-color:var(--orange);stop-opacity:0}
.plot .gi-a{stop-color:var(--ice);stop-opacity:1}.plot .gi-b{stop-color:var(--ice);stop-opacity:0}
.plot .gd-a{stop-color:var(--orange);stop-opacity:.95}.plot .gd-b{stop-color:var(--orange);stop-opacity:0}
.plot .axis{fill:none;stroke:var(--line-strong);stroke-width:1;stroke-dasharray:2 7;opacity:.55}
.plot .ticks{fill:none;stroke:var(--line-strong);stroke-width:1;opacity:.75}
.plot .halo-n{fill:var(--ice);opacity:.2}
.plot .orbit{stroke:var(--line-strong);opacity:.9}
.plot .comet-path{stroke-width:1.6;opacity:.9}
.plot-read b{color:var(--ice)}
:root[data-theme="light"] .plot-read b{color:var(--text)}

/* Data strip under the hero */
.facts{display:grid;grid-template-columns:repeat(3,1fr);list-style:none;margin:0;padding:0}
.facts li{display:flex;align-items:center;gap:1rem;padding:1.15rem 1.4rem;border-left:1px solid var(--line)}
.facts li:first-child{border-left:0}
.facts b{font:700 clamp(1.9rem,4vw,2.7rem)/1 var(--mono);color:var(--accent);letter-spacing:-.03em}
.facts span{color:var(--muted);font-size:.95rem;line-height:1.35;max-width:15ch}
@media (max-width:720px){.facts{grid-template-columns:1fr}.facts li{border-left:0;border-top:1px solid var(--line)}.facts li:first-child{border-top:0}.facts span{max-width:none}}

/* Category cards: each figure sits in its own instrument window */
.cat-emb{height:96px;padding:4px 6px;background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:20px 20px;background-position:center;border:1px solid var(--line);border-radius:3px;transition:border-color .2s}
.cat:hover .cat-emb{border-color:var(--accent)}
.cat h3{margin-top:.55rem}

/* Article rows get a small orbit figure on the right */
.row{grid-template-columns:4px 1fr auto}
.row-art{display:none;width:132px;margin:.6rem .8rem .6rem 0;padding-left:.8rem;border-left:1px solid var(--line);align-items:center;color:var(--accent,var(--ice))}
.row-art svg{display:block;width:100%;height:auto;opacity:.92}
@media (min-width:600px){.row-art{display:flex}}
.row:hover .row-art svg{opacity:1}

/* Reading experience */
.prose{line-height:1.74}
article.prose>p:first-of-type{font-size:1.2rem;line-height:1.62;color:var(--text)}
.prose h2{margin-top:2.7rem}
.prose h2::before{content:"";display:block;width:2.4rem;height:3px;border-radius:2px;background:var(--accent,var(--orange));margin-bottom:.8rem}
.gate h2::before,.earned h2::before,.sources h2::before{display:none}
.prose li::marker{color:var(--accent,var(--orange))}
.prose h3{margin-top:1.8rem;padding-top:1.1rem;border-top:1px solid var(--line);font-size:1.15rem}
.prose h2+h3{margin-top:1rem;padding-top:0;border-top:0}
.tbl{background:var(--panel)}
.tbl th{border-bottom:2px solid var(--accent,var(--line-strong));color:var(--text)}
.tbl tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--raised) 45%,transparent)}
.sources{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem 1.4rem 1.3rem;margin-top:2.6rem}
.sources h2{margin:0 0 .8rem;font-size:1.25rem}
.sources ul{margin:0;padding-left:1.1rem}
.art-head{position:relative;isolation:isolate}
.art-head::after{content:"";position:absolute;right:0;top:-30%;width:62%;height:170%;z-index:-1;pointer-events:none;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 16%,transparent),transparent)}
.art-art{background-color:var(--panel);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:24px 24px;background-position:center;padding:.6rem}

/* Footer */
.site-footer{position:relative;background:linear-gradient(180deg,var(--panel),var(--bg))}
.site-footer::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--orange),var(--ice),transparent);opacity:.6}
.foot-brand{display:flex;align-items:center;gap:.6rem;font-size:1.25rem}
.foot-brand svg{width:2.1rem;height:2.1rem}

/* Star map: a night-sky window for every constellation */
.const{background:linear-gradient(180deg,var(--panel),color-mix(in srgb,var(--panel) 80%,var(--bg)))}
.const-svg{background:var(--bg);border:1px solid var(--line);border-radius:3px}
.sky-dot{fill:var(--text)}
.star circle.core{fill:var(--bg)}
.star .spark{fill:none;stroke:var(--accent);stroke-width:1.3;stroke-linecap:round;opacity:0;transition:opacity .3s}
.star.lit .spark{opacity:.9}
.star.lit circle.halo{opacity:.3}
.statbar b{color:var(--accent,var(--ice))}

/* The wheel's fixed bezel */
.wheel-ticks{fill:none;stroke:var(--line-strong);stroke-width:1.2;stroke-linecap:round}
.wheel{width:min(100%,300px)}

/* Hero motion: only the comet moves, and only when allowed */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
  .wheel-rot{transition:none!important}
}

/* Print: the star map on paper */
@media print{
  :root,:root[data-theme="light"]{--bg:#fff;--panel:#fff;--raised:#fff;--line:#999;--line-strong:#666;--text:#000;--muted:#222;--c1:#0A66A3;--c2:#7A5200;--c3:#B34700;--c4:#B3123F;--c5:#087A55}
  body{background:#fff;color:#000;font-size:11pt}
  .site-header,.site-footer,.skip,.data-box,.hero-cta,.no-print,#live{display:none!important}
  .smap{display:grid;grid-template-columns:repeat(2,1fr);gap:10pt}
  .smap .const{grid-column:auto!important;break-inside:avoid;border:1px solid #666}
  .panel::before{display:none}
  a{color:#000;text-decoration:none}
  .star.lit circle.core{fill:#000;stroke:#000}
  .star circle.core{fill:#fff;stroke:#444}
  .star-list .state{color:#000}
}
