/* ==========================================================================
   DEX Risk · design system (shared by the dashboard SPA and server pages)
   Mobile-first (iPhone Safari), dark, no external assets.
   ========================================================================== */
:root{
  color-scheme:dark;
  /* palette */
  --bg:#0a0d13;--bg2:#0d1118;--panel:#121822;--panel2:#171f2b;--panel3:#1d2633;
  --line:rgba(255,255,255,.07);--line2:rgba(255,255,255,.12);
  --text:#e9eef5;--text2:#c5ccd8;--muted:#8b95a7;--faint:#5f6a7d;
  --accent:#5b9dff;--accent-2:#86b8ff;--accent-bg:rgba(91,157,255,.14);
  --green:#35c47c;--green-bg:rgba(53,196,124,.13);--red:#ff5d5d;--red-bg:rgba(255,93,93,.13);
  --yellow:#f1b13c;--yellow-bg:rgba(241,177,60,.13);--orange:#ff8b3d;--orange-bg:rgba(255,139,61,.14);
  /* compat aliases used by older markup */
  --blue:var(--accent);
  /* spacing / radius / type */
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;
  --r-sm:8px;--r:12px;--r-lg:16px;--r-xl:20px;--r-pill:999px;
  --fs-xs:12px;--fs-sm:13px;--fs:15px;--fs-md:16px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang TC","Noto Sans TC","Hiragino Sans","Microsoft JhengHei","Segoe UI",Roboto,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sh-1:0 1px 0 rgba(255,255,255,.035) inset,0 1px 2px rgba(0,0,0,.25);
  --sh-2:0 1px 0 rgba(255,255,255,.04) inset,0 10px 30px -12px rgba(0,0,0,.55);
  --ease:cubic-bezier(.2,.8,.2,1);--dur:200ms;--tap:44px;
  --safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);
  --safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;background:var(--bg)}
body{margin:0;min-height:100vh;background:radial-gradient(1200px 600px at 50% -200px,rgba(91,157,255,.08),transparent 70%),var(--bg);
  color:var(--text);font-family:var(--font);font-size:var(--fs);line-height:1.55;letter-spacing:.01em;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;
  padding-left:var(--safe-l);padding-right:var(--safe-r);padding-bottom:var(--safe-b)}
:lang(zh-Hant) body,body:lang(zh-Hant){letter-spacing:.02em}
a{color:var(--accent);text-decoration:none;transition:color var(--dur) var(--ease)}
a:hover{color:var(--accent-2)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
::selection{background:rgba(91,157,255,.35)}
.pos{color:var(--green)}.neg{color:var(--red)}.muted{color:var(--muted)}
.note{font-size:var(--fs-xs);color:var(--muted);line-height:1.6}
.num,td.num,.stat .v,.run .big,.price,.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
pre{white-space:pre-wrap;font-size:var(--fs-xs);color:var(--muted);margin:0;font-family:var(--mono)}
code{font-family:var(--mono);font-size:.92em;background:var(--panel3);padding:1px 6px;border-radius:6px}

/* ---------- header (top safe-area inset: notch / PWA status bar) ---------- */
header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--s2) var(--s3);
  max-width:1200px;margin:0 auto;padding:calc(var(--s3) + var(--safe-t)) var(--s4) var(--s3)}
header h1,h1{font-size:var(--fs-lg);font-weight:750;margin:0;letter-spacing:.01em;line-height:1.3}
header h1 a{color:var(--text)}
.status{font-size:var(--fs-xs);color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;background:var(--faint);vertical-align:middle;transition:background var(--dur)}
.dot.on{background:var(--green);box-shadow:0 0 0 3px rgba(53,196,124,.18);animation:pulse 2s var(--ease) infinite}
@keyframes pulse{50%{box-shadow:0 0 0 6px rgba(53,196,124,0)}}
.userbar,.user{font-size:var(--fs-sm);color:var(--muted);display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;justify-content:flex-end}
.userbar{width:100%}
.userbar>span:first-child,.user>span:first-child{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.userbar a,.user>a{display:inline-flex;align-items:center;min-height:36px;padding:0 6px}
.userbar button,.langbtn,.userbar a.langbtn{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 14px;border-radius:var(--r-pill);
  background:var(--panel2);border:1px solid var(--line2);color:var(--text);font-size:var(--fs-sm);cursor:pointer;transition:background var(--dur) var(--ease),transform 120ms var(--ease)}
.userbar button:active,.langbtn:active{transform:scale(.96)}
.pill,.userbar .pill{display:inline-flex;align-items:center;font-size:var(--fs-xs);font-weight:600;padding:2px 10px;border-radius:var(--r-pill);border:1px solid var(--line2);color:var(--muted);background:transparent;line-height:1.5}
.pill.admin,.userbar .pill{color:var(--accent);border-color:rgba(91,157,255,.4);background:var(--accent-bg)}
.pill.active,.pill.trialing{color:var(--green);border-color:rgba(53,196,124,.4);background:var(--green-bg)}
.pill.past_due{color:var(--yellow);border-color:rgba(241,177,60,.4)}.pill.canceled{color:var(--red);border-color:rgba(255,93,93,.4)}
a.pill{min-height:32px;padding:0 12px}a.pill.active{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}

/* ---------- tab bar (sticky, scroll-snap, edge fade) ---------- */
nav{position:sticky;top:0;z-index:20;display:flex;gap:var(--s2);padding:var(--s2) var(--s4);overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;scroll-padding:0 var(--s4);-webkit-overflow-scrolling:touch;scrollbar-width:none;
  background:rgba(10,13,19,.78);-webkit-backdrop-filter:saturate(160%) blur(16px);backdrop-filter:saturate(160%) blur(16px);
  border-bottom:1px solid var(--line);
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 22px),transparent)}
nav::-webkit-scrollbar{display:none}
nav button,nav>a{flex:0 0 auto;scroll-snap-align:start;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 16px;border-radius:var(--r-pill);
  background:var(--panel);border:1px solid var(--line);color:var(--text2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;cursor:pointer;
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform 120ms var(--ease)}
nav>a{color:var(--text2)!important;align-self:center}
nav button:active,nav>a:active{transform:scale(.96)}
nav button.active{background:linear-gradient(180deg,#6aa6ff,#4a8ef5);border-color:transparent;color:#061326;box-shadow:0 6px 18px -8px rgba(91,157,255,.8)}
nav::after{content:"";flex:0 0 8px}

/* ---------- layout ---------- */
main{max-width:1200px;margin:0 auto;padding:var(--s4)}
.narrow{max-width:440px;margin:var(--s6) auto;padding:0 var(--s4)}
section{display:none}
section.active{display:block;animation:enter 240ms var(--ease) both}
@keyframes enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.card{background:linear-gradient(180deg,rgba(255,255,255,.018),transparent 40%),var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:var(--s4);margin-bottom:var(--s4);box-shadow:var(--sh-2)}
.card h2{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s2);font-size:var(--fs-md);font-weight:700;margin:0 0 var(--s3);letter-spacing:.01em;line-height:1.35}
.card h3{font-size:var(--fs-sm);font-weight:700;color:var(--text2);margin:var(--s3) 0 var(--s2)}
.row{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s2)}
.stat{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:10px var(--s3);min-height:64px;transition:border-color var(--dur)}
.stat .k{font-size:var(--fs-xs);color:var(--muted);font-weight:500;line-height:1.4}
.stat .v{font-size:17px;font-weight:700;margin-top:2px;overflow-wrap:anywhere;line-height:1.35}
.chg{animation:chg 900ms var(--ease)}
@keyframes chg{0%{opacity:.25;transform:translateY(3px)}40%{opacity:1;transform:none}100%{opacity:1}}

/* ---------- buttons & inputs ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);padding:0 18px;border:0;border-radius:var(--r);
  background:linear-gradient(180deg,#6aa6ff,#4a8ef5);color:#061326;font-weight:700;font-size:var(--fs);cursor:pointer;text-decoration:none;
  box-shadow:0 8px 20px -10px rgba(91,157,255,.9);transition:transform 120ms var(--ease),filter var(--dur) var(--ease),opacity var(--dur);user-select:none;-webkit-user-select:none}
.btn:hover{filter:brightness(1.06);color:#061326}.btn:active{transform:scale(.97)}
.btn.red{background:linear-gradient(180deg,#ff6b6b,#e84848);color:#fff;box-shadow:0 8px 20px -10px rgba(255,93,93,.9)}
.btn.ghost{background:var(--panel2);color:var(--text);border:1px solid var(--line2);box-shadow:none}
.btn.ghost:hover{color:var(--text);background:var(--panel3)}
.btn.small{min-height:36px;padding:0 12px;font-size:var(--fs-sm);border-radius:10px}
.btn.full{width:100%;margin-top:var(--s5)}
.btn:disabled{opacity:.42;cursor:not-allowed;transform:none;filter:none}
label{display:block;font-size:var(--fs-sm);color:var(--muted);font-weight:500;margin:var(--s3) 0 6px}
input[type=email],input[type=password],input[type=text],input[type=number],select,select.in,textarea{
  min-height:var(--tap);background:var(--bg2);border:1px solid var(--line2);color:var(--text);border-radius:var(--r);padding:10px 12px;font-size:16px;
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);-webkit-appearance:none;appearance:none}
input[type=email],input[type=password],input[type=text]{width:100%}
input[type=number]{width:120px}
select,select.in{width:auto;padding-right:32px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,157,255,.22)}
input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);flex:0 0 auto;margin:0}
.msg{font-size:var(--fs-sm);margin-top:var(--s2);min-height:20px}
.err,.ok{border-radius:var(--r);padding:10px 12px;font-size:var(--fs-sm);margin-bottom:var(--s3)}
.err{background:var(--red-bg);border:1px solid rgba(255,93,93,.35);color:#ffc2bd}
.ok{background:var(--green-bg);border:1px solid rgba(53,196,124,.35);color:#b6f0cc}
form.inline{display:flex;gap:6px;align-items:center;flex-wrap:nowrap;margin:0}

/* ---------- tags / badges ---------- */
.tag{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:1px 8px;border-radius:var(--r-pill);border:1px solid var(--line2);color:var(--muted);margin-left:4px;line-height:1.6;vertical-align:middle}
.tag.live{color:#062114;background:var(--green);border-color:transparent}
.tag.int{color:var(--yellow);border-color:rgba(241,177,60,.4)}.tag.v1{color:var(--yellow);border-color:rgba(241,177,60,.4)}
.badge{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:24px;font-weight:800;border-radius:7px;padding:0 8px;font-size:var(--fs-sm)}
.b高{background:var(--red-bg);color:var(--red);box-shadow:inset 0 0 0 1px rgba(255,93,93,.45)}
.b中{background:var(--yellow-bg);color:var(--yellow);box-shadow:inset 0 0 0 1px rgba(241,177,60,.45)}
.b低{background:var(--green-bg);color:var(--green);box-shadow:inset 0 0 0 1px rgba(53,196,124,.45)}
.pf{display:inline-flex;align-items:center;height:24px;font-weight:800;font-size:var(--fs-xs);border-radius:7px;padding:0 9px;white-space:nowrap}
.pf.ok{background:var(--green-bg);color:var(--green);box-shadow:inset 0 0 0 1px rgba(53,196,124,.45);border:0;margin:0}
.pf.no{background:var(--red-bg);color:var(--red);box-shadow:inset 0 0 0 1px rgba(255,93,93,.45)}
.sev{display:inline-flex;align-items:center;height:22px;font-size:var(--fs-xs);font-weight:800;border-radius:6px;padding:0 8px;border:0;white-space:nowrap}
.sev-watch{color:var(--accent);background:var(--accent-bg);box-shadow:inset 0 0 0 1px rgba(91,157,255,.45)}
.sev-warning{color:var(--orange);background:var(--orange-bg);box-shadow:inset 0 0 0 1px rgba(255,139,61,.45)}
.sev-danger{color:#fff;background:linear-gradient(180deg,#ff6161,#e03e3e)}
.nbadge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:2px;border-radius:var(--r-pill);background:var(--red);color:#fff;font-size:11px;font-weight:800;animation:pop 300ms var(--ease)}
@keyframes pop{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}

/* ---------- tables (wrap on phone via .ctbl cards) ---------- */
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--r);overscroll-behavior-x:contain}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-sm);white-space:nowrap}
th,td{padding:10px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{color:var(--muted);font-weight:600;font-size:var(--fs-xs);letter-spacing:.02em;position:sticky;top:0;background:var(--panel);z-index:1}
tbody tr,table tr{transition:background var(--dur) var(--ease)}
tr:hover td{background:rgba(255,255,255,.015)}
tr:last-child td{border-bottom:0}
tr.dim td{opacity:.5}
td.wrap{white-space:normal;min-width:150px}
.ctbl td.why{white-space:normal;min-width:280px}
.ctbl .sub{font-size:var(--fs-xs);color:var(--muted);margin-top:6px;white-space:normal}
.rl{margin:0;padding-left:18px;white-space:normal}
.rl li{margin:3px 0;line-height:1.55;color:var(--text2)}
.rl li::marker{color:var(--faint)}
td.rlcell{white-space:normal;min-width:240px;font-size:var(--fs-xs)}
table.sigtbl td:first-child,table.sigtbl th{white-space:normal}table.sigtbl td:first-child{min-width:150px}
.abtbl{white-space:normal}.abtbl td,.abtbl th{padding:8px 6px}.abtbl td.num{font-weight:700;white-space:nowrap}

/* ---------- glossary / details ---------- */
details summary{cursor:pointer;color:var(--accent);font-size:var(--fs-sm);margin:var(--s2) 0;min-height:32px;display:flex;align-items:center;gap:6px;list-style:none;user-select:none;-webkit-user-select:none}
details summary::-webkit-details-marker{display:none}
details summary::before{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform var(--dur) var(--ease);margin:0 4px 0 2px}
details[open] summary::before{transform:rotate(45deg)}
details[open]>:not(summary){animation:enter 220ms var(--ease)}
details.gloss{margin:var(--s2) 0;font-size:var(--fs-sm);background:var(--accent-bg);border:1px solid rgba(91,157,255,.2);border-radius:var(--r);padding:2px var(--s3)}
details.gloss dl{margin:2px 0 var(--s3)}
details.gloss dt{font-weight:700;margin-top:var(--s3);color:var(--text)}
details.gloss dd{margin:3px 0 0;color:var(--text2);line-height:1.6}

/* ---------- runs ---------- */
.runs{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--s3)}
.run{position:relative;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3) var(--s4);cursor:pointer;
  transition:border-color var(--dur) var(--ease),transform 140ms var(--ease),background var(--dur)}
.run:active{transform:scale(.985)}
.run.sel{border-color:rgba(91,157,255,.7);background:linear-gradient(180deg,rgba(91,157,255,.08),transparent),var(--panel2);box-shadow:0 0 0 3px rgba(91,157,255,.14)}
.run .id{font-weight:700;font-size:var(--fs-sm);display:flex;flex-wrap:wrap;gap:4px;align-items:center;font-variant-numeric:tabular-nums}
.run .big{font-size:var(--fs-xl);font-weight:800;margin:6px 0 2px;letter-spacing:-.01em}
.chartbox{position:relative;height:280px}

/* ---------- risk cards ---------- */
.risks{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:var(--s3)}
.risk{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s4);box-shadow:var(--sh-1);margin-bottom:0;transition:border-color var(--dur)}
.risk .top{display:flex;justify-content:space-between;align-items:center;gap:var(--s2)}
.risk .sym{font-weight:750;font-size:var(--fs-md);margin-left:4px}
.risk ul{margin:var(--s3) 0 0;padding-left:18px;font-size:var(--fs-sm);color:var(--text2)}
.risk ul li{margin:4px 0;line-height:1.55}.risk ul li::marker{color:var(--faint)}
.risk .meta{font-size:var(--fs-xs);color:var(--muted);margin-top:var(--s3);line-height:1.7;display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;font-variant-numeric:tabular-nums}
.filters{gap:var(--s2)}
.filters button{min-height:36px;padding:0 14px;background:var(--panel2);color:var(--text2);border:1px solid var(--line2);border-radius:var(--r-pill);cursor:pointer;font-size:var(--fs-sm);font-weight:600;transition:all var(--dur) var(--ease)}
.filters button.active{border-color:transparent;color:var(--accent);background:var(--accent-bg);box-shadow:inset 0 0 0 1px rgba(91,157,255,.5)}
.locked{border:1px dashed var(--line2);border-radius:var(--r);padding:var(--s4);text-align:center;color:var(--muted)}
.plan{border:1px solid rgba(91,157,255,.35);border-radius:var(--r-lg);padding:var(--s4);background:linear-gradient(180deg,rgba(91,157,255,.1),transparent)}
.plan .price{font-size:var(--fs-2xl);font-weight:800;margin:4px 0}
.plan ul{padding-left:20px;margin:var(--s2) 0}.plan li{margin:4px 0}

/* ---------- lab ---------- */
.labform{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:var(--s3)}
.fs{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3)}
.fs h3{font-size:var(--fs-xs);margin:0 0 var(--s2);color:var(--muted);text-transform:none;letter-spacing:.04em;font-weight:700}
.fr{display:grid;grid-template-columns:1fr 86px 86px;gap:var(--s2);align-items:center;font-size:var(--fs-sm);margin:6px 0;color:var(--text2)}
.fr input{width:100%;min-height:40px;background:var(--bg2);border:1px solid var(--line2);color:var(--text);border-radius:10px;padding:6px 8px;font-size:16px;font-variant-numeric:tabular-nums}
.labform.one .colb{display:none}.labform.one .fr{grid-template-columns:1fr 96px}
.chk{display:flex;gap:10px;align-items:center;font-size:var(--fs-sm);margin:4px 0;min-height:40px;color:var(--text2);cursor:pointer;line-height:1.45}
.caveat{background:var(--yellow-bg);border:1px solid rgba(241,177,60,.35);border-radius:var(--r);padding:10px 12px;font-size:var(--fs-sm);color:#f1d08d;margin-bottom:var(--s3);line-height:1.6}
.delta{font-size:var(--fs-xl);font-weight:800;margin:6px 0;font-variant-numeric:tabular-nums}
.explist .run{cursor:pointer}

/* ---------- alerts ---------- */
.feed{display:flex;flex-direction:column;gap:var(--s3)}
.al{position:relative;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3) var(--s4) var(--s3) calc(var(--s4) + 2px);overflow:hidden;animation:enter 260ms var(--ease) both}
.al::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--line2)}
.al.s-watch::before{background:var(--accent)}.al.s-warning::before{background:var(--orange)}.al.s-danger::before{background:var(--red)}
.al.unread{box-shadow:0 0 0 1px rgba(91,157,255,.55),0 8px 22px -14px rgba(91,157,255,.8)}
.al .hd{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap;font-size:var(--fs-sm)}
.al .tx{margin:var(--s2) 0 6px;font-size:var(--fs);line-height:1.6;color:var(--text)}
.al .oc{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums}
.wl{gap:var(--s2)}.wl input[type=text]{flex:1;min-width:0}
.wtbl td{vertical-align:middle}
.notifbox{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3) var(--s4);margin-top:var(--s3)}
.seg{display:inline-flex;background:var(--bg2);border:1px solid var(--line2);border-radius:var(--r-pill);padding:3px;gap:2px}
.seg button{min-height:34px;padding:0 12px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--text2);font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:all var(--dur) var(--ease)}
.seg button.on{background:var(--panel3);color:var(--text);box-shadow:var(--sh-1)}
.a2hs{border:1px solid rgba(91,157,255,.3);background:linear-gradient(180deg,rgba(91,157,255,.1),rgba(91,157,255,.03));border-radius:var(--r-lg);padding:var(--s4);margin-top:var(--s3)}
.a2hs h3{margin:0 0 var(--s2);font-size:var(--fs-md);color:var(--text)}
.a2hs ol{list-style:none;margin:var(--s3) 0 0;padding:0;counter-reset:st}
.a2hs li{counter-increment:st;display:grid;grid-template-columns:30px 1fr auto;gap:var(--s3);align-items:center;padding:var(--s3) 0;border-top:1px solid var(--line);font-size:var(--fs);line-height:1.5}
.a2hs li::before{content:counter(st);display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--accent);color:#061326;font-weight:800;font-size:var(--fs-sm)}
.a2hs .ico{width:44px;height:44px;border-radius:12px;background:var(--panel3);display:flex;align-items:center;justify-content:center;border:1px solid var(--line2)}
.a2hs .ico svg{width:26px;height:26px}
.a2hs .ico img{width:40px;height:40px;border-radius:10px}

/* ---------- skeleton loaders ---------- */
.skel{position:relative;overflow:hidden;background:var(--panel2);border-radius:var(--r);min-height:16px;margin:0 0 var(--s2)}
.skel::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.05),transparent);animation:shimmer 1.3s infinite}
@keyframes shimmer{to{transform:translateX(100%)}}
.skel.line{height:14px;border-radius:7px}.skel.block{height:84px}.skel.card{height:150px;border-radius:var(--r-lg)}

/* ---------- footer ---------- */
.disclaimer{max-width:1200px;margin:var(--s6) auto 0;padding:var(--s3) var(--s4) var(--s4);font-size:var(--fs-xs);color:var(--faint);line-height:1.6;text-align:center;border-top:1px solid var(--line)}
.disclaimer details{display:inline}.disclaimer summary{display:inline;cursor:pointer;color:var(--muted);text-decoration:underline dotted;text-underline-offset:3px;list-style:none}
.disclaimer summary::-webkit-details-marker,.disclaimer summary::before{display:none}.disclaimer summary{margin:0;min-height:0;font-size:inherit;gap:0}.disclaimer details[open] p{text-align:left;margin:var(--s2) auto 0;max-width:760px}
ul.rules{padding-left:20px;font-size:var(--fs-sm);color:var(--text2)}ul.rules li{margin-bottom:6px}
.lab-rug{color:var(--red);font-weight:800}.lab-big_drop{color:var(--yellow);font-weight:700}.lab-survived{color:var(--green)}

/* ---------- phone ---------- */
@media (max-width:600px){
  main{padding:var(--s3)}
  header{padding:var(--s3)}
  header h1,h1{font-size:var(--fs-md)}
  nav{padding:var(--s2) var(--s3)}
  .card{padding:var(--s4) var(--s3);border-radius:var(--r-lg);margin-bottom:var(--s3)}
  .grid{grid-template-columns:1fr 1fr}
  .risks{grid-template-columns:1fr}
  .chartbox{height:220px}
  .runs{grid-template-columns:1fr}
  .fr{grid-template-columns:1fr 78px 78px}
  /* tables -> cards */
  .ctbl,.ctbl tbody{display:block;white-space:normal}
  .ctbl thead{display:none}
  .ctbl tr{display:block;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3);margin-bottom:var(--s2)}
  .ctbl tr:hover td{background:none}
  .ctbl td{display:inline-block;border:0;padding:3px 12px 3px 0;white-space:normal;vertical-align:middle}
  .ctbl td.why,.ctbl td.blk{display:block;min-width:0;padding:var(--s2) 0 0}
  .ctbl td[data-l]::before{content:attr(data-l) "　";color:var(--muted);font-size:var(--fs-xs)}
  .ctbl td.nol::before{content:none}
  .ctbl td.num{text-align:left}
  table.sigtbl{font-size:var(--fs-xs);white-space:normal}table.sigtbl td,table.sigtbl th{padding:8px 5px}table.sigtbl td:first-child{min-width:0}
  td.rlcell{min-width:180px}
  .abtbl{font-size:var(--fs-xs)}.abtbl td.num{white-space:normal}.abtbl th{white-space:normal}
  .wtbl{font-size:var(--fs-xs)}.wtbl td,.wtbl th{padding:8px 5px}.hide-m{display:none}
  table.users,.users tbody,.users tr,.users td{display:block;width:100%}
  .users tr:first-child{display:none}
  .users tr{border:1px solid var(--line);border-radius:var(--r);margin-bottom:var(--s2);padding:var(--s3);background:var(--panel2)}
  .users td{border:0;padding:3px 4px;white-space:normal}
  .users td[data-k]::before{content:attr(data-k) "：";color:var(--muted);font-size:var(--fs-xs)}
  .users form.inline{flex-wrap:wrap;margin-top:6px}
}
@media (hover:hover){.run:hover{border-color:var(--line2)}.risk:hover{border-color:var(--line2)}nav button:not(.active):hover{background:var(--panel2);color:var(--text)}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}
}

/* ---------------- real-vs-sim journal + admin trade ---------------- */
.warnbox{background:var(--red-bg);border:1px solid rgba(255,93,93,.35);border-radius:var(--r);padding:10px 12px;font-size:var(--fs-sm);color:#ffc9c4;margin-bottom:var(--s3);line-height:1.6}
.dangerbox{background:linear-gradient(180deg,rgba(255,93,93,.18),rgba(255,93,93,.07));border:1.5px solid rgba(255,93,93,.55);border-radius:var(--r-lg);padding:var(--s3) var(--s4);font-size:var(--fs-sm);color:#ffd5d1;margin-bottom:var(--s3);line-height:1.65}
.dangerbox b,.warnbox b{color:#fff}
.form input[type=number],.form input[type=datetime-local]{width:100%}
input[type=datetime-local]{min-height:var(--tap);background:var(--bg2);border:1px solid var(--line2);color:var(--text);border-radius:var(--r);padding:10px 12px;font-size:16px;-webkit-appearance:none;appearance:none;max-width:100%}
.row.nowrap{flex-wrap:nowrap}.row.nowrap input{flex:1 1 auto;min-width:0}.row.nowrap .btn,.row.nowrap .seg{flex:0 0 auto}
.form .seg{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.chips button{min-height:34px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line2);background:var(--bg2);color:var(--text2);font-weight:600;font-size:var(--fs-sm);cursor:pointer;transition:all var(--dur) var(--ease)}
.chips button:active{transform:scale(.97)}.chips button.on{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}
.autofill:empty{display:none}
.autofill{border:1px solid rgba(53,196,124,.35);background:var(--green-bg);border-radius:var(--r);padding:10px 12px;font-size:var(--fs-sm);color:#c4f2d6;margin:var(--s2) 0;line-height:1.6}
.autofill.bad{border-color:rgba(241,177,60,.4);background:var(--yellow-bg);color:#f1d08d}
.autofill ul{margin:6px 0 0;padding-left:18px}
.jt{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s3) var(--s4);margin-top:var(--s3);animation:fadeUp var(--dur) var(--ease)}
.jt .hd{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin-bottom:var(--s2)}
.jt .hd b{font-size:var(--fs-md)}
.side{display:inline-flex;align-items:center;font-size:12px;font-weight:700;padding:2px 10px;border-radius:var(--r-pill)}
.side.buy{background:var(--green-bg);color:var(--green);border:1px solid rgba(53,196,124,.4)}
.side.sell{background:var(--red-bg);color:var(--red);border:1px solid rgba(255,93,93,.4)}
.kv{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px;font-size:var(--fs-sm);align-items:baseline}
.kv .k{color:var(--muted);min-width:0}.kv .v{text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;color:var(--text)}
.kv .sep{grid-column:1/-1;border-top:1px solid var(--line);margin:4px 0}
.verdict{margin-top:var(--s2);padding:9px 12px;border-radius:var(--r);font-size:var(--fs-sm);font-weight:600;line-height:1.5}
.verdict.worse{background:var(--red-bg);color:#ffc9c4}.verdict.better{background:var(--green-bg);color:#b6f0cc}.verdict.same{background:var(--panel3);color:var(--text2)}
.jt .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:var(--s3)}
.jt .sub{font-size:var(--fs-xs);color:var(--muted);margin-top:6px;line-height:1.5;overflow-wrap:anywhere}
.mono{font-family:var(--mono);font-size:12px;overflow-wrap:anywhere;word-break:break-all}
.qbox{background:var(--panel2);border:1px solid var(--line2);border-radius:var(--r-lg);padding:var(--s4);margin-top:var(--s3);animation:fadeUp var(--dur) var(--ease)}
.qbox .big{font-size:var(--fs-xl);font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.qbox .risk-hd{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:var(--s2)}
.qbox.hi{border-color:rgba(255,93,93,.55);background:linear-gradient(180deg,rgba(255,93,93,.12),var(--panel2))}
.qbox.mid{border-color:rgba(241,177,60,.45)}.qbox.lo{border-color:rgba(53,196,124,.4)}
.wallet{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.wallet .addr{font-family:var(--mono);font-size:var(--fs-sm);background:var(--bg2);border:1px solid var(--line2);border-radius:var(--r-pill);padding:6px 12px}
.steps{margin:var(--s2) 0 0;padding-left:20px;font-size:var(--fs-sm);line-height:1.7;color:var(--text2)}
.modal{position:fixed;inset:0;z-index:100;background:rgba(3,6,10,.62);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:flex-end;justify-content:center;
  padding:var(--s3) calc(var(--s3) + var(--safe-r)) calc(var(--s3) + var(--safe-b)) calc(var(--s3) + var(--safe-l))}
.modal[hidden]{display:none}
.modal .sheet{background:var(--panel);border:1px solid var(--line2);border-radius:22px;max-width:520px;width:100%;max-height:86vh;overflow:auto;-webkit-overflow-scrolling:touch;
  padding:var(--s4) var(--s4) var(--s4);box-shadow:var(--sh-2);animation:sheetIn 220ms var(--ease)}
.modal .sheet h2{margin-top:0}
.modal .row{justify-content:flex-end;margin-top:var(--s4)}
@keyframes sheetIn{from{transform:translateY(28px);opacity:0}to{transform:none;opacity:1}}
@keyframes fadeUp{from{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}
@media (min-width:700px){.modal{align-items:center}}
@media (prefers-reduced-motion:reduce){.jt,.qbox,.modal .sheet{animation:none}}

/* ---------------- scorecard: metric cards, rating tiles, horizon tabs (mobile-first) ---------------- */
.scp .note.lead{font-size:var(--fs-sm);color:var(--text2);opacity:.85}
.scp .acts{margin-top:var(--s3);gap:var(--s2)}
.scp .acts .note{flex:1 1 100%}
.vrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:var(--s3) 0 var(--s2)}
.vrow .lbl{flex:0 0 100%;font-size:var(--fs-xs);color:var(--muted);font-weight:600;letter-spacing:.03em}
.vrow .note{margin-left:4px}
.vrow a.pill{min-height:34px;font-size:var(--fs-sm);gap:6px}
.vrow .pn{font-size:11px;font-weight:700;color:var(--faint);font-variant-numeric:tabular-nums}
.vrow a.pill.active .pn{color:var(--accent-2)}
.frac{margin-left:4px;color:var(--muted);font-weight:500;font-size:.72em;letter-spacing:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.pill.few{color:#e9c27a;border-color:rgba(241,177,60,.3);background:var(--yellow-bg);font-size:11px;padding:0 8px;line-height:20px;white-space:nowrap;flex:0 0 auto}
/* segmented horizon tabs (pure CSS, radio-driven) */
.htabs{position:relative}
.htabs>input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.hzseg{display:flex;gap:2px;padding:3px;margin:0 0 var(--s3);max-width:520px;background:var(--bg2);border:1px solid var(--line2);border-radius:var(--r-pill)}
.hzseg label{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;margin:0;min-height:36px;padding:0 8px;border-radius:var(--r-pill);
  color:var(--muted);font-size:var(--fs-sm);font-weight:650;white-space:nowrap;cursor:pointer;user-select:none;-webkit-user-select:none;
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.hzseg label:active{transform:scale(.97)}
.htabs>input:nth-of-type(1):checked~.hzseg label:nth-of-type(1),.htabs>input:nth-of-type(2):checked~.hzseg label:nth-of-type(2),
.htabs>input:nth-of-type(3):checked~.hzseg label:nth-of-type(3){background:var(--panel3);color:var(--text);box-shadow:var(--sh-1),0 0 0 1px var(--line2)}
.htabs>input:nth-of-type(1):focus-visible~.hzseg label:nth-of-type(1),.htabs>input:nth-of-type(2):focus-visible~.hzseg label:nth-of-type(2),
.htabs>input:nth-of-type(3):focus-visible~.hzseg label:nth-of-type(3){outline:2px solid var(--accent);outline-offset:1px}
.hzp{display:none}
.htabs>input:nth-of-type(1):checked~.hzps>.hzp:nth-child(1),.htabs>input:nth-of-type(2):checked~.hzps>.hzp:nth-child(2),
.htabs>input:nth-of-type(3):checked~.hzps>.hzp:nth-child(3){display:block;animation:enter 220ms var(--ease) both}
/* rating tiles 高/中/低 */
.rtiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2)}
.rtile{position:relative;min-width:0;overflow:hidden;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px 12px}
.rtile::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--line2);opacity:.9}
.rtile.r高::before{background:var(--red)}.rtile.r中::before{background:var(--yellow)}.rtile.r低::before{background:var(--green)}
.rt-hd{display:flex;align-items:center;justify-content:space-between;gap:4px;flex-wrap:wrap}
.rt-n{font-size:11px;color:var(--faint);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.rt-v{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:10px 0 6px;font-variant-numeric:tabular-nums;white-space:nowrap}
.rt-s{font-size:var(--fs-xs);color:var(--muted);line-height:1.5;font-variant-numeric:tabular-nums}
.rtile .pill.few{margin-top:8px}
/* metric cards */
.mgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--s2);margin-top:var(--s2)}
.mgrid.two{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:0}
.metric{display:flex;flex-direction:column;min-width:0;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3) var(--s4) 14px}
.m-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);min-height:22px}
.m-t{font-size:var(--fs-sm);font-weight:700;color:var(--text);line-height:1.35}
.m-cap{font-size:11px;color:var(--faint);font-weight:600;margin-top:8px;letter-spacing:.02em}
.m-v{font-size:26px;font-weight:800;letter-spacing:-.015em;line-height:1.15;margin:6px 0 2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.m-cap+.m-v{margin-top:2px}
.m-v .unit{font-size:var(--fs-md);font-weight:600;color:var(--muted)}
.m-v .m-sm{font-size:var(--fs-md);font-weight:700;letter-spacing:0}
.m-v2{font-size:var(--fs-sm);color:var(--text2);font-variant-numeric:tabular-nums}
.m-pend{font-size:var(--fs-md);font-weight:600;color:var(--faint);letter-spacing:0}
.m-sub{font-size:var(--fs-xs);color:var(--muted);line-height:1.6;margin-top:6px}
.metric .kv{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line);font-size:var(--fs-xs);gap:7px 12px}
.metric .kv .v{font-weight:650}
.mini3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:10px 0 2px}
.mini3 .mc{min-width:0;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.mini3 .badge{height:20px;min-width:0;padding:0 7px;font-size:11px;border-radius:6px}
.mini3 b{display:block;font-size:var(--fs-lg);font-weight:800;margin-top:6px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}
.mini3 .frac{display:block;margin:2px 0 0;font-size:11px}
.dist{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.dist span{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-pill);padding:2px 9px;font-variant-numeric:tabular-nums}
.dist b{color:var(--text);font-weight:700}
.callout{display:flex;align-items:flex-start;gap:10px;margin:var(--s3) 0 var(--s2);padding:9px 12px;border-radius:var(--r);
  background:var(--yellow-bg);border:1px solid rgba(241,177,60,.2);font-size:var(--fs-sm);color:var(--text2);line-height:1.55}
.callout::before{content:"";flex:0 0 6px;height:6px;margin-top:8px;border-radius:50%;background:var(--yellow);box-shadow:0 0 0 3px rgba(241,177,60,.15)}
.callout b{color:#f3d08a;font-weight:700}
/* list rows (signals, alert rules): grid on desktop, stacked cards on phone */
.slist{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--panel2);margin-top:var(--s3)}
.s-head,.srow{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr) minmax(0,1fr) minmax(0,.8fr);gap:var(--s3);align-items:center;padding:10px var(--s4)}
.s-head{background:var(--panel);border-bottom:1px solid var(--line);font-size:11px;color:var(--muted);font-weight:600;line-height:1.4}
.srow{border-bottom:1px solid var(--line);font-size:var(--fs-sm);transition:background var(--dur) var(--ease)}
.srow:last-child{border-bottom:0}
.s-name{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;color:var(--text);font-weight:600;line-height:1.45;overflow-wrap:anywhere}
.s-c{min-width:0;font-variant-numeric:tabular-nums;color:var(--text)}
.s-c b{font-weight:700}
.s-lift b{color:var(--accent-2)}
.srow.dim .s-c{opacity:.5}
.s-l{display:none}
/* severity precision rows */
.prec{display:flex;flex-direction:column;gap:var(--s2)}
.prow{display:grid;grid-template-columns:96px repeat(3,minmax(0,1fr));gap:var(--s2);align-items:stretch}
.p-l{display:flex;align-items:center}
.sev-all{color:var(--text2);background:var(--panel3);box-shadow:inset 0 0 0 1px var(--line2)}
.p-c{min-width:0;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.p-h{font-size:11px;color:var(--faint);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p-v{font-size:var(--fs-xl);font-weight:800;line-height:1.15;margin:6px 0 2px;font-variant-numeric:tabular-nums;white-space:nowrap}
.p-s{font-size:var(--fs-xs);color:var(--muted);line-height:1.5;font-variant-numeric:tabular-nums}
.p-c .pill.few{margin-top:6px}
/* old-vs-new comparison */
.cmpwrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:var(--s2);margin-top:var(--s2)}
.cmp{min-width:0;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:var(--s3) var(--s4)}
.cmp-t{font-size:var(--fs-sm);font-weight:700;margin-bottom:var(--s2)}
.cmp-g{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1fr);gap:10px 14px;align-items:center}
.cmp-h{font-size:11px;color:var(--muted);font-weight:600}
.cmp-c{min-width:0;font-variant-numeric:tabular-nums}
.cmp-c b{font-size:var(--fs-md);font-weight:800}
/* recent outcomes */
.otblw{border-radius:var(--r);overflow-x:auto;-webkit-overflow-scrolling:touch}
table.otbl{white-space:nowrap}
.otbl td.o-why{white-space:normal;min-width:240px;font-size:var(--fs-xs)}
.otbl td.o-br{display:none}
@media (max-width:600px){
  .rtiles{gap:6px}
  .rtile{padding:10px 10px 11px}
  .rt-v{font-size:22px;margin:8px 0 4px}
  .rt-hd .badge{height:22px;min-width:0;padding:0 7px;font-size:12px}
  .metric{padding:var(--s3) 14px}
  .m-v{font-size:24px}
  .mgrid{grid-template-columns:1fr}
  .s-head{display:none}
  .srow{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 10px;padding:var(--s3) 14px;align-items:start}
  .s-name{grid-column:1/-1}
  .s-l{display:block;font-size:11px;color:var(--muted);font-weight:500;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .s-c b{font-size:var(--fs-md)}
  .s-c .frac{display:block;margin:1px 0 0;font-size:11px}
  .prow{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .p-l{grid-column:1/-1;margin-top:6px}
  .prow:first-child .p-l{margin-top:0}
  .p-c{padding:9px 10px}
  .p-v{font-size:20px}
  .cmp{padding:var(--s3) 14px}
  .otblw{overflow:visible}
  table.otbl,.otbl tbody{display:block;white-space:normal}
  .otbl tr.oh{display:none}
  .otbl tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 14px;margin-bottom:var(--s2);background:var(--panel2);border:1px solid var(--line);border-radius:var(--r)}
  .otbl tr:hover td{background:none}
  .otbl td{display:block;border:0;padding:0;white-space:normal;font-size:var(--fs-xs);color:var(--muted)}
  .otbl td.o-tok{order:1;flex:1 1 auto;min-width:0;font-size:var(--fs);font-weight:700;overflow-wrap:anywhere}
  .otbl td.o-res{order:2;margin-left:auto;font-size:var(--fs-sm);text-align:right}
  .otbl td.lab-rug{color:var(--red)}.otbl td.lab-big_drop{color:var(--yellow)}.otbl td.lab-survived{color:var(--green)}
  .otbl td.o-br{display:block;order:3;flex:0 0 100%;height:0;margin-top:-6px}
  .otbl td.o-rate{order:4;color:var(--text2)}
  .otbl td.o-hz{order:5}
  .otbl td.o-time{order:6;margin-left:auto;font-variant-numeric:tabular-nums}
  .otbl td.o-worst{order:7;flex:1 1 100%;color:var(--text2);font-variant-numeric:tabular-nums}
  .otbl td.o-worst::before{content:attr(data-l) "　";color:var(--muted)}
  .otbl td.o-why{order:8;flex:1 1 100%;min-width:0;padding-top:4px;border-top:1px solid var(--line)}
}
@media (max-width:374px){
  .rt-v{font-size:20px}
  .rtile{padding:9px 8px 10px}
  .p-v{font-size:18px}
  .hzseg label{font-size:12px;padding:0 4px}
}
details.card>summary{margin:0}
@media (hover:hover){.srow:hover{background:rgba(255,255,255,.015)}}
@media (max-width:374px){.vrow a.pill{padding:0 10px}}

/* ---------------- auto-trader (real-money burner wallet, admin only) ---------------- */
.atgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:0 var(--s4)}
.atcol{min-width:0}
@media (min-width:960px){.atgrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}
.athero{position:relative;overflow:hidden}
.athero::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--faint)}
.athero.s-good::before{background:linear-gradient(90deg,var(--green),#7be3ad)}
.athero.s-warn::before{background:linear-gradient(90deg,var(--yellow),#ffd27a)}
.athero.s-bad::before{background:linear-gradient(90deg,#ff7a7a,var(--red))}
.athero.s-good{background:radial-gradient(420px 160px at 0 0,rgba(53,196,124,.09),transparent 70%),var(--panel)}
.athero.s-bad{background:radial-gradient(420px 160px at 0 0,rgba(255,93,93,.1),transparent 70%),var(--panel)}
.at-top{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);flex-wrap:wrap}
.at-state{display:inline-flex;align-items:center;gap:10px;font-size:var(--fs-xl);font-weight:800;letter-spacing:-.01em;line-height:1.25}
.at-state .dot{width:10px;height:10px;margin:0;flex:0 0 auto}
.dot.warn{background:var(--yellow);box-shadow:0 0 0 3px rgba(241,177,60,.2);animation:pulsew 1.4s var(--ease) infinite}
.dot.bad{background:var(--red);box-shadow:0 0 0 3px rgba(255,93,93,.18)}
@keyframes pulsew{50%{box-shadow:0 0 0 6px rgba(241,177,60,0)}}
.tag.real{margin:0;color:#fff;background:linear-gradient(180deg,#ff7d5c,#e5533a);border:0;font-weight:800;font-size:12px;padding:2px 10px;letter-spacing:.03em}
.at-meta{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:10px;font-size:var(--fs-sm);color:var(--text2);font-variant-numeric:tabular-nums}
.at-meta span{white-space:nowrap}
.at-desc{margin:10px 0 0;font-size:var(--fs-sm);color:var(--muted);line-height:1.65}
.btn.redghost{background:var(--red-bg);color:#ff9a9a;border:1px solid rgba(255,93,93,.42);box-shadow:none}
.btn.redghost:hover{color:#ffb3b3;filter:none;background:rgba(255,93,93,.2)}
.btn.redghost .sq{width:10px;height:10px;border-radius:2px;background:currentColor;display:inline-block}
.at-kill{width:100%;margin-top:var(--s4)}
.at-kill-hint{text-align:center;margin-top:6px}
@media (min-width:600px){.at-kill{width:auto}.at-kill-hint{text-align:left}}
.at-h-sub{font-size:var(--fs-xs);font-weight:500;margin-left:auto}
.at-big{font-size:40px;font-weight:800;letter-spacing:-.025em;line-height:1.1;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.at-pnl{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;margin-top:6px;font-size:var(--fs-md);font-weight:700;font-variant-numeric:tabular-nums}
.at-pnl .muted{font-size:var(--fs-sm);font-weight:500}
.at-loss{margin-top:var(--s4);background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.at-loss-hd{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s2);font-size:var(--fs-sm);color:var(--text2)}
.at-loss-hd b{font-size:var(--fs-lg);color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}
.bar{position:relative;height:8px;border-radius:var(--r-pill);background:var(--bg2);overflow:hidden;margin:10px 0 8px;box-shadow:inset 0 0 0 1px var(--line)}
.bar>i{position:absolute;left:0;top:0;bottom:0;min-width:6px;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--green),#7be3ad);transition:width 600ms var(--ease)}
.bar.warn>i{background:linear-gradient(90deg,var(--yellow),#ffd27a)}
.bar.bad>i{background:linear-gradient(90deg,#ff7a7a,var(--red))}
.at-loss-ft{display:flex;justify-content:space-between;gap:4px var(--s2);flex-wrap:wrap;font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums}
.at-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2);margin-top:var(--s3)}
.at-tiles.three{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:0}
.at-tile{min-width:0;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px 12px}
.at-tile .k{font-size:var(--fs-xs);color:var(--muted);line-height:1.4;font-weight:500}
.at-tile .v{font-size:var(--fs-lg);font-weight:800;margin-top:4px;line-height:1.25;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.at-tile .v .unit{font-size:var(--fs-xs);font-weight:600;color:var(--muted)}
.at-tile .s{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.45;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.at-tile .bar{height:6px;margin:8px 0 0}
.atempty{display:flex;align-items:center;gap:12px;padding:14px;border:1px dashed var(--line2);border-radius:var(--r);color:var(--text2);font-size:var(--fs-sm);line-height:1.5}
.atempty .ic{font-size:22px;flex:0 0 auto}
.athold+.athold{margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--line)}
.athold-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);flex-wrap:wrap;margin-bottom:4px}
.athold-hd b{font-size:var(--fs-lg)}
.at-kv{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line)}
.at-holdbar{margin-top:var(--s3)}
.at-holdbar .bar{margin-top:6px}
.at-watch-t{margin-top:var(--s2)}
.watch{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.watch span{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text2);background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-pill);padding:3px 10px;line-height:1.5}
.watch span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 2px rgba(53,196,124,.18);flex:0 0 auto}
.atfeed{display:flex;flex-direction:column}
.atev{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 0;border-top:1px solid var(--line)}
.atev:first-child{border-top:0;padding-top:0}
.atev .ic{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;background:var(--panel3);box-shadow:inset 0 0 0 1px var(--line)}
.atev.t-good .ic{background:var(--green-bg)}.atev.t-bad .ic{background:var(--red-bg)}.atev.t-warn .ic{background:var(--yellow-bg)}.atev.t-buy .ic{background:var(--accent-bg)}
.atev .tx{min-width:0;font-size:var(--fs-sm);line-height:1.55;color:var(--text);overflow-wrap:anywhere;padding-top:4px}
.atev.t-muted .tx{color:var(--text2)}
.atev.t-bad .tx{color:#ffc9c4}.atev.t-good .tx{color:#c4f2d6}
.atev .cnt{display:inline-block;margin-left:6px;font-size:11px;font-weight:700;color:var(--muted);background:var(--panel3);border-radius:var(--r-pill);padding:0 7px;line-height:18px;vertical-align:1px}
.atev time{font-size:var(--fs-xs);color:var(--faint);white-space:nowrap;padding-top:5px;font-variant-numeric:tabular-nums}
.atev.new{animation:fadeUp 380ms var(--ease) both}
.at-jr{display:flex;align-items:center;gap:var(--s2) var(--s3);flex-wrap:wrap;font-size:var(--fs-xs);color:var(--muted);line-height:1.6;margin-bottom:var(--s2)}
.at-jr span{flex:1 1 220px}
.attr{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-top:var(--s2)}
.attr .hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.attr .hd b{font-size:var(--fs-md);min-width:0;overflow-wrap:anywhere}
.attr .hd .tag{margin:0}
.attr .hd time{margin-left:auto;font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.attr .kv .v{font-weight:700}
.attr .why{font-size:var(--fs-sm);color:var(--text2);margin-top:8px;line-height:1.55}
.attr .why .muted{font-size:var(--fs-xs)}
.attr .links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:var(--fs-sm)}
.attr .links a{display:inline-flex;align-items:center;min-height:28px}
.attr.fail{opacity:.6}
.at-addr{display:flex;gap:var(--s2);align-items:center}
.at-addr code{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--bg2);border:1px solid var(--line2);border-radius:var(--r-pill);padding:8px 14px;font-size:13px;line-height:1.4}
.at-addr .btn{flex:0 0 auto}
.at-addr-ft{margin-top:8px;font-size:var(--fs-sm)}
details.card.atlim>summary{font-size:var(--fs-md);font-weight:700;color:var(--text);margin:0}
details.card.atlim ul.rules{margin:var(--s2) 0 0;line-height:1.6}
.at-modal-body{font-size:var(--fs);line-height:1.65;color:var(--text2);margin:0}
.at-modal-body b{color:#fff}
@media (max-width:600px){
  .at-big{font-size:36px}
  .at-state{font-size:var(--fs-lg)}
  .at-tiles.three{gap:6px}
  .at-tiles.three .at-tile{padding:9px 10px 10px}
  .at-tiles.three .at-tile .v{font-size:var(--fs-md)}
}
@media (max-width:374px){.at-tiles.three{grid-template-columns:repeat(2,minmax(0,1fr))}}
#atErr:empty{display:none}
.attr .why .muted{display:block;margin-top:2px}
