/* HELM — AI Company OS control room. Dark-first, light via prefers-color-scheme or [data-theme]. */
:root{
  --bg:#0b1020;--bg2:#111830;--bg3:#182040;--bg4:#1f2a4d;--line:#243052;--line2:#2f3d66;
  --fg:#e6eaf3;--fg2:#c3cbe0;--mut:#8b96b5;--dim:#5f6a8a;
  --acc:#2dd4bf;--acc-bg:rgba(45,212,191,.14);--acc-fg:#7ff0df;
  --info:#60a5fa;--info-bg:rgba(96,165,250,.14);
  --warn:#f5b02c;--warn-bg:rgba(245,176,44,.15);--warn-fg:#ffd275;
  --err:#f26b6b;--err-bg:rgba(242,107,107,.15);--err-fg:#ffa3a3;
  --ai:#a78bfa;--ai-bg:rgba(167,139,250,.16);--ai-fg:#cdbcff;
  --hum:#f1f5f9;--hum-bg:rgba(241,245,249,.10);
  --sys:#94a3b8;--sys-bg:rgba(148,163,184,.14);
  --shadow:0 1px 0 rgba(255,255,255,.03) inset,0 8px 24px rgba(0,0,0,.25);
  --r:10px;--sb:224px;
  --font:"Inter","Noto Sans JP",-apple-system,"Hiragino Sans",system-ui,sans-serif;
  --mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  color-scheme:dark;
}
:root[data-theme="light"],:root:not([data-theme="dark"]).light-pref{}
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]){
  --bg:#f3f5f9;--bg2:#ffffff;--bg3:#f6f8fc;--bg4:#e9edf5;--line:#dde3ee;--line2:#c9d2e3;
  --fg:#141a2e;--fg2:#2b3350;--mut:#5d6783;--dim:#8a93ad;
  --acc:#0f9f8e;--acc-bg:rgba(15,159,142,.12);--acc-fg:#0b7c6f;
  --info:#2563eb;--info-bg:rgba(37,99,235,.10);
  --warn:#b45309;--warn-bg:rgba(245,176,44,.18);--warn-fg:#8a4200;
  --err:#c62828;--err-bg:rgba(242,107,107,.14);--err-fg:#a11b1b;
  --ai:#6d4fd3;--ai-bg:rgba(109,79,211,.12);--ai-fg:#53399f;
  --hum:#1e293b;--hum-bg:rgba(30,41,59,.08);
  --sys:#475569;--sys-bg:rgba(71,85,105,.12);
  --shadow:0 1px 2px rgba(16,24,40,.06),0 6px 18px rgba(16,24,40,.05);
  color-scheme:light;
}}
:root[data-theme="light"]{
  --bg:#f3f5f9;--bg2:#ffffff;--bg3:#f6f8fc;--bg4:#e9edf5;--line:#dde3ee;--line2:#c9d2e3;
  --fg:#141a2e;--fg2:#2b3350;--mut:#5d6783;--dim:#8a93ad;
  --acc:#0f9f8e;--acc-bg:rgba(15,159,142,.12);--acc-fg:#0b7c6f;
  --info:#2563eb;--info-bg:rgba(37,99,235,.10);
  --warn:#b45309;--warn-bg:rgba(245,176,44,.18);--warn-fg:#8a4200;
  --err:#c62828;--err-bg:rgba(242,107,107,.14);--err-fg:#a11b1b;
  --ai:#6d4fd3;--ai-bg:rgba(109,79,211,.12);--ai-fg:#53399f;
  --hum:#1e293b;--hum-bg:rgba(30,41,59,.08);
  --sys:#475569;--sys-bg:rgba(71,85,105,.12);
  --shadow:0 1px 2px rgba(16,24,40,.06),0 6px 18px rgba(16,24,40,.05);
  color-scheme:light;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:14px/1.55 var(--font);background:var(--bg);color:var(--fg);font-feature-settings:"cv11","ss01"}
a{color:var(--acc-fg);text-decoration:none}a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:4px}
code,.mono,.num,.wait,time,.sha,.id{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.92em}
h1{font-size:18px;font-weight:600;margin:0 0 14px;letter-spacing:-.01em}
h2{font-size:13px;font-weight:600;margin:0 0 10px;color:var(--fg2);text-transform:uppercase;letter-spacing:.06em}
h3{font-size:13px;font-weight:600;margin:12px 0 6px;color:var(--fg2)}
p{margin:0 0 8px}
.muted{color:var(--mut)}.dim{color:var(--dim)}.small{font-size:12px}.xs{font-size:11px}.right{text-align:right}
.nowrap{white-space:nowrap}.trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- App shell ---------- */
.app{display:grid;grid-template-columns:var(--sb) 1fr;min-height:100vh}
.sb{background:var(--bg2);border-right:1px solid var(--line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:14px 10px;gap:4px}
.sb .brand{display:flex;align-items:center;gap:10px;padding:6px 8px 14px;color:var(--fg);font-weight:700;letter-spacing:.12em;font-size:15px}
.sb .brand .logo{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--acc),var(--ai));display:grid;place-items:center;color:#0b1020;font-size:13px;font-weight:800;letter-spacing:0}
.sb .brand small{display:block;font-size:10px;letter-spacing:.08em;color:var(--mut);font-weight:500}
.sb nav{display:flex;flex-direction:column;gap:2px}
.sb nav a,.sb .navbtn{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--fg2);font-weight:500;font-size:13.5px;border:0;background:none;cursor:pointer;font-family:inherit;width:100%;text-align:left}
.sb nav a svg,.sb .navbtn svg{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
.sb nav a:hover,.sb .navbtn:hover{background:var(--bg3);text-decoration:none;color:var(--fg)}
.sb nav a.on{background:var(--acc-bg);color:var(--acc-fg)}
.sb nav a .lbl{flex:1}
.sb .sec{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);padding:12px 10px 4px}
.sb .foot{margin-top:auto;display:flex;flex-direction:column;gap:6px;padding-top:10px;border-top:1px solid var(--line)}
.sb .who{display:flex;align-items:center;gap:8px;padding:4px 10px;font-size:12px;color:var(--mut)}
.sb .who .av{flex:none}
.cnt{min-width:20px;height:20px;padding:0 6px;border-radius:999px;font:600 11px/20px var(--mono);text-align:center;background:var(--bg4);color:var(--fg2)}
.cnt.warn{background:var(--warn-bg);color:var(--warn-fg)}.cnt.err{background:var(--err-bg);color:var(--err-fg)}.cnt.acc{background:var(--acc-bg);color:var(--acc-fg)}
.cnt.zero{opacity:.45}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--dim);flex:none;box-shadow:0 0 0 2px var(--bg2)}
.dot.ok{background:var(--acc)}.dot.warn{background:var(--warn)}.dot.incident,.dot.stop{background:var(--err);animation:pulse 1.4s infinite}
.dot.skip{background:var(--dim)}
@keyframes pulse{0%,100%{box-shadow:0 0 0 2px var(--bg2),0 0 0 0 rgba(242,107,107,.5)}50%{box-shadow:0 0 0 2px var(--bg2),0 0 0 6px rgba(242,107,107,0)}}

.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(8px);position:sticky;top:0;z-index:5;flex-wrap:wrap}
.top .title{font-size:15px;font-weight:600;margin:0;flex:1;min-width:120px}
.top .meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:6px;border:1px solid var(--line);background:var(--bg3);color:var(--fg2);font-size:12px;white-space:nowrap}
.chip .k{color:var(--mut);font-size:11px}
.chip.env{border-color:var(--ai);color:var(--ai-fg);background:var(--ai-bg)}
.chip.env.production{border-color:var(--err);color:var(--err-fg);background:var(--err-bg)}
.chip.env.local,.chip.env.staging{border-color:var(--acc);color:var(--acc-fg);background:var(--acc-bg)}
.top .search{display:flex;align-items:center;gap:0;border:1px solid var(--line);border-radius:8px;background:var(--bg2);overflow:hidden}
.top .search input{border:0;background:transparent;padding:5px 10px;width:200px;font:inherit;color:var(--fg)}
.top .search input:focus{outline:none}
.top .search button{border:0;background:var(--bg3);color:var(--mut);padding:0 10px;height:30px;cursor:pointer;display:grid;place-items:center}
.top .search button svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.ibtn{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--bg2);color:var(--mut);cursor:pointer}
.ibtn:hover{color:var(--fg);background:var(--bg3)}
.ibtn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ibtn .sun{display:none}.ibtn .moon{display:block}
:root[data-theme="light"] .ibtn .sun{display:block}:root[data-theme="light"] .ibtn .moon{display:none}
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .ibtn .sun{display:block}:root:not([data-theme="dark"]) .ibtn .moon{display:none}}

main{padding:18px 20px 40px;max-width:1480px;width:100%}
.crumb{font-size:12px;color:var(--mut);margin-bottom:10px}.crumb a{color:var(--mut)}.crumb a:hover{color:var(--fg)}
.ph{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.ph h1{margin:0}.ph .sp{flex:1}

/* ---------- Flash ---------- */
.flash{display:flex;gap:10px;align-items:flex-start;padding:10px 14px;border-radius:var(--r);margin-bottom:14px;border:1px solid var(--line);background:var(--bg3);font-size:13px}
.flash.ok{border-color:var(--acc);background:var(--acc-bg);color:var(--acc-fg)}
.flash.err,.flash.error{border-color:var(--err);background:var(--err-bg);color:var(--err-fg)}
.flash.warn{border-color:var(--warn);background:var(--warn-bg);color:var(--warn-fg)}
.flash b{font-weight:600}

/* ---------- Cards / grid ---------- */
.card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:14px;box-shadow:var(--shadow)}
.card.narrow{max-width:420px;margin:10vh auto}
.card.flat{box-shadow:none}
.card>h2:first-child{margin-top:0}
.card .hd{display:flex;align-items:center;gap:8px;margin-bottom:10px}.card .hd h2{margin:0;flex:1}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.grid.c2{grid-template-columns:1fr 1fr}.grid.c3{grid-template-columns:1fr 1fr 1fr}
.grid.w21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.grid>.card{margin-bottom:0}
.stack>*+*{margin-top:10px}
.empty{padding:18px 12px;text-align:center;color:var(--mut);font-size:13px;border:1px dashed var(--line);border-radius:8px}
.empty b{display:block;color:var(--fg2);font-weight:500;margin-bottom:2px}

/* ---------- KPI tiles ---------- */
.tiles{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:14px}
.tile{display:block;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;color:var(--fg);box-shadow:var(--shadow);position:relative;overflow:hidden}
.tile:hover{text-decoration:none;border-color:var(--line2)}
.tile::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--line2)}
.tile.acc::before{background:var(--acc)}.tile.warn::before{background:var(--warn)}.tile.err::before{background:var(--err)}.tile.ai::before{background:var(--ai)}
.tile .l{font-size:11px;color:var(--mut);letter-spacing:.04em;text-transform:uppercase}
.tile .v{font:600 22px/1.2 var(--mono);margin-top:4px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.tile .v small{font:500 11px var(--font);color:var(--mut);margin-left:4px}
.tile .d{font-size:11px;color:var(--mut);margin-top:4px;display:flex;gap:6px;align-items:center}
.tile .d .up{color:var(--acc-fg)}.tile .d .dn{color:var(--err-fg)}.tile .d .w{color:var(--warn-fg)}
.tile.warn .v{color:var(--warn-fg)}.tile.err .v{color:var(--err-fg)}

/* ---------- Tables ---------- */
.scroll{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
th,td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
thead th,tr:first-child>th{position:sticky;top:0;background:var(--bg2);z-index:1;font-size:11px;color:var(--mut);font-weight:600;white-space:nowrap;letter-spacing:.05em;text-transform:uppercase}
.card thead th,.card tr:first-child>th{background:var(--bg2)}
tbody tr:hover td,table>tr:hover td{background:var(--bg3)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td.num{font-family:var(--mono);font-size:12.5px}
td .sub{display:block;font-size:11.5px;color:var(--mut);margin-top:1px}
table.compact th,table.compact td{padding:4px 8px;font-size:12.5px}
tr.rowlink{cursor:pointer}

/* ---------- Chips / badges ---------- */
.badge,.st{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px;border-radius:5px;font:500 11.5px/1 var(--mono);letter-spacing:.01em;white-space:nowrap;background:var(--sys-bg);color:var(--fg2);border:1px solid transparent}
.st::before,.badge.s::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}
/* active / ok */
.badge.ok,.badge.done,.badge.closed,.badge.won,.badge.verified,.badge.delivered,.badge.completed,.badge.applied,.badge.approved,.badge.succeeded,.badge.ready,.badge.in_progress,.badge.running,.badge.claimed,.badge.effecting,.badge.autopilot,.badge.active,
.st.ok,.st.done,.st.closed,.st.won,.st.verified,.st.delivered,.st.completed,.st.applied,.st.approved,.st.succeeded,.st.ready,.st.in_progress,.st.running,.st.claimed,.st.effecting,.st.autopilot,.st.active{background:var(--acc-bg);color:var(--acc-fg)}
.badge.ready,.st.ready,.badge.claimed,.st.claimed{background:transparent;border-color:var(--acc);color:var(--acc-fg)}
.badge.running::before,.st.running::before,.badge.in_progress::before,.st.in_progress::before,.badge.effecting::before,.st.effecting::before{animation:blink 1.2s infinite}
@keyframes blink{50%{opacity:.25}}
/* waiting / warn */
.badge.warn,.badge.half_open,.badge.blocked,.badge.awaiting_approval,.badge.awaiting_external,.badge.review,.badge.review_lite,.badge.applied_unverified,.badge.pending,.badge.changes_requested,.badge.proposal,.badge.negotiation,.badge.qualified,.badge.validated,
.st.warn,.st.half_open,.st.blocked,.st.awaiting_approval,.st.awaiting_external,.st.review,.st.review_lite,.st.applied_unverified,.st.pending,.st.changes_requested,.st.proposal,.st.negotiation,.st.qualified,.st.validated{background:var(--warn-bg);color:var(--warn-fg)}
/* incident / stop */
.badge.err,.badge.incident,.badge.stop,.badge.open,.badge.failed,.badge.escalated,.badge.lost,.badge.void,.badge.rejected,.badge.declined,.badge.dissent,
.st.err,.st.incident,.st.stop,.st.open,.st.failed,.st.escalated,.st.lost,.st.void,.st.rejected,.st.declined,.st.dissent{background:var(--err-bg);color:var(--err-fg)}
/* neutral */
.badge.canceled,.badge.skip,.badge.draft,.badge.lead,.badge.disabled,
.st.canceled,.st.skip,.st.draft,.st.lead,.st.disabled{background:var(--sys-bg);color:var(--mut)}
/* ai */
.badge.ai,.st.ai{background:var(--ai-bg);color:var(--ai-fg)}
/* tiers */
.badge.t0,.badge.t1{background:var(--sys-bg);color:var(--fg2)}
.badge.t2{background:var(--acc-bg);color:var(--acc-fg)}
.badge.t3{background:var(--warn-bg);color:var(--warn-fg)}
.badge.t4{background:var(--err-bg);color:var(--err-fg)}
.badge.t5{background:var(--ai-bg);color:var(--ai-fg);border-color:var(--ai)}
.badge.tier{font-weight:700}
.wait{font-variant-numeric:tabular-nums}.wait.over{color:var(--err-fg);font-weight:600}.wait.soon{color:var(--warn-fg)}

/* actor chips */
.actor{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px 0 4px;border-radius:999px;font-size:11.5px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.actor .av{width:14px;height:14px;font-size:8px;border-radius:50%}
.actor.human{background:var(--hum-bg);color:var(--hum)}
.actor.role{background:var(--ai-bg);color:var(--ai-fg)}
.actor.sys{background:var(--sys-bg);color:var(--sys)}
.av{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:7px;font:700 10px var(--mono);letter-spacing:.02em;color:#0b1020;background:var(--ai);flex:none;text-transform:uppercase}
.av.human{background:var(--hum);color:var(--bg)}
.av.sys{background:var(--sys);color:var(--bg)}
.av.lg{width:32px;height:32px;font-size:12px;border-radius:9px}

/* ---------- Buttons / forms ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line2);background:var(--bg3);border-radius:8px;padding:7px 13px;font:500 13px var(--font);cursor:pointer;color:var(--fg);white-space:nowrap;text-decoration:none}
.btn:hover{background:var(--bg4);text-decoration:none}
.btn.primary{background:var(--acc);border-color:var(--acc);color:#06221e}.btn.primary:hover{filter:brightness(1.08)}
.btn.ok{background:var(--acc);border-color:var(--acc);color:#06221e}
.btn.warn{background:var(--warn);border-color:var(--warn);color:#2a1800}
.btn.danger{background:var(--err);border-color:var(--err);color:#2c0a0a}
.btn.ghost{background:transparent}
.btn.sm{padding:3px 9px;font-size:12px;border-radius:6px}.btn:disabled{opacity:.5;cursor:not-allowed}
.btn kbd{font:600 10px var(--mono);padding:1px 4px;border-radius:3px;background:rgba(0,0,0,.18);margin-left:2px}
.lnk{background:none;border:0;color:var(--mut);cursor:pointer;font:inherit;font-size:12px;padding:0}.lnk:hover{color:var(--fg)}
form label{display:block;margin:10px 0 4px;font-size:12px;color:var(--mut);font-weight:500}
form label:first-child{margin-top:0}
input[type=text],input[type=number],input[type=password],input[type=search],textarea,select{width:100%;padding:7px 10px;border:1px solid var(--line2);border-radius:8px;font:inherit;background:var(--bg);color:var(--fg)}
input::placeholder,textarea::placeholder{color:var(--dim)}
input:focus,textarea:focus,select:focus{outline:2px solid var(--acc);outline-offset:0;border-color:var(--acc)}
textarea{min-height:90px;resize:vertical}
input[type=checkbox]{width:auto;accent-color:var(--acc)}
.inline{display:inline}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;align-items:center}
.actions form.row{flex:1;min-width:240px}
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.filters label{margin:0}.filters select,.filters input{width:auto;min-width:150px}
.kbd{font:600 10.5px var(--mono);background:var(--bg4);border:1px solid var(--line2);border-bottom-width:2px;padding:1px 5px;border-radius:4px;color:var(--fg2)}
.hint{font-size:12px;color:var(--mut);display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* ---------- Timeline ---------- */
.tl{list-style:none;margin:0;padding:0;font-size:12.5px;position:relative}
.tl li{display:grid;grid-template-columns:46px 10px 1fr;gap:0 8px;padding:5px 0;align-items:start;position:relative}
.tl li::before{content:"";position:absolute;left:54px;top:0;bottom:0;width:1px;background:var(--line)}
.tl li .pt{width:8px;height:8px;border-radius:50%;background:var(--line2);margin-top:6px;position:relative;z-index:1;box-shadow:0 0 0 2px var(--bg2)}
.tl li.ok .pt{background:var(--acc)}.tl li.err .pt{background:var(--err)}.tl li.warn .pt{background:var(--warn)}.tl li.ai .pt{background:var(--ai)}
.tl time{color:var(--mut);font-size:11px;line-height:20px;white-space:nowrap}
.tl .body{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0}
.tl .k{font-family:var(--mono);font-size:11.5px;color:var(--fg2)}
.tl li.ok .k{color:var(--acc-fg)}.tl li.err .k{color:var(--err-fg)}.tl li.warn .k{color:var(--warn-fg)}
.tl details{flex-basis:100%}
.tl li.muted{display:block;padding:10px 0}.tl li.muted::before{display:none}

/* ---------- JSON ---------- */
details{margin:4px 0}summary{cursor:pointer;color:var(--mut);font-size:12px;user-select:none}summary:hover{color:var(--fg)}
details[open]>summary{color:var(--fg2);margin-bottom:4px}
.jd{margin:0;padding-left:10px;border-left:2px solid var(--line);font-size:12.5px}
.jd dt{color:var(--mut);font-family:var(--mono);font-size:11.5px;margin-top:4px}.jd dd{margin:0 0 2px 10px;word-break:break-word}
.jl{margin:0;padding-left:18px}
pre.txt,pre.code{white-space:pre-wrap;word-break:break-word;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px;font:12px/1.5 var(--mono);margin:4px 0;max-height:480px;overflow:auto;color:var(--fg2)}
.sec{border:1px solid var(--line);border-radius:8px;margin-bottom:8px;background:var(--bg2)}
.sec>summary{padding:8px 12px;font-weight:600;color:var(--fg2);font-size:12.5px;display:flex;align-items:center;gap:8px;list-style:none}
.sec>summary::-webkit-details-marker{display:none}
.sec>summary::before{content:"▸";color:var(--mut);font-size:11px;transition:transform .15s}
.sec[open]>summary::before{transform:rotate(90deg)}
.sec>summary .n{margin-left:auto;font:11px var(--mono);color:var(--mut)}
.sec>.bd{padding:4px 12px 10px}

/* ---------- Progress ---------- */
.bar{height:6px;background:var(--bg4);border-radius:4px;overflow:hidden;margin-top:4px}.bar i{display:block;height:100%;background:var(--acc);border-radius:4px}.bar i.warn{background:var(--warn)}.bar i.err{background:var(--err)}
.budget{display:grid;gap:10px}
.budget .b{display:grid;grid-template-columns:minmax(100px,1fr) auto;gap:2px 10px;font-size:12.5px}
.budget .b .n{font-family:var(--mono);color:var(--mut);font-size:11.5px}
.budget .b .bar{grid-column:1/-1}

/* ---------- Watch strip ---------- */
.strip{display:flex;gap:4px;flex-wrap:wrap}
.strip a{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:48px;flex:1;padding:6px 4px;border-radius:7px;background:var(--bg3);border:1px solid var(--line);color:var(--fg2);font-size:11px;text-decoration:none}
.strip a b{font:700 13px var(--mono)}
.strip a .bar{width:100%;height:4px;margin:0}
.strip a.ok{border-color:var(--acc);background:var(--acc-bg)}.strip a.ok b{color:var(--acc-fg)}
.strip a.warn{border-color:var(--warn);background:var(--warn-bg)}.strip a.warn b{color:var(--warn-fg)}
.strip a.incident,.strip a.stop{border-color:var(--err);background:var(--err-bg)}.strip a.incident b,.strip a.stop b{color:var(--err-fg)}
.strip a.none{opacity:.5}
tr.st-warn td{box-shadow:inset 3px 0 0 var(--warn)}tr.st-incident td,tr.st-stop td{box-shadow:inset 3px 0 0 var(--err)}tr.st-skip td{color:var(--mut)}

/* ---------- Running list ---------- */
.runlist{display:flex;flex-direction:column}
.runlist .it{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.runlist .it:last-child{border-bottom:0}
.runlist .it .t{min-width:0}.runlist .it .t a{color:var(--fg);font-weight:500}
.runlist .it .t .sub{font-size:11.5px;color:var(--mut);display:flex;gap:8px;flex-wrap:wrap}

/* ---------- Approval cards ---------- */
.alist{display:grid;gap:10px}
.acard{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow);color:var(--fg)}
.acard:hover{border-color:var(--line2);text-decoration:none}
.acard.over{border-left:3px solid var(--err)}.acard.soon{border-left:3px solid var(--warn)}
.acard .tier{display:grid;place-items:center;width:42px;height:42px;border-radius:9px;font:800 13px var(--mono);background:var(--sys-bg);color:var(--fg2)}
.acard .tier.t2{background:var(--acc-bg);color:var(--acc-fg)}.acard .tier.t3{background:var(--warn-bg);color:var(--warn-fg)}.acard .tier.t4{background:var(--err-bg);color:var(--err-fg)}.acard .tier.t5{background:var(--ai-bg);color:var(--ai-fg)}
.acard .ttl{font-weight:500;margin-bottom:3px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.acard .ttl .eff{font-family:var(--mono);font-size:12.5px;color:var(--acc-fg)}
.acard .sum{color:var(--fg2);font-size:13px}
.acard .meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--mut);margin-top:4px;align-items:center}
.acard .w{text-align:right}.acard .w .wait{font-size:16px;font-weight:600;display:block}.acard .w .l{font-size:10.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.05em}

.decide{position:sticky;top:66px}
.decide .btns{display:grid;gap:8px;margin-top:10px}
.decide .btns .btn{justify-content:space-between;padding:9px 13px}
.stat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}
.stat div{background:var(--bg3);border-radius:8px;padding:8px 10px}
.stat .l{font-size:10.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.05em}.stat .v{font:600 16px var(--mono)}

/* ---------- Pipeline ---------- */
.pipe{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.pipe .col{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:8px;min-height:70px}
.pipe .col h3{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);display:flex;justify-content:space-between}
.pipe .d{background:var(--bg2);border:1px solid var(--line);border-radius:6px;padding:6px 8px;margin-bottom:6px;font-size:12.5px}

/* ---------- kv ---------- */
.kv{display:grid;grid-template-columns:auto 1fr;gap:3px 14px;font-size:12.5px;margin:0}
.kv dt{color:var(--mut);white-space:nowrap}.kv dd{margin:0;min-width:0;word-break:break-word}
.meta-line{display:flex;gap:6px 14px;flex-wrap:wrap;font-size:12px;color:var(--mut);align-items:center}
.meta-line b{color:var(--fg2);font-weight:500}

.sticky-actions{position:sticky;bottom:0;z-index:3}
.skip{position:absolute;left:-999px;top:0}.skip:focus{left:8px;top:8px;background:var(--bg2);padding:6px 10px;z-index:99}

/* ---------- Responsive ---------- */
@media (max-width:1100px){.grid.c3{grid-template-columns:1fr 1fr}.grid.w21{grid-template-columns:1fr}}
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .sb{position:fixed;left:0;right:0;bottom:0;top:auto;height:auto;flex-direction:row;padding:4px 6px calc(4px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--line);z-index:20;gap:0}
  .sb .brand,.sb .sec,.sb .foot{display:none}
  .sb nav{flex-direction:row;width:100%;justify-content:space-around}
  .sb nav a{flex-direction:column;gap:2px;padding:5px 4px;font-size:10px;flex:1;position:relative}
  .sb nav a .lbl{flex:none}.sb nav a .cnt{position:absolute;top:0;right:10%;height:16px;line-height:16px;font-size:10px;min-width:16px;padding:0 4px}
  .sb nav a .dot{position:absolute;top:4px;right:18%}
  main{padding:12px 12px 80px}.top{padding:8px 12px}.top .search input{width:130px}
  .grid.c2,.grid.c3{grid-template-columns:1fr}.decide{position:static}
  .acard{grid-template-columns:auto 1fr}.acard .w{grid-column:2;text-align:left}.acard .w .wait{display:inline;margin-right:6px}
}
@media (max-width:560px){.tiles{grid-template-columns:repeat(2,1fr)}.tile .v{font-size:18px}.runlist .it{grid-template-columns:auto 1fr}.runlist .it>.st{grid-column:2}}
@media print{.sb,.top,.ibtn{display:none}.app{display:block}}
