:root{
  --bg:#f5f6f8; --surface:#ffffff; --surface-2:#f0f2f5; --border:#e2e5ea; --text:#1b2330; --muted:#5f6b7a;
  --brand:#1f3864; --accent:#2e75b6; --ok:#1e7b4f; --ok-bg:#e3f3ea; --warn:#a15c00; --warn-bg:#fff1dc;
  --info:#2e5f99; --info-bg:#e6eef8;
  --c-uw:#5b7fb8; --c-duty:#9aa8bd; --c-gst:#c9a45c; --c-inc:#2e9e6b;
  --shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0f141b; --surface:#171d26; --surface-2:#1e2632; --border:#2a3442; --text:#e6ebf2; --muted:#98a4b5;
  --brand:#9db8e6; --accent:#6aa6e0; --ok:#5cc792; --ok-bg:#16342a; --warn:#f0b35a; --warn-bg:#3a2a12;
  --info:#8fb6e6; --info-bg:#1a2a40; --c-uw:#7d9bd0; --c-duty:#7b879a; --c-gst:#d4b06a; --c-inc:#4cc08a; --shadow:none;}}
:root[data-theme="dark"]{
  --bg:#0f141b; --surface:#171d26; --surface-2:#1e2632; --border:#2a3442; --text:#e6ebf2; --muted:#98a4b5;
  --brand:#9db8e6; --accent:#6aa6e0; --ok:#5cc792; --ok-bg:#16342a; --warn:#f0b35a; --warn-bg:#3a2a12;
  --info:#8fb6e6; --info-bg:#1a2a40; --c-uw:#7d9bd0; --c-duty:#7b879a; --c-gst:#d4b06a; --c-inc:#4cc08a; --shadow:none;}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.wrap{max-width:1180px;margin:0 auto;padding:0 16px 48px}
header.top{background:var(--surface);border-bottom:1px solid var(--border)}
header .bar{max-width:1180px;margin:0 auto;padding:14px 16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.mark{width:34px;height:34px;border-radius:8px;background:var(--brand);color:var(--surface);display:grid;place-items:center;font-weight:700;font-size:13px}
.title{font-weight:650;font-size:16px}.sub{color:var(--muted);font-size:12.5px}
.spacer{flex:1}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}
.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.info{background:var(--info-bg);color:var(--info)}
select,button{font:inherit}
.period{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:8px;padding:6px 10px}
h2{font-size:15px;margin:28px 0 10px;font-weight:650}
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow)}
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin-top:20px;overflow:hidden}
.step{padding:14px 16px;border-right:1px solid var(--border);position:relative}
.step:last-child{border-right:0}
.step .n{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.step .t{font-weight:600;margin:2px 0 6px}
.step.cur{background:var(--warn-bg)}
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.kpi{padding:14px 16px}.kpi .l{color:var(--muted);font-size:12.5px}.kpi .v{font-size:22px;font-weight:650;margin-top:2px}
.kpi .h{color:var(--muted);font-size:12px;margin-top:2px}
.kpi.hl{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
table{width:100%;border-collapse:collapse}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}
th{font-size:12px;color:var(--muted);font-weight:600;background:var(--surface-2)}
td.r,th.r{text-align:right}
tr.stream{cursor:pointer}tr.stream:hover td{background:var(--surface-2)}
tr.total td{font-weight:650;background:var(--surface-2)}
.caret{display:inline-block;width:14px;color:var(--muted);transition:transform .15s}
.open .caret{transform:rotate(90deg)}
.detail td{background:var(--surface-2);padding:0}
.detail .inner{padding:12px 16px 16px 40px}
.derive{color:var(--muted);font-size:12.5px;margin:0 0 8px}
.jl{width:auto;min-width:520px}.jl td,.jl th{padding:5px 10px;font-size:13px;background:transparent}
.basis{color:var(--muted);font-size:12.5px}
.twocol{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}
.pad{padding:16px}
.stack{display:flex;height:28px;border-radius:6px;overflow:hidden;margin:6px 0 12px}
.stack div{height:100%}
.legend{display:grid;grid-template-columns:auto 1fr auto;gap:6px 10px;align-items:center;font-size:13px}
.sw{width:11px;height:11px;border-radius:3px}
.ctl{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:start;padding:10px 16px;border-bottom:1px solid var(--border)}
.ctl:last-child{border-bottom:0}
.ic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:700}
.ic.ok{background:var(--ok-bg);color:var(--ok)}.ic.warn{background:var(--warn-bg);color:var(--warn)}.ic.info{background:var(--info-bg);color:var(--info)}
.ctl .d{color:var(--muted);font-size:12.5px}
.filters{display:flex;gap:6px;margin:0 0 10px}
.fbtn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 12px;cursor:pointer;font-size:12.5px}
.fbtn.on{background:var(--brand);color:var(--surface);border-color:var(--brand)}
.ex{padding:14px 16px;margin-bottom:10px}
.ex .hd{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ex .what{font-weight:600}
.ex dl{display:grid;grid-template-columns:130px 1fr;gap:4px 12px;margin:10px 0 0;font-size:13px}
.ex dt{color:var(--muted)}.ex dd{margin:0}
.ex.attn{border-left:4px solid var(--warn)}
.outs{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.out{padding:14px 16px}.out .t{font-weight:600}.out .d{color:var(--muted);font-size:12.5px;margin:2px 0 10px}
.btn{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:8px;padding:7px 12px;cursor:pointer}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--surface)}
.gate{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 16px;margin-top:12px}
.gate .msg{flex:1;min-width:240px}
.note{color:var(--muted);font-size:12.5px;margin-top:20px}
@media (max-width:900px){.kpis{grid-template-columns:repeat(2,1fr)}.steps{grid-template-columns:1fr}.step{border-right:0;border-bottom:1px solid var(--border)}
 .twocol,.outs{grid-template-columns:1fr}.hide-sm{display:none}.tscroll{overflow-x:auto}}
/* app additions */
nav.main{display:flex;gap:4px;flex-wrap:wrap}
nav.main a{color:var(--text);text-decoration:none;padding:6px 10px;border-radius:8px;font-size:13.5px}
nav.main a.on,nav.main a:hover{background:var(--surface-2)}
a{color:var(--accent)}
.flash{padding:10px 14px;border-radius:8px;margin:16px 0 0;font-size:13.5px}
.flash.err{background:var(--warn-bg);color:var(--warn)}.flash.ok{background:var(--ok-bg);color:var(--ok)}
form.inline{display:flex;gap:10px;align-items:end;flex-wrap:wrap}
form.inline label{display:flex;flex-direction:column;font-size:12.5px;color:var(--muted);gap:4px}
input[type=date],input[type=text],input[type=password],select.in{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:6px 10px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--muted)}
.prob.stop{color:var(--warn);font-weight:600}.prob.warn{color:var(--muted)}
.tag{display:inline-block;border:1px solid var(--border);border-radius:6px;padding:0 6px;margin:1px 4px 1px 0;font-size:11.5px;color:var(--muted)}
pre.console{background:var(--surface-2);padding:12px;border-radius:8px;overflow:auto;font-size:12px;max-height:420px}
