/* IndexFlow 终端界面：深色为主（暖灰底）、浅色可切；告警列表是主角，右侧是可折叠面板。
   原则：数字等宽右对齐、颜色只表达方向/盈亏/警告、网格线退后、行高 24px。所有 id / class 与 index.js、settings.js 对应。 */
:root {
  --bg:#1B1A18; --paper:#211F1C; --raise:#282623; --line:#2E2C28; --line-2:#3A3732; --ink:#E9E5DB; --ink-2:#C6C1B5; --muted:#8C877B; --ink-soft:#2C2A26;
  --accent:#D98A68; --accent-soft:#3A2A22; --up:#6FBF8F; --up-soft:#1F3328; --down:#E07A6B; --down-soft:#3A2420; --warn:#D9B65C; --warn-soft:#3A3120;
  --serif:"Iowan Old Style","Palatino Linotype","Book Antiqua",Georgia,"Songti SC","Noto Serif CJK SC",serif;
  --sans:-apple-system,"SF Pro Text","PingFang SC","Helvetica Neue",Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --side-w:380px;
  color-scheme:dark;
}
:root[data-theme="light"] {
  --bg:#F7F5EF; --paper:#FFFDF8; --raise:#F1EEE6; --line:#E7E2D6; --line-2:#D8D2C3; --ink:#1F1E1B; --ink-2:#4A4741; --muted:#8A857B; --ink-soft:#EEEAE0;
  --accent:#C96B4A; --accent-soft:#F3DDD2; --up:#2E7D55; --up-soft:#DDEBE1; --down:#B4483B; --down-soft:#F1DAD6; --warn:#8A5F0A; --warn-soft:#F5E7C6;
  color-scheme:light;
}
* { box-sizing:border-box; margin:0; }
html, body { height:100%; }
body { background:var(--bg); color:var(--ink); font:12.5px/1.45 var(--sans); display:flex; flex-direction:column; -webkit-font-smoothing:antialiased; overflow:hidden; }
.muted { color:var(--muted); } .spacer { flex:1; }
.up { color:var(--up); } .down { color:var(--down); }
.num, td.num { font-family:var(--mono); font-variant-numeric:tabular-nums; }
.hidden { display:none !important; }

/* ---- 控件 ---- */
button, select, input, textarea { font:inherit; color:var(--ink); background:var(--paper); border:1px solid var(--line-2); border-radius:6px; padding:4px 9px; font-size:12px; }
button { cursor:pointer; transition:background .12s, border-color .12s; }
button:hover { border-color:var(--ink-2); }
button.sm { padding:2px 7px; font-size:11.5px; }
button.primary { background:var(--ink); color:var(--bg); border-color:var(--ink); }
button.primary:hover { opacity:.9; }
button.primary:disabled { opacity:.35; cursor:default; }
button.danger { color:var(--down); border-color:var(--down-soft); background:var(--down-soft); }
button.danger:hover { border-color:var(--down); }
button.ghost { background:transparent; border-color:transparent; color:var(--muted); }
button.ghost:hover { color:var(--ink); background:var(--ink-soft); border-color:transparent; }
input[type=number] { width:72px; font-family:var(--mono); font-size:12px; }
select { padding-right:20px; }

/* ---- 顶栏 ---- */
#bar { display:flex; align-items:center; gap:12px; padding:7px 14px; border-bottom:1px solid var(--line); background:var(--paper); flex:none; white-space:nowrap; overflow:hidden; }
#bar > * { flex:none; }
#bar .spacer { flex:1; min-width:8px; }
@media (max-width: 1500px) { #bar .brand .sub { display:none; } }
@media (max-width: 1250px) { #fMeta { display:none; } }
#bar .brand { display:flex; align-items:baseline; gap:8px; }
#bar .brand b { font:600 18px/1 var(--serif); letter-spacing:-.01em; }
#bar .brand .sub { color:var(--muted); font-size:11.5px; }
.pill { display:inline-flex; align-items:center; gap:6px; padding:2px 9px; border-radius:999px; font-size:11.5px; background:var(--ink-soft); color:var(--ink-2); }
.pill::before { content:""; width:6px; height:6px; border-radius:50%; background:var(--muted); }
.pill.on { background:var(--up-soft); color:var(--up); } .pill.on::before { background:var(--up); box-shadow:0 0 0 3px color-mix(in srgb, var(--up) 25%, transparent); }
.pill.off { background:var(--down-soft); color:var(--down); } .pill.off::before { background:var(--down); }
.pill.sim { background:var(--ink-soft); color:var(--muted); } .pill.sim::before { background:var(--muted); }
.pill.real { background:var(--down); color:#fff; font-weight:700; } .pill.real::before { background:#fff; }
.tape { display:flex; gap:4px; font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:12px; }
.tape .t { display:inline-flex; align-items:baseline; gap:6px; padding:3px 9px; border-radius:6px; background:var(--ink-soft); white-space:nowrap; }
.tape .t b { font-family:var(--sans); font-weight:600; }
.tape .t .sc { color:var(--muted); }
.tape .t.long { box-shadow:inset 3px 0 0 var(--up); } .tape .t.short { box-shadow:inset 3px 0 0 var(--down); }
#fMeta { font-size:11.5px; }
.clock { font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:12px; color:var(--ink-2); }
#fSettings.on { background:var(--ink); color:var(--bg); border-color:var(--ink); }

/* ---- 工作区 ---- */
#work { flex:1; min-height:0; display:grid; grid-template-columns:1fr var(--side-w); grid-template-rows:minmax(0, 1fr); }
#feed { min-width:0; min-height:0; display:flex; flex-direction:column; border-right:1px solid var(--line); }
#side { min-width:0; min-height:0; overflow:auto; background:var(--paper); }

/* ---- 筛选 ---- */
#chips { display:flex; align-items:center; gap:12px; padding:6px 12px; flex-wrap:wrap; border-bottom:1px solid var(--line); flex:none; }
#chips label { display:inline-flex; align-items:center; gap:5px; font-size:11.5px; color:var(--muted); }
.grp { display:inline-flex; background:var(--ink-soft); border-radius:6px; padding:2px; }
.grp button { border:0; background:transparent; border-radius:4px; padding:2px 9px; color:var(--muted); font-size:11.5px; }
.grp button:hover { color:var(--ink); }
.grp button.on { background:var(--paper); color:var(--ink); box-shadow:0 1px 2px rgba(0,0,0,.25); }
.grp button.quiet { opacity:.5; }
.grp button .n { margin-left:5px; font-size:10px; padding:0 4px; border-radius:4px; background:var(--accent-soft); color:var(--accent); font-family:var(--mono); }
.chk { display:inline-flex; align-items:center; gap:4px; font-size:11.5px; color:var(--muted); cursor:pointer; }
.chk input { accent-color:var(--accent); }

/* ---- 告警列表 ---- */
#tblWrap { flex:1; min-height:0; overflow:auto; }
table#tbl { width:100%; border-collapse:collapse; }
#tbl th, #tbl td { padding:0 8px; height:24px; text-align:right; border-bottom:1px solid var(--line); white-space:nowrap; font-size:12px; font-family:var(--mono); font-variant-numeric:tabular-nums; }
#tbl th:first-child, #tbl td:first-child, #tbl th:nth-child(2), #tbl td:nth-child(2), #tbl th:nth-child(3), #tbl td:nth-child(3), #tbl th:nth-child(4), #tbl td:nth-child(4),
#tbl th:nth-child(8), #tbl td:nth-child(8), #tbl th:nth-child(9), #tbl td:nth-child(9) { text-align:left; }
#tbl td:nth-child(2), #tbl td:nth-child(3), #tbl td:nth-child(4), #tbl td:nth-child(8), #tbl td:nth-child(9), #tbl th { font-family:var(--sans); }
#tbl th { color:var(--muted); font-weight:500; font-size:11px; position:sticky; top:0; background:var(--bg); z-index:1; box-shadow:inset 0 -1px 0 var(--line-2); }
th.sort { cursor:pointer; } th.sort:hover { color:var(--ink); } th.sort.active { color:var(--ink); }
th.sort.active::after { content:" ↓"; color:var(--accent); }
#tbl td:first-child { color:var(--ink-2); }
#tbl td:nth-child(2) { font-weight:600; }
#tbl td:nth-child(3) .muted { font-size:11px; }
tbody tr:hover { background:var(--raise); }
tbody tr.new { animation:flash 1.6s ease-out; }
@keyframes flash { from { background:var(--accent-soft); } to { background:transparent; } }
td.prem { position:relative; }
td.prem .bar { position:absolute; left:4px; right:4px; bottom:2px; height:2px; background:var(--line-2); border-radius:1px; overflow:hidden; }
td.prem .bar i { display:block; height:100%; background:var(--accent); opacity:.85; }
.tag { display:inline-block; font-size:10.5px; padding:0 6px; border-radius:3px; margin-right:3px; vertical-align:1px; font-family:var(--sans); line-height:16px; }
.tag.print { background:var(--up-soft); color:var(--up); } .tag.sweep { background:#22304A; color:#9DBBE6; } .tag.drip { background:#3A2E4A; color:#C9B3EA; } .tag.burst { background:var(--warn-soft); color:var(--warn); }
.tag.leg { background:#2E2540; color:#C3B2E6; }
/* 对冲标签：背景浓度随对冲分（--h ∈ (0,1]）走，达到阈值加粗；分低时几乎透明只剩字 */
.tag.hedge { --h:0.3; background:color-mix(in srgb, var(--down) calc(var(--h) * 55%), var(--ink-soft)); color:color-mix(in srgb, var(--down) calc(40% + var(--h) * 60%), var(--muted)); font-variant-numeric:tabular-nums; }
.tag.hedge.hi { font-weight:700; color:#fff; background:color-mix(in srgb, var(--down) calc(45% + var(--h) * 55%), var(--ink-soft)); }
:root[data-theme="light"] .tag.hedge.hi { color:#fff; }
.tag.tied { background:#2F3A2A; color:#B9D4A6; }
.tag.oi.open { background:var(--up-soft); color:var(--up); } .tag.oi.close { background:var(--down-soft); color:var(--down); } .tag.oi.mixed { background:var(--warn-soft); color:var(--warn); }
.tag.flip { background:var(--accent-soft); color:var(--accent); font-weight:600; }
#pScan table.mini td:first-child { font-family:var(--sans); font-weight:600; }
button.pill.sw { cursor:pointer; border:1px solid transparent; font:inherit; font-size:12px; }
.switches { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
/* 账户卡片：头行 = 环境标签 + 账户号 + 今日盈亏（大字）；第二行开关；第三行风险与窗口；持仓表只在有行时出现 */
.acct { border:1px solid var(--line); border-radius:8px; padding:9px 11px 8px; margin-top:8px; background:var(--bg); }
.acct.real { border-color:color-mix(in srgb, var(--down) 55%, var(--line)); box-shadow:inset 3px 0 0 var(--down); }
.acct.real.armed { background:color-mix(in srgb, var(--down) 8%, var(--bg)); }
.acct .ahd { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.acct .ahd b { font-family:var(--mono); font-size:12px; letter-spacing:.02em; }
.acct .ahd .pnl { font:500 18px/1 var(--serif); font-variant-numeric:tabular-nums; margin-left:auto; }
.acct .ahd .pnl small { font:11px var(--sans); color:var(--muted); margin-left:4px; }
.acct .actions { display:flex; gap:4px; }
.acct .switches { margin-bottom:5px; }
.acct .sub { font-size:11px; }
.acct .k { display:flex; align-items:center; gap:6px; }
.acct .k .n { font-family:var(--mono); color:var(--ink-2); }
.acct .k button { margin-left:auto; }
.acct .none { color:var(--muted); font-size:11px; margin-top:6px; }
.acct table.mini { margin-top:2px; }
.acct .broker[hidden] { display:none; }
button.pill.sw:hover { border-color:var(--ink-2); }
.brow .nums.stock { margin-top:3px; padding-top:3px; border-top:1px dashed var(--line); }
#tape .t .sc.st { opacity:.75; font-size:10.5px; }
:root[data-theme="light"] .tag.sweep { background:#DCE5F2; color:#2F5A8F; } :root[data-theme="light"] .tag.leg { background:#E7DFF2; color:#5B4489; }
tr.leg td { color:var(--muted); }
tr.big td:nth-child(5), tr.big td:nth-child(7) { font-weight:700; color:var(--ink); }
.empty { color:var(--muted); padding:40px; text-align:center; font:italic 14px var(--serif); }

/* ---- 右侧面板 ---- */
.panel { border-bottom:1px solid var(--line); }
.panel .ph { display:flex; align-items:center; gap:8px; padding:8px 14px; position:sticky; top:0; background:var(--paper); z-index:1; }
.panel .ph b { font:600 13px/1 var(--serif); white-space:nowrap; }
.panel .ph .muted { font-size:11px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.panel .pb { padding:0 14px 12px; }
.panel .k { color:var(--muted); font-size:11px; margin:10px 0 3px; }
.panel .sub { font-size:11.5px; color:var(--ink-2); margin-top:2px; }
.ratio { display:flex; height:4px; border-radius:2px; overflow:hidden; background:var(--ink-soft); margin:5px 0 3px; }
.ratio .bull { background:var(--up); } .ratio .bear { background:var(--down); }
table.mini { border-collapse:collapse; font-variant-numeric:tabular-nums; width:100%; }
table.mini th, table.mini td { padding:2px 8px 2px 0; font-size:11.5px; border-bottom:1px solid var(--line); text-align:right; white-space:nowrap; font-family:var(--mono); }
table.mini th { color:var(--muted); font-weight:500; font-size:10.5px; font-family:var(--sans); }
table.mini th:first-child, table.mini td:first-child, table.mini td:last-child, table.mini th:last-child { text-align:left; font-family:var(--sans); }
table.mini td.muted { border-bottom:0; }
.events { font-size:11px; color:var(--muted); max-height:180px; overflow:auto; font-family:var(--mono); line-height:1.55; }
.events .error { color:var(--down); } .events .warn { color:var(--warn); }

/* 偏向行：标的 | 当日 | 滚动占比 + 方向 | 走势 | 数字 */
.brow { display:grid; grid-template-columns:44px minmax(0, 1fr); gap:4px 10px; padding:8px 0; border-bottom:1px solid var(--line); align-items:start; }
.brow:last-child { border-bottom:0; }
.brow .u { font:600 14px/1.2 var(--serif); padding-top:2px; }
.brow .u small { display:block; font:11px var(--mono); color:var(--muted); }
.brow .top { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; font-size:11.5px; }
.brow .top .sc { font-family:var(--mono); font-size:14px; font-weight:600; }
.brow .top .lbl { color:var(--muted); }
.brow svg { display:block; width:100%; height:44px; margin-top:4px; }
.brow .nums { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:2px 10px; font-size:10.5px; color:var(--muted); margin-top:4px; white-space:nowrap; }
.brow .nums > span { min-width:0; overflow:hidden; text-overflow:ellipsis; }
.brow .nums b { display:block; font-family:var(--mono); font-weight:500; color:var(--ink-2); font-size:11.5px; }
.flips { font-size:11px; color:var(--muted); margin-top:6px; }

/* ---- 设置抽屉 ---- */
#settings[hidden] { display:none; }
#settings { position:fixed; top:0; right:0; bottom:0; width:600px; max-width:100vw; background:var(--paper); border-left:1px solid var(--line);
            display:flex; flex-direction:column; z-index:20; box-shadow:-16px 0 40px rgba(0,0,0,.35); }
#settings .hd { display:flex; align-items:center; gap:12px; padding:14px 20px 10px; border-bottom:1px solid var(--line); font-size:11.5px; color:var(--muted); }
#settings .hd b { font:600 16px/1 var(--serif); color:var(--ink); }
#stBody { flex:1; overflow:auto; padding:4px 20px 14px; }
#stBody h3 { font:600 13px/1.2 var(--serif); color:var(--ink); margin:18px 0 6px; padding-bottom:5px; border-bottom:1px solid var(--line); }
#stBody .row { display:grid; grid-template-columns:1fr 210px; align-items:center; gap:10px; padding:4px 8px; border-radius:6px; margin:0 -8px; }
#stBody .row:hover { background:var(--bg); }
#stBody .row.dirty { background:var(--warn-soft); }
#stBody .row.dirty .lbl { color:var(--warn); }
#stBody .lbl { display:flex; flex-direction:column; font-size:12px; }
#stBody .lbl small { color:var(--muted); font-size:10.5px; font-family:var(--mono); }
#stBody input[type=number], #stBody input[type=text], #stBody select, #stBody textarea { width:100%; font-family:var(--mono); font-size:12px; }
#stBody textarea { resize:vertical; }
#stBody input[type=checkbox] { justify-self:start; width:auto; accent-color:var(--accent); }
#stBody .bad { border-color:var(--down); }
#settings .ft { display:flex; align-items:center; gap:10px; padding:10px 20px 16px; border-top:1px solid var(--line); }
#settings .ft .msg { flex:1; font-size:11.5px; color:var(--muted); }
#settings .ft .msg.ok { color:var(--up); } #settings .ft .msg.err { color:var(--down); }

@media (max-width: 1100px) { #work { grid-template-columns:1fr; grid-template-rows:minmax(0, 1fr) minmax(0, 45vh); } #side { border-top:1px solid var(--line); } }

/* ---- 告警详情条：点一行展开在列表下方，Esc / 关闭收起 ---- */
#detail[hidden] { display:none; }
#detail { flex:none; max-height:34%; overflow:auto; border-top:1px solid var(--line-2); background:var(--paper); padding:8px 14px 10px; }
#detail .dh { display:flex; align-items:baseline; gap:10px; margin-bottom:6px; }
#detail .dh b { font:600 15px/1.2 var(--serif); }
#detail .dh .muted { font-size:11.5px; }
#detail .kv { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:4px 14px; }
#detail .kv > div { min-width:0; font-size:11.5px; color:var(--muted); border-bottom:1px solid var(--line); padding:3px 0; }
#detail .kv > div b { display:block; font:500 12.5px var(--mono); font-variant-numeric:tabular-nums; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#detail .kv > div.wide { grid-column:1 / -1; }
#detail .kv > div.wide b { white-space:normal; font-family:var(--sans); }
#detail .tag { vertical-align:0; }
tbody tr.sel td { background:var(--accent-soft); }
tbody tr { cursor:pointer; }

/* ---- 底部状态栏 ---- */
#status { flex:none; display:flex; align-items:center; gap:18px; padding:3px 14px; border-top:1px solid var(--line); background:var(--paper); font-size:11px; color:var(--ink-2); white-space:nowrap; overflow:hidden; font-family:var(--mono); font-variant-numeric:tabular-nums; }
#status .st { display:inline-flex; align-items:center; gap:6px; flex:none; }
#status .dot { width:6px; height:6px; border-radius:50%; background:var(--muted); }
#status .st.on .dot { background:var(--up); box-shadow:0 0 0 3px color-mix(in srgb, var(--up) 22%, transparent); }
#status .st.off .dot { background:var(--down); }
#status .st.paused .dot { background:var(--warn); }
#status .spacer { flex:1; }
#status #stErr[hidden] { display:none; }

/* ---- 右栏拖宽 ---- */
#side { position:relative; }
#sideHandle { position:absolute; left:0; top:0; bottom:0; width:6px; cursor:col-resize; z-index:2; }
#sideHandle:hover, body.dragging #sideHandle { background:color-mix(in srgb, var(--accent) 35%, transparent); }
body.dragging { cursor:col-resize; user-select:none; }
@media (max-width: 1100px) { #sideHandle { display:none; } }

/* 顶栏账户标记：关 = 灰底；开 = 实心底（模拟盘绿、实盘红）；未解锁 = 黄底 */
.accs { display:inline-flex; gap:4px; }
.accs .pill b { font-weight:600; }
.accs .pill.idle { background:var(--ink-soft); color:var(--muted); } .accs .pill.idle::before { background:var(--muted); }
.accs .pill.idle b { font-weight:500; }
.accs .pill.sim.armed { background:var(--up); color:#fff; } .accs .pill.sim.armed::before { background:#fff; }
.accs .pill.real.armed { background:var(--down); color:#fff; } .accs .pill.real.armed::before { background:#fff; }
.accs .pill.real.idle { color:var(--down); }

/* 账户卡片：资金风控行（本金 / 每笔风险 / 今日 / 敞口） */
.acct .risk { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)) auto; gap:2px 10px; align-items:end; margin:2px 0 4px; padding:5px 0; border-top:1px dashed var(--line); border-bottom:1px dashed var(--line); font-size:10.5px; color:var(--muted); }
.acct .risk > span { display:flex; flex-direction:column; min-width:0; }
.acct .risk b { font:500 13px/1.2 var(--mono); font-variant-numeric:tabular-nums; color:var(--ink); white-space:nowrap; }
.acct .risk small { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.accs .pill.locked { background:var(--warn-soft) !important; color:var(--warn) !important; } .accs .pill.locked::before { background:var(--warn) !important; }
.acct .ahd .pill.on, .acct .ahd .pill.off { font-size:10.5px; padding:1px 7px; }

/* ---- 右栏标签页（界面第四版：一次只看一个面板） ---- */
#side { display:flex; flex-direction:column; overflow:hidden; }
#rtabs { flex:none; display:flex; gap:2px; padding:6px 10px 0; border-bottom:1px solid var(--line); }
#rtabs button { border:0; border-bottom:2px solid transparent; border-radius:6px 6px 0 0; background:transparent; color:var(--muted); padding:6px 12px; font-size:12.5px; display:inline-flex; align-items:center; gap:6px; }
#rtabs button:hover { color:var(--ink); background:var(--ink-soft); }
#rtabs button.on { color:var(--ink); border-bottom-color:var(--accent); font-weight:600; }
#rtabs .badge { font:600 10px/16px var(--mono); min-width:16px; padding:0 5px; border-radius:8px; background:var(--ink-soft); color:var(--ink-2); text-align:center; font-style:normal; }
#rtabs .badge.err { background:var(--down-soft); color:var(--down); }
#rtabs .badge[hidden] { display:none; }
.rtab { display:none; flex:1; min-height:0; overflow:auto; }
.rtab.on { display:block; }
#pEvents .events { max-height:none; }

/* ---- 今日汇总：贴在告警表上方的一行数字条 ---- */
#stats { flex:none; display:flex; gap:26px; padding:6px 14px; border-bottom:1px solid var(--line); background:var(--paper); align-items:baseline; overflow-x:auto; white-space:nowrap; }
#stats .st { display:inline-flex; align-items:baseline; gap:7px; }
#stats em { font:500 18px/1 var(--serif); font-style:normal; font-variant-numeric:tabular-nums; }
#stats label { font-size:11px; color:var(--muted); }
#stats small { font-size:10.5px; color:var(--muted); font-family:var(--mono); }
#stats .ratio { display:inline-flex; width:56px; height:4px; align-self:center; margin:0; }
.acct .ahd { flex-wrap:wrap; row-gap:4px; }
.acct .ahd b { font-size:11px; letter-spacing:0; }
.acct .ahd .pnl { flex:none; }

/* ---- 底栏日志窗（界面第四版：事件从右栏挪到底部，像 IDE 的输出窗） ---- */
:root { --log-h:180px; }
#logPane[hidden] { display:none; }
#logPane { flex:none; height:var(--log-h); display:flex; flex-direction:column; position:relative; border-top:1px solid var(--line-2); background:var(--paper); }
#logHandle { position:absolute; left:0; right:0; top:-3px; height:6px; cursor:row-resize; z-index:2; }
#logHandle:hover, body.dragging-v #logHandle { background:color-mix(in srgb, var(--accent) 35%, transparent); }
body.dragging-v { cursor:row-resize; user-select:none; }
#logPane .lh { flex:none; display:flex; align-items:center; gap:10px; padding:4px 14px; border-bottom:1px solid var(--line); font-size:11.5px; }
#logPane .lh b { font:600 12.5px var(--serif); }
#logPane .lh button.on { color:var(--down); background:var(--down-soft); }
#logPane .events { flex:1; min-height:0; max-height:none; overflow:auto; padding:4px 14px; font-size:11.5px; line-height:1.6; }
#logPane .events .t { color:var(--muted); margin-right:10px; }
#logPane .events .error { color:var(--down); } #logPane .events .warn { color:var(--warn); } #logPane .events .trade { color:var(--up); font-weight:600; }
#status button.st.ghost { border:0; background:transparent; padding:0 6px; color:var(--ink-2); font:inherit; cursor:pointer; border-radius:4px; }
#status button.st.ghost:hover { background:var(--ink-soft); }
#status button.st.on { color:var(--accent); }
#status button.st.down { color:var(--down); font-weight:600; }
.tape .t .chg { font-size:11px; }
.tape .t .note { font:10px var(--sans); color:var(--muted); padding:0 4px; border:1px solid var(--line-2); border-radius:3px; }
#fSound.on { color:var(--up); }
.flips .shadow { margin-top:6px; padding-top:6px; border-top:1px dashed var(--line); color:var(--ink-2); }
.flips .shadow b { color:var(--ink); }
.flips .srow { font-family:var(--mono); font-size:10.5px; margin-top:2px; }
.flips .srow .t { color:var(--muted); margin-right:6px; }
.flips .srow small { display:block; color:var(--muted); font-family:var(--sans); white-space:normal; }
.shadowbox { margin:6px 0 8px; padding:6px 8px; border:1px solid var(--line); border-radius:6px; background:var(--bg); font-size:11px; color:var(--ink-2); }
.shadowbox .hd { display:flex; align-items:baseline; gap:8px; }
.shadowbox .hd > b:first-child { font:600 12.5px var(--serif); color:var(--ink); }
.shadowbox .srow { font-family:var(--mono); font-size:10.5px; margin-top:3px; padding-top:3px; border-top:1px dashed var(--line); }
.shadowbox .srow .t { color:var(--muted); margin-right:6px; }
.shadowbox .srow small { display:block; color:var(--muted); font-family:var(--sans); white-space:normal; }
#tbl td.oc { text-align:right; }
#tbl td.oc b { font-weight:600; }
#tbl td.oc small { display:block; font-size:10px; line-height:1; opacity:.75; }
#tbl th small { display:block; font-size:9.5px; color:var(--muted); font-weight:400; }

/* ---- 登录框 ---- */
#login[hidden] { display:none; }
#login { position:fixed; inset:0; z-index:30; background:color-mix(in srgb, var(--bg) 92%, transparent); display:flex; align-items:center; justify-content:center; }
#login form { width:min(360px, 90vw); background:var(--paper); border:1px solid var(--line-2); border-radius:10px; padding:22px 22px 18px; display:flex; flex-direction:column; gap:10px; }
#login form b { font:600 20px/1 var(--serif); }
#login form p { color:var(--muted); font-size:12px; }
#login input { font-size:15px; padding:8px 10px; }
#login .muted { min-height:1em; color:var(--down); font-size:11.5px; }

/* ---- 手机 / 窄屏（≤ 900px）：告警表与右栏二选一，表只留关键列 ---- */
#rtabs button.mob { display:none; }
@media (max-width: 900px) {
  body { font-size:13px; }
  #bar { gap:8px; padding:6px 10px; flex-wrap:wrap; overflow:visible; }
  #bar .brand .sub, #fMeta, #fRefresh, #fTheme { display:none; }
  .tape { flex-wrap:wrap; }
  #work { display:flex; flex-direction:column; }
  #feed { display:none; border-right:0; }
  #side { flex:1; min-height:0; width:100%; }
  #sideHandle { display:none; }
  #rtabs { position:sticky; top:0; background:var(--paper); z-index:3; }
  #rtabs button.mob { display:inline-flex; }
  body.mob-feed #feed { display:flex; flex:1; min-height:0; }
  body.mob-feed #side .rtab { display:none; }
  body.mob-feed #side { flex:none; }
  #chips { gap:8px; padding:6px 8px; }
  #chips label:not(.chk) { display:none; }
  #stats { gap:14px; padding:5px 8px; }
  #tbl th:nth-child(n+10):not(:nth-child(15)), #tbl td:nth-child(n+10):not(:nth-child(15)) { display:none; }   /* 只留 时间…多空解读 + 15 分后 */
  #tbl th, #tbl td { padding:0 5px; font-size:11.5px; }
  #detail { max-height:45%; }
  .acct .risk { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .acct .risk button { grid-column:1 / -1; justify-self:end; }
  #logPane { height:40vh; }
  #status { gap:10px; font-size:10.5px; }
  #status #stPool, #status #stRate { display:none; }
}
/* ---- 登录 / 二次验证 ---- */
#login form input { width:100%; }
#enrollQr svg { width:200px; height:200px; display:block; margin:6px auto; background:#fff; padding:6px; border-radius:6px; }
#enrollSecret { font-family:var(--mono); font-size:10.5px; word-break:break-all; color:var(--muted); }
#sudo[hidden] { display:none; }
#sudo { position:fixed; inset:0; z-index:31; background:color-mix(in srgb, var(--bg) 75%, transparent); display:flex; align-items:center; justify-content:center; }
#sudo form { width:min(340px, 90vw); background:var(--paper); border:1px solid var(--line-2); border-radius:10px; padding:20px; display:flex; flex-direction:column; gap:10px; }
#sudo form b { font:600 16px/1 var(--serif); }
#sudo form p { color:var(--muted); font-size:12px; }
#sudo input { font-size:18px; letter-spacing:.3em; text-align:center; font-family:var(--mono); }
#sudo .row { display:flex; gap:8px; justify-content:flex-end; }
#sudo .muted { min-height:1em; color:var(--down); font-size:11.5px; }
#fLogout { font-size:11.5px; }
#stRate.bad { color:var(--down); font-weight:600; }
