:root{--bg: #edf1f3;--surface: #f8fafb;--fg: #0f1d26;--muted: #55656f;--line: #cbd5da;--accent: #c94c19;--accent-soft: #f6dfd3;--scene-bg: #1b2a33;--land: #c9d2c4;--sea-map: #dbe6ec;--display: "Saira Semi Condensed", "Arial Narrow", "Roboto Condensed", sans-serif;--body: "Source Sans 3", "Segoe UI", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0a141a;--surface: #101d25;--fg: #e4ecef;--muted: #8fa2ac;--line: #23343e;--accent: #f06a33;--accent-soft: #3a2017;--land: #2b3a33;--sea-map: #0f2230;color-scheme:dark}}:root[data-theme=dark]{--bg: #0a141a;--surface: #101d25;--fg: #e4ecef;--muted: #8fa2ac;--line: #23343e;--accent: #f06a33;--accent-soft: #3a2017;--land: #2b3a33;--sea-map: #0f2230;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:16px;line-height:1.55}.wrap{max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:28px;display:grid;gap:44px}.wrap:last-of-type{padding-bottom:64px}header{display:grid;gap:10px}.topline{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 14px;padding-top:4px}.eyebrow b{color:var(--accent);font-weight:500}h1{font-family:var(--display);font-weight:700;font-size:clamp(56px,12vw,128px);line-height:.86;letter-spacing:-.01em;margin:6px 0 0;text-transform:uppercase}.lede{max-width:66ch;margin:0;font-size:18px;text-wrap:pretty}.lede .muted{color:var(--muted)}button{font:500 14px/1 var(--body);color:var(--fg);background:transparent;border:1px solid var(--line);padding:8px 11px;cursor:pointer;border-radius:0}button:hover{border-color:var(--muted)}button[aria-pressed=true]{background:var(--fg);color:var(--bg);border-color:var(--fg)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lang{font-family:var(--mono);font-size:12px;letter-spacing:.08em;padding:6px 9px}.viewer{max-width:1440px;margin:0 auto;border-block:1px solid var(--line);background:var(--surface)}@media (min-width: 1440px){.viewer{border-inline:1px solid var(--line)}}.stage{position:relative;background:var(--scene-bg);overflow:hidden}.stage canvas{display:block;width:100%;touch-action:none;cursor:grab}.stage canvas:active{cursor:grabbing}.stage.deck canvas{cursor:default}.hint.gone{opacity:0}.hint{transition:opacity .8s ease}.hint{position:absolute;left:12px;bottom:10px;max-width:calc(100% - 80px);font-family:var(--mono);font-size:11px;color:#d5e0e6;background:#0810168c;padding:3px 7px;pointer-events:none}.fs-btn{position:absolute;right:12px;bottom:10px;z-index:2;width:38px;height:38px;padding:0;display:grid;place-items:center;color:#e6f0f4;background:#060c109e;border:1px solid rgba(160,190,205,.35);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.fs-btn:hover{border-color:#dcebf0b3}.fs-btn[aria-pressed=true]{background:#060c109e;color:#e6f0f4;border-color:#a0becd59}.stage:fullscreen{width:100vw;height:100vh;background:#000}.stage:-webkit-full-screen{width:100vw;height:100vh;background:#000}.stage.pseudo-fs{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100vw;height:100vh;height:100dvh}html.fs-lock,html.fs-lock body{overflow:hidden}.loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--mono);font-size:13px;color:#c5d3da;background:var(--scene-bg);transition:opacity .6s}.loading.done{opacity:0;pointer-events:none}.loading.err{color:#f2c7b4;padding:24px;text-align:center}.hud{position:absolute;right:12px;top:12px;display:grid;grid-template-columns:repeat(2,auto);gap:4px 16px;padding:9px 12px 10px;background:#060c10b8;border:1px solid rgba(160,190,205,.25);color:#e6f0f4;font-family:var(--mono);pointer-events:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.hud div{display:grid;gap:0}.hud span{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#8fb0bf}.hud b{font-weight:500;font-size:15px;font-variant-numeric:tabular-nums}@media (max-width: 640px){.hud{grid-template-columns:repeat(3,auto);gap:2px 12px;right:8px;top:8px;padding:6px 8px}.hud b{font-size:12.5px}.hud div:nth-child(n+7){display:none}}.tags{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.tag{position:absolute;transform:translate(-50%,calc(-100% - 6px));font-family:var(--display);font-weight:600;font-size:13px;letter-spacing:.02em;white-space:nowrap;color:var(--fg);background:var(--surface);border:1px solid var(--line);padding:2px 8px 3px}.tag:after{content:"";position:absolute;left:50%;top:100%;width:1px;height:6px;background:var(--muted)}.tag i{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--accent);margin-right:5px}.speck{position:absolute;width:0;height:0;pointer-events:none}.speck:before{content:"";position:absolute;left:-9px;top:-9px;width:16px;height:16px;border:1.5px solid #fff;border-radius:50%;opacity:.85;animation:speck 2.4s ease-out infinite}.speck:after{content:"";position:absolute;left:0;bottom:12px;width:1px;height:46px;background:#ffffffbf}.speck span{position:absolute;left:0;bottom:58px;transform:translate(-50%);white-space:nowrap;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:#fff;background:#060c1099;padding:2px 7px}@keyframes speck{0%{transform:scale(.6);opacity:.9}to{transform:scale(2.2);opacity:0}}@media (prefers-reduced-motion: reduce){.speck:before{animation:none}}.dim{position:absolute;transform:translate(-50%,-50%);font-family:var(--mono);font-size:12px;font-weight:500;color:#fff;background:var(--accent);padding:1px 6px;white-space:nowrap}.caption{margin:0;padding:10px 16px;font-size:14.5px;color:var(--muted);border-bottom:1px solid var(--line);min-height:1.55em}.controls{display:flex;flex-wrap:wrap;gap:14px 28px;padding:14px 16px;align-items:center}.group{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.group>.lbl{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-right:4px}.group .msg{font-family:var(--mono);font-size:12px;color:var(--muted)}.stage.drop:after{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:2px dashed var(--accent);pointer-events:none}.sw{width:30px;height:30px;padding:0;border-radius:50%}.sw[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--line)}.cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:44px}.cols.route{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}@media (max-width: 860px){.cols,.cols.route{grid-template-columns:minmax(0,1fr)}}h2{font-family:var(--display);font-weight:600;font-size:26px;line-height:1.1;text-transform:uppercase;letter-spacing:.01em;margin:0 0 14px;text-wrap:balance}section{min-width:0}table{width:100%;border-collapse:collapse;font-size:15px}th,td{text-align:left;vertical-align:top;padding:9px 0;border-bottom:1px solid var(--line)}th{font-weight:500;color:var(--muted);width:38%;padding-right:14px}td .n{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:14px}td small{display:block;color:var(--muted);font-size:13px}.parts{list-style:none;margin:0;padding:0;display:grid}.parts li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.parts .k{font-family:var(--mono);font-size:12px;color:var(--accent);padding-top:3px}.parts b{font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:.01em}.parts p{margin:2px 0 0;font-size:15px}.est{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);padding:0 5px;margin-left:6px;vertical-align:2px}.map{width:100%;height:auto;display:block;background:var(--surface);border:1px solid var(--line)}.map .sphere{fill:var(--sea-map)}.map .grat{fill:none;stroke:var(--line);stroke-width:.6}.map .land{fill:var(--land);stroke:var(--muted);stroke-width:.4}.map .route{fill:none;stroke-linecap:round}.map .rowed{stroke:var(--accent);stroke-width:2.6}.map .planned{stroke:var(--muted);stroke-width:1.6;stroke-dasharray:2 5}.map .pt{fill:var(--surface);stroke:var(--fg);stroke-width:1.6}.map .pt-alert{fill:var(--accent);stroke:var(--surface);stroke-width:2}.map .lbl{font-family:var(--display);font-weight:600;font-size:15px;fill:var(--fg);paint-order:stroke;stroke:var(--sea-map);stroke-width:4px;stroke-linejoin:round}.map .lbl.small{font-family:var(--mono);font-weight:400;font-size:11px;fill:var(--muted)}.map .lbl.alert{fill:var(--accent)}.map .sea-lbl{font-family:var(--mono);font-size:11px;letter-spacing:.3em;fill:var(--muted);opacity:.8}.map-cap{margin:8px 0 0;font-size:13.5px;color:var(--muted)}.log{list-style:none;margin:0;padding:0;display:grid}.log li{display:grid;grid-template-columns:132px minmax(0,1fr);gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.log time{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums;color:var(--muted);padding-top:2px}.log li.alert time{color:var(--accent)}.log p{margin:0}@media (max-width: 560px){.log li{grid-template-columns:minmax(0,1fr);gap:2px}}.note{background:var(--accent-soft);padding:16px 18px;max-width:80ch}.note p{margin:0}.sources{font-size:14px;color:var(--muted)}.sources ol{margin:6px 0 0;padding-left:20px;display:grid;gap:3px}.sources a{color:var(--fg);text-decoration-color:var(--line);text-underline-offset:3px;overflow-wrap:anywhere}.sources a:hover{text-decoration-color:var(--accent)}
