/* ══ 外置样式源 · DASH-ASSETS-V1（2026-09-16）══════════════════════════════
   本文件是看板页面的**唯一可编辑样式源**（HTML 里只剩一个 link 外链）。
   外链形如 dash-96f7d70980.<内容哈希>.css —— 文件名里的哈希就是**缓存版本号**：
   内容变→名字变→浏览器必然重新拉取；nginx 对该路径给的是
   `Cache-Control: public, max-age=31536000, immutable`，所以内容不变时永远命中本地缓存。
   改完跑 `sh dash-style.sh`：写出新哈希文件 + 就地改写线上 HTML 的引用，约 2 秒上线。
   ⚠ 本文件是 HTML 里 style 元素的**原始文本**：注释里绝不能出现收尾标签字面量
     （HTML 解析器不认 CSS 注释，会当场收尾，把后面整段 CSS 当成页面正文吐出来）。
   ══════════════════════════════════════════════════════════════════════════ */

  /* ★ 2026-09-18 WIG-A3：深色主题必须声明 color-scheme，否则**原生滚动条 / 表单控件 /
     select 弹层**按浅色渲染（本页 3 个 select + 8 个 input + 大量内部滚动容器，都会受影响）。
     ⚠ 审计初稿误报"已有 color-scheme" —— 那是匹配到了 favicon 的 prefers-color-scheme，实测此处原本为 0。
     注：page.css 有 4 个 :root（基础 / 打印 / HF_BPLUS / 字号 token），这里放**基础主题块**；
     后续块都没声明 color-scheme，所以不会被覆盖。 */
  :root{color-scheme:dark;
    --bg:#080d18; --bg2:#0d1524; --card:#111c2e; --card2:#16233a; --line:rgba(255,255,255,.07);
    --line2:rgba(255,255,255,.12); --tx:#e6edf7; --mut:#8ea3c0; --mut2:#64748b;
    --acc:#38bdf8; --acc2:#22d3ee; --ok:#34d399; --warn:#fbbf24; --bad:#f87171; --pur:#a78bfa;
    /* ── 设计系统（固定刻度，不再随手写数字）────────────────────────
       间距：4 / 8 / 12 / 16 / 24 / 32        圆角：卡片 14、小标签 7
       阴影：只有两档（s1 静止 / s2 浮起）     字号：12 / 13 / 14 / 16 / 20 / 28
       数字：等宽 + 右对齐                     过渡：150–200ms，不做炫技动画 */
    --s1:4px; --s2:8px; --s3:12px; --s4:16px;
  /* ══ 设计系统层（2026-09-14 补 · 依据 web-artifact-designer 清单）══════
     背景：此前全站 32 种字号、16 种圆角、75 种硬编码色，属于"堆叠"而非"系统"。
     这里把 scale 变量化；后续新样式一律用这些 token，不再写字面量。 */
  --fs-2xs           10.5px;   /* 徽标/脚注 */
  --fs-xs            11.5px;   /* 辅助说明 */
  --fs-sm            12.5px;   /* 次要正文 */
  --fs-md            13.5px;   /* 正文（默认） */
  --fs-lg            15px;     /* 小标题 */
  --fs-xl            17px;     /* 段落标题 */
  --fs-2xl           22px;     /* KPI 数字 */
  --fs-3xl           30px;     /* 结论大字 */
  --r-sm             8px;
  --r-md             12px;
  --r-lg             16px;
  --r-pill           999px;
  --font-num         ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono",
                     Consolas, "Liberation Mono", monospace;
  --lh-tight         1.25;
  --lh-body          1.7;
  --tr-tight         -0.01em; --s5:24px; --s6:32px;
    --r-card:14px; --r-tag:7px; --r:14px;
    --sh1:0 1px 2px rgba(0,0,0,.28);
    --sh2:0 8px 28px rgba(0,0,0,.38);
    --shadow:var(--sh1);
    --fs6:12px; --fs5:13px; --fs4:14px; --fs3:16px; --fs2:20px; --fs1:28px;
    --t:170ms cubic-bezier(.4,0,.2,1);
  }
  /* 浅色主题：同一套设计 token 的另一组取值（不做第二套样式表，避免两处维护） */
  :root[data-theme="light"]{
    --bg:#f6f8fb; --bg2:#ffffff; --card:#ffffff; --card2:#f2f5f9; --line:rgba(15,23,42,.10);
    --line2:rgba(15,23,42,.18); --tx:#0f172a; --mut:#475569; --mut2:#7c8798;
    --acc:#0284c7; --acc2:#0891b2; --ok:#059669; --warn:#b45309; --bad:#dc2626; --pur:#7c3aed;
    --sh1:0 1px 2px rgba(15,23,42,.06); --sh2:0 8px 24px rgba(15,23,42,.10);
  }
  :root[data-theme="light"] body{background:var(--bg)}
  :root[data-theme="light"] .card{background:var(--card)}
  :root[data-theme="light"] tbody tr:nth-child(even){background:rgba(15,23,42,.02)}
  :root[data-theme="light"] tbody tr:hover{background:rgba(2,132,199,.06)}
  :root[data-theme="light"] .insight{color:#334155}
  :root[data-theme="light"] .insight b{color:#0f172a}
  :root[data-theme="light"] .kpi .v,:root[data-theme="light"] .t5-vs,:root[data-theme="light"] .rp-h,
  :root[data-theme="light"] .rp-line b,:root[data-theme="light"] .card>h2 .anchor{color:var(--tx)}
  :root[data-theme="light"] .t5-pick .od{color:#a16207}
  :root[data-theme="light"] .vizbox h4,:root[data-theme="light"] .rp-sec{color:#0f172a}
  :root[data-theme="light"] .freshbar{background:linear-gradient(90deg,rgba(2,132,199,.06),rgba(15,23,42,.01))}
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{margin:0;background:
      radial-gradient(1200px 600px at 12% -10%, #12203a 0%, transparent 60%),
      radial-gradient(900px 500px at 100% 0%, #101a2e 0%, transparent 55%), var(--bg);
    color:var(--tx);font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",Roboto,sans-serif;
    -webkit-font-smoothing:antialiased}
  .num{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
  a{color:var(--acc);text-decoration:none}
  /* ★ 2026-09-18 WIG-A2：移动端双击缩放有 ~300ms 延迟 —— 交互元素显式声明 manipulation。
     （本页有手机端专项，实测 430/390/360 三档在用。） */
  a,button,select,summary,[role="button"],label,.segb,.lv-stamp{touch-action:manipulation}
  header{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);
    background:linear-gradient(180deg,rgba(8,13,24,.97),rgba(8,13,24,.86));border-bottom:1px solid var(--line)}
  .hwrap{max-width:1560px;margin:0 auto;padding:var(--s3) var(--s5) var(--s2);display:flex;gap:var(--s4);align-items:center;flex-wrap:wrap}
  .brand{display:flex;align-items:center;gap:var(--s3);min-width:250px}
  .logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,var(--acc),var(--pur));
    display:grid;place-items:center;font-size:20px;box-shadow:0 4px 14px rgba(56,189,248,.35)}
  h1{font-size:var(--fs3);margin:0;letter-spacing:.3px}
  .sub{font-size:var(--fs6);color:var(--mut)}
  .search{position:relative;margin-left:auto}
  .search input{background:var(--card);border:1px solid var(--line2);color:var(--tx);
    padding:10px 14px 10px 34px;border-radius:10px;width:280px;outline:none;font-size:var(--fs5);
    min-height:40px;transition:border-color var(--t),box-shadow var(--t)}
  .search input:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(56,189,248,.15)}
  .search::before{content:"⌕";position:absolute;left:11px;top:9px;color:var(--mut2);font-size:16px}
  /* 分组导航 */
  nav{display:flex;gap:var(--s3);flex-wrap:wrap;flex:1 1 100%;padding-bottom:var(--s1);align-items:flex-start}
  .ngroup{border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02);padding:var(--s1) 6px}
  .ngt{background:none;border:none;color:var(--tx);font:600 12.5px/1 inherit;cursor:pointer;
    padding:var(--s2) 6px;border-radius:var(--r-tag);display:flex;gap:6px;align-items:center;
    min-height:32px;transition:background var(--t)}
  .ngt:hover{background:var(--card2)}
  .ngt i{font-style:normal;color:var(--mut2);font-size:var(--fs6);border:1px solid var(--line2);
    border-radius:999px;padding:0 6px}
  .ngt .cv{font-size:10px;color:var(--mut2);transition:transform var(--t)}
  .ngroup.closed .cv{transform:rotate(-90deg)}
  .ngs{display:flex;gap:5px;flex-wrap:wrap;padding:var(--s1) var(--s1) 2px}
  .ngroup.closed .ngs{display:none}
  nav a{padding:6px 12px;border-radius:999px;color:var(--mut);font-size:var(--fs6);
    border:1px solid transparent;white-space:nowrap;transition:background var(--t),color var(--t);
    min-height:32px;display:inline-flex;align-items:center}
  nav a:hover{color:var(--tx);background:var(--card2)}
  nav a.on{color:#04121f;background:linear-gradient(135deg,var(--acc),var(--acc2));font-weight:600}
  /* 工具栏 */
  .toolbar{max-width:1560px;margin:0 auto;padding:0 var(--s5) var(--s2);display:flex;gap:var(--s2);align-items:center;
    flex-wrap:wrap;font-size:var(--fs5);color:var(--mut)}
  .toolbar select,.toolbar button{background:var(--card);border:1px solid var(--line2);color:var(--tx);
    border-radius:8px;padding:7px 10px;font-size:var(--fs5);cursor:pointer;min-height:34px;
    transition:border-color var(--t),color var(--t)}
  .toolbar select:hover,.toolbar button:hover{border-color:var(--acc);color:var(--acc)}
  .toolbar label{display:flex;gap:6px;align-items:center;cursor:pointer;padding:6px 12px;
    border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.02);
    min-height:34px;transition:border-color var(--t)}
  .toolbar label:hover{border-color:var(--line2)}
  .toolbar input[type=checkbox]{accent-color:var(--acc);cursor:pointer;width:15px;height:15px}
  main{max-width:1560px;margin:0 auto;padding:var(--s5) var(--s5) var(--s6)}
  section{margin:0 0 var(--s5)}
  .card{background:linear-gradient(180deg,var(--card),var(--bg2));border:1px solid var(--line);
    border-radius:var(--r-card);box-shadow:var(--sh1);overflow:hidden;transition:box-shadow var(--t),border-color var(--t)}
  .card:hover{box-shadow:var(--sh2);border-color:var(--line2)}
  .card>h2{margin:0;padding:var(--s4);font-size:var(--fs3);border-bottom:1px solid var(--line);
    display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
  .card>h2 .tag{font-size:var(--fs6);color:var(--mut);font-weight:400;border:1px solid var(--line2);
    padding:3px 10px;border-radius:var(--r-tag)}
  .card>h2 .anchor{margin-left:auto;color:var(--mut2);font-size:var(--fs5);opacity:.5;
    padding:2px 6px;border-radius:var(--r-tag);transition:opacity var(--t),color var(--t)}
  .card>h2 .anchor:hover{opacity:1;color:var(--acc)}
  .body{padding:var(--s4) var(--s4) var(--s4)}
  .read{color:var(--mut2);font-size:var(--fs5);line-height:1.8;margin:0 0 var(--s3);
    border-left:2px solid var(--line2);padding-left:var(--s3)}
  .kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(152px,1fr));gap:var(--s3)}
  .kpi{background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);
    border-radius:var(--r-card);padding:var(--s3) var(--s4);position:relative;overflow:hidden;
    transition:transform var(--t),border-color var(--t),box-shadow var(--t)}
  .kpi:hover{transform:translateY(-2px);border-color:var(--line2);box-shadow:var(--sh2)}
  .kpi .v{font-size:var(--fs1);font-weight:700;letter-spacing:-.5px}
  .kpi .l{font-size:var(--fs6);color:var(--mut)}
  .kpi .x{font-size:var(--fs6);color:var(--mut2);margin-top:3px}
  .kpi::after{content:"";position:absolute;inset:0 0 auto 0;height:2px;
    background:linear-gradient(90deg,var(--acc),var(--pur))}
  /* 首屏紧凑 KPI 条（不用滚动就能看到今天的结论） */
  .t5-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:var(--s2);margin:0 0 var(--s3)}
  .t5-kpi{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:10px;
    padding:var(--s2) var(--s3);min-width:0}
  .t5-kpi b{display:block;font-size:var(--fs2);font-weight:800;line-height:1.15;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;text-align:right}
  .t5-kpi span{color:var(--mut2);font-size:var(--fs6);display:block;text-align:right}
  .t5-kpi.ok b{color:var(--ok)} .t5-kpi.warn b{color:var(--warn)} .t5-kpi.bad b{color:var(--bad)}
  /* ── 首屏数据截止时间条 ── */
  .freshbar{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;margin:0 0 var(--s3);
    padding:10px var(--s3);border:1px solid var(--line);border-radius:var(--r-card);
    background:linear-gradient(90deg,rgba(56,189,248,.07),rgba(255,255,255,.01))}
  .freshbar .ft{font-size:var(--fs5);font-weight:700;color:#fff;margin-right:var(--s1)}
  .fchip{display:inline-flex;align-items:baseline;gap:6px;font-size:var(--fs6);
    border:1px solid var(--line2);border-radius:999px;padding:3px 10px;color:var(--mut);
    background:rgba(255,255,255,.02)}
  .fchip b{font-weight:700;color:var(--tx);font-variant-numeric:tabular-nums;
    font-family:ui-monospace,Consolas,monospace}
  .fchip.ok{border-color:rgba(52,211,153,.5);color:#a7f3d0;background:rgba(52,211,153,.10)}
  .fchip.warn{border-color:var(--warn);color:#fde68a;background:rgba(251,191,36,.12)}
  .fchip.warn b{color:#fde68a}
  .fchip.red{border-color:var(--bad);color:#fecaca;background:rgba(248,113,113,.14)}
  .fchip.red b{color:#fecaca}
  .fchip.missing{border-style:dashed;color:var(--mut2)}
  .upd{font-size:var(--fs6);color:var(--mut2);font-weight:400;border-left:1px solid var(--line2);
    padding-left:var(--s2);margin-left:var(--s1)}
  table{width:100%;border-collapse:collapse;font-size:var(--fs5)}
  th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
  th{color:var(--mut);font-weight:600;font-size:var(--fs6);position:sticky;top:0;background:var(--card);
    cursor:pointer;user-select:none;z-index:2;transition:color var(--t)}
  th:hover{color:var(--tx)}
  /* 数字一律等宽 + 右对齐（列头对齐，便于纵向比大小） */
  table td.num,table th.num{text-align:right;font-variant-numeric:tabular-nums;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
  table td.num{font-size:var(--fs5)}
  tbody tr{transition:background var(--t)}
  tbody tr:nth-child(even){background:rgba(255,255,255,.018)}
  tbody tr:hover{background:rgba(56,189,248,.07)}
  td.k{font-weight:600;color:#fff}
  .ellip{max-width:280px;overflow:hidden;text-overflow:ellipsis;display:inline-block;
    vertical-align:bottom;white-space:nowrap}
  .more{align-self:center;background:var(--card2);border:1px solid var(--line2);color:var(--acc);
    border-radius:var(--r-tag);padding:8px 14px;font-size:var(--fs6);cursor:pointer;margin:0 0 var(--s2);
    min-height:36px;transition:border-color var(--t)}
  .more:hover{border-color:var(--acc)}
  .scroll{max-height:560px;overflow:auto;border-radius:10px;border:1px solid var(--line)}
  .heat td{text-align:center;font-size:var(--fs5);padding:5px 6px}
  .heat th{text-align:center;font-size:var(--fs6)}
  .bar{height:8px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden;min-width:70px}
  .bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),var(--acc2))}
  .rowbar{display:flex;align-items:center;gap:10px}
  .pill{font-size:var(--fs6);padding:2px 8px;border-radius:999px;border:1px solid var(--line2);color:var(--mut)}
  .pill.ok{color:#052e1a;background:var(--ok);border-color:transparent;font-weight:600}
  /* 徽标三档（2026-09-15）：负 EV / 不值得下 属于**警示**而非致命，
     红留给「数据缺失 / 模型未覆盖」这类真正的致命项。
     原来 103 枚实心红胶囊是深色页"满屏红"的最大来源。 */
  .pill.bad{color:#3a2a04;background:var(--warn);border-color:transparent;font-weight:600}
  .pill.warn{color:#3a2a04;background:var(--warn);border-color:transparent;font-weight:600}
  .grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
  .fx{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);
    border-radius:12px;padding:12px 14px;transition:.18s}
  .fx:hover{border-color:var(--line2);transform:translateY(-2px)}
  .fx .t{display:flex;justify-content:space-between;gap:10px;font-weight:600;font-size:14px}
  .fx .meta{color:var(--mut);font-size:var(--fs5);margin:3px 0 9px}
  .pb{display:flex;height:9px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.06)}
  .pb i{display:block;height:100%}
  .pb .h{background:linear-gradient(90deg,#22d3ee,#38bdf8)}
  .pb .d{background:#64748b}
  .pb .a{background:linear-gradient(90deg,#f472b6,#a78bfa)}
  .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
  .chip{font-size:var(--fs6);color:var(--mut);background:rgba(255,255,255,.04);
    border:1px solid var(--line);border-radius:7px;padding:2px 7px}
  .muted{color:var(--mut)}
  .empty{color:var(--mut2);font-size:var(--fs4);padding:10px 0}
  .emptybox{border:1px dashed var(--line2);border-radius:10px;padding:14px 16px;color:var(--mut);
    font-size:var(--fs4);line-height:1.85;background:rgba(255,255,255,.015)}
  .emptybox b{color:var(--tx)}
  .emptybox .li{display:block;padding-left:14px;position:relative}
  .emptybox .li:before{content:"▸";position:absolute;left:0;color:var(--warn)}
  footer{max-width:1560px;margin:0 auto;padding:26px 22px 70px;color:var(--mut2);font-size:var(--fs5);
    line-height:1.9}
  footer b{color:var(--mut)}
  .note{border-left:3px solid var(--acc);padding:8px 12px;background:rgba(56,189,248,.06);
    border-radius:0 8px 8px 0;color:var(--mut);font-size:12.5px;margin:10px 0}
  .insight{background:linear-gradient(90deg,rgba(56,189,248,.10),rgba(167,139,250,.05));
    border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:0 10px 10px 0;
    padding:10px 14px;margin:0 0 13px;color:#cbd5e1;font-size:var(--fs4);line-height:1.8}
  .insight b{color:#fff}
  .insight .li{display:block;padding-left:14px;position:relative}
  .insight .li:before{content:"▸";position:absolute;left:0;color:var(--acc)}
  /* ── 今日竞彩五玩法专版 ── */
  .t5-head{background:linear-gradient(90deg,rgba(52,211,153,.12),rgba(56,189,248,.06));
    border:1px solid var(--line);border-left:3px solid var(--ok);border-radius:0 10px 10px 0;
    padding:12px 16px;margin:0 0 14px;color:#d7e3f4;font-size:var(--fs4);line-height:1.85}
  .t5-head b{color:#fff}
  .t5-head .li{display:block;padding-left:16px;position:relative}
  .t5-head .li:before{content:"▸";position:absolute;left:0;color:var(--ok)}
  /* ══ 每日预测（五玩法 + 扫盘计划单）══════════════════════════════════ */
  .dp-stamp{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;margin:0 0 var(--s3);
    padding:10px var(--s3);border:1px solid var(--line2);border-radius:var(--r-card);
    background:linear-gradient(90deg,rgba(52,211,153,.10),rgba(56,189,248,.04))}
  .dp-stamp .big{font-size:var(--fs3);font-weight:800;color:#fff}
  .dp-stamp .ago{font-size:var(--fs5);font-weight:700;color:var(--ok)}
  .dp-stamp .rl{font-size:var(--fs6);color:var(--mut)}
  .dp-sub{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;margin:var(--s4) 0 var(--s2)}
  .dp-sub h3{margin:0;font-size:var(--fs3)}
  .dp-sub .sp{margin-left:auto;display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center}
  .dpx{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px}
  .dpcard{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);
    border-radius:12px;overflow:hidden;min-width:0}
  .dpcard.anchor{box-shadow:inset 3px 0 0 var(--ok)}
  .dpcard.synth{box-shadow:inset 3px 0 0 var(--warn)}
  .dpcard.nomodel{box-shadow:inset 3px 0 0 var(--bad)}
  .dpc-h{padding:9px 12px 8px;border-bottom:1px solid var(--line)}
  .dpc-l1{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:var(--fs6);color:var(--mut)}
  .dpc-vs{font-weight:700;font-size:14px;margin:5px 0 2px;line-height:1.35}
  .dpc-vs .en{color:var(--mut2);font-weight:400;font-size:var(--fs6)}
  .dpc-ko{color:var(--mut2);font-size:var(--fs6)}
  .dpc-plays{display:flex;flex-direction:column}
  .dpr{display:grid;grid-template-columns:66px minmax(0,1fr) 52px 48px 58px 52px;
    gap:6px;align-items:center;padding:6px 12px;border-bottom:1px solid var(--line);
    font-size:var(--fs6);min-width:0}
  .dpr:last-child{border-bottom:none}
  .dpr .pn{color:var(--mut);white-space:nowrap}
  .dpr .pk{font-weight:700;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dpr .num{text-align:right;font-variant-numeric:tabular-nums;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
  .dpr .ev.ok{color:var(--ok);font-weight:700} .dpr .ev.bad{color:var(--bad)}
  .dpr .ev.warn{color:var(--warn)}
  .dpr .anchor{color:var(--pur);font-size:10px;white-space:nowrap}
  .dpr.na{opacity:.62}
  .dpc-f{padding:8px 12px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;
    border-top:1px solid var(--line);background:rgba(255,255,255,.015)}
  .dpgap{padding:8px 12px;color:var(--warn);font-size:var(--fs6);line-height:1.65;
    background:rgba(251,191,36,.07);border-top:1px solid var(--line)}
  /* ── ★ B · 今日扫盘计划单（概率排序）· 单关 + 串关 ───────────────────────── */
  /* 注意：这里**不能**用 display:flex —— band 内容里混着文本节点与 <b>，
     flex 会把每一段文本/<b> 当成独立 flex item 逐行摊开（375px 实测会散成 5 行）。 */
  #s-dpred .pp-band{display:block;margin:0 0 var(--s3);
    padding:10px var(--s3);border:1px solid var(--line2);border-radius:var(--r-card);
    background:linear-gradient(90deg,rgba(56,189,248,.12),rgba(167,139,250,.05));
    font-size:var(--fs6);line-height:1.75;color:var(--tx)}
  #s-dpred .pp-band b{color:var(--tx)}
  #s-dpred .pp-band em{font-style:normal;color:var(--acc);font-weight:700}
  #s-dpred .pp-sub{font-size:var(--fs6);color:var(--mut);margin:0 0 var(--s2);line-height:1.7}
  #s-dpred .pp-sub b{color:var(--tx)}
  #s-dpred .pp-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px}
  @media (max-width:1180px){#s-dpred .pp-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
  @media (max-width:820px){#s-dpred .pp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @media (max-width:560px){#s-dpred .pp-grid{grid-template-columns:1fr}}
  #s-dpred .pp-col{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);
    border-radius:12px;overflow:hidden;min-width:0;display:flex;flex-direction:column;--pp:var(--acc)}
  #s-dpred .pp-col-h{padding:9px 12px 8px;border-bottom:1px solid var(--line);
    display:flex;gap:7px;align-items:center;flex-wrap:wrap}
  #s-dpred .pp-col-h b{font-size:var(--fs4);font-weight:800;color:var(--tx)}
  #s-dpred .pp-col-h i{font-style:normal;font-size:10px;padding:2px 6px;border-radius:999px;
    border:1px solid var(--line2);color:var(--mut);white-space:nowrap}
  #s-dpred .pp-item{padding:9px 12px 10px;border-bottom:1px solid var(--line);min-width:0}
  #s-dpred .pp-item:last-child{border-bottom:none}
  #s-dpred .pp-r1{display:flex;gap:6px;align-items:center;flex-wrap:wrap;
    font-size:10.5px;color:var(--mut);margin-bottom:6px}
  #s-dpred .pp-r1 .rank{display:inline-flex;width:15px;height:15px;border-radius:5px;
    align-items:center;justify-content:center;font-weight:800;font-size:10px;
    color:#04121f;background:var(--pp)}
  #s-dpred .pp-team{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:700;
    line-height:1.35;min-width:0;margin-bottom:2px;color:var(--tx)}
  #s-dpred .pp-team>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #s-dpred .pp-crest{width:19px !important;height:19px !important;object-fit:contain;
    border-radius:4px;flex:0 0 auto;background:rgba(255,255,255,.05)}
  #s-dpred .pp-crest.mono{display:inline-flex;align-items:center;justify-content:center;
    font-size:9px;font-weight:800;color:var(--mut);background:rgba(255,255,255,.07)}
  #s-dpred .pp-pick{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:7px}
  #s-dpred .pp-pick .pk{font-size:15px;font-weight:800;color:var(--tx)}
  #s-dpred .pp-pick .pv{font-size:21px;font-weight:800;color:var(--pp);
    font-variant-numeric:tabular-nums;line-height:1}
  #s-dpred .pp-kv{display:flex;gap:10px;flex-wrap:wrap;margin-top:5px;
    font-size:10.5px;color:var(--mut)}
  #s-dpred .pp-kv b{font-weight:700;font-variant-numeric:tabular-nums;color:var(--tx)}
  #s-dpred .pp-kv b.pos{color:var(--ok)} #s-dpred .pp-kv b.neg{color:var(--bad)}
  #s-dpred .pp-bar{height:5px;border-radius:3px;background:rgba(255,255,255,.08);
    margin-top:7px;overflow:hidden}
  #s-dpred .pp-bar i{display:block;height:100%;border-radius:3px;background:var(--pp)}
  #s-dpred .pp-empty{padding:11px 12px;font-size:11px;color:var(--mut);line-height:1.75}
  #s-dpred .pp-pl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin-top:11px}
  @media (max-width:900px){#s-dpred .pp-pl{grid-template-columns:1fr}}
  #s-dpred .pp-pcard{background:linear-gradient(180deg,var(--card2),var(--card));
    border:1px solid var(--line2);border-radius:12px;padding:12px 13px;min-width:0}
  #s-dpred .pp-pcard .hd{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:9px}
  #s-dpred .pp-pcard .hd b{font-size:15px;font-weight:800;color:var(--tx)}
  #s-dpred .pp-pcard .hd i{font-style:normal;font-size:10.5px;color:var(--mut)}
  #s-dpred .pp-legs{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
  #s-dpred .pp-leg{display:flex;gap:7px;align-items:center;font-size:11.5px;min-width:0;color:var(--tx)}
  #s-dpred .pp-leg .lg{flex:0 0 auto;font-size:10px;padding:1px 6px;border-radius:5px;
    border:1px solid var(--line2);color:var(--mut);white-space:nowrap}
  #s-dpred .pp-leg .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}
  #s-dpred .pp-leg .vv{font-variant-numeric:tabular-nums;color:var(--mut);white-space:nowrap}
  #s-dpred .pp-big{display:flex;gap:var(--s3);flex-wrap:wrap;
    border-top:1px solid var(--line);padding-top:10px}
  #s-dpred .pp-big div{display:flex;flex-direction:column;gap:2px}
  #s-dpred .pp-big span{font-size:10px;color:var(--mut);white-space:nowrap}
  #s-dpred .pp-big b{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--tx)}
  #s-dpred .pp-big b.pos{color:var(--ok)} #s-dpred .pp-big b.neg{color:var(--bad)}
  #s-dpred .pp-warn{margin-top:var(--s3);padding:10px var(--s3);border-radius:var(--r-card);
    border:1px solid rgba(251,191,36,.35);background:rgba(251,191,36,.07);
    font-size:var(--fs6);line-height:1.8;color:var(--tx)}
  #s-dpred .pp-warn b{color:var(--warn)}
  .dptbl-wrap{max-height:620px;overflow:auto;border-radius:10px;border:1px solid var(--line)}
  .dptbl{width:100%;border-collapse:collapse;font-size:var(--fs6)}
  .dptbl th,.dptbl td{padding:7px 9px;border-bottom:1px solid var(--line);text-align:left;
    vertical-align:top;white-space:normal}
  .dptbl th{position:sticky;top:0;background:var(--card);z-index:2;color:var(--mut);
    font-size:var(--fs6);cursor:pointer;white-space:nowrap}
  .dptbl td.c{min-width:96px}
  .dptbl .cg{display:flex;flex-direction:column;gap:2px}
  .dptbl .cg .a{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dptbl .cg .b{color:var(--mut);font-size:10px;font-variant-numeric:tabular-nums;
    font-family:ui-monospace,Consolas,monospace;white-space:nowrap}
  .dptbl .cg .b .pos{color:var(--ok);font-weight:700}
  .dptbl .cg .b .neg{color:var(--bad)}
  .dptbl .cg .b .off{color:var(--warn)}
  .dptbl tr.pos{background:rgba(52,211,153,.07)}
  .dptbl tr:hover{background:rgba(56,189,248,.08)}
  .dptbl td.kk{font-weight:700;color:#fff;white-space:nowrap}
  .dpplan{width:100%;border-collapse:collapse;font-size:var(--fs5)}
  .dpplan th,.dpplan td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;
    white-space:nowrap}
  .dpplan th{background:var(--card);color:var(--mut);font-size:var(--fs6);position:sticky;top:0;z-index:2}
  .dpplan td.num{text-align:right;font-variant-numeric:tabular-nums;
    font-family:ui-monospace,Consolas,monospace}
  .dpplan td.wrap{white-space:normal;min-width:220px;max-width:420px}
  .dpplan tr.ok{background:rgba(52,211,153,.07)}
  .dpplan tr.watch{background:rgba(251,191,36,.06)}
  .dpplan tr.mute{opacity:.62}
  .dpempty{border:1px dashed var(--line2);border-radius:12px;padding:16px 18px;color:var(--mut);
    font-size:var(--fs4);line-height:1.9;background:rgba(255,255,255,.015)}
  .dpempty h4{margin:0 0 8px;color:var(--tx);font-size:var(--fs3)}
  .dpempty .li{display:block;padding-left:16px;position:relative}
  .dpempty .li:before{content:"▸";position:absolute;left:0;color:var(--warn)}
  .dpnote{border-left:3px solid var(--bad);padding:9px 13px;border-radius:0 8px 8px 0;
    background:rgba(248,113,113,.08);color:#fecaca;font-size:12.5px;line-height:1.8;margin:10px 0}
  .dpnote b{color:#fff}
  .dptag{display:inline-block;font-size:10px;line-height:1.6;border-radius:6px;padding:1px 7px;
    border:1px solid var(--line2);color:var(--mut);white-space:nowrap}
  .dptag.mkt{border-color:rgba(167,139,250,.55);color:#ddd6fe;background:rgba(167,139,250,.14)}
  .dptag.mdl{border-color:rgba(56,189,248,.45);color:#bae6fd;background:rgba(56,189,248,.12)}
  .dptag.ok{border-color:rgba(var(--ok-b),.5);color:var(--ok);background:rgba(var(--ok-b),.12)}
  .dptag.warn{border-color:rgba(var(--warn-b),.55);color:var(--warn);background:rgba(var(--warn-b),.12)}
  /* 「信心 低」是**警示**不是致命 → 归琥珀（原来是 16 枚红描边红字） */
  .dptag.bad{border-color:rgba(var(--warn-b),.55);color:var(--warn);background:rgba(var(--warn-b),.12)}
  .dpseg{display:inline-flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden}
  .dpseg button{background:transparent;border:0;color:var(--mut);padding:7px 12px;font-size:var(--fs6);
    cursor:pointer;min-height:36px;font-family:inherit}
  .dpseg button.on{background:rgba(56,189,248,.16);color:#fff;font-weight:700}
  .t5-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  .t5-col{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);
    border-radius:12px;display:flex;flex-direction:column;min-width:0}
  .t5-ct{padding:10px 12px 8px;border-bottom:1px solid var(--line)}
  .t5-ct b{font-size:14px}
  .t5-ct .rd{color:var(--mut2);font-size:var(--fs6);line-height:1.6;margin-top:4px}
  .t5-ct .cnt{color:var(--mut);font-size:var(--fs6);margin-top:5px;display:flex;gap:6px;flex-wrap:wrap}
  .t5-card{padding:10px 12px;border-bottom:1px solid var(--line);position:relative}
  .t5-card:last-child{border-bottom:none}
  .t5-card.pos{box-shadow:inset 3px 0 0 var(--ok)}
  .t5-card.neg{box-shadow:inset 3px 0 0 var(--bad)}
  .t5-card.na{box-shadow:inset 3px 0 0 var(--warn)}
  .t5-num{display:inline-block;background:rgba(56,189,248,.16);border:1px solid var(--line2);
    border-radius:6px;padding:0 6px;font-size:var(--fs6);font-weight:700;color:#bfe6ff}
  .t5-lg{color:var(--mut);font-size:var(--fs6)}
  .t5-vs{font-weight:700;font-size:13.5px;margin:5px 0 1px;line-height:1.35}
  .t5-vs .en{color:var(--mut2);font-weight:400;font-size:var(--fs6)}
  .t5-pick{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:7px 0 3px}
  .t5-pick .pk{font-size:var(--fs2);font-weight:800;letter-spacing:-.3px}
  .t5-pick .od{font-size:15px;font-weight:700;color:#ffe08a}
  .t5-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0 6px}
  .t5-metrics div{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:8px;
    padding:5px 7px;text-align:center;min-width:0}
  .t5-metrics .lb{font-size:10px;color:var(--mut2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .t5-metrics .vl{font-size:14px;font-weight:700}
  .t5-metrics .vl.ok{color:var(--ok)} .t5-metrics .vl.bad{color:var(--bad)}
  .t5-metrics .vl.warn{color:var(--warn)}
  .t5-why{color:var(--mut);font-size:var(--fs6);line-height:1.65}
  /* ══ 徽标语义三档（fx2 2026-09-15）═══════════════════════════════════
     病根：信息性徽标（合成行 / 三方均势 / 支持率 / 排名）与真正的警示
     （纯模型·无市场校准 / 无市场赔率 / 分歧超阈值 / 无盘口）历史上共用同一种红 ——
     73 枚「红描边 + 红字」在深色底上既刺眼又看不清，像处处是错。
     现在按语义分三档；CSS 这里的默认值本身就是**中性**，所以即使脚本没跑到，
     也不会再出现红徽标（脚本 fx2Badges() 负责按文字细分，见页尾）：
       信息类 → 中性（--mut / --line2 / --card2）
       警示类 → 琥珀（--warn 系，文字比底色亮一档）
       致命类 → 红（--bad 系），只有数据缺失/模型未覆盖这类才配红 */
  .t5-flags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
  .t5-flags span{font-size:10px;line-height:1.6;padding:1px 7px;border-radius:6px;
    border:1px solid var(--line2);color:var(--mut);background:var(--card2);white-space:nowrap}
  .t5-flags span.sup{border-color:var(--line2);color:var(--mut);background:var(--card2)}
  .t5-flags span.warn{border-color:rgba(var(--warn-b),.55);color:var(--warn);background:rgba(var(--warn-b),.12)}
  .t5-flags span.fatal{border-color:rgba(var(--bad-b),.55);color:var(--bad);background:rgba(var(--bad-b),.12)}
  .t5-time{color:var(--mut2);font-size:var(--fs6)}
  .t5-empty{padding:14px;color:var(--mut2);font-size:var(--fs5)}
  .na-badge{display:inline-block;background:var(--warn);color:#3a2a04;font-weight:700;border-radius:6px;
    padding:1px 7px;font-size:var(--fs6)}
  #totop{position:fixed;right:18px;bottom:18px;z-index:60;background:var(--card2);color:var(--tx);
    border:1px solid var(--line2);border-radius:999px;padding:9px 14px;cursor:pointer;font-size:var(--fs4);
    box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.2s}
  #totop.on{opacity:1;pointer-events:auto}
  .termrow{display:grid;grid-template-columns:200px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
  .termrow .th{font-weight:700;color:#fff}
  .termrow .th span{display:block;color:var(--mut2);font-size:var(--fs6);font-weight:400}
  .termrow .td{color:#cbd5e1;font-size:12.5px;line-height:1.75}
  .termrow .fml{display:inline-block;margin-top:4px;color:var(--acc);font-size:var(--fs6);
    background:rgba(56,189,248,.09);border:1px solid var(--line);border-radius:6px;padding:1px 7px}
  .hidden{display:none !important}
  /* ── 真实绩效分区（s-perf）── */
  .pf-pos{color:var(--ok)} .pf-neg{color:var(--bad)} .pf-warn{color:var(--warn)} .pf-mut{color:var(--mut2)}
  .pf-ci{color:var(--mut2);font-size:var(--fs6);font-variant-numeric:tabular-nums}
  .pf-kpi .v{font-size:var(--fs2);font-variant-numeric:tabular-nums;font-weight:800;text-align:right}
  .pf-kpi .l,.pf-kpi .x{text-align:right}
  .pf-mrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s2);align-items:baseline;
    border-bottom:1px dashed var(--line);padding:7px 0}
  .pf-mrow:last-child{border-bottom:0}
  .pf-mrow .k{color:var(--tx);font-size:var(--fs5);line-height:1.55;min-width:0}
  .pf-mrow .k em{display:block;font-style:normal;color:var(--mut2);font-size:var(--fs6)}
  .pf-mrow .v{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-variant-numeric:tabular-nums;font-size:var(--fs5);white-space:nowrap}
  .pf-mrow .v b,.pf-mrow .v span{display:block}
  .pf-mrow .v b{font-size:var(--fs4)}
  .pf-bar{height:12px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden;margin:5px 0 3px}
  .pf-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--acc),var(--pur))}
  .pf-bar.ph i{background:linear-gradient(90deg,var(--warn),#fcd34d)}
  .pf-lab{display:flex;justify-content:space-between;gap:var(--s2);font-size:var(--fs6);color:var(--mut2)}
  .pf-lab b{color:var(--tx);font-variant-numeric:tabular-nums}
  .pf-block{margin:0 0 var(--s3)}
  .pf-quote{border-left:3px solid var(--warn);padding:7px 11px;margin:7px 0;border-radius:0 8px 8px 0;
    background:rgba(251,191,36,.07);color:var(--tx);font-size:var(--fs5);line-height:1.75}
  .pf-honest .li{display:block;padding-left:15px;position:relative;color:var(--mut);
    font-size:var(--fs5);line-height:1.75;margin:5px 0}
  .pf-honest .li:before{content:"▸";position:absolute;left:0;color:var(--warn)}
  .pf-honest b{color:var(--tx)}
  @media (max-width:760px){
    .pf-mrow{grid-template-columns:minmax(0,1fr)}
    .pf-mrow .v{text-align:left;white-space:normal}
    .pf-kpi .v,.pf-kpi .l,.pf-kpi .x{text-align:left}
  }
  /* 窄屏：长 token（performance-*.json / pos_ev_sig / jc/ledger-report-…）必须能断，
     否则 grid 轨道的 min-content 会把 .vizbox 顶出视口（实测 375px 溢出） */
  #s-perf .vizbox,#s-perf .kpis,#s-perf .kpi{min-width:0}
  #s-perf .vizbox,#s-perf h4,#s-perf .sub2,#s-perf .pf-quote,#s-perf .pf-lab,
  #s-perf .pf-honest .li,#s-perf .pf-mrow .k,#s-perf .pf-mrow .v,#s-perf td,#s-perf th{
    overflow-wrap:anywhere;word-break:break-word}
  .badge-live{font-size:var(--fs6);color:var(--mut);border:1px solid var(--line2);border-radius:999px;padding:1px 7px}
  /* ── 打印按钮 ── */
  .pbtn{margin-left:auto;background:var(--card2);border:1px solid var(--line2);color:var(--tx);
    border-radius:8px;padding:4px 10px;font-size:var(--fs6);cursor:pointer}
  .pbtn:hover{border-color:var(--acc);color:var(--acc)}
  /* ── 每日日报（一页版）── */
  .report{background:linear-gradient(180deg,rgba(255,255,255,.02),transparent)}
  .rp-h{font-size:var(--fs3);font-weight:700;color:#fff;margin:0 0 8px}
  .rp-line{color:#dbe7f7;font-size:var(--fs4);line-height:1.9}
  .rp-line b{color:#fff}
  .rp-line .li{display:block;padding-left:16px;position:relative}
  .rp-line .li:before{content:"▸";position:absolute;left:0;color:var(--ok)}
  .rp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px;margin:10px 0 14px}
  .rp-k{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:9px;padding:7px 9px}
  .rp-k b{display:block;font-size:var(--fs2);font-weight:800}
  .rp-k span{color:var(--mut2);font-size:10.5px}
  .rp-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:9px;margin:8px 0 12px}
  .rp-p{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);
    border-radius:10px;padding:9px 11px;min-width:0}
  .rp-p.pos{box-shadow:inset 3px 0 0 var(--ok)}
  .rp-p.neg{box-shadow:inset 3px 0 0 var(--bad)}
  .rp-p.na{box-shadow:inset 3px 0 0 var(--warn)}
  .rp-p .pl{color:var(--mut2);font-size:10.5px}
  .rp-p .mn{font-weight:700;font-size:13px;margin:2px 0}
  .rp-p .pk{font-size:var(--fs3);font-weight:800;color:#fff}
  .rp-p .od{margin-left:6px;font-weight:700;color:#ffe08a}
  .rp-p .ev{font-size:var(--fs5);margin-top:2px}
  .rp-sec{margin:14px 0 6px;font-size:13px;font-weight:700;color:#dbe7f7;
    border-left:3px solid var(--acc);padding-left:9px}
  /* ── 关数—期望曲线 ── */
  .chartbox{background:rgba(255,255,255,.02);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
  .chartbox svg{width:100%;height:auto;display:block}
  .legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:var(--fs6);color:var(--mut)}
  .legend i{display:inline-block;width:16px;height:3px;border-radius:2px;margin-right:5px;vertical-align:middle}
  .cmb{border:1px solid var(--line);border-radius:11px;padding:11px 13px;margin-bottom:11px;
    background:linear-gradient(180deg,var(--card2),var(--card))}
  .cmb .ct{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap}
  .cmb .ct b{font-size:13.5px}
  .cmb .kpis2{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:7px;margin:8px 0}
  .cmb .kpis2 div{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:8px;
    padding:5px 7px;text-align:center}
  .cmb .kpis2 .lb{font-size:10px;color:var(--mut2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cmb .kpis2 .vl{font-size:13.5px;font-weight:700}
  .rulebox{border:1px solid rgba(251,191,36,.35);background:rgba(251,191,36,.07);border-radius:10px;
    padding:10px 13px;color:#fde68a;font-size:12.5px;line-height:1.8;margin:10px 0}
  .rulebox b{color:#fff}
  .mini{color:var(--mut2);font-size:var(--fs6)}
  /* ── 内联可视化（全部 SVG/CSS，零外链）── */
  .vizgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--s4)}
  .vizbox{background:rgba(255,255,255,.02);border:1px solid var(--line);border-radius:var(--r-card);
    padding:var(--s4)}
  .vizbox h4{margin:0 0 var(--s1);font-size:var(--fs4);color:#dbe7f7}
  .vizbox .sub2{color:var(--mut2);font-size:var(--fs6);margin-bottom:var(--s3);line-height:1.6}
  .vizbox svg{width:100%;height:auto;display:block}
  .hbar{display:grid;grid-template-columns:88px 1fr 74px;align-items:center;gap:var(--s2);margin:var(--s2) 0}
  .hbar .nm{color:var(--mut);font-size:var(--fs6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hbar .tr{height:10px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden}
  .hbar .tr i{display:block;height:100%;border-radius:999px;transition:width 420ms cubic-bezier(.4,0,.2,1)}
  .hbar .vl{text-align:right;font-size:var(--fs6);font-variant-numeric:tabular-nums;
    font-family:ui-monospace,Consolas,monospace;color:var(--tx)}
  .spark{display:inline-block;vertical-align:middle}
  .note-chip{display:inline-block;font-size:var(--fs6);color:var(--mut2);border:1px dashed var(--line2);
    border-radius:var(--r-tag);padding:2px 8px;margin-top:var(--s2)}
  /* 窄屏：单列 + 横向滚动 + 点击目标 ≥40px */
  @media (max-width:1200px){ .t5-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .dpx{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))} }
  @media (max-width:760px){
    .hwrap{padding:var(--s3) var(--s3) var(--s2)} main{padding:var(--s3)}
    .search input{width:100%} .search{margin-left:0;flex:1 1 100%}
    .t5-grid,.vizgrid{grid-template-columns:1fr}
    .grid2,.kpis{grid-template-columns:1fr}
    .t5-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
    .scroll{max-height:none;overflow-x:auto}
    table{font-size:var(--fs6)} th,td{padding:8px}
    .termrow{grid-template-columns:1fr}
    .brand{min-width:0}
    .toolbar select,.toolbar button,.toolbar label{min-height:40px}
    nav a,.ngt,#tabs a,#nav a{min-height:40px}
    .pbtn,.tbtn{min-height:40px}
    /* 每日预测：窄屏单列卡片；矩阵表横向滚动（行内不再挤压） */
    .dpx{grid-template-columns:1fr}
    .dpr{grid-template-columns:58px minmax(0,1fr) 44px 46px 54px 46px;gap:4px;padding:6px 10px}
    .dptbl{font-size:11px}
    .dptbl td.c{min-width:120px}
    .dptbl-wrap{overflow-x:auto}
    .dpseg button{min-height:40px;padding:9px 11px}
    .dp-sub .sp{gap:var(--s1)}
  }
  /* 打印：白底黑字，隐藏导航与工具条 */
  /* ══════════ 今日推荐 · 分享版（白底单列，适合作品导出） ══════════ */
  .sharecard{max-width:900px;margin:0 auto;background:#fff !important;color:#0f172a;
    border-color:#dbe2ea !important;box-shadow:0 4px 20px rgba(15,23,42,.10) !important}
  .sharecard>h2{background:#fff;border-bottom:1px solid #e6ebf2;color:#0f172a;gap:8px}
  .sheet{padding:var(--s5) var(--s5) var(--s6);font-size:13px;line-height:1.75;color:#1e293b}
  .sheet h1{font-size:22px;margin:0 0 4px;color:#0f172a;letter-spacing:-.3px}
  .sheet .meta{color:#64748b;font-size:12px;margin-bottom:18px;padding-bottom:12px;border-bottom:2px solid #eef2f7}
  .sheet h3{font-size:15px;margin:22px 0 8px;padding-left:9px;border-left:3px solid #0284c7;color:#0f172a}
  .sheet .note2{background:#f6f9fc;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px;
    font-size:12.5px;color:#475569;line-height:1.8;margin-bottom:14px}
  .sheet .note2 b{color:#0f172a}
  .sheet table{width:100%;border-collapse:collapse;font-size:11.5px;color:#0f172a}
  .sheet th,.sheet td{border-bottom:1px solid #eef2f7;padding:5px 7px;text-align:left;vertical-align:top;
    white-space:normal}
  .sheet th{background:#f4f7fb;color:#475569;font-weight:600;font-size:11px;position:static}
  .sheet td.num,.sheet th.num{text-align:right;font-variant-numeric:tabular-nums;
    font-family:ui-monospace,Consolas,monospace;white-space:nowrap}
  .sheet tbody tr:nth-child(even){background:#fafcfe}
  .sheet .pill{border-color:#dbe2ea;color:#475569;background:#f4f7fb}
  .sheet .pill.ok{background:#dcfce7;color:#14532d;border-color:transparent}
  .sheet .pill.bad{background:#fee2e2;color:#7f1d1d;border-color:transparent}
  .sheet .pill.warn{background:#fef3c7;color:#78350f;border-color:transparent}
  .sheet .rec{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:10px;margin:8px 0 4px}
  .sheet .rc{border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;background:#fff;break-inside:avoid}
  .sheet .rc .no{font-size:11px;color:#0284c7;font-weight:700}
  .sheet .rc .vs{font-weight:700;font-size:13.5px;margin:2px 0 5px}
  .sheet .rc .pk{font-size:16px;font-weight:800;color:#0f172a}
  .sheet .rc .od{color:#b45309;font-weight:700;margin-left:6px}
  .sheet .rc .kv{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:#475569;margin-top:3px}
  .sheet .rc .why{font-size:11.5px;color:#64748b;margin-top:4px;line-height:1.6}
  .sheet .srcmark{display:inline-block;font-size:10.5px;border-radius:6px;padding:1px 6px;margin-left:4px}
  .sheet .srcmark.official{background:#e0f2fe;color:#075985}
  .sheet .srcmark.model{background:#fef3c7;color:#78350f}
  .sheet .srcmark.off{background:#f1f5f9;color:#64748b}
  .sheet .toc{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px;font-size:12px}
  .sheet .toc a{color:#0284c7}
  .sheet .foot{margin-top:20px;padding-top:12px;border-top:2px solid #eef2f7;color:#64748b;font-size:11.5px}
  @media print{
    .sharecard{max-width:none;border:none !important;box-shadow:none !important}
    .sheet{padding:0;font-size:9.5px}
    .sheet h1{font-size:16pt}
    .sheet table{font-size:8pt}
    .sheet th,.sheet td{padding:2px 3px}
    .sheet thead{display:table-header-group}
    .sheet tr,.sheet .rc,.sheet .note2{break-inside:avoid}
    .sheet h3{break-after:avoid}
    #s-share .scroll{max-height:none !important;overflow:visible !important}
  }
  /* ══════════ 决策工具 ══════════ */
  .toolform{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--s2);margin-bottom:var(--s3)}
  .toolform label{display:flex;flex-direction:column;gap:4px;font-size:var(--fs6);color:var(--mut2)}
  .toolform input,.toolform select{background:var(--card);border:1px solid var(--line2);color:var(--tx);
    border-radius:8px;padding:7px 9px;font-size:var(--fs5);min-height:36px;outline:none;
    transition:border-color var(--t)}
  .toolform input:focus,.toolform select:focus{border-color:var(--acc)}
  .kc-out{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:10px;
    padding:var(--s3);font-size:var(--fs5);line-height:1.9;min-height:64px}
  .kc-out b{color:#fff;font-variant-numeric:tabular-nums;font-family:ui-monospace,Consolas,monospace}
  .kc-out .big{font-size:var(--fs2);font-weight:800;color:var(--ok);
    font-family:ui-monospace,Consolas,monospace}
  .kc-out .warnbig{color:var(--bad)}
  :root[data-theme="light"] .kc-out b,:root[data-theme="light"] .kc-out .big{color:#0f172a}
  .ckitem{display:flex;gap:var(--s2);align-items:flex-start;padding:var(--s2) 0;
    border-bottom:1px solid var(--line);font-size:var(--fs5);cursor:pointer;min-height:40px}
  .ckitem input{width:18px;height:18px;accent-color:var(--ok);margin-top:2px;cursor:pointer;flex:0 0 auto}
  .ckitem span small{display:block;color:var(--mut2);font-size:var(--fs6)}
  /* ══ 今日页 IA：区块折叠（2026-09-15）══════════════════════════════════
     .sec-collapsed = 可折叠区块；默认**收起**（只留区块头）。
     展开态加 .sec-open；收起时把 h2 之后的兄弟节点隐藏（不碰 h2 自身，标签/锚点照常）。
     用 class 切换而非改 display 值，展开后各区块原有布局（grid/flex）原样恢复。 */
  section.sec-collapsed > .card > h2{cursor:pointer;user-select:none}
  section.sec-collapsed:not(.sec-open) > .card > *:not(h2){display:none !important}
  .sec-tgl{opacity:.85}
  section.sec-collapsed > .card > h2:hover .sec-tgl{opacity:1}
  /* ⑧ 怎么读 · 口径：10 处说明条搬进来后的分条 */
  #notes-body .notes-item{padding:6px 0;border-bottom:1px dashed var(--line)}
  #notes-body .notes-item:last-child{border-bottom:0}
  .star{cursor:pointer;font-size:15px;line-height:1;padding:2px 4px;border-radius:6px;
    transition:transform var(--t),background var(--t);user-select:none}
  .star:hover{background:rgba(251,191,36,.16);transform:scale(1.12)}
  .star.on{color:var(--warn)}
  .deadline{font-size:var(--fs6);color:var(--mut2);font-variant-numeric:tabular-nums;
    font-family:ui-monospace,Consolas,monospace}
  .deadline.soon{color:var(--warn);font-weight:700}  .deadline.past{color:var(--mut2);text-decoration:line-through}
  /* ══════════ 单文件 Web 应用外壳（顶栏 / 水平 Tab / Hero / 子导航 / 12 栅格）══════════ */
  .topbar{max-width:1560px;margin:0 auto;padding:var(--s3) var(--s5) var(--s2);
    display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap}
  /* ★ LOGO2（2026-09-16）—— 页头标记换成「轨道星 v2」（design/logo2 方向 01，深底版）。
     裸标：无方底、无渐变、无阴影，与对照页 ④ 页头实拍完全一致（标记 28px / 标题 = 1.47× 字高）。
     盒子仍是 34px（与改前同尺寸）→ 顶栏高度与换行行为**零变化**，品牌文字一个像素没动。
     ⚠ 标记色写死在 SVG 属性上（#c8ff4d + #ffffff），**不要**换成 var(--acc)：
       页头底色是恒定深色（header 的渐变写死 rgba(8,13,24)，:root[data-theme="light"] 不覆盖它），
       而 --acc 会随浅色主题变成 #0284c7 蓝色，那样标记会和页头脱节。 */
  .topbar .logo2{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;
    background:none;border-radius:0;box-shadow:none;transition:filter .18s ease}
  .topbar .logo2 svg{width:28px;height:28px;display:block}
  .topbar .nm{font-size:var(--fs3);font-weight:800;letter-spacing:.2px}
  .topbar .nm small{display:block;font-size:var(--fs6);color:var(--mut2);font-weight:400;letter-spacing:0}
  /* ★ ONSALE960（2026-09-16）—— 顶栏「在售」三态行。口径 = **以官网逐场原字为准**。
     ⚠ 手机端必须能换行：里面有一枚「覆盖缺口」长徽标（含队名 + 开赛时间），
       给它 nowrap 会直接把整页顶宽 —— 实测 390 视口 scrollWidth 480（溢出 90px）、
       430 视口溢出 50px、360 视口溢出 120px，而越界元素**只有 .ob-g 这一个**（461px 宽）。
       所以三条一起给：容器 flex-wrap + 每个子项 min-width:0/max-width:100% + overflow-wrap:anywhere。
       （判据：真浏览器量 documentElement.scrollWidth，不要靠读 CSS 猜。） */
  .onsalebar{max-width:1560px;margin:0 auto 8px;padding:6px 10px;display:flex;gap:10px;
    flex-wrap:wrap;align-items:center;font-size:var(--fs6);color:var(--mut);min-width:0;
    border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:var(--r-tag);
    background:rgba(200,255,77,.05)}
  .onsalebar > span{min-width:0;max-width:100%;overflow-wrap:anywhere}
  .onsalebar .ob-l{color:var(--mut2)}
  .onsalebar .ob-t{color:var(--tx);font-weight:700;font-variant-numeric:tabular-nums}
  .onsalebar .ob-c,.onsalebar .ob-s,.onsalebar .ob-g{padding:1px 8px;border-radius:999px;
    border:1px solid var(--line2);font-variant-numeric:tabular-nums}
  .onsalebar .ob-c{white-space:nowrap}
  .onsalebar .ob-c.ok{border-color:var(--ok);color:var(--ok)}
  .onsalebar .ob-c.warn{border-color:var(--warn);color:var(--warn)}
  .onsalebar .ob-c.bad{border-color:var(--bad);color:var(--bad)}
  .onsalebar .ob-g{border-color:var(--warn);color:var(--warn)}
  @media (max-width:760px){
    .onsalebar{margin:0 8px 8px;padding:6px 8px;gap:6px;font-size:11px}
    .onsalebar .ob-s{display:none}
    .onsalebar .ob-c{white-space:normal}
  }
  .topright{margin-left:auto;display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
  .tcut{font-size:var(--fs6);color:var(--mut);border:1px solid var(--line);border-radius:var(--r-tag);
    padding:5px 10px;background:rgba(255,255,255,.02);display:flex;gap:6px;align-items:center}
  .tcut b{color:var(--tx);font-variant-numeric:tabular-nums;font-family:ui-monospace,Consolas,monospace}
  .tcut.warn{border-color:var(--warn);color:#fde68a}
  .tcut.red{border-color:var(--bad);color:#fecaca}
  .tbtn{background:var(--card);border:1px solid var(--line2);color:var(--tx);border-radius:var(--r-tag);
    padding:7px 12px;cursor:pointer;font-size:var(--fs6);min-height:34px;
    transition:border-color var(--t),color var(--t)}
  .tbtn:hover{border-color:var(--acc);color:var(--acc)}
  /* 水平 Tab（hash 路由，切换视图而不是长滚动） */
  #tabs{max-width:1560px;margin:0 auto;padding:0 var(--s5);display:flex;gap:var(--s1);
    flex-wrap:wrap;align-items:flex-end;border-bottom:1px solid var(--line)}
  #tabs a{padding:10px 16px;color:var(--mut);font-size:var(--fs5);font-weight:600;border-radius:10px 10px 0 0;
    border:1px solid transparent;border-bottom:none;white-space:nowrap;min-height:40px;
    display:inline-flex;align-items:center;gap:6px;transition:color var(--t),background var(--t)}
  #tabs a:hover{color:var(--tx);background:rgba(255,255,255,.03)}
  #tabs a.on{color:var(--tx);background:var(--card);border-color:var(--line);position:relative;top:1px}
  #tabs a.on::after{content:"";position:absolute;left:12px;right:12px;top:0;height:2px;border-radius:2px;
    background:linear-gradient(90deg,var(--acc),var(--acc2))}
  #tabs a i{font-style:normal;font-size:var(--fs6);color:var(--mut2);border:1px solid var(--line2);
    border-radius:999px;padding:0 6px}
  /* 视图内的分区子导航 */
  #nav{max-width:1560px;margin:0 auto;padding:var(--s3) var(--s5) 0;display:flex;gap:6px;flex-wrap:wrap}
  #nav:empty{display:none}
  #nav a{padding:5px 12px;border-radius:999px;color:var(--mut);font-size:var(--fs6);
    border:1px solid var(--line);white-space:nowrap;min-height:30px;display:inline-flex;align-items:center;
    transition:color var(--t),border-color var(--t),background var(--t)}
  #nav a:hover{color:var(--tx);border-color:var(--line2);background:var(--card2)}
  #nav a.on{color:#04121f;background:linear-gradient(135deg,var(--acc),var(--acc2));border-color:transparent;font-weight:600}
  /* 视图切换：淡入，不做炫技动画 */
  section[data-view]{animation:fade .18s ease-out}
  @keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
  .vhidden{display:none !important}
  /* Hero：一句结论 + 大数字 KPI（等宽、右对齐） */
  .hero{border:1px solid var(--line);border-radius:var(--r-card);padding:var(--s4);
    background:linear-gradient(135deg,rgba(56,189,248,.10),rgba(167,139,250,.04) 60%,transparent);
    margin:0 0 var(--s3)}
  .hero h2{margin:0 0 var(--s2);font-size:var(--fs2);font-weight:800;letter-spacing:-.2px}
  .hero .concl{color:#cbd5e1;font-size:var(--fs5);line-height:1.85}
  .hero .concl b{color:#fff}
  .hero .concl .li{display:block;padding-left:16px;position:relative}
  .hero .concl .li:before{content:"▸";position:absolute;left:0;color:var(--acc)}
  :root[data-theme="light"] .hero .concl{color:#334155}
  :root[data-theme="light"] .hero .concl b{color:#0f172a}
  .hero-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s3);margin-top:var(--s3)}
  .hk{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:var(--s3) var(--s4);
    position:relative;overflow:hidden;transition:transform var(--t),box-shadow var(--t)}
  .hk:hover{transform:translateY(-2px);box-shadow:var(--sh2)}
  .hk::after{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:var(--line2)}
  .hk.ok::after{background:linear-gradient(90deg,var(--ok),#6ee7b7)}
  .hk.warn::after{background:linear-gradient(90deg,var(--warn),#fcd34d)}
  .hk.bad::after{background:linear-gradient(90deg,var(--bad),#fca5a5)}
  .hk b{display:block;font-size:34px;font-weight:800;letter-spacing:-1px;line-height:1.1;text-align:right;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}
  .hk.ok b{color:var(--ok)} .hk.warn b{color:var(--warn)} .hk.bad b{color:var(--bad)}
  .hk span{display:block;font-size:var(--fs6);color:var(--mut);text-align:right}
  .hk em{display:block;font-size:var(--fs6);color:var(--mut2);font-style:normal;margin-top:2px}
  /* 12 列响应式栅格（卡片组） */
  .grid12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--s3)}
  .c3{grid-column:span 3} .c4{grid-column:span 4} .c6{grid-column:span 6}
  .c8{grid-column:span 8} .c12{grid-column:span 12}
  .srclist{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--s2)}
  .srcrow{border:1px solid var(--line);border-radius:10px;padding:var(--s2) var(--s3);
    background:rgba(255,255,255,.02);font-size:var(--fs6);color:var(--mut)}
  .srcrow b{color:var(--tx);display:block;font-size:var(--fs5);margin-bottom:2px}
  .srcdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:var(--ok)}
  .srcdot.warn{background:var(--warn)} .srcdot.bad{background:var(--bad)}
  @media (max-width:1020px){
    .hero-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
    .c3,.c4{grid-column:span 6} .c6,.c8{grid-column:span 12}
  }
  @media (max-width:760px){
    .topbar{padding:var(--s3)}
    #tabs{padding:0 var(--s3);overflow-x:auto;flex-wrap:nowrap}
    #tabs a{padding:10px 12px;font-size:var(--fs6)}
    #nav{padding:var(--s3) var(--s3) 0;overflow-x:auto;flex-wrap:nowrap}
    .hero-kpis,.c3,.c4,.c6,.c8{grid-column:span 12;grid-template-columns:1fr}
    .hero-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
    .hk b{font-size:26px}
  }
  /* 移动端点击目标：必须放在 .tbtn/.pbtn 基础规则**之后**，否则同权重会被覆盖（实测踩过） */
  @media (max-width:760px){
    .tbtn,.pbtn{min-height:40px;padding:9px 14px}
    .toolbar select,.toolbar button,.toolbar label{min-height:40px}
    nav a,.ngt,#tabs a,#nav a{min-height:40px}
  }
  @media print{
    :root{color-scheme:light;--bg:#fff;--bg2:#fff;--card:#fff;--card2:#fff;--tx:#000;--mut:#333;--mut2:#555;--line:#ccc;--line2:#999}
    body{background:#fff !important;color:#000 !important}
    header,.toolbar,#totop,.ngs,.no-print,.search,#tabs,#nav,.topbar .topright{display:none !important}
    /* 打印只输出当前 Tab 视图（配合各视图自己的内容），不把全部 31 个分区铺成几十页 */
    #tabs,#nav{display:none !important}
    .card,.kpi,.fx,.t5-col,.t5-card,.dpcard,.dpempty{box-shadow:none !important;border-color:#bbb !important;background:#fff !important}
    .card{break-inside:avoid}
    section{break-inside:avoid}
    table{font-size:11px} th{background:#eee !important;color:#000 !important}
    .scroll{max-height:none !important;overflow:visible !important;border-color:#bbb !important}
    a{color:#000 !important}
    .pill,.chip,.pd-tag,.badge-live,.dptag{background:#eee !important;color:#000 !important;border-color:#bbb !important}
    .insight,.note,.read,.t5-head,.dp-stamp,.dpgap,.dpnote,.dpempty,.dp-sub,.dpr{background:#f7f7f7 !important;color:#000 !important;border-color:#bbb !important}
    .dptbl-wrap{max-height:none !important;overflow:visible !important;border-color:#bbb !important}
    .dptbl th{position:static !important;background:#eee !important;color:#000 !important}
    .dpr .ev.ok,.dpr .ev.bad,.dpr .ev.warn,.dptbl .cg .b .pos,.dptbl .cg .b .neg,.dptbl .cg .b .off{color:#000 !important}
    .dptbl tr.pos,.dpplan tr.ok,.dpplan tr.watch{background:#f2f2f2 !important}
    .dpx{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
    .dpseg{display:none !important}
    .t5-metrics div{background:#f2f2f2 !important;border-color:#ccc !important}
    .report,.chartbox,.cmb,.rp-p,.rp-k{background:#fff !important;border-color:#bbb !important}
    .rulebox{background:#fff8e1 !important;color:#000 !important;border-color:#c9a227 !important}
    .rp-line,.rp-p .pk,.cmb .kpis2 .vl{color:#000 !important}
    .chartbox svg text{fill:#000 !important}
    #s-daily{break-before:page;break-after:page}
    .cmb,.chartbox,.rulebox{break-inside:avoid}
    .legend{color:#000 !important}
    /* 日报「一页看完」：打印时整体压缩，A4 单页放得下 */
    @page{size:A4 portrait;margin:8mm}
    .report{font-size:7.8pt}
    .report .rp-h{font-size:12pt;margin-bottom:3px}
    .report .rp-line{font-size:8.6pt;line-height:1.5}
    .report .rp-line .li{padding-left:11px}
    .report .rp-grid{gap:4px;margin:5px 0 7px}
    .report .rp-k{padding:4px 6px}
    .report .rp-k b{font-size:12pt}
    .report .rp-k span{font-size:7.5pt}
    .report .rp-sec{margin:7px 0 3px;font-size:10pt;padding-left:6px}
    .report .rp-pick{gap:5px;margin:4px 0 6px}
    .report .rp-p{padding:5px 7px}
    .report .rp-p .pk{font-size:11pt}
    .report .rp-p .mn{font-size:9pt;margin:1px 0}
    .report .rp-p .ev,.report .rp-p .pl{font-size:8pt}
    .report table{font-size:6.9pt}
    .report th,.report td{padding:1px 2px}
    .report .rp-sec{margin:5px 0 2px;font-size:9pt}
    .report .rp-pick{gap:4px;margin:3px 0 4px}
    .report .rp-p{padding:4px 6px}
    .report .rp-grid{gap:3px;margin:4px 0 5px}
    .report .rp-k{padding:3px 5px}
    .report .rp-k b{font-size:10.5pt}
    .report .fchip{display:none}
    .report .pill{font-size:7.5pt;padding:1px 5px}
    .report .mini{font-size:7.6pt}
    #s-daily .scroll{max-height:none !important;overflow:visible !important;border-color:#bbb !important}
    #s-daily .body{padding:0}
    .card>h2{padding:7px 10px;font-size:11.5pt}
    .body{padding:8px 10px}
    section{margin-bottom:8px}
  }
/* ══════════════════ ★ 主板：今日最佳推荐 ══════════════════ */
#s-best .bb-hero{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;
  justify-content:space-between;padding:16px 18px 6px}
#s-best .bb-t1{font-size:17px;font-weight:800;letter-spacing:.2px}
#s-best .bb-t2{font-size:12.5px;font-weight:500;color:var(--mut);margin-top:6px;line-height:1.6}
#s-best .bb-when{font-size:12px;font-weight:500;color:var(--mut);text-align:right;line-height:1.7}
#s-best .bb-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
  gap:13px;padding:10px 18px 6px}
@media (max-width:1180px){#s-best .bb-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:820px){#s-best .bb-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){#s-best .bb-grid{grid-template-columns:1fr;padding:10px 12px 6px}}
#s-best .bb-card{display:flex;flex-direction:column;position:relative;border-radius:15px;padding:15px 16px 14px;
  background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
  border:1px solid rgba(255,255,255,.10);overflow:hidden;
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset,0 8px 22px -14px rgba(0,0,0,.55)}
/* 顶部条＝**同色相不同明度**：颜色统一取站点强调色 --acc，五张卡只差 --bb-o 明度阶梯
   （原来那五条是蓝/紫/粉/绿/黄五种色相，属旧调色板遗留，深色下偏花且与全页唯一强调色打架）*/
#s-best .bb-card:before{content:"";position:absolute;left:0;top:0;height:3px;width:100%;
  background:var(--bb-accent,var(--acc));opacity:var(--bb-o,.95)}
#s-best .bb-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
#s-best .bb-play{font-size:13.5px;font-weight:800;color:var(--bb-accent,var(--acc));
  letter-spacing:.4px}
#s-best .bb-tier{font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:999px;white-space:nowrap;
  border:1px solid var(--line2);color:var(--tx)}
#s-best .bb-tier.hi{border-color:rgba(var(--ok-b),.5);color:var(--ok);background:rgba(var(--ok-b),.10)}
#s-best .bb-tier.mid{border-color:rgba(var(--warn-b),.45);color:var(--warn);background:rgba(var(--warn-b),.09)}
/* 「整场胜负方向 / 按官网公布的让球数」这类说明字：原来 11px/400 + 未定义的 --text-3 兜底
   #8b9bb4，深色下偏虚 → 换成站点 --mut + 500 字重（不靠纯白硬压）*/
#s-best .bb-hint{font-size:11px;font-weight:500;color:var(--mut);margin-top:7px}
/* ★ 真图片 + 视觉编码：原来整页没有一张图，这里挂站点自有的队徽（同源 /team-badges） */
#s-best .bb-teams{display:flex;align-items:center;gap:8px;margin:11px 0 4px;flex-wrap:wrap}
#s-best .bb-team{display:flex;align-items:center;gap:6px;font-size:12.5px;
  color:var(--tx);font-weight:600;min-width:0}
#s-best .bb-team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#s-best .bb-crest{width:24px;height:24px;object-fit:contain;border-radius:5px;
  background:rgba(255,255,255,.06);padding:2px;flex:0 0 auto}
/* 队徽在「每日预测（五玩法）」卡片里的样式（与主板同一套图片与回退逻辑） */
.dpc-vs .bt{display:inline-flex;align-items:center;gap:8px;vertical-align:middle}
.dpc-vs .bt b{font-size:15.5px;font-weight:800;letter-spacing:.2px}
.dpc-vs .bb-crest{width:27px;height:27px;object-fit:contain;border-radius:6px;
  background:rgba(255,255,255,.06);padding:2px;flex:0 0 auto}
.dpc-vs .bb-crest.mono{display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;color:var(--acc);background:rgba(255,255,255,.05);
  font-family:var(--font-num,monospace)}
.dpc-vs .muted{margin:0 9px;font-size:12px;color:var(--mut2)}
@media print{.dpc-vs .bb-crest{width:22px;height:22px}}
#s-best .bb-crest.mono{display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;color:var(--bb-accent,var(--acc));
  background:var(--card2);font-family:var(--font-num,monospace)}
#s-best .bb-vs{font-size:10px;font-weight:800;color:var(--mut2);
  letter-spacing:1px;flex:0 0 auto}
/* 概率条：把"数字"变成"看得见的长度" */
#s-best .bb-bar{height:6px;border-radius:3px;background:rgba(255,255,255,.08);
  overflow:hidden;margin:10px 0 5px}
#s-best .bb-bar i{display:block;height:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--bb-accent,var(--acc)),var(--acc2))}
#s-best .bb-pick{font-size:31px;font-weight:800;line-height:1.12;margin:9px 0 2px;
  letter-spacing:.5px}
#s-best .bb-prob{display:flex;align-items:baseline;gap:7px;margin:6px 0 12px}
#s-best .bb-prob b{font-size:23px;font-weight:800;color:var(--bb-accent,var(--acc))}
#s-best .bb-prob span{font-size:11px;font-weight:500;color:var(--mut)}
#s-best .bb-row{display:flex;align-items:center;justify-content:space-between;
  font-size:12px;padding:5px 0;border-top:1px dashed rgba(255,255,255,.07)}
#s-best .bb-row span{color:var(--mut)}
#s-best .bb-row b{font-weight:700}
#s-best .bb-row b.pos{color:var(--ok)}
#s-best .bb-row b.neg{color:var(--bad)}
#s-best .bb-match{font-size:12.5px;margin-top:auto;padding-top:11px;line-height:1.55;color:var(--tx)}
#s-best .bb-match .bb-num{display:inline-block;font-weight:800;margin-right:6px;
  padding:1px 7px;border-radius:6px;background:var(--card2);
  font-size:11.5px;color:var(--tx)}
#s-best .bb-match i{font-style:normal;color:var(--mut2);margin:0 3px}
#s-best .bb-ko{font-size:11px;font-weight:500;color:var(--mut);margin-top:5px}
#s-best .bb-empty{opacity:.72}
#s-best .bb-na{font-size:13px;color:var(--mut);margin-top:12px}
#s-best .bb-na2{font-size:11.5px;font-weight:500;line-height:1.7;color:var(--mut);
  margin-top:7px;opacity:1}
/* ★ 热力图：把"每场×五玩法的概率"从数字变成颜色——一屏看出今天哪里有把握 */
#s-best .bb-heatwrap{padding:16px 18px 4px;border-top:1px solid rgba(255,255,255,.07);margin-top:14px}
#s-best .bb-heath{font-size:13.5px;font-weight:700;margin-bottom:3px}
#s-best .bb-heats{font-size:11.5px;font-weight:500;color:var(--mut);margin-bottom:11px}
#s-best .bb-heat{overflow-x:auto}
#s-best .bb-heat table{border-collapse:separate;border-spacing:3px;width:100%;min-width:620px}
#s-best .bb-heat th{font-size:11px;font-weight:700;color:var(--mut);
  padding:2px 4px;text-align:center;white-space:nowrap}
#s-best .bb-heat th.m{text-align:left}
#s-best .bb-heat td{font-size:11.5px;padding:5px 6px;border-radius:7px;text-align:center;
  font-variant-numeric:tabular-nums;line-height:1.28;white-space:nowrap;
  border:1px solid rgba(255,255,255,.05)}
#s-best .bb-heat td.m{text-align:left;background:transparent;border-color:transparent}
/* 场次/对阵列：队名 10px→10.5px + 500 字重，与格内数字拉开层级 */
#s-best .bb-heat td.m b{display:block;font-size:11.5px;font-weight:700;color:var(--tx)}
#s-best .bb-heat td.m span{font-size:10.5px;font-weight:500;color:var(--mut)}
/* 格内：选项 11.5px/700，概率 10.5px/.75 不透明且无 alpha → 11px/600 全不透明，深色下不再发虚 */
#s-best .bb-heat td .pk{display:block;font-weight:700;font-size:11.5px;color:var(--tx)}
#s-best .bb-heat td .pc{display:block;font-size:11px;font-weight:600;opacity:1;color:var(--tx)}
/* 未开售 / 模型未覆盖：中性灰，不参与热力色阶（阈值语义保留） */
#s-best .bb-heat td.na{color:var(--mut2);background:var(--heat-na)}
#s-best .bb-heatlegend{font-size:11px;font-weight:500;color:var(--mut);margin-top:9px;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#s-best .bb-heatlegend i{display:inline-block;width:16px;height:9px;border-radius:3px;
  border:1px solid var(--line)}
#s-best .bb-note{font-size:12.5px;line-height:1.75;color:var(--tx);
  padding:14px 18px 18px;border-top:1px solid rgba(255,255,255,.07);margin-top:12px}
#s-best .bb-note b{color:var(--warn)}
/* 「今日最佳推荐」是结论型视图，左上那排「筛选/联赛/只看…/806 行可见/搜索/CSV」对它毫无用处，
   纯视觉噪音 → 该视图下隐藏工具栏（其它表格类视图不受影响）。 */
body.view-best .toolbar{display:none}
body.view-share .toolbar{display:none}
body.view-best main{padding-top:14px}
/* 导航上的分区计数改轻，别像调试计数器 */
#tabs a i{opacity:.42;font-size:10px;font-weight:600;margin-left:5px}
@media print{#s-best .bb-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
/* ══════════════════ 设计系统层（Design System）══════════════════
   概念：专业数据终端（克制、单一金色强调、等宽数字、零装饰）。
   清单要求"图标用内联 SVG 或 CSS 绘制、不得用 emoji 当图标"——
   这里统一改用 CSS 绘制的强调条：一致、零维护、不引入图标库。 */
.card>h2,section>h2{position:relative;letter-spacing:var(--tr-tight);
  line-height:var(--lh-tight)}
.card>h2:before,section>h2:before{content:"";display:inline-block;
  width:3px;height:1em;border-radius:2px;background:var(--acc);
  margin-right:9px;vertical-align:-.12em;opacity:.9}
/* 数字一律等宽对齐：数据产品最容易被忽略、观感差别最大的细节 */
.num,td.num,.kpi b,.kpis b,.hero-kpis b,.pd-kpi b,.bb-prob b,.bb-row b,
table td,table th,[class*="-num"],[id$="-n"]{
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.bb-prob b,.bb-row b,.kpi b,.kpis b,.hero-kpis b{font-family:var(--font-num)}
/* 次级文字统一走 token，别再散落字面量灰 */
.mini,.sub2,.note,.tag{letter-spacing:.1px}
/* ══ 内联 SVG 图标（2026-09-14）══
   清单要求「图标须内联 SVG 或 CSS 绘制，不得用 emoji 当图标」。
   这里用 mask-image + currentColor：图标自动继承所在元素颜色（含主题切换），
   零外部资源、零图标库、不增加请求。 */
.ic{display:inline-block;width:13px;height:13px;vertical-align:-2px;margin-right:5px;
  background-color:currentColor;flex:0 0 auto;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain}
.ic-print{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M6%209V3h12v6'/%3E%3Crect%20x='6'%20y='13'%20width='12'%20height='8'/%3E%3Cpath%20d='M6%2017H3v-6h18v6h-3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M6%209V3h12v6'/%3E%3Crect%20x='6'%20y='13'%20width='12'%20height='8'/%3E%3Cpath%20d='M6%2017H3v-6h18v6h-3'/%3E%3C/svg%3E")}
.ic-copy{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='9'%20y='9'%20width='12'%20height='12'%20rx='2'/%3E%3Cpath%20d='M5%2015V5a2%202%200%200%201%202-2h10'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='9'%20y='9'%20width='12'%20height='12'%20rx='2'/%3E%3Cpath%20d='M5%2015V5a2%202%200%200%201%202-2h10'/%3E%3C/svg%3E")}
.ic-star{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%203l2.6%205.6%206%20.8-4.4%204.2%201.1%206-5.3-3-5.3%203%201.1-6L3.4%209.4l6-.8z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%203l2.6%205.6%206%20.8-4.4%204.2%201.1%206-5.3-3-5.3%203%201.1-6L3.4%209.4l6-.8z'/%3E%3C/svg%3E")}
.ic-star-on{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='%23000'%3E%3Cpath%20d='M12%203l2.6%205.6%206%20.8-4.4%204.2%201.1%206-5.3-3-5.3%203%201.1-6L3.4%209.4l6-.8z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='%23000'%3E%3Cpath%20d='M12%203l2.6%205.6%206%20.8-4.4%204.2%201.1%206-5.3-3-5.3%203%201.1-6L3.4%209.4l6-.8z'/%3E%3C/svg%3E")}
.ic-theme{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%3E%3Cpath%20d='M21%2012.8A9%209%200%201%201%2011.2%203a7%207%200%200%200%209.8%209.8z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%3E%3Cpath%20d='M21%2012.8A9%209%200%201%201%2011.2%203a7%207%200%200%200%209.8%209.8z'/%3E%3C/svg%3E")}
.ic-dl{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%203v12m0%200l-4-4m4%204l4-4M4%2019h16'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%203v12m0%200l-4-4m4%204l4-4M4%2019h16'/%3E%3C/svg%3E")}
.ic-check{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2.6'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M4%2012.5l5%205L20%206.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2.6'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M4%2012.5l5%205L20%206.5'/%3E%3C/svg%3E")}
.ic-refresh{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M20%2011a8%208%200%201%200-2.3%205.7'/%3E%3Cpath%20d='M20%204v7h-7'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M20%2011a8%208%200%201%200-2.3%205.7'/%3E%3Cpath%20d='M20%204v7h-7'/%3E%3C/svg%3E")}
.ic-warn{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%203l9%2016H3z'/%3E%3Cpath%20d='M12%209v5M12%2017h.01'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%203l9%2016H3z'/%3E%3Cpath%20d='M12%209v5M12%2017h.01'/%3E%3C/svg%3E")}
.ic-stop{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%3E%3Ccircle%20cx='12'%20cy='12'%20r='9'/%3E%3Cpath%20d='M6%206l12%2012'%20stroke-linecap='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%3E%3Ccircle%20cx='12'%20cy='12'%20r='9'/%3E%3Cpath%20d='M6%206l12%2012'%20stroke-linecap='round'/%3E%3C/svg%3E")}

/* ════════════════════════════════════════════════════════════════
   「预测与价值」/「赛事与盘口」排版重做（2026-09-15）
   原则：全部走 :root token；数值一律"看得见"（条/块/色），不再是一行行纯数字。
   只新增样式，不改动任何既有选择器的行为。
   ════════════════════════════════════════════════════════════════ */
/* ① 预测片段注入的标题里不要 emoji（设计系统禁止 emoji 当图标，标题统一用 h2::before 强调条） */
#s-predict>h2,#s-scan>h2,#s-jc-value>h2,#s-jc-slate>h2,#s-plan>h2,#s-lottery>h2,#s-backtest>h2{
  font-size:var(--fs-lg);padding:12px 18px 0;margin:0}
#s-predict>h2 .pill,#s-scan>h2 .pill,#s-jc-value>h2 .pill,#s-jc-slate>h2 .pill{
  font-size:var(--fs-2xs);font-family:var(--font-num)}
/* 这两个分区是 <section class="card"> 自带卡片，注入层再包一层会重复描边 */
#s-predict,#s-scan,#s-jc-value,#s-jc-slate,#s-plan,#s-lottery{margin-top:var(--s4)}
#pd-wrap h2,#pd-wrap h1{font-size:var(--fs-lg)}
/* ② 装饰层基础件
   队徽：必须 width/height/object-fit 三个一起强制（!important + 显式属性 + inline style），
   否则外部 svg 队徽（AC米兰/墨西拿那类竖长画布）会按固有尺寸撑爆单元格。 */
.dc-crest,.dc-team .bb-crest{width:20px !important;height:20px !important;object-fit:contain !important;
  border-radius:5px;vertical-align:-5px;margin-right:6px;background:rgba(255,255,255,.06);
  padding:1px;flex:0 0 auto;max-width:20px !important;max-height:20px !important}
.dc-crest.mono,.dc-team .bb-crest.mono{display:inline-flex;align-items:center;justify-content:center;
  font-size:9.5px;font-weight:800;color:var(--acc);font-family:var(--font-num);
  background:rgba(255,255,255,.05)}
.dc-team{display:inline-flex;align-items:center;gap:0;max-width:100%}
.dc-team>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.dc-vs{color:var(--mut2);font-size:var(--fs-2xs);font-weight:800;letter-spacing:1px;
  padding:0 6px;text-transform:uppercase;flex:0 0 auto}
.dc-pos{font-weight:700;font-size:var(--fs-2xs);color:var(--acc2);background:rgba(167,139,250,.14);
  border:1px solid rgba(167,139,250,.32);border-radius:6px;padding:1px 6px;white-space:nowrap}
.dc-inj{font-size:var(--fs-2xs);color:#fcd34d;background:rgba(251,191,36,.10);
  border:1px solid rgba(251,191,36,.28);border-radius:6px;padding:1px 6px;white-space:nowrap}
.dc-num{display:block;font-family:var(--font-num);font-size:var(--fs-2xs);color:var(--mut2);
  margin-top:2px;width:106px;white-space:normal;line-height:1.35;overflow-wrap:anywhere}
/* 队名/对手列一律不折行，避免"国际米兰"被折成两行 */
.dc-team>span,.dc-lu-p,.dc-pos,.dc-inj{white-space:nowrap}
/* ③ 表格观感：深色数据终端（表头克重、行高节奏、数字右对齐等宽） */
table{border-collapse:separate;border-spacing:0}
table thead th{font-size:var(--fs-2xs);letter-spacing:.5px;color:var(--mut2);font-weight:600;
  padding:8px 10px;border-bottom:1px solid var(--line2);white-space:nowrap;
  background:rgba(255,255,255,.03)}
table tbody td{padding:7px 10px;border-bottom:1px solid rgba(255,255,255,.045)}
table tbody tr:hover td{background:rgba(56,189,248,.06)}
table tbody tr:nth-child(even) td{background:rgba(255,255,255,.014)}
table tbody tr:nth-child(even):hover td{background:rgba(56,189,248,.07)}
td.num,th.num{text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums}
/* ④ 变化量色条（赔率变动榜 / EV / 背离） */
.dc-delta{font-family:var(--font-num);font-size:var(--fs-2xs);font-weight:700;
  border-radius:var(--r-sm);padding:1px 7px;white-space:nowrap}
.dc-delta.up{color:#fca5a5;background:rgba(248,113,113,.13);border:1px solid rgba(248,113,113,.34)}
.dc-delta.dn{color:#6ee7b7;background:rgba(52,211,153,.13);border:1px solid rgba(52,211,153,.34)}
.dc-delta.flat{color:var(--mut);background:rgba(255,255,255,.05);border:1px solid var(--line2)}
/* ⑤ 背离量级条（表内共用，绝对宽度=%·满格，颜色＝方向）：
   曾用"骑轴":before 版本，实测在表格单元格里定位基准会漂，改成这条稳定规格。 */
.dc-mag{display:block;height:8px;border-radius:var(--r-pill);background:rgba(255,255,255,.06);
  overflow:hidden;margin-top:4px;min-width:64px;max-width:96px}
.dc-mag i{display:block;height:100%;border-radius:var(--r-pill)}
.dc-mag i.p{background:linear-gradient(90deg,rgba(248,113,113,.55),#f87171)}
.dc-mag i.n{background:linear-gradient(90deg,rgba(52,211,153,.55),#34d399)}
/* ⑥ 轻量条形（表内共用；与既有 .bar 同族，但更小、要点内可用） */
.dc-bar{height:7px;border-radius:var(--r-pill);background:rgba(255,255,255,.07);
  overflow:hidden;min-width:52px;margin-top:3px}
.dc-bar i{display:block;height:100%;border-radius:var(--r-pill);
  background:linear-gradient(90deg,var(--acc),var(--acc2))}
/* ⑦ 「赛事与盘口」速览条 */
.dc-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
  gap:var(--s3);margin:11px 0 3px}
.dc-st{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);
  border-radius:var(--r-md);padding:9px 11px;min-width:0}
.dc-st b{display:block;font-family:var(--font-num);font-size:var(--fs-xl);line-height:1.15;
  font-variant-numeric:tabular-nums}
.dc-st span{display:block;color:var(--mut);font-size:var(--fs-2xs);margin-top:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dc-st .dc-bar{margin-top:6px}
.dc-st.acc b{color:var(--acc)}.dc-st.ok b{color:var(--ok)}
.dc-st.warn b{color:var(--warn)}.dc-st.bad b{color:var(--bad)}.dc-st.pur b{color:var(--pur)}
/* ⑧ 首发阵容：两张阵容板 + 号码 */
.dc-lu{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);margin-top:var(--s3)}
.dc-lu-h{display:flex;align-items:center;gap:0;font-size:var(--fs-sm);font-weight:700;
  margin-bottom:6px;min-width:0}
.dc-lu-h em{font-style:normal;color:var(--mut2);font-weight:400;font-size:var(--fs-2xs);
  margin-left:6px}
.dc-lu-list{display:flex;flex-wrap:wrap;gap:4px}
.dc-lu-p{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-2xs);color:var(--mut);
  background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:6px;padding:2px 6px}
.dc-lu-p b{font-family:var(--font-num);color:var(--acc);font-weight:700;font-size:var(--fs-2xs)}
/* ⑧ 预测片段：数值加等宽小字脚注（xG / xG 净胜 / 实际净胜 / 背离），
   与"骑轴条"配对，既有绝对值又有方向（.dc-num 基础样式见上） */
/* ⑨ 手机端：密度与可滚动（维护者讨厌"满屏、拖不动"） */@media (max-width:760px){
  header{position:static}
  .topbar{padding:8px 12px}
  .toolbar{display:none}
  #nav{gap:5px;padding:7px 12px;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  #nav a{font-size:var(--fs-2xs);padding:3px 8px;white-space:nowrap;flex:0 0 auto}
  #tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  #tabs a{flex:0 0 auto}
  main,.report{padding-left:12px;padding-right:12px}
  .card{padding:0 12px 12px}
  .card>h2,section>h2{font-size:var(--fs-md)}
  .scroll{max-height:min(58vh,470px);overflow:auto;border-radius:var(--r-sm)}
  table thead th,table tbody td{padding:6px 8px;font-size:var(--fs-sm)}
  .dc-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2)}
  .dc-st b{font-size:var(--fs-lg)}
  .dc-lu{grid-template-columns:1fr}
  .dc-crest{width:17px;height:17px;vertical-align:-4px}
  #s-predict,#s-scan,#s-jc-value,#s-jc-slate,#s-plan,#s-lottery{margin-top:var(--s3)}
  #pd-wrap .pd-cards{grid-template-columns:1fr}
}
@media print{
  .dc-crest{width:15px;height:15px}
  .dc-strip{grid-template-columns:repeat(4,minmax(0,1fr))}
}
  /* ══ HF_BPLUS：扁平高对比 + 关键处细节（2026-09-15）════════════════
     主体：纯色块 + 1px 硬边 + 无模糊无发光；按钮借"渐变+内高光"；表格改发丝线；留白加大 */
  :root{
    --bg:#0a0b0d; --bg2:#0e1013; --card:#101215; --card2:#171a1f;
    --line:#22262c; --line2:#2b3038;
    --tx:#eef1f6; --mut:#8b919b; --mut2:#5f646d;
    --acc:#c8ff4d; --acc2:#a8e63c; --ok:#8ee8b0; --warn:#ffc857; --bad:#ff7d8f; --pur:#a78bfa;
    --r1:10px; --r2:14px;
    /* ── fx2（2026-09-15 深色主题清理）：把散在样式/JS 里的自创色值收进变量表 ──
       ① 热力色阶：**唯一色相** teal，只按透明度分高低 → 同一概率必得同一颜色。
          选 teal 而不是 --acc 青柠：#c8ff4d 太亮，叠在 --card 上后格内 --tx 文字
          的对比度只剩 2.3:1；teal 在最高档仍有 ≈4.7:1，且与 --acc 同属青绿族。
       ② 语义徽标只借 --ok / --warn 的同一 RGB 调透明度，不引入新色相。 */
    --heat:20,184,166;            /* #14b8a6 青绿：热力图唯一色相 */
    --heat-na:var(--card2);       /* 未开售 / 无数据：中性灰，不参与色阶 */
    --ok-b:142,232,176;           /* = --ok   #8ee8b0 */
    --warn-b:255,200,87;          /* = --warn #ffc857 */
    --bad-b:255,125,143;          /* = --bad  #ff7d8f */
  }
  body{background:var(--bg)}
  /* 卡片：去掉玻璃与圆角堆砌，改成硬边实面板 */
  .card{background:var(--card);border:1px solid var(--line);border-radius:var(--r2);box-shadow:none}
  .card>h2{border-bottom:1px solid var(--line);padding-bottom:11px;font-size:14px;font-weight:800;letter-spacing:.01em}
  .card .body{padding-top:4px}
  /* 按钮：三类四态 —— 次按钮硬边；主按钮（含 .primary / #print-btn）借渐变+内高光 */
  .tbtn{border-radius:var(--r1);border:1px solid var(--line2);background:var(--card2);color:var(--tx);
    padding:7px 13px;font-weight:600;transition:.15s}
  .tbtn:hover{border-color:#3a4048;background:#1c2026}
  .tbtn:active{transform:translateY(1px)}
  .tbtn:disabled{opacity:.45;cursor:not-allowed}
  #print-btn,.tbtn.primary{border-color:transparent;color:#0a0b0d;font-weight:700;
    background:linear-gradient(180deg,var(--acc),var(--acc2));
    box-shadow:0 1px 0 rgba(255,255,255,.35) inset,0 6px 14px -10px rgba(200,255,77,.7)}
  /* 胶囊：统计 / 状态 两族 */
  .tcut,.pill{border-radius:999px;border:1px solid var(--line);background:var(--card2)}
  .tcut b{font-family:ui-monospace,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;color:var(--tx)}
  /* 标签栏：3px 实线下划线（不用渐变）*/
  #tabs{border-bottom:1px solid var(--line);gap:2px}
  #tabs a{border-radius:0;border:0;padding:12px 15px 11px;font-size:12.5px;font-weight:700;color:var(--mut);
    border-bottom:3px solid transparent;transition:.15s}
  #tabs a:hover{color:var(--tx);background:rgba(255,255,255,.03)}
  #tabs a.on{color:var(--tx);background:transparent;border-bottom-color:var(--acc)}
  #tabs a i{font-style:normal;font-size:10px;min-width:18px;text-align:center;color:var(--mut);
    background:var(--card2);border:0;border-radius:5px;padding:2px 5px;margin-left:6px}
  #tabs a.on i{background:var(--acc);color:#0a0b0d;font-weight:800}
  /* 表格：发丝线代替斑马纹；表头小字距拉宽；数值等宽右对齐 */
  table{border-collapse:separate;border-spacing:0}
  table th,thead th{background:transparent;border-bottom:1px solid var(--line);font-size:10px;
    letter-spacing:.1em;text-transform:uppercase;color:var(--mut2);font-weight:700;padding:9px 10px}
  table td{border-bottom:1px solid rgba(255,255,255,.045);padding:8px 10px;font-size:12.5px;
    font-variant-numeric:tabular-nums}
  tbody tr:nth-child(even) td{background:transparent}
  tbody tr:hover td{background:rgba(255,255,255,.028)}
  /* 最佳推荐五卡：硬边 + 玩法名强调色 + 选项加大 */
  #s-best .bb-card{border-radius:var(--r2);border-color:var(--line);background:var(--card);
    padding:15px 16px 14px;box-shadow:none}
  #s-best .bb-play{color:var(--acc)}
  #s-best .bb-pick{font-size:32px;letter-spacing:-.045em}
  #s-best .bb-prob b{color:var(--acc);font-variant-numeric:tabular-nums}
  #s-best .bb-bar{background:#1b1e23;border-radius:99px}
  #s-best .bb-bar i{background:linear-gradient(90deg,var(--acc2),var(--acc))}
  #s-best .bb-tier{border-radius:5px;border-color:var(--line2)}
  /* 间距节奏：区块之间留白加大（C 的呼吸感）*/
  main>section{margin-bottom:18px}
  .card+.card{margin-top:14px}

  /* ══ HF_BUTTONS：真正的按钮 UI（2026-09-15）════════════════════════
     原病：标签栏只是一排文字，没有任何"可点的形"。现在每一项都是有底/有边/有投影的按钮。 */
  /* ① 标签栏 → 分段按钮组 */
  #tabs{display:flex;flex-wrap:wrap;gap:7px;border-bottom:0;padding:10px 0 12px}
  #tabs a{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border-radius:11px;
    border:1px solid var(--line);background:#fff;color:#4b5563;font-size:12.5px;font-weight:700;
    box-shadow:0 1px 2px rgba(15,23,42,.06);transition:.16s;border-bottom:0}
  #tabs a:hover{color:#0f172a;border-color:#c9d2dc;transform:translateY(-1px);
    box-shadow:0 4px 10px -4px rgba(15,23,42,.18)}
  #tabs a.on{color:#fff;border-color:transparent;
    background:linear-gradient(180deg,#22c55e,#16a34a);
    box-shadow:0 1px 0 rgba(255,255,255,.4) inset,0 5px 12px -6px rgba(22,163,74,.75)}
  #tabs a i{font-style:normal;font-size:10px;font-weight:800;min-width:20px;text-align:center;
    background:#eef1f5;color:#64748b;border-radius:6px;padding:2px 6px;margin-left:2px;border:0}
  #tabs a.on i{background:rgba(255,255,255,.24);color:#fff}
  /* ② 数据截止 → 状态胶囊（新鲜度圆点 + 标签 + 等宽数值） */
  .tcut{display:inline-flex;align-items:center;gap:9px;padding:7px 14px;border-radius:999px;
    background:#fff;border:1px solid var(--line);box-shadow:0 1px 2px rgba(15,23,42,.05);color:#94a3b8}
  .tcut::before{content:"";width:7px;height:7px;border-radius:50%;background:#16a34a;flex:0 0 auto;
    box-shadow:0 0 0 3px rgba(22,163,74,.16)}
  .tcut>span:first-child{font-size:10.5px;letter-spacing:.1em;color:#94a3b8}
  .tcut b{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;font-weight:700;color:#0f172a}
  .tcut #topcut-a{font-size:10.5px;color:#94a3b8}
  /* ③ 主/次按钮：带图标位、四态、按下位移 */
  .tbtn{display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:11px;
    font-size:12px;font-weight:700;border:1px solid var(--line2);background:#fff;color:#0f172a;
    box-shadow:0 1px 2px rgba(15,23,42,.06);transition:.16s;cursor:pointer}
  .tbtn:hover{border-color:#c9d2dc;background:#f8fafc;transform:translateY(-1px);
    box-shadow:0 4px 10px -4px rgba(15,23,42,.2)}
  .tbtn:active{transform:translateY(0);box-shadow:0 1px 2px rgba(15,23,42,.12)}
  .tbtn .ic{width:15px;height:15px;display:block}
  .tbtn.primary,#print-btn{color:#fff;border-color:transparent;
    background:linear-gradient(180deg,#22c55e,#16a34a);
    box-shadow:0 1px 0 rgba(255,255,255,.42) inset,0 5px 12px -7px rgba(22,163,74,.8)}
  .tbtn.primary:hover,#print-btn:hover{background:linear-gradient(180deg,#2ee06a,#18ad4f);color:#fff}
  /* ④ 分区子导航也做成胶囊按钮 */
  #nav a{padding:6px 13px;border-radius:999px;border:1px solid var(--line);background:#fff;
    color:#64748b;font-size:11.5px;font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.04)}
  #nav a:hover{color:#0f172a;border-color:#c9d2dc}
  #nav a.on{color:#fff;background:linear-gradient(180deg,#22c55e,#16a34a);border-color:transparent}

  /* HF_ICONS：按钮内的统一 SVG 图标 */
  .tbtn .ic,button .ic,.btn .ic{width:15px;height:15px;flex:0 0 auto;display:block}
  .tbtn{gap:7px}
  /* HF_HIDEHDRBTN：按维护者要求隐去页头「主题」「打印」(保留代码绑定，零风险) */
  #theme-btn,#print-btn{display:none !important}
  /* ══ HF_21ST：21st.dev 真实组件移植（2026-09-15）════════════════════
     源码取自 21st.dev 页面内嵌的 r2 源文件（公开镜像 cdn.21st.dev）：
       ① Number Ticker .... magicui/number-ticker.tsx   useSpring(damping 60, stiffness 100)
       ② Shimmer Button ... magicui/shimmer-button.tsx + .tailwind.config.js
       ③ Marquee .......... magicui/marquee.tsx + .tailwind.config.js
       ④ Card Spotlight ... aceternity/card-spotlight.tsx              radius 350
       ⑤ Animated Tabs .... aceternity/tabs.tsx    layoutId spring bounce .3 / duration .6
       ⑥ ContainerTextFlip  larsen66/container-text-flip   blur10px→0，逐字 delay .02s
       ⑦ Word Rotate ...... magicui/word-rotate.tsx    y±50 / .25s easeOut / 2500ms
     时序与曲线参数逐条照抄原组件，未自造；只有颜色按亮色基底替换。 */

  /* 入场层（沿用原有 hfIn / hfGrow 节奏）*/
  @keyframes hfIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
  @keyframes hfGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
  @keyframes hfPulse{0%{box-shadow:0 0 0 0 rgba(22,163,74,.45)}70%{box-shadow:0 0 0 7px rgba(22,163,74,0)}100%{box-shadow:0 0 0 0 rgba(22,163,74,0)}}
  .tcut::before{animation:hfPulse 2.4s ease-out infinite}
  main > section{animation:hfIn .55s cubic-bezier(.22,.61,.36,1) both}
  main > section:nth-child(1){animation-delay:.02s}
  main > section:nth-child(2){animation-delay:.07s}
  main > section:nth-child(3){animation-delay:.12s}
  main > section:nth-child(4){animation-delay:.17s}
  main > section:nth-child(5){animation-delay:.22s}
  main > section:nth-child(n+6){animation-delay:.27s}
  .bb-bar i,.pbar i,.bb-prob i,.hbar i{transform-origin:left center;
    animation:hfGrow .9s cubic-bezier(.22,.61,.36,1) both}
  tbody tr{transition:background .16s}
  tbody tr:hover td:first-child{box-shadow:inset 3px 0 0 0 #16a34a}

  /* ── ① Number Ticker ───────────────────────────────────────────────
     number-ticker.tsx 基础类 "inline-block tabular-nums tracking-wider"。
     tabular-nums 必留（否则滚动时数字宽度抖动）；tracking-wider(.05em) 只给
     展示型大数字用，密集表格与 KPI 行不套，避免撑开既有等宽列。 */
  .hf-tick{display:inline-block;font-variant-numeric:tabular-nums}
  #s-best .bb-prob b.hf-tick{letter-spacing:.02em}

  /* ── ② Shimmer Button ──────────────────────────────────────────────
     shimmer-button.tsx：--spread 90deg / --speed 3s / --cut .05em / spark 容器 blur(2px)
       spark : conic-gradient(from calc(270deg - (spread*.5)), transparent 0,
                              shimmer-color spread, transparent spread)
       slide : shimmer-slide var(--speed) ease-in-out infinite alternate
       spin  : spin-around   calc(var(--speed)*2) linear infinite
       highlight: inset 0 -8px 10px #ffffff1f → hover -6px/3f → active -10px/3f
     亮色适配：深底默认白 shimmer，浅色按钮改用深绿（白在浅底不可见）；
     __back 用 background:inherit 跟随按钮自身的 hover 底色（原组件无 hover 换底）。 */
  .hf-sh{position:relative;z-index:0;display:inline-flex;align-items:center;justify-content:center;
    overflow:hidden;white-space:nowrap;background:var(--bg,#fff);isolation:isolate;
    transform:translate3d(0,0,0);transition:transform .3s ease-in-out}
  .hf-sh:active{transform:translateY(1px)}
  .hf-sh__spark{position:absolute;inset:0;z-index:-30;filter:blur(2px);overflow:visible;
    container-type:size;pointer-events:none}
  .hf-sh__slide{position:absolute;inset:0;height:100%;height:100cqh;width:auto;aspect-ratio:1;
    animation:hfShimmerSlide var(--speed,3s) ease-in-out infinite alternate}
  .hf-sh__spin{position:absolute;top:-100%;right:-100%;bottom:-100%;left:-100%;width:auto;
    background:conic-gradient(from calc(270deg - (var(--spread,90deg) * .5)),transparent 0,
      var(--shimmer-color,#fff) var(--spread,90deg),transparent var(--spread,90deg));
    animation:hfSpinAround calc(var(--speed,3s) * 2) linear infinite}
  @keyframes hfShimmerSlide{to{transform:translate(calc(100cqw - 100%),0)}}
  @keyframes hfSpinAround{
    0%{transform:translateZ(0) rotate(0)}
    15%,35%{transform:translateZ(0) rotate(90deg)}
    65%,85%{transform:translateZ(0) rotate(270deg)}
    100%{transform:translateZ(0) rotate(360deg)}}
  .hf-sh__hl{position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    box-shadow:inset 0 -8px 10px rgba(255,255,255,.122);transition:box-shadow .3s ease-in-out}
  .hf-sh:hover .hf-sh__hl{box-shadow:inset 0 -6px 10px rgba(255,255,255,.247)}
  .hf-sh:active .hf-sh__hl{box-shadow:inset 0 -10px 10px rgba(255,255,255,.247)}
  .hf-sh__back{position:absolute;inset:var(--cut,.05em);z-index:-20;background:inherit;
    border-radius:var(--radius,11px);pointer-events:none}
  .hf-sh__lb{position:relative;z-index:1;display:inline-flex;align-items:center;gap:7px}

  /* ── ③ Marquee ─────────────────────────────────────────────────────
     marquee.tsx：[--duration:40s] [--gap:1rem] p-2，4 份 track，hover 暂停；
     keyframes marquee to{translateX(calc(-100% - var(--gap)))} linear infinite。
     --duration 官方 demo 固定 40s；我们条目数是 demo 的数倍，固定 40s 读不清，
     故由 JS 按 track 宽度折算（55px/s），CSS 默认值仍保留 40s。 */
  .hf-mq{max-width:1560px;margin:0 auto}
  .hf-mq__wrap{display:flex;align-items:stretch;gap:9px}
  .hf-mq__hd{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;padding:0 12px;
    border:1px solid var(--line,#e6e9ef);border-radius:12px;background:var(--card,#fff);
    font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--mut2,#94a3b8);
    white-space:nowrap;box-shadow:0 1px 2px rgba(15,23,42,.05)}
  .hf-mq__hd i{width:6px;height:6px;border-radius:50%;background:#16a34a;font-style:normal;
    animation:hfPulse 2.4s ease-out infinite}
  .hf-mq__box{position:relative;flex:1 1 auto;min-width:0;display:flex;overflow:hidden;
    gap:var(--gap,1rem);padding:.375rem .5rem;border:1px solid var(--line,#e6e9ef);border-radius:12px;
    background:var(--card,#fff);box-shadow:0 1px 2px rgba(15,23,42,.05)}
  /* 两端渐隐用 mask 而不是"底色→透明"渐变：mask 与主题底色无关，深浅底都干净 */
  .hf-mq__box::before,.hf-mq__box::after{content:"";position:absolute;top:0;bottom:0;width:44px;
    z-index:2;pointer-events:none;background:var(--card,#fff)}
  .hf-mq__box::before{left:0;
    -webkit-mask-image:linear-gradient(90deg,#000,rgba(0,0,0,0));
    mask-image:linear-gradient(90deg,#000,rgba(0,0,0,0))}
  .hf-mq__box::after{right:0;
    -webkit-mask-image:linear-gradient(270deg,#000,rgba(0,0,0,0));
    mask-image:linear-gradient(270deg,#000,rgba(0,0,0,0))}
  .hf-mq__grp{display:flex;flex:0 0 auto;align-items:center;justify-content:space-around;
    gap:var(--gap,1rem);animation:hfMarquee var(--duration,40s) linear infinite;will-change:transform}
  .hf-mq:hover .hf-mq__grp{animation-play-state:paused}
  @keyframes hfMarquee{from{transform:translateX(0)}to{transform:translateX(calc(-100% - var(--gap,1rem)))}}
  .hf-mq__it{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;white-space:nowrap;
    color:var(--mut,#64748b);font-variant-numeric:tabular-nums}
  .hf-mq__lg{color:var(--mut2,#94a3b8);font-size:10.5px}
  .hf-mq__mt{color:var(--tx,#0f172a);font-weight:600}
  .hf-mq__from{color:var(--mut2,#94a3b8)}
  .hf-mq__arw{color:var(--mut2,#94a3b8)}
  .hf-mq__to{color:var(--tx,#0f172a);font-weight:700}
  .hf-mq__pct{font-weight:800;border-radius:999px;padding:1px 6px;font-size:10.5px;
    background:var(--card2,#eef1f5);color:var(--mut,#64748b)}
  /* 涨跌胶囊原来是**浅色期**遗留的浅底深字（#fee2e2/#dc2626、#dcfce7/#15803d），
     压在深色页上像贴纸；改深底同族亮字，「红涨绿跌」的中文惯例保留。 */
  .hf-mq__pct.dn{background:rgba(var(--ok-b),.16);color:var(--ok)}
  .hf-mq__pct.up{background:rgba(var(--bad-b),.16);color:var(--bad)}

  /* ── ④ Card Spotlight ──────────────────────────────────────────────
     card-spotlight.tsx：radius 350；overlay 绝对定位、opacity 0、
     transition duration 300ms，hover 时 opacity 1；
     mask: radial-gradient(350px circle at Xpx Ypx, white, transparent 80%)。
     （用 inset:0 代替 -inset-px：.card 里是 position:sticky 表头，
       加 overflow:hidden 会破坏吸顶；1px 差异肉眼不可见。） */
  .hf-spot{position:relative}
  .hf-spot>.hf-spot__glow{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:0;
    opacity:0;transition:opacity .3s cubic-bezier(.4,0,.2,1);
    background-color:var(--spot-color,rgba(15,23,42,.045));
    -webkit-mask-image:radial-gradient(var(--spot-r,350px) circle at var(--spot-x,50%) var(--spot-y,0%),#fff,transparent 80%);
    mask-image:radial-gradient(var(--spot-r,350px) circle at var(--spot-x,50%) var(--spot-y,0%),#fff,transparent 80%)}
  .hf-spot:hover>.hf-spot__glow{opacity:1}
  .hf-spot>*:not(.hf-spot__glow){position:relative;z-index:1}

  /* ── ⑤ Animated Tabs（滑块指示器）──────────────────────────────────
     tabs.tsx：活动项用 motion.div layoutId 滑块，spring bounce .3 / duration .6，
     absolute inset-0；容器 [perspective:1000px]。半径改成与既有按钮一致的 11px。 */
  #tabs{position:relative;perspective:1000px}
  #hf-pill{position:absolute;left:0;top:0;width:0;height:0;border-radius:11px;z-index:0;
    pointer-events:none;opacity:0;background:linear-gradient(180deg,#22c55e,#16a34a);
    box-shadow:0 1px 0 rgba(255,255,255,.42) inset,0 5px 12px -6px rgba(22,163,74,.8);
    transform:translate3d(0,0,0);will-change:transform,width,height}
  /* 未选中标签按钮跟随站点变量：HF_LIGHT 撤掉后 HF_BUTTONS 的白底在深色页上
     变成一排白药丸，必须由主题变量接管（选中态＝下面的 #hf-pill 滑块）。 */
  #tabs a{position:relative;z-index:1;background:var(--card2,#171a1f);
    border:1px solid var(--line,#22262c);color:var(--mut,#8b919b);
    box-shadow:0 1px 2px rgba(0,0,0,.30);
    transition:color .18s ease,border-color .18s ease,background .18s ease,transform .18s ease}
  #tabs a:hover{background:var(--card,#101215);border-color:var(--line2,#2b3038);
    color:var(--tx,#eef1f6);transform:translateY(-1px);box-shadow:0 4px 12px -6px rgba(0,0,0,.7)}
  #tabs a i{background:var(--bg2,#0e1013);color:var(--mut2,#5f646d)}
  #tabs a.on{background:transparent;border-color:transparent;box-shadow:none;color:#fff}
  #tabs a.on i{background:rgba(255,255,255,.24);color:#fff}
  /* 分区子导航是同一处白底问题，一并按主题变量接管 */
  #nav a{background:var(--card2,#171a1f);border:1px solid var(--line,#22262c);
    color:var(--mut,#8b919b);box-shadow:0 1px 2px rgba(0,0,0,.24);
    transition:color .16s ease,border-color .16s ease,background .16s ease}
  #nav a:hover{background:var(--card,#101215);border-color:var(--line2,#2b3038);color:var(--tx,#eef1f6)}
  #nav a.on{color:#fff;background:linear-gradient(180deg,#22c55e,#16a34a);border-color:transparent}

  /* ── ⑥ ContainerTextFlip：逐字 blur 入场 ────────────────────────────
     container-text-flip：initial{opacity:0,filter:blur(10px)} → {opacity:1,blur(0)}，
     delay = index*0.02s，animationDuration 700ms easeInOut。 */
  @keyframes hfLetterIn{from{opacity:0;filter:blur(10px)}to{opacity:1;filter:blur(0)}}
  .hf-flip-l{display:inline-block;opacity:0;filter:blur(10px);animation:hfLetterIn .7s ease-in-out both}

  /* ── ⑦ Word Rotate（数据截止时间刷新时）────────────────────────────
     word-rotate.tsx：容器 overflow-hidden py-2；进场 {opacity:0,y:-50}→{1,0}、
     出场 {1,0}→{0,y:50}，duration .25s easeOut。负 margin 抵消 py-2 以免撑高胶囊。 */
  .hf-rot{position:relative;overflow:hidden;display:inline-block;padding:5px 0;margin:-5px 0}
  .hf-rot__w{display:inline-block}
  .hf-rot__w.in{animation:hfRotIn .25s ease-out both}
  .hf-rot__w.out{position:absolute;left:0;top:0;animation:hfRotOut .25s ease-out both}
  @keyframes hfRotIn{from{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}
  @keyframes hfRotOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(50px)}}

  /* 最高概率卡：同一套光斑，浓度加强 */
  /* 最高概率卡：改用站点强调色 --acc2 的 1px 实环（原来那圈 #16a34a 绿是浅色期遗留，
     深色下几乎看不见）*/
  #s-best .bb-card.hf-top{border-color:var(--acc2);
    box-shadow:0 10px 26px -18px rgba(0,0,0,.85)}

  @media print{.hf-mq,.hf-sh__spark{display:none !important}}
  @media (prefers-reduced-motion: reduce){
    *{animation:none !important;transition:none !important}
    main > section,#tabs a,#s-best .bb-card{opacity:1 !important;transform:none !important}
    .bb-bar i,.pbar i,.bb-prob i,.hbar i{transform:none !important}
    .hf-flip-l,.hf-rot__w{opacity:1 !important;filter:none !important}
    #hf-pill{opacity:1 !important}
  }

  /* HF_MARQUEE 死 CSS 已于 2026-09-15 删除：旧跑马灯 DOM/脚本已移除（真浏览器实测
     旧跑马灯的容器 / 轨道 / 条目元素数均为 0），顶部实时赔率条现在由上面的
     HF_21ST ③ Marquee（.hf-mq）承担。 */

  /* ══ 每日预测（五玩法）版式重排（fx2 2026-09-15）════════════════════════
     维护者：「这个页面，密密麻麻」。病根：一张卡里 6 行小字同字号同颜色 ——
     队名独占两整行、玩法行 6 个数字同权、徽标散在卡头/卡底三处。
     只做三件事：① 一行 3 张（每张约 500px 才排得开）；② 主次字号/对比拉开；
     ③ 徽标并进固定的 chips 行。**文字、标签、数据一个字没动。** */

  /* ① 列数：原来 auto-fit(330px) 在 1600px 下挤成 4~5 列 → 固定 3 列 */
  .dpx{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  @media (max-width:1180px){.dpx{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @media (max-width:760px){.dpx{grid-template-columns:1fr}}
  .dpcard{border-radius:14px}

  /* ② 卡头：内边距/行距加大，让块与块之间有分界 */
  .dpc-h{padding:13px 15px 12px}
  .dpc-l1{font-size:11.5px;gap:7px;row-gap:7px;line-height:1.7}
  .dpc-vs{font-size:15px;margin:8px 0 4px;line-height:1.45}
  .dpc-vs .en{font-size:11px;color:var(--mut2)}
  .dpc-ko{font-size:11.5px;font-weight:500;color:var(--mut);line-height:1.7;margin-top:2px}

  /* ③ 玩法行主次分离：
        主（大/高对比）＝ 推荐选项 .pk、预测概率（第3格）、EV
        次（小/中低对比）＝ 玩法名 .pn、官方赔率（第4格）、状态文字（第6格） */
  .dpr{grid-template-columns:70px minmax(0,1fr) 58px 54px 62px 56px;
    gap:8px;padding:9px 15px;font-size:12px}
  .dpr .pn{font-size:11px;font-weight:600;color:var(--mut);letter-spacing:.02em}
  .dpr .pk{font-size:13px;font-weight:800}
  .dpr > .num:nth-child(3){font-size:14px;font-weight:800;color:var(--tx)}
  .dpr > .num:nth-child(4){font-size:12px;font-weight:500;color:var(--mut)}
  .dpr .ev{font-size:13px;font-weight:800}
  .dpr > .num:nth-child(6){font-size:11px;font-weight:500;color:var(--mut2)}
  @media (max-width:1180px){
    .dpr{grid-template-columns:62px minmax(0,1fr) 52px 50px 56px 50px;gap:6px;padding:9px 12px}
  }

  /* ④ 徽标 chips 行（卡头那一排）尺寸统一，与 .dptag / .t5-flags span 对齐 */
  .dpc-l1 .dptag{font-size:10px;padding:1px 7px}
  .dpc-f{gap:6px;padding:9px 15px}
  .dptag.fatal{border-color:rgba(var(--bad-b),.55);color:var(--bad);background:rgba(var(--bad-b),.12)}

  /* ⑤ 同一视图里另一处「一行 5 列」：B 区扫盘计划单（.pp-grid，每列 287px，
        卡内 6 段小字同样挤）→ 一并放宽到 3 列，字号做分层。 */
  #s-dpred .pp-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  @media (max-width:1180px){#s-dpred .pp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @media (max-width:760px){#s-dpred .pp-grid{grid-template-columns:1fr}}
  #s-dpred .pp-col-h{padding:11px 14px 10px}
  #s-dpred .pp-col-h b{font-size:14.5px}
  #s-dpred .pp-col-h i{font-size:10.5px;padding:2px 7px}
  #s-dpred .pp-item{padding:12px 14px 13px}
  #s-dpred .pp-r1{font-size:11px;font-weight:500;margin-bottom:8px;row-gap:6px}
  #s-dpred .pp-team{font-size:12.5px;margin-bottom:3px}
  #s-dpred .pp-pick{margin-top:9px}
  #s-dpred .pp-kv{font-size:11.5px;margin-top:7px;row-gap:6px}
  #s-dpred .pp-bar{margin-top:9px}

  
/* ══ HF_LIVE:BEGIN (dashctl) ══ */
  ﻿/* ══════════════════════════════════════════════════════════════════════════
     HF_LIVE —— 看板「实时层」样式（2026-09-16）
     · 只使用站点自带变量（--bg/--card/--tx/--mut/--acc/--ok/--warn/--bad/--line），
       **不自创任何色值**；高亮用的是 box-shadow + 站点强调色，不引入新颜色。
     · 实时徽标挂在顶栏「数据截止」右侧；变化条插在 <main> 之前（有变化才出现）。
     ══════════════════════════════════════════════════════════════════════════ */
  /* LIVE-CSS-BEGIN */
  .lv-stamp{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;
    border:1px solid var(--line);background:var(--card2);color:var(--mut);
    font-size:var(--fs-2xs,10.5px);letter-spacing:.02em;white-space:nowrap}
  .lv-stamp b{font-family:var(--font-num,ui-monospace,Consolas,monospace);font-size:12.5px;
    font-weight:700;color:var(--tx);font-variant-numeric:tabular-nums}
  .lv-stamp .lv-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:0 0 auto}
  .lv-stamp.lv-wait .lv-dot{background:var(--warn)}
  .lv-stamp.lv-fail{border-color:var(--warn);color:var(--warn)}
  .lv-stamp.lv-fail .lv-dot{background:var(--warn)}
  .lv-stamp.lv-fresh{border-color:var(--acc)}
  .lv-stamp.lv-fresh .lv-dot{background:var(--acc);animation:lvBlink 1.6s ease-out 3}
  @keyframes lvBlink{0%{opacity:1}50%{opacity:.25}100%{opacity:1}}

  /* 变化条：有变化才出现 */
  .lv-bar{display:flex;align-items:flex-start;gap:10px;margin:0 0 14px;padding:11px 14px;
    border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:var(--r-md,12px);
    background:var(--card);color:var(--tx);font-size:var(--fs-sm,12.5px);line-height:1.65}
  .lv-bar .lv-h{flex:0 0 auto;font-weight:700;color:var(--acc);white-space:nowrap}
  .lv-bar .lv-list{flex:1 1 auto;min-width:0}
  .lv-bar .lv-it{display:block}
  .lv-bar .lv-it i{font-style:normal;font-family:var(--font-num,ui-monospace,Consolas,monospace);
    font-variant-numeric:tabular-nums}
  .lv-up{color:var(--ok);font-weight:700}
  .lv-dn{color:var(--bad);font-weight:700}
  .lv-bar .lv-more{color:var(--mut);cursor:pointer;text-decoration:underline dotted}
  .lv-bar .lv-x{flex:0 0 auto;cursor:pointer;color:var(--mut);border:1px solid var(--line);
    border-radius:999px;padding:1px 8px;background:transparent;font-size:var(--fs-2xs,10.5px)}
  .lv-bar .lv-x:hover{color:var(--tx);border-color:var(--line2,var(--line))}
  .lv-hist{max-height:230px;overflow:auto;margin-top:6px;border-top:1px solid var(--line);padding-top:6px}
  .lv-hist .lv-hr{color:var(--mut);font-size:var(--fs-2xs,10.5px)}

  /* 变化高亮：只用站点强调色描边 + 一圈光环，不引入新色值、不改布局 */
  @keyframes lvHit{0%{box-shadow:0 0 0 0 var(--acc)}22%{box-shadow:0 0 0 3px var(--acc)}100%{box-shadow:0 0 0 0 var(--acc)}}
  .lv-hit{animation:lvHit 2.2s ease-out 1;border-radius:var(--r-md,12px)}
  @keyframes lvHitTxt{0%{color:var(--acc)}60%{color:var(--acc)}100%{color:inherit}}
  .lv-hit-t{animation:lvHitTxt 2.6s ease-out 1}

  /* 数据截止：过期琥珀色 ⚠（维护者规格） */
  .tcut.lv-stale{border-color:var(--warn);color:var(--warn)}
  .tcut.lv-stale b{color:var(--warn)}
  @media print{.lv-stamp,.lv-bar{display:none!important}}
  /* ── 盘口全球化（2026-09-16）：三家并列表，只用站点变量 ───────────────── */
  .mg-wrap{margin:14px 0 4px}
  .mg-wrap>h3{font-size:var(--fs-lg,15px);font-weight:700;color:var(--tx);margin:0 0 8px}
  .mg-sub{font-size:var(--fs-sm,12.5px);color:var(--mut);line-height:1.7;margin:0 0 8px}
  .mg-note{font-size:var(--fs-xs,11.5px);color:var(--mut);line-height:1.7;margin:6px 0}
  .mg-tblwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-md,12px);background:var(--card2)}
  .mg-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-sm,12.5px)}
  .mg-tbl th{position:sticky;top:0;background:var(--card);color:var(--mut);font-weight:700;
    text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
  .mg-tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
  .mg-tbl tr:last-child td{border-bottom:0}
  .mg-tbl td.m b{display:block;color:var(--tx)}
  .mg-tbl td.m span{display:block;color:var(--mut);font-size:var(--fs-2xs,10.5px)}
  .mg-tbl .mg-ko{font-family:var(--font-num,monospace);font-variant-numeric:tabular-nums}
  .mg-b{display:flex;gap:8px;font-family:var(--font-num,monospace);font-variant-numeric:tabular-nums;
    color:var(--tx);font-weight:700}
  .mg-o{font-size:var(--fs-2xs,10.5px);color:var(--mut);font-family:var(--font-num,monospace);
    font-variant-numeric:tabular-nums;margin-top:2px}
  .mg-t{font-size:var(--fs-2xs,10.5px);color:var(--mut2,var(--mut));font-family:var(--font-num,monospace);margin-top:2px}
  .mg-na{color:var(--warn);font-weight:700;white-space:nowrap}
  .mg-na2{color:var(--mut2,var(--mut));white-space:nowrap}
  .mg-div b{color:var(--pur);font-family:var(--font-num,monospace);font-variant-numeric:tabular-nums}
  .mg-ah,.mg-ou{font-family:var(--font-num,monospace);font-variant-numeric:tabular-nums;color:var(--tx)}
  /* LIVE-CSS-END */
/* ══ HF_LIVE:END ══ */
/* ══ HF_MOBILE:BEGIN 手机端同步优化（2026-09-16）════════════════════════════
   维护者原话：「手机端打开这个网页你也做个同步优化」。
   目标机：安卓 + 腾讯浏览器（≈390px）；兼容微信内置浏览器 / iPhone Safari。
   · 只在 ≤760px 命中 —— ≥761px（桌面 1280/1440/1600）一条都不生效，不回归。
   · 色值只用站点变量（--bg/--card/--tx/--mut/--acc/--ok/--warn/--bad），不自创。
   · **不改任何文字 / 标签 / 栏目 / 数据**：这里只动字号、间距、布局与可见性。
   · 本块注入在样式表**末尾**（紧跟它后面就是收尾标签）→ 同选择器下最后生效，
     能压过前面所有规则。注意：本注释里**绝不能**出现收尾标签的字面量 ——
     HTML 对样式内容是"原始文本"，注释挡不住它，会把整段 CSS 变成页面正文。
   ──────────────────────────────────────────────────────────────────────── */
@media (max-width:760px){

/* ① 字号：正文 ≥13px、关键数字 ≥16px ───────────────────────────────────
   基线实测（390×844，线上）：<13px 的元素约 3000 处 —— 10px×247、10.5px×277、
   11px×534、11.5px×474、12px×1470。这里先把设计 token 整体抬起来（全站 var(--fs-*)
   都跟着走），再对少数写死 px 的地方逐个覆盖。 */
:root{
  --fs-2xs:13px;   /* 徽标/脚注  ← 10.5 */
  --fs-xs:13.5px;  /* 辅助说明  ← 11.5 */
  --fs-sm:14px;    /* 次要正文  ← 12.5 */
  --fs-md:15px;    /* 正文      ← 13.5 */
  --fs-lg:16px;    /* 小标题    ← 15 */
  --fs-xl:18px;    /* 段落标题  ← 17 */
}
body{font-size:15px}

/* 写死 px 的正文类，统一下限 13px */
#hf-odds .hf-mq__it,.hf-mq__box,.hf-mq__grp{font-size:13px}
.pp-item .pp-r1>span,.pp-item .pp-r1 .rank,.pp-item .pp-r1 .dptag{font-size:13px}
.pp-item .pp-team>span,.pp-item .pp-kv>span{font-size:13px}
.pp-pcard .pp-big>div>span,.pp-pcard .pp-kv>span{font-size:13px}
.dpr .pn,.dpr .pk .dptag,.dpr .num .off{font-size:13px}
.dpc-h span,.dpc-f span,.dpc-l1 span,.dptag,.t5-num,.t5-lg{font-size:13px}
.bb-team>span,.bb-row>span,.bb-heat legend,.bb-heatlegend span{font-size:13px}
.srcrow,.srclist,.deadline,.mini,.note-chip{font-size:13px}
#tabs a i{font-size:13px}
.lv-stamp,.tcut>span:first-child,.tcut #topcut-a{font-size:13px}
.tag,.tag b,.chip,.dc-lu-p,.dc-lu-p b,.dc-num,.dc-pos,.dc-inj{font-size:13px}
footer,.foot,.note,.li,.read,.insight,.mg-note,.mg-sub,.mg-t{font-size:13px}

/* 关键数字 ≥16px：官方赔率 / EV / 概率 / 变动 / KPI / 数据截止时间 */
.pp-item .pp-kv b,.pp-pcard .pp-kv b,.bb-row>b,.pp-pcard .pp-big b{font-size:16px}
.dpr .num,.td-num,td.num,.num{font-size:16px}
t5 td,.pc{font-size:16px}
tbody td span.pc,.pc{font-size:16px}
.mg-o{font-size:16px}
.dc-delta{font-size:16px}
.dc-st b,.kpi b{font-size:18px}
.tcut b,#topcut-v{font-size:16px;white-space:normal}
#dp-plan .pp-sub>b{font-size:16px}

/* ② 触控目标 ≥44px ────────────────────────────────────────────────────
   基线：<44px 共 22 个 —— #tabs a(40) ×7、#nav a(40) ×6、h2>a.anchor(25) ×6、
   .dpseg button(40) ×2、另 1 个 1px 空锚点。 */
#tabs a,#nav a{min-height:44px;display:inline-flex;align-items:center}
.dpseg button,.pbtn,.tbtn,.toolbar button,.toolbar select,.toolbar label{min-height:44px}
.termrow,.ckitem,.chip,.star{min-height:44px}
h2>a.anchor{display:inline-flex;align-items:center;justify-content:center;
  min-width:44px;min-height:44px;margin:-10px 0 -10px -8px}

/* ③ 宽表 → 卡片流（一行一场、字段竖排）────────────────────────────────
   为什么选卡片流而不是「首列固定 + 横向滚动」：实测 #t-off 19 列需要 2768px 横向
   滚动 ≈ 7.1 个屏宽，#mg-tbl 7 列需要 852px ≈ 2.2 个屏宽。横向拖到第 3 屏以后，
   场次号/对阵早已滚出视野，行与列的对应关系丢失 —— 对「多列赔率横向比较」这种
   用途是硬伤。卡片流把这些表变成「一场一卡、字段竖排」，一次纵向滑动读完整场，
   横向需求降为 0。实现是纯展示层改造（DOM 不动、文字不动），
   所以 tagRow / applyFilters / tr.children[i] 那些按列取值的逻辑全部不受影响。
   标签文字直接取自表头已有的 <th>（JS 写入 data-th），不新增任何文案。 */
table.mc{display:block;width:100%;min-width:0 !important;border:0}
table.mc thead{display:none}
table.mc tbody{display:block}
table.mc tbody tr{display:block;margin:0 0 10px;padding:4px 0;
  border:1px solid var(--line);border-radius:12px;background:var(--card2)}
table.mc tbody tr:last-child{margin-bottom:2px}
table.mc tbody td{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 8px;width:auto;
  border:0;padding:8px 12px;text-align:left;white-space:normal;
  font-size:14px;line-height:1.5}
table.mc tbody td+td{border-top:1px dashed var(--line)}
/* 字段名：自然宽度、上限 46%；值里的每个子元素**不许被压缩**（flex:0 0 auto），
   放不下时整行换行 —— 这样「汉坎 vs 莫尔德」「比分 Selling」不会被挤成一字一行
   （第一版实测踩到过：值被压到 40px 宽，队名逐字竖排）。 */
table.mc tbody td::before{content:attr(data-th);flex:0 1 auto;max-width:46%;
  color:var(--mut);font-size:13px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
table.mc tbody td>*{flex:0 0 auto;max-width:100%;min-width:0;overflow-wrap:anywhere}
table.mc tbody td .dc-team{max-width:100%}
table.mc tbody td .dc-team>span{white-space:nowrap;text-overflow:clip}
table.mc tbody td:empty{display:none}
table.mc tbody td.num{justify-content:flex-start;text-align:left}
table.mc tbody td[colspan]{display:block}
table.mc tbody td[colspan]::before{display:none}
/* 表头本身为空的列（#t-st / #t-elo 的条形图列）：卡片里不显示字段名，让值占满整行，
   免得出现「空标签 + 一条横条」的怪样子。 */
table.mc tbody td[data-th=""]{display:block}
table.mc tbody td[data-th=""]::before{display:none}
/* 卡片流里各表的"横向条/骑轴条"按满宽走 */
table.mc .dc-bar,table.mc .dc-mag{width:100%;min-width:80px}
table.mc .bb-heat,table.mc .dc-lu{grid-template-columns:1fr !important}

/* 矩阵/热力图类表格不卡片化（行×列本身就是语义），只给足横向滚动 */
#t-cov,#t-dpmatrix{font-size:13px}
#t-cov th,#t-cov td,#t-dpmatrix th,#t-dpmatrix td{padding:6px 8px;min-width:56px}
.scroll{max-height:min(62vh,520px);overflow:auto;-webkit-overflow-scrolling:touch;
  /* ★ 2026-09-18 WIG-A2：表格/长列表是**内部滚动容器**，手机上滚到表尾会把整页带着跑
     （或触发浏览器下拉刷新）。contain 让滚动链在容器内终止。 */
  overscroll-behavior:contain}
.dptbl-wrap,.mg-tblwrap{overscroll-behavior:contain}

/* ④ 顶栏精简（基线：topbar 213px + #tabs 156px = 369px，占 844px 首屏的 44%）*/
.topbar{padding:8px 12px;gap:8px;row-gap:6px}
/* ★ LOGO2 —— 手机端标记：盒子仍是 28px（与改前同尺寸，不改变顶栏高度），
   标记铺满 28px = 正好卡在「渲染尺寸 ≥28px 才挂 .anim」的闸门上（16/24px 一律静止）。 */
.topbar .logo2{width:28px;height:28px;border-radius:0}
.topbar .logo2 svg{width:28px;height:28px}
.topbar .nm{font-size:15px;line-height:1.3;white-space:normal;overflow-wrap:anywhere;
  min-width:0;max-width:100%}                 /* 品牌名可折行，但不许溢出 */
.topbar .nm small{display:none}               /* 副标题（生成时间/版本）手机端隐藏 */
.topright{margin-left:0;width:100%;gap:6px}
.tcut{flex:1 1 auto;min-width:0;padding:6px 10px;gap:6px;flex-wrap:wrap;line-height:1.35}
.tbtn{padding:8px 10px}

/* ⑤ 标签栏：保持横向滚动 + 当前标签自动滚入视野（滚入由 HF_MOBILE_JS 负责）
   基线问题：#tabs 被后面的 `flex-wrap:wrap` 压成 4 行、高 156px。这里在样式表
   末尾用同选择器重新声明 nowrap，压回一行。绝不让它把页面撑出横向滚动条 ——
   滚动发生在 #tabs 内部（overflow-x:auto），页面本身仍然 0 溢出。 */
#tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:6px;
  padding:8px 12px;margin:0;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#tabs::-webkit-scrollbar{display:none}
#tabs a{flex:0 0 auto;padding:10px 13px;font-size:13px;border-radius:11px}
#nav{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:6px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
#nav::-webkit-scrollbar{display:none}
#nav a{flex:0 0 auto;font-size:13px;padding:8px 12px}

/* ⑥ 首屏更短：非首屏区块默认多收几块（HF_MOBILE_JS 负责加 .sec-collapsed）
   这里只保证折叠头本身也是 ≥44px 的可点目标。 */
section.sec-collapsed>.card>h2{min-height:44px;display:flex;align-items:center;
  flex-wrap:wrap;gap:6px}

/* ⑦ 间距与留白（手机端不要"满屏、拖不动"）*/
main,.report{padding-left:12px;padding-right:12px}
.card{padding:0 12px 12px;border-radius:12px}
main>section{margin-bottom:14px}
.card+.card{margin-top:10px}
.grid2,.kpis,.dc-strip,.t5-kpis{grid-template-columns:1fr}
.grid12>*{grid-column:span 12 !important}
h1,h2{line-height:1.3}

/* ⑧ 图片 / 队徽尺寸适配（原来 .dc-crest 17px 太小看不清）*/
.dc-crest{width:20px;height:20px;vertical-align:-5px}
#s-best .bb-crest{width:22px;height:22px}
.dpc-vs .bb-crest,.pp-crest{width:24px;height:24px}
.dpc-vs .bt b{font-size:15px}
.pp-team>span,.bb-team>span{font-size:13px}
.mg-wrap>h3{font-size:16px}
.mg-tbl{font-size:14px}

/* ⑨ 残余小字号清尾 ───────────────────────────────────────────────────
   实测：打完上面的 token 覆盖后，仍有约 1274 处 <13px。原因是那些元素被**更高
   优先级的选择器**压住（ID 选择器 / 更长的后代链），class 级规则赢不了。
   这里用一段带 !important 的收尾规则把它们抬到 ≥13px。
   ★ 本块整体只在 ≤760px 命中，!important 不会外溢到桌面（1280/1440/1600 不回归）。 */
span.pill,span.pill.warn,span.pill.bad,span.pill.ok,span.pill.acc,
span.pill.mut,span.pill.pur{font-size:13px !important}
tbody td div.muted,div.dpc-vs>span.muted,div.dpc-vs>div.en{font-size:13px !important}
#hf-odds .hf-mq__it,#hf-odds .hf-mq__it *{font-size:13px !important}
tbody td span.pk,tbody td span.pc{font-size:13px !important}
tbody td.m>b,tbody td.m>span{font-size:13px !important}
tbody td.k,tbody td.k>b{font-size:13px !important}
#s-best .bb-heat td .pc{font-size:13px !important}
#s-best .bb-heat table{min-width:0 !important}
#dp-cards .dpr>span.num{font-size:13px !important}
#dp-cards .dpr>span.pn,#dp-cards .dpr .dptag{font-size:13px !important}
#dp-cards .dpc-ko,#dp-cards .dpc-l1 span,#dp-cards .dpc-f span{font-size:13px !important}
#dp-cards .dpc-plays .pk span{font-size:13px !important}
.pp-item .pp-r1 .rank{font-size:13px !important}
.pp-col-h,.pp-col-h>i,.pp-col-h>b{font-size:13px !important}
.pp-pcard .pp-big>div>span,.pp-pcard .pp-leg>span.lg{font-size:13px !important}
.pp-pcard .pp-leg>span.nm,.pp-pcard .pp-leg>span.vv{font-size:13px !important}
.dpnote,.dpnote b,.dpnote span{font-size:13px !important}
.deadline,.mini,.note-chip,.foot small{font-size:13px !important}
/* 第三轮实测剩下的（全展开态 120 处）：tag 胶囊 / 五玩法卡的说明字 / 数据时间 / 表头 */
.tag,.tag b,.tag span{font-size:13px !important}
.dpgap,.dpgap b,.dpgap span{font-size:13px !important}
span.upd,.upd b{font-size:13px !important}
#s-best .bb-tier,#s-best .bb-hint,#s-best .bb-vs,#s-best .bb-num,#s-best .bb-ko,
#s-best .bb-match,#s-best .bb-match i,#s-best .bb-match b{font-size:13px !important}
.dpseg button,.dpsub button{font-size:13px !important}
table thead th{font-size:13px !important}
#s-best .bb-num{font-family:var(--font-num)}
/* 收尾第二轮（全展开态剩 48 处）：次要标签/说明字统一抬到 13px。
   ★ 数值类（.num/.pc/.mg-o/.dc-delta）与两个"关键数字"容器（.pp-kv / .bb-row）
     用 :not() 排除在外 —— 它们要保持 16px。 */
.dpcard b:not(.num),.dpcard span:not(.num):not(.pc),
.bb-card span:not(.num),.bb-card b:not(.num):not(.bb-row):not(.pp-kv),
.pp-item span:not(.num),.pp-item b:not(.num):not(.pp-kv),
.pp-sub,.pp-sub b,.pp-band,.pp-band b,.pp-pcard span:not(.num),
.lv-stamp,.lv-stamp b,.fchip,.rl,.hf-mq__hd,
.bb-t2,.bb-when,.bb-heats,.bb-heats b,.dpc-plays i,.dpc-h i{font-size:13px !important}
/* ★ 关键数字兜底重申：官方赔率 / EV 一律 16px（用更高优先级压住上面的收尾规则）。
   注意 DOM 实际是 .pp-kv > span > b（b 不是 .pp-kv 的直接子节点），所以用后代选择器。 */
body .pp-item .pp-kv b,body .bb-card .bb-row b,body .pp-pcard .pp-kv b,
body #bb-grid .bb-row b,body #dp-plan .pp-kv b{font-size:16px !important}
}

/* ══ HF_MOBILE:END ══ */

/* ══ HF_GLOBAL:BEGIN 全球元素（2026-09-16）══════════════════════════════════
   ① 地区·国家分组 ② 覆盖统计 ③ 时区双显示 ④ 世界分布示意。
   色值一律取站点变量（--bg/--card/--card2/--tx/--mut/--mut2/--acc/--warn/--line/--line2），
   不自创色值。位置：结论卡片内部**结论之后**的背景位。
   ══════════════════════════════════════════════════════════════════════════ */
.glwrap{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.gl-h{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;font-size:var(--fs-sm);
  color:var(--mut);margin-bottom:8px;letter-spacing:.02em}
.gl-h .gl-t{color:var(--tx);font-weight:600}
.gl-note{font-size:var(--fs-2xs);color:var(--mut2)}
.gl-stat{font-size:var(--fs-md);color:var(--tx);margin:2px 0 12px;line-height:1.9}
.gl-stat b{font-family:var(--font-num);font-size:16px;color:var(--acc);padding:0 2px}
.gl-stat .gl-sub{font-size:var(--fs-xs);color:var(--mut);margin-left:6px}
.gl-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px;
  align-items:start}
.gl-mapbox{min-width:0}
.gl-svg{width:100%;height:auto;display:block;border-radius:var(--r-md)}
.gl-sea{fill:var(--card2)}
.gl-land{fill:var(--line2)}
.gl-grat{stroke:var(--line);stroke-width:1;stroke-dasharray:5 7}
.gl-dot-b{fill:var(--mut2);fill-opacity:.45}
.gl-hot circle{fill:var(--acc);stroke:var(--bg);stroke-width:2}
.gl-cnt{font-size:15px;font-weight:700;fill:var(--bg);font-family:var(--font-num)}
.gl-lb{font-size:15px;fill:var(--tx);paint-order:stroke;stroke:var(--bg);stroke-width:4px;
  stroke-linejoin:round;font-weight:600}
.gl-miss{font-size:var(--fs-xs);color:var(--mut);margin-top:6px}
.gl-reg{display:flex;flex-direction:column;gap:7px;min-width:0}
.gl-rrow{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:8px;align-items:center;
  font-size:var(--fs-sm)}
.gl-rname{color:var(--mut)}
.gl-rbar{height:8px;border-radius:var(--r-pill);background:var(--card2);overflow:hidden}
.gl-rbar>i{display:block;height:100%;border-radius:var(--r-pill);background:var(--acc)}
.gl-rn{font-family:var(--font-num);color:var(--tx)}
.gl-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.gl-chip{border:1px solid var(--line2);border-radius:var(--r-pill);padding:1px 9px;
  font-size:var(--fs-2xs);color:var(--mut);white-space:nowrap}
.gl-chip b{color:var(--tx);font-family:var(--font-num)}
.gl-chip.pend{border-style:dashed;border-color:var(--warn);color:var(--warn)}
.gl-chip.pend b{color:var(--warn)}
/* ══ HF_TC2026:BEGIN 全球覆盖口径轮（2026-09-16）══════════════════════════
   只加规则，不改任何既有规则；色值一律取站点变量（--line2/--mut2/--tx/--acc）。
   ────────────────────────────────────────────────────────────────────────── */
/* 两级地区表达：位置不同 + 样式不同，「今日 0 场」与「库内暂无该地区联赛」一眼可分 */
.gl-chip.nolib{border-style:dotted;border-color:var(--line2);color:var(--mut2);cursor:help}
.gl-chip.sub{border-style:dashed;border-color:var(--line2);color:var(--mut2)}
.gl-chip.sub b{color:var(--mut)}
.gl-rn{white-space:nowrap}
.gl-rsub{display:block;font-size:10px;font-weight:400;letter-spacing:0;color:var(--mut2);
  font-family:var(--font-num);line-height:1.4}
/* 「口径（先看这句）」：贴在数字正下方，浅底左条，不抢结论 */
.gl-kj{margin:-4px 0 12px;padding:7px 10px;border-left:2px solid var(--acc2);
  background:var(--card2);border-radius:0 6px 6px 0}
.gl-kj b{color:var(--tx)}
/* 半全场全称：简写「主/主」保持 31px 大字号，全称另起一行小字，只加说明不动数字 */
#s-best .bb-pick-full{font-size:11.5px;line-height:1.5;color:var(--mut);margin:0 0 6px;
  letter-spacing:0;font-weight:500}
#s-best .bb-pick-full b{color:var(--tx);font-weight:600}
/* 「怎么读 · 口径」半全场 9 种组合对照表 */
.hafu9{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 12px;margin-top:8px}
.hafu9 .hf9{display:flex;gap:7px;align-items:baseline;min-width:0;padding:5px 9px;
  border:1px solid var(--line);border-radius:6px;background:var(--card2);
  font-size:var(--fs-2xs);color:var(--mut)}
.hafu9 .hf9 b{flex:0 0 auto;font-family:var(--font-num);font-size:13px;color:var(--acc)}
.hafu9 .hf9 span{min-width:0;overflow-wrap:anywhere}
@media (max-width:760px){
  .hafu9{grid-template-columns:minmax(0,1fr)}
  .gl-kj{font-size:var(--fs-2xs)}
}
/* ══ HF_TC2026:END ══ */
.gl-formula{font-size:var(--fs-2xs);color:var(--mut2);margin-top:12px;line-height:1.8;
  word-break:break-word}
.gl-formula code{font-family:var(--font-num);color:var(--mut);background:var(--card2);
  padding:0 4px;border-radius:4px}
.gl-formula details{margin-top:6px}
.gl-formula summary{cursor:pointer;color:var(--mut)}
.gl-top{display:inline-flex;gap:6px;align-items:baseline}
.gl-top b{font-family:var(--font-num);color:var(--acc)}
@media (max-width:760px){
  /* 手机端：SVG 里的国家名标签被等比缩放后一定看不清 → 隐藏标签、放大点内数字，
     国家名与场次数改由下方 HTML 芯片清单承载（HTML 字号走手机端既有规则）。 */
  .gl-lb{display:none}
  .gl-cnt{font-size:24px}
  .gl-grid{grid-template-columns:minmax(0,1fr)}
  .gl-stat b{font-size:15px}
  .gl-rrow{grid-template-columns:50px minmax(0,1fr) auto;font-size:var(--fs-xs)}
  .gl-top{display:none}
}
/* ══ HF_GLOBAL:END ══ */

/* ══ HF_TOPCUT:BEGIN 数据截止 · 源名 + 点按详情（2026-09-16）══════════════════
   维护者规格：每个时间标源名；点一下展开逐源详情（触屏必须可点）；
   过期 = ⚠ + 琥珀，红色只留给致命；手机上允许多行但每行完整、不截断。
   色值一律取站点变量，不自创。 ══════════════════════════════════════════════ */
.tcut{cursor:pointer}
.tcut.open{border-color:var(--acc)}
.tcutpanel{margin:6px auto 0;max-width:1560px;padding:0 var(--s5);
  box-sizing:border-box;width:100%}
.tcutpanel[hidden]{display:none}
.tc-h{font-size:var(--fs-sm);color:var(--tx);font-weight:600;margin:6px 0 8px;
  display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}
.tc-h2{font-size:var(--fs-sm);color:var(--tx);font-weight:600;margin:12px 0 6px}
.tc-head,.tc-r{display:grid;grid-template-columns:minmax(140px,1.5fr) 152px 96px 100px 68px;
  gap:8px;align-items:center;min-width:0}
.tc-head{font-size:var(--fs-2xs);color:var(--mut2);letter-spacing:.04em;padding:4px 0;
  border-bottom:1px solid var(--line2)}
.tc-r{font-size:var(--fs-sm);color:var(--mut);padding:6px 0;
  border-bottom:1px solid var(--line);min-width:0}
.tc-r>*{min-width:0;overflow-wrap:anywhere}
.tc-r .tc-n{color:var(--tx)}
.tc-t{font-family:var(--font-num);color:var(--mut)}
.tc-age{font-family:var(--font-num);color:var(--mut)}
.tc-lim{font-size:var(--fs-2xs);color:var(--mut2)}
.tc-s{font-size:var(--fs-xs);text-align:right}
.tc-r.ok .tc-s{color:var(--ok)}
.tc-r.warn .tc-s,.tc-r.warn .tc-n{color:var(--warn)}
.tc-r.mut .tc-s{color:var(--mut2)}
.tc-note{font-size:var(--fs-2xs);color:var(--mut2)}
@media (max-width:760px){
  .tcutpanel{padding:0 12px}
  .tc-head{display:none}
  .tc-r{grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:8px 0}
  .tc-n{grid-column:1;order:1;font-size:var(--fs-sm)}
  .tc-age{grid-column:2;order:2;text-align:right;font-size:var(--fs-sm)}
  .tc-t{grid-column:1;order:3;font-size:var(--fs-xs)}
  .tc-lim{display:none}
  .tc-s{grid-column:2;order:3;align-self:end}
}
/* ══ HF_TOPCUT:END ══ */

/* ══ HF_FRESH:BEGIN 新鲜度判定修误报（2026-09-16）════════════════════════════
   「无待赛场次（非故障）」/「待下次采集」= 中性色，不染色、不加 ⚠；
   只有「已过期」才琥珀 ⚠；红色留给致命（这里不用）。 ════════════════════════ */
.tc-r.ok2 .tc-s{color:var(--mut)}
.tc-why{grid-column:1/-1;font-size:var(--fs-2xs);color:var(--mut2);margin-top:2px;
  overflow-wrap:anywhere}
.tc-r.warn .tc-why{color:var(--warn)}
/* ══ HF_FRESH:END ══ */

/* ══ HF_TCFIX:BEGIN 数据截止详情面板视觉修正（2026-09-16，截图复核后）══════════
   ① 判定依据行排到本行最后（原先在手机端跑到上一行去了）；
   ② 桌面端状态列加宽（原先「无待赛场次（非故障）」折 3 行）；
      只作用 min-width:761px，手机端 2 列布局原样保留。 ═══════════════════════ */
.tc-why{order:9}
@media (min-width:761px){
  .tc-head,.tc-r{grid-template-columns:minmax(150px,1.4fr) 168px 104px 112px 152px}
}
/* ══ HF_TCFIX:END ══ */

/* ══ HF_MX:BEGIN 推导玩法（2026-09-16）═══════════════════════════════════════
   全站色值只取站点变量；这一块只是把「推导」两个字做成一眼可见的小标，
   并让半全场 9 格在窄列里也能读。 ═══════════════════════════════════════════ */
.mx-wrap{margin-top:18px}
.mx-src{display:inline-block;margin-top:3px;font-size:var(--fs-2xs,10.5px);color:var(--acc);
  border:1px solid var(--line2);border-radius:var(--r-pill,999px);padding:0 6px}
.mx-9{display:flex;flex-wrap:wrap;gap:3px 6px}
.mx-9 .mx-g{font-size:var(--fs-2xs,10.5px);color:var(--mut);white-space:nowrap}
.mx-9 .mx-g i{font-style:normal;color:var(--mut2);margin-right:3px}
@media (max-width:760px){
  .mx-9 .mx-g{font-size:13px}
}
/* ══ HF_MX:END ══ */
/* ══ HF_PINN —— Pinnacle 实盘市场块（[补-3]）═══════════════════════════════
   只新增本块用到的类；.mg-wrap/.mg-tbl 等沿用盘口全球化那一套，视觉不分叉。 */
.ps-wrap{margin-top:18px}
.ps-chip{display:inline-block;font-size:11px;line-height:1.5;padding:1px 7px;border-radius:999px;
  margin:0 4px 2px 0;background:rgba(200,255,77,.13);color:var(--acc);
  border:1px solid rgba(200,255,77,.34);vertical-align:middle}
.ps-chip.no{background:rgba(255,125,143,.11);color:var(--bad);border-color:rgba(255,125,143,.34)}
.ps-g9{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;
  font-variant-numeric:tabular-nums}
.ps-g9 span{display:flex;justify-content:space-between;gap:4px;padding:2px 5px;border-radius:6px;
  background:var(--card2);font-size:12px;min-width:0}
.ps-g9 span i{color:var(--mut);font-style:normal;flex:0 0 auto}
.ps-g9 span b{font-weight:600}
.ps-g9 span u{text-decoration:none;color:var(--mut2);font-size:10.5px}
.ps-A{color:var(--ok);font-weight:700}
.ps-B{color:var(--acc);font-weight:700}
.ps-C{color:var(--warn);font-weight:700}
.ps-D{color:var(--bad);font-weight:700}
.ps-none{color:var(--mut2)}
.ps-dv{font-size:11px;color:var(--mut);margin-top:3px}
@media (max-width:760px){
  .ps-g9 span{font-size:11.5px;padding:2px 4px}
  .ps-g9 span u{display:none}
}
/* ══ HF_SECUI:BEGIN ══ */
/* ══ HF_SECUI —— 折叠按钮视觉强化（2026-09-16 维护者规格）════════════════════
   要求：图标放大一档 / 用强调色 --acc / 浅底圆角承载 / hover 与按下反馈 /
        展开与收起状态可区分（箭头旋转）/ 手机端触控 ≥44px；**不改文案语义**。
   文案仍是「展开 / 收起」，箭头改由 CSS 画（可旋转），不再用字符 ▾▴。 */
.sec-tgl{display:inline-flex;align-items:center;gap:7px;margin-left:8px;
  padding:4px 12px;border-radius:999px;font-size:13px;line-height:1.45;font-weight:600;
  color:var(--acc);background:rgba(200,255,77,.13);
  border:1px solid rgba(200,255,77,.40);opacity:1;
  transition:background .16s ease,border-color .16s ease,transform .12s ease,color .16s ease;
  user-select:none;-webkit-tap-highlight-color:transparent}
.sec-tgl::before{content:"";width:10px;height:10px;flex:0 0 auto;
  border-right:2.5px solid currentColor;border-bottom:2.5px solid currentColor;
  transform:rotate(45deg) translate(-1px,-1px);transition:transform .18s ease}
section.sec-open>.card>h2 .sec-tgl::before{transform:rotate(-135deg) translate(-1px,-1px)}
section.sec-collapsed>.card>h2:hover .sec-tgl{background:rgba(200,255,77,.24);
  border-color:var(--acc);color:var(--acc);transform:translateY(-1px)}
section.sec-collapsed>.card>h2:active .sec-tgl{transform:translateY(0) scale(.95)}
section.sec-open>.card>h2 .sec-tgl{background:rgba(200,255,77,.06);
  border-color:rgba(200,255,77,.28);color:var(--acc2)}
@media (max-width:760px){
  section.sec-collapsed>.card>h2 .sec-tgl,
  section.sec-open>.card>h2 .sec-tgl{min-height:44px;padding:12px 16px;font-size:14px;
    margin-left:auto}
  .sec-tgl::before{width:11px;height:11px}
}

/* ══ HF_SECUI:END ══ */


/* ══ R1 挑选口径表（2026-09-16 维护者拍板）══════════════════════════════════
   四处「首选」的口径对照表，渲染在「⑥ 怎么读 · 口径」抽屉里（#pick-rule-doc）。
   全局 th,td 是 white-space:nowrap（为宽表设计），这里必须放开换行，否则长文案会把
   整页撑宽 —— 正是"桌面无横向溢出"那条自查要抓的东西。 */
#pick-rule-doc table.prd{width:100%;table-layout:auto}
#pick-rule-doc table.prd th,#pick-rule-doc table.prd td{
  white-space:normal;vertical-align:top;line-height:1.55;font-size:var(--fs6)}
#pick-rule-doc table.prd td:first-child{min-width:190px}
#pick-rule-doc table.prd b{color:var(--tx)}
#pick-rule-doc .mini{color:var(--mut);line-height:1.6}


/* ══ 队列5（2026-09-16）手机端残留横滑 ═══════════════════════════════════════
   ① 简报表/口径表里的 <pre>（依据 JSON）不设约束会把卡片撑破（实测 390px 溢 15px）
   ② 卡片流覆盖不到的横向滚动容器，给一枚滑动提示
   桌面（≥761px）全部不生效。 */
@media (max-width:760px){
  #lb-matches pre, #pick-rule-doc pre, .mc pre{
    max-width:100%; white-space:pre-wrap; word-break:break-all; overflow-wrap:anywhere;
  }
  #lb-matches td, #lb-matches th{ min-width:0; }
  .hf-scrollhint{
    display:block; text-align:center; color:var(--mut2);
    font-size:var(--fs-2xs,11px); letter-spacing:.5px;
    padding:2px 0 6px; user-select:none;
  }
  #tabs + .hf-scrollhint, #nav + .hf-scrollhint{ padding:0 0 4px; }
}

/* 队列5 收尾：B3 简报表在 390/360px 下仍残留 15~45px 横滑（<pre> 撑破单元格）。
   table-layout:fixed + 强制换行把最后一处非图表类横滑消掉。桌面不生效。 */
@media (max-width:760px){
  #lb-matches{ table-layout:fixed; width:100%; max-width:100%; }
  #lb-matches td, #lb-matches th{ white-space:normal; overflow-wrap:anywhere; word-break:break-word; }
  #lb-matches pre{ max-width:100%; white-space:pre-wrap; overflow-wrap:anywhere; }
  #lb-matches details{ max-width:100%; }
}

/* 桌面才给「一句话说明」列一个舒适最小宽度；手机由 table-layout:fixed 接管。 */
@media (min-width:761px){ #lb-matches td.lb-txt{ min-width:320px; } }

/* ══ 队列8 ① tabular-nums 全覆盖（2026-09-16 维护者拍板）════════════════════
   等宽数字：同一列里 1 和 8 占同样宽度 → 数字上下对齐、每 18 秒刷新时**不跳字**。
   21st.dev 侦察结论：这是"一行 CSS 换最大可读性收益"的那一项（其余多为动效/氛围件）。
   现状实测：已有 40 处按选择器写死，但 t-live / bb-heat / t5-card / t-src / vizgrid
   这些**数字密集区**漏了 —— 这里统一补齐。
   只影响数字字形宽度，**不改任何数值、不改布局结构、不改颜色**。 */
table, table th, table td,
.num, .bb-heat, .t5-card, .t5-kpi, .fchip, .tcut, .dpr, .pp-kv,
.vizgrid, .kpi, .mini, .dptbl, .dpplan, .pf-kpi, .sheet {
  font-variant-numeric: tabular-nums;
}

/* ══ Q89:START ══ */

/* ══════════════════════════════════════════════════════════════════════════
   Q89 · [队列8②] 环形图 + [队列8③] 分段控件密度切换 + [队列9] 表格增强
   · 只用站点既有主题变量（--acc/--ok/--warn/--bad/--line2/--mut/--card2…），不自创色值。
   · 密度样式一律包在 @media (min-width:761px) 里 —— 手机端保持既有卡片流不变。
   · 不改任何既有选择器的取值，全部是**新增**类名，唯一例外是给表头加排序指示（::after）。
   ══════════════════════════════════════════════════════════════════════════ */

/* ---------- 工具条 ---------- */
.q89-bar{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;
  margin:6px 0 10px;font-size:12px;color:var(--mut);
}
.q89-note{font-size:11.5px;color:var(--mut2);line-height:1.5}

/* ---------- [8③] 分段控件 ---------- */
.q89-seg{
  display:inline-flex;align-items:center;gap:0;
  border:1px solid var(--line2);border-radius:8px;overflow:hidden;background:var(--card2);
}
.q89-seglb{
  padding:4px 8px;font-size:11.5px;color:var(--mut2);
  border-right:1px solid var(--line2);background:rgba(255,255,255,.02);white-space:nowrap;
}
.q89-segb{
  appearance:none;border:0;background:transparent;color:var(--mut);
  padding:4px 11px;font-size:12px;line-height:1.6;cursor:pointer;white-space:nowrap;
  border-right:1px solid var(--line2);transition:background .14s,color .14s;
}
.q89-segb:last-child{border-right:0}
.q89-segb:hover{background:rgba(255,255,255,.05);color:var(--tx)}
.q89-segb.on{background:var(--acc);color:#0a0b0d;font-weight:700}
.q89-segb:focus-visible{outline:2px solid var(--acc2);outline-offset:-2px}

.q89-search input{
  appearance:none;background:var(--card2);border:1px solid var(--line2);border-radius:8px;
  color:var(--tx);padding:4px 9px;font-size:12px;min-width:170px;
}
.q89-search input::placeholder{color:var(--mut2)}
.q89-search input:focus{outline:none;border-color:var(--acc2)}
/* ★ 2026-09-18 WIG-B1：全站原本只有 1 条 :focus-visible（只给 .q89-segb），而 :hover 有 42 条
   ⇒ 键盘用户的可见焦点反馈几乎为零。这里**追加在文件末尾**（同特异度时后者胜）：
     ① 一条全局兜底，覆盖 a/button/select/input/… 全部可聚焦元素；
     ② 下面两处的 `outline:none` 特异度更高（.toolform 是 0,1,1；.q89-search 的 :focus 是 0,2,1），
        全局规则盖不住 ⇒ 显式补回焦点环。
   ⚠ `.search input` 故意**不在此列**：它已有 `border-color + box-shadow 0 0 0 3px` 焦点替代
     （审计已判合规），再叠 outline 会变双环。 */
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.toolform input:focus-visible,.toolform select:focus-visible,
.q89-search input:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.q89-reset{
  appearance:none;background:transparent;border:1px solid var(--line2);border-radius:8px;
  color:var(--mut);padding:4px 10px;font-size:12px;cursor:pointer;
}
.q89-reset:hover{border-color:var(--bad);color:var(--bad)}
.q89-cnt{font-size:11.5px;color:var(--mut2)}

/* ---------- 排序指示（既有排序只写 th.dataset.dir，没有任何可见反馈） ---------- */
table thead th[data-q89dir]::after{
  content:"▲";font-size:9px;margin-left:5px;color:var(--acc);vertical-align:1px;
}
table thead th[data-q89dir="desc"]::after{content:"▼"}
table thead th{cursor:pointer}

/* ---------- 行展开 ---------- */
tr.q89-detail>td{
  background:rgba(200,255,77,.045)!important;
  border-bottom:1px solid var(--line2);
  padding:10px 12px 12px;
}
.q89-dlh{font-size:11.5px;color:var(--mut2);margin-bottom:7px}
.q89-dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:4px 18px}
.q89-dlrow{display:flex;gap:8px;align-items:flex-start;font-size:12px;line-height:1.6;
  padding:3px 0;border-bottom:1px dashed rgba(255,255,255,.05)}
.q89-dlk{flex:0 0 132px;color:var(--mut2);font-size:11.5px}
.q89-dlv{flex:1 1 auto;color:var(--tx);min-width:0;word-break:break-word}
tr[data-flt]{cursor:pointer}

/* ---------- 表内筛选隐藏（!important 压过 applyFilters 写的内联 display） ---------- */
.q89-hide{display:none!important}

/* ---------- [8②] 环形图 ---------- */
.q89-ringbox{
  display:inline-flex;align-items:center;gap:9px;vertical-align:middle;
  padding:4px 12px 4px 6px;margin:0 8px 0 0;
  border:1px solid var(--line2);border-radius:10px;background:var(--card2);
}
.q89-ring{display:block;flex:0 0 auto}
.q89-ring circle{opacity:.85}
.q89-ringtxt{display:flex;flex-direction:column;line-height:1.35}
.q89-ringtxt b{font-size:15px;color:var(--tx);font-variant-numeric:tabular-nums}
.q89-ringtxt em{font-size:11px;color:var(--mut);font-style:normal;white-space:nowrap}
#fresh-bar .q89-ringbox{margin-bottom:8px}
#off-note .q89-ringbox,#s-official .q89-ringbox{float:right;margin:0 0 8px 12px}

/* ---------- [队列8③] 密度：紧凑 / 舒适（**仅桌面**，手机端卡片流不动） ---------- */
@media (min-width:761px){
  table.q89-compact tbody td{padding:2px 8px;font-size:12px;line-height:1.35}
  table.q89-compact thead th{padding:4px 8px;font-size:10.5px}
  table.q89-compact tbody td .muted,
  table.q89-compact tbody td [style*="font-size:11px"]{font-size:10px!important}
  table.q89-compact td>.pill,table.q89-compact td>.chip{padding:0 5px;font-size:10.5px}
  table.q89-compact{margin-top:2px}

  /* 全景矩阵（热力图）密度：只压缩单元格内边距，不动行列语义 */
  .q89-compact .hh-cell,.q89-compact .bh-cell,.q89-compact .mx-cell{padding:2px 4px!important}
  #bb-heat.q89-compact td,#bb-heat.q89-compact th,
  #dp-matrix.q89-compact td,#dp-matrix.q89-compact th{padding:2px 5px;font-size:11.5px}
  #bb-heat.q89-compact .bb-heatwrap,#dp-matrix.q89-compact{padding-top:2px}
}

/* ══ Q89:END ══ */

/* ══ HF_GRIDBASE:BEGIN 列基线统一（2026-09-16 事A）═════════════════════════════
   实测问题（1600px，改前）：
     ① 表格数字列被 width:100% + auto 布局拉到 230–333px，而列头 th 是 left、数字 td.num 是 right
        ⇒ 同一列里「表头文字」与「数字文字」相距 281–333px，读起来像没对齐
        （元素右边界差 0px 是对的 —— 差的是**文字**位置）。
     ② #kpis「今日/明日」把整句（共 17 场 · 在售 17 · 已停售 0）塞进 .v，用 28px 渲染 ⇒ 折 4 行，
        那一排高 285px，而第 2 排只有 112px ⇒ 两排高低差 2.5 倍。
     ③ #kpis「总记录数」的 1,334,900 在 28px 下 scrollWidth 147 > clientWidth 120，
        被 .kpi{overflow:hidden} **裁掉最后一位**（线上实测显示成 1,334,90）。
   改法（只改 CSS；不动 DOM、不动任何数字/口径/推荐）：
     a. 数字列收窄到内容宽度，余量让给文本列 ⇒ 表头与数字贴身；
     b. KPI 片子项 min-width:0（格内换行，内容不再参与决定列宽）；手机档降为 2 列；
     c. 两处长内容格按**固定格子序**定向降一档字号。

   ⚠ 为什么**没有**把桌面改成硬 repeat(9,…)：实测 auto-fit + minmax(152px,1fr) 恰恰保证格子 ≥152px
     （.v ≥118px），刚好放下 395,916 这类 7 位数字；在 1400–1599 硬塞 9 列会把格子压到 ~131px，
     **反而把数字重新裁掉**。所以列数保留 auto-fit（它已共用同一套轨道：1280/1366/1440/1600/1750/1920
     六档实测「左边界去重数 == 列数、所有格子等宽」）。
   ══════════════════════════════════════════════════════════════════════════ */

/* a. 表格：数字列收窄到内容宽度 —— 表头与数字从此共享同一条基线 */
@media (min-width:761px){
  table th.num, table td.num{width:1%}
}

/* b. KPI 片：子项允许收缩换行（内容不再撑宽轨道） */
.kpis > .kpi, #perf-kpis > .kpi{min-width:0}
.kpis > .kpi > .v, #perf-kpis > .kpi > .v{overflow-wrap:anywhere}
/* 手机档：KPI 由 1 列降为 2 列（同一片内共用一套两列基线，也更短） */
@media (max-width:760px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  #perf-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .kpis > .kpi > .v, #perf-kpis > .kpi > .v{font-size:var(--fs2)}
}

/* c. 长内容格定向降字号（只这两处；其它 KPI 数字保持 28px 原样）
      ⚠ 定位依据 = page.js renderKPI() 里 KPI 数组的固定顺序：
         [1]今日 [2]明日 [3]正EV [4]官方赔率 [5]总记录数 …
         数组顺序若变动，这三条要同步改（交付报告里已记）。 */
#kpis > .kpi:nth-child(1) > .v,
#kpis > .kpi:nth-child(2) > .v{font-size:var(--fs3);line-height:1.35;letter-spacing:0}
#kpis > .kpi:nth-child(5) > .v{font-size:var(--fs2);letter-spacing:0}
/* ══ HF_GRIDBASE:END ══ */

/* ══ HF_LOGO2:BEGIN 页头标记「轨道星 v2」动效层（方向 01）═══════════════════════
   资产与参数来源（**一律照抄，不自创**）：
     · 图形 = design/logo2/svg/orbit-dark.svg（32u 画布 · 环轨 3.2u 实线 · 深底版配色）
     · 参数 = design/logo2/index.html 01 卡「⑦ 动效演示 · 一行参数」＋ README §5：
         环轨（弧 + 卫星点）**360° / 16s · linear · 无限**（整组一起转，两者必须同相位）
         环心星呼吸         **scale 1→1.025 · 4.5s · ease-in-out · alternate**
         刷新脉冲           **0.6s · cubic-bezier(.2,.7,.25,1) · scale 1→1.055 + 6px 同色光晕**
         首屏入场           环 = 描边生长 .58s cubic-bezier(.3,.9,.3,1)；星 = pop .42s，只跑一次
         hover / focus      只提亮 + 提速：自转提到 **3.5s** + brightness(1.12)（不放大、不位移）
   三条硬规矩：
     ① 只动 transform / opacity（外加脉冲那一次性的 filter 光晕），**不动 layout**；
     ② **16px 恒静止** —— favicon 是另一份 data:image/svg+xml，不带这些类名，天然静止；
        尺寸闸门 = 只有渲染尺寸 ≥28px 的实例才挂 .anim（页头桌面 28px / 手机 28px，均达标）；
     ③ `prefers-reduced-motion: reduce` → **全部 animation:none**，回到静止构图
        （入场动画一并取消，弧不再有 dasharray/dashoffset，构图与静止 SVG 逐属性一致）。
   ⚠ 本文件会被 `--sync-inline-assets` 整段写进生成器的内联回落快照（放在 raw 字符串里，
     夹在 style 开闭标记之间）——所以这里**不能**出现 style 结束标记的字面量（会提前闭合）。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── 变换原点：整组绕环心 (16,16) 转；星绕自己的中心呼吸 ───────────────────── */
.logo2 svg .mk-spin,.logo2 svg .mk-breathe{transform-box:view-box}
.logo2 svg .mk-spin{transform-origin:16px 16px}
.logo2 svg .mk-breathe{transform-origin:16px 16px}

/* ── ① 常驻动效（只在 .anim 实例上；≤24px 的实例一律不挂 .anim）────────────── */
/* 弧：先描边生长 .58s，生长结束的同一时刻开始自转（环与卫星点同起点 → 永远同相位） */
.logo2.anim svg .mk-arc{
  animation:mk-arc-in .58s cubic-bezier(.3,.9,.3,1) 1 both,
            mk-spin 16s linear .58s infinite;
  will-change:transform}
.logo2.anim svg .mk-spin:not(.mk-arc){
  animation:mk-spin 16s linear .58s infinite;will-change:transform}
/* 星：先 pop 入场（.12s→.54s），再开始独立呼吸 —— 两者不同频才不呆 */
.logo2.anim svg .mk-breathe{
  animation:mk-pop .42s cubic-bezier(.16,.84,.24,1) .12s 1 both,
            mk-breathe 4.5s ease-in-out .54s infinite alternate;
  will-change:transform}

@keyframes mk-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes mk-breathe{from{transform:scale(1)}to{transform:scale(1.025)}}
@keyframes mk-arc-in{
  from{stroke-dasharray:60;stroke-dashoffset:60}
  to{stroke-dasharray:60;stroke-dashoffset:0}}
@keyframes mk-pop{from{transform:scale(.55);opacity:0}to{transform:scale(1);opacity:1}}

/* ── ② 每轮数据刷新的脉冲（0.6s 一次性）─────────────────────────────────────
   触发端在 page.js 的 applySnapshot()：**只有 tick 说「轮次真的变了」才挂 .refreshing**，
   所以它不是每 18 秒闪一次，而是每轮数据更新闪一次（这正是设计里「刚刷新过」的唯一信号）。 */
.logo2.refreshing{animation:mk-refresh .6s cubic-bezier(.2,.7,.25,1) 1}
@keyframes mk-refresh{
  0%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(200,255,77,0))}
  14%{transform:scale(1.055);filter:drop-shadow(0 0 6px rgba(200,255,77,.7))}
  100%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(200,255,77,0))}}

/* ── ③ hover / focus：只提亮 + 提速 ──────────────────────────────────────── */
.topbar .logo2:hover svg .mk-arc{animation-duration:.58s,3.5s}
.topbar .logo2:hover svg .mk-spin:not(.mk-arc){animation-duration:3.5s}
.topbar .logo2:hover{filter:brightness(1.12)}
.topbar .logo2:focus-within{filter:brightness(1.12)}

/* ── ④ 关闭条件（硬性）：reduced-motion 全关，回到静止构图 ────────────────── */
@media (prefers-reduced-motion: reduce){
  .logo2,.logo2 *{animation:none!important;transition:none!important}
}
/* ══ HF_LOGO2:END ══ */

/* ══ HF_SIMPLE18 —— 全站降噪（2026-09-18 维护者令：「太复杂了，也太繁杂了，整个网站太重了」）══
   实测（港机真浏览器，1600 视口）：页头 **477 px** 全被一层层横条吃掉 ——
     品牌栏 118 · 在售条 37 · 跑马灯 33 · 标签栏 62 · 滑动提示 22 · 区块导航条 83
     · 滑动提示 22 · 工具栏 91。
   其中两处是**重复**的：① #nav 区块导航条与「标签栏 + 各分区标题」导航同一批东西；
   ② #tabs / #nav 下方的「← 左右滑动查看更多 →」本该只在手机端出现，桌面端也渲染了。
   处置：压平页头 + 去装饰动效 + 卡片头降噪。**不动任何数据、口径、推荐。** */

/* ① 品牌栏压成一行（原来 118px 是在 1600 视口下换行了） */
.topbar{flex-wrap:nowrap;align-items:center;gap:14px;padding-top:8px;padding-bottom:8px}
.topbar h1,.topbar .nm{font-size:19px !important;line-height:1.25 !important;margin:0 !important;white-space:nowrap}
.topbar .logo2{flex:0 0 auto}
.topbar .topright{margin-left:auto;display:flex;align-items:center;gap:8px;flex:0 0 auto}

/* ② 跑马灯：装饰性动效，看板本就不该有（dashboard-ui 口径「零装饰性动效」）*/
.hf-mq{display:none !important}

/* ③ 区块导航条 #nav：与标签栏 + 分区标题重复；压成一行并随页吸顶即可 */
#nav{max-height:none;height:auto;padding:6px 0;display:flex;gap:6px;overflow-x:auto;flex-wrap:nowrap}
#nav a{padding:4px 9px;font-size:11.5px;white-space:nowrap;flex:0 0 auto}

/* ④ 「左右滑动」提示只在手机端出现（桌面端是误渲染）*/
@media (min-width:761px){ .hf-scrollhint{display:none !important} }

/* ⑤ 工具栏压成一行 */
#toolbar{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;overflow-x:auto;padding:7px 0}
#toolbar select,#toolbar button,#toolbar .search{flex:0 0 auto}
#toolbar label{flex:0 0 auto;white-space:nowrap}

/* ⑥ 卡片头降噪：长状态胶囊一行截断、时间戳压小、锚点弱化（40 个分区各一次，累积噪音最大）*/
.card>h2{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0}
.card>h2 .tag{font-size:11px;padding:1px 7px;max-width:34ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto}
.card>h2 .upd{font-size:10.5px;color:var(--mut2);opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:30ch;flex:0 1 auto}
.card>h2 .anchor{opacity:.28;font-size:11px;text-decoration:none;flex:0 0 auto}
.card>h2 .sec-tgl{flex:0 0 auto;margin-left:auto}
/* ══ HF_SIMPLE18:END ══ */

/* ══ HF_UIDESIGN18 —— 按 dashboard-ui 技能口径做的一轮 UI 设计（2026-09-18）══════════
   技能原文（dashboard-ui，逐条对应）：
     · 「常见错误 ⑤ 装饰性动效 —— ticking counters, self-drawing charts, hover wiggles.
        None help a decision; cut them.」
     · 「Prefer a 1px border at ~8% opacity over a drop shadow — it reads cleaner and ages better
        (Linear/Vercel ship borders, not shadows).」
     · 「Never use colored card backgrounds. Use neutral cards with a colored accent on the metric
        or a status pill.」
     · 「One accent — interactive elements, links, the active item, the hero chart line. That's it.」
     · 「less hero typography, MORE DATA DENSITY, a stricter color system, zero decorative motion.」
   据此执行：① 砍掉 21st.dev 那批装饰件 ② 投影改 1px 描边 ③ 提高数据密度。
   **不动任何数据 / 口径 / 推荐结果。** ══ */

/* ① 装饰动效：一律关掉（元素与文字保留，只去动效与光效）*/
/* ★ COOL18-REVERT（2026-09-19 维护者改口径：「我网站要的是好看，动效拉满，内容炫酷，
   ui 炫酷，整体炫酷」）—— 上一轮按 dashboard-ui 口径关掉的装饰动效**全部恢复**：
   Card Spotlight 光斑 / Shimmer 流光 / Marquee 跑马灯 / Word Rotate / Text Flip / Number Ticker。
   装饰件本体一行未删，这里只是把当时加的那些 display:none 与 animation:none 撤掉。 */
/* ② 投影 → 1px 描边（技能原话：用描边，不用投影）*/
/* COOL18-REVERT：投影改描边那条也撤销 —— 炫酷版要发光/层次，不是扁平。 */

/* ③ 密度：行更紧、字更小 —— 同屏多放数据（技能原话 more data density）*/
main table th{padding:2px 8px 6px !important;font-size:11px !important}
main table td{padding:5px 8px !important;font-size:12.5px !important;line-height:1.45 !important}
main .card>h2{font-size:13.5px !important;min-height:36px !important;margin-bottom:6px !important}
main .card>h2 .tag{height:auto !important}
main h3{font-size:12.5px !important;margin:10px 0 6px !important}

/* ④ 一个强调色：状态色只留给状态，别当装饰用 */
.tag{background:var(--card2) !important;border:1px solid var(--line2) !important;color:var(--mut) !important}
.anchor{color:var(--mut2) !important;background:none !important;border:0 !important}
/* ══ HF_UIDESIGN18:END ══ */

/* ── HF_UIDESIGN18 修补（2026-09-19 00:1x）：四视口验收抓到手机端横向溢出 44px ──
   回归原因：HF_SIMPLE18 里给 .topbar 加了 flex-wrap:nowrap（为了压成一行），
   桌面端没问题，但手机端右上角状态簇（.topright，含 #topcut 的文字轮播）被顶出视口。
   实测 offender：DIV.topright / SPAN#topcut.tcut / SPAN.hf-rot / B#topcut-v.hf-rot__w
   ⇒ 只在 ≥761px 压成一行；手机端恢复换行，并给轮播加宽度钳制。 */
@media (min-width:761px){
  .topbar{flex-wrap:nowrap !important}
}
@media (max-width:760px){
  .topbar{flex-wrap:wrap !important;gap:8px !important}
  .topbar h1,.topbar .nm{white-space:normal !important;font-size:17px !important}
  .topbar .topright{margin-left:0 !important;width:100% !important;justify-content:flex-start !important;flex-wrap:wrap !important}
  .topright>*{flex:0 1 auto;min-width:0}
  .hf-rot,.hf-rot__w,#topcut{max-width:100% !important;overflow:hidden !important;text-overflow:ellipsis}
  #nav,#tabs,#toolbar{max-width:100%}
}
/* ══ HF_UIDESIGN18B:END ══ */

/* ── HF_SIMPLE18B：区块导航条 #nav 整条去掉 ──────────────────────────────
   dashboard-ui：「Keep the primary view to 7–8 elements max」。
   实测 #nav 与它正下方的各分区标题是**同一批导航项**（同样 8 个 href="#s-…"），
   属纯重复；分区标题本身就在下面一屏内，且都可点击展开。
   保留 DOM（脚本仍可引用），只不显示。 */
#nav{display:none !important}

/* 卡片头状态胶囊：再收紧一档，一行截断 */
.card>h2 .tag{max-width:30ch !important}
.card>h2 .upd{max-width:24ch !important}
/* ══ HF_SIMPLE18C:END ══ */

/* ══ HF_COOL18 —— 炫酷层（2026-09-19 维护者令：「好看，动效拉满，内容炫酷，ui 炫酷，整体炫酷」）══
   按 `top-design`（Awwwards 级）技能口径：
     · 「Custom easing is mandatory —— ease / ease-in / ease-out / linear are BANNED;
        use cubic-bezier(0.16,1,0.3,1) (expo out) / (0.25,1,0.5,1) (quart out) / (0.87,0,0.13,1) (expo in-out)」
     · 「Page load choreography follows a strict timeline —— structure 0-200ms,
        hero staggered 200-600ms (80ms stagger), nav cascade 600-900ms, supporting 800-1200ms」
     · 「Scroll-triggered sequences reveal elements as they enter viewport —— not all at once」
     · 「Only animate transform and opacity（GPU）」「60fps is non-negotiable」
     · 「Never use pure black」→ 本站原生 #0a0b0d 已合规
   主题落点：站名「星阵」= 星空阵列 → 星野 + 极光 + 掠过的星轨。 ══ */
:root{
  --e-out:cubic-bezier(.16,1,.3,1);
  --e-quart:cubic-bezier(.25,1,.5,1);
  --e-inout:cubic-bezier(.87,0,.13,1);
  --glow:rgba(200,255,77,.30);
  --glow2:rgba(120,90,255,.26);
}

/* ① 背景层：极光 + 星野（纯装饰，JS 注入，pointer-events:none）*/
.cool-aurora{position:fixed;inset:-25vmax;z-index:0;pointer-events:none;
  background:
    radial-gradient(38vmax 38vmax at 16% 10%, rgba(200,255,77,.13), transparent 62%),
    radial-gradient(34vmax 34vmax at 84% 20%, rgba(122,92,255,.16), transparent 64%),
    radial-gradient(46vmax 46vmax at 52% 98%, rgba(0,196,255,.10), transparent 66%);
  filter:blur(30px);opacity:.9;
  animation:cool-drift 44s var(--e-inout) infinite alternate}
@keyframes cool-drift{
  0%{transform:translate3d(-2%,-1%,0) scale(1)}
  100%{transform:translate3d(2%,2%,0) scale(1.09)}}
#cool-stars{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.85}
main,header{position:relative;z-index:1}

/* ② 滚动进度条（顶沿一条流光，签名细节之一）*/
#cool-prog{position:fixed;top:0;left:0;height:2px;width:0;z-index:99;pointer-events:none;
  background:linear-gradient(90deg,rgba(200,255,77,0),#c8ff4d 45%,#7ef9d0 100%);
  box-shadow:0 0 14px var(--glow);
  transition:width .18s var(--e-out)}

/* ③ 页头：玻璃 + 品牌渐变字 + 掠过星轨 */
.topbar{backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);
  background:linear-gradient(180deg,rgba(10,11,13,.86),rgba(10,11,13,.55));
  border-bottom:1px solid rgba(200,255,77,.14)}
.topbar h1,.topbar .nm{background:linear-gradient(96deg,#eef1f6 0%,#c8ff4d 46%,#7ef9d0 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent !important;
  letter-spacing:-.02em}
header{overflow:hidden}
header::after{content:"";position:absolute;left:-40%;top:0;height:100%;width:38%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(200,255,77,.10) 45%,rgba(126,249,208,.16) 55%,transparent);
  animation:cool-sweep 9s var(--e-inout) infinite}
@keyframes cool-sweep{0%{transform:translateX(0)}55%{transform:translateX(360%)}100%{transform:translateX(360%)}}

/* ④ 卡片：进入视野上浮 + 悬停发光抬升（只动 transform/opacity，60fps）*/
.card{border-color:var(--line);
  transition:transform .55s var(--e-out),border-color .55s var(--e-out),box-shadow .55s var(--e-out)}
.card:hover{transform:translate3d(0,-3px,0);border-color:rgba(200,255,77,.30);
  box-shadow:0 18px 50px -22px var(--glow),0 0 0 1px rgba(200,255,77,.10)}

/* ⑤ 编排式入场 + 滚动揭示（★ 只有 JS 挂上 .cool-js 才隐藏，JS 挂了也不会白屏）*/
html.cool-js main>section:not(.cool-in){opacity:0;transform:translate3d(0,22px,0)}
main>section{transition:opacity .8s var(--e-out),transform .8s var(--e-out);
  transition-delay:calc(var(--i,0) * 70ms)}
html.cool-js header .cool-stagger:not(.cool-in){opacity:0;transform:translate3d(0,-12px,0)}
header .cool-stagger{transition:opacity .7s var(--e-out),transform .7s var(--e-out);
  transition-delay:calc(var(--i,0) * 80ms)}

/* ⑥ 强调色时刻：主数字用渐变，活动标签带流光 */
.kpi b,.kpi .num,.t5k b{background:linear-gradient(180deg,#ffffff,#c8ff4d);
  -webkit-background-clip:text;background-clip:text;color:transparent}
#tabs a.on{box-shadow:0 6px 26px -8px var(--glow),inset 0 0 0 1px rgba(255,255,255,.22)}
#tabs a{transition:color .35s var(--e-out),background .35s var(--e-out),box-shadow .5s var(--e-out)}

/* ⑦ 细节：品牌化选区 + 可见焦点环 + 细滚动条 */
::selection{background:rgba(200,255,77,.30);color:#f4ffe0}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:6px}
.scroll::-webkit-scrollbar,.dptbl-wrap::-webkit-scrollbar,.mg-tblwrap::-webkit-scrollbar{width:9px;height:9px}
.scroll::-webkit-scrollbar-thumb,.dptbl-wrap::-webkit-scrollbar-thumb,.mg-tblwrap::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,rgba(200,255,77,.45),rgba(126,249,208,.30));border-radius:9px}
.scroll::-webkit-scrollbar-track,.dptbl-wrap::-webkit-scrollbar-track,.mg-tblwrap::-webkit-scrollbar-track{background:rgba(255,255,255,.03)}

/* ⑧ 无障碍硬底线（技能同款要求）：系统开了「减少动态效果」就全部静态 */
@media (prefers-reduced-motion: reduce){
  .cool-aurora,header::after{animation:none !important}
  #cool-prog{transition:none !important}
  html.cool-js main>section:not(.cool-in),html.cool-js header .cool-stagger:not(.cool-in){opacity:1 !important;transform:none !important}
  main>section,header .cool-stagger,.card{transition:none !important}
}
/* ══ HF_COOL18:END ══ */

/* ══ HF_COOL18B —— 炫酷强化（2026-09-19 维护者：「大型动效大型素材，往里该弄的都弄上」）══
   按 `top-design` 口径继续推：
     · 「Massive scale contrast is non-negotiable —— display 与 body 至少 10:1」
     · 「Negative tracking on large type (-0.02em ~ -0.05em)」
     · 「Colors feel invented for THIS project」→ 站名「星阵」= 星野/轨道/数据流
     · 「Only animate transform / opacity」→ 全部走 GPU 合成
   ══ */

/* ① 氛围加浓：极光更大更亮 + 第二层缓慢反向漂移（视差感）*/
.cool-aurora{opacity:1 !important;
  background:
    radial-gradient(44vmax 44vmax at 14% 8%, rgba(200,255,77,.20), transparent 60%),
    radial-gradient(40vmax 40vmax at 86% 18%, rgba(122,92,255,.26), transparent 62%),
    radial-gradient(52vmax 52vmax at 50% 100%, rgba(0,196,255,.16), transparent 64%) !important;
  filter:blur(34px)}
.cool-nebula{position:fixed;inset:-30vmax;z-index:0;pointer-events:none;opacity:.55;
  background:conic-gradient(from 0deg at 50% 50%,
    rgba(200,255,77,.10), rgba(122,92,255,.14), rgba(0,196,255,.10),
    rgba(126,249,208,.12), rgba(200,255,77,.10));
  filter:blur(70px);
  animation:cool-spin 120s linear infinite}
@keyframes cool-spin{to{transform:rotate(360deg)}}
/* 底部一条地平辉光，给页面一个"落点" */
body::after{content:"";position:fixed;left:0;right:0;bottom:0;height:34vh;z-index:0;pointer-events:none;
  background:linear-gradient(0deg,rgba(200,255,77,.075),rgba(126,249,208,.03) 42%,transparent);
  -webkit-mask-image:linear-gradient(0deg,#000,transparent);mask-image:linear-gradient(0deg,#000,transparent)}

/* ② 排版做强：品牌字更大更紧、数据数字更大更亮 */
.topbar h1,.topbar .nm{font-size:24px !important;font-weight:800 !important;letter-spacing:-.045em !important}
.topbar .logo2{transform:scale(1.12)}
#tabs a{letter-spacing:-.01em}
#tabs a.on{font-weight:800;letter-spacing:-.02em}
.card>h2{font-weight:700;letter-spacing:-.02em}
main table td.num,main table td .num{letter-spacing:-.01em}

/* ③ 卡片：极细顶部高光 + 悬停光带扫过（GPU）*/
.card{position:relative;overflow:hidden}
.card::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(200,255,77,.55),rgba(126,249,208,.35),transparent);
  opacity:.55;transition:opacity .5s var(--e-out)}
.card:hover::before{opacity:1}
.card::after{content:"";position:absolute;top:0;bottom:0;left:-30%;width:26%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.055),transparent);
  transform:translate3d(0,0,0);opacity:0;transition:opacity .3s var(--e-out)}
.card:hover::after{opacity:1;animation:cool-card-sweep 1.15s var(--e-out) 1}
@keyframes cool-card-sweep{from{transform:translate3d(0,0,0)}to{transform:translate3d(560%,0,0)}}

/* ④ 分区标题：一条发光强调条 */
.card>h2{padding-left:12px}
.card>h2::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:3px;
  background:linear-gradient(180deg,var(--acc),#7ef9d0);
  box-shadow:0 0 12px rgba(200,255,77,.55)}
.card>h2{position:relative}

/* ⑤ 表格：行悬停有一条扫过的高亮，数字列更醒目 */
main table tbody tr{transition:background .28s var(--e-out),box-shadow .28s var(--e-out)}
main table tbody tr:hover{background:linear-gradient(90deg,rgba(200,255,77,.075),rgba(200,255,77,.015));
  box-shadow:inset 3px 0 0 var(--acc)}
main table thead th{background:linear-gradient(180deg,rgba(255,255,255,.045),transparent)}

/* ⑥ 按钮/标签：悬浮发光 */
button,.tbtn,.hf-sh,#f-reset{transition:transform .35s var(--e-out),box-shadow .35s var(--e-out),color .3s var(--e-out)}
button:hover,.tbtn:hover,#f-reset:hover{transform:translate3d(0,-1.5px,0);
  box-shadow:0 8px 24px -10px var(--glow),0 0 0 1px rgba(200,255,77,.22)}

/* ⑦ 无障碍底线：系统开了减动效就停 */
@media (prefers-reduced-motion: reduce){
  .cool-nebula,header::after,.card:hover::after{animation:none !important}
  body::after{opacity:.5}
}
/* ══ HF_COOL18B:END ══ */

/* ══ HF_COOL18C —— 让背景动效"看得见"（2026-09-19 维护者：大型动效、全站炫酷）══
   诊断（真浏览器实测）：① 卡片是不透明的 --card:#101215，极光/星云全被挡在内容后面，
   只在缝隙里露一点点 ⇒ 背景再炫也看不见；② 星野 canvas 与极光同 z-index，
   而 DOM 顺序是 canvas 在最前 ⇒ **星星被画在极光下面糊掉了**。
   处置：星星提到动画层之上；卡片改半透明玻璃（背景能透上来）。 ══ */

/* ① 星星画在极光/星云之上（否则被 blur 糊掉）*/
#cool-stars{z-index:1 !important}

/* ② 卡片玻璃化：让极光、星云、星野从内容底下透出来（这是"炫酷"的关键一步）*/
.card{background:linear-gradient(180deg,rgba(16,18,21,.74),rgba(13,15,18,.82)) !important;
  backdrop-filter:blur(10px) saturate(125%);
  -webkit-backdrop-filter:blur(10px) saturate(125%);
  border-color:rgba(255,255,255,.075) !important;
  box-shadow:0 1px 0 0 rgba(255,255,255,.05) inset,0 18px 50px -34px rgba(0,0,0,.9)}
.card:hover{background:linear-gradient(180deg,rgba(20,23,27,.78),rgba(15,17,21,.86)) !important;
  border-color:rgba(200,255,77,.34) !important}

/* ③ 次级容器也玻璃化，保持层次一致 */
.mini,.vizgrid,.mg-wrap,.dptbl,.dpplan,.sheet,.q89-bar,.mini2{background:rgba(255,255,255,.028) !important}
.kpi,.mini{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}

/* ④ 极光再亮一档（透过玻璃才看得见）*/
.cool-aurora{opacity:1 !important;
  background:
    radial-gradient(46vmax 46vmax at 12% 6%, rgba(200,255,77,.30), transparent 58%),
    radial-gradient(42vmax 42vmax at 88% 16%, rgba(122,92,255,.36), transparent 60%),
    radial-gradient(54vmax 54vmax at 50% 102%, rgba(0,196,255,.24), transparent 62%) !important}
.cool-nebula{opacity:.75 !important}

/* ⑤ 页头也玻璃化（吸顶时内容从底下透过去）*/
.onsalebar,#toolbar,#tabs{backdrop-filter:blur(12px) saturate(140%);
  -webkit-backdrop-filter:blur(12px) saturate(140%)}

/* ⑥ 无障碍：系统开了减动效，玻璃保留、动画停 */
@media (prefers-reduced-motion: reduce){
  .cool-aurora,.cool-nebula{animation:none !important}
}
/* ══ HF_COOL18C:END ══ */

/* ══ HF_COOL18D —— 修正极光的"几何 bug"并把亮度拉满（2026-09-19）══
   像素级 A/B 实测（港机无头 Chromium，同页开/关极光各截一张，本机 Pillow 比像素）：
     有可见差异的像素 39.7%、最大通道差 195，但**平均通道差只有 3.22/255**
     —— 也就是说极光确实在渲染，只是淡到肉眼看不见。
   根因：`.cool-aurora` 用 `inset:-25vmax` 把层撑到 2178×1574（原点 -393,-375），
   而 `radial-gradient(… at 12% 6%, …)` 的**百分比是相对这个被撑大的盒子**算的 ⇒
   最亮的中心落到了**视口之外**，可见区只剩渐变的衰减尾巴。
   处置：层改回视口大小 `inset:0`（百分比即视口坐标），中心落在视口内；同时提高不透明度。 ══ */
.cool-aurora{inset:0 !important;
  background:
    radial-gradient(60vmax 60vmax at 18% 12%, rgba(200,255,77,.52), transparent 62%),
    radial-gradient(56vmax 56vmax at 84% 22%, rgba(122,92,255,.58), transparent 64%),
    radial-gradient(72vmax 72vmax at 50% 104%, rgba(0,196,255,.40), transparent 66%) !important;
  filter:blur(22px) !important;opacity:1 !important;
  animation:cool-drift2 26s var(--e-inout) infinite alternate !important}
@keyframes cool-drift2{
  from{transform:scale(1) translate3d(0,0,0)}
  to{transform:scale(1.16) translate3d(-1.5%,-1.5%,0)}}
.cool-nebula{inset:-10vmax !important;opacity:.85 !important;filter:blur(60px) !important;
  background:conic-gradient(from 0deg at 50% 50%,
    rgba(200,255,77,.22), rgba(122,92,255,.30), rgba(0,196,255,.22),
    rgba(126,249,208,.26), rgba(200,255,77,.22)) !important;
  animation:cool-spin 90s linear infinite !important}
/* 卡片再透一点，背景透得上来（但保证正文对比度：文字层不受影响）*/
.card{background:linear-gradient(180deg,rgba(16,18,21,.62),rgba(12,14,17,.72)) !important}
.card:hover{background:linear-gradient(180deg,rgba(20,23,27,.68),rgba(14,16,20,.78)) !important}
@media (prefers-reduced-motion: reduce){ .cool-aurora,.cool-nebula{animation:none !important} }
/* ══ HF_COOL18D:END ══ */

/* ══ HF_TWOTABS18 —— 两大重点板块的专属设计（2026-09-19 维护者令：「重点两大板块：今日总览、数据资产与来源」）══
   按 `top-design`：㈠「Contextual color shifts between sections signal content changes and create
   visual chapters」→ 两个板块各给一个自己的强调色；㈡「Elements that breathe」→ 分区标题加强、
   关键数字上发光；㈢ 只在 transform/opacity 上做动效。 ══ */

/* ① 板块色：今日总览=青柠（决策）、数据资产与来源=紫（数据/资产）*/
main>section[data-view="best"]>.card>h2::before{
  background:linear-gradient(180deg,#c8ff4d,#7ef9d0);box-shadow:0 0 14px rgba(200,255,77,.65)}
main>section[data-view="asset"]>.card>h2::before{
  background:linear-gradient(180deg,#a78bfa,#7ef9d0);box-shadow:0 0 14px rgba(167,139,250,.65)}

/* ② 两大板块的卡片：进入时更有存在感（更深的玻璃 + 更强的顶部高光）*/
main>section[data-view="best"]>.card,
main>section[data-view="asset"]>.card{
  backdrop-filter:blur(14px) saturate(135%);
  -webkit-backdrop-filter:blur(14px) saturate(135%);
  background:linear-gradient(180deg,rgba(17,20,24,.66),rgba(12,14,18,.78)) !important}
main>section[data-view="best"]>.card::before{
  background:linear-gradient(90deg,transparent,rgba(200,255,77,.75),rgba(126,249,208,.5),transparent);
  opacity:.75}
main>section[data-view="asset"]>.card::before{
  background:linear-gradient(90deg,transparent,rgba(167,139,250,.75),rgba(126,249,208,.5),transparent);
  opacity:.75}

/* ③ 板块标题更大更亮（这两块是主角）*/
main>section[data-view="best"]>.card>h2,
main>section[data-view="asset"]>.card>h2{font-size:15px !important;font-weight:800 !important;letter-spacing:-.025em}

/* ④ 关键数字：更大的尺度对比（top-design 的 10:1 尺度原则，只在 KPI 上做）*/
main>section[data-view="best"] .kpi b,main>section[data-view="asset"] .kpi b,
main>section[data-view="best"] .t5k b,main>section[data-view="asset"] .t5k b{
  font-size:30px !important;line-height:1.05;letter-spacing:-.035em;
  filter:drop-shadow(0 0 14px rgba(200,255,77,.28))}
main>section[data-view="asset"] .kpi b,main>section[data-view="asset"] .t5k b{
  filter:drop-shadow(0 0 14px rgba(167,139,250,.30))}

/* ⑤ 两大板块里每条子块之间的呼吸感（top-design：密度与留白交替）*/
main>section[data-view="best"] h3,main>section[data-view="asset"] h3{
  padding-left:10px;border-left:2px solid rgba(200,255,77,.35)}
main>section[data-view="asset"] h3{border-left-color:rgba(167,139,250,.38)}
/* ══ HF_TWOTABS18:END ══ */

/* ══ HF_BOARD18 —— 两大重点板块（今日总览 / 数据资产与来源）抬头 KPI 带 + 资产体检条 ══
   口径（维护者令「重点两大板块：今日总览、数据资产与来源」；技能 dashboard-ui）：
     · 主视图 hero 指标 3~5 个：**值 + 方向 + 趋势**，超出的细节不进抬头；
     · 一个强调色：今日总览=青柠 --acc（决策），数据资产与来源=紫 --pur（资产）；
     · 空/加载/错误态：JS 侧任何字段缺失一律渲染「—」并写明依据，不猜值；
     · top-design：自定义缓动 cubic-bezier(.16,1,.3,1)、编排式入场、只动 transform/opacity。
   装饰层一律 aria-hidden + pointer-events:none，不参与布局、不进读屏。 ══ */

/* ① 抬头带：格子自适应换行（手机端不会横向溢出）*/
/* ★ .b18-stage 是动效宿主唯一的定位祖先 —— 效果只覆盖这条抬头带，不铺满整页 */
.b18-stage{position:relative;isolation:isolate;border-radius:12px;overflow:hidden}
.b18{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;
  margin:12px 0 4px;position:relative;z-index:2}
.b18-cell{position:relative;isolation:isolate;overflow:hidden;
  border:1px solid var(--line);border-radius:12px;padding:11px 13px 10px;
  background:linear-gradient(180deg,rgba(20,24,29,.62),rgba(12,14,18,.74));
  transition:transform .55s cubic-bezier(.16,1,.3,1),border-color .55s cubic-bezier(.16,1,.3,1),
    box-shadow .55s cubic-bezier(.16,1,.3,1)}
.b18-cell::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;opacity:.85;
  background:linear-gradient(90deg,transparent,var(--b18a,#c8ff4d),transparent)}
.b18-cell:hover{transform:translate3d(0,-3px,0);
  border-color:var(--b18ah,rgba(200,255,77,.34));
  box-shadow:0 18px 46px -24px rgba(0,0,0,.9)}
.b18-best{--b18a:#c8ff4d;--b18ah:rgba(200,255,77,.34)}
.b18-asset{--b18a:#a78bfa;--b18ah:rgba(167,139,250,.34)}
.b18-cell .b18-lab,.b18-cell .b18-val,.b18-cell .b18-chip,.b18-cell .b18-track,
.b18-cell .b18-sub{position:relative;z-index:1}
.b18-lab{font-size:11px;letter-spacing:.06em;color:var(--mut);font-weight:700;margin-bottom:3px}
.b18-val{display:flex;align-items:baseline;gap:5px;line-height:1.05;letter-spacing:-.035em}
.b18-val b{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;
  background:linear-gradient(180deg,#ffffff,var(--b18a,#c8ff4d));-webkit-background-clip:text;
  background-clip:text;color:transparent}
.b18-val i{font-style:normal;font-size:12px;color:var(--mut);font-weight:600}
.b18-sub{font-size:11px;color:var(--mut2);margin-top:4px;line-height:1.45;
  overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.b18-chip{display:inline-flex;align-items:center;gap:4px;margin-top:6px;padding:2px 7px;border-radius:999px;
  font-size:11px;font-weight:700;border:1px solid transparent;white-space:nowrap;max-width:100%;
  overflow:hidden;text-overflow:ellipsis}
.b18-up{color:#b8f7d0;background:rgba(142,232,176,.12);border-color:rgba(142,232,176,.34)}
.b18-dn{color:#ffb3c0;background:rgba(255,125,143,.12);border-color:rgba(255,125,143,.34)}
.b18-fl{color:var(--mut);background:rgba(255,255,255,.05);border-color:var(--line2)}
.b18-if{color:#cbc2ff;background:rgba(167,139,250,.12);border-color:rgba(167,139,250,.32)}
.b18-track{height:3px;border-radius:3px;background:rgba(255,255,255,.07);margin-top:8px;overflow:hidden}
.b18-track i{display:block;height:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--b18a,#c8ff4d),rgba(255,255,255,.06))}
.b18-foot{font-size:11px;color:var(--mut2);margin:8px 0 8px;line-height:1.55}
.b18-foot code{color:var(--mut);font-size:11px}

/* ② 入场：只有 JS 挂上 .b18-js 才隐藏 → JS 挂了也不会白屏；只用 opacity/transform */
html.b18-js .b18-cell{opacity:0;transform:translate3d(0,16px,0)}
html.b18-js .b18-cell.b18-in{opacity:1;transform:none;
  transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);
  transition-delay:calc(var(--i,0) * 70ms)}

/* ③ 资产体检条：① 采集健康（每源一根柱）② 场次三态（堆叠段）*/
.b18-strip{margin:12px 0 6px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;
  background:linear-gradient(180deg,rgba(17,20,24,.5),rgba(11,13,16,.62))}
.b18-sh{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:space-between;
  font-size:11px;color:var(--mut);font-weight:700;letter-spacing:.04em;margin-bottom:9px}
.b18-sh em{font-style:normal;color:var(--mut2);font-weight:600;letter-spacing:0}
.b18-bars{display:flex;gap:3px;align-items:flex-end;height:46px;
  overflow-x:auto;overscroll-behavior-x:contain}
.b18-bars i{flex:1 1 0;min-width:7px;max-width:44px;height:var(--h,8%);border-radius:3px 3px 1px 1px;
  background:var(--c,rgba(200,255,77,.5));transform-origin:50% 100%;
  transition:opacity .35s cubic-bezier(.16,1,.3,1)}
html.b18-js .b18-bars i{animation:b18-rise .85s cubic-bezier(.16,1,.3,1) both;
  animation-delay:calc(var(--i,0) * 26ms)}
@keyframes b18-rise{from{transform:scaleY(.05)}to{transform:scaleY(1)}}
.b18-seg{display:flex;height:9px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.06)}
.b18-seg i{display:block;height:100%}
.b18-lg{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--mut);margin-top:8px}
.b18-lg b{color:var(--tx);font-weight:700}
.b18-lg s{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;
  text-decoration:none;vertical-align:middle}

/* ④ 板块强调标签（挂在既有 h2 上，不加结构）*/
.b18-tag{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;
  border:1px solid rgba(200,255,77,.3);color:#dfffb0;background:rgba(200,255,77,.1);
  margin-left:8px;white-space:nowrap}
main>section[data-view="asset"]>.card>h2 .b18-tag{border-color:rgba(167,139,250,.32);
  color:#ded4ff;background:rgba(167,139,250,.12)}

/* ⑤ 动效宿主（装饰层，压不到正文、不进读屏）*/
.b18-fx{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0;opacity:.30;
  border-radius:inherit}

/* ⑥ 无障碍硬底线：系统要求减少动态效果 → JS 侧一个节点都不建，CSS 侧也全静态 */
@media (prefers-reduced-motion: reduce){
  html.b18-js .b18-cell{opacity:1 !important;transform:none !important;transition:none !important}
  html.b18-js .b18-bars i{animation:none !important}
  .b18-cell,.b18-cell:hover{transition:none !important;transform:none !important}
}
/* ══ HF_BOARD18:END ══ */

/* ══ HF_DARKFIX19：深色化收尾 + 工具条标签修复（2026-09-19）════════════════
   背景：HF_BUTTONS（2026-09-15）是**浅色主题**时代的块，写死了 #fff 底 + #0f172a 字。
   后来 COOL18 / HF_UIDESIGN18 把 #tabs / .tbtn / #nav 都改回深色，**唯独漏了 .tcut**。
   实测（港机无头 Chromium，390px）：「数据截止」胶囊仍是纯白 rgb(255,255,255)，
   被 @media 里的 flex:1 1 auto 拉满整行 → **366×108 的白块**，占首屏 1/4；
   全页浅底元素 count = 1，就是它。
   另一处：工具条最左那个裸 <span>筛选</span> 没拿到 nowrap（只有 #toolbar label 有），
   被 flex 压成 width:13px → 两字竖排成 42px 高。
   —— 两处都只改实现、不动信息与结构。 */
.tcut{background:var(--card2);border-color:var(--line2);color:var(--mut);
  box-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 8px 20px -16px rgba(0,0,0,.95)}
.tcut>span:first-child{color:var(--mut2)}
.tcut b{color:var(--tx)}
.tcut::before{background:var(--ok);box-shadow:0 0 0 3px rgba(142,232,176,.16)}
.tcut:hover{border-color:var(--acc)}
.toolbar>span{flex:0 0 auto;white-space:nowrap}
@media (max-width:760px){
  .tcut{padding:6px 10px;gap:6px;line-height:1.3}
  .tcut b{font-size:14px}
  .tcut>span:first-child{font-size:12px}
  .toolbar>span{font-size:12px}
}
/* ══ HF_DARKFIX19:END ══ */

/* ══ HF_READABLE19：可读性收尾（2026-09-19）════════════════════════
   ① 标签栏计数徽章几乎看不见 —— 两处叠加：
      (a) 第 970 行 `#tabs a i{opacity:.42}`（注释写"改轻，别像调试计数器"）；
      (b) 第 1374 行 `color:var(--mut2)`(#5f646d) on `--bg2`(#0e1013) 对比度仅 3.2。
      叠加后有效对比度约 1.4 ⇒ 截图里只剩"幽灵数字"。
      **保留"次要"的设计意图，但不是不可见**：opacity .82 + --mut 文字 + 细描边，
      hover 提到 1.0，选中态维持原样（白 24% + 白字）。
   ② 「分享版」那三个 21st.dev shimmer 按钮（`.tbtn.hf-sh`）仍是**亮色基底**的
      #fff 面 + #0f172a 字，是深色页上唯一一组白按钮；`.hf-sh__back{background:inherit}`
      会跟着按钮一起变暗，无需单独处理。
   ③ --mut2 提亮一档：#5f646d（3.31）→ #767e8a（≈4.5）。影响面 = 脚注 / 口径说明 /
      免责 / 版本行 / 表头小字。浅色主题不动。 */
html:root:not([data-theme="light"]){--mut2:#767e8a}
#tabs a i{opacity:.82;background:rgba(255,255,255,.05);color:var(--mut);
  border:1px solid rgba(255,255,255,.08)}
#tabs a:hover i{opacity:1;color:var(--tx);border-color:rgba(255,255,255,.18)}
#tabs a.on i{opacity:1;background:rgba(255,255,255,.24);color:#fff;border-color:transparent}
.tbtn.hf-sh,.hf-sh{background:var(--card2);color:var(--tx);border-color:var(--line2)}
.tbtn.hf-sh:hover,.hf-sh:hover{background:var(--card);color:var(--acc);border-color:var(--acc)}
/* ══ HF_READABLE19:END ══ */

/* ══ HF_SHARE19：分享版舞台收干净 + 手机端页头压缩（2026-09-19）════════════
   ① 分享版是**纸张式文档**（`.sheet` / `.note2` 都是浅色，为打印/PDF 而设），
      纸张只有 850px 宽，而极光/星云是全屏固定层 ⇒ 两侧露出高饱和绿/紫大色块，
      把文档淹了（1600 视口截图肉眼可见）。**只在 view-share 下调暗装饰层**，
      不动其它标签、不动纸张本身、不动动效的实现。
   ② 手机端页头那颗「数据截止」胶囊：内容 3 行、实占 105px（≈首屏 1/8）。
      ⚠ 它里面的 `<b>` 带 id `#topcut-v`，ID 选择器特异性压过 `.tcut b`
      —— 想改字号必须点名 `#topcut-v`（HF_DARKFIX19 那次用 `.tcut b` 改不动，实测踩过）。 */
body.view-share .cool-aurora{opacity:.28 !important}
body.view-share .cool-nebula{opacity:.26 !important}
body.view-share #cool-stars{opacity:.32 !important}
body.view-share #fx-meteors,body.view-share #fx-beams{opacity:.30 !important}
body.view-share #fx-flicker18{opacity:.25 !important}
@media (max-width:760px){
  .tcut{padding:5px 9px;gap:5px}
  #topcut-v{font-size:13.5px;line-height:1.25}
  #topcut-a{font-size:12px}
}
/* ══ HF_SHARE19:END ══ */

/* ══ HF_SECCONTENT19：板块抬头要点带的样式（2026-09-19）════════════════
   复用 B18 的 .b18-cell 视觉（同一套 token，符合"设计系统单一真源"），
   只补容器栅格：桌面自适应多列、手机两列。 */
.sec-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:9px;margin:12px 0 2px;max-width:1560px}
.sec-kpi .b18-cell{padding:11px 13px 10px;min-height:0}
.sec-kpi .b18-lab{font-size:11.5px;letter-spacing:.02em}
.sec-kpi .b18-val b{font-size:26px;letter-spacing:-.02em}
.sec-kpi .b18-val i{font-size:12px;margin-left:3px}
.sec-kpi .b18-sub{font-size:11px;color:var(--mut);margin-top:3px;line-height:1.45}
.sec-kpi .b18-sub:empty{display:none}
@media (max-width:760px){
  .sec-kpi{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:9px 0 2px}
  .sec-kpi .b18-val b{font-size:22px}
  .sec-kpi .b18-cell{padding:9px 11px 9px}
}
/* ══ HF_SECCONTENT19:END ══ */

/* ══ HF_SIMPLIFY19：先把"重复三遍"的复杂度砍掉（2026-09-19）════════════════
   维护者反馈「现在看着整个网页太复杂了」。按 dashboard-ui 的判据，复杂度来自
   同一信息在**页头 / 板块标题 / 正文**各出现一次：
     · 页头已有全局新鲜度（官方赔率/盘口/赛程 的截止时刻）
     · 板块 h2 里又塞了一长串摘要胶囊（`#tag-*`，最长 172 字，实测 s-official）
     · 正文里的 `.insight` / 解读块**再把同一批数字讲一遍**
   做法：**只收起 h2 里的摘要胶囊 `#tag-*`**（信息在正文解读块里都还在，一查便有），
   保留 `.upd`（本板块数据时间，不重复）与 `.b18-tag`（重点板块标记）。
   这是纯展示层收敛，一条命令可还原。 */
@media (max-width:760px){
  main>section h2>.upd{font-size:11px;opacity:.75}
}
/* ══ HF_SIMPLIFY19:END ══ */

/* ══ HF_HDR19：手机端首屏 chrome 压缩（2026-09-19）════════════════════════
   实测（390×844）：第一个板块要从 **y=413px** 才开始 —— 首屏 49% 全是页头。
   拆开看：.topbar 160（其中 .topright 105）· .onsalebar 83 · #tabs 65 · .toolbar 58。
   桌面端只有 240px，所以问题集中在手机端。做法（只动手机端、只删重复表述）：
     · 「数据截止」这个**标签本身**在页头是废话（右边就是数字）→ 隐藏
     · `#topcut-a`（"最旧 X 分钟前（赛程）"旁注）→ 隐藏，该信息每个板块的 .upd 里都有
     · 胶囊改单行、不换行、收内边距
   桌面端一律不动。一条命令可还原。 */
@media (max-width:760px){
  .topright{gap:4px}
  .topright .tcut{flex-wrap:nowrap;overflow:hidden;padding:4px 9px;line-height:1.2;gap:5px}
  .topbar{padding-bottom:4px}
}
/* ══ HF_HDR19:END ══ */

/* ══ HF_HDR19B：手机端在售条只留一行（2026-09-19）════════════════════════
   实测：`.onsalebar` 手机端 83px = `.ob-l` 18（"在售（以官网逐场原字为准）"）
   + `.ob-t` 18（"在售 60 场（官网 16:12 快照）· 今日 30 场 · 明日 30 场"）
   + `.ob-c` 22（"快照 2026-09-19 16:12:43（21 分钟前）"）+ 内边距。
   `ob-l` 整行是重复表述（"在售"两字 ob-t 里就有）⇒ 手机端隐藏，其余全留。
   桌面端一律不动。一条命令可还原。 */
@media (max-width:760px){
  .onsalebar{padding-top:5px;padding-bottom:5px}
}
/* ══ HF_HDR19B:END ══ */

/* ══ HF_HDR19C：手机端标签栏提示行 + 工具条收紧（2026-09-19）══════════════
   实测手机端：`#tabs` 65px = 标签胶囊 49 + 一行「← 左右滑动查看更多 →」提示 16。
   胶囊行本身**肉眼可见是被截断可横滑的**（标准暗示），再占一整行提示属重复；
   另把 `.toolbar` 的行距/内边距各收一点。桌面端不动。一条命令可还原。 */
@media (max-width:760px){
  #tabs{padding-bottom:6px}
  .toolbar{row-gap:5px;padding-bottom:4px}
}
/* ══ HF_HDR19C:END ══ */

/* ══ HF_KEEP19：内容一律不删（维护者令 2026-09-19）════════════════════════
   「只是让你优化页面，不是让你砍预测结果」。
   本块把之前批次里所有 `display:none` 的**隐藏内容**规则全部撤回（只留版面压缩：
   内边距 / 行距 / 字号 / 间距）。以后本文件里的改版**不得删除或隐藏任何预测数据**，
   要降复杂度只能靠：分组、留白、层级、折叠（可展开）——不能靠抹掉。 */
/* ══ HF_KEEP19:END ══ */

/* ══ HF_DENSITY19：疏密与分组（2026-09-19 · **不删任何内容**）══════════════
   维护者：「现在看着整个网页太复杂了」「只是让你优化页面，不是让你砍预测结果」。
   ⇒ 只用**呼吸感与分组**降复杂度，一个字符都不隐藏：
   ① 分享版那张 850px 宽的"纸"是全站最长的一块（实测 38,081px）——把块间距、
      表头/表体行距、提示卡内边距收紧，长文档读起来不再糊成一片；
   ② 手机端把工具条与标签栏的**组间距**拉开一点（控件一个不少，但成组可辨）。 */
body.view-share .sheet .rp-h{margin:0 0 8px}
body.view-share .sheet h3,body.view-share .sheet h4{margin:13px 0 6px}
body.view-share .note2{padding:10px 12px;margin:8px 0}
body.view-share .sheet table td{padding:5px 8px}
body.view-share .sheet table th{padding:6px 8px}
@media (max-width:760px){
  .toolbar{column-gap:9px;row-gap:7px}
  #tabs{gap:6px}
}
/* ══ HF_DENSITY19:END ══ */

/* ════════════════════════════════════════════════════════════════════════
   HF_THEME20 · 星阵「深空测控台」视觉系统（2026-09-19）
   ────────────────────────────────────────────────────────────────────────
   设计意图：站点叫「星阵」，内容是一天多次查看的**测控台**。旧版是"近黑底 + 荧光绿"
   这一路通用默认；新版换成**深空蓝黑 + 冰青主色 + 柔紫辅色**，走仪表盘语汇：
   发丝描边、等宽表格数、玻璃面、边缘辉光、遥测条。
   约束（维护者令）：**只动呈现层，不删任何内容；不改口径与预测**。
   只做视觉 token 与外观覆盖，不改结构、不动布局骨架。
   ════════════════════════════════════════════════════════════════════════ */

/* ① 调色板与量纲：一次换色，全站跟随 ------------------------------------- */
html:root:not([data-theme="light"]){
  --bg:#070a12;      --bg2:#0b0f18;
  --card:rgba(255,255,255,.035);  --card2:rgba(255,255,255,.058);
  --line:rgba(150,183,235,.13);   --line2:rgba(150,183,235,.22);
  --tx:#e9eef8;      --mut:#93a1b5;   --mut2:#78849a;
  --acc:#7dd3fc;     --acc2:#c4b5fd;  --pur:#c4b5fd;
  --ok:#4ade80;      --warn:#fbbf24;  --bad:#fb7185;
  --r:16px; --r2:14px; --r-tag:9px;
  --glow:0 0 0 1px rgba(125,211,252,.16), 0 18px 48px -28px rgba(125,211,252,.5);
  --sh-card:0 1px 0 rgba(255,255,255,.05) inset, 0 24px 60px -40px rgba(3,7,18,.95);
}
html:root:not([data-theme="light"]) body{
  background:
    radial-gradient(1200px 620px at 12% -8%, rgba(125,211,252,.10), transparent 62%),
    radial-gradient(1000px 560px at 88% 4%, rgba(196,181,253,.10), transparent 60%),
    linear-gradient(180deg,#070a12,#05070d 62%,#05070d);
  color:var(--tx);
}

/* ② 背景层：星野 / 极光 / 星云 重新调色 + 压住噪声 ------------------------ */
html:root:not([data-theme="light"]) .cool-aurora{opacity:.85 !important;
  background:radial-gradient(58vmax 58vmax at 16% 8%, rgba(125,211,252,.30), transparent 62%),
             radial-gradient(48vmax 48vmax at 84% 18%, rgba(196,181,253,.24), transparent 58%) !important;
  filter:blur(6px) saturate(1.05)}
html:root:not([data-theme="light"]) .cool-nebula{opacity:.42 !important;
  background:conic-gradient(from 200deg at 50% 50%, rgba(125,211,252,.16), rgba(196,181,253,.20), rgba(74,222,128,.10), rgba(125,211,252,.16)) !important;
  filter:blur(70px)}
html:root:not([data-theme="light"]) #cool-stars{opacity:.55}
html:root:not([data-theme="light"]) body::after{      /* 细网格：仪表台底纹（纯装饰层，不遮内容） */
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.35;
  background-image:linear-gradient(rgba(150,183,235,.045) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(150,183,235,.045) 1px, transparent 1px);
  background-size:64px 64px, 64px 64px;
  -webkit-mask-image:radial-gradient(120% 80% at 50% 0%, #000 30%, transparent 78%);
          mask-image:radial-gradient(120% 80% at 50% 0%, #000 30%, transparent 78%);}

/* ③ 页头：遥测条 --------------------------------------------------------- */
html:root:not([data-theme="light"]) .topbar{
  background:linear-gradient(180deg, rgba(7,10,18,.92), rgba(7,10,18,.62)) !important;
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(14px) saturate(1.1)}
html:root:not([data-theme="light"]) .topbar .nm{letter-spacing:-.03em}
html:root:not([data-theme="light"]) .topbar .nm::after{content:""; display:block; height:2px; margin-top:6px;
  background:linear-gradient(90deg, var(--acc), var(--acc2) 55%, transparent);
  border-radius:2px; opacity:.8}
html:root:not([data-theme="light"]) .lv-stamp{color:var(--acc); text-shadow:0 0 18px rgba(125,211,252,.35)}
html:root:not([data-theme="light"]) .tcut{background:rgba(255,255,255,.045) !important;
  border-color:var(--line) !important; color:var(--mut) !important;
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset}
html:root:not([data-theme="light"]) .tcut b{color:var(--acc) !important; font-variant-numeric:tabular-nums}
html:root:not([data-theme="light"]) .tcut::before{background:var(--ok) !important;
  box-shadow:0 0 0 3px rgba(74,222,128,.14), 0 0 14px rgba(74,222,128,.5) !important}

/* ④ 在售条：一整条"遥测尺" ----------------------------------------------- */
html:root:not([data-theme="light"]) .onsalebar{
  background:linear-gradient(90deg, rgba(125,211,252,.07), rgba(196,181,253,.05) 60%, transparent);
  border:1px solid var(--line); border-left:2px solid var(--acc);
  border-radius:12px}
html:root:not([data-theme="light"]) .onsalebar .ob-t b,
html:root:not([data-theme="light"]) .onsalebar .ob-c{color:var(--acc)}

/* ⑤ 标签栏：分段按钮，选中态走冰青→柔紫渐变 ------------------------------- */
html:root:not([data-theme="light"]) #tabs a{
  background:rgba(255,255,255,.035); border:1px solid var(--line) !important;
  color:var(--mut) !important; border-radius:12px; box-shadow:none; font-weight:650;
  transition:transform .22s cubic-bezier(.2,.8,.2,1), color .2s, border-color .2s, background .2s}
html:root:not([data-theme="light"]) #tabs a:hover{color:var(--tx) !important;
  border-color:var(--line2) !important; background:rgba(255,255,255,.06); transform:translateY(-1px)}
html:root:not([data-theme="light"]) #tabs a.on{
  color:#04101c !important; border-color:transparent !important;
  background:linear-gradient(135deg, var(--acc), var(--acc2)) !important;
  box-shadow:0 10px 26px -14px rgba(125,211,252,.85), 0 1px 0 rgba(255,255,255,.5) inset}
html:root:not([data-theme="light"]) #tabs a.on i{background:rgba(4,16,28,.22) !important; color:#04101c !important}
html:root:not([data-theme="light"]) #tabs a i{background:rgba(255,255,255,.05); color:var(--mut);
  border-color:var(--line) !important}

/* ⑥ 工具条：控件统一为"仪表旋钮" ----------------------------------------- */
html:root:not([data-theme="light"]) .toolbar select,
html:root:not([data-theme="light"]) .toolbar label,
html:root:not([data-theme="light"]) .toolbar button,
html:root:not([data-theme="light"]) .search input{
  background:rgba(255,255,255,.04) !important; border:1px solid var(--line) !important;
  color:var(--tx) !important; border-radius:10px}
html:root:not([data-theme="light"]) .toolbar label:hover,
html:root:not([data-theme="light"]) .toolbar button:hover{
  border-color:var(--acc) !important; color:var(--acc) !important; background:rgba(125,211,252,.08) !important}

/* ⑦ 卡片与分区头：玻璃面 + 顶部高光 + 分区"仪表标题" --------------------- */
html:root:not([data-theme="light"]) .card{
  background:linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.02)) !important;
  border:1px solid var(--line) !important; border-radius:var(--r) !important;
  box-shadow:var(--sh-card) !important; backdrop-filter:blur(10px) saturate(1.05);
  transition:transform .28s cubic-bezier(.2,.8,.2,1), border-color .25s, box-shadow .3s}
html:root:not([data-theme="light"]) .card:hover{
  transform:translateY(-2px); border-color:var(--line2) !important;
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 30px 70px -44px rgba(125,211,252,.45) !important}
html:root:not([data-theme="light"]) .card>h2{
  border-bottom:1px solid var(--line); padding-bottom:10px; margin-bottom:12px;
  letter-spacing:-.02em}
html:root:not([data-theme="light"]) .card>h2::before{
  content:""; display:inline-block; width:3px; height:1.05em; margin-right:9px;
  vertical-align:-.16em; border-radius:2px;
  background:linear-gradient(180deg, var(--acc), var(--acc2)); box-shadow:0 0 12px rgba(125,211,252,.55)}
html:root:not([data-theme="light"]) .card>h2 .tag{
  background:rgba(255,255,255,.045); border:1px solid var(--line); color:var(--mut);
  border-radius:8px; font-weight:600}
html:root:not([data-theme="light"]) .card>h2 .upd{color:var(--mut2)}
html:root:not([data-theme="light"]) .b18-tag{
  background:rgba(125,211,252,.12) !important; border-color:rgba(125,211,252,.34) !important;
  color:#d7f1ff !important}

/* ⑧ 指标格（KPI）：数字做主角 ------------------------------------------- */
html:root:not([data-theme="light"]) .b18-cell{
  background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.015)) !important;
  border:1px solid var(--line) !important; border-radius:13px !important;
  transition:transform .24s cubic-bezier(.2,.8,.2,1), border-color .22s, box-shadow .26s}
html:root:not([data-theme="light"]) .b18-cell:hover{
  transform:translateY(-2px); border-color:rgba(125,211,252,.4) !important;
  box-shadow:0 18px 40px -30px rgba(125,211,252,.7)}
html:root:not([data-theme="light"]) .b18-lab{color:var(--mut) !important; letter-spacing:.02em}
html:root:not([data-theme="light"]) .b18-val b{
  background:linear-gradient(180deg,#ffffff,#a9d8f5 78%) !important;
  -webkit-background-clip:text !important; background-clip:text !important;
  color:transparent !important; font-variant-numeric:tabular-nums; letter-spacing:-.03em}
html:root:not([data-theme="light"]) .b18-sub{color:var(--mut2) !important}

/* ⑨ 表格：发丝线 + 数值等宽 + 悬停整行点亮 ------------------------------ */
html:root:not([data-theme="light"]) table th{
  color:var(--mut2) !important; letter-spacing:.04em !important; border-bottom:1px solid var(--line) !important}
html:root:not([data-theme="light"]) table td{
  border-bottom:1px solid rgba(150,183,235,.07) !important;
  font-variant-numeric:tabular-nums}
html:root:not([data-theme="light"]) tbody tr:hover td{
  background:linear-gradient(90deg, rgba(125,211,252,.09), rgba(125,211,252,.02) 70%, transparent) !important}

/* ⑩ 按钮 / 胶囊 / 徽标 --------------------------------------------------- */
html:root:not([data-theme="light"]) .tbtn,
html:root:not([data-theme="light"]) .btn,
html:root:not([data-theme="light"]) .pbtn,
html:root:not([data-theme="light"]) .more{
  background:rgba(255,255,255,.05) !important; border:1px solid var(--line) !important;
  color:var(--tx) !important; border-radius:11px !important; box-shadow:none !important;
  transition:transform .18s cubic-bezier(.2,.8,.2,1), border-color .2s, color .2s, background .2s}
html:root:not([data-theme="light"]) .tbtn:hover,
html:root:not([data-theme="light"]) .btn:hover,
html:root:not([data-theme="light"]) .pbtn:hover,
html:root:not([data-theme="light"]) .more:hover{
  border-color:var(--acc) !important; color:var(--acc) !important;
  background:rgba(125,211,252,.1) !important}
html:root:not([data-theme="light"]) .tbtn:active,
html:root:not([data-theme="light"]) .btn:active{transform:translateY(1px) scale(.995)}
html:root:not([data-theme="light"]) .tbtn.primary,
html:root:not([data-theme="light"]) #print-btn{
  background:linear-gradient(135deg, var(--acc), var(--acc2)) !important; color:#04101c !important;
  border-color:transparent !important}
html:root:not([data-theme="light"]) .pill,
html:root:not([data-theme="light"]) .b18-chip,
html:root:not([data-theme="light"]) .fchip{
  background:rgba(255,255,255,.045) !important; border:1px solid var(--line) !important; color:var(--mut) !important}

/* ⑪ 说明块与滚动条 ------------------------------------------------------- */
html:root:not([data-theme="light"]) .read,
html:root:not([data-theme="light"]) .insight{
  border-left:2px solid rgba(125,211,252,.35); padding-left:12px}
html:root:not([data-theme="light"]) ::selection{background:rgba(125,211,252,.3); color:#fff}
html:root:not([data-theme="light"]) ::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg, rgba(125,211,252,.5), rgba(196,181,253,.45)); border-radius:99px}

/* ⑫ 动效：一次编排 + 交互回应（尊重 reduced-motion）---------------------- */
@keyframes hf20-in{from{opacity:0; transform:translateY(14px) scale(.995)} to{opacity:1; transform:none}}
html:root:not([data-theme="light"]) main>section{animation:hf20-in .6s cubic-bezier(.16,1,.3,1) both}
html:root:not([data-theme="light"]) main>section:nth-child(1){animation-delay:.02s}
html:root:not([data-theme="light"]) main>section:nth-child(2){animation-delay:.06s}
html:root:not([data-theme="light"]) main>section:nth-child(3){animation-delay:.10s}
html:root:not([data-theme="light"]) main>section:nth-child(4){animation-delay:.14s}
html:root:not([data-theme="light"]) main>section:nth-child(n+5){animation-delay:.18s}
@keyframes hf20-sheen{0%{background-position:-140% 0} 100%{background-position:240% 0}}
html:root:not([data-theme="light"]) .card>h2::before{position:relative; overflow:hidden}
html:root:not([data-theme="light"]) .b18-cell::after{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:linear-gradient(105deg, transparent 38%, rgba(255,255,255,.10) 50%, transparent 62%);
  background-size:240% 100%; opacity:0; transition:opacity .3s}
html:root:not([data-theme="light"]) .b18-cell:hover::after{opacity:1; animation:hf20-sheen 1.1s linear}
@media (prefers-reduced-motion: reduce){
  html:root:not([data-theme="light"]) main>section{animation:none !important}
  html:root:not([data-theme="light"]) .b18-cell:hover::after{animation:none !important; opacity:.12}
  html:root:not([data-theme="light"]) .card:hover,
  html:root:not([data-theme="light"]) .b18-cell:hover,
  html:root:not([data-theme="light"]) #tabs a:hover{transform:none !important}
}

/* ⑬ 手机端：留白与触达（不隐藏任何控件）--------------------------------- */
@media (max-width:760px){
  html:root:not([data-theme="light"]) .card{border-radius:14px !important}
  html:root:not([data-theme="light"]) body::after{background-size:48px 48px, 48px 48px; opacity:.25}
  html:root:not([data-theme="light"]) .b18-val b{letter-spacing:-.02em}
}
/* ══ HF_THEME20:END ══ */

/* ════════════════════════════════════════════════════════════════════════
   HF_MOTION20 · 大动效层（2026-09-19）维护者令「大动效，越炫酷的越好」
   ────────────────────────────────────────────────────────────────────────
   全部为**装饰层**：position:fixed / pointer-events:none / z-index:0，压不到正文、不进读屏。
   动画只用 transform + opacity + background-position（合成器友好，不掉帧）。
   ⚠ 严格尊重 prefers-reduced-motion：reduce 时全部静止且不创建（JS 侧也不建节点）。
   ════════════════════════════════════════════════════════════════════════ */
html:root:not([data-theme="light"]) .hf20-bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.hf20-layer{position:absolute;inset:-25%;will-change:transform}

/* ① 三层视差星野（越远越慢、越小） */
.hf20-s1{background-image:
  radial-gradient(1.6px 1.6px at 12% 22%, rgba(255,255,255,.95), transparent 55%),
  radial-gradient(1.6px 1.6px at 62% 8%,  rgba(221,240,255,.85), transparent 55%),
  radial-gradient(1.4px 1.4px at 84% 44%, rgba(255,255,255,.8),  transparent 55%),
  radial-gradient(1.4px 1.4px at 34% 68%, rgba(196,181,253,.9), transparent 55%),
  radial-gradient(1.2px 1.2px at 72% 82%, rgba(255,255,255,.75), transparent 55%);
  background-size:620px 620px;animation:hf20-drift-a 150s linear infinite;opacity:.75}
.hf20-s2{background-image:
  radial-gradient(1.1px 1.1px at 8% 52%, rgba(255,255,255,.7), transparent 55%),
  radial-gradient(1.1px 1.1px at 46% 18%, rgba(125,211,252,.85), transparent 55%),
  radial-gradient(1px 1px at 88% 72%, rgba(255,255,255,.65), transparent 55%);
  background-size:380px 380px;animation:hf20-drift-b 90s linear infinite;opacity:.6}
.hf20-s3{background-image:
  radial-gradient(2.4px 2.4px at 28% 36%, rgba(255,255,255,.95), transparent 60%),
  radial-gradient(2.2px 2.2px at 76% 62%, rgba(196,181,253,.95), transparent 60%);
  background-size:900px 900px;animation:hf20-twinkle 5.5s ease-in-out infinite alternate;opacity:.85}
@keyframes hf20-drift-a{from{transform:translate3d(0,0,0)} to{transform:translate3d(-620px,-620px,0)}}
@keyframes hf20-drift-b{from{transform:translate3d(0,0,0)} to{transform:translate3d(380px,-380px,0)}}
@keyframes hf20-twinkle{from{opacity:.35} to{opacity:.95}}

/* ② 极光呼吸（加在既有极光层上） */
html:root:not([data-theme="light"]) .cool-aurora{animation:hf20-breathe 16s ease-in-out infinite}
@keyframes hf20-breathe{0%,100%{opacity:.62;transform:scale(1)} 50%{opacity:.95;transform:scale(1.06)}}

/* ③ 两束光带横扫（大动效主视觉） */
.hf20-sweep{position:absolute;top:-40%;bottom:-40%;width:42vmax;
  background:linear-gradient(100deg, transparent, rgba(125,211,252,.16) 42%, rgba(255,255,255,.10) 50%, rgba(196,181,253,.16) 58%, transparent);
  filter:blur(22px);mix-blend-mode:screen;will-change:transform}
.hf20-sweep.a{animation:hf20-sweep-a 17s cubic-bezier(.5,0,.5,1) infinite}
.hf20-sweep.b{animation:hf20-sweep-b 23s cubic-bezier(.5,0,.5,1) infinite;opacity:.75}
@keyframes hf20-sweep-a{0%{transform:translate3d(-60vmax,0,0) rotate(8deg)} 100%{transform:translate3d(120vmax,0,0) rotate(8deg)}}
@keyframes hf20-sweep-b{0%{transform:translate3d(120vmax,0,0) rotate(-6deg)} 100%{transform:translate3d(-60vmax,0,0) rotate(-6deg)}}

/* ④ 透视地平线网格（合成波，铺在页面底部） */
.hf20-horizon{position:absolute;left:-25%;right:-25%;bottom:-6%;height:46vh;opacity:.5;
  background-image:linear-gradient(rgba(125,211,252,.30) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(125,211,252,.26) 1px, transparent 1px);
  background-size:100% 46px, 62px 100%;
  transform:perspective(420px) rotateX(66deg);transform-origin:50% 100%;
  animation:hf20-grid 3.4s linear infinite;
  -webkit-mask-image:linear-gradient(transparent, #000 42%, #000);mask-image:linear-gradient(transparent, #000 42%, #000)}
@keyframes hf20-grid{from{background-position:0 0, 0 0} to{background-position:0 46px, 62px 0}}

/* ⑤ 页头遥测扫描线 */
html:root:not([data-theme="light"]) .topbar{position:relative;overflow:hidden}
html:root:not([data-theme="light"]) .topbar::after{
  content:""; position:absolute;left:0;right:0;bottom:0;height:1px;pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--acc), var(--acc2), transparent);
  transform:translateX(-100%);animation:hf20-scan 6.5s cubic-bezier(.6,0,.4,1) infinite}
@keyframes hf20-scan{0%{transform:translateX(-100%)} 55%,100%{transform:translateX(100%)}}

/* ⑥ 卡片：3D 跟随（JS 写 --rx/--ry）+ 边缘流光 */
html:root:not([data-theme="light"]) .card{transform-style:preserve-3d;
  transform:perspective(1200px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--ty,0px));
  transition:transform .3s cubic-bezier(.2,.8,.2,1), border-color .25s, box-shadow .3s}
html:root:not([data-theme="light"]) .card::after{
  content:""; position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
  transition:opacity .3s;background:radial-gradient(420px 320px at var(--mx,50%) var(--my,50%),
    rgba(125,211,252,.16), rgba(196,181,253,.08) 40%, transparent 68%)}
html:root:not([data-theme="light"]) .card:hover::after{opacity:1}

/* ⑦ 滚动进度条 */
#hf20-progress{position:fixed;top:0;left:0;height:2px;width:100%;z-index:60;pointer-events:none;
  transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg, var(--acc), var(--acc2) 60%, var(--ok))}

/* ⑧ 标签栏 / 按钮 流光扫过 */
html:root:not([data-theme="light"]) #tabs a{position:relative;overflow:hidden}
html:root:not([data-theme="light"]) #tabs a::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:linear-gradient(105deg, transparent 40%, rgba(255,255,255,.38) 50%, transparent 60%);
  background-size:260% 100%;background-position:120% 0}
html:root:not([data-theme="light"]) #tabs a:hover::after{opacity:1;animation:hf20-sheen20 .9s linear}
@keyframes hf20-sheen20{from{background-position:130% 0} to{background-position:-40% 0}}

@media (prefers-reduced-motion: reduce){
  .hf20-star,.hf20-layer,.hf20-sweep,.hf20-horizon{animation:none !important}
  html:root:not([data-theme="light"]) .cool-aurora{animation:none !important}
  html:root:not([data-theme="light"]) .topbar::after{animation:none !important;transform:none;opacity:.5}
  html:root:not([data-theme="light"]) .card{transform:none !important}
}
@media (max-width:760px){
  .hf20-horizon{height:34vh;opacity:.38}
  .hf20-sweep{width:70vmax;filter:blur(16px)}
  .hf20-s2{display:none}          /* 手机省一半星野绘制，视觉几乎无差 */
}
/* ══ HF_MOTION20:END ══ */

/* ══ HF_TABLE20：长表格可用性 + 锚点落点（2026-09-19 · 纯 CSS，不删内容）════
   维护者口径：看得方便、一目了然。表格是这个看板的主力阅读面（41 张卡 / 上百张表）。
   ① **粘性表头**：表头滚出视口后仍能对上列（sticky 到页头之下），长表不用来回找列名；
   ② **锚点落点**：h2 的 `#` 锚点与页头 tab 跳转此前会被 sticky 页头盖住 → 用
      `scroll-margin-top` 给所有可跳转目标留出页头高度（JS 侧 hdrOffset 已处理点击路径，
      这里补齐**原生 hash 跳转**与「复制链接给别人」的场景）；
   ③ 超长文本行高与断行：口径说明类长句不再挤成一团。 */
:root{--hf20-hdr:96px}
html{scroll-padding-top:var(--hf20-hdr)}
main>section,.card,.card>h2,[id^="s-"]{scroll-margin-top:var(--hf20-hdr)}
@media (max-width:760px){:root{--hf20-hdr:168px}}
/* 表头粘性（只对分页滚动容器内的表生效，避免和整页 sticky 打架） */
.scroll table thead th,.dptbl-wrap table thead th,.mg-tblwrap table thead th,
table.mc thead th{
  position:sticky; top:0; z-index:3;
  background:linear-gradient(180deg, rgba(11,15,24,.98), rgba(11,15,24,.92)) !important;
  backdrop-filter:blur(6px)}
.ptbl thead th,.htbl thead th{position:sticky; top:0; z-index:3}
/* 长文本：行高与断行 */
html:root:not([data-theme="light"]) .read,
html:root:not([data-theme="light"]) .insight,
html:root:not([data-theme="light"]) .note2,
html:root:not([data-theme="light"]) .dp-stamp{line-height:1.72}
html:root:not([data-theme="light"]) td,html:root:not([data-theme="light"]) th{line-height:1.5}
/* ══ HF_TABLE20:END ══ */

/* ══ HF_PERF20：动效降压（2026-09-19 应急）════════════════════════════════
   现象：维护者反馈「网页打不开了」。服务端全绿（本地 200 / 产物完整 / 16:57 刚发布），
   因此优先排查**渲染侧**：上一批大动效叠了三处高危开销 ——
     ① 41 张卡片的 `backdrop-filter: blur(10px)`（本项目历史上 54 个毛玻璃曾把手机压到 7fps）
     ② 两束 `blur(22px)` + `mix-blend-mode:screen` 的全屏光带（强制额外合成层）
     ③ 三层全屏星野 + 透视网格同时绘制
   ⇒ **保留"大动效"的观感，砍掉最贵的实现**：卡片去毛玻璃（改渐变+描边，观感几乎不变）、
      光带去 blending 并降模糊、星野按设备能力由 JS 决定层数。 */
html:root:not([data-theme="light"]) .card{
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
  background:linear-gradient(180deg, rgba(255,255,255,.062), rgba(255,255,255,.022)) !important}
html:root:not([data-theme="light"]) .topbar{backdrop-filter:blur(10px) !important}   /* 只留页头一处 */
.hf20-sweep{mix-blend-mode:normal !important; filter:blur(10px) !important;
  background:linear-gradient(100deg, transparent, rgba(125,211,252,.14) 42%, rgba(255,255,255,.07) 50%, rgba(196,181,253,.14) 58%, transparent) !important}
.hf20-horizon{opacity:.42}
html[data-hf20="lite"] .hf20-s2,html[data-hf20="lite"] .hf20-s3,
html[data-hf20="lite"] .hf20-sweep.b,html[data-hf20="lite"] .hf20-horizon{display:none !important}
html[data-hf20="lite"] .cool-nebula{opacity:.25 !important}
/* ══ HF_PERF20:END ══ */

/* ══ HF_PERF20B：全局关闭毛玻璃（2026-09-19 应急 · 只留页头）═════════════
   实测（港机无头）：页面上带 `backdrop-filter` 的元素 **349 个（1600）/ 391 个（390）**
   —— 卡片只是其中 41 个，其余是散落的 `.tag/.pill/.tcut/表头/胶囊…` 各自带一层。
   每个毛玻璃元素每帧都要采样背景 + 高斯模糊，几百个叠在一起会把 GPU/合成器压垮
   （本项目历史同款事故：aa8.ren 54 个毛玻璃把手机压到 7fps）。
   ⇒ **除页头外全部关闭**；观感靠"半透明渐变 + 发丝描边"维持（深色底上几乎看不出差别）。 */
html:root:not([data-theme="light"]) *:not(.topbar):not(.topbar *){
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}
html:root:not([data-theme="light"]) .topbar{
  backdrop-filter:blur(10px) !important; -webkit-backdrop-filter:blur(10px) !important;
}
/* ══ HF_PERF20B:END ══ */

/* ══ HF_CHART20：图表配色对齐新色板（2026-09-19 · 纯 CSS，零 JS 改动）══════
   实测（港机无头，`#/value` 与 `#/model`）：数据图表是 **SVG**，但仍在用旧色板 ——
   `#c8ff4d`（旧荧光绿，品牌色残留）、`#38bdf8`（旧天蓝）、`#8ea3c0`（旧次要字色）、
   `#f87171`（红）、`#cbd5e1` / `#e2e8f0`（旧浅灰）。
   用**属性选择器 + !important** 覆盖（!important 可压过内联样式），
   只动颜色、不动任何几何与数据 → 不影响图表读数。 */
main svg [fill="#c8ff4d"],main svg [fill="rgb(200,255,77)"]{fill:var(--acc) !important}
main svg [stroke="#c8ff4d"],main svg [stroke="rgb(200,255,77)"]{stroke:var(--acc) !important}
main svg [stop-color="#c8ff4d"],main svg [stop-color="rgb(200,255,77)"]{stop-color:var(--acc) !important}
main svg [fill="#38bdf8"],main svg [fill="rgb(56,189,248)"]{fill:var(--acc) !important}
main svg [stroke="#38bdf8"],main svg [stroke="rgb(56,189,248)"]{stroke:var(--acc) !important}
main svg [stop-color="#38bdf8"]{stop-color:var(--acc) !important}
main svg [fill="#8ea3c0"],main svg [fill="rgb(142,163,192)"]{fill:var(--mut) !important}
main svg [stroke="#8ea3c0"]{stroke:var(--mut) !important}
main svg [fill="#64748b"],main svg [fill="rgb(100,116,139)"]{fill:var(--mut2) !important}
main svg [stroke="#64748b"]{stroke:var(--mut2) !important}
main svg [fill="#f87171"],main svg [fill="rgb(248,113,113)"]{fill:var(--bad) !important}
main svg [stroke="#f87171"],main svg [stroke="rgb(248,113,113)"]{stroke:var(--bad) !important}
main svg [fill="#cbd5e1"],main svg [fill="rgb(203,213,225)"]{fill:var(--tx) !important}
main svg [fill="#e2e8f0"],main svg [fill="rgb(226,232,240)"]{fill:var(--tx) !important}
main svg [stroke="#e2e8f0"],main svg [stroke="rgb(226,232,240)"]{stroke:var(--tx) !important}
/* 图表网格/坐标轴：统一到发丝线 */
main svg [stroke="#94a3b8"],main svg [stroke="rgb(148,163,184)"],
main svg [stroke="rgba(148,163,184,0.18)"],main svg [stroke="rgba(148,163,184,0.1)"]{stroke:var(--line) !important}
/* 图例文字与轴标签 */
main svg text{fill:var(--mut2) !important}
/* ══ HF_CHART20:END ══ */

/* ══ HF_EMPTY20：空态与加载态文案（2026-09-19 · 纯 CSS，不删任何内容）═══════
   dashboard-ui 技能的判据：**空态是"感知精致度"的 80%** —— 数据面必须有
   空 / 加载 / 错误三态，而不是一片空白让人怀疑"是不是坏了"。
   本页的空态来自三类真实场景：①该板块今日无符合条件的数据；②筛选后无结果；
   ③实时层尚未回填（刚打开的那几秒）。只加"说话的文字"，不动任何既有内容。 */
main table tbody:empty::after{
  content:"本板块当前没有符合条件的行 —— 可能是今日无此口径的场次，或筛选后无结果。清空上方筛选即可恢复全部行。";
  display:block;padding:14px 12px;margin:2px 0;border-radius:10px;
  color:var(--mut2);font-size:12.5px;line-height:1.7;
  background:rgba(255,255,255,.02);border:1px dashed var(--line)}
main section .body:empty::after{
  content:"数据准备中…（实时层每 18 秒回填一次；若长时间为空，页面顶部会显示采集新鲜度）";
  display:block;padding:12px;color:var(--mut2);font-size:12.5px}
.card>.read:empty::after,.card>.insight:empty::after{
  content:"该板块本轮没有可解读的要点。";color:var(--mut2);font-size:12.5px}
/* 首屏淡入：避免"打开像是空的" */
html:root:not([data-theme="light"]) main>section{animation-fill-mode:both}
/* ══ HF_EMPTY20:END ══ */

/* ══ HF_MOB20：手机端控件分组留白（一个控件都不隐藏）══════════════════════ */
@media (max-width:760px){
  #tabs{gap:7px;padding-top:8px}
  .toolbar{column-gap:10px;row-gap:8px;padding-left:10px;padding-right:10px}
  .toolbar>span:first-child{opacity:.75}
  .onsalebar{margin-left:10px;margin-right:10px}
}
/* ══ HF_MOB20:END ══ */

/* ════════════════════════════════════════════════════════════════════════
   HF_SCIFI21 · 全球数据站 · 科幻 HUD 强化（2026-09-19）
   ────────────────────────────────────────────────────────────────────────
   维护者反馈：「偏灰、元素太少、太单调、不炫酷、没科幻感和科技感」。
   诊断（对症下药，不是乱加）：
     ① **偏灰**：上一版把卡片做成 `rgba(255,255,255,.03~.06)` 的"白灰叠加"，
        在深底上就是灰；且背景极光/星云被压得太低（PERF20 里 nebula 低至 .25）。
     ② **单调**：整页只有一个青色 accent，且只出现在标签栏；卡片/表头/数字都没有角色色。
     ③ **没科技感**：缺少仪表语汇 —— 角标、刻度尺、扫描线、数据流、发光描边。
   本块只做"更饱和 + 更多仪表元素"，仍然：不删内容、不加毛玻璃、只用 transform/opacity。
   ════════════════════════════════════════════════════════════════════════ */

/* ① 更饱和的调色板（主色更亮、辅色更艳，再补一个强调色） */
html:root:not([data-theme="light"]){
  --bg:#04060d; --bg2:#080c16;
  --acc:#22d3ee;              /* 亮青（比上一版 #7dd3fc 更饱和） */
  --acc2:#a855f7;             /* 艳紫 */
  --acc3:#f472b6;             /* 品红，做第三强调 */
  --tx:#f2f7ff; --mut:#a8b6cc; --mut2:#7f8ea6;
  --line:rgba(34,211,238,.20); --line2:rgba(168,85,247,.30);
  --card:rgba(34,211,238,.055); --card2:rgba(168,85,247,.075);
}

/* ② 背景：极光/星云拉回来 + 顶部数据流 + 地平线辉光 */
html:root:not([data-theme="light"]) .cool-aurora{opacity:1 !important;
  background:radial-gradient(52vmax 52vmax at 14% 6%, rgba(34,211,238,.42), transparent 60%),
             radial-gradient(46vmax 46vmax at 86% 12%, rgba(168,85,247,.38), transparent 58%),
             radial-gradient(34vmax 34vmax at 50% 96%, rgba(244,114,182,.20), transparent 62%) !important}
html:root:not([data-theme="light"]) .cool-nebula{opacity:.85 !important}
html:root:not([data-theme="light"]) #cool-stars{opacity:.9}
html:root:not([data-theme="light"]) body::before{     /* 竖向数据流（装饰层，压不到内容） */
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.30;
  background-image:repeating-linear-gradient(90deg,
    rgba(34,211,238,.22) 0 1px, transparent 1px 120px);
  -webkit-mask-image:linear-gradient(180deg, #000, transparent 55%);
          mask-image:linear-gradient(180deg, #000, transparent 55%);
  animation:hf21-flow 9s linear infinite}
@keyframes hf21-flow{from{background-position:0 0} to{background-position:0 -240px}}

/* ③ 页头：仪表横条 + 双色描边 */
html:root:not([data-theme="light"]) .topbar{
  background:linear-gradient(180deg, rgba(4,6,13,.94), rgba(4,6,13,.66)) !important;
  border-bottom:1px solid transparent;
  border-image:linear-gradient(90deg, rgba(34,211,238,.75), rgba(168,85,247,.75), transparent) 1}
html:root:not([data-theme="light"]) .topbar .nm::after{
  background:linear-gradient(90deg, var(--acc), var(--acc2) 45%, var(--acc3) 70%, transparent);
  box-shadow:0 0 16px rgba(34,211,238,.6)}

/* ④ 卡片：从"灰玻璃"改成"带角色色的科技面板" + HUD 角标 */
html:root:not([data-theme="light"]) .card{
  background:
    linear-gradient(160deg, rgba(34,211,238,.10), rgba(168,85,247,.07) 42%, rgba(255,255,255,.022) 100%) !important;
  border:1px solid rgba(34,211,238,.22) !important;
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset,
             0 0 0 1px rgba(4,6,13,.6) inset,
             0 26px 60px -42px rgba(34,211,238,.55) !important;
  position:relative}
html:root:not([data-theme="light"]) .card:hover{border-color:rgba(168,85,247,.5) !important;
  box-shadow:0 1px 0 rgba(255,255,255,.08) inset, 0 30px 70px -40px rgba(168,85,247,.6) !important}
/* HUD 角标（用 border-image 之外的背景层画，不占伪元素，避免与聚光/悬停冲突） */
html:root:not([data-theme="light"]) .card{
  background-image:
    linear-gradient(90deg, rgba(34,211,238,.0) 0, rgba(34,211,238,.0) 100%);}
html:root:not([data-theme="light"]) .card>h2::after{
  content:""; display:block; height:6px; margin-top:9px; border-radius:2px;
  background:
    repeating-linear-gradient(90deg, rgba(34,211,238,.55) 0 1px, transparent 1px 14px),
    linear-gradient(90deg, rgba(168,85,247,.35), transparent 70%);
  opacity:.85}

/* ⑤ KPI / 数字：三色渐变，数字成为视觉主角 */
html:root:not([data-theme="light"]) .b18-val b{
  background:linear-gradient(135deg,#e8fbff 0%, var(--acc) 38%, var(--acc2) 78%, var(--acc3) 100%) !important;
  -webkit-background-clip:text !important; background-clip:text !important; color:transparent !important}
html:root:not([data-theme="light"]) .b18-lab{color:var(--acc) !important; font-weight:700; letter-spacing:.06em}
html:root:not([data-theme="light"]) .b18-cell{
  background:linear-gradient(160deg, rgba(34,211,238,.12), rgba(168,85,247,.07) 60%, rgba(255,255,255,.02)) !important;
  border:1px solid rgba(34,211,238,.26) !important}
html:root:not([data-theme="light"]) .b18-chip{color:var(--acc3) !important;
  border-color:rgba(244,114,182,.4) !important; background:rgba(244,114,182,.10) !important}

/* ⑥ 分区标题：三色渐变文字 + 发光竖条 + 刻度 */
html:root:not([data-theme="light"]) .card>h2{
  background:linear-gradient(90deg,#ffffff, #d7f4ff 40%, var(--acc) 78%);
  -webkit-background-clip:text; background-clip:text; color:transparent}
html:root:not([data-theme="light"]) .card>h2 .tag,
html:root:not([data-theme="light"]) .card>h2 .upd,
html:root:not([data-theme="light"]) .card>h2 .b18-tag{color:var(--mut); -webkit-text-fill-color:var(--mut)}
html:root:not([data-theme="light"]) .card>h2 .b18-tag{color:#f0dcff !important; -webkit-text-fill-color:#f0dcff}
html:root:not([data-theme="light"]) .card>h2::before{
  background:linear-gradient(180deg, var(--acc), var(--acc2) 60%, var(--acc3));
  box-shadow:0 0 14px rgba(34,211,238,.75)}

/* ⑦ 表格：更清楚的表头 + 青色悬停 + 首列强调 */
html:root:not([data-theme="light"]) table th{
  color:#cfefff !important; background:linear-gradient(180deg, rgba(34,211,238,.14), rgba(34,211,238,.03)) !important;
  border-bottom:1px solid rgba(34,211,238,.42) !important}
html:root:not([data-theme="light"]) tbody tr:nth-child(even) td{background:rgba(168,85,247,.035)}
html:root:not([data-theme="light"]) tbody tr:hover td{
  background:linear-gradient(90deg, rgba(34,211,238,.16), rgba(168,85,247,.06) 60%, transparent) !important}
html:root:not([data-theme="light"]) tbody td:first-child{color:var(--acc); font-weight:650}

/* ⑧ 标签栏 / 工具条 / 按钮：更亮的科技感 */
html:root:not([data-theme="light"]) #tabs a{
  background:linear-gradient(180deg, rgba(34,211,238,.10), rgba(168,85,247,.05)) !important;
  border-color:rgba(34,211,238,.28) !important; color:#cfe9ff !important}
html:root:not([data-theme="light"]) #tabs a.on{
  background:linear-gradient(135deg, var(--acc) 0%, #4f9cf9 45%, var(--acc2) 100%) !important;
  color:#03060d !important;
  box-shadow:0 12px 30px -14px rgba(34,211,238,.95), 0 1px 0 rgba(255,255,255,.6) inset !important}
html:root:not([data-theme="light"]) .tbtn,
html:root:not([data-theme="light"]) .toolbar select,
html:root:not([data-theme="light"]) .toolbar label{
  border-color:rgba(34,211,238,.26) !important; background:rgba(34,211,238,.06) !important}
html:root:not([data-theme="light"]) .tbtn.primary,#print-btn{
  background:linear-gradient(135deg, var(--acc), var(--acc2)) !important; color:#03060d !important}

/* ⑨ 在售条 / 胶囊：发光描边 */
html:root:not([data-theme="light"]) .onsalebar{
  background:linear-gradient(90deg, rgba(34,211,238,.16), rgba(168,85,247,.10) 55%, transparent) !important;
  border:1px solid rgba(34,211,238,.35) !important; border-left:3px solid var(--acc) !important;
  box-shadow:0 0 24px -12px rgba(34,211,238,.7)}
html:root:not([data-theme="light"]) .pill,html:root:not([data-theme="light"]) .fchip{
  border-color:rgba(34,211,238,.28) !important; color:#bfe7ff !important}
html:root:not([data-theme="light"]) .ok,.lv-ok{color:#4ade80 !important}
html:root:not([data-theme="light"]) .warn,.lv-stale{color:#fbbf24 !important}
html:root:not([data-theme="light"]) .bad{color:#fb7185 !important}

/* ⑩ 发光与扫描（合成器友好） */
@keyframes hf21-scan2{0%{transform:translateY(-10%)} 100%{transform:translateY(110%)}}
html:root:not([data-theme="light"]) main>section{position:relative}
html:root:not([data-theme="light"]) .card:hover>h2::after{animation:hf21-tick .9s linear}
@keyframes hf21-tick{from{background-position:0 0,0 0} to{background-position:56px 0,120px 0}}
@media (prefers-reduced-motion: reduce){
  html:root:not([data-theme="light"]) body::before{animation:none !important}
  html:root:not([data-theme="light"]) .card:hover>h2::after{animation:none !important}
}
@media (max-width:760px){
  html:root:not([data-theme="light"]) body::before{opacity:.18}
  html:root:not([data-theme="light"]) .cool-aurora{opacity:.9 !important}
}
/* ══ HF_SCIFI21:END ══ */

/* ══ HF_NOGRAY21：颜色不再依赖特效层（2026-09-19 应急）════════════════════
   维护者问「为什么是灰色的？」—— 查到根因：颜色**全部来自 JS 注入的背景特效层**，
   而上一批为防"打不开"加的**设备能力闸门**把他的设备判成 `lite`，
   于是隐藏了两层星野 + 一束光带 + 透视地平线、星云压到 0.25 ⇒ 背景近黑、只剩灰白卡面。
   本块把颜色改为**纯 CSS 固定色层**（不依赖任何 JS/Canvas 特效，任何设备都渲染）：
     · body 上叠三重径向渐变（青/紫/品红）+ 顶部辉光，永远在
     · 卡片/标题/表头继续保持 HF_SCIFI21 的角色色
   特效层只作**加成**，被闸门关掉也不影响"有色"。 */
html:root:not([data-theme="light"]) body{
  background:
    radial-gradient(1200px 700px at 10% -6%, rgba(34,211,238,.30), transparent 62%),
    radial-gradient(1000px 620px at 92% 2%, rgba(168,85,247,.26), transparent 60%),
    radial-gradient(900px 520px at 50% 108%, rgba(244,114,182,.16), transparent 64%),
    linear-gradient(180deg,#05070f 0%,#070b16 55%,#05070f 100%) !important;
  background-attachment:fixed !important}
html:root:not([data-theme="light"]) main{
  background:linear-gradient(180deg, rgba(34,211,238,.03), rgba(168,85,247,.035) 50%, rgba(244,114,182,.02));
  border-radius:20px}
/* lite 模式也别再把背景砍到没色：只降数量，不降颜色 */
html[data-hf20="lite"] .cool-nebula{opacity:.7 !important}
html[data-hf20="lite"] .cool-aurora{opacity:1 !important}
html[data-hf20="lite"] body::after{opacity:.30}
html[data-hf20="lite"] body::before{opacity:.22}
/* 卡片再厚一档色（在任何背景下都不显灰） */
html:root:not([data-theme="light"]) .card{
  background:linear-gradient(158deg, rgba(34,211,238,.15), rgba(168,85,247,.11) 46%, rgba(244,114,182,.06) 100%) !important;
  border-color:rgba(34,211,238,.30) !important}
html:root:not([data-theme="light"]) .card>h2{background:linear-gradient(90deg,#ffffff,#d9f6ff 34%, var(--acc) 72%, var(--acc2) 96%) !important;
  -webkit-background-clip:text !important; background-clip:text !important; color:transparent !important}
/* ══ HF_NOGRAY21:END ══ */

/* ════════════════════════════════════════════════════════════════════════
   HF_COOL21 · 「炫酷」= 对比 + 锐利 + 发光（2026-09-19）
   ────────────────────────────────────────────────────────────────────────
   维护者更正：「整个都是偏灰」「我说的是炫酷，不是炫彩」。
   **诊断**：大面积**低透明度青/紫径向渐变**叠在黑底上，混出来的平均色正好是
   灰蓝（每个像素都被"提亮一点点又去饱和"）⇒ 整页偏灰。上一批还在卡片上继续叠
   彩色半透明层，等于把泥搅得更匀。**炫彩 ≠ 炫酷。**
   **正解**：底色回到**纯正深黑**（去掉大片柔光），把视觉重量放在
   ① 锐利 1px 霓虹描边 + HUD 角标；② 高对比文字（近白，不再灰蓝）；
   ③ 局部发光（只发光在边、数字、竖条上，不做大面积光晕）；④ 等宽表格数字。
   ════════════════════════════════════════════════════════════════════════ */

/* ① 底色：深黑 + 只留极窄的顶部/底部霓虹边缘（不再铺满柔光） */
html:root:not([data-theme="light"]){
  --bg:#03050a; --bg2:#060910;
  --tx:#f6faff;      /* 近白，替掉灰蓝 */
  --mut:#c2d0e4;     /* 次要也提亮 */
  --mut2:#94a3b8;
  --acc:#22d3ee; --acc2:#8b5cf6;
  --line:rgba(34,211,238,.34); --line2:rgba(139,92,246,.42);
}
html:root:not([data-theme="light"]) body{
  background:
    radial-gradient(1400px 240px at 50% -8%, rgba(34,211,238,.22), transparent 70%),
    radial-gradient(1100px 200px at 50% 104%, rgba(139,92,246,.16), transparent 72%),
    #03050a !important;
  background-attachment:fixed !important}
html:root:not([data-theme="light"]) main{background:none !important}
/* 大面积极光/星云整体压暗，只当"底噪"，不再承担颜色 */
html:root:not([data-theme="light"]) .cool-aurora{opacity:.42 !important}
html:root:not([data-theme="light"]) .cool-nebula{opacity:.35 !important}
html[data-hf20="lite"] .cool-aurora{opacity:.42 !important}
html[data-hf20="lite"] .cool-nebula{opacity:.35 !important}

/* ② 卡片：**实心深黑面板** + 锐利霓虹描边 + HUD 四角（不再半透明彩色） */
html:root:not([data-theme="light"]) .card{
  background:linear-gradient(180deg,#080c15 0%,#04070d 100%) !important;
  border:1px solid var(--line) !important;
  border-radius:14px !important;
  box-shadow:0 0 0 1px rgba(3,5,10,.9), 0 0 22px -14px rgba(34,211,238,.55),
             0 1px 0 rgba(255,255,255,.05) inset !important;
  position:relative; overflow:hidden}
html:root:not([data-theme="light"]) .card::before{      /* HUD 四角亮线 */
  content:""; position:absolute; inset:7px; pointer-events:none; border-radius:9px;
  background:
    linear-gradient(var(--acc),var(--acc)) 0 0/16px 1px no-repeat,
    linear-gradient(var(--acc),var(--acc)) 0 0/1px 16px no-repeat,
    linear-gradient(var(--acc),var(--acc)) 100% 0/16px 1px no-repeat,
    linear-gradient(var(--acc),var(--acc)) 100% 0/1px 16px no-repeat,
    linear-gradient(var(--acc),var(--acc)) 0 100%/16px 1px no-repeat,
    linear-gradient(var(--acc),var(--acc)) 0 100%/1px 16px no-repeat,
    linear-gradient(var(--acc),var(--acc)) 100% 100%/16px 1px no-repeat,
    linear-gradient(var(--acc),var(--acc)) 100% 100%/1px 16px no-repeat;
  opacity:.8; transition:opacity .25s}
html:root:not([data-theme="light"]) .card:hover::before{opacity:1}
html:root:not([data-theme="light"]) .card:hover{border-color:var(--acc2) !important;
  box-shadow:0 0 0 1px rgba(3,5,10,.9), 0 0 30px -12px rgba(139,92,246,.85) !important}

/* ③ 文字对比拉起来：正文近白、次要提亮，别再灰蓝 */
html:root:not([data-theme="light"]) main,
html:root:not([data-theme="light"]) .card,
html:root:not([data-theme="light"]) td,
html:root:not([data-theme="light"]) li{color:var(--tx)}
html:root:not([data-theme="light"]) .read,
html:root:not([data-theme="light"]) .insight,
html:root:not([data-theme="light"]) .note2,
html:root:not([data-theme="light"]) .dp-stamp{color:#d7e3f4}

/* ④ 分区标题：白→青双色（去掉彩虹渐变），竖条发光 */
html:root:not([data-theme="light"]) .card>h2{
  background:linear-gradient(90deg,#ffffff 0%, #eafcff 46%, var(--acc) 100%) !important;
  -webkit-background-clip:text !important; background-clip:text !important; color:transparent !important;
  border-bottom:1px solid rgba(34,211,238,.28) !important}
html:root:not([data-theme="light"]) .card>h2::after{
  background:repeating-linear-gradient(90deg, rgba(34,211,238,.7) 0 1px, transparent 1px 12px) !important;
  height:5px !important; opacity:.55 !important}
html:root:not([data-theme="light"]) .card>h2::before{
  box-shadow:0 0 12px rgba(34,211,238,.95) !important}

/* ⑤ KPI：数字近白 + 青色发光（不做三色渐变） */
html:root:not([data-theme="light"]) .b18-val b{
  background:none !important; -webkit-background-clip:initial !important; background-clip:initial !important;
  color:#ffffff !important; text-shadow:0 0 22px rgba(34,211,238,.65), 0 0 3px rgba(255,255,255,.5);
  font-variant-numeric:tabular-nums; letter-spacing:-.03em}
html:root:not([data-theme="light"]) .b18-lab{color:var(--acc) !important}
html:root:not([data-theme="light"]) .b18-cell{
  background:linear-gradient(180deg,#0a0f1a,#060a12) !important;
  border:1px solid rgba(34,211,238,.30) !important;
  box-shadow:0 0 18px -12px rgba(34,211,238,.7) inset !important}

/* ⑥ 表格：深黑表头 + 青色文字 + 悬停霓虹行 */
html:root:not([data-theme="light"]) table th{
  background:linear-gradient(180deg,#0a1420,#070c14) !important; color:#7ff0ff !important;
  border-bottom:1px solid rgba(34,211,238,.45) !important; letter-spacing:.06em !important}
html:root:not([data-theme="light"]) td{border-bottom:1px solid rgba(148,163,184,.13) !important}
html:root:not([data-theme="light"]) tbody tr:nth-child(even) td{background:rgba(255,255,255,.018) !important}
html:root:not([data-theme="light"]) tbody tr:hover td{
  background:linear-gradient(90deg, rgba(34,211,238,.14), transparent 72%) !important;
  box-shadow:inset 2px 0 0 var(--acc)}
html:root:not([data-theme="light"]) tbody td:first-child{color:#7ff0ff !important}

/* ⑦ 标签栏/按钮：实心深黑 + 霓虹描边（选中＝发光，不是填色） */
html:root:not([data-theme="light"]) #tabs a{
  background:#070b13 !important; border:1px solid rgba(34,211,238,.28) !important; color:#cfe9ff !important}
html:root:not([data-theme="light"]) #tabs a.on{
  background:#0a1220 !important; color:#ffffff !important;
  border-color:var(--acc) !important;
  box-shadow:0 0 22px -6px rgba(34,211,238,.9), 0 0 0 1px rgba(34,211,238,.5) inset !important}
html:root:not([data-theme="light"]) .tbtn,
html:root:not([data-theme="light"]) .toolbar select,
html:root:not([data-theme="light"]) .toolbar label,
html:root:not([data-theme="light"]) .search input{
  background:#070b13 !important; border-color:rgba(34,211,238,.28) !important; color:#e6f4ff !important}
html:root:not([data-theme="light"]) .tbtn.primary,#print-btn{
  background:#0b1a24 !important; color:#7ff0ff !important; border-color:var(--acc) !important;
  box-shadow:0 0 20px -8px rgba(34,211,238,.9)}
html:root:not([data-theme="light"]) .onsalebar{
  background:#070b13 !important; border:1px solid rgba(34,211,238,.35) !important;
  border-left:3px solid var(--acc) !important; box-shadow:0 0 20px -12px rgba(34,211,238,.8)}
/* ══ HF_COOL21:END ══ */

/* ══ HF_NEON21：霓虹语言三处强化（2026-09-19 · 纯 CSS）════════════════════
   延续「炫酷 = 对比 + 锐利 + 发光」：不加大面积色，只加"边、线、辉光"。
   ① 图表霓虹：三大图表区（关数-期望曲线 / 数据可视化 / 异动雷达）的 SVG 折线加发光，
      并给图表容器加 HUD 边框（只作用于这三个区块，避免给几十个小图标加滤镜）。
   ② 卡片顶边霓虹条：每张卡片顶部一条渐变亮线（区分卡片、强化"仪表"感）。
   ③ KPI：数字下加发光基线 + 悬停扫光加强。
   成本控制：只用 filter(drop-shadow) 作用于 3 个区块 + 静态渐变，不引入毛玻璃。 */
html:root:not([data-theme="light"]) #s-parlay svg,
html:root:not([data-theme="light"]) #s-viz svg,
html:root:not([data-theme="light"]) #s-radar svg{
  filter:drop-shadow(0 0 5px rgba(34,211,238,.65)) drop-shadow(0 0 14px rgba(34,211,238,.28))}
html:root:not([data-theme="light"]) #s-parlay .card>div,
html:root:not([data-theme="light"]) #s-viz .card>div,
html:root:not([data-theme="light"]) #s-radar .card>div{position:relative}
/* ② 卡片顶边霓虹亮线 */
html:root:not([data-theme="light"]) .card::after{
  content:""; position:absolute; left:0; right:0; top:0; height:1px; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--acc) 18%, #ffffff 50%, var(--acc2) 82%, transparent);
  opacity:.75; animation:hf21-sheen22 6s ease-in-out infinite}
@keyframes hf21-sheen22{0%,100%{opacity:.45} 50%{opacity:1}}
/* ③ KPI：发光基线 + 更强的悬停辉光 */
html:root:not([data-theme="light"]) .b18-val{position:relative;padding-bottom:6px}
html:root:not([data-theme="light"]) .b18-val::after{
  content:""; position:absolute; left:0; right:22%; bottom:0; height:1px;
  background:linear-gradient(90deg, var(--acc), transparent); box-shadow:0 0 10px rgba(34,211,238,.9)}
html:root:not([data-theme="light"]) .b18-cell:hover{
  box-shadow:0 0 26px -8px rgba(34,211,238,.95), 0 0 0 1px rgba(34,211,238,.4) inset !important}
/* ④ 分区标题左侧竖条再加一档亮度；表头上下双线（仪表感） */
html:root:not([data-theme="light"]) .card>h2::before{
  width:4px; border-radius:3px;
  background:linear-gradient(180deg,#ffffff,var(--acc) 45%,var(--acc2)) !important}
html:root:not([data-theme="light"]) table thead th{box-shadow:inset 0 -1px 0 rgba(34,211,238,.55)}
@media (prefers-reduced-motion: reduce){
  html:root:not([data-theme="light"]) .card::after{animation:none !important; opacity:.7}
}
/* ══ HF_NEON21:END ══ */

/* ══ HF_LAYOUT21：布局 × 功能搭配（2026-09-19）════════════════════════════
   现状问题（40 个分区 / 每标签 4~10 块）：
     ① 工具条 14 个控件平铺混在一起 —— 筛选（联赛/在售/正EV/高信心/赔率/关注）、
        排序、重置、搜索、CSV 全挤一行，**没有功能分组**，找控件要逐个数；
     ② 分区标题里"标题 + 摘要 + 数据时间 + 锚点 + 展开"全在左，右侧大片空着，
        **元信息没有对齐到右**；
     ③ KPI 四格等宽 —— 主指标（今日场次）与其他三个权重相同，**没有 hero**；
     ④ 表格行高、数值列对齐不统一。
   本块只调"位置/分组/权重/节奏"，不删任何控件与内容。 */
html:root:not([data-theme="light"]) .toolbar{
  display:flex !important; flex-wrap:wrap; align-items:center; gap:8px 10px}
html:root:not([data-theme="light"]) .toolbar>span:first-child{order:0; padding-right:2px}
html:root:not([data-theme="light"]) .toolbar>select#f-lg{order:1}
html:root:not([data-theme="light"]) .toolbar>label{order:2}
html:root:not([data-theme="light"]) .toolbar>select#f-sort{order:8; margin-left:auto}
html:root:not([data-theme="light"]) .toolbar>#f-reset,
html:root:not([data-theme="light"]) .toolbar>button:not(.tbtn){order:9}
html:root:not([data-theme="light"]) .toolbar>.search{order:10}
/* 分组之间的细竖线（纯装饰，标出功能边界） */
html:root:not([data-theme="light"]) .toolbar>select#f-sort::before{content:""}
html:root:not([data-theme="light"]) .toolbar>label:first-of-type{
  border-left:1px solid rgba(34,211,238,.18); padding-left:10px; margin-left:2px}
html:root:not([data-theme="light"]) .toolbar>.search{
  border-left:1px solid rgba(34,211,238,.18); padding-left:10px; margin-left:2px}
@media (max-width:760px){
  html:root:not([data-theme="light"]) .toolbar>.search{order:20; flex:1 1 100%; margin-left:0; border-left:0; padding-left:0}
  html:root:not([data-theme="light"]) .toolbar>select#f-sort{margin-left:0}
}
/* ② 分区标题：元信息靠右对齐 */
html:root:not([data-theme="light"]) .card>h2{
  display:flex !important; flex-wrap:wrap; align-items:center; gap:4px 10px}
html:root:not([data-theme="light"]) .card>h2 .upd{margin-left:auto; text-align:right}
html:root:not([data-theme="light"]) .card>h2 .anchor{order:9}
html:root:not([data-theme="light"]) .card>h2 .sec-tgl{order:10}
/* ③ KPI：首个指标做 hero（更宽），其余等宽 */
html:root:not([data-theme="light"]) #b18-best-grid{
  grid-template-columns:1.45fr 1fr 1fr 1fr !important; gap:11px !important}
html:root:not([data-theme="light"]) #b18-best-grid>.b18-cell:first-child .b18-val b{font-size:42px !important}
@media (max-width:760px){
  html:root:not([data-theme="light"]) #b18-best-grid{grid-template-columns:1fr 1fr !important}
  html:root:not([data-theme="light"]) #b18-best-grid>.b18-cell:first-child{grid-column:1 / -1}
  html:root:not([data-theme="light"]) #b18-best-grid>.b18-cell:first-child .b18-val b{font-size:36px !important}
}
/* ④ 表格节奏：统一行高 + 数值列右对齐 + 表头与首行贴合 */
html:root:not([data-theme="light"]) table th,
html:root:not([data-theme="light"]) table td{padding-top:7px; padding-bottom:7px}
html:root:not([data-theme="light"]) table td:not(:first-child):not(:nth-child(2)){text-align:right}
html:root:not([data-theme="light"]) table th:not(:first-child):not(:nth-child(2)){text-align:right}
/* ⑤ 卡片之间：同标签内更紧的节奏、大区块之间更松（层次感） */
html:root:not([data-theme="light"]) main>section>.card+.card{margin-top:12px}
html:root:not([data-theme="light"]) main>section{margin-bottom:22px}
/* ══ HF_LAYOUT21:END ══ */

/* ════════════════════════════════════════════════════════════════════════
   HF_SCIFI21B · 去霓虹，回归「科幻感」（2026-09-19）
   ────────────────────────────────────────────────────────────────────────
   维护者：「你弄成科幻感的，别还弄成霓虹灯红灯区一样」。
   **诊断**：前几版把"炫酷"理解成了"多彩 + 大光晕 + 动态彩线"：
     青 + 紫 + 品红三色同时发光、卡片顶边跑彩虹、KPI 数字带 22px 光晕、
     图标/表格/按钮全是彩色描边 —— 这是**霓虹灯招牌**的语言，不是**指挥中心**的语言。
   **科幻感的语言**（本次全部按这个来）：
     · **单色冷调**：深黑石墨底 + 冰蓝**唯一**强调色 + 中性发丝线；去掉紫/品红/彩虹；
     · **精确而非耀眼**：1px 细线 + 极弱内高光；发光**只在功能性高亮**上（选中/悬停），
       半径 ≤ 10px、透明度 ≤ .45，不再有 20px 以上光晕；
     · **信息而非装饰**：网格、刻度、坐标感、等宽数字、留白节奏；静态优于闪动。
   ════════════════════════════════════════════════════════════════════════ */

/* ① 调色板：单色冷调（唯一强调色 = 冰蓝） */
html:root:not([data-theme="light"]){
  --bg:#05070c; --bg2:#080b12;
  --card:#0a0e15; --card2:#0d121b;
  --tx:#e9eef6; --mut:#a7b4c6; --mut2:#7d8a9c;
  --acc:#9fd0ff;            /* 冰蓝（去饱和、提亮，不再刺眼） */
  --acc2:#7fa6cc;           /* 次级＝同色系更暗一档，**不再用紫色/品红** */
  --acc3:var(--acc);
  --line:rgba(160,190,225,.16); --line2:rgba(160,190,225,.26);
}
/* 背景：几乎全黑，只留极弱的冷色边光（不做彩色大光斑） */
html:root:not([data-theme="light"]) body{
  background:
    radial-gradient(1300px 200px at 50% -6%, rgba(159,208,255,.10), transparent 72%),
    #05070c !important;
  background-attachment:fixed !important}
html:root:not([data-theme="light"]) .cool-aurora{opacity:.22 !important}
html:root:not([data-theme="light"]) .cool-nebula{opacity:.16 !important}
html[data-hf20="lite"] .cool-aurora{opacity:.22 !important}
html[data-hf20="lite"] .cool-nebula{opacity:.16 !important}
html:root:not([data-theme="light"]) #cool-stars{opacity:.45}

/* ② 卡片：石墨实心 + 中性发丝线 + 极弱内高光（去掉彩色描边与光晕） */
html:root:not([data-theme="light"]) .card{
  background:linear-gradient(180deg,#0a0e15,#070a10) !important;
  border:1px solid var(--line) !important;
  box-shadow:0 1px 0 rgba(255,255,255,.035) inset, 0 18px 40px -34px rgba(0,0,0,.9) !important}
html:root:not([data-theme="light"]) .card:hover{
  border-color:var(--line2) !important;
  box-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 0 0 1px rgba(159,208,255,.10) !important}
/* HUD 角标：细、暗、只有左上右下两个（克制） */
html:root:not([data-theme="light"]) .card::before{
  background:
    linear-gradient(rgba(200,222,245,.5),rgba(200,222,245,.5)) 0 0/14px 1px no-repeat,
    linear-gradient(rgba(200,222,245,.5),rgba(200,222,245,.5)) 0 0/1px 14px no-repeat,
    linear-gradient(rgba(200,222,245,.28),rgba(200,222,245,.28)) 100% 100%/14px 1px no-repeat,
    linear-gradient(rgba(200,222,245,.28),rgba(200,222,245,.28)) 100% 100%/1px 14px no-repeat !important;
  opacity:.7 !important; animation:none !important}
/* 卡片顶边：去掉跑动的彩虹线，改**静态**发丝线 + 左侧一小段冰蓝刻度 */
html:root:not([data-theme="light"]) .card::after{
  animation:none !important; opacity:1 !important; height:1px !important;
  background:linear-gradient(90deg, var(--acc) 0 46px, rgba(160,190,225,.14) 46px 100%) !important}

/* ③ 文字：中性高对比；冰蓝只做强调 */
html:root:not([data-theme="light"]) main,
html:root:not([data-theme="light"]) td,html:root:not([data-theme="light"]) li{color:var(--tx) !important}
html:root:not([data-theme="light"]) .read,html:root:not([data-theme="light"]) .insight,
html:root:not([data-theme="light"]) .note2,html:root:not([data-theme="light"]) .dp-stamp{color:#c8d4e4 !important}

/* ④ 分区标题：近白（去掉白→青渐变），竖条改细冰蓝、无光晕 */
html:root:not([data-theme="light"]) .card>h2{
  background:none !important; -webkit-background-clip:initial !important; background-clip:initial !important;
  color:#f2f6fc !important; border-bottom:1px solid var(--line) !important;
  letter-spacing:.01em !important; text-shadow:none !important}
html:root:not([data-theme="light"]) .card>h2::before{
  width:2px !important; background:var(--acc) !important; box-shadow:none !important; opacity:.9}
html:root:not([data-theme="light"]) .card>h2::after{
  background:repeating-linear-gradient(90deg, rgba(160,190,225,.35) 0 1px, transparent 1px 10px) !important;
  height:4px !important; opacity:.5 !important}

/* ⑤ KPI：白色数字 + 无光晕；冰蓝只用于标签与一条细基线 */
html:root:not([data-theme="light"]) .b18-val b{
  color:#ffffff !important; text-shadow:none !important;
  font-variant-numeric:tabular-nums; letter-spacing:-.02em}
html:root:not([data-theme="light"]) .b18-lab{color:var(--mut) !important; letter-spacing:.08em}
html:root:not([data-theme="light"]) .b18-cell{
  background:linear-gradient(180deg,#0b1018,#080c12) !important;
  border:1px solid var(--line) !important; box-shadow:0 1px 0 rgba(255,255,255,.03) inset !important}
html:root:not([data-theme="light"]) .b18-cell:hover{
  border-color:var(--line2) !important; box-shadow:0 0 0 1px rgba(159,208,255,.12) !important}
html:root:not([data-theme="light"]) .b18-val::after{
  background:linear-gradient(90deg, rgba(159,208,255,.75), transparent) !important; box-shadow:none !important}
html:root:not([data-theme="light"]) .b18-chip{
  color:var(--acc) !important; border-color:var(--line2) !important; background:rgba(159,208,255,.07) !important}

/* ⑥ 表格：中性表头 + 冰蓝只做底部一条线；去掉首列染色与彩色悬停 */
html:root:not([data-theme="light"]) table th{
  background:linear-gradient(180deg,#0b1018,#090d13) !important;
  color:#cfd9e8 !important; letter-spacing:.08em !important;
  border-bottom:1px solid var(--line2) !important; box-shadow:none !important}
html:root:not([data-theme="light"]) tbody tr:nth-child(even) td{background:rgba(255,255,255,.016) !important}
html:root:not([data-theme="light"]) tbody tr:hover td{
  background:rgba(159,208,255,.055) !important; box-shadow:inset 1px 0 0 rgba(159,208,255,.45) !important}
html:root:not([data-theme="light"]) tbody td:first-child{color:#dbe6f5 !important; font-weight:600}

/* ⑦ 标签栏/按钮/在售条：中性描边；选中＝浅底 + 一条冰蓝下划线（不发光） */
html:root:not([data-theme="light"]) #tabs a{
  background:#0a0e15 !important; border:1px solid var(--line) !important; color:#c3cfdf !important}
html:root:not([data-theme="light"]) #tabs a:hover{border-color:var(--line2) !important; color:#eaf2fc !important}
html:root:not([data-theme="light"]) #tabs a.on{
  background:#0e141d !important; color:#ffffff !important; border-color:var(--line2) !important;
  box-shadow:inset 0 -2px 0 var(--acc) !important}
html:root:not([data-theme="light"]) .tbtn,
html:root:not([data-theme="light"]) .toolbar select,
html:root:not([data-theme="light"]) .toolbar label,
html:root:not([data-theme="light"]) .search input{
  background:#0a0e15 !important; border-color:var(--line) !important; color:#dbe6f5 !important}
html:root:not([data-theme="light"]) .tbtn.primary,#print-btn{
  background:#0e141d !important; color:var(--acc) !important; border-color:var(--line2) !important;
  box-shadow:none !important}
html:root:not([data-theme="light"]) .onsalebar{
  background:#0a0e15 !important; border:1px solid var(--line) !important;
  border-left:2px solid var(--acc) !important; box-shadow:none !important}
html:root:not([data-theme="light"]) .pill,html:root:not([data-theme="light"]) .fchip{
  border-color:var(--line) !important; color:var(--mut) !important}

/* ⑧ 图表：几乎无光（只留一层极弱冷光），去掉双层霓虹 */
html:root:not([data-theme="light"]) #s-parlay svg,
html:root:not([data-theme="light"]) #s-viz svg,
html:root:not([data-theme="light"]) #s-radar svg{
  filter:drop-shadow(0 0 3px rgba(159,208,255,.22))}
/* ══ HF_SCIFI21B:END ══ */
