/* A Posteriori Research · monochrome desk. White and black; green and red only where a number has a sign. */
:root{--bg:#FFFFFF;--panel:#FFFFFF;--sunk:#F6F6F6;--ink:#111111;--muted:#6E6E6E;--faint:#9A9A9A;--line:#E3E3E3;--grid:#EFEFEF;--up:#1B9A55;--down:#D6392F;--upSoft:#E6F5EC;--downSoft:#FBE9E7;--warn:#B8860B;--sel:#111111;--selInk:#FFFFFF}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--bg:#0E0E0E;--panel:#141414;--sunk:#1A1A1A;--ink:#EDEDED;--muted:#9C9C9C;--faint:#6A6A6A;--line:#262626;--grid:#1F1F1F;--up:#3CC475;--down:#F0624F;--upSoft:#12301E;--downSoft:#3A1A16;--warn:#D9A93B;--sel:#EDEDED;--selInk:#0E0E0E}}
:root[data-theme="dark"]{--bg:#0E0E0E;--panel:#141414;--sunk:#1A1A1A;--ink:#EDEDED;--muted:#9C9C9C;--faint:#6A6A6A;--line:#262626;--grid:#1F1F1F;--up:#3CC475;--down:#F0624F;--upSoft:#12301E;--downSoft:#3A1A16;--warn:#D9A93B;--sel:#EDEDED;--selInk:#0E0E0E}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{color-scheme:light dark}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Lato","IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;font-size:12.5px;line-height:1.4;font-variant-numeric:tabular-nums}
a{color:var(--ink)}
.num{font-variant-numeric:tabular-nums;text-align:right}
.up{color:var(--up)}.down{color:var(--down)}.warn{color:var(--warn)}.muted{color:var(--muted)}.faint{color:var(--faint)}
b{font-weight:700}
/* status bar */
.statusbar{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--ink);display:flex;align-items:center;gap:18px;padding:6px 14px;font-size:12px;white-space:nowrap;overflow-x:auto}
.statusbar .brand{font-weight:900;letter-spacing:.04em;text-transform:uppercase;font-size:12px;margin-right:6px}
.statusbar .kv{display:inline-flex;gap:6px;align-items:baseline}
.statusbar .kv span:first-child{color:var(--muted)}
.statusbar .right{margin-left:auto;display:inline-flex;gap:14px;align-items:center}
.statusbar button,.btn{font:inherit;font-weight:700;font-size:11.5px;padding:3px 9px;border:1px solid var(--ink);background:var(--bg);color:var(--ink);cursor:pointer;border-radius:2px}
.btn.on{background:var(--down);border-color:var(--down);color:#fff}
.btn.ghost{border-color:var(--line);color:var(--muted);font-weight:600}
/* tabs */
.tabs{display:flex;gap:2px;padding:6px 14px;border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:33px;z-index:19;overflow-x:auto}
.tabs button{font:inherit;font-size:12px;font-weight:700;padding:5px 11px;border:1px solid transparent;background:none;color:var(--muted);cursor:pointer;border-radius:2px;white-space:nowrap}
.tabs button.sel{background:var(--sel);color:var(--selInk)}
.tabs button:hover{color:var(--ink)}
.tabs .kbd{margin-left:6px;font-size:10px;color:var(--faint);font-weight:400}
.wrap{max-width:1440px;margin:0 auto;padding:12px 14px 40px;display:flex;flex-direction:column;gap:12px}
section[data-sec]{display:flex;flex-direction:column;gap:12px}
/* panels */
.panel{background:var(--panel);border:1px solid var(--line);display:flex;flex-direction:column;min-width:0}
.panel>h2{margin:0;font-size:12px;font-weight:900;letter-spacing:.02em;padding:7px 10px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:8px}
.panel>h2 .sub{font-weight:400;color:var(--muted);font-size:11.5px}
.panel .body{padding:8px 10px;display:flex;flex-direction:column;gap:6px}
.panel .body.tight{padding:0}
.panel.fold>h2{cursor:pointer}
.panel.folded .body{display:none}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.grid32{display:grid;grid-template-columns:1.5fr 1fr;gap:12px}
/* index panels */
.idx{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.idx .panel>h2 .chg{font-weight:700}
.idx svg{width:100%;height:auto;display:block}
svg text{font-family:inherit;font-size:10px;fill:var(--muted)}
svg .grid{stroke:var(--grid)}svg .zero{stroke:var(--faint);stroke-dasharray:2 2}
svg .candle.up{stroke:var(--up);fill:var(--up)}svg .candle.down{stroke:var(--down);fill:var(--down)}
svg .path{fill:none;stroke:var(--ink);stroke-width:1.2}
svg .lastline{stroke:var(--faint);stroke-dasharray:2 3}
svg .lasttag{fill:var(--ink)}svg .lasttag+text{fill:var(--bg);font-weight:700}
/* breadth */
.breadth{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.bar{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border:1px solid var(--line);background:var(--panel)}
.bar .lbl{display:flex;justify-content:space-between;font-size:11.5px}
.bar .lbl .l{color:var(--up);font-weight:700}.bar .lbl .r{color:var(--down);font-weight:700}
.bar .lbl .m{color:var(--muted)}
.bar .track{height:7px;display:flex;background:var(--grid);border-radius:2px;overflow:hidden}
.bar .track i{display:block;height:100%}
.bar .track i.l{background:var(--up)}.bar .track i.r{background:var(--down)}
/* tables */
table{border-collapse:collapse;width:100%;font-size:12.5px}
th{text-align:left;font-weight:700;color:var(--ink);padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--sunk);position:sticky;top:0}
td{padding:4px 8px;border-bottom:1px solid var(--grid);white-space:nowrap;vertical-align:middle}
tr:last-child td{border-bottom:0}
tr:hover td{background:var(--sunk)}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
td.sym{font-weight:700}
td.sig{color:var(--muted)}
.tablewrap{overflow:auto;max-height:520px}
.tablewrap.short{max-height:300px}
.tag{display:inline-block;padding:0 6px;border:1px solid var(--line);border-radius:2px;font-size:11px;font-weight:700;color:var(--muted)}
.tag.up{border-color:var(--up);color:var(--up)}.tag.down{border-color:var(--down);color:var(--down)}.tag.warn{border-color:var(--warn);color:var(--warn)}
/* map tiles */
.mapclass{display:flex;flex-direction:column;gap:3px;margin-bottom:6px}
.mapclass .micro{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.maprow{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:4px}
.tile{border:1px solid var(--line);padding:4px 6px;display:flex;flex-direction:column;gap:1px;cursor:pointer;text-align:left;color:var(--ink);font:inherit;background:var(--panel);border-radius:2px}
.tile.sel{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.tile .t1,.tile .t2{display:flex;justify-content:space-between;gap:6px;align-items:baseline}
.tile .sym{font-weight:700}
.tile .nm{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .px,.tile .chg{font-size:11.5px}
.spark{width:100%;height:20px;display:block}
/* compare */
.tfs{display:flex;gap:2px}
.tfs button{font:inherit;font-size:11px;font-weight:700;padding:2px 7px;border:1px solid var(--line);background:var(--bg);color:var(--muted);cursor:pointer;border-radius:2px}
.tfs button.sel{background:var(--sel);color:var(--selInk);border-color:var(--sel)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
/* day cards */
.days{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:8px}
.day{border:1px solid var(--line);padding:5px 7px;display:flex;flex-direction:column;gap:3px;color:var(--ink);background:var(--panel)}
.day.up{border-color:var(--up)}.day.down{border-color:var(--down)}.day.off{color:var(--muted)}
.day .dayhead,.day .dayfoot{display:flex;justify-content:space-between;gap:6px;font-size:11px}
.day .dayfoot{color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.day svg{width:100%;height:auto}
.day .band{fill:currentColor;opacity:.12}
.day.up .band{fill:var(--up)}.day.down .band{fill:var(--down)}
.day.up svg path{stroke:var(--up)}.day.down svg path{stroke:var(--down)}
.aband{stroke:var(--warn);stroke-width:1;stroke-dasharray:3 3;opacity:.8}
/* gates, signals, energy */
.gauge{display:grid;grid-template-columns:150px 1fr 52px;gap:8px;align-items:center;font-size:12px}
.gbar{position:relative;height:6px;background:var(--grid);border-radius:3px}
.gtick{position:absolute;top:-4px;width:1px;height:14px;background:var(--ink)}
.gdot{position:absolute;top:-3px;width:12px;height:12px;border-radius:50%;margin-left:-6px;background:var(--up)}
.gdot.down{background:var(--down)}
.gv{text-align:right}
.sigrow{display:flex;align-items:center;gap:10px;font-size:12px}
.badge{font-weight:900;font-size:11px;letter-spacing:.06em;padding:1px 7px;border:1px solid currentColor;border-radius:2px}
.regstrip{display:flex;gap:1px;height:12px}
.regstrip i{flex:1;display:block;background:currentColor;opacity:.9}
.regstrip i.up{color:var(--up)}.regstrip i.down{color:var(--down)}
.energy{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:12px}
.theatre{display:grid;grid-template-columns:96px 1fr 56px;gap:8px;align-items:center;font-size:12px;padding:2px 0}
.theatre .bar{padding:0;border:0;background:var(--grid);height:6px;border-radius:3px;position:relative}
.theatre .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--ink);border-radius:3px}
.theatre .bar i.hot{background:var(--down)}.theatre .bar i.warm{background:var(--warn)}
.kv{display:flex;justify-content:space-between;font-size:12px;padding:3px 0;border-bottom:1px solid var(--grid)}
.micro{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
/* tape */
.tape{font-family:"JetBrains Mono","IBM Plex Mono",ui-monospace,Menlo,monospace;font-size:11.5px;line-height:1.5;max-height:360px;overflow:auto;display:flex;flex-direction:column}
.tl{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:1px 0;border-bottom:1px solid var(--grid)}
.tl .ts{color:var(--muted);margin-right:8px}.tl .lv{margin-right:8px;font-weight:700}.tl .lv.info{color:var(--up)}.tl .lv.warn{color:var(--warn)}.tl .lv.error{color:var(--down)}.tl .tt{font-weight:700}
/* controls drawer */
.drawer{position:fixed;top:0;right:0;bottom:0;width:340px;background:var(--panel);border-left:1px solid var(--ink);z-index:30;padding:14px;display:flex;flex-direction:column;gap:12px;transform:translateX(100%);transition:transform .18s ease}
.drawer.open{transform:none}
.drawer h2{margin:0;font-size:13px;font-weight:900}
.drawer .row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--grid);font-size:12.5px}
@media (prefers-reduced-motion:reduce){.drawer{transition:none}}
/* login */
#login{max-width:400px;margin:90px auto;display:flex;flex-direction:column;gap:12px;padding:0 20px}
#login input{font:inherit;padding:9px 11px;border:1px solid var(--ink);background:var(--bg);color:var(--ink);border-radius:2px}
#login button{font:inherit;font-weight:700;padding:9px 12px;background:var(--ink);color:var(--bg);border:0;border-radius:2px;cursor:pointer}
/* responsive */
@media (max-width:1100px){.idx,.grid3,.grid4{grid-template-columns:1fr 1fr}.breadth{grid-template-columns:1fr 1fr}.energy{grid-template-columns:1fr}}
@media (max-width:720px){.idx,.grid2,.grid3,.grid4,.grid32{grid-template-columns:1fr}.breadth{grid-template-columns:1fr}.gauge{grid-template-columns:110px 1fr 46px}.tabs{top:33px}}
/* energy tab */
.ecards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.ecard{border:1px solid var(--line);background:var(--panel);padding:8px 10px;display:flex;flex-direction:column;gap:3px}
.ecard .k{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.ecard .v{font-size:20px;font-weight:700}
.ecard .s{font-size:11.5px;color:var(--muted)}
.theatres{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.theatre2{border:1px solid var(--line);padding:8px 10px;display:flex;flex-direction:column;gap:5px;font-size:12px}
.theatre2.hot{border-color:var(--down)}.theatre2.warm{border-color:var(--warn)}
.theatre2 .th{display:flex;justify-content:space-between;gap:8px}
.theatre2 .bar{height:5px;background:var(--grid);border-radius:3px;position:relative;border:0;padding:0}
.theatre2 .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--ink);border-radius:3px}
.theatre2 .bar i.hot{background:var(--down)}.theatre2 .bar i.warm{background:var(--warn)}
.heads{margin:2px 0 0;padding-left:14px;font-size:11.5px;line-height:1.35}
.heads li{margin:2px 0}.heads a{color:var(--ink);text-decoration:none}.heads a:hover{text-decoration:underline}
.small{font-size:11px}
.rows2{display:flex;flex-direction:column}
.seatgate{border:1px solid var(--line);padding:8px 10px;display:flex;flex-direction:column;gap:2px}
.seatgate.ok{border-color:var(--up)}.seatgate.no{border-color:var(--down)}
.sg-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.emap svg{width:100%;height:auto;display:block}
.emap svg .lbl{font-size:9.5px;fill:var(--ink)}
.legend2{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:11px;color:var(--muted);margin-top:6px}
.legend2 i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}
@media (max-width:980px){.ecards{grid-template-columns:1fr 1fr}}
body.compact{font-size:11.5px}
body.compact td{padding:2px 6px}body.compact th{padding:4px 6px}
body.compact .panel>h2{padding:5px 8px}body.compact .panel .body{padding:6px 8px;gap:4px}
