
/* The approved design: an observatory-dark ground (light variant with the same names), hairlines, Geist with bold
   tight headlines and a grey second line, and system colours: blue for a known planet, yellow for open, red for
   rejected, cyan for the Sentinels, purple for the Probes, amber for the star. The tokens, the stage component and
   the motion rules come from setuhq.design (one source for the site, the stand-alone pages and the README figures);
   stages ("space" panels, planet art) stay black in both themes. */
:root{color-scheme:dark;--bg:#04060B;--bg-2:#080B12;--bg-3:#121826;--panel:#0B0F18;--glass:rgba(11,15,24,.72);--glass-2:rgba(11,15,24,.55);--panel-2:rgba(255,255,255,.05);--line:#1B2232;--line-2:#262F44;--line-3:#39435A;--ink:#ECEFF5;--ink-2:#AEB6C6;--ink-3:#8A93A6;--blue:#0A84FF;--sen:#64D2FF;--prb:#BF5AF2;--prb-ink:#D0A8FF;--yellow:#FFD60A;--red:#FF453A;--green:#30D158;--star:#FFB340;--amber:#FFB340;--cyan:#64D2FF;--lime:#30D158;--coral:#FF6961;--magenta:#BF5AF2;--cyan-soft:rgba(100,210,255,.12);--lime-soft:rgba(48,209,88,.14);--amber-soft:rgba(255,179,64,.14);--coral-soft:rgba(255,69,58,.16);--seg-bg:#F5F5F7;--seg-ink:#000000;--btn-bg:#0071E3;--btn-ink:#FFFFFF;--stage:#000000;--stage-ink:#ECEFF5;--stage-dim:#9AA3B5;--stage-line:rgba(255,255,255,.08);--stage-grid:rgba(120,140,180,.22);--stage-tag-bg:rgba(0,0,0,.55);--sans:"Geist","Geist Fallback",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"Geist Mono","Geist Mono Fallback",ui-monospace,"SF Mono",Menlo,monospace;--display:var(--sans);--ease:cubic-bezier(.2,.7,.2,1);--d-1:150ms;--d-2:350ms;--d-3:600ms;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--r-xs:6px;--r-s:10px;--r-m:14px;--r-l:20px;--r-pill:999px;--r:var(--r-l);--t-hero:700 clamp(40px,6.4vw,88px)/1 var(--sans);--t-h1:700 clamp(32px,4.4vw,60px)/1.02 var(--sans);--t-h2:700 clamp(22px,2.6vw,32px)/1.1 var(--sans);--t-h3:600 17px/1.3 var(--sans);--t-body:400 15px/1.55 var(--sans);--t-lede:400 clamp(16px,1.3vw,18px)/1.5 var(--sans);--t-small:400 13px/1.45 var(--sans);--t-eyebrow:500 12px/1 var(--mono);--t-data:400 12.5px/1.4 var(--mono);--shadow:none;--gloss:none;--paper:var(--bg);--rule:var(--line-2);--muted:var(--ink-3);--fit:var(--blue);--pass:var(--green);--flag:var(--yellow);--reject:var(--red);--sel:var(--panel-2);--side:var(--bg-2);--top:60px;}
:root[data-theme="light"]{color-scheme:light;--bg:#F5F5F7;--bg-2:#FFFFFF;--bg-3:#E8E8ED;--panel:#FFFFFF;--glass:rgba(255,255,255,.72);--glass-2:rgba(255,255,255,.6);--panel-2:rgba(0,0,0,.05);--line:rgba(0,0,0,.08);--line-2:rgba(0,0,0,.14);--line-3:rgba(0,0,0,.26);--ink:#1D1D1F;--ink-2:#424245;--ink-3:#5E5E63;--blue:#0066CC;--sen:#006E99;--prb:#8944AB;--prb-ink:#8944AB;--yellow:#7A5600;--red:#C9001B;--green:#1F7A35;--star:#A05A00;--amber:#A05A00;--cyan:#0066CC;--lime:#1F7A35;--coral:#C9001B;--magenta:#8944AB;--cyan-soft:rgba(0,102,204,.1);--lime-soft:rgba(31,122,53,.12);--amber-soft:rgba(160,90,0,.12);--coral-soft:rgba(201,0,27,.1);--seg-bg:#1D1D1F;--seg-ink:#FFFFFF;--btn-bg:#0071E3;--btn-ink:#FFFFFF;--stage:#000000;--stage-ink:#ECEFF5;--stage-dim:#9AA3B5;--stage-line:rgba(255,255,255,.08);--stage-grid:rgba(120,140,180,.22);--stage-tag-bg:rgba(0,0,0,.55);}
@media (prefers-color-scheme: light){:root[data-theme="system"]{color-scheme:light;--bg:#F5F5F7;--bg-2:#FFFFFF;--bg-3:#E8E8ED;--panel:#FFFFFF;--glass:rgba(255,255,255,.72);--glass-2:rgba(255,255,255,.6);--panel-2:rgba(0,0,0,.05);--line:rgba(0,0,0,.08);--line-2:rgba(0,0,0,.14);--line-3:rgba(0,0,0,.26);--ink:#1D1D1F;--ink-2:#424245;--ink-3:#5E5E63;--blue:#0066CC;--sen:#006E99;--prb:#8944AB;--prb-ink:#8944AB;--yellow:#7A5600;--red:#C9001B;--green:#1F7A35;--star:#A05A00;--amber:#A05A00;--cyan:#0066CC;--lime:#1F7A35;--coral:#C9001B;--magenta:#8944AB;--cyan-soft:rgba(0,102,204,.1);--lime-soft:rgba(31,122,53,.12);--amber-soft:rgba(160,90,0,.12);--coral-soft:rgba(201,0,27,.1);--seg-bg:#1D1D1F;--seg-ink:#FFFFFF;--btn-bg:#0071E3;--btn-ink:#FFFFFF;--stage:#000000;--stage-ink:#ECEFF5;--stage-dim:#9AA3B5;--stage-line:rgba(255,255,255,.08);--stage-grid:rgba(120,140,180,.22);--stage-tag-bg:rgba(0,0,0,.55);}}

/* ---------- design.BASE_CSS: type, the stage, skeleton rows ---------- */
.t-hero{font:var(--t-hero);letter-spacing:-.045em;text-wrap:balance}
.t-h1{font:var(--t-h1);letter-spacing:-.04em}
.t-h2{font:var(--t-h2);letter-spacing:-.02em}
.t-h3{font:var(--t-h3);letter-spacing:-.01em}
.t-lede{font:var(--t-lede)}
.t-small{font:var(--t-small)}
.eyebrow,.t-eyebrow{font:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.t-data{font:var(--t-data);font-variant-numeric:tabular-nums}
.stage{position:relative;overflow:hidden;background:var(--stage);border:1px solid var(--line);border-radius:var(--r-m);color:var(--stage-ink);
  --ink:var(--stage-ink);--ink-2:var(--stage-dim);--ink-3:var(--stage-dim);--line:var(--stage-line);--line-2:rgba(255,255,255,.14);--line-3:rgba(255,255,255,.24);
  --panel:#11151F;--panel-2:rgba(255,255,255,.06);--cyan:#64D2FF;--blue:#0A84FF;--amber:#FFB340;--star:#FFB340;--green:#30D158;--magenta:#BF5AF2;--yellow:#FFD60A;--red:#FF453A;--sen:#64D2FF;--prb-ink:#D0A8FF}
.stage-tag{position:absolute;top:10px;right:10px;z-index:2;display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;border-radius:var(--r-xs);background:var(--stage-tag-bg);color:var(--stage-dim);font:500 11px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
a.stage-tag{color:var(--stage-ink)}
a.stage-tag:hover{color:#fff;text-decoration:underline}
.stage-tag .mxlabel{border:0;padding:0;font:inherit;letter-spacing:inherit;background:none}
.stage-ctrls{position:absolute;left:10px;bottom:10px;z-index:2;display:flex;gap:6px}
.stage-ctrls .btn{background:var(--stage-tag-bg);color:var(--stage-ink);border-color:rgba(255,255,255,.18)}
.readout{font:var(--t-data);font-variant-numeric:tabular-nums;color:var(--ink-2);padding:8px 2px 0}
.rfig{margin:0;display:grid}
.rfig .rbox{position:relative;background:var(--stage);border-radius:inherit;aspect-ratio:1/1}
.rfig .rbox>img.rstill,.rfig .rbox>canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.rfig .rbox>img.rstill[hidden]{display:none}
.rfig .readout{background:var(--stage);color:var(--stage-dim);padding:8px 12px 10px;margin:0}
.rfig .readout a{color:var(--stage-ink)}
.skel{display:block;height:14px;margin:8px 0;border-radius:var(--r-xs);background:linear-gradient(90deg,var(--bg-3) 0 40%,var(--line-2) 50%,var(--bg-3) 60% 100%);background-size:300% 100%;animation:skel 1.2s linear infinite}
@keyframes skel{from{background-position:100% 0}to{background-position:0 0}}
.odo{display:inline-flex;font-variant-numeric:tabular-nums}
.odo .odd{display:inline-block;height:1em;overflow:hidden;line-height:1}
.odo .odd>span{display:block;transition:transform var(--d-3) var(--ease)}
.odo .odd>span>span{display:block;height:1em}
.xhair{position:absolute;top:0;bottom:0;width:1px;background:var(--ink-2);pointer-events:none}
.xhair[hidden]{display:none}
.xread{font:var(--t-data);color:var(--ink-2);min-height:1.4em}

/* ---------- design.MOTION_CSS: one curve, three durations; still under reduced motion ---------- */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:var(--d-3);animation-timing-function:var(--ease)}
.subnav a[aria-current="page"]{view-transition-name:subnav-current}
body[data-route="overview"] .topbar:not(.settled){background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-color:transparent}
.topbar{transition:background-color var(--d-2) var(--ease),border-color var(--d-2) var(--ease)}
@media (prefers-reduced-motion:reduce){
  :root{--d-1:0ms;--d-2:0ms;--d-3:0ms}
  .skel{animation:none}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}
*{box-sizing:border-box}
html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{margin:0;overflow-x:hidden}
body{background:transparent;color:var(--ink);font:400 15px/1.5 var(--sans);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.mono,code,pre{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:0}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:8px}
::selection{background:var(--blue);color:#fff}
a{color:var(--cyan);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--ink)}
.sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;background:var(--btn-bg);color:var(--btn-ink);padding:11px 14px;border-radius:999px;z-index:50;display:inline-flex;align-items:center;min-height:44px;text-decoration:none}
.skip:focus{top:12px}
#content:focus{outline:none}
/* the top bar: brand, the pill section switcher, the run, the theme control */
.topbar{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 18px;padding:8px clamp(16px,3vw,32px);background:color-mix(in oklab,var(--bg) 62%,transparent);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-bottom:1px solid var(--line)}
.brand{display:inline-flex;align-items:center;gap:9px;height:44px;min-height:44px;line-height:0;position:relative;padding:0 4px;color:var(--ink);text-decoration:none;font-weight:600;font-size:17px;letter-spacing:-.02em}
.brand:hover{color:var(--ink)}
.nav ul{list-style:none;margin:0;display:flex;gap:2px;padding:3px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line)}
.nav a{display:flex;align-items:center;min-height:36px;padding:0 16px;border-radius:999px;color:var(--ink-2);text-decoration:none;font-size:13px;font-weight:500;white-space:nowrap;transition:background-color var(--d-1) var(--ease),color var(--d-1) var(--ease)}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{background:var(--seg-bg);color:var(--seg-ink)}
main{min-width:0;padding:36px clamp(16px,3vw,40px) 56px}
main:focus{outline:none}
.route{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;min-width:0;max-width:1280px;margin:0 auto;animation:rise var(--d-2) var(--ease) both}
.route>*{min-width:0}
.route[hidden]{display:none}
.route>header{display:grid;gap:8px;padding-bottom:4px}
.route>header .eyebrow{margin:0;font:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.route>header .eyebrow .idx{display:none}
.route>header .eyebrow .parent{color:var(--ink-3);font-weight:400}
.route>header .eyebrow .parent a{color:var(--ink-3);display:inline-block;padding:12px 0;margin:-12px 0;line-height:20px}
.route h1:focus{outline:none}
.route>header p{margin:0;color:var(--ink-2);max-width:72ch;font-size:clamp(15px,1.2vw,17px);line-height:1.5}
.route>header .lead-h,.headline{margin:0;font:var(--t-h1);letter-spacing:-.04em;color:var(--ink);max-width:22ch;text-wrap:balance}
.headline .grey,.lead-h .grey{color:var(--ink-3)}
#route-candidates>header .lead-h,#route-planets>header .lead-h,#route-runs>header .lead-h{font-size:clamp(28px,3vw,42px)}
.headrow{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px}
h2{font:600 19px/1.25 var(--sans);letter-spacing:-.02em;margin:0}
h3{font:600 15px/1.3 var(--sans);letter-spacing:-.01em;margin:0}
.note{margin:0;border-top:1px solid var(--line);padding:14px 0 0;font-size:14px;color:var(--ink-2);max-width:90ch}
.note b{color:var(--ink);font-weight:600}
.tag{display:inline-flex;align-items:center;gap:6px;font:500 11px/1 var(--sans);color:var(--ink-2);padding:5px 9px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);white-space:nowrap;vertical-align:1px}
.tag.unc{color:var(--yellow);border-color:color-mix(in oklab,var(--yellow) 35%,transparent);background:color-mix(in oklab,var(--yellow) 10%,transparent)}
.tag.unc::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
.tag.sim{color:var(--prb-ink)}
.tag.cl{color:var(--sen);background:var(--cyan-soft);border-color:transparent}
.muted{color:var(--ink-3)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:500 13px/1.2 var(--sans);color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:999px;padding:6px 14px;cursor:pointer;min-height:34px;text-decoration:none;transition:background-color var(--d-1) var(--ease),color var(--d-1) var(--ease),border-color var(--d-1) var(--ease),transform var(--d-2) var(--ease)}
.btn:hover{border-color:var(--line-3);color:var(--ink)}
.btn[aria-disabled="true"]{opacity:.45;cursor:default}
.btn.primary{background:var(--btn-bg);color:var(--btn-ink);border-color:transparent;min-height:48px;padding:0 24px;font-size:17px}
.btn.primary:hover{transform:translateY(-1px);color:var(--btn-ink)}
.btn.ghost{min-height:48px;padding:0 20px;font-size:17px;background:transparent;border-color:transparent;color:var(--cyan)}
.btn.ghost:hover{color:var(--ink)}
.chip{font:500 12px/1.2 var(--sans);border:1px solid var(--line);background:transparent;color:var(--ink-2);padding:6px 14px;border-radius:999px;cursor:pointer;min-height:34px}
.chip[aria-pressed="true"]{color:var(--seg-ink);background:var(--seg-bg);border-color:transparent}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.card{background:var(--glass);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;min-width:0;position:relative;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}
.cards{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}
/* segmented controls (the prototype's grey track with a white pill) */
.segctl{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:12px;background:var(--panel-2)}
.segctl button{min-height:32px;padding:0 12px;border-radius:9px;border:0;background:transparent;color:var(--ink-2);font:500 12px var(--sans);cursor:pointer}
.segctl button[aria-pressed="true"]{background:var(--seg-bg);color:var(--seg-ink)}
/* status pills with a coloured dot */
.pill{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border-radius:999px;font:500 13px var(--sans);border:1px solid var(--line);background:transparent;color:var(--ink-3);cursor:pointer}
.pill i{width:7px;height:7px;border-radius:50%;background:var(--line-3)}
.pill[aria-pressed="true"]{border-color:var(--line-3);background:var(--panel-2);color:var(--ink)}
.pill[aria-pressed="true"] i{background:var(--c)}
.pill .n{color:var(--ink-3)}
/* space panels: dark in both themes */
.space{border-radius:28px;border:1px solid var(--stage-line);background-color:var(--stage);color:var(--stage-ink);overflow:hidden;position:relative;min-width:0;--ink:var(--stage-ink);--ink-2:#AEB6C6;--ink-3:var(--stage-dim);--line:var(--stage-line);--line-2:rgba(255,255,255,.14);--panel:#11151F;--panel-2:rgba(255,255,255,.06);--cyan:#64D2FF}
.space svg text{fill:#A1A1A6}
.glass{background:var(--glass);border:1px solid var(--line);border-radius:24px;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);min-width:0}
.row2{display:flex;flex-wrap:wrap;gap:18px;align-items:stretch}
.grow{flex:999 1 620px;min-width:0}
.side{flex:1 1 320px;min-width:0}
.small{margin:0;font-size:12px;color:var(--ink-3)}
/* motion: all of it decorative, all of it off under prefers-reduced-motion */
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes twinkle{0%,100%{opacity:.25}50%{opacity:.75}}
@keyframes orbit{to{transform:rotate(360deg)}}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(-400px)}}
@keyframes pulse{0%,100%{opacity:.35;transform:scale(1)}50%{opacity:.8;transform:scale(1.35)}}
@keyframes breathe{0%,100%{opacity:.55}50%{opacity:.9}}
@keyframes sweep{from{transform:translateX(var(--from))}to{transform:translateX(var(--to))}}
@keyframes reveal{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes head{from{transform:translateX(0)}to{transform:translateX(var(--w))}}
.twinkle{animation:twinkle 6s var(--ease) infinite}
.twinkle2{animation:twinkle 9s var(--ease) infinite 2s}
.orbit{animation:orbit 60s linear infinite}
.orbitfast{animation:orbit 14s linear infinite}
.orbitslow{animation:orbit 90s linear infinite reverse}
.clouds{animation:drift 90s linear infinite}
.pulse{animation:pulse 3.2s var(--ease) infinite;transform-box:fill-box;transform-origin:center}
.breathe{animation:breathe 7s var(--ease) infinite}
/* the transit theatre: one 10 s clock for the shadow, the curve drawing in and the playhead */
.sweep{animation:sweep 10s linear infinite}
.reveal{transform-box:fill-box;transform-origin:0 0;animation:reveal 10s linear infinite}
.playhead{animation:head 10s linear infinite}

/* Overview: the launch hero */
.route>header.launch{display:flex;flex-direction:column;align-items:center;text-align:center;padding:56px 0 0;gap:0}
.launch .kick{margin:0;font-size:17px;font-weight:500;color:var(--star)}
.launch h1{margin:10px 0 0;font-weight:700;font-size:clamp(52px,8.4vw,120px);line-height:1;letter-spacing:-.045em}
.route>header.launch .sub{margin:20px auto 0;max-width:620px;font-size:clamp(17px,1.6vw,21px);line-height:1.45;color:var(--ink-2)}
.launch .ctas{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:30px}
#route-overview{gap:var(--s-8,64px)}
.proof{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:1px;width:min(100%,1100px);margin:0 auto;background:var(--line);border-radius:22px;overflow:hidden;position:relative;text-align:left}
.proof>div{background:color-mix(in oklab,var(--panel) 88%,transparent);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);padding:22px 24px}
.proof b{display:block;font-size:40px;font-weight:600;letter-spacing:-.03em;line-height:1.05}
.proof span{display:block;margin-top:8px;font-size:14px;line-height:1.45;color:var(--ink-2)}
.honest{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.2fr);gap:12px 32px;border-top:1px solid var(--line);padding-top:22px}
.honest h2{font-size:15px;color:var(--ink-3);font-weight:500}
.honest ul{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.honest li{font-size:14px;color:var(--ink-2);line-height:1.5;padding-left:16px;position:relative}
.honest li::before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--yellow)}
.honest li b{color:var(--ink);font-weight:600}
.secthead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;border-top:1px solid var(--line);padding-top:22px}
.secthead h2{font-size:15px;color:var(--ink-3);font-weight:500}
.secthead p{margin:0;font-size:13px;color:var(--ink-3);max-width:72ch}
/* the home page's bands: an eyebrow, a heading, the drawing, its source */
.band{display:grid;gap:18px;min-width:0}
.bandhead{display:grid;gap:10px;border-top:1px solid var(--line);padding-top:22px}
.bandeyebrow{margin:0;font:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.bandhead h2{font:var(--t-h2);letter-spacing:-.02em;color:var(--ink);max-width:30ch;text-wrap:balance}
.bandmore,.bandnote{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2);max-width:90ch}
.bandmore a{display:inline-flex;align-items:center;min-height:32px}
.ctrlist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden}
.ctr a{position:relative;display:grid;align-content:start;gap:8px;height:100%;padding:24px 40px 22px 20px;background:var(--bg-2);color:var(--ink);text-decoration:none;transition:background-color var(--d-1) var(--ease)}
.ctr a:hover{background:var(--bg-3);color:var(--ink)}
.ctrn{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font:700 clamp(30px,3.6vw,46px)/1 var(--sans);letter-spacing:-.03em}
.ctrn .odoci{font:var(--t-data);font-weight:500;letter-spacing:0;color:var(--ink-2)}
.ctrl{font-size:13.5px;line-height:1.4;color:var(--ink-2)}
.ctrs{font-size:11.5px;line-height:1.4;color:var(--ink-3)}
.ctr i{position:absolute;right:16px;top:22px;font-style:normal;font-size:20px;color:var(--cyan)}
.homesweep .sweepline{margin:0}
@media (max-width:899.9px){
  .ctrlist{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:699.9px){
  #route-overview{gap:var(--s-7,48px)}
  .ctrlist{grid-template-columns:minmax(0,1fr)}
}
/* Sky */
.skymap{flex:999 1 640px;display:grid;gap:10px;min-width:0;align-content:start}
.skyover{pointer-events:none}
.skyover .skymark{pointer-events:auto}
.skycov{display:grid;gap:8px;padding:14px 16px;border-radius:var(--r)}
.skycov p{margin:0;font-size:13px;color:var(--ink-2)}
.skycov a{display:inline-flex;align-items:center;min-height:44px}
.theatre .mxstage{padding:0 12px 4px}
.theatre .mxctl,.theatre .mxbadges{padding:0 2px}
.skypin{position:absolute;z-index:3;transform:translate(16px,-50%);min-height:44px;padding:8px 12px;border-radius:var(--r-s);border:1px solid rgba(255,255,255,.16);background:rgba(4,6,11,.82);color:var(--stage-ink);text-decoration:none;line-height:1.3;font-size:12px;white-space:nowrap}
.skypin b{font-size:14px;font-weight:600;display:block}
.skypin span{display:block;color:var(--stage-dim)}
.skypin em{font-style:normal;color:#64D2FF}
.skynote{margin:0;font-size:12px;color:var(--ink-3)}
.skymark.on{cursor:zoom-in}
.sktl{display:grid;gap:10px}
.secth{margin:0;font:var(--t-h3);letter-spacing:-.01em}
@media screen and (max-width:699.98px){main .skybox a.skypin{position:absolute;display:flex;align-items:center;margin:0;padding:4px 10px}.skybox .skypin span,.skybox .skypin em{display:none}.skybox .skypin b{font-size:12px}}
.skylinks .skyzoom{min-height:44px}
.dipsbox{flex:1 1 300px;max-width:380px;padding:10px;display:flex;flex-direction:column;gap:2px;border-radius:28px}
.dipsbox .dhead{display:flex;justify-content:space-between;align-items:center;padding:10px 12px 6px}
.dipsbox .dhead b{font-size:15px;font-weight:600}
.dipsbox .segctl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:4px 8px 8px}
.dipitem{display:grid;grid-template-columns:10px auto minmax(0,1fr);gap:2px 12px;align-items:center;min-height:56px;padding:8px 12px;border-radius:14px;color:var(--ink);text-decoration:none;border-top:1px solid var(--line)}
.dipitem:hover{background:var(--panel-2);color:var(--ink)}
.dipitem i{grid-row:span 2;width:8px;height:8px;border-radius:50%;background:var(--c)}
.dipitem b{font-size:15px;font-weight:500;white-space:nowrap}
.dipitem .st{font-size:12px;color:var(--c);text-align:right}
.dipitem .sub{grid-column:2/-1;font-size:13px;color:var(--ink-3)}
.runline{padding:14px 18px;background:var(--glass-2)}
.runline .cap{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--ink-3);margin-bottom:6px}
.runline svg{display:block;width:100%;height:auto}
/* Transit cockpit */
.roundbtn{width:44px;height:44px;border-radius:50%;border:0;background:var(--panel-2);color:var(--ink);font:inherit;font-size:20px;cursor:pointer;display:inline-grid;place-items:center;text-decoration:none}
.cmpbtn{min-height:44px;padding:0 18px;border-radius:999px;border:0;background:var(--panel-2);color:var(--ink);font:500 15px var(--sans);cursor:pointer}
.cmpbtn[aria-pressed="true"]{background:var(--btn-bg);color:var(--btn-ink)}
.dipchips{display:flex;gap:2px;padding:3px;border-radius:14px;background:var(--panel-2);overflow-x:auto}
.dipchips a{flex:1 0 auto;display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 14px;border-radius:11px;color:var(--ink-2);font-size:13px;text-decoration:none;white-space:nowrap}
.dipchips a i{width:6px;height:6px;border-radius:50%;background:var(--c)}
.dipchips a[aria-current="true"]{background:var(--seg-bg);color:var(--seg-ink)}
.theatre{flex:999 1 620px;padding:22px;display:flex;flex-direction:column;gap:12px;border-radius:var(--r-l);background-image:radial-gradient(90% 90% at 30% 20%,#1A1206 0%,#000 65%)}
.theatre .cap{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font:var(--t-data);color:var(--stage-dim)}
.theatre svg{display:block;width:100%;height:auto}
.theatre .foot{font-size:12px;color:var(--stage-dim);line-height:1.5;margin:0}
.axisrow{display:flex;justify-content:space-between;gap:8px;font:11px var(--mono);color:var(--stage-dim);margin-top:-6px}
.axisrow span:nth-child(2){text-align:center}
.tx-side{flex:1 1 340px;min-width:0;display:flex;flex-direction:column;gap:14px}
.scorecard{padding:14px;display:grid;gap:12px}
.scorecard .txverdict{margin:0;font-size:14px;line-height:1.5;color:var(--ink-2)}
.txinset{min-width:0}
.txinset[hidden]{display:none}
.scorecard .top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.scorecard .top span{font-size:13px;color:var(--ink-3)}
.scorecard .top b{font-size:34px;font-weight:600;letter-spacing:-.03em}
.bar{height:4px;border-radius:2px;background:var(--panel-2);margin:10px 0 12px;overflow:hidden}
.bar i{display:block;height:4px;border-radius:2px;background:var(--c)}
.scorecard p{margin:0;font-size:15px;line-height:1.5;color:var(--ink-2)}
.lanes{padding:16px 20px;display:flex;flex-direction:column;gap:10px}
.lanes .lane{display:grid;grid-template-columns:150px minmax(0,1fr);gap:10px;align-items:center}
.lanes .lane span{font-size:13px}
.lanes .track{position:relative;height:8px;border-radius:4px;background:var(--panel-2)}
.lanes .track i{position:absolute;top:0;bottom:0;border-radius:4px;background:var(--c);transition:width var(--d-3) var(--ease)}
.lanes .track i.uncounted{background:transparent;border:1px dashed var(--c)}
.lanes .track em{position:absolute;left:0;top:-5px;font-style:normal;font-size:11px;color:var(--ink-3)}
.lanes .win{position:absolute;top:-4px;bottom:-4px;border-left:1px dashed var(--line-3);border-right:1px dashed var(--line-3)}
.quote{padding:16px 20px;display:flex;flex-direction:column;gap:8px;border-radius:24px;background:linear-gradient(180deg,color-mix(in oklab,var(--sen) 14%,transparent),color-mix(in oklab,var(--sen) 4%,transparent));border:1px solid color-mix(in oklab,var(--sen) 26%,transparent)}
.quote .who{display:flex;justify-content:space-between;gap:10px;font-size:13px}
.quote .who b{color:var(--sen);font-weight:500}
.quote .who span{color:var(--ink-3)}
.quote p{margin:0;font-size:16px;line-height:1.45}
.quote small{font-size:12px;color:var(--ink-3)}
.orbitfig{flex:1 1 320px;margin:0;padding:16px;display:flex;gap:16px;align-items:center;background:var(--glass-2)}
.orbitfig svg{width:160px;height:160px;flex:0 0 auto}
.orbitfig figcaption{font-size:14px;line-height:1.5;color:var(--ink-2)}
.orbitfig figcaption b{color:var(--ink);font-weight:600}
.tray{flex:999 1 520px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--glass-2)}
.tray .cap{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--ink-3)}
.tray .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.tray a{border-radius:16px;border:1px solid var(--line);background:rgba(0,0,0,.5);padding:10px;color:#F5F5F7;text-decoration:none;display:block}
.tray a[aria-current="true"]{border-color:var(--c)}
.tray a .h{display:flex;justify-content:space-between;font-size:12px}
.tray a .h span{color:var(--c)}
.tray svg{display:block;width:100%;height:auto}
.txnotice{margin:0;font-size:14px;color:var(--yellow)}
.txnotice[hidden]{display:none}
.casefile{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;font-size:13px;color:var(--ink-3)}
@media (max-width:700px){.scorecard{padding:10px}.theatre{padding:16px}}
/* Explorer */
.rundiphead{display:flex;align-items:center;gap:14px;min-width:0}
.rundiphead .stardisc{flex:none;width:56px;height:56px}
.rundiplist li{content-visibility:auto;contain-intrinsic-size:auto 66px}
#tlread{margin:4px 0 0;min-height:1.4em}
/* the case file's header: the dip's star, beside the tools (desktop) and the dip picker (phone) */
.dipstars{display:inline-flex;line-height:0}
.dipstar[hidden]{display:none}
.dipstar .stardisc{width:28px;height:28px}
/* On a phone the dip picker takes its own full-width line, in the narrower sans, so a dip's whole name shows. */
@media (max-width:700px){body .dippicker{flex-wrap:wrap}body .dippicker select{flex:1 1 100%;width:100%;font:500 16px/1.2 var(--sans)}}
.scatterbox{flex:999 1 620px;padding:22px;background:radial-gradient(110% 110% at 50% 100%,#120A1E 0%,#000 60%)}
.scatterbox .cap{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--stage-dim);margin-bottom:10px}
.scatter{position:relative;width:100%;padding-bottom:52%}
.scatter svg{position:absolute;inset:0;width:100%;height:100%}
.scatter .ax{position:absolute;font:11px var(--mono);color:var(--stage-dim)}
.scatter>button{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;border:0;padding:0;background:transparent;border-radius:50%;cursor:pointer}
.scatter>button i{position:absolute;left:50%;top:50%;width:var(--s);height:var(--s);margin:calc(var(--s) / -2) 0 0 calc(var(--s) / -2);border-radius:50%;background:var(--c);box-shadow:0 0 var(--g) var(--c)}
.scatter>button[aria-pressed="true"] i{outline:2px solid #fff;outline-offset:2px}
.scatterbox .foot{margin-top:28px;font-size:12px;color:var(--stage-dim)}
.selpanel{flex:1 1 320px;max-width:400px;padding:22px;display:flex;flex-direction:column;gap:14px;border-radius:28px}
.selpanel .st{margin:0;font-size:13px;font-weight:500;color:var(--c)}
.selpanel h2{font-size:28px;font-weight:600;letter-spacing:-.03em}
.selpanel svg{width:100%;max-width:260px;height:auto;align-self:center}
.statgrid{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border-radius:16px;overflow:hidden}
.statgrid div{background:var(--panel);padding:12px}
.statgrid dt{font-size:12px;color:var(--ink-3)}
.statgrid dd{margin:4px 0 0;font-size:20px;font-weight:600}
.filters{display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.filters>div{display:flex;gap:6px 10px;flex-wrap:wrap;justify-content:flex-end}
/* Sentinels */
.ringfig{flex:1 1 360px;margin:0;padding:18px;display:flex;flex-direction:column;align-items:center;gap:8px;background:radial-gradient(80% 80% at 50% 50%,#0B1220 0%,#000 70%)}
.ringfig svg{width:100%;max-width:380px;height:auto}
.ringfig figcaption{font-size:12px;color:#8E8E93;text-align:center}
.revcards{flex:999 1 520px;min-width:0;display:flex;flex-direction:column;gap:10px}
.revcard{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;align-items:center;border-radius:20px;border:1px solid var(--line);background:var(--glass-2);padding:14px 18px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;width:100%}
.revcard[aria-pressed="true"]{border-color:var(--line-3);background:var(--panel-2)}
.revcard .nm{font-size:17px;font-weight:600;color:var(--c)}
.revcard .kd{display:block;font-size:12px;color:var(--ink-3)}
.revcard .w{font-size:28px;font-weight:600;letter-spacing:-.03em}
.revcard .hits{grid-column:1/-1;display:flex;gap:4px}
.revcard .hits i{flex:1;height:4px;border-radius:2px;background:var(--panel-2)}
.revcard .hits i.on{background:var(--c)}
.revcard .hitcap{grid-column:1/-1;font-size:12px;color:var(--ink-3)}
.marked{padding:16px 18px;display:flex;flex-direction:column;gap:10px;background:var(--glass-2)}
.marked .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.marked a{min-height:60px;border-radius:14px;border:1px solid var(--line);color:var(--ink);text-decoration:none;padding:8px 12px;display:block}
.marked a.on{border-color:var(--line-3);background:var(--panel-2)}
.marked a b{font-size:14px;font-weight:500;display:block}
.marked a span{font-size:12px;color:var(--c)}
.attribution{color:var(--ink-2)}
.layoutbar{display:flex;flex-wrap:wrap;gap:8px 11px;align-items:center;font-size:13px}
.layoutbar .muted{font-size:12px}
.widgets{display:grid;gap:16px;grid-template-columns:repeat(6,minmax(0,1fr));min-width:0}
.widget{display:grid;gap:12px;align-content:start}
.widget.size-S{grid-column:span 2}
.widget.size-M{grid-column:span 3}
.widget.size-L{grid-column:1/-1}
.widget>header{display:flex;justify-content:space-between;align-items:center;gap:6px 8px;flex-wrap:wrap}
.widget>header h2{display:flex;align-items:center;gap:11px}
.widget>header h2 .idx{font:500 11px/1 var(--display);color:var(--cyan)}
.wctl{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.wctl .btn{padding:2px 8px;min-height:30px;min-width:30px;font-size:12px;border-radius:8px}
.seg{display:inline-flex}
.seg .btn{border-radius:0;margin-left:-1px}
.seg .btn:first-child{border-radius:8px 0 0 8px;margin-left:0}
.seg .btn:last-child{border-radius:0 8px 8px 0}
.seg .btn[aria-pressed="true"]{background:var(--btn-bg);color:var(--btn-ink);border-color:var(--btn-bg)}
.wopen{font-size:13px;font-weight:500;justify-self:start}
.dip{font:500 12px var(--mono);white-space:nowrap}
.toplist,.toplist ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.toplist>li{border-top:1px solid var(--line);padding-top:11px;display:grid;gap:6px}
.toplist>li:first-child{border-top:0;padding-top:0}
.toplist ul li{display:flex;flex-wrap:wrap;gap:2px 12px;align-items:baseline;font-size:13px}
.toplist .st .short{display:none}
.toplist .note{font-size:12.5px}
.kpis{display:grid;gap:11px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}
.kpi{border-top:1px solid var(--line-2);padding-top:8px}
.kpi b{display:block;font:500 26px/1.1 var(--mono);letter-spacing:-.03em}
.kpi span{font-size:12px;color:var(--ink-3)}
.big{font:500 44px/1 var(--mono);letter-spacing:-.04em}
.empty{color:var(--ink-3);font-style:italic}
.small{margin:0;font-size:12.5px;color:var(--ink-3)}
.runlist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.runlist li{display:grid;gap:2px;border-top:1px solid var(--line);padding-top:8px;font-size:13px}
.runlines{list-style:none;margin:0;padding:0;display:grid;gap:0}
.runlines>li{border-top:1px solid var(--line);padding:11px 0;font-size:13px;display:grid;gap:4px}
.runlines>li:first-child{border-top:0}
.runlines .line{display:flex;flex-wrap:wrap;gap:2px 14px;align-items:baseline}
.runlines .err{color:var(--reject)}
.ratio summary{font-size:13px}
/* tables: Kshana's table treatment, mono uppercase heads over hairlines */
.tablewrap{overflow-x:auto;min-width:0;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.tablewrap.scrollbox{overflow-x:auto}  /* every row shows; only a table wider than its box scrolls, sideways */
/* The benchmark card: label and value side by side, both wrapping; stacked on a phone. */
table.bench{width:100%;border-collapse:collapse}
table.bench th,table.bench td{white-space:normal;text-align:left;vertical-align:top;padding:8px 12px;border-top:1px solid var(--line);font-size:14px;line-height:1.4;font-family:inherit;text-transform:none;letter-spacing:0;color:var(--ink)}
table.bench tr:first-child th,table.bench tr:first-child td{border-top:0}
table.bench th{width:48%;font-weight:600}
.scrollbox thead th{position:sticky;top:0;background:var(--panel);z-index:2}
.scrollbox th:first-child,.scrollbox td:first-child{position:sticky;left:0;background:var(--panel);z-index:1;box-shadow:1px 0 0 var(--line)}
.scrollbox thead th:first-child{z-index:3}
.scrollbox td,.scrollbox tbody th{white-space:nowrap}
.scrollbox tbody th{font:400 13px var(--mono);color:var(--ink);text-transform:none;letter-spacing:0}
td .dip{font-size:11.5px;display:inline-block;max-width:24ch;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
table{width:100%;border-collapse:collapse;font:13px var(--mono);font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{font:600 11px/1.3 var(--mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.07em;white-space:nowrap}
tbody tr:hover td,tbody tr:hover th{background:color-mix(in oklab,var(--panel) 92%,var(--cyan))}
td.num,th.num{text-align:right}
th button{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;background:none;border:0;padding:2px 0;cursor:pointer;display:inline-flex;gap:4px;align-items:center}
th[aria-sort="ascending"] button,th[aria-sort="descending"] button{color:var(--ink)}
tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}
td small{display:block;color:var(--ink-3);font-size:11px}
/* charts */
.charts{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
svg{display:block;width:100%;height:auto}
svg text{font:11px var(--mono);fill:var(--ink-3)}
svg .grid{stroke:var(--line)}
svg .bar{fill:var(--fit)}
svg .lbl{fill:var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:4px 16px;font:500 11.5px/1.5 var(--mono);color:var(--ink-3)}
.legend i{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:6px;vertical-align:-1px}
.legend .k-new{background:var(--fit)}
.legend .k-known{border:2px solid var(--muted)}
.legend .k-sim{border:2px solid var(--muted)}
.legend .k-cl{background:var(--fit)}
svg.calplane{margin:0 auto}
svg.calplane .floor{fill:var(--sel)}
svg.calplane .iso{stroke:var(--muted);stroke-dasharray:4 3}
svg.calplane .floorline{stroke:var(--flag)}
svg.calplane .isolbl{fill:var(--muted);font-size:11px}
svg.calplane .floorlbl{fill:var(--flag)}
svg.calplane .samplelbl{fill:var(--flag);font-weight:600}
svg.calplane .pt.sim{fill:var(--panel);fill-opacity:.85;stroke:var(--muted);stroke-width:2}
svg.calplane .lbl,svg.calplane .samplelbl,svg.calplane .isolbl{paint-order:stroke;stroke:var(--panel);stroke-width:7px;stroke-linejoin:round}
#caltable th,#caltable td{white-space:nowrap}
#caltable tbody th{font:400 13px var(--mono);text-transform:none;letter-spacing:0;color:var(--ink)}
svg.calplane .pt.cl{fill:var(--fit);fill-opacity:.85;stroke:var(--fit);stroke-width:1.5}
/* planets */
.ratio{display:grid;gap:5px;border-top:1px solid var(--line);padding-top:11px;margin-top:11px}
.ratio .formula{font:12px var(--mono);overflow-wrap:anywhere}
.scale{position:relative;height:8px;background:var(--bg-3);border-radius:999px;overflow:hidden}
.rrrow{display:flex;align-items:center;gap:12px;min-width:0}
.rrfig{margin:0;flex:none;padding:6px;border-radius:var(--r-s);background:var(--stage);line-height:0}
.rrdisc{position:relative;display:block;width:40px;height:40px}
.rrdisc svg{position:absolute;inset:0;width:40px;height:40px}
.scale i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--cyan),color-mix(in oklab,var(--cyan) 60%,var(--lime)));border-radius:999px;min-width:3px}
.scalecap{display:flex;justify-content:space-between;font:11px var(--mono);color:var(--ink-3)}
.archive{margin-top:14px;border:1px dashed var(--line-2);border-radius:11px;padding:11px 12px;font-size:13px}
.archive ul{margin:6px 0 0;padding-left:18px}
.card h2{display:flex;flex-wrap:wrap;gap:6px 11px;align-items:baseline}
.card h2 .sub{font:500 11px/1.4 var(--mono);color:var(--ink-3);letter-spacing:.04em}
.idtag{font:400 11px var(--mono);color:var(--ink-3);margin-left:4px;text-transform:none;letter-spacing:0}
details summary{cursor:pointer}
/* panel, runs */
.kv{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 16px;font-size:13px;margin:11px 0 0}
.kv dt{color:var(--ink-3)}
.kv dd{margin:0;font-family:var(--mono);overflow-wrap:anywhere;min-width:0}
.agree{list-style:none;margin:0;padding:0;display:grid}
.agree li{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr) auto;gap:4px 14px;align-items:baseline;border-top:1px solid var(--line);padding:11px 0;font-size:13px}
.agree li:first-child{border-top:0}
.marks{display:flex;flex-wrap:wrap;gap:4px 11px;margin:4px 0 0}
details.cfg{padding:0}
details.cfg>summary{padding:14px 20px;font-weight:600}
details.cfg>div{padding:0 20px 16px;display:grid;gap:14px}
details.cfg .mono{overflow-wrap:anywhere}
.frametools{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:13px}
pre.err{white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0;font-size:12px;background:var(--coral-soft);color:var(--ink);padding:8px 11px;border-radius:8px}
.frame{width:100%;height:calc(100vh - 190px);height:calc(100vh - var(--frame-offset, 190px));min-height:520px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg);display:block;box-shadow:var(--shadow)}
.frame[hidden]{display:none}
/* Until the Docket reports ready the frame takes no space and the status line holds the slot. */
.frame.waiting,body[data-route="candidates"] .frame.waiting{height:0;min-height:0;flex:0 0 0;border:0;visibility:hidden}
.topfull{display:none}
.note.blocked{border-top-color:var(--reject);font-size:14px}
.copyfallback{font:12px var(--mono);width:min(100%,46ch);min-height:34px;padding:4px 8px;border:1px solid var(--line-2);border-radius:8px;background:var(--panel);color:var(--ink)}
#sharednote{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
#sharednote[hidden]{display:none}
#disctable{container-type:inline-size}
.dippicker{display:none}
.calcards{display:none}
.calcard{border-top:1px solid var(--line);padding-top:10px;margin:0}
.sortbar,.feedcards{display:none}
.feedcards{list-style:none;margin:0;padding:0}
#disctable caption{caption-side:top;text-align:left}
.capnote{position:sticky;left:0;display:block;max-width:min(100cqw,90ch);padding:11px 12px 0;font:12.5px/1.5 var(--sans);color:var(--ink-2)}
#archivenote{color:var(--amber);font-weight:500}
#archivenote+*,.capnote:last-child{padding-bottom:11px}
@media (max-width:1000px){
  .widget.size-S{grid-column:span 3}
  .agree li{grid-template-columns:minmax(0,1fr) auto}
  .agree li>:nth-child(2){grid-column:1/-1;grid-row:2}
  .honest{grid-template-columns:minmax(0,1fr)}
  .dipsbox,.selpanel{max-width:none}
}
@media (max-width:699.98px){
  .dipchips{flex-wrap:wrap;overflow-x:visible}
  .dipchips a{flex:1 0 30%}
  table.bench tr{display:block;border-top:1px solid var(--line);padding:6px 0}table.bench tr:first-child{border-top:0}table.bench th,table.bench td{display:block;width:auto;border:0;padding:2px 12px}
  main{padding:20px 16px 40px}
  .route{gap:18px}
  .launch{padding-top:28px}
  .launch .ctas{flex-direction:column;align-items:stretch;width:100%}
  .proof{margin-top:-30px}
  .proof b{font-size:34px}
  .skynote{position:static;max-width:none;text-align:left;margin-top:6px}
  .skypin{padding:8px 12px}
  .lanes .lane{grid-template-columns:118px minmax(0,1fr)}
  .orbitfig{flex-direction:column;align-items:flex-start}
  .filters{align-items:flex-start}
  .filters>div{justify-content:flex-start}
  .segctl button,.pill,.dipchips a,.cmpbtn{min-height:44px}
  .segctl button{min-width:44px}
  .widgets{grid-template-columns:minmax(0,1fr)}
  .widget.size-S,.widget.size-M,.widget.size-L{grid-column:1/-1}
  /* Candidates (the case file): a dip picker above the frame, so no dip is a long scroll away inside it. */
  body[data-route="candidates"] .dippicker{display:flex;align-items:center;gap:10px;margin:8px 16px 4px;flex:none}
  .dippicker label{font:500 12px/1 var(--sans);color:var(--ink-3)}
  .dippicker select{flex:1;min-width:0;min-height:44px;font:500 16px var(--mono);color:var(--ink);background:var(--panel);border:1px solid var(--line-2);border-radius:12px;padding:0 10px}
  /* Sentinels: the calibration rows as one card per reviewer. */
  #caltable{display:none}
  .calcards{display:grid;gap:4px}
  /* Feed: the table's caption stays; its rows become three-line cards, sorted from a labelled group. */
  #disctable{border:0;background:none;overflow:visible}
  #disctable table,#disctable caption{display:block}
  #disctable thead,#disctable tbody{display:none}
  #disctable caption .capnote{padding:0 0 8px;position:static}
  .sortbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:4px 0 10px}
  .sortlbl{font:500 12px/1 var(--sans);color:var(--ink-3);margin-right:4px}
  .sortbtn{min-height:44px;padding:0 10px;border:1px dashed var(--line-3);border-radius:8px;background:transparent;color:var(--ink-2);font:500 12px/1 var(--mono);text-transform:uppercase;letter-spacing:.05em;cursor:pointer}
  .sortbtn[aria-pressed="true"]{border-style:solid;border-color:var(--cyan);color:var(--cyan)}
  .feedcards{display:grid;gap:8px}
  .feedcards li{border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:2px 12px 8px;display:grid;gap:2px}
  .fc1{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px}
  .fc1 .dip{font-size:12px;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .fcst{font-size:12.5px;color:var(--ink-2);white-space:nowrap}
  .fc2{font-size:11px;letter-spacing:-.035em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .fc3{font-size:11.5px;color:var(--yellow)}
  .frame{height:calc(100vh - var(--top));height:calc(100dvh - var(--top));min-height:0;border-radius:0;border-left:0;border-right:0;margin:0 -16px;width:calc(100% + 32px)}
  .btn,.chip,.wctl .btn{min-height:44px}
  .wctl .btn{min-width:44px}
  .seg{display:none}
  .frametools a{display:inline-flex;align-items:center;min-height:44px}
  th button{min-height:44px;min-width:44px}
  /* Every link and disclosure in the page is a 44 px target: min-height and padding, same font size. */
  main a{display:inline-block;min-height:44px;min-width:44px;padding:12px 0;line-height:20px;box-sizing:border-box}
  td a.dip{padding:12px 0;line-height:20px}
  summary{min-height:44px;padding:12px 0;line-height:20px;box-sizing:border-box}
  .copyfallback{min-height:44px}
  .toplist ul{gap:0}
  .toplist ul li.toprow{display:grid;grid-template-columns:auto auto auto minmax(0,1fr);gap:0 11px;align-items:center;height:44px;white-space:nowrap;border-top:1px solid var(--rule);font-size:12px}
  .toplist ul li.toprow:first-child{border-top:0}
  .toplist ul li.toprow a.dip{display:flex;align-items:center;height:44px;padding:0;font-size:11px}
  .toplist .st .long{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .toplist .st .short{display:inline;overflow:hidden;text-overflow:ellipsis}
  .toplist .st{min-width:0;overflow:hidden;text-overflow:ellipsis}
  /* The feed table scrolls sideways in its own region; the page alone scrolls vertically. */
  .tablewrap.scrollbox{max-height:none}
  /* Candidates: the header collapses and the Docket fills the screen under the top bar, so only the frame scrolls. */
  body[data-route="candidates"] main{padding:0}
  body[data-route="candidates"] #route-candidates{display:flex;flex-direction:column;gap:0;height:calc(100vh - var(--top));height:calc(100dvh - var(--top));max-width:none;animation:none}
  body[data-route="candidates"] #route-candidates>header{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  body[data-route="candidates"] #route-candidates .frametools{display:none}
  body[data-route="candidates"] #route-candidates>.note{margin:8px 16px;flex:none}
  body[data-route="candidates"] .frame{flex:1 1 auto;height:auto;min-height:0;margin:0;width:100%;border:0;border-radius:0}
  /* Links styled as tiles or rows keep their own layout. */
  main a.dipitem{display:grid;padding:8px 12px}
  main a.btn{display:inline-flex;padding-top:0;padding-bottom:0}
  main a.roundbtn{display:inline-grid;place-items:center;padding:0;line-height:1}
  main .dipchips a,main .marked a,main .tray a{display:flex;padding:0 14px}
  main .marked a,main .tray a{display:block;padding:8px 12px}
  main a.skypin{display:block;position:static;margin-top:8px;padding:8px 12px;line-height:1.35}
}
/* Every animation is decorative; with reduced motion the page is still, and the theatre shows mid-transit. */
@media (prefers-reduced-motion: reduce){
  .route,.twinkle,.twinkle2,.orbit,.orbitfast,.orbitslow,.clouds,.pulse,.breathe,.sweep,.reveal,.playhead{animation:none!important}
  .sweep{transform:none!important}
  .reveal{transform:none!important}
  .playhead{opacity:0}
  .btn,.nav a,.pill{transition:none}
}

/* ---------- galaxy ---------- */
.gxpresets{flex-wrap:wrap}
.gxstage{position:relative;height:min(76vh,780px);min-height:460px;background:#000;touch-action:none;user-select:none;-webkit-user-select:none}
.gxstage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;outline:none}
.gxstage canvas:active{cursor:grabbing}
.gxstage canvas:focus-visible{box-shadow:inset 0 0 0 2px var(--blue)}
.gxleaders,.gxlayer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}
.gxleaders line{stroke:rgba(255,255,255,.42);stroke-width:1;stroke-dasharray:3 4}
.gxlbl{position:absolute;left:0;top:0;font:500 11px/1 var(--mono);color:var(--stage-dim);white-space:nowrap;will-change:transform}
.gxlbl.tick{color:#64D2FF}
.gxlbl.tick::before{content:"";position:absolute;left:-3px;top:-3px;width:5px;height:5px;border-radius:50%;background:#64D2FF}
.gxlbl.tick span{position:absolute;left:6px;top:4px}
.gxlbl.axis{color:#64D2FF;font:600 12px/1 var(--sans)}
.gxlbl.sun{color:#FFB340;font:600 12px/1 var(--sans)}
.gxlbl.region{color:var(--stage-ink);font:500 12px/1.3 var(--sans);background:rgba(11,15,24,.6);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:6px 9px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.gxlbl.region small{display:block;color:var(--stage-dim);font:500 11px/1.3 var(--mono)}
.gxring{position:absolute;left:0;top:0;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;border:1px solid rgba(255,255,255,.7);box-shadow:0 0 14px 3px rgba(100,210,255,.45),inset 0 0 8px rgba(100,210,255,.4)}
.gxring.ex{border-color:#FFB340;box-shadow:0 0 14px 3px rgba(255,179,64,.5),inset 0 0 8px rgba(255,179,64,.4)}
.gxcall{position:absolute;left:0;top:0;width:224px;padding:10px 12px;border-radius:14px;background:rgba(11,15,24,.72);border:1px solid rgba(255,255,255,.14);color:var(--stage-ink);-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);pointer-events:auto;cursor:pointer;transition:opacity var(--d-1) var(--ease)}
.gxcall.ex{border-color:rgba(255,179,64,.55)}
.gxcall.sel{border-color:#64D2FF}
.gxcall b{display:flex;align-items:center;gap:7px;font:600 14px/1.25 var(--sans)}
.gxcall b i{flex:none;width:8px;height:8px;border-radius:50%}
.gxcall p{margin:3px 0 7px;font:400 12px/1.35 var(--sans);color:var(--stage-dim)}
.gxcall dl{display:grid;grid-template-columns:auto 1fr;gap:1px 10px;margin:0;font:500 11px/1.45 var(--mono)}
.gxcall dt{color:var(--stage-dim)}
.gxcall dd{margin:0;color:var(--stage-ink)}
.gxreticle{position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;pointer-events:none;opacity:.55}
.gxreticle::before,.gxreticle::after{content:"";position:absolute;background:rgba(255,255,255,.75)}
.gxreticle::before{left:18px;top:0;width:1px;height:38px;-webkit-mask:linear-gradient(#000 0 13px,transparent 13px 25px,#000 25px);mask:linear-gradient(#000 0 13px,transparent 13px 25px,#000 25px)}
.gxreticle::after{top:18px;left:0;height:1px;width:38px;-webkit-mask:linear-gradient(90deg,#000 0 13px,transparent 13px 25px,#000 25px);mask:linear-gradient(90deg,#000 0 13px,transparent 13px 25px,#000 25px)}
.gxaim{position:absolute;left:0;top:0;width:26px;height:26px;margin:-13px 0 0 -13px;pointer-events:none;border:1px solid #64D2FF;border-radius:4px;-webkit-mask:conic-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);clip-path:polygon(0 0,35% 0,35% 4%,65% 4%,65% 0,100% 0,100% 35%,96% 35%,96% 65%,100% 65%,100% 100%,65% 100%,65% 96%,35% 96%,35% 100%,0 100%,0 65%,4% 65%,4% 35%,0 35%)}
.gxhud{position:absolute;pointer-events:none;color:var(--stage-ink)}
.gxtr{right:14px;top:14px;display:grid;justify-items:end;gap:8px;max-width:270px}
.gxradar{width:104px;height:104px;overflow:visible}
.gxradar circle{fill:none}
.gxradar .r1{stroke:rgba(100,210,255,.55);fill:rgba(0,0,0,.35)}
.gxradar .r2{stroke:rgba(100,210,255,.18)}
.gxradar .cross{stroke:rgba(100,210,255,.18)}
.gxradar .sw{stroke:rgba(100,210,255,.6)}
.gxradar .swf{fill:rgba(100,210,255,.12)}
.gxradar .fov{fill:rgba(255,255,255,.14);stroke:rgba(255,255,255,.55)}
.gxradar text{fill:#64D2FF;font:600 11px var(--mono)}
.gxradar .sun{fill:#FFB340}
.gxradar .sweep{transform-origin:0 0;animation:gxsweep 4s linear infinite}
@keyframes gxsweep{to{transform:rotate(360deg)}}
.gxtel{margin:0;padding:8px 10px;border-radius:12px;background:rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.1);font:500 11px/1.5 var(--mono);color:var(--stage-dim);white-space:pre;min-width:220px;max-width:270px;overflow:hidden;text-overflow:ellipsis}
.gxtel b{color:#64D2FF;font-weight:600}
.gxbl{left:14px;bottom:14px;display:flex;align-items:center;gap:10px}
.gxorbit{width:40px;height:40px}
.gxorbit .o{fill:none;stroke:rgba(255,255,255,.22)}
.gxorbit .s{fill:#FFB340}
.gxorbit circle:not(.o):not(.s){fill:#64D2FF}
.gxorbit .spin1{animation:gxspin 6s linear infinite}
.gxorbit .spin2{animation:gxspin 14s linear infinite}
@keyframes gxspin{to{transform:rotate(360deg)}}
.gxcounter{margin:0;font:600 22px/1 var(--mono);letter-spacing:.02em;color:var(--stage-ink)}
.gxcounter i{font-style:normal;color:#64D2FF;margin:0 4px}
.gxcounter small{display:block;margin-top:4px;font:500 11px/1 var(--sans);color:var(--stage-dim);letter-spacing:0}
.gxtip{position:absolute;left:0;top:0;z-index:4;pointer-events:none;padding:8px 10px;border-radius:12px;font:500 12px/1.45 var(--sans);color:var(--stage-ink);background:rgba(11,15,24,.85);border:1px solid rgba(255,255,255,.14);max-width:260px}
.gxtip .mono{font-size:11px;color:var(--stage-dim)}
.gxcard{position:absolute;left:14px;top:14px;z-index:5;width:min(320px,calc(100% - 28px));max-height:calc(100% - 120px);overflow:auto;padding:14px;border-radius:18px;background:rgba(11,15,24,.82);border:1px solid rgba(255,255,255,.14);color:var(--stage-ink);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.gxcard h3{margin:0 40px 2px 0;font:600 17px/1.25 var(--sans)}
.gxcard .mono{font-size:12px;color:var(--stage-dim)}
.gxcard ul{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:4px}
.gxcard li button{all:unset;box-sizing:border-box;display:grid;gap:1px;width:100%;min-height:44px;padding:6px 10px;border-radius:10px;cursor:pointer;color:var(--stage-ink);font:500 13px/1.3 var(--sans)}
.gxcard li button span{font:500 11px/1.3 var(--mono);color:var(--stage-dim)}
.gxcard li button:hover,.gxcard li button[aria-pressed="true"]{background:rgba(255,255,255,.08)}
.gxcard li button:focus-visible{outline:2px solid var(--blue)}
.gxcard .x{position:absolute;right:8px;top:8px;width:44px;height:44px;min-height:44px;padding:0;justify-content:center;border-radius:50%}
.gxcard a{color:#64D2FF}
.gxcard p{margin:8px 0 0;font-size:12px;color:var(--stage-dim)}
.gxmw{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);margin:0;padding:6px 12px;border-radius:999px;background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.12);font:500 12px/1.3 var(--sans);color:var(--stage-dim);text-align:center;max-width:calc(100% - 300px)}
.gxpic{position:relative;margin:8px 0 2px;border-radius:var(--r-s);overflow:hidden;background:#000}
.gxpic canvas{display:block;width:100%;height:88px}
.gxpictag{position:absolute;right:6px;top:6px;padding:2px 7px;border-radius:var(--r-xs);background:var(--stage-tag-bg);color:var(--stage-ink);font:500 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;text-decoration:none}
.gxnogl{position:absolute;inset:auto 20px 50% 20px;margin:0;text-align:center;color:var(--stage-dim)}
.gxskel{inset:auto max(20px,calc(50% - 180px)) 45% max(20px,calc(50% - 180px));padding:14px 16px;border-radius:var(--r-m);border:1px solid var(--stage-line);background:rgba(11,15,24,.7);--bg-3:#121826;--line-2:#262F44}
.gxskel .skel:nth-child(2){width:80%}.gxskel .skel:nth-child(3){width:55%}
.gxskel p{margin:10px 0 0;font-size:13px}
.gxfocusnote{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:6;width:max-content;max-width:calc(100% - 28px);margin:0;padding:6px 6px 6px 14px;border-radius:16px;background:rgba(11,15,24,.9);border:1px solid rgba(255,255,255,.14);color:var(--stage-ink);font-size:13px;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.gxfocusnote a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;color:#64D2FF}
.gxfocusnote[hidden]{display:none}
.gxtourbar{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:6;display:flex;align-items:center;gap:6px;padding:6px;border-radius:999px;background:rgba(11,15,24,.82);border:1px solid rgba(255,255,255,.14);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:var(--stage-ink)}
.gxtourbar[hidden],.gxcard[hidden],.gxtip[hidden],.gxaim[hidden],.gxmw[hidden],.gxnogl[hidden]{display:none}
.gxtourbar .btn{min-height:44px;min-width:44px;justify-content:center}
.gxtourbar .mono{font-size:12px;padding:0 6px;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}
.gxsheet{border:1px solid var(--line);border-radius:var(--r);background:var(--glass);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}
.gxsheet>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:4px 16px;cursor:pointer;font-weight:600;font-size:14px;list-style:none}
.gxsheet>summary::-webkit-details-marker{display:none}
.gxsheet>summary .mono{font-weight:500;color:var(--ink-2);font-size:13px}
.gxcontrols{display:grid;gap:12px;padding:0 16px 16px}
.gxtime{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.gxtime input{flex:1 1 240px;min-width:0;min-height:44px;accent-color:var(--blue)}
.gxtime output{font-size:14px;min-width:150px}
.covchips .chip i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px}
.covchips .chip[aria-pressed="false"] i{opacity:.4}
.covpanel{display:grid;gap:10px}
.covpanel h3{margin:6px 0 0;font-size:15px}
.covpanel p{margin:0}
.gxmethods .chip i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px}
.gxmethods .chip .mono{color:var(--ink-3);margin-left:6px;font-size:12px}
.gxmethods .chip[aria-pressed="true"] .mono{color:inherit}
.gxmethods .chip[aria-pressed="false"]{color:var(--ink-3)}
.gxmethods .chip[aria-pressed="false"] i{background:transparent!important;box-shadow:inset 0 0 0 1px var(--ink-3)}
.gxrow{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.gxsel{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.gxsel select{min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 14px var(--sans)}
.gxkeys{margin:0;font-size:12px}
.gxnotes{display:grid;gap:8px}
.gxnotes .note{margin:0}
.gxnotes a{overflow-wrap:anywhere}
.gxnotable ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.gxnotable li{display:grid;gap:2px;border:1px solid var(--line);border-radius:14px;padding:4px}
.gxnot{all:unset;box-sizing:border-box;display:grid;gap:2px;min-height:44px;padding:8px 10px;border-radius:10px;cursor:pointer}
.gxnot:hover{background:var(--panel-2)}
.gxnot:focus-visible{outline:2px solid var(--blue)}
.gxnot b{font-size:14px}
.gxnot span{font-size:13px;color:var(--ink-2)}
.gxref{display:inline-flex;align-items:center;min-height:44px;padding:0 10px;font-size:12px}
.gxtablecard summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font-weight:600}
.gxtable{width:100%;border-collapse:collapse;font-size:13px}
.gxtable th,.gxtable td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.gxtable .num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
.gxtablecard a{display:inline-flex;align-items:center;min-height:44px}
/* the Overview's teaser */
.gxteaser{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;min-height:360px;background:#000}
.gxtcanvas{width:100%;height:100%;min-height:360px;display:block}
.gxtcopy{padding:28px 32px 28px 8px;display:grid;gap:10px;justify-items:start}
.gxtcopy h2{margin:0;font:600 clamp(24px,3vw,34px)/1.1 var(--sans);letter-spacing:-.02em;color:var(--stage-ink)}
.gxtcopy p{margin:0;color:var(--stage-dim)}
.gxtcopy .small{font-size:12px}
@media (max-width:699.98px){
  .gxstage{height:64vh;min-height:380px;border-radius:20px}
  .gxtr{right:8px;top:8px;gap:6px}
  .gxradar{width:68px;height:68px}
  .gxtel{display:none}
  .gxstage.sel .gxtr,.gxstage.sel .gxbl{display:none}
  .gxbl{left:10px;bottom:10px}
  .gxorbit{display:none}
  .gxcounter{font-size:17px}
  .gxcall{width:150px;padding:7px 9px}
  .gxcall p,.gxcall dl dt:nth-of-type(n+3),.gxcall dl dd:nth-of-type(n+3){display:none}
  .gxcard{left:8px;right:8px;top:auto;bottom:8px;width:auto;max-height:55%}
  .gxmw{bottom:auto;top:84px;max-width:calc(100% - 100px);left:10px;transform:none;text-align:left;font-size:11px}
  .gxtourbar{top:auto;bottom:62px;max-width:calc(100% - 16px)}
  .gxtourbar .mono{max-width:96px}
  .gxtourbar #gxtexit{padding:0 10px}
  .gxsheet{position:sticky;bottom:max(8px,env(safe-area-inset-bottom,0px));z-index:15;box-shadow:0 -12px 30px -16px rgba(0,0,0,.6)}
  .gxsheet[open] .gxcontrols{max-height:52vh;overflow:auto}
  .gxtime output{min-width:0}
  .gxmethods .chip,.gxsheet .chip,.gxsheet .btn{min-height:44px}
  .gxteaser{grid-template-columns:1fr}
  .gxtcanvas{min-height:260px;height:260px}
  .gxtcopy{padding:0 18px 22px}
  .gxkeys{display:none}
}
@media (prefers-reduced-motion: reduce){
  .gxradar .sweep,.gxorbit .spin1,.gxorbit .spin2{animation:none!important}
  .gxcall{transition:none}
}

/* ---------- methods ---------- */
#route-methods{grid-template-columns:minmax(0,1fr)}
#route-methods>*{min-width:0}
.mxtoc ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.mxtoc a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink-2);text-decoration:none;font-size:13px;font-weight:500}
.mxtoc a .mono{font-size:11px;color:var(--ink-3)}
.mxtoc a[aria-current="step"]{background:var(--seg-bg);color:var(--seg-ink);border-color:transparent}
.mxtoc a[aria-current="step"] .mono{color:inherit;opacity:.7}
.mxch{display:grid;gap:16px}
#route-methods>header.deep p,#route-methods>header.deep~.mxch>header h2{display:none}
#route-methods>header.deep~.mxch>header .eyebrow{margin:0}
.mxch[hidden]{display:none}
.mxch>header h2{margin:0;font:600 clamp(26px,3.4vw,40px)/1.08 var(--sans);letter-spacing:-.02em}
.mxch>header .eyebrow{margin:0 0 6px}
.mxlede{margin:0;max-width:78ch;font-size:17px;line-height:1.55;color:var(--ink)}
.mxstage{margin:0;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
.mxstage.stage{padding:8px 8px 12px}
.mxstage.stage .mxbadges,.mxstage.stage .mxctl,.mxstage.stage .mxdesc{padding:0 6px}
.mxart{display:inline-flex;align-items:center;min-height:44px;font:500 12px/1.4 var(--sans);color:var(--stage-ink);text-underline-offset:3px}
.mxart[hidden]{display:none}
.mxch{grid-template-columns:minmax(0,1fr)}
.mxch>*{min-width:0}
.mxcanvas{position:relative;height:clamp(300px,52vh,520px);border-radius:calc(var(--r-m) - 4px);overflow:hidden;background:#000;border:1px solid var(--stage-line)}
.mxstage.tall .mxcanvas{height:clamp(420px,66vh,640px)}
.mxcanvas canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.mxbadges{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
.mxlabel{padding:4px 10px;border-radius:999px;font:600 11px/1.4 var(--sans);letter-spacing:.02em;border:1px solid}
.mxlabel.ill{color:var(--ink-2);border-color:var(--line-3)}
.mxlabel.model{color:var(--amber);border-color:var(--amber)}
.mxlabel.data{color:var(--green);border-color:var(--green)}
.mxlabel.spec{color:var(--magenta);border-color:var(--magenta)}
.mxexag{min-width:0;padding:4px 10px;border-radius:10px;font:500 11px/1.4 var(--mono);color:var(--ink);background:var(--panel-2);border:1px solid var(--line-2)}
.mxexag[hidden],.mxexag:empty{display:none}
.mxctl{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.mxctl .btn{min-height:44px}
.mxctl label{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.mxctl select{min-height:44px;padding:0 10px;border-radius:12px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 14px var(--sans)}
.mxctl input[type=range]{min-height:44px;accent-color:#0A84FF}
.mxscrub{flex:1 1 200px;min-width:0}
.mxeq{display:grid;gap:10px;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.mxeqf{margin:0;font-size:16px}
.mxterms{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px 18px}
.mxterm{display:grid;grid-template-columns:110px 1fr 64px;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.mxterm input{min-height:44px;accent-color:#0A84FF;min-width:0}
.mxpresets{display:flex;flex-wrap:wrap;gap:8px}
.mxpresets .btn{min-height:44px}
.mxresult{margin:0;font:600 18px var(--sans)}
.mxknown .kn{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid}
.kn.measured{color:var(--green);border-color:var(--green)}
.kn.constrained{color:var(--amber);border-color:var(--amber)}
.kn.unknown{color:var(--ink-3);border-color:var(--line-3)}
.mxlam input{width:140px}
.mxtogs{display:inline-flex;flex-wrap:wrap;gap:6px}
.mxtog{min-width:44px;justify-content:center}
.mxtog[aria-pressed="true"]{background:var(--btn-bg);color:var(--btn-ink)}
.mxlab input[type=range]{width:140px}
.mxdesc{font-size:13px;color:var(--ink-3);max-width:90ch}
.mxtext{display:grid;gap:12px;max-width:100ch}
.mxtext h3,.mxcheck h3{margin:6px 0 0;font-size:18px}
.mxtext p{margin:0;line-height:1.6;overflow-wrap:anywhere}
.mxtext{min-width:0}
.mxnums{width:100%;border-collapse:collapse;font-size:13px}
.mxnums th,.mxnums td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.mxnums .num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.mxnums td:last-child{color:var(--ink-3)}
.mxcount{margin:0}
.mxyears{margin:0;max-width:520px}
.mxyears svg{width:100%;height:90px;display:block}
.mxyrs{margin:0;display:flex;justify-content:space-between;font:500 11px var(--mono);color:var(--ink-3)}
.mxyears figcaption{font-size:12px;color:var(--ink-3)}
.mxladder{position:relative;height:150px;margin:8px 0 0;border-top:1px solid var(--line)}
.mxladder div{position:absolute;left:var(--x);top:0;height:100%}
.mxladder div i{position:absolute;left:-1px;top:0;width:2px;height:24px;background:var(--cyan)}
.mxladder div:nth-child(odd) span{top:28px}
.mxladder div:nth-child(even) span{top:76px}
.mxladder .mxaxis span{position:static;transform:none}
@media (max-width:499.98px){
  .mxladder{height:auto;border-top:0;display:grid;gap:6px}
  .mxladder div{position:relative;left:0;height:auto;padding-left:calc(var(--x) * 0.6 + 12px)}
  .mxladder div i{top:3px;left:calc(var(--x) * 0.6);height:12px}
  .mxladder div span,.mxladder div:nth-child(odd) span,.mxladder div:nth-child(even) span,.mxladder div.l span,.mxladder div.r span{position:static;transform:none;white-space:normal}
}
.mxladder div span{position:absolute;left:0;transform:translateX(-50%);white-space:nowrap;font-size:12px;color:var(--ink-2)}
.mxladder div.l span{transform:none}
.mxladder div.r span{transform:translateX(-100%)}
.mxladder .mxaxis{position:absolute;left:0;right:0;bottom:0;margin:0;display:flex;justify-content:space-between;font:500 11px var(--mono);color:var(--ink-3)}
@media (max-width:499.98px){
  /* Phone: the axis sits below the last rung, with room, at the rungs' 0.6 scale (after the rule above, so it wins). */
  .mxladder .mxaxis{position:relative;width:60%;height:24px;margin-top:14px;border-top:1px solid var(--line)}
  .mxladder .mxaxis span{position:absolute;top:6px;white-space:nowrap}
  .mxladder .mxaxis span:nth-child(2),.mxladder .mxaxis span:nth-child(4){display:none}
  .mxladder .mxaxis span:nth-child(1){left:0}
  .mxladder .mxaxis span:nth-child(3){left:50%;transform:translateX(-50%)}
  .mxladder .mxaxis span:nth-child(5){right:0}
}
.mxsteps{margin:0;padding-left:20px;display:grid;gap:10px;line-height:1.55}
.mxcontrast{display:grid;gap:4px;margin:6px 0}
.mxcontrast ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.mxcontrast li,.mxcontrast .ax{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:12px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.mxcontrast .ax{border:0;padding:0}
.mxcontrast .lab{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;font-size:12px;color:var(--ink-3);min-width:0}
.mxcontrast .lab b{color:var(--ink);font-size:13px}
.mxcontrast .lab .mono{color:var(--ink-2)}
.mxcontrast .cond{flex-basis:100%}
.mxcontrast .track{position:relative;height:20px;border-left:1px solid var(--line-2);border-right:1px solid var(--line-2);background:linear-gradient(var(--line-2),var(--line-2)) center/100% 1px no-repeat}
.mxcontrast .ax .track{background:none;border:0;height:16px}
.mxcontrast .ax .track span{position:absolute;top:0;transform:translateX(-50%);font:500 11px var(--mono);color:var(--ink-3);white-space:nowrap}
.mxcontrast .ax .track span:nth-child(even){display:none}
.mxcontrast .track i{position:absolute;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;background:var(--cyan)}
.mxcontrast li.goal .track i,.mxcontrast li.requirement .track i{background:transparent;border:2px solid var(--cyan)}
.mxcontrast li.target .track i{background:var(--amber)}
.mxmols{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.mxmol{border:1px solid var(--line);border-radius:16px;padding:12px 14px;background:var(--glass-2)}
.mxclaims{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;margin:8px 0 14px}
.mxclaim,.mxseti{border:1px solid var(--line);border-radius:16px;padding:12px 14px;background:var(--glass-2);min-width:0}
.mxclaim h4,.mxseti h4{margin:4px 0 6px;font-size:16px}
.mxclaim p,.mxseti p{margin:0 0 6px;font-size:13.5px;line-height:1.5}
.mxseti{margin:14px 0;border-style:dashed}
.mxstatus{display:inline-block;margin:0;padding:3px 10px;border-radius:999px;border:1px solid;font:600 11px/1.4 var(--sans);letter-spacing:.02em}
.mxstatus.tent{color:var(--amber);border-color:var(--amber)}
.mxstatus.cont{color:var(--coral);border-color:var(--coral)}
.mxstatus.cand{color:var(--cyan);border-color:var(--cyan)}
.mxstatus.seti{color:var(--ink-2);border-color:var(--line-3)}
.mxmol.on{border-color:var(--cyan)}
.mxmol h4{margin:0 0 6px;font-size:16px}
.mxmol h4 span{font-weight:500;color:var(--ink-3);font-size:13px;margin-left:6px}
.mxmol dl{margin:0;display:grid;gap:4px;font-size:12.5px}
.mxmol dt{color:var(--ink-3);font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.mxmol dd{margin:0 0 4px}
.mxmol ul{margin:0;padding-left:16px}
.mxcheck{display:grid;gap:10px;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.mxcheck ol{margin:0;padding-left:20px;display:grid;gap:6px}
.mxcheck p{margin:0}
.mxcases{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.mxcases article{border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.mxcases h4{margin:0 0 6px}
.mxcases p{font-size:13px;line-height:1.55}
.mxsrc{margin:0;padding-left:18px;display:grid;gap:2px;font-size:12.5px}
.mxsrc a{display:inline-flex;align-items:center;min-height:32px}
.mxsources summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font-weight:600}
.mxnav{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:14px}
.mxnav .btn{min-height:44px}
.mxtimeline{list-style:none;margin:0;padding:0 0 0 18px;border-left:1px solid var(--line-2);display:grid;gap:14px}
.mxpaper{position:relative;display:grid;grid-template-columns:64px 1fr;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--glass-2)}
.mxpaper::before{content:"";position:absolute;left:-24px;top:22px;width:11px;height:11px;border-radius:50%;background:var(--cyan)}
.mxpaper.own{border-color:var(--amber)}
.mxpaper.own::before{background:var(--amber)}
.mxpaper .yr{font-size:18px;font-weight:600;color:var(--ink)}
.mxpaper h4{margin:2px 0 4px;font:600 15px/1.35 var(--sans)}
.mxpaper p{margin:0;font-size:13px;line-height:1.5}
.mxpaper .au{color:var(--ink-3);font-size:12px}
.mxpaper .why{color:var(--ink-2)}
.mxpaper .links{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:4px}
.mxpaper .links a{display:inline-flex;align-items:center;min-height:44px}
.mxsheet{width:min(920px,calc(100vw - 24px));max-height:calc(100vh - 24px);padding:16px;border-radius:24px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink)}
.mxsheet::backdrop{background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.mxsheethead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.mxsheethead h2{margin:0;font-size:20px}
.mxsheethead .btn{min-height:44px}
.mxsheetnote{margin:8px 0 0;font-size:12.5px;color:var(--ink-3)}
.gxsys{margin-top:4px}
.mxsheetzoom{margin:8px 0 0;font-size:12.5px;color:var(--ink-2)}
/* the zoom lens: a rim that opens from the chosen point, and its label (the sheet's clip-path does the reveal) */
.mxlens{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:inherit;z-index:3}
.mxlens i{position:absolute;display:block;transform:translate(-50%,-50%);border-radius:50%;border:2px solid rgba(255,255,255,.75);box-shadow:0 0 0 1px rgba(0,0,0,.45),inset 0 0 24px rgba(100,210,255,.35)}
.mxlens span{position:absolute;left:50%;top:64px;transform:translateX(-50%);max-width:calc(100% - 24px);padding:6px 12px;border-radius:999px;background:rgba(28,28,30,.86);border:1px solid rgba(255,255,255,.16);color:#F5F5F7;font:500 12px/1.4 var(--sans);text-align:center}
/* the survey-scan intro over the Sky and Galaxy maps: no pointer capture except its Skip button */
.mxintro{position:absolute;inset:0;z-index:6;pointer-events:none;transition:opacity var(--d-2) var(--ease)}
.mxintro.out{opacity:0}
.mxintro canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.mxintrobar{position:absolute;right:12px;top:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;max-width:calc(100% - 24px);color:#F5F5F7}
.mxintrobar .mxlabel.ill{color:#C7C7CC;border-color:rgba(255,255,255,.3);background:rgba(0,0,0,.5)}
.mxintrocap{font-size:12px;color:#C7C7CC;padding:4px 10px;border-radius:999px;background:rgba(0,0,0,.5)}
.mxintro .mxskip{pointer-events:auto;min-height:44px;color:#F5F5F7;background:rgba(28,28,30,.86);border-color:rgba(255,255,255,.22)}
@media (max-width:599.98px){.mxintrocap{display:none}}
@media (prefers-reduced-motion: reduce){.mxintro{display:none}.mxintro,.mxlens i,.mxlens span{transition:none;animation:none}}
/* the stylised Lyot plate: drawn in the page's ink, so it follows the theme */
.mxplate{margin:4px 0 0;display:grid;gap:8px;max-width:900px}
.mxplate svg{width:100%;height:auto;display:block;color:var(--ink-2);font:500 11px var(--sans)}
.mxplate svg.v{display:none;max-width:420px}
@media (max-width:599.98px){.mxplate svg.h{display:none}.mxplate svg.v{display:block}}
.mxplate svg text{fill:var(--ink-2);font-family:var(--sans);font-size:11px;letter-spacing:0}
.mxplate svg text.sm{fill:var(--ink-3)}
.mxplate .pf{fill:var(--panel-2);stroke:var(--line-3)}
.mxplate .pf2{fill:none;stroke:var(--line-2)}
.mxplate .axis{stroke:var(--line-3);stroke-dasharray:2 5;fill:none}
.mxplate .st{stroke:var(--amber);stroke-width:1.3;fill:none}
.mxplate .df{stroke:var(--amber);stroke-width:1;stroke-dasharray:3 3;fill:none;opacity:.8}
.mxplate .cp{stroke:var(--cyan);stroke-width:1.2;fill:none}
.mxplate .ln{fill:var(--cyan-soft);stroke:var(--ink-2);stroke-width:1.1}
.mxplate .disc{fill:var(--ink)}
.mxplate .rod{stroke:var(--ink-3);stroke-width:1}
.mxplate .stop{stroke:var(--ink);stroke-width:5;stroke-linecap:round}
.mxplate .det{stroke:var(--ink-2);stroke-width:3}
.mxplate .im{fill:#000}
.mxplate .fr{fill:none;stroke:var(--line-3)}
.mxplate .g0{fill:#FFF8E7}.mxplate .g1{fill:rgba(255,190,90,.75)}.mxplate .g2{fill:rgba(94,42,140,.7)}.mxplate .g3{fill:none;stroke:rgba(255,190,90,.25);stroke-width:5}
.mxplate .blk{fill:#000}
.mxplate .rim{fill:rgba(255,190,90,.9)}
.mxplate .stp{fill:none;stroke:#64D2FF;stroke-dasharray:2 2}
.mxplate .pl{fill:#64D2FF}
.mxmodes{margin:0;padding-left:16px;display:grid;gap:4px}
.mxmodes a{display:inline-flex;align-items:center}
@media (max-width:699.98px){
  .mxcanvas{height:min(62vh,440px)}
  .mxstage.tall .mxcanvas{height:min(76vh,560px)}
  .mxstage[data-vis="cgfam"] .mxcanvas{height:min(84vh,660px)}
  .mxtoc ol{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .mxtoc ol::-webkit-scrollbar{display:none}
  .mxtoc a{white-space:nowrap}
  .mxpaper{grid-template-columns:1fr}
  /* Numbers tables become cards on a phone: one block per row, the value left-aligned under its name. */
  .mxnums thead{display:none}
  .mxnums,.mxnums tbody,.mxnums tr,.mxnums th,.mxnums td{display:block;width:auto}
  .mxnums tr{padding:10px 0;border-bottom:1px solid var(--line)}
  .mxnums th,.mxnums td{border:0;padding:2px 0;text-align:left}
  .mxnums .num{text-align:left;white-space:normal;font-size:15px;color:var(--ink)}
  .mxnums td:last-child{font-size:12px}
  .mxcontrast li,.mxcontrast .ax{grid-template-columns:1fr}
  .mxcontrast .ax .lab{display:none}
  .mxsrc a,.mxmodes a{min-height:44px}
}

/* ---------- catalogue ---------- */
#route-catalogue,#route-planet,#route-star{grid-template-columns:minmax(0,1fr)}
#route-catalogue>*,#route-planet>*,#route-star>*{min-width:0}
.ctfilters{display:grid;gap:12px}
.ctsearch input{width:100%;min-height:48px;padding:0 16px;border-radius:14px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 16px var(--sans)}
.ctmore summary{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-weight:600;list-style:none}
.ctmore summary::-webkit-details-marker{display:none}
.ctmore summary::before{content:"›";display:inline-block;transition:transform var(--d-1) var(--ease);color:var(--ink-3)}
.ctmore[open] summary::before{transform:rotate(90deg)}
.ctranges{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:6px}
.ctrange{border:1px solid var(--line);border-radius:12px;padding:6px 10px 10px;display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0;min-width:0}
.ctrange legend{font-size:12px;color:var(--ink-3);padding:0 4px}
.ctrange input{min-width:0;min-height:44px;padding:0 10px;border-radius:10px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 14px var(--mono)}
.ctchecks{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.ctbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ctbar p{margin:0 auto 0 0;font-size:13px}
.ctbar .btn,.ctfilters .chip{min-height:44px}
.ctfilters .chip .mono{color:var(--ink-3);margin-left:6px;font-size:12px}
.cttable{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--glass-2)}
.cthead,.ctrow{display:grid;grid-template-columns:minmax(150px,1.6fr) minmax(120px,1.3fr) 64px minmax(110px,1fr) repeat(6,minmax(84px,.8fr));align-items:center}
.cthead{border-bottom:1px solid var(--line-2);background:var(--panel)}
.cth{all:unset;box-sizing:border-box;min-height:44px;padding:0 10px;font:600 12px var(--sans);color:var(--ink-2);cursor:pointer;display:flex;align-items:center}
.cth.num{justify-content:flex-end}
.cth:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
.cth[aria-sort="ascending"]::after{content:" ▲";font-size:11px}
.cth[aria-sort="descending"]::after{content:" ▼";font-size:11px}
.ctscroll{position:relative;height:min(64vh,640px);overflow:auto;contain:strict}
.ctspacer{position:relative;width:100%}
.ctrow{position:absolute;left:0;right:0;height:44px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font-size:13px}
.ctrow:hover,.ctrow:focus-visible{background:var(--panel-2)}
.ctrow>span{padding:0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.ctrow .num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}
.ctrow .na{color:var(--ink-3)}
.ctrow b{font-weight:600}
.ctrow>span>i[style],.ctcard>span>i[style]{font-style:normal;display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.ctscroll[hidden],.ctempty[hidden]{display:none}
.ctempty{margin:0;padding:24px;border:1px solid var(--line);border-radius:var(--r);background:var(--glass-2);display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.ctempty a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line-2);text-decoration:none}
/* A phone card: the same ten cells, in flex rows (cheaper to lay out than a grid). Containment on each card
   was measured too: at 4× CPU throttle it doubled style time, so only the scroller is contained. */
.ctcard{position:absolute;left:0;right:0;height:128px;padding:8px 14px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;display:flex;flex-wrap:wrap;align-content:center;column-gap:12px;row-gap:1px;overflow:hidden}
.ctcard>span{flex:0 0 calc(50% - 6px);font-size:12px;line-height:17px;color:var(--ink-2);white-space:nowrap;overflow:hidden}
.ctcard>span[role="rowheader"],.ctcard>span:nth-child(2){flex-basis:100%}
.ctcard>span[role="rowheader"]{font-size:15px;line-height:21px;color:var(--ink)}
/* A value that is not stored stays in the table for screen readers, but takes no room on the card. */
.ctcard>span.na{flex:0 0 0;width:0;height:0;overflow:hidden;margin-left:-12px}


.ctcard .na{color:var(--ink-3)}
.plgrid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px;align-items:start}
.plmore{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:16px;align-items:stretch}
.plmore>.card{min-width:0}
.plgrid[hidden],.plmore[hidden],#route-planet .card[hidden]{display:none}
.plparams{display:grid;gap:8px}
.plparams h2,.plmore h2,#route-planet .card>h2{margin:0 0 6px;font-size:17px}
.pltable{width:100%;border-collapse:collapse;font-size:13px}
.pltable th,.pltable td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.pltable td.v{font-family:var(--mono);font-variant-numeric:tabular-nums}
.pltable .na{color:var(--ink-3)}
.pllist{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.pllist a{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:0 10px;border-radius:10px;text-decoration:none;color:var(--ink)}
.pllist a:hover{background:var(--panel-2)}
.pllist a[aria-current="page"]{background:var(--panel-2);font-weight:600}
.pllist .mono{font-size:12px;color:var(--ink-3)}
.pllinks{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.pllab{flex-basis:100%;font-size:12px;color:var(--ink-3)}
.pllinks a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line-2);text-decoration:none}
.plsky{width:100%;max-width:420px;height:auto;display:block}
.plsky text{fill:var(--ink-3);font:500 11px var(--mono)}
.stsysw{display:grid;gap:10px;min-width:0}
.stpick{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--ink-2)}
.stpick select{min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 14px var(--sans);max-width:100%}
.gsearch{width:min(640px,calc(100vw - 24px));margin-top:10vh;padding:12px;border-radius:20px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--ink)}
.gsearch::backdrop{background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.gsfield input{width:100%;min-height:52px;padding:0 16px;border-radius:14px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 17px var(--sans)}
.gsresults{list-style:none;margin:10px 0 0;padding:0;max-height:min(60vh,520px);overflow:auto;display:grid;gap:2px}
.gsresults a{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:0 12px;border-radius:12px;text-decoration:none;color:var(--ink)}
.gsresults [aria-selected="true"] a{background:var(--seg-bg);color:var(--seg-ink)}
.gsresults .kind{font:500 11px var(--mono);color:var(--ink-3);text-transform:uppercase}
.gsresults [aria-selected="true"] .kind{color:inherit;opacity:.7}
.gshint{margin:8px 4px 0;font-size:12px;color:var(--ink-3)}
.ctrow{content-visibility:auto;contain-intrinsic-size:auto 44px}
.ctcard{content-visibility:auto;contain-intrinsic-size:auto 128px}
.ctdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:baseline;box-shadow:0 0 0 1px var(--line-2)}
.ctdot.none{background:transparent}
.ctcls{display:inline-block;margin-left:6px;padding:0 6px;border-radius:var(--r-pill);border:1px solid var(--line-2);font:500 11px/1.4 var(--mono);color:var(--ink-3);vertical-align:1px}
.ctrow .ctcls{display:none}
@media (min-width:1100px){.ctrow .ctcls{display:inline-block}}
.ctstrip{display:grid;gap:6px;margin:6px 0 10px}
.ctstriplab{margin:0;font-size:12px;color:var(--ink-3)}
.ctstrip .tsbar{height:46px}  /* the two handles fill the bar inside its border: a 44 px target on a phone */
.gsresults .ctdot{width:16px;height:16px;vertical-align:-3px}
.plextra{display:grid;gap:16px}
.stubfig{max-width:420px}
.stubstar{display:flex;align-items:center;gap:14px;margin:0;color:var(--ink-2);font-size:14px}
.stubstar svg{flex:none}
.plextra:empty{display:none}
.plhero{display:grid;grid-template-columns:minmax(0,520px) minmax(0,300px);gap:16px;align-items:start}
.plhero.solo{grid-template-columns:minmax(0,300px) minmax(0,1fr)}
.plnone{margin:0;align-self:center;color:var(--ink-2)}
.plhero .readout,.sthero .readout{font-size:12px;line-height:1.45}
.sthero{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:16px;align-items:start}
.sthero>.orbits,.sthero>.tstrip{grid-column:1/-1}
.plthumbs a{justify-content:flex-start}
.plthumbs .mono{margin-left:auto}
.plthumb{width:40px;height:40px;border-radius:50%;flex:none;background:#000}
.plthumb.none{display:inline-block;border:1px dashed var(--line-2);background:none}
@media (prefers-reduced-motion: reduce){.ctmore summary::before{transition:none}}
@media (max-width:699.98px){.plhero,.plhero.solo,.sthero{grid-template-columns:minmax(0,1fr)}.plextra a.stage-tag{min-height:44px;min-width:44px}}
@media (max-width:699.98px){
  /* Phone: the column headers stay (one per cell) as a row of sort buttons that scrolls sideways. */
  .cthead{display:flex;gap:6px;padding:6px;overflow-x:auto;overscroll-behavior-x:contain}
  .cth{flex:none;padding:0 12px;border:1px solid var(--line-2);border-radius:999px}
  .ctscroll{height:70vh}
  .plgrid,.plmore{grid-template-columns:minmax(0,1fr)}
}

/* ---------- the Learn path ---------- */
.learncard{display:grid;gap:12px}
.learnhead{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;justify-content:space-between}
.learnhead h2{margin:0 0 4px}
.learnhead p{margin:0;max-width:62ch;color:var(--ink-2)}
.learnbtns{display:flex;flex-wrap:wrap;gap:8px}
.learnbtns .btn{min-height:44px}
.learnmeter{height:8px;border-radius:999px;background:var(--line);overflow:hidden}
.learnmeter i{display:block;height:100%;width:0;background:var(--blue);border-radius:999px;transition:width var(--d-3) var(--ease)}
.learncount{margin:0;font-size:12px;color:var(--ink-3)}
.learnlist summary{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-weight:600;list-style:none}
.learnlist summary::-webkit-details-marker{display:none}
.learnlist summary::before{content:"›";display:inline-block;transition:transform var(--d-1) var(--ease);color:var(--ink-3)}
.learnlist[open] summary::before{transform:rotate(90deg)}
.learnlist ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:4px}
.learnlist a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;min-height:48px;padding:4px 10px;border-radius:12px;color:var(--ink);text-decoration:none}
.learnlist a:hover{background:var(--panel-2)}
.lnum{font-size:12px;color:var(--ink-3)}
.ltxt{display:grid;font-size:14px}
.lkind{font-size:11px;color:var(--ink-3)}
.ltick{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line-3)}
li[data-seen="1"] .ltick{background:var(--green);border-color:var(--green);box-shadow:inset 0 0 0 3px var(--bg-2)}
li[data-next="1"] a{background:var(--panel-2)}
.learnbar{position:fixed;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:40;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;
  width:max-content;max-width:calc(100vw - 24px);padding:8px;border-radius:22px;background:var(--bg-2);background:color-mix(in srgb,var(--bg-2) 90%,transparent);border:1px solid var(--line-2);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 10px 30px rgba(0,0,0,.35)}
.learnbar[hidden]{display:none}
.learnbar .btn{min-height:44px}
.learnbar .lpos{font-size:12px;color:var(--ink-2);padding:0 6px;max-width:42ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.learning main{padding-bottom:96px}
body.learning .ctscroll{height:min(calc(64vh - 76px),640px)}
@media (max-width:699.98px){
  .learnbar{left:12px;right:12px;transform:none;width:auto;flex-wrap:wrap;gap:6px}
  .learnbar .lpos{flex-basis:100%;text-align:center}
  .learnbar .lnt,.learnbar .lpre{display:none}
  body.learning main{padding-bottom:120px}
  body.learning .ctscroll{height:calc(70vh - 100px)}
  body.learning .gxsheet{bottom:calc(98px + env(safe-area-inset-bottom,0px))}
}
@media (prefers-reduced-motion: reduce){.learnmeter i,.learnlist summary::before{transition:none}}

/* ---------- Mission Control ---------- */
#route-mission{grid-template-columns:minmax(0,1fr)}
#route-mission>*{min-width:0}
.mctele{display:flex;flex-wrap:wrap;gap:6px 18px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--glass-2);font-size:12px;color:var(--ink-2)}
.mctele b{color:var(--ink);font-weight:600}
.mctoolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mctoolbar .btn{min-height:44px}
.mchidden{display:flex;flex-wrap:wrap;gap:6px}
.mcgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:clamp(260px,calc((100vh - 372px) / 2),400px);gap:12px}
/* A workspace: compact chrome, so both rows of panes fit a 900 px window. */
#route-mission{gap:10px}
#route-mission .mchero h1{font-size:clamp(26px,2.4vw,34px);margin:0}
#route-mission .mchero p{margin:2px 0 0}
#route-mission .mchero .eyebrow{display:none}
body[data-route="mission"] main{padding-top:14px}
.mctele{padding:6px 12px}
.mckeys{position:relative}
.mckeys summary{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;cursor:pointer;font-weight:600;border-radius:999px;border:1px solid var(--line-2)}
.mckeys p{position:absolute;z-index:20;right:0;top:50px;width:min(420px,80vw);margin:0;padding:12px 14px;border-radius:14px;border:1px solid var(--line-2);background:var(--bg-2);box-shadow:0 10px 30px rgba(0,0,0,.35)}
@media (max-width:699.98px){.mckeys p{position:static;width:auto;margin-top:6px}}
.mcgrid[data-grid="focus"] .mcpane:first-child{grid-column:span 2;grid-row:span 2}
.mcpane{display:flex;flex-direction:column;min-width:0;min-height:0;border:1px solid var(--line-2);border-radius:18px;background:var(--glass-2);overflow:hidden}
.mcpane[hidden]{display:none}
.mcpane:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.mcpane.drop{outline:2px dashed var(--blue);outline-offset:-4px}
.mchead{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 4px 4px 12px;border-bottom:1px solid var(--line);cursor:grab}
.mchead h2{margin:0;font-size:14px;display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap;overflow:hidden}
.mcnum{font-size:11px;color:var(--ink-3)}
.mctools{display:flex;gap:2px;flex:none}
.mcbtn{min-height:44px;min-width:44px;padding:0 10px;font-size:12px}
.mcbody{flex:1;min-height:0;overflow:auto;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.mcbody[hidden]{display:none}
.mcpane[data-pane="galaxy"] .mcbody{padding:0;overflow:hidden;position:relative}
.mcpane .gxstage{height:100%;min-height:0;border-radius:0;flex:1}
.mcpane[data-pane="galaxy"] .mcnote{position:absolute;right:10px;bottom:10px;z-index:7;margin:0;max-width:calc(100% - 20px);padding:6px 10px;border-radius:12px;background:rgba(11,15,24,.85);color:var(--stage-ink);font-size:12px}
.mcpane[data-pane="galaxy"] .mcnote:empty{display:none}
.mcpane .mxstage{margin:0}
.mcpane .mxstage .mxcanvas{min-height:220px}
.mcnote{margin:0;font-size:12.5px;color:var(--ink-3)}
.mccap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 10px;font-size:11px;color:var(--ink-3)}
.mccap:empty{display:none}
.mcpopped{margin:auto;padding:16px;text-align:center;color:var(--ink-2);font-size:13px}
.mcpopped[hidden]{display:none}
.mcpick[hidden],.mcpane .mxstage[hidden],.mcnote[hidden]{display:none}
.mcpopped .btn{min-height:44px;margin-top:8px}
.mcfind input{width:100%;min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 14px var(--sans)}
.mcfound{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.mcfound button,.mccat button{min-height:44px}
.mccat{display:grid;gap:4px}
.mcpick{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.mcpick select{min-height:44px;padding:0 10px;border-radius:12px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);max-width:100%}
.mcpane .feedcards{margin:0;display:grid;gap:8px}
.mcsel{color:var(--ink);font-weight:600}
/* A popped-out window: only its pane, full size. */
body.mcpop .topbar,body.mcpop .pagebar,body.mcpop .sitefoot,body.mcpop .starfield,body.mcpop .skip,body.mcpop .mchero,body.mcpop .mckeys,body.mcpop .mctoolbar,body.mcpop .mctele,body.mcpop #route-mission>.small,body.mcpop .learnbar{display:none}
body.mcpop main{padding:8px}
body.mcpop .mcgrid,body.mcpop .mcgrid[data-grid="focus"]{grid-template-columns:minmax(0,1fr);grid-auto-rows:calc(100vh - 16px)}
body.mcpop .mcpane,body.mcpop .mcgrid[data-grid="focus"] .mcpane:first-child{grid-column:auto;grid-row:auto}
body.mcpop .mctools .btn:not([data-mc="close"]){display:none}
@media (max-width:999.98px){.mcgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Phone: a stacked list, one pane after another; no pop-out windows. */
@media (max-width:699.98px){
  .mcgrid,.mcgrid[data-grid="focus"]{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}
  .mcgrid[data-grid="focus"] .mcpane:first-child{grid-column:auto;grid-row:auto}
  .mcpane{min-height:0}
  .mcpane[data-pane="galaxy"] .mcbody{height:380px;flex:none}
  .mcbody{max-height:none;overflow:visible}
  .mchead{cursor:default}
  .mcpopbtn,[data-mc="focus"]{display:none}
}

/* ---------- everything that dims (#/variables) and the sweep counter ---------- */
#route-variables{grid-template-columns:minmax(0,1fr)}
#route-variables>*{min-width:0}
.cattabs{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);justify-self:start;max-width:100%}
.cattabs a{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:999px;color:var(--ink-2);text-decoration:none;font-weight:500;font-size:14px}
.cattabs a[aria-current="page"]{background:var(--seg-bg);color:var(--seg-ink)}
.vafilters{display:grid;gap:12px}
.vasearch input{width:100%;min-height:48px;padding:0 16px;border-radius:14px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 16px var(--sans)}
.vafilters .chip,.vafilters .btn,.vasort select{min-height:44px}
.vachip i,.vacls i,.sweepcls i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--c);margin-right:6px;flex:none}
.vafilters .chip .mono{color:var(--ink-3);margin-left:4px;font-size:12px}
.vafilters .chip[aria-pressed="true"] .mono{color:inherit;opacity:.7}
.varow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.valab{align-self:center;font-size:12px;color:var(--ink-3);margin-right:2px}
.vasort{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-3)}
.vasort select{padding:0 10px;border-radius:12px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:500 14px var(--sans)}
.valist{display:grid;gap:10px}
.vastrip{position:relative;display:grid;gap:2px}
.vastrip svg{display:block;width:100%;overflow:hidden;height:auto;max-height:64px;border-radius:var(--r-xs);background:var(--panel-2)}
.vastrip .xread{margin:0;font-size:12px}
.vaent{content-visibility:auto;contain-intrinsic-size:auto 180px;display:grid;gap:6px;padding:14px 16px;border:1px solid var(--line);border-left:3px solid var(--c);border-radius:16px;background:var(--glass-2);min-width:0}
.vaent:target,.vaent.sel{outline:2px solid var(--blue);outline-offset:2px}
.vaent header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.vacls{display:inline-flex;align-items:center;font-weight:600}
.vaent header a{display:inline-flex;align-items:center;min-height:44px}
.vaent p{margin:0;font-size:13.5px;color:var(--ink-2);overflow-wrap:anywhere}
.vanum{font-size:12.5px!important;color:var(--ink)!important}
.vaent details summary{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:13px;font-weight:600;list-style:none;color:var(--cyan)}
.vaent details summary::-webkit-details-marker{display:none}
.vaent details summary::before{content:"›";display:inline-block;transition:transform var(--d-1) var(--ease);color:var(--ink-3)}
.vaent details[open] summary::before{transform:rotate(90deg)}
.vaent details>div{display:grid;gap:10px;padding-top:4px}
.vaent h3{margin:0;font-size:12px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}
.vatable{width:100%;border-collapse:collapse;font-size:13px}
.vatable th,.vatable td{padding:7px 9px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.vatable td.num,.vatable th.num{text-align:right;font-variant-numeric:tabular-nums}
.vatable thead th{font-size:12px;color:var(--ink-3);font-weight:500}
.vawords{margin:0;padding:10px 12px;border-radius:12px;background:var(--cyan-soft);font-size:13.5px;color:var(--ink)}
.vawords cite{display:block;font-style:normal;font-size:12px;color:var(--ink-3);margin-top:4px}
.vaprov{font:12px/1.5 var(--mono);color:var(--ink-3);overflow-wrap:anywhere}
.vacredit{font-size:12.5px;color:var(--ink-3)}
.vacredit b{color:var(--ink);font-weight:600}
.vamore{display:flex;justify-content:center}
.vamore .btn{min-height:44px}
.vaobj{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
.vaobj[hidden]{display:none}
.vaobj>*{min-width:0}
.vaobj p{overflow-wrap:anywhere}
.vaall{display:inline-flex;align-items:center;min-height:44px}
.vaobj h2{margin:0;font-size:22px}
.vaobj h2:focus{outline:none}
.vaobjgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:8px 18px;margin:0}
.vaobjgrid div{display:grid;gap:2px;align-content:start}
.vaobjgrid dt{font-size:12px;color:var(--ink-3)}
.vaobjgrid dd{margin:0;font:500 14px var(--mono);overflow-wrap:anywhere}
.vacred{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:14px}
.sweepctr{display:grid;gap:12px}
.sweephead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px}
.sweephead h2{margin:0;font-size:20px}
.sweephead .btn{min-height:44px}
.sweepctr>p{margin:0}
.sweeptiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:1px;background:var(--line);border-radius:16px;overflow:hidden}
.sweeptiles>div{background:var(--panel);padding:14px 16px}
.sweeptiles b{display:block;font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1.1}
.sweeptiles span{font-size:13px;color:var(--ink-2)}
.sweepcls{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:6px}
.sweepcls a{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;column-gap:10px;row-gap:0;min-height:52px;padding:6px 14px;border:1px solid var(--line);border-radius:12px;color:var(--ink);text-decoration:none;font-size:14px}
.sweepcls a:hover{border-color:var(--line-3)}
.sweepcls i{margin:0}
.sweepcls b{font-size:17px;font-weight:600;text-align:right}
.sweepcls em{grid-column:2 / 4;font-style:normal;font-size:11.5px;color:var(--ink-3)}
.vanoise{font-style:normal;font-size:11.5px;color:var(--ink-2)}
.tag.vanoisetag{color:var(--ink-2);border-style:dashed}
.route>header .eyebrow .parent a{display:inline-flex;align-items:center;min-height:44px}
.stsweep[hidden]{display:none}
@media (prefers-reduced-motion: reduce){.vaent details summary::before{transition:none}}
@media (max-width:699.98px){
  .cattabs a{padding:0 14px}
  .vaent{padding:12px}
  .vatable{font-size:12px}
}

#route-leaderboard>header .lead-h{font-size:clamp(28px,3vw,42px)}
.lb{display:grid;gap:10px}
.lb h2 .sub{font:500 12px/1.4 var(--mono);color:var(--ink-3)}
table.lbtable{font:14px var(--sans)}
table.lbtable th,table.lbtable td{white-space:normal;vertical-align:top;padding:10px 12px}
table.lbtable thead th{font:600 11px/1.35 var(--mono);color:var(--ink-3);text-transform:none;letter-spacing:.02em;white-space:normal}
table.lbtable tbody th{font:600 14px/1.35 var(--sans);color:var(--ink);text-transform:none;letter-spacing:0;white-space:normal;min-width:12ch}
table.lbtable .rk{font:600 15px var(--mono);color:var(--ink-2);width:11ch}
table.lbtable .v{display:block;font:600 15px/1.3 var(--mono);color:var(--ink)}
table.lbtable .ci,table.lbtable .kd{display:block;font:12px/1.35 var(--mono);color:var(--ink-3)}
table.lbtable .na{color:var(--ink-3);font-style:italic}
table.lbtable .ci{white-space:nowrap}
.lbrules{margin:0;padding-left:22px;display:grid;gap:8px;color:var(--ink-2);font-size:14px;line-height:1.5;max-width:96ch}
.lbhash dd{font-size:12px}
@media (max-width:699.98px){
  table.lbtable thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.lbtable,table.lbtable tbody{display:block}
  table.lbtable tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 12px;padding:12px;border-top:1px solid var(--line)}
  table.lbtable tbody tr:first-child{border-top:0}
  table.lbtable th,table.lbtable td{display:block;padding:0;border:0;min-width:0}
  table.lbtable tbody th{grid-column:1/-1;order:-1}
  table.lbtable .rk{grid-column:1/-1;order:-2;width:auto}
  table.lbtable td::before{content:attr(data-l);display:block;font:500 11px/1.35 var(--mono);color:var(--ink-3);margin-bottom:2px}
  table.lbtable .rk::before{display:inline;margin:0 6px 0 0}
  .kv.lbhash{grid-template-columns:minmax(0,1fr);gap:2px 0}
  .kv.lbhash dd{margin-bottom:8px}
}
.brandlogo{display:block;height:24px;width:auto;aspect-ratio:579/132;flex:none;max-width:none;align-self:center}.brandlogo.lt{display:none}:root[data-theme="light"] .brandlogo.dk{display:none}:root[data-theme="light"] .brandlogo.lt{display:block}@media (prefers-color-scheme: light){:root[data-theme="system"] .brandlogo.dk{display:none}:root[data-theme="system"] .brandlogo.lt{display:block}}
/* ---------- setuhq.renderer: the starfield and the rendered figures ---------- */
.starfield{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.starfield>img,.starfield>canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.starfield>img[hidden]{display:none}
:root[data-theme="light"] .starfield{display:none}
@media (prefers-color-scheme: light){:root[data-theme="system"] .starfield{display:none}}

/* ---------- the site shell: top bar, menu, breadcrumbs, sub-navigation, footer ---------- */
.topbar{display:block;position:sticky;top:0;z-index:40;padding:env(safe-area-inset-top,0px) max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px));background:color-mix(in oklab,var(--bg) 78%,transparent);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);border-bottom:1px solid var(--line)}
.tbin{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:12px;min-height:60px}
.tbin .brand{flex:none;padding:0;align-self:center;transform:none}
.brand .brandname{line-height:1.2}
.nav{flex:1 1 auto;display:flex;justify-content:center;min-width:0}
.nav ul{padding:3px}
.nav a{min-height:38px;padding:0 16px;font-size:14px}
.nav a[aria-current="page"]{background:var(--seg-bg);color:var(--seg-ink)}
.tools{display:flex;align-items:center;gap:2px;margin-left:auto;flex:none}
.iconbtn{width:44px;height:44px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--ink-2);display:inline-grid;place-items:center;cursor:pointer;padding:0;transition:background-color var(--d-1) var(--ease),color var(--d-1) var(--ease)}
.iconbtn:hover{color:var(--ink);background:var(--panel-2)}
.iconbtn svg{width:20px;height:20px;display:block}
.iconbtn kbd{display:none}
.themebtn .ti{display:none}
:root[data-theme="dark"] .themebtn .ti-dark,:root[data-theme="light"] .themebtn .ti-light,:root[data-theme="system"] .themebtn .ti-system{display:block}
.menubtn{display:none}
.menubtn .mi-close,.menubtn[aria-expanded="true"] .mi-open{display:none}
.menubtn[aria-expanded="true"] .mi-close{display:block}
.menu{position:absolute;left:0;right:0;top:100%;background:var(--bg-2);border-bottom:1px solid var(--line-2);box-shadow:0 24px 40px -24px rgba(0,0,0,.6);max-height:calc(100vh - var(--top,60px));max-height:calc(100dvh - var(--top,60px));overflow-y:auto;overscroll-behavior:contain;padding:8px max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.menu[hidden]{display:none}
.menu ul{list-style:none;margin:0;padding:0}
.menu>nav>ul{display:grid;gap:4px}
.menu .msec{border-top:1px solid var(--line);padding:6px 0 10px}
.menu .msec:first-child{border-top:0}
.menu .msec>a{display:flex;align-items:center;min-height:48px;padding:0 8px;border-radius:12px;color:var(--ink);text-decoration:none;font-size:18px;font-weight:600;letter-spacing:-.02em}
.menu .msec>a[aria-current="page"]{color:var(--cyan)}
.menu .msub{display:flex;flex-wrap:wrap;gap:6px;padding:0 8px}
.menu .msub a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;color:var(--ink-2);text-decoration:none;font-size:14px}
.pagebar{padding:14px clamp(16px,3vw,40px) 0}
.pbin{max-width:1280px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}
.crumbs{flex:1 1 100%}
.crumbs[hidden]{display:none}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;font-size:13px;color:var(--ink-3)}
.crumbs li{display:inline-flex;align-items:center;min-width:0}
.crumbs li+li::before{content:"›";margin:0 8px;color:var(--ink-3)}
.crumbs a{color:var(--ink-2);text-decoration:none;display:inline-flex;align-items:center;min-height:32px}
.crumbs a:hover{color:var(--ink);text-decoration:underline}
.crumbs li[aria-current]{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40ch}
.subnav{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.subnav[hidden]{display:none}
.subnav a{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--line);color:var(--ink-2);text-decoration:none;font-size:13px;font-weight:500;white-space:nowrap}
.subnav a:hover{color:var(--ink);border-color:var(--line-3)}
.subnav a[aria-current="page"]{background:var(--seg-bg);color:var(--seg-ink);border-color:transparent}
.pagetools{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pagetools .btn[hidden]{display:none}
main{padding-top:24px}
body[data-route="overview"] main{padding-top:8px}
.provnote{margin:0;max-width:90ch;color:var(--ink-2)}
.proof b{color:var(--c)}
:root[data-theme="light"] .proof b{color:color-mix(in oklab,var(--c) 42%,#000)}
@media (prefers-color-scheme: light){:root[data-theme="system"] .proof b{color:color-mix(in oklab,var(--c) 42%,#000)}}
.provnote a{color:var(--ink-2)}
/* the home page */
.route>header.launch{padding:28px 0 0}
.launch h1{margin:0;font-size:clamp(44px,7vw,96px)}
.route>header.launch .sub{margin:16px auto 0}
.launch .ctas{margin-top:24px}
.planetfig{margin:28px 0 0;background:transparent;border-radius:0;overflow:visible}
.planetfig svg{border-radius:28px;border:1px solid rgba(255,255,255,.06);height:clamp(140px,17vw,240px)!important}
.sweepline{margin:0;font-size:17px;line-height:1.5;color:var(--ink-2);max-width:72ch}
.sweepline a{white-space:nowrap}
.planetfig figcaption{position:static;margin:8px 4px 0;font-size:12px;color:var(--ink-3);text-align:left}
.proof{margin:0 auto}
.dohere{display:grid;gap:14px}
.dohere h2{font-size:15px;color:var(--ink-3);font-weight:500}
.docards{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}
.docard{position:relative;display:flex;flex-direction:column;gap:6px;height:100%;padding:18px 40px 18px 18px;border-radius:20px;border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);color:var(--ink);text-decoration:none;transition:border-color var(--d-1) var(--ease),transform var(--d-2) var(--ease)}
.docard:hover{border-color:var(--line-3);color:var(--ink);transform:translateY(-2px)}
.docard b{font-size:17px;font-weight:600;letter-spacing:-.02em}
.docard span{font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.docard i{position:absolute;right:16px;top:16px;font-style:normal;font-size:20px;color:var(--cyan)}
/* the home page's worked examples: one card per stored run */
.examples{display:grid;gap:14px}
.excards{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.excard{display:flex;flex-direction:column;gap:6px;height:100%;padding:18px;border-radius:20px;border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}
.excard p{margin:0}
.excard h3{margin:0;font-size:22px;font-weight:600;letter-spacing:-.02em}
.excard h3 a{color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;min-height:32px}
.excard h3 a:hover{text-decoration:underline}
.exkind{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--cyan)}
:root[data-theme="light"] .exkind{color:color-mix(in oklab,var(--cyan) 45%,#000)}
@media (prefers-color-scheme: light){:root[data-theme="system"] .exkind{color:color-mix(in oklab,var(--cyan) 45%,#000)}}
.exsum{font-size:14px;line-height:1.45;color:var(--ink-2)}
.excount{font-size:14px;font-weight:600;color:var(--ink)}
.exmeta{font-size:12.5px;color:var(--ink-3)}
.exlinks{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:auto!important;padding-top:6px}
.exlinks a,.runlinks a{display:inline-flex;align-items:center;min-height:32px;font-size:13.5px}
.runlinks{display:flex;flex-wrap:wrap;gap:4px 16px}
.refcheck{display:grid;gap:14px}
.excaveat{font-size:13px;line-height:1.45;color:var(--ink-2);border-left:2px solid var(--yellow);padding-left:8px}
/* Candidates: the dips a visitor can open, the cards behind Customise, the feed's compact table */
.rundiplist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rundiplist li{display:flex;align-items:stretch;gap:8px}
.rundip{flex:1;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;padding:10px 14px;border:1px solid var(--line);border-radius:14px;color:var(--ink);text-decoration:none;background:var(--panel-2)}
.rundip:hover{border-color:var(--line-3);color:var(--ink)}
.rundip b{font-weight:600;font-size:15px}
.rundip .muted{grid-column:1;font-size:13px}
.rundip .tag{grid-row:1/3;grid-column:2}
.rundipcf{display:inline-flex;align-items:center;padding:0 14px;border:1px solid var(--line);border-radius:14px;text-decoration:none;font-size:13px;white-space:nowrap}
.tag.cand{color:var(--yellow);border-color:color-mix(in oklab,var(--yellow) 35%,transparent);background:color-mix(in oklab,var(--yellow) 8%,transparent)}
.tag.rej{color:var(--red);border-color:color-mix(in oklab,var(--red) 35%,transparent);background:color-mix(in oklab,var(--red) 8%,transparent)}
.tag.open{color:var(--ink-2)}
.secthead #customise{margin-left:auto}
#widgets:not(.customising) .wctl{display:none}
#layouttools[hidden]{display:none}
.feedsec{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;min-width:0}
.feedsec>*,.feedsec .row2>*{min-width:0}
.feedsec .row2{align-items:start}
.exfilters{align-items:flex-start}
.exfilters>div{justify-content:flex-start}
.scatter.astable{padding-bottom:0}
table.excompact{font:13px var(--sans);color:var(--ink)}
table.excompact th,table.excompact td{border-bottom:1px solid var(--line)}
table.excompact th button{display:inline-flex;align-items:center;gap:8px;min-height:44px;background:none;border:0;padding:0;color:var(--ink);font:500 14px var(--sans);cursor:pointer;text-transform:none;letter-spacing:0}
table.excompact th button i{width:9px;height:9px;border-radius:50%;background:var(--c)}
table.excompact th button[aria-pressed="true"]{text-decoration:underline;text-underline-offset:4px}
/* prose pages: Docs and Page not found */
.prose{display:grid;gap:10px;max-width:880px}
.prose h2{font-size:22px;margin-top:22px}
.prose p,.prose li{color:var(--ink-2);line-height:1.6;max-width:75ch}
.prose ul,.prose ol{margin:0;padding-left:22px;display:grid;gap:6px}
.prose pre{margin:0;padding:12px 14px;border-radius:12px;background:var(--panel);border:1px solid var(--line);overflow-x:auto;font-size:13px;line-height:1.5;white-space:pre}
.prose code{font-size:.92em}
.docgrid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.docgrid .card h2{font-size:17px;margin:0 0 6px}
.docgrid .card p{margin:0 0 8px;font-size:14px}
.technote{margin:0;padding:12px 16px;border-left:3px solid var(--line-3);background:var(--panel-2);border-radius:0 12px 12px 0}
.technote p{margin:0;font:13px/1.55 var(--mono);color:var(--ink-2)}
.nfsearch{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
/* How the pictures are drawn: the look grid and the rule tables */
.lookintro{margin:0 0 12px;max-width:90ch;color:var(--ink-2)}
.lookgrid{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr))}
.lookgrid .rfig{border-radius:var(--r-m)}
.lookgrid .readout{font-size:12px}
.lookgrid .readout b{display:block;color:var(--stage-ink);font:600 13px/1.3 var(--sans);margin-bottom:2px}
.rendrow{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.rendrow .rbox{aspect-ratio:4/3}
/* the footer */
.sitefoot{border-top:1px solid var(--line);margin-top:24px;padding:28px max(16px,env(safe-area-inset-right,0px)) max(28px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:color-mix(in oklab,var(--bg) 86%,transparent)}
.fin{max-width:1280px;margin:0 auto;display:grid;gap:18px}
.footnav{display:grid;gap:18px 24px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.footnav h2{font-size:13px;font-weight:600;color:var(--ink);margin:0 0 6px}
.footnav ul{list-style:none;margin:0;padding:0;display:grid;gap:0}
.footnav a{display:inline-flex;align-items:center;min-height:32px;color:var(--ink-2);text-decoration:none;font-size:13px}
.footnav a:hover{color:var(--ink);text-decoration:underline}
.sitefoot p{margin:0;font-size:12.5px;color:var(--ink-3);max-width:100ch}
.sitefoot .attribution{color:var(--ink-2)}
@media (max-width:899.98px){
  .nav{display:none}
  .menubtn{display:inline-grid}
  .tbin{min-height:56px;gap:4px}
}
@media (max-width:699.98px){
  .topbar{padding-top:env(safe-area-inset-top,0px)}
  .pagebar{padding:10px 16px 0}
  .pbin{gap:8px}
  body[data-route="candidates"] #route-candidates>.provnote{margin:8px 16px;flex:none}
  main a.rundip{display:grid;padding:10px 14px;line-height:1.4}
  main a.rundipcf{display:inline-flex;padding:0 12px}
  .rundiplist li{flex-direction:column}
  .rundipcf{min-height:44px;justify-content:center}
  .scatter.astable{overflow-x:auto}
  main .provnote a{display:inline;min-height:0;min-width:0;padding:0;line-height:inherit}
  main{padding-top:16px}
  .subnav{gap:6px}
  .subnav a{min-height:44px;padding:0 12px}
  .crumbs a{min-height:44px}
  .footnav a{min-height:44px}
  .route>header.launch{padding-top:12px}
  .planetfig{margin-top:20px}
  .planetfig svg{border-radius:18px}
  .proof{margin-top:0}
  .docard{padding:16px 40px 16px 16px}
  main a.docard{display:flex;padding:16px 40px 16px 16px;line-height:1.45}
  main .subnav a,main .pagetools .btn{display:inline-flex;padding-top:0;padding-bottom:0}
}

/* ---------- viz.hero (V01): a live transit of the featured star behind the heading ---------- */
#route-overview>header.launch{display:block;text-align:left;padding:0;gap:0}
.herostage{position:relative;border-radius:var(--r-l);overflow:hidden;background:var(--stage);border:1px solid var(--stage-line)}
.herostage .herofig{border:0;border-radius:0}
.herostage .herofig .rbox{aspect-ratio:16/8.4;border-radius:0}
.herostage .herofig .rbox>img.rstill{object-fit:cover;object-position:75% 50%}
.herostage .herofig .readout{border-top:1px solid var(--stage-line);padding:10px 16px 12px;font-size:12px;line-height:1.5}
.herostage .herofig .readout b{color:var(--stage-ink);font-weight:600}
.herostage .stage-tag{top:14px;right:14px}
.herocopy{position:absolute;left:0;top:0;width:100%;z-index:1;padding-bottom:28px!important;display:flex;flex-direction:column;justify-content:flex-start;gap:16px;
  padding:clamp(28px,5.5%,72px) 0 0 clamp(20px,5%,64px);background:linear-gradient(90deg,#000 0 38%,transparent 70%);-webkit-mask:linear-gradient(180deg,#000 calc(100% - 28px),transparent);mask:linear-gradient(180deg,#000 calc(100% - 28px),transparent);color:var(--stage-ink);pointer-events:none}
.herocopy>*{pointer-events:auto;max-width:min(46%,540px)}
#route-overview .herocopy h1{margin:0;font:var(--t-hero);font-size:clamp(40px,5.2vw,76px);letter-spacing:-.045em;color:var(--stage-ink);text-wrap:balance}
#route-overview>header.launch .herocopy .sub{margin:0;font-size:clamp(15px,1.2vw,17px);line-height:1.5;color:#C9CFDB}
#route-overview .herocopy .ctas{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start;margin:4px 0 0}
#route-overview .herocopy .btn.primary{background:var(--stage-ink);color:#04060B}
#route-overview .herocopy .btn.ghost{color:#64D2FF}
#route-overview .herocopy .btn.ghost:hover{color:#fff}
.herostage .heroctrls{left:auto;right:14px;bottom:14px}
.herostage .heroctrls .btn{min-height:36px;padding:0 14px;font-size:12.5px}
.herostage .heroctrls .btn[aria-pressed="true"]{background:var(--stage-ink);color:#04060B;border-color:transparent}
.herostage .heroctrls .btn[hidden]{display:none}
@media (max-width:899.98px){
  .herocopy{position:static;width:auto;aspect-ratio:auto;padding:28px 18px 8px;background:var(--stage)}
  .herocopy>*{max-width:none}
  .herostage .herofig .rbox{aspect-ratio:4/3.3}
  #route-overview .herocopy h1{font-size:clamp(36px,9vw,56px)}
  #route-overview .herocopy .ctas{flex-direction:column;align-items:stretch}
  .herostage .heroctrls{top:10px;left:10px;right:auto;bottom:auto}
  .herostage .heroctrls .btn{min-height:44px}
}

/* ---------- viz.gallery (V03): each worked example's star in its colour, what the run measured as shadows ---------- */
#route-overview .excards{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr))}
#route-overview .excard{padding:0;overflow:hidden;gap:0;background:var(--bg-2);-webkit-backdrop-filter:none;backdrop-filter:none;transition:transform var(--d-2) var(--ease),border-color var(--d-2) var(--ease)}
#route-overview .excard:hover{transform:translateY(-2px);border-color:var(--line-3)}
.exbody{display:flex;flex-direction:column;gap:6px;padding:14px 16px 16px;flex:1}
.exbody p{margin:0}
.gstage{margin:0;border:0;border-bottom:1px solid var(--line);border-radius:0;display:grid}
.gbox{position:relative;aspect-ratio:1/1;background:var(--stage)}
.gbox>svg,.gbox>canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.gbox>svg[hidden]{display:none}
.gstage .stage-tag{font-size:10px;min-height:22px;padding:2px 7px}
.gstage .readout{background:var(--stage);color:var(--stage-dim);padding:8px 12px 10px;margin:0;font:400 12px/1.45 var(--sans);letter-spacing:0}
@media (max-width:699.98px){
  .gbox{aspect-ratio:16/10}
  .gstage .readout{font-size:11.5px}
}
.bandsrc{margin:0;font-size:12px;line-height:1.45;color:var(--ink-3);max-width:90ch}

/* ---------- viz.tempstrip (V09): star colour from 2,500 K to 10,000 K ---------- */
.tstrip{margin:0;display:grid;gap:8px;min-width:0}
.tsmarks{position:relative;height:calc(var(--rows,1) * 30px + 34px)}
.tsmark{position:absolute;bottom:0;transform:translateX(-50%);display:grid;justify-items:center;gap:1px;font:500 11px/1.2 var(--mono);color:var(--ink-2);white-space:nowrap;padding-bottom:calc(var(--row) * 30px + 8px)}
.tsmark::after{content:"";position:absolute;left:50%;bottom:0;width:1px;height:calc(var(--row) * 30px + 6px);background:var(--line-3)}
.tsmark b{font-weight:600;color:var(--ink)}
.tsmark i{font-style:normal;color:var(--ink-3)}
.tsmark.sun b{color:var(--ink-2);font-weight:500}
.tsbar{position:relative;height:40px;border-radius:var(--r-s);border:1px solid var(--line)}
.tstick{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:#04060B;box-shadow:0 0 0 1px rgba(255,255,255,.7);border-radius:2px}
.tsaxis{position:relative;height:16px;font:400 11px/1 var(--mono);color:var(--ink-3)}
.tsaxis span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.tsaxis span:first-child{transform:none}
.tsaxis span:last-child{transform:translateX(-100%)}
.tstrip figcaption{display:grid;gap:10px}
.tslist{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13.5px;color:var(--ink-2)}
.tslist li{display:inline-flex;align-items:center;gap:8px}
.tslist a{color:var(--ink)}
.tsk{font:var(--t-data);color:var(--ink-3)}
.tsnote{color:var(--ink-3);font-size:12.5px}
.tsdot{width:12px;height:12px;border-radius:50%;border:1px solid var(--line-2);flex:none}
.tssrc{margin:0;font-size:12px;line-height:1.45;color:var(--ink-3);max-width:90ch}
.tsfilter{position:absolute;inset:0}
.tsfilter input{position:absolute;inset:0;width:100%;height:100%;margin:0;background:none;pointer-events:none;-webkit-appearance:none;appearance:none}
.tsfilter input::-webkit-slider-thumb{pointer-events:auto;-webkit-appearance:none;width:22px;height:44px;border-radius:8px;background:var(--ink);border:2px solid var(--bg);cursor:ew-resize}
.tsfilter input::-moz-range-thumb{pointer-events:auto;width:22px;height:44px;border-radius:8px;background:var(--ink);border:2px solid var(--bg);cursor:ew-resize}
@media (max-width:699.98px){
  .tsmarks{display:none}
  .tsaxis span:nth-child(even){display:none}
}

/* ---------- viz.skyyears (V04): the sky by discovery year ---------- */
.skyyears{margin:0;display:grid;gap:8px;min-width:0}
.skystage{padding:12px}
.skybox{position:relative;aspect-ratio:920/470;width:100%}
.skybox>svg,.skybox>canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.skybase .skydots[hidden]{display:none}
.skyyear{position:absolute;left:14px;top:10px;font:600 clamp(18px,2.4vw,30px)/1 var(--mono);color:var(--stage-ink);letter-spacing:-.02em}
.skytools{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.skytools .btn{min-height:44px}
.skyscrub{display:flex;align-items:center;gap:10px;flex:1 1 220px;font:var(--t-data);color:var(--ink-3)}
.skyscrub input{flex:1;min-width:0;min-height:44px;accent-color:var(--blue)}
.skytools [hidden]{display:none}
.skyread{padding:0;margin:0}
.skylegend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 14px;font:var(--t-data);color:var(--ink-2)}
.skylegend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}
.skysrc{margin:6px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink-3);max-width:96ch}
.skytable summary,.tltable summary,.orbtable summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:13px;color:var(--ink-2)}
.skytable table{max-width:420px}
.skyyears.compact .skystage{padding:8px}
@media (max-width:699.98px){.skystage{padding:6px}.skyyear{left:8px;top:6px}}

/* ---------- viz.timeline (V12): planets per discovery year ---------- */
.timeline{margin:0;display:grid;gap:6px;min-width:0}
.tlstage{padding:10px 8px 4px}
.tlsvg{display:block;width:100%;height:auto}
.tlsvg text{fill:var(--stage-dim);font:500 11px var(--mono)}
.tlgrid path{stroke:rgba(255,255,255,.08);stroke-width:1}
.timeline.compact .tlsvg text{font-size:13px}
.tlread{margin:0}
.tltable .tablewrap{max-height:340px;overflow:auto}
.tltable table td{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}
@media (max-width:699.98px){.tlsvg text{font-size:16px}.tlsvg .tlx text:nth-child(even){display:none}}

/* ---------- viz.lineup (V07): planets to one scale ---------- */
.lineup{margin:0;display:grid;gap:8px;min-width:0}
.lustage{padding:44px 16px 14px;--u:min(8px,calc(90px / var(--rmax)))}
.lurow{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:center;gap:18px 10px}
.luitem{display:grid;justify-items:center;align-content:end;gap:4px;min-width:76px;text-align:center}
.luitem img{display:block;width:calc(var(--re) * var(--u) * 2);height:auto;max-width:none;border-radius:50%}
.luitem b{font:600 12px/1.25 var(--sans);color:var(--stage-ink);margin-top:6px}
.luitem b a{color:var(--stage-ink)}
.luitem span{font:500 11px/1.2 var(--mono);color:var(--stage-dim)}
.luitem.ref b{color:var(--stage-dim);font-weight:500}
.luitem.focus b{color:#64D2FF}
@media (max-width:699.98px){.lustage{--u:min(5px,calc(56px / var(--rmax)));padding:40px 8px 12px}.luitem{min-width:64px}}

/* ---------- viz.orbits (V08): a system from above, and its dips ---------- */
.orbits{margin:0;display:grid;gap:8px;min-width:0}
.orbbox{position:relative;aspect-ratio:1000/430}
.orbbox>svg,.orbbox>canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.orbbox>svg[hidden]{display:none}
.orbstage .stage-ctrls [hidden]{display:none}
.orbtable table{width:100%;table-layout:fixed;font-size:12.5px}
.orbtable th,.orbtable td{overflow-wrap:anywhere}
.orbtable td{font-family:var(--mono);font-variant-numeric:tabular-nums}
@media (max-width:699.98px){.orbbox.cv{aspect-ratio:4/5.4}}

/* ---------- viz/panelring (V06): the reviewers converging on the stored panel score ---------- */
.panelring{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0}
.prfig{margin:0;display:grid;grid-template-columns:minmax(0,1fr);min-width:0;background-color:var(--stage);background-image:radial-gradient(ellipse at 50% 42%,#0E1630 0,#000 70%)}
.prfig svg{display:block;width:100%;height:auto;margin-top:30px}
.prfig .prline{fill:none;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:0;stroke-opacity:.85;transition:stroke-dashoffset var(--d-3) var(--ease)}
.prfig .prline.sen{stroke:var(--sen)}
.prfig .prline.prb{stroke:var(--prb-ink)}
.prfig .prline.off{stroke:var(--stage-dim);stroke-opacity:.5;stroke-dasharray:3 5}
.prfig .prnode circle{stroke-width:1.5;transition:fill-opacity var(--d-3) var(--ease)}
.prfig .prnode.sen circle{fill:#0B4A66;stroke:var(--sen)}
.prfig .prnode.prb circle{fill:#4B2466;stroke:var(--prb-ink)}
.prfig .prnode.off circle{fill:transparent;stroke-dasharray:2 3}
.prfig .prnode text{font:500 10.5px/1 var(--mono);fill:var(--stage-ink);text-anchor:middle}
.prfig .prtrack{fill:#05070D;stroke:rgba(255,255,255,.12);stroke-width:8}
.prfig .prring{fill:none;stroke:#0A84FF;stroke-width:8;stroke-linecap:round;stroke-dashoffset:var(--off);transition:stroke-dashoffset var(--d-3) var(--ease)}
.prfig .prnum{font:700 24px/1 var(--sans);fill:var(--stage-ink);text-anchor:middle;font-variant-numeric:tabular-nums}
.prfig .prsub{font:500 9.5px/1 var(--mono);fill:var(--stage-dim);text-anchor:middle;letter-spacing:.06em;text-transform:uppercase}
.prfig.pr-pre .prline{stroke-dashoffset:100}
.prfig.pr-pre .prline.off{stroke-opacity:0}
.prfig.pr-pre .prnode circle{fill-opacity:0}
.prfig.pr-pre .prring{stroke-dashoffset:var(--c)}
.prverdict{margin:0;padding:4px 14px 0;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;background:var(--stage);font:var(--t-data);color:var(--stage-dim);overflow-wrap:anywhere}
.prword{font:600 15px/1.3 var(--sans);color:var(--stage-ink)}
.prword.cand{color:#FFD60A}
.prword.rej{color:#FF6961}
.prfig .readout{background:var(--stage);color:var(--stage-dim);padding:8px 14px 12px;margin:0;font:12px/1.5 var(--sans);overflow-wrap:anywhere}
.prtable summary{font-size:13px;color:var(--ink-2)}
.prtable .tablewrap{overflow-x:auto}
.prtable table{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.prtable th,.prtable td{text-align:left;padding:6px 8px;border-top:1px solid var(--line)}
.prtable td.num,.prtable th.num{text-align:right;font-variant-numeric:tabular-nums}
.prtable .mono{font:400 11px var(--mono);color:var(--ink-3)}
