/* gotrader 看板 · 浅色暖纸 quant terminal 设计系统
   字体自托管（embed.FS），颜色只承载交易语义：绿=牛/涨/买/盈，红=熊/跌/卖/亏，琥珀=中性/HOLD/警示。 */

@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("/static/fonts/jetbrains-mono-400.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url("/static/fonts/jetbrains-mono-500.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url("/static/fonts/jetbrains-mono-700.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:800;font-display:swap;src:url("/static/fonts/jetbrains-mono-800.woff2") format("woff2")}
@font-face{font-family:"DotGothic16";font-style:normal;font-weight:400;font-display:swap;src:url("/static/fonts/dotgothic16-400.woff2") format("woff2")}

:root{
  --bg:#EEEBE1; --grain:#E7E3D6; --panel:#F6F4EC; --panel-2:#FAF9F2; --inset:#F1EEE4;
  --ink:#1A1915; --ink-2:#6A6557; --ink-3:#9A9484; --ink-4:#BCB6A4;
  --line:#DAD5C5; --line-2:#C9C3B0; --line-3:#B7B19C;
  --green:#178A52; --green-b:#1FB068; --green-soft:rgba(31,176,104,.12); --green-bg:#E3EFE2; --green-line:#BEDCC0;
  --red:#C5412C; --red-b:#E0553D; --red-soft:rgba(197,65,44,.10); --red-bg:#F5E2DC; --red-line:#E7C7BD;
  --amber:#B5832A;
  --mono:"JetBrains Mono",ui-monospace,Consolas,monospace;
  --led:"DotGothic16","JetBrains Mono",monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--mono);font-size:13px;line-height:1.45;
  -webkit-font-smoothing:antialiased;
  background-image:radial-gradient(var(--grain) 1px,transparent 1.4px);background-size:5px 5px}
.mono{font-family:var(--mono)} .led{font-family:var(--led);letter-spacing:.01em}
.tnum{font-variant-numeric:tabular-nums}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
button:focus-visible{outline:2px solid var(--green-b);outline-offset:2px}
button[disabled]{opacity:.4;cursor:not-allowed}
::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:4px}

.term{max-width:1180px;margin:0 auto;padding:18px 18px 40px}

/* labels */
.lab{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
.lab b{color:var(--ink-2);font-weight:700}
.up{color:var(--green)} .dn{color:var(--red)} .amb{color:var(--amber)}
/* 顶栏「冠军」标签按盈亏着色：o-best 是 .lab 内的 <b>，需提高特异性盖过 .lab b 的 --ink-2 */
.lab b.up{color:var(--green)} .lab b.dn{color:var(--red)}
.pos-bg{background:var(--green-bg)} .neg-bg{background:var(--red-bg)}
.is-stale{opacity:.5;filter:saturate(.4)}

/* ── TOP RAIL ── */
.rail{display:flex;align-items:center;gap:16px;padding:6px 4px 18px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}
.mark{width:38px;height:38px;border:1px solid var(--line-2);border-radius:8px;display:grid;place-items:center;font-size:18px;color:var(--ink);background:var(--panel-2);flex:0 0 auto}
.rail .id .t{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-2);font-weight:700}
.rail .id .a{font-family:var(--led);font-size:19px;letter-spacing:.02em;margin-top:1px}
.rail .id .a .x{color:var(--ink-4)}
.rail .r{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tagbox{border:1px solid var(--line-2);border-radius:6px;padding:7px 12px;font-size:11px;letter-spacing:.08em;display:flex;align-items:center;gap:8px;background:var(--panel-2);color:var(--ink-2)}
.tagbox.live{border-color:var(--green-line);background:var(--green-bg);color:var(--green)}
.tagbox.warn{border-color:var(--line-3);background:var(--inset);color:var(--amber)}
.tagbox.no{border-color:var(--red-line);background:var(--red-bg);color:var(--red)}
.blink{width:7px;height:7px;border-radius:50%;background:currentColor;animation:bk 1.6s infinite}
@keyframes bk{0%,100%{opacity:1}50%{opacity:.35}}
.clock{font-family:var(--led);font-size:15px;color:var(--ink-2);letter-spacing:.04em}

/* ── PANEL ── */
.panel{border:1px solid var(--line);border-radius:11px;background:var(--panel);margin-bottom:14px;overflow:hidden}
.ph{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ph .dot{width:6px;height:6px;border-radius:50%;background:var(--green-b)}
.ph .right{margin-left:auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.pb{padding:18px 16px}

/* ── TOP ROW (PnL + topwin) ── */
.toprow{display:grid;grid-template-columns:1.15fr 1fr;gap:14px}
.pnl .cap{font-size:10px;letter-spacing:.14em;color:var(--ink-3);margin-bottom:6px}
.pnl .big{font-family:var(--led);font-size:clamp(40px,8vw,68px);line-height:.92;letter-spacing:.01em}
.pnl .story{margin-top:12px;font-size:13px;color:var(--ink-2)}
.pnl .sub{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;align-items:center}
.chiplab{border:1px solid var(--line-2);border-radius:6px;padding:5px 10px;font-size:11px;color:var(--ink-2);background:var(--panel-2)}
.chiplab b{color:var(--ink)} .chiplab.g{color:var(--green);border-color:var(--green-line);background:var(--green-bg)}
.mgrid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:16px;background:var(--panel-2)}
.mc{padding:12px 13px;border-right:1px solid var(--line)}
.mc:last-child{border-right:0}
.mc .v{font-family:var(--led);font-size:20px;letter-spacing:.01em}
.mc .k{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:7px}
.mc .v.txt{font-size:15px;line-height:20px}
.mc .ks{font-size:10px;color:var(--ink-3);margin-top:3px}
.wallet{margin-top:14px;font-size:11px;color:var(--ink-3);display:flex;align-items:center;gap:8px}

.topwin{display:flex;flex-direction:column}
.twh{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}
.tw-mult{font-family:var(--led);font-size:clamp(34px,6vw,52px);color:var(--ink);line-height:1}
.tw-mult .s{font-size:.5em;color:var(--ink-3)}
.tw-win{font-family:var(--led);font-size:clamp(22px,4vw,32px);color:var(--green)}
.tw-win.dn{color:var(--red)}
.tw-empty{font-size:12px;color:var(--ink-3);margin-bottom:6px}
.tw-meta{display:flex;gap:26px;margin-top:8px}
.tw-meta .k{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.tw-meta .v{font-family:var(--led);font-size:16px;margin-top:3px}
.eq-wrap{flex:1;min-height:120px;margin-top:10px;position:relative}

/* ── 参数擂台（原寻优散点，改排行榜）── */
.miro{display:grid;grid-template-columns:1fr 220px;gap:0}
.board-wrap{border-right:1px solid var(--line);padding:10px 14px 6px;display:flex;flex-direction:column}
.board{display:flex;flex-direction:column}
.lb-row{display:grid;grid-template-columns:40px minmax(132px,auto) 1fr 78px;align-items:center;gap:10px;
  padding:3px 8px;border-radius:6px;border-bottom:1px dashed var(--line)}
.lb-row:last-child{border-bottom:0}
.lb-row.lb-live{background:rgba(181,131,42,.12);border-bottom-style:solid}
.lb-rank{font-family:var(--led);font-size:13px;color:var(--ink-3);text-align:right;white-space:nowrap}
.lb-row:first-child .lb-rank{color:var(--ink)}
.lb-name{font-size:11.5px;color:var(--ink-2);white-space:nowrap}
.lb-tag,.lb-badge{margin-left:7px;font-size:9px;letter-spacing:.04em;border-radius:5px;padding:1px 6px;vertical-align:1px}
.lb-tag{border:1px solid var(--line-2);background:var(--panel-2);color:var(--ink-3)}
.lb-badge{border:1px solid var(--green-line);background:var(--green-bg);color:var(--green);font-weight:700}
.lb-barwrap{height:10px;border-radius:6px;background:var(--inset);border:1px solid var(--line);overflow:hidden}
.lb-bar{display:block;height:100%;width:0;border-radius:5px;transition:width .9s cubic-bezier(.22,1,.36,1)}
.lb-bar.win{background:#1FB068}
.lb-bar.lose{background:#E0553D}
.lb-pct{font-family:var(--led);font-size:13px;text-align:right;white-space:nowrap}
.lb-empty{padding:16px 4px;font-size:11px;color:var(--ink-3);letter-spacing:.04em}
.lb-note{padding:9px 8px 6px;font-size:10.5px;color:var(--ink-3);letter-spacing:.03em}
.miro-side{padding:16px 16px}
.ms-row{padding:13px 0;border-bottom:1px solid var(--line)}
.ms-row:last-child{border-bottom:0}
.ms-row .k{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.ms-row .v{font-family:var(--led);font-size:24px;margin-top:5px}
.ms-row .v.sm{font-size:16px}

/* ── DATA FLOW PIPELINE (centerpiece) ── */
.flow{display:grid;grid-template-columns:1fr;gap:0}
.flow-main{padding:22px 14px 16px;border-bottom:1px solid var(--line);overflow-x:auto}
.chain{display:flex;align-items:stretch;min-width:920px;position:relative}
.stage{flex:1;position:relative}
.stage .box{border:1px solid var(--line-2);border-radius:9px;background:var(--panel-2);padding:11px 11px 12px;position:relative;transition:border-color .25s,box-shadow .25s,background .25s;height:100%}
.stage.hot .box{border-color:var(--green-b);box-shadow:0 0 0 3px var(--green-soft);background:#fff}
.stage.hot.sell-hot .box{border-color:var(--red-b);box-shadow:0 0 0 3px var(--red-soft)}
.stage .sn{font-family:var(--led);font-size:11px;color:var(--green);letter-spacing:.05em;display:flex;align-items:baseline;justify-content:space-between;gap:4px}
.stage .sn .en{font-size:8px;color:var(--ink-3);letter-spacing:.08em;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stage .st{font-size:13px;font-weight:700;margin-top:3px;letter-spacing:.04em}
.stage .sp{font-size:9.5px;color:var(--ink-3);margin-top:2px;letter-spacing:.02em;line-height:1.45;min-height:27px}
.stage .sv{font-family:var(--led);font-size:13px;margin-top:9px;line-height:1.35;color:var(--ink);min-height:34px}
.stage .sv .mut{color:var(--ink-3);font-size:11px}
.stage .sv .g{color:var(--green)} .stage .sv .r{color:var(--red)} .stage .sv .a{color:var(--amber)}
.wire{width:30px;flex:0 0 auto;position:relative;align-self:center;height:2px;background:var(--line-2)}
.wire::after{content:"";position:absolute;right:-1px;top:-3px;border:4px solid transparent;border-left-color:var(--line-3)}
.pkt{position:absolute;top:-3px;left:0;width:7px;height:7px;border-radius:50%;background:var(--green-b);box-shadow:0 0 8px var(--green-b);animation:flow 1.25s linear infinite}
.pkt.p2{animation-delay:.41s}.pkt.p3{animation-delay:.83s}
@keyframes flow{0%{left:-2px;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:30px;opacity:0}}
.flowcap{font-size:10.5px;color:var(--ink-3);letter-spacing:.04em;padding:14px 16px 0;border-top:1px solid var(--line);margin-top:4px}
.flowcap .g{color:var(--green)} .flowcap .r{color:var(--red)}

/* execute card —— 移到数据流链下方，横向状态条（避免与 6 段链抢宽度致末段被遮挡）*/
.exec{padding:14px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px}
.exec .ex-lab{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);flex:0 0 100%;margin-bottom:2px}
.ex-act{border-radius:9px;padding:10px 18px;transition:.3s;background:var(--inset);border:1px solid var(--line-2);display:flex;align-items:center;gap:16px;flex:0 0 auto}
.ex-act.buy{background:var(--green-bg);border-color:var(--green-line)}
.ex-act.sell{background:var(--red-bg);border-color:var(--red-line)}
.ex-act .big{font-family:var(--led);font-size:26px;line-height:1;display:flex;align-items:center;gap:10px;color:var(--amber)}
.ex-act.buy .big{color:var(--green)} .ex-act.sell .big{color:var(--red)}
.ex-act .mlt{font-family:var(--led);font-size:13px;color:var(--ink-2)}
.ex-kv{flex:1 1 260px;display:flex;flex-wrap:wrap;gap:0 26px}
.ex-kv .row{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:11px}
.ex-kv .k{color:var(--ink-3);letter-spacing:.04em}
.ex-kv .v{font-family:var(--led)}

/* ── 方向倾向（原 5MIN PULSE）── */
.pulse-grid{display:grid;grid-template-columns:1fr 1fr 220px;gap:18px;align-items:center}
.ptb .k,.cur .k{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.ptb .v{font-family:var(--led);font-size:clamp(26px,4vw,38px);margin-top:6px}
.cur .v{font-family:var(--led);font-size:clamp(28px,4.5vw,42px);margin-top:6px}
.cur .chg{font-family:var(--led);font-size:13px;margin-top:6px;display:inline-block;padding:2px 8px;border-radius:5px}
.bias{display:flex;flex-direction:column;gap:8px}
.bias .bar{height:14px;border-radius:7px;background:var(--inset);border:1px solid var(--line);overflow:hidden;display:flex}
.bias .bar i{display:block;height:100%;background:var(--green-b)}
.bias .bk{display:flex;justify-content:space-between;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.bias .bk b{font-family:var(--led)}
.countdown{margin-left:auto;font-family:var(--led);font-size:18px;color:var(--ink-3);letter-spacing:.06em}

/* ── PRICE CHART（原 ORDER BOOK，去阶梯）── */
/* 实盘行情源声明：主图价格来自行情引擎交易所，非用户 Gate 账户实时撮合价 */
.price-feed-note{padding:8px 16px;font-size:11px;line-height:1.45;color:var(--amber);
  background:var(--inset);border-bottom:1px solid var(--line)}
.price-feed-note::before{content:"ⓘ ";font-weight:700}
.chart-wrap{position:relative;min-height:320px;height:42vh;max-height:460px}
#chart{position:absolute;inset:0}

/* canvas 必须脱流并锁定到父盒：sizeCanvas 把 canvas.width 设为 父宽×dpr，
   若无 CSS 尺寸，则元素显示尺寸=属性像素值（高分屏=父宽×2），在流时会撑爆 grid 列、整页溢出。
   position:absolute+100% 让显示尺寸跟随父盒、高清 backing store 缩放显示，且不参与父级 min-content。 */
.eq-wrap canvas{position:absolute;inset:0;width:100%;height:100%;display:block}

/* ── FOOTER ── */
.footer{display:flex;align-items:center;gap:16px;padding:6px 4px;margin-top:4px;flex-wrap:wrap}
.pstr{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.pstr .meter{width:160px;height:6px;border-radius:3px;background:var(--inset);overflow:hidden;border:1px solid var(--line)}
.pstr .meter i{display:block;height:100%;background:linear-gradient(90deg,var(--green-b),var(--amber));width:10%;transition:width .6s}
.foot-r{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.ctrl{border:1px solid var(--line-2);border-radius:6px;padding:6px 12px;font-size:11px;letter-spacing:.06em;background:var(--panel-2);color:var(--ink-2);transition:.15s}
.ctrl:hover:not([disabled]){border-color:var(--line-3);color:var(--ink)}

/* ── 交易所切换（顶栏 EXCHANGE 控件）── */
.exbtn{border:1px solid var(--line-2);border-radius:5px;padding:3px 9px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:var(--panel-2);color:var(--ink-3);transition:.15s}
.exbtn:hover:not([disabled]){border-color:var(--line-3);color:var(--ink)}
.exbtn.on{border-color:var(--green-line);background:var(--green-bg);color:var(--green);font-weight:700}
/* AUTO-TUNE 的 OFF 按钮：选中态用灰（关闭不是「好/坏」，不用绿）*/
.exbtn.at-off.on{border-color:var(--line-3);background:var(--inset);color:var(--ink-2);font-weight:700}
.exbtn[disabled]{opacity:.5;cursor:wait}
.exmsg{font-size:10px;letter-spacing:.04em;color:var(--ink-3);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exmsg:empty{display:none}
.exmsg.err{color:var(--red)}
.disc{font-size:10px;color:var(--ink-4);letter-spacing:.04em}

/* ── HISTORY（成交与操作流水）── */
.hist-wrap{padding:0;max-height:300px;overflow-y:auto;overflow-x:auto}
.hist{width:100%;border-collapse:collapse;font-size:12px}
.hist th{position:sticky;top:0;background:var(--panel);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-3);font-weight:500;text-align:left;padding:9px 16px;border-bottom:1px solid var(--line)}
.hist td{padding:7px 16px;border-bottom:1px solid var(--line);font-family:var(--led);color:var(--ink-2);white-space:nowrap}
.hist th.num,.hist td.num{text-align:right}
.hist tr:last-child td{border-bottom:0}
.hist .h-time{color:var(--ink-3);font-size:11px}
.hist .h-kind{font-weight:700;letter-spacing:.08em}
.hist .h-buy{color:var(--green)}
.hist .h-sell{color:var(--red)}
.hist .h-sw{color:var(--ink-3)}
.hist .h-tune{color:#7B5EA7}
.hist .h-detail{font-size:11px;color:var(--ink-3);white-space:normal}
.hist .h-sym{font-size:11px;color:var(--ink-2)}
/* 操作徽章：建仓绿底 / 加仓浅绿 / 减仓浅橙 / 清仓橙底 */
.hist .h-op{display:inline-block;padding:1px 7px;border-radius:3px;font-size:10.5px;font-weight:700;letter-spacing:.06em}
.hist .h-open{background:var(--green);color:#fff}
.hist .h-add{background:rgba(31,176,104,.16);color:var(--green)}
.hist .h-reduce{background:rgba(217,122,43,.16);color:#B5832A}
.hist .h-close{background:#D97A2B;color:#fff}
.hist .h-rsn{margin-left:4px;font-size:10px;color:var(--ink-3)}
.hist .h-pnl-up{color:var(--green)}
.hist .h-pnl-dn{color:var(--red)}
.hist .h-fee{font-size:11px;color:var(--ink-3)}
/* 真实成交徽标（source=exchange）：标的列后跟一枚蓝色小标，区别本地 signal_events */
.hist .h-real{display:inline-block;margin-left:6px;padding:0 6px;border-radius:3px;font-size:9.5px;font-weight:700;
  letter-spacing:.04em;background:rgba(43,108,176,.14);color:#2B6CB0;vertical-align:middle}
.hist-empty{padding:18px 16px;font-size:11px;color:var(--ink-3);letter-spacing:.04em}
/* 实盘降级横幅：拉 Gate 真实成交失败时显示，本地记录仍渲染 */
.hist-warn{margin:0 16px 0;padding:7px 10px;font-size:11px;line-height:1.4;color:var(--red);
  background:var(--red-soft);border:1px solid var(--red-line);border-radius:6px}

/* 账户 / 我的密钥 / 实盘控制 */
.acct{padding:14px 16px}
.ctrl-go{border-color:var(--green-line);background:var(--green-bg);color:var(--green)}
.ctrl-warn{border-color:var(--red-line);background:var(--red-bg);color:var(--red)}
#btn-logout{padding:3px 10px;font-size:10px}
.af-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.af-in{border:1px solid var(--line-2);border-radius:6px;padding:7px 10px;font-family:var(--mono);font-size:12px;
  background:var(--panel-2);color:var(--ink);min-width:160px;flex:1 1 160px}
.af-in:focus{outline:none;border-color:var(--green-b)}
.af-msg{margin-top:8px;font-size:11px;letter-spacing:.03em;color:var(--ink-3);min-height:15px}
.af-msg.ok{color:var(--green)} .af-msg.err{color:var(--red)}
.acct-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.acct-col{border:1px solid var(--line);border-radius:8px;padding:13px 14px;background:var(--panel-2)}
.ac-title{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--ink);margin-bottom:8px}
.ac-risk{font-size:10.5px;line-height:1.5;color:var(--red);background:var(--red-soft);border:1px solid var(--red-line);
  border-radius:6px;padding:8px 10px;margin-bottom:10px}
.ac-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ac-bound{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:11px}
.ac-ok{color:var(--green);font-weight:700} .ac-upd{color:var(--ink-3)}
.ac-live{margin-bottom:10px}
.al-row{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px dashed var(--line);font-size:12px}
.al-row .k{color:var(--ink-3)} .al-row .v{font-variant-numeric:tabular-nums;color:var(--ink)}
.al-row .v.dn{color:var(--red);font-weight:700}
/* 邀请码管理（仅管理员可见）：码用等宽字体，已用行变暗 */
.invite-list{margin-top:10px;display:flex;flex-direction:column;gap:6px;max-height:180px;overflow-y:auto}
.inv-row{display:flex;align-items:center;gap:10px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;font-size:11.5px}
.inv-row.used{opacity:.55}
.inv-code{font-family:inherit;font-weight:700;letter-spacing:.08em;color:var(--ink)}
.inv-st{color:var(--ink-3);flex:1}
.inv-copy{padding:2px 8px;font-size:10.5px}
.inv-empty{font-size:11px;color:var(--ink-3);padding:6px 2px}
/* 顶栏社区链接（Discord / X）：与 tagbox 同高的小图标按钮 */
.rail-links{display:flex;gap:6px;align-items:center}
.rail-link{display:flex;align-items:center;justify-content:center;width:26px;height:26px;
  border:1px solid var(--line);border-radius:6px;color:var(--ink-3);background:transparent;
  transition:color .15s,border-color .15s}
.rail-link:hover{color:var(--ink);border-color:var(--ink-3)}
.rail-link svg{width:14px;height:14px}

@media(max-width:880px){
  .toprow,.miro,.pulse-grid{grid-template-columns:1fr}
  .board-wrap{border-right:0;border-bottom:1px solid var(--line)}
  .lb-row{grid-template-columns:34px minmax(96px,auto) 1fr 70px;gap:7px}
  .pulse-grid{gap:14px}
  .mgrid{grid-template-columns:repeat(2,1fr)}
  .mc:nth-child(2n){border-right:0}
  /* HISTORY 列多：窄屏隐藏次要的「标的」「手续费」列，其余靠横向滚动 */
  .hist th.h-sym,.hist td.h-sym,.hist td.h-fee{display:none}
  .acct-cols{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){.pkt{animation:none;opacity:.7}.blink{animation:none}}
