/* Lucide sparkles: https://github.com/lucide-icons/lucide/blob/main/icons/sparkles.svg
ISC License

Copyright (c) 2026 Lucide Icons and Contributors

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
:root{--ai-icon-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M11.017%202.814a1%201%200%200%201%201.966%200l1.051%205.558a2%202%200%200%200%201.594%201.594l5.558%201.051a1%201%200%200%201%200%201.966l-5.558%201.051a2%202%200%200%200-1.594%201.594l-1.051%205.558a1%201%200%200%201-1.966%200l-1.051-5.558a2%202%200%200%200-1.594-1.594l-5.558-1.051a1%201%200%200%201%200-1.966l5.558-1.051a2%202%200%200%200%201.594-1.594z%22%2F%3E%3Cpath%20d%3D%22M20%202v4M22%204h-4%22%2F%3E%3Ccircle%20cx%3D%224%22%20cy%3D%2220%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}
.ai-icon{display:inline-block;width:15px;height:15px;flex:none;vertical-align:-2px;background-color:currentColor;color:var(--red,#e0241b);pointer-events:none;-webkit-mask:var(--ai-icon-mask) center/contain no-repeat;mask:var(--ai-icon-mask) center/contain no-repeat}
.rvchip.ai .ai-icon{color:inherit}
:root{
  /* 字号层级: 重要信息≥meta(13), 正文/表格=body(14); micro/caption 只用于不影响决策的辅助信息 */
  --fs-micro:11px; --fs-caption:12px; --fs-meta:13px; --fs-body:14px; --fs-strong:15px; --lh-body:1.65;
  --bg:#eceff4; --surface:#ffffff; --surface2:#f5f6f9; --border:#e4e7ee;
  --text:#1a2030; --dim:#5b6473; --mute:#646d7f;  /* mute 对 surface/surface2/bg 均≥4.5:1 */
  --red:#e0241b; --red-soft:rgba(224,36,27,.10); --green:#0a9d63; --green-soft:rgba(10,157,99,.10);
  --warn:#e2730a; --gold:#c08a08; --cold:#2b7fc0; --track:#e6e9f0; --track-done:#c7cdd9;
  /* 情绪六阶段的**填充色**。只用于色块/柱子, 不用于文字 —— 见 kpl_data.PH_COL 那边的说明。
     配色是站长定的一条**叙事**(2026-08-17): 绿(修复·游戏里加血是绿) → 橙(升温·红之前一步)
     → 红(高潮·最醒目, 毫不犹豫的红) → 粉(降温·红退下来) → 紫(退潮·蓝之前一步) → 蓝(冰点)。
     升到红顶再一路降到蓝底, 每一步都有说法 —— 能记住比能分辨更重要, 因为记住了就不用逐个比对。
     代价是叙事相邻的两步在色轮上也相邻, 天生难分; 所以在**不换任何一个颜色身份**的前提下
     搜了各色族内的最优亮度/彩度: 最小 ΔE 18.0(站长原稿) → 35.2。
     两处关键修正: ① 原"冰点"#6b73ee 色相 296° 其实是蓝紫, 与退潮的紫**完全同色相**, 拉回正蓝 273°;
     ② 原"高潮"#f96a52 偏珊瑚色, 改成正红 —— 站长要的就是毫不犹豫的红。
     ⚠️ 修复用绿与站内"跌绿"(#0a9d63 色相157°)相差 20°: 这是站长权衡后的选择(带内有阶段名+图例,
     且不含涨跌信息)。真要再拉开就把绿往黄推到 120° 左右。 */
  --ph-fix:#5fb84f; --ph-up:#f5a623; --ph-top:#e02020;
  --ph-cool:#ef5fb0; --ph-ebb:#9d7ae8; --ph-ice:#1f7fd0;
  /* 同一组色相的**文字色**版: 填充色为了在细柱上分得开, 亮度都偏高 ——
     直接当文字用在白底上对比度只有 2.0~3.3(升温橙最差), 远不到 4.5:1。
     这里保持色相与彩度不变、只压亮度到刚好达标, 所以"高潮还是红、退潮还是紫", 视觉身份一致。
     ⚠️ 谁用哪套见 kpl_data 的 PH_COL(文字) / PH_FILL(色块), 别混用。 */
  --ph-fix-ink:#28861f; --ph-up-ink:#a86600; --ph-top-ink:#df1f1f;
  --ph-cool-ink:#ca3a8f; --ph-ebb-ink:#8161cc; --ph-ice-ink:#0678c8;
  /* RGB三元组: 供 rgba(var(--x-rgb),动态alpha) 用。热力图/情绪带这类"透明度由数据算出来"的
     内联样式必须走这条路——color-mix 在 Chromium<111 不认(Win7的109等约占5%真人请求),
     而内联样式没法用 @supports 兜底; rgba(var(...)) 则一路兼容到很老的内核。*/
  --red-rgb:224,36,27; --green-rgb:10,157,99; --warn-rgb:226,115,10;
  --head-a:#ffffff; --head-b:#f5f6f9; --shadow:0 14px 44px rgba(20,30,60,.13);
  --amber:#c08a08; --amber-soft:rgba(212,168,83,.14); --amber-ink:#8a6a10; --amber-bd:rgba(192,138,8,.28);
  /* 正文链接色(2026-08-12 用户反馈"玩法指南的蓝色字体深色模式很费眼睛"): 全站原来**没有**
     任何 a{color} 兜底 —— 组件各自设色, 没设的就落到浏览器默认 #0000EE / 访问过变紫 + 下划线,
     黑底上尤其刺眼。这里补一个低饱和深蓝 token: 浅色 4.5:1 以上、深色改用去饱和浅蓝而不是提亮同一个蓝。
     link-strong 供标题类链接用(比正文再深一档, 让层级读得出来)。 */
  --link:#2b5c9b; --link-strong:#22406f;
  --up:var(--red); --down:var(--green); --up-soft:var(--red-soft);
  --up-rgb:var(--red-rgb); --down-rgb:var(--green-rgb);}
:root[data-theme="dark"]{
  --bg:#0b0f17; --surface:#111827; --surface2:#172033; --border:#273247;
  --text:#e6eaf2; --dim:#a6b0bf; --mute:#7f8b9b;
  --red:#ff4040; --red-soft:rgba(255,64,64,.10); --green:#22d18a; --green-soft:rgba(34,209,138,.12);
  --warn:#f0a860; --gold:#f5b942; --cold:#4aa3da; --track:#273247; --track-done:#3a4a66;
  /* 深色版: 同一条叙事, 亮度整体上抬以适配深底(六色与背景 L*=15 的差都 >22)。最小 ΔE 38.8。 */
  --ph-fix:#63c94e; --ph-up:#f9b23c; --ph-top:#ff3b30;
  --ph-cool:#ff7ac2; --ph-ebb:#a98bf5; --ph-ice:#3d9ae0;
  /* 深色底上这六个填充色当文字已经全部达标(对比 5.0~9.7), 所以 ink 直接等于 fill,
     不另调 —— 定义出来只是为了两套主题的 token 名字对齐。 */
  --ph-fix-ink:#63c94e; --ph-up-ink:#f9b23c; --ph-top-ink:#ff3b30;
  --ph-cool-ink:#ff7ac2; --ph-ebb-ink:#a98bf5; --ph-ice-ink:#3d9ae0;
  --red-rgb:255,64,64; --green-rgb:34,209,138; --warn-rgb:240,168,96;
  --head-a:#141d2e; --head-b:#0e1420; --shadow:0 14px 40px rgba(0,0,0,.45);
  --amber:#e6c17a; --amber-soft:rgba(212,168,83,.16); --amber-ink:#e8c98a; --amber-bd:rgba(212,168,83,.30);
  --link:#8fb4e0; --link-strong:#a9c8ea;}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0b0f17; --surface:#111827; --surface2:#172033; --border:#273247;
  --text:#e6eaf2; --dim:#a6b0bf; --mute:#7f8b9b;
  --red:#ff4040; --red-soft:rgba(255,64,64,.10); --green:#22d18a; --green-soft:rgba(34,209,138,.12);
  --warn:#f0a860; --gold:#f5b942; --cold:#4aa3da; --track:#273247; --track-done:#3a4a66;
  /* 深色版: 同一条叙事, 亮度整体上抬以适配深底(六色与背景 L*=15 的差都 >22)。最小 ΔE 38.8。 */
  --ph-fix:#63c94e; --ph-up:#f9b23c; --ph-top:#ff3b30;
  --ph-cool:#ff7ac2; --ph-ebb:#a98bf5; --ph-ice:#3d9ae0;
  /* 深色底上这六个填充色当文字已经全部达标(对比 5.0~9.7), 所以 ink 直接等于 fill,
     不另调 —— 定义出来只是为了两套主题的 token 名字对齐。 */
  --ph-fix-ink:#63c94e; --ph-up-ink:#f9b23c; --ph-top-ink:#ff3b30;
  --ph-cool-ink:#ff7ac2; --ph-ebb-ink:#a98bf5; --ph-ice-ink:#3d9ae0;
  --red-rgb:255,64,64; --green-rgb:34,209,138; --warn-rgb:240,168,96;
  --head-a:#141d2e; --head-b:#0e1420; --shadow:0 14px 40px rgba(0,0,0,.45);
  --amber:#e6c17a; --amber-soft:rgba(212,168,83,.16); --amber-ink:#e8c98a; --amber-bd:rgba(212,168,83,.30);
  --link:#8fb4e0; --link-strong:#a9c8ea;}}
:root[data-scheme="intl"]{ --up:var(--green); --down:var(--red); --up-soft:var(--green-soft);
  --up-rgb:var(--green-rgb); --down-rgb:var(--red-rgb); }
*{box-sizing:border-box}
/* iOS 聚焦输入框自动放大的根治(2026-08-07 站长反馈: 移动端点搜索框会放大, 搜到跳转后不复原):
   Safari 只在输入框 font-size < 16px 时才自动缩放页面 —— 站上10处输入框都是 11.5~15px, 全会触发。
   把移动端输入类控件统一提到 16px, 放大压根不会发生, 也就没有"跳转后回不来"的问题。
   ⚠️ 不用 viewport 的 maximum-scale=1 / user-scalable=no 那条路: 那会连**用户主动双指放大**
      一起禁掉, 是无障碍倒退(视力不佳的用户看K线和表格要靠缩放), Safari 新版本也已忽略它。
   只在 max-width:640px 生效, 桌面端字号不动(桌面没有这个行为)。 */
@media(max-width:640px){
 input:not([type=checkbox]):not([type=radio]):not([type=range]),
 select, textarea{font-size:16px!important}
}
body{margin:0;background:var(--bg);color:var(--text);font-family:"Manrope",-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased;padding:14px}
/* 链接兜底: 只影响"当前压根没设过颜色"的链接(组件自己写了 .x a{color} 的一律不受影响,
   特异性更高)。原来这些链接吃的是浏览器默认蓝(#0000EE)+访问过变紫, 深色模式下黑底刺蓝。
   :visited 一并压掉 —— 紫色在深色底上更难读, 且"读没读过"对工具站没有信息价值。 */
a{color:var(--link)} a:where(:visited){color:var(--link)}
/* ⚠️ :visited 必须包在 :where() 里(零特异性): 裸 a:visited 是 (0,1,1), 比 .bhome/.lg 这类单 class (0,1,0) 还高 ——
   首页一旦访问过, 日页头部品牌"连板网"就从深色变蓝(2026-08-18 站长第二次报"连板网变蓝", 根因就是 08-12 加的这条兜底)。
   无痕/自动化浏览器里永远复现不了(没有 visited 状态), 排查时用真实浏览器。 */
/* 可排序表头(2026-08-15)。默认给一个淡箭头提示"这列能点", 否则没人会去点表头。 */
th[data-srt]{cursor:pointer;user-select:none;white-space:nowrap}
th[data-srt]:hover{color:var(--up)}
th[data-srt]::after{content:"⇅";font-size:9px;opacity:.35;margin-left:3px}
th[data-srt].srton{color:var(--up)}
th[data-srt][data-o="desc"]::after{content:"▼";opacity:.9}
th[data-srt][data-o="asc"]::after{content:"▲";opacity:.9}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums}
.up{color:var(--up)} .dn{color:var(--down)}
.wrap{background:var(--bg);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
/* 左侧功能栏 + 布局 */
.app{display:flex;gap:14px;max-width:1540px;margin:0 auto;align-items:flex-start}
.side{flex:0 0 132px;position:sticky;top:14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 8px;box-shadow:var(--shadow);max-height:calc(100dvh - 28px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.side::-webkit-scrollbar{width:6px}.side::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.side::-webkit-scrollbar-track{background:transparent}
.side .lg{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:800;padding:6px 8px 10px;color:var(--up);text-decoration:none;cursor:pointer}
.side .lg:hover{opacity:.8}
.bhome,.bhome:visited{display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:inherit;cursor:pointer}
/* logo+品牌名自成一组: 原来是 display:contents 把两者摊成 .ti 的独立 flex 项, logo 只能靠
   align-self:center 单独跳出基线对齐 —— 而 .ti 会换行, 行里一旦混进更高的元素(日期选择器/按钮),
   logo 就按那条被撑高的行居中往下掉(实测掉 13px, 站长在小程序里看到的就是这个)。
   成组后 logo 只对着'连板网'三个字居中, 与行里还有什么无关; .nm 走基线让整组对外仍按基线
   与日期对齐(实测'连板网底-日期底'保持 2.0px, 与改前一致, 外观不动)。 */
.bhome .nm{color:var(--text)}
.bhome .lgm,.bhome .nm{cursor:pointer}
.bhome:hover .nm{color:var(--up)}
.side .si{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:8px;color:var(--dim);text-decoration:none;font-size:13px;font-weight:600;margin-bottom:2px}
.side .sx{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;color:var(--mute);text-decoration:none;font-size:12.5px;font-weight:600;margin-bottom:1px}
.side .sx:hover{background:var(--surface2);color:var(--dim)}.side .sx.on{background:var(--up-soft);color:var(--up)}.side .sx .ic{font-size:13px}
.side .si+.sx{margin-top:11px;position:relative}
.side .si+.sx::before{content:"";position:absolute;top:-6px;left:10px;right:10px;height:1px;background:var(--border)}
.side .si:hover{background:var(--surface2)}.side .si.on{background:var(--up-soft);color:var(--up)}
.side .si .ic{font-size:14px}
.main{flex:1;min-width:0;padding-bottom:18px}
.side .smore{display:none}
.sgrp{margin:3px 0}
.sgrp summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:10px 10px;font-size:14px;font-weight:700;color:var(--text);border-radius:8px;user-select:none}
.sgrp summary .ic{font-size:14px}
.sgrp summary::-webkit-details-marker{display:none}
.sgrp summary::after{content:"▸";font-size:12px;margin-left:auto;color:var(--mute);transition:transform .15s}
.sgrp[open] summary::after{transform:rotate(90deg)}
.sgrp .sx{padding-left:24px}
.sgrp summary:hover{background:var(--surface2);color:var(--dim)}
.side .si+.sgrp{margin-top:9px;position:relative}
.side .si+.sgrp::before{content:"";position:absolute;top:-4px;left:10px;right:10px;height:1px;background:var(--border)}
@media(max-width:900px){.sgrp{display:contents}.sgrp summary{display:none}}
/* 侧栏用户区(登录/我的自选) */
.suser{margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}
.suser .slog{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:8px;background:var(--up-soft);color:var(--up);text-decoration:none;font-size:13px;font-weight:700}
.suser .slog:hover{filter:brightness(1.05)}.suser .slog .ic{font-size:14px}
.suser .uhd{display:flex;align-items:center;justify-content:space-between;padding:2px 8px 8px;font-size:12px}
.suser .unm{font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.suser .ulo{color:var(--mute);text-decoration:none;font-size:11px;flex:none;margin-left:6px}.suser .ulo:hover{color:var(--up)}
.suser .uwt{display:block;font-size:11.5px;font-weight:700;color:var(--dim);padding:6px 8px;text-decoration:none;border-radius:6px}.suser .uwt:hover{background:var(--surface2)}.suser .uwt b{color:var(--gold,#f5b942)}
.suser .uwl{display:flex;flex-direction:column;gap:1px;max-height:260px;overflow-y:auto}
.suser .uwi{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:6px;font-size:12px;cursor:pointer}
.suser .uwi:hover{background:var(--surface2)}
.suser .uwi .n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.suser .uwi .rs{font:600 11px "JetBrains Mono",monospace;color:var(--gold,#f5b942);flex:none}
.suser .uwi .del{flex:none;color:var(--mute);font-size:14px;padding:0 2px;opacity:0}.suser .uwi:hover .del{opacity:1}.suser .uwi .del:hover{color:var(--down)}
.suser .uwe{font-size:11px;color:var(--mute);padding:6px 8px;line-height:1.6}
@media(max-width:900px){.suser{flex:0 0 100%;margin-top:6px;order:99}.suser .uwl{max-height:180px}}
#bsheet{position:fixed;top:0;left:0;right:0;bottom:0;z-index:480;display:none}
#bsheet.on{display:block}
#bsheet .bsk{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45)}
#bsheet .bsc{position:absolute;left:0;right:0;bottom:0;max-height:62dvh;background:var(--surface);border-radius:16px 16px 0 0;box-shadow:0 -12px 40px rgba(0,0,0,.35);display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom,0px);animation:bsup .22s ease-out}
@keyframes bsup{from{transform:translateY(100%)}to{transform:none}}   /* 纯位移滑入; 原opacity渐变叠内容渲染有闪烁感 */
@media(prefers-reduced-motion:reduce){#bsheet .bsc,#modal{animation:none}}
#bsheet .bsh{flex:none;display:flex;align-items:center;justify-content:center;padding:9px 0 5px;cursor:pointer}
#bsheet .bsh i{width:38px;height:4px;border-radius:2px;background:var(--track-done)}
#bsheet .bsc.tall{max-height:86dvh}
#bsheet .bsb{overflow-y:auto;padding:2px 16px 18px}
/* 移动端"更多"导航抽屉 */
#bsheet .bnm-me{display:flex;gap:10px;margin:2px 0 14px}
#bsheet .bnm-my,#bsheet .bnm-acct{display:flex;align-items:center;gap:8px;text-decoration:none;border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-size:14px;font-weight:700;color:var(--text);background:var(--surface2)}
#bsheet .bnm-my{flex:1}#bsheet .bnm-my .ic{font-size:18px}
#bsheet .bnm-my em{margin-left:auto;font-style:normal;color:var(--up);font-weight:800}
#bsheet .bnm-acct{flex:1;justify-content:center;color:var(--dim)}
#bsheet .bnm-out{flex:0 0 auto;color:var(--mute);font-weight:600}
#bsheet .bnm-acct .bnm-nick{color:var(--up);font-weight:800}
#bsheet .bnm-pwa{display:flex;align-items:center;gap:11px;text-decoration:none;margin-bottom:14px;padding:13px 15px;border-radius:13px;border:1px solid color-mix(in srgb,var(--up) 40%,var(--border));background:color-mix(in srgb,var(--up) 8%,var(--surface2));color:var(--text)}
#bsheet .bnm-pwa .ic{font-size:24px;flex:none}
#bsheet .bnm-pwa .bnm-pwatx{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
#bsheet .bnm-pwa .bnm-pwatx b{font-size:14.5px;font-weight:800}
#bsheet .bnm-pwa .bnm-pwatx em{font-style:normal;font-size:11.5px;color:var(--mute)}
#bsheet .bnm-pwa .bnm-pwago{flex:none;font-size:13px;font-weight:800;color:var(--up)}
#bsheet .bnm-pwa:active{transform:scale(.98)}
#bsheet .bnm-g{margin-bottom:14px}
#bsheet .bnm-gt{font-size:11px;font-weight:700;color:var(--mute);letter-spacing:.04em;margin:0 2px 8px}
#bsheet .bnm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
#bsheet .bnm-t{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;text-decoration:none;border:1px solid var(--border);border-radius:12px;padding:14px 6px;background:var(--surface2);color:var(--dim);min-height:74px}
#bsheet .bnm-t .ic{font-size:20px;line-height:1}#bsheet .bnm-t .tx{font-size:12px;font-weight:600}
#bsheet .bnm-t.on{border-color:var(--up);color:var(--up);background:var(--up-soft)}
#bsheet .bnm-t:active{transform:scale(.97)}
.bss .h{display:flex;gap:8px;align-items:baseline;font-size:16px}
.bss .h b{font-size:18px;font-weight:800}
.bss .h .mono{color:var(--mute);font-size:12px}
.bss .m{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0;font-size:12px;color:var(--dim)}
.bss .m .lb{font-style:normal;font-size:10px;font-weight:800;color:#fff;background:var(--up);border-radius:4px;padding:1px 6px}
.bss .r{font-size:13px;line-height:1.8;color:var(--dim);background:var(--surface2);border-radius:10px;padding:10px 12px;max-height:32dvh;overflow-y:auto}
.bss .a{display:flex;gap:8px;margin-top:12px}
.bss .a button{flex:1;font:inherit;font-size:13.5px;font-weight:700;border:none;border-radius:10px;padding:11px;cursor:pointer}
.bss .a .mstar{position:static;height:auto;background:var(--surface2);border:1px solid var(--border);color:var(--dim)}
.bss .a .go{background:var(--up);color:#fff}
.mconcl{display:none}
@media(max-width:640px){.mconcl{display:block;background:var(--surface2);border:1px solid var(--track-done);border-radius:12px;padding:12px 14px;margin:10px 0}
.mconcl .row1{font-size:12.5px;color:var(--dim);line-height:1.7}
.mconcl .row1 b{color:var(--text);font-weight:800;margin-right:6px}
.mconcl .chips{display:flex;gap:7px;margin-top:8px;overflow-x:auto;scrollbar-width:none}
.mconcl .chips::-webkit-scrollbar{display:none}
.mconcl .chips button{flex:none;font:inherit;font-size:12px;font-weight:700;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:8px 14px;min-height:40px;cursor:pointer}}
/* 今日复盘四步引导卡(默认折叠一行, 点击展开; day.js仅在最新日 unhide) */
.rvc{background:var(--surface2);border:1px solid var(--track-done);border-radius:14px;margin:12px 0;overflow:hidden}
.rvc-fold{width:100%;display:flex;align-items:center;gap:9px;background:none;border:0;padding:12px 15px;cursor:pointer;font:inherit;color:var(--text);text-align:left}
.rvc-fold .rvc-ic{font-size:16px;flex:none}
.rvc-title{font-size:14.5px;font-weight:800;color:var(--text);flex:none}
.rvc-mini{flex:1;min-width:36px;max-width:170px;height:5px;background:var(--track);border-radius:3px;overflow:hidden}
.rvc-mini i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--up),#f4703f);border-radius:3px;transition:width .35s}
.rvc-fold .rvc-prog{font-size:12.5px;color:var(--dim);flex:none}.rvc-fold .rvc-prog b{color:var(--up);font-weight:800}
.rvc-fold .rvc-wk{font-size:11.5px;color:var(--mute);flex:none;white-space:nowrap;margin-left:auto}
.rvc-caret{font-size:11px;color:var(--mute);flex:none;transition:transform .2s}
.rvc.open .rvc-caret{transform:rotate(180deg)}
.rvc-body{display:none;padding:0 15px 14px}
.rvc.open .rvc-body{display:block}
.rvc-sub2{font-size:11px;color:var(--mute);margin:0 0 11px}
.rvc-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.rvs{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:11px;display:flex;flex-direction:column;gap:7px}
.rvs.done{border-color:rgba(34,209,138,.35)}
.rvs.cur{border-color:var(--up);box-shadow:0 0 0 1px var(--up) inset}
.rvs-top{display:flex;align-items:center;gap:7px}
.rvs-no{width:19px;height:19px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);color:var(--mute);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:none}
.rvs.done .rvs-no{background:var(--green);border-color:var(--green);color:#04140d}
.rvs.cur .rvs-no{background:var(--up);border-color:var(--up);color:#fff}
.rvs-top b{font-size:13px;font-weight:800;color:var(--text)}
.rvs-sub{font-size:11px;color:var(--mute);line-height:1.4}
.rvs-act{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
.rvchip{font-size:11.5px;font-weight:700;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:5px 9px;cursor:pointer;text-decoration:none;white-space:nowrap}
.rvchip:hover{color:var(--up);border-color:var(--up)}
.rvchip.on{color:var(--green);border-color:rgba(34,209,138,.4);background:var(--green-soft)}
.rvchip.ai{color:#fff;background:linear-gradient(135deg,#e0241b,#f4703f);border:0}
.rvc-note{display:none;margin-top:7px}.rvs.noteon .rvc-note{display:flex;gap:6px;align-items:center}
#rvcSkip{font-size:11px;color:var(--mute);cursor:pointer;white-space:nowrap;text-decoration:underline dotted}
#rvcSkip:hover{color:var(--up)}
/* 回到顶部悬浮钮(2026-08-26 用户反馈): 滚过600px浮现, 与#aifab同轴心堆叠(它的"安静配角":
   中性surface底+SVG细箭头, 不与主CTA的红橙渐变抢戏)。显隐走opacity+transform浮现动画, 不用display切换 */
#top2{position:fixed;right:26px;bottom:130px;z-index:90;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);cursor:pointer;background:var(--surface);color:var(--dim);box-shadow:0 4px 14px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(14px);pointer-events:none;transition:opacity .22s,transform .22s,color .15s,border-color .15s,box-shadow .15s}
#top2.on{opacity:1;transform:none;pointer-events:auto}
#top2:hover{color:#f4703f;border-color:#f4703f;transform:translateY(-2px)}   /* hover 色与 #fbfab 同款, 三钮一列一个家族 */
#top2 svg{display:block}
@media(max-width:640px){#top2{right:14px;bottom:calc(128px + env(safe-area-inset-bottom,0px));width:40px;height:40px}}
.rvc-note textarea{flex:1;font:inherit;font-size:12px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:6px 8px;color:var(--text);resize:none;height:34px;line-height:1.5}
.rvc-note button{font:inherit;font-size:11.5px;font-weight:700;color:#fff;background:var(--up);border:0;border-radius:7px;padding:0 11px;cursor:pointer}
.rvc-bar{height:5px;background:var(--track);border-radius:3px;overflow:hidden;margin:13px 0 9px}
.rvc-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--up),#f4703f);border-radius:3px;transition:width .35s}
.rvc-foot{font-size:11px;color:var(--mute)}
.rvc.done4{background:var(--green-soft);border-color:rgba(34,209,138,.4)}
.rvc.done4 .rvc-title{color:var(--green)}
@media(max-width:640px){.rvc-steps{grid-template-columns:repeat(2,1fr)}.rvc-fold .rvc-wk{display:none}.rvc-mini{max-width:80px}}
#botnav{display:none}
@media(max-width:900px){#botnav{position:fixed;left:0;right:0;bottom:0;z-index:390;display:flex;background:var(--surface);border-top:1px solid var(--border);padding:0 max(4px,env(safe-area-inset-right,0px)) max(6px,env(safe-area-inset-bottom,0px)) max(4px,env(safe-area-inset-left,0px));box-shadow:0 -4px 18px rgba(0,0,0,.14)}
#botnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 6px;font-size:10.5px;color:var(--mute);text-decoration:none}
#botnav a i{font-style:normal;font-size:17px}
#botnav a.on{color:var(--up)}}
@media(max-width:900px){.app{flex-direction:column;gap:10px}.main{width:100%;min-width:0;padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}.side{display:none}.side .suser{display:none}.side .lg{display:none}.side .si{margin:0;white-space:nowrap;min-height:40px;align-items:center}.side .sx{margin-top:0;white-space:nowrap;min-height:40px;align-items:center;border-top:0}.side .si+.sx::before{display:none}
.side .smore{display:none!important}.sgrp{display:contents}.sgrp summary{display:none}
.side .smore{display:flex;align-items:center;font:inherit;font-size:12px;font-weight:700;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;cursor:pointer;min-height:40px;margin-left:auto}
.sec{flex-wrap:wrap}.rt2 a{white-space:nowrap}.pgh{flex-wrap:wrap;gap:8px}.pgh .ti{flex:1 1 100%;min-width:0;display:block}.pgh .ti b{display:block}.pgh .ti small{display:block;margin:4px 0 0}
.lr1 .hd .rs{flex-basis:100%;order:9;color:var(--mute);font-size:11.5px}
.lr1 .cv{min-height:36px;display:inline-flex;align-items:center}
.fold3>.sec{cursor:pointer}.fold3>.sec::after{content:"展开 ▾";margin-left:auto;font-size:11px;color:var(--mute);font-weight:600}
.fold3.open>.sec::after{content:"收起 ▴"}
.fold3:not(.open)>*:not(.sec){display:none!important}
.dbtn{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;align-self:center}.dinp{min-height:44px;align-self:center}
.dinpw{position:relative;display:inline-flex;align-items:center;cursor:pointer;border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:0 26px 0 6px}
.dinpw:hover{border-color:var(--accent,#e0241b)}
.dinpw .dinp{border:0;background:transparent;cursor:pointer;padding:4px 2px}
.dinpw .dinp::-webkit-calendar-picker-indicator{opacity:0;position:absolute;right:0;width:24px;height:100%;cursor:pointer}
.dico{position:absolute;right:6px;font-size:13px;pointer-events:none;opacity:.75}.dsel{min-height:44px;padding:8px 10px;align-self:center}.qtabs button{min-height:44px}.tgl button{min-width:44px;min-height:44px}
.qnav a.on{color:var(--up);font-weight:800}.qnav a{min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}}
/* header */
.fph{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 20px;background:linear-gradient(180deg,var(--head-a),var(--head-b));border-bottom:1px solid var(--border);flex-wrap:wrap}
.fph .ti{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.fph .ti .lgm{flex:0 0 auto}   /* 居中由 .bhome 的 align-items 管; 间距归 .bhome 的 gap, 故不再需要 align-self 与负边距 */
.fph .nm{font-size:18px;font-weight:800;letter-spacing:.02em;align-self:baseline}
.fph .dt{font-size:15px;font-weight:700;color:var(--up)} .fph .wd{font-size:12px;color:var(--mute)}
.fph .rt{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.idxc{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}
.idxc .n{font-size:10px;color:var(--mute)} .idxc .v{font-size:13px;font-weight:700}
.tgl{display:flex;gap:5px}.tgl button{font:inherit;font-size:11px;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--dim);border-radius:6px;padding:3px 8px;line-height:1.4}
.tgl button.on{background:var(--up);color:#fff;border-color:var(--up)}
/* 摸鱼模式(2026-08-27 用户: 上班红绿太扎眼): 内容区高灰度、留12%饱和方向仍隐约可辨。
   ⚠️filter绝不能加在html/body: position:fixed会退化为相对滤镜盒定位(弹层/悬浮钮全乱);
   只加在.main与各fixed弹层**自身**上(filter在fixed元素自己身上无害)。 */
html.mofish .main,html.mofish .side,html.mofish #mask,html.mofish #bsheet,html.mofish #aifab,html.mofish #fbfab,html.mofish #top2{filter:saturate(.12)}
#tMF.on{background:var(--surface2);color:var(--text);border-color:var(--dim)}   /* 开启态不用红底(摸鱼时按钮自己也得低调) */
#tMF i,#tBK i{font-style:normal;margin-left:3px}
@media(max-width:640px){#tMF i{display:none}}   /* 移动端头部紧, 缩回纯图标 */
#bkpop{position:fixed;z-index:460;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.25);padding:10px 13px;font-size:12.5px;color:var(--dim);max-width:250px;line-height:1.8}
#bkpop b{color:var(--text);font-size:13.5px}
/* 复制代码钮(2026-08-27 用户: 想要短线侠式客户端联动——网页无法操控本地行情软件, 折衷=一键复制,
   同花顺/东财客户端均支持直接键入/粘贴代码跳转; 文案按纪律不点名厂商) */
.mcpy{height:28px;padding:0 10px;border-radius:999px;background:var(--surface2);border:1px solid var(--border);font-size:12px;font-weight:700;cursor:pointer;color:var(--dim);white-space:nowrap}
.mcpy:hover{color:var(--up);border-color:var(--up)}
.mcpy.ok{color:var(--green);border-color:var(--green)}
#modal .mcpy,#dskp .mcpy,#dski .mcpy{position:absolute;top:12px;right:124px}
.mcpy i{font-style:normal}
@media(max-width:640px){#modal .mcpy i,#dskp .mcpy i,#dski .mcpy i{display:none}}   /* 只有弹层头部空间紧才缩成图标 */
/* 移动抽屉底部三按钮等宽(各113px), 空间充裕 —— 首版用无差别的 .mcpy i{display:none},
   把抽屉里的"复制代码"也缩成一个孤零零的图标, 按钮又宽又空(2026-08-29 站长移动端实测报告)。 */
#bsheet .mcpy{display:inline-flex;align-items:center;justify-content:center;gap:3px;width:100%;height:38px;font-size:12.5px}
#bsheet .mcpy i{display:inline!important}
.cpyhint{position:absolute;top:48px;right:16px;z-index:5;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.22);padding:7px 11px;font-size:12px;color:var(--dim);max-width:260px;line-height:1.7}
/* 移动抽屉: 提示走**浮层**不占布局 —— 首版 position:static 插进 flex 行占180px,
   把三按钮从115/113/113挤成46/73/36, 压得没法看(2026-08-29 站长反馈+browse实测)。
   改为绝对定位悬浮在按钮行上方, 淡入淡出后自动消失。 */
#bsheet .cpyhint{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(100% + 8px);top:auto;right:auto;white-space:nowrap;max-width:92vw;overflow:hidden;text-overflow:ellipsis;pointer-events:none;animation:cpyfade var(--cpydur,2.6s) ease forwards;z-index:9}
#bsheet .a{position:relative}
@keyframes cpyfade{0%{opacity:0;transform:translate(-50%,6px)}12%{opacity:1;transform:translate(-50%,0)}78%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-4px)}}
/* 摸鱼模式一次性发现引导(2026-08-27 站长: 太隐蔽): 🐟脉冲光圈+气泡, 体验或关闭后永不再弹 */
#tMF.pulse{animation:mfp 1.6s ease-out 3}
@keyframes mfp{0%{box-shadow:0 0 0 0 rgba(91,141,239,.55)}100%{box-shadow:0 0 0 12px rgba(91,141,239,0)}}
#mfhint{position:fixed;z-index:460;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.25);padding:10px 12px;font-size:12.5px;color:var(--dim);max-width:240px;line-height:1.7}
#mfhint b{color:var(--text)}
#mfhint .mfa{display:inline-block;margin-top:6px;font-weight:700;color:#5b8def;cursor:pointer;border:1px solid currentColor;border-radius:6px;padding:2px 10px}
#mfhint .mfx{position:absolute;top:4px;right:8px;cursor:pointer;color:var(--mute)}
#mfhint::before{content:"";position:absolute;top:-6px;right:24px;width:10px;height:10px;background:var(--surface);border-left:1px solid var(--border);border-top:1px solid var(--border);transform:rotate(45deg)}
.dsel{font:inherit;font-size:12px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:3px 8px;cursor:pointer}
.live{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--up)}
.live .dot{width:7px;height:7px;border-radius:50%;background:var(--up);animation:pulse 1.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.2}}
.rv{font-size:11px;color:var(--mute)}
/* 历史日横幅 */
/* 题材档案页 /ticai/ */
.thero{display:flex;justify-content:space-between;gap:14px;align-items:flex-end;flex-wrap:wrap;margin:2px 0 10px}
.thero .big{font-size:19px;font-weight:800}.thero .big b{color:var(--red)}
.thero .sub{font-size:12px;color:var(--dim);margin-top:4px}
.hwrap{text-align:right}.hwrap .hl{font-size:10.5px;color:var(--mute);margin-bottom:3px}
.tspark{display:flex;gap:3px;align-items:flex-end;height:36px}
.tspark i{width:10px;background:linear-gradient(180deg,var(--red),#f4703f);border-radius:2px 2px 0 0;display:block}
.tnote{font-size:12.5px;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:9px 12px;margin:10px 0;line-height:1.7}
.sec2{display:flex;align-items:baseline;gap:8px;margin:14px 0 8px}.sec2 b{font-size:14px}.sec2 small{color:var(--mute);font-size:11px}
.tstru{font-size:13px;color:var(--dim);line-height:1.95}.tstru p{margin:6px 0}.tstru b{color:var(--text)}
/* 概念股完整名单: 承接「XX概念股有哪些」这类问法 —— 名单本身公开全量, 强度/阶段/战绩仍在成员强度榜(登录后)。
   也是 /gu 个股页的主要内链来源: 842 个题材页每页几十条, 此前全部只存在于被门控的表格里。 */
.tnl{display:flex;flex-wrap:wrap;gap:6px 8px;margin:8px 0 2px;font-size:13px;line-height:1.7}
.tnl a,.tnl span{display:inline-block;padding:2px 8px;border-radius:6px;background:var(--card2,rgba(127,127,127,.09));color:var(--text);text-decoration:none;border:1px solid transparent}
.tnl a:hover{border-color:var(--line);background:var(--card)}
.tnl .zt{color:#e35;font-weight:600}
.tnlf{font-size:12px;color:var(--mute);margin-top:6px}
.ttw{overflow-x:auto}.tt{width:100%;border-collapse:collapse;font-size:13px}
/* 横滑表格容器(2026-09-19 补): 多个生成器早就在发 class="tw"(龙虎榜跨日检索结果、前瞻回验的
   阶段表、连板之最几张表), 但全站样式表里从来没有这个类的定义 —— 名字是从后台那套样式(admin_server
   自带 .tw)抄过来的, 前台根本没有。桌面看不出来, 375px 下长席位名逐字换行、一行数据拉到接近整屏高,
   表格完全不可读。这里按已经在用的名字补定义, 而不是去改五处调用点冒视觉回归的险。
   单元格 nowrap 是关键: 不禁止换行的话表格只会越挤越高, 永远不会宽到触发横滚。 */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tw table{width:100%;border-collapse:collapse;font-size:13px}
.tw th{font-size:11px;color:var(--mute);font-weight:600;text-align:right;padding:5px 8px;border-bottom:1px solid var(--border);white-space:nowrap}
.tw td{padding:7px 8px;text-align:right;border-bottom:1px solid var(--border);white-space:nowrap}
.tw th:first-child,.tw td:first-child{text-align:left}
.tt th{font-size:11px;color:var(--mute);font-weight:600;text-align:right;padding:5px 8px;border-bottom:1px solid var(--border)}
.tt th.l,.tt td.l{text-align:left}
.tt td{padding:7px 8px;text-align:right;border-bottom:1px solid var(--border)}
.tt tr{cursor:pointer}.tt tr:hover td{background:var(--surface2)}
.tt td.l a,.tt td.l .nm{color:var(--text);font-weight:700}.tt td.l a{text-decoration:none}
.tt .cd{color:var(--mute);font-size:11px;margin-left:6px;font-family:ui-monospace,SFMono-Regular,monospace}
.tt .ztb{font-style:normal;font-size:10.5px;color:#fff;background:var(--red);border-radius:5px;padding:1px 6px;margin-left:6px}
.tt b.hot{color:var(--gold)}.tt .up{color:var(--up)}.tt .dn{color:var(--down)}
.evw{font-size:12.5px;line-height:1.9}.evl .mono{color:var(--mute);margin-right:8px;font-size:11.5px}
.tfoot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--dim);margin:12px 0}
.tfoot a{color:var(--cold);margin-right:6px}
.tcta{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 4px}
.tcta a{font-size:12.5px;font-weight:700;border-radius:9px;padding:8px 14px;text-decoration:none}
.tcta .c1{border:1px solid var(--border);color:var(--dim);background:var(--surface2)}
.tcta .c2{color:#fff;background:linear-gradient(135deg,#e0241b,#f4703f)}
.tcig{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:9px}
.tci{display:flex;flex-direction:column;gap:3px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;text-decoration:none}
.tci b{color:var(--text);font-size:13.5px}.tci span{color:var(--mute);font-size:11.5px}
.tci:hover{border-color:var(--up)}
/* 日页顶部一行: 搜股框+折叠复盘卡并排(省高度); 卡展开或窄屏时自动换行/独占整行 */
.topr{display:flex;gap:10px;align-items:stretch;flex-wrap:wrap;margin:10px 0 0}
.topr .gsqw{flex:1 1 300px;max-width:430px;margin:0;display:flex}
.topr .gsqw input{flex:1}   /* 输入框拉伸至与折叠条严格同高 */
.topr .rvc{flex:1 1 360px;margin:0}
.topr .rvc.open{flex-basis:100%}
.topr .rvc-fold{padding:8px 15px}
/* 日页顶全局搜股框(盯盘中间查个股) */
.gsqw{position:relative;max-width:430px;margin:10px 0 0}
.gsqw input{width:100%;font:inherit;font-size:13px;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:8px 12px;color:var(--text)}
.gsqw input:focus{outline:none;border-color:var(--up)}
#gsqr{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:120;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);max-height:320px;overflow:auto;display:none}
#gsqr .gi{display:flex;gap:9px;align-items:baseline;padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--border)}
#gsqr .gi:last-child{border-bottom:0}
#gsqr .gi:hover{background:var(--surface2)}
#gsqr .gi span{color:var(--mute);font-size:11.5px;font-family:ui-monospace,SFMono-Regular,monospace}
.stale:empty{display:none}
.stale{background:var(--amber-soft);color:var(--amber-ink);border-bottom:1px solid var(--amber-bd);font-size:12px;font-weight:600;padding:8px 20px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.stale a{color:var(--amber);text-decoration:underline;font-weight:700}
/* AI 复盘卡 */
.airv:empty{display:none}
.airv{background:var(--surface);border-bottom:1px solid var(--border)}
.aifold{position:relative}
.aifold:not(.open) .airv{max-height:200px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 55%,transparent);mask-image:linear-gradient(#000 55%,transparent)}
.aifold .aimore{display:block;width:100%;font:inherit;font-size:12.5px;font-weight:700;color:var(--dim);background:var(--surface);border:1px solid var(--border);border-top:0;border-radius:0 0 12px 12px;padding:9px;cursor:pointer}
.aifold .aimore:hover{color:var(--up)}
.airv .aih{display:flex;align-items:baseline;gap:8px;padding:13px 20px 0;flex-wrap:wrap}.airv .aih .ic{font-size:15px}.airv .aih b{font-size:14px;font-weight:800}.airv .aih small{font-size:11px;color:var(--mute)}
.airv .aib{padding:9px 20px 15px;font-size:13px;color:var(--dim);line-height:1.8}.airv .aib b{color:var(--text);font-weight:700}
/* 选股器表格视图(DeepVue式: 左宽表列头排序 + 右图表联动) */
.dsk.scrtb .dskl{flex:1 1 56%;min-width:0}
.dsk.scrtb .dski{display:none}
.scrtw{overflow:auto;flex:1}
.scrt{width:100%;border-collapse:collapse;font-size:13px}
.scrt th{position:sticky;top:0;background:var(--surface2);color:var(--dim);font-size:11.5px;font-weight:700;padding:7px 8px;text-align:right;white-space:nowrap;cursor:pointer;z-index:1;border-bottom:1px solid var(--border)}
.scrt th:first-child{text-align:left}
.scrt th:hover{color:var(--up)}
.scrt th.on{color:var(--up)}
.scrt td{padding:6px 8px;border-bottom:1px dashed var(--border);text-align:right;white-space:nowrap;font-size:12.5px}
.scrt td.tn{text-align:left;font-weight:600;max-width:110px;overflow:hidden;text-overflow:ellipsis}
.scrt td.tn .lb{font-size:9px;color:#fff;background:var(--up);border-radius:4px;padding:0 4px;margin-left:4px;font-style:normal;font-weight:700}
.scrt td.tt2{max-width:130px;overflow:hidden;text-overflow:ellipsis;text-align:left;color:var(--mute);font-size:11.5px}
.scrt tr.dli:hover td{background:color-mix(in srgb,var(--up) 5%,transparent)}
.scrt tr.dli.on td{background:var(--up-soft)}
@media(max-width:900px){.scrb #stbtg{display:none}}
/* 主力资金动向(今日页, 客户端渲染) */
.zjf{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 18px;margin-top:14px}
.zjf .sec i{font-style:normal;color:var(--mute)}
.zjfg{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:10px}
.zjf .zc{min-width:0}
/* 手机两列每列只有 ~165px: 名字+涨幅+净额三段挤不下, 净额会溢出卡片(2026-08-19 站长截图 "-1322.58亿" 被裁)。
   收字号+压间距, 列本身 min-width:0 才会真的缩; 大数净额由 JS 去小数位 */
@media(max-width:640px){.zjfg{grid-template-columns:1fr 1fr;gap:10px}.zjf .zr{font-size:12.5px;gap:5px;padding:4px 0}.zjf .zr i{font-size:10px}.zjf .zr em{font-size:12px}}
.zjf .zh{font-size:12.5px;font-weight:800;color:var(--dim);margin-bottom:6px}
.zjf .zr{display:flex;gap:8px;align-items:baseline;font-size:13.5px;padding:4.5px 0;border-bottom:1px dashed var(--border)}
.zjf .zr[data-stk]{cursor:pointer}
.zjf .zr[data-stk]:hover b{color:var(--up)}
.zjf .zr b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.zjf .zr i{font-style:normal;font-size:11px}
.zjf .zr em{font-style:normal;font-weight:700;font-family:var(--mono,monospace);white-space:nowrap}
.zjfn{font-size:11px;color:var(--mute);margin-top:10px}
/* 交流群: 日页底部群卡 + /qun.html 大图页 */
.qunbox{display:flex;gap:18px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 18px;margin-top:14px;flex-wrap:wrap}
.qunbox img{width:128px;height:128px;border-radius:8px;background:#fff;padding:5px;flex:none;cursor:zoom-in}
.qrh img{cursor:zoom-in}
#qrov{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(8,10,16,.86);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;z-index:9999}
#qrov img{width:min(78vw,340px);height:auto;background:#fff;padding:14px;border-radius:14px}
#qrov span{color:#f0f2f6;font-size:14px;font-weight:700}
#qrov i{font-style:normal;color:#9aa3b2;font-size:12px}
.qunbox .qbt{display:flex;flex-direction:column;gap:6px;min-width:180px}
.qunbox .qbt b{font-size:14.5px}
.qunbox .qbt span{font-size:12.5px;color:var(--dim);line-height:1.7}
.qunbox .qbt small{font-size:11px;color:var(--mute)}
.qunbox .qbt small a{color:var(--dim)}
.qunw{display:flex;gap:28px;align-items:center;padding:20px;flex-wrap:wrap}
.qunw img{width:min(300px,78vw);height:auto;border-radius:12px;background:#fff;padding:10px}
.qunw .qunt{font-size:14.5px;line-height:2.1;min-width:200px;flex:1}
.qunw .qunt small{color:var(--mute);font-size:12px;line-height:1.9;display:block;margin-top:6px}
.qune{font-size:13px;color:var(--mute);padding:34px}
.aisig{padding:4px 20px 16px;border-top:1px dashed var(--border)}
.aisig .sgh{font-size:12px;font-weight:800;color:var(--gold);margin:11px 0 8px}
.aisig .sgr{display:flex;gap:10px;align-items:baseline;margin-bottom:7px;flex-wrap:wrap}
.aisig .sgr .wchip{cursor:default;font-size:12px;flex:none}
.aisig .sgr em{font-style:normal;font-size:12px;color:var(--dim);line-height:1.7;flex:1;min-width:200px}
.aisig small{display:block;font-size:10.5px;color:var(--mute);line-height:1.7;margin-top:6px}
.aiw{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:0 20px 14px}
.aiw .wl{font-size:12px;font-weight:800;color:var(--gold);white-space:nowrap}
.aiw .wc{display:inline-flex;gap:6px;align-items:baseline;background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:4px 12px;font-size:12px}
.e2{font-style:normal;font-size:9.5px;color:var(--mute);white-space:nowrap}
.e2.eok{color:var(--up)}.e2.ebad{color:var(--cold)}
.aiw .wc[data-stk]{cursor:pointer}.aiw .wc[data-stk]:hover{border-color:var(--up)}
.aiw .wc b{color:var(--text)}.aiw .wc i{font-style:normal;color:var(--mute);font-size:11px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aiw small{font-size:10px;color:var(--mute);margin-left:auto;white-space:nowrap}
.aiw.aivf .wl{color:var(--dim)}
.aiw .wc em{font-style:normal;font-weight:800;font-size:11px;color:var(--mute)}
.aiw .wc.vok em{color:var(--up)}.aiw .wc.vbad em{color:var(--down)}
.aiw .wc.vok{border-color:color-mix(in srgb,var(--up) 45%,var(--border))}
/* 明日关注·当日推演打码块(2026-09-19): 方块占位, 整行可点 → lbGate 弹升级卡。
   小字里带 <a> 所以不能整块 pointer-events, 链接要能单独点; 点击分流在 assist.js。
   小屏上 small 换行到第二行(桌面靠 margin-left:auto 顶到右侧, 挤在一行读不了)。 */
.aiw.mtlock{cursor:pointer;border:1px dashed var(--border);border-radius:12px;margin:0 20px 14px;padding:10px 14px}
.aiw.mtlock:hover{border-color:var(--gold)}
.aiw.mtlock .wc.lockw{letter-spacing:2px;color:var(--dim);background:var(--surface2);user-select:none;-webkit-user-select:none}
.aiw.mtlock small{color:var(--mute);white-space:normal}
.aiw.mtlock small a{color:var(--gold);font-weight:700}
@media(max-width:620px){.aiw.mtlock{margin:0 12px 12px}.aiw.mtlock small{margin-left:0;flex:1 0 100%}}
.fcast{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:13px 18px;margin-bottom:14px}
.fcast .fh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.fcast .fh b{font-size:14px;font-weight:800}
.fcast .fh small{font-size:11.5px;color:var(--mute)}.fcast .fh small b{font-size:12px}
.fcast .fc{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}
.fcast .fst{flex:1;min-width:130px;background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:9px 13px}
.fcast .fst b{display:block;font-size:19px;font-weight:800;line-height:1.25}
.fcast .fst b.up{color:var(--up)}.fcast .fst b.dn{color:var(--down)}
.fcast .fst span{font-size:10.5px;color:var(--mute)}
.fcast .ff{margin-top:8px;font-size:10px;color:var(--mute)}
.fcast .ff a{color:var(--mute);text-decoration:underline dotted}
.hdts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:9px;width:100%}
.hdts .hl{font-size:10px;color:var(--mute);white-space:nowrap}
.hdt{display:inline-flex;gap:4px;align-items:baseline;font-size:11px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:2px 7px;color:var(--dim);text-decoration:none;white-space:nowrap}
.hdt:hover{border-color:var(--up);color:var(--text)}
.hdt i{font-style:normal;font-size:10px;font-weight:700}.hdt i.up{color:var(--up)}.hdt i.dn{color:var(--down)}
.hmore{font-size:10px;color:var(--mute)}
.mtx .nick{font-style:normal;font-size:10px;color:var(--gold);border:1px solid var(--border);border-radius:4px;padding:0 4px;margin-left:4px}
.mtx tr.cur td{background:color-mix(in srgb,var(--gold) 12%,transparent)}
/* 利好快讯框(与连板天梯并排) */
.fnb{background:var(--surface);display:flex;flex-direction:column;height:100%}
.fnb .nbhd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:11px}
.fnb .nbhd b{font-size:14px;font-weight:800}.fnb .nbhd small{font-size:11px;color:var(--mute);margin-left:7px}
.fnb .nbhd .rt{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:700;color:var(--up);white-space:nowrap}
.fnb .nbhd .all{font-size:10px;font-weight:600;color:var(--dim);text-decoration:none;white-space:nowrap;margin-left:6px;padding-left:6px;border-left:1px solid var(--border)}
.fnb .nbhd .all:hover{color:var(--up)}
.fn .mfull{display:inline-block;margin-top:9px;font-size:11px;font-weight:700;color:var(--up);text-decoration:none}
.fn .mfull:hover{text-decoration:underline}
.fnb .nbhd .rt .dot{width:6px;height:6px;border-radius:50%;background:var(--up);animation:pulse 1.4s infinite}
.fnb .nbhd .rt .dot.off{animation:none;background:var(--mute)}
.fpf{flex:1;min-height:330px;max-height:560px;overflow-y:auto;display:flex;flex-direction:column;gap:7px}
.fpf::-webkit-scrollbar{width:7px}.fpf::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.fpf::-webkit-scrollbar-track{background:transparent}
.fpf .empty{display:flex;align-items:center;justify-content:center;flex:1;color:var(--mute);font-size:12px;text-align:center;padding:30px 10px}
.fn{background:var(--surface2);border:1px solid var(--border);border-left:3px solid var(--up);border-radius:7px;padding:9px 11px;cursor:pointer}
.fn.dn{border-left-color:var(--down)}
.fn:hover{border-color:var(--mute)}
.fn .r1{display:flex;align-items:center;gap:8px}
.fn .tm{font-size:10px;color:var(--mute)}
.fn .fg{font-size:10px;font-weight:800}.fn .fg.up{color:var(--up)}.fn .fg.dn{color:var(--down)}
.fn .tt{font-size:12px;font-weight:700;color:var(--text);flex:1;min-width:0}
.fn .cv{font-size:9px;color:var(--mute);transition:transform .15s}
.fn.open .cv{transform:rotate(180deg)}
.fn .dtl{margin-top:9px;padding-top:9px;border-top:1px dashed var(--border)}
.fn .tag{display:inline-block;font-size:10px;color:var(--dim);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 7px;margin-bottom:7px}
.fn .an{font-size:11px;color:var(--dim);line-height:1.7}
.fn .pl{font-size:11px;color:var(--mute);margin:9px 0 6px}
.fn .pk{display:flex;flex-wrap:wrap;gap:6px}
.fn .pk .s{display:inline-flex;align-items:baseline;gap:4px;font-size:11px;font-weight:700;background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:3px 8px;cursor:pointer}
.fn .r2{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin-top:8px}
.fn .r2 .pl2{flex:none;font-size:10px;font-weight:700;color:var(--mute)}
.fn .r2 .pk{flex:1;min-width:0}
.fn .pk .s:hover{border-color:var(--up)}
.fn .pk .s i{font-size:9px;color:var(--mute);font-weight:600;font-style:normal}
/* kpi */
.kpi{display:flex;flex-wrap:wrap;gap:1px;background:var(--border)}
.kpi .c{background:var(--surface);padding:8px 13px 7px;flex:1 1 15%;min-width:118px}   /* 15%→桌面恒6格/行(11格=6+5), 900px内24%→4/行(4+4+3), 均不出现末行单格 */
.kpi .l{font-size:10.5px;color:var(--mute);margin-bottom:3px}
.kpi .v{font-size:19px;font-weight:700;line-height:1.15} .kpi .v small{font-size:13px;color:var(--mute);font-weight:600}
.kpi .ly{font-size:10.5px;color:var(--mute);margin-top:2px}
/* breadth + cycle */
.bc{display:grid;grid-template-columns:1.4fr 1.6fr;gap:1px;background:var(--border)}
.bc .x{background:var(--surface);padding:13px 18px}
.bc .hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;font-size:11px;color:var(--mute)}
.bar{height:9px;border-radius:5px;overflow:hidden;display:flex;background:var(--down)}
.bar i{background:var(--up);height:100%}
.bc .ft{display:flex;justify-content:space-between;margin-top:7px;font-size:10px;color:var(--mute)}
.cyc{display:flex;gap:6px}.cyc .s{flex:1;text-align:center}.cyc .s .b{height:6px;border-radius:3px}.cyc .s .t{font-size:10px;margin-top:6px;color:var(--mute)}
/* ladder + leaders */
.lr{display:grid;grid-template-columns:1.55fr 1fr;gap:1px;background:var(--border)}
.lr .x{background:var(--surface);padding:15px 18px}
.sec{display:flex;align-items:baseline;gap:8px;margin-bottom:13px}
.sec b{font-size:14px;font-weight:800}.sec small{font-size:11px;color:var(--mute)}
.lad{display:flex;flex-direction:column;gap:10px}
.lad .row{display:flex;gap:12px;align-items:flex-start}
.lad .bd{flex:0 0 50px;display:flex;flex-direction:column;align-items:center;padding-top:2px}
.lad .bd .b{font-size:15px;font-weight:700;color:#fff;border-radius:6px;padding:3px 0;width:100%;text-align:center}
.lad .bd .c{font-size:10px;color:var(--mute);margin-top:4px}.lad .bd .ppl{font-size:8.5px;color:var(--mute);margin-top:4px;white-space:nowrap}.lad .bd .pp{font-size:10.5px;font-weight:700;color:var(--gold);margin-top:1px;white-space:nowrap;cursor:help}.lad .bd .pp.ap{color:#5b8def}.topwarn{display:flex;flex-direction:column;gap:6px;border-radius:10px;padding:13px 16px;margin:12px 0;border:1px solid}.topwarn.red{background:rgba(226,51,51,.08);border-color:rgba(226,51,51,.45)}.topwarn.amber{background:rgba(212,168,83,.07);border-color:rgba(212,168,83,.4)}.topwarn.blue{background:rgba(91,141,239,.07);border-color:rgba(91,141,239,.4)}.topwarn.blue b{color:#5b8def}.topwarn.green{background:rgba(63,185,80,.07);border-color:rgba(63,185,80,.4)}.topwarn.green b{color:#3fb950}.topwarn b{font-size:13.5px}.topwarn.red b{color:var(--up)}.topwarn.amber b{color:var(--gold)}.topwarn span{font-size:12.5px;line-height:1.9;color:var(--dim)}.topwarn .tip{font-size:12px;line-height:1.85;color:var(--dim);border-top:1px dashed var(--border);padding-top:7px}.topwarn .tip a{color:var(--mute);text-decoration:none}.topwarn .tip a:hover{color:var(--up)}.topwarn small{font-size:10.5px;color:var(--mute)}.topwarn.trial{border-style:dashed}
.warnbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:10px 0 4px;font-size:12px}
.warnbar .wl{color:var(--mute);font-size:11px}
.warnbar .wh{font-style:normal;color:var(--mute);font-size:10.5px;margin-left:2px}
.wchip{display:inline-flex;align-items:center;padding:3px 11px;border-radius:999px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-weight:600;user-select:none;line-height:1.5}
.wchip.red{color:var(--up);border-color:rgba(226,51,51,.5);background:rgba(226,51,51,.07)}
.wchip.amber{color:var(--gold);border-color:rgba(212,168,83,.5);background:rgba(212,168,83,.07)}
.wchip.blue{color:#5b8def;border-color:rgba(91,141,239,.5);background:rgba(91,141,239,.07)}
.wchip.green{color:#3fb950;border-color:rgba(63,185,80,.5);background:rgba(63,185,80,.07)}
.wchip.trial{border-style:dashed;color:var(--gold);border-color:rgba(212,168,83,.5)}
.wchip.on{outline:2px solid color-mix(in srgb,currentColor 45%,transparent)}
.warnwrap{position:relative}
.warnwrap>.topwarn{position:absolute;left:0;right:0;top:100%;margin:6px 0 0;z-index:130;box-shadow:0 16px 40px rgba(0,0,0,.3);background:var(--surface)}
/* 浮层色调用 background-image 叠加, 不能写成 background:color-mix(...var()...):
   含var()的值解析期无法判定合法性, 到计算值阶段才失效, 此时低优先级的 background:var(--surface)
   已在层叠中被淘汰 → 回落初始值 transparent → 浮层变透明, 正文透上来叠字(老内核实测).
   background-color 与 background-image 分属两个属性, 底色恒不透明, 全内核通吃。*/
.warnwrap>.topwarn.red{background-image:linear-gradient(rgba(226,51,51,.08),rgba(226,51,51,.08))}
.warnwrap>.topwarn.amber{background-image:linear-gradient(rgba(212,168,83,.07),rgba(212,168,83,.07))}
.warnwrap>.topwarn.blue{background-image:linear-gradient(rgba(91,141,239,.07),rgba(91,141,239,.07))}
.warnwrap>.topwarn.green{background-image:linear-gradient(rgba(63,185,80,.07),rgba(63,185,80,.07))}
.fcast .fh{cursor:pointer}
.fcast .fexp{font-style:normal;color:var(--mute);font-size:11px;margin-left:auto}
.fcast.fold > :not(.fh){display:none}
.fcast.fold{padding-bottom:10px}
.toolrow{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0}
.tbtn{display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-size:13px;font-weight:700;cursor:pointer;box-shadow:var(--shadow)}
.tbtn:hover{border-color:var(--up);color:var(--up)}
.tbtn i{font-style:normal;font-weight:400;font-size:11px;color:var(--mute)}
.qnav .qsep{width:1px;align-self:stretch;background:var(--border);margin:2px 3px}
.qnav .tbtn{padding:5px 12px;font-size:12.5px;box-shadow:none;border-radius:8px}
.faq .faqwrap>summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none}
.faq .faqwrap>summary::-webkit-details-marker{display:none}
.faq .faqwrap>summary h2{margin:0}
.faq .faqwrap>summary i{font-style:normal;font-size:11.5px;color:var(--mute)}
.faq .faqwrap[open]>summary{margin-bottom:8px}
#modal .airv{border-bottom:0}
#modal .aucd summary .tgl2{display:none}.stgm .duo{margin:0 0 9px}.stgm .duo:last-child{margin-bottom:0}.stgm .dl{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;font-weight:700;margin-bottom:4px}.stgm .dl i{font-style:normal;font-weight:400;font-size:10px;color:var(--mute);margin-left:6px}.stgm .dl b{font-size:12.5px}.stgm .db{display:flex;gap:2px;border-radius:5px;overflow:hidden;height:8px}.stgm .db i{display:block;height:100%}.stgm .dn{display:flex;justify-content:space-between;font-size:10.5px;color:var(--mute);margin-top:3px}.stgm .lb{display:flex;gap:4px 12px;flex-wrap:wrap;margin-top:5px;font-size:10.5px;color:var(--dim)}.stgm .lb i{display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:4px;vertical-align:-1px}.stgm .lb b{font-size:11px}.stgm .lb em{font-style:normal;font-size:9.5px;color:var(--mute);margin-left:3px}.bc .hd a{color:var(--mute);text-decoration:none}.bc .hd a:hover{color:var(--up)}.ppn{font-size:10.5px;color:var(--mute);margin-top:10px}.ppn a{color:var(--dim);text-decoration:none}.ppn a:hover{color:var(--up)}
.lad .cs{display:flex;flex-wrap:wrap;gap:7px;flex:1}
.csw{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
.csw .cs{flex:none}
.lad .cs.clp{max-height:176px;overflow:hidden}
.rll .cs.clp{display:none}
.csmore{align-self:flex-start;font-size:11px;font-weight:600;color:var(--up);background:var(--up-soft);border:0;border-radius:5px;padding:3px 10px;cursor:pointer}.csmore:hover{filter:brightness(1.05)}
.ch{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:6px 9px;cursor:pointer;min-width:0}
.ch .t{display:flex;align-items:center;gap:5px}.ch .t .cr{color:var(--gold);font-size:11px}.ch .t .nm{font-size:13px;font-weight:700}.ch .t .nt{font-size:10px;color:var(--down)}
.ch .t .tm{font-size:10px;color:var(--mute);font-weight:600}.ch .t .tm.early{color:var(--up)}
.ch .cc{font-size:10px;color:var(--mute);margin-top:2px}
.more2{display:flex;align-items:center;font-size:11px;color:var(--mute);padding:0 6px}
/* 人气龙头榜(整行 6 卡) */
.ldr{background:var(--surface);padding:15px 18px;border-top:1px solid var(--border)}
.ldg{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.pmwarn{display:block;margin:0 0 6px;padding:6px 9px;border-radius:7px;font-size:12.5px;background:var(--surface2);border:1px solid var(--border);color:var(--dim)}  /* 采集失败时的不确定标注(2026-09-09): 空名单不许渲染成「暂无」 */
.ldc{display:flex;flex-direction:column;gap:8px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:12px 13px;cursor:pointer}
.ldc .h{display:flex;align-items:center;gap:8px}
.ldc .rk{font-size:19px;font-weight:700;line-height:1}.ldc .nm{font-size:15px;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ldc .sk{font-size:11px;font-weight:700;color:var(--up);background:var(--up-soft);border-radius:4px;padding:1px 6px;align-self:flex-start}
.ldc .cc{font-size:10px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ldc .cg{font-size:11px;font-weight:700;align-self:flex-start}
.st{margin-top:10px;padding:10px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:7px}
.st .l{font-size:11px;color:var(--mute);margin-bottom:8px}
.st .ck{display:flex;flex-wrap:wrap;gap:6px}
.st .ck span{font-size:11px;color:var(--dim);background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:3px 7px;cursor:pointer}
.st .ck span i{color:var(--down);font-style:normal}
/* 日内主线(上证分时+板块异动) */
.mll{background:var(--surface);padding:15px 18px;border-top:1px solid var(--border)}
.mlbox{position:relative;width:100%;overflow:hidden}
.mlab{position:absolute;transform:translateX(-50%);white-space:nowrap;font-size:10px;font-weight:700;color:var(--up);background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;line-height:1.5;cursor:pointer}
.mlab:hover{border-color:var(--up)}
.mdot{cursor:pointer}.mdot:hover{r:5.5}
.mltip{position:absolute;display:none;z-index:20;transform:translateX(-50%);background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:8px 10px;min-width:150px;max-width:240px}
.mltip .h{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.mltip .h b{font-size:13px;font-weight:800}.mltip .h .tm{font-size:11px;color:var(--mute)}
.mltip .r{font-size:11px;color:var(--dim);margin-top:4px}.mltip .rs{font-size:11px;color:var(--mute);margin-top:5px;line-height:1.5;max-height:66px;overflow:auto}
.mltip .lk{color:var(--up);cursor:pointer;font-weight:700}
/* 连板梯队接力 */
.rly{background:var(--surface);padding:15px 18px;border-top:1px solid var(--border)}
.rll{display:flex;flex-direction:column;gap:10px}
.rll .row{display:flex;gap:12px;align-items:flex-start}
.rll .bd{flex:0 0 56px;display:flex;flex-direction:column;align-items:center;padding-top:2px}
.rll .bd .b{font-size:13px;font-weight:700;color:#fff;border-radius:6px;padding:3px 0;width:100%;text-align:center}
.rll .bd .c{font-size:10px;color:var(--mute);margin-top:4px}
.rll .cs{display:flex;flex-wrap:wrap;gap:7px;flex:1}
.rc{display:flex;align-items:center;gap:6px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:5px 9px;cursor:pointer}
.rc.up{border-color:var(--up);background:var(--up-soft)}
.rc .nm{font-size:13px;font-weight:700}.rc .pct{font-size:11px;font-weight:700}
.rc .tg{font-size:10px;font-weight:700;border-radius:3px;padding:0 5px}.rc .tg.up{background:var(--up);color:#fff}
/* 主线强度榜 */
.strs{background:var(--surface);padding:13px 18px;border-top:1px solid var(--border)}
.stg{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(min-width:1200px){.stg{grid-template-columns:repeat(8,1fr);gap:8px}.stc{padding:7px 10px}}   /* 宽屏单行8列, 省一行高度 */
.stc{background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:8px 11px}
.stc .t{display:flex;justify-content:space-between;align-items:baseline;gap:6px;margin-bottom:6px}
.stc .nm{font-size:13px;font-weight:700}.stc .cg{font-size:11px;font-weight:700}
.stc .bar{height:5px;border-radius:3px;background:var(--track);overflow:hidden}
.stc .bar i{display:block;height:100%;background:var(--up);border-radius:3px}
.zxw .stgwrap{border-top:1px dashed var(--border);margin-top:11px;padding-top:9px}
.zxw .stgl{font-size:11.5px;font-weight:700;color:var(--dim);margin-bottom:7px}.zxw .stgl i{font-style:normal;font-weight:400;color:var(--mute);font-size:10.5px;margin-left:8px}
@media(max-width:900px){.stg{grid-template-columns:repeat(2,1fr)}}
/* ≤560 主线强度保持双列紧凑(原单列一条一行太长, 2026-08-06 用户反馈) */
@media(max-width:560px){.stg{grid-template-columns:repeat(2,1fr);gap:7px}.stc{padding:6px 9px}.stc .t .nm{font-size:12px}}
/* 大盘直播 */
.lvl{display:flex;flex-direction:column;gap:8px}
.lvr{display:flex;gap:10px;background:var(--surface2);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;padding:9px 13px}
.lvr.ai{border-left-color:var(--up);background:var(--up-soft)}
.lvr .lt{font-size:11px;color:var(--mute);font-weight:700;flex:0 0 auto;padding-top:1px;white-space:nowrap}
.lvr.ai .lt{color:var(--up)}
.lvr .lx{font-size:13px;color:var(--text);line-height:1.6}
.lvr.ev .lx{font-size:12px;color:var(--dim)}
.pgh .lvdot{font-size:11px;font-weight:700;color:var(--up);white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.pgh .lvdot::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--up);animation:pulse 1.4s infinite}
/* 独立页 页头 */
.pgw{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
.pgh{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,var(--head-a),var(--head-b));flex-wrap:wrap}
.pgh .ti{display:flex;align-items:baseline;gap:9px}.pgh .ti b{font-size:18px;font-weight:800}.pgh .ti small{font-size:12px;color:var(--mute)}
.pgb{padding:14px 18px 20px}
/* 相邻内容块之间给间距: .x 一直没有 margin, 多个块堆在一起是贴死的(站长 2026-07-28:
   "好几个页面类似的间距都太窄")。只给相邻兄弟加, 首块不受影响。 */
.pgb>.x+.x{margin-top:18px}
.pgb>.x+details,.pgb>details+.x,.pgb>details+details{margin-top:18px}
.empty{padding:40px 16px;text-align:center;color:var(--mute);font-size:13px}
/* 游资追踪 */
.yzeval:empty{display:none}
.yzeval{background:var(--up-soft);border:1px solid var(--border);border-radius:9px;padding:11px 14px;margin-bottom:12px}
.yzeval .aih{display:flex;align-items:baseline;gap:8px;margin-bottom:7px}.yzeval .aih .ic{font-size:15px}.yzeval .aih b{font-size:14px;font-weight:800}
.yzeval .aib{font-size:13px;color:var(--dim);line-height:1.8}.yzeval .aib b{color:var(--text)}
.yzl{display:flex;flex-direction:column;gap:9px}
.yr{background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:11px 13px}
.yr .hd{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.yr .yn{font-size:15px;font-weight:800;color:var(--up)}.yr .ym{font-size:11px;color:var(--mute);margin-left:auto}
.yr .tier{font-size:10px;font-weight:800;border-radius:4px;padding:1px 6px;align-self:center}
.yr .tier.top{background:var(--up);color:#fff}.yr .tier.fam{background:var(--warn);color:#fff}.yr .tier.kn{background:var(--cold);color:#fff}.yr .tier.act{background:var(--surface);color:var(--text);border:1px solid var(--border)}.yr .tier.nor{background:var(--surface);color:var(--mute);border:1px solid var(--border)}
.yr .yl{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:5px}
.yr .yl .lb{font-size:10px;font-weight:800;border-radius:4px;padding:1px 6px;flex:0 0 auto}.yr .yl .lb.up{background:var(--up-soft);color:var(--up)}.yr .yl .lb.dn{background:var(--green-soft);color:var(--down)}
.yc{display:inline-flex;align-items:baseline;gap:4px;font-size:12px;font-weight:700;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:4px 8px;cursor:pointer}
.yc:hover{border-color:var(--up)}.yc i{font-size:10px;color:var(--mute);font-weight:600;font-style:normal}
.yc.s{border-color:var(--green-soft)}
.yc em{font-size:10px;font-style:normal;font-weight:600;color:var(--mute);border:1px solid var(--border);border-radius:3px;padding:0 3px;margin-left:2px}  /* 附加榜(三日累计)席位标注 */
/* 龙虎榜 */
.lhb{background:var(--surface);padding:15px 18px 20px;border-top:1px solid var(--border)}
.lhl{display:flex;flex-direction:column;gap:7px}
.lr1{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:9px 12px}
.lr1.hasd{cursor:pointer}
.lr1 .hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lsum{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin-bottom:10px;font-size:12.5px;color:var(--dim)}
.lsum b{color:var(--text)}.lsum .t3 i{font-style:normal;color:var(--text);font-weight:600;cursor:pointer}.lsum .t3 i:hover{color:var(--up)}
.lft{margin:0 0 10px}
/* 榜单按金额口径分组(2026-09-18 站长): 当日榜与多日累计榜混在一起排名次, 等于拿三天的钱
   跟别人一天的钱比大小, 同一只票还会出现两次(今天 55 条里 10 条是累计口径, 5 只票各两行)。 */
.lgh{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin:14px 0 8px;padding-bottom:6px;
 border-bottom:1px solid var(--border)}
.lgh:first-child{margin-top:0}
.lgh b{font-size:14px;font-weight:800;color:var(--text)}
.lgh i{font-style:normal;font-size:11px;color:var(--mute)}
.lgh span{flex:1 1 220px;min-width:0;font-size:11px;color:var(--mute);line-height:1.6}
.bdg{font-size:10px;font-weight:700;border-radius:4px;padding:1px 6px}
.bdg.jg{color:#3a7bd5;background:color-mix(in srgb,#3a7bd5 12%,transparent);border:1px solid color-mix(in srgb,#3a7bd5 40%,transparent)}
.bdg.yzb{color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent);border:1px solid color-mix(in srgb,var(--gold) 40%,transparent)}
.lr1 .cv{font:inherit;font-size:11px;color:var(--dim);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:3px 9px;margin-left:auto;white-space:nowrap;cursor:pointer}
.lr1 .nm{font-size:14px;font-weight:700;cursor:pointer}.lr1 .nm:hover{color:var(--up)}
.lr1 .cd{font-size:11px;color:var(--mute)}.lr1 .cg{font-size:12px;font-weight:700}.lr1 .net{font-size:12px;font-weight:700}
.lr1 .rs{font-size:10px;color:var(--mute);flex:1;min-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lhd{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:9px;padding-top:9px;border-top:1px dashed var(--border)}
.lhd .ch{font-size:10px;color:var(--mute);margin-bottom:5px}
.lhd .se{display:flex;justify-content:space-between;gap:8px;font-size:11px;padding:2px 0}
.lhd .se .sn{color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lhd .se .sv{color:var(--mute);flex:0 0 auto}
.lhd .se.yz .sn{color:var(--up);font-weight:700}
.lhd .se .sn i{font-style:normal;background:var(--up);color:#fff;border-radius:3px;padding:0 3px;font-size:9px;margin-right:3px}
@media(max-width:560px){.lhd{grid-template-columns:1fr}}
/* themes 横向条带卡 */
.th{background:var(--surface);padding:15px 18px 20px;border-top:1px solid var(--border)}
.th .leg{font-size:11px;color:var(--mute);margin:-4px 0 12px}.th .leg b{color:var(--up);font-weight:600}.th .leg .cr{color:var(--gold)}.th .leg em{color:var(--warn);font-style:normal}
.thl{display:flex;flex-direction:column;gap:10px}
.thc{display:flex;gap:14px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:12px 14px}
.thc .L{flex:0 0 158px;border-right:1px solid var(--border);padding-right:12px}
.thc .L .hd{display:flex;align-items:baseline;gap:5px;flex-wrap:wrap}
.thc .L .hd .r{font-size:13px;font-weight:700;color:var(--mute)}.thc .L .hd .nm{font-size:16px;font-weight:800}
.thc .L .n2{margin-top:5px}.thc .L .n2 .b{font-size:13px;font-weight:700;color:#fff;background:var(--up);border-radius:5px;padding:1px 7px}.thc .L .n2 small{font-size:11px;color:var(--mute);margin-left:4px}
.thc .L .ld{font-size:10px;color:var(--mute);margin-top:6px}.thc .L .ld b{color:var(--dim);font-weight:700}
.thc .L .thr{font-size:10.5px;color:var(--dim);line-height:1.55;margin-top:6px;padding-top:5px;border-top:1px dashed var(--border)}
.thc .R{flex:1;display:flex;flex-wrap:wrap;gap:7px;align-content:flex-start}
.tk{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:5px 9px;cursor:pointer}
.tk .r1{display:flex;align-items:center;gap:4px}
.tk .tm{font-size:10px;font-weight:600;color:var(--mute)}.tk .tm.early{color:var(--up)}
.tk .cr{color:var(--gold);font-size:10px}.tk .nm{font-size:12px;font-weight:700}.tk .nt{font-size:9px;color:var(--warn)}
.tk .cc{font-size:10px;color:var(--mute);margin-top:2px}
@media(max-width:560px){.thc{flex-direction:column;gap:9px}.thc .L{flex:none;border-right:0;border-bottom:1px solid var(--border);padding:0 0 9px}}
.ftr{text-align:center;color:var(--mute);font-size:12px;padding:16px 0 4px}.ftr a{color:var(--mute);text-decoration:none}
.daynav{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:18px 0 6px;font-size:12.5px}.daynav .dnc{display:flex;gap:8px;align-items:center}.daynav .dnp{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--border);border-radius:18px;background:var(--surface2);color:var(--dim);text-decoration:none;font:inherit;line-height:1;white-space:nowrap}.daynav a.dnp:hover,.daynav button.dnp:hover{color:var(--up);border-color:var(--up);cursor:pointer}.daynav .dis{opacity:.4}.daynav .dnshare{color:#d4a853;border-color:rgba(212,168,83,.4);cursor:pointer}.daynav .dnshare:hover{color:#e8c37a;border-color:#d4a853}.daynav .dnshare svg{width:13px;height:13px}@media(max-width:520px){.daynav{flex-wrap:wrap;font-size:12px}.daynav .dnp{padding:6px 10px}}
/* tooltip + modal */
#tip{position:fixed;z-index:90;display:none;background:var(--surface);border-radius:10px;box-shadow:var(--shadow);padding:9px 11px;width:300px;font-size:12px;border:1px solid var(--border);color:var(--text)}
#tip .tn{font-weight:700;font-size:14px}#tip .grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px;margin:5px 0}#tip .grid span{color:var(--mute)}
/* ⚠️遮罩类全部用显式四边不用 inset 简写(Chromium<87 不识别): portable版老Chrome上 mask 不满屏
   且点背板关不掉, 叠加 body overflow 锁滚 = "页面卡住不能滑动"(2026-08-26 用户报告)。全站已统一。 */
#mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:none;z-index:100;align-items:flex-start;justify-content:center;padding:20px 10px;overflow:auto;scrollbar-gutter:stable}
#modal{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:100%;max-width:680px;max-height:92vh;overflow:hidden;box-shadow:var(--shadow);position:relative;margin:auto;color:var(--text);display:flex;flex-direction:column}
#modal .mh,#dskp .mh,#dski .mh{flex:0 0 auto;background:var(--surface);border-bottom:1px solid var(--border);padding:14px 16px;border-radius:14px 14px 0 0}
#modal .x,#dskp .x,#dski .x{position:absolute;top:10px;right:12px;width:30px;height:30px;border-radius:50%;background:var(--surface2);border:0;font-size:18px;cursor:pointer;color:var(--dim)}
#modal .mstar,#dskp .mstar,#dski .mstar{position:absolute;top:12px;right:52px;height:28px;padding:0 12px;border-radius:999px;background:var(--up-soft);border:1px solid color-mix(in srgb,var(--up) 35%,transparent);font-size:12.5px;font-weight:700;cursor:pointer;color:var(--up);white-space:nowrap}
#modal .mstar:hover,#dskp .mstar:hover,#dski .mstar:hover{filter:brightness(1.06)}
#modal .mstar.on,#dskp .mstar.on,#dski .mstar.on{color:var(--gold,#f5b942);background:color-mix(in srgb,var(--gold,#f5b942) 12%,transparent);border-color:color-mix(in srgb,var(--gold,#f5b942) 40%,transparent);cursor:pointer}
#modal .mn,#dskp .mn,#dski .mn{font-size:20px;font-weight:700}#modal .mc,#dskp .mc,#dski .mc{color:var(--mute);font-size:14px;margin-left:6px}#modal .mp,#dskp .mp,#dski .mp{font-size:22px;font-weight:700;margin-top:4px;min-height:30px}   /* 定高: setMP异步填价格前空div为0, 曾致切股头部~30px下顶 */
#modal .body,#dskp .body,#dski .body{padding:0;flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable}  /* 永远给滚动条留位(2026-09-08 站长: 左右先缩窄再放宽)。翻页时清掉上一只的战绩 →
     内容变矮 → 滚动条消失 → 内宽变宽; 新数据到 → 滚动条回来 → 又变窄。K线图正好在这个
     容器里, 于是跟着横向抖两下。留位后内宽恒定, 图表宽度不再随内容多少变。
     scrollbar-gutter 是 Chromium 94+, 在我们的下限 109 之上(见 browser-baseline 记忆)。 */
#modal .mfix,#dskp .mfix,#dski .mfix{padding:12px 16px 6px}
#modal .mscroll,#dskp .mscroll,#dski .mscroll{padding:8px 16px 18px}
#modal .grid,#dskp .grid,#dski .grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:12px}
#modal .grid .b,#dskp .grid .b,#dski .grid .b{background:var(--surface2);border-radius:8px;padding:7px 9px}#modal .grid .b span,#dskp .grid .b span,#dski .grid .b span{color:var(--mute);font-size:11px;display:block}#modal .grid .b b,#dskp .grid .b b,#dski .grid .b b{font-size:15px}
#modal .tag,#dskp .tag,#dski .tag{display:inline-block;background:var(--up-soft);color:var(--up);border-radius:6px;padding:2px 8px;font-size:12px;margin:0 4px 4px 0}
#modal .lbl,#dskp .lbl,#dski .lbl{font-weight:700;font-size:13px;margin:12px 0 6px}
#modal .reason,#dskp .reason,#dski .reason{font-size:13px;color:var(--dim);line-height:1.6;white-space:pre-wrap;background:var(--surface2);border-radius:8px;padding:10px 12px}
#modal .matog,#dskp .matog,#dski .matog{display:none;position:absolute;top:6px;left:6px;z-index:5;flex-direction:column;align-items:flex-start;gap:3px;font-size:11px;max-width:62%;pointer-events:none}
#modal .matog .mrow,#dskp .matog .mrow,#dski .matog .mrow{pointer-events:auto;display:inline-flex;align-items:center;gap:5px;padding:1px 7px;border-radius:6px;background:color-mix(in srgb,var(--surface) 80%,transparent);border:1px solid var(--border)}
#modal .matog .mrow i,#dskp .matog .mrow i,#dski .matog .mrow i{width:8px;height:8px;border-radius:2px;display:inline-block}
#modal .matog .mrow b.mv,#dskp .matog .mrow b.mv,#dski .matog .mrow b.mv{font-weight:600;color:var(--dim);min-width:34px}
#modal .matog .mrow em,#dskp .matog .mrow em,#dski .matog .mrow em{font-style:normal;color:var(--mute);cursor:pointer;padding:0 2px}
#modal .matog .mrow em:hover,#dskp .matog .mrow em:hover,#dski .matog .mrow em:hover{color:var(--down)}
#modal .matog .madd,#dskp .matog .madd,#dski .matog .madd{pointer-events:auto;color:var(--cold);cursor:pointer;padding:1px 8px;border:1px dashed var(--border);border-radius:6px;background:color-mix(in srgb,var(--surface) 80%,transparent);user-select:none}
#mamenu .mact.mai{margin:2px 0 0;padding:2px 0 8px;border-top:0;border-bottom:1px solid var(--border);color:var(--gold,#d4a853);font-weight:600}
#mamenu{position:fixed;z-index:260;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.25);padding:8px 12px 10px;min-width:214px;font-size:12px;color:var(--text)}
#mamenu .msec{color:var(--mute);font-size:11px;margin:7px 0 4px}
#mamenu .mps{display:flex;gap:5px;flex-wrap:wrap}
#mamenu .mps b{padding:2px 8px;border-radius:6px;background:var(--surface2);border:1px solid var(--border);cursor:pointer;font-weight:600;user-select:none}
#mamenu .mps b.on{background:var(--up);border-color:transparent;color:#fff}
#mamenu .mact{margin-top:9px;padding-top:8px;border-top:1px solid var(--border);cursor:pointer;color:var(--dim);user-select:none}
#mamenu .mact:hover{color:var(--up)}
/* 移动端(2026-08-06): 触控目标放大。原 .madd 实测只有 157x22px、菜单里的档位按钮约20px高,
   触控建议至少44px —— 手机上很难点准。同时压掉 iOS 在 #kbox 上长按弹出的原生「拷贝/查找」浮窗,
   否则长按出指标菜单的手势会和系统菜单打架(不能靠 touchstart preventDefault, 那会废掉图表平移)。 */
@media(max-width:640px){
#modal #kbox,#dskp #kbox,#dski #kbox{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
#modal .matog .madd,#dskp .matog .madd,#dski .matog .madd{padding:7px 12px}
#modal .matog .mrow,#dskp .matog .mrow,#dski .matog .mrow{padding:5px 9px}
#modal .matog .mrow em,#dskp .matog .mrow em,#dski .matog .mrow em{padding:0 6px}
#mamenu{min-width:246px;padding:10px 14px 12px}
#mamenu .mps{gap:7px}
#mamenu .mps b{padding:7px 13px;font-size:12.5px}
#mamenu .mact{padding-top:11px;padding-bottom:3px}
}
.aucbtn{display:inline-block;font-size:11.5px;padding:1px 9px;border:1px solid var(--border);border-radius:10px;color:var(--mute);cursor:pointer;user-select:none;text-decoration:none}.aucbtn:hover{color:var(--up);border-color:var(--up)}
#modal .ktabs,#dskp .ktabs,#dski .ktabs{display:flex;gap:8px;margin:10px 0 6px}#modal .ktabs b,#dskp .ktabs b,#dski .ktabs b{padding:4px 12px;border-radius:7px;background:var(--surface2);cursor:pointer;font-size:13px;font-weight:500}#modal .ktabs b.on,#dskp .ktabs b.on,#dski .ktabs b.on{background:var(--up);color:#fff}
#modal #kbox,#dskp #kbox,#dski #kbox{width:100%;height:clamp(300px,44vh,440px);border:1px solid var(--border);border-radius:6px;position:relative}
/* 量区刻度(当日最大单分钟量), 贴在右侧价格轴那条上; 位置由 volAx 按绘图面算 */
#kbox .volax{position:absolute;font-size:10px;line-height:1;color:var(--mute);pointer-events:none;z-index:3;white-space:nowrap}
#modal #kbox.ktall,#dskp #kbox.ktall,#dski #kbox.ktall{height:calc(clamp(300px,44vh,440px) + var(--rsh,106px) - var(--tph,0px))}
#modal .kct,#dskp .kct,#dski .kct{position:absolute;top:6px;z-index:6;background:color-mix(in srgb,var(--surface) 90%,transparent);border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:11.5px;line-height:1.75;pointer-events:none;box-shadow:0 4px 16px rgba(0,0,0,.18);min-width:124px;display:none}
#modal .kct,#dskp .kct,#dski .kct{left:6px}#modal .kct.pb,#dskp .kct.pb,#dski .kct.pb{top:auto;bottom:28px}
#modal .kct .kr,#dskp .kct .kr,#dski .kct .kr{display:flex;justify-content:space-between;gap:16px}
#modal .kct .kr span,#dskp .kct .kr span,#dski .kct .kr span{color:var(--mute)}#modal .kct .kr b,#dskp .kct .kr b,#dski .kct .kr b{font-weight:700;font-variant-numeric:tabular-nums}
#modal #rsbox:not(:empty),#dskp #rsbox:not(:empty),#dski #rsbox:not(:empty){width:100%;height:72px;border:1px solid var(--border);border-radius:6px;margin-bottom:6px;overflow:hidden}
#modal #rsleg,#dskp #rsleg,#dski #rsleg{display:none;align-items:center;gap:10px;flex-wrap:wrap;font-size:10.5px;color:var(--mute);padding:2px 2px 5px}
#modal #rsleg b,#dskp #rsleg b,#dski #rsleg b{color:var(--dim);font-size:11px}#modal #rsleg i,#dskp #rsleg i,#dski #rsleg i{font-style:normal}
#modal #rsleg span,#dskp #rsleg span,#dski #rsleg span{display:inline-flex;align-items:center;gap:4px}#modal #rsleg em,#dskp #rsleg em,#dski #rsleg em{width:7px;height:7px;border-radius:50%;display:inline-block}
#modal #kleg,#dskp #kleg,#dski #kleg{font-size:12px;color:var(--dim);height:18px;margin:3px 2px 0}#modal #kleg b,#dskp #kleg b,#dski #kleg b{margin-right:8px}
/* 弹层右栏视角切换条(战绩/龙虎榜/题材 + 完整档案)。粘顶: 龙虎榜视角能到 40 行, 滚下去还要能换视角。 */
.stabs{display:flex;align-items:center;gap:4px;flex-wrap:wrap;position:sticky;top:0;z-index:2;background:var(--surface);padding:2px 0 8px;margin-bottom:2px}
.stabs b{font-size:12.5px;font-weight:700;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:4px 12px;cursor:pointer;user-select:none}
.stabs b.on{background:var(--up);border-color:var(--up);color:#fff}
.stabs b.empty{opacity:.55}
.stabs b i{font-style:normal;font-weight:600;margin-left:5px;opacity:.75;font-size:11px}
/* 快捷键图例只在有键盘的宽屏出(触屏上摆一排按键名徒增困惑, 与 .mnk 同一条规矩) */
.stabs .skk{display:none;font-size:11px;color:var(--mute);margin-left:10px;white-space:nowrap}
.stabs .skk kbd{font-family:inherit;font-size:10px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:1px 4px;margin:0 2px}
@media(min-width:1120px){.stabs .skk{display:inline}}
.stabs .sgu{margin-left:auto;font-size:11.5px;color:var(--mute);text-decoration:none;white-space:nowrap}
.stabs .sgu:hover{color:var(--up)}
.stc{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.stc .gtaglink{text-decoration:none}
@media(min-width:1120px){
:is(#modal,#dskp,#dski):has(.mscroll :is(.grid,.shh,.stabs)){max-width:1080px}
#modal:has(.aucw){max-width:1100px}
:is(#modal,#dskp,#dski):has(.mscroll :is(.grid,.shh,.stabs)) .body{display:flex;flex-direction:row;overflow:hidden}
:is(#modal,#dskp,#dski):has(.mscroll :is(.grid,.shh,.stabs)) .mfix{flex:0 0 680px;min-width:0;overflow-y:auto;border-right:1px solid var(--border)}
:is(#modal,#dskp,#dski):has(.mscroll :is(.grid,.shh,.stabs)) .mscroll{flex:1;min-width:0;overflow-y:auto;padding-top:12px}
}
@media(max-width:640px){
#mask{padding:0;align-items:flex-end}
#modal{max-width:none;width:100%;height:96dvh;max-height:96dvh;border-radius:16px 16px 0 0;border:0;margin:0;will-change:transform;animation:bsup .22s ease-out}   /* 直进弹层后补抽屉同款上滑入场(2026-09-01站长"生硬"); 翻股不重放(display未切换) */
#modal .mh,#dskp .mh,#dski .mh{border-radius:16px 16px 0 0;padding-top:20px;position:relative}
#modal .mh::before{content:"";position:absolute;top:8px;left:50%;transform:translateX(-50%);width:44px;height:5px;border-radius:3px;background:var(--border)}
#modal #kbox,#dskp #kbox,#dski #kbox{height:min(62vw,330px)}
#modal #kbox.ktall,#dskp #kbox.ktall,#dski #kbox.ktall{height:calc(min(62vw,330px) + var(--rsh,106px) - var(--tph,0px))}
#modal .mscroll,#dskp .mscroll,#dski .mscroll{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
}
@media(max-width:900px){.kpi .c{flex:1 1 24%;min-width:96px}.bc,.lr,.thg{grid-template-columns:1fr}.thg{grid-template-columns:repeat(2,1fr)}.fph .rt{width:100%;justify-content:space-between}.ldg{grid-template-columns:repeat(3,1fr)}.fpf{max-height:420px}}
@media(max-width:560px){
/* KPI格移动端3列紧凑(2026-08-06 用户: 第一屏全是格子): 2列19px大数字铺5-6行→3列16px收半屏 */
.kpi .c{flex:1 1 30%;min-width:30%;padding:7px 9px 6px}
.kpi .v{font-size:16px}.kpi .v small{font-size:11px}
.kpi .l{font-size:10px;margin-bottom:1px}
.kpi .ly{font-size:9.5px}
/* 当日主线: 驱动逻辑折1行, 点卡展开(assist.js委托开关); 主力动向双列 */
.zxg{gap:7px;margin-top:8px}
.zxc{padding:8px 10px;cursor:pointer}
.zxc .rs{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;margin-top:4px}
.zxc.open .rs{display:block;-webkit-line-clamp:unset}
.zjf{padding:11px 12px}
.zjfg{grid-template-columns:repeat(2,1fr);gap:10px}
.zjf .zr{font-size:11.5px;gap:5px;padding:3px 0}
.thg{grid-template-columns:1fr}.ldg{grid-template-columns:repeat(2,1fr)}}
.sronly{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.faq{margin:22px 0 10px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* 日页折叠版常见问题: 整块只有一个 details, 不吃两列 grid */
.faqsec{display:block;margin:14px 0 4px}
.faqsec .faqwrap>summary h2{font-size:15px;font-weight:800}
.faqsec .gfq{margin-top:9px}
.faq h2{grid-column:1/-1;font-size:15px;margin:0 0 2px;color:var(--text);display:flex;align-items:center;gap:8px}
.faq h2::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--border),transparent)}
.faq details{border:1px solid var(--border);border-radius:10px;background:var(--surface2);overflow:hidden;transition:border-color .15s;height:fit-content}
.faq details:hover{border-color:var(--dim)}
/* 展开态不再用涨停红描边(2026-08-12 站长反馈"手机上红框非常刺眼"): 红是本站的行情语义色,
   拿它表示"这一条被点开了"既刺眼又误导 —— 而指南详情页每一步都是 <details open>, 整屏红框墙。
   改用中性描边+底色微提亮, 展开态照样看得出来, 不占用行情色。 */
.faq details[open]{background:var(--surface);box-shadow:none}
.faq summary{cursor:pointer;font-weight:700;color:var(--text);font-size:13px;padding:11px 14px;list-style:none;display:flex;align-items:center;gap:10px;line-height:1.5}
.faq summary::-webkit-details-marker{display:none}
/* 折叠标记用箭头而非 +/× (2026-08-12): 原来展开态是 + 旋转45° = 一个 ×, 站长直接读成了关闭按钮
   —— 而指南详情页每一节都是默认展开, 整页排着一列 ×。箭头的语义是方向, 不会有这个歧义。 */
.faq summary::after{content:"";margin-left:auto;flex:none;width:7px;height:7px;margin-top:-4px;
  border-right:1.6px solid var(--mute);border-bottom:1.6px solid var(--mute);
  transform:rotate(45deg);transition:transform .18s}
.faq details[open] summary::after{transform:rotate(-135deg);margin-top:2px;border-color:var(--dim)}
.faq details>div{margin:0 14px;padding:10px 0 12px;border-top:1px dashed var(--border);color:var(--dim);line-height:1.75;font-size:13px}
@media(max-width:700px){.faq{grid-template-columns:1fr}}
/* 单列变体: 内容含宽表格的指南用。双列会把表挤到半宽, 且两列高度参差不齐 */
.faq.one{grid-template-columns:1fr}
.faq.one details{height:auto}
.faq.one table{width:100%}
.faq.one details>div{max-width:none}
/* ===== 玩法指南目录 /guide/ (2026-08-12 重做, 站长手机实拍反馈) =====
   原来直接复用 .faq, 但目录页把每条都渲染成 <details open> —— .faq 的展开态是"红框+红×"
   (那是"用户刚点开这一条"的反馈色), 于是整屏 23 个红框卡片, 手机上刺眼且必须一路长滚。
   目录不是问答, 是导航: 改成分割线列表 —— 无卡片边框、默认全收起、行首 emoji 区分栏目、
   标题低饱和深蓝加粗不带下划线(原来 summary 里的 <a> 没设色, 吃的是浏览器默认蓝/紫)。
   整行可点开(不是只有标题), 手机上命中面积大; 正文链接单独放在展开区里, 不和展开手势打架。 */
.glist{margin:14px 0 4px;border-top:1px solid var(--border)}
.glist details{border-bottom:1px solid var(--border)}
.glist>details>summary{display:flex;align-items:center;gap:11px;cursor:pointer;list-style:none;
  padding:13px 2px;font-size:14.5px;font-weight:700;color:var(--link-strong);line-height:1.5;
  -webkit-tap-highlight-color:transparent}
.glist>details>summary::-webkit-details-marker{display:none}
.glist .gi{flex:none;font-size:16px;line-height:1;width:20px;text-align:center}
/* 折叠指示用几何箭头而非 +/× : 收起时朝下、展开时朝上, 语义是"方向"不是"删除"
   (原来的红 × 被站长直接读成了关闭按钮)。 */
.glist>details>summary::after{content:"";flex:none;margin-left:auto;width:7px;height:7px;
  border-right:1.6px solid var(--mute);border-bottom:1.6px solid var(--mute);
  transform:rotate(45deg);margin-top:-4px;transition:transform .18s}
.glist>details[open]>summary{color:var(--link)}
.glist>details[open]>summary::after{transform:rotate(-135deg);margin-top:2px}
.glist>details>div{padding:0 2px 15px 33px;color:var(--dim);line-height:1.8;font-size:13px}
.glist>details>div .go{display:inline-block;margin-top:9px;font-weight:700;font-size:13px;
  color:var(--link);text-decoration:none}
.glist>details>div .go:hover{text-decoration:underline}
@media(max-width:640px){.glist>details>div{padding-left:31px}}
/* ===== 连板天梯五日对照 /tianti.html (2026-08-12) ===== */
.tti-go{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--link);text-decoration:none;white-space:nowrap}
.tti-go:hover{color:var(--up)}
.tti-tip{font-size:11.5px;color:var(--mute);margin:0 0 7px;padding-left:2px}
/* 同屏入口(2026-09-16): 天梯/日页主线就地把一批票带进多股同屏; 只挂在当日那一列 */
.gsx{float:right;font-size:10.5px;font-weight:600;color:var(--link);text-decoration:none;white-space:nowrap;margin-left:6px}
/* 多股同屏(2026-09-16): 位置固定, 状态靠格子本身的边框与角标表达, 时序靠上方事件条 ——
   盯盘靠的是位置记忆, 每轮重排会把它毁掉。样式放全局: 日页/天梯/直播的弹层同屏与
   /my.html 的整页同屏是同一份实现(GRID_JS), 样式锁在某一页里另一页就是裸的。 */
.gevb{display:flex;gap:6px;align-items:center;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:9px;padding:6px 8px;margin-bottom:8px;font-size:12px;white-space:nowrap}
.gevb .evi{cursor:pointer;border-radius:6px;padding:2px 7px;background:var(--surface2);flex:0 0 auto}
.gevb .evi b{font-weight:600}
.gevb .evi.seal{color:var(--up)}
.gevb .evi.broke{color:var(--mute)}
.gevb .evt{color:var(--mute);flex:0 0 auto}
.ggrid{display:grid;gap:8px}
.gcell{border:1px solid var(--border);border-radius:9px;padding:7px 8px 5px;cursor:pointer;background:var(--surface);position:relative}
.gcell.seal{border-color:var(--up);box-shadow:inset 0 0 0 1px var(--up)}
.gcell.near{border-color:#f5a623}
.gcell.broke{background:var(--surface2);border-style:dashed}
.gcell.flash{animation:gfl 1.2s ease-out 2}
@keyframes gfl{0%,100%{box-shadow:inset 0 0 0 1px transparent}50%{box-shadow:inset 0 0 0 3px #f5a623}}
.gcell .gh{display:flex;align-items:baseline;gap:6px;font-size:13px}
.gcell .gh b{font-weight:600}
.gcell .gh i{font-style:normal;font-size:11px;color:var(--mute)}
.gcell .gh em{font-style:normal;margin-left:auto;font-weight:700}
.gcell canvas{display:block;width:100%;height:78px;margin:4px 0 2px}
.gcell .gf{display:flex;gap:8px;font-size:11px;color:var(--mute);flex-wrap:wrap;align-items:center}
.gcell .tag{border-radius:5px;padding:1px 6px;font-weight:600}
.gcell .tag.s{background:rgba(224,36,27,.12);color:var(--up)}
.gcell .tag.b{background:var(--surface2)}
.gmft{margin-top:10px;font-size:12px}
.gmft a{color:var(--link);text-decoration:none}
@media(max-width:640px){.gcell canvas{height:62px}.gcell .gh{font-size:12.5px}}
/* 题材榜的标题行是 flex 容器, float 在里面不生效(会挤在题材名后面); 用 margin-left:auto 顶到右边。
   那一列只有 158px 宽, 顶不住时让它换行自成一行, 比挤成一坨强。 */
.thc .L .hd .gsx{float:none;margin-left:auto}
/* 梯队接力的档位列只有 56px 宽, 入口放在"N家"下面居中 */
.rll .bd .gsx{float:none;margin:5px 0 0}
.gsx:hover{color:var(--up)}
.ttiw{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.tti{border-collapse:collapse;min-width:100%;font-size:12px}
/* 每个日期列定最小宽(2026-08-27 5→10日后 width:19% 把十列压进视口挤成窄条; 改为列≥158px撑破容器走.ttiw横滚, 列少时min-width:100%仍铺满) */
.tti thead th{min-width:158px}
.tti th,.tti td{border:1px solid var(--border);vertical-align:top;padding:0}
.tti thead th{position:sticky;top:0;z-index:2;background:var(--surface2);padding:7px 9px;text-align:center;font-weight:700}
.tti thead th b{font-size:13px;color:var(--text)}
.tti thead th i{display:block;font-style:normal;font-size:10.5px;color:var(--mute);margin-top:2px;font-weight:400}
/* 板位列吸左: 横向滚动时行头不能滚走, 否则拖到第四天就不知道自己在看几板了 */
.tti .bh{position:sticky;left:0;z-index:3;background:var(--surface2);width:52px;min-width:52px;text-align:center;padding:9px 4px}
.tti thead .bh{z-index:4}
.tti .bh b{font-size:14px;color:var(--text)}
.tti td{min-width:158px;padding:5px 6px}
.tti td .hd{font-size:10.5px;color:var(--mute);padding:1px 2px 5px;border-bottom:1px dashed var(--border);margin-bottom:5px}
.tti td.nil{background:var(--surface2)}
.tti td .hd.nil{opacity:.45;border-bottom:none;margin-bottom:0;padding-bottom:1px}
.tti td .hd .rt{color:var(--up);font-weight:700;margin-left:5px}
.tti-s{padding:4px 5px;border-radius:6px;cursor:pointer;transition:background .12s}
.tti-s+.tti-s{margin-top:3px}
.tti-s .n{font-size:12.5px;font-weight:700;color:var(--text);line-height:1.4}
.tti-s .n a{color:var(--text);text-decoration:none}
.tti-s .n a:hover{color:var(--up)}
.tti-s .m{font-size:10px;color:var(--mute);margin-top:1px}
.tti-s .r{font-size:10.5px;color:var(--dim);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tti-s:hover{background:var(--surface2)}
/* 接力高亮: 描边而非改底色 —— 五天里同一只票分散在不同格, 描边在余光里更好追 */
.tti-s.hl{background:var(--amber-soft);box-shadow:inset 0 0 0 1.5px var(--gold)}
.tti tr[data-h="1"]{display:none}
.tti tr[data-h="1"].open{display:table-row}
.tti-x{margin:9px 0 0;padding:7px 14px;font-size:12.5px;border:1px solid var(--border);border-radius:8px;
  background:var(--surface2);color:var(--dim);cursor:pointer}
.tti-x:hover{border-color:var(--dim);color:var(--text)}
.ttim{display:none}
.tmg{border:1px solid var(--border);border-radius:10px;background:var(--surface);margin-bottom:10px;overflow:hidden}
.tmg .hd{padding:9px 12px;background:var(--surface2);font-size:13px;font-weight:700;color:var(--text)}
.tmg ul{list-style:none;margin:0;padding:0}
.tmg li{display:flex;align-items:baseline;gap:9px;padding:9px 12px;border-top:1px solid var(--border);font-size:13px}
.tmg li b{flex:0 0 auto;font-weight:700}
.tmg li b a{color:var(--text);text-decoration:none}
.tmg li .pth{margin-left:auto;font-size:11px;color:var(--mute);white-space:nowrap}
.tmg li.brk{color:var(--mute);font-size:12px;background:var(--surface2)}
/* 手机不画矩阵: 390px 放不下五列, 拖着看反而更慢。改成接力链列表, 直接回答"有没有接上" */
@media(max-width:820px){.ttiw,.tti-x,.tti-tip{display:none}.ttim{display:block}}
.about{margin:0 0 16px;color:var(--dim);line-height:1.8;font-size:14px}.about p{margin:0}
.about p+p{margin-top:10px}
.bkg{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.bkc{display:flex;flex-direction:column;gap:6px;padding:13px 15px;border:1px solid var(--border);border-radius:9px;text-decoration:none;background:var(--surface2)}
.bkc:hover{border-color:var(--up)}.bkc b{font-size:14px;color:var(--text)}.bkc span{font-size:12px;color:var(--dim);line-height:1.6}
.bkrl{display:flex;flex-wrap:wrap;gap:8px}
.bkr{padding:4px 12px;border:1px solid var(--border);border-radius:999px;font-size:12px;text-decoration:none;color:var(--text);background:var(--surface2)}
.bkr:hover{border-color:var(--up);color:var(--up)}
/* 当日主线卡 + 主线追踪页 */
.zxw{background:var(--surface);padding:14px 18px;border-top:1px solid var(--border)}
.zxw .sec .rt2{margin-left:auto;display:flex;gap:12px;align-items:center;font-size:12px}
.zxw .sec .rt2 a{color:var(--dim);text-decoration:none}.zxw .sec .rt2 a:hover{color:var(--up)}
.zlt,.zlt2{cursor:pointer;font-size:12px;color:var(--gold);white-space:nowrap}.zlt b{font-weight:800}.zlt i,.zlt2 i{margin-left:4px;color:var(--dim);font-style:normal;font-size:11px}
.zxg{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-top:10px}
.zxc{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:10px 12px}
/* 主线卡"涨停N家"成员弹窗(2026-08-25)。⚠️必须放全局: 首版插进@media(max-width:560px), 桌面端裸奔(用户截图) */
.zxn{cursor:pointer;border-bottom:1px dotted var(--mute)}
.zxn:hover{color:var(--up);border-color:var(--up)}
.zmnote{font-size:12px;color:var(--dim);line-height:1.8;background:var(--surface2);border:1px solid var(--border);border-left:3px solid var(--gold);border-radius:8px;padding:9px 12px;margin-bottom:12px}
.zmg{margin:12px 0}
.zmg .zmt{font-style:normal;display:block;font-size:12px;color:var(--mute);font-weight:800;margin-bottom:7px}
.zmg .zmt::before{content:"";display:inline-block;width:3px;height:11px;border-radius:2px;background:var(--up);margin-right:7px;vertical-align:-1px}
.zms{display:flex;flex-wrap:wrap;gap:8px}
.zms .wc{display:inline-flex;gap:7px;align-items:baseline;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;transition:border-color .12s}
.zms .wc:hover{border-color:var(--up);background:color-mix(in srgb,var(--up) 6%,var(--surface2))}
.zms .wc b{color:var(--text);font-size:13px;font-weight:700}
.zms .wc em{font-style:normal;font-size:11px;font-weight:700;color:var(--mute)}
.zms .wc em.md{color:var(--gold)}
.zms .wc em.hi{color:var(--up)}
.zms .wc .wsub{font-style:normal;font-size:10.5px;color:var(--gold);border:1px solid var(--border);border-radius:4px;padding:0 4px;line-height:1.5;white-space:nowrap}
.zmfoot{margin-top:12px;font-size:11px;color:var(--mute)}
.zmfoot a{color:var(--mute);text-decoration:underline dotted}
.zmfoot a:hover{color:var(--up)}
.zxc .r1{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.zxc .r1 b{font-size:14px}
.zxc .n{font-size:11px;color:var(--up);font-weight:700}
.zxc .ld,.mlt .ld{cursor:pointer;font-size:11px;color:var(--gold);white-space:nowrap}.zxc .ld i{font-style:normal;margin-left:3px;color:var(--dim)}
.zxc .rs{margin-top:6px;font-size:12px;color:var(--dim);line-height:1.6}
.cysp{display:flex;align-items:center;gap:8px;margin-top:8px}.cysp span{font-size:10px;color:var(--mute)}
.mtxw{overflow-x:auto}
.rsul{margin:4px 0;padding-left:20px;color:var(--dim);font-size:12.5px;line-height:1.95}
.mtx{border-collapse:collapse;width:100%;font-size:12px;min-width:640px}
.mtx th,.mtx td{padding:6px 8px;text-align:center;border:1px solid var(--border)}
.mtx thead th{color:var(--dim);font-weight:600;font-size:11px}.mtx thead th i{font-style:normal;color:var(--mute)}
.mtx tbody th{text-align:left;font-weight:700;white-space:nowrap;color:var(--text)}
/* 左列固定(2026-09-07 站长: 横滑时题材名要跟着): .mtxw 是横滑容器, 行首 th 与表头角格粘在左边。
   ⚠️ 背景必须是**不透明纯色** —— 用 color-mix/半透明的话滑过去的数字会从底下透出来(.pot 同坑),
   而且 color-mix 在下限 Chromium109 会整条回落 transparent(见 browser-baseline 记忆)。
   分隔线用 box-shadow 不用 border-right: 单元格自身的 border 在 sticky 下会跟着内容滚。 */
.mtx tbody th,.mtx thead th:first-child{position:sticky;left:0;z-index:2;background:var(--surface);
  box-shadow:2px 0 0 var(--border)}
.mtx thead th:first-child{z-index:3}          /* 角格要压在行首与表头之上 */
.mtx tr.cur th{background:var(--surface2)}    /* 当前行高亮时左列跟着变, 否则滑到左边像另一行 */
@media(max-width:560px){.mtx tbody th{max-width:92px;overflow:hidden;text-overflow:ellipsis}}
/* 会员权益表 .prt(/pricing.html): 与题材热度矩阵共用 .mtx, 但这两条要单独定。
   ① 第一列给宽度上限并左对齐表头角格: 表格 width:100% 时富余宽度全落在第一列, 桌面上它独占
      近三成还居中排, 读起来像一列标题而不是一列标签(站长 2026-09-19 指出)。
   ② 窄屏不截断: .mtx 通用规则把行首截到 92px 加省略号, 那是给题材名那种短词用的;
      功能名是这张表的主语, 截了整行就不知道在说什么, 所以放宽上限并允许换行。 */
.mtx.prt thead th:first-child{text-align:left}
.mtx.prt thead th:first-child,.mtx.prt tbody th{width:30%}
@media(max-width:560px){.mtx.prt tbody th{max-width:150px;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.45}}
.mtx td{font-weight:700;color:var(--text);min-width:40px}
/* mfix: 会被追加行的表(趋势中军/一键筛选)固定列宽。table-layout:auto 下新行内容一长,
   浏览器重算列宽, 整张表横向抖一下(站长 2026-07-28 反馈)。只给这几张表加, 不动统计页那批。 */
.mtx.mfix{table-layout:fixed}
.mtx.mfix th,.mtx.mfix td{overflow:hidden;text-overflow:ellipsis}
.mtx.mfix .c-rk{width:44px}
.mtx.mfix .c-nm{width:210px}
.mtx.mfix .c-spk{width:90px}
.mtx.mfix .c-n{width:66px}
.mlt{border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin:0 0 10px;background:var(--surface2)}
.mlt .d{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--dim);margin-bottom:6px}
.mlt .d a{color:var(--text);text-decoration:none}.mlt .d a:hover{color:var(--up)}
.mlt .z{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;padding:4px 0;font-size:13px}
.mlt .z .n{font-size:11px;color:var(--up);font-weight:700}.mlt .z .r{font-size:12px;color:var(--dim);flex:1;min-width:200px}
.stt tbody tr:hover{background:var(--surface2)}.stt .lk{cursor:pointer;font-weight:700}.stt .lk:hover{color:var(--up)}.stt .dim{color:var(--dim);font-size:12px}
/* 统计页组件: KPI卡/双列网格/名次徽章/阶段色点/情绪hero */
.hero4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
@media(max-width:820px){.hero4{grid-template-columns:repeat(2,1fr)}}
.hc{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;position:relative;overflow:hidden}
.hc .v{font-size:21px;font-weight:800;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc .v small{font-size:12px;font-weight:700;color:var(--mute)}
.hc .l{font-size:11px;color:var(--mute);margin-top:3px}
.hc .ic{position:absolute;right:10px;top:8px;font-size:17px;opacity:.35}
.stgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
/* min-width:0 不能省: 栅格项默认 min-width:auto, 撑不住 .mtx 的 min-width 就整体溢出,
   而 .pgw 是 overflow:hidden(圆角裁剪) —— 溢出部分被直接切掉, 连横向滚都滚不到
   (2026-08-10 站长反馈 stats.html 右栏末列被切: 1440 视口下每栏只有 595px, 表格要 640px)。
   双栏里的表列都不多(3~5列), 640 那个下限是给宽表定的, 这里放到 480 就不会挤出滚动条。 */
.stgrid>.x{margin:0;min-width:0}.stgrid>.full{grid-column:1/-1}
.stgrid .mtx{min-width:480px}
/* 断点按**栏宽**倒推而不是拍视口: 视口还要扣掉侧栏144+两处gap+pgb内边距, 双栏各得
   (vw-210)/2; 要让每栏 >=480 就需要 vw>=1200。原来写 1100, 于是 1101~1199 这段双栏
   每栏只有457, 白白挤出一条横向滚动条。 */
@media(max-width:1199px){.stgrid{grid-template-columns:1fr}}
/* 手机上放开 min-width(2026-08-28 用户截图): 单栏时容器只有 324px(390视口), 强撑 480 让表比容器
   宽 156px 必须横滑 —— 而横滑一走"个股"列就滑出视野, 剩下达成日+题材根本不知道说的是哪只股。
   实测放开后 5 张表都正好等于容器宽(324), 一点不用滚; 其中妖股/情绪/月度三张本来就装得下,
   那个 480 对它们纯属白撑。个股列与 mono 列(日期/数字)锁 nowrap 只让题材换行 —— 单行行高不变,
   纪录榜总高反而从 735 降到 548(全换行时每行都被撑成两行)。640 断点=单栏后仍够宽的最小手机档。 */
@media(max-width:640px){.stgrid .mtx{min-width:0}
 .stgrid .stt td.mono,.stgrid .stt tbody td:nth-child(2){white-space:nowrap}}
.rk{display:inline-flex;width:21px;height:21px;border-radius:6px;align-items:center;justify-content:center;font-weight:800;font-size:11px;background:var(--surface2);color:var(--mute)}
.rk.r1{background:color-mix(in srgb,var(--gold) 26%,transparent);color:var(--gold)}
.rk.r2{background:color-mix(in srgb,#9aa7b8 24%,transparent);color:#9aa7b8}
.rk.r3{background:color-mix(in srgb,#c08a5a 24%,transparent);color:#c08a5a}
.phd{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.mtx tr.gsep td{border-top:2px solid var(--border)}
/* 未归类行(2026-08-13): 它不是题材, 是"归不进任何题材"的量。必须和上面各行长得不一样,
   否则用户会把它当成一个叫"未归类"的题材, 比不显示还糟。上边框分隔 + 灰字 + 不参与热度配色。 */
.mtx tr.mucl th,.mtx tr.mucl td{border-top:2px solid var(--border);background:transparent}
.mtx tr.mucl th{color:var(--mute);font-weight:600;cursor:help}
.mtx tr.mtot th,.mtx tr.mtot td{border-bottom:2px solid var(--border)}
.mtx tr.mtot th{cursor:help}
/* 矩阵格子可点看成员(2026-08-26 Clarity死点击整改): 有值的格子给手型+悬停描边 */
.mtx tbody tr:not(.mucl):not(.mtot) td:not(:empty){cursor:pointer}
.mtx tbody tr:not(.mucl):not(.mtot) td:not(:empty):hover{outline:1px solid var(--up);outline-offset:-1px}
.mtx tr.mucl td{color:var(--mute);font-weight:600}
.mtx td.mhot{outline:1.5px solid var(--warn);outline-offset:-1.5px;cursor:help}
.mtx td .mhf{font-style:normal;font-size:8px;vertical-align:super;margin-left:1px}
.qhero{display:flex;flex-wrap:wrap;gap:14px 26px;align-items:center;padding:16px 18px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(135deg,var(--surface2),transparent);margin-bottom:14px}
.qhero .qp{font-size:26px;font-weight:800;letter-spacing:2px}
.qhero .qk{font-size:12.5px;color:var(--dim);margin-top:2px}.qhero .qk b{font-size:15px}
.qhero .chips{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto;max-width:52%}
@media(max-width:820px){.qhero .chips{margin-left:0;max-width:100%}}
.qhero .ch{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:5px 12px;font-size:12px;color:var(--dim);white-space:nowrap}
.qhero .ch b{font-weight:800}
.qcyc{display:flex;gap:4px;margin-top:9px;flex-wrap:wrap}
.qcyc i{font-style:normal;font-size:10.5px;font-weight:700;color:var(--mute);border:1px solid var(--border);border-radius:6px;padding:3px 8px}
.qcyc i.on{color:#fff;border-color:transparent}
.dskbn{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12.5px;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:9px 13px;margin-bottom:12px}
.dskbn b{color:var(--gold)}.dskbn kbd{font:inherit;font-size:10.5px;background:var(--surface);border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;padding:1px 5px}
.dskbn a{color:var(--dim)}
.dsk{display:flex;gap:12px;align-items:stretch;height:calc(100dvh - 130px);min-height:520px}
.dsk.gate{height:auto;min-height:0;padding:26px 0 10px}
.dskl{flex:0 0 300px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}
@media(min-width:901px){.dsk .dtabs{display:none}}
.dgqw{position:relative;padding:8px 8px 0}
.dgqw input{width:100%;font:inherit;font-size:13px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:7px 10px;color:var(--text)}
.dgqw input:focus{outline:none;border-color:var(--up)}
#dgqr{position:absolute;left:8px;right:8px;top:calc(100% + 4px);z-index:80;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);max-height:320px;overflow:auto;display:none}
#dgqr .gi{display:flex;gap:8px;align-items:center;padding:8px 11px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--border)}
#dgqr .gi:last-child{border-bottom:0}
#dgqr .gi:hover{background:var(--surface2)}
#dgqr .gi .cd{color:var(--mute);font-size:11.5px}
.dtabs{display:flex;gap:4px;padding:8px;border-bottom:1px solid var(--border)}
.dtabs b{flex:1;text-align:center;padding:6px 0;border-radius:7px;font-size:12px;font-weight:700;color:var(--mute);cursor:pointer;background:var(--surface2)}
.dtabs b.on{background:var(--up-soft);color:var(--up)}
.dlist{flex:1;overflow-y:auto;padding:6px}

.scrb{flex:none;border-bottom:1px solid var(--border);padding:8px;display:flex;flex-direction:column;gap:6px;max-height:46%;overflow-y:auto}
.scrb .srow{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:11.5px;color:var(--dim)}
.scrb select,.scrb input{font:inherit;font-size:11.5px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;color:var(--text);padding:4px 6px;outline:none;max-width:100%}
.scrb #stpl{flex:1;min-width:0}
.scrb button{font:inherit;font-size:11px;font-weight:700;background:var(--surface2);border:1px solid var(--border);border-radius:7px;color:var(--dim);padding:4px 9px;cursor:pointer}
.scrb button:hover{color:var(--up);border-color:var(--up)}
.scrb .scond{display:flex;gap:5px;align-items:center}
.scrb .scond .sf{flex:1;min-width:0}
.scrb .scond .so{width:52px}
.scrb .scond .sv{width:64px}
.scrb .scond .sb{font-size:11px;color:var(--up);font-weight:700}
.scrb .scond .sx{cursor:pointer;color:var(--mute);font-weight:400;padding:0 3px}
.scrb .scond .sx:hover{color:var(--up)}
.scrb #stname{flex:1;min-width:60px}
/* 模板选择: 右侧长抽屉(桌面) / 底部抽屉(手机), 星标收藏置顶 */
#stplbg{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:470}
#stplpop{position:fixed;top:0;right:0;bottom:0;width:min(400px,94vw);z-index:471;background:var(--surface);border-left:1px solid var(--border);box-shadow:-14px 0 40px rgba(0,0,0,.4);padding:14px;display:flex;flex-direction:column;gap:9px}
#stplpop .tph{display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:800}
#stplpop .tph i{font-style:normal;cursor:pointer;color:var(--mute);font-size:18px;padding:2px 8px}
#stplpop .tph i:hover{color:var(--up)}
#stplpop input{width:100%}
#stplpop .tpbody{display:flex;gap:10px;flex:1;min-height:0}
#stplpop .tpc{flex:0 0 118px;overflow-y:auto;display:flex;flex-direction:column;gap:3px;border-right:1px solid var(--border);padding-right:8px}
#stplpop .tpc b{font-size:12px;font-weight:700;color:var(--dim);padding:9px 8px;border-radius:8px;cursor:pointer;display:flex;justify-content:space-between;gap:4px}
#stplpop .tpc b i{font-style:normal;color:var(--mute);font-weight:400}
#stplpop .tpc b.on,#stplpop .tpc b:hover{background:var(--up-soft);color:var(--up)}
#stplpop .tpl2{flex:1;overflow-y:auto}
#stplpop .tpi{font-size:13px;padding:10px;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:6px}
#stplpop .tpi span{flex:1}
#stplpop .tpi i{font-style:normal;font-size:10px;color:var(--mute);margin-left:6px}
#stplpop .tpi .tf{font-style:normal;color:var(--mute);padding:0 3px;font-size:15px;text-decoration:none}
#stplpop .tpi .tf.on,#stplpop .tpi .tf:hover{color:var(--gold)}
#stplpop .tpi:hover,#stplpop .tpi.on{background:var(--up-soft);color:var(--up)}
#stplpop .tpe{font-size:11px;color:var(--mute);padding:14px}
#stplpop .tpf{font-size:10.5px;color:var(--mute)}
@media(max-width:640px){#stplpop{top:auto;left:0;width:auto;height:82dvh;border-left:0;border-top:1px solid var(--border);border-radius:16px 16px 0 0}}
.side .dsub{padding-left:24px;font-size:12px}
.dsit{display:flex;gap:5px}
.dsit b{font-size:11.5px;font-weight:700;color:var(--mute);background:var(--surface2);border-radius:7px;padding:4px 10px;cursor:pointer}
.dsit b.on{background:var(--up-soft);color:var(--up)}
#dzhan{padding:2px 8px 14px}
.dski{flex:0 0 300px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow-y:auto;display:none;flex-direction:column}
.dski .dsih{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:800;color:var(--dim);padding:11px 14px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:1}
.dski .dsih i{font-style:normal;cursor:pointer;color:var(--mute);font-size:15px;padding:0 4px}
.mh .pinfob{position:absolute;top:12px;right:118px;height:28px;padding:0 10px;border-radius:999px;background:var(--surface2);border:1px solid var(--border);font-size:13px;cursor:pointer;color:var(--dim)}
#dskiop{display:none;user-select:none;flex:0 0 24px;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;font-size:12px;color:var(--mute);writing-mode:vertical-rl;letter-spacing:3px;padding:12px 0}
#dskiop:hover{color:var(--up);border-color:var(--up)}
@media(min-width:1380px){.dski{display:flex}.dski.clp{display:none}.mh .pinfob{display:none}}
@media(max-width:1379px){.dski.on{display:flex;position:fixed;right:0;top:0;bottom:0;width:min(340px,92vw);z-index:500;border-radius:0;box-shadow:-14px 0 34px rgba(0,0,0,.45)}}
.ptabs{display:flex;gap:6px;padding:8px 16px 0}
.ptabs b{font-size:12px;font-weight:700;color:var(--mute);background:var(--surface2);border-radius:8px;padding:5px 14px;cursor:pointer}
.ptabs b.on{background:var(--up-soft);color:var(--up)}
#dinfo{padding:4px 16px 18px}
.askgate{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:12px 14px}.askgate b{display:block;font-size:13.5px;margin-bottom:6px}.askgate ul{margin:0 0 10px;padding-left:18px;font-size:12px;color:var(--dim);line-height:1.9}.askgate .gbtn{display:inline-block;background:var(--warn);border:1px solid var(--warn);color:#fff;font-size:12.5px;font-weight:700;border-radius:8px;padding:7px 16px;text-decoration:none}.kchips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 2px}
.kchips span{font-size:11px;font-weight:700;color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent);border:1px solid color-mix(in srgb,var(--gold) 35%,transparent);border-radius:999px;padding:3px 10px}
.kph{font-size:11px;font-weight:800;color:var(--mute);margin:14px 0 7px}
.kpg{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:7px}
.kpc{background:var(--surface2);border-radius:9px;padding:8px 10px}
.kpc small{display:block;font-size:10px;color:var(--mute);margin-bottom:2px}
.kpc b{font-size:14px;font-variant-numeric:tabular-nums}
.kpx{font-size:12px;color:var(--dim);line-height:1.7}
.kpn{font-size:10.5px;color:var(--mute);margin-top:14px}
#scmb{display:none}
@media(max-width:900px){#scmb{display:inline-block}
#scradv{display:none}#scradv.on{display:block}
.dskbn kbd{display:none}.dskbn{font-size:11.5px}}
.scrb .shits{font-size:11px;color:var(--mute)}
.scrb .shits b{color:var(--up)}
.scrb .shits select{font-size:10.5px;padding:2px 4px}
/* 工作台分组标题(2026-09-22 SVIP 客户反馈"题材最好加粗或加框凸显"): 左侧红条 + 浅底 + 加粗, 家数用小字。
   吸顶时要不透明底, 用 surface2(两套主题都是实色), 不用带透明度的颜色。 */
.dgh{font-size:13px;font-weight:800;color:var(--text);padding:7px 10px;margin:10px 0 4px;position:sticky;top:0;
  background:var(--surface2);border-left:3px solid var(--up);border-radius:0 6px 6px 0;z-index:1}
.dgh:first-child{margin-top:2px}
.dgh small{color:var(--mute);font-weight:600;font-size:11.5px;margin-left:8px}
.dmyq{padding:4px 4px 8px}
.dmyq input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);font:inherit;font-size:12.5px;padding:7px 10px;outline:none;box-sizing:border-box}
.dmyq input:focus{border-color:var(--red)}
.dlr{display:flex;align-items:center;gap:7px;padding:7px 6px;border-bottom:1px dashed var(--border);cursor:pointer;font-size:12.5px}
.dlr .cd{color:var(--mute);font-size:10.5px}
.dlr .mstar{margin-left:auto;flex:none;font-size:10.5px;padding:3px 8px;border-radius:7px;border:1px solid var(--border);background:var(--surface2);color:var(--dim);cursor:pointer}
.dlr .mstar.on{color:var(--gold);border-color:var(--gold)}
.dli{padding:7px 9px;border-radius:8px;cursor:pointer;margin-bottom:1px}
.dli:hover{background:var(--surface2)}
.dli.on{background:var(--up-soft);outline:1px solid color-mix(in srgb,var(--up) 40%,transparent)}
.dli .r1{display:flex;align-items:center;gap:6px;font-size:13px}
.dli .r1 b{font-weight:700}
/* 自选行内移除按钮(2026-08-11): 平时淡, 悬停整行才显眼 —— 常驻高对比的×容易误点。
   margin-left:auto 顶到行尾; 触摸目标 22px 见方, 比纯文字×好点。 */
.dli .wdel{margin-left:auto;flex:none;width:22px;height:22px;line-height:1;border:0;border-radius:6px;
 background:transparent;color:var(--mute);font-size:15px;cursor:pointer;opacity:.45;padding:0}
.dli:hover .wdel{opacity:1}
.dli .wdel:hover{background:var(--up-soft);color:var(--up)}
.dli .wdel:disabled{opacity:.3;cursor:default}
/* 自选星标的未登录提示态: 比 confirm 弹窗可靠(移动端/App内置浏览器弹窗常被忽略或误触) */
.mstar.needlg{color:var(--gold)!important;border-color:var(--gold)!important;
 background:var(--amber-soft)!important;cursor:pointer}
/* 自选三件套(2026-09-23 客户): 行内涨跌幅 / 拖动排序 / 复制代码 */
.dli .wpc{margin-left:auto;flex:none;font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;
 color:var(--mute);min-width:52px;text-align:right}
.dli .wpc.up{color:var(--up)}.dli .wpc.dn{color:var(--down)}
.wli .wdel{margin-left:2px}
.wli{touch-action:pan-y}
/* 抬起的那一行: 跟着手指走的浮起卡片(position 由 JS 设), 阴影+轻微放大做出"离开列表"的手感 */
.wli.wdrag{background:var(--surface2);box-shadow:0 12px 28px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.4);
 border:1px solid var(--up);cursor:grabbing;transform:scale(1.03)}
/* 占位: 抬起后原地留的槽, 其它行滑过来时对着它让位。要一眼看出"这行会落在这里" */
.wph{border-radius:8px;margin-bottom:1px;border:1px dashed var(--up);opacity:.55;
 background:var(--up-soft);box-sizing:border-box}
.wbar{display:flex;align-items:center;gap:8px;padding:0 3px 6px;flex-wrap:nowrap}
.wbar button{font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:7px;border:1px solid var(--border);
 background:var(--surface2);color:var(--dim);cursor:pointer}
.wbar button:hover{color:var(--up);border-color:var(--up)}
/* 提示与行情时间同处一行: 提示可被压缩(超长省略), 时间固定不被挤走 —— 原先 wrap 会把时间顶到下一行 */
.wbar .wmsg{font-size:11px;color:var(--mute);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wbar .wmsg.ok{color:var(--up)}
.wbar .wts{margin-left:auto;flex:none;font-size:10px;color:var(--mute);white-space:nowrap}
.wbar button{flex:none}
/* 拖动期间禁止选中: 只挂在拖动这段时间, 平时还能选中股票名复制 */
body.wdragging{user-select:none;-webkit-user-select:none}
body.wdragging .wli{-webkit-touch-callout:none}
.wbar .wfall{width:100%;height:70px;margin-top:4px;font-size:12px;font-family:ui-monospace,monospace;
 border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--fg);padding:4px}
.dli .lb,.dmeta .lb{font-style:normal;font-size:9.5px;font-weight:800;color:#fff;background:var(--up);border-radius:4px;padding:1px 5px}
.dli .tm{margin-left:auto;font-size:10px;color:var(--mute)}
.dli .r2{font-size:10.5px;color:var(--mute);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.djr{display:none;flex:none;border-top:1px solid var(--border);padding:9px;flex-direction:column;gap:6px}
.dskl.jmode .djr{display:flex;flex:1;border-top:0}
.dskl.jmode .djr textarea{min-height:130px;flex:1}
.dskl.jmode .dlist{display:none}
.djr .jh{font-size:11.5px;font-weight:800;color:var(--dim);display:flex;gap:8px;align-items:center}
.djr .jh i{font-style:normal;font-size:10.5px;color:var(--up)}
.djr .jprev{font-size:10.5px;color:var(--mute);line-height:1.6;max-height:52px;overflow-y:auto}
.djr textarea{font:inherit;font-size:11.5px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:6px 8px;outline:none;resize:vertical}
.djr button{font:inherit;font-size:11.5px;font-weight:700;background:var(--up-soft);color:var(--up);border:none;border-radius:8px;padding:6px;cursor:pointer}
.pll{display:flex;flex-direction:column;gap:5px;max-height:32%;overflow-y:auto}
.plc{background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:7px 9px}
.plc .r1{display:flex;gap:6px;align-items:center;font-size:12.5px}
.plc .r1 b{font-weight:700}
.plc .r1 i{font-style:normal;font-size:10px;color:var(--gold)}
.plc .ops{margin-left:auto;display:flex;gap:6px}
.plc .ops em{font-style:normal;font-size:10.5px;color:var(--mute);cursor:pointer;border:1px solid var(--border);border-radius:6px;padding:1px 7px}
.plc .ops em:hover{color:var(--up);border-color:var(--up)}
.plc .r2{font-size:10.5px;color:var(--mute);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.poimp input{width:100%;font:inherit;font-size:12.5px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:8px 9px;outline:none}
.djr .jnav{display:flex;gap:6px;align-items:center}
.djr .jnav input{flex:1;font:inherit;font-size:11.5px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;color:var(--text);padding:4px 7px;outline:none}
.djr .jnav button{flex:none;background:var(--surface2);color:var(--dim);padding:4px 10px}
.djr .jhl{overflow-y:auto;display:flex;flex-direction:column;gap:1px;margin-top:4px}
.djr .jhh{font-size:10.5px;font-weight:800;color:var(--mute);padding:6px 2px 4px}
.djr .jhi{display:flex;gap:8px;align-items:baseline;padding:6px 7px;border-radius:7px;cursor:pointer;font-size:11.5px}
.djr .jhi:hover{background:var(--surface2)}
.djr .jhi b{flex:none;font-size:10.5px;color:var(--dim)}
.djr .jhi span{color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dskl.jmode .djr textarea{min-height:96px;flex:none}
.dskl.jmode .djr .jhl{flex:1}
.dskr{flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow-y:auto;display:flex;flex-direction:column;position:relative}
/* 工作台的图吃掉面板剩余高度(2026-09-16 站长截图两次: "打开竞价后底下时间轴没了")。
   .dsk 是视口高布局(100dvh-130px), 图却按固定 clamp+--rsh 给高 —— 视口一矮, 图上方的
   名称/标签/简介/财报/周期按钮/控件行把图顶下去, 底部时间轴被滚动区裁掉。实测 1440×800
   时图底超出滚动区 54px, 720 高时超出 99px(时间轴才 28px)。加高卡片救不了: 卡片已经顶到视口。
   改为让 #kbox 在面板里 flex 伸缩, 上限仍是原来的高度, 下限 240px。 */
@media(min-width:901px){
 #dskp .body{display:flex;flex-direction:column}
 /* .mfix 正好占满可视区(不是按内容, 也不是被下面的战绩挤到最小), 图吃掉其中的剩余高度;
    战绩接在下面, 往下滚才出现 —— 这正是盯盘时想要的: 图永远完整, 其余往下翻。 */
 #dskp .body>.mfix{flex:0 0 auto;height:100%;min-height:0;display:flex;flex-direction:column}
 #dskp .body>.mscroll{flex:0 0 auto}
 #dskp #kbox,#dskp #kbox.ktall{flex:1 1 auto;height:auto;min-height:240px}
}
#dskp .mstar{right:14px}
.dskr .dske{margin:auto;text-align:center;color:var(--mute);font-size:14px;line-height:2.2}
.dskr .dmeta{padding:4px 18px 0;font-size:12px;color:var(--dim);display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.dskr .dmeta i{font-style:normal;color:var(--mute)}
/* 完整涨停原因(2026-08-15): 默认两行, 点一下展开。不默认全展开 —— 中位 235 字、最长 576,
   全铺开会把 K 线顶到屏幕外, 而这块是"想看再看"的补充信息, 不是主视图。
   line-clamp 需要 display:-webkit-box 配合(Chromium 109 起就有, 在兼容下限内)。 */
.dskr .drsn{margin:5px 18px 0;font-size:11.5px;line-height:1.75;color:var(--dim);cursor:pointer;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dskr .drsn.on{display:block;-webkit-line-clamp:unset;max-height:34vh;overflow:auto}
.dskr .drsn:hover{color:var(--text)}
@media(max-width:900px){.dsk{flex-direction:column;height:auto}.dskl{flex:none;max-height:none}
.dsk>.dskr{display:none}   /* K线区默认不占屏; 搬进#bsheet抽屉后脱离.dsk恢复显示 */
.dgqw{display:none}.dgqw.on{display:block}
.dtabs .dsq{flex:0 0 44px}}
#bsheet .dskr{border:0;box-shadow:none;height:74dvh;border-radius:0}   /* 定高: RS图/战绩行异步到达在内部滚动, 抽屉弹出即终态高度不跳变 */
/* 抽屉骨架填充: 弹出即见框架, 数据到达原位替换(仅#bsheet内生效, 桌面弹层不动) */
@keyframes skmv{from{background-position:-160px 0}to{background-position:160px 0}}
#bsheet #kbox:empty{background:linear-gradient(90deg,var(--surface2) 30%,color-mix(in srgb,var(--surface2) 55%,var(--surface)) 50%,var(--surface2) 70%);background-size:320px 100%;animation:skmv 1.1s linear infinite;border-radius:6px}
#bsheet #rsbox:not(:empty){height:72px;border:1px solid var(--border);border-radius:6px;margin-bottom:6px;background:var(--surface2);overflow:hidden}
#bsheet #rsbox:not(:empty){background:transparent}
#bsheet .mfix:has(#kbox.ktall) #rsbox,#bsheet .mfix.ktp #rsbox{display:none}   /* 分时/分钟周期无RS图, 槽位收起。.ktp 是 :has() 的等价写法, 见 chart_load */
#bsheet #stkearn:empty{min-height:20px;border-radius:5px;background:var(--surface2);margin:2px 0 4px}
/* 持仓行(2026-08-15 曾为 grid 定列宽; 2026-08-18 改成 sticky 名称列 + 横滑表格 .pot, 见下) */
.por{cursor:pointer;font-size:12.5px}
.por .del{font-size:12px;color:var(--mute);cursor:pointer;text-align:center}
.por .del:hover{color:var(--up)}
.posum{font-size:11px;color:var(--dim);padding:8px 9px;display:flex;gap:12px}
/* 持仓表 v2(2026-08-18): 名称列 sticky 固定, 其余字段横滑(用户反馈要全字段, 窄列塞不下)。
   .pow 是唯一滚动容器; sticky 单元格必须有不透明背景否则滑过去的数字会透出来。 */
.pow{overflow-x:auto;-webkit-overflow-scrolling:touch;border-top:1px solid var(--border)}
.pot{border-collapse:separate;border-spacing:0;font-size:12px;white-space:nowrap;min-width:100%}
.pot th,.pot td{padding:7px 8px;text-align:right;border-bottom:1px solid var(--border)}
.pot th{font-size:10px;font-weight:600;color:var(--mute);padding:5px 8px}
.pot th.nm,.pot td.nm{position:sticky;left:0;z-index:1;text-align:left;background:var(--surface);max-width:88px;box-shadow:2px 0 0 var(--border)}
.pot td.nm b{display:block;overflow:hidden;text-overflow:ellipsis;font-weight:700}
.pot tr.por:hover td{background:var(--surface2)}
.pot td.dl{padding:0 6px 0 2px;text-align:center}
.pot .up{color:var(--up)}.pot .dn{color:var(--down)}
.poph{display:flex;gap:4px;align-items:center;padding:6px 9px 4px;font-size:11px}
.poph b{padding:2px 9px;border:1px solid var(--border);border-radius:9px;color:var(--dim);cursor:pointer;font-weight:600;white-space:nowrap;flex:none}
.poph b.on{border-color:var(--gold);color:var(--gold)}
.poph b.na{opacity:.45}
.poph small{margin-left:auto;color:var(--mute);font-size:10px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.ponote{font-size:10px;color:var(--mute);padding:6px 9px;line-height:1.5}
/* 盯守回执的专属块。**必须是块级、不能塞进 .posum 那个 flex 行** —— 长句子当 flex item
   会被挤成一列竖字(2026-08-15 移动端实拍)。空内容时不占位。 */
.pomsg{font-size:11px;line-height:1.7;color:var(--dim);padding:0 9px;word-break:break-word}
.pomsg:not(:empty){padding:5px 9px}
.pobtn{display:flex;gap:7px;padding:8px}
.pobtn button{flex:1;font:inherit;font-size:12px;font-weight:700;background:var(--up-soft);color:var(--up);border:none;border-radius:8px;padding:8px;cursor:pointer}
.poimp textarea{width:100%;font:inherit;font-size:12.5px;background:var(--surface2);border:1px solid var(--border);border-radius:9px;color:var(--text);padding:9px;min-height:110px;outline:none}
.poimp .pa{display:flex;gap:8px;margin-top:9px}
.poimp .pa button{flex:1;font:inherit;font-size:13px;font-weight:700;border:none;border-radius:9px;padding:10px;cursor:pointer;background:var(--up);color:#fff}
.poimp .pa button.sec{background:var(--surface2);color:var(--dim);border:1px solid var(--border)}
.poimp table{width:100%;border-collapse:collapse;margin-top:9px;font-size:12px}
.poimp td,.poimp th{padding:5px 4px;border-bottom:1px solid var(--border);text-align:left}
.poimp input{width:100%;font:inherit;font-size:12px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:4px 6px;outline:none}
.poimp .pn{font-size:10.5px;color:var(--mute);margin-top:8px;line-height:1.7}
.mye{padding:34px 16px;text-align:center;color:var(--dim);font-size:13.5px;line-height:2.2;background:var(--surface2);border:1px dashed var(--border);border-radius:12px}
.myb{display:inline-block;margin-top:6px;background:var(--up);color:#fff;font-weight:700;font-size:13px;padding:8px 18px;border-radius:9px;text-decoration:none}
.myr{display:grid;grid-template-columns:1fr 90px 84px 84px 60px;gap:8px;align-items:center;padding:11px 12px;border-bottom:1px solid var(--border);cursor:pointer;font-size:13.5px}
.myr:hover{background:var(--surface2)}
.myr.myh{cursor:default;font-size:11px;color:var(--mute);padding:6px 12px}.myr.myh:hover{background:none}
.myr .n{font-weight:700}.myr .dimc{color:var(--mute);font-size:12px}
.myr .pc.up{color:var(--up)}.myr .pc.dn{color:var(--down)}
.myr .del{font:inherit;font-size:11px;background:none;border:1px solid var(--border);border-radius:7px;color:var(--mute);padding:4px 9px;cursor:pointer}
.myr .del:hover{color:var(--up);border-color:var(--up)}
@media(max-width:640px){.myr{grid-template-columns:1fr 72px 72px 52px}.myr .dimc{display:none}}
@media(max-width:640px){.mtxw{position:relative}.mtxw::after{content:'';position:absolute;top:0;right:0;bottom:0;width:26px;background:linear-gradient(90deg,transparent,var(--surface));pointer-events:none}.mtxw::before{content:'← 左右滑动 →';position:absolute;right:6px;top:-16px;font-size:9.5px;color:var(--mute)}}
.inwl{position:relative}
.inwl::after{content:'★';position:absolute;top:-4px;right:-2px;font-size:9px;color:var(--gold)}
.aiask{font:inherit;font-size:10.5px;font-weight:700;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:3px 10px;cursor:pointer;margin-left:8px;vertical-align:1px}
.aiask:hover{color:#f4703f;border-color:#f4703f}
/* 种子问题按钮(2026-07-28): 按钮文案就是它能回答的问题 —— "问AI"三个字让人以为是通用聊天框,
   而人人都有 ChatGPT; 印出问题, 按钮自己就是 demo。只给日页四个高价值板块, 密度再高会变牛皮癣。 */
.aiask.hot{font-size:11.5px;color:#c0410f;background:rgba(244,112,63,.10);border-color:rgba(244,112,63,.42);padding:4px 12px;margin-left:auto}
.aiask.hot:hover{background:rgba(244,112,63,.18);color:#a83509}
/* 交叉钩子: 日页→选股器。印的是今天算出来的结论(N只连板股同时进趋势模板), 不是入口广告 */
.cxlink{display:flex;align-items:center;gap:12px;flex-wrap:wrap;text-decoration:none;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:13px 15px;margin:10px 0 0}
.cxlink:hover{border-color:var(--warn)}
.cxlink .cx-ico{font-size:19px;flex:none}
.cxlink .cx-tx{flex:1;min-width:190px;display:flex;flex-direction:column;gap:3px}
.cxlink .cx-tx b{font-size:13.5px;font-weight:750}
.cxlink .cx-tx i{font-style:normal;font-size:11.5px;color:var(--mute);line-height:1.6}
.cxlink .cx-go{font-size:12.5px;font-weight:700;color:var(--warn);white-space:nowrap;flex:none}
/* 快讯选股入口: 挂在实时快讯框底部 */
.nhook{display:flex;flex-direction:column;align-items:flex-start;gap:5px;width:100%;text-align:left;font:inherit;cursor:pointer;background:var(--surface2);border:1px solid var(--border);border-top:0;border-radius:0 0 10px 10px;padding:11px 13px;color:inherit}
.nhook:hover{background:rgba(244,112,63,.07);border-color:rgba(244,112,63,.35)}
.nhook b{font-size:13px;font-weight:800}
.nhook small{font-size:10.5px;font-weight:700;color:#c0410f;background:rgba(244,112,63,.10);border-radius:999px;padding:2px 8px;margin-left:7px}
.nhook i{font-style:normal;font-size:11.5px;color:var(--mute);line-height:1.6}
/* "这不是通用聊天机器人": 全站只在日页尾出现一次 */
.whatis{background:var(--surface);border:1px solid var(--border);border-left:3px solid #f4703f;border-radius:10px;padding:13px 15px;margin:12px 0 0}
.whatis>b{display:block;font-size:13.5px;font-weight:800;margin-bottom:5px}
.whatis p{margin:0;font-size:12.5px;color:var(--mute);line-height:1.72}
.whatis p em{font-style:normal;font-weight:700;color:#c0410f}
.whatis .wa-b{font:inherit;font-size:12px;font-weight:700;margin-top:10px;cursor:pointer;color:#c0410f;background:rgba(244,112,63,.10);border:1px solid rgba(244,112,63,.42);border-radius:999px;padding:5px 13px}
.whatis .wa-b:hover{background:rgba(244,112,63,.18)}
/* 日页分级的墙卡(2026-07-29): 上方当日结构始终公开, 这里说明墙内是什么、怎么拿到 */
.gatewall{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--warn);border-radius:11px;padding:18px 16px;margin:12px 0}
.gatewall>b{display:block;font-size:15px;font-weight:800}
.gatewall p{margin:6px 0 0;font-size:12.5px;color:var(--mute);line-height:1.7;max-width:52ch}
.gatewall .gw-tip{color:var(--dim)}
.gatewall .gw-act{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}
/* 会员受限提示卡(2026-09-16): lbGate 全站唯一的一份弹卡样式 */
.lbgate{position:fixed;inset:0;z-index:9500;background:rgba(8,10,16,.55);display:flex;align-items:center;justify-content:center}
.lbgate .c{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px 20px;max-width:min(92vw,380px);text-align:center}
.lbgate .c b{display:block;font-size:16px;margin-bottom:6px}
.lbgate .c p{color:var(--mute);font-size:13px;margin:0 0 14px}
.lbgate .x{position:absolute;right:12px;top:8px;cursor:pointer;color:var(--mute);font-size:18px}
.lbgate .rgb{display:inline-block;margin:0 6px;padding:8px 14px;border-radius:9px;background:#e0241b;color:#fff;text-decoration:none}
.lbgate .rgb.sec{background:transparent;border:1px solid var(--border);color:var(--text,#1a2030)}
/* 购买页(2026-09-16): 档位/周期单选组、应付摘要、订单卡, 与上面 lbgate 弹卡同一视觉语言 */
.btier,.bper{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}
.btier label,.bper label{display:flex;align-items:center;gap:6px;font-size:13px;padding:7px 14px;
  border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text,#1a2030);cursor:pointer}
.btier label.on,.bper label.on{border-color:var(--warn);color:var(--warn);background:rgba(224,36,27,.06)}
.btier label.off{opacity:.45;cursor:not-allowed}   /* 已是 SVIP 时 VIP 选项不可选(降级不出售) */
.btier input,.bper input{accent-color:var(--warn)}
.bsum{margin:14px 0 16px;font-size:14px;color:var(--text,#1a2030)}
.bsum b{font-size:27px;font-weight:800;margin:0 2px}
.bsum i{font-style:normal;font-size:11.5px;color:var(--mute);background:var(--surface2);border-radius:999px;padding:2px 9px;margin-left:8px}
.bord{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px 18px;text-align:center;max-width:360px}
.bord b{display:block;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:20px;letter-spacing:1px;margin-bottom:8px}
.bord p{color:var(--mute);font-size:12.5px;line-height:1.7;margin:8px 0}
.bord img{margin:10px 0;border-radius:8px}
/* 日页注册收口 */
.rgend{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:16px;margin:12px 0 0}
.rgend>b{display:block;font-size:15px;font-weight:800}
.rgend p{margin:5px 0 9px;font-size:12.5px;color:var(--mute)}
.rgp{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-wrap:wrap;gap:5px 16px}
.rgp li{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--dim)}
.rgp li::before{content:"";width:13px;height:13px;flex:none;border-radius:50%;background:var(--green);opacity:.16;box-shadow:inset 0 0 0 1.5px var(--green)}
.rgb{display:inline-block;font:inherit;font-size:12.5px;font-weight:700;text-decoration:none;color:#fff;background:var(--warn);border:1px solid var(--warn);border-radius:8px;padding:7px 16px;cursor:pointer}
.rgb:hover{filter:brightness(.94)}
/* 次要按钮(2026-09-16 购买页"关闭订单"等场景需要, 与 .lbgate .rgb.sec 同一视觉语言但供 lbgate 弹层外使用)。
   .rgb 此前只用在 <a> 上; 这里补 font:inherit/cursor:pointer 是因为购买页第一次把它用在 <button> 上,
   不补的话会带上浏览器默认按钮字体(同本文件其它 xx button{font:inherit} 一贯做法, 如 .tgl/.qtabs button)。 */
.rgb.sec{background:transparent;color:var(--text,#1a2030);border:1px solid var(--border)}
:root[data-theme="dark"] .aiask.hot,:root[data-theme="dark"] .whatis p em,:root[data-theme="dark"] .whatis .wa-b,:root[data-theme="dark"] .nhook small{color:#ffa37a}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .aiask.hot,:root:not([data-theme="light"]) .whatis p em,:root:not([data-theme="light"]) .whatis .wa-b,:root:not([data-theme="light"]) .nhook small{color:#ffa37a}}
.mth{display:none;font-style:normal;color:var(--up)}
@media(max-width:640px){.mth{display:inline}.mtapx tbody th::after{content:' \203A';color:var(--mute)}}
.qstripw{position:relative;overflow-x:auto;padding:4px 2px;-webkit-overflow-scrolling:touch}
.qphs{position:relative;height:15px;min-width:max-content}
.qphs i{position:absolute;top:0;font-style:normal;font-size:10px;font-weight:800;white-space:nowrap}
.qstrip{display:flex;align-items:flex-end;gap:2px;height:88px;min-width:max-content;position:relative}
.qstrip .q50{position:absolute;left:0;right:0;bottom:50%;border-top:1px dashed color-mix(in srgb,var(--mute) 45%,transparent);pointer-events:none}
.sec .qsr{margin-left:auto;font-size:12px;font-weight:700;color:var(--dim);white-space:nowrap}
.qstrip .qb{display:block;flex:0 0 7px;min-height:4px;border-radius:2px 2px 0 0}   /* 原来这里有 opacity:.88 —— 每根柱子都往背景色拉 12%, 六个阶段色本来就挨得近, 再统一淡化等于主动削弱区分度。去掉是白赚的对比度(2026-08-17)。hover 的强调改用 outline 已够。 */
.qstrip .qb:hover{opacity:1;outline:1px solid var(--text)}
.qstrip .qb.mh{border-left:1px solid var(--mute);border-radius:0 2px 0 0}
.qmons{position:relative;height:14px;min-width:max-content}
.qmons i{position:absolute;top:0;font-style:normal;font-size:9.5px;color:var(--mute);white-space:nowrap}
.qlgd{display:flex;gap:5px 14px;flex-wrap:wrap;margin-top:8px;font-size:11px;color:var(--dim)}
.qlgd i{display:inline-block;width:12px;height:10px;border-radius:2px;margin-right:5px}   /* 8×8 太小, 六色对照时图例本身就看不清 */
.qtabs{display:flex;gap:8px;margin:2px 0 10px;flex-wrap:wrap}
.qtabs button{font:inherit;font-size:12px;font-weight:700;background:var(--surface2);color:var(--dim);border:1px solid var(--border);border-radius:999px;padding:5px 14px;cursor:pointer}
.qtabs button i{font-style:normal;font-size:10px;color:var(--mute);margin-left:3px}
.qtabs button.on{background:var(--up-soft);color:var(--up);border-color:color-mix(in srgb,var(--up) 40%,var(--border))}
.qtabs button.on i{color:inherit;opacity:.75}
.wk .wkb{font-size:13px;color:var(--dim);line-height:1.9;padding:4px 0 8px}.wk .wkb b{color:var(--text)}
.yr .yn{cursor:pointer}.yr .yn:hover{color:var(--up)}
.lvday{display:flex;align-items:center;gap:12px;margin:16px 0 8px;color:var(--dim);font-size:12px;font-weight:700}
.lvday::before,.lvday::after{content:"";flex:1;height:1px;background:var(--border)}
.lvday:first-child{margin-top:2px}
.dpk{display:inline-flex;gap:5px;align-items:center}
.dbtn{font:inherit;font-size:11px;background:var(--surface);color:var(--dim);border:1px solid var(--border);border-radius:6px;padding:3px 8px;cursor:pointer}
.dbtn:hover:not(:disabled){color:var(--up);border-color:var(--up)}.dbtn:disabled{opacity:.35;cursor:default}
.dinp{font:inherit;font-size:12px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:2px 6px;cursor:pointer;color-scheme:dark}
html[data-theme="light"] .dinp{color-scheme:light}
.aucw{background:linear-gradient(90deg,color-mix(in srgb,var(--gold) 9%,var(--surface)),var(--surface) 72%);padding:12px 16px;border:1px solid color-mix(in srgb,var(--gold) 32%,var(--border));border-left:3px solid var(--gold);border-radius:10px;margin-bottom:12px}
.aucw:hover{border-color:color-mix(in srgb,var(--gold) 55%,var(--border));border-left-color:var(--gold)}
.aucd summary{display:flex;gap:10px;align-items:baseline;cursor:pointer;list-style:none;flex-wrap:wrap}
.aucd summary::-webkit-details-marker{display:none}
.aucd .rdot{width:8px;height:8px;border-radius:50%;background:var(--gold);animation:pulse 1.5s infinite;flex:none;align-self:center}
.aucd .sec2 b{font-size:14.5px;font-weight:800}.aucd .sec2 small{font-size:10px;color:var(--mute);margin-left:6px}
.aucd .s1{font-size:13px;font-weight:800;color:var(--gold)}
.aucd summary>b,.aucd summary b{font-size:13px}
.aucd .s2{font-size:11px;color:var(--dim)}
.aucd .tgl2{margin-left:auto;font-size:11px;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 40%,var(--border));border-radius:999px;padding:2px 10px;white-space:nowrap}
.aucd[open] .tgl2{display:none}
.aunote{margin-top:8px;font-size:10px;color:var(--mute)}
.bigl{font-size:10px;color:var(--gold);font-weight:800;white-space:nowrap}
.aurow{display:flex;gap:12px;align-items:flex-start;margin-top:10px}
.aurow .bd{flex:0 0 108px}.aurow .bd b{font-size:12.5px}.aurow .bd small{display:block;font-size:10px;color:var(--mute)}
.aurow .cs{display:flex;flex-wrap:wrap;gap:8px;flex:1}
.auc{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:7px 11px;cursor:pointer;min-width:150px}
.auc:hover{border-color:var(--up)}
.auc.hot{border-color:var(--gold);box-shadow:0 2px 10px rgba(217,164,65,.15)}
.auc.risk{opacity:.85;border-style:dashed}
.auc .r1{display:flex;gap:8px;align-items:baseline}.auc .r1 b{font-size:13px}
.auc .gp{font-size:12px;font-weight:800}.auc .m{font-size:11px;color:var(--dim)}
.auc .r2{display:flex;gap:6px;align-items:baseline;margin-top:3px;flex-wrap:wrap}
.auc .hd2{font-size:10px;color:var(--gold)}.auc .rr{font-size:11px;color:var(--dim)}
.auc .fs{font-size:10px;color:var(--mute);margin-left:auto}
/* 雷达进弹窗: 弹窗自带标题, 去卡片壳与summary; 板块名占整行避免挤压 */
#modal .aucw{background:none;border:0;border-radius:0;padding:0;margin:0}
#modal .aucd>summary{display:none}
#modal .aurow{flex-direction:column;gap:7px;margin-top:14px;padding-top:11px;border-top:1px dashed var(--border)}
#modal .aurow:first-of-type{margin-top:2px;padding-top:0;border-top:0}
#modal .aurow .bd{flex:none;display:flex;gap:8px;align-items:baseline}
#modal .aurow .bd small{display:inline}
#modal .auc{min-width:230px;flex:1 1 30%}
#modal .mh .mback{height:28px;padding:0 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface2);color:var(--dim);font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap;margin-right:8px;vertical-align:middle}
#modal .mh .mback:hover{color:var(--up);border-color:var(--up)}
/* 个股战绩(弹层内 + 查询页) */
#stkhis{padding:0 16px 14px}
.shh{font-size:12px;color:var(--dim);margin:12px 0 6px;font-weight:700}#stkearn{font-size:11.5px;color:var(--mute);line-height:1.8;padding:0 2px 6px}#stkearn b{color:var(--gold)}#stkearn i{font-style:normal;opacity:.5}.shh b{color:var(--up)}.shh i{font-style:normal;color:var(--mute);font-weight:400;margin-left:4px}
.shl{display:flex;flex-direction:column;gap:3px;max-height:220px;overflow-y:auto}
/* 题材页 · 成员近30日涨停矩阵(借竞品「卡位高低切」的展示形态, 不带判断)。
   ⚠️ 格子只有三态(涨停/跌停/普通), 不做涨跌幅色阶 —— 本仓库后复权价是加法偏移,
   用它算日涨跌幅会错(kpl_pages.py:7270; 蓝帆医疗真实+9.96%被算成+7.51%)。 */
.kmw{margin:6px 0 2px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.kmh,.kmr{display:flex;align-items:center;gap:2px;white-space:nowrap}
.kmr{padding:1px 0;cursor:pointer;border-radius:4px}
.kmr:hover{background:var(--surface2)}
.kmh b,.kmr b{flex:0 0 86px;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.kmh em,.kmr em{flex:0 0 24px;font-style:normal;font-size:11px;color:var(--mute);text-align:right;padding-right:4px}
/* 格子撑满可用宽度: flex:1 1 15px + min-width 15px —— 宽屏均分铺满(封顶 34px 免得稀疏),
   窄屏收到 15px 后整行溢出, 由 .kmw 的 overflow-x 横滚。
   ⚠️ 原来写 min-width:max-content 把整行钉死在内容宽度(约 546px), PC 上只占了一半(站长发现)。 */
.kmh i,.kmr u{flex:1 1 15px;min-width:15px;max-width:34px}
.kmh i{font-style:normal;font-size:9px;color:var(--mute);text-align:center;
  transform:scaleX(.85);letter-spacing:-.5px}
.kmh i.mS{color:var(--dim);font-weight:700}
.kmr u{height:17px;border-radius:2px;background:var(--track);text-decoration:none;
  font-size:10px;line-height:17px;text-align:center;color:transparent}
.kmr u.z{background:var(--gold);color:#fff;font-weight:700}
.kmr u.d{background:var(--cold)}
.kmn{font-size:11px;color:var(--mute);margin:2px 0 8px;line-height:1.7}
.ncw{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 2px}
.nck{flex:1 1 108px;padding:7px 10px;border-radius:7px;background:var(--surface2);
  border:1px solid var(--border);text-align:center}
.nck b{display:block;font-size:15px;font-weight:700;color:var(--txt);line-height:1.5}
.nck span{font-size:11px;color:var(--mute)}
/* 席位页「跟买后续表现」脚注: 口径说明必须和数字一样显眼, 不能做成小字免责声明 */
.gfn{font-size:12px;color:var(--dim);line-height:1.85;margin:8px 0 2px;
  padding:9px 11px;border-radius:7px;background:var(--surface2);border:1px solid var(--border)}
.gfn b{color:var(--txt)}
.tt td.dim{color:var(--mute)}
@media(max-width:520px){.kmh b,.kmr b{flex:0 0 58px;font-size:11px}
  .kmh,.kmr{min-width:max-content}}   /* 手机: 钉回内容宽度, 靠横滚看全 30 列 */
.shr{display:flex;gap:10px;align-items:baseline;font-size:12px;padding:3px 0;border-bottom:1px dashed var(--border)}
.shr .d{color:var(--mute);flex:0 0 60px}.shr .b{color:var(--gold);font-weight:700;flex:0 0 64px}.shr .r{color:var(--dim);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 涨停原因正文: 默认收起, 点行展开。
   ⚠️ 用 max-height 不用 grid-template-rows:0fr —— 兼容下限是 Chromium 109(Win7 Edge/微信内置),
   老内核不认 0fr 会把整条声明丢掉, 那样 20 行正文会全部展开, 比没有过渡糟得多。
   ⚠️ 也不用 display:none + JS 写 '' 切换(踩过两次, 会回落到样式表的 none), 这里只切 class。 */
.shr.ex{flex-wrap:wrap;cursor:pointer}
.shr.ex .r{color:var(--txt)}
.shr .shx{font-style:normal;opacity:.45;margin-left:5px;font-size:10px}
.shr.on .shx{opacity:.85}
/* 主力买点自己的一行: #kleg 是十字光标读数区(mousemove 重写 innerHTML + 死高度 18px),
   按钮放进去会被擦掉也装不下, 所以另起一个容器跟在它后面。 */
#ktape{margin:2px 2px 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#ktape:empty{display:none}
.tpz{display:block;flex:0 0 100%;margin-top:2px;font-size:11px;color:var(--mute);line-height:1.7}
.tpz b.up{color:var(--up)}.tpz b.dn{color:var(--down)}
.tpz i{font-style:normal;opacity:.8}
.tpb{appearance:none;border:1px solid var(--border);background:var(--surface2);color:var(--dim);
 border-radius:999px;padding:2px 10px;font-size:11px;cursor:pointer;line-height:1.6}
.tpb:hover{color:var(--txt);border-color:var(--dim)}
.tpb.on{background:var(--up);border-color:var(--up);color:#fff;font-weight:700}
.tpz b.lk{color:var(--gold)}
/* 门卡塞进 .tpz 里: .tpz 本身是 11px 灰字, 门卡要自己把字号与颜色立起来, 否则又变成小字。 */
.tpz .plock{display:flex;width:100%;margin:6px 0 2px;font-size:12.5px;color:var(--dim)}
.tpz .plock b{font-size:13.5px;color:var(--txt);flex:0 0 auto}
.tpz .plock>span{flex:1 1 150px;min-width:120px;color:var(--mute);line-height:1.65}
.tpz .plock .plkb{text-decoration:none}
/* 手机上 #ktape 贴着抽屉底部, 门卡一高 CTA 就被挤出屏幕 —— 与最初"空框顶掉按钮"同一个坑。
   窄屏收紧留白并让说明与标题同行, 控制在两行内。 */
@media(max-width:560px){
 .tpz .plock{padding:9px 11px;gap:6px 8px}
 .tpz .plock b{font-size:13px}
 .tpz .plock>span{flex:1 1 100%;font-size:12px;line-height:1.55}
 .tpz .plock .plkb{padding:6px 12px}
}
.tpz a{color:var(--up);text-decoration:underline}
.shr .shd{flex:0 0 100%;max-height:0;overflow:hidden;transition:max-height .18s ease;
  font-size:11.5px;line-height:1.75;color:var(--mute);padding-left:70px}
.shr.on .shd{max-height:340px;margin-top:4px;padding-bottom:2px;overflow-y:auto}
/* 展开时让战绩列表长一点。:has() 是 Chrome 105+, 兼容下限 109 之上; 老内核不认时整条规则
   被忽略, 列表仍是 220px 加滚动 —— 是降级不是坏掉。 */
.shl:has(.shr.on){max-height:520px}
@media(max-width:520px){.shr .shd{padding-left:0}}
/* 战绩页两栏(2026-09-20): 窄屏仍是单列, 宽屏右侧给个股速览。
   右栏 sticky: 左边滚一长串列表时, 右边这块要一直看得见。 */
.skw{display:block}
@media(min-width:1024px){.skw{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:18px;align-items:start}
 .skp{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto}}
@media(max-width:1023px){.skp{display:none}}
.skp{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:14px 16px}
.pvh{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}
.pvh b{font-size:16px;font-weight:800}.pvh span{font-size:12px;color:var(--mute)}
.pvn{font-size:12.5px;color:var(--mute);padding:10px 0}
.pvs{font-size:12.5px;color:var(--dim);margin-bottom:6px}
.pvs b{font-size:15px;color:var(--text);margin:0 2px}
.pvs i{font-style:normal;font-size:11px;color:var(--mute);margin-left:6px}
.pbars{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.pb{display:flex;align-items:center;gap:6px}
.pb .y{font-size:11px;color:var(--mute);flex:0 0 32px}
.pb i{height:9px;border-radius:3px;min-width:2px}
.pb i.up{background:var(--up)}.pb i.lh{background:var(--warn)}
.pb b{font-size:11px;color:var(--dim);font-weight:600}
.pvl{display:flex;align-items:baseline;gap:6px;font-size:12px;color:var(--mute);margin-top:6px;flex-wrap:wrap}
.pvl b{color:var(--text);font-size:12px}
.pvl em{font-style:normal;font-size:11px;color:var(--dim)}
.pvl em.up{color:var(--up)}.pvl em.dn{color:var(--green,#0a8a55)}
.pvr{font-size:11.5px;color:var(--dim);line-height:1.5;margin-top:2px}
.pvt{display:flex;flex-wrap:wrap;gap:5px}
.pvt .gtaglink{text-decoration:none}
.pva{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:14px;padding-top:10px;border-top:1px solid var(--border)}
.pva a{font-size:12px;color:var(--mute);text-decoration:none}.pva a:hover{color:var(--up)}
.pva .pvk{font:inherit;font-size:12px;color:#fff;background:var(--up);border:0;border-radius:8px;padding:5px 12px;cursor:pointer}
.skr.sel{border-color:var(--up)}
.skl{display:flex;flex-direction:column;gap:6px}
.skt{font-size:12px;color:var(--mute);margin-bottom:4px}
.skr{display:flex;gap:12px;align-items:baseline;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:9px 14px;cursor:pointer}
.skr:hover{border-color:var(--up)}.skr b{font-size:14px}.skr .cd{color:var(--mute);font-size:12px}.skr .m{font-size:12px;color:var(--dim)}
.onln{font-size:11px;color:var(--dim);font-weight:600;margin-left:2px;white-space:nowrap}.onln b{color:var(--up);font-weight:800}
.ulog{font-size:12px;font-weight:700;color:var(--dim);text-decoration:none;border:1px solid var(--border);border-radius:999px;padding:4px 12px;margin-left:8px;white-space:nowrap}.ulog:hover{color:var(--up);border-color:var(--up)}.ulog.on{color:var(--up);border-color:var(--up)}
.pmbanner{background:var(--up-soft);border:1px solid var(--border);border-left:3px solid var(--up);border-radius:8px;padding:11px 15px;margin:14px 0 4px;font-size:13px;color:var(--text);line-height:1.6}.pmbanner b{color:var(--up)}
/* 早盘情报四步卡(盘前页) */
.pmcard{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin:10px 0}
.pmcard>.sec{margin-bottom:2px}
.pms{display:flex;gap:10px;padding:9px 0;border-top:1px dashed var(--border)}
.pmcard .pms:nth-of-type(1){border-top:0}
.pms .no{flex:none;width:22px;height:22px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:var(--gold)}
.pms .bd{min-width:0;flex:1}
.pms .bd>b{font-size:13px}
.pms .bd>i{font-style:normal;font-size:11px;color:var(--mute);margin-left:6px}
.pmc{font-size:12.5px;color:var(--dim);margin-top:4px;line-height:1.9}
/* 要闻行的首发时间(2026-08-13 用户反馈"快讯没有完整时间"): 定宽等宽体, 让多行时间对齐成一列,
   眼睛能顺着扫下来判断"哪些是收盘后才出的新消息"。 */
/* 弹层翻页(上一只/下一只)。2026-08-15 站长: "占用太多空间了 而且不清晰 用户可能不明白是什么"。
   原先是 .body 顶部一条居中的独立行 —— 在本就拥挤的弹层里白吃掉一整行, 而"8/62"没交代是什么的 8/62。
   (顶上那句注释当初就写的是"放在标题行右侧", 实现走偏了, 这次归位。)
   改法: 挪进价格行右侧的空白区(那里本来一片空), 零额外行高; 文案改成"第8/62只", 配合箭头
   自解释为"第几只、共几只"。 */
.mprow{display:flex;align-items:center;gap:10px}
#modal .swapdim{opacity:.32;transition:opacity .12s}
/* 翻页时旧内容压暗待换(见 openModalLite): 比清空后塌陷再弹回稳得多。
   ⚠️ 2026-09-08 教训: 这条原来叫 .ldg —— 撞上了人气龙头榜的网格容器(kpl_gen 的 class="ldg"),
   我的规则写在后面就赢了, 整块龙头榜被按到 32% 透明发出去了。加类名前必须先 grep 全仓,
   且弹层专用的规则一律带 #modal 前缀圈住作用域, 光靠改名不够。 */
.mnav{display:flex;align-items:center;gap:6px;margin-left:auto;flex:none}
.mnp,.gnp{width:26px;height:26px;border:1px solid var(--border);background:var(--surface2);color:var(--dim);
  border-radius:7px;font-size:15px;line-height:1;cursor:pointer;padding:0}
.mnp:hover:not(:disabled),.gnp:hover:not(:disabled){border-color:var(--dim);color:var(--text)}
.mnp:disabled,.gnp:disabled{opacity:.35;cursor:default}
.mno{font-style:normal;font-size:10.5px;color:var(--mute);min-width:46px;text-align:center;line-height:1.2}
/* 键盘提示: 只给宽屏(有键盘才有意义, 触屏上摆一对方向键只会让人以为是能点的按钮)。 */
.mnk{font-size:9.5px;color:var(--mute);border:1px solid var(--border);border-radius:4px;
  padding:0 4px;line-height:1.6;font-family:inherit;letter-spacing:.06em;cursor:help}
@media(max-width:640px){.mnk{display:none}}
/* 底部抽屉(移动端点个股先出的那层)保持原来的独立居中行: 抽屉是短卡片, 竖向不紧张,
   而它的标题行已经被 名称/代码/价格 占满, 硬塞会挤成两行。 */
.bss .mnav{justify-content:center;margin:8px 0 0;padding-top:8px;border-top:1px dashed var(--border)}
.pmr .tm{color:var(--mute);font-size:11px;margin-right:6px;flex:none}
.pmr em{font-style:normal;color:var(--gold);font-size:11px;border:1px solid var(--border);border-radius:4px;padding:0 4px;margin-left:5px}
.pmr .g{font-style:normal;color:var(--up);background:var(--up-soft);border:1px solid var(--border);border-radius:4px;font-size:10.5px;padding:0 4px;margin-right:5px}
.pmi{display:inline-flex;gap:5px;margin-right:14px}.pmi b{font-weight:600;font-size:12px;color:var(--dim)}.pmi em{font-style:normal;font-weight:700}
.pmc .nlk{color:inherit;text-decoration:none;border-bottom:1px dotted var(--mute)}
.pmc .nlk:hover{color:var(--up);border-bottom-color:var(--up)}
.pmrk{font-style:normal;font-size:10.5px;color:var(--gold);white-space:nowrap;margin-left:2px}
/* 交易日历 /calendar.html */
.calx{font-size:12.5px;color:var(--dim);line-height:1.9;background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:10px 13px;margin:2px 0 12px}
.calx b{color:var(--text)}
.cald{border-top:1px dashed var(--border);padding:10px 2px}
.cald.today{background:color-mix(in srgb,var(--gold) 6%,transparent);border-radius:9px;padding:10px 10px}
.cdh{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.cdh b{font-size:15px;font-family:var(--mono),monospace}.cdh i{font-style:normal;font-size:11.5px;color:var(--mute)}
.cnav{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:2px 0 10px;margin-bottom:2px}
.cnb{flex:none;font:inherit;font-size:12.5px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:7px 12px;color:var(--dim);cursor:pointer;min-height:34px}
.cnb:hover{border-color:var(--gold);color:var(--gold)}
.cnb.nav{padding:7px 10px;font-size:11px}
.cnb.on{border-color:var(--gold);color:var(--gold);background:color-mix(in srgb,var(--gold) 10%,var(--surface2))}
.cdsel{font:inherit;font-size:13px;font-weight:700;background:var(--surface);color:var(--text);border:1px solid var(--gold);border-radius:8px;padding:7px 10px;min-height:34px;cursor:pointer}
/* 日历三视图(日/周/月, 布局借鉴金十) */
.cvt{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:10px}
.cvb{font:inherit;font-size:13.5px;font-weight:700;background:none;border:0;border-bottom:2px solid transparent;padding:7px 14px;color:var(--mute);cursor:pointer}
.cvb.on{color:var(--gold);border-bottom-color:var(--gold)}
.cvp.off,.wkw.off,.mgw.off{display:none}
.cvlab{font-size:13.5px;font-weight:700;color:var(--text);min-width:120px;text-align:center}
.cnb[disabled]{opacity:.35;cursor:default}
.wkh{font-size:13px;font-weight:700;color:var(--dim);margin:2px 0 8px}
.wkt{width:100%;border-collapse:collapse;font-size:12.5px}
.wkt th{font-size:11px;color:var(--mute);text-align:left;padding:5px 8px;border-bottom:1px solid var(--border)}
.wkt td{vertical-align:top;padding:7px 8px;border-bottom:1px solid var(--border)}
.wkt td:first-child{width:74px;white-space:nowrap}
.wkt th:nth-child(2),.wkt td:nth-child(2){width:44%}
.wkd b{font-size:13px;font-family:var(--mono),monospace}.wkd i{font-style:normal;font-size:11px;color:var(--mute);margin-left:4px}
.wkd .cbadge{display:block;margin:3px 0 0;text-align:center}
.wke{display:flex;gap:6px;align-items:baseline;padding:3px 6px;border-radius:6px;color:var(--dim);margin-bottom:2px}
.wke .ct{flex:none;font-size:10.5px;color:var(--mute);min-width:32px}
.wke b{font-weight:600;font-size:12px}
.wke u{text-decoration:none;font-size:10.5px;color:var(--gold);margin-left:4px}
.wke.g3{background:color-mix(in srgb,var(--gold) 8%,transparent);border-left:2px solid var(--gold)}
.wke.g3 b{color:var(--text);font-weight:700}
.wke.s{cursor:pointer;background:var(--surface2)}
.wke.s:hover{border-color:var(--gold)}
/* 月历网格 */
.mgh{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;font-size:11px;color:var(--mute);text-align:center;padding-bottom:4px}
.mgg{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.mgc{background:var(--surface);min-height:78px;padding:5px 6px;font-size:11px;cursor:pointer}
.mgc.pad,.mgc.past{background:var(--surface2);cursor:default}
.mgc.today{background:color-mix(in srgb,var(--gold) 9%,var(--surface))}
.mgd{font-family:var(--mono),monospace;font-size:12px;font-weight:700;color:var(--dim)}
.mgt{font-style:normal;font-size:10px;color:var(--gold);margin-left:3px}
.mgi{display:block;margin-top:3px;padding:1px 4px;border-radius:4px;background:var(--surface2);color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10.5px}
.mgi.g3{background:color-mix(in srgb,var(--gold) 14%,transparent);color:var(--text);font-weight:600}
.mgi.s{background:color-mix(in srgb,var(--up) 8%,transparent)}
.mgm{display:block;margin-top:3px;font-size:10px;color:var(--mute);text-decoration:none}
.mgn{display:none}
.mgk{display:none}
/* 个股事件按类型分组 */
.csg{display:flex;gap:9px;align-items:baseline;padding:5px 0}
.csgl{flex:none;width:82px;font-size:12px;color:var(--dim);font-weight:700}
.csgl b{font-weight:600;color:var(--mute);font-size:11px;margin-left:4px}
.csgc{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.cbadge{margin-left:auto;font-size:11px;color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent);border-radius:999px;padding:2px 9px}
.cml{margin:2px 0 8px}
/* 宏观每条一行: 时间|星级|事件|题材链; 三星整行高亮(原来横排挤一坨, 必看项淹没) */
.cmr{display:flex;align-items:baseline;gap:8px;font-size:12.5px;color:var(--dim);padding:4px 8px;border-radius:7px}
.cmr .ct{flex:none;width:36px;font-size:11px;color:var(--mute)}
.cmr .cg{flex:none;font-size:10px;letter-spacing:-1px}
.cmr b{font-weight:600;color:var(--dim);min-width:0}
.cmr a{margin-left:6px;font-size:11px;color:var(--cold);white-space:nowrap}
.cmr.g3{background:color-mix(in srgb,var(--gold) 8%,transparent);border-left:2px solid var(--gold)}
.cmr.g3 b{color:var(--text);font-weight:700}
.cmr.g3 .ct{color:var(--gold)}
.csl{margin-top:2px}
.cse{display:inline-flex;align-items:center;gap:5px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:4px 10px;font-size:12.5px;cursor:pointer}
.cse i{font-style:normal;font-size:11px;color:var(--mute)}
.cse em{font-style:normal;font-size:11px;color:var(--dim)}
.cse u{text-decoration:none;font-size:11px;color:var(--gold)}
.cnone,.cmore{font-size:11.5px;color:var(--mute)}
@media(max-width:640px){.cmr{gap:6px;padding:4px 6px;flex-wrap:wrap}.cmr .ct{width:32px}.cse{font-size:12px;padding:3px 8px}
.csg{display:block}.csgl{width:auto;margin-bottom:4px}.cnav{gap:6px}.cnb{padding:6px 10px}
.wkt{font-size:12px}.wke b{font-size:11.5px}
.mgc{min-height:58px;padding:3px 2px;text-align:center}.mgi,.mgm{display:none}
.mgd{font-size:11px}.mgt{display:block;font-size:9px;margin:0}
.mgk{display:block;font-size:9px;line-height:1.35;color:var(--dim);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.mgk.g3{color:var(--gold);font-weight:700}
.mgn{display:block;margin-top:1px;font-size:9px;color:var(--mute)}
.mgg{gap:1px}.cvlab{min-width:96px;font-size:12.5px}
.wkt,.wkt tbody,.wkt tr,.wkt td{display:block}.wkt{width:100%}.wkt tbody,.wkt tr,.wkt td,.wkt td:first-child,.wkt td:nth-child(2){width:auto}.wkt thead{display:none}
.wkt tr{border-bottom:1px solid var(--border);padding:6px 0}
.wkt td{border:0;padding:2px 0}.wkt td:empty{display:none}
.wkd{display:flex!important;align-items:baseline;gap:6px}.wkd .cbadge{display:inline-block;margin:0}
.wke b{font-size:12px;flex:1;min-width:0}.wke .ct{min-width:30px}.wke.s b{flex:none}}
.pmtip{margin-top:6px;font-size:12px;color:var(--gold);background:color-mix(in srgb,var(--gold) 9%,transparent);border:1px solid color-mix(in srgb,var(--gold) 35%,var(--border));border-radius:8px;padding:6px 10px}
.pmus{border-top:1px dashed var(--border);margin-top:4px;padding-top:4px}
.pmus .pmr b{font-size:12px}
.pmus .arr{color:var(--mute);margin:0 2px}
.pmk{display:inline-flex;align-items:center;gap:4px;background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:2px 10px;font-size:12px;margin:2px 6px 2px 0;cursor:pointer}
.pmk i{font-style:normal;font-size:10.5px;color:var(--mute)}
.pmk.warn{border-color:color-mix(in srgb,var(--warn) 55%,var(--border));color:var(--warn)}
.pma{font-size:12px;margin-left:8px;white-space:nowrap}
.pmsec{background:var(--surface);padding:14px 18px;border-top:1px solid var(--border)}.pmsec:first-of-type{border-top:0}
.qnav{position:sticky;top:0;z-index:30;display:flex;gap:8px;align-items:center;background:var(--surface);border-bottom:1px solid var(--border);padding:9px 18px}
.qnav .qlinks{display:flex;gap:8px;align-items:center;flex:0 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
.qnav .qlinks::-webkit-scrollbar{display:none}
.qnav .qtools{display:flex;gap:8px;flex:none;padding-left:10px;border-left:1px solid var(--border)}
.qnav .qtools .tbtn{border-color:color-mix(in srgb,var(--gold) 40%,transparent);background:color-mix(in srgb,var(--gold) 7%,var(--surface))}
.qnav .qtools .tbtn:hover{border-color:var(--gold);color:var(--gold)}
.qnav span{font-size:11px;color:var(--mute);font-weight:700}
.qnav a{font-size:12px;font-weight:600;color:var(--dim);text-decoration:none;background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:4px 11px}
.qnav a:hover{color:var(--up);border-color:var(--up)}
@media(max-width:900px){/* 移动端: 速览锚点排横滚 + 工具排全宽三等分(用户反馈: 原来藏在横滚末尾注意不到) */
.qnav{flex-wrap:wrap;row-gap:7px;position:sticky;top:0;z-index:6;background:var(--bg);margin:0 -2px;padding:8px 2px}
.qnav .qlinks{flex:1 1 100%;-webkit-overflow-scrolling:touch}
.qnav .qlinks span{display:none}
.qnav .qtools{flex:1 1 100%;margin-left:0;padding-left:0;border-left:0}
.qnav .qtools .tbtn{flex:1;justify-content:center;white-space:nowrap;min-height:42px;padding:6px 4px}}
.strs,.lr,.rly,.ldr,.th{scroll-margin-top:52px}
.thl-more.clp{display:none}
.th>.csmore{margin-top:11px}
.geo-index{max-width:760px;margin:0 auto;padding:32px 20px;font-family:Manrope,-apple-system,'PingFang SC',sans-serif;color:var(--text)}
.geo-index h1{font-size:20px;margin:0 0 10px}.geo-index .lede{color:var(--dim);line-height:1.7;margin:0 0 18px}
.geo-index dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 18px;margin:0 0 18px}
.geo-index dt{color:var(--mute);font-size:13px}.geo-index dd{margin:0;font-weight:700}
.geo-index ul{margin:0 0 18px;padding-left:18px;line-height:1.9}.geo-index a{color:var(--up)}
.geo-index .enter{display:inline-block;margin:6px 0 22px;font-weight:700}
/* 终端移动覆写(置于末尾压轴, 胜过前文同权规则) */
@media(max-width:900px){.pgh .ti{display:block}.pgh .ti b{display:block}.pgh .ti small{display:block;margin:4px 0 0}}
/* iframe 嵌入模式(首页产品预览): 隐侧栏/在线数/历史横幅, 主内容占满 */
html.emb .side,html.emb .onln,html.emb .stale{display:none!important}
/* 日页尾部"接着看"导流卡 + 首访引导条(留存/粘性) */
.nxtw{margin:14px 0}
.nxtg{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.nxc{display:flex;flex-direction:column;gap:5px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:11px 13px;text-decoration:none;transition:border-color .15s}
.nxc:hover{border-color:var(--gold)}
.nxc b{font-size:13px;color:var(--text)}
.nxc span{font-size:11.5px;color:var(--dim);line-height:1.6}
/* 一键筛选的可见性门槛卡(gate=top3/login/pro): 未登录出提示, 已登录JS原地展开 */
.plock{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface2);border:1px dashed var(--border);border-radius:10px;padding:12px 14px;margin:10px 0 4px}
.plock b{font-size:13px;color:var(--text)}
.plock span{font-size:12.5px;color:var(--mute);flex:1;min-width:120px}
.plkb{font-size:12.5px;font-weight:700;color:var(--warn);text-decoration:none;border:1px solid var(--warn);border-radius:8px;padding:6px 13px;white-space:nowrap}
.plkb:hover{background:rgba(226,115,10,.12)}
.plkm{font-style:normal;font-size:12px;color:var(--mute)}
/* 展开剩余: 居中胶囊按钮。两次返工的中间态 —— 整条大方块太抢眼, 纯分隔线又几乎看不见
   (站长 2026-07-28: "有点丑" → "就一个向下小箭头 太不显眼了")。 */
.pmore{display:block;margin:12px auto 4px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;
 color:var(--up);background:var(--up-soft);border:1px solid var(--up);border-radius:999px;padding:7px 20px}
.pmore::after{content:" ▾";font-size:11px}
.pmore:hover{filter:brightness(.95)}
.pmore[disabled]{opacity:.55;cursor:default;color:var(--mute);background:var(--surface2);border-color:var(--border)}
.pmore[disabled]::after{content:""}
.plock-why{flex-basis:100%;margin:2px 0 0;font-size:12px;color:var(--mute);line-height:1.6}
.plock-why em{font-style:normal;color:var(--warn);font-weight:700}
.pch .plk{font-style:normal;font-size:10px;margin-left:3px;opacity:.85}
/* 今日一句话摘要: 并进底部翻页行(2026-07-29)。收起时只是行内一个 chip → 零撑高;
   展开时 <p> 绝对定位浮在行上方 → 无布局位移。文字始终在原始 HTML 里 ——
   不能放"今日复盘"卡(那张 HTML 里是 hidden 靠JS显示, 抓原始HTML的AI爬虫读不到), 也不用
   title 属性做 tooltip(HTML 转文本时属性常被丢弃, 对 AI 摘答等于白放)。 */
.daynav .qcite{position:relative}
.daynav .qcite>summary{list-style:none;cursor:pointer}
.daynav .qcite>summary::-webkit-details-marker{display:none}
.daynav .qcite[open]>summary{color:var(--up);border-color:var(--up)}
.daynav .qcite>p{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
 width:min(560px,86vw);margin:0;padding:11px 13px;text-align:left;font-size:12.5px;line-height:1.75;
 color:var(--dim);background:var(--surface);border:1px solid var(--border);border-radius:10px;
 box-shadow:var(--shadow);z-index:9}
.qc-cp{font:inherit;font-size:11.5px;font-weight:700;margin-left:8px;color:var(--mute);background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:2px 9px;cursor:pointer;white-space:nowrap}
.qc-cp:hover{color:var(--up);border-color:var(--up)}
/* 炸板明细: 挂在连板梯队接力尾部的一行, 默认折叠(站长 2026-07-28: 不重要, 别占版面) */
.zbf{margin-top:9px}
.zbf>summary{list-style:none;cursor:pointer;font-size:11.5px;color:var(--mute);font-weight:600}
.zbf>summary::-webkit-details-marker{display:none}
.zbf>summary:hover{color:var(--warn)}
.zbf[open]>summary{margin-bottom:7px}
.zbf .zbl{display:flex;flex-wrap:wrap;gap:5px}
.zbi{display:inline-flex;align-items:center;gap:5px;cursor:pointer;background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:3px 8px;font-size:12px}
.zbi:hover{border-color:var(--warn)}
.zbi i{font-style:normal;font-size:10.5px;color:var(--mute)}
/* 两卡并排等高(群卡 + 这不是通用AI): 群卡右侧原本大片空白 */
.duo2{display:grid;gap:12px;align-items:stretch}
.duo2>*{margin:0}
@media(min-width:901px){.duo2{grid-template-columns:1fr 1fr}}
.nxtm{margin:9px 0 0;font-size:12.5px;color:var(--mute);line-height:1.9}
.nxtm b{color:var(--dim);font-weight:700}
.nxtm a{color:var(--dim);text-decoration:none;font-weight:600}.nxtm a:hover{color:var(--up)}
@media(max-width:860px){.nxtg{grid-template-columns:1fr 1fr}}
@media(max-width:540px){.nxtg{grid-template-columns:1fr}}
#fvg{background:var(--up-soft);border:1px solid var(--border);border-left:3px solid var(--gold);border-radius:8px;padding:8px 13px;margin:0 0 12px;font-size:12.5px;color:var(--dim);line-height:1.9;display:flex;flex-wrap:wrap;gap:2px 12px;align-items:center}
#fvg b{color:var(--text)}
#fvg a{color:var(--up);text-decoration:none;border-bottom:1px dashed var(--up)}
#fvg .x{cursor:pointer;margin-left:auto;color:var(--mute);padding:0 4px;font-size:15px}
.mlguide{display:flex;gap:10px;align-items:flex-start;background:var(--up-soft);border:1px solid var(--border);border-left:3px solid var(--gold);border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:12.5px;color:var(--dim);line-height:1.8}
.mlguide .ic{font-size:16px;line-height:1.4}
.mlguide b{color:var(--text)}
/* 💡新手引导条移动端三行折叠(2026-08-05 用户反馈占屏太高): 点条展开收起, 点内链不拦 */
@media(max-width:640px){
.rsguide>div,.mlguide>div{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.rsguide:not(.open),.mlguide:not(.open){padding-top:8px;padding-bottom:8px;align-items:center}
.rsguide.open>div,.mlguide.open>div{display:block;-webkit-line-clamp:unset}
.rsguide:not(.open)::after,.mlguide:not(.open)::after{content:"展开 ▾";flex:none;align-self:flex-end;font-size:11px;color:var(--mute);white-space:nowrap}
/* 日页头部压缩(2026-08-05 用户: 换色/在线各占一行, 搜索与复盘卡应同行) */
.dt2{display:none}                                   /* "更新/在线/数据截至"等冗词窄屏隐藏 */
.fph{position:relative}
.fph .rt .tgl{position:absolute;top:11px;right:12px} /* 🌓换色钮上浮到第一行右侧, 不再独占一行 */
.fph .ti{gap:6px}                                    /* 日期行挤出🟢在线数: 缩间距+日期输入框+按钮 */
/* 盘前页头(.pmh)窄屏: "今"链的就是本页、"待开盘"状态由倒计时表达 — 都藏掉, 在线数并入同行 */
.pmh .dtoday,.pmh .rv{display:none}
.pmh .ti{gap:4px}
.fph .dinp{width:100px;font-size:12px;padding:2px 4px}
.fph .dbtn{min-width:40px}
.fph .dpk{gap:4px}
.topr{gap:8px}
.topr .gsqw{flex:1 1 140px;min-width:0}
.topr .gsqw input{min-width:0;font-size:12px}
.topr .rvc{flex:1 1 150px;min-width:0}
.topr .rvc-fold{padding:8px 10px;white-space:nowrap}
}
.mlguide a{color:var(--up);text-decoration:none;border-bottom:1px dashed var(--up)}
/* 工具页"指标说明"折叠块(口径/读法/场景/更新/边界; 结构化要点利于搜索与AI摘要) */
.specx{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin:0 0 14px;font-size:12.5px;color:var(--dim)}
.specx summary{cursor:pointer;padding:9px 14px;font-weight:700;color:var(--text);font-size:12.5px;list-style:none}
.specx summary::-webkit-details-marker{display:none}
.specx summary:after{content:"▾";float:right;color:var(--mute);transition:transform .2s}
.specx[open] summary:after{transform:rotate(180deg)}
.specx .bd{padding:2px 16px 12px;line-height:1.85}
.specx .bd b{color:var(--text)}
.specx .bd ul{margin:4px 0 8px;padding-left:18px}
.specx .bd li{margin:2px 0}
.specx .bd a{color:var(--up);text-decoration:none;border-bottom:1px dashed var(--up)}
/* 前瞻回验对照页 */
.hyrate{margin-left:auto;font-size:12.5px;color:var(--dim)}
/* mingtian页顶「昨日回验」横幅(2026-08-26): 真实命中数当钩子, 整卡可点直达回验页 */
.hybanner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;background:var(--surface2);border:1px solid var(--border);border-left:3px solid var(--up);border-radius:10px;padding:11px 14px;margin-bottom:12px;text-decoration:none;color:var(--dim);font-size:13px;transition:border-color .15s}
.hybanner:hover{border-color:var(--up)}
.hybanner .hb1{font-weight:800;color:var(--text)}
.hybanner .hb2 b{color:var(--up);font-size:14.5px}
.hybanner .hb3{margin-left:auto;color:#f4703f;font-weight:700;white-space:nowrap}
@media(max-width:640px){.hybanner .hb3{margin-left:0}}
.hyrate b{color:var(--gold);font-size:16px}
.hyrow{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:10px}
.hyrow .hd2{font-size:12px;color:var(--dim);margin-bottom:7px}
.hyrow .hd2 b{color:var(--text)}
.hyrow.pend{border-left:3px solid var(--gold)}
.hyrow .hd2 i{font-style:normal;color:var(--gold);font-size:11px;margin-left:8px}
.hychips{display:flex;gap:7px;flex-wrap:wrap}
.hyc{font-size:12px;border:1px solid var(--border);border-radius:7px;padding:3px 10px;color:var(--dim)}
.hyc[data-stk]{cursor:pointer}
.hyc.ok{border-color:rgba(224,36,27,.4);color:var(--up)}
.hyc.no{opacity:.65}
.hyc b{font-weight:700}
.hysrc{margin-left:auto;font-size:11px;color:var(--mute);text-decoration:none}
.hysrc:hover{color:var(--up)}
.hyrow .hd2{display:flex;align-items:center;gap:6px}
/* 明日关注/回验行 移动端: 单行五元素挤爆→三行(日期+阶段+命中 / 主线 / 原文链接), 桌面单行不变 */
@media(max-width:640px){
.hyrow .hd2{flex-wrap:wrap;row-gap:4px}
.hyrow .hd2>b,.hyrow .hd2 .mph,.hyrow .hd2 .mhit{white-space:nowrap}
.hyrow .hd2 .mhit{margin-left:auto}
.hyrow .hd2 .mzx{flex-basis:100%;order:8}
.hyrow .hd2 .hysrc{order:9;flex-basis:100%;text-align:right}
}
.hyd{margin-top:7px}
.hyd summary{cursor:pointer;font-size:11px;color:var(--mute);list-style:none}
.hyd summary::-webkit-details-marker{display:none}
.hyd[open] summary{color:var(--dim)}
.hyd ul{margin:6px 0 2px;padding-left:16px;font-size:12px;color:var(--dim);line-height:1.8}
.hyd b.ok{color:var(--up)} .hyd b.no{color:var(--mute)}
/* 交易日志(注册用户, 日页) */
.jrnl{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:14px 0}
.jrnl .jst{margin-left:auto;font-size:11px;color:var(--gold)}
.jinv{font-size:12.5px;color:var(--dim);line-height:1.8}
.jinv a{color:var(--up);text-decoration:none;border-bottom:1px dashed var(--up);margin-left:8px}
.jprev{background:var(--up-soft);border-left:3px solid var(--gold);border-radius:8px;padding:8px 12px;margin-bottom:10px;font-size:12.5px;color:var(--dim)}
.jprev b{color:var(--text);font-size:11.5px}
.jprev p{margin:4px 0 0;white-space:pre-wrap}
.jg{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.jg label{display:block;font-size:11.5px;color:var(--mute);margin-bottom:4px}
.jg textarea{width:100%;box-sizing:border-box;min-height:96px;background:var(--surface2);border:1px solid var(--border);border-radius:9px;color:var(--text);font:inherit;font-size:12.5px;line-height:1.7;padding:8px 11px;outline:none;resize:vertical}
.jbtn{margin-top:9px;border:none;border-radius:8px;background:linear-gradient(135deg,#e0241b,#f4703f);color:#fff;font:inherit;font-size:12.5px;font-weight:700;padding:7px 18px;cursor:pointer}
@media(max-width:640px){.jg{grid-template-columns:1fr}}
/* 个股实体页 /gu/ */
.gcode{font-weight:600;color:var(--mute)}
.gbc{font-size:12px;color:var(--mute);margin:2px 0 14px}.gbc a{color:var(--dim);text-decoration:none}.gbc a:hover{color:var(--up)}
.gsum{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.gsum p{margin:0 0 14px;font-size:14px;line-height:1.8;color:var(--dim)}.gsum p b{color:var(--up);font-weight:800}
.gkpi{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.gk{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:12px 8px;text-align:center}
.gk b{display:block;font-size:22px;font-weight:800;color:var(--text);line-height:1.1}.gk span{font-size:11px;color:var(--mute)}
.gtags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.gtag{font-size:11.5px;font-weight:700;color:var(--warn);background:rgba(226,115,10,.1);border-radius:999px;padding:4px 11px}
/* 席位画像(2026-09-20): 买入/卖出 × 跟着做/同车 两维对照 + 同日双向 + 同场搭档 */
.xwtb{margin:0 0 18px}
.xwth{font-size:13.5px;font-weight:800;margin:0 0 8px}
.xwtb .tt th i.xwsub{display:block;font-style:normal;font-weight:600;font-size:10.5px;color:var(--mute);margin-top:2px}
.xwtb .tt td i.xwwin{font-style:normal;font-size:10.5px;color:var(--mute);margin-left:4px}
.xwgap{font-size:11.5px;color:var(--mute);margin-top:6px;line-height:1.6}
.xwbo{font-size:12.5px;color:var(--dim);line-height:1.8;margin:10px 0 4px}
.xwlks{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0 4px}
.xwlkh{font-size:12.5px;color:var(--dim);margin-right:2px}
.xwlk{display:inline-flex;flex-direction:column;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:4px 10px}
.xwlk b{font-size:12.5px}
.xwlk i{font-style:normal;font-size:10.5px;color:var(--mute)}
.xwlock .plock.xwpl{flex-wrap:wrap;gap:6px 10px;align-items:center;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;cursor:pointer}
.xwlock .plock.xwpl .plkb{width:auto;padding:5px 14px;font-size:12px;margin-left:auto}
/* 对照榜: 表头两行(口径+持有期), 基准行钉在末尾并加条分隔线 */
.tt.xwrk th i{display:block;font-style:normal;font-weight:600;font-size:10.5px;color:var(--mute);margin-top:2px}
.tt.xwrk th[data-s]{cursor:pointer;white-space:nowrap}
.tt.xwrk th[data-s].on{color:var(--up)}
.tt.xwrk th.l b,.tt.xwrk td.xwrp b{font-size:12.5px}
.tt.xwrk th.l i,.tt.xwrk td.xwrp i{display:block;font-style:normal;font-size:10.5px;color:var(--mute)}
.tt.xwrk tr.xwbase{border-top:2px solid var(--border)}
/* 跨日对比结果区(#lqres): 表头副标题与基准行 —— 这张表与对照榜同一套收益列,
   但它不在 .tt.xwrk 里, 拿不到那边的样式, 所以单独给两条。 */
/* 席位画像里的「与基准比，差异是不是真的」(2026-09-21) */
.xwvs{margin:14px 0 4px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.xwvsh{font-size:14px;font-weight:700;margin:0 0 8px;color:var(--txt)}
.xwvst th.l{text-align:left;white-space:nowrap}
.xwvst th.l i,.xwvst td i{display:block;font-style:normal;font-weight:400;font-size:10.5px;color:var(--mute);margin-top:2px}
.xwvsn{font-size:13px;line-height:1.8;margin:8px 0 2px;color:var(--txt)}
#lqres th i{display:block;font-style:normal;font-weight:600;font-size:10.5px;color:var(--mute);margin-top:2px}
#lqres tr.xwbase td{color:var(--dim)}
.tt.xwrk tr.xwbase th.l b,.tt.xwrk tr.xwbase td{color:var(--dim)}
@media(max-width:640px){.xwtb .tt th i.xwsub{font-size:10px}.xwlk{padding:3px 8px}}
/* 个股档案页的跳转条(2026-09-20): 这页把两张长表上下摞着(601086 的涨停时间线 64 行占 1.5 万字节),
   龙虎榜排在后面实际滚不到。样式与弹层的视角栏(.stabs)对齐, 让两处看着是同一个东西。 */
.gjump{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 4px}
.gjump a{display:inline-flex;align-items:baseline;gap:5px;font-size:12.5px;font-weight:700;color:var(--dim);
 background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:5px 14px;text-decoration:none}
.gjump a:hover{color:var(--up);border-color:var(--up)}
.gjump a i{font-style:normal;font-weight:600;font-size:11px;opacity:.75}
/* 锚点跳过去时给页面顶部留点余量, 否则标题会贴在视口最上沿 */
#g-tl,#g-lhb,#g-pos{scroll-margin-top:12px}
.gsec{margin:20px 0}.gh{font-size:15px;font-weight:800;margin:0 0 12px;display:flex;align-items:baseline;gap:8px}.gh small{font-size:11.5px;font-weight:600;color:var(--mute)}
.gtl,.xtl{display:flex;flex-direction:column;gap:14px}
.gmo{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.gmoh{background:var(--surface2);padding:7px 13px;font-size:12.5px;font-weight:800;color:var(--dim);border-bottom:1px solid var(--border)}.gmoh small{font-weight:600;color:var(--mute);margin-left:6px}
.gzt{display:flex;align-items:center;gap:10px;padding:9px 13px;text-decoration:none;border-bottom:1px solid var(--border)}.gzt:hover{background:var(--surface2)}
/* 会员档案截条标记(2026-09-16): 每条时间线外面套了一层 .gtr/.xtr(见 online._trim_rows),
   .gzt/.gztw 因此总是自己那层包装里的唯一子元素、:last-child 恒真——去边框改判它外层
   包装是否是分组内最后一个, 不能再靠 .gzt/.gztw 自身的 :last-child。 */
.gtr:last-child .gzt,.xtr:last-child .gzt{border-bottom:0}
.gzt.gz0{cursor:default}.glr.gz0{cursor:default}
/* 涨停原因正文(2026-09-11): 默认收起, 但**内容始终在 DOM 里**——这段字本来就在库里,
   之前只活在 <script> 数据岛和弹层里, 抓取端按可见正文提取一个字都取不到。
   ⚠️ <details> 的行必须自己成一块: .gzt 是 flex 行且可能是 <a>, <details> 不能嵌在链接内。 */
.gztw{border-bottom:1px solid var(--border)}.gtr:last-child .gztw{border-bottom:0}
.gztw .gzt{border-bottom:0}
.gzr{padding:0 13px 9px;font-size:12.5px;line-height:1.8;color:var(--dim)}
.gzr>summary{cursor:pointer;color:var(--mute);font-size:11.5px;list-style:none;padding:1px 0 5px}
.gzr>summary::-webkit-details-marker{display:none}
.gzr>summary::before{content:"▸ ";color:var(--mute)}
.gzr[open]>summary::before{content:"▾ "}
.gzr>summary:hover{color:var(--txt)}
.gzr>div{border-left:2px solid var(--border);padding-left:10px}
.gzr p{margin:0 0 7px}.gzr p:last-child{margin-bottom:0}
/* 题材页可见常见问题(2026-09-11): 此前这几问只在 FAQPage JSON-LD 里, 页面正文一个字没有。 */
.tfaq{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:4px 14px}
.tfaq>div{padding:10px 0;border-bottom:1px dashed var(--border)}
.tfaq>div:last-child{border-bottom:0}
.tfaq b{display:block;font-size:13.5px;color:var(--txt);margin-bottom:4px}
.tfaq p{margin:0;font-size:12.5px;line-height:1.85;color:var(--dim)}
.gh2{font-size:16px;margin:22px 0 10px;color:var(--txt)}
/* 金额牌(2026-09-11): 图表标记自带的 text **没有背景**, 手机上 "2.14亿" 被价格线穿了过去。
   自己画成带底色的小牌子, 线压上来也认得出; 位置由 tapeLay 按真实像素算, 不靠图表库。 */
.tpov{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:3}
.tpov span{position:absolute;white-space:nowrap;font-size:10.5px;font-weight:700;line-height:1.5;
 padding:1px 5px;border-radius:4px;background:var(--surface);border:1px solid var(--border);
 font-variant-numeric:tabular-nums}
.tpov span.up{color:var(--up)}
.tpov span.dn{color:var(--down)}
.tpov span.hl{z-index:2;box-shadow:0 0 0 1.5px currentColor}
/* 明细里点中的那一分钟: 竖虚线贯穿绘图区, 底部标时刻 */
.tpov i.tpg{position:absolute;width:0;border-left:1px dashed var(--gold);pointer-events:none}
.tpov i.tpg b{position:absolute;bottom:0;left:0;transform:translateX(-50%);font-style:normal;font-size:10.5px;
 font-weight:700;color:#fff;background:var(--gold);border-radius:3px;padding:0 4px;line-height:1.6;white-space:nowrap}
/* 主力买点明细: 按时刻排, 一格一笔; 排在图下方, 不占图的高度 */
#ktlist{margin:6px 2px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:4px}
#ktlist:empty{display:none}
#ktlist button{appearance:none;display:flex;align-items:baseline;gap:6px;padding:3px 7px;border-radius:5px;
 border:1px solid var(--border);background:var(--surface);color:var(--dim);font:inherit;font-size:12px;
 cursor:pointer;text-align:left;font-variant-numeric:tabular-nums}
#ktlist button:hover{border-color:var(--dim)}
#ktlist button.on{border-color:var(--gold);background:var(--surface2)}
#ktlist button b{color:var(--txt);font-weight:700}
#ktlist button .up{color:var(--up);font-weight:700}#ktlist button .dn{color:var(--down);font-weight:700}
#ktlist button small{margin-left:auto;color:var(--mute);font-size:11px}
.gzt .gd{font-size:12px;color:var(--mute);flex:0 0 44px}
.gzt .gb{font-size:11px;font-weight:800;color:var(--up);background:var(--up-soft);border-radius:5px;padding:2px 8px;flex:0 0 auto;min-width:40px;text-align:center}
.gzt .gr{font-size:12.5px;color:var(--dim);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.glst{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.glr{display:flex;align-items:center;gap:10px;padding:9px 13px;text-decoration:none;border-bottom:1px solid var(--border)}.glr:hover{background:var(--surface2)}
/* 截条锚点层(2026-09-16): 每行外面套了一层 .glrw(见 online._trim_rows), 它只做锚点不带样式,
   .glr 因此恒是自己那层包装里的唯一子元素、:last-child 恒真 —— 去末行边框改判外层是不是最后一个。 */
.glrw:last-child .glr{border-bottom:0}
.glr .gd{font-size:12px;color:var(--mute);flex:0 0 44px}
.glr .gnet{font-size:12.5px;font-weight:700;flex:0 0 96px}.glr .gnet.up{color:var(--up)}.glr .gnet.dn{color:var(--down)}
.glr .gyz{font-size:12px;color:var(--dim);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gmore2{font-size:11.5px;color:var(--mute);text-align:center;padding:9px}
.grel{margin:22px 0}.grelw{display:flex;flex-wrap:wrap;gap:8px}
.grelw a{font-size:13px;font-weight:700;color:var(--dim);text-decoration:none;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:9px 14px}.grelw a:hover{color:var(--up);border-color:var(--up)}
.gdis{font-size:11px;color:var(--mute);margin:18px 0 0;line-height:1.7}
@media(max-width:640px){.gkpi{grid-template-columns:repeat(2,1fr)}}
/* 游资席位页 /xiwei/ 复用 .g*, 追加 */
.gtaglink em,.gtag em{font-style:normal;color:var(--mute);margin-left:4px;font-weight:600}
/* /gu 页"当前位置"增厚块 + 常见问题 */
.gxsec .gxt{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.gxl{font-size:11.5px;font-weight:700;color:var(--mute);flex:0 0 auto}
.gxsec .gtags{margin-top:0}
a.gtaglink{text-decoration:none}a.gtaglink:hover{color:var(--up)}
.gxp{font-size:13px;color:var(--dim);line-height:1.85;margin:10px 0 0}
.gxp b{color:var(--text)}
.gxrel{display:block;font-size:12.5px;color:var(--mute);margin-top:4px}
.gxrel a{color:var(--dim);text-decoration:none;margin-left:8px;font-weight:700}.gxrel a:hover{color:var(--up)}
.gfq{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:11px 14px;margin-bottom:8px}
.gfq b{display:block;font-size:13px;color:var(--text);margin-bottom:5px}
.gfq p{font-size:12.5px;color:var(--dim);line-height:1.8;margin:0}
/* /gu/ 档案库 hub + 字母分页 */
.gltw{display:flex;flex-wrap:wrap;gap:7px;margin:4px 0 6px}
.glt{font-size:13px;font-weight:800;color:var(--dim);text-decoration:none;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:7px 12px;min-width:44px;text-align:center}
.glt:hover{color:var(--up);border-color:var(--up)}
.glt em{font-style:normal;font-weight:600;font-size:10.5px;color:var(--mute);margin-left:4px}
.gilw{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.gil{display:flex;align-items:baseline;gap:7px;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:9px 12px;text-decoration:none}
.gil:hover{border-color:var(--up)}
.gil b{font-size:13px;color:var(--text);font-weight:700}
.gil .mono{font-size:11px;color:var(--mute)}
.gil em{font-style:normal;font-size:11px;color:var(--mute);margin-left:auto;white-space:nowrap}
@media(max-width:640px){.gilw{grid-template-columns:1fr 1fr}.gil{padding:8px 10px}.gil em{display:none}}
.gtl .gzt .gr,.xtl .gzt .gr{flex:1;min-width:0}.gtl .gzt .gr a,.xtl .gzt .gr a{color:var(--dim);text-decoration:none}.gtl .gzt .gr a:hover,.xtl .gzt .gr a:hover{color:var(--up)}
.gzt .gb.gbsell{color:var(--down);background:var(--green-soft)}
.gtl .gzt .gnet,.xtl .gzt .gnet{flex:0 0 auto;margin-left:auto}
a.nm{color:inherit;text-decoration:none;cursor:pointer}.ch a.nm:hover{color:var(--up)}
/* ==== 桌面端可读性提级(置末压轴): 重要文字≥13px, 正文/表格→14px; 移动端已单独优化不受影响 ==== */
@media(min-width:901px){
/* 日页 KPI / 页头 */
.kpi .c{padding:10px 14px 9px}
.kpi .l,.kpi .ly{font-size:12px}
.kpi .v{font-size:21px}
.idxc .n{font-size:11.5px}
.fph .wd{font-size:12.5px}
.live,.rv,.onln{font-size:12px}
.tgl button{font-size:12px}
.dsel{font-size:12.5px}
/* 速览导航 */
.qnav a{font-size:13px}
.qnav span{font-size:12px}
/* 卡片正文 / 辅助说明 */
.sec small{font-size:12px}
.bc .hd{font-size:12px}
.bc .ft,.cyc .s .t{font-size:11px}
.airv .aib{font-size:14px}
.airv .aih small{font-size:12px}
.fn .tt{font-size:13px}
.fn{padding:10px 12px}
.fn .tm,.fn .tag{font-size:11px}
.fn .an{font-size:12.5px}
.fn .pk .s{font-size:12px}
.lvr .lx{font-size:14px}
.lvr.ev .lx{font-size:13px}
.lvr .lt{font-size:12px}
.aisig .sgr em{font-size:13px}
.aisig small{font-size:12px}
.zjfn{font-size:12px}
.qunbox .qbt span{font-size:13px}
/* 股票名称 / 题材、涨停原因 */
.ch{padding:7px 10px}
.ch .t .nm{font-size:14px}
.ch .cc{font-size:13px;color:var(--dim)}
.ch .t .tm{font-size:11px}
.rc .nm{font-size:14px}.rc .pct{font-size:12px}
.tk .nm{font-size:13px}
.tk .cc,.ldc .cc{font-size:12.5px;color:var(--dim)}
.ldc .sk{font-size:12px}
.stc .nm,.zxc .r1 b{font-size:14px}
.zxc .rs{font-size:13px}
.lr1 .cd{font-size:12px}
.lr1 .cg,.lr1 .net{font-size:13px}
.lr1 .rs{font-size:12px;color:var(--dim)}
.lad .bd .c,.rll .bd .c{font-size:11px}
.thc .L .ld{font-size:11.5px}
.thc .L .thr{font-size:12px}
.thc .L .n2 small,.th .leg{font-size:12px}
/* 表格 */
.scrt{font-size:var(--fs-body)}
.scrt th{font-size:var(--fs-meta);padding:9px 10px}
.scrt td{font-size:var(--fs-body);padding:8px 10px}
.scrt td.tt2{font-size:var(--fs-caption)}
.mtx{font-size:12.5px}
.mtx thead th{font-size:12px}
.stt .dim{font-size:12.5px}
.rsul{font-size:13px}
.daynav{font-size:13px}
.ftr{font-size:12.5px}
/* 左侧导航 / 用户区(字号提级后 132px 中文过挤→144px) */
.side{flex-basis:144px}
.side .si{font-size:14px}
.side .sx{font-size:13px}
.sgrp summary{font-size:12px}
.suser .uwt{font-size:12.5px}
.suser .uwi{font-size:12.5px}
.suser .uwe{font-size:12px}
}
/* 工作台/弹层K线区骨架定高框架(站长定稿: RS副图在主图上方+全块定高): 战绩行/RS图例/RS小图/价格位
   均为死高度, 异步数据只"填充"不移动主图; 图例文案固定集合→桌面缩字号单行、窄屏固定两行高, 不截断 */
#modal #stkearn,#dskp #stkearn{height:27px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
#modal #rsleg,#dskp #rsleg{display:flex!important;height:20px;overflow:hidden;flex-wrap:nowrap;white-space:nowrap;gap:9px}
#modal #rsleg .rnh,#dskp #rsleg .rnh{cursor:help}
/* 两条指数对照线的开关(2026-08-15, 沪深300 与创业板指各一个)。
   关掉时整项变淡而不是消失 —— 消失了用户就找不回来了。
   触摸目标 20px 高度靠 #rsleg 的行高撑, 不额外加 padding(图例是死高度, 加了会顶掉数值行)。 */
#modal #rsleg .rstg,#dskp #rsleg .rstg{cursor:pointer;user-select:none}
#modal #rsleg .rstg.off,#dskp #rsleg .rstg.off{opacity:.4}
#modal #rsleg .rstg.off em,#dskp #rsleg .rstg.off em{background:var(--mute)!important}
#modal #rsleg .rnh em,#dskp #rsleg .rnh em{width:10px;height:10px;border-radius:50%}
#modal #rsleg .rnh i,#dskp #rsleg .rnh i{font-style:normal;display:none}   /* 桌面: 符号+悬停提示; 移动端两行有空间且无悬停→显全文 */
#modal #rsbox,#dskp #rsbox{height:72px;border:1px solid var(--border);border-radius:6px;margin-bottom:6px;background:var(--surface2);overflow:hidden}
#modal #rsbox:not(:empty),#dskp #rsbox:not(:empty){background:transparent}
/* 移动端(2026-08-06 用户反馈「时间下面文字有遮挡」): #rsleg 原是固定 height:37px + overflow:hidden,
   只够两行图例; 数值行(相对大盘/沪深300)靠 margin-left:auto 挤在末尾, 窄屏被顶到第三行整条裁掉,
   露出的几像素正好压在RS图上边缘。改法: 数值行 order:-1 独占第一行 —— 它才是随十字线变化的实时数据,
   比图例说明文字更该优先显示; 图例落到下两行, 高度按三行给。
   高度仍写死不用 auto: 图例填充前要先占好位, 否则建图后RS块变高会把主图挤下去(全局border-box, 含7px padding)。 */
/* 2026-08-15 加创业板指那一项后实测 scrollHeight=58 > 54, 底部被切 —— 与 08-06 同一个坑复发。
   给到 62px 留 4px 余量: 各端字体渲染有差异, 卡到刚好够就是等下次再复发。 */
@media(max-width:640px){#modal #rsleg,#dskp #rsleg{height:62px;flex-wrap:wrap;white-space:normal;align-content:flex-start;gap:2px 10px}
#modal #rsleg .rsv,#dskp #rsleg .rsv{width:100%;order:-1;margin-left:0!important}
#modal #rsleg .rnh i,#dskp #rsleg .rnh i{display:inline}}
:is(#modal,#dskp) .mfix:has(#kbox.ktall) :is(#rsbox,#rsleg),
:is(#modal,#dskp) .mfix.ktp :is(#rsbox,#rsleg){display:none!important}
/* 分时缩条(2026-09-01): 全端RS下方全宽叠放(移动44px矮条); 分钟周期随RS收起 */
#fsstrip{position:relative;height:56px;border:1px solid var(--border);border-radius:6px;margin-bottom:6px;overflow:hidden;cursor:pointer;background:var(--surface2)}
#fsstrip canvas{display:block;width:100%;height:100%}
#fsstrip .fsl{position:absolute;top:3px;left:8px;font-size:10px;color:var(--mute);pointer-events:none}
#fsstrip .fsz{position:absolute;top:3px;right:7px;font-size:10px;color:var(--mute);pointer-events:none}
#fsstrip .fsv{position:absolute;bottom:3px;right:7px;font-size:11px;font-weight:800;pointer-events:none}
.mfix:has(#kbox.ktall) #fsstrip,.mfix.ktp #fsstrip{display:none!important}
@media(max-width:640px){#fsstrip{height:44px}}   /* 移动端曾做K线右上悬浮小窗, 挡住最新K线(2026-09-01站长), 改全宽矮条与桌面同构 */
/* ---- 大盘直播·盘中工作台(2026-08-18, tasks/live-workbench.md) ---- */
.wbk{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px}
.wbk .k{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;min-width:0}
.wbk .k .l{font-size:11px;color:var(--mute);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbk .k .v{font-size:22px;font-weight:800;line-height:1.2;margin-top:2px;font-family:var(--mono,monospace)}
.wbk .k .v.up{color:var(--up)}.wbk .k .v.dn{color:var(--down)}.wbk .k .up{color:var(--up)}.wbk .k .dn{color:var(--down)}
.wbk .k .y{font-size:11px;color:var(--dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbk .k .y b{font-weight:800}
.wbk .k svg{display:block;width:100%;height:34px;margin-top:6px}
.wbk .k .bar{height:6px;border-radius:3px;background:var(--track);margin-top:8px;overflow:hidden;display:flex}
.wbk .k .bar i{display:block;height:100%}
.wbg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;align-items:start}
@media(max-width:1000px){.wbg{grid-template-columns:minmax(0,1fr)}}
.wbl,.wbr{min-width:0}
.wbs{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;min-width:0}
.wbr .wbs+.wbs{margin-top:16px}
@media(min-width:1001px){.wbl .lvl{max-height:1180px;overflow:auto;padding-right:4px}}
.wbs .sec{margin-bottom:10px}
.wbtabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;align-items:center}
.wbtabs button{font:inherit;font-size:12px;font-weight:700;color:var(--dim);background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:3px 11px;cursor:pointer}
.wbtabs button.on{color:#fff;background:var(--up);border-color:var(--up)}
.wbtabs .sp{flex:1}
.wbtb{width:100%;border-collapse:collapse;font-size:12.5px}
.wbtb th{font-size:11px;color:var(--mute);font-weight:700;text-align:right;padding:4px 6px;border-bottom:1px solid var(--border);white-space:nowrap;user-select:none}
.wbtb th[data-s]{cursor:pointer}.wbtb th[data-s]:hover{color:var(--text)}
.wbtb th:first-child,.wbtb td:first-child{text-align:left}
.wbtb th.on{color:var(--up)}
.wbtb td{padding:5px 6px;border-bottom:1px dashed var(--border);text-align:right;white-space:nowrap;font-family:var(--mono,monospace)}
.wbtb td.n{font-family:inherit;font-weight:700;overflow:hidden;text-overflow:ellipsis;max-width:130px}
.wbtb td .ld{font-family:inherit;font-weight:500;color:var(--dim);cursor:pointer;font-size:11.5px}
.wbtb td .ld:hover{color:var(--up)}
.wbtb .up{color:var(--up)}.wbtb .dn{color:var(--down)}
.wbtb tr[data-stk]{cursor:pointer}
.wbtb tr[data-stk]:hover td{background:var(--up-soft)}
.wbtb .zt{font-size:10.5px;font-weight:800;color:#fff;background:var(--up);border-radius:4px;padding:0 4px;margin-left:4px;font-family:inherit}
.wbch{height:260px;width:100%;position:relative}
.wblab{position:absolute;top:0;bottom:0;pointer-events:none;z-index:3}
.wblab span{position:absolute;right:0;font-size:10.5px;font-weight:800;white-space:nowrap;background:var(--surface);opacity:.92;padding:0 3px;border-radius:3px;line-height:14px;font-family:var(--mono,monospace)}
.wbleg{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11px;margin-top:6px}
.wbleg span{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:var(--dim);font-family:var(--mono,monospace);user-select:none}
.wbleg span.off{opacity:.35}
.wbleg i{width:14px;height:3px;border-radius:2px;display:inline-block}
.wbleg em{font-style:normal;font-weight:700;color:var(--text)}
.wbnote{font-size:11px;color:var(--mute);margin-top:12px;line-height:1.6}
.lvr.zt{border-left-color:var(--up)}.lvr.zt.zb{border-left-color:var(--down)}.lvr.zt.hf{border-left-color:var(--warn)}
.lvr .lx b.stk{cursor:pointer;font-weight:800}.lvr .lx b.stk:hover{color:var(--up)}
.lvr.lad{border-left:2px solid var(--gold);padding-left:6px}.lvr.lad .lx{font-weight:600}
/* 监管异动雷达(2026-08-21) */
.rgh{font-size:12px;font-weight:700;color:var(--dim);margin:2px 0 6px}
.rgr{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;border-bottom:1px dashed var(--border);flex-wrap:wrap}
.rgr:last-of-type{border-bottom:none}
.rgr i{font-style:normal;font-size:11px;font-weight:700;flex:none}
.rgr a{font-weight:700;color:var(--text);text-decoration:none}
.rgr a:hover{color:var(--up)}
.rgr em{font-style:normal;font-size:10px;font-weight:800;color:#fff;background:var(--up);border-radius:4px;padding:1px 5px}
.rgr .mono{margin-left:auto;font-size:11.5px;color:var(--mute)}
.rgr.an i{color:var(--dim)}
.lvr .lx .tg{font-size:10.5px;font-weight:800;border-radius:4px;padding:0 5px;margin-right:5px;color:#fff;background:var(--up)}
.lvr.zb .lx .tg{background:var(--down)}.lvr.hf .lx .tg{background:var(--warn)}
.lvr .lx .nth{font-size:11px;color:var(--warn);font-weight:700;margin-left:6px}
.wbf{display:flex;gap:10px;margin-left:auto;font-size:11.5px;color:var(--dim);align-items:center;flex-wrap:wrap}
.wbf label{display:inline-flex;align-items:center;gap:3px;cursor:pointer;white-space:nowrap}
.wblhb{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.wblhb .g{background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:9px 11px;min-width:0}
.wblhb .g .h{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;font-weight:800;margin-bottom:5px}
.wblhb .g .h small{color:var(--mute);font-weight:600;font-family:var(--mono,monospace);white-space:nowrap}
.wblhb .r{display:flex;gap:6px;align-items:baseline;font-size:12.5px;padding:3px 0;cursor:pointer}
.wblhb .r b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.wblhb .r i{font-style:normal;font-family:var(--mono,monospace);font-size:11.5px;color:var(--mute)}
.wblhb .r em{font-style:normal;font-family:var(--mono,monospace);font-weight:800}
.wblhb .r em.up{color:var(--up)}.wblhb .r em.dn{color:var(--down)}
.wblhb .r:hover b{color:var(--up)}
.wbnote b.up{color:var(--up)}.wbnote b.dn{color:var(--down)}
@media(max-width:640px){.wbtb .c-amt{display:none}.wbk{grid-template-columns:repeat(2,1fr);gap:8px}.wbk .k{padding:8px 10px}.wbk .k .v{font-size:19px}.wbtb{font-size:12px}.wbtb th,.wbtb td{padding:4px 4px}.wbch{height:220px}.wbs{padding:12px 12px}}
/* 首页 iframe 预览专用(html.emb): 隐交互/次要区块, 关键文字放大补偿 ~0.9 缩放 */
html.emb .topr,html.emb .toolrow,html.emb #fvg,html.emb .daynav,html.emb .qnav{display:none!important}
html.emb .kpi .l,html.emb .kpi .ly{font-size:13px}
html.emb .kpi .v{font-size:23px}
html.emb .sec small{font-size:13px}
html.emb .ch .t .nm{font-size:15px}
html.emb .ch .cc{font-size:13.5px}
html.emb .fph .wd,html.emb .rv{font-size:13px}

/* ── 老内核 color-mix 兜底(Chromium<111) ─────────────────────────────────────
   实测占真人请求约5%: Win7的Edge/Chrome 109(Win7能装的最后一版)、Windows微信内置浏览器
   (Chromium 107)、抖音webview(75/88)、SLBrowser等国产壳旧内核。
   坑在于: 值里含 var() 时浏览器解析期无法判定合法性, 只能先当合法收下, 到计算值阶段才发现
   color-mix 不认识 —— 此时层叠早已结束, 低优先级声明和同块内写在前面的兜底都已被淘汰,
   属性直接回落到"初始值":  background→transparent(浮层透明, 底下正文透上来叠字)
                            border/outline简写→border-style:none(整条边框消失)
   所以经典的 "background:白; background:新语法" 同块兜底在这里无效(含var时不成立), 必须靠
   @supports 守卫。现代内核下 not(...) 为假, 整块不参与层叠, 对现有渲染零影响。
   色调降级原则: 保住"不透明/有边框/状态可见", 允许色调略浓(边框用足色, 底色用现成 soft 变量)。*/
@supports not (background:color-mix(in srgb,red 50%,blue)){
  #bsheet .bnm-pwa{border:1px solid var(--up);background:var(--surface2)}
  .scrt tr.dli:hover td{background:var(--up-soft)}
  .aiw .wc.vok{border-color:var(--up)}
  .mtx tr.cur td{background:var(--amber-soft)}
  .wchip.on{outline:2px solid currentColor}
  .bdg.jg{background:rgba(58,123,213,.12);border:1px solid rgba(58,123,213,.4)}
  .bdg.yzb{background:var(--amber-soft);border:1px solid var(--gold)}
  #modal .mstar,#dskp .mstar,#dski .mstar{border:1px solid var(--up)}
  #modal .mstar.on,#dskp .mstar.on,#dski .mstar.on{background:var(--amber-soft);border-color:var(--gold)}
  #modal .matog .mrow,#dskp .matog .mrow,#dski .matog .mrow,#modal .matog .madd,#dskp .matog .madd,#dski .matog .madd{background:var(--surface)}
  #modal .kct,#dskp .kct,#dski .kct{background:var(--surface)}
  .rk.r1{background:var(--amber-soft)}
  .rk.r2{background:rgba(154,167,184,.24)}
  .rk.r3{background:rgba(192,138,90,.24)}
  .kchips span{background:var(--amber-soft);border:1px solid var(--gold)}
  .dli.on{outline:1px solid var(--up)}
  #bsheet #kbox:empty{background:var(--surface2)}
  .qstrip .q50{border-top:1px dashed var(--mute)}
  .qtabs button.on{border-color:var(--up)}
  .aucw{background:var(--surface);border:1px solid var(--gold);border-left:3px solid var(--gold)}
  .aucw:hover{border-color:var(--gold)}
  .aucd .tgl2{border:1px solid var(--gold)}
  .cald.today{background:var(--amber-soft)}
  .cnb.on{background:var(--amber-soft)}
  .wke.g3{background:var(--amber-soft)}
  .mgc.today{background:var(--amber-soft)}
  .mgi.g3{background:var(--amber-soft)}
  .mgi.s{background:var(--up-soft)}
  .cbadge{background:var(--amber-soft)}
  .cmr.g3{background:var(--amber-soft)}
  .pmtip{background:var(--amber-soft);border:1px solid var(--gold)}
  .pmk.warn{border-color:var(--warn)}
  .qnav .qtools .tbtn{border-color:var(--gold);background:var(--amber-soft)}
}
/* 历史归档页引导条(2026-09-02): 25%的未注册访客落在一月前的归档页, 回访率0.6%(当天页8.3%, 差14倍),
   而那些页此前**完全没有**通向今天的路。底部条不是弹窗 —— 弹窗挡正文, 而这批人正在读。
   兼容: 不用 color-mix(下限 Chromium109 会回落 transparent), 阴影/圆角走既有 token。 */
.archb{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;align-items:center;gap:12px;
  flex-wrap:wrap;padding:10px 14px;background:var(--surface);border-top:2px solid var(--red);
  box-shadow:0 -6px 20px rgba(0,0,0,.13);transform:translateY(110%);transition:transform .26s ease}
.archb.on{transform:translateY(0)}
.archb-i{flex:1 1 240px;min-width:0;font-size:var(--fs-caption);color:var(--dim);line-height:1.5}
.archb-i b{display:block;font-size:var(--fs-meta);color:var(--text)}
.archb-a{display:flex;flex-wrap:wrap;gap:6px}
.archb-a a{display:inline-block;padding:6px 12px;border:1px solid var(--border);border-radius:7px;
  background:var(--surface2);color:var(--text);font-size:var(--fs-caption);text-decoration:none;white-space:nowrap}
.archb-a a:hover{border-color:var(--red)}
.archb-a a.archb-p{background:var(--red);border-color:var(--red);color:#fff;font-weight:600}
.archb-x{flex:none;width:28px;height:28px;line-height:1;border:0;border-radius:6px;cursor:pointer;
  background:transparent;color:var(--mute);font-size:15px}
.archb-x:hover{background:var(--surface2);color:var(--text)}
@media (max-width:560px){.archb{padding:9px 10px;gap:8px}.archb-i{flex-basis:100%}}
@media (prefers-reduced-motion:reduce){.archb{transition:none}}
