/* ===== TMSBook 全站基础样式（无 Node 运行时；tokens.css 先行加载）=====
   多端响应式硬规则：>1024 完整 / ≤1024 降列 / ≤820 汉堡 / ≤680 单列 / ≤380 压缩 */
* { box-sizing: border-box; margin: 0; padding: 0; }
[hidden] { display: none !important; }  /* 跨浏览器兜底：属性级隐藏永远生效（Safari 旧缓存 CSS 场景） */
html { overflow-x: clip; }
img, svg { max-width: 100%; }
body {
  font-family: -apple-system, "PingFang SC", "MiSans VF", "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", system-ui, sans-serif;
  /* 平台择优（2026-07-16）：Mac 苹方原生最优先（webfont 零下载）；Windows 无苹方自动落
     自托管 MiSans VF（unicode-range 按需切片）；雅黑仅作末位兜底。勿把 webfont 排到苹方前。 */
  color: var(--ink); background: var(--bg); font-size: var(--fs-body); line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 24px; }
/* 版心三档（v2 收敛，2026-07-19）：全站正文宽只允许这三种——.wrap 基线 / .read-col 长文阅读栏 /
   .form-col 表单窄栏。此前散落 12 种逐页硬编码 max-width（1180/940/900/860/840/820/792/760/640/560/520/420），
   页头与正文左缘常错位。新页一律用类，不要再写内联 max-width。 */
.read-col { max-width: 820px; margin-left: auto; margin-right: auto; }
.form-col { max-width: 420px; margin-left: auto; margin-right: auto; }
.form-col-wide { max-width: 560px; margin-left: auto; margin-right: auto; }

/* ---- 头部（吸顶玻璃 + 光谱脊；品牌 → 板块链接 → 搜索/账户簇）---- */
.spectrum-bar { height: 3px; background: var(--spectrum); }
/* ★F7 光谱阅读进度（覆于 header 光谱脊之上，静态脊作轨道） */
#tms-progress { position: fixed; top: 0; left: 0; height: 3px; width: 0; background: var(--spectrum);
  z-index: 99; filter: brightness(1.15); }
.site-header { position: sticky; top: 0; z-index: 50; background: var(--header-bg);
  backdrop-filter: blur(14px) saturate(1.4); -webkit-backdrop-filter: blur(14px) saturate(1.4);
  border-bottom: 1px solid var(--line); }
.nav { display: flex; align-items: center; gap: 26px; height: 66px; }
.brand { display: flex; align-items: center; gap: 10px; font-weight: 800; font-size: 18px;
  letter-spacing: -.3px; flex: none; }
.brand .brand-mark { flex: none; filter: drop-shadow(0 2px 5px rgba(11,58,99,.16)); }
.brand small { display: block; font-family: var(--mono); font-weight: 600; font-size: 9.5px;
  letter-spacing: .06em; color: var(--muted); margin-top: 1px; }
.brand b { font-weight: 800; line-height: 1; }
.navlinks { display: flex; align-items: center; gap: 3px; margin-left: 6px; font-weight: 600;
  color: var(--ink-2); font-size: 14px; }
.navlinks > a { position: relative; padding: 7px 9px; border-radius: 8px; transition: color .16s, background .16s; }
.navlinks > a::after { content: ""; position: absolute; left: 9px; right: 9px; bottom: 3px; height: 2px;
  border-radius: 2px; background: var(--spectrum); transform: scaleX(0); transform-origin: left;
  transition: transform .2s ease; }
.navlinks > a:hover { color: var(--ink); }
.navlinks > a:hover::after { transform: scaleX(1); }
.nav-tail { display: flex; align-items: center; gap: 10px; margin-left: auto; flex: none; }
.nav-ico { display: inline-flex; align-items: center; justify-content: center; width: 37px; height: 37px;
  border-radius: 10px; border: 1px solid var(--line); color: var(--ink-2); background: var(--card);
  transition: .16s; position: relative; }
.nav-ico:hover { color: var(--c-cool); border-color: var(--c-cool); }
.nav-ico svg { width: 17px; height: 17px; }
.nav-ico .dot { position: absolute; top: 6px; right: 7px; min-width: 15px; height: 15px; padding: 0 4px;
  border-radius: 999px; background: var(--c-hot); color: #fff; font-size: 10px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; border: 1.5px solid var(--card); }
.nav-cta { display: inline-flex; align-items: center; height: 40px; padding: 0 16px; border-radius: 10px;
  font-weight: 700; font-size: 13.5px; color: #fff; background: linear-gradient(90deg, var(--c-cool), var(--c-hot));
  box-shadow: 0 5px 15px rgba(230,57,74,.24); transition: .18s; white-space: nowrap; }
.nav-cta:hover { filter: brightness(1.06); transform: translateY(-1px); }
.nav-user { font-weight: 600; color: var(--ink-2); font-size: 13.5px; padding: 7px 4px; max-width: 8em;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-user:hover { color: var(--c-cool); }
.menu-btn { display: none; flex-direction: column; gap: 4px; background: none; border: 0;
  cursor: pointer; padding: 8px; }
.menu-btn span { width: 22px; height: 2.5px; background: var(--ink); border-radius: 2px; transition: .2s; }

/* ---- 内页大气页头带（呼应首页深色 Hero，全站内页统一开场；full-bleed 深色）---- */
.page-hero { position: relative; overflow: hidden; color: var(--on-dark); margin-bottom: 30px;
  margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw);
  background: radial-gradient(900px 380px at 84% -30%, rgba(34,184,207,.20), transparent 60%),
    radial-gradient(640px 340px at 4% 8%, rgba(230,57,74,.10), transparent 55%),
    linear-gradient(150deg, var(--dark-1), var(--dark-2) 74%, #0a2c4d); }
/* 极淡蓝图网格，只在深底 hero 上叠一层工程质感 */
.page-hero::after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size: 34px 34px; mask-image: radial-gradient(120% 120% at 70% -10%, #000 30%, transparent 78%); }
.page-hero::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--spectrum); z-index: 2; }
.page-hero .in { max-width: var(--maxw); margin: 0 auto; padding: 46px 24px 48px; position: relative; z-index: 1; }
.page-hero .ph-crumb { font-size: 13px; color: var(--on-dark-2); margin-bottom: 14px; display: flex; gap: 8px; flex-wrap: wrap; }
.page-hero .ph-crumb a { color: var(--on-dark-2); }
.page-hero .ph-crumb a:hover { color: var(--on-dark); }
.page-hero .ph-kick { display: inline-flex; align-items: center; gap: 7px; font-family: var(--mono); font-size: 11px;
  letter-spacing: .2em; text-transform: uppercase; color: var(--on-dark-accent); font-weight: 700; }
.page-hero .ph-kick::before { content: ""; width: 16px; height: 2px; border-radius: 2px; background: var(--spectrum); }
.page-hero h1 { font-size: var(--fs-h1); font-weight: 850; letter-spacing: -.6px; margin: 11px 0 0; color: #fff; line-height: 1.12; }  /* v2：回接流式字阶（桌面上限 40px 与原值等效） */
.page-hero .ph-sub { color: var(--on-dark-2); font-size: 15px; margin-top: 12px; max-width: 62ch; line-height: 1.65; }
.page-hero .ph-tag { display: inline-block; margin-left: 12px; font-size: 13px; font-weight: 600; vertical-align: middle;
  background: rgba(255,255,255,.13); color: var(--on-dark); padding: 3px 12px; border-radius: 999px; letter-spacing: normal; }
.page-hero .ph-stats { display: flex; gap: 34px; margin-top: 22px; flex-wrap: wrap; }
.page-hero .ph-stats b { font-family: var(--mono); font-size: 26px; font-weight: 800; color: var(--on-dark); font-variant-numeric: tabular-nums; display: block; line-height: 1; }
.page-hero .ph-stats span { font-size: 12px; color: var(--on-dark-2); margin-top: 6px; display: block; }
@media (max-width: 680px) {
  .page-hero .in { padding: 30px 16px 32px; }
  .page-hero h1 { font-size: 28px; }
  .page-hero .ph-stats { gap: 22px; margin-top: 16px; }
  .page-hero .ph-stats b { font-size: 22px; }
}

/* ---- 页脚（深墨冷底，呼应首页深色 Hero 收束全站；4 列：品牌 + 产品/企业/关于）---- */
.site-footer { position: relative; color: var(--on-dark-3); background: var(--ink-deep);
  font-size: var(--fs-sm); padding: 54px 0 28px; margin-top: 72px; }
.site-footer::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--spectrum); opacity: .9; }
.footer-cols { display: grid; grid-template-columns: 1.6fr repeat(3, 1fr); gap: 30px; }
.footer-brand .brand { font-size: 17px; color: var(--on-dark); }
.footer-brand .brand span, .footer-brand .brand b { color: var(--on-dark); }
.footer-brand .brand small { color: var(--on-dark-3); }
.footer-brand p { max-width: 300px; margin-top: 12px; line-height: 1.75; color: var(--on-dark-3); }
.site-footer h5 { color: var(--on-dark); font-size: 13.5px; margin-bottom: 13px; letter-spacing: .01em; }
.site-footer .footer-cols a { display: block; padding: 4px 0; color: var(--on-dark-3); }
.site-footer .footer-cols a:hover { color: var(--on-dark); }
.footer-bot { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px;
  border-top: 1px solid var(--hair-dark); margin-top: 36px; padding-top: 20px; font-size: 12px; color: var(--on-dark-3); }
@media (max-width: 820px) { .footer-cols { grid-template-columns: 1fr 1fr; gap: 22px; } }
@media (max-width: 480px) { .footer-cols { grid-template-columns: 1fr; } }

/* ---- 基础组件 ---- */
h1 { font-size: var(--fs-h1); letter-spacing: -.5px; }
h2 { font-size: var(--fs-h2); letter-spacing: -.3px; }
h3 { font-size: var(--fs-h3); }
.btn { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px;
  border-radius: 10px; padding: 10px 18px; cursor: pointer; border: 0; transition: .18s;
  min-height: 44px; }                      /* 触控目标 ≥44px */
.btn-primary { background: linear-gradient(90deg, var(--c-cool), var(--c-hot)); color: #fff;
  box-shadow: 0 6px 18px rgba(230,57,74,.25); }
.btn-primary:hover { filter: brightness(1.06); transform: translateY(-1px); }
.btn-ghost { background: transparent; color: var(--c-cool); border: 1.5px solid var(--line); }
.btn-ghost:hover { border-color: var(--c-cool); }
.btn:disabled { opacity: .6; cursor: progress; transform: none; filter: none; }

.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow); padding: 22px; }

.pill { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600;
  padding: 4px 11px; border-radius: 999px; }
.pill-free { background: var(--ok-soft); color: var(--ok); }
.pill-member { background: var(--member-soft); color: var(--member); }
.pill-seat { background: var(--hot-soft); color: var(--danger); }
.pill-warn { background: var(--warm-soft); color: var(--warn-ink); }  /* 待办/草稿/未结算等中性警示——勿再挪用 pill-member（会员语义专用） */

.alert { border-radius: var(--radius-sm); padding: 12px 16px; font-size: 14px;
  border: 1px solid var(--line); background: var(--soft); }
.alert-warn { border-color: var(--warm-soft); background: var(--warm-soft); }
.alert-danger { border-color: var(--hot-soft); background: var(--hot-soft); }

/* 空态：全站统一（居中卡 + 图标 + 标题 + 可选副文/CTA）——勿再各页写左对齐 .alert 当空态 */
.empty-state { border: 1px dashed var(--line); border-radius: var(--radius); background: var(--soft);
  padding: 42px 24px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 11px; }
.empty-state .es-ic { width: 52px; height: 52px; border-radius: 14px; display: inline-flex; align-items: center;
  justify-content: center; background: var(--cool-soft); color: var(--c-cool); }
.empty-state .es-ic svg { width: 26px; height: 26px; }
.empty-state h3 { margin: 0; font-size: 17px; font-weight: 750; color: var(--ink); }
.empty-state p { margin: 0; color: var(--muted); font-size: 13.5px; max-width: 46ch; line-height: 1.6; }
.empty-state p a { color: var(--c-cool); font-weight: 600; }
.empty-state .btn { margin-top: 4px; }

.table-wrap { overflow-x: auto; }          /* 宽表容器内滚动，body 永不横向滚动 */
table.tbl { width: 100%; border-collapse: collapse; font-size: 14px; background: var(--card); }
.tbl th, .tbl td { text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--line); }
.tbl th { color: var(--muted); font-size: 12.5px; }

.field { display: flex; flex-direction: column; gap: 6px; }
.field label { font-size: 13px; font-weight: 600; color: var(--ink-2); }
.field input, .field select, .field textarea { border: 1.5px solid var(--line);
  border-radius: 10px; padding: 11px 14px; font-size: 14px; outline: none; min-height: 44px;
  background: var(--card); color: var(--ink); }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--c-cool); }

.breadcrumb { display: flex; gap: 8px; flex-wrap: wrap; font-size: 13px; color: var(--muted); }
.breadcrumb a:hover { color: var(--c-cool); }

.pagination { display: flex; gap: 8px; }
.pagination a, .pagination span { min-width: 36px; min-height: 36px; display: inline-flex;
  align-items: center; justify-content: center; border: 1px solid var(--line);
  border-radius: 8px; font-size: 13.5px; }
.pagination .cur { background: var(--c-cool); color: #fff; border-color: var(--c-cool); }

/* ---- 原理图交互（M2b-U2 / 模式拆解 v1.1：色语义强制着色+流向动画+双向联动）---- */
.diagram-wrap svg { max-width: 100%; height: auto; display: block; }
.diagram-wrap .seg-dim { opacity: .12; transition: opacity .25s; }
.diagram-wrap .node-hot { cursor: pointer; }
.diagram-wrap .node-hot:hover, .diagram-wrap .node-glow { filter: brightness(1.25) drop-shadow(0 0 4px var(--c-cool)); }
.mode-btn { min-height: 36px; padding: 7px 14px; font-size: 13px; border-radius: 999px; }
.mode-btn.on { background: linear-gradient(90deg, var(--c-cool), var(--c-hot)); color: #fff; border-color: transparent; }
/* 流向动画（§2.1）：由 JS rAF 驱动 stroke-dashoffset **DOM 属性**（architecture_page.html）。
   勿改回 CSS keyframes——动画 SVG stroke-dashoffset 的 CSS 属性在 Safari/WebKit 不生效
   （跨浏览器实测修复 2026-07）；属性驱动全引擎一致，reduced-motion 在 JS 侧判断。 */
/* 图例（色语义全站唯一） */
.circuit-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; color: var(--muted); margin: 8px 0 2px; }
.circuit-legend i { display: inline-block; width: 18px; height: 3px; border-radius: 2px; vertical-align: middle; margin-right: 5px; }
/* 阀态表↔图 双向联动 */
#state-tbl tr.hl td { background: var(--cool-soft); }
#state-tbl tr[data-node] { cursor: default; }
/* 模式 Diff（A2）：基准模式按钮 / 退出回路幽灵态 / 未变阀位弱化 */
.mode-btn.diff-base { outline: 2px dashed var(--c-warm); outline-offset: 2px; }
.diagram-wrap .seg-was { opacity: .3; stroke-dasharray: 3 6; }   /* A有B无=切换后退出的回路 */
.diagram-wrap .seg-shut { opacity: .28; }   /* 回路激活但被阀关断=半暗(区别于灭回路 .12)，阀阵模式差异可见 */
#state-tbl tr.diff-same td { opacity: .55; }
/* 6 节讲解骨架 */
.mode-prose h5 { margin: 14px 0 4px; font-size: 13px; color: var(--ink-2); }
.mode-prose p { font-size: 13.5px; margin: 0 0 6px; line-height: 1.75; }
.mode-facts { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 2px; }
.mode-facts .chip { font-size: 12px; }

/* ---- 剖析深化：爆炸图热点（M2b-U3）---- */
.fig-hotwrap { position: relative; margin: 0 0 16px; }
.fig-hotwrap .fig-img { max-width: 100%; height: auto; display: block; }
.hs-dot { position: absolute; transform: translate(-50%, -50%); width: 24px; height: 24px;
  border-radius: 50%; border: 2px solid #fff; background: var(--c-cool); color: #fff;
  font-size: 12px; line-height: 1; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.35); }
.hs-dot:hover { filter: brightness(1.15); }
.hs-dot.on { background: var(--c-hot); }

/* ===== 共享组件：光谱化 UI 原语（各 app 复用，勿在页内重造轮子）=====
   全部令牌驱动，自动跟随明暗；命名通用（不绑定某板块业务）。 */
.mono { font-family: var(--mono); }
/* ★v2 tms-icons 内联图标（templates/core/_icons.html sprite）：1em 随字号、currentColor 随文字色。
   用法：<svg class="tms-ic"><use href="#i-lock"/></svg>；全站禁 emoji 当图标。
   尺寸规则（2026-07-16 定）：.tms-ic 类=canonical，靠本规则 1em 定尺即可（Manifest 指纹已防旧 CSS）；
   仅两类例外必须写显式 width/height 属性：①初始 hidden、JS 揭示的容器（如 ⌘K 面板）②不吃 app.css 的独立页/vendor 域。 */
.tms-ic { width: 1em; height: 1em; vertical-align: -0.135em; flex: none; }
/* 光谱渐变文字（大数字/关键词点睛，全站复用，勿各页手写 -webkit-background-clip） */
.spectrum-text { background: var(--spectrum); -webkit-background-clip: text; background-clip: text;
  color: transparent; -webkit-text-fill-color: transparent; }
/* 进场揭示：滚动进入视口 fade-up（JS 加 .in；base.html 全站挂载，尊重 reduced-motion） */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1); will-change: opacity, transform; }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } }

/* 胶囊标签族：分类 / 内容维度 / 难度等级 */
/* white-space 用 normal 而非 nowrap：短标签本来就不会换行，nowrap 只在装长文本时起反作用——
   课程大纲的标准名 chip（如"GB 38031（…热失控与热扩散）"）曾因此冲出手机屏。
   max-width 兜底：chip 任何情况下不得宽过容器。 */
.chip { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600;
  padding: 2px 9px; border-radius: 7px; background: var(--soft); color: var(--muted);
  border: 1px solid var(--line); white-space: normal; max-width: 100%; }
.chip-cat { background: var(--cool-soft); color: var(--c-cool); border-color: transparent; }
.chip-role { color: var(--ink-2); }
.chip-warn { background: var(--warm-soft); color: var(--warn-ink); border-color: transparent; }  /* AI 草稿待审等警示（走 warn 令牌，与会员琥珀语义分离） */
/* 难度/等级：L1 冷 → L2 温 → L3 热（温度即难度）*/
.chip-lv { font-weight: 650; border-color: transparent; }
.chip-lv.l1 { background: var(--cool-soft); color: var(--c-cool); }
.chip-lv.l2 { background: var(--warm-soft); color: var(--c-warm); }
.chip-lv.l3 { background: var(--hot-soft);  color: var(--c-hot); }

/* 热度/进度条：想听众筹、热帖、指标进度通用 */
.heatbar { height: 8px; border-radius: 5px; background: var(--line); overflow: hidden; }
.heatbar > i { display: block; height: 100%; border-radius: 5px;
  background: linear-gradient(90deg, var(--c-cool), var(--c-cyan)); }
.heatbar.hot > i { background: linear-gradient(90deg, var(--c-warm), var(--c-hot)); }

/* 板块子导航：各 app 二级页共用一套观感（v2：高亮色吃板块温标 --sect，未设则冷媒蓝） */
.subnav { display: flex; flex-wrap: wrap; gap: 4px; margin: 14px 0 18px;
  border-bottom: 1px solid var(--line); }
.subnav a { padding: 8px 14px; font-size: 13.5px; font-weight: 600; color: var(--muted);
  border-bottom: 2px solid transparent; margin-bottom: -1px; min-height: 40px;
  display: inline-flex; align-items: center; }
.subnav a:hover { color: var(--sect, var(--c-cool)); }
.subnav a.on { color: var(--sect, var(--c-cool)); border-bottom-color: var(--sect, var(--c-cool)); }

/* ★v2 板块温标挂载类：容器挂 .sect-<板块> 后，其内 subnav 高亮/.mt-accent/.sec-head 眉标自动取温标色 */
.sect-insight{--sect:var(--sect-insight)} .sect-catalog{--sect:var(--sect-catalog)}
.sect-arch{--sect:var(--sect-arch)} .sect-kb{--sect:var(--sect-kb)}
.sect-news{--sect:var(--sect-news)} .sect-org{--sect:var(--sect-org)}
.sect-tools{--sect:var(--sect-tools)} .sect-academy{--sect:var(--sect-academy)}
.sect-events{--sect:var(--sect-events)} .sect-community{--sect:var(--sect-community)}
.sect-member{--sect:var(--sect-member)}

/* ★v2 章节头（上收自 ac-kicker/tk-kicker/sb-kick/mp-kicker 四处同构）：
   眉标(mono 宽字距+光谱短杠) + 标题 + 副文；.center 居中版 / .row 两端对齐版 */
.sec-head { margin: 0 0 18px; }
.sh-kick { display: inline-flex; align-items: center; gap: 9px; font-family: var(--mono);
  font-size: 11.5px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
  color: var(--sect, var(--c-cool)); }
.sh-kick::before { content: ""; width: 18px; height: 2px; border-radius: 2px; background: var(--spectrum); }
.sec-head h1, .sec-head h2 { margin: 10px 0 6px; letter-spacing: -.4px; }
.sec-head .sh-sub { color: var(--muted); font-size: 14px; max-width: 64ch; line-height: 1.7; }
.sec-head.center { text-align: center; }
.sec-head.center .sh-kick { justify-content: center; }
.sec-head.center .sh-sub { margin-left: auto; margin-right: auto; }

/* ★v2 光谱脊原语（上收自 ac-band/tk-card/hm-band 各自的 ::before） */
.spectrum-top { position: relative; }
.spectrum-top::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: var(--spectrum); z-index: 1; }

/* ★v2 光谱刻度尺（规范篇 .ruler：渐变条 + mono 标签行） */
.ruler .bar { height: 8px; border-radius: 99px; background: var(--spectrum); position: relative; }
.ruler .lbls { display: flex; justify-content: space-between; font-family: var(--mono);
  font-size: 10px; letter-spacing: .08em; color: var(--muted); margin-top: 6px; }

/* ★v2 图标胶囊（上收自 ac-ico/tk-ico/hm-ic/es-ic 四变体；配 tms-icons） */
.icx { width: 44px; height: 44px; border-radius: 12px; display: inline-flex; align-items: center;
  justify-content: center; flex: none; background: var(--cool-soft); color: var(--c-cool); }
.icx svg { width: 22px; height: 22px; }
.icx.cyan { background: var(--cyan-soft); color: var(--c-cyan); }
.icx.warm { background: var(--warm-soft); color: var(--member); }
.icx.hot  { background: var(--hot-soft);  color: var(--c-hot); }
.icx.ok   { background: var(--ok-soft);   color: var(--ok); }

/* 状态机条：课题生命周期、订单流转、审核流转通用 */
.statemachine { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.sm-node { padding: 6px 12px; border-radius: 8px; border: 1px solid var(--line);
  background: var(--card); font-size: 12px; font-weight: 600; color: var(--muted); white-space: nowrap; }
.sm-node.on { background: var(--c-cool); color: #fff; border-color: var(--c-cool); }
.sm-node small { display: block; font-weight: 400; font-size: 9.5px; opacity: .85; font-family: var(--mono); }
.sm-arrow { color: var(--muted); font-size: 13px; }

/* EasyMDE 富文本编辑器暗色适配（社区发帖/回帖用；:root 提权以压过 extra_head 里后加载的 vendored 主题）
   v2 双通道：系统暗色（未手动指定 light 时）+ 手动 [data-theme=dark]——两块保持逐行一致 */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .editor-toolbar { background: var(--soft); border-color: var(--line); }
  :root:not([data-theme="light"]) .editor-toolbar button { color: var(--ink-2); }
  :root:not([data-theme="light"]) .editor-toolbar button:hover, :root:not([data-theme="light"]) .editor-toolbar button.active { background: var(--card); border-color: var(--line); }
  :root:not([data-theme="light"]) .editor-toolbar i.separator { border-left-color: var(--line); border-right-color: var(--line); }
  :root:not([data-theme="light"]) .EasyMDEContainer .CodeMirror { background: var(--card); color: var(--ink); border-color: var(--line); }
  :root:not([data-theme="light"]) .EasyMDEContainer .CodeMirror-cursor { border-color: var(--ink); }
  :root:not([data-theme="light"]) .editor-preview, :root:not([data-theme="light"]) .editor-preview-side { background: var(--soft); color: var(--ink); }
  :root:not([data-theme="light"]) .editor-statusbar { color: var(--muted); }
}
:root[data-theme="dark"] .editor-toolbar { background: var(--soft); border-color: var(--line); }
:root[data-theme="dark"] .editor-toolbar button { color: var(--ink-2); }
:root[data-theme="dark"] .editor-toolbar button:hover, :root[data-theme="dark"] .editor-toolbar button.active { background: var(--card); border-color: var(--line); }
:root[data-theme="dark"] .editor-toolbar i.separator { border-left-color: var(--line); border-right-color: var(--line); }
:root[data-theme="dark"] .EasyMDEContainer .CodeMirror { background: var(--card); color: var(--ink); border-color: var(--line); }
:root[data-theme="dark"] .EasyMDEContainer .CodeMirror-cursor { border-color: var(--ink); }
:root[data-theme="dark"] .editor-preview, :root[data-theme="dark"] .editor-preview-side { background: var(--soft); color: var(--ink); }
:root[data-theme="dark"] .editor-statusbar { color: var(--muted); }

/* ★v2 明暗切换钮（base.html nav-tail；默认亮色态显月亮=切去暗色，暗色态显太阳=切回亮色） */
.theme-btn { cursor: pointer; }
.theme-btn .ic-sun { display: none; }
.theme-btn .ic-moon { display: block; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .theme-btn .ic-sun { display: block; }
  :root:not([data-theme="light"]) .theme-btn .ic-moon { display: none; }
}
:root[data-theme="dark"] .theme-btn .ic-sun { display: block; }
:root[data-theme="dark"] .theme-btn .ic-moon { display: none; }
:root[data-theme="light"] .theme-btn .ic-sun { display: none; }
:root[data-theme="light"] .theme-btn .ic-moon { display: block; }

/* ---- 阅读排版（.prose：长文正文的唯一口径；标准解读/失效案例/专题等阅读页共用）
   用法：<div class="prose">{{ 富文本或 StreamField }}</div>；容器挂 .sect-<板块> 则强调色随板块温标。
   注：news_page 有一份更早的等价私有实现（.nw-body），已定稿不动；新阅读页一律用本组件，勿再页级自造。 */
/* ⚠ 2026-08-07：正文 15.5px → 17px（用户实报讲义「阅读体验糟糕」）。
   15.5px 在 820 版心里一行约 42 个汉字、且行高 1.95 已经很松——问题不在行距在字号本身。
   行高同步 1.95 → 1.85：字号涨了之后再保持 1.95 会把段落拉散。
   ⛔ 这是全站长文口径（standard/case/topic_article/讲义 都吃这一条），改完要三端复验。 */
.prose { font-size: 17px; line-height: 1.85; color: var(--ink); }
.prose > :first-child { margin-top: 0; }
.prose p { margin: 0 0 1.15em; }
.prose h2, .prose h3, .prose h4 { line-height: 1.4; margin: 1.6em 0 .6em; letter-spacing: -.2px; }
.prose h2 { font-size: 22.5px; }
.prose h3 { font-size: 18.5px; }
.prose h4 { font-size: 16px; color: var(--ink-2); }
.prose a { color: var(--sect, var(--c-cool)); border-bottom: 1px solid var(--cool-soft); }
.prose a:hover { border-bottom-color: currentColor; }
.prose img { max-width: 100%; height: auto; border-radius: var(--radius-sm); }
.prose figure { margin: 1.4em 0; }
.prose figcaption { font-size: 12.5px; color: var(--muted); margin-top: 7px; text-align: center; }
.prose blockquote { border-left: 3px solid var(--sect, var(--line)); padding: 2px 0 2px 14px;
  color: var(--muted); margin: 1.2em 0; }
.prose ul, .prose ol { padding-left: 1.4em; margin: 0 0 1em; }
.prose li { margin-bottom: .35em; }
.prose code { font-family: var(--mono); font-size: .88em; background: var(--soft);
  padding: 2px 6px; border-radius: 5px; }
.prose pre { background: var(--soft); border: 1px solid var(--line); border-radius: var(--radius-sm);
  padding: 14px 16px; overflow-x: auto; }        /* 代码块自滚，不撑破页面 */
.prose pre code { background: none; padding: 0; }
.prose hr { border: 0; border-top: 1px solid var(--line); margin: 2em 0; }
.prose table { width: 100%; border-collapse: collapse; margin: 1.2em 0; font-size: 14px; }
.prose thead th { background: var(--soft); font-weight: 700; text-align: left; }
.prose th, .prose td { border: 1px solid var(--line); padding: 8px 11px; }
/* 宽表格在窄屏自滚（模板把 table 包进 .prose-scroll 即可），页面本体绝不横向溢出 */
.prose-scroll { overflow-x: auto; margin: 1.2em 0; }
.prose-scroll table { margin: 0; }
@media (max-width: 680px) { .prose { font-size: 15px; line-height: 1.85; } .prose h2 { font-size: 18.5px; } }

/* ---- 断点 ---- */
@media (max-width: 1024px) { :root { --maxw: 940px; } }
@media (max-width: 1024px) { .navlinks { gap: 0; margin-left: 2px; } .navlinks > a { padding: 7px 7px; } .nav { gap: 16px; } }
/* 汉堡断点 ≤960（2026-07-15 由 820 提前：10 导航项+主题钮后 821-960 区间在宽字形系统字体
   （如 Windows 雅黑）下会挤爆导致 CTA 换行/裁切；提前收抽屉仍满足「≤820 必须汉堡」硬规则） */
@media (max-width: 960px) {
  .nav { position: relative; gap: 12px; }
  .menu-btn { display: flex; order: 3; }
  .nav-tail { margin-left: auto; }
  .navlinks { position: absolute; top: calc(100% + 1px); left: calc(50% - 50vw); width: 100vw; flex-direction: column;
    gap: 0; margin-left: 0; align-items: stretch; background: var(--card); border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line); box-shadow: var(--shadow); padding: 8px 0; display: none; z-index: 60; }
  .navlinks.open { display: flex; }
  .navlinks > a { padding: 13px 24px; border-radius: 0; }
  .navlinks > a::after { display: none; }
}
@media (max-width: 680px) {
  .wrap { padding: 0 16px; }
  :root { --fs-h1: 26px; --fs-h2: 21px; }
  .nav { height: 60px; }
  .brand small { display: none; }
  .nav-cta { padding: 0 13px; font-size: 13px; }
}
/* ≤440 桥接（2026-07-16）：381–440 区间（iPhone 12–15=390 / Pro Max=430 等主流机宽）此前用全尺寸
   头部元件挤不下致 ~10px 横向溢出——提前压缩图标/间距/CTA（不隐 CTA），把溢出收到 0 */
@media (max-width: 440px) {
  .nav-tail { gap: 6px; } .nav-ico { width: 34px; height: 34px; }
  .nav-user { max-width: 4.5em; } .nav-cta { padding: 0 12px; font-size: 12.5px; } }
@media (max-width: 380px) { :root { --fs-h1: 23px; } .nav-cta { display: none; }
  .nav-user { max-width: 4em; } .nav-tail { gap: 5px; } .nav-ico { width: 33px; height: 33px; }
  .brand { font-size: 16px; } }

/* ── 工程百科术语高亮悬停卡（kb_tags.highlight_terms） ── */
.kb-term { border-bottom: 1px dotted var(--c-cool); cursor: help; position: relative; }
.kb-pop {
  display: none; position: absolute; left: 0; top: calc(100% + 6px); z-index: 50;
  width: min(300px, 82vw); padding: 11px 13px; background: var(--card); color: var(--ink);
  border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-lg);
  font-size: 13px; line-height: 1.6; font-weight: 400; white-space: normal; text-align: left;
}
.kb-pop b { display: block; margin-bottom: 3px; color: var(--ink); }
.kb-pop a { display: inline-block; margin-top: 7px; color: var(--c-cool); text-decoration: none; }
.kb-term:hover > .kb-pop, .kb-term:focus > .kb-pop, .kb-term:focus-within > .kb-pop { display: block; }
@media (max-width: 680px) {
  /* 手机：定位为底部浮层，避免溢出与遮挡 */
  .kb-pop { position: fixed; left: 10px; right: 10px; bottom: 12px; top: auto; width: auto; z-index: 90; }
}

/* ===== 工程工具箱（M3.5 重设计：浅色现代，对齐 insight/catalog 全站风格）=====
   白卡 + spectrum 大数字 + KPI 网格；复用这些原语，勿页级自造 CSS。 */

/* 工具卡网格：白卡 + spectrum 左脊 */
.tool-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
.tool-card { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 24px 24px 22px;
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--card);
  box-shadow: var(--shadow); transition: transform .2s, box-shadow .2s, border-color .2s; overflow: hidden; }
.tool-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); border-color: var(--c-cool); }
.tool-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--spectrum); }
.tool-card .ic { font-size: 32px; line-height: 1; }
.tool-card p { color: var(--muted); font-size: 13.5px; }
.tool-card .go { margin-top: auto; color: var(--c-cool); font-weight: 700; font-size: 13.5px; padding-top: 8px; }

/* 结果头卡：判定徽章 + 守护率一行 */
.result-head { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; }

/* 判定徽章（soft pill，浅底按 level 着色） */
.verdict { display: inline-flex; align-items: center; gap: 8px; font-weight: 800; font-size: 20px;
  padding: 8px 18px; border-radius: 999px; }
.verdict.ok   { background: var(--ok-soft);   color: var(--ok); }
.verdict.warn { background: var(--warm-soft); color: var(--c-warm); }
.verdict.fail { background: var(--hot-soft);  color: var(--c-hot); }
.verdict.na   { background: var(--soft);      color: var(--muted); }

/* 守护率大数字（spectrum 渐变字，对齐 insight 的市场规模数字） */
.guard { text-align: right; }
.guard b { display: block; font-family: var(--mono); font-size: 38px; font-weight: 800; line-height: 1;
  background: var(--spectrum); -webkit-background-clip: text; background-clip: text; color: transparent; }
.guard span { font-size: 12px; color: var(--muted); }

/* KPI 指标砖：白卡 + 大号数字（level 着色，一眼可扫）
   v2 增强：tabular 数字对齐 / .s 副行 / .mt-accent 温标左缘（吃 --mt 或板块 --sect） */
.metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(142px, 1fr)); gap: 12px; }
.metric-tile { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 15px 16px; }
.metric-tile .v { font-family: var(--mono); font-size: 24px; font-weight: 800; line-height: 1.1; color: var(--ink); font-variant-numeric: tabular-nums; }
.metric-tile .s { font-size: 11.5px; color: var(--muted); margin-top: 3px; }
.metric-tile .s b { color: var(--ok); }
.metric-tile.mt-accent { border-left: 3px solid var(--mt, var(--sect, var(--c-cool))); }
.metric-tile .v small { font-size: 12px; color: var(--muted); font-weight: 600; }
.metric-tile .k { font-size: 12px; color: var(--muted); margin-top: 4px; }
.metric-tile.ok   .v { color: var(--c-cool); }
.metric-tile.warn .v { color: var(--c-warm); }
.metric-tile.fail .v { color: var(--c-hot); }

/* 诊断逐项 level 圆点 */
.diag-lv { display: inline-flex; align-items: center; gap: 6px; font-weight: 650; font-size: 13px; white-space: nowrap; }
.diag-lv::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; flex: none; }
.diag-lv.ok   { color: var(--ok); }
.diag-lv.warn { color: var(--c-warm); }
.diag-lv.fail { color: var(--c-hot); }
.diag-lv.na   { color: var(--muted); }

/* 上传落区 */
.dropzone { border: 1.6px dashed var(--line); border-radius: var(--radius); padding: 28px 20px;
  text-align: center; transition: .18s; cursor: pointer; background: var(--soft); }
.dropzone:hover { border-color: var(--c-cool); background: var(--cool-soft); }
.dropzone input[type=file] { display: block; margin: 10px auto 0; font-size: 13px; max-width: 100%; }

@media (max-width: 680px) {
  .guard { text-align: left; }
  .guard b { font-size: 32px; }
  .verdict { font-size: 18px; }
}

/* ★F6 insight 看板大屏模式（展会/路演投屏） */
#insight-board:fullscreen { background: var(--bg); padding: 28px; overflow: auto; }


/* ★F8 ⌘K 命令面板（全站：搜索钮/⌘K 呼出，检索四库/内容/帖子公开索引） */
.cmdk { position: fixed; inset: 0; z-index: 120; display: none; align-items: flex-start;
  justify-content: center; padding: 12vh 16px 0; background: rgba(5,18,33,.55);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.cmdk.open { display: flex; }
.cmdk-box { width: min(620px,100%); background: var(--card); border: 1px solid var(--line);
  border-radius: 16px; box-shadow: var(--shadow-lg); overflow: hidden; }
.cmdk-inp { display: flex; align-items: center; gap: 12px; padding: 15px 18px; border-bottom: 1px solid var(--line); }
.cmdk-inp svg { color: var(--muted); flex: none; width: 17px; height: 17px; }
.cmdk-inp input { flex: 1; border: 0; outline: 0; background: transparent; font-size: 16px; color: var(--ink); font-family: inherit; }
.cmdk-inp .hint { font-family: var(--mono); font-size: 10px; color: var(--muted);
  border: 1px solid var(--line); border-radius: 5px; padding: 2px 7px; flex: none; }
.cmdk-list { max-height: 46vh; overflow-y: auto; padding: 8px; }
.cmdk-it { display: flex; align-items: center; gap: 12px; padding: 11px 12px; border-radius: 10px; cursor: pointer; color: var(--ink); }
.cmdk-it b { font-size: 14px; font-weight: 600; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmdk-it .tp { font-family: var(--mono); font-size: 10.5px; color: var(--muted); letter-spacing: .06em; margin-left: auto; white-space: nowrap; flex: none; }
.cmdk-it.sel, .cmdk-it:hover { background: var(--soft); }
.cmdk-empty { padding: 28px 16px; text-align: center; color: var(--muted); font-size: 13px; }


/* ==========================================================================
   页级组件（L3 上收，2026-07-19）——原先内嵌在各模板 <style> 中，违反
   「app 内禁自带 CSS」红线。选择器均带页级前缀，迁入后不改特异性。
   ========================================================================== */

/* —— home.html —— */
/* ===== 工程工具箱 · 仪表台重设计（token 驱动，明暗自适应；仅本页 scoped）===== */

/* —— Hero —— */
.tk-priv-chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11.5px;font-weight:600;
  color:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:8px 14px;background:var(--card);white-space:nowrap}
.tk-priv-chip .d{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft);flex:none}

/* —— 工具网格 —— */
.tk-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:24px 0 18px}
@media(max-width:760px){.tk-grid{grid-template-columns:1fr}}

.tk-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:18px;
  background:var(--card);overflow:hidden;text-decoration:none;color:var(--ink);
  transition:transform .25s,box-shadow .25s,border-color .25s}
.tk-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--c-cool)}
.tk-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--spectrum)}

/* 末张全宽（2026-08-06）：工具从 2 张增到 3 张后，两列栅格右下角空出一整格
   ——正是 2026-07-12 判过 LOW 的那类非对称留白。⛔ 不补「敬请期待」占位卡（同一次判过），
   改为落单的末张转全宽横排：左文右图，既填满栅格，又给唯一带交互可视化的工作室更大展示面。
   ★ 判据写成 `:last-child:nth-child(odd)` 而不是模板上挂 class——
     卡片是奇数张时才落单，**将来增到 4 张会自动回到两列**，⛔ 不需要有人记得去摘 class。
   ⚠ 纯布局变体，不新增颜色/圆角/阴影语言；DOM 顺序不动，靠 grid-areas 重排。 */
.tk-grid>.tk-card:last-child:nth-child(odd){grid-column:1/-1;display:grid;
  grid-template-columns:minmax(0,1fr) minmax(240px,40%);
  /* ⛔ 中间行不给 1fr——那会把 checks 行拉伸到填满，卡片中段空出一大块（实测已见）。
     行高一律 auto，卡高由较高的一栏自然决定。 */
  grid-template-rows:auto auto auto;
  /* ⚠ foot 跨满两列：其余卡片的页脚分隔线是贯通整卡的，只铺左半会当场看出来不是一套。 */
  grid-template-areas:"top scope" "checks scope" "foot foot"}
.tk-grid>.tk-card:last-child:nth-child(odd) .tk-top{grid-area:top}
.tk-grid>.tk-card:last-child:nth-child(odd) .tk-checks{grid-area:checks;align-content:start}
.tk-grid>.tk-card:last-child:nth-child(odd) .tk-foot{grid-area:foot}
.tk-grid>.tk-card:last-child:nth-child(odd) .tk-scope{grid-area:scope;align-self:center;margin:18px 0;padding:0 22px 0 4px}
/* 序号靠 `margin-left:auto` 顶到 .tk-top 右端，而 top 只占左列 ⇒ 会停在整卡中间。
   钉回右上角，与其余卡片同位（.tk-card 本就是 position:relative）。 */
.tk-grid>.tk-card:last-child:nth-child(odd) .tk-serial{position:absolute;top:22px;right:22px}
/* 单列断点回落竖排——横排在窄屏会把右栏压到不可读 */
@media(max-width:760px){
  .tk-grid>.tk-card:last-child:nth-child(odd){display:flex;flex-direction:column}
  .tk-grid>.tk-card:last-child:nth-child(odd) .tk-scope{margin:12px 0 2px;padding:0 14px}
  /* 竖排下 top 已恢复整宽，序号回到文档流——留着绝对定位会让长标题伸到它底下。 */
  .tk-grid>.tk-card:last-child:nth-child(odd) .tk-serial{position:static}
}

.tk-top{display:flex;align-items:flex-start;gap:14px;padding:22px 22px 2px}
.tk-ico{width:52px;height:52px;border-radius:14px;flex:none;display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,var(--cool-soft),var(--cyan-soft));color:var(--c-cool);border:1px solid var(--line)}
.tk-card.hot .tk-ico{background:linear-gradient(150deg,var(--warm-soft),var(--hot-soft));color:var(--c-hot)}
.tk-ico svg{width:28px;height:28px}
.tk-name{margin:0;font-size:18px;font-weight:800;letter-spacing:-.3px}
.tk-cat{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:4px;letter-spacing:.01em}
.tk-serial{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.16em;padding-top:5px;white-space:nowrap}

/* —— 温度曲线读出图（本工具的产品母题：上传曲线→出诊断）—— */
.tk-scope{position:relative;margin:12px 0 2px;padding:0 14px}
.tk-scope svg{display:block;width:100%;height:auto}
.tk-scope .grid{stroke:var(--line);stroke-width:1}
.tk-scope .win{fill:var(--warm-soft)}
.tk-scope .area{opacity:.9}
.tk-scope .line{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:640;animation:tk-draw 1.15s cubic-bezier(.4,0,.15,1) both}
.tk-card.hot .tk-scope .line{animation-delay:.14s}
.tk-scope .pk{stroke:var(--card);stroke-width:2.5}
.tk-scope .tick{font-family:var(--mono);font-size:8.5px;fill:var(--muted)}
@keyframes tk-draw{from{stroke-dashoffset:640}to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.tk-scope .line{animation:none;stroke-dashoffset:0}}

/* —— 守护项标签 —— */
.tk-checks{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 22px 0}
.tk-checks .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-right:3px}
.tk-tag{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--ink-2);
  background:var(--soft);border:1px solid var(--line);border-radius:7px;padding:3px 9px}

/* —— 卡脚 CTA —— */
.tk-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;
  padding:14px 22px;border-top:1px solid var(--line)}
.tk-cta{display:inline-flex;align-items:center;gap:8px;font-weight:750;font-size:14px;color:var(--c-cool)}
.tk-card.hot .tk-cta{color:var(--c-hot)}
.tk-cta .arw{transition:transform .22s}
.tk-card:hover .tk-cta .arw{transform:translateX(5px)}
.tk-foot .hint{font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.04em}

/* —— 路线图条 —— */
.tk-road{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  border:1px dashed var(--line);border-radius:14px;padding:13px 18px;background:var(--soft);margin-bottom:16px}
.tk-road .h{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--c-cool);font-weight:700}
.tk-road .pill{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--ink-2);
  background:var(--card);border:1px solid var(--line);border-radius:999px;padding:5px 12px}
.tk-road .pill svg{width:13px;height:13px;color:var(--muted)}
.tk-road .tail{font-size:12px;color:var(--muted);margin-left:auto}
@media(max-width:560px){.tk-road .tail{margin-left:0;width:100%}}

/* —— 隐私脚注 —— */
.tk-priv{display:flex;gap:12px;align-items:flex-start;font-size:13px;color:var(--muted);line-height:1.65}
.tk-priv svg{width:18px;height:18px;color:var(--c-cool);flex:none;margin-top:2px}
.tk-priv b{color:var(--ink)}

/* —— pricing.html —— */
/* 定价页（token 驱动，明暗自适应）：等高卡 + 推荐高亮 + CTA 底部对齐 + 客户文案。 */
.mp-wrap{margin:32px 0 60px}
.mp-head{text-align:center;margin-bottom:30px}
.mp-head h1{margin:8px 0 0}
.mp-head p{color:var(--muted);font-size:14px;margin-top:9px}
.mp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:stretch}
@media(max-width:900px){.mp-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.mp-grid{grid-template-columns:1fr}}
.mp-card{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:24px 20px 22px;box-shadow:var(--shadow);transition:.18s}
.mp-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.mp-card.feat{border:1.5px solid var(--c-cool);box-shadow:var(--shadow-lg)}
.mp-badge{position:absolute;top:-11px;left:50%;transform:translateX(-50%);white-space:nowrap;
  background:linear-gradient(90deg,var(--c-cool),var(--c-hot));color:#fff;font-size:11px;font-weight:700;
  padding:4px 13px;border-radius:999px;letter-spacing:.04em}
.mp-name{font-size:17px;font-weight:800;margin:0}
.mp-aud{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.mp-price{margin:16px 0 2px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.mp-price .now{font-family:var(--mono);font-size:29px;font-weight:800;line-height:1}
.mp-price .now.promo{color:var(--c-hot)}
.mp-price .was{color:var(--muted);text-decoration:line-through;font-size:13px}
.mp-price .per{color:var(--muted);font-size:12.5px}
.mp-feats{list-style:none;padding:16px 0 0;margin:14px 0 18px;flex:1;display:flex;flex-direction:column;gap:10px;
  border-top:1px solid var(--line)}
.mp-feats li{display:flex;gap:9px;font-size:13px;color:var(--ink-2);line-height:1.5}
.mp-feats li svg{width:16px;height:16px;color:var(--ok);flex:none;margin-top:1px}
.mp-cta{width:100%;justify-content:center;margin-top:auto}
.mp-note{margin-top:auto;font-size:11.5px;color:var(--muted);line-height:1.65;
  border-top:1px dashed var(--line);padding-top:12px}
.mp-foot{text-align:center;color:var(--muted);font-size:12.5px;margin-top:22px}
.mp-foot a{color:var(--c-cool);font-weight:600}

/* —— workspace.html —— */
.ws-score{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.ws-num{font-family:var(--mono);font-size:44px;font-weight:800;line-height:1;color:var(--sect-org);font-variant-numeric:tabular-nums}
.ws-num small{font-size:16px;color:var(--muted);font-weight:600}
.ws-score-body{flex:1;min-width:200px}
.ws-tips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.ws-tip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--warn-ink);
  background:var(--warm-soft);border-radius:999px;padding:3px 10px}
.ws-tip svg{width:12px;height:12px}
.ws-links{margin:12px 0 0;font-size:13px;display:flex;gap:16px;flex-wrap:wrap}
.ws-acc{margin-bottom:12px;overflow:hidden}
.ws-acc>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:11px;padding:2px 0}
.ws-acc>summary::-webkit-details-marker{display:none}
.ws-acc>summary .icx{width:36px;height:36px}.ws-acc>summary .icx svg{width:18px;height:18px}
.ws-acc>summary h3{margin:0;font-size:15px;font-weight:750;flex:1}
.ws-acc-n{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--muted);
  background:var(--soft);border-radius:999px;padding:2px 9px;font-variant-numeric:tabular-nums}
.ws-chev{color:var(--muted);transition:transform .2s var(--ease);flex:none}
.ws-acc[open]>summary .ws-chev{transform:rotate(90deg)}
.ws-body{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.ws-row{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center;
  padding:10px 0;border-top:1px solid var(--line);font-size:13px}
.ws-row:first-child{border-top:0}
.ws-row .r-main{min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ws-row .r-name{font-weight:650;color:var(--ink)}
.ws-acts{display:flex;gap:6px;flex-wrap:wrap}
.ws-mini{font-size:11px;padding:3px 10px}
@media(prefers-reduced-motion:reduce){.ws-chev{transition:none}}

/* —— showcase.html —— */
.sc-hero{padding:22px 22px 20px;position:relative;overflow:hidden}
.sc-hero::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--spectrum)}
.sc-id{display:flex;gap:16px;align-items:flex-start}
.sc-logo{width:58px;height:58px;border-radius:15px;flex:none;display:inline-flex;align-items:center;justify-content:center;
  background:var(--warm-soft);color:var(--sect-org)}
.sc-logo svg{width:30px;height:30px}
.sc-idbody{min-width:0;flex:1}
.sc-name{font-size:23px;font-weight:800;letter-spacing:-.4px;color:var(--ink);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sc-verified{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;
  background:var(--ok-soft);color:var(--ok);padding:2px 9px;border-radius:999px}
.sc-verified svg{width:13px;height:13px}
.sc-meta{color:var(--muted);font-size:12.5px;margin-top:7px;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center}
.sc-tagline{font-size:15px;font-weight:600;color:var(--ink-2);margin:14px 0 0;line-height:1.6}
.sc-stats{margin-top:18px}
.sc-prod{padding:16px 17px}
.sc-prod-head{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:baseline}
.sc-prod-name{font-size:15.5px;font-weight:750;color:var(--ink)}
.sc-prod-link{color:var(--c-cool);font-size:12.5px;font-weight:600;white-space:nowrap}
.sc-spec{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.sc-spec .chip{background:var(--soft);color:var(--ink-2)}
.sc-note{color:var(--muted);font-size:12px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}
.sc-block{padding:16px 18px;margin-bottom:12px}
.sc-block-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sc-block-h h3{margin:0;font-size:15px;font-weight:750}
.sc-block-h .icx{width:36px;height:36px}.sc-block-h .icx svg{width:18px;height:18px}

/* —— sales.html —— */
/* 销量榜（v2）：温标 page-hero 开场 + 公共胶囊（.chip）；页级只留筛选条与榜单行布局。 */
.sb-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.sb-bar select{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);font-size:13.5px}
.sb-pt{display:flex;gap:6px;flex-wrap:wrap}
.sb-pt a.chip{font-size:13px;padding:6px 13px;border-radius:999px;font-weight:600;color:var(--muted);text-decoration:none;transition:.15s}
.sb-pt a.chip:hover{border-color:var(--sect,var(--c-cool));color:var(--sect,var(--c-cool))}
.sb-pt a.chip.on{background:var(--sect,var(--c-cool));border-color:transparent;color:#fff}
.sb-row{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card);margin-bottom:7px;text-decoration:none;color:var(--ink);transition:border-color .15s}
.sb-row:hover{border-color:var(--sect,var(--c-cool))}
.sb-rank{font-family:var(--mono);font-weight:800;font-size:19px;text-align:center;color:var(--muted)}
.sb-row.top .sb-rank{color:var(--c-hot)}
.sb-t{min-width:0}
.sb-t b{font-size:15px;font-weight:650}
.sb-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;align-items:center}
.sb-meta .chip{font-size:10.5px;padding:1.5px 8px}
.sb-pt-tag{border-color:transparent}
.sb-pt-tag.bev{background:var(--cool-soft);color:var(--c-cool)}
.sb-pt-tag.phev{background:var(--warm-soft);color:var(--c-warm)}
.sb-pt-tag.erev{background:var(--cyan-soft);color:var(--c-cyan)}
.sb-pt-tag.mixed{background:linear-gradient(90deg,var(--cool-soft),var(--warm-soft));color:var(--ink)}
.sb-vol{font-family:var(--mono);font-weight:700;white-space:nowrap;text-align:right}
.sb-vol b{font-size:17px;color:var(--c-hot)}
.sb-vol span{display:block;font-size:10.5px;color:var(--muted)}
@media (max-width:680px){.sb-meta .mfr{display:none}}

/* —— calendar.html —— */
.ev-list{margin-top:8px}
.ev-item{display:flex;gap:16px;align-items:stretch}
.ev-rail{flex:none;width:60px;display:flex;flex-direction:column;align-items:center}
.ev-date{width:60px;border:1px solid var(--line);border-radius:10px;overflow:hidden;text-align:center;background:var(--card)}
.ev-date .m{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.06em;
  color:#fff;background:var(--sect-events);padding:3px 0}
.ev-date .d{font-family:var(--mono);font-size:23px;font-weight:800;color:var(--ink);
  padding:5px 0 6px;line-height:1;font-variant-numeric:tabular-nums}
.ev-line{flex:1;width:2px;background:var(--line);margin:6px 0}
.ev-item:last-child .ev-line{display:none}
.ev-body{flex:1;min-width:0;margin-bottom:14px}
.ev-name{font-size:15.5px;font-weight:700;color:var(--ink);letter-spacing:-.2px}
.ev-meta{display:flex;flex-wrap:wrap;gap:5px 14px;font-size:12.5px;color:var(--muted);margin-top:8px;align-items:center}
.ev-meta .tms-ic{margin-right:2px;vertical-align:-.14em}
.ev-src{font-size:11px;color:var(--muted);opacity:.7;margin-top:7px}
.ev-count{font-family:var(--mono);font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;
  background:var(--warm-soft);color:var(--warn-ink);white-space:nowrap}
.ev-live{font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;
  background:var(--ok-soft);color:var(--ok);white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.ev-live::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ok);animation:evpulse 1.8s infinite}
@keyframes evpulse{0%{box-shadow:0 0 0 0 rgba(15,157,88,.5)}70%{box-shadow:0 0 0 6px rgba(15,157,88,0)}100%{box-shadow:0 0 0 0 rgba(15,157,88,0)}}
@media(prefers-reduced-motion:reduce){.ev-live::before{animation:none}}
.ev-past{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:10px 15px;margin-bottom:7px;opacity:.7}
@media(max-width:560px){.ev-rail{width:48px}.ev-date{width:48px}.ev-date .d{font-size:20px}}

/* —— news_index_page.html —— */
/* news 索引（v2 重构：头条+按月时间轴+右栏；全令牌，宽度=标准版心） */
.nw-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
.nw-grid>*{min-width:0}
.nw-feat .k span{white-space:normal;word-break:break-word}
@media(max-width:1024px){.nw-grid{grid-template-columns:1fr}.nw-aside{position:static}}
.nw-feat{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px 28px;position:relative;overflow:hidden;transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}
.nw-feat:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.nw-feat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--sect-news)}
.nw-feat .k{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--muted);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.nw-feat h2{font-size:var(--fs-h2);margin:10px 0 8px;line-height:1.35}
.nw-feat:hover h2{color:var(--sect-news)}
.nw-feat p{color:var(--ink-2);font-size:14px;line-height:1.8}
.nw-month{font-family:var(--mono);font-size:11.5px;letter-spacing:.18em;color:var(--muted);margin:26px 0 4px;display:flex;align-items:center;gap:12px}
.nw-month::after{content:"";flex:1;height:1px;background:var(--line)}
.nw-row{display:flex;gap:14px;align-items:baseline;padding:13px 4px;border-bottom:1px dashed var(--line);transition:background var(--dur-1)}
.nw-row:hover{background:var(--soft)}
.nw-row .d{font-family:var(--mono);font-size:12px;color:var(--muted);flex:none;width:44px}
.nw-row .t{min-width:0;flex:1}
.nw-row .t b{font-size:14.5px;font-weight:600;color:var(--ink);display:block;line-height:1.5}
.nw-row:hover .t b{color:var(--sect-news)}
.nw-row .t span{font-size:12.5px;color:var(--muted);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nw-row .chip{margin-left:auto;flex:none;max-width:200px;overflow:hidden;text-overflow:ellipsis;display:block}
@media(max-width:680px){.nw-row .chip{display:none}}
.nw-aside{display:grid;gap:14px;position:sticky;top:82px}

/* —— news_page.html —— */
    .nw-body{font-size:15.5px;line-height:1.95;color:var(--ink)}
    .nw-body p{margin:0 0 1em}
    .nw-body h2,.nw-body h3{margin:1.6em 0 .6em;line-height:1.4}
    .nw-body h2{font-size:20px}.nw-body h3{font-size:17px}
    .nw-body a{color:var(--c-cool);border-bottom:1px solid var(--cool-soft)}
    .nw-body img{max-width:100%;border-radius:var(--radius-sm)}
    .nw-body blockquote{border-left:3px solid var(--line);padding-left:14px;color:var(--muted);margin:1em 0}
    .nw-body ul,.nw-body ol{padding-left:1.4em;margin:0 0 1em}
    .nw-nav{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:26px}
    @media(max-width:680px){.nw-nav{grid-template-columns:1fr}}
    .nw-nav a{display:block;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);padding:12px 16px;min-width:0}
    .nw-nav a:hover{border-color:var(--sect-news)}
    .nw-nav .k{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--muted)}
    .nw-nav b{display:block;font-size:13.5px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nwd-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:32px;align-items:start;margin-top:32px}
.nwd-grid>*{min-width:0}
.nwd-aside{display:grid;gap:14px;position:sticky;top:82px}
.nwd-aside>div{margin-top:0!important}
@media(max-width:1024px){.nwd-grid{grid-template-columns:1fr}.nwd-aside{position:static}}

/* —— brand_detail.html —— */
.bd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.bd-card{display:flex;flex-direction:column;padding:15px 16px 13px}
.bd-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.bd-model{font-size:16px;font-weight:750;color:var(--ink);letter-spacing:-.2px;min-width:0}
.bd-year{font-family:var(--mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;flex:none}
.pt-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;font-family:var(--mono);
  letter-spacing:.03em;padding:3px 9px;border-radius:999px;margin-top:9px;align-self:flex-start;
  background:var(--pt-soft,var(--soft));color:var(--pt-ink,var(--muted))}
.pt-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.pt-bev {--pt-soft:var(--cool-soft);--pt-ink:var(--c-cool)}
.pt-phev{--pt-soft:var(--cyan-soft);--pt-ink:var(--c-cyan)}
.pt-erev{--pt-soft:var(--warm-soft);--pt-ink:var(--member)}
.bd-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:13px;
  padding-top:11px;border-top:1px solid var(--line)}
.bd-arch{font-size:12px;color:var(--muted)}
.bd-arch b{font-family:var(--mono);color:var(--c-cool);font-weight:800;font-variant-numeric:tabular-nums}
.bd-go{font-size:12px;font-weight:600;color:var(--c-cool);white-space:nowrap}
@media(max-width:680px){.bd-grid{grid-template-columns:1fr}}

/* —— mode_compare.html —— */
.cmp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-top:14px}
.cmp-card h3{margin:0;font-size:15.5px}
.cmp-card .diagram-wrap{margin:10px 0 6px;border:1px solid var(--line);border-radius:10px;padding:6px;background:var(--soft)}
.cmp-card table{width:100%;font-size:12px;border-collapse:collapse}
.cmp-card td{padding:3px 6px;border-top:1px solid var(--line)}
.cmp-card td:last-child{color:var(--c-cool);font-weight:600;text-align:right}
.cmp-sum{width:100%;font-size:12.5px;border-collapse:collapse;margin-top:12px}
.cmp-sum th,.cmp-sum td{padding:7px 9px;border-bottom:1px solid var(--line);text-align:left}
.cmp-sum th{color:var(--muted);font-weight:600;font-size:11.5px}
.cmp-flowbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0 2px}
.cmp-flowbar label{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;user-select:none}
.cmp-flowbar .hint{color:var(--muted);font-size:12px}
.cmp-roles{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 2px}
.cmp-role{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--ink-2);background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.cmp-role i{width:9px;height:9px;border-radius:2px;display:inline-block;flex:none}
@media (max-width:680px){.cmp-grid{grid-template-columns:1fr}}

/* ═══════════════════════════════════════════════════════════════
   车型销量榜改版（2026-08-07）——概览 + 分层 + 档案缺口。
   ⛔ 只用既有令牌，动力配色由 insight_extras.pt_color 给令牌名（电动化程度即温标）。
   ═══════════════════════════════════════════════════════════════ */
.sb-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 24px;box-shadow:var(--shadow);margin-bottom:18px}
.sb-kpis{display:flex;flex-wrap:wrap;gap:34px;margin-bottom:20px}
.sb-kpi b{display:block;font-family:var(--mono);font-size:25px;font-weight:600;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;line-height:1.2}
.sb-kpi span{font-size:12.5px;color:var(--muted)}
.sb-kpi.accent b{background:var(--spectrum);-webkit-background-clip:text;background-clip:text;color:transparent}
.sb-mix{display:flex;height:15px;border-radius:99px;overflow:hidden;gap:2px;margin-bottom:11px}
.sb-mixseg{display:block;min-width:2px}
.sb-mixlg{display:flex;flex-wrap:wrap;gap:16px;font-size:12.5px;color:var(--muted)}
.sb-lg{display:flex;align-items:center;gap:6px}
.sb-lg i{width:9px;height:9px;border-radius:3px;flex:none}
.sb-lg b{color:var(--ink);font-family:var(--mono);font-variant-numeric:tabular-nums}
.sb-lg em{font-style:normal;font-family:var(--mono);font-size:11.5px;opacity:.7}

/* ── 前三名大卡 ── */
.sb-top3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:16px 0 14px}
.sb-hero{position:relative;display:flex;flex-direction:column;gap:9px;overflow:hidden;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s,box-shadow .15s}
.sb-hero:hover{border-color:var(--sect,var(--c-cool));transform:translateY(-2px);box-shadow:var(--shadow)}
.sb-hero::before{content:"";position:absolute;inset:0 0 auto;height:2px;background:var(--spectrum)}
.sb-h-rank{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.1em}
.sb-h-name{font-size:17px;font-weight:700;letter-spacing:-.01em;line-height:1.3}
.sb-h-tags{display:flex;flex-wrap:wrap;gap:6px}
.sb-h-num{margin-top:auto}
.sb-h-num b{font-family:var(--mono);font-size:23px;font-weight:600;font-variant-numeric:tabular-nums}
.sb-h-num i{font-style:normal;font-size:12px;color:var(--muted);margin-left:5px}
.sb-h-delta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sb-h-delta i{font-style:normal;font-size:11.5px;color:var(--muted)}
.sb-h-spk{display:flex;align-items:center;justify-content:space-between;gap:8px;
  border-top:1px solid var(--line);padding-top:11px;color:var(--sect,var(--c-cool))}
.sb-h-spk i{font-style:normal;font-family:var(--mono);font-size:10.5px;color:var(--muted);white-space:nowrap}

/* ── 标准行 ── */
.sb-rows{border-top:1px solid var(--line)}
.sb-r{display:grid;grid-template-columns:34px minmax(0,1fr) 92px 104px 40px;align-items:center;
  gap:12px;padding:11px 8px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;
  transition:background .15s}
.sb-r:hover{background:var(--soft)}
.sb-r-rank{font-family:var(--mono);font-size:13px;color:var(--muted);text-align:right;
  font-variant-numeric:tabular-nums}
.sb-r-name{display:block;font-weight:600;font-size:14.5px}
.sb-r-sub{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}
.sb-r-bar{display:block;height:5px;background:var(--soft);border-radius:99px;overflow:hidden;
  margin-top:7px;max-width:340px}
.sb-r-bar>span{display:block;height:100%;border-radius:99px;opacity:.75}
.sb-r-vol{text-align:right}
.sb-r-vol b{display:block;font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums}
.sb-r-rkd{text-align:right}
.sb-rows.compact .sb-r{grid-template-columns:34px minmax(0,1fr) 104px;padding:9px 8px}
.sb-spk{display:block}
.sb-spk-na{display:inline-block;font-family:var(--mono);font-size:11px;color:var(--muted);
  text-align:center;opacity:.5}

/* ── 标签 ── */
.sb-ptchip{font-family:var(--mono);font-size:10.5px;padding:2px 7px;border-radius:5px;
  color:var(--pc);background:color-mix(in srgb,var(--pc) 12%,transparent);white-space:nowrap}
.sb-ptchip.sm{font-size:10px;padding:1px 6px}
.sb-arch{font-size:11px;padding:2px 7px;border-radius:5px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:100%}
.sb-arch.has{background:var(--ok-soft);color:var(--ok)}
.sb-arch.lack{background:var(--soft);color:var(--muted)}
.sb-mom{font-family:var(--mono);font-size:11.5px;font-variant-numeric:tabular-nums}
.sb-mom.up{color:var(--ok)} .sb-mom.dn{color:var(--c-hot)} .sb-mom.new{color:var(--c-warm)}
.sb-rkd{font-family:var(--mono);font-size:11px}
.sb-rkd.up{color:var(--ok)} .sb-rkd.dn{color:var(--c-hot)}

/* ── 折叠 ── */
.sb-fold{margin-top:14px}
.sb-fold>summary{cursor:pointer;list-style:none;text-align:center;padding:12px;
  border:1px dashed var(--line);border-radius:var(--radius-sm);font-family:var(--mono);
  font-size:12.5px;color:var(--muted);transition:.15s}
.sb-fold>summary::-webkit-details-marker{display:none}
.sb-fold>summary:hover{border-color:var(--c-cool);color:var(--c-cool)}
.sb-fold[open]>summary{margin-bottom:8px}

/* ── 档案缺口 ── */
.sb-gap{margin-top:22px;padding:16px 18px;background:var(--soft);border-radius:var(--radius);
  border-left:3px solid var(--c-cool)}
.sb-gap-bar{display:block;height:7px;background:var(--line);border-radius:99px;overflow:hidden;
  margin-bottom:11px}
.sb-gap-bar>span{display:block;height:100%;background:var(--c-cool);border-radius:99px}
.sb-gap p{margin:0;font-size:13.5px;color:var(--ink-2);line-height:1.7}
.sb-gap b{color:var(--ink);font-family:var(--mono);font-variant-numeric:tabular-nums}

@media(max-width:900px){
  .sb-top3{grid-template-columns:1fr}
  .sb-r{grid-template-columns:28px minmax(0,1fr) 92px 38px}
  .sb-r-spk{display:none}
}
@media(max-width:680px){
  .sb-kpis{gap:22px}
  .sb-kpi b{font-size:21px}
  .sb-r{grid-template-columns:26px minmax(0,1fr) 84px}
  .sb-r-rkd{display:none}
  .sb-rows.compact .sb-r{grid-template-columns:26px minmax(0,1fr) 84px}
}

/* 公开注册期提示（2026-08-07）：仅在 settings.PUBLIC_INVITE_CODE 配置后渲染 */
.reg-open{margin:8px 0 0;font-size:12.5px;color:var(--ink-2);background:var(--ok-soft);
  border-radius:var(--radius-sm);padding:8px 11px;line-height:1.6}
.reg-open b{font-family:var(--mono);color:var(--ok);letter-spacing:.06em;
  user-select:all}   /* user-select:all＝点一下就整段选中，方便复制 */
