/* ============ 真实系统组件：数据输入 / 智能体面板 / 表格 / 抽屉 / Tabs ============ */

/* ---- 数据输入面板（每模块必带）---- */
.datain{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;overflow:hidden}
.datain summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:11px 16px;user-select:none}
.datain summary::-webkit-details-marker{display:none}
.datain summary:hover{background:var(--surface-2)}
.di-title{font-size:13px;font-weight:700;display:flex;align-items:center;gap:7px}
.di-title::before{content:"⛁";color:var(--muted)}
.di-sum{font-size:12px;color:var(--muted)}
.di-ok{color:#4fc06a} .di-warn{color:var(--warn)}
.di-toggle{margin-left:auto;font-size:11px;color:var(--muted)}
.di-tbl{width:100%;border-collapse:collapse;font-size:12px;border-top:1px solid var(--border)}
.di-tbl th{text-align:left;color:var(--muted);font-weight:600;padding:7px 16px;background:var(--surface-2);white-space:nowrap}
.di-tbl td{padding:8px 16px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--ink-2)}
.di-tbl tr:last-child td{border-bottom:none}
.sysdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;vertical-align:1px}
.iface{font-family:Consolas,monospace;font-size:10.5px;color:#8db9f0;background:rgba(57,135,229,.1);padding:1px 6px;border-radius:4px}
.conn{font-size:11px;font-weight:600;padding:1px 8px;border-radius:20px}
.conn.ok{color:#4fc06a;background:rgba(12,163,12,.13)}
.conn.warn{color:var(--warn);background:rgba(250,178,25,.13)}

/* ---- 智能体面板 ---- */
.agentbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:13px 16px;margin-bottom:14px}
.agentbar.rt{border-left:3px solid #4fc06a}
.agentbar.od{border-left:3px solid var(--s4)}
.ab-head{display:flex;align-items:center;gap:12px;margin-bottom:11px;flex-wrap:wrap}
.ab-mode{font-size:12.5px;font-weight:700}
.ab-mode.rt{color:#4fc06a} .ab-mode.od{color:#b0a8f0}
.ab-count{font-size:12px;color:var(--muted)}
.ab-count b{color:var(--ink)}
.ab-head .btn.sm{margin-left:auto}
.btn.sm{font-size:12px;padding:5px 12px}
.ab-agents{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}
.ab-agent{display:flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--border);
  border-radius:9px;padding:8px 11px;transition:border-color .2s,background .2s}
.ab-agent.active{border-color:rgba(57,135,229,.5);background:linear-gradient(135deg,rgba(57,135,229,.09),var(--surface-2) 60%)}
.av{display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:#fff;font-weight:700;flex:none}
.ab-info{min-width:0;flex:1}
.ab-info b{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ab-act{font-size:11px;color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ab-st{flex:none;font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:20px}
.ab-st.run{color:#4fc06a;background:rgba(12,163,12,.13)}
.ab-st.done{color:#8db9f0;background:rgba(57,135,229,.14)}
.ab-st.idle{color:var(--muted);background:rgba(137,135,129,.13)}
.agname{display:inline-flex;align-items:center;gap:5px;vertical-align:-4px}

/* 智能体产出流 */
.aflow{display:flex;flex-direction:column;gap:9px}
.astep{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:10px 13px;font-size:12.5px;animation:fadeUp .3s ease}
.astep.plan{border-left:3px solid var(--s1)}
.astep.think{border-left:3px solid var(--s4)}
.astep .as-head{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
.astep .as-sys{margin-left:auto;display:flex;gap:5px}
.as-sys .s{font-size:10px;color:var(--ink-2);background:var(--surface-3);border-radius:4px;padding:1px 6px}
.astep .as-q{font-family:Consolas,monospace;font-size:11px;color:var(--muted);margin:4px 0}
.astep .as-out{color:var(--ink-2);border-top:1px dashed var(--border);padding-top:6px;margin-top:5px;line-height:1.6}
.as-out .hit{color:var(--warn);font-weight:700}
.as-out .clear{color:#4fc06a;font-weight:700}
.astep .as-status{font-size:11px;color:var(--muted)}
.spinner{display:inline-block;width:11px;height:11px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-1px}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.aconclude{background:linear-gradient(135deg,rgba(57,135,229,.13),rgba(144,133,233,.08));border:1px solid rgba(57,135,229,.4);
  border-radius:11px;padding:14px 16px;font-size:13px;animation:fadeUp .3s ease}
.aconclude h5{font-size:13.5px;display:flex;align-items:center;gap:8px;margin-bottom:8px}
.aconclude .cf{margin-left:auto;font-size:11.5px;color:var(--s3);background:rgba(201,133,0,.14);border:1px solid rgba(201,133,0,.35);border-radius:14px;padding:1px 9px}
.akpis{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:11px}
.akpi{background:rgba(0,0,0,.2);border-radius:8px;padding:8px 11px}
.akpi span{font-size:11px;color:var(--muted);display:block}
.akpi b{font-size:17px;font-variant-numeric:tabular-nums}
.chain{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:10px 0;font-size:12px}
.chain .node{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:7px;padding:4px 10px;color:var(--ink)}
.chain .node.root{border-color:var(--crit);color:#ff9b9b}
.chain .arr{color:var(--muted)}

/* 实时日志 */
.rtlog{max-height:190px;overflow-y:auto;display:flex;flex-direction:column}
.rtlog-row{display:flex;gap:10px;padding:6px 2px;border-bottom:1px solid rgba(255,255,255,.04);font-size:12px;animation:fadeUp .25s ease}
.rtlog-row .t{color:var(--muted);font-variant-numeric:tabular-nums;flex:none}
.rtlog-row .m{color:var(--ink-2)}

/* ---- Tabs ---- */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:14px}
.tab{font:inherit;font-size:13px;color:var(--muted);background:none;border:none;border-bottom:2px solid transparent;
  padding:9px 16px;cursor:pointer;display:flex;align-items:center;gap:7px;transition:color .15s}
.tab:hover{color:var(--ink-2)}
.tab.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.tab em{font-style:normal;font-size:10.5px;background:var(--surface-3);color:var(--ink-2);border-radius:20px;padding:0 6px}
.tab.on em{background:var(--accent);color:#fff}

/* ---- 筛选栏 ---- */
.filterbar{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filterbar select,.filterbar input{font:inherit;font-size:12.5px;color:var(--ink);background:var(--surface-2);
  border:1px solid var(--border-strong);border-radius:8px;padding:6px 10px;outline:none}
.filterbar input{width:190px}
.filterbar input:focus,.filterbar select:focus{border-color:var(--accent)}
.filterbar .spacer{flex:1}
.filterbar label{font-size:12px;color:var(--muted)}

/* ---- 数据表 ---- */
.tbl-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:9px}
.dtbl{width:100%;border-collapse:collapse;font-size:12.5px}
.dtbl th{text-align:left;color:var(--muted);font-weight:600;padding:9px 12px;background:var(--surface-2);
  border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0}
.dtbl td{padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--ink-2);white-space:nowrap}
.dtbl tbody tr{cursor:pointer;transition:background .1s}
.dtbl tbody tr:hover{background:var(--surface-2)}
.dtbl tr:last-child td{border-bottom:none}
.dtbl .num{text-align:right;font-variant-numeric:tabular-nums}
.dtbl .empty{text-align:center;color:var(--muted);padding:34px}
.mono{font-family:Consolas,monospace;font-size:11.5px;color:#8db9f0}
.pager{display:flex;align-items:center;justify-content:space-between;margin-top:10px;font-size:12px}
.pg-btns{display:flex;gap:6px}
.btn[disabled]{opacity:.4;cursor:not-allowed}

/* 状态胶囊 */
.chip2{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 9px;border-radius:20px;white-space:nowrap}
.chip2::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.chip2.ok{color:#4fc06a;background:rgba(12,163,12,.13)}
.chip2.ng{color:#ff7b7b;background:rgba(208,59,59,.15)}
.chip2.warn{color:var(--warn);background:rgba(250,178,25,.13)}
.chip2.info{color:#8db9f0;background:rgba(57,135,229,.14)}
.chip2.idle{color:var(--muted);background:rgba(137,135,129,.13)}
.chip2.violet{color:#b0a8f0;background:rgba(144,133,233,.16)}

/* ---- 抽屉 ---- */
#drawer{position:fixed;inset:0;z-index:1500;pointer-events:none}
#drawer .dw-mask{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .2s}
#drawer .dw-panel{position:absolute;right:0;top:0;bottom:0;width:min(560px,92vw);background:var(--surface);
  border-left:1px solid var(--border-strong);transform:translateX(100%);transition:transform .25s;display:flex;flex-direction:column}
#drawer.open{pointer-events:auto}
#drawer.open .dw-mask{opacity:1}
#drawer.open .dw-panel{transform:none}
#drawer header{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--border)}
#drawer header b{font-size:14.5px}
#drawer header button{background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer}
#drawer header button:hover{color:var(--ink)}
#dw-body{flex:1;overflow-y:auto;padding:18px}
.dw-sec{margin-bottom:18px}
.dw-sec h6{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:8px;text-transform:none}
.kv{display:grid;grid-template-columns:96px 1fr;gap:6px 12px;font-size:12.5px}
.kv dt{color:var(--muted)} .kv dd{color:var(--ink-2)}

/* ---- Toast ---- */
#toast{position:fixed;left:50%;bottom:36px;transform:translateX(-50%);z-index:2000;background:#20252e;
  border:1px solid rgba(57,135,229,.5);color:#fff;font-size:13px;padding:10px 18px;border-radius:10px;
  box-shadow:0 8px 30px rgba(0,0,0,.5);max-width:70vw;transition:opacity .3s;opacity:0;pointer-events:none}
#toast.on{opacity:1}

/* ---- 工位卡片 ---- */
.station-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.st-card{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:13px 15px;cursor:pointer;transition:border-color .15s}
.st-card:hover{border-color:var(--accent)}
.st-card.warn{border-color:rgba(250,178,25,.5)}
.st-card.manual{opacity:.72;border-style:dashed;cursor:default}
.st-card .sc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.st-card h4{font-size:13.5px}
.st-card .sc-id{font-family:Consolas,monospace;font-size:11px;color:var(--muted)}
.st-card .sc-ch{display:flex;gap:4px;margin-top:9px;flex-wrap:wrap}
.sc-ch .c{font-size:10.5px;border-radius:5px;padding:1px 7px;border:1px solid var(--border)}
.st-card .sc-stats{display:flex;gap:16px;margin-top:10px}
.sc-stats .s b{display:block;font-size:16px;font-variant-numeric:tabular-nums}
.sc-stats .s span{font-size:10.5px;color:var(--muted)}
.healthbar{height:4px;border-radius:2px;background:var(--surface-3);margin-top:9px;overflow:hidden}
.healthbar i{display:block;height:100%;border-radius:2px}

/* ---- 空态 ---- */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:64px 20px;color:var(--muted);text-align:center}
.empty-state .es-icon{font-size:34px;opacity:.5;margin-bottom:4px}
.empty-state b{color:var(--ink-2);font-size:13.5px;font-weight:600}
.empty-state span{font-size:12px;max-width:460px;line-height:1.6}

/* ---- 活数据跳动 ---- */
.live-num{transition:color .25s}
.live-num.bump{color:#8db9f0}
.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#4fc06a;margin-right:5px;
  animation:lp 1.8s infinite}
@keyframes lp{0%{box-shadow:0 0 0 0 rgba(79,192,106,.5)}70%{box-shadow:0 0 0 5px rgba(79,192,106,0)}100%{box-shadow:0 0 0 0 rgba(79,192,106,0)}}

/* ---- 技术矩阵 ---- */
.techm{border-collapse:collapse;font-size:11.5px;width:100%}
.techm th{color:var(--muted);font-weight:600;padding:7px 5px;text-align:center;white-space:nowrap;font-size:11px}
.techm th:first-child{text-align:left;padding-left:8px}
.techm td{padding:3px;text-align:center}
.techm td:first-child{text-align:left;color:var(--ink-2);padding-left:8px;white-space:nowrap}
.techm td.cls{color:var(--muted);font-size:10.5px;text-align:center}
.tcell{display:block;height:26px;border-radius:5px;line-height:26px;font-size:11px;font-weight:700}
.t2{background:rgba(12,163,12,.22);color:#5fc46f}
.t1{background:rgba(250,178,25,.18);color:#f0b84a}
.t0{background:rgba(208,59,59,.16);color:#ff8f8f}
.sev{display:inline-block;width:17px;height:17px;line-height:17px;border-radius:4px;font-size:10px;font-weight:700;text-align:center}
.sev.A{background:var(--crit);color:#fff}
.sev.B{background:rgba(250,178,25,.22);color:#f0b84a}
.sev.C{background:rgba(137,135,129,.2);color:var(--muted)}

/* ---- 可行性 ---- */
.feas{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.feas-row{display:flex;gap:7px;font-size:11.5px;align-items:baseline}
.feas-row .k{color:var(--muted);width:34px;flex:none}
.feas-row .v{color:var(--ink-2)}
.feas-row.bad .v{color:#f0b84a}
.feas-row .i{flex:none}

/* ---- 8D ---- */
.d-steps{display:flex;gap:0;overflow-x:auto;padding-bottom:4px}
.d-step{flex:1;min-width:104px;position:relative;padding:10px 12px;background:var(--surface-2);
  border:1px solid var(--border);border-radius:9px;margin-right:6px;cursor:pointer;transition:border-color .15s}
.d-step:last-child{margin-right:0}
.d-step:hover{border-color:var(--border-strong)}
.d-step.done{border-color:rgba(12,163,12,.4)}
.d-step.cur{border-color:var(--accent);background:linear-gradient(180deg,rgba(57,135,229,.12),var(--surface-2) 70%)}
.d-step.on{outline:1px solid var(--accent)}
.d-step .dn{font-size:12.5px;font-weight:800;color:var(--ink)}
.d-step.done .dn{color:#5fc46f}
.d-step .dt{font-size:11.5px;color:var(--ink-2);margin-top:2px}
.d-step .dd{font-size:10.5px;color:var(--muted);margin-top:2px;line-height:1.35}
.d-badge{position:absolute;top:8px;right:9px;font-size:10px}

.doe-grid{display:grid;grid-template-columns:auto 1fr 1fr;gap:6px;font-size:12px;margin-top:8px}
.doe-cell{background:var(--surface-3);border-radius:7px;padding:10px 12px;text-align:center}
.doe-cell.hi{background:rgba(208,59,59,.18);border:1px solid rgba(208,59,59,.4)}
.doe-cell b{display:block;font-size:19px;font-variant-numeric:tabular-nums}
.doe-cell span{font-size:10.5px;color:var(--muted)}
.doe-hdr{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:11.5px}
.effects{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.effect-row{display:flex;align-items:center;gap:9px;font-size:12px}
.effect-row .en{width:112px;flex:none;color:var(--ink-2)}
.effect-bar{flex:1;height:14px;background:var(--surface-3);border-radius:4px;overflow:hidden}
.effect-bar i{display:block;height:100%;background:var(--s1);border-radius:4px}
.effect-row .ev{width:110px;flex:none;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}

.why{display:flex;flex-direction:column;gap:0}
.why-row{display:grid;grid-template-columns:24px 1fr;gap:11px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.why-row:last-child{border-bottom:none}
.why-n{width:24px;height:24px;border-radius:50%;background:var(--surface-3);color:var(--ink-2);
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.why-q{font-size:12.5px;color:var(--ink);font-weight:600}
.why-a{font-size:12.5px;color:var(--ink-2);margin-top:3px}
.why-row:last-child .why-n{background:var(--crit);color:#fff}

.doc-item{display:flex;align-items:center;gap:11px;background:var(--surface-2);border:1px solid var(--border);
  border-radius:9px;padding:9px 13px;font-size:12.5px;margin-bottom:7px}
.doc-item .dc{flex:none;width:88px;font-weight:700;color:var(--ink)}
.doc-item .ds{margin-left:auto;flex:none}

/* ---- 检测通道卡（在线检测）---- */
.channels{display:grid;gap:10px}
.channel{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:11px 13px;transition:border-color .2s}
.channel.pass{border-color:rgba(12,163,12,.4)}
.channel.fail{border-color:rgba(208,59,59,.5);background:linear-gradient(180deg,rgba(208,59,59,.08),var(--surface-2) 70%)}
.channel.check{border-color:rgba(250,178,25,.45);background:linear-gradient(180deg,rgba(250,178,25,.06),var(--surface-2) 70%)}
.channel h5{font-size:12.5px;display:flex;align-items:center;gap:6px}
.channel .ch-eng{font-size:10.5px;color:var(--muted);margin-top:2px}
.channel .ch-res{display:flex;align-items:center;justify-content:space-between;margin-top:9px}
.channel .ch-verdict{font-size:13px;font-weight:800;letter-spacing:1px}
.channel .ch-verdict.ok{color:#4fc06a} .channel .ch-verdict.ng{color:#ff7b7b} .channel .ch-verdict.chk{color:var(--warn)}
.channel .ch-conf{font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.channel .ch-items{font-size:10.5px;color:var(--ink-2);margin-top:6px;border-top:1px solid var(--border);padding-top:6px}
.assy-item{display:flex;align-items:center;gap:9px;font-size:12px;background:var(--surface-2);border:1px solid var(--border);
  border-radius:8px;padding:7px 11px;margin-bottom:7px}

/* ---- 覆盖度矩阵 ---- */
.covm{border-collapse:collapse;font-size:11.5px;width:100%}
.covm th{color:var(--muted);font-weight:600;padding:6px 4px;text-align:center;white-space:nowrap;font-size:10.5px}
.covm th:first-child{text-align:left;padding-left:8px}
.covm td{padding:3px;text-align:center}
.covm td:first-child{text-align:left;color:var(--ink-2);padding-left:8px;white-space:nowrap}
.covcell{display:block;height:26px;border-radius:5px;line-height:26px;font-size:10.5px;font-weight:700}
.cov0{background:rgba(208,59,59,.18);color:#ff8f8f}
.cov1{background:rgba(250,178,25,.2);color:#f0b84a}
.cov2{background:rgba(12,163,12,.2);color:#5fc46f}

/* ---- 方案表 ---- */
.dec-tag{display:inline-flex;font-size:11px;font-weight:700;border-radius:20px;padding:2px 10px;white-space:nowrap}
.dec-tag.must{color:#fff;background:var(--crit)}
.dec-tag.upgrade{color:#8db9f0;background:rgba(57,135,229,.16)}
.dec-tag.on{color:#4fc06a;background:rgba(12,163,12,.16)}
.dec-tag.hold{color:var(--warn);background:rgba(250,178,25,.14)}
.dec-tag.off{color:var(--muted);background:rgba(137,135,129,.15)}

/* ---- 决策 / 派单 / 验证 ---- */
.dec-opt{display:flex;align-items:center;gap:11px;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:10px 13px;font-size:12.5px;margin-bottom:7px}
.dec-opt.pick{border-color:rgba(25,158,112,.5);background:linear-gradient(135deg,rgba(25,158,112,.1),var(--surface-2) 60%)}
.dec-opt .r{width:15px;height:15px;flex:none;border-radius:50%;border:2px solid var(--border-strong)}
.dec-opt.pick .r{border-color:var(--s2);background:radial-gradient(circle,var(--s2) 40%,transparent 45%)}
.dec-opt .cb{margin-left:auto;text-align:right;flex:none}
.dec-opt .cb .c{color:#ff8f8f;font-size:11px} .dec-opt .cb .b{color:#5ec99a;font-weight:600;font-size:11.5px}
.escalate{background:rgba(57,135,229,.1);border:1px solid rgba(57,135,229,.35);border-radius:9px;padding:10px 13px;font-size:12.5px;margin-top:9px}
.dispatch-item{display:flex;align-items:center;gap:11px;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:9px 13px;font-size:12.5px;margin-bottom:7px}
.dispatch-item .dept{flex:none;width:74px;font-weight:700;color:var(--ink)}
.dispatch-item .eta{margin-left:auto;flex:none;color:var(--muted);font-size:11px}
.verify-card{background:linear-gradient(135deg,rgba(25,158,112,.12),rgba(57,135,229,.07));border:1px solid rgba(25,158,112,.4);border-radius:11px;padding:14px 16px}
.recover-bar{position:relative;height:28px;background:var(--surface-3);border-radius:7px;margin:11px 0;overflow:hidden}
.recover-bar .fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--s5),var(--s3),var(--s2));border-radius:7px}
.recover-bar .tgt{position:absolute;top:0;bottom:0;width:2px;background:var(--ink)}

/* ---- PDCA 状态 ---- */
.pdca{display:inline-flex;gap:3px}
.pdca i{width:16px;height:5px;border-radius:3px;background:var(--surface-3)}
.pdca i.on{background:var(--s2)}
.pdca i.cur{background:var(--s3)}

/* ---- SLA ---- */
.sla{display:flex;align-items:center;gap:7px;font-size:11.5px}
.sla-bar{width:52px;height:5px;border-radius:3px;background:var(--surface-3);overflow:hidden;flex:none}
.sla-bar i{display:block;height:100%;border-radius:3px}

/* ---- KPI 行 ---- */
.kpirow{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:14px}
.kpibox{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 15px}
.kpibox .l{font-size:11.5px;color:var(--muted)}
.kpibox .v{font-size:23px;font-weight:700;margin-top:3px;font-variant-numeric:tabular-nums}
.kpibox .v small{font-size:13px;color:var(--ink-2);margin-left:2px}
.kpibox .s{font-size:11px;color:var(--muted);margin-top:3px}

.gap{display:flex;gap:14px}
.mt14{margin-top:14px}
.muted{color:var(--muted)}
.hidden{display:none!important}

@media (max-width:1360px){
  .station-cards{grid-template-columns:repeat(2,1fr)}
  .kpirow{grid-template-columns:repeat(3,1fr)}
  .akpis{grid-template-columns:repeat(2,1fr)}
}
