/* 美股观察台 · 设计系统 v2（深色为默认，可切浅色；红涨绿跌） */
:root,[data-theme=dark]{
  --bg:#080D18;--bg2:#0C1322;--card:#111A2C;--card2:#16213A;--hover:#1A2742;
  --line:#1F2C45;--line2:#2A3A58;
  --text:#ECF1F9;--text2:#BBC6D8;--muted:#8E9CB3;
  --brand:#6E8BFF;--brand2:#A06BFF;--brand-soft:rgba(110,139,255,.14);--gold:#F5B544;--gold-soft:rgba(245,181,68,.14);
  --red:#FF5D6C;--green:#25D08A;--red-soft:rgba(255,93,108,.14);--green-soft:rgba(37,208,138,.13);
  --shadow:0 1px 0 rgba(255,255,255,.03) inset,0 10px 30px rgba(0,0,0,.28);
  --glow:radial-gradient(1200px 600px at 10% -10%,rgba(110,139,255,.12),transparent 60%),radial-gradient(900px 500px at 100% 0,rgba(160,107,255,.08),transparent 60%);
  color-scheme:dark;
}
[data-theme=light]{
  --bg:#F4F6FA;--bg2:#FFFFFF;--card:#FFFFFF;--card2:#F6F8FC;--hover:#EEF2FA;
  --line:#E3E8F1;--line2:#D3DBE8;
  --text:#0C1626;--text2:#334256;--muted:#5A6A80;
  --brand:#3F63F0;--brand2:#7B4CF0;--brand-soft:rgba(63,99,240,.09);--gold:#B7791F;--gold-soft:rgba(183,121,31,.1);
  --red:#D92D3A;--green:#0A8A52;--red-soft:rgba(217,45,58,.08);--green-soft:rgba(10,138,82,.08);
  --shadow:0 1px 2px rgba(15,23,42,.05),0 8px 24px rgba(15,23,42,.06);
  --glow:none;color-scheme:light;
}
:root{--up:var(--red);--dn:var(--green);--up-soft:var(--red-soft);--dn-soft:var(--green-soft);
  --r:18px;--r2:12px;--side:252px;
  --num:"SF Pro Display","SF Pro Text",-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Helvetica Neue",Arial,sans-serif;
  --zh:"PingFang SC","Hiragino Sans GB","Noto Sans SC","Noto Sans CJK SC","Microsoft YaHei",sans-serif}
body.us{--up:var(--green);--dn:var(--red);--up-soft:var(--green-soft);--dn-soft:var(--red-soft)}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);background-image:var(--glow);background-attachment:fixed;color:var(--text);
  font-family:var(--num),var(--zh);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;
  padding-bottom:calc(76px + env(safe-area-inset-bottom))}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:none;opacity:.92}
b,strong{font-weight:650}
.ic{width:22px;height:22px;flex:0 0 auto;display:inline-block;vertical-align:middle}
small,.small{font-size:14px}
.muted{color:var(--muted)}
.ok{color:var(--green)}.warn{color:var(--gold)}.bad{color:var(--red)}
.up{color:var(--up)}.dn{color:var(--dn)}.flat{color:var(--muted)}
.hidden{position:absolute;left:-9999px}
.num,.px,.px2,.ptable,.kv,.tri b,.score b{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}

/* ---------- 框架：顶栏 / 侧栏 / 底栏 ---------- */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:12px 16px;
  padding-top:calc(12px + env(safe-area-inset-top));background:color-mix(in srgb,var(--bg) 82%,transparent);
  backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px;color:var(--text)}
.brand .logo{width:34px;height:34px;flex:0 0 auto;filter:drop-shadow(0 4px 12px rgba(110,139,255,.35))}
.brand b{display:block;font-size:19px;letter-spacing:.04em;line-height:1.2}
.brand small{display:block;font-size:12.5px;color:var(--muted);letter-spacing:.06em;line-height:1.3}
.topact{margin-left:auto;display:flex;gap:8px}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;
  background:var(--card);border:1px solid var(--line);color:var(--text2);padding:0;cursor:pointer}
.iconbtn.on{color:var(--brand);border-color:var(--brand)}
[data-theme=dark] .i-light{display:none}[data-theme=light] .i-dark{display:none}
.side{display:none}
main{display:block;max-width:1400px;margin:0 auto;padding:18px 16px 8px}
main.bare{max-width:520px}
.foot{margin:28px 0 8px;color:var(--muted);font-size:13.5px;text-align:center}
.bottom{position:fixed;z-index:30;left:0;right:0;bottom:0;display:flex;padding:6px 6px calc(6px + env(safe-area-inset-bottom));
  background:color-mix(in srgb,var(--bg2) 88%,transparent);backdrop-filter:saturate(1.4) blur(16px);
  -webkit-backdrop-filter:saturate(1.4) blur(16px);border-top:1px solid var(--line)}
.bottom a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0 4px;border-radius:12px;
  color:var(--muted);font-size:12.5px;font-weight:550;min-height:54px}
.bottom a .ic{width:24px;height:24px}
.bottom a.on{color:var(--brand);background:var(--brand-soft)}

@media (min-width:1024px){
  body{padding-bottom:0;font-size:17px}
  .top,.bottom{display:none}
  .side{display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;width:var(--side);padding:26px 18px 20px;
    background:var(--bg2);border-right:1px solid var(--line);z-index:20}
  .side .brand{padding:0 8px 26px}
  .snav{display:flex;flex-direction:column;gap:4px}
  .snav a{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:12px;color:var(--text2);font-size:17px;font-weight:550}
  .snav a:hover{background:var(--hover);color:var(--text)}
  .snav a.on{background:linear-gradient(90deg,var(--brand-soft),transparent);color:var(--text);box-shadow:inset 3px 0 0 var(--brand)}
  .snav a.on .ic{color:var(--brand)}
  .sfoot{margin-top:auto;font-size:13px;color:var(--muted);padding:0 8px}
  .sfoot p{margin:10px 0 0;line-height:1.5}.sfoot .ver{opacity:.7}
  .themebtn{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:12px;border:1px solid var(--line);
    background:var(--card);color:var(--text2);font-size:15px;cursor:pointer;min-height:44px}
  main.app{margin-left:var(--side);max-width:none;padding:32px 44px 16px}
  main.app>*{max-width:1480px;margin-left:auto;margin-right:auto}
  main.bare{padding-top:12vh}
}
@media (min-width:1800px){main.app{padding:40px 64px 16px}body{zoom:1.1}}

/* ---------- 标题 / 卡片 / 基础组件 ---------- */
.ph1{display:flex;align-items:flex-end;gap:12px 16px;flex-wrap:wrap;margin:4px 0 18px}
.ph1 h1{margin:0;font-size:28px;line-height:1.2;letter-spacing:.02em}
.ph1 .sub{color:var(--muted);font-size:15px}
.ph1 .act{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
@media (min-width:1024px){.ph1 h1{font-size:34px}}
h2,h3{letter-spacing:.01em}
.sec{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:20px;font-weight:700;margin:30px 2px 14px;line-height:1.3}
.sec .ic{color:var(--brand);width:22px;height:22px}
.sec small{font-size:14px;font-weight:450;color:var(--muted)}
.sec small a,.sec a.more{font-size:15px;font-weight:550}
.sec .more{margin-left:auto;display:inline-flex;align-items:center;gap:2px}
.sec .more .ic{width:18px;height:18px}
h3.sec{font-size:19px}
h3.day{font-size:15px;color:var(--muted);font-weight:600;margin:22px 2px 10px;letter-spacing:.03em}
h3.sec{scroll-margin-top:90px}
.card{display:block;position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;
  margin:0 0 14px;color:inherit;box-shadow:var(--shadow)}
a.card{transition:transform .15s ease,border-color .15s ease,background .15s}
a.card:hover{border-color:var(--line2);background:var(--hover);transform:translateY(-1px)}
.card h2,.card h3{margin:0 0 10px;font-size:19px}
.narrow{max-width:460px;margin:40px auto}
.src{display:block;font-size:13.5px;color:var(--muted);margin-top:8px;line-height:1.55}
.src a{font-weight:550}
.row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:13px 0;border-bottom:1px solid var(--line);font-size:16px}
.row:last-child{border-bottom:0}.row:first-child{padding-top:2px}
.row .src{flex-basis:100%;margin-top:0}
.chips{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:13.5px;font-weight:600;padding:4px 11px;border-radius:999px;
  background:var(--brand-soft);color:var(--brand);line-height:1.4;white-space:nowrap}
.chip.warn{background:var(--gold-soft);color:var(--gold)}.chip.ok{background:var(--green-soft);color:var(--green)}
.chip.new{background:var(--red-soft);color:var(--red)}
a.chip{color:var(--brand)}
.pill{display:inline-flex;align-items:center;padding:3px 10px;border-radius:9px;font-weight:700;font-variant-numeric:tabular-nums}
.pill.up{background:var(--up-soft);color:var(--up)}.pill.dn{background:var(--dn-soft);color:var(--dn)}.pill.flat{background:var(--card2);color:var(--muted)}
.reason{font-size:15px;color:var(--text2);margin:10px 0 0;line-height:1.6}
input[type=password],input[type=text],input:not([type]){width:100%;font-size:17px;padding:13px 14px;border:1px solid var(--line2);
  border-radius:12px;margin:8px 0;background:var(--card2);color:var(--text)}
input::placeholder{color:var(--muted)}
button{font:inherit;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;border:0;padding:12px 20px;border-radius:12px;
  font-size:16px;font-weight:650;min-height:46px;cursor:pointer}
button.ghost{background:transparent;color:var(--text2);border:1px solid var(--line2)}
select{font:inherit;font-size:15px;padding:9px 12px;border:1px solid var(--line2);border-radius:11px;background:var(--card2);color:var(--text);max-width:220px;min-height:42px}
.tabs{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:12px 0;font-size:15px}
.tabs a,.tabs .chip{display:inline-flex;align-items:center;gap:6px;padding:8px 15px;border-radius:999px;border:1px solid var(--line);
  background:var(--card);color:var(--text2);font-weight:550;min-height:40px}
.tabs a .ic{width:18px;height:18px}
.tabs a.on{background:var(--text);color:var(--bg);border-color:var(--text)}
.tabs input{width:auto;flex:1;min-width:140px;max-width:240px;margin:0}
.tabs button{min-height:40px;padding:8px 18px}
.seg{display:inline-flex;padding:4px;background:var(--card);border:1px solid var(--line);border-radius:14px;gap:4px;margin:0 0 6px}
.seg a{padding:8px 18px;border-radius:10px;color:var(--text2);font-weight:600;font-size:16px}
.seg a.on{background:var(--brand-soft);color:var(--text);box-shadow:inset 0 0 0 1px var(--brand)}
details>summary{cursor:pointer}
pre.json{white-space:pre-wrap;word-break:break-all;font-size:13px;max-height:420px;overflow:auto;color:var(--text2)}

/* ---------- 价格 ---------- */
.px{font-size:34px;font-weight:750;letter-spacing:-.01em;line-height:1.1}
.px2{font-size:24px;font-weight:720;margin-left:auto;letter-spacing:-.01em}
.chg{font-size:16px;font-weight:650}
.plab{font-size:13.5px;color:var(--muted);margin-left:6px;font-weight:500}
.pext{display:block;font-size:14.5px;color:var(--muted);margin-top:6px}.pext b{color:var(--text)}
.code2{font-size:20px;font-weight:750;letter-spacing:.02em;color:var(--text)}
.l1{display:flex;align-items:baseline;gap:8px 10px;flex-wrap:wrap}

/* 今日：报价卡 */
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (min-width:700px){.cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1200px){.cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}}
@media (min-width:1800px){.cards{grid-template-columns:repeat(5,minmax(0,1fr))}}
.qc{display:flex;flex-direction:column;padding:16px;margin:0;min-height:100%}
.qc .qh{display:flex;align-items:center;justify-content:space-between;gap:6px}
.qc .code{font-size:19px;font-weight:750;letter-spacing:.03em;color:var(--text)}
.qc .px{font-size:30px;margin-top:8px}
.qc .chg{margin-top:4px;display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.qc .chg .plab{margin-left:2px}
.qc .spark{height:44px;margin-top:10px}
.qc .spl{font-size:13px}
.qc .pext{font-size:13.5px}
.qc .src{font-size:12.5px}
@media (min-width:1024px){.qc{padding:20px}.qc .px{font-size:34px}}

/* 走势小图 */
.spark{display:block;width:100%;height:46px;margin-top:10px;overflow:visible}
.spark polyline{fill:none;stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.spark .cu{stroke:var(--up)}.spark .cd{stroke:var(--dn)}
.spl{font-size:13px;text-align:right;margin-top:2px;font-weight:600;font-variant-numeric:tabular-nums}
.spl.cu{color:var(--up)}.spl.cd{color:var(--dn)}

/* 区间位置条 */
.range{font-size:14px;color:var(--muted);margin-top:14px}
.rl{display:flex;justify-content:space-between;gap:8px;font-size:14px;font-variant-numeric:tabular-nums}
.rl span:first-child{color:var(--text2)}
.bar{position:relative;height:8px;border-radius:99px;margin:8px 0 6px;
  background:linear-gradient(90deg,var(--dn-soft),var(--card2) 50%,var(--up-soft));box-shadow:inset 0 0 0 1px var(--line)}
.bar i{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;background:var(--text);transform:translate(-50%,-50%);
  box-shadow:0 0 0 3px var(--card),0 0 0 4px var(--brand),0 4px 10px rgba(0,0,0,.3)}

/* 分数：环形表盘 / 三项条 */
.gauges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}
.gauge{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;background:var(--card2);border:1px solid var(--line);border-radius:16px}
.gauge .ring{--v:0;--c:var(--brand);width:76px;height:76px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(closest-side,var(--card2) 76%,transparent 78% 100%),conic-gradient(var(--c) calc(var(--v)*1%),var(--line) 0)}
.gauge .ring b{font-size:24px;font-weight:760;font-variant-numeric:tabular-nums}
.gauge span{font-size:14px;color:var(--muted);font-weight:550}
.gauge.g-hi .ring{--c:var(--green)}.gauge.g-mid .ring{--c:var(--gold)}.gauge.g-lo .ring{--c:var(--red)}
.tri{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}
.tri span{position:relative;display:flex;justify-content:space-between;align-items:baseline;gap:6px;font-size:14px;padding-bottom:10px}
.tri i{font-style:normal;color:var(--muted)}.tri b{font-size:18px;font-weight:720}
.tri em{position:absolute;left:0;bottom:0;height:5px;border-radius:9px;background:linear-gradient(90deg,var(--brand),var(--brand2));z-index:1}
.tri span:after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;background:var(--line);border-radius:9px}
.mets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}
.mets span{display:flex;flex-direction:column;gap:2px;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:9px 11px;min-width:0}
.mets i{font-style:normal;font-size:13px;color:var(--muted);white-space:nowrap}
.mets b{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:560px){.mets{grid-template-columns:repeat(2,minmax(0,1fr))}.mets span:first-child{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:baseline}}
.score{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.score b{font-size:40px;font-weight:780;line-height:1}
.score span{color:var(--muted);font-size:15px}
.kv{display:grid;grid-template-columns:1fr auto;gap:0 14px;font-size:16px;margin-top:16px}
.kv span,.kv b{padding:10px 0;border-bottom:1px solid var(--line)}
.kv span{color:var(--muted)}.kv b{font-weight:650;text-align:right}
.card{container-type:inline-size}
@container (min-width:620px){.kv{grid-template-columns:1fr auto 1fr auto;column-gap:26px}}
.reasons{margin:14px 0 0;padding-left:20px;font-size:15.5px;color:var(--text2)}
.reasons li{margin:6px 0;line-height:1.55}.reasons li::marker{color:var(--brand)}
.reasons li.bad{color:var(--red)}.reasons li.warn{color:var(--gold)}.reasons li.bad::marker,.reasons li.warn::marker{color:currentColor}
.parts{margin-top:14px}.part{padding:14px 0;border-top:1px solid var(--line)}.part:first-child{border:0}
.part .ph{display:flex;justify-content:space-between;font-size:16px;color:var(--text)}
.part ul{margin:8px 0 0;padding-left:20px;font-size:15px;color:var(--text2)}
.pbar{height:6px;background:var(--line);border-radius:9px;margin-top:8px}.pbar i{display:block;height:6px;border-radius:9px;background:linear-gradient(90deg,var(--brand),var(--brand2))}

/* ---------- 个股页 ---------- */
.hero{padding:22px;background:linear-gradient(160deg,color-mix(in srgb,var(--brand) 9%,var(--card)),var(--card) 55%)}
.hero .hname{font-size:15px;color:var(--muted);margin-top:2px}
.hero .code2{font-size:30px}
.hero .px{font-size:44px}
.hero .l1+.l1{margin-top:10px}
.hero .chg{font-size:19px}
.hero-grid{display:grid;gap:18px}
@media (min-width:1100px){.hero-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center}.hero .px{font-size:52px}}
.jump{position:sticky;top:calc(67px + env(safe-area-inset-top));z-index:10;display:flex;gap:8px;overflow-x:auto;padding:10px 0;margin:6px 0 0;
  background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);scrollbar-width:none}
.jump::-webkit-scrollbar{display:none}
.jump a{flex:0 0 auto;font-size:15px;font-weight:550;padding:8px 15px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--text2)}
@media (min-width:1024px){.jump{top:0}}
.cols{display:block}
@media (min-width:1400px){.cols{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(340px,1fr);gap:28px;align-items:start}
  .cols>div>.sec:first-child{margin-top:18px}}

/* 每日价格表：桌面为宽表，手机为卡片行 */
.ptable-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;overflow-x:auto;box-shadow:var(--shadow)}
.ptable{width:100%;border-collapse:collapse;font-size:16px}
.ptable th{background:var(--card2);color:var(--muted);font-weight:600;font-size:14px;padding:12px 10px;text-align:right;line-height:1.3;white-space:nowrap}
.ptable th br{display:none}
.ptable td{padding:12px 10px;border-top:1px solid var(--line);text-align:right;vertical-align:middle;line-height:1.35}
.ptable tbody tr:hover td{background:var(--hover)}
.ptable th:first-child,.ptable td:first-child{text-align:left;padding-left:18px}.ptable td:last-child,.ptable th:last-child{padding-right:18px}
.ptable td.d{white-space:nowrap;color:var(--text2);font-weight:600}
.ptable .flag{display:inline-block;margin-left:6px;font-style:normal;font-size:12px;color:var(--gold);background:var(--gold-soft);padding:0 6px;border-radius:6px}
.ptable td.c b{font-size:17px}
.ptable td.c br{display:none}.ptable td.c span{margin-left:10px;font-weight:650}
.ptable small{color:var(--muted);font-size:13px}.ptable td small{display:block}.bigvol{font-weight:750;color:var(--gold)}
.dbar{display:block;position:relative;height:5px;background:var(--line);border-radius:9px;margin:6px 0 0 auto;width:70px}
.dbar i{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;background:var(--brand);transform:translate(-50%,-50%)}
.ptable.mini{margin-top:16px;border:1px solid var(--line);border-radius:14px;overflow:hidden;border-collapse:separate;border-spacing:0}
@media (max-width:759px){
  .ptable:not(.mini) thead{display:none}
  .ptable:not(.mini) tbody tr{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px 6px;padding:13px 16px;border-top:1px solid var(--line)}
  .ptable:not(.mini) tbody tr:first-child{border-top:0}
  .ptable:not(.mini) td{border:0;padding:0;text-align:left}
  .ptable:not(.mini) td.d{grid-column:1/7;font-size:17px;padding:0;align-self:center}
  .ptable:not(.mini) td.c{grid-column:7/13;text-align:right}
  .ptable:not(.mini) td.c b{font-size:19px}
  .ptable:not(.mini) td:nth-child(n+3){grid-column:span 2;font-size:15px}
  .ptable:not(.mini) td:nth-child(n+3)::before{display:block;font-size:12.5px;color:var(--muted);margin-bottom:1px}
  .ptable:not(.mini) td:nth-child(3)::before{content:"开"}.ptable:not(.mini) td:nth-child(4)::before{content:"高"}
  .ptable:not(.mini) td:nth-child(5)::before{content:"低"}.ptable:not(.mini) td:nth-child(6)::before{content:"成交量"}
  .ptable:not(.mini) td:nth-child(7)::before{content:"振幅"}
  .ptable:not(.mini) td:nth-child(6) small{display:inline;margin-left:4px}
  .ptable:not(.mini) td:nth-child(6) br{display:none}
  .ptable:not(.mini) td:nth-child(6),.ptable:not(.mini) td:last-child{grid-column:span 3;padding-right:0}
  .ptable:not(.mini) .dbar{margin:6px 0 0;width:100%}
}

/* K 线图 */
.chart{width:100%;height:auto;display:block}
.chart.cm{display:block}.chart.cd2{display:none}
@media (min-width:760px){.chart.cm{display:none}.chart.cd2{display:block}}
.chart .grid{stroke:var(--line);stroke-width:1}.chart .ax{font-size:12px;fill:var(--muted)}
.chart .cu{stroke:var(--up);fill:var(--up)}.chart .cd{stroke:var(--dn);fill:var(--dn)}
.chart polyline{fill:none;stroke-width:1.6}.chart .close{stroke:var(--brand)}.chart .ma0{stroke:#F5B544}.chart .ma1{stroke:#A06BFF}
.chart .lvl{stroke-width:1.2;stroke-dasharray:5 4}.chart .lvlt{font-size:12px;font-weight:600}
.chart .res{stroke:#38BDF8}.chart text.res{fill:#38BDF8;stroke:none}.chart .sup{stroke:#C084FC}.chart text.sup{fill:#C084FC;stroke:none}
.chart .mid{stroke:var(--muted)}.chart text.mid{fill:var(--muted);stroke:none}
.legend{font-size:14px;color:var(--muted);margin-left:auto;display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.lg{display:inline-block;width:16px;height:3px;border-radius:2px;vertical-align:middle;margin:0 4px 0 10px}
.lg.ma0{background:#F5B544}.lg.ma1{background:#A06BFF}.lg.rs{background:#38BDF8}

/* ---------- 榜单 ---------- */
.board{display:grid;gap:14px}
@media (min-width:1100px){.board{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1700px){.board{grid-template-columns:repeat(3,minmax(0,1fr))}}
.board .card{margin:0}
.board .sub{display:flex;gap:6px 14px;font-size:14.5px;color:var(--muted);margin-top:10px;flex-wrap:wrap}
.rank{display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 6px;border-radius:11px;background:var(--card2);
  border:1px solid var(--line);font-size:15px;font-weight:750;color:var(--text2);font-variant-numeric:tabular-nums}
.rank.r1{background:linear-gradient(135deg,#F5B544,#E88B2E);color:#1A1205;border:0}
.rank.r2{background:linear-gradient(135deg,#D9E2EF,#A9B6C8);color:#111827;border:0}
.rank.r3{background:linear-gradient(135deg,#E2A37A,#B86B3E);color:#1A0E05;border:0}
.mv{font-size:14px;font-weight:700}.mv.up{color:var(--up)}.mv.dn{color:var(--dn)}
.why{list-style:none;margin:12px 0 0;padding:0;font-size:15px;color:var(--text2)}
.why li{display:flex;gap:10px;padding:4px 0;line-height:1.5}
.why i{font-style:normal;flex:0 0 24px;height:24px;line-height:24px;text-align:center;border-radius:8px;background:var(--brand-soft);color:var(--brand);font-size:13px;font-weight:700}

/* 列表行（今日：榜单 / 新闻） */
.list{padding:6px 18px}
.li{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);color:var(--text)}
.li:last-child{border-bottom:0}
.li .grow{flex:1;min-width:0}
.li .t{font-size:16.5px;line-height:1.5;color:var(--text)}
.li .meta{font-size:13.5px;color:var(--muted);margin-top:3px}
.li .sc{font-size:20px;font-weight:750;font-variant-numeric:tabular-nums}
.li .sc small{font-size:13px;color:var(--muted);font-weight:500;margin-left:2px}
.li>.ic{color:var(--muted);width:18px;height:18px}

/* 布局网格 */
.grid2{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
@media (min-width:1100px){.grid2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px}.grid2>.card{margin:0}}
.dash{display:grid;grid-template-columns:minmax(0,1fr);gap:0 24px}
@media (min-width:1100px){.dash{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}}
.statgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (min-width:900px){.statgrid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.stat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow)}
.stat span{display:block;font-size:14px;color:var(--muted)}.stat b{display:block;font-size:24px;font-weight:750;margin-top:4px;font-variant-numeric:tabular-nums}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px var(--green-soft);margin-right:4px;flex:0 0 auto}
.dot.bad{background:var(--gold);box-shadow:0 0 0 4px var(--gold-soft)}
.health{display:grid;grid-template-columns:minmax(0,1fr);gap:0 28px}
@media (min-width:900px){.health{grid-template-columns:repeat(2,minmax(0,1fr))}}
.health .row{align-items:center}

/* 表格（复盘 / 状态） */
.twrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px}
table.t{width:100%;border-collapse:collapse;font-size:16px;font-variant-numeric:tabular-nums}
table.t th{text-align:left;font-size:13.5px;color:var(--muted);font-weight:600;padding:10px 10px;border-bottom:1px solid var(--line2);white-space:nowrap}
table.t td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}
table.t tr:last-child td{border-bottom:0}
table.rv td small{display:block;color:var(--text2);font-size:14.5px;margin-top:4px;line-height:1.5}

/* ---------- 新闻 / 故事 / 预判 ---------- */
.lv{display:inline-flex;align-items:center;font-size:12.5px;font-weight:800;padding:3px 8px;border-radius:7px;background:var(--card2);color:var(--muted);letter-spacing:.03em;line-height:1.3}
.lvP0 .lv,.lv.lvP0{background:var(--red);color:#fff}.lvP1 .lv,.lv.lvP1{background:var(--gold-soft);color:var(--gold)}
.story{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin:0 0 14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.story:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--line2)}
.story.lvP0:before{background:var(--red)}.story.lvP1:before{background:var(--gold)}
.sh{display:flex;gap:8px 10px;align-items:center;flex-wrap:wrap;font-size:18px;line-height:1.45}
.sh>b{flex:1 1 100%;font-size:18px;order:3}
.sh .code2{font-size:18px;color:var(--brand)}
.sh small{margin-left:auto;font-size:13.5px}
.sitem{border-top:1px solid var(--line);padding:14px 0 4px;margin-top:12px}
.sih{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:16.5px;line-height:1.5}.sitem .lv{font-size:11.5px}
.sih b{font-weight:600}
.szh{font-size:15.5px;margin-top:6px;color:var(--text2);line-height:1.6}
.nr{font-size:15px;margin-top:6px;color:var(--text2);line-height:1.55}
.nai{font-size:15px;margin-top:6px;color:var(--text2)}
.nai i{font-style:normal;font-size:11.5px;font-weight:800;background:var(--brand-soft);color:var(--brand);border-radius:5px;padding:1px 6px;margin-right:6px}
.nt{font-size:13.5px;color:var(--muted);margin-top:8px;line-height:1.6}.nt a{font-weight:550}
.nsrc{margin-left:auto;font-size:13px;color:var(--muted)}
.upd{font-size:12px;font-weight:700;padding:2px 7px;border-radius:6px;background:var(--brand-soft);color:var(--brand)}
details.tr{font-size:15px;margin-top:8px}
details.tr summary{color:var(--brand);font-size:14.5px;font-weight:600;padding:4px 0}
details.tr .body{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:6px;white-space:pre-wrap;line-height:1.7;max-height:420px;overflow:auto;color:var(--text2)}
details.en .body{font-family:Georgia,"Times New Roman",serif}
.nitem{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:0 0 10px}
.nlist .nitem{border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0;padding:14px 0}
.nh{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:16.5px}.nh .code2{font-size:17px;color:var(--brand)}
.pred{background:var(--card2);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:14px 0 6px;font-size:15.5px;line-height:1.65}
.pred .ph{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:14px;color:var(--muted);margin-bottom:8px}
.pred .ph>span{background:var(--card);border:1px solid var(--line);padding:2px 9px;border-radius:8px}
.pdir{font-weight:800;font-size:14.5px;color:var(--text)}
.pred .ph>span.pdir{border:0;color:#fff;background:#64748B;padding:3px 11px}
.dup .ph>span.pdir{background:var(--up)}.ddown .ph>span.pdir{background:var(--dn)}
.pred .ph>span.pbf{background:transparent;border-style:dashed}
.phit.h1{color:var(--green)!important}.phit.h0{color:var(--red)!important}
.pw{margin-top:6px;color:var(--text);display:grid;grid-template-columns:5.2em minmax(0,1fr);gap:8px}.pw b{font-size:13.5px;color:var(--muted);font-weight:650;padding-top:2px}
.pl{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;font-size:14px}
.pl span,.pl a{background:var(--card);border:1px solid var(--line);border-radius:9px;padding:3px 10px;color:var(--text2)}
.pl a{color:var(--brand);font-weight:650}.pl b{color:var(--text);font-variant-numeric:tabular-nums}.pl small{color:var(--muted);margin-right:6px;align-self:center}
.pfoot{font-size:12.5px;color:var(--muted);margin-top:10px}
.ptag{display:inline-flex;align-items:center;font-size:13px;font-weight:750;padding:2px 9px;border-radius:7px;background:var(--card2);color:var(--text2)}
.ptag.up{background:var(--up-soft);color:var(--up)}.ptag.dn{background:var(--dn-soft);color:var(--dn)}
.newsgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:0 18px}
@media (min-width:1500px){.newsgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 飞书卡片预览 */
.lark{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin:0 0 14px;box-shadow:var(--shadow);max-width:760px}
.lark .lh{color:#fff;font-weight:700;padding:14px 18px;font-size:18px}.lark .lb{padding:6px 18px 16px}
.lark .ld{font-size:16px;line-height:1.75;padding:10px 0;color:var(--text)}.lark hr{border:0;border-top:1px solid var(--line);margin:4px 0}
.lark .lbtn{display:inline-flex;margin:8px 8px 4px 0;padding:8px 14px;border:1px solid var(--line2);border-radius:10px;font-size:15px;color:var(--text)}
.lark .lnote{font-size:13.5px;color:var(--muted);margin-top:10px}

/* 登录 */
.login{padding:30px 26px}
.login .brand{justify-content:center;margin-bottom:18px}
.login .brand .logo{width:46px;height:46px}.login .brand b{font-size:24px}
.login button{width:100%;margin-top:6px}
@media (max-width:1023px){main.bare{padding-top:6vh}}
@media (min-width:1024px){table.t{font-size:16.5px}}
.cols table.t td,.cols table.t th{padding-left:8px;padding-right:8px}
@media (min-width:1400px) and (max-width:1700px){.cols .ptable td,.cols .ptable th{padding-left:8px;padding-right:8px}.cols .ptable td.c span{margin-left:6px}}
@media (min-width:760px) and (max-width:1120px){.ptable td,.ptable th{padding-left:7px;padding-right:7px}.ptable td.c span{margin-left:6px}}
/* ---- 加入/移出重点 ---- */
.cl{position:relative}
.cl>a.stretch{position:absolute;inset:0;z-index:1;border-radius:inherit}
.cl:hover{border-color:var(--line2);background:var(--hover)}
.cl .fbtn,.cl a:not(.stretch),.cl details,.cl summary{position:relative;z-index:2}
.cfoot{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.fbtn{display:inline-flex;margin:0}
.fbtn button{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border-radius:999px;font:inherit;font-size:15px;font-weight:650;
  cursor:pointer;border:1px solid var(--brand);background:var(--brand-soft);color:var(--brand);transition:background .15s,opacity .15s}
.fbtn button:hover{filter:brightness(1.12)}
.fbtn button .ic{width:17px;height:17px}
.fbtn.on button{border-color:var(--line2);background:transparent;color:var(--text2)}
.fbtn.on button .ic{fill:var(--gold);stroke:var(--gold)}
.fbtn.on button:hover{border-color:var(--red);color:var(--text)}
.fbtn.busy button{opacity:.55;cursor:progress}
.fbtn.sm button{min-height:32px;padding:0 10px;font-size:13.5px}
.fbtn.hb{margin-left:auto;align-self:center}
.src.odn{display:block;color:var(--gold)}
.card.gone{opacity:.35;filter:grayscale(1);pointer-events:none;transition:opacity .3s}
.card.gone .cfoot::before{content:"已移出重点";color:var(--muted);margin-right:auto}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translate(-50%,20px);z-index:100;max-width:min(92vw,560px);
  padding:12px 18px;border-radius:14px;background:var(--card2);border:1px solid var(--line2);color:var(--text);font-size:15.5px;
  box-shadow:0 12px 40px rgba(0,0,0,.35);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.bad{border-color:var(--gold);color:var(--gold)}
@media (min-width:1024px){.toast{bottom:32px;left:calc(50% + var(--side)/2)}}
