/* NQ 多空作战室 · 样式表
   从 claude.ai artifact 的内联 <style> 原样抽出（选择器与属性未改）。
   相对原始备份只动了三处，都在下面的“本地化补充”里：
   1) 原 artifact 由 claude.ai 外壳负责 body 重置，独立页面需要自己补 margin:0；
   2) 字体不再从 Google Fonts 外链加载，--f-display/--f-body/--f-mono 的字体栈自带系统回退
      （Noto Serif SC → Songti SC/STSong/serif；IBM Plex Mono → ui-monospace/SF Mono/Menlo/Consolas），
      离线也能正常显示，字宽略有差异；
   3) 末尾加了 today 页“实时带”的样式；data/live.json 不存在时该区块不渲染。
*/
/* ---------- 本地化补充：独立页面最小重置 ---------- */
html{background:var(--bg)}
html,body{margin:0;padding:0}
body{min-height:100vh}

/* Layout: sticky desk bar + one working column; today = status band → battle map (price ladder in three lanes) → A | B tickets → red-team ruling → evening review */
:root{
  --bg:#f2f4f7; --paper:#ffffff; --paper-2:#e9edf2; --ink:#111b26; --ink-2:#384655; --muted:#647282;
  --line:#d3dae2; --line-2:#e3e8ee; --accent:#1c3d6e; --accent-soft:#e1e9f5;
  --long:#008a72; --long-soft:#dcf1ec; --short:#c4451c; --short-soft:#fae6de; --judge:#6b4cc2; --judge-soft:#ebe6f9;
  --good:#2b7a45; --bad:#b42318; --warn:#9a6200; --warn-soft:#f8eed8;
  --f-display:"Noto Serif SC","Songti SC","STSong",serif;
  --f-body:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --r:6px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0c1117; --paper:#131b24; --paper-2:#1a2430; --ink:#e3e9f0; --ink-2:#b5c1cd; --muted:#8693a1;
  --line:#2a3644; --line-2:#212c38; --accent:#86aee8; --accent-soft:#1b2a3f;
  --long:#26a593; --long-soft:#123029; --short:#d8673a; --short-soft:#36211a; --judge:#9a80ea; --judge-soft:#251f3c;
  --good:#5cbf7d; --bad:#f07065; --warn:#e0a94a; --warn-soft:#33270f; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0c1117; --paper:#131b24; --paper-2:#1a2430; --ink:#e3e9f0; --ink-2:#b5c1cd; --muted:#8693a1;
  --line:#2a3644; --line-2:#212c38; --accent:#86aee8; --accent-soft:#1b2a3f;
  --long:#26a593; --long-soft:#123029; --short:#d8673a; --short-soft:#36211a; --judge:#9a80ea; --judge-soft:#251f3c;
  --good:#5cbf7d; --bad:#f07065; --warn:#e0a94a; --warn-soft:#33270f; color-scheme:dark}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--paper)}
a{color:var(--accent)}
.num,.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
h1,h2,h3{font-family:var(--f-display);text-wrap:balance;margin:0;line-height:1.3}
h2{font-size:1.25rem}
h3{font-size:1.02rem}
p{margin:0}
ul{margin:0;padding-left:1.15em}
li+li{margin-top:.25em}
.wrap{max-width:1240px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}

/* desk bar */
.desk{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--paper);border-bottom:1px solid var(--line)}
.desk .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding-block:10px}
.brand{display:flex;align-items:baseline;gap:10px;min-width:0}
.brand h1{font-size:1.15rem;letter-spacing:.02em}
.brand small{color:var(--muted);font-size:.78rem;font-family:var(--f-mono)}
.tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;flex:1 1 auto;min-width:0}
.tabs a{padding:6px 11px;border-radius:var(--r);color:var(--ink-2);text-decoration:none;font-size:.92rem;white-space:nowrap}
.tabs a:hover{background:var(--paper-2)}
.tabs a[aria-current="page"]{background:var(--accent);color:var(--paper)}
.daypick{display:flex;align-items:center;gap:6px}
.daypick button,.daypick select{font:inherit;font-size:.86rem;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);padding:4px 8px;cursor:pointer}
.daypick button:disabled{opacity:.4;cursor:default}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

main{padding-block:20px 60px}
.view{display:grid;gap:18px}
.note{background:var(--warn-soft);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;font-size:.88rem}
.empty{background:var(--paper);border:1px dashed var(--line);border-radius:var(--r);padding:28px;color:var(--ink-2)}
.empty h2{margin-bottom:8px}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;min-width:0}
.panel-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin-bottom:12px}
.panel-h .sub{color:var(--muted);font-size:.84rem}
.eyebrow{font-size:.74rem;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.src{color:var(--muted);font-size:.78rem}
.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:1px 9px;font-size:.78rem;border:1px solid var(--line);color:var(--ink-2);background:var(--paper);max-width:100%}
.pill.long{border-color:var(--long);color:var(--long);background:var(--long-soft)}
.pill.short{border-color:var(--short);color:var(--short);background:var(--short-soft)}
.pill.judge{border-color:var(--judge);color:var(--judge);background:var(--judge-soft)}
.pill.warn{border-color:var(--warn);color:var(--warn);background:var(--warn-soft)}
.pill.accent{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
@media (max-width:860px){.grid2,.grid3{grid-template-columns:minmax(0,1fr)}}
.scroll-x{overflow-x:auto}

/* status band */
.band{display:grid;gap:10px;padding-block:4px}
.band-top{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:baseline}
.band h2{font-size:1.6rem}
.headline{font-size:1.06rem;color:var(--ink);max-width:72ch}
.meta{display:flex;flex-wrap:wrap;gap:6px 16px;color:var(--muted);font-size:.82rem}

/* kpi strip */
.kpis{display:flex;flex-wrap:wrap;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.kpi{background:var(--paper);padding:10px 12px;min-width:0;flex:1 1 170px}
.kpi .k{font-size:.76rem;color:var(--muted)}
.kpi .v{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-size:1.08rem;font-weight:600;overflow-wrap:anywhere}
.kpi .s{font-size:.76rem;color:var(--ink-2);font-family:var(--f-mono)}
.up{color:var(--good)} .dn{color:var(--bad)}

/* events timeline */
.events{display:grid;gap:0}
.ev{display:grid;grid-template-columns:74px minmax(0,1fr);gap:10px;padding:7px 0;border-top:1px solid var(--line-2)}
.ev:first-child{border-top:0}
.ev .t{font-family:var(--f-mono);font-size:.85rem;color:var(--ink-2)}
.ev .n{font-weight:600}
.ev .x{font-size:.84rem;color:var(--ink-2)}
.ev.high .t{color:var(--short);font-weight:600}
.basis{display:grid;gap:8px}
.basis-row{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:start}
.tag{font-size:.74rem;border-radius:4px;padding:1px 6px;background:var(--paper-2);color:var(--ink-2);text-align:center;white-space:nowrap}

/* battle map */
.map-wrap{display:grid;gap:10px}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.8rem;color:var(--ink-2)}
.legend i{display:inline-block;width:18px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
svg text{font-family:var(--f-mono)}

/* plans */
.plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
@media (max-width:900px){.plans{grid-template-columns:minmax(0,1fr)}}
.plan{background:var(--paper);border:1px solid var(--line);border-top:4px solid var(--c);border-radius:var(--r);padding:16px 18px;display:grid;gap:14px;min-width:0}
.plan.long{--c:var(--long);--cs:var(--long-soft)}
.plan.short{--c:var(--short);--cs:var(--short-soft)}
.plan-h{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.who{font-family:var(--f-display);font-size:1.2rem;color:var(--c)}
.conv{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--muted)}
.conv .bar{width:90px;height:6px;background:var(--paper-2);border-radius:3px;overflow:hidden}
.conv .bar b{display:block;height:100%;background:var(--c)}
.thesis{font-size:.98rem}
.weekly-link{font-size:.84rem;color:var(--ink-2);border-left:3px solid var(--line);padding-left:10px}
.ticket{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.ticket-h{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline;background:var(--cs);padding:8px 12px}
.ticket-h .id{font-family:var(--f-mono);font-weight:600;color:var(--c)}
.ticket-h .nm{font-weight:600}
.ticket-h .ty{font-size:.78rem;color:var(--ink-2)}
.tk-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line-2)}
.tk-grid>div{background:var(--paper);padding:7px 10px;min-width:0}
.tk-grid .k{font-size:.72rem;color:var(--muted)}
.tk-grid .v{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-weight:600;font-size:.98rem}
.tk-grid .v small{font-weight:400;color:var(--muted);font-size:.74rem}
@media (max-width:520px){.tk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tk-body{padding:10px 12px;display:grid;gap:7px;font-size:.88rem}
.tk-row{display:grid;grid-template-columns:64px 1fr;gap:8px}
.tk-row .k{color:var(--muted);font-size:.8rem}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-size:.76rem;background:var(--paper-2);border-radius:4px;padding:2px 7px;color:var(--ink-2)}
.chip b{font-weight:600;color:var(--ink)}
.lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;font-size:.87rem}
@media (max-width:520px){.lists{grid-template-columns:minmax(0,1fr)}}
.lists h4{margin:0 0 4px;font-size:.8rem;color:var(--muted);font-weight:600}

/* red team */
.judge{border-top:4px solid var(--judge)}
.ruling{font-family:var(--f-display);font-size:1.12rem;line-height:1.5;max-width:80ch}
.score{width:100%;border-collapse:collapse;font-size:.86rem}
.score th,.score td{padding:6px 8px;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:middle}
.score th{font-size:.76rem;color:var(--muted);font-weight:600}
.sbar{display:flex;align-items:center;gap:8px}
.sbar span{display:inline-block;height:8px;border-radius:2px}
.sbar .n{font-family:var(--f-mono);font-size:.82rem;min-width:2.4em}
.holes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;font-size:.87rem}
@media (max-width:900px){.holes{grid-template-columns:minmax(0,1fr)}}
.holes h4{margin:0 0 6px;font-size:.84rem}
.fix{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:.87rem}
.fix .to{font-family:var(--f-mono);font-weight:600;color:var(--judge)}

/* tables */
table.t{width:100%;border-collapse:collapse;font-size:.85rem}
table.t th,table.t td{padding:7px 8px;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:top}
table.t th{font-size:.74rem;color:var(--muted);font-weight:600;white-space:nowrap;position:sticky;top:0;background:var(--paper)}
table.t td.r,table.t th.r{text-align:right}
table.t tr.clk{cursor:pointer}
table.t tr.clk:hover td{background:var(--paper-2)}
table.t tr.open td{background:var(--accent-soft)}

/* stocks */
.heat{display:grid;gap:2px}
.heat-row{display:flex;gap:2px}
.heat .tile{min-width:0;overflow:hidden;height:66px;padding:5px 6px;border-radius:3px;color:var(--ink);display:flex;flex-direction:column;justify-content:space-between;font-size:.74rem;cursor:pointer;border:1px solid transparent}
.heat .tile b{font-family:var(--f-mono);font-size:.84rem}
.heat .tile:hover{border-color:var(--ink-2)}
.detail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:12px 4px 6px;font-size:.86rem}
@media (max-width:900px){.detail{grid-template-columns:minmax(0,1fr)}}
.detail h4{margin:0 0 6px;font-size:.84rem}
.news li{margin-bottom:4px}
.imp{font-size:.72rem;border-radius:3px;padding:0 5px;margin-right:4px}
.imp.p{background:var(--long-soft);color:var(--long)} .imp.n{background:var(--short-soft);color:var(--short)} .imp.z{background:var(--paper-2);color:var(--ink-2)}
.earn{display:grid;gap:12px;align-content:start}
.metric{display:grid;grid-template-columns:minmax(90px,150px) 1fr auto;gap:10px;align-items:center;font-size:.84rem}
.metric .bars{display:grid;gap:3px}
.metric .bars span{display:block;height:7px;border-radius:0 3px 3px 0}
.metric .act{background:var(--accent)} .metric .est{background:var(--line)}
.metric .sur{font-family:var(--f-mono);font-size:.8rem;text-align:right;min-width:5.5em}

/* journal */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.stat{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.stat .k{font-size:.76rem;color:var(--muted)}
.stat .v{font-family:var(--f-mono);font-size:1.3rem;font-weight:600}
.stat .s{font-size:.76rem;color:var(--ink-2)}

/* evolve / system */
.timeline{display:grid;gap:10px;border-left:2px solid var(--line);padding-left:14px}
.timeline .it .d{font-family:var(--f-mono);font-size:.8rem;color:var(--muted)}
.pipe{display:grid;grid-template-columns:96px minmax(0,1fr);gap:14px;padding:12px 0;border-top:1px solid var(--line-2)}
@media (max-width:520px){.pipe{grid-template-columns:minmax(0,1fr);gap:4px}}
.pipe:first-child{border-top:0}
.pipe .when{font-family:var(--f-mono);font-weight:600}
.pipe .when small{display:block;font-weight:400;color:var(--muted);font-size:.74rem}
.pipe ol{margin:4px 0 0;padding-left:1.2em;font-size:.87rem}
.prose{max-width:78ch;display:grid;gap:10px;font-size:.92rem}
.prose h3{margin-top:6px}
.kv{display:grid;grid-template-columns:120px 1fr;gap:6px 14px;font-size:.88rem}
.ofc{display:grid;font-size:.9rem}
.kv-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;padding:6px 0;border-top:1px solid var(--line-2)}
.ofc.has-act .kv-row{grid-template-columns:110px minmax(0,1fr) minmax(0,1fr)}
.kv-row.head{border-top:0;padding-top:0}
.kv-row .k{color:var(--muted);font-size:.84rem}
.kv-row .act{color:var(--judge)}
@media (max-width:520px){.kv-row,.ofc.has-act .kv-row{grid-template-columns:minmax(0,1fr)}}
.verdicts{display:flex;flex-wrap:wrap;gap:8px}
.vd{display:grid;gap:2px;border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;font-size:.84rem;flex:1 1 220px;min-width:0}
.vd .h{display:flex;gap:8px;align-items:center}
.vd .h b{font-family:var(--f-mono)}
.kv .k{color:var(--muted)}
details summary{cursor:pointer;color:var(--accent);font-size:.86rem}

/* alerts */
.alert{border-radius:var(--r);padding:10px 14px;font-size:.92rem;border:1px solid var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--paper));color:var(--ink)}
.alert b{color:var(--bad)}
.alert.soft{border-color:var(--warn);background:var(--warn-soft)}
.alert.soft b{color:var(--warn)}

/* conclusion card */
.cc-head{display:grid;gap:6px}
.cc-net{font-size:.98rem;max-width:90ch}
table.cc{width:100%;border-collapse:collapse;font-size:.86rem}
table.cc th,table.cc td{padding:7px 8px;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:top}
table.cc th{font-size:.74rem;color:var(--muted);font-weight:600;white-space:nowrap}
table.cc td.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap}
table.cc tr.off td{opacity:.55}
table.cc tr.off td.keep{opacity:1}
table.cc .pill{white-space:nowrap}
table.cc td.id{min-width:150px}
.was{color:var(--muted);text-decoration:line-through;font-size:.78em;margin-left:3px}
.conds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;min-width:220px}
.conds span{font-size:.74rem;border-radius:3px;padding:2px 5px;background:var(--paper-2);color:var(--ink-2);line-height:1.35}
.conds span.on{background:var(--judge-soft);color:var(--ink)}
.conds span i{display:block;font-style:normal;color:var(--muted);font-size:.68rem}
.chk{display:flex;flex-wrap:wrap;gap:4px}
.chk span{font-size:.74rem;border-radius:3px;padding:1px 6px;border:1px solid var(--line);white-space:nowrap}
.chk span.ok{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,var(--line))}
.chk span.no{color:var(--bad);border-color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--paper))}
@media (max-width:760px){
  table.cc thead{display:none}
  table.cc,table.cc tbody{display:block}
  table.cc tr{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px 10px;padding:10px 0;border-bottom:1px solid var(--line)}
  table.cc td{border:0;padding:0;min-width:0}
  table.cc td::before{content:attr(data-l);display:block;font-size:.68rem;color:var(--muted)}
  table.cc td.wide{grid-column:1/-1}
  table.cc td.id{grid-column:1/-1}
  table.cc td.id::before{display:none}
  table.cc .was{display:block;margin-left:0}
  table.cc tr.off td.cnd{display:none}
  .conds{min-width:0}
}

/* intraday notes */
.inote{border:1px solid var(--line);border-left:4px solid var(--judge);border-radius:var(--r);padding:12px 14px;display:grid;gap:8px;font-size:.88rem}
.inote .h{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.inote .h b{font-family:var(--f-mono);color:var(--judge)}
.inote .h h3{font-size:1rem}
.inote .rl{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:4px 10px;align-items:baseline}
.inote .rl .id{font-family:var(--f-mono);font-weight:600}

/* ticket status */
.ticket.off{opacity:.62}
.ticket.off:hover{opacity:1}
.tk-status{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.8rem;color:var(--ink-2)}

/* responsive score table */
@media (max-width:640px){
  table.score thead{display:none}
  table.score,table.score tbody{display:block}
  table.score tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px;padding:8px 0;border-bottom:1px solid var(--line-2)}
  table.score td{border:0;padding:0}
  table.score td:first-child{grid-column:1/-1;font-weight:600}
  table.score td.note{grid-column:1/-1}
  table.score td[data-l]::before{content:attr(data-l);display:block;font-size:.68rem;color:var(--muted)}
}

/* earnings diverging bars */
.metric2{display:grid;grid-template-columns:minmax(80px,140px) minmax(0,1fr) auto;gap:4px 10px;align-items:center;font-size:.84rem}
.metric2 .axis{position:relative;height:12px;background:linear-gradient(var(--line),var(--line)) center/1px 100% no-repeat}
.metric2 .axis span{position:absolute;top:2px;height:8px;border-radius:2px}
.metric2 .axis span.beat{left:50%;background:var(--long)}
.metric2 .axis span.miss{right:50%;background:var(--short)}
.metric2 .vals{grid-column:2/3;font-family:var(--f-mono);font-size:.74rem;color:var(--muted);margin-top:-2px}
.metric2 .sur{font-family:var(--f-mono);font-size:.8rem;text-align:right;min-width:5.5em}
.axis-lab{display:grid;grid-template-columns:minmax(80px,140px) minmax(0,1fr) auto;gap:10px;font-size:.68rem;color:var(--muted)}
.axis-lab div{display:flex;justify-content:space-between}

@media (max-width:520px){.metric2,.axis-lab{grid-template-columns:84px minmax(0,1fr) auto;gap:4px 8px}}
/* stocks mobile */
table.t.stk .pill{white-space:nowrap}
@media (max-width:700px){.hm{display:none}table.t.stk{min-width:0!important;font-size:.8rem}table.t.stk th,table.t.stk td{padding:6px 4px}table.t.stk .pill{white-space:nowrap;font-size:.7rem;padding:1px 6px}}
@media (prefers-reduced-motion:no-preference){.view{animation:fade .25s ease-out}@keyframes fade{from{opacity:.4}to{opacity:1}}}

/* ---------- 本地化补充：today 页实时带（可选增强，data/live.json 不存在时不渲染） ---------- */
.live{display:grid;gap:6px;background:var(--paper);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:var(--r);padding:10px 14px}
.live-h{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline}
.live-h .live-src{flex:1 1 240px;min-width:0}
.live-nq{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.live-nq .k{font-family:var(--f-mono);font-size:.78rem;color:var(--muted)}
.live-nq .v{font-size:1.25rem;font-weight:600;font-variant-numeric:tabular-nums}
.live-items{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:.88rem}
.live-items .lv{display:inline-flex;gap:6px;align-items:baseline;white-space:nowrap}
.live-items .lv b{font-family:var(--f-mono);font-size:.78rem;color:var(--ink-2);font-weight:600}
.live-items .lv .mono{font-variant-numeric:tabular-nums;font-weight:600}
.live-more summary{cursor:pointer;color:var(--accent);font-size:.84rem}
@media (max-width:520px){.live-items{gap:4px 12px;font-size:.84rem}}

/* ---------- 本地化补充：今日作战变薄 + 多头 / 空头交易室（2026-11-03 改版） ---------- */
/* 分界卡：今天唯一把两侧放在一起看的地方 */
.boundary{display:grid;gap:12px}
.bd-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.bd-cell{background:var(--paper);padding:10px 12px;display:grid;gap:2px;min-width:0}
.bd-cell .k{font-size:.76rem;color:var(--muted)}
.bd-cell .v{font-size:1.45rem;font-weight:600;overflow-wrap:anywhere}
.bd-cell .s{font-size:.78rem;color:var(--ink-2);line-height:1.45}
.bd-cell.long{border-top:3px solid var(--long)}
.bd-cell.short{border-top:3px solid var(--short)}
.bd-cell.now{background:var(--paper-2)}
.bd-cell.now.long .v{color:var(--long)} .bd-cell.now.short .v{color:var(--short)}
.bd-cell.now.mid{border-top:3px solid var(--judge);background:var(--judge-soft)}
@media (max-width:760px){.bd-grid{grid-template-columns:minmax(0,1fr)}}
/* 两张房间入口卡 */
.rooms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
@media (max-width:900px){.rooms{grid-template-columns:minmax(0,1fr)}}
.room-card{background:var(--paper);border:1px solid var(--line);border-top:4px solid var(--c);border-radius:var(--r);padding:14px 16px;display:grid;gap:10px;min-width:0}
.room-card.long{--c:var(--long)} .room-card.short{--c:var(--short)}
.room-card-h{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.room-title{font-family:var(--f-display);font-size:1.18rem}
.room-card .meta{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--muted);font-size:.8rem}
.room-ticket{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.rt-h{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline;background:var(--paper-2);padding:6px 10px;font-size:.88rem}
.rt-h .nm{font-weight:600}
.rt-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line-2)}
.rt-grid>div{background:var(--paper);padding:6px 8px;min-width:0}
.rt-grid .k{font-size:.7rem;color:var(--muted)}
.rt-grid .v{font-family:var(--f-mono);font-weight:600;font-size:.9rem}
@media (max-width:1100px){.rt-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* 交易室页 */
.side-head{background:var(--paper);border:1px solid var(--line);border-left:5px solid var(--c);border-radius:var(--r);padding:16px 18px;display:grid;gap:10px}
.side-head.long{--c:var(--long)} .side-head.short{--c:var(--short)}
.side-top{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.side-name h2{font-size:1.55rem}
.side-name .eyebrow{margin-bottom:2px}
.side-head .headline{max-width:80ch}
.weekly{display:grid;gap:10px}
.weekly .zones{max-width:620px}
.wk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;font-size:.88rem}
@media (max-width:760px){.wk-grid{grid-template-columns:minmax(0,1fr)}}
.room-tickets,.room-tickets .plan{min-width:0}
.room-tickets{display:grid;gap:14px}
.room-tickets .panel-h{margin-bottom:0}
.room-tickets .plan{border-top-width:4px}
.room-cta{display:inline-block;padding:6px 12px;border-radius:var(--r);background:var(--accent);color:var(--paper);text-decoration:none;font-size:.9rem;justify-self:start}
.room-cta:hover{filter:brightness(1.08)}
.room-cta.quiet{background:var(--paper-2);color:var(--ink-2);border:1px solid var(--line)}
table.ledger th:first-child,table.ledger td:first-child{width:110px}table.ledger td:nth-child(4){white-space:nowrap}table.ledger td:nth-child(6){width:60px}
.room-foot{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:2px}
.sub-h{margin:14px 0 6px;font-size:.86rem;color:var(--ink-2)}
table.score.one{max-width:560px}
table.score.one td:first-child{width:55%}
table.score.one .sbar{margin-right:auto}
.side-holes{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.side-holes{grid-template-columns:minmax(0,1fr)}}
.side-notes{display:grid;gap:12px}
.side-note{border:1px solid var(--line);border-left:4px solid var(--judge);border-radius:var(--r);padding:10px 12px;display:grid;gap:6px;font-size:.88rem}
.sn-h{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.sn-row{display:grid;grid-template-columns:auto auto auto minmax(0,1fr);gap:4px 8px;align-items:baseline;border-top:1px solid var(--line-2);padding-top:6px}
@media (max-width:620px){.sn-row{grid-template-columns:auto auto minmax(0,1fr)}}
/* 票号 / 追溯码 */
.tno{display:inline-block;font-family:var(--f-mono);font-size:.72rem;font-weight:600;background:var(--paper-2);color:var(--ink-2);border-radius:4px;padding:0 5px;white-space:nowrap}
.trace{font-family:var(--f-mono);font-size:.68rem;color:var(--muted);white-space:nowrap}
/* 折叠区 */
.fold{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:8px 14px}
.fold>summary{cursor:pointer;color:var(--accent);font-size:.9rem}
.fold-body{display:grid;gap:12px;margin-top:10px}
.fold-body .panel{border:0;padding:0}
/* 数据源一行 / 待复核提示 */
.tv-src{margin:2px 0 0}
.recheck-line{margin:0}
/* 今日页：更密一点 */
.panel.compact{padding:10px 14px}
.summary-grid{display:grid;gap:12px}
@media (max-width:760px){.tabs a{font-size:.86rem;padding:5px 8px}}

/* ---------- 本地化补充：5 日仓（swing）层（2026-11-04 加） ---------- */
.swing{display:grid;gap:12px}
.swing-long{--c:var(--long)} .swing-short{--c:var(--short)}
.swing-head{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline}
.swing-obj{font-size:.88rem;color:var(--ink-2)}
.swing-ticket{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:var(--r);padding:12px 14px;display:grid;gap:8px}
.swing-ticket.off{opacity:.62}
.swing-h{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.swing-h .wid{font-family:var(--f-mono);font-weight:600;font-size:.95rem}
.swing-h .nm{font-weight:600}
.swing-h .ty{font-size:.78rem;color:var(--ink-2)}
.swing-thesis{font-size:.9rem}
.swing-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line-2)}
.swing-grid>div{background:var(--paper);padding:6px 8px;min-width:0}
.swing-grid .k{font-size:.7rem;color:var(--muted)}
.swing-grid .v{font-family:var(--f-mono);font-weight:600;font-size:.92rem;overflow-wrap:anywhere}
.swing-grid .v small{font-weight:400;color:var(--muted);font-size:.72rem}
@media (max-width:760px){.swing-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.swing-body{display:grid;gap:5px;font-size:.86rem}
.swing-row{display:grid;grid-template-columns:64px 1fr;gap:8px}
.swing-row .k{color:var(--muted);font-size:.8rem}
.swing-log th{white-space:nowrap}
.swing-line{font-size:.82rem;color:var(--ink-2);border-top:1px solid var(--line-2);padding-top:8px}
.swing-line b{color:var(--ink)}
.swing-week{display:grid;gap:14px}
.swing-week .swing-plan{min-width:0}
.swing-wk-list{display:grid;gap:10px}
.swing-wk-ticket{border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;display:grid;gap:6px;font-size:.86rem}
.swing-wk-h{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:baseline}
.swing-wk-h .wid{font-family:var(--f-mono);font-weight:600}
.swing-wk-h .nm{font-weight:600}
.swing-wk-kv{display:flex;flex-wrap:wrap;gap:4px 14px;font-family:var(--f-mono);font-size:.82rem}
.swing-wk-kv i,.swing-wk-row i{font-style:normal;color:var(--muted);font-family:var(--f-body);font-size:.76rem;margin-right:4px}
.swing-wk-row{font-size:.82rem;color:var(--ink-2)}
.swing-rt{border-top:1px solid var(--line-2);padding-top:12px;display:grid;gap:10px}
.swing-rt h4{margin:0;font-size:.9rem}

/* ---------- v1.8 计划完整性：依据台账 / 被打脸手册（与分界卡同级的面板，不是灰色附注） ---------- */
.plan-fold{padding:0}
.plan-fold>summary{list-style:none;cursor:pointer;display:flex;flex-wrap:nowrap;align-items:baseline;gap:10px;padding:14px 18px;font-family:var(--f-display);font-size:1rem;font-weight:600;color:var(--ink)}
.plan-fold>summary::-webkit-details-marker{display:none}
.plan-fold>summary::before{content:"▸";color:var(--muted);font-family:var(--f-body);font-size:.8rem;flex:none}
.plan-fold[open]>summary::before{content:"▾"}
.plan-fold .fold-title{white-space:nowrap;flex:none}
.plan-fold .fold-sum{font-family:var(--f-body);font-size:.72rem;font-weight:400;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.plan-fold .fold-body{padding:0 18px 16px;display:grid;gap:12px;margin-top:0}
.basis-regime{font-size:.95rem;line-height:1.65}
.basis-table{width:100%}
.basis-cols h4,.fold-body h4{margin:0 0 6px;font-size:.84rem;color:var(--muted)}
.tests{padding-left:1.15em;font-size:.88rem}
.basis-rejected,.wp-extra{font-size:.9rem}
.wp-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.wp-kpi{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.wp-kpi .k{font-size:.76rem;color:var(--muted)}
.wp-kpi .v{font-size:1.7rem;font-weight:600}
.wp-hard{padding-left:1.3em;font-size:.9rem;display:grid;gap:4px}
.wp-rules{display:grid;gap:8px}
.wp-rule{display:grid;grid-template-columns:92px 1fr;gap:10px;font-size:.88rem;align-items:start}
.wp-rule .tag{text-align:center}
.tk-ext .k{color:var(--muted)}
.room-mini-ext{border-top:1px solid var(--line-2);padding-top:8px;margin-top:2px}
@media (max-width:760px){
  .basis-table thead{display:none}
  .basis-table,.basis-table tbody{display:block}
  .basis-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;padding:10px;border:1px solid var(--line);border-radius:var(--r);margin-bottom:8px}
  .basis-table td{border:0;padding:0;min-width:0;display:grid;gap:1px}
  .basis-table td::before{content:attr(data-l);font-size:.68rem;color:var(--muted)}
  .basis-table td:first-child{grid-column:1/-1;display:flex;gap:6px;align-items:baseline}
  .wp-rule{grid-template-columns:minmax(0,1fr);gap:2px}
  .plan-fold .fold-sum{font-size:.68rem}
}
