/* SignalBot Mini App — dashboard styles (mini-app-spec.md §5).
   Themes to Telegram: app.js sets the BASE tokens (--bg/--card/--text/--hint/--accent/…) from
   Telegram's themeParams via the CSSOM (el.style.setProperty — CSP-safe, no unsafe-inline) and
   stamps [data-tg-scheme] for the per-scheme semantics. Surfaces derive from base via color-mix so
   the ladder adapts to ANY Telegram theme; profit/loss/warn/critical are OKLCH-harmonised so no hue
   shouts louder than the danger it signals. All CSS lives here (never inline) so the CSP needs no
   'unsafe-inline'. Self-contained: no @import, no CDN, no external font. */

/* ---- tokens -------------------------------------------------------------- */
:root{
  /* base — dark (Telegram night defaults; app.js overrides from themeParams). --bg is the PAGE
     (Telegram secondary_bg), --card the RAISED surface (Telegram bg_color): cards sit above the
     page in both schemes, the native pattern. */
  --bg:#0e1621; --card:#17212b; --text:#f4f7fa; --hint:#6a7c8c; --sub:#95a6b5;
  --accent:#62a0ea; --sep:#0d1620;
  /* semantics — dark */
  --good:oklch(.745 .155 160); --good-ink:oklch(.815 .148 161); --good-tint:oklch(.335 .052 162);
  --loss:oklch(.70 .17 23); --loss-ink:oklch(.735 .165 23); --loss-tint:oklch(.335 .062 23);
  --warn:oklch(.80 .128 82); --warn-ink:oklch(.855 .128 84); --warn-tint:oklch(.34 .05 74);
  --crit:oklch(.745 .17 23); --crit-solid:oklch(.585 .20 23); --crit-on:#ffffff;
  --crit-glow:oklch(.70 .18 23 / .24);
  --shadow:0 1px 2px oklch(0 0 0/.34),0 10px 24px -12px oklch(0 0 0/.62);
  --sheen:linear-gradient(180deg,oklch(1 0 0/.052),oklch(1 0 0/0) 58%);
  /* derived surfaces — resolve against the current --card/--text (per scheme, per Telegram theme) */
  --card2:color-mix(in oklch, var(--card), var(--text) 7%);
  --card-hi:color-mix(in oklch, var(--card), var(--text) 4%);
  --border:color-mix(in oklch, var(--card), var(--text) 15%);
  --border2:color-mix(in oklch, var(--card), var(--text) 8%);
  --sys:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
}
/* light — the pre-JS fallback when opened in a light client without themeParams yet */
@media (prefers-color-scheme: light){ :root:not([data-tg-scheme]){
  --bg:#eff1f5; --card:#ffffff; --text:#0a1017; --hint:#8a97a4; --sub:#5e6b78; --accent:#2f7fe0; --sep:#e4e8ee;
  --good:oklch(.58 .15 159); --good-ink:oklch(.53 .142 159); --good-tint:oklch(.95 .045 162);
  --loss:oklch(.57 .19 25); --loss-ink:oklch(.53 .19 25); --loss-tint:oklch(.951 .038 22);
  --warn:oklch(.64 .13 71); --warn-ink:oklch(.53 .118 63); --warn-tint:oklch(.958 .05 82);
  --crit:oklch(.53 .21 25); --crit-solid:oklch(.552 .208 25); --crit-glow:oklch(.55 .21 25 / .15);
  --shadow:0 1px 2px oklch(.24 .02 255/.05),0 6px 16px -7px oklch(.24 .03 255/.12);
  --sheen:linear-gradient(180deg,oklch(1 0 0/.65),oklch(1 0 0/0) 62%);
}}
:root[data-tg-scheme="light"]{
  --bg:#eff1f5; --card:#ffffff; --text:#0a1017; --hint:#8a97a4; --sub:#5e6b78; --accent:#2f7fe0; --sep:#e4e8ee;
  --good:oklch(.58 .15 159); --good-ink:oklch(.53 .142 159); --good-tint:oklch(.95 .045 162);
  --loss:oklch(.57 .19 25); --loss-ink:oklch(.53 .19 25); --loss-tint:oklch(.951 .038 22);
  --warn:oklch(.64 .13 71); --warn-ink:oklch(.53 .118 63); --warn-tint:oklch(.958 .05 82);
  --crit:oklch(.53 .21 25); --crit-solid:oklch(.552 .208 25); --crit-glow:oklch(.55 .21 25 / .15);
  --shadow:0 1px 2px oklch(.24 .02 255/.05),0 6px 16px -7px oklch(.24 .03 255/.12);
  --sheen:linear-gradient(180deg,oklch(1 0 0/.65),oklch(1 0 0/0) 62%);
}

/* ---- reset + shell ------------------------------------------------------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sys);font-size:14px;
  line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
#app{max-width:520px;margin:0 auto}
.pad{padding:calc(10px + env(safe-area-inset-top)) 12px calc(28px + env(safe-area-inset-bottom))}
svg.i{width:1em;height:1em;display:inline-block;vertical-align:-0.14em;fill:none;stroke:currentColor;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.k{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--hint)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.pos{color:var(--good-ink)} .neg{color:var(--loss-ink)} .amb{color:var(--warn-ink)}

/* ---- cockpit ------------------------------------------------------------- */
.cockpit{border-radius:18px;overflow:hidden;margin-bottom:13px;border:1px solid var(--border);
  background:var(--card);box-shadow:var(--shadow);position:relative}
.cockpit.ok{--gc:var(--good)} .cockpit.warn{--gc:var(--warn)} .cockpit.crit{--gc:var(--crit-solid)}
.cockpit>*{position:relative;z-index:1}
.cockpit::before{content:"";position:absolute;inset:0 0 auto;height:44%;background:var(--sheen);pointer-events:none;z-index:0}
.cockpit::after{content:"";position:absolute;top:0;right:0;width:62%;height:78%;pointer-events:none;z-index:0;
  background:radial-gradient(115% 92% at 92% -8%,color-mix(in oklch,var(--gc) 15%,transparent),transparent 68%)}
.topline{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;border-bottom:1px solid var(--border2)}
.modechip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;font-weight:700;
  letter-spacing:.11em;padding:4px 9px;border-radius:999px}
.modechip.paper{color:var(--warn-ink);background:var(--warn-tint)}
.modechip.live{color:var(--crit-on);background:var(--crit-solid)}
.modechip .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.asof{font-family:var(--mono);font-size:10.5px;color:var(--hint)}
.verdict{display:flex;gap:12px;padding:14px}
.verdict::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:3px;background:var(--vc)}
.verdict{position:relative}
.verdict.ok{--vc:var(--good)} .verdict.warn{--vc:var(--warn)} .verdict.crit{--vc:var(--crit-solid)}
.vicon{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;font-size:21px}
.verdict.ok .vicon{color:var(--good-ink);background:var(--good-tint)}
.verdict.warn .vicon{color:var(--warn-ink);background:var(--warn-tint)}
.verdict.crit .vicon{color:var(--crit-on);background:var(--crit-solid);box-shadow:0 0 0 4px var(--crit-glow)}
.vbody{min-width:0;flex:1;padding-top:1px}
.vtext{font-size:16.5px;font-weight:750;letter-spacing:-.015em;line-height:1.2}
.verdict.ok .vtext{color:var(--good-ink)} .verdict.warn .vtext{color:var(--warn-ink)} .verdict.crit .vtext{color:var(--crit)}
.vsub{margin-top:3px;font-size:12.5px;color:var(--sub);line-height:1.45}
.readouts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border2)}
.ro{background:var(--card);padding:12px 14px 13px}
.ro .k{display:block;margin-bottom:6px}
.ro .big{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:22px;font-weight:600;
  letter-spacing:-.03em;line-height:1;display:flex;align-items:center;gap:5px;min-width:0}
.ro .big span{overflow:hidden;text-overflow:ellipsis}
.ro .big svg.i{width:16px;height:16px;stroke-width:2.6}
.ro .sub{font-family:var(--mono);font-size:11px;margin-top:5px;color:var(--hint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ---- realised glance: today / 7d / since-inception net (the "how's my money doing?" half) ---- */
.realized{border-top:1px solid var(--border2);background:var(--card)}
.rzrow{padding:11px 14px 12px}
.rzrow + .rzrow{border-top:1px solid var(--border2)}
.rzlab{display:block;margin-bottom:8px}
.rz{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--border2);border:1px solid var(--border2);border-radius:11px;overflow:hidden}
.rzc{background:var(--card);padding:9px 6px 8px;text-align:center;min-width:0}
.rzc .k{display:block;margin-bottom:5px;font-size:9px}
.rzv{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:16px;font-weight:600;letter-spacing:-.02em;line-height:1;overflow:hidden;text-overflow:ellipsis}
.rzn{font-family:var(--mono);font-size:9.5px;color:var(--hint);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.alarms{display:flex;flex-wrap:wrap;gap:7px;padding:11px 13px;border-top:1px solid var(--border2)}
.alarm{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:650;padding:5px 10px;border-radius:9px;line-height:1}
.alarm svg.i{width:13px;height:13px}
.alarm.a-warn{color:var(--warn-ink);background:var(--warn-tint)}
.alarm.a-crit{color:var(--crit-on);background:var(--crit-solid);box-shadow:0 2px 8px -2px var(--crit-glow)}
.alarm.a-info{color:var(--sub);background:var(--card2);border:1px solid var(--border)}

/* ---- section headers + accounts ----------------------------------------- */
.section-h{display:flex;align-items:baseline;justify-content:space-between;margin:17px 4px 9px}
.section-h .hint{font-size:11px;color:var(--hint);font-family:var(--mono)}
.accts{display:flex;gap:9px;overflow-x:auto;padding:2px 1px 5px;-webkit-overflow-scrolling:touch}
.accts::-webkit-scrollbar{height:0}
.acct{flex:0 0 auto;min-width:112px;background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:10px 12px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.acct::before{content:"";position:absolute;inset:0 0 auto;height:50%;background:var(--sheen);pointer-events:none}
.acct>*{position:relative}
.acct .row1{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
.acct .nm{font-size:12.5px;font-weight:700;letter-spacing:-.01em}
.acct .ven{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.05em;color:var(--hint);
  border:1px solid var(--border);border-radius:5px;padding:2px 4px}
.acct .eq{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:14.5px;font-weight:600;letter-spacing:-.02em}
.acct .chg{font-family:var(--mono);font-size:10.5px;margin-top:2px;font-weight:500}
.acct .st{font-size:10px;color:var(--hint);margin-top:6px;font-family:var(--mono)}
.acct.flat{opacity:.66}
.acct.flat .eq{color:var(--hint);font-size:12px;font-weight:500}
.acct.live{box-shadow:inset 3px 0 0 var(--crit-solid),var(--shadow)}
.tag-live{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.06em;color:var(--crit-on);
  background:var(--crit-solid);border-radius:5px;padding:2px 5px}

/* ---- 💰 real-money block (mixed-mode §6) -------------------------------- */
.livebook{border-top:1px solid var(--border2);padding:11px 14px 12px}
.lb-head{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.lb-tag{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.06em;color:var(--crit-on);
  background:var(--crit-solid);border-radius:5px;padding:2px 6px}
.lb-k{font-size:11px;font-weight:650;color:var(--sub)}
.lb-pnl{margin-left:auto;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}
.lb-rows{display:flex;flex-direction:column;gap:7px}
.lb-row{display:flex;align-items:center;gap:10px}
.lb-nm{flex:1;font-size:12.5px;font-weight:700;letter-spacing:-.01em}
.lb-eq{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:14.5px;font-weight:600;letter-spacing:-.02em}
.lb-st{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.04em;padding:3px 7px;border-radius:999px}
.lb-st.on{color:var(--good-ink);background:var(--good-tint)}
.lb-st.off{color:var(--warn-ink);background:var(--warn-tint)}
.lb-st.down{color:var(--crit-on);background:var(--crit-solid)}

/* ---- positions ----------------------------------------------------------- */
.toolbar{display:flex;flex-direction:column;gap:8px;position:sticky;top:0;z-index:6;
  background:linear-gradient(var(--bg) 78%,transparent);padding:7px 1px 10px;margin:0 -1px}
.chiprow{display:flex;gap:7px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:1px}
.chiprow::-webkit-scrollbar{height:0}
.chip{flex:0 0 auto;appearance:none;border:1px solid var(--border);background:var(--card);color:var(--sub);
  font-family:var(--sys);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:999px;cursor:pointer;
  white-space:nowrap;transition:.14s;display:inline-flex;align-items:center;gap:6px}
.chip .kk{font-family:var(--mono);font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--hint)}
.chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff;
  box-shadow:0 2px 8px -3px color-mix(in oklch,var(--accent) 70%,transparent)}
.chip[aria-pressed="true"] .kk{color:rgba(255,255,255,.82)}
.chip:active{transform:scale(.95)}
.chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.filternote{font-size:10.5px;color:var(--hint);font-family:var(--mono);padding:0 3px;display:flex;align-items:center;gap:5px}
.filternote svg.i{width:11px;height:11px}
.plist{display:flex;flex-direction:column;gap:9px}
.prow{background:var(--card);border:1px solid var(--border);border-radius:15px;padding:12px 14px;box-shadow:var(--shadow);
  position:relative;cursor:pointer;transition:transform .09s,border-color .14s;overflow:hidden}
.prow::before{content:"";position:absolute;inset:0 0 auto;height:42%;background:var(--sheen);pointer-events:none}
.prow>*{position:relative}
.prow:active{transform:scale(.99)}
.prow.naked{border-color:color-mix(in oklch,var(--crit) 58%,var(--border));box-shadow:var(--shadow),0 0 0 3px var(--crit-glow)}
.prow.naked::after{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:3px;background:var(--crit-solid);z-index:2}
.r1{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.sym{display:flex;align-items:center;gap:7px;min-width:0;flex-wrap:wrap}
.sym .nm{font-family:var(--mono);font-size:16px;font-weight:700;letter-spacing:-.02em}
.side{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.05em;padding:2px 6px;border-radius:6px}
.side.long{color:var(--good-ink);background:var(--good-tint)}
.side.short{color:var(--loss-ink);background:var(--loss-tint)}
.tag{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.04em;color:var(--hint);border:1px solid var(--border);border-radius:5px;padding:2px 5px}
.tag.partial{color:var(--warn-ink);border-color:color-mix(in oklch,var(--warn) 45%,var(--border));background:var(--warn-tint)}
.tag.trader{color:var(--sub)}
.pnl{text-align:right;flex:0 0 auto}
.pnl .u{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:700;line-height:1.05;letter-spacing:-.02em}
.pnl .p{font-family:var(--mono);font-size:10.5px;margin-top:2px;font-weight:500}
.r2{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.flow{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:11.5px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rmult{font-family:var(--mono);font-size:10.5px;font-weight:600;flex:0 0 auto;padding:2px 8px;border-radius:7px;background:var(--card2);border:1px solid var(--border2)}
.r3{display:flex;align-items:center;gap:7px;margin-top:10px;flex-wrap:wrap}
.slchip{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11px;font-weight:600;padding:4px 9px;border-radius:8px}
.slchip svg.i{width:12px;height:12px}
.slchip.ok,.slchip.be{color:var(--good-ink);background:var(--good-tint)}
.slchip.botdef{color:var(--warn-ink);background:var(--warn-tint)}
.slchip.none{color:var(--crit-on);background:var(--crit-solid);font-weight:700;letter-spacing:.04em}
.tpchip{font-family:var(--mono);font-size:11px;color:var(--sub);padding:4px 8px;border-radius:8px;background:var(--card2);border:1px solid var(--border2)}
.stale{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--warn-ink);background:var(--warn-tint);padding:4px 8px;border-radius:8px}
.stale svg.i{width:11px;height:11px}
.chev{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--hint);opacity:.5;z-index:2}
.chev svg.i{width:17px;height:17px;stroke-width:2.4}

/* ---- watches (compact) --------------------------------------------------- */
.wlist{display:flex;flex-direction:column;gap:7px}
.wrow{display:flex;align-items:center;gap:9px;background:var(--card2);border:1px solid var(--border2);border-radius:12px;padding:9px 12px}
.wrow .wsym{font-family:var(--mono);font-size:13px;font-weight:700;flex:0 0 auto}
.wrow .wside{font-family:var(--mono);font-size:8px;font-weight:700;color:var(--hint)}
.wkind{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.05em;padding:2px 6px;border-radius:6px;flex:0 0 auto}
.wkind.pulled{color:var(--warn-ink);background:var(--warn-tint)}
.wkind.limit,.wkind.zone,.wkind.far,.wkind.rung{color:var(--sub);background:var(--card);border:1px solid var(--border)}
.wsum{font-family:var(--mono);font-size:10.5px;color:var(--hint);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.empty{font-size:12px;color:var(--hint);padding:14px 4px;text-align:center;font-family:var(--mono)}

/* ---- (4) equity curve card (D#10) --------------------------------------- */
.equity{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);position:relative;overflow:hidden;margin-top:2px}
.equity::before{content:"";position:absolute;inset:0 0 auto;height:38%;background:var(--sheen);pointer-events:none}
.equity>*{position:relative}
.eq-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:13px 15px 6px}
.eq-head .lhs .k{display:block;margin-bottom:5px}
.eq-head .now{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:23px;font-weight:600;letter-spacing:-.03em;line-height:1}
.eq-dd{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11px;font-weight:650;padding:5px 9px;border-radius:9px}
.eq-dd.under{color:var(--warn-ink);background:var(--warn-tint)}
.eq-dd.athigh{color:var(--good-ink);background:var(--good-tint)}
.eq-dd svg.i{width:12px;height:12px}
.eq-chart{padding:2px 8px 0}
.eq-chart svg{display:block;width:100%;height:auto;overflow:visible}
.eq-line{fill:none;stroke:var(--accent);stroke-width:2.1;stroke-linejoin:round;stroke-linecap:round}
.eq-hw{stroke:var(--hint);stroke-width:1;stroke-dasharray:4 3;opacity:.7}
.eq-dot{fill:var(--accent)}
.eq-dot-halo{fill:var(--accent);opacity:.18}
.eq-hwtag{font-family:var(--mono);font-size:8.5px;font-weight:600;fill:var(--hint)}
.eq-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 15px 13px;font-family:var(--mono);font-size:10px;color:var(--hint)}
.eq-range{display:inline-flex;gap:4px;background:var(--card2);border:1px solid var(--border2);border-radius:9px;padding:3px;flex:0 0 auto}
.eq-range button{appearance:none;border:0;background:transparent;color:var(--sub);font-family:var(--mono);font-size:10px;font-weight:650;padding:4px 9px;border-radius:6px;cursor:pointer;transition:.13s}
.eq-range button[aria-pressed="true"]{background:var(--accent);color:#fff}
.eq-range button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.eq-empty{padding:24px 16px;text-align:center;font-family:var(--mono);font-size:12px;color:var(--hint)}

/* ---- rich watches (D#12 + D#4) ------------------------------------------ */
.board-chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.02em;padding:3px 8px;border-radius:7px}
.board-chip svg.i{width:11px;height:11px}
.board-chip.ok{color:var(--good-ink);background:var(--good-tint)}
.board-chip.part{color:var(--warn-ink);background:var(--warn-tint)}
.board-chip.unread{color:var(--sub);background:var(--card2);border:1px solid var(--border)}
.wlist{display:flex;flex-direction:column;gap:8px}
.wcard{background:var(--card2);border:1px solid var(--border2);border-radius:13px;padding:10px 13px;position:relative;overflow:hidden}
.wc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wc-sym{font-family:var(--mono);font-size:14px;font-weight:700;letter-spacing:-.01em}
.wc-side{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.05em;padding:2px 5px;border-radius:5px}
.wc-side.long{color:var(--good-ink);background:var(--good-tint)}
.wc-side.short{color:var(--loss-ink);background:var(--loss-tint)}
.wkind{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:6px}
.wkind.pulled{color:var(--warn-ink);background:var(--warn-tint)}
.wkind.rung{color:var(--accent);background:color-mix(in oklch,var(--accent) 15%,transparent)}
.wkind.far,.wkind.limit,.wkind.zone{color:var(--sub);background:var(--card);border:1px solid var(--border)}
.wc-trader{margin-left:auto;font-family:var(--mono);font-size:9px;color:var(--hint)}
.wc-sum{font-family:var(--mono);font-size:11px;color:var(--sub);margin-top:7px;line-height:1.4;overflow-wrap:anywhere}
.wc-foot{display:flex;align-items:center;gap:9px;margin-top:8px;flex-wrap:wrap}
.wc-nomargin{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:9px;color:var(--hint)}
.wc-nomargin svg.i{width:10px;height:10px}
.wc-board{font-family:var(--mono);font-size:9px;font-weight:650;padding:2px 6px;border-radius:5px}
.wc-board.pending{color:var(--warn-ink);background:var(--warn-tint)}
.wc-board.invalid{color:var(--crit-on);background:var(--crit-solid)}
.wc-stale{display:inline-flex;align-items:center;gap:3px;font-family:var(--mono);font-size:9px;color:var(--warn-ink)}
.wc-stale svg.i{width:10px;height:10px}

/* ---- (5) per-position hero detail (full view) --------------------------- */
.detail.enter{animation:slidein .24s cubic-bezier(.22,.61,.36,1) both}
@media (prefers-reduced-motion:reduce){.detail.enter{animation:none}}
@keyframes slidein{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
.dbar{display:flex;align-items:center;gap:6px;padding:calc(6px + env(safe-area-inset-top)) 2px 10px;position:sticky;top:0;z-index:6;background:linear-gradient(var(--bg) 80%,transparent)}
.dback{appearance:none;border:0;background:transparent;color:var(--accent);font-family:var(--sys);font-size:15px;font-weight:600;display:inline-flex;align-items:center;gap:2px;cursor:pointer;padding:5px 8px 5px 4px}
.dback svg.i{width:19px;height:19px;stroke-width:2.4}
.dbar .dsym{font-family:var(--mono);font-size:15px;font-weight:700;letter-spacing:-.01em}
.dbar .lev{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--sub);border:1px solid var(--border);border-radius:7px;padding:3px 8px}
.dhero{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding:6px 4px 0}
.dpnl{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:34px;font-weight:700;letter-spacing:-.03em;line-height:1}
.dsub{font-family:var(--mono);font-size:12px;margin-top:7px;display:flex;align-items:center;gap:2px;flex-wrap:wrap}
.dsub .rpill{padding:2px 8px;border-radius:7px;font-weight:650;margin-right:6px}
.dsub .rpill.pos{color:var(--good-ink);background:var(--good-tint)}
.dsub .rpill.neg{color:var(--loss-ink);background:var(--loss-tint)}
.dnomark{font-family:var(--mono);font-size:12px;color:var(--hint);display:inline-flex;align-items:center;gap:6px;margin-top:7px}
.dnomark svg.i{width:14px;height:14px}
.dspark{margin:16px 0 4px}
.dspark svg{display:block;width:100%;height:56px;overflow:visible}
.dspark .sl{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.dspark .sf{opacity:.13}
.dstop{margin-top:18px;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px 15px;box-shadow:var(--shadow)}
.dstop-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.dstop-away{font-family:var(--mono);font-size:11px;font-weight:650}
.dstop-away.pos{color:var(--good-ink)}.dstop-away.amb{color:var(--warn-ink)}.dstop-away.neg{color:var(--loss-ink)}
.dtrack{position:relative;height:10px;border-radius:6px;background:var(--card2);border:1px solid var(--border2);overflow:hidden}
.dtrack .fill{position:absolute;left:0;top:0;bottom:0;border-radius:6px}
.dtrack.none .fill{right:0;background:var(--crit-solid)}
.dmark{position:absolute;top:-4px;width:3px;height:18px;background:var(--text);border-radius:2px;transform:translateX(-1.5px);box-shadow:0 0 0 2px var(--card)}
.dstop-ends{display:flex;align-items:center;justify-content:space-between;margin-top:9px;font-family:var(--mono);font-size:10px;color:var(--sub)}
.dstop-lab{margin-top:12px;display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11.5px;font-weight:600}
.dstop-lab.none{color:var(--crit)}.dstop-lab.botdef{color:var(--warn-ink)}
.dstop-lab.ok,.dstop-lab.be{color:var(--good-ink)}
.dstop-lab svg.i{width:13px;height:13px}
.dgrid{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border2);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.dcell{background:var(--card);padding:12px 14px;min-width:0}
.dcell .k{display:block;margin-bottom:5px}
.dcell .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.dcell .v.mut{color:var(--hint);font-weight:500}
.dcell .vn{font-family:var(--mono);font-size:9.5px;color:var(--hint);margin-top:2px}
.dmeta{margin-top:16px;text-align:center;font-family:var(--mono);font-size:10px;color:var(--hint)}
.dloading{padding:40px 16px;text-align:center;font-family:var(--mono);font-size:12px;color:var(--hint)}

/* copyable suggested commands (sb-ui, Ken 2026-08-24) — display + clipboard ONLY, never a send path.
   Rows are one tap target each (the copy pill is visual feedback, not a nested button). */
.dact{margin-top:18px;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.dact::before{content:"";position:absolute;inset:0 0 auto;height:38%;background:var(--sheen);pointer-events:none}
.dact>*{position:relative}
.dact-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:13px 15px 10px}
.dact-hint{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.04em;color:var(--hint)}
.dact-list{display:flex;flex-direction:column;gap:1px;background:var(--border2)}
.dact-row{display:flex;align-items:center;gap:11px;width:100%;text-align:left;appearance:none;cursor:pointer;
  background:var(--card);border:0;padding:11px 15px;color:inherit;font-family:var(--sys);transition:background .12s;
  -webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.dact-row:active{background:var(--card2)}
.dact-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.dact-ic{width:30px;height:30px;border-radius:9px;flex:0 0 auto;display:grid;place-items:center}
.dact-ic svg.i{width:15px;height:15px}
.dact-row.danger .dact-ic{color:var(--loss-ink);background:var(--loss-tint)}
.dact-row.safe .dact-ic{color:var(--good-ink);background:var(--good-tint)}
.dact-row.warn .dact-ic{color:var(--warn-ink);background:var(--warn-tint)}
.dact-body{min-width:0;flex:1}
/* the command itself stays manually selectable — the last-resort fallback if the clipboard API is
   ever blocked (old WebView): Ken can long-press the command text and copy it by hand. */
.dact-cmd{display:block;font-family:var(--mono);font-size:13.5px;font-weight:700;letter-spacing:-.01em;color:var(--text);
  -webkit-user-select:text;user-select:text}
.dact-desc{display:block;font-family:var(--sys);font-size:11px;color:var(--sub);margin-top:3px;line-height:1.35;overflow-wrap:anywhere}
.dact-copy{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:10px;font-weight:650;
  color:var(--sub);border:1px solid var(--border);border-radius:8px;padding:5px 9px;transition:.14s;white-space:nowrap}
.dact-copy svg.i{width:12px;height:12px}
.dact-copy.done{color:var(--good-ink);border-color:color-mix(in oklch,var(--good) 45%,var(--border));background:var(--good-tint)}
.dact-note{font-size:11px;color:var(--sub);line-height:1.45;padding:11px 15px 13px;border-top:1px solid var(--border2)}

/* ---- (D#14) the original signal — read-only provenance panel ------------- */
/* the WG-Bot OPEN as the trader posted it; matches the .dstop / .dact card language. */
.dsig{margin-top:18px;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.dsig::before{content:"";position:absolute;inset:0 0 auto;height:38%;background:var(--sheen);pointer-events:none}
.dsig>*{position:relative}
.dsig-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:13px 15px 0}
.dsig-src{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:9px;font-weight:650;letter-spacing:.02em;color:var(--hint)}
.dsig-src svg.i{width:11px;height:11px}
.dsig-sub{display:flex;align-items:center;gap:8px;padding:9px 15px 0}
.dsig-type{font-family:var(--mono);font-size:10px;color:var(--hint);letter-spacing:.02em}
.dsig-quote{margin:11px 15px 0;padding:9px 12px 9px 13px;background:var(--card2);border:1px solid var(--border2);
  border-left:2px solid color-mix(in oklch,var(--accent) 55%,var(--border));border-radius:9px;
  font-family:var(--mono);font-size:11.5px;line-height:1.5;color:var(--sub);overflow-wrap:anywhere}
.dsig-quote .qm{color:var(--accent);font-weight:700}
.dsig-grid{margin:12px 15px 0;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border2);
  border:1px solid var(--border2);border-radius:11px;overflow:hidden}
.dsig-cell{background:var(--card);padding:9px 12px;min-width:0}
.dsig-cell .k{display:block;margin-bottom:5px}
.dsig-cell .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:14px;font-weight:650;
  letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dsig-cell .v .u{font-size:10.5px;color:var(--hint);font-weight:500;margin-left:4px}
.dsig-cell.risk .v{color:var(--accent)}
.dsig-tps{font-family:var(--mono);font-size:11px;color:var(--sub);padding:11px 15px 0;line-height:1.4;overflow-wrap:anywhere}
.dsig-meta{margin-top:11px;padding:10px 15px 12px;border-top:1px solid var(--border2);font-family:var(--mono);
  font-size:10px;color:var(--hint);display:flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1.5}
.dsig-status{color:var(--good-ink);font-weight:600}
.dsig-dot{opacity:.5}

/* ---- performance surface (Phase 5 / sb-ui) ------------------------------ */
/* the tappable dashboard entry (shown only when server.features.performance is on) */
.perf-entry{display:flex;align-items:center;gap:12px;width:100%;text-align:left;appearance:none;cursor:pointer;
  background:var(--card);border:1px solid var(--border);border-radius:15px;padding:12px 14px;box-shadow:var(--shadow);
  position:relative;overflow:hidden;transition:transform .09s,border-color .14s;margin-top:2px;color:inherit;font-family:var(--sys)}
.perf-entry::before{content:"";position:absolute;inset:0 0 auto;height:44%;background:var(--sheen);pointer-events:none}
.perf-entry>*{position:relative}
.perf-entry:active{transform:scale(.99)}
.perf-entry:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.pe-ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;color:var(--accent);
  background:color-mix(in oklch,var(--accent) 15%,transparent)}
.pe-ic svg.i{width:20px;height:20px;stroke-width:2.1}
.pe-body{min-width:0;flex:1}
.pe-title{font-size:14.5px;font-weight:750;letter-spacing:-.01em}
.pe-sub{font-size:11.5px;color:var(--sub);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pe-chev{color:var(--hint);opacity:.55;flex:0 0 auto}
.pe-chev svg.i{width:18px;height:18px;stroke-width:2.4}

.perf.enter{animation:slidein .24s cubic-bezier(.22,.61,.36,1) both}
@media (prefers-reduced-motion:reduce){.perf.enter{animation:none}}
.perf-seg{display:flex;gap:4px;background:var(--card2);border:1px solid var(--border2);border-radius:10px;padding:3px;margin:2px 0 13px}
.perf-seg button{flex:1;appearance:none;border:0;background:transparent;color:var(--sub);font-family:var(--sys);
  font-size:12.5px;font-weight:650;padding:7px 10px;border-radius:8px;cursor:pointer;transition:.13s}
.perf-seg button[aria-pressed="true"]{background:var(--accent);color:#fff;box-shadow:0 2px 8px -3px color-mix(in oklch,var(--accent) 70%,transparent)}
.perf-seg button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* copy-tax hero — the headline: the traders' posted calls vs what our copy banked, over the ONE
   comparable window (since copying began). State encoded in colour by sign; mono tabular numbers. */
.perf-hero{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.perf-hero::before{content:"";position:absolute;inset:0 0 auto;height:40%;background:var(--sheen);pointer-events:none}
.perf-hero>*{position:relative}
.ph-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 15px 0}
.ph-win{font-family:var(--mono);font-size:9.5px;font-weight:650;color:var(--hint);border:1px solid var(--border);border-radius:6px;padding:3px 7px}
.ph-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border2);margin-top:11px}
.ph-cell{background:var(--card);padding:11px 15px 12px}
.ph-cell .kk{font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--hint);display:block;margin-bottom:6px}
.ph-cell .big{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:21px;font-weight:600;letter-spacing:-.03em;line-height:1}
.ph-cell .sub{font-family:var(--mono);font-size:10.5px;color:var(--hint);margin-top:5px}
.ph-tax{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 15px;border-top:1px solid var(--border2)}
.ph-tax .lab{font-size:12px;color:var(--sub);line-height:1.4}
.ph-taxchip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:13px;font-weight:700;padding:6px 11px;border-radius:9px}
.ph-taxchip.neg{color:var(--loss-ink);background:var(--loss-tint)}
.ph-taxchip.pos{color:var(--good-ink);background:var(--good-tint)}
.ph-taxchip .t{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.05em;opacity:.72;text-transform:uppercase}
.ph-cold{font-size:11.5px;color:var(--sub);line-height:1.5;padding:10px 15px;border-top:1px solid var(--border2);background:color-mix(in oklch,var(--accent) 6%,transparent);border-left:2px solid color-mix(in oklch,var(--accent) 45%,var(--border))}
.ph-cold .amt{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}
.ph-note{font-size:11.5px;color:var(--sub);line-height:1.5;padding:10px 15px 13px;border-top:1px solid var(--border2)}
.perf-winnote{font-family:var(--mono);font-size:10px;color:var(--hint);margin:-2px 4px 9px;line-height:1.4}

/* per-trader card — echoes .prow; two labelled rows: THEIR posted-R record and OUR paper copy */
.tlist{display:flex;flex-direction:column;gap:9px}
.tcard{background:var(--card);border:1px solid var(--border);border-radius:15px;padding:12px 14px;box-shadow:var(--shadow);position:relative;overflow:hidden;cursor:pointer;transition:transform .09s,border-color .14s}
.tcard::before{content:"";position:absolute;inset:0 0 auto;height:42%;background:var(--sheen);pointer-events:none}
.tcard>*{position:relative}
.tcard:active{transform:scale(.99)}
.tcard:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tcard.on{border-color:color-mix(in oklch,var(--accent) 55%,var(--border));box-shadow:var(--shadow),0 0 0 2px color-mix(in oklch,var(--accent) 22%,transparent)}
.tc-top{display:flex;align-items:center;gap:8px}
.tc-nm{font-size:14px;font-weight:750;letter-spacing:-.01em}
.tc-ven{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.05em;color:var(--hint);border:1px solid var(--border);border-radius:5px;padding:2px 4px}
.tc-net{margin-left:auto;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700;letter-spacing:-.02em}
.tc-net .t{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.06em;color:var(--hint);text-transform:uppercase;margin-right:5px}
.tc-rows{margin-top:10px;display:flex;flex-direction:column;gap:1px;background:var(--border2);border:1px solid var(--border2);border-radius:10px;overflow:hidden}
.tc-row{display:flex;align-items:center;gap:8px;background:var(--card);padding:8px 11px}
.tc-row .lab{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--hint);flex:0 0 64px}
.tc-row .stat{font-family:var(--mono);font-size:11px;color:var(--sub);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc-row .val{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700;flex:0 0 auto}
.tc-row.ours{background:var(--card-hi)}
.tc-row .muted{color:var(--hint)}

/* closed-trade history row — compact, echoes .wrow */
.hlist{display:flex;flex-direction:column;gap:6px}
.hrow{display:flex;align-items:center;gap:9px;background:var(--card2);border:1px solid var(--border2);border-radius:11px;padding:8px 11px}
.hrow .hdate{font-family:var(--mono);font-size:10px;color:var(--hint);flex:0 0 40px}
.hrow .side{flex:0 0 auto}
.hrow .hsym{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:-.01em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hrow .htr{font-family:var(--mono);font-size:9px;color:var(--hint);flex:0 0 auto}
.hrow .hr{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700;flex:0 0 54px;text-align:right}
.hrow .hr.be{color:var(--hint)}
.hrow .hout{flex:0 0 26px;text-align:right;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.03em}
.hrow .hout.be{color:var(--hint)}
.hcap{text-align:center;font-family:var(--mono);font-size:10px;color:var(--hint);padding:11px 4px 2px}

/* ---- activity timeline (Phase 8 / sb-ui) -------------------------------- */
/* the tappable dashboard entry — mirrors .perf-entry */
.act-entry{display:flex;align-items:center;gap:12px;width:100%;text-align:left;appearance:none;cursor:pointer;
  background:var(--card);border:1px solid var(--border);border-radius:15px;padding:12px 14px;box-shadow:var(--shadow);
  position:relative;overflow:hidden;transition:transform .09s,border-color .14s;margin-top:9px;color:inherit;font-family:var(--sys)}
.act-entry::before{content:"";position:absolute;inset:0 0 auto;height:44%;background:var(--sheen);pointer-events:none}
.act-entry>*{position:relative}
.act-entry:active{transform:scale(.99)}
.act-entry:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ae-ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;color:var(--accent);
  background:color-mix(in oklch,var(--accent) 15%,transparent)}
.ae-ic svg.i{width:20px;height:20px;stroke-width:2.1}
.ae-body{min-width:0;flex:1}
.ae-title{font-size:14.5px;font-weight:750;letter-spacing:-.01em}
.ae-sub{font-size:11.5px;color:var(--sub);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ae-chev{color:var(--hint);opacity:.55;flex:0 0 auto}
.ae-chev svg.i{width:18px;height:18px;stroke-width:2.4}

.activity.enter{animation:slidein .24s cubic-bezier(.22,.61,.36,1) both}
@media (prefers-reduced-motion:reduce){.activity.enter{animation:none}}

/* day group header + net */
.aday{display:flex;align-items:center;gap:9px;margin:16px 2px 9px}
.aday .d{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.02em;color:var(--sub)}
.aday .rail{flex:1;height:1px;background:var(--border2)}
.aday .sum{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:10.5px;font-weight:700}

/* the timeline: a spine down the node column, an event card per row */
.alist{display:flex;flex-direction:column;gap:0;position:relative;margin-left:6px}
.alist::before{content:"";position:absolute;left:11px;top:14px;bottom:14px;width:2px;background:var(--border2);border-radius:2px}
.arow{display:flex;align-items:stretch;gap:12px;padding:5px 0;position:relative}
.arow.tap{cursor:pointer}
.anode{width:24px;flex:0 0 auto;display:flex;justify-content:center;padding-top:8px;position:relative;z-index:1}
.adot{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;box-shadow:0 0 0 4px var(--bg)}
.adot svg.i{width:13px;height:13px;stroke-width:2.2}
.adot.open{color:var(--accent);background:color-mix(in oklch,var(--accent) 16%,transparent)}
.adot.win{color:var(--good-ink);background:var(--good-tint)}
.adot.loss{color:var(--loss-ink);background:var(--loss-tint)}
.adot.be{color:var(--sub);background:var(--card2)}

.abody{flex:1;min-width:0;background:var(--card);border:1px solid var(--border);border-radius:13px;padding:10px 12px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .09s,border-color .14s}
.abody::before{content:"";position:absolute;inset:0 0 auto;height:46%;background:var(--sheen);pointer-events:none}
.abody>*{position:relative}
.arow.tap:active .abody{transform:scale(.99)}
.arow.tap:focus-visible{outline:none}
.arow.tap:focus-visible .abody{outline:2px solid var(--accent);outline-offset:1px}
.atop{display:flex;align-items:center;gap:7px;min-width:0}
.averb{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:2px 6px;border-radius:5px;flex:0 0 auto}
.averb.open{color:var(--accent);background:color-mix(in oklch,var(--accent) 14%,transparent)}
.averb.close{color:var(--sub);background:var(--card2);border:1px solid var(--border2)}
.asym{font-family:var(--mono);font-size:14.5px;font-weight:700;letter-spacing:-.02em}
.atr{margin-left:auto;font-family:var(--mono);font-size:9px;color:var(--hint);flex:0 0 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aline{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}
.adesc{font-family:var(--mono);font-size:11px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.aentry{font-weight:700;color:var(--text)}
.aresult{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.ar{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}
.ausd{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}
.aout{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.04em;padding:2px 6px;border-radius:5px}
.aout.win{color:var(--good-ink);background:var(--good-tint)}
.aout.loss{color:var(--loss-ink);background:var(--loss-tint)}
.aout.be{color:var(--sub);background:var(--card2)}
.arisk{font-family:var(--mono);font-size:10.5px;color:var(--hint)}
.achev{color:var(--hint);opacity:.5;display:inline-flex}
.achev svg.i{width:15px;height:15px;stroke-width:2.4}

/* lifecycle milestones (Phase 8.1): stop→BE ("safe") + cancelled/expired ("void") — a LIGHTER marker
   than the raised open/close cards so the eye still anchors on positions opened & closed. Same spine. */
.adot.safe{color:var(--good-ink);background:var(--good-tint)}
.adot.void{color:var(--hint);background:var(--card2)}
.arow.mini .abody{background:var(--card2);border-color:var(--border2);box-shadow:none;padding:8px 12px}
.arow.mini .abody::before{display:none}
.arow.mini .asym{font-size:13px;color:var(--sub)}
.arow.mini .aline{margin-top:6px}
.averb.safe{color:var(--good-ink);background:var(--good-tint)}
.averb.void{color:var(--hint);background:var(--card2);border:1px solid var(--border2)}
.asafe{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.04em;padding:2px 6px;border-radius:5px;color:var(--good-ink);background:var(--good-tint)}

.aempty{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:26px 20px;text-align:center;box-shadow:var(--shadow);margin-top:6px}
.aempty .ic{width:46px;height:46px;border-radius:13px;margin:0 auto 12px;display:grid;place-items:center;color:var(--hint);background:var(--card2);border:1px solid var(--border)}
.aempty .ic svg.i{width:23px;height:23px;stroke-width:1.9}
.aempty h3{margin:0 0 5px;font-size:15px;font-weight:700}
.aempty p{margin:0 auto;font-size:12.5px;color:var(--sub);max-width:30ch;line-height:1.5}

/* ---- offline / degrade-to-native ---------------------------------------- */
.offline{margin:34px 12px;background:var(--card);border:1px solid var(--border);border-radius:18px;padding:28px 22px;
  text-align:center;box-shadow:var(--shadow);position:relative;overflow:hidden}
.offline::before{content:"";position:absolute;inset:0 0 auto;height:40%;background:var(--sheen)}
.offline>*{position:relative}
.offline .ic{width:52px;height:52px;border-radius:15px;margin:0 auto;display:grid;place-items:center;color:var(--hint);background:var(--card2);border:1px solid var(--border)}
.offline .ic svg.i{width:26px;height:26px;stroke-width:1.9}
.offline h3{margin:15px 0 6px;font-size:17.5px;font-weight:750;letter-spacing:-.01em}
.offline p{margin:0 auto;font-size:13.5px;color:var(--sub);max-width:30ch;line-height:1.5}
.offline .cmd{display:inline-flex;align-items:center;gap:7px;margin-top:16px;font-family:var(--mono);font-size:13px;font-weight:650;
  color:#fff;background:var(--accent);border-radius:11px;padding:10px 16px;box-shadow:0 4px 14px -4px color-mix(in oklch,var(--accent) 70%,transparent)}
.offline .cmd svg.i{width:14px;height:14px}
.offline .cache{margin-top:22px;text-align:left;border-top:1px solid var(--border2);padding-top:16px}
.offline .cache .k{margin-bottom:10px;display:flex;align-items:center;gap:6px}
.offline .cache .k svg.i{width:11px;height:11px}
.cachegrid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border2);border-radius:12px;overflow:hidden;border:1px solid var(--border)}
.foot{padding:20px 4px 0;text-align:center}
.foot .k{font-size:9px;color:var(--hint);letter-spacing:.1em}

/* the "as of" freshness line under the whole view */
.asof-foot{text-align:center;font-family:var(--mono);font-size:10px;color:var(--hint);padding:14px 4px 0}
.asof-foot.stale{color:var(--warn-ink)}

/* ---- motion -------------------------------------------------------------- */
@media (prefers-reduced-motion:no-preference){
  .pad.enter>*{animation:rise .34s cubic-bezier(.22,.61,.36,1) both}
  .pad.enter>*:nth-child(2){animation-delay:.03s} .pad.enter>*:nth-child(3){animation-delay:.06s}
  .pad.enter>*:nth-child(4){animation-delay:.09s} .pad.enter>*:nth-child(5){animation-delay:.12s}
  .pad.enter>*:nth-child(n+6){animation-delay:.14s}
  @keyframes rise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
}
