/* GridBot 公共主题：与仪表盘（dashboard.html）同一套视觉语言。
   所有页面都引用 /static/theme.css，避免每页各自内联一份样式。 */
:root{color-scheme:dark;--bg:#0b111b;--surface:#111b28;--surface2:#162231;--line:#263545;--text:#eaf1f5;--muted:#91a3b4;--faint:#617587;--teal:#62d6c1;--teal-deep:#123e42;--red:#f28a91;--amber:#f5bd69;--blue:#8bbaff;
/* 形态变量：20 套主题在这些维度上做出差异，不只是换色 */
--radius:14px;--radius-sm:9px;--border-w:1px;--glow:0 0 0 rgba(0,0,0,0);
--font-num:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
--mono:0;--letter:.0px;--density:16px;--panel-shadow:0 12px 34px rgba(0,0,0,.28)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Microsoft Yahei",sans-serif;font-variant-numeric:tabular-nums}
a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
h1{font-size:26px;line-height:1.2;letter-spacing:-.8px;margin:5px 0 6px}h2{font-size:16px;letter-spacing:-.2px;margin:0}p{margin:0}
.muted{color:var(--muted)}.tiny{color:var(--faint);font-size:11px}
.positive,.green{color:var(--teal)!important}.negative,.red{color:var(--red)!important}.warning,.amber{color:var(--amber)!important}
.eyebrow{text-transform:uppercase;letter-spacing:1.8px;font-size:10px;font-weight:750;color:var(--teal)}

/* 外壳：左侧导航 + 内容区，与仪表盘一致 */
.app{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}
.side{border-right:1px solid var(--line);padding:28px 16px;display:flex;flex-direction:column;gap:34px;background:#0d1520}
.brand{display:flex;align-items:center;gap:12px;padding:0 10px;color:var(--text)}
.brand img{width:34px;height:34px}.brand strong{display:block;font-size:17px;letter-spacing:-.4px}.brand small{display:block;color:var(--faint);font-size:11px;letter-spacing:1.4px;text-transform:uppercase}
.nav-title{padding:0 13px 8px;color:var(--faint);font-size:10px;font-weight:700;letter-spacing:1.5px}
.nav{display:grid;gap:4px}.nav a{display:flex;align-items:center;gap:11px;padding:10px 13px;border-radius:9px;color:var(--muted);font-weight:600}
.nav a:hover,.nav a.active{background:var(--surface2);color:var(--text)}.nav a.active{box-shadow:inset 2px 0 var(--teal)}
.nav svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.7}
.side-bottom{margin-top:auto;padding:15px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.side-bottom .eyebrow{margin-bottom:9px}.side-bottom b{font-size:12px}.side-bottom p{color:var(--muted);font-size:11px;margin:5px 0 0}
main{min-width:0;padding:29px clamp(18px,3.2vw,48px) 42px;max-width:1500px;width:100%;margin:0 auto}
.top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:26px}
.top-sub{color:var(--muted);font-size:12px}
.top-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.status-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:12px;font-weight:700;white-space:nowrap}
.status-pill::before{content:"";width:7px;height:7px;background:var(--amber);border-radius:50%;box-shadow:0 0 0 3px rgba(245,189,105,.1)}
.status-pill.good::before{background:var(--teal);box-shadow:0 0 0 3px rgba(98,214,193,.13)}
.status-pill.bad::before{background:var(--red);box-shadow:0 0 0 3px rgba(242,138,145,.13)}
.mode{padding:7px 10px;border:1px solid #37546b;color:var(--blue);border-radius:7px;font-size:11px;font-weight:750;letter-spacing:.5px}

/* 卡片与网格 */
.panel{background:var(--surface);border:var(--border-w) solid var(--line);border-radius:var(--radius);min-width:0;box-shadow:var(--panel-shadow)}
.panel-pad{padding:calc(20px + var(--density) / 2) calc(22px + var(--density) / 2)}
.panel+.panel{margin-top:16px}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.panel-heading small{color:var(--muted)}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 22px}
.card.active{border-color:#315d5b;box-shadow:inset 0 0 0 1px rgba(98,214,193,.18)}
.card h2{font-size:17px;margin:0 0 6px}.card p{color:var(--muted);font-size:12px;min-height:40px;margin:8px 0 16px}
.section{margin:25px 0 12px;display:flex;justify-content:space-between;align-items:end;gap:10px}
.section small{color:var(--muted);font-size:11px}

/* 标签、提示、表单 */
.tag{display:inline-flex;padding:5px 8px;background:var(--surface2);border:1px solid var(--line);border-radius:6px;color:var(--muted);font-size:10px;font-weight:750}
.tag.good,.pill.ok{color:var(--teal);border-color:#315d5b}.tag.bad{color:var(--red);border-color:#70434a}
.pill{display:inline-flex;padding:5px 8px;background:var(--surface2);border:1px solid var(--line);border-radius:6px;color:var(--muted);font-size:10px;font-weight:750}
.pill.off{color:var(--amber);border-color:#745039}
.alert{display:flex;gap:12px;align-items:start;padding:13px 16px;margin-bottom:18px;border:1px solid #745039;border-radius:11px;background:#34251e;color:#ffd8ae}
.alert strong{display:block;font-size:12px}.alert span{display:block;font-size:12px;margin-top:2px;overflow-wrap:anywhere}
.ok{border:1px solid #315d5b;background:var(--teal-deep);color:#bff3e8;border-radius:11px;padding:11px 14px;margin-bottom:16px;font-size:13px}
.error{border:1px solid #70434a;background:#2e1d21;color:var(--red);border-radius:11px;padding:11px 14px;margin-bottom:16px;font-size:13px}
input[type=text],input[type=password],input[type=number],input[type=email],select{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:10px 11px;font:inherit}
input:focus,select:focus{outline:none;border-color:var(--teal)}
label{display:block;color:var(--muted);font-size:11px;font-weight:600;margin:0 0 6px}
.field{margin-bottom:14px}
.check{display:flex;align-items:center;gap:8px;margin:8px 0;color:var(--muted);font-size:13px}
.check input{accent-color:var(--teal)}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;align-items:center}
.btn{display:inline-flex;align-items:center;gap:7px;color:var(--text);border:1px solid var(--line);background:var(--surface2);padding:9px 14px;border-radius:9px;font-weight:600;font-size:13px}
.btn:hover{border-color:#37546b;background:#1b2a3a}
.btn.primary{background:var(--teal-deep);border-color:#2b6f70;color:#c9f6ec}.btn.primary:hover{background:#17504f}
.btn.danger{background:#2e1d21;border-color:#70434a;color:var(--red)}.btn.danger:hover{background:#3a2429}
.btn.test{background:var(--teal-deep);border-color:#315d5b;color:#bff3e8}
.btn:disabled{opacity:.55;cursor:not-allowed}
.hint{color:var(--muted);font-size:12px;margin:0 0 16px}
.note{color:var(--faint);font-size:12px;margin-top:14px}
.divider{border-top:1px solid var(--line);padding-top:15px;margin-top:15px}

/* 表格 */
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12px}
.data-table th,.kv-table th{text-align:left;color:var(--faint);font-weight:600;padding:10px 15px;border-bottom:1px solid var(--line);white-space:nowrap}
.data-table td,.kv-table td{padding:11px 15px;border-bottom:1px solid #1d2b39;vertical-align:top}
.data-table tr:last-child td,.kv-table tr:last-child td{border-bottom:0}
.kv-table td:first-child{color:var(--muted);width:23%;white-space:nowrap}
.data-table .num{text-align:right}
.data-table .empty{text-align:center;color:var(--faint);padding:24px}

/* 指标块 */
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin:16px 0}
.metric{padding:18px 20px}
.metric .label{color:var(--muted);font-size:11px}
.metric .value{font-size:24px;font-weight:750;line-height:1.2;letter-spacing:calc(-.6px + var(--letter));margin:9px 0 5px;font-family:var(--font-num)}
.metric .detail{font-size:11px;color:var(--faint)}
.kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 14px;border-top:1px solid var(--line);padding-top:16px}
.kv span{display:block;color:var(--muted);font-size:10px}.kv b{display:block;font-size:13px;font-weight:650;margin-top:4px;overflow-wrap:anywhere}
.bar{height:6px;border-radius:5px;background:#273747;overflow:hidden;margin:8px 0 4px}
.bar i{display:block;height:100%;background:var(--teal);border-radius:5px;width:0;transition:width .3s}
.bar.warn i{background:var(--amber)}.bar.bad i{background:var(--red)}
.resume{padding:12px 13px;background:var(--surface2);border-radius:9px;color:var(--muted);font-size:11px}
.resume strong{display:block;color:var(--text);font-size:12px;margin-bottom:3px}
.footer{margin-top:24px;color:var(--faint);font-size:10px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}

/* 登录：居中卡片 */
.auth{min-height:100vh;display:grid;place-items:center;padding:24px;
  background:radial-gradient(900px 500px at 50% -10%,#132133 0,var(--bg) 60%)}
.auth-card{width:min(400px,100%);background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:30px 28px;box-shadow:0 30px 80px rgba(0,0,0,.45)}
.auth-card .brand{padding:0;margin-bottom:22px}
.auth-card h1{font-size:20px}.auth-card .top-sub{margin-bottom:20px}
.auth-card input{margin-bottom:0}

/* 两步验证二维码等专用块 */
.qr{display:flex;justify-content:center;padding:14px;background:#fff;border:1px solid var(--line);border-radius:12px;width:fit-content;margin:0 auto 10px}
.qr svg{width:190px;height:190px;display:block}
.secret{font:600 15px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.5px;background:var(--bg);border:1px dashed var(--line);border-radius:8px;padding:10px 12px;word-break:break-all}
.status{display:inline-flex;border:1px solid #315d5b;color:var(--teal);border-radius:999px;padding:2px 9px;font-size:12px;vertical-align:middle}
.status.off{border-color:#745039;color:var(--amber)}

@media(max-width:1180px){.app{grid-template-columns:70px minmax(0,1fr)}.side{padding:22px 10px}.brand{padding:0;justify-content:center}.brand span,.nav-title,.nav span,.side-bottom{display:none}.nav a{justify-content:center;padding:11px}}
@media(max-width:900px){.grid{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.app{display:block}.side{height:57px;border-right:0;border-bottom:1px solid var(--line);padding:8px 15px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.brand img{width:30px;height:30px}.nav{display:flex;gap:1px}.nav a{padding:9px}.side nav:nth-of-type(2){display:none}main{padding:23px 14px 34px}.top{align-items:start;margin-bottom:18px}h1{font-size:22px}.top-right{gap:6px}.mode,.top-right .tiny{display:none}.metrics{gap:9px;margin:9px 0}.metric{padding:13px 14px}.metric .value{font-size:19px}.panel-pad{padding:16px}.kv{grid-template-columns:repeat(2,1fr)}.kv-table td:first-child{width:38%;white-space:normal}.auth{padding:16px}.auth-card{padding:24px 20px}}

/* 仪表盘专用块（首页） */
[hidden]{display:none!important}
.mobile-settings{display:none!important}
.alert{display:none}.alert.show{display:flex}
.layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(290px,1fr);gap:16px}
.hero{padding:23px 26px 18px}
.hero-top{display:flex;align-items:start;justify-content:space-between;gap:10px}
.big-number{font-size:clamp(32px,4vw,48px);font-weight:750;letter-spacing:calc(-1.8px + var(--letter));line-height:1.15;margin:9px 0 4px;font-family:var(--font-num);text-shadow:var(--glow)}
.unit{font-size:14px;color:var(--muted);font-weight:500;letter-spacing:0}
.hero-meta{display:flex;gap:28px;flex-wrap:wrap;margin-top:21px;padding-top:16px;border-top:1px solid var(--line)}
.hero-meta span{display:block;color:var(--muted);font-size:11px}.hero-meta strong{display:block;font-size:14px;margin-top:4px}
.tabs{display:flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.tabs button{border:0;border-radius:5px;background:transparent;color:var(--muted);font-size:11px;font-weight:700;padding:5px 9px}
.tabs button.active{color:var(--text);background:var(--surface2)}
.chart-wrap{height:190px;margin-top:16px;position:relative}.chart-wrap svg{width:100%;height:100%;display:block}
.chart-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--faint);font-size:12px}
.chart-labels{display:flex;justify-content:space-between;color:var(--faint);font-size:10px;margin-top:1px}
.risk-box{display:grid;gap:17px}
.risk-main{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.risk-main strong{font-size:21px}.risk-main span{color:var(--muted);font-size:11px}
.risk-note{font-size:11px;color:var(--muted)}
.resume .reason{margin-top:5px;overflow-wrap:anywhere}
.positions{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(290px,1fr);gap:16px}
.symbol-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.symbol-head b{font-size:20px}.symbol-head small{color:var(--muted);display:block;margin-top:2px}
.mark{font-size:28px;font-weight:700;letter-spacing:-.7px;margin:18px 0 17px}.mark small{font-size:11px;font-weight:500;color:var(--muted)}
.explain{padding:12px 13px;background:var(--surface2);border-radius:9px;margin-top:17px;font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.explain b{color:var(--text)}
.daily-bars{height:112px;display:flex;align-items:stretch;gap:5px;padding:3px 0}
.daily-bars .day{min-width:0;flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px}
.daily-bars .up,.daily-bars .down{width:100%;display:flex;justify-content:center;height:50%;align-items:flex-end}
.daily-bars .down{align-items:flex-start;border-top:1px solid #334455}
.daily-bars i{display:block;width:min(100%,18px);min-height:2px;border-radius:2px 2px 0 0;background:var(--teal)}
.daily-bars .down i{background:var(--red);border-radius:0 0 2px 2px}
.daily-bars .day small{font-size:9px;color:var(--faint);white-space:nowrap}
.daily-summary{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:11px;font-size:11px;color:var(--muted)}
.daily-summary b{color:var(--text)}
.activity{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px}
.data-table .message{white-space:normal;min-width:150px;line-height:1.4}
.table-head{padding:18px 20px 5px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.table-head a{color:var(--blue);font-size:11px}
.orders-line{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:11px;padding:0 20px 14px}
.orders-line strong{color:var(--text)}
@media(max-width:1180px){.layout,.positions{grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr)}}
@media(max-width:900px){.layout,.positions,.activity{grid-template-columns:1fr}}
@media(max-width:620px){.nav a{padding:9px}.nav svg{width:17px}.mobile-settings{display:flex!important}.hero{padding:19px 17px}.hero-meta{gap:12px 18px}.status-pill{font-size:10px;padding:6px 9px}}

/* ===== 交易看板扩展块（board 看板使用；20 套主题共用结构，靠变量换形态） ===== */
[data-demo]{position:relative}
.demo-badge,.live-badge{display:inline-flex;align-items:center;gap:4px;font-size:9px;font-weight:800;letter-spacing:.8px;padding:2px 7px;border-radius:999px;white-space:nowrap;vertical-align:middle}
.demo-badge{background:rgba(245,189,105,.14);color:var(--amber);border:1px solid rgba(245,189,105,.4)}
.live-badge{background:rgba(98,214,193,.12);color:var(--teal);border:1px solid rgba(98,214,193,.35)}
.demo-note{display:flex;align-items:center;gap:10px;padding:10px 16px;margin-bottom:16px;border:1px dashed var(--line);border-radius:var(--radius-sm);background:var(--surface2);font-size:11px;color:var(--muted);flex-wrap:wrap}
.demo-note b{color:var(--amber)}
.demo-note .sep{flex:1}
.ticker-bar{display:flex;align-items:stretch;gap:0;flex-wrap:wrap;border:var(--border-w) solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface);margin-bottom:16px;box-shadow:var(--panel-shadow)}
.ticker-cell{padding:10px 16px;border-right:1px solid var(--line);min-width:118px;flex:1}
.ticker-cell:last-child{border-right:0}
.ticker-cell span{display:block;color:var(--muted);font-size:10px;letter-spacing:.5px}
.ticker-cell b{display:block;font-size:15px;margin-top:3px;font-family:var(--font-num);letter-spacing:var(--letter)}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.grid-2b{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:16px}
.mini{font-size:10px;color:var(--faint)}
.stat-list{display:grid;gap:0}
.stat-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:12px}
.stat-row:last-child{border-bottom:0}
.stat-row span{color:var(--muted)}
.stat-row b{font-family:var(--font-num);font-size:13px;letter-spacing:var(--letter)}
.sparkline{width:100%;height:46px;display:block}
.candle-wrap{position:relative;height:224px}
.candle-wrap svg{width:100%;height:100%;display:block}
.depth-row{display:flex;align-items:center;gap:8px;height:17px;font-size:10px;font-family:var(--font-num)}
.depth-row .px{width:62px;text-align:right;color:var(--muted)}
.depth-row .qty{width:52px;text-align:right;color:var(--faint)}
.depth-row .fill{flex:1;height:11px;border-radius:2px;min-width:2px}
.depth-row.bid .fill{background:linear-gradient(90deg,var(--teal),transparent);opacity:.75}
.depth-row.ask .fill{background:linear-gradient(90deg,transparent,var(--red));opacity:.75}
.depth-row.bid .px{color:var(--teal)}.depth-row.ask .px{color:var(--red)}
.ladder{display:grid;gap:3px}
.ladder-row{display:grid;grid-template-columns:36px 1fr 60px 50px 44px;gap:8px;align-items:center;padding:5px 9px;border:1px solid var(--line);border-radius:5px;font-size:11px;font-family:var(--font-num)}
.ladder-row.now{box-shadow:inset 0 0 0 1px var(--amber);background:var(--surface2)}
.ladder-row .side{font-weight:800}.ladder-row .side.buy{color:var(--teal)}.ladder-row .side.sell{color:var(--red)}
.ladder-row .price{text-align:right}.ladder-row .dist{text-align:right;color:var(--muted)}
.ladder-row .status{text-align:right;font-size:9px;font-weight:800}
.ladder-row .status.filled{color:var(--teal)}.ladder-row .status.open{color:var(--faint)}
.donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.legend{display:grid;gap:7px;flex:1;min-width:130px}
.legend-row{display:flex;align-items:center;gap:8px;font-size:11px}
.legend-row i{width:10px;height:10px;border-radius:3px;display:block}
.legend-row span{color:var(--muted);flex:1}.legend-row b{font-family:var(--font-num)}
.gauge{display:flex;align-items:center;gap:14px}
.gauge-ring{position:relative;width:92px;height:92px;flex:0 0 auto}
.gauge-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.gauge-ring .val{position:absolute;inset:0;display:grid;place-items:center;font-size:20px;font-weight:800;font-family:var(--font-num)}
.timeline{display:grid;gap:0;max-height:230px;overflow:auto}
.tl-row{display:grid;grid-template-columns:60px 12px 1fr;gap:9px;align-items:start;padding:7px 0;font-size:11px}
.tl-row .t{color:var(--faint);font-family:var(--font-num)}
.tl-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;background:var(--muted)}
.tl-row.info .tl-dot{background:var(--teal)}.tl-row.warn .tl-dot{background:var(--amber)}.tl-row.error .tl-dot{background:var(--red)}
.tl-row .msg{color:var(--muted);line-height:1.4;overflow-wrap:anywhere}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:10px}
.kpi{background:var(--surface2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:11px 12px}
.kpi span{display:block;color:var(--muted);font-size:10px}.kpi b{display:block;font-size:17px;margin-top:4px;font-family:var(--font-num);letter-spacing:var(--letter)}
.risk-flag{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 11px;border-radius:var(--radius-sm);background:var(--surface2);font-size:11px;margin-top:8px}
.risk-flag .dot{width:8px;height:8px;border-radius:50%;background:var(--teal)}
.risk-flag.warn .dot{background:var(--amber)}.risk-flag.bad .dot{background:var(--red)}
@media(max-width:1100px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2b{grid-template-columns:1fr}}
@media(max-width:620px){.grid-3,.grid-4{grid-template-columns:1fr}.ticker-cell{min-width:33%}}

/* 矩阵终端（科技·dark）｜主题 matrix */
:root{color-scheme:dark;--bg:#000600;--surface:#031003;--surface2:#071a08;--line:#123d18;--text:#c8ffcf;--muted:#5f9e68;--faint:#356b3d;--teal:#39ff14;--teal-deep:#0a2e0d;--red:#ff5c4d;--amber:#c8ff3e;--blue:#4dff9e}
:root{--radius:10px;--radius-sm:6px;--border-w:1px;--glow:0 0 18px rgba(0,0,0,.35);--font-num:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--letter:.3px;--density:14px;--panel-shadow:0 10px 30px rgba(0,0,0,.4)}

/* 基础层中和：把 theme.css 写死的深色替换为变量，浅色主题才不会出现黑块 */
.app .side{background:var(--surface2)}
.side-bottom{background:var(--surface)}
.bar{background:var(--line)}
.data-table td,.kv-table td{border-bottom-color:var(--line)}
.daily-bars .down{border-top-color:var(--line)}
.alert{background:var(--surface2);color:var(--text);border-color:var(--line)}
.mode{border-color:var(--line);color:var(--blue)}
.btn{background:var(--surface2);color:var(--text);border-color:var(--line)}
.btn:hover{background:var(--surface);border-color:var(--teal)}
.chart-empty{color:var(--faint)}
.tag,.pill{color:var(--muted)}
.ok{background:var(--surface2);color:var(--teal);border-color:var(--line)}
.error{background:var(--surface2);color:var(--red);border-color:var(--line)}
input[type=text],input[type=password],input[type=number],input[type=email],select{background:var(--surface2)}
.secret{background:var(--surface2)}
.card.active{border-color:var(--teal);box-shadow:inset 0 0 0 1px rgba(127,127,127,.18)}
.btn.primary{background:var(--teal-deep);color:var(--bg)}
.status-pill{border-radius:var(--radius-sm)}
.tag,.pill{border-radius:var(--radius-sm)}
.tabs,.btn,.alert,.explain,.resume{border-radius:var(--radius-sm)}

body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC",sans-serif}
.app .side{background:linear-gradient(180deg,var(--bg),var(--surface));border-right:1px solid var(--line)}
.brand strong{font-weight:800}
.eyebrow{letter-spacing:2.2px}
.nav a.active{box-shadow:inset 2px 0 var(--teal),0 0 18px rgba(0,0,0,0)}
.panel{box-shadow:0 10px 30px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.03)}
.big-number,.metric .value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.bar i{box-shadow:0 0 10px rgba(0,0,0,.2)}
.mode{box-shadow:0 0 14px rgba(0,0,0,.15)}
.positive,.green{color:var(--teal)!important}

body{background:radial-gradient(900px 600px at 50% -20%,rgba(57,255,20,.10),transparent 60%),var(--bg);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
h1,h2,.big-number,.metric .value,.brand strong{font-family:ui-monospace,Menlo,monospace;letter-spacing:1px}
.big-number,.metric .value{text-shadow:0 0 18px rgba(57,255,20,.55)}
.eyebrow,.positive,.green{text-shadow:0 0 10px rgba(57,255,20,.6)}
.panel,.metric{border-color:var(--line);box-shadow:inset 0 0 30px rgba(57,255,20,.03)}
.nav a.active{box-shadow:inset 2px 0 var(--teal),0 0 16px rgba(57,255,20,.2)}
.bar i{background:var(--teal);box-shadow:0 0 10px rgba(57,255,20,.6)}

/* 看板结构层：20 套主题共用，靠 CSS 变量与 flex order 呈现方向差异 */
/* 看板结构层：20 套主题共用，靠 CSS 变量与 flex order 呈现方向差异 */
#mods{display:flex;flex-wrap:wrap;gap:16px;align-items:stretch}
#mods > .panel{flex:1 1 360px;min-width:0}
#mods > .panel.wide{flex-basis:100%}
#mods > .panel.focus{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal),var(--panel-shadow)}
.f-tag{font-size:9px;font-weight:800;letter-spacing:1px;color:var(--teal);border:1px solid var(--teal);border-radius:999px;padding:1px 7px;margin-left:8px;vertical-align:middle}
.focus-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 15px;margin-bottom:16px;border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:var(--radius-sm);background:var(--surface2);font-size:11px;color:var(--muted)}
.focus-bar b{color:var(--text);font-size:12px}.focus-bar .tagx{color:var(--amber);font-weight:700}
.eq-svg{width:100%;height:210px;display:block}
.eq-svg text{font:10px ui-monospace,Menlo,monospace;fill:var(--faint)}
.sub-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:16px}
.sub-grid h3{font-size:11px;color:var(--muted);margin:0 0 9px;font-weight:700;letter-spacing:.5px}
.candle-wrap{margin-bottom:14px}
.market-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}
.market-grid h3{font-size:11px;color:var(--muted);margin:0 0 8px;font-weight:700}
.ob-mid{text-align:center;font-size:11px;font-family:var(--font-num);color:var(--amber);padding:3px 0;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);margin:2px 0}
.act-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.act-grid h3{font-size:12px;margin:0 0 9px;display:flex;align-items:center;gap:8px}
.trade-tbl td,.trade-tbl th{padding:7px 9px;font-size:11px}
.trade-tbl .num{text-align:right;font-family:var(--font-num)}
.donut-legend{display:grid;gap:8px;flex:1;min-width:140px}
.sys-bars{display:flex;align-items:flex-end;gap:2px;height:52px;margin-top:6px}
.sys-bars i{flex:1;background:var(--teal);opacity:.65;border-radius:2px 2px 0 0;min-height:2px}
.dd-svg{width:100%;height:64px;display:block}
.gauge-lbl{font-size:11px;color:var(--muted);margin-top:6px;text-align:center}
.pf-ret{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.pf-ret div{flex:1;min-width:80px;background:var(--surface2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px}
.pf-ret span{display:block;font-size:10px;color:var(--muted)}.pf-ret b{font-size:15px;font-family:var(--font-num)}
@media(max-width:620px){#mods > .panel{flex-basis:100%}}
/* ===== 交互终端层：工具栏 / 数值动效 / 深化图表 / 方向洞察 ===== */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 14px;margin-bottom:14px;
  border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface2)}
.toolbar .tb-label{font-size:10px;font-weight:750;letter-spacing:1px;color:var(--faint);text-transform:uppercase}
.tb-group{display:inline-flex;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px}
.tb-btn{border:0;background:transparent;color:var(--muted);font-size:11px;font-weight:700;padding:5px 11px;
  border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;font-family:inherit;white-space:nowrap;letter-spacing:.3px}
.tb-btn:hover{color:var(--text);background:var(--surface2)}
.tb-btn.on{background:var(--teal);color:var(--bg)}
.tb-btn.on:hover{background:var(--teal);color:var(--bg)}
.tb-icon{border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:11px;font-weight:700;
  padding:6px 11px;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;white-space:nowrap}
.tb-icon:hover{color:var(--text);border-color:var(--teal)}
.tb-icon.active{color:var(--teal);border-color:var(--teal)}
.tb-sep{width:1px;height:20px;background:var(--line);margin:0 2px}
.tb-spacer{flex:1}
.tb-state{font-size:10px;color:var(--faint);font-family:var(--font-num);white-space:nowrap}
.tb-state b{color:var(--teal)}
@media(max-width:620px){.tb-spacer{display:none}.toolbar{gap:6px;padding:8px 10px}}
/* 数值动效 */
@keyframes flashUp{0%{color:var(--teal);text-shadow:0 0 12px var(--teal)}100%{color:inherit;text-shadow:none}}
@keyframes flashDown{0%{color:var(--red);text-shadow:0 0 12px var(--red)}100%{color:inherit;text-shadow:none}}
.flash-up{animation:flashUp .9s ease-out}.flash-down{animation:flashDown .9s ease-out}
/* 深化图表 */
.deep-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-top:16px}
.deep-grid h3{font-size:11px;color:var(--muted);margin:0 0 9px;font-weight:700;letter-spacing:.5px;
  display:flex;align-items:center;gap:7px}
.bench-svg{width:100%;height:120px;display:block}
.dist-bars{display:flex;align-items:flex-end;gap:2px;height:78px;border-bottom:1px solid var(--line)}
.dist-bars i{flex:1;border-radius:2px 2px 0 0;min-height:2px;position:relative}
.dist-axis{display:flex;justify-content:space-between;font-size:9px;color:var(--faint);margin-top:4px;font-family:var(--font-num)}
.roll-svg{width:100%;height:78px;display:block}
.heat-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.heat-cell{aspect-ratio:1;border-radius:3px;display:flex;align-items:center;justify-content:center;
  font-size:8px;font-family:var(--font-num);color:transparent}
.heat-cell.v{color:var(--bg);font-weight:800}
.heat-legend{display:flex;align-items:center;gap:6px;font-size:9px;color:var(--faint);margin-top:7px}
.heat-legend i{width:11px;height:11px;border-radius:2px;display:inline-block}
.stress-tbl{width:100%;border-collapse:collapse;font-size:11px}
.stress-tbl td{padding:6px 7px;border-bottom:1px solid var(--line)}
.stress-tbl .num{text-align:right;font-family:var(--font-num)}
.stress-tbl tr:last-child td{border-bottom:0}
/* 方向专属洞察 */
.ins-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.ins-head h2{margin:0;font-size:15px}
.ins-head .ins-sub{font-size:10px;color:var(--faint)}
.ins-verdict{font-size:12px;font-weight:700;color:var(--teal);margin-bottom:12px;padding:8px 11px;
  background:var(--surface2);border-left:3px solid var(--teal);border-radius:var(--radius-sm)}
.ins-bullets{display:grid;gap:6px;margin-top:12px}
.ins-bullets div{font-size:11px;color:var(--muted);padding-left:14px;position:relative;line-height:1.5}
.ins-bullets div:before{content:"›";position:absolute;left:2px;color:var(--teal);font-weight:800}
.ins-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.radar-svg{width:100%;max-width:260px;height:220px;display:block;margin:0 auto}
.ins-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:9px}
.ins-kpi{background:var(--surface2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 11px}
.ins-kpi span{display:block;font-size:10px;color:var(--muted)}
.ins-kpi b{font-size:17px;font-family:var(--font-num);color:var(--text)}
.calm-bar{height:9px;background:var(--surface);border-radius:9px;overflow:hidden;margin:5px 0 13px}
.calm-bar i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--blue),var(--teal))}
.mini-kv{display:flex;justify-content:space-between;font-size:11px;padding:5px 0;border-bottom:1px dashed var(--line)}
.mini-kv:last-child{border-bottom:0}.mini-kv b{font-family:var(--font-num)}
.cost-tbl{width:100%;border-collapse:collapse;font-size:11px}
.cost-tbl td{padding:7px 8px;border-bottom:1px solid var(--line)}
.cost-tbl .num{text-align:right;font-family:var(--font-num)}
.cost-tbl .note{font-size:10px;color:var(--faint)}
.cost-tbl tr.total td{font-weight:800;border-top:2px solid var(--line);border-bottom:0}
.audit-list{display:grid;gap:6px}
.audit-row{display:flex;align-items:center;gap:9px;font-size:11px;padding:6px 9px;background:var(--surface2);border-radius:var(--radius-sm)}
.audit-row .adot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.audit-row.pass .adot{background:var(--teal)}.audit-row.warn .adot{background:var(--amber)}
.audit-row b{font-weight:700}.audit-row small{margin-left:auto;color:var(--faint);font-size:10px}
.mom-gauge{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.mom-ring{position:relative;width:120px;height:120px;flex:0 0 auto}
.mom-ring .mv{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.mom-ring .mv b{font-size:26px;font-family:var(--font-num);color:var(--teal)}
.mom-ring .mv span{font-size:9px;color:var(--muted)}
/* 布局显隐浮层 */
.layout-pop{position:absolute;right:0;top:44px;width:230px;max-height:60vh;overflow:auto;z-index:60;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;
  box-shadow:var(--panel-shadow)}
.layout-pop h4{margin:0 0 8px;font-size:11px;color:var(--muted)}
.layout-row{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:5px;cursor:pointer;font-size:11px}
.layout-row:hover{background:var(--surface2)}
.layout-row input{accent-color:var(--teal);cursor:pointer}
.layout-row.on{color:var(--text)}.layout-row.off{color:var(--faint);text-decoration:line-through}
.tb-wrap{position:relative}
.paused #mods{opacity:.62;filter:saturate(.7);transition:opacity .2s}
:fullscreen main{padding:18px;overflow:auto}:fullscreen .app{grid-template-columns:200px minmax(0,1fr)}
/* ===== 探索层：图表十字光标 / tooltip / 周期切换 / 导出 / 排序 ===== */
.chart-wrap{position:relative}
.tf-group{display:inline-flex;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:2px}
.tf-btn{border:0;background:transparent;color:var(--muted);font-size:10px;font-weight:700;padding:3px 8px;
  border-radius:4px;cursor:pointer;font-family:inherit}
.tf-btn:hover{color:var(--text)}.tf-btn.on{background:var(--teal);color:var(--bg)}
.chart-tip{position:absolute;z-index:30;pointer-events:none;min-width:148px;max-width:230px;
  background:var(--surface);border:1px solid var(--teal);border-radius:var(--radius-sm);padding:8px 10px;
  box-shadow:var(--panel-shadow);font-size:10px;color:var(--muted);line-height:1.65;opacity:0;transition:opacity .1s}
.chart-tip.show{opacity:1}
.chart-tip b{color:var(--text);font-family:var(--font-num)}
.chart-tip .ttl{font-size:9px;color:var(--faint);letter-spacing:.5px;text-transform:uppercase;margin-bottom:3px}
.cross-line{pointer-events:none}
.export-pop{position:absolute;right:0;top:40px;width:210px;z-index:60;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px;box-shadow:var(--panel-shadow)}
.export-pop h4{margin:0 0 7px;font-size:11px;color:var(--muted)}
.export-row{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--text);
  font-size:11px;padding:7px 8px;border-radius:5px;cursor:pointer;font-family:inherit}
.export-row:hover{background:var(--surface2)}
.export-row small{display:block;color:var(--faint);font-size:9px;margin-top:2px}
.data-table th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.data-table th.sortable:hover{color:var(--teal)}
.data-table th .sort-ind{font-size:9px;color:var(--teal);margin-left:3px}
.tb-state .stale{color:var(--amber)}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
/* ===== 主题切换器（深色面板，20 套通用） ===== */
#ts{position:fixed;right:18px;bottom:18px;z-index:9999;font:13px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft Yahei",sans-serif}
#tsBtn{border:1px solid rgba(255,255,255,.22);background:rgba(16,18,26,.9);color:#eef2f8;
  padding:9px 14px;border-radius:999px;font-weight:650;cursor:pointer;box-shadow:0 8px 28px rgba(0,0,0,.45);
  backdrop-filter:blur(8px);display:flex;align-items:center;gap:7px}
#tsBtn:hover{background:rgba(30,34,46,.95)}
#tsPanel{position:absolute;right:0;bottom:48px;width:288px;max-height:min(70vh,560px);overflow:auto;
  background:rgba(14,16,24,.96);color:#e6ebf3;border:1px solid rgba(255,255,255,.16);border-radius:14px;
  padding:12px;box-shadow:0 18px 50px rgba(0,0,0,.6);backdrop-filter:blur(12px)}
.tsHead{display:flex;justify-content:space-between;align-items:baseline;padding:2px 4px 10px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:8px}
.tsHead b{font-size:14px}.tsHead span{font-size:10px;color:#8b96a8}
.tsGroup{font-size:10px;font-weight:750;letter-spacing:1.5px;color:#7fd6c6;margin:10px 4px 4px;text-transform:uppercase}
.tsItem{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:8px;cursor:pointer;color:#cdd5e0}
.tsItem:hover{background:rgba(255,255,255,.07);color:#fff}
.tsItem.on{background:rgba(56,225,255,.14);color:#9ff0ff;box-shadow:inset 0 0 0 1px rgba(56,225,255,.4)}
.tsDot{width:13px;height:13px;border-radius:50%;flex:0 0 auto;border:1px solid rgba(255,255,255,.25)}
.tsItem small{margin-left:auto;font-size:10px;color:#6f7c8e}
.tsFoot{font-size:10px;color:#6f7c8e;padding:9px 4px 2px;border-top:1px solid rgba(255,255,255,.1);margin-top:8px}
@media(max-width:620px){#ts{right:10px;bottom:10px}#tsPanel{width:min(86vw,288px)}}

/* Matrix workspace: stable reading order, aligned columns, progressive detail. */
:root{--muted:#83b38b;--faint:#608968;--radius:8px;--radius-sm:5px}
body{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"PingFang SC",monospace;font-size:13px;background:radial-gradient(ellipse at 80% 0,rgba(57,255,20,.045),transparent 42%),#000600}
.app{grid-template-columns:200px minmax(0,1fr)}
.side{position:sticky;top:0;height:100vh;padding:30px 16px 20px;gap:26px;overflow-y:auto}
.brand{padding:0 7px;gap:11px;justify-content:flex-start}.brand>span{display:block}.brand strong{font-size:20px;letter-spacing:-1px}.brand small{font-size:8px;letter-spacing:1.4px}.brand-dot{display:inline!important;color:var(--teal)}
.matrix-logo{width:33px;height:35px;border:1px solid #39ff1470;display:flex;align-items:center;justify-content:center;background:#39ff1410;color:var(--teal);font-size:24px;font-weight:800;box-shadow:0 0 20px #39ff1409}.matrix-logo span{font-size:16px}
.terminal-label{font-size:9px;letter-spacing:1px;color:var(--faint);padding:0 9px;margin-top:6px}
.nav{gap:6px}.nav a{padding:11px 10px;border-radius:5px;font-size:12px;gap:10px;font-weight:500}.nav a>span{display:inline}.nav a>small{margin-left:auto;color:var(--faint);font-size:9px}.nav a.active{color:var(--teal);background:#39ff1409;box-shadow:inset 2px 0 var(--teal);border:1px solid #39ff141c;padding:10px 9px}
.utility-nav{border-top:1px solid var(--line);padding-top:14px;margin-top:3px}.utility-nav a{font-size:11px;padding-top:7px;padding-bottom:7px}
.side-bottom{display:block;padding:12px 10px;border-radius:5px;background:transparent}.side-bottom .eyebrow{font-size:8px;letter-spacing:1.5px}.side-bottom p{font-size:10px;line-height:1.8}.side-version{border-top:1px dashed var(--line);padding-top:10px;margin-top:12px;font-size:9px;color:var(--faint)}
main{max-width:1720px;padding:28px clamp(20px,2.6vw,42px) 30px}
.top{margin-bottom:22px;align-items:center}.top .eyebrow{font-size:9px;letter-spacing:1.5px}.header-slash{color:var(--faint);padding:0 10px}h1{font-size:28px;letter-spacing:1px;margin:9px 0 6px;font-weight:650}.title-cursor{color:var(--teal);margin-left:4px}.top-sub{font-size:10px}.top-right{display:grid;gap:9px;justify-items:end}.top-right>div{display:flex;gap:8px}.status-pill{font-size:10px;padding:5px 9px}.mode{font-size:10px;padding:5px 9px}.top-right .tiny{font-size:9px}
.toolbar{padding:9px 0 11px;background:transparent;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;gap:7px;margin-bottom:10px}.workspace-path{font-size:10px;color:var(--faint)}.workspace-path b{color:var(--muted);font-weight:500}.tb-icon{padding:5px 9px;font-size:10px;background:transparent}.tb-state{font-size:9px}.tb-sep{height:16px}.data-note{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:9px;color:var(--faint);margin:0 0 25px;flex-wrap:wrap}.data-note>span{display:flex;align-items:center;gap:7px}.demo-badge,.live-badge{font-size:8px;letter-spacing:.6px;padding:1px 5px;border-radius:3px}.demo-badge{color:#c0d780;background:#b1d7440a;border-color:#bdd77535}.live-badge{background:#39ff1409;border-color:#39ff1430}
#mods{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:stretch}
#mods>.panel{grid-column:span 6;min-width:0;margin:0!important;flex:none;border-radius:8px}
#mods>.panel.wide{grid-column:1/-1}
#mods>#mod-account{grid-column:span 7;border-top-color:#39ff1460}
#mods>#mod-risk{grid-column:span 5}
#mods>#mod-market{grid-column:span 8}
#mods>#mod-position{grid-column:span 4}
#mods>#mod-insight{grid-column:span 7}
#mods>#mod-system{grid-column:span 5}
#mods>#mod-allocation{grid-column:span 4}
#mods>#mod-events{grid-column:span 8}
.section-heading{grid-column:1/-1;display:flex;align-items:center;gap:12px;margin:13px 0 0;scroll-margin-top:24px}.section-heading:first-child{margin-top:0}.section-heading>span{color:var(--teal);font-size:10px;padding:3px 5px;background:#39ff140a;border:1px solid #39ff1428}.section-heading h2{font-size:12px;font-weight:600;letter-spacing:.7px}.section-heading>small{font-size:8px;letter-spacing:1.5px;color:var(--faint)}.section-heading i{height:1px;background:var(--line);flex:1;margin-left:4px}
.panel-pad{padding:20px}.panel-heading{margin-bottom:17px;align-items:center}.panel-heading h2,.ins-head h2{font-size:13px;font-weight:600;letter-spacing:.2px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.panel-heading small{font-size:9px;text-align:right}.panel{box-shadow:inset 0 1px 0 #39ff1406}.panel h3{font-size:11px;font-weight:500}
.equity-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.equity-head .eyebrow{font-size:9px;letter-spacing:1.4px;color:var(--muted);text-shadow:none}.big-number{font-size:clamp(30px,3.2vw,44px);letter-spacing:-1.5px;color:var(--teal);text-shadow:0 0 22px #39ff1422;margin-top:11px}.equity-change{text-align:right;flex-shrink:0}.equity-change span,.equity-change small{display:block;font-size:9px;color:var(--muted)}.equity-change b{display:block;font-size:16px;font-weight:550;margin:6px 0 4px}.equity-change small{font-size:8px;color:var(--faint)}
.account-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:20px 0 18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0;gap:12px}.account-metrics .kpi{border:0;padding:0;background:transparent;min-width:0}.account-metrics .kpi span{font-size:9px}.account-metrics .kpi b{font-size:14px;font-weight:500;margin-top:6px}.live-chart{border-bottom:1px solid var(--line);padding-bottom:9px}.chart-caption{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:9px;color:var(--muted)}.chart-caption>span:last-child{font-size:8px;color:var(--faint)}#liveEquitySvg{width:100%;height:90px;display:block;margin-top:9px}.account-details{display:grid;grid-template-columns:1fr 1fr;column-gap:24px;padding-top:6px}.account-details .stat-row{font-size:10px;padding:7px 0;border:0}.account-details .stat-row b{font-size:10px;font-weight:500}
.stat-row{font-size:10px;padding:8px 0}.stat-row b{font-size:11px;font-weight:500;text-align:right;overflow-wrap:anywhere}.stat-row span{flex-shrink:0}.gauge{gap:20px}.gauge-ring{width:96px;height:96px;flex:0 0 96px}.gauge-ring .val{font-size:22px}.gauge-lbl{text-align:left;font-size:9px;margin:8px 0 14px;color:var(--faint)}#riskFlags{display:grid;grid-template-columns:1fr 1fr;gap:7px}.risk-flag{display:flex;align-items:center;gap:6px;margin:0;padding:7px 8px;border:1px solid var(--line);background:var(--surface2);font-size:9px;border-radius:4px}.risk-flag b{font-size:9px;font-weight:500;margin-left:auto;overflow-wrap:anywhere}.risk-flag .dot{width:5px;height:5px;flex-shrink:0}.risk-flag span{white-space:nowrap}.risk-flag:last-child{grid-column:1/-1}
.detail-block{margin-top:15px;padding-top:12px;border-top:1px solid var(--line)}.detail-block summary{cursor:pointer;font-size:10px;color:var(--muted);padding:3px 0;line-height:1.7}.detail-block summary:hover{color:var(--teal)}.detail-block summary>span:not(.demo-badge){color:var(--faint);font-size:9px;margin-left:16px}.detail-block[open] summary{margin-bottom:12px}.stress-tbl{margin-top:10px}.stress-tbl .note{font-size:8px;margin:3px 0}.stress-tbl td{font-size:9px;padding:7px 4px}.stress-tbl .num{white-space:nowrap;font-size:9px}
#mod-market .panel-heading{align-items:flex-start;flex-wrap:wrap;gap:7px}#mktSub{font-size:9px;line-height:1.6;max-width:100%;text-align:left}#tfHint{display:none}.candle-wrap{height:226px;margin-top:10px;margin-bottom:19px}.market-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;border-top:1px solid var(--line);padding-top:14px}.market-grid h3{font-size:10px}.market-grid .stat-row{font-size:9px;padding:7px 0}.market-grid .stat-row b{font-size:10px}.depth-row{font-size:8px;height:15px;gap:4px}.depth-row .px{width:43px}.depth-row .qty{width:35px}.ob-mid{font-size:8px}.market-grid .sparkline{height:32px}.tf-btn{font-size:10px;padding:4px 10px}
#mod-position .panel-heading{flex-wrap:wrap;gap:8px}#mod-position .eyebrow{font-size:9px;color:var(--muted);text-shadow:none}#markPrice{font-size:32px!important;margin:9px 0 20px}#posList .stat-row{padding:8px 0}#posList .stat-row b{font-size:10px}.explain{margin-top:17px!important;background:#39ff1407;border:1px solid #39ff141c;border-left:2px solid #39ff1460;font-size:10px;line-height:1.9;padding:10px 11px}.explain b{font-weight:500;color:var(--teal)}
#mod-performance .chart-wrap{height:190px;margin-top:18px}.eq-svg{height:190px}.pf-ret{gap:10px;margin-top:16px}.pf-ret div{padding:11px 13px;background:#39ff1404;border-radius:5px}.pf-ret b{font-size:17px;font-weight:500;margin-top:4px;display:block}.sub-grid{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:24px;margin-top:22px}.sub-grid>div+div{border-left:1px solid var(--line);padding-left:22px}.kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpi{padding:8px 9px;border:1px solid var(--line);border-radius:4px;background:#39ff1404;min-width:0}.kpi span{font-size:9px}.kpi b{font-size:13px;font-weight:500;margin-top:4px}.deep-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}.deep-grid h3{font-size:10px;line-height:1.6;flex-wrap:wrap}.heat-cell{font-size:8px;border-radius:1px}.analytics{margin-top:22px}
.activity-tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin-bottom:18px}.activity-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:11px;padding:0 0 12px;display:flex;align-items:center;gap:7px;white-space:nowrap}.activity-tabs button[aria-selected=true]{color:var(--teal);border-bottom-color:var(--teal)}.activity-tabs button:hover{color:var(--text)}.activity-pane h3{font-size:10px;color:var(--muted);display:flex;gap:8px;align-items:center;margin:0 0 10px}.data-table th,.data-table td{font-size:11px;padding:11px 13px}.data-table .empty{padding:35px 12px;font-size:11px}.table-scroll{max-width:100%}.data-table{min-width:500px}
#mod-insight .ins-head{justify-content:space-between;gap:8px;margin-bottom:14px}.ins-sub{font-size:8px!important}.ins-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.radar-svg{height:190px;max-width:230px}.ins-verdict{font-size:10px;line-height:1.8;padding:7px 10px}.ins-kpi{padding:8px 10px}.ins-kpi b{font-size:16px;font-weight:500}.ins-bullets div{font-size:9px;line-height:1.8}.ins-bullets{gap:5px}.ins-cols .stat-row{padding:5px 0;font-size:9px}.ins-cols .stat-row b{font-size:10px}#mod-system .sparkline{height:64px;margin:12px 0 19px}#sysKpi{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.donut-wrap{flex-direction:column;align-items:center;gap:18px}.donut-legend{width:100%;gap:10px}.legend-row{font-size:10px}.timeline{max-height:260px;overflow-y:auto;scrollbar-color:var(--line) transparent;padding-right:8px}.tl-row{font-size:10px;grid-template-columns:76px 8px 1fr;gap:10px}.tl-row .t{font-size:9px}.tl-row .msg{line-height:1.7;overflow-wrap:anywhere}.ins-head{scroll-margin-top:24px}
.panel[id],header[id]{scroll-margin-top:24px}.footer{font-size:9px;margin-top:25px;padding-top:16px;border-top:1px solid var(--line)}.footer-dot{color:var(--teal);font-size:6px;margin:0 8px}.footer a:hover{color:var(--teal)}.skip-link{position:fixed;top:-100px;left:210px;padding:10px;background:var(--teal);color:var(--bg);z-index:100}.skip-link:focus{top:10px}.paused #mods{opacity:.78}
:fullscreen .app{grid-template-columns:200px minmax(0,1fr)}
@media(min-width:1800px){main{padding-top:36px}.panel-pad{padding:24px}.candle-wrap{height:260px}}
@media(max-width:1200px){.app{grid-template-columns:68px minmax(0,1fr)}.side{padding:26px 9px}.brand{justify-content:center;padding:0}.brand>span,.nav a>span,.nav a>small,.terminal-label,.side-bottom,.utility-nav{display:none}.nav a,.nav a.active{justify-content:center;padding:11px 9px}.nav a.active{padding:10px 8px}.side{gap:32px}.matrix-logo{flex-shrink:0}.deep-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skip-link{left:80px}}
@media(max-width:1000px){main{padding:24px 20px}.account-metrics{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:14px}.equity-change b{font-size:13px}.account-details{column-gap:15px}#mods>#mod-market{grid-column:span 7}#mods>#mod-position{grid-column:span 5}.market-grid{grid-template-columns:1fr 1fr}.market-grid>div:first-child{grid-column:1/-1}.market-grid>div:first-child .stat-list{grid-template-columns:1fr 1fr;column-gap:16px}.sub-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sub-grid>div:first-child{grid-column:1/-1}.sub-grid>div+div{border:0;padding-left:0}.sub-grid>div:first-child .kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.workspace-path{display:none}#clock{display:none}#riskFlags{grid-template-columns:1fr}.risk-flag:last-child{grid-column:auto}.gauge{gap:12px}.gauge-ring{width:78px;height:78px;flex-basis:78px}}
@media(max-width:760px){#mods{gap:13px}#mods>.panel,#mods>#mod-account,#mods>#mod-risk,#mods>#mod-market,#mods>#mod-position,#mods>#mod-insight,#mods>#mod-system,#mods>#mod-allocation,#mods>#mod-events{grid-column:1/-1}.account-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.gauge-ring{width:92px;height:92px;flex-basis:92px}#riskFlags{grid-template-columns:1fr 1fr}.risk-flag:last-child{grid-column:1/-1}.section-heading{margin-top:12px}.section-heading>small{font-size:7px;letter-spacing:1px}.top{margin-bottom:20px}.market-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.market-grid>div:first-child{grid-column:auto}.market-grid>div:first-child .stat-list{display:grid;grid-template-columns:1fr}.donut-wrap{flex-direction:row;gap:28px}.donut-legend{width:auto}.data-note{line-height:1.8;gap:6px}.data-note>span{flex-wrap:wrap}.top-right .mode{display:inline-flex}}
@media(max-width:620px){.app{display:block}.side{height:58px;position:sticky;top:0;z-index:70;overflow:visible;padding:10px 14px;display:flex;flex-direction:row;gap:12px;background:#020c03f2!important;backdrop-filter:blur(12px)}.side .brand{display:flex}.matrix-logo{width:28px;height:30px;font-size:21px}.side>.nav{display:flex;gap:2px;margin-left:auto}.side>.nav a{padding:8px;border:0;box-shadow:none}.side>.nav a.active{padding:8px;background:#39ff1412;color:var(--teal)}.nav svg{width:16px;height:16px}.nav a:last-child{display:none}.side nav.utility-nav{display:none}.side-bottom{display:none}.top{gap:8px}.top-right{gap:7px;max-width:146px}.top-right>div{flex-direction:column;align-items:end;gap:6px}.top-right .tiny{display:block;font-size:8px}.top-right .mode{padding:3px 7px;font-size:8px}h1{font-size:25px}.top .eyebrow{font-size:8px;letter-spacing:.7px}.header-slash{padding:0 4px}.top-sub{font-size:9px;max-width:210px}main{padding:22px 14px 28px}.toolbar{gap:6px}.tb-icon{padding:6px 8px;font-size:10px}.toolbar>.tb-state{display:none}.toolbar>.tb-spacer{display:none}.toolbar>.tb-sep{display:none}#fsBtn{margin-left:auto}.data-note{font-size:8px;margin-bottom:20px}.data-note .demo-badge,.data-note .live-badge{font-size:7px}.panel-pad{padding:17px}.panel-heading h2,.ins-head h2{font-size:12px}.account-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px}.account-metrics .kpi b{font-size:15px}.big-number{font-size:32px}.equity-change b{font-size:12px}.equity-change small{font-size:7px}.chart-caption{font-size:8px}.chart-caption>span:last-child{font-size:7px}.account-details{column-gap:16px}.account-details .stat-row{font-size:9px;gap:7px}.account-details .stat-row b{font-size:9px}.section-heading>small{display:none}.section-heading{gap:10px}.market-grid{grid-template-columns:1fr 1fr;gap:16px}.market-grid>div:first-child{grid-column:1/-1}.market-grid>div:first-child .stat-list{grid-template-columns:1fr 1fr;column-gap:18px}.candle-wrap{height:214px}.pf-ret{gap:7px}.pf-ret div{min-width:40%;padding:9px 11px}.pf-ret b{font-size:16px}.sub-grid{gap:18px}.sub-grid>div:first-child .kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi{padding:8px}.kpi b{font-size:12px}.kpi span{font-size:8px}.deep-grid{grid-template-columns:1fr;gap:25px}.deep-grid>div{border-bottom:1px solid var(--line);padding-bottom:15px}.detail-block summary>span:not(.demo-badge){display:block;margin:4px 0}.heat-grid{grid-template-columns:repeat(14,minmax(0,1fr))}.activity-tabs{gap:14px;overflow-x:auto}.activity-tabs button{font-size:10px;gap:5px}.activity-tabs .demo-badge,.activity-tabs .live-badge{font-size:7px}.ins-cols{gap:14px}.radar-svg{height:166px}.ins-kpi b{font-size:14px}.ins-cols .stat-row{font-size:8px}.ins-cols .stat-row b{font-size:8px}.ins-head .ins-sub{font-size:8px}.tl-row{grid-template-columns:68px 7px 1fr;gap:8px}.footer{font-size:8px}.skip-link{left:10px}.panel[id],header[id],.section-heading[id]{scroll-margin-top:74px}.layout-pop{position:fixed;top:160px;right:14px;max-width:calc(100vw - 28px)}.export-pop{width:205px}.tb-btn{padding:4px 8px;font-size:10px}.panel-heading .tb-group{flex-shrink:0}.stress-tbl .num{font-size:8px}}
@media print{.side,.toolbar,.data-note,.activity-tabs,.skip-link{display:none!important}.app{display:block}main{max-width:none;padding:10px}#mods>.panel{break-inside:avoid}details>*{display:block!important}.activity-pane[hidden]{display:block!important}.panel{border-color:#333}.top{break-after:avoid}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}.section-heading{break-after:avoid}}
/* Observed data provenance and unavailable-source states. */
.source-badge,.record-badge{display:inline-flex;align-items:center;border:1px solid #39ff1430;border-radius:3px;padding:1px 5px;font-size:8px;font-weight:600;letter-spacing:.3px;color:var(--muted);background:#39ff1407;white-space:nowrap;vertical-align:middle}
.record-badge{color:var(--teal)}.data-note{align-items:start;line-height:1.8}.data-note #recordNote{display:block;flex:1;min-width:230px;color:var(--muted)}.data-note>.source-badge{display:inline-flex;flex:0 0 auto}.perf-requirement{margin-top:13px;line-height:1.9;color:var(--muted)}.source-error{padding:8px 10px;background:#ff5c4d0a;border:1px solid #ff5c4d44;color:var(--red);font-size:10px;line-height:1.7;overflow-wrap:anywhere;margin:10px 0}.chart-empty{pointer-events:none}#systemCoverage{line-height:1.7;margin-bottom:12px;color:var(--muted)}.donut-legend b{font-size:10px}.data-table td{overflow-wrap:anywhere}#insBody h3{color:var(--muted);font-size:11px;margin:10px 0}
@media(max-width:620px){.data-note #recordNote{font-size:9px}.data-note>.source-badge{font-size:8px;white-space:normal}.source-badge,.record-badge{font-size:7px}.perf-requirement{font-size:9px}.ins-cols{grid-template-columns:1fr}.data-note{gap:8px}.activity-tabs button{white-space:normal}.donut-legend b{font-size:9px}}

/* Each navigation entry corresponds to one numbered content group. */
@media(max-width:620px){.side>.nav[aria-label="看板模块"] a:last-child{display:flex}}
