/* ============================================================
   蓝宝书Max · 设计稿 v5
   外壳降噪（灰阶纪律）+ 内容层承载色彩
   ============================================================ */
:root{
  --bg:#F5F5F6; --bg-elev:#FBFBFC;
  --surface:#FFFFFF; --surface-2:#F1F1F4; --surface-3:#EAEAEE;
  --line:#E6E6EA; --line-2:#EFEFF2;
  --t1:#16161A; --t2:#54545C; --t3:#6C6C76;
  --inv-bg:#16161A; --inv-t:#FFFFFF;
  /* 品牌 · 宝书蓝（蓝宝书Max 主色，贯穿标识/强调/交互焦点） */
  --brand:#1A5BC4; --brand-deep:#0F3D8A; --brand-solid:#1A5BC4;
  --brand-soft:rgba(26,91,196,.10);
  --accent:#1A5BC4; --accent-soft:rgba(26,91,196,.10);
  /* 涨跌：本轮按用户明示压深一档（浅色底 5.54–5.92:1，原 #C4433A/#2E8B57 仅 3.53–4.25） */
  --up:#B23A31; --dn:#25774A;
  --up-soft:rgba(178,58,49,.10); --dn-soft:rgba(37,119,74,.10);
  --ed-mc:#D9541E; --ed-pm:#C99A18; --ed-ev:#7C5CF0; --ed-gv:#3B6EF0;
  /* 版本「墨色」：同色系压深后的文字色（圆点仍用原色，文字保证 4.5:1） */
  --ink-mc:#A83C0E; --ink-pm:#75560A; --ink-ev:#5233C9; --ink-gv:#2850C4;
  /* 语义徽标（机会/风险/中性）——独立于版本色，避免与四版色混淆 */
  --opp-ink:#A85400; --opp-bg:rgba(217,84,30,.12);
  --risk-ink:#8A3A2E; --risk-bg:rgba(178,58,49,.11);
  --neu-ink:#4A4A52; --neu-bg:rgba(84,84,92,.09);
  --rail:72px; --top:60px; --maxw:1140px;
  --r-s:8px; --r-m:12px; --r-l:16px; --r-pill:999px;
  --sh-1:0 1px 2px rgba(16,16,24,.04);
  --sh-2:0 8px 24px -12px rgba(16,16,24,.18);
  --sh-3:0 18px 48px -20px rgba(16,16,24,.26);
  --ff:-apple-system,BlinkMacSystemFont,"SF Pro SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}
html[data-theme="dark"]{
  --bg:#101012; --bg-elev:#16161A;
  --surface:#191919; --surface-2:#202024; --surface-3:#28282D;
  --line:#2B2B31; --line-2:#232329;
  --t1:#F4F4F6; --t2:#A8A8B1; --t3:#84848E;
  --inv-bg:#EDEDED; --inv-t:#141416;
  --brand:#5A9BEA; --brand-deep:#8FBBF5; --brand-solid:#2E6BCF;
  --brand-soft:rgba(90,155,234,.14);
  --accent:#5A9BEA; --accent-soft:rgba(90,155,234,.14);
  /* 暗色底必须另配浅一档涨跌色，否则沿用浅色值只有 2.96:1 */
  --up:#E8796E; --dn:#4FBE86;
  --ink-mc:#F0AE5E; --ink-pm:#EBC97F; --ink-ev:#B2A0F9; --ink-gv:#93B4FA;
  --opp-ink:#EFAE6A; --opp-bg:rgba(239,174,106,.15);
  --risk-ink:#E39A8F; --risk-bg:rgba(232,121,110,.15);
  --neu-ink:#B4B4BD; --neu-bg:rgba(180,180,189,.12);
  --up-soft:rgba(232,121,110,.16); --dn-soft:rgba(79,190,134,.16);
  --sh-1:0 1px 2px rgba(0,0,0,.30);
  --sh-2:0 10px 30px -14px rgba(0,0,0,.65);
  --sh-3:0 20px 52px -22px rgba(0,0,0,.80);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--t1); font-family:var(--ff);
  -webkit-font-smoothing:antialiased; font-size:14px; line-height:1.6;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
h1,h2,h3,h4{margin:0;letter-spacing:-.02em}
.num{font-variant-numeric:tabular-nums}
.ic{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.ic svg{display:block}
.up{color:var(--up)} .dn{color:var(--dn)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ============ 左侧图标轨道 ============ */
.rail{
  position:fixed;left:0;top:0;bottom:0;width:var(--rail);z-index:60;
  background:var(--bg-elev);border-right:1px solid var(--line);
  display:flex;flex-direction:column;align-items:center;padding:14px 0 12px;gap:4px;
}
.rail .mark{
  width:32px;height:32px;border-radius:9px;background:var(--inv-bg);color:var(--inv-t);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;
  letter-spacing:-.4px;margin-bottom:14px;flex:0 0 auto;
}
.rail a,.rail button.railitem{
  width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  color:var(--t3);position:relative;transition:background .15s,color .15s;
}
.rail a:hover,.rail button.railitem:hover{background:var(--surface-2);color:var(--t1)}
.rail .on{color:var(--t1);background:var(--surface-2)}
.rail .on::before{content:"";position:absolute;left:-14px;top:11px;bottom:11px;width:2.5px;border-radius:2px;background:var(--accent)}
.rail .lbl{
  position:absolute;left:52px;top:50%;transform:translateY(-50%) scale(.96);transform-origin:left center;
  background:var(--inv-bg);color:var(--inv-t);font-size:12px;padding:5px 9px;border-radius:7px;
  white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .14s,transform .14s;font-weight:500;
}
.rail a:hover .lbl,.rail button.railitem:hover .lbl{opacity:1;transform:translateY(-50%) scale(1)}
.rail .spacer{flex:1}
.rail .uav{width:30px;height:30px;border-radius:50%;background:var(--surface-3);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--t2)}
.rail .uav.on2{background:var(--accent);color:#fff}

/* ============ 顶栏 ============ */
.app{padding-left:var(--rail);min-height:100vh}
.top{
  position:sticky;top:0;z-index:50;height:var(--top);
  background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:10px;padding:0 20px;
}
.top .brand{display:none;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:-.02em}
.top .brand .bm{width:26px;height:26px;border-radius:8px;background:var(--inv-bg);color:var(--inv-t);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.top .crumb{font-size:13px;color:var(--t2);font-weight:600}
.top .crumb b{color:var(--t1);font-weight:700}
.top .grow{flex:1}
/* 检索：纯图标按钮，不写提示文字 */
.top .searchbtn{
  width:36px;height:36px;border-radius:10px;background:var(--surface);border:1px solid var(--line);
  display:inline-flex;align-items:center;justify-content:center;color:var(--t2);
  transition:color .15s,border-color .15s,background .15s;
}
.top .searchbtn:hover{border-color:var(--t3);color:var(--t1)}
.top .loginbtn{
  height:36px;padding:0 16px;border-radius:var(--r-pill);background:var(--inv-bg);color:var(--inv-t);
  font-size:13px;font-weight:700;display:inline-flex;align-items:center;gap:7px;
  transition:opacity .15s;white-space:nowrap;
}
.top .loginbtn:hover{opacity:.86}
.top .acct{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 12px 0 4px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface)}
.top .acct .uav{width:28px;height:28px;border-radius:50%;background:var(--brand-solid);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.top .acct .nm{font-size:12.5px;font-weight:700}
.top .acct .tg{font-size:10.5px;font-weight:700;color:var(--accent);background:var(--accent-soft);padding:1px 6px;border-radius:4px}

/* ============ 容器 ============ */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px 72px}
.sec{padding:54px 0 0}
.sec-h{margin-bottom:22px}
/* 区块英文/中文小便签（.eyebrow）已于 2026-09-28 全站移除，样式一并删除。
   它和紧随其后的 h2 语义重复（如「市场行情 / 指数行情」「研究工具 / 工具」），
   属装饰性标签。若将来恢复，须同时恢复 v7_extra.css 里的装饰短横。 */
.sec-h h2{font-size:25px;font-weight:800;line-height:1.25}
.sec-h p{margin:8px 0 0;font-size:13.5px;color:var(--t2);line-height:1.6}
.sec-h .row{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}
.sec-h .row .grow{flex:1}

/* ============ HERO ============ */
.hero{padding:64px 0 8px}
.hero h1{font-size:52px;font-weight:800;line-height:1.06;letter-spacing:-.035em;margin:0 0 14px}
.hero h1 .grad{background:linear-gradient(96deg,var(--brand),var(--ed-ev));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero .slogan{font-size:19px;font-weight:600;color:var(--t1);margin:0 0 8px;letter-spacing:-.01em}
.hero .sub{margin:0;font-size:13.5px;color:var(--t2)}
.hero .hd{display:flex;align-items:flex-start;gap:36px;flex-wrap:wrap}
.hero .hd-copy{flex:1;min-width:300px}
/* 唯一数字：已刊期数 */
.hero .statbox{
  flex:0 0 auto;min-width:230px;padding:24px 26px;border-radius:var(--r-l);
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-1);
}
.hero .statbox .k{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);margin-bottom:10px}
.hero .statbox .v{display:flex;align-items:baseline;gap:6px}
.hero .statbox .v b{font-size:46px;font-weight:800;line-height:1;letter-spacing:-.04em;color:var(--t1)}
.hero .statbox .v i{font-size:15px;font-weight:700;font-style:normal;color:var(--t2)}
.hero .statbox .d{margin-top:9px;font-size:12.5px;color:var(--t2);line-height:1.5}
.hero .statbox .bars{display:flex;gap:6px;margin-top:14px}
.hero .statbox .bars span{flex:1;height:4px;border-radius:2px;background:var(--surface-3)}
.hero .statbox .bars span.b1{background:var(--ed-gv)} .hero .statbox .bars span.b2{background:var(--ed-mc)}
.hero .statbox .bars span.b3{background:var(--ed-pm)} .hero .statbox .bars span.b4{background:var(--ed-ev)}
.hero .cta{display:flex;gap:11px;flex-wrap:wrap;margin-top:26px}
.btn{
  height:44px;padding:0 22px;border-radius:var(--r-pill);font-size:14px;font-weight:700;
  display:inline-flex;align-items:center;gap:8px;transition:transform .18s,opacity .18s,border-color .18s,background .18s;
}
.btn:active{transform:scale(.98)}
.btn-p{background:var(--inv-bg);color:var(--inv-t)}
.btn-p:hover{opacity:.88}
.btn-g{background:var(--surface);color:var(--t1);border:1px solid var(--line)}
.btn-g:hover{border-color:var(--t3)}
.btn-sm{height:36px;padding:0 16px;font-size:13px}

/* ============ 今日出刊（版次轨） ============ */
.iss{display:grid;grid-template-columns:1fr 210px;gap:14px;align-items:stretch}
.iss-rail{
  margin:0;padding:0;list-style:none;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-l);box-shadow:var(--sh-1);display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;
}
.iss-i{display:block;padding:20px 18px 18px;position:relative;transition:background .16s}
.iss-i + .iss-i{border-left:1px solid var(--line-2)}
.iss-i:hover{background:var(--surface-2)}
.iss-i[data-ed="mc"]{--ec:var(--ed-mc);--ink:var(--ink-mc)} .iss-i[data-ed="pm"]{--ec:var(--ed-pm);--ink:var(--ink-pm)}
.iss-i[data-ed="ev"]{--ec:var(--ed-ev);--ink:var(--ink-ev)} .iss-i[data-ed="gv"]{--ec:var(--ed-gv);--ink:var(--ink-gv)}
.iss-top{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.iss-top .dot{width:9px;height:9px;border-radius:50%;border:2px solid var(--ec);background:var(--surface);box-sizing:content-box;flex:0 0 auto}
.iss-i[data-st="done"] .iss-top .dot{background:var(--ec)}
.iss-i[data-st="wait"] .iss-top .dot{border-style:dashed;border-color:var(--t3)}
.iss-top .tm{font-size:12px;font-weight:700;color:var(--t2);letter-spacing:.02em}
.iss-top::after{content:"";flex:1;height:1px;background:var(--line-2)}
.iss-nm{font-size:15px;font-weight:800;letter-spacing:-.02em;margin-bottom:4px}
.iss-no{font-size:11.5px;color:var(--t2);font-variant-numeric:tabular-nums}
.iss-st{display:inline-flex;align-items:center;gap:5px;margin-top:11px;font-size:11.5px;font-weight:700;color:var(--t2)}
.iss-st .d2{width:5px;height:5px;border-radius:50%;background:var(--t3)}
.iss-i[data-st="done"] .iss-st{color:var(--ink)}
.iss-i[data-st="done"] .iss-st .d2{background:var(--ec)}
.iss-sum{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:20px 18px;display:flex;flex-direction:column;gap:12px;
}
.iss-sum .h{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t2)}
.iss-sum .r{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--t2)}
.iss-sum .r b{font-size:16px;font-weight:800;color:var(--t1);letter-spacing:-.02em}
.iss-sum .lnk{margin-top:auto;font-size:12.5px;font-weight:700;color:var(--accent);display:inline-flex;align-items:center}

/* ============ 主线列表 ============ */
.mn-filter{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:16px}
.mn-chip{
  height:30px;padding:0 13px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--surface);font-size:12.5px;font-weight:600;color:var(--t2);
  display:inline-flex;align-items:center;gap:6px;transition:all .15s;
}
.mn-chip:hover{border-color:var(--t3);color:var(--t1)}
.mn-chip.on{background:var(--inv-bg);color:var(--inv-t);border-color:transparent}
.mn-chip .n{font-size:11px;opacity:.62;font-variant-numeric:tabular-nums}
.mn-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px;background:var(--line-2);border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden}
.mn{
  background:var(--surface);padding:16px 18px;display:grid;grid-template-columns:52px 1fr auto;
  gap:16px;align-items:center;transition:background .16s;
}
.mn:hover{background:var(--surface-2)}
.mn .ht{font-size:20px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;text-align:center;line-height:1.1}
.mn .ht i{display:block;font-size:9.5px;font-weight:700;font-style:normal;color:var(--t3);letter-spacing:.08em;margin-top:3px}
.mn .bd{min-width:0}
.mn .tt{font-size:14.5px;font-weight:700;line-height:1.42;letter-spacing:-.015em;color:var(--t1);margin-bottom:8px}
.mn .meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mn .kd{font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:5px;letter-spacing:.02em}
.mn .kd.opportunity{color:var(--opp-ink);background:var(--opp-bg)}
.mn .kd.risk{color:var(--risk-ink);background:var(--risk-bg)}
.mn .kd.neutral{color:var(--neu-ink);background:var(--neu-bg)}
.mn .secs{display:flex;gap:6px;flex-wrap:wrap}
.mn .sc{font-size:11.5px;color:var(--t2);background:var(--surface-2);border:1px solid var(--line-2);padding:2px 8px;border-radius:5px}
.mn .rt{text-align:right;white-space:nowrap}
.mn .rt .av{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;display:block}
.mn .rt .cn{font-size:11.5px;color:var(--t2);margin-top:3px;display:block}
.thr{display:inline-flex;gap:3px;align-items:center;margin-left:2px}
.thr i{width:5px;height:5px;border-radius:50%;background:color-mix(in srgb,var(--t3) 40%,transparent);display:block}
.thr i.on{background:var(--accent)}
.thr-l{font-size:11px;color:var(--t3);margin-left:6px}

/* ============ 报告中心 ============ */
.rc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.rc-c{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
  padding:15px 15px 14px;display:block;transition:transform .2s,border-color .2s,box-shadow .2s;
}
.rc-c:hover{transform:translateY(-3px);border-color:var(--t3);box-shadow:var(--sh-2)}
.rc-c[data-ed="mc"]{--ec:var(--ed-mc);--ink:var(--ink-mc)} .rc-c[data-ed="pm"]{--ec:var(--ed-pm);--ink:var(--ink-pm)}
.rc-c[data-ed="ev"]{--ec:var(--ed-ev);--ink:var(--ink-ev)} .rc-c[data-ed="gv"]{--ec:var(--ed-gv);--ink:var(--ink-gv)}
.rc-t{display:flex;align-items:center;gap:7px;margin-bottom:10px}
.rc-t .bd{width:6px;height:6px;border-radius:50%;background:var(--ec)}
.rc-t .nm{font-size:12.5px;font-weight:800;color:var(--ink)}
.rc-d{font-size:16px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-bottom:3px}
.rc-s{font-size:11.5px;color:var(--t2);font-variant-numeric:tabular-nums}
.rc-w{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);margin-bottom:10px}

/* 免责声明块（.fo-disc*）已于 2026-09-28 全站移除，样式一并删除；
   报告页的一句话提示见 v8_extra.css 的 .rp-disc。 */

/* ============ 移动端底部栏 ============ */
.tabbar{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:70;
  background:color-mix(in srgb,var(--bg) 92%,transparent);
  backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);
  border-top:1px solid var(--line);
  padding:7px 6px calc(7px + env(safe-area-inset-bottom,0px));
}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;color:var(--t3);font-weight:600;padding:2px 0}
.tabbar a.on{color:var(--t1)}
.tabbar a .ic{height:22px}

/* ============================================================
   报告页
   ============================================================ */
.rp{padding-top:0}
.rp-bar{
  /* 吸顶基准是 0，不是 var(--top)。
     顶栏 .top 在 v7 里被改成 position:relative（滚动即走），若这里仍以 --top(=60px)
     为基准，吸顶后上方会留出 60px 透明带，正文从吸顶栏上面穿过去 —— 实测
     elementFromPoint(中, y=8/20/40) 命中的是报告正文的 TD，不是栏体。 */
  position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;
  padding:11px 0;background:color-mix(in srgb,var(--bg) 92%,transparent);
  backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);
}
.rp-back{
  display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 12px 0 9px;border-radius:var(--r-pill);
  border:1px solid var(--line);background:var(--surface);font-size:12.5px;font-weight:700;color:var(--t1);
}
.rp-back:hover{border-color:var(--t3)}
.rp-bar-t{font-size:12.5px;color:var(--t2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-ic{
  width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:var(--surface);
  display:inline-flex;align-items:center;justify-content:center;color:var(--t2);
}
.rp-ic:hover{border-color:var(--t3);color:var(--t1)}
.grow2{flex:1}

.rp-head{padding:34px 0 26px;border-bottom:1px solid var(--line)}
/* 报头小便签（.rp-eyebrow，「Evening Briefing / 午间版」）已于 2026-09-28 移除：
   其文本与 h1 语义重复，且属产品 owner 明令删除的「小便签」。版别识别改由
   v8_extra.css 的 .rp-head::before 色条承载。此处不再产生任何规则。 */
.rp-head h1{font-size:34px;font-weight:800;line-height:1.18;letter-spacing:-.03em;margin-bottom:16px}
.rp-meta{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;font-size:12.5px;color:var(--t2)}
.rp-meta .m{display:inline-flex;align-items:center;gap:5px}
.rp-meta b{color:var(--t1);font-weight:800;font-variant-numeric:tabular-nums}
.rp-sum{
  margin-top:20px;padding:16px 18px;border-radius:var(--r-m);
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-1);
}
.rp-sum .t{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t2);margin-bottom:9px}
.rp-sum ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.rp-sum li{font-size:13px;color:var(--t1);line-height:1.6;padding-left:14px;position:relative}
.rp-sum li::before{content:"";position:absolute;left:2px;top:9px;width:4px;height:4px;border-radius:50%;background:var(--ed-ev)}

/* 主题目录（sticky） */
.rp-toc{
  /* 紧贴 .rp-bar 下沿：55px = 桌面端 .rp-bar 实测高度（barH）。
     改 .rp-bar 的内边距/字号就要同步这里，否则目录会压住栏体或留出缝。 */
  position:sticky;top:55px;z-index:35;display:flex;align-items:center;gap:8px;
  padding:11px 0;margin-bottom:8px;background:color-mix(in srgb,var(--bg) 94%,transparent);
  backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line-2);overflow-x:auto;scrollbar-width:none;
}
.rp-toc::-webkit-scrollbar{display:none}
.rp-toc .lb{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);flex:0 0 auto;margin-right:4px}
.rp-toc a{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;border-radius:var(--r-pill);
  border:1px solid var(--line);background:var(--surface);font-size:12.5px;font-weight:600;color:var(--t2);white-space:nowrap;
}
.rp-toc a:hover{border-color:var(--t3);color:var(--t1)}
.rp-toc a .no{font-size:10.5px;font-weight:800;color:var(--t3);font-variant-numeric:tabular-nums}
.rp-toc a .cn{font-size:10.5px;font-weight:700;color:var(--t2);background:var(--surface-2);padding:1px 6px;border-radius:4px;font-variant-numeric:tabular-nums}

/* 分组 */
.grp{padding-top:34px}
.grp-h{display:flex;align-items:center;gap:11px;margin-bottom:16px}
.grp-h .n{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);font-variant-numeric:tabular-nums}
.grp-h h2{font-size:19px;font-weight:800;letter-spacing:-.02em}
.grp-h .c{font-size:11.5px;font-weight:700;color:var(--t2);background:var(--surface-2);border:1px solid var(--line-2);padding:2px 8px;border-radius:5px;font-variant-numeric:tabular-nums}
.grp-h .ln{flex:1;height:1px;background:var(--line)}

/* 主题卡 */
.tc{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);margin-bottom:14px;overflow:clip;
}
.tc-header{padding:18px 20px 0;display:flex;flex-direction:column;gap:11px}
.tc-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tc-top{
  font-size:10.5px;font-weight:800;letter-spacing:.06em;color:var(--t1);background:var(--surface-2);
  border:1px solid var(--line);padding:2px 8px;border-radius:5px;font-variant-numeric:tabular-nums;
}
.tc-kind{font-size:10.5px;font-weight:800;padding:2px 8px;border-radius:5px;letter-spacing:.02em}
.tc-kind.opportunity{color:var(--opp-ink);background:var(--opp-bg)}
.tc-kind.risk{color:var(--risk-ink);background:var(--risk-bg)}
.tc-kind.neutral{color:var(--neu-ink);background:var(--neu-bg)}
.tc-avg{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--t2)}
.tc-chevron{
  margin-left:auto;width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--surface);
  display:inline-flex;align-items:center;justify-content:center;color:var(--t2);transition:transform .22s,border-color .16s;
}
.tc-chevron:hover{border-color:var(--t3)}
.tc.collapsed .tc-chevron{transform:rotate(-90deg)}
.tc-name{font-size:18px;font-weight:800;line-height:1.38;letter-spacing:-.022em;margin-bottom:14px;padding:0 20px}
.tc-tags{display:flex;gap:6px;flex-wrap:wrap;padding:0 20px 4px}
.tc-tags .tag{
  font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:6px;
  background:var(--surface-2);border:1px solid var(--line-2);color:var(--t2);
}
.tc-tags .tag.primary{background:var(--accent-soft);border-color:transparent;color:var(--accent);font-weight:700}
html[data-theme="dark"] .tc-tags .tag.primary{color:var(--accent)}
.tc-body{padding:14px 20px 20px}
.tc.collapsed .tc-body,.tc.collapsed .tc-tags,.tc.collapsed .tc-name{display:none}
.tc-body p{margin:0 0 12px;font-size:14px;line-height:1.82;color:var(--t1)}
.tc-body p:last-of-type{margin-bottom:0}
.tc-body strong{font-weight:700}
.sec-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:16px 0 4px}
.sec-chips .k{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);flex:0 0 auto}
.sec-chips .chip{font-size:11.5px;font-weight:600;color:var(--t2);background:var(--surface-2);border:1px solid var(--line-2);padding:3px 9px;border-radius:6px}
.sec-chips .chip.p{color:var(--accent);background:var(--accent-soft);border-color:transparent;font-weight:700}

/* 标的表 */
.tb-wrap{margin-top:16px;border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden}
.tb{width:100%;border-collapse:collapse;font-size:13px}
.tb th{
  text-align:left;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--t2);
  background:var(--surface-2);padding:9px 14px;border-bottom:1px solid var(--line);white-space:nowrap;
}
.tb td{padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:top;line-height:1.6}
.tb tr:last-child td{border-bottom:none}
.tb tbody tr:hover{background:var(--surface-2)}
.tb .st{white-space:nowrap}
.tb .st b{font-size:13.5px;font-weight:700;display:block}
.tb .st .cd{font-size:11px;color:var(--t2);font-variant-numeric:tabular-nums}
.tb .sector{font-size:12px;color:var(--t2);white-space:nowrap}
.tb .rsn{font-size:12.5px;color:var(--t2);min-width:190px}
.tb .r{text-align:right;white-space:nowrap}
.tb .pct{font-size:13.5px;font-weight:800;font-variant-numeric:tabular-nums}

/* 未登录门禁 */
.gate{position:relative;margin-bottom:14px}
.gate-blur{filter:blur(7px);opacity:.5;pointer-events:none;user-select:none}
.gate-box{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;width:min(420px,86%);
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-3);
  padding:26px 24px;text-align:center;
}
.gate-box .lk{width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.gate-box h3{font-size:16px;font-weight:800;margin-bottom:7px}
.gate-box p{margin:0 0 18px;font-size:12.5px;color:var(--t2);line-height:1.62}

.rp-foot{padding-top:40px}

/* ============================================================
   登录弹层
   ============================================================ */
.mask{
  position:fixed;inset:0;z-index:200;background:rgba(16,16,22,.52);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.mask[hidden]{display:none}
.lbox{
  width:min(430px,100%);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-l);box-shadow:var(--sh-3);padding:30px 28px 26px;position:relative;
  max-height:calc(100vh - 40px);overflow-y:auto;
}
.lbox .x{position:absolute;right:14px;top:14px;width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;color:var(--t3)}
.lbox .x:hover{background:var(--surface-2);color:var(--t1)}
.lbox .lg{margin-bottom:20px}
.lbox .lg .mark{width:36px;height:36px;border-radius:11px;background:var(--inv-bg);color:var(--inv-t);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;margin-bottom:14px}
.lbox h2{font-size:20px;font-weight:800;letter-spacing:-.025em;margin-bottom:7px}
.lbox .lg p{margin:0;font-size:13px;color:var(--t2);line-height:1.6}
.lf{margin-bottom:14px}
.lf label{display:block;font-size:12px;font-weight:700;color:var(--t2);margin-bottom:7px}
.lf .inw{display:flex;gap:8px}
.lf input{
  flex:1;height:46px;border-radius:var(--r-m);border:1px solid var(--line);background:var(--surface-2);
  padding:0 14px;font-size:14.5px;font-family:var(--ff);color:var(--t1);letter-spacing:.04em;
  font-variant-numeric:tabular-nums;outline:none;transition:border-color .15s,background .15s;
}
.lf input:focus{border-color:var(--accent);background:var(--surface)}
.lf .hint{margin-top:7px;font-size:11.5px;color:var(--t3)}
.lchk{display:flex;align-items:flex-start;gap:9px;margin:16px 0 18px;font-size:12px;color:var(--t2);line-height:1.6;cursor:pointer}
.lchk input{width:16px;height:16px;margin:2px 0 0;flex:0 0 auto;accent-color:var(--accent)}
.lchk a{color:var(--accent);font-weight:600}
.lbtn{
  width:100%;height:46px;border-radius:var(--r-m);background:var(--inv-bg);color:var(--inv-t);
  font-size:14.5px;font-weight:800;transition:opacity .15s;
}
.lbtn:hover{opacity:.88}
.lbtn:disabled{opacity:.4;cursor:not-allowed}
.lalt{margin-top:16px;padding-top:16px;border-top:1px solid var(--line-2);text-align:center}
.lalt p{margin:0 0 11px;font-size:11.5px;color:var(--t3)}
.lalt .row{display:flex;gap:9px}
.lalt .b{flex:1;height:40px;border-radius:var(--r-m);border:1px solid var(--line);background:var(--surface);font-size:12.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:7px}
.lalt .b:hover{border-color:var(--t3)}
.lerr{margin-top:12px;font-size:12px;font-weight:600;color:var(--up);display:none}
.lerr.on{display:block}

/* ============================================================
   检索面板（⌘K）
   ============================================================ */
.pal{
  position:fixed;inset:0;z-index:210;background:rgba(16,16,22,.5);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  display:flex;align-items:flex-start;justify-content:center;padding:12vh 20px 20px;
}
.pal[hidden]{display:none}
.pal-b{
  width:min(600px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-3);overflow:hidden;
}
.pal-in{display:flex;align-items:center;gap:10px;padding:15px 17px;border-bottom:1px solid var(--line)}
.pal-in input{flex:1;border:none;outline:none;background:none;font-family:var(--ff);font-size:15px;color:var(--t1)}
.pal .esc{font-size:11px;border:1px solid var(--line);border-radius:5px;padding:2px 6px;color:var(--t3);background:var(--surface-2);flex:0 0 auto}
.pal-body{max-height:52vh;overflow-y:auto;padding:8px 8px 12px}
.pal-g{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);padding:12px 11px 6px}
.pal-r{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:var(--r-s);font-size:13.5px}
.pal-r:hover,.pal-r.on{background:var(--surface-2)}
.pal-r .ic2{color:var(--t3)}
.pal-r .sb{margin-left:auto;font-size:11.5px;color:var(--t3)}
.pal-foot{padding:11px 17px;border-top:1px solid var(--line);font-size:11.5px;color:var(--t3);display:flex;gap:16px;flex-wrap:wrap}
.pal-foot b{color:var(--t2);font-weight:700}

/* ============================================================
   演示控件（非站点 UI）
   ============================================================ */
.vsw{
  position:fixed;left:14px;bottom:14px;z-index:300;display:flex;gap:4px;padding:5px;
  background:var(--inv-bg);border-radius:var(--r-pill);box-shadow:var(--sh-3);
}
.vsw button{
  height:30px;padding:0 14px;border-radius:var(--r-pill);font-size:12px;font-weight:700;
  color:var(--inv-t);opacity:.62;transition:opacity .15s,background .15s;
}
.vsw button.on{opacity:1;background:rgba(255,255,255,.16)}
.vsw button:hover{opacity:.9}

/* ============================================================
   响应式
   ============================================================ */
@media (max-width:1024px){
  .rc-grid{grid-template-columns:repeat(3,1fr)}
  .iss{grid-template-columns:1fr}
  .iss-rail{grid-template-columns:repeat(2,1fr)}
  .iss-i:nth-child(3){border-left:none}
  .iss-i:nth-child(n+3){border-top:1px solid var(--line-2)}
}
@media (max-width:768px){
  /* --tabh = 底部标签栏的高度（不含安全区）。
     底部固定元素（跑马灯）与页面留白都引它，避免各自写死数字后互相对不上：
     此前跑马灯写死 bottom:0，与标签栏在垂直方向重叠 3px，文字被栏体切掉一截。 */
  :root{--top:54px;--tabh:59px}
  .rail{display:none}
  .app{padding-left:0}
  .top .brand{display:flex}
  .top .crumb{display:none}
  .top{padding:0 14px}
  .top .acct{padding:0 10px 0 3px;gap:6px}
  .top .acct .uav{width:25px;height:25px}
  .top .acct .tg{display:none}
  .top .loginbtn{height:34px;padding:0 13px;font-size:12.5px}
  .wrap{padding:0 14px 84px}
  /* 实时监控页多一条底部固定跑马灯，页脚要让出「标签栏 + 跑马灯」两层 */
  body[data-page="live"] .wrap{padding-bottom:calc(var(--tabh) + 52px + env(safe-area-inset-bottom,0px))}
  .hero{padding:36px 0 4px}
  .hero h1{font-size:36px}
  .hero .slogan{font-size:16.5px}
  .hero .hd{gap:22px}
  .hero .statbox{width:100%;min-width:0;padding:18px 20px}
  .hero .statbox .v b{font-size:38px}
  .hero .cta{margin-top:20px;gap:9px}
  .btn{flex:1;justify-content:center;height:46px}
  .sec{padding:38px 0 0}
  .sec-h h2{font-size:21px}
  .iss-rail{grid-template-columns:repeat(2,1fr)}
  .iss-i{padding:15px 14px 14px}
  .mn{grid-template-columns:44px 1fr;gap:12px;padding:14px}
  .mn .rt{grid-column:2;text-align:left;display:flex;align-items:baseline;gap:12px;margin-top:2px}
  .mn .rt .av,.mn .rt .cn{margin:0}
  .mn .ht{font-size:17px}
  .rc-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .tabbar{display:flex}
  /* 报告页 */
  .rp-bar{top:0;padding:9px 0}
  .rp-head{padding:24px 0 20px}
  .rp-head h1{font-size:24px}
  .rp-meta{gap:6px 14px;font-size:12px}
  .rp-sum{padding:14px 15px;margin-top:16px}
  .rp-sum li{font-size:12.5px}
  /* 51px = 手机端 .rp-bar 实测高度（barH，B-10 保证其恒为单行） */
  .rp-toc{top:51px;padding:9px 0}
  .grp{padding-top:26px}
  .grp-h h2{font-size:17px}
  .tc-header{padding:15px 15px 0}
  .tc-name{font-size:16.5px;padding:0 15px;line-height:1.42;margin-bottom:12px}
  .tc-tags{padding:0 15px 2px}
  .tc-body{padding:12px 15px 16px}
  .tc-body p{font-size:14.5px;line-height:1.86}
  .sec-chips{margin:14px 0 2px}
  .gate-box{padding:22px 18px}
}
@media (max-width:560px){
  .rc-grid{grid-template-columns:repeat(2,1fr)}
  .iss-rail{grid-template-columns:1fr}
  .iss-i + .iss-i{border-left:none;border-top:1px solid var(--line-2)}
  /* 标的表改为卡片流（手机端免横滑） */
  .tb-wrap{border:none;border-radius:0;overflow:visible}
  .tb, .tb thead, .tb tbody, .tb tr, .tb td{display:block;width:100%}
  .tb thead{display:none}
  .tb{border-collapse:separate;border-spacing:0}
  .tb tr{
    border:1px solid var(--line);border-radius:var(--r-m);background:var(--surface);
    margin-bottom:9px;padding:11px 13px;position:relative;
  }
  .tb tr:hover{background:var(--surface)}
  .tb td{border:none;padding:0;display:block}
  .tb td.st{margin-bottom:7px;padding-right:74px}
  .tb td.sector{font-size:11.5px;color:var(--t3);margin-bottom:5px}
  .tb td.rsn{font-size:12.5px;color:var(--t2)}
  .tb td.r{position:absolute;right:13px;top:12px;text-align:right}
  .tb .pct{font-size:15px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}
/* ============================================================
   蓝宝书Max · 设计稿 v6 增量
   在 v5 灰阶纪律之上，补齐全站缺失的模块：
   指数行情条 / 工具入口 / 会员购买 / 实时监控 / 宏观日历 /
   融资融券 / 我的自选股 / 专题时间线 / 个股深度 / 合规声明
   ============================================================ */

/* ============================================================
   ① 侧边栏（240px 可折叠 ↔ 72px 图标轨道）
   真实站点为 240px 玻璃侧边栏；此处默认展开保证可发现性，
   折叠后退化为图标轨道，两者兼得。
   ============================================================ */
.sb{
  position:fixed;left:0;top:0;bottom:0;width:236px;z-index:60;
  background:var(--bg-elev);border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:14px 12px 12px;
  transition:width .22s cubic-bezier(.4,0,.2,1);
}
.sb-brand{display:flex;align-items:center;gap:9px;padding:2px 6px 0;margin-bottom:18px;min-height:32px}
.sb-brand .mark{
  width:30px;height:30px;border-radius:9px;background:var(--inv-bg);color:var(--inv-t);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12.5px;
  letter-spacing:-.4px;flex:0 0 auto;
}
.sb-brand .nm{font-size:14.5px;font-weight:800;letter-spacing:-.02em;white-space:nowrap}
.sb-brand .nm span{color:var(--t3);font-weight:700}
.sb-collapse{
  margin-left:auto;width:26px;height:26px;border-radius:7px;display:inline-flex;
  align-items:center;justify-content:center;color:var(--t3);flex:0 0 auto;
}
.sb-collapse:hover{background:var(--surface-2);color:var(--t1)}
.sb-nav{display:flex;flex-direction:column;gap:2px}
.sb-grp{
  font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);
  padding:14px 10px 6px;
}
.sb-link{
  display:flex;align-items:center;gap:11px;height:38px;padding:0 10px;border-radius:9px;
  font-size:13.5px;font-weight:600;color:var(--t2);position:relative;white-space:nowrap;
  transition:background .14s,color .14s;
}
.sb-link:hover{background:var(--surface-2);color:var(--t1)}
.sb-link.on{background:var(--surface-2);color:var(--t1);font-weight:700}
.sb-link.on::before{
  content:"";position:absolute;left:-12px;top:9px;bottom:9px;width:2.5px;
  border-radius:0 2px 2px 0;background:var(--accent);
}
.sb-link .n{margin-left:auto;font-size:10.5px;font-weight:700;color:var(--t3);font-variant-numeric:tabular-nums}
.sb-link .n.live{color:var(--up)}
.sb-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line-2);display:flex;flex-direction:column;gap:8px}
.sb-user{display:flex;align-items:center;gap:9px;padding:4px 6px;min-height:34px}
.sb-user .uav{
  width:28px;height:28px;border-radius:50%;background:var(--surface-3);color:var(--t2);
  display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:800;flex:0 0 auto;
}
.sb-user .uav.on{background:var(--brand-solid);color:#fff}
.sb-user .tx{min-width:0}
.sb-user .tx b{display:block;font-size:12.5px;font-weight:700;white-space:nowrap}
.sb-user .tx i{font-style:normal;font-size:11px;color:var(--t2);white-space:nowrap}
.sb-btn{
  height:38px;border-radius:9px;background:var(--inv-bg);color:var(--inv-t);
  font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:7px;
}
.sb-btn:hover{opacity:.88}
.sb-btn.gh{background:var(--surface);color:var(--t1);border:1px solid var(--line);font-weight:600}
.sb-btn.gh:hover{border-color:var(--t3);opacity:1}
body.sb-collapsed .sb{width:72px;padding:14px 0 12px;align-items:center}
body.sb-collapsed .sb-brand{padding:0}
body.sb-collapsed .sb-brand .nm,
body.sb-collapsed .sb-collapse,
body.sb-collapsed .sb-link .tx,
body.sb-collapsed .sb-link .n,
body.sb-collapsed .sb-grp,
body.sb-collapsed .sb-user .tx{display:none}
body.sb-collapsed .sb-brand .mark{margin:0}
body.sb-collapsed .sb-nav{width:100%;align-items:center}
body.sb-collapsed .sb-link{width:44px;height:44px;justify-content:center;padding:0;border-radius:11px}
body.sb-collapsed .sb-link.on::before{left:-14px}
body.sb-collapsed .sb-foot{width:100%;align-items:center;border-top:none;padding-top:8px}
body.sb-collapsed .sb-btn{width:44px;height:38px;font-size:0;gap:0}
body.sb-collapsed .sb-user{padding:0}
body.sb-collapsed .sb-cmd{width:44px}
body.sb-collapsed .sb-cmd .kbd{display:none}
/* 折叠态悬浮提示 */
.sb-link[data-tip]:hover::after{
  content:attr(data-tip);position:absolute;left:54px;top:50%;transform:translateY(-50%);
  background:var(--inv-bg);color:var(--inv-t);font-size:12px;font-weight:500;
  padding:5px 9px;border-radius:7px;white-space:nowrap;z-index:5;
}
body:not(.sb-collapsed) .sb-link[data-tip]:hover::after{display:none}
.iss-i{min-width:0}
.iss-i .iss-nm,.iss-i .iss-no{display:block}
.iss-no{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sb-cmd{
  display:flex;align-items:center;gap:9px;height:36px;padding:0 10px;border-radius:9px;
  border:1px solid var(--line);background:var(--surface);color:var(--t2);font-size:12.5px;font-weight:600;
}
.sb-cmd:hover{border-color:var(--t3);color:var(--t1)}
.sb-cmd .kbd{
  margin-left:auto;font-size:10.5px;color:var(--t3);border:1px solid var(--line);
  border-radius:4px;padding:1px 5px;background:var(--surface-2);
}
.sb-ic{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.sb-ic svg{display:block}

.app{padding-left:236px;min-height:100vh}
body.sb-collapsed .app{padding-left:72px}
@media (max-width:1024px){
  .sb{transform:translateX(-100%);transition:transform .22s cubic-bezier(.4,0,.2,1)}
  body.sb-open .sb{transform:none;box-shadow:var(--sh-3);width:236px;padding:14px 12px 12px;align-items:stretch}
  body.sb-open .sb .nm,body.sb-open .sb .tx,body.sb-open .sb .n,body.sb-open .sb .kbd{display:block}
  body.sb-open .sb-brand{padding:2px 6px 0}
  body.sb-open .sb-nav{align-items:stretch}
  body.sb-open .sb-link{width:auto;height:38px;justify-content:flex-start;padding:0 10px}
  body.sb-open .sb-btn{width:auto}
  body.sb-open .sb-cmd{width:auto}
  .app,body.sb-collapsed .app{padding-left:0}
  .sb-scrim{position:fixed;inset:0;z-index:59;background:rgba(16,16,22,.44);backdrop-filter:blur(2px)}
  .sb-scrim[hidden]{display:none}
}
@media (min-width:1025px){ .sb-scrim{display:none} }

/* ============================================================
   ② 指数行情条
   ============================================================ */
.idx{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);overflow:hidden;
}
.idx-h{
  display:flex;align-items:center;gap:9px;padding:12px 16px;border-bottom:1px solid var(--line-2);
}
.idx-h .t{font-size:12px;font-weight:800;letter-spacing:.02em;display:inline-flex;align-items:center;gap:7px}
.idx-h .t svg{color:var(--t3)}
.idx-st{
  margin-left:auto;display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:700;color:var(--t2);
}
.idx-st .d{width:6px;height:6px;border-radius:50%;background:var(--t3)}
.idx-st.live .d{background:var(--up);box-shadow:0 0 0 3px var(--up-soft)}
.idx-st .tm{font-size:11px;color:var(--t3);font-variant-numeric:tabular-nums}
.idx-row{display:grid;grid-template-columns:repeat(4,1fr)}
.idx-c{
  padding:13px 15px 14px;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);
  display:block;transition:background .14s;
}
.idx-c:nth-child(4n){border-right:none}
.idx-c:nth-child(n+5){border-bottom:none}
.idx-c:hover{background:var(--surface-2)}
.idx-c .nm{font-size:11.5px;font-weight:700;color:var(--t2);margin-bottom:6px;display:block}
.idx-c .v{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.idx-c .px{font-size:17px;font-weight:800;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.idx-c .pc{font-size:12.5px;font-weight:800;font-variant-numeric:tabular-nums}
.idx-c .spark{margin-top:7px;height:20px;display:block;width:100%}

/* ============================================================
   ③ 工具入口网格
   ============================================================ */
.tools{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.tool{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  padding:17px 18px 16px;display:block;position:relative;
  transition:transform .2s,border-color .2s,box-shadow .2s;
}
.tool:hover{transform:translateY(-3px);border-color:var(--t3);box-shadow:var(--sh-2)}
.tool .ic3{
  width:34px;height:34px;border-radius:10px;background:var(--surface-2);color:var(--t1);
  display:flex;align-items:center;justify-content:center;margin-bottom:13px;
}
.tool h3{font-size:14.5px;font-weight:800;letter-spacing:-.015em;margin-bottom:6px;display:flex;align-items:center;gap:7px}
.tool p{margin:0;font-size:12.5px;color:var(--t2);line-height:1.6}
.tool .mt{margin-top:12px;display:flex;align-items:center;gap:8px;font-size:11px;color:var(--t2);font-weight:600}
.tool .tag2{
  font-size:10px;font-weight:800;padding:2px 6px;border-radius:5px;letter-spacing:.02em;
  background:var(--surface-3);color:var(--t2);
}
.tool .tag2.vip{background:var(--accent-soft);color:var(--accent)}
.tool .tag2.pub{background:var(--dn-soft);color:var(--dn)}
.tool .tag2.pub{color:var(--brand);background:var(--brand-soft)}

/* ============================================================
   ④ 会员购买
   ============================================================ */
.price{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
.price-main{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:26px 26px 24px;
}
.price-main h3{font-size:20px;font-weight:800;letter-spacing:-.025em;margin-bottom:8px}
.price-main .lead{margin:0 0 20px;font-size:13.5px;color:var(--t2);line-height:1.65}
.price-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 20px}
.price-item{display:flex;align-items:flex-start;gap:9px;font-size:13px;color:var(--t1);line-height:1.55}
.price-item svg{color:var(--dn);flex:0 0 auto;margin-top:3px}
.price-item svg{color:var(--brand)}
.price-side{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-2);padding:24px 22px 22px;text-align:center;position:relative;overflow:hidden;
}
.price-side .bd{
  position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--ed-gv),var(--ed-ev),var(--ed-pm),var(--ed-mc));
}
.price-side .tag3{
  display:inline-block;font-size:11px;font-weight:800;color:var(--accent);background:var(--accent-soft);
  padding:3px 9px;border-radius:var(--r-pill);margin-bottom:14px;
}
.price-side .amt{display:flex;align-items:baseline;justify-content:center;gap:5px;margin-bottom:6px}
.price-side .amt b{font-size:44px;font-weight:800;letter-spacing:-.045em;line-height:1}
.price-side .amt i{font-style:normal;font-size:14px;font-weight:700;color:var(--t2)}
.price-side .per{font-size:12.5px;color:var(--t2);margin-bottom:5px}
.price-side .tiny{font-size:11px;color:var(--t2);line-height:1.5;margin-bottom:18px}
.price-side .btn{width:100%;justify-content:center}
.price-side .alt{margin-top:11px;font-size:11.5px;color:var(--t2)}
.price-side .alt b{color:var(--t1);font-weight:700;cursor:pointer;font-variant-numeric:tabular-nums}
.price-note{
  margin-top:14px;padding:12px 14px;border-radius:var(--r-m);
  background:var(--surface-2);font-size:11.5px;color:var(--t2);line-height:1.6;
}

/* ============================================================
   ⑤ 实时监控
   ============================================================ */
.lv-head{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:18px 20px 16px;
}
.lv-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.lv-ed{
  display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:800;
  padding:3px 10px;border-radius:var(--r-pill);background:var(--surface-2);border:1px solid var(--line-2);
}
.lv-ed .d{width:6px;height:6px;border-radius:50%;background:var(--t3)}
.lv-ed.live .d{background:var(--up);box-shadow:0 0 0 3px var(--up-soft)}
.lv-top .tm{font-size:12.5px;color:var(--t2);font-variant-numeric:tabular-nums}
.lv-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--r-m);overflow:hidden}
.lv-s{background:var(--surface);padding:13px 15px}
.lv-s .k{font-size:11px;font-weight:700;color:var(--t2);margin-bottom:5px}
.lv-s .v{font-size:20px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1}
.lv-s .v small{font-size:12px;font-weight:700;margin-left:2px}
.lv-tools{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:14px 0 0}
.lv-tools .grow3{flex:1}
.sortbtn{
  height:32px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--surface);font-size:12.5px;font-weight:600;color:var(--t2);
  display:inline-flex;align-items:center;gap:6px;
}
.sortbtn:hover{border-color:var(--t3);color:var(--t1)}
.sortbtn.on{background:var(--inv-bg);color:var(--inv-t);border-color:transparent}
.lv-tb-wrap{margin-top:14px;border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden;background:var(--surface)}
.lv-tb{width:100%;border-collapse:collapse;font-size:13px}
.lv-tb th{
  text-align:left;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--t2);
  background:var(--surface-2);padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap;
}
.lv-tb th.r,.lv-tb td.r{text-align:right}
.lv-tb td{padding:10px 14px;border-bottom:1px solid var(--line-2);white-space:nowrap}
.lv-tb tr:last-child td{border-bottom:none}
.lv-tb tbody tr:hover{background:var(--surface-2);cursor:pointer}
.lv-tb .rk{font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--t2);width:42px}
.lv-tb .nm{font-weight:700;font-size:13.5px}
.lv-tb .cd{font-size:11px;color:var(--t2);font-variant-numeric:tabular-nums;margin-left:6px}
.lv-tb .sc{font-size:11.5px;color:var(--t2)}
.lv-tb .px{font-weight:700;font-variant-numeric:tabular-nums}
.lv-tb .pc{font-weight:800;font-variant-numeric:tabular-nums;font-size:13.5px}
.lv-bar{
  display:inline-block;height:3px;border-radius:2px;background:currentColor;opacity:.28;
  vertical-align:middle;margin-left:8px;max-width:70px;
}

/* 底部滚动指数带 */
.ticker{
  position:fixed;left:0;right:0;bottom:0;z-index:55;overflow:hidden;
  background:color-mix(in srgb,var(--bg) 90%,transparent);
  backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);
  border-top:1px solid var(--line);padding:7px 0;
}
.ticker .tk-track{display:flex;gap:28px;width:max-content;padding-left:18px;animation:tk 30s linear infinite}
.ticker .tk-i{font-size:12.5px;color:var(--t2);font-variant-numeric:tabular-nums;white-space:nowrap;display:inline-flex;gap:7px;align-items:center}
.ticker .tk-i b{font-weight:800}
@keyframes tk{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){ .ticker .tk-track{animation:none} }
/* 手机端：跑马灯要给底部标签栏让位，否则两者都钉在 bottom:0 而重叠（实测跑马灯
   753–788、标签栏 785–844，重叠 3px，文字被栏体切掉一截）。
   --tabh 由 v5 的 768px 断点声明；安全区单独叠加，env() 缺省值必须写 0px。 */
@media (max-width:768px){
  .ticker{bottom:calc(var(--tabh) + env(safe-area-inset-bottom,0px))}
}

/* ============================================================
   ⑥ 宏观日历
   ============================================================ */
.mcal{display:grid;grid-template-columns:1fr 280px;gap:16px;align-items:start}
.mcal-main{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);overflow:hidden}
.mcal-ctl{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:14px 16px;border-bottom:1px solid var(--line-2);background:var(--surface);
}
.mcal-ctl .grow4{flex:1}
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r-pill);padding:2px}
.seg button{height:26px;padding:0 11px;border-radius:var(--r-pill);font-size:12px;font-weight:600;color:var(--t2)}
.seg button.on{background:var(--surface);color:var(--t1);font-weight:700;box-shadow:var(--sh-1)}
.mgroup{border-bottom:1px solid var(--line-2)}
.mgroup:last-child{border-bottom:none}
.mgroup-h{
  display:flex;align-items:center;gap:10px;padding:12px 16px;
  font-size:12px;font-weight:800;color:var(--t1);background:var(--surface-2);
}
.mgroup-h .c{font-size:11px;font-weight:700;color:var(--t2);background:var(--surface);border:1px solid var(--line-2);padding:1px 7px;border-radius:5px;font-variant-numeric:tabular-nums}
.mrow{display:grid;grid-template-columns:96px 1fr auto;gap:14px;padding:13px 16px;align-items:start;border-bottom:1px solid var(--line-2)}
.mrow:last-child{border-bottom:none}
.mrow:hover{background:var(--surface-2)}
.mrow .dt{font-size:12px;color:var(--t2);font-variant-numeric:tabular-nums;line-height:1.5}
.mrow .dt b{display:block;color:var(--t1);font-weight:800;font-size:13px}
.mrow .dt .wk{font-size:11px;color:var(--t2)}
.mrow .bd5{min-width:0}
.mrow .ev{font-size:13.5px;font-weight:700;line-height:1.45;margin-bottom:6px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.mrow .mt2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--t2)}
.mrow .ctry{background:var(--surface-2);border:1px solid var(--line-2);padding:2px 7px;border-radius:5px;font-weight:600}
.mrow .imp{font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:5px;letter-spacing:.02em}
.mrow .imp.high{color:var(--risk-ink);background:var(--risk-bg)}
.mrow .imp.mid{color:var(--ink-pm);background:var(--opp-bg)}
.mrow .imp.low{color:var(--t2);background:var(--surface-3)}
.mrow .today{font-size:10.5px;font-weight:800;color:var(--accent);background:var(--accent-soft);padding:2px 7px;border-radius:5px}
.mrow .ai{font-size:11.5px;font-weight:700;color:var(--accent);display:inline-flex;align-items:center;gap:5px;white-space:nowrap;height:28px;padding:0 10px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface)}
.mrow .ai:hover{border-color:var(--accent)}
.mai{
  grid-column:2/4;margin-top:10px;padding:12px 14px;border-radius:var(--r-m);
  background:var(--surface-2);border-left:2.5px solid var(--accent);
  font-size:12.5px;color:var(--t1);line-height:1.72;
}
.mai .k{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);display:block;margin-bottom:6px}
.mai + .mai{margin-top:8px}
.mcal-side{display:flex;flex-direction:column;gap:14px}
.side-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);padding:17px 18px}
.side-card .h{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t2);margin-bottom:13px}
.side-row{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--line-2);font-size:12.5px}
.side-row:last-child{border-bottom:none;padding-bottom:0}
.side-row .d{width:5px;height:5px;border-radius:50%;background:var(--t3);flex:0 0 auto}
.side-row .d.high{background:var(--up)}
.side-row .d.mid{background:var(--ed-pm)}
.side-row .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t1)}
.side-row .dt{font-size:11.5px;color:var(--t2);font-variant-numeric:tabular-nums;flex:0 0 auto}
.stat-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--t2)}
.stat-row b{font-size:17px;font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums}

/* ============================================================
   ⑦ 融资融券
   ============================================================ */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.kpi{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:17px 18px 16px;
}
.kpi .k{font-size:11.5px;font-weight:700;color:var(--t2);margin-bottom:9px;display:flex;align-items:center;gap:6px}
.kpi .v{font-size:26px;font-weight:800;letter-spacing:-.035em;line-height:1.05;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:13px;font-weight:700;color:var(--t2);margin-left:3px}
.kpi .f{margin-top:8px;font-size:11.5px;color:var(--t2);display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.kpi .f b{font-weight:800;font-variant-numeric:tabular-nums}
.chart-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:18px 20px 12px;margin-top:14px;
}
.chart-h{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin-bottom:6px}
.chart-h h3{font-size:15px;font-weight:800;letter-spacing:-.02em}
.chart-h .sub{font-size:11.5px;color:var(--t2)}
.chart-h .grow5{flex:1}
.chart-box2{margin:6px -6px 0;overflow:hidden}
.chart-box2 svg{display:block;width:100%;height:auto}
.legend{display:flex;gap:16px;flex-wrap:wrap;padding:2px 0 10px}
.legend .lg-i{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--t2);font-weight:600}
.legend .lg-i .sw{width:11px;height:3px;border-radius:2px;background:currentColor}
.legend .lg-i .sw.dot{width:8px;height:8px;border-radius:2px}
.bar-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:11px;padding:6px 0 14px}
.bar-i{text-align:center}
.bar-i .lb{font-size:11px;font-weight:700;color:var(--t2);margin-bottom:7px}
.bar-i .tr{height:74px;display:flex;align-items:flex-end;justify-content:center;position:relative}
.bar-i .tr::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line-2)}
.bar-i .bar{width:22px;border-radius:3px 3px 0 0;position:relative}
.bar-i .bar.neg{border-radius:0 0 3px 3px;align-self:flex-start}
.bar-i .vl{font-size:12.5px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:8px}
.mg-note{
  margin-top:14px;padding:13px 16px;border-radius:var(--r-m);background:var(--surface-2);
  border-left:2.5px solid var(--t3);font-size:12.5px;color:var(--t2);line-height:1.68;
}
.mg-note b{color:var(--t1);font-weight:800;margin-right:6px}

/* ============================================================
   ⑧ 我的自选股
   ============================================================ */
.wl-stats{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--r-l);overflow:hidden;box-shadow:var(--sh-1)}
.wl-s{background:var(--surface);padding:13px 13px 12px}
.wl-s .k{font-size:11px;font-weight:700;color:var(--t2);margin-bottom:6px;white-space:nowrap}
.wl-s .v{font-size:17px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.15}
.wl-s .v small{font-size:11px;font-weight:700;color:var(--t2);margin-left:2px}
.wl-tb-wrap{margin-top:14px;border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden;background:var(--surface)}
.wl-tb{width:100%;border-collapse:collapse;font-size:13px}
.wl-tb th{
  text-align:right;font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--t2);
  background:var(--surface-2);padding:10px 11px;border-bottom:1px solid var(--line);white-space:nowrap;
}
.wl-tb th:first-child,.wl-tb th:nth-child(2){text-align:left}
.wl-tb th .ar{display:inline-block;margin-left:3px;opacity:.5;font-size:9px;vertical-align:1px}
.wl-tb td{padding:11px;border-bottom:1px solid var(--line-2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.wl-tb td:first-child,.wl-tb td:nth-child(2){text-align:left}
.wl-tb tr:last-child td{border-bottom:none}
.wl-tb tbody tr:hover{background:var(--surface-2);cursor:pointer}
.wl-tb .rk{color:var(--t2);font-size:11.5px;width:40px}
.wl-tb .nm{font-weight:700;font-size:13.5px}
.wl-tb .cd{font-size:11px;color:var(--t2);display:block}
.wl-tb .px{font-weight:700}
.wl-tb .pc{font-weight:800}

/* ============================================================
   ⑨ 专题时间线
   ============================================================ */
.tl-bar{
  /* 与 .rp-bar 同理：基准是 0（见 v5_css.txt 中 .rp-bar 的说明），
     写 var(--top) 会在吸顶后于上方留出 60px 透明带 */
  position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 92%,transparent);
  backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line);padding:12px 0;margin-bottom:20px;
}
.tl-bar-in{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tl-bar-in .grow6{flex:1}
.tl-sep{display:flex;align-items:center;gap:12px;margin:26px 0 14px}
.tl-sep .d{font-size:13.5px;font-weight:800;letter-spacing:-.01em}
.tl-sep .w{font-size:11.5px;color:var(--t2)}
.tl-sep .c{font-size:11px;font-weight:700;color:var(--t2);background:var(--surface-2);border:1px solid var(--line-2);padding:1px 7px;border-radius:5px}
.tl-sep .ln{flex:1;height:1px;background:var(--line)}
.tl-list{display:flex;flex-direction:column;gap:10px}
.tl-i{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:16px 18px;display:block;transition:transform .18s,border-color .18s,box-shadow .18s;
}
.tl-i:hover{transform:translateY(-2px);border-color:var(--t3);box-shadow:var(--sh-2)}
.tl-i .hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:9px}
.tl-i .ed{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800}
.tl-i .ed .d{width:6px;height:6px;border-radius:50%}
.tl-i[data-ed="mc"] .d{background:var(--ed-mc)} .tl-i[data-ed="pm"] .d{background:var(--ed-pm)}
.tl-i[data-ed="ev"] .d{background:var(--ed-ev)} .tl-i[data-ed="gv"] .d{background:var(--ed-gv)}
.tl-i .kd{font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:5px}
.tl-i .kd.opportunity{color:var(--opp-ink);background:var(--opp-bg)}
.tl-i .kd.risk{color:var(--risk-ink);background:var(--risk-bg)}
.tl-i .kd.neutral{color:var(--neu-ink);background:var(--neu-bg)}
.tl-i .grp2{font-size:11px;color:var(--t2);background:var(--surface-2);border:1px solid var(--line-2);padding:2px 7px;border-radius:5px}
.tl-i h3{font-size:15px;font-weight:800;line-height:1.42;letter-spacing:-.02em;margin-bottom:7px}
.tl-i p{margin:0;font-size:13px;color:var(--t2);line-height:1.72;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tl-i .mt3{margin-top:11px;display:flex;align-items:center;gap:14px;font-size:11.5px;color:var(--t2);flex-wrap:wrap}
.tl-i .go{margin-left:auto;font-weight:800;color:var(--accent);display:inline-flex;align-items:center;gap:5px}

/* ============================================================
   ⑩ 个股深度
   ============================================================ */
.stk-head{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:22px 24px 20px;
}
.stk-top{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap}
.stk-id{flex:1;min-width:240px}
.stk-id h1{font-size:26px;font-weight:800;letter-spacing:-.03em;display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.stk-id .cd2{font-size:13px;font-weight:700;color:var(--t2);font-variant-numeric:tabular-nums}
.stk-id .tags{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:9px}
.stk-id .tags .t2{font-size:11.5px;font-weight:600;color:var(--t2);background:var(--surface-2);border:1px solid var(--line-2);padding:3px 9px;border-radius:6px}
.stk-face{text-align:right;flex:0 0 auto}
.stk-face .px{font-size:38px;font-weight:800;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.stk-face .ch{font-size:14px;font-weight:800;margin-top:7px;font-variant-numeric:tabular-nums}
.stk-iv{display:flex;gap:6px;flex-wrap:wrap;margin-top:18px;padding-top:16px;border-top:1px solid var(--line-2)}
.ivbtn{
  height:34px;padding:0 13px;border-radius:9px;border:1px solid var(--line);background:var(--surface);
  font-size:12.5px;font-weight:600;color:var(--t2);display:inline-flex;flex-direction:column;
  align-items:center;justify-content:center;line-height:1.15;gap:1px;
}
.ivbtn:hover{border-color:var(--t3);color:var(--t1)}
.ivbtn.on{background:var(--inv-bg);color:var(--inv-t);border-color:transparent}
.ivbtn small{font-size:10px;font-weight:700;opacity:.72;font-variant-numeric:tabular-nums}
.stk-chart{margin-top:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);padding:16px 18px 10px}
.stk-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1);padding:17px 18px 14px}
.stat-card .h{font-size:12.5px;font-weight:800;margin-bottom:13px;display:flex;align-items:center;gap:8px}
.stat-card .h .sub2{font-size:11px;font-weight:600;color:var(--t2);margin-left:auto}
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--r-m);overflow:hidden}
.kv-i{background:var(--surface);padding:10px 12px}
.kv-i .k{font-size:11px;color:var(--t2);margin-bottom:4px}
.kv-i .v{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}

/* ============================================================
   ⑪ 合规与声明
   ============================================================ */
.lg-grid{display:grid;grid-template-columns:210px 1fr;gap:28px;align-items:start}
/* 同理去 --top 基准；18px 只是与正文的呼吸间距 */
.lg-toc{position:sticky;top:18px;display:flex;flex-direction:column;gap:2px}
.lg-toc .h{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);padding:0 10px 8px}
.lg-toc a{
  display:flex;align-items:center;gap:9px;height:34px;padding:0 10px;border-radius:8px;
  font-size:13px;font-weight:600;color:var(--t2);
}
.lg-toc a:hover{background:var(--surface-2);color:var(--t1)}
.lg-toc a.on{background:var(--surface-2);color:var(--t1);font-weight:700}
.lg-toc a .n{font-size:10.5px;color:var(--t3);font-variant-numeric:tabular-nums}
.lg-art{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:26px 28px;margin-bottom:16px;
}
.lg-art h2{font-size:19px;font-weight:800;letter-spacing:-.025em;margin-bottom:6px}
.lg-art .meta2{font-size:11.5px;color:var(--t2);margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--line-2)}
.lg-art ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:13px}
.lg-art li{font-size:13.5px;line-height:1.8;color:var(--t1)}
.lg-art li b{font-weight:800}
.lg-art p{margin:0 0 12px;font-size:13.5px;line-height:1.8;color:var(--t1)}
.lg-art p:last-child{margin-bottom:0}
.lg-info{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--r-m);overflow:hidden;margin-top:14px}
.lg-info div{background:var(--surface);padding:12px 14px}
.lg-info dt{font-size:11px;color:var(--t2);margin-bottom:4px}
.lg-info dd{margin:0;font-size:13.5px;font-weight:700}

/* ============================================================
   ⑫ 索引页（设计稿导航）
   ============================================================ */
.spec-hero{padding:52px 0 10px}
.spec-hero h1{font-size:38px;font-weight:800;letter-spacing:-.035em;margin-bottom:12px}
.spec-hero p{margin:0;font-size:14px;color:var(--t2);line-height:1.7;max-width:660px}
.spec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:26px}
.spec-c{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  box-shadow:var(--sh-1);padding:17px 18px;display:block;transition:transform .2s,border-color .2s,box-shadow .2s;
}
.spec-c:hover{transform:translateY(-3px);border-color:var(--t3);box-shadow:var(--sh-2)}
.spec-c .n{font-size:10.5px;font-weight:800;letter-spacing:.12em;color:var(--t3);font-variant-numeric:tabular-nums;margin-bottom:9px}
.spec-c h3{font-size:15px;font-weight:800;letter-spacing:-.02em;margin-bottom:6px}
.spec-c p{margin:0;font-size:12.5px;color:var(--t2);line-height:1.6}
.spec-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:22px}
.spec-fact{background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r-m);padding:14px 16px}
.spec-fact .k{font-size:11px;color:var(--t2);margin-bottom:5px}
.spec-fact .v{font-size:18px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}

/* 桌面端已有侧边栏，顶栏菜单按钮冗余 */
@media (min-width:1025px){ .top .tb-menu{display:none} }
/* 会员提示条（替代悬空遮罩：不遮挡内容，位置稳定） */
.vipbar{
  display:flex;align-items:center;gap:13px;margin-top:14px;padding:14px 18px;
  border-radius:var(--r-l);background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-1);
}
.vipbar .lk{
  width:34px;height:34px;border-radius:10px;background:var(--accent-soft);color:var(--accent);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;
}
.vipbar .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.vipbar .tx b{font-size:13.5px;font-weight:800}
.vipbar .tx span{font-size:12px;color:var(--t2);line-height:1.5}
.vipbar .btn{flex:0 0 auto}

/* ============================================================
   ⑬ 页脚
   ============================================================ */
.foot{border-top:1px solid var(--line);margin-top:56px;padding:30px 0 40px}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:26px}
.foot-col h4{font-size:12px;font-weight:800;letter-spacing:.02em;margin-bottom:11px}
.foot-col a{display:block;font-size:12.5px;color:var(--t2);padding:5px 0;line-height:1.5}
.foot-col a:hover{color:var(--t1)}
.foot-brand .fb{display:flex;align-items:center;gap:9px;margin-bottom:11px}
.foot-brand .fb .mark{width:28px;height:28px;border-radius:8px;background:var(--inv-bg);color:var(--inv-t);display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:800}
.foot-brand .fb b{font-size:14px;font-weight:800}
.foot-brand p{margin:0;font-size:12.5px;color:var(--t2);line-height:1.65;max-width:300px}
.foot-bot{
  margin-top:24px;padding-top:16px;border-top:1px solid var(--line-2);
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--t2);
}
.foot-bot .grow7{flex:1}

/* ============================================================
   ⑭ 响应式（新增组件）
   ============================================================ */
@media (max-width:1100px){
  .idx-row{grid-template-columns:repeat(3,1fr)}
  .idx-c:nth-child(4n){border-right:1px solid var(--line-2)}
  .idx-c:nth-child(3n){border-right:none}
  .idx-c:nth-child(n+4){border-bottom:none}
  .idx-c:nth-child(4),.idx-c:nth-child(5),.idx-c:nth-child(6){border-bottom:1px solid var(--line-2)}
  .price{grid-template-columns:1fr}
  .tools{grid-template-columns:repeat(2,1fr)}
  .mcal{grid-template-columns:1fr}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .wl-stats{grid-template-columns:repeat(4,1fr)}
  .stk-grid{grid-template-columns:1fr}
  .lg-grid{grid-template-columns:1fr}
  .lg-toc{position:static;flex-direction:row;overflow-x:auto;gap:7px;padding-bottom:6px}
  .lg-toc .h{display:none}
  .lg-toc a{flex:0 0 auto;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-pill);height:30px}
  .spec-grid{grid-template-columns:repeat(2,1fr)}
  .spec-facts{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:768px){
  .foot-grid{grid-template-columns:1fr;gap:20px}
  .mcal-ctl{padding:12px}
  .mrow{grid-template-columns:1fr;gap:8px;padding:13px 14px}
  .mrow .ai{grid-column:auto;justify-self:start}
  .mai{grid-column:auto}
  .idx-row{grid-template-columns:repeat(2,1fr)}
  .idx-c:nth-child(3n){border-right:1px solid var(--line-2)}
  .idx-c:nth-child(2n){border-right:none}
  .idx-c{border-bottom:1px solid var(--line-2)!important}
  .idx-c:nth-last-child(-n+2){border-bottom:none!important}
  .tools{grid-template-columns:1fr}
  .price-main{padding:20px 18px}
  .price-grid{grid-template-columns:1fr}
  .price-side{padding:20px 18px}
  .spec-hero{padding:34px 0 6px}
  .spec-hero h1{font-size:26px}
  .spec-grid{grid-template-columns:1fr}
  .lv-stats{grid-template-columns:repeat(2,1fr)}
  .wl-stats{grid-template-columns:repeat(2,1fr)}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .bar-grid{grid-template-columns:repeat(3,1fr)}
  .lv-tb-wrap,.wl-tb-wrap{overflow-x:auto}
  .lv-tb,.wl-tb{min-width:620px}
  .stk-face{text-align:left}
  .stk-id h1{font-size:22px}
  .stk-face .px{font-size:32px}
  .lg-art{padding:20px 18px}
  .lg-info{grid-template-columns:1fr}
}
@media (max-width:560px){
  .lv-stats{grid-template-columns:1fr}
  .wl-stats{grid-template-columns:1fr}
  .bar-grid{grid-template-columns:repeat(2,1fr)}
  .kpi .v{font-size:22px}
  .idx-c .px{font-size:16px}
}
/* ============================================================
   蓝宝书Max · 设计稿 v7 修订
   A. 品牌「书册」视觉语言（书脊 / 页签 / 章节起笔 / 版权页）
   B. 桌面端 + 手机端 UI 全面修复
   ============================================================ */

/* ============================================================
   A-1 品牌标记：全站统一为品牌 B 标识（assets/logo.svg）
   全站 5 处：侧栏品牌 / 顶栏品牌 / 页脚品牌 / 规格页 / 登录框，共用同一份矢量。
   此前 v7 用 CSS 现画「书册造型」，与 favicon、OG 分享卡上的 B 标识不是同一个
   图形（页内是书、地址栏是 B），同一品牌两副面孔；现统一回 B 标识。
   注意：url 相对本 CSS 文件（bbm/assets/site.css）解析，故写 url(logo.svg)，
   写成 url(assets/logo.svg) 会解析到 assets/assets/ 而 404。
   ============================================================ */
.sb-brand .mark,
.top .brand .bm,
.foot-brand .fb .mark,
.spec-brand .mark,
.lbox .lg .mark,
.rail .mark{
  /* 20260929.8 由 site_build.py 在拼装 CSS 时替换成缓存戳；.svg 虽不在 nginx
     的 7 天长缓存名单里，但换 logo 时同步升戳可避免任何中间层缓存留旧图。 */
  background:url(logo.svg?20260929.8) center/contain no-repeat;
  border-radius:0;box-shadow:none;
  /* 兜底：标记内即使残留文字也不显示（背景已是完整标识，叠字会糊成一团） */
  font-size:0;color:transparent;
}
/* 标记内不放文字（背景已是完整标识），隐藏以免与标识叠字 */
.mark > *,
.top .brand .bm > *{display:none}

/* ============================================================
   A-2 侧栏导航 = 书页索引页签（选中态用品牌淡底）
   ============================================================ */
.sb-link.on{background:var(--brand-soft);color:var(--brand-deep);font-weight:700}
.sb-link.on::before{background:var(--brand);width:3px;border-radius:0 3px 3px 0}
.sb-link.on .sb-ic{color:var(--brand)}
/* 章节分组标记：前置短横，像书册的章节起笔 */
.sb-grp{display:flex;align-items:center;gap:8px}
.sb-grp::before{content:"";width:11px;height:1.5px;background:var(--line);flex:0 0 auto}
.sb-grp::after{content:"";flex:1;height:1px;background:var(--line-2)}

/* ============================================================
   A-3 顶栏：底部品牌渐隐线（书页顶边）
   ============================================================ */
.top{position:relative}
.top::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,var(--brand) 0%,color-mix(in srgb,var(--brand) 30%,transparent) 30%,transparent 62%);
  opacity:.6;
}

/* ============================================================
   A-4 章节起笔：原「英文标题前置品牌短横」已停用
   小便签（.eyebrow / .rp-eyebrow）连同其装饰短横于 2026-09-28 全站移除，
   标签文本与 h2 语义重复。此处不再产生任何规则。
   ============================================================ */

/* ============================================================
   A-5 报告页主题卡序号 = 书签形（左下直角）
   ============================================================ */
.tc-top{
  background:var(--brand-solid);color:#fff;border-radius:4px 4px 4px 0;
  padding:2.5px 8px;letter-spacing:.01em;
}
.tc-top::after{display:none}

/* ============================================================
   A-6 页脚 = 版权页（colophon）
   修复：原 .foot-grid 定义 3 列却有 4 个子元素，必然换行错位
   ============================================================ */
.foot{border-top:1px solid var(--line);margin-top:64px;padding:34px 0 44px;position:relative}
.foot::before{
  content:"";position:absolute;left:0;right:0;top:-1px;height:1px;
  background:linear-gradient(90deg,var(--brand),transparent 46%);opacity:.6;
}
.foot-grid{display:grid;grid-template-columns:1.7fr repeat(3,1fr);gap:30px 34px;align-items:start}
.foot-col h4{
  font-size:12px;font-weight:800;letter-spacing:.02em;margin:0 0 13px;
  display:flex;align-items:center;gap:8px;
}
.foot-col h4::before{content:"";width:12px;height:2px;border-radius:1px;background:var(--brand);flex:0 0 auto}
.foot-col a{display:block;font-size:12.5px;color:var(--t2);padding:5.5px 0;line-height:1.5}
.foot-col a:hover{color:var(--brand)}
.foot-brand .fb{display:flex;align-items:center;gap:10px;margin-bottom:13px}
.foot-brand .fb .mark{width:30px;height:30px;flex:0 0 auto}
.foot-brand .fb b{font-size:14.5px;font-weight:800;letter-spacing:-.02em}
.foot-brand p{margin:0;font-size:12.5px;color:var(--t2);line-height:1.7;max-width:290px}
.foot-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.foot-meta span{
  font-size:11px;font-weight:600;color:var(--t2);background:var(--surface-2);
  border:1px solid var(--line-2);border-radius:6px;padding:3px 9px;
}
.foot-bot{
  margin-top:30px;padding-top:18px;border-top:1px solid var(--line-2);
  display:grid;grid-template-columns:1fr auto;gap:12px 20px;align-items:center;
  font-size:11.5px;color:var(--t2);
}
.foot-bot .fb-l{display:flex;align-items:center;gap:7px 16px;flex-wrap:wrap}
.foot-bot .grow7{display:none}
.foot-bot a{
  color:var(--t2);display:inline-flex;align-items:center;gap:6px;
  border:1px solid var(--line);border-radius:var(--r-pill);padding:4px 12px;
}
.foot-bot a:hover{color:var(--t1);border-color:var(--t3)}

/* ============================================================
   B-1 通用：手机端内容底部让位（底部 Tab 栏 + 余量）
   ============================================================ */
@media (max-width:768px){
  .wrap{padding-bottom:84px}
  .rp-foot{padding-bottom:96px}
  /* 底部滚动指数带与 Tab 栏叠放，上移一层。
     这里曾写死 56px，而手机端 Tab 栏实测高 59px —— 3px 差值让跑马灯压在
     标签栏上沿，最后一行文字被切掉一截（实测 ticker 753–788 / tabbar 785–844）。
     改用 v5 声明的 --tabh：高度只有一个真源，改标签栏就不必再全站找魔数。 */
  .ticker{bottom:calc(var(--tabh) + env(safe-area-inset-bottom,0px))}
  .wrap-live{padding-bottom:calc(var(--tabh) + 91px)}
  /* 手机端页脚：品牌通栏 + 链接两列 */
  .foot-grid{grid-template-columns:1fr 1fr;gap:26px 22px}
  .foot-brand{grid-column:1/-1}
  .foot-bot{grid-template-columns:1fr;gap:10px}
}

/* ============================================================
   B-2 实时监控：手机端一行展示「名称 · 最新价 · 涨跌幅」
   删除序号 / 板块 / 所属主题三列（DOM 不变，仅隐藏，筛选仍可用）
   ============================================================ */
@media (max-width:768px){
  .lv-head{padding:15px 16px 14px}
  .lv-top .tm{font-size:12px}
  .lv-stats{grid-template-columns:repeat(2,1fr)}
  .lv-s{padding:11px 13px}
  .lv-s .v{font-size:18px}
  .lv-tools .sortbtn{flex:1;justify-content:center}
}
@media (max-width:640px){
  .lv-tb-wrap{min-width:0}
  .lv-tb{min-width:0!important;font-size:13px}
  .lv-tb .rk,.lv-tb .sc{display:none}
  .lv-tb th:first-child,.lv-tb td:first-child{display:none}
  .lv-tb th:nth-child(3),.lv-tb td:nth-child(3),
  .lv-tb th:nth-child(4),.lv-tb td:nth-child(4){display:none}
  .lv-tb th,.lv-tb td{padding:10px 8px}
  .lv-tb th:nth-child(2),.lv-tb td:nth-child(2){padding-left:14px}
  .lv-tb th:last-child,.lv-tb td:last-child{padding-right:14px}
  .lv-tb .nm{font-size:13.5px;display:block}
  .lv-tb .cd{display:block;margin:1px 0 0;font-size:10.5px}
  .lv-tb .px{font-size:14px}
  .lv-tb .pc{font-size:14px}
  .lv-tb td:nth-child(2){width:52%}
  .lv-tb td:nth-child(5){width:24%}
  .lv-tb td:nth-child(6){width:24%}
}

/* ============================================================
   B-3 我的自选股：手机端一行 4 格 + 表格免横滑
   ============================================================ */
@media (max-width:768px){
  .wl-stats{grid-template-columns:repeat(2,1fr)}
  .wl-s{padding:11px 13px}
  .wl-s .k{font-size:10.5px;margin-bottom:4px}
  .wl-s .v{font-size:16px}
}
@media (max-width:640px){
  .wl-tb-wrap{min-width:0}
  .wl-tb{min-width:0!important;font-size:12.5px}
  .wl-tb .rk{display:none}
  .wl-tb th:first-child,.wl-tb td:first-child{display:none}
  .wl-tb th:nth-child(7),.wl-tb td:nth-child(7),
  .wl-tb th:nth-child(8),.wl-tb td:nth-child(8),
  .wl-tb th:nth-child(9),.wl-tb td:nth-child(9){display:none}
  .wl-tb th,.wl-tb td{padding:10px 7px}
  .wl-tb th:nth-child(2),.wl-tb td:nth-child(2){padding-left:14px}
  .wl-tb th:last-child,.wl-tb td:last-child{padding-right:14px}
  .wl-tb .nm{font-size:13px}
  .wl-tb .cd{display:block;font-size:10.5px}
  .wl-tb th .ar{display:none}
}

/* ============================================================
   B-4 个股深度：手机端价格与涨跌分行，区间按钮等高
   ============================================================ */
.stk-face .ch{display:flex;align-items:baseline;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.stk-face .ch .amt{font-variant-numeric:tabular-nums}
@media (max-width:768px){
  .stk-face{width:100%;text-align:left;margin-top:2px}
  .stk-face .ch{justify-content:flex-start}
  .stk-head{padding:18px 16px 16px}
  .stk-id h1{font-size:21px}
  .stk-face .px{font-size:34px}
  .stk-iv{margin-top:15px;padding-top:14px}
  .ivbtn{height:44px;flex:1 1 calc(33.333% - 6px);min-width:0;padding:0 8px}
  .ivbtn small{font-size:10px}
  .stk-chart{padding:14px 14px 8px}
  .stat-card{padding:15px 15px 13px}
}
@media (max-width:420px){
  /* 极窄屏：字段名与数值同行，避免每格占两行 */
  .kv-i .k{font-size:10.5px}
  .kv-i .v{font-size:13.5px}
}

/* ============================================================
   B-5 专题时间线：筛选条归位（在标题之下）
   ============================================================ */
@media (max-width:768px){
  .tl-bar{padding:10px 0;margin-bottom:16px}
  .tl-bar-in{gap:8px}
  .tl-bar-in .grow6{display:none}
  .tl-i{padding:14px 15px}
  .tl-i h3{font-size:14.5px}
  .tl-i .go{margin-left:0;width:100%;justify-content:flex-end;margin-top:2px}
}

/* ============================================================
   B-6 报告页：手机端目录横滑提示 + 底部让位
   ============================================================ */
@media (max-width:768px){
  .rp-toc{
    margin:0 -14px 18px;padding:10px 14px;
    -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);
    mask-image:linear-gradient(90deg,#000 88%,transparent);
  }
  .rp-head{padding:20px 0 18px}
  .rp-meta{gap:7px 13px;font-size:11.5px}
}

/* ============================================================
   B-7 会员购买：定价卡顶部改品牌渐变（原彩虹渐变与品牌体系不符）
   ============================================================ */
.price-card::before,
.price-main::before{
  background:linear-gradient(90deg,var(--brand),color-mix(in srgb,var(--brand) 35%,var(--ed-ev)))!important;
}

/* ============================================================
   B-8 桌面端细节：栅格对齐与留白节奏
   ============================================================ */
@media (min-width:1025px){
  /* 图表卡片等高，避免并排卡片高度参差 */
  .stk-grid{align-items:start}
  /* 侧栏导航与内容区首行基线对齐 */
  .sb-brand{margin-bottom:14px}
}

/* ============================================================
   B-9 逐页微调（第二轮走查发现）
   ============================================================ */
/* 自选股 KPI 共 7 项，奇数末项通栏，避免右下留空格 */
.wl-stats > .wl-s:last-child:nth-child(odd){grid-column:1/-1}

@media (max-width:768px){
  /* 实时监控顶部改为两列网格：两个操作按钮必然同行且等宽 */
  .lv-top{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .lv-ed,.lv-top .tm{grid-column:1/-1}
  .lv-top .grow3{display:none}
  .lv-top .sortbtn{width:100%;justify-content:center}
  /* 专题时间线筛选区：版次筛选整行 / 统计与排序同行，消除大片留白 */
  .tl-bar-in{display:grid;grid-template-columns:1fr auto auto;gap:9px 10px;align-items:center}
  .tl-bar-in .seg{grid-column:1/-1;justify-content:space-between}
  .tl-stat{font-size:11px!important;min-width:0}
  .tl-stat-x{display:none}
  .tl-bar-in .sortbtn{padding:0 13px}
  .tl-sep{margin:18px 0 12px}
}

/* ============================================================
   B-10 报告页移动端顶栏：返回按钮折行会连带压坏章节目录吸顶
   （.rp-toc 的吸顶偏移写死 51px，顶栏折成两行即失配）
   ============================================================ */
@media (max-width:768px){
  .rp-back{flex:0 0 auto;white-space:nowrap;padding:0 11px 0 8px}
  /* 中间标题可压缩并省略号，避免把右侧图标挤出容器 */
  .rp-bar-t{flex:1 1 auto;min-width:0}
  .rp-bar .grow2{display:none}
}

/* ============================================================
   B-11 图表图例：色块承载系列色，文字恒用次级文本色
   （把系列色写到 .lg-i 的 color 上时，11px 文字在明色主题最低 2.59:1，
     WCAG AA 需 4.5:1。此规则为结构性兜底，即使有内联 color 也被压回。）
   ============================================================ */
.legend .lg-i{color:var(--t2)!important}

/* ============================================================
   B-12 v8：涨跌家数卡 / 分页 / 检索结果 / 筛选计数
   （此前首页没有全市场涨跌家数；报告中心无分页与检索）
   ============================================================ */
.bh-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.bh-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.bh-i{min-width:0}
.bh-i .k{font-size:12px;color:var(--t2);margin-bottom:5px}
.bh-i .v{font-size:23px;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums}
.bh-i .v.up{color:var(--up)}
.bh-i .v.dn{color:var(--dn)}
.bh-i .v b{font-size:19px;font-weight:800}
.bh-i .f{font-size:11.5px;color:var(--t2);margin-top:4px}
.bh-i .f b{color:var(--t1)}
.bh-bar{display:flex;height:10px;border-radius:6px;overflow:hidden;margin:14px 0 9px;background:var(--line-2)}
.bh-bar span{display:block;height:100%}
.bh-bar .s-up{background:var(--up)}
.bh-bar .s-flat{background:var(--t3,var(--t2));opacity:.55}
.bh-bar .s-down{background:var(--dn)}
.bh-foot{font-size:11.5px;color:var(--t2)}
.bh-foot b{color:var(--t1);font-variant-numeric:tabular-nums}
@media (max-width:768px){
  .bh-grid{grid-template-columns:repeat(2,1fr);gap:14px 10px}
  .bh-i .v{font-size:20px}
}

/* 指数区「交易中」状态点 */
.idx-st .d.live{background:var(--up);box-shadow:0 0 0 3px color-mix(in srgb,var(--up) 18%,transparent)}
@media (prefers-reduced-motion:no-preference){
  .idx-st .d.live{animation:bbmPulse 2s ease-in-out infinite}
}
@keyframes bbmPulse{0%,100%{opacity:1}50%{opacity:.45}}

/* 报告中心：检索与分页 */
.rc-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0 0 16px}
.rc-tools .rc-inp{flex:1 1 220px;min-width:0;height:38px;padding:0 13px;border-radius:10px;
  border:1px solid var(--line);background:var(--surface);color:var(--t1);font-size:13.5px;outline:none}
.rc-tools .rc-inp:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
.rc-count{font-size:12.5px;color:var(--t2)}
.rc-count b{color:var(--t1);font-variant-numeric:tabular-nums}
.rc-pages{display:flex;gap:6px;flex-wrap:wrap;margin-top:18px;align-items:center}
.pg-b{min-width:34px;height:34px;padding:0 9px;border-radius:9px;border:1px solid var(--line);
  background:var(--surface);color:var(--t1);font-size:13px;font-weight:600;cursor:pointer;
  font-variant-numeric:tabular-nums;transition:border-color .15s,background .15s}
.pg-b:hover{border-color:var(--accent)}
.pg-b.on{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}
.pg-gap{color:var(--t2);padding:0 2px;line-height:34px}
.rc-info{margin:14px 0 0;font-size:12.5px;color:var(--t2)}
.rc-empty{padding:38px 0;text-align:center;color:var(--t2);font-size:13.5px}

/* 检索面板结果 */
.pal-res{max-height:min(52vh,420px);overflow-y:auto;margin-top:10px}
.pal-item{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:10px;
  text-decoration:none;color:inherit;border:1px solid transparent}
.pal-item:hover{background:var(--line-2);border-color:var(--line)}
.pal-t{font-size:13.5px;font-weight:600;color:var(--t1)}
.pal-k{font-size:11.5px;color:var(--t2)}
.pal-empty{padding:22px 0;text-align:center;color:var(--t2);font-size:13px}
.pal-hint{font-size:11.5px;color:var(--t2);margin-top:10px}

/* 列表筛选计数 */
.seg-n{font-variant-numeric:tabular-nums}

/* 站内二次确认态（替代浏览器原生 confirm）：红涨色系描边，不改变控件尺寸 */
.sortbtn.danger{border-color:#C4433A;color:#C4433A;background:rgba(196,67,58,.07)}
[data-theme="dark"] .sortbtn.danger{border-color:#E0706A;color:#E0706A;background:rgba(224,112,106,.12)}

/* ============================================================================
   B-13 · 令牌补齐：--accent-solid（实底强调色）
   --accent 在暗色主题是「提亮变体」（#5A9BEA）——它适合做文字与描边，
   但拿它当不透明底会让白字掉到约 2.9:1。需要「实底 + 白字」的控件一律用
   --accent-solid。该令牌在 v7 之前从未定义，导致报告中心当前页码
   .pg-b.on 变成「白字 + 透明底」，实测对比度 1.09:1（几乎看不见）。
   浅色两值相同（#1A5BC4），补上后浅色侧零视觉变化，只把暗色侧修正过来。
   白字对比度：浅 6.27:1 / 暗 5.04:1，均 ≥ 5:1。
   ============================================================================ */
:root{--accent-solid:#1A5BC4}
[data-theme="dark"]{--accent-solid:#2E6BCF}
/* ============================================================
   蓝宝书Max · 设计稿 v8（本层最后加载，专门用于覆写 v5 / v6 / v7）
   A. 全站收口：免责声明块与小便签移除后的替代样式
   B. 报告页版式升级
   ============================================================ */

/* ------------------------------------------------------------
   A-1 报告页的一句话免责声明
   全站不再有带边框、带标题、可折叠的「风险提示与免责声明」卡片（.fo-disc 及其
   全部子样式已从 v5 删除）。报告页保留这一行作为唯一的合规提示落点：小字、灰色、
   无边框无底色，紧贴页脚上方，不参与任何视觉层级。
   完整条款仍在 legal.html 的「风险揭示书」一节，这里只留可达入口。
   ------------------------------------------------------------ */
.rp-disc{
  margin:34px 0 0;padding:14px 0 0;border-top:1px solid var(--line-2);
  font-size:11.5px;line-height:1.75;color:var(--t3);
}
.rp-disc a{color:var(--t3);text-decoration:underline;text-underline-offset:2px}
.rp-disc a:hover{color:var(--t2)}

/* ------------------------------------------------------------
   A-2 会员页「常见问题」
   该列表原先借用 .fo-disc-more / .fo-disc-line 的样式，随免责声明一起被删，
   这里给它一套自己的样式（手风琴：行分隔 + 展开箭头旋转）。
   ------------------------------------------------------------ */
.faq-list{border-top:1px solid var(--line-2)}
.faq-i{border-bottom:1px solid var(--line-2)}
.faq-i summary{
  cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px;
  padding:15px 2px;font-size:14px;font-weight:700;color:var(--t1);
}
.faq-i summary::-webkit-details-marker{display:none}
.faq-i summary .cv{margin-left:auto;color:var(--t3);transition:transform .2s;flex:0 0 auto}
.faq-i[open] summary .cv{transform:rotate(180deg)}
.faq-i summary:hover{color:var(--accent)}
.faq-a{margin:0;padding:0 2px 16px;font-size:13px;line-height:1.72;color:var(--t2)}

/* ============================================================
   B. 报告页版式升级
   ============================================================ */

/* B-1 吸顶栏：底部一条阅读进度线
   进度值由 v8_app.js 写入 --rp-prog（0→1）；无 JS 环境宽度为 0，不显示也不占位，
   不承载任何信息（纯反馈），因此不影响无脚本可读性。

   ⚠ 这里**不能**写 .rp-bar{position:relative}。
   .rp-bar 的吸顶（position:sticky;top:0）定义在 v5_css.txt；本文件是最后一层，
   后写的 position:relative 会直接把它降级成普通流内元素 —— 表现就是吸顶栏一路
   被卷走、正文从它原来的位置穿过去（实测 scrollY=1600 时 elementFromPoint 在
   y=1..54 命中的是报告正文的 TD.rsn，y=60 才命中 .rp-toc）。
   .rp-prog 是 .rp-bar 的绝对定位子元素，而 sticky 本身就是「已定位」元素，
   可以直接作为它的包含块，无需再声明 relative。 */
.rp-prog{
  position:absolute;left:0;bottom:-1px;height:2px;border-radius:0 2px 2px 0;
  width:calc(var(--rp-prog,0) * 100%);
  background:var(--ed,var(--accent));
  transition:width .12s linear;pointer-events:none;
}
@media (prefers-reduced-motion:reduce){ .rp-prog{transition:none} }

/* B-2 报头
   去掉了与 h1 重复的版别小便签，改用一条版别色横条承接「这是哪一版」的识别；
   标题相应收紧字级与行距，让报头不再空一截、也不再抢正文。 */
.rp-head{position:relative;padding:34px 0 26px}
.rp-head::before{
  content:"";position:absolute;left:0;top:0;width:64px;height:3px;
  border-radius:0 0 3px 3px;background:var(--ed,var(--accent));
}
.rp-head h1{font-size:32px;letter-spacing:-.032em}

/* B-3 数据条：由「一句话里夹数字」改为「标签 + 数值」分格
   分格线用 1px gap + 底色透出实现，而不是给每格写 border-right —— 后者在换行后
   会出现「行尾多一条线」或「行首无线」的不一致（手机端 5 格必换行）。 */
.rp-meta{
  margin-top:18px;display:flex;flex-wrap:wrap;gap:1px;
  border:1px solid var(--line-2);border-radius:var(--r-m);overflow:hidden;
  background:var(--line-2);
}
.rp-meta .m{
  flex:1 1 104px;min-width:0;display:flex;flex-direction:column;gap:3px;
  padding:11px 18px;background:var(--surface);
}
.rp-meta .m i{
  font-style:normal;font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--t3);
}
.rp-meta .m b{
  font-size:19px;font-weight:800;line-height:1.15;letter-spacing:-.02em;
  color:var(--t1);font-variant-numeric:tabular-nums;
}

/* B-4 目录：当前分组高亮（由 v8_app.js 滚动联动写入 .on） */
.rp-toc a.on{
  border-color:var(--accent);background:var(--accent-soft);
  color:var(--accent);font-weight:700;
}
.rp-toc a.on .no,.rp-toc a.on .cn{color:var(--accent)}
.rp-toc a.on .cn{background:transparent}

/* B-5 分组头：序号改为版别淡底小方块，与主题卡的编号语言统一 */
.grp-h .n{
  display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:22px;border-radius:6px;letter-spacing:0;font-size:11.5px;
  background:var(--accent-soft);color:var(--accent);
}
.grp{padding-top:30px}

/* B-6 主题卡与标的表
   表格数字列统一等宽对齐；斑马纹提升长表可读性（原先只有 hover）。
   注意 .tc 是 overflow:clip，表头不能 sticky（祖先裁剪会让 sticky 失效），
   故用斑马纹而非吸顶表头来保证长表不串行。 */
.tc{transition:border-color .18s,box-shadow .18s}
.tc:hover{border-color:var(--line);box-shadow:var(--sh-2)}
.tc-kind{letter-spacing:0}
.tb .pct{font-variant-numeric:tabular-nums}
.tb tbody tr:nth-child(even){background:color-mix(in srgb,var(--surface-2) 52%,transparent)}
.tb tbody tr:hover{background:var(--surface-2)}
.tb th{letter-spacing:.06em}
/* 正文强调色统一。
   国内三版的正文来自 report_builder，强调处自带 style="color:var(--accent)"；
   全球版的正文取自 Alpha派原文，强调是 <b class="gv-b"> → 在 v8 页面上换成
   <strong> 后只剩一个「没颜色的一坨粗体」。这里在最后一层 CSS 上补齐颜色，
   让四个版别的正文强调看起来是同一套排版语言（不必回头改 69 张历史页）。 */
.tc-body strong{color:var(--accent)}

/* B-7 锚点落点补偿
   报告页有两条吸顶栏（.rp-bar 55px + .rp-toc 53px，手机端 51+51），
   不补 scroll-margin 时 #g1 / #topic-N 跳转后标题正好被两栏压住，
   视觉上等同于「点了没反应」——首页「今日主线」跳到报告页用的就是 #topic-N。 */
.grp,.tc{scroll-margin-top:124px}

/* B-7b 筛选片（.sortbtn）不得被压行
   .sortbtn 是固定 32px 高的 inline-flex；手机端 .lv-tools .sortbtn 又被设成 flex:1
   （等分剩余宽度），于是带计数的「全部 120」只剩 70px —— 12px×2 内边距 + 6px gap
   + 数字 25px 之后，标签只剩 15px，而中文可在任意字间断行，
   「全部」被拆成「全 / 部」两行、纵向撑破 32px 的胶囊（实测 live 页 390×844）。
   min-width:max-content 保证每个片不小于自身内容宽度，flex:1 仍负责撑满整行，
   机会 / 中性 照旧等宽排在第二行，版式意图不变。 */
.sortbtn{white-space:nowrap}
.lv-tools .sortbtn,
.tl-bar-in .sortbtn,
.rc-tools .sortbtn,
.lv-top .sortbtn{min-width:max-content}

/* B-8 手机端 */
@media (max-width:768px){
  .rp-head{padding:24px 0 20px}
  .rp-head h1{font-size:25px}
  .rp-meta{margin-top:14px}
  /* 报头数据条现有 5 格（期数/主题/标的/篇幅/阅读；「出刊」已于 2026-09-29 删除）。
     基准给到 104px：手机端可用宽约 362px，104×3+2 ≈ 314 恰好排成 3+2 两行整齐网格；
     用 84px 会挤成 4+1，第二行只孤零零一格，在「专业度」上反而扣分。 */
  .rp-meta .m{flex:1 1 104px;padding:9px 13px;gap:2px}
  .rp-meta .m b{font-size:17px}
  .rp-meta .m i{font-size:10px;letter-spacing:.06em}
  .grp{padding-top:24px}
  .grp-h h2{font-size:17px}
  .rp-disc{margin-top:26px;font-size:11px}
  .grp,.tc{scroll-margin-top:116px}
  .lv-tools .sortbtn{min-width:max-content}
}

/* B-9 打印：去掉全部浮动/吸顶与控制件，强制展开折叠，按内容完整出纸 */
@media print{
  .sb,.tabbar,.ticker,.rp-bar,.rp-toc,.toast,.mask,.pal{display:none!important}
  .app{padding-left:0!important}
  .tc{break-inside:avoid;box-shadow:none}
  .tc.collapsed .tc-body,
  .tc.collapsed .tc-name{display:block!important}
  .rp-disc{color:#444}
  .rp-disc a{color:#444}
}

/* ============================================================
   C. 2026-09-29 第三轮：报告页与外壳细节
   ============================================================ */

/* C-1 主题卡「板块均值」红涨绿跌
   .tc-avg 在 v5 里只有一个写死的 --t2 灰字，而渲染器一直往它上面挂 up/dn 两个类
   （site_build.report_body 里 avc 那段），类名挂了却没有任何规则接手 —— 于是同一张
   主题卡上，「涨跌」列是红涨绿跌、紧挨着它的「均 x%」却是灰的，读者会以为均值不参与
   涨跌语义。补上两个类即可，不需要改数据。 */
.tc-avg.up{color:var(--up)}
.tc-avg.dn{color:var(--dn)}

/* C-2 关键字句高亮（用户 2026-09-29：「关键字句高亮标蓝」）
   国内三版正文强调来自 Alpha派 原文的 **…**；兜底编排产出的正文常常一个强调都没有
   （实测 ev-20260925/27/28、pm-20260928、gv-20260923/25/26 共 8 页零强调）。渲染器
   会给这类正文补一处重点句（site_build.emphasize，只在标记层加 <strong class="hl">，
   一个字都不改），这里保证它和原文强调是同一套视觉。 */
.tc-body strong{color:var(--accent)}
.tc-body strong.hl{color:var(--accent);font-weight:700}
/* 同一套高亮也用在首段「综合来看」的引导词上（.wrp-p 自身是 600 字重，
   靠颜色区分即可，故只给色 + 700）。原先只写了 .tc-body，写在行情块里的
   <strong class="hl"> 会拿不到强调色、看起来和正文一样。 */
.wrp-p strong.hl{color:var(--accent);font-weight:700}

/* C-3 风险提示（报告页唯一合规落点）上下紧贴
   原状：.rp-foot padding-top 40px + .rp-disc margin-top 34px = 上方 74px 空档，
   再叠加 .foot 的 margin-top 64px —— 一行小字被拎在两大块留白之间，反而比正文更显眼，
   与「低调、不参与视觉层级」的设计意图相反。收紧后它贴在正文末行与页脚之间。
   下方还有一层：通用 .wrap 的 padding-bottom 72px（手机 84px）是给**没有页脚**的
   内容页留的呼吸位，报告页后面紧跟 .foot，这 72px 会在小字与页脚之间再撑出一段空白
   （实测 22830→22922＝92px）。故报告页把 .wrap 的底衬底归零，只留 .foot 自己的 20px。 */
.rp-foot{padding-top:18px;padding-bottom:0}
.rp-disc{margin:0;padding:12px 0 0}
body[data-page="report"] .wrap.rp{padding-bottom:0}
body[data-page="report"] .foot{margin-top:20px}

/* C-4 首段「行情汇总」（隔夜美股 / 午盘收盘）
   刻意不做成主题卡：没有折叠按钮、没有标的表、没有机会风险徽标。
   用户 2026-09-29：「隔夜美股汇总不是做成表格，而是盘面综述的主题内容写」
   —— 原先的 3 列指数网格（.wrp-grid）已下线，改为一段可直接读的盘面综述
   （点位与涨跌仍逐项来自真实行情，只是串成了句子）。 */
.wrp{
  border:1px solid var(--line-2);border-radius:var(--r-l,14px);
  background:var(--surface);padding:16px 18px 14px;
}
.wrp-p{margin:0 0 10px;font-size:14px;font-weight:600;line-height:1.85;color:var(--t1)}
.wrp-p:last-of-type{margin-bottom:0}
.wrp-note{margin:10px 0 0;font-size:11.5px;line-height:1.7;color:var(--t3)}
.grp-wrap{padding-top:22px}

/* C-4b 无徽标主题卡的头部（全球版）
   gv 的 heat/isOpportunity 在源里恒为空，照旧渲染 .tc-meta 会得到一行只放折叠按钮的
   空行，标题上方凭空多出一行空白（用户 2026-09-29：「主题上面被空了一行，主题在第一行」）。
   改为：标题占第一行、折叠按钮靠右同行，序号内联在标题行首。 */
.tc-header--idx{flex-direction:row;align-items:flex-start;gap:10px}
.tc-header--idx .tc-meta{flex:0 0 auto}
.tc-header--idx .tc-name .tc-top{display:inline-block;vertical-align:2px;margin-right:9px}

/* C-5 今日聚焦里的主题锚点
   点一下就跳到对应主题卡（#topic-N）。蓝色 + 加粗与正文强调同源，读起来像「可点进去的
   重点词」而不是普通链接。 */
.rp-sum li .fs-link{color:var(--accent);font-weight:700}
.rp-sum li .fs-link:hover{text-decoration:underline;text-underline-offset:2px}

/* C-6 登录弹窗：品牌标识移到「登录 / 激活会员」标题之前（同一行左侧）
   DOM 顺序仍是 mark → h2 → p，这里用栅格把它摆到标题左侧，说明文字通栏在下一行；
   无脚本环境下版式一样成立。 */
.lbox .lg{display:grid;grid-template-columns:36px 1fr;column-gap:12px;align-items:center}
.lbox .lg .mark{margin:0}
.lbox .lg h2{margin:0}
.lbox .lg p{grid-column:1/-1;margin-top:10px}

/* C-7 侧边栏：折叠态必须留一个「展开」入口
   v6 的 `body.sb-collapsed .sb-collapse{display:none}` 把折叠按钮本身也隐藏了 ——
   桌面端一旦折叠，页面里就再没有任何可点的展开控件（实测按钮 getBoundingClientRect
   宽高均为 0）。这里把按钮在折叠态恢复显示，并把箭头翻向右侧暗示「点开」。
   手机端（≤1024px）侧边栏是抽屉、由顶栏菜单键打开，折叠按钮无意义，保持隐藏，
   否则点它会把折叠状态写进 localStorage、回到桌面端就变成一条图标轨。 */
/* C-7b 折叠态 logo 必须真居中（2026-09-29 用户反馈「折叠后 logo 没有居中」）
   病因：上面这条只恢复了按钮显示，却没把它移出 flex 行 —— 品牌行仍是
   「mark + gap + 按钮」一字排开的横向 flex，`justify-content:center` 居中的是
   这一整组，于是 30px 的 logo 被右侧 26px 的按钮顶掉一半，圆心落在 19.5px，
   而 72px 轨道的中线在 36px，**左偏 16.5px**（实测 getBoundingClientRect）。
   72px 轨道放不下「30px logo + 26px 按钮」并排居中（并排最少需 65px，两侧
   几乎零留白），故改为纵向堆叠：logo 独占一行绝对居中，展开按钮降到其下方
   同为居中。按钮保持常显且可聚焦，不去赌 hover（否则又回到「找不到展开入口」）。
   必须限定 ≥1025px：v6 的折叠态规则是不分断点写的，而手机端抽屉打开时靠
   `body.sb-open` 复原宽高/对齐，却没复原 flex-direction —— 不限定断点的话，
   手机端「折叠过 + 打开抽屉」会把 logo 与站名竖排（回归）。 */
@media (min-width:1025px){
  body.sb-collapsed .sb-brand{
    width:100%;flex-direction:column;align-items:center;
    justify-content:center;gap:6px;padding:0;margin-bottom:10px;
  }
  body.sb-collapsed .sb-brand .mark{margin:0}
  body.sb-collapsed .sb-collapse{
    display:inline-flex;margin:0;width:26px;height:26px;
    transform:rotate(180deg);opacity:.8;
    transition:opacity .15s ease;
  }
  body.sb-collapsed .sb-collapse:hover,
  body.sb-collapsed .sb-collapse:focus-visible{opacity:1}
}
@media (max-width:1024px){
  body.sb-collapsed .sb-collapse{display:none}
}
@media (max-width:768px){
  .wrp{padding:13px 14px 12px}
  /* 网格已下线（见 C-4），手机端只剩文字综述的字号/行高微调。 */
  .wrp-p{font-size:13.5px;line-height:1.8}
  .wrp-note{font-size:11px}
}

/* ============================================================
   D 段 · 2026-09-29 用户指令（渠道交互 / 出刊区对齐）
   ============================================================ */

/* D-1 会员购买渠道：方式一「知识星球」整卡可点、方式二「商务微信」一键复制
   原实现三条渠道都是死卡 —— 星球链接在数据元组里被丢弃、微信号是不可选中的纯文本，
   用户看到「知识星球」四个字却点不动，只能自己手抄一串 ID。 */
.ch-link{text-decoration:none;color:inherit}
.ch-link .ch-go{display:inline-flex;align-items:center;gap:5px;color:var(--accent);font-weight:800}
.ch-copy{
  display:inline-flex;align-items:center;gap:6px;height:27px;padding:0 12px;
  border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);
  font:inherit;font-size:11px;font-weight:700;color:var(--t1);cursor:pointer;
  transition:border-color .15s,color .15s;
}
.ch-copy:hover{border-color:var(--accent);color:var(--accent)}
.ch-copy svg{color:var(--accent)}

/* D-2 今日出刊：左侧四版与右侧「今日合计」垂直对齐
   实测（1440px）：两栏外框都 204px，但左侧每列内容只排到 88px 高，下方空出 56px，
   右侧合计排到 144px —— 并排看就是「左边四行挤在顶部、右边一列拉到中间」。
   用户 2026-09-29：「可以把四版的行距放大对应右边」。
   改为纵向均分：四个信息块在列内均匀铺开，行距随列高自然放大，
   左栏内容基线因此与右侧合计逐行对上。 */
.iss-i{display:flex;flex-direction:column;justify-content:space-between}
.iss-i .iss-top{margin-bottom:0}
.iss-i .iss-nm{margin-bottom:0}
.iss-i .iss-st{margin-top:0}

/* E 未登录付费墙横幅（报告中心 / 报告页）
   用户 2026-09-29：未登录只能看前 3 条报告。限制逻辑在 site.js：
   报告中心 BBM._rcPage 未登录每页 3 期且不出翻页控件；报告页主题卡挂 data-vip-only。
   这里只负责横幅与正文之间的呼吸间距。 */
.rc-gate{margin-top:16px}
.rp-gate{margin-top:24px}

/* F 个股深度页参数化（用户 2026-09-29：「每个标的都要做出来」「参考之前的个股深度页」）
   构建期图表是内联 SVG（靠内容撑高），改由 echarts 渲染后容器必须有明确高度，
   否则 canvas 高度为 0、图表不可见。 */
#stkChart{height:330px}
/* 实时监控页：标的行整体可点，进入 stock.html?code=<sym> */
.lv-stk{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:7px}
.lv-stk:hover .nm{color:var(--accent)}
/* 技术面速览里均线相对现价的「上方 / 下方」小标 */
.ma-tag{margin-left:6px;font-size:10.5px;font-weight:800}
.ma-tag.up{color:var(--up)}
.ma-tag.dn{color:var(--dn)}
@media(max-width:768px){#stkChart{height:250px}}
/* ============================================================
   蓝宝书Max · 融资融券页（margin）专用样式
   ------------------------------------------------------------
   来源：用户 2026-09-29 指令「融资融券页面还是不对啊，两张图表你去对比下，我要原来的
   样式和数据展示！不行就照搬过来！还有每日解读」。

   该页在 v8 官网化时被重写成了三张手绘 SVG 图（单序列、无缩放、无双轴、无图例），
   并丢了主站原版的「每日数据解读」。这里把主站原版（release/margin.html，即当时线上
   实际在跑的版本）的版式与交互**原样搬回**：
     · 4 张 KPI 卡（含「较前交易日」红涨绿跌增减）
     · 每日数据解读卡（文案来自 data/margin_interp.json，每日自动化 AI 重写）
     · 两融余额走势（融资余额左轴 + 融券余量金额右轴，3/6月/1年/3年切换 + 底部缩放轮）
     · 融资资金流（融资净买入红绿柱 + 融资买入额/偿还额双线）
     · 两融余额多周期变动（5/10/20/60/120/250 日）
     · 图表由 ECharts 绘制（原版引擎），不是静态 SVG

   唯一改动：令牌改用 v8 设计系统（--surface / --line / --t1..3 / --r-* / --sh-*），
   因为原版依赖的 --fs-* / --text-* / --card / --border / --chart-line-* 在本站
   并不存在（写了等于没写）。涨跌语义色沿用站点同一套 --up 红涨 / --dn 绿跌。
   ============================================================ */

:root {
  /* 图表线色照搬主站原版 bb-design.css 的 --chart-line-a/b/c：
     用户 2026-09-29「我要原来的样式和数据展示！不行就照搬过来！」
     —— 这三色是**序列色**（区分融资/融券/偿还三条线），不是涨跌语义色，
     故不套 v8 的 --accent，原样引用 #3B6EF0 / #D9541E / #94A3B8。 */
  --mg-a: #3B6EF0;   /* 主序列（融资余额 / 融资买入额） */
  --mg-b: #D9541E;   /* 次序列（融券余量金额） */
  --mg-c: #94A3B8;   /* 第三序列（融资偿还额，虚线） */
  --mg-kpi: 27px;
}
html[data-theme="dark"] {
  --mg-a: #3B6EF0;
  --mg-b: #F39C2A;
  --mg-c: #9AA4B2;
}

/* ---------------- 更新时间条 ---------------- */
.meta-bar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px;
  margin: 12px 0 2px; padding: 8px 13px; border-radius: var(--r-m);
  background: var(--surface-2); border: 1px solid var(--line);
  font-size: 12px; color: var(--t2); line-height: 1.5;
}
.meta-bar b { color: var(--t1); font-weight: 700; }
.meta-bar .mb-upd { color: var(--accent); font-weight: 700; }
.meta-bar .mb-sep { color: var(--t3); opacity: .65; user-select: none; }
.scope-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 11px 3px 9px; border-radius: var(--r-pill);
  background: var(--accent-soft); border: 1px solid transparent;
  color: var(--accent); font-weight: 700; font-size: 12px; letter-spacing: .02em;
}
.scope-chip::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent);
}

/* ---------------- 口径说明 ---------------- */
.mg-notice {
  display: flex; align-items: flex-start; gap: 8px; margin: 10px 0 4px;
  padding: 9px 13px; border-radius: var(--r-m); font-size: 12px; line-height: 1.55;
  background: var(--accent-soft); color: var(--t1);
}
.mg-notice b { color: var(--accent); font-weight: 700; }

/* ---------------- 每日数据解读 ---------------- */
.interp-card {
  background: var(--surface); border: 1px solid var(--line);
  border-left: 4px solid var(--accent); border-radius: var(--r-l);
  padding: 14px 16px; margin: 14px 0 12px;
}
.interp-head { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }
.interp-dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--accent);
  box-shadow: 0 0 0 4px var(--accent-soft); flex: none;
}
.interp-title { font-size: 13.5px; font-weight: 800; color: var(--t1); letter-spacing: -.01em; }
.interp-date { font-size: 12px; color: var(--t3); margin-left: auto; font-variant-numeric: tabular-nums; }
.interp-text { font-size: 14px; line-height: 1.75; color: var(--t1); margin: 0; white-space: pre-line; }

/* ---------------- KPI 卡 ---------------- */
.kpi-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.kpi-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-l);
  padding: 13px 14px 11px; transition: transform .2s ease, box-shadow .2s ease;
}
.kpi-card:hover { transform: translateY(-2px); box-shadow: var(--sh-2); }
.kpi-label { font-size: 12px; color: var(--t2); line-height: 1.5; }
.kpi-val {
  font-size: var(--mg-kpi); font-weight: 800; margin: 7px 0 5px; letter-spacing: -.5px;
  color: var(--t1); overflow-wrap: anywhere; line-height: 1.3;
  font-variant-numeric: tabular-nums;
}
.kpi-val .unit { font-size: .56em; color: var(--t3); font-weight: 600; margin-left: 2px; letter-spacing: 0; }
.kpi-delta { font-size: 12px; font-weight: 600; line-height: 1.5; color: var(--t3); }
.kpi-delta-label { color: var(--t3); font-weight: 500; margin-right: 2px; }
.kpi-delta-val { font-weight: 700; white-space: nowrap; }
.kpi-delta-val.up { color: var(--up); }
.kpi-delta-val.dn { color: var(--dn); }
.dv-pct { font-variant-numeric: tabular-nums; }

/* ---------------- 图表卡 ---------------- */
.mg-sec { margin-top: 16px; }
.chart-card {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-l); padding: 16px 16px 12px;
}
.chart-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.chart-cap {
  font-size: 12px; color: var(--t3); margin: 0 0 8px; line-height: 1.4;
  display: flex; flex-wrap: wrap; gap: 0 6px; align-items: baseline;
}
.chart-cap b { color: var(--t1); font-weight: 700; font-size: 15px; white-space: nowrap; }
.lg { display: inline-flex; align-items: center; white-space: nowrap; }
.lg-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; flex-shrink: 0; }
.lg-dot.dash {
  width: 12px; height: 3px; border-radius: 2px;
  background: repeating-linear-gradient(90deg, var(--mg-c) 0 4px, transparent 4px 7px);
}
.lg-dot.up { background: var(--up); }
.lg-dot.dn { background: var(--dn); }
.range-toggle {
  margin-left: auto; display: inline-flex; background: var(--surface-2);
  border: 1px solid var(--line); border-radius: var(--r-pill); padding: 3px;
}
.range-toggle button {
  border: none; background: transparent; color: var(--t2); font-size: 12px; font-weight: 600;
  padding: 6px 14px; border-radius: var(--r-pill); cursor: pointer; transition: all .15s ease;
  font-family: inherit;
}
.range-toggle button.active { background: var(--accent); color: #fff; }
.echart-box { width: 100%; height: 420px; margin-top: 4px; }
.echart-box.flow { height: 460px; }
.loading-ph {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%; min-height: 200px; color: var(--t3); font-size: 13px;
}
.cards-loading { grid-column: 1 / -1; text-align: center; color: var(--t3); padding: 34px; font-size: 13px; }

/* ---------------- 多周期变动条 ---------------- */
.bars { display: grid; gap: 13px; }
.bar-row { display: grid; grid-template-columns: 54px minmax(0, 1fr) auto; align-items: center; gap: 12px; }
.bar-lab { font-size: 13px; font-weight: 600; color: var(--t2); white-space: nowrap; }
.bar-track { height: 12px; background: var(--surface-2); border-radius: var(--r-pill); overflow: hidden; min-width: 0; }
.bar-fill { height: 100%; border-radius: var(--r-pill); transition: width .4s ease; min-width: 2px; }
.bar-fill.up { background: var(--up); }
.bar-fill.dn { background: var(--dn); }
.bar-val { font-size: 13px; font-weight: 700; text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.bar-val.up { color: var(--up); }
.bar-val.dn { color: var(--dn); }
.bar-pct { font-weight: 500; opacity: .8; font-size: 11px; }

/* ---------------- 页脚说明：数据来源 / 口径 / 数据日期 ---------------- */
.source-foot {
  margin: 22px 0 2px; padding-top: 12px; border-top: 1px solid var(--line);
  font-size: 12px; color: var(--t3); line-height: 1.6;
}
.source-foot .sf-line { display: block; }
.source-foot .sf-line + .sf-line { margin-top: 6px; }
.source-foot b { color: var(--t2); font-weight: 700; }
/* 数据来源三链接（上交所 / 深交所 / 东方财富），照搬主站原版 */
.source-foot .sf-src a { color: var(--accent); text-decoration: none; }
.source-foot .sf-src a:hover { text-decoration: underline; text-underline-offset: 2px; }

@media (max-width: 1024px) {
  .kpi-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .meta-bar { flex-direction: column; align-items: flex-start; gap: 4px; }
  .meta-bar .mb-sep { display: none; }
  .echart-box { height: 420px; }
  .echart-box.flow { height: 470px; }
}
@media (max-width: 560px) {
  :root { --mg-kpi: 22px; }
  .kpi-grid { gap: 10px; }
  .kpi-card { padding: 12px 12px 11px; }
  .bar-row { grid-template-columns: 44px minmax(0, 1fr) auto; gap: 8px; }
  .bar-val { font-size: 12px; }
  .chart-cap { font-size: 11.5px; }
  .chart-cap b { font-size: 14px; }
  .dv-pct { display: block; }
}
