:root{
  --bg:#0a0e13;--panel:#10151c;--panel2:#151b24;--panel3:#1b2330;--line:#243041;--line2:#2f3d52;
  --text:#e7edf4;--muted:#8d9cb1;--dim:#617086;
  --accent:#e2a65b;--accent2:#3fb6a8;--info:#5aa9ff;--ok:#3fd17a;--warn:#ffb84d;--bad:#ff5d5d;--purple:#b48cff;
  --r:10px;--shadow:0 10px 30px rgba(0,0,0,.45);
  font-synthesis:none;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:13.5px/1.45 Inter,"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif}
button,input,select{font:inherit;color:inherit}
a{color:var(--info)}
#app{display:grid;grid-template-columns:62px 384px 1fr;grid-template-rows:58px 1fr;height:100vh;overflow:hidden}
.topbar{grid-column:1/-1;display:flex;align-items:center;gap:18px;padding:0 14px;background:linear-gradient(180deg,#121924,#0d1219);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;min-width:330px}
.logo{width:30px;height:30px;color:var(--accent)}
.brand h1{margin:0;font-size:16px;letter-spacing:.3px;font-weight:700}
.brand p{margin:0;color:var(--muted);font-size:11.5px}
.kpis{display:flex;gap:8px;flex:1;overflow:hidden}
.kpi{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:4px 10px;min-width:104px}
.kpi b{display:block;font-size:15px;font-variant-numeric:tabular-nums}
.kpi span{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.kpi.live b{color:var(--ok)}
.top-actions{display:flex;align-items:center;gap:8px}
.livepill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:99px;background:var(--panel2);border:1px solid var(--line);cursor:pointer;font-size:12px}
.livepill i{width:8px;height:8px;border-radius:50%;background:var(--warn);box-shadow:0 0 0 0 rgba(255,184,77,.6);animation:pulse 2s infinite}
.livepill.ok i{background:var(--ok)} .livepill.bad i{background:var(--bad);animation:none}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(63,209,122,.5)}70%{box-shadow:0 0 0 8px rgba(63,209,122,0)}100%{box-shadow:0 0 0 0 rgba(63,209,122,0)}}
.clock{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px;min-width:150px;text-align:right}
.btn{background:var(--panel3);border:1px solid var(--line2);border-radius:8px;padding:6px 11px;cursor:pointer}
.btn:hover{border-color:var(--accent)} .btn.ghost{background:transparent}
.btn.primary{background:var(--accent);color:#1b1206;border-color:var(--accent);font-weight:600}
.btn.small{padding:3px 8px;font-size:12px}
.rail{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding-top:8px;gap:4px}
.rail button{width:52px;height:54px;border:0;background:none;border-radius:10px;color:var(--muted);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10.5px}
.rail button svg{width:22px;height:22px}
.rail button:hover{background:var(--panel2);color:var(--text)}
.rail button.active{background:var(--panel3);color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.panel{background:var(--panel);border-right:1px solid var(--line);overflow:auto}
.pane{display:none;padding:14px 14px 40px}
.pane.active{display:block}
.pane h2{font-size:14px;margin:4px 0 10px;letter-spacing:.3px}
.pane h3{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:18px 0 8px;font-weight:600}
.muted{color:var(--muted)} .dim{color:var(--dim)} .small{font-size:12px}
.note{font-size:11.5px;color:var(--muted);background:var(--panel2);border:1px dashed var(--line2);border-radius:8px;padding:8px 10px;margin:8px 0}
.note.warn{border-color:rgba(255,184,77,.5);color:#f3d7a8}
.group{border:1px solid var(--line);border-radius:var(--r);margin-bottom:10px;background:var(--panel2)}
.group>header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;cursor:pointer;font-weight:600;font-size:12.5px}
.group>div{padding:2px 10px 10px}
.layer{display:grid;grid-template-columns:18px 1fr auto;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.layer:first-child{border-top:0}
.layer label{cursor:pointer;grid-column:1/-1;display:grid;grid-template-columns:18px 1fr;gap:8px;align-items:start}
.layer label input{margin-top:2px}
.layer .lname{font-size:12.8px}
.layer .lsub{display:block;font-size:11px;color:var(--muted)}
.layer input[type=range]{grid-column:2/4;width:100%;height:4px;accent-color:var(--accent)}
.badge{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.5px;padding:2px 6px;border-radius:4px;text-transform:uppercase;white-space:nowrap}
.b-live{background:rgba(63,209,122,.15);color:var(--ok);border:1px solid rgba(63,209,122,.4)}
.b-nrt{background:rgba(255,184,77,.13);color:var(--warn);border:1px solid rgba(255,184,77,.4)}
.b-daily{background:rgba(63,182,168,.13);color:var(--accent2);border:1px solid rgba(63,182,168,.4)}
.b-static{background:rgba(141,156,177,.12);color:#b8c4d4;border:1px solid rgba(141,156,177,.35)}
.b-snap{background:rgba(180,140,255,.13);color:var(--purple);border:1px solid rgba(180,140,255,.4)}
.b-ondemand{background:rgba(90,169,255,.13);color:var(--info);border:1px solid rgba(90,169,255,.4)}
.b-bad{background:rgba(255,93,93,.13);color:var(--bad);border:1px solid rgba(255,93,93,.4)}
.b-derived{background:rgba(226,166,91,.12);color:var(--accent);border:1px solid rgba(226,166,91,.4)}
select,input[type=text],input[type=search],textarea{background:var(--panel3);border:1px solid var(--line2);border-radius:8px;padding:6px 8px;width:100%}
.row{display:flex;gap:8px;align-items:center}
.feed{border:1px solid var(--line);border-radius:var(--r);padding:10px;margin-bottom:8px;background:var(--panel2)}
.feed .ft{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.feed .fn{font-weight:600}
.feed .fm{font-size:11.5px;color:var(--muted);margin-top:4px}
.feed .fx{font-size:11px;color:var(--dim);margin-top:4px;word-break:break-word}
.tbl{width:100%;border-collapse:collapse;font-size:12px}
.tbl th{position:sticky;top:0;background:var(--panel3);text-align:left;font-weight:600;color:var(--muted);padding:6px;cursor:pointer;white-space:nowrap;border-bottom:1px solid var(--line2)}
.tbl td{padding:5px 6px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
.tbl tr:hover td{background:var(--panel3);cursor:pointer}
.tbl td.num,.tbl th.num{text-align:right}
.scroll{max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:8px}
.mapwrap{position:relative;overflow:hidden}
#map{position:absolute;inset:0;background:#0b1118}
.map-search{position:absolute;top:12px;left:12px;width:min(420px,60%);z-index:5}
.map-search input{background:rgba(16,21,28,.94);border:1px solid var(--line2);padding:9px 12px;border-radius:10px;box-shadow:var(--shadow)}
.search-results{margin-top:4px;background:rgba(16,21,28,.97);border:1px solid var(--line2);border-radius:10px;max-height:320px;overflow:auto;display:none;box-shadow:var(--shadow)}
.search-results div{padding:7px 12px;cursor:pointer;border-bottom:1px solid var(--line)}
.search-results div:hover,.search-results div.sel{background:var(--panel3)}
.search-results small{color:var(--muted);margin-left:6px}
.toolbar{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:5;display:flex;gap:2px;background:rgba(16,21,28,.94);border:1px solid var(--line2);border-radius:10px;padding:3px;box-shadow:var(--shadow)}
.toolbar button{background:none;border:0;padding:6px 10px;border-radius:7px;cursor:pointer;color:var(--muted);font-size:12.5px}
.toolbar button:hover{color:var(--text);background:var(--panel3)}
.toolbar button.active{background:var(--accent);color:#1b1206;font-weight:600}
.toolbar .sep{width:1px;background:var(--line2);margin:4px 3px}
.basemaps{position:absolute;bottom:28px;right:12px;z-index:5;display:flex;gap:6px}
.basemaps button{width:74px;height:56px;border-radius:9px;border:2px solid var(--line2);background:var(--panel2);cursor:pointer;font-size:10.5px;padding:0;overflow:hidden;display:flex;align-items:flex-end;justify-content:center;color:#fff;text-shadow:0 1px 2px #000;box-shadow:var(--shadow)}
.basemaps button span{background:rgba(0,0,0,.55);width:100%;padding:2px 0}
.basemaps button.active{border-color:var(--accent)}
.legend{position:absolute;bottom:28px;left:12px;z-index:5;background:rgba(16,21,28,.94);border:1px solid var(--line2);border-radius:10px;padding:10px 12px;max-width:300px;max-height:46vh;overflow:auto;box-shadow:var(--shadow);font-size:11.5px}
.legend h4{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.legend .lg{margin-bottom:8px}
.legend .ramp{display:flex;height:10px;border-radius:3px;overflow:hidden;margin:4px 0}
.legend .ramp i{flex:1}
.legend .ticks{display:flex;justify-content:space-between;color:var(--muted);font-size:10.5px}
.legend .sym{display:flex;align-items:center;gap:6px;margin:3px 0}
.legend .sym i{display:inline-block;width:11px;height:11px;border-radius:50%;border:1.5px solid rgba(255,255,255,.7)}
.legend .sym i.line{height:3px;border-radius:2px;border:0;width:18px}
.hoverbox{position:absolute;pointer-events:none;z-index:6;background:rgba(10,14,19,.96);border:1px solid var(--line2);border-radius:8px;padding:7px 9px;font-size:12px;display:none;max-width:280px;box-shadow:var(--shadow)}
.hoverbox b{display:block}
.toast{position:absolute;bottom:96px;left:50%;transform:translateX(-50%);background:var(--panel3);border:1px solid var(--line2);padding:8px 14px;border-radius:9px;display:none;z-index:9;box-shadow:var(--shadow)}
.drawer{position:absolute;top:0;right:0;bottom:0;width:410px;background:var(--panel);border-left:1px solid var(--line);transform:translateX(102%);transition:transform .22s ease;z-index:8;overflow:auto;box-shadow:var(--shadow)}
.drawer.open{transform:none}
.drawer-close{position:absolute;top:8px;right:10px;background:none;border:0;color:var(--muted);font-size:24px;cursor:pointer;z-index:2}
#drawerBody{padding:16px 16px 40px}
.dh{margin:0 30px 2px 0;font-size:17px}
.dsub{color:var(--muted);font-size:12px;margin-bottom:10px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}
.stat{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.stat b{font-size:16px;display:block;font-variant-numeric:tabular-nums}
.stat span{font-size:11px;color:var(--muted)}
.stat em{font-style:normal;font-size:10.5px;color:var(--dim);display:block}
.bars .bar{display:grid;grid-template-columns:120px 1fr 54px;gap:6px;align-items:center;font-size:11.5px;margin:4px 0}
.bars .bar .track{background:var(--panel3);height:8px;border-radius:4px;position:relative;overflow:hidden}
.bars .bar .fill{position:absolute;inset:0 auto 0 0;background:var(--accent);border-radius:4px}
.bars .bar .nat{position:absolute;top:-2px;bottom:-2px;width:2px;background:#fff;opacity:.6}
.list{margin:0;padding:0;list-style:none}
.list li{padding:6px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:8px;font-size:12.5px;cursor:pointer}
.list li:hover{color:var(--accent)}
.kv{display:grid;grid-template-columns:130px 1fr;gap:4px 10px;font-size:12.3px}
.kv dt{color:var(--muted)} .kv dd{margin:0;word-break:break-word}
.spark{width:100%;height:70px}
.chat{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.msg{padding:8px 10px;border-radius:10px;max-width:95%;white-space:pre-wrap;font-size:12.8px}
.msg.u{align-self:flex-end;background:#2a2116;border:1px solid #5a4325}
.msg.a{align-self:flex-start;background:var(--panel2);border:1px solid var(--line)}
.msg .src{display:block;margin-top:6px;font-size:10.5px;color:var(--dim)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.chip{background:var(--panel3);border:1px solid var(--line2);border-radius:99px;padding:3px 9px;font-size:11.5px;cursor:pointer}
.chip:hover{border-color:var(--accent)}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;z-index:50}
.modal.open{display:flex}
.modal-card{position:relative;background:var(--panel);border:1px solid var(--line2);border-radius:14px;width:min(860px,92vw);max-height:86vh;overflow:auto;padding:20px 24px;box-shadow:var(--shadow)}
.libcard{border:1px solid var(--line);border-radius:var(--r);padding:10px;margin-bottom:8px;background:var(--panel2)}
.libcard .t{font-weight:600}
.libcard .d{font-size:12px;color:var(--muted);margin-top:3px}
.slider{display:grid;grid-template-columns:150px 1fr 34px;gap:8px;align-items:center;font-size:12px;margin:4px 0}
.slider input{accent-color:var(--accent)}
.maplibregl-popup-content{background:var(--panel);color:var(--text);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--shadow);padding:10px 12px;font-size:12.5px}
.maplibregl-popup-tip{border-top-color:var(--panel)!important;border-bottom-color:var(--panel)!important}
.maplibregl-popup-close-button{color:var(--muted);font-size:18px}
.maplibregl-ctrl-group{background:rgba(16,21,28,.94)!important;border:1px solid var(--line2)}
.maplibregl-ctrl-group button{filter:invert(.9)}
.maplibregl-ctrl-attrib{background:rgba(10,14,19,.75)!important;color:var(--muted)!important;font-size:10px}
.maplibregl-ctrl-attrib a{color:var(--muted)!important}
.maplibregl-ctrl-scale{background:rgba(10,14,19,.7);color:var(--text);border-color:var(--muted)}
.ireg-label{font-size:10.5px;color:#f1e3cf;text-shadow:0 0 3px #000,0 0 6px #000;pointer-events:none;white-space:nowrap;font-weight:600;letter-spacing:.2px}
@media (max-width:1100px){#app{grid-template-columns:54px 320px 1fr}.kpis{display:none}.brand{min-width:0}}
@media print{.rail,.panel,.toolbar,.basemaps,.map-search{display:none}}
/* ---- v1 additions (components used by core/ui/assistant) ---- */
.toast.show{display:block}.toast.warn{border-color:var(--warn);color:#ffe2b0}
.chip.on{background:var(--accent);color:#1b1206;border-color:var(--accent);font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;flex:none;vertical-align:middle;border:1px solid rgba(255,255,255,.6)}
.list{list-style:none;padding:0;margin:4px 0}
.list li{justify-content:flex-start;align-items:flex-start;flex-wrap:wrap}
.list li small{display:block;width:100%;color:var(--muted);padding-left:15px}
.chart{width:100%;height:auto;display:block;background:var(--panel2);border:1px solid var(--line);border-radius:8px}
.chart .grid{stroke:var(--line2);stroke-width:.6}.chart .ax{fill:var(--muted);font-size:9px}
.chart .bub{fill:rgba(63,182,168,.45);stroke:#6fd3c1;stroke-width:1;cursor:pointer}.chart .bub:hover{fill:rgba(226,166,91,.7)}
.chart .bub.sel{fill:rgba(255,209,102,.85);stroke:#fff;stroke-width:2}
#raChart .bars .bar{grid-template-columns:96px 1fr 58px 92px}
.legend .sym{flex-wrap:wrap;gap:3px 10px;align-items:flex-start;display:flex;max-width:330px}
.legend .sym span{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted)}
.legend .sym i.tri{width:0;height:0;border:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:11px solid #ffd23f;background:none!important;border-radius:0}
.ireg-label{pointer-events:auto;cursor:pointer;transition:opacity .2s}
.ireg-label.lg{font-size:12.5px}
body.light-map .ireg-label{color:#17202c;text-shadow:0 0 3px #fff,0 0 6px #fff}
.ireg-label:hover{color:#ffd166}
.note code{background:var(--panel3);padding:1px 4px;border-radius:4px}
.kv.small{font-size:11px}
details summary{cursor:pointer;color:var(--muted);margin:8px 0}
.msg a{color:var(--accent)}
.brief h2{margin-top:0}
@media print{.brief .noprint{display:none}.modal-card{max-height:none!important;overflow:visible!important}}
.msg.a{white-space:normal}
/* layout fixes from browser test (overlaps) */
.toolbar{left:auto;right:12px;transform:none}
.basemaps{top:58px;bottom:auto;right:12px}
.basemaps button{width:58px;height:40px}
.kpis{align-items:center;gap:6px;flex-wrap:wrap;height:38px;align-self:center;align-content:flex-start;row-gap:20px}
.kpi{flex:0 0 auto;min-width:0;padding:3px 8px;white-space:nowrap}
.kpi b{font-size:13.5px;line-height:1.2}.kpi span{font-size:9.5px}
@media (max-width:1500px){.kpi:nth-child(n+6){display:none}}
@media (max-width:1250px){.map-search{width:min(300px,40%)}}
.drawer-open .toolbar,.drawer-open .basemaps{right:422px}
.drawer-open .maplibregl-ctrl-bottom-right{right:410px}
.toolbar,.basemaps,.maplibregl-ctrl-bottom-right{transition:right .22s ease}

/* ---- legend: compact, collapsible map key ---- */
.legend{padding:0;overflow:hidden;max-height:min(52vh,460px);display:flex;flex-direction:column;width:max-content;max-width:min(320px,calc(100% - 90px));background:rgba(16,21,28,.9);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:opacity .25s,background .25s}
.legend:empty{display:none}
.legend .lg-toggle{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:8px;width:100%;padding:7px 12px;cursor:pointer;font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line)}
.legend .lg-toggle:hover,.legend .lg-toggle:focus-visible{color:var(--text,#fff)}
.legend .lg-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.legend .lg-count{font-weight:400;text-transform:none;letter-spacing:0;color:var(--dim,#8a93a0);margin-left:auto}
.legend .lg-chev{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translate(-2px,-2px);transition:transform .2s}
.legend.compact .lg-chev{transform:rotate(-135deg) translate(-2px,-2px)}
.legend .lg-ramps{padding:8px 12px 2px}
.legend .lg-ramps .sym{display:none}
.legend .lg-sym{padding:4px 12px 10px;overflow:auto;min-height:0}
.legend.nosym .lg-toggle{display:none}
.legend.compact .lg-sym,.legend.moving:not(:hover) .lg-sym{display:none}
.legend.moving:not(:hover){opacity:.72}
@media (max-width:900px){.legend{bottom:22px;left:8px;max-width:calc(100% - 70px)}}
@media print{.legend .lg-toggle{display:none}.legend .lg-sym{display:block!important}}
.legend .lg-ramps:empty{display:none}
.legend{bottom:40px}

/* ---- index (RARI) pane ---- */
.rx-switch{display:flex;gap:8px;align-items:center;font-size:12.5px;margin:6px 0 2px;cursor:pointer}
#paneRari select{width:100%}
.rx-hist{width:100%;height:auto;display:block;margin:10px 0 2px}
.rx-weights label{display:grid;grid-template-columns:1fr 90px 26px;gap:8px;align-items:center;font-size:11.5px;margin:3px 0}
.rx-weights input{width:100%;accent-color:var(--accent)}
.rx-weights b{text-align:right;font-variant-numeric:tabular-nums}
.rx-layers label{display:flex;align-items:center;gap:7px;font-size:12px;margin:4px 0;cursor:pointer}
.rx-layers i{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}
#rxFind{width:100%}
.rx-hit{padding:5px 8px;border-radius:6px;cursor:pointer;font-size:12.5px}
.rx-hit:hover{background:var(--panel3)}
.rx-list{margin:4px 0 8px 18px;padding:0;font-size:12.3px}
.rx-list li{margin:2px 0}
.bars.rx-ind .bar{grid-template-columns:150px 1fr 26px 74px}
.bars.rx-ind .bar em{font-style:normal;font-size:10.5px;color:var(--muted);text-align:right;white-space:nowrap}
.rx-tbl td:first-child{white-space:nowrap}

/* ==== RMIT Supply Chain Lab light theme (matches the Lab's showcase pages) ==== */
:root{
  --bg:#f8f9ff;--panel:#ffffff;--panel2:#f8f9ff;--panel3:#eef0fa;--line:#e7e9f5;--line2:#d9dcec;
  --text:#191933;--muted:#6b6b88;--dim:#9a9ab5;--navy:#000054;--red:#E60028;
  --accent:#E60028;--accent2:#0a8f5b;--info:#000054;--ok:#0a8f5b;--warn:#b8791f;--bad:#E60028;--purple:#6a4bc4;
  --shadow:0 2px 6px rgba(0,0,84,.05),0 14px 34px rgba(0,0,84,.08);
}
html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
a{color:var(--navy);font-weight:600}
.topbar{background:var(--navy);border-bottom:0;color:#fff}
.topbar .brand p,.topbar .clock{color:rgba(255,255,255,.72)}
.logo{color:#fff}
.topbar .kpi{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}
.topbar .kpi span{color:rgba(255,255,255,.7)}
.topbar .kpi.live b{color:#5ee0a0}
.topbar .livepill{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff}
.topbar .btn{background:#fff;color:var(--navy);border-color:#fff;font-weight:700;border-radius:999px;padding:6px 14px}
.topbar .btn:hover{background:#f1f2fb}
.btn{background:#fff;border-color:var(--line2);color:var(--navy)}
.btn:hover{border-color:var(--red)}
.btn.primary,.toolbar button.active,.chip.on{background:var(--red);border-color:var(--red);color:#fff}
.rail{background:#fff}
.rail button{color:var(--muted)}
.rail button:hover{background:var(--panel3);color:var(--navy)}
.rail button.active{background:#fdecef;color:var(--red);box-shadow:inset 3px 0 0 var(--red)}
.panel{background:#fff}
.pane h2{color:var(--navy);font-size:15px;font-weight:800;letter-spacing:-.01em}
.pane h3{color:var(--muted)}
.group{background:#fff;box-shadow:0 1px 2px rgba(0,0,84,.04)}
.note{background:var(--panel2);border-color:var(--line2);color:var(--muted)}
.note.warn{background:#fff8ec;border-color:#f1dfb8;color:#7a5418}
.b-live{background:#e7f6ee;color:#0a7a4d;border-color:#bfe6d1}
.b-nrt{background:#fdf3e2;color:#9a6512;border-color:#f1dcb3}
.b-daily{background:#e6f4f1;color:#0f6b5e;border-color:#bfe2db}
.b-static{background:#eef0fa;color:#4b4f72;border-color:#d9dcec}
.b-snap{background:#f0ebfb;color:#5a3fb0;border-color:#d8ccf3}
.b-ondemand{background:#e9edfb;color:#000054;border-color:#cdd3f1}
.b-bad{background:#fdecef;color:#c2001f;border-color:#f6c3cd}
.b-derived{background:#fbf1de;color:#b8791f;border-color:#efd9ad}
#map{background:#e9edf3}
.map-search input,.search-results,.toolbar,.hoverbox,.legend,.maplibregl-ctrl-group{background:rgba(255,255,255,.97)!important;border-color:var(--line2);color:var(--text)}
.toolbar button{color:var(--navy)}
.toolbar button:hover{background:var(--panel3)}
.hoverbox{box-shadow:var(--shadow)}
.maplibregl-ctrl-attrib{background:rgba(255,255,255,.85)!important;color:var(--muted)!important}
.maplibregl-ctrl-attrib a{color:var(--navy)!important}
.maplibregl-ctrl-scale{background:rgba(255,255,255,.85);color:var(--navy);border-color:var(--navy)}
.basemaps button{border-color:#fff;box-shadow:var(--shadow)}
.basemaps button.active{border-color:var(--red)}
.ireg-label,body.light-map .ireg-label{color:#000054;text-shadow:0 0 3px #fff,0 0 6px #fff,0 0 8px #fff}
.ireg-label:hover{color:var(--red)}
.drawer{background:#fff;box-shadow:-10px 0 30px rgba(0,0,84,.08)}
.dh{color:var(--navy);font-weight:800;font-size:19px;letter-spacing:-.02em}
.stat{background:#fff;border-color:var(--line);box-shadow:0 1px 2px rgba(0,0,84,.05)}
.stat b{color:var(--navy);font-weight:800}
.modal{background:rgba(0,0,40,.35)}
.modal-card{background:#fff;border-color:var(--line)}
.toast{background:#fff;color:var(--text);box-shadow:var(--shadow)}
.toast.warn{border-color:#f1dfb8;color:#7a5418}
.msg.u{background:#fdecef;border-color:#f6c3cd}
.legend .lg-toggle{color:var(--navy)}
.legend .lg-toggle:hover{color:var(--red)}
.tbl th{background:var(--panel3);color:var(--muted)}
.bars .bar .fill{background:var(--navy)}
.bars .bar .nat{background:var(--red);opacity:.85}
.chip{background:#fff;border-color:var(--line2);color:var(--navy)}
.chip:hover{border-color:var(--red)}
.feed{background:#fff}
select,input[type=search],input[type=text]{background:#fff;border:1px solid var(--line2);border-radius:8px;padding:7px 9px;color:var(--text)}
input[type=range]{accent-color:var(--red)}

/* ---- index headline card ---- */
.rx-card{position:absolute;top:64px;left:12px;z-index:6;width:318px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px 12px;box-shadow:var(--shadow);color:var(--text)}
.drawer-open .rx-card{display:none}
.rx-eyebrow{display:flex;align-items:center;justify-content:space-between;font:700 10.5px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.rx-info{position:relative;display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--navy);color:var(--navy);font:800 11px/1 Georgia,serif;cursor:help;letter-spacing:0;text-transform:none}
.rx-info:hover,.rx-info:focus{background:var(--navy);color:#fff;outline:none}
.rx-tip{display:none;position:absolute;top:24px;left:-252px;width:300px;background:var(--navy);color:#fff;border-radius:12px;padding:12px 14px;font:400 12px/1.45 Inter,system-ui,sans-serif;letter-spacing:0;text-transform:none;box-shadow:var(--shadow);z-index:9}
.rx-tip b{display:block;font-size:12.5px;margin-bottom:6px}
.rx-tip span{display:block;margin:4px 0;color:rgba(255,255,255,.88)}
.rx-info:hover .rx-tip,.rx-info:focus .rx-tip{display:block}
.rx-head{display:flex;align-items:center;gap:14px;margin:8px 0 6px}
.rx-big{font-size:54px;font-weight:900;color:var(--navy);letter-spacing:-.04em;line-height:1}
.rx-sub b{display:block;color:var(--navy);font-size:14px;font-weight:800;line-height:1.2}
.rx-sub span{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.rx-status{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:11.5px;margin:4px 0 10px}
.rx-live{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:#0a7a4d;background:#e7f6ee;border:1px solid #bfe6d1;border-radius:999px;padding:3px 9px;text-transform:uppercase;letter-spacing:.06em;font-size:10.5px}
.rx-live i{width:7px;height:7px;border-radius:50%;background:#0a8f5b;animation:pulse 2s infinite}
.rx-next{color:var(--muted)}.rx-next b{color:var(--red);font-weight:800}
.rx-pills{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.rx-pills div{display:grid;grid-template-rows:auto 6px auto;gap:3px;font-size:10.5px;color:var(--muted);text-align:center}
.rx-pills span{font-weight:800;color:var(--navy)}
.rx-pills i{display:block;background:var(--panel3);border-radius:3px;overflow:hidden}
.rx-pills i b{display:block;height:100%;background:#1d7484}
.rx-pills em{font-style:normal;font-weight:700;color:var(--text)}
.rx-now{margin-top:10px;padding-top:9px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted)}
.rx-now b{color:var(--navy)}
@media (max-width:900px){.rx-card{width:calc(100% - 24px);top:auto;bottom:70px}}

.rx-ask{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:12px;border:0;border-radius:11px;background:var(--red);color:#fff;font-weight:700;font-size:13.5px;padding:10px 14px;cursor:pointer;box-shadow:0 4px 14px rgba(230,0,40,.25)}
.rx-ask:hover{filter:brightness(.95)}
.topbar .ask-btn{background:var(--red);border-color:var(--red);color:#fff}
.topbar .ask-btn:hover{background:#c8001f}

/* ---- Ask the data (matches the Lab's AUFireBench layout) ---- */
.ask-wrap{position:fixed;inset:0;z-index:60;background:rgba(0,0,40,.35);display:none;overflow:auto;padding:28px 16px}
.ask-wrap.open{display:block}
.ask-inner{position:relative;max-width:1180px;margin:0 auto;background:#fff;border-radius:22px;padding:40px 44px 36px;box-shadow:0 30px 80px rgba(0,0,84,.25);color:var(--text)}
.ask-close{position:absolute;top:14px;right:18px;border:0;background:none;font-size:30px;line-height:1;color:var(--muted);cursor:pointer}
.ask-top{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:end;margin-bottom:24px}
.ask-eyebrow{font:600 12px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.18em;text-transform:uppercase;color:#4b4f72}
.ask-top h1{margin:8px 0 0;font-size:46px;line-height:1.02;font-weight:900;letter-spacing:-.04em;color:var(--navy)}
.ask-top p{margin:0;font-size:16px;line-height:1.5;color:var(--navy)}
.ask-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:22px;align-items:start}
.ask-card{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 2px 6px rgba(0,0,84,.04),0 14px 34px rgba(0,0,84,.06)}
.ask-chat{display:flex;flex-direction:column;min-height:560px}
.ask-head{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line)}
.ask-head b{color:var(--navy);font-size:16px;font-weight:800}
.ask-dot{width:11px;height:11px;border-radius:50%;background:#0a8f5b;box-shadow:0 0 0 4px #e1f3ea}
.ask-filter{margin-left:auto;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px}
.ask-filter select{border:1px solid var(--line2);border-radius:8px;padding:4px 8px;font-size:13px;color:var(--navy);background:#fff}
.ask-log{flex:1;overflow:auto;padding:20px;display:flex;flex-direction:column;gap:12px;max-height:56vh}
.ask-msg{max-width:92%;padding:12px 16px;border-radius:14px;font-size:14.5px;line-height:1.5;color:var(--navy)}
.ask-msg.a{align-self:flex-start;background:#eceef8}
.ask-msg.u{align-self:flex-end;background:var(--navy);color:#fff}
.ask-msg p{margin:0 0 8px}.ask-msg p:last-child{margin-bottom:0}.ask-msg ul{margin:4px 0 8px 18px;padding:0}
.ask-msg a{color:var(--red)}
.ask-src{margin-top:8px;font-size:11.5px;color:var(--muted)}
.ask-note{font-size:12px;color:var(--muted);margin-top:6px}
.ask-tbl{width:100%;border-collapse:collapse;margin:10px 0 2px;font-size:13px;background:#fff;border-radius:10px;overflow:hidden}
.ask-tbl th{text-align:left;font-weight:700;color:var(--muted);font-size:11.5px;padding:6px 8px;border-bottom:1px solid var(--line)}
.ask-tbl td{padding:6px 8px;border-bottom:1px solid var(--line2);font-variant-numeric:tabular-nums}
.ask-tbl td.num,.ask-tbl th:not(:first-child){text-align:right}
.ask-tbl small{color:var(--muted)}
.ask-form{display:flex;gap:12px;padding:16px 18px;border-top:1px solid var(--line)}
.ask-form input{flex:1;border:1px solid var(--line2);background:#f8f9ff;border-radius:12px;padding:13px 16px;font-size:15px}
.ask-form input:focus{outline:2px solid var(--navy);outline-offset:1px}
.ask-send{border:0;border-radius:12px;background:var(--red);color:#fff;font-weight:800;font-size:15px;padding:0 24px;cursor:pointer;box-shadow:0 4px 14px rgba(230,0,40,.28)}
.ask-send:disabled{opacity:.6;cursor:wait}
.ask-try{padding:22px 24px}
.ask-try h2{margin:0;font-size:21px;font-weight:800;color:var(--navy);letter-spacing:-.01em}
.ask-muted{margin:4px 0 16px;color:var(--muted);font-size:14px}
.ask-q{display:block;width:100%;text-align:left;background:#f8f9ff;border:1px solid var(--line2);border-radius:12px;padding:14px 18px;margin-bottom:12px;cursor:pointer;transition:.15s}
.ask-q:hover{border-color:var(--red);background:#fff;box-shadow:0 4px 14px rgba(0,0,84,.06)}
.ask-q b{display:block;color:var(--navy);font-size:15px;font-weight:800}
.ask-q span{display:block;color:var(--muted);font-size:13.5px;margin-top:4px}
.ask-foot{font-size:13px;color:var(--muted);line-height:1.5;margin:8px 0 0}
.ask-typing{display:inline-flex;gap:4px}.ask-typing i{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:askb 1s infinite}
.ask-typing i:nth-child(2){animation-delay:.15s}.ask-typing i:nth-child(3){animation-delay:.3s}
@keyframes askb{0%,80%,100%{opacity:.25}40%{opacity:1}}
@media (max-width:900px){.ask-top,.ask-grid{grid-template-columns:1fr}.ask-inner{padding:26px 18px}.ask-top h1{font-size:36px}}
.ask-tbl td.num{white-space:nowrap}
.ask-filter select{width:auto;max-width:210px}
.ask-inline{background:none;padding:0;position:static;display:block}
.ask-inline .ask-inner{box-shadow:none;padding:0;max-width:none;background:none}
.ask-inline .ask-close{display:none}

/* ---- index card docked above the map (no overlay) ---- */
.mapwrap.has-card{--cardh:132px}
.mapwrap.has-card #map{top:var(--cardh)}
.mapwrap.has-card .map-search,.mapwrap.has-card .toolbar{top:calc(var(--cardh) + 12px)}
.mapwrap.has-card .basemaps{top:calc(var(--cardh) + 58px)}
.mapwrap.has-card .drawer{top:var(--cardh)}
.rx-card{position:absolute;top:0;left:0;right:0;width:auto;height:var(--cardh);border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:0 2px 10px rgba(0,0,84,.05);padding:12px 20px;z-index:7}
.drawer-open .rx-card{display:block}
.rx-row{display:grid;grid-template-columns:minmax(230px,auto) minmax(260px,1fr) minmax(250px,320px);gap:28px;align-items:center;margin-top:4px}
.rx-col{min-width:0}
.rx-c1 .rx-head{margin:0}
.rx-big{font-size:58px}
.rx-c2 .rx-status{margin:0 0 8px}
.rx-c2 .rx-pills{max-width:440px}
.rx-c3 .rx-ask{margin-top:0}
.rx-c3 .rx-now{margin-top:8px;padding-top:0;border-top:0;line-height:1.4}
.rx-eyebrow{justify-content:flex-start;gap:10px}
.rx-tip{left:-6px;top:24px}
@media (max-width:1250px){.mapwrap.has-card{--cardh:156px}.rx-row{grid-template-columns:auto 1fr;gap:16px}.rx-c3{grid-column:1/-1;display:flex;gap:14px;align-items:center}.rx-c3 .rx-ask{width:auto;flex:none}.rx-c3 .rx-now{margin:0}.rx-big{font-size:44px}}
@media (max-width:900px){.mapwrap.has-card{--cardh:210px}.rx-card{bottom:auto}}

/* ---- Ask the data popup: fit the window (no page scroll); chat log and question list scroll inside ---- */
.ask-wrap.open:not(.ask-inline){display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden}
.ask-wrap:not(.ask-inline) .ask-inner{width:min(1120px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;overflow:hidden;padding:24px 30px 22px;margin:0}
.ask-wrap:not(.ask-inline) .ask-inner>#askData{display:flex;flex-direction:column;flex:1;min-height:0}
.ask-wrap:not(.ask-inline) .ask-top{margin-bottom:14px;gap:20px;flex:none}
.ask-wrap:not(.ask-inline) .ask-top h1,.ask-wrap:not(.ask-inline) .ask-h{font-size:34px;margin-top:6px}
.ask-wrap:not(.ask-inline) .ask-top p{font-size:14px}
.ask-wrap:not(.ask-inline) .ask-grid{flex:1;min-height:0;grid-template-rows:minmax(0,1fr);align-items:stretch}
.ask-wrap:not(.ask-inline) .ask-chat{min-height:0}
.ask-wrap:not(.ask-inline) .ask-log{flex:1;min-height:0;max-height:none}
.ask-wrap:not(.ask-inline) .ask-try{overflow:auto;min-height:0;padding:16px 18px}
.ask-wrap:not(.ask-inline) .ask-try h2,.ask-wrap:not(.ask-inline) .ask-try h3{font-size:18px}
.ask-wrap:not(.ask-inline) .ask-muted{margin:2px 0 10px;font-size:13px}
.ask-wrap:not(.ask-inline) .ask-q{padding:9px 14px;margin-bottom:7px}
.ask-wrap:not(.ask-inline) .ask-q b{font-size:14px}
.ask-wrap:not(.ask-inline) .ask-q span{font-size:12.5px;margin-top:2px}
.ask-wrap:not(.ask-inline) .ask-foot{font-size:12px}
.ask-wrap:not(.ask-inline) .ask-form{padding:12px 14px}
.ask-wrap:not(.ask-inline) .ask-form input{padding:10px 14px;font-size:14px}
@media (max-height:640px){.ask-wrap:not(.ask-inline) .ask-top p{display:none}}
@media (max-width:900px){
  .ask-wrap.open:not(.ask-inline){display:block;padding:8px;overflow:auto}
  .ask-wrap:not(.ask-inline) .ask-inner{max-height:none;overflow:visible;padding:20px 14px}
  .ask-wrap:not(.ask-inline) .ask-grid{grid-template-columns:1fr;grid-template-rows:auto}
  .ask-wrap:not(.ask-inline) .ask-log{max-height:50vh}
}

/* ---- UI/UX pass (Shahrooz Shahparvari, v1.3): readable type floor, contrast, one primary action, quieter map chrome ---- */
:root{--dim:#75759a}
.topbar .kpi span{font-size:11px;letter-spacing:.2px}
.topbar .kpi b{font-size:14px}
.rail button{font-size:11px}
.badge{font-size:10.5px}
.legend,.legend .sym span{font-size:12px}
.legend .ticks{font-size:11px}
.legend .lg-toggle,.legend h4,.rx-eyebrow{font-size:11px}
.legend .lg-count{color:var(--muted)}
.ireg-label{font-size:11.5px}
.rx-pills div{font-size:11px}
.rx-pills span{white-space:nowrap}
.rx-pills span small{font-weight:600;color:var(--muted);font-size:10.5px}
.rx-now,.rx-status{font-size:12px}
.pane{font-size:13.5px}
.small,.note,.lsub,.layer .lsub{font-size:12px}
/* one primary "Ask the data" (top bar); the card button becomes secondary */
.rx-ask{background:#fff;color:var(--red);border:1.5px solid var(--red);box-shadow:none;padding:8px 12px}
.rx-ask:hover{background:#fdecef;filter:none}
/* basemap picker: show the active basemap only; the others open on hover or keyboard focus */
.basemaps button:not(.active){display:none}
.basemaps:hover button,.basemaps:focus-within button{display:flex}
/* layout guard (js/layout.js): the card takes its natural height; the toolbar stacks under the search box when space runs out */
.mapwrap.has-card .rx-card{height:auto;min-height:0}
.mapwrap.tools-stack .toolbar{top:calc(var(--cardh,0px) + 58px)}
.mapwrap.tools-stack .basemaps{top:calc(var(--cardh,0px) + 104px)}
.mapwrap:not(.has-card).tools-stack .toolbar{top:58px}
.mapwrap:not(.has-card).tools-stack .basemaps{top:104px}
.legend{box-sizing:border-box}
.mapwrap.drawer-full .map-search,.mapwrap.drawer-full .toolbar,.mapwrap.drawer-full .basemaps,.mapwrap.drawer-full .legend{display:none}
/* top bar at smaller widths: no wrapping buttons, no half-cut KPI boxes (js/layout.js hides any KPI that does not fit) */
.topbar .btn,.livepill{white-space:nowrap}
@media (max-width:1320px){.clock{display:none}}
@media (max-width:1180px){.brand p{display:none}.brand{min-width:0}}
.lp-short{display:none}
@media (max-width:1100px){.lp-long{display:none}.lp-short{display:inline}}
.rx-pills{grid-template-columns:repeat(5,minmax(0,1fr))}
.rx-c2 .rx-pills{max-width:100%}
.rx-pills span{overflow:hidden;text-overflow:ellipsis}
@media (max-width:1450px){.rx-pills span small{display:none}}
.rx-c2{min-width:0;overflow:hidden}
.top-actions{margin-left:auto}

/* ---- track record: change chip on the headline card ---- */
.rx-sub .rx-chg{display:inline-flex;align-items:center;gap:4px;margin-top:5px;border:0;border-radius:999px;padding:2px 9px;font:800 11.5px/1.5 Inter,system-ui,sans-serif;cursor:pointer;white-space:nowrap}
.rx-chg.up{background:#e7f6ee;color:#0a7a4d}.rx-chg.down{background:#fdecee;color:#c8102e}.rx-chg.flat{background:var(--panel3);color:var(--muted)}
.rx-chg u{font-weight:800;text-decoration:none;opacity:.7;margin-left:1px}.rx-chg:hover{filter:brightness(.95)}
#rxTrack,#rxUTrack{margin:4px 0 10px}
