:root{
  --bg:#0b1220; --panel:#121a2e; --panel2:#0f1729; --border:#243049;
  --txt:#e5edf7; --mut:#8da2c0; --acc:#38bdf8; --good:#34d399; --bad:#f87171;
  --cash:#38bdf8; --house:#b45309; --car:#737373; --invest:#a855f7;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:radial-gradient(1200px 800px at 70% -10%,#16223f 0%,var(--bg) 60%);
  color:var(--txt);font:14px/1.5 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;
}
.wrap{max-width:1320px;margin:0 auto;padding:14px 16px 28px}
header{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:10px}
header h1{font-size:20px;margin:0;font-weight:700}
header .sub{color:var(--mut);font-size:12.5px}
.grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px}
@media(max-width:980px){.grid{grid-template-columns:1fr}}
.card{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--border);
  border-radius:14px;padding:12px}
.stage{position:relative;display:flex;flex-direction:column;gap:10px}
#bucketWrap{position:relative;background:radial-gradient(800px 500px at 50% 120%,#0e1830 0%,#0a1122 70%);
  border-radius:12px;border:1px solid var(--border);overflow:hidden}
#bucket{display:block;width:100%;height:470px}
.legend{position:absolute;top:8px;left:10px;display:flex;flex-direction:column;gap:3px;font-size:11.5px;
  background:rgba(8,14,28,.55);padding:6px 8px;border-radius:8px;backdrop-filter:blur(4px)}
.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:middle}
.hud{position:absolute;top:8px;right:10px;text-align:right;font-variant-numeric:tabular-nums;
  background:rgba(8,14,28,.55);padding:7px 10px;border-radius:8px;backdrop-filter:blur(4px);min-width:150px}
.hud .big{font-size:22px;font-weight:700;color:var(--acc)}
.hud .row{display:flex;justify-content:space-between;gap:10px;color:var(--mut);font-size:11.5px}
.hud .row b{color:var(--txt);font-weight:600}
.timeline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.timeline .month{font-variant-numeric:tabular-nums;font-weight:600;min-width:96px}
button{background:#1c2842;color:var(--txt);border:1px solid var(--border);border-radius:8px;
  padding:6px 11px;cursor:pointer;font-size:13px;transition:.15s}
button:hover{background:#243456;border-color:#34507e}
button.primary{background:linear-gradient(180deg,#1d4ed8,#1e40af);border-color:#3b82f6}
button.primary:hover{filter:brightness(1.12)}
button.ff{background:#14304a;border-color:#1e517a}
button.ff:hover{background:#18415f}
select,input[type=number],input[type=text],input[type=password]{background:#0c1322;color:var(--txt);border:1px solid var(--border);
  border-radius:7px;padding:4px 7px;font-size:12.5px;width:100%}
input[type=range]{width:100%;accent-color:var(--acc)}
.side{display:flex;flex-direction:column;gap:12px;align-self:start;
  position:sticky;top:14px;max-height:calc(100vh - 28px);overflow:auto;padding-right:2px}
.side::-webkit-scrollbar{width:8px}.side::-webkit-scrollbar-thumb{background:#243049;border-radius:8px}
.sec h3{margin:0 0 8px;font-size:13px;color:var(--acc);display:flex;justify-content:space-between;align-items:center}
.sec h3 small{color:var(--mut);font-weight:400;font-size:11px}
.pipe{border:1px solid var(--border);border-radius:9px;padding:8px;margin-bottom:7px;background:#0d1424}
.pipe .ph{display:flex;align-items:center;gap:7px;margin-bottom:6px}
.pipe .dot{width:13px;height:13px;border-radius:3px;flex:0 0 auto;cursor:pointer;border:1px solid rgba(255,255,255,.25)}
.pipe .nm{flex:1;font-weight:600;font-size:12.5px;background:transparent;border:none;color:var(--txt);padding:2px 4px;border-radius:5px;width:100%}
.pipe .nm:focus{outline:1px solid var(--acc)}
.pipe .badge{font-size:10px;padding:1px 6px;border-radius:20px;border:1px solid var(--border);color:var(--mut);white-space:nowrap}
.pipe .badge.in{color:#7dd3fc;border-color:#1e517a}
.pipe .badge.out{color:#fca5a5;border-color:#5e1d1d}
.pipe .badge.act{color:#fcd34d;border-color:#5e4a1d}
.pipe .badge.pas{color:#86efac;border-color:#1d5e3a}
.pipe .del{font-size:11px;padding:2px 6px;color:var(--bad)}
.fld{display:grid;grid-template-columns:74px 1fr 42px;align-items:center;gap:6px;margin:4px 0;font-size:11.5px}
.fld.amt{grid-template-columns:60px 1fr 84px}
.fld label{color:var(--mut)}
.fld .v{color:var(--txt);font-variant-numeric:tabular-nums;text-align:right;font-size:11px}
.fld .num{width:100%;padding:3px 5px;font-size:11.5px;font-variant-numeric:tabular-nums;text-align:right}
.fld .num::-webkit-inner-spin-button{opacity:.4}
.addrow{display:flex;gap:6px}
.addrow select{flex:1}
.comp{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.comp .ci{border:1px solid var(--border);border-radius:8px;padding:6px 8px;background:#0d1424}
.comp .ci .t{font-size:11px;display:flex;align-items:center;gap:5px;color:var(--mut)}
.comp .ci .t i{width:9px;height:9px;border-radius:2px;display:inline-block}
.comp .ci .cval{width:92px;margin-left:auto;padding:2px 4px;font-size:11.5px;font-variant-numeric:tabular-nums;text-align:right}
.comp .ci .val{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;margin:1px 0 3px}
.target{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.target input{width:130px}
.fillinfo{font-size:12px;color:var(--mut);margin-top:6px}
.fillinfo b{color:var(--good)}
.fillinfo.warn b{color:var(--bad)}
#chart{display:block;width:100%;height:170px;background:#0a1122;border-radius:10px;border:1px solid var(--border)}
.chartwrap{position:relative}
.chartwrap .ctitle{position:absolute;top:7px;left:10px;font-size:11.5px;color:var(--mut);z-index:2}
.help{font-size:11px;color:var(--mut);line-height:1.55;margin-top:6px}
.pill{display:inline-block;background:#0c1322;border:1px solid var(--border);border-radius:20px;padding:1px 8px;font-size:10.5px;color:var(--mut);margin:1px 2px}
/* 模式切换 */
.modebar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.modeswitch{display:inline-flex;background:#0c1322;border:1px solid var(--border);border-radius:9px;padding:3px;gap:2px}
.modeswitch button{background:transparent;border:none;padding:5px 14px;font-size:12.5px;color:var(--mut)}
.modeswitch button.on{background:#1d4ed8;color:#fff;border:1px solid #3b82f6}
/* 方案库 */
.planrow{display:flex;align-items:center;gap:7px;padding:5px 6px;border:1px solid var(--border);border-radius:8px;margin-bottom:5px;background:#0d1424}
.planrow .pdot{width:12px;height:12px;border-radius:3px;flex:0 0 auto;border:1px solid rgba(255,255,255,.25)}
.planrow .pname{flex:1;font-size:12px;font-weight:600;background:transparent;border:none;color:var(--txt);padding:2px 3px;border-radius:4px;width:100%}
.planrow .pname:focus{outline:1px solid var(--acc)}
.planrow .pval{font-size:10.5px;color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap}
.planrow .pedit{font-size:11px;padding:1px 5px;color:var(--acc)}
.planrow .pdel{font-size:11px;padding:1px 5px;color:var(--bad)}
/* 顶部方案快速切换栏 */
.planbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.planbar-label{color:var(--acc);font-weight:600;font-size:13px;white-space:nowrap}
.planbar-select{width:auto;min-width:260px;flex:0 1 360px}
.planbar-hint{color:var(--mut);font-size:11.5px}
/* 时间轴事件表单微调 */
#tlColor{padding:4px 8px;font-size:13px}
#tlAmountR{accent-color:var(--acc)}
#tlList{max-height:none}
/* 对比统计表 */
table.cmp{width:100%;border-collapse:collapse;font-size:11.5px}
table.cmp th,table.cmp td{padding:4px 5px;text-align:right;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}
table.cmp th:first-child,table.cmp td:first-child{text-align:left}
table.cmp thead th{color:var(--mut);font-weight:500;font-size:10.5px}
table.cmp .swatch{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:middle}
.hidden{display:none!important}
.horizon-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.horizon-row select{width:auto}
/* 认证 */
.authbar{display:flex;align-items:center;gap:6px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:100}
.modal-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px;width:300px;display:flex;flex-direction:column;gap:8px}
.modal-card h3{margin:0 0 4px;color:var(--acc)}
.modal-card input{width:100%}
.auth-err{color:var(--bad);font-size:12px;min-height:16px}
.modal-btns{display:flex;gap:8px;margin-top:4px}
.modal-btns button{flex:1}
