:root{--font-display:"Barlow Semi Condensed", "Barlow", "Arial Narrow", sans-serif;--font-body:"Barlow", "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--scene:#e7ebf0;--panel:#fff;--panel-2:#f3f6f9;--line:#d6dde6;--line-2:#e7ecf2;--ink:#0f2341;--ink-2:#42526a;--muted:#76849a;--accent:#1559d6;--accent-2:#0c3f9e;--accent-soft:#e8effc;--good:#12875a;--warn:#b26f06;--crit:#c4342a;--hot:#e2690f;--label-bg:#ffffffed;--leader:#1559d6;--shadow:0 1px 2px #0f23410f, 0 8px 22px #0f234114;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html,body,#root{height:100%}body{background:var(--scene);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:13px;overflow:hidden}.app{background:var(--scene);color:var(--ink);font-family:var(--font-body);position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.app[data-mode=night]{--scene:#0b1017;--panel:#111923;--panel-2:#16202c;--line:#263446;--line-2:#1d2937;--ink:#e7eef7;--ink-2:#aab7c8;--muted:#73859d;--accent:#4d8dff;--accent-2:#8db6ff;--accent-soft:#172a4a;--good:#3fc28a;--warn:#e6a23c;--crit:#ff6b5f;--hot:#ff9d4a;--label-bg:#0e151ee6;--leader:#6ea2ff;--shadow:0 1px 2px #0000004d, 0 10px 26px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.app[data-contrast=high]{--line:#4c5a6e;--line-2:#8592a4;--ink-2:#1b2940;--muted:#34445a;--label-bg:#fff}.app[data-mode=night][data-contrast=high]{--line:#8a9bb3;--line-2:#50607a;--ink-2:#e2eaf5;--muted:#c2cee0;--label-bg:#05080c}.canvas-wrap{position:absolute;top:0;bottom:0;left:0;right:0}.canvas-wrap canvas{touch-action:none;outline:none}.app[data-info=on] .canvas-wrap{cursor:help}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.eyebrow{font-family:var(--font-display);letter-spacing:.09em;text-transform:uppercase;color:var(--ink);font-size:11px;font-weight:600}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);pointer-events:auto;border-radius:6px}.panel-head{border-bottom:1px solid var(--line-2);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px 8px;display:flex}.panel-head h2{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:13px;font-weight:700}.icon-btn{width:26px;height:26px;color:var(--ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--panel-2);color:var(--ink)}.btn{border:1px solid var(--line);background:var(--panel);height:34px;color:var(--ink);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;box-shadow:var(--shadow);white-space:nowrap;border-radius:5px;align-items:center;gap:7px;padding:0 13px;font-size:12px;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.btn svg{flex:none}.btn.icon{justify-content:center;width:34px;padding:0}.topbar{padding:calc(12px + env(safe-area-inset-top,0px)) 16px 0;pointer-events:none;z-index:5;grid-template-columns:auto 1fr auto;align-items:start;gap:18px;display:grid;position:absolute;top:0;left:0;right:0}.brand{pointer-events:auto;line-height:1}.brand h1{font-family:var(--font-display);letter-spacing:-.005em;color:var(--ink);margin:0;font-size:36px;font-weight:700}.brand h1 .iron{color:var(--accent)}.brand .sub{font-family:var(--font-display);letter-spacing:.02em;color:var(--ink);margin-top:2px;font-size:18.5px;font-weight:500}.brand .tag{font-family:var(--font-display);letter-spacing:.22em;color:var(--ink-2);margin-top:6px;font-size:11px;font-weight:500}.nav{pointer-events:auto;scrollbar-width:none;background:var(--panel);border:1px solid var(--line);max-width:100%;box-shadow:var(--shadow);border-radius:6px;justify-self:center;gap:2px;padding:4px;display:flex;overflow-x:auto}.nav::-webkit-scrollbar{display:none}.nav button{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:4px;padding:7px 9px;font-size:12px;font-weight:600}.nav button:hover{color:var(--accent)}.nav button[aria-current=true]{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.actions{pointer-events:auto;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.status{box-sizing:border-box;border:1px solid var(--line);background:var(--panel);height:34px;box-shadow:var(--shadow);border-radius:5px;align-content:center;gap:2px;padding:5px 12px;display:grid}.status .k{font-family:var(--font-display);letter-spacing:.14em;color:var(--muted);font-size:9.5px;font-weight:600;line-height:1}.status .v{font-family:var(--font-display);letter-spacing:.1em;align-items:center;gap:6px;font-size:12px;font-weight:700;line-height:1;display:flex}.dot{background:var(--good);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb, var(--good) 22%, transparent);border-radius:50%}.dot.paused{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--warn) 22%, transparent)}.left-col{z-index:3;pointer-events:none;flex-direction:column;justify-content:space-between;gap:10px;width:300px;display:flex;position:absolute;top:104px;bottom:16px;left:16px}.left-col>*{pointer-events:auto}.stage-card{flex-direction:column;flex:0 auto;min-height:0;display:flex;overflow:hidden}.stage-card .body{gap:8px;padding:10px 12px 12px;display:grid;overflow-y:auto}.stage-card .lead{color:var(--ink-2);margin:0;font-size:12.5px;line-height:1.4}.kv{grid-template-columns:1fr auto;align-items:baseline;gap:4px 12px;display:grid}.kv .k{color:var(--ink-2);font-size:12px}.kv .v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;font-size:12px;font-weight:500}.io{grid-template-columns:58px 1fr;gap:4px 8px;font-size:12px;line-height:1.35;display:grid}.io dt{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding-top:1px;font-size:10.5px;font-weight:600}.io dd{color:var(--ink);margin:0}.ore-row{grid-template-columns:1fr 84px;align-items:center;gap:10px;display:grid}.ore-art{width:84px;height:60px}.controls{flex-direction:column;flex:0 auto;min-height:0;max-height:62%;display:flex}.controls .scroll{gap:10px;padding:10px 12px 12px;display:grid;overflow-y:auto}.tabs{gap:4px;display:flex}.tabs button{border:1px solid var(--line);background:var(--panel-2);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);cursor:pointer;border-radius:4px;flex:1;padding:5px 6px;font-size:11px;font-weight:600}.tabs button[aria-selected=true]{background:var(--panel);color:var(--accent);border-color:var(--accent)}.presets{grid-template-columns:1fr 1fr;gap:5px;display:grid}.presets button{border:1px solid var(--line);background:var(--panel);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);cursor:pointer;border-radius:4px;padding:6px;font-size:10.5px;font-weight:600}.presets button:hover{border-color:var(--accent);color:var(--accent)}.presets button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.presets button.wide{grid-column:span 2}.group-label{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:baseline;padding-top:2px;font-size:10.5px;font-weight:600;display:flex}.slider-row{grid-template-columns:1fr;gap:3px;display:grid}.slider-row .top{color:var(--ink-2);justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;display:flex}.slider-row .top label{color:var(--ink)}.slider-row .top output{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap;font-size:12px;font-weight:500}.slider-row .top output small{color:var(--muted);margin-left:2px;font-size:11px}.slider-row .hint{color:var(--muted);font-size:11px;line-height:1.3}.slider-row .hint.warn{color:var(--warn)}input[type=range]{-webkit-appearance:none;appearance:none;cursor:pointer;background:0 0;width:100%;height:18px;margin:0}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) 0 var(--fill,50%), var(--line) var(--fill,50%) 100%);border-radius:2px;height:4px}input[type=range]::-moz-range-track{background:var(--line);border-radius:2px;height:4px}input[type=range]::-moz-range-progress{background:var(--accent);border-radius:2px;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--panel);border:2px solid var(--accent);border-radius:50%;width:14px;height:14px;margin-top:-5px;box-shadow:0 1px 2px #0003}input[type=range]::-moz-range-thumb{background:var(--panel);border:2px solid var(--accent);border-radius:50%;width:12px;height:12px}.seg{border:1px solid var(--line);border-radius:4px;display:flex;overflow:hidden}.seg button{border:0;border-right:1px solid var(--line);background:var(--panel);font-family:var(--font-display);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);cursor:pointer;flex:1;padding:6px 4px;font-size:10.5px;font-weight:600}.seg button:last-child{border-right:0}.seg button[aria-pressed=true]{background:var(--accent);color:#fff}.tech{z-index:3;flex-direction:column;width:282px;display:flex;position:absolute;top:86px;bottom:max(300px,33vh);right:16px}.tech .scroll{padding:4px 0 8px;overflow-y:auto}.tech section{border-bottom:1px solid var(--line-2);padding:6px 12px}.tech section:last-child{border-bottom:0}.tech h3{font-family:var(--font-display);letter-spacing:.09em;text-transform:uppercase;align-items:baseline;gap:8px;margin:0 0 3px;font-size:12.5px;font-weight:700;display:flex}.tech h3 .n{color:var(--accent);letter-spacing:.02em;font-size:17px;font-weight:600}.tech h3 button{all:unset;cursor:pointer}.tech h3 button:hover{color:var(--accent)}.tech .kv{border-left:2px solid var(--line-2);padding-left:8px}.tech .kv .v .u{color:var(--muted);text-align:left;min-width:34px;margin-left:4px;font-size:11px;display:inline-block}.delta{margin-left:4px;font-size:10px}.chips{flex-wrap:wrap;gap:4px;padding:8px 12px 0;display:flex}.chip{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;border:1px solid;border-radius:3px;align-items:center;gap:5px;padding:3px 7px;font-size:10.5px;font-weight:600;line-height:1.2;display:inline-flex}.chip.ok{color:var(--good)}.chip.warn{color:var(--warn)}.chip.crit{color:var(--crit)}.meter{margin-top:8px}.meter svg{width:100%;height:auto;display:block;overflow:visible}.reaction{z-index:3;width:252px;position:absolute;top:86px;right:314px}.reaction .panel-head{padding:8px 10px 6px}.reaction .body{gap:5px;padding:8px 10px;display:grid}.eq{border:1px solid var(--line-2);background:var(--panel-2);opacity:.6;text-align:left;cursor:pointer;border-radius:4px;gap:2px;padding:5px 8px;transition:opacity .2s;display:grid}.eq:hover{opacity:.9}.rx-stats{color:var(--ink-2);justify-content:space-between;gap:8px;font-size:11.5px;display:flex}.rx-stats b{color:var(--ink);font-weight:500}.eq.on{opacity:1;border-color:var(--accent);background:var(--panel)}.eq .lbl{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);justify-content:space-between;font-size:10.5px;font-weight:600;display:flex}.eq .f{font-family:var(--font-mono);color:var(--ink);white-space:nowrap;font-size:13px;font-weight:500}.note{color:var(--muted);margin:0;font-size:11px;line-height:1.35}.badge{border:1px dashed var(--muted);font-family:var(--font-display);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);border-radius:3px;padding:2px 6px;font-size:9.5px;font-weight:600;display:inline-block}.molecule svg{width:100%;height:auto;display:block}.dock{z-index:3;pointer-events:none;gap:8px;display:grid;position:absolute;bottom:16px;left:332px;right:16px}.dock>*{pointer-events:auto}.dock-row{pointer-events:none;align-items:stretch;gap:8px;min-width:0;display:flex}.dock-row>*{pointer-events:auto}.toggle{border:1px solid var(--line);background:var(--panel);height:36px;box-shadow:var(--shadow);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);cursor:pointer;white-space:nowrap;border-radius:5px;align-items:center;gap:10px;padding:0 12px;font-size:11.5px;font-weight:600;display:inline-flex}.switch{background:var(--line);border-radius:9px;flex:none;width:30px;height:16px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:12px;height:12px;transition:transform .15s;position:absolute;top:2px;left:2px}.toggle[aria-checked=true] .switch{background:var(--accent)}.toggle[aria-checked=true] .switch:after{transform:translate(14px)}.toggle[aria-checked=true]{color:var(--ink)}.timeline{scrollbar-width:none;flex:1;align-items:center;gap:0;min-width:0;height:36px;padding:0 6px;display:flex;overflow-x:auto}.timeline::-webkit-scrollbar{display:none}.timeline button{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:3px;flex:none;padding:6px 8px;font-size:11px;font-weight:600;position:relative}.timeline button:hover{color:var(--accent)}.timeline button.story{color:var(--ink)}.timeline button.story:after{content:"";background:var(--accent);transform-origin:0;height:2px;animation:grow var(--story-ms,6s) linear forwards;position:absolute;bottom:1px;left:8px;right:8px}.app[data-motion=reduced] .timeline button.story:after{animation:none}@keyframes grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.timeline button[aria-current=true]{background:var(--accent);color:#fff}.timeline .arr{color:var(--line);flex:none;font-size:12px}.graphs{grid-template-columns:repeat(5,minmax(0,1fr));gap:0;height:150px;display:grid;overflow:hidden}.graph{border-right:1px solid var(--line-2);flex-direction:column;min-width:0;padding:8px 10px 6px;display:flex;position:relative}.graph:last-child{border-right:0}.graph .gh{justify-content:space-between;align-items:baseline;gap:6px;display:flex}.graph .gt{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:700;overflow:hidden}.graph .gv{font-family:var(--font-mono);white-space:nowrap;font-size:11.5px;font-weight:500}.graph .legend{color:var(--ink-2);white-space:nowrap;gap:10px;margin-top:2px;font-size:10.5px;display:flex;overflow:hidden}.graph .legend i{vertical-align:0;border-radius:50%;width:7px;height:7px;margin-right:4px;display:inline-block}.graph canvas{flex:1;width:100%;min-height:0;display:block}.subtitles{color:#fff;text-align:center;z-index:4;pointer-events:none;background:#0a121edb;border-radius:5px;max-width:min(640px,100% - 32px);padding:8px 14px;font-size:14px;line-height:1.4;position:absolute;bottom:238px;left:50%;transform:translate(-50%)}.overlay{pointer-events:none;z-index:2;position:absolute;top:0;bottom:0;left:0;right:0}.overlay svg{width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0;overflow:visible}.overlay polyline{fill:none;stroke:var(--leader);stroke-width:1px;opacity:.9}.overlay circle{fill:var(--panel);stroke:var(--leader);stroke-width:1.5px}.overlay .br-sel{fill:none;stroke:var(--accent);stroke-width:2.5px}.overlay .br-hov{fill:none;stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:4 3}.callout{visibility:hidden;will-change:transform;background:var(--label-bg);border:1px solid var(--line);white-space:nowrap;border-radius:3px;padding:4px 8px 5px;line-height:1.2;position:absolute;top:0;left:0}.callout .t{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);align-items:baseline;gap:6px;font-size:12px;font-weight:700;display:flex}.callout .t .n{color:var(--accent);font-size:15px;font-weight:600}.callout .s{color:var(--ink-2);font-size:11.5px}.callout .v{font-family:var(--font-mono);color:var(--accent);margin-top:1px;font-size:11px;font-weight:500}.callout.station{background:color-mix(in srgb, var(--label-bg) 82%, transparent);border-color:#0000;padding:5px 10px 6px}.callout.station .t{font-size:13.5px}.callout.station .s,.callout.zone .s{display:none}.callout.station.full .s,.callout.zone.full .s{display:block}.callout.station .t .n{font-size:19px}.callout.zone .t{font-size:11.5px}.callout.tone-red .t{color:var(--crit)}.callout.tone-blue .t{color:var(--accent)}.callout.tone-hot .t{color:var(--hot)}.callout.tone-gray .t{color:var(--ink-2)}.sel-tag{visibility:hidden;background:var(--accent);color:#fff;font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;border-radius:3px;padding:3px 8px;font-size:11px;font-weight:700;position:absolute;top:0;left:0}.tooltip{z-index:20;pointer-events:none;width:290px;position:fixed}.tooltip .body{gap:7px;padding:10px 12px 12px;display:grid}.tooltip .what{margin:0;font-size:12.5px;line-height:1.4}.drawer-scrim{z-index:10;background:#080e1640;position:absolute;top:0;bottom:0;left:0;right:0}.drawer{z-index:11;border-top:0;border-bottom:0;border-right:0;border-radius:0;flex-direction:column;width:min(360px,100%);display:flex;position:absolute;top:0;bottom:0;right:0}.drawer .scroll{gap:18px;padding:12px 16px 24px;display:grid;overflow-y:auto}.drawer fieldset{border:0;gap:8px;margin:0;padding:0;display:grid}.drawer legend{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;padding:0 0 6px;font-size:12px;font-weight:700}.check{border-bottom:1px solid var(--line-2);cursor:pointer;text-align:left;background:0 0;border-top:0;border-left:0;border-right:0;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:6px 0;font-size:13px;display:flex}.check small{color:var(--muted);font-size:11.5px;display:block}.keys{color:var(--ink-2);grid-template-columns:auto 1fr;gap:5px 12px;font-size:12.5px;display:grid}.keys kbd{font-family:var(--font-mono);border:1px solid var(--line);color:var(--ink);background:var(--panel-2);white-space:nowrap;border-bottom-width:2px;border-radius:3px;padding:1px 5px;font-size:11px}.mobile-bar{display:none}@media (max-width:1400px){.topbar{grid-template-columns:auto 1fr}.nav{grid-area:2/1/auto/-1;justify-self:start}.left-col{width:270px;top:132px}.dock{left:302px}.tech{width:250px;top:132px}.reaction{top:132px;right:282px}.graphs{grid-template-columns:repeat(5,200px);overflow-x:auto}.btn .lbl{display:none}}@media (max-width:1100px){.reaction{display:none}}@media (max-width:820px){.brand h1{font-size:26px}.brand .sub{font-size:13px}.brand .tag{display:none}.topbar{padding:calc(10px + env(safe-area-inset-top,0px)) 12px 0;gap:8px 10px}.status{display:none}.actions{gap:6px}.btn{height:32px;padding:0 9px}.btn.icon{width:32px}.nav{box-sizing:border-box;width:100%}.dock{bottom:56px;left:8px;right:8px}.dock-row{flex-wrap:wrap}.dock .toggle{flex:1;justify-content:space-between}.dock .timeline{flex-basis:100%}.subtitles{font-size:13px;bottom:152px}.sheet{z-index:6;flex-direction:column;width:auto;min-height:0;max-height:calc(100% - 300px);display:flex;position:absolute;top:auto;bottom:152px;left:8px;right:8px}.sheet-stack{gap:8px;overflow-y:auto}.sheet-stack>.panel{flex:none;overflow:visible}.callout{padding:2px 6px 3px}.callout .t,.callout.station .t{font-size:10.5px}.callout .t .n,.callout.station .t .n{font-size:13px}.callout .v,.callout .s{font-size:10px}.panel.in-sheet{width:auto;max-height:none;display:block;position:static}.reaction.in-sheet{display:block}.graphs-sheet .graphs{grid-template-columns:1fr;height:auto;overflow-y:auto}.graphs-sheet .graph{border-right:0;border-bottom:1px solid var(--line-2);flex:none;height:118px}.mobile-bar{left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom,0px));z-index:7;grid-template-columns:repeat(4,1fr);gap:6px;display:grid;position:absolute}.mobile-bar button{border:1px solid var(--line);background:var(--panel);height:40px;box-shadow:var(--shadow);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);border-radius:5px;font-size:11.5px;font-weight:700}.mobile-bar button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
