/* report-scoped.css
   报告样式（_core + swiss-brief + _polish）已收敛到 .report 作用域。
   用法：替换页面里原先内联的整段 <style>…</style>；
   或改为 <link rel="stylesheet" href="…/report-scoped.css">。
   报告正文须位于 <div class="report"> … </div> 内（build.py 产物自带该容器）。 */
/* ===========================================================================
   _core.css —— 领域组件的共享结构样式（被 build.py 在每套主题之前加载）
   ---------------------------------------------------------------------------
   契约：本文件是「新增领域块」的唯一结构样式来源。所有规则只用 CSS 变量表达，
   因此换主题时只需在主题文件的 :root 里改变量、或补领域组件选择器覆盖，无需重写
   整块。经典排版（正文/标题/表格/图/公式/callout/定理族）仍由各主题自带；本文件
   只补 multi-style 时代没有的调研组件：图表、KPI 卡、风险条款卡、内容盒、方案对比
   卡、技术流程节点。

   变量分层：
   - 主题应定义的基础变量（--color-text / --color-muted / --color-accent /
     --color-rule / --color-bg 等）本文件只「使用」，不定义。
   - 领域组件专属变量（--chart-1..8 图表色板、--sem-pos/warn/neg 语义色、
     --chart-height 画布高度）在此给出无障碍默认值；主题可在自己的 :root 覆盖。
     因为主题在 core 之后加载，同为 :root 的覆盖会生效。
   =========================================================================== */
.report {
  /* 分类图表色板：默认 Okabe-Ito 无障碍 8 色（色盲友好、灰度可分辨）。 */
  --chart-1: #0072B2;
  --chart-2: #E69F00;
  --chart-3: #009E73;
  --chart-4: #CC79A7;
  --chart-5: #56B4E9;
  --chart-6: #D55E00;
  --chart-7: #F0E442;
  --chart-8: #999999;
  /* 语义色：正面/中性提示/负面（风险分级、KPI 涨跌都复用，去 emoji 靠颜色）。 */
  --sem-pos:  #1f8a5b;
  --sem-warn: #c98a1a;
  --sem-neg:  #c0392b;
  /* 图表画布默认高度（可被 --extra-css 或主题覆盖）。 */
  --chart-height: 400px;
  /* 外链色：[ID](url) 渲染为 <a class="ref">[ID]</a> 的统一配色，
     主题可在自己的 :root 覆盖以贴合主题色。 */
  --ref-color: #1a73e8;
}
/* 页眉日期是页眉署名行的子元素；多数主题只样式化 .doc-byline，这里给 .doc-date
   一个跨主题的默认颜色（主题若自定义会覆盖它），使 class 契约完整。 */
.report .doc-byline .doc-date { color: var(--color-muted); }
/* --- 外链：[ID](url) → <a class="ref" href="url" rel="noopener" target="_blank">[ID]</a) -
   build.py 给所有外链 markdown 链接打 .ref 并把显示文本包成 [ID]；这里只给结构样式：
   用 --ref-color 上色、缩小字号、去下划线/底边（与各主题 a { border-bottom } 区分开）。
   类选择器优先级高于元素选择器 a，故主题里的 a 规则不会盖掉它；主题可在 :root 覆盖
   --ref-color 以贴合自身配色。 */
.report .ref {
  color: var(--ref-color);
  text-decoration: none;
  border-bottom: none;
  font-size: .85em;
  white-space: nowrap;
}
/* --- 表格自适应：宽表横向滚动，不撑破正文宽度（PC 与移动端一致） ---------- */
/* build.py 把每张 <table> 包进 <div class="table-scroll">。窄表正常铺满 100%；
   列多 / 长 token 使表格 min-content 超过正文宽度时，在此处横向滚动，正文整体
   宽度与边距不被撑破。不强制 white-space:nowrap，让单元格文字优先换行自适应，
   只在确有不可断内容时才滚动。 */
.report .table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  width: 100%;
}
.report .table-scroll > table { margin-top: 0; }
.report .table-scroll > table > caption { caption-side: top; }
/* --- 图表（ECharts 画布 + 标题；配色由 build.py 的 init 脚本注入） --------- */
.report .chart-figure { margin: 1.8em 0; }
.report .chart-title {
  font-weight: 700; color: var(--color-text); font-size: .96rem;
  margin: 0 0 .5em; text-align: center;
}
.report .chart-title .fignum { color: var(--color-accent); }
.report .chart {
  width: 100%; height: var(--chart-height); min-height: 240px;
}
/* --- KPI 卡片 / 网格 ------------------------------------------------------ */
.report .kpi-grid {
  display: grid; gap: .9rem; margin: 1.4em 0;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}
.report .kpi-card {
  padding: 1rem 1.1rem; border-radius: 10px;
  background: color-mix(in srgb, var(--color-accent) 5%, var(--color-bg));
  border: 1px solid var(--color-rule);
  border-top: 3px solid var(--color-accent);
}
.report .kpi-trend-up { border-top-color: var(--sem-pos); }
.report .kpi-trend-down { border-top-color: var(--sem-neg); }
.report .kpi-value {
  font-size: 1.7rem; font-weight: 700; line-height: 1.15;
  color: var(--color-text); letter-spacing: -.01em;
}
.report .kpi-label { font-size: .82rem; color: var(--color-muted); margin-top: .25rem; }
.report .kpi-delta {
  display: inline-block; margin-top: .5rem; font-size: .8rem; font-weight: 600;
  padding: .08em .5em; border-radius: 999px;
  background: color-mix(in srgb, currentColor 12%, transparent);
}
.report .kpi-delta.kpi-up { color: var(--sem-pos); }
.report .kpi-delta.kpi-down { color: var(--sem-neg); }
.report .kpi-delta.kpi-flat { color: var(--color-muted); }
.report .kpi-note { font-size: .85rem; color: var(--color-muted); margin-top: .5rem; }
.report .kpi-note p { margin: .2em 0; }
/* --- 风险条款卡（彩色左边框替代 emoji；等级 risk-high/medium/low） -------------------------------------- */
.report .clause-card {
  margin: 1.2em 0; padding: .9em 1.1em; border-radius: 0 8px 8px 0;
  background: color-mix(in srgb, var(--color-rule) 22%, var(--color-bg));
  border-left: 4px solid var(--color-muted);
}
.report .clause-card.risk-high { border-left-color: var(--sem-neg); }
.report .clause-card.risk-medium { border-left-color: var(--sem-warn); }
.report .clause-card.risk-low { border-left-color: var(--sem-pos); }
.report .clause-head { margin: 0 0 .4em; font-weight: 700; }
/* --- 内容盒：核心发现 / 研究方法 / 行动建议 / 局限 ------------------------ */
.report .content-box {
  margin: 1.4em 0; padding: 1em 1.2em; border-radius: 8px;
  background: color-mix(in srgb, var(--color-accent) 4%, var(--color-bg));
  border: 1px solid var(--color-rule); border-left: 4px solid var(--color-accent);
}
.report .content-box .box-title {
  margin: 0 0 .5em; font-weight: 700; color: var(--color-accent);
  font-size: .95rem; letter-spacing: .01em;
}
.report .content-box p:last-child, .report .content-box ul:last-child, .report .content-box ol:last-child { margin-bottom: 0; }
.report .box-keyfindings { border-left-color: var(--color-accent); }
.report .box-keyfindings .box-title { color: var(--color-accent); }
.report .box-methodology { border-left-color: var(--color-muted); }
.report .box-methodology .box-title { color: var(--color-muted); }
.report .box-recommendations { border-left-color: var(--sem-pos); }
.report .box-recommendations .box-title { color: var(--sem-pos); }
.report .box-limitations { border-left-color: var(--sem-warn); }
.report .box-limitations .box-title { color: var(--sem-warn); }
/* --- 方案对比卡 ---------------------------------------------------------- */
.report .method-grid {
  display: grid; gap: 1rem; margin: 1.4em 0;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.report .method-card {
  padding: 1rem 1.1rem; border: 1px solid var(--color-rule); border-radius: 10px;
  background: var(--color-bg);
}
.report .method-title {
  margin: 0 0 .6em; font-weight: 700; color: var(--color-accent);
  padding-bottom: .35em; border-bottom: 1px solid var(--color-rule);
}
.report .method-pros, .report .method-cons { margin: .6em 0; }
.report .proscons-title { margin: 0 0 .2em; font-weight: 700; font-size: .85rem; }
.report .method-pros .proscons-title { color: var(--sem-pos); }
.report .method-cons .proscons-title { color: var(--sem-neg); }
.report .method-pros ul, .report .method-cons ul { margin: .2em 0 .2em 1.2em; }
/* --- 技术流程（横向节点 + CSS 箭头，去 emoji） --------------------------- */
.report .tech-flow {
  display: flex; flex-wrap: wrap; align-items: stretch; gap: .4rem;
  margin: 1.4em 0;
}
.report .tech-node {
  flex: 1 1 150px; min-width: 130px; padding: .8em 1em;
  border: 1px solid var(--color-rule); border-radius: 8px;
  background: color-mix(in srgb, var(--color-accent) 5%, var(--color-bg));
}
.report .tech-node-title { margin: 0 0 .3em; font-weight: 700; color: var(--color-accent); }
.report .tech-node p { margin: .2em 0; font-size: .9rem; }
.report .tech-arrow {
  align-self: center; flex: 0 0 auto; width: 0; height: 0;
  border-top: 7px solid transparent; border-bottom: 7px solid transparent;
  border-left: 11px solid var(--color-muted);
}
@media (max-width: 640px) {
.report .tech-flow { flex-direction: column; }
.report .tech-arrow {
    align-self: center; border-left: 7px solid transparent;
    border-right: 7px solid transparent; border-top: 11px solid var(--color-muted);
    border-bottom: 0;
  }
}
@media print {
.report .chart { break-inside: avoid; }
.report .kpi-card, .report .clause-card, .report .method-card, .report .content-box, .report .tech-node { break-inside: avoid; }
.report .table-scroll { overflow: visible; }
/* PDF 不滚动：表格原样排出，由分页处理 */
}
/* ===========================================================================
   swiss-brief.css —— 通用商务主题 · 瑞士国际主义（Swiss International Style）
   ---------------------------------------------------------------------------
   设计语言：白底、近黑墨色、国际克莱因蓝（IKB #002fa7）单一强调色；
   锐利直角（radius=0）、粗黑顶栏、超大章节序号、全大写微标签、方形列表符。
   数字一律 tabular-nums 对齐。冷静、笃定、信息密度高——给董事会看的文件。

   自包含主题：在 _core.css 之后加载，完整覆盖全部领域组件（直角化 + 本套配色），
   与 build.py 的 class 契约（reference/render/markup.md）完全一致。
   =========================================================================== */
.report {
  --font-body: "Helvetica Neue", Helvetica, Inter, Arial, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
  --font-head: var(--font-body);
  --font-mono: "SFMono-Regular", Menlo, Consolas, "Noto Sans Mono CJK SC", monospace;

  --color-text: #101214;
  --color-muted: #63676d;
  --color-accent: #002fa7;            /* International Klein Blue */
  --color-accent-soft: #eef1fa;
  --color-rule: #e0e2e6;
  --color-ink: #101214;               /* 结构性黑：顶栏 / 表头 / 粗规则线 */
  --color-bg: #ffffff;

  --measure: 54rem;
  --base-size: 16px;
  --leading: 1.62;

  /* 图表色板：以 IKB 为锚的克制冷色系 + 少量对比暖色，灰度可分辨 */
  --chart-1: #002fa7;
  --chart-2: #e8590c;
  --chart-3: #0b7285;
  --chart-4: #862e9c;
  --chart-5: #2b8a3e;
  --chart-6: #c92a2a;
  --chart-7: #5f7387;
  --chart-8: #adb5bd;

  --sem-pos: #2b8a3e;
  --sem-warn: #e8590c;
  --sem-neg: #c92a2a;
  --ref-color: #002fa7;
  --chart-height: 380px;
}
.report {
  margin: 0;
  color: var(--color-text);
  background: var(--color-bg);
  font: var(--base-size)/var(--leading) var(--font-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.report {
  max-width: var(--measure);
  margin: 0 auto;
  padding: 0 3rem 6rem;
  background: var(--color-bg);
  border-top: 12px solid var(--color-ink);
}
/* --- 标题区：大字号、紧字距，标签行压在细线上 --------------------------- */
.report .doc-header {
  padding: 3.4rem 0 2rem;
  margin-bottom: 2.8rem;
  border-bottom: 3px solid var(--color-ink);
  position: relative;
}
.report .doc-header::after {                  /* 黑规则线上的 IKB 短段——版面的唯一装饰 */
  content: "";
  position: absolute;
  left: 0;
  bottom: -3px;
  width: 88px;
  height: 3px;
  background: var(--color-accent);
}
.report .doc-title {
  font-size: clamp(2.3rem, 5.4vw, 3.3rem);
  font-weight: 800;
  line-height: 1.06;
  letter-spacing: -0.028em;
  margin: 0 0 0.8rem;
  color: var(--color-ink);
}
.report .doc-subtitle {
  font-size: 1.18rem;
  font-weight: 400;
  color: var(--color-muted);
  line-height: 1.4;
  margin: 0 0 1.4rem;
  max-width: 40rem;
}
.report .doc-byline {
  font-size: 0.76rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--color-muted);
  margin: 0;
}
.report .doc-byline::before {
  content: "";
  display: inline-block;
  width: 0.62em;
  height: 0.62em;
  background: var(--color-accent);
  margin-right: 0.7em;
  vertical-align: baseline;
}
.report .doc-author { color: var(--color-ink); }
.report .doc-byline .doc-date { color: var(--color-muted); }
/* --- 摘要：执行摘要面板 --------------------------------------------------- */
.report .abstract {
  margin: 0 0 3rem;
  padding: 1.35rem 1.6rem;
  background: var(--color-accent-soft);
  border-left: 4px solid var(--color-accent);
}
.report .abstract-title {
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--color-accent);
  margin: 0 0 0.7rem;
}
.report .abstract p { margin: 0 0 0.65rem; font-size: 0.98rem; }
.report .abstract p:last-child { margin-bottom: 0; }
/* --- 章节标题：一级标题的序号放大成版面元素 ------------------------------- */
.report .doc-body h1, .report .doc-body h2, .report .doc-body h3, .report .doc-body h4 {
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: -0.015em;
  color: var(--color-ink);
  margin: 2.6em 0 0.7em;
}
.report .doc-body h1 {
  font-size: 1.55rem;
  padding-top: 0.85em;
  border-top: 2px solid var(--color-ink);
}
.report .doc-body h1 .secnum {
  display: block;
  font-size: 2.7rem;
  line-height: 1;
  color: var(--color-accent);
  letter-spacing: -0.02em;
  margin: 0 0 0.22em;
  font-variant-numeric: tabular-nums;
}
.report .doc-body h2 { font-size: 1.24rem; }
.report .doc-body h3 { font-size: 1.05rem; }
.report .doc-body h4 {
  font-size: 0.82rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-muted);
}
.report .doc-body h2 .secnum, .report .doc-body h3 .secnum, .report .doc-body h4 .secnum {
  color: var(--color-accent);
  margin-right: 0.55em;
  font-variant-numeric: tabular-nums;
}
/* --- 正文 ----------------------------------------------------------------- */
.report .doc-body p { margin: 0 0 1.05rem; }
.report ul, .report ol { margin: 0.6em 0 1.15em 1.35em; padding: 0; }
.report li { margin: 0.34em 0; }
.report ul { list-style: square; }
.report li::marker { color: var(--color-accent); }
.report a {
  color: var(--color-accent);
  text-decoration: none;
  border-bottom: 1px solid #b9c4e4;
}
.report a:hover { border-bottom-color: var(--color-accent); }
.report a.xref { font-weight: 700; border-bottom: none; }
.report a.ref { border-bottom: none; }
.report .xref-broken { color: var(--sem-neg); font-weight: 700; background: #fdeceb; padding: 0 0.25em; }
/* --- callout：直角平面板，左侧结构色条 ------------------------------------ */
.report .callout {
  margin: 1.6em 0;
  padding: 1.05em 1.3em;
  background: #f6f7f9;
  border-left: 4px solid var(--color-ink);
}
.report .callout-title {
  font-weight: 800;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  margin: 0 0 0.5em;
  color: var(--color-ink);
}
.report .callout p:last-child, .report .callout ul:last-child, .report .callout ol:last-child { margin-bottom: 0; }
.report .note { border-left-color: var(--color-accent); background: var(--color-accent-soft); }
.report .note .callout-title { color: var(--color-accent); }
.report .info { border-left-color: #0b7285; background: #e9f6f8; }
.report .info .callout-title { color: #0b7285; }
.report .tip, .report .takeaway { border-left-color: var(--sem-pos); background: #ebf6ee; }
.report .tip .callout-title, .report .takeaway .callout-title { color: var(--sem-pos); }
.report .warning { border-left-color: var(--sem-neg); background: #fdf0ef; }
.report .warning .callout-title { color: var(--sem-neg); }
.report .summary { border-left-color: var(--color-ink); background: #f3f3f4; }
/* --- 定理族 ---------------------------------------------------------------- */
.report .theorem-block {
  margin: 1.6em 0;
  padding: 1em 1.3em;
  background: #f6f7f9;
  border-left: 4px solid var(--color-accent);
}
.report .thm-title { margin: 0 0 0.35em; }
.report .thm-head {
  font-weight: 800;
  color: var(--color-accent);
  text-transform: uppercase;
  font-size: 0.85em;
  letter-spacing: 0.08em;
}
.report .proof { margin: 1.2em 0; color: var(--color-muted); }
.report .proof-title { display: inline; font-style: italic; font-weight: 700; margin-right: 0.4em; }
.report .proof-title + * { display: inline; }
.report .qed { float: right; color: var(--color-muted); }
/* --- 图 -------------------------------------------------------------------- */
.report .figure { margin: 2em 0; }
.report .figure img { max-width: 100%; height: auto; display: block; }
.report figcaption {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-top: 0.7em;
  padding-top: 0.5em;
  border-top: 1px solid var(--color-rule);
  text-align: left;
}
.report figcaption p { display: inline; margin: 0; }
.report .fignum { font-weight: 800; color: var(--color-accent); margin-right: 0.3em; }
/* --- 表格：黑表头 + 细线体，数字右对齐等宽 -------------------------------- */
.report table {
  border-collapse: collapse;
  width: 100%;
  margin: 1.8em 0;
  font-size: 0.9rem;
  font-variant-numeric: tabular-nums;
}
.report caption {
  caption-side: top;
  text-align: left;
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-bottom: 0.6em;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.report .tabnum { font-weight: 800; color: var(--color-accent); }
.report th, .report td { padding: 0.6em 0.9em; text-align: left; border-bottom: 1px solid var(--color-rule); }
.report thead th {
  background: var(--color-ink);
  color: #fff;
  font-weight: 700;
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-bottom: none;
}
.report tbody tr:last-child td { border-bottom: 2px solid var(--color-ink); }
.report tbody tr:hover { background: #f6f7f9; }
/* --- 公式 ------------------------------------------------------------------ */
.report .math-block { margin: 1.4em 0; text-align: center; position: relative; overflow-x: auto; }
.report .eqnum {
  position: absolute; right: 0; top: 50%; transform: translateY(-50%);
  color: var(--color-muted); font-variant-numeric: tabular-nums;
}
/* --- 代码与引用 ------------------------------------------------------------ */
.report pre.code {
  font-family: var(--font-mono);
  font-size: 0.84rem;
  line-height: 1.55;
  background: var(--color-ink);
  color: #e9ecef;
  padding: 1.1em 1.3em;
  overflow-x: auto;
}
.report code {
  font-family: var(--font-mono);
  font-size: 0.88em;
  background: #eef0f3;
  padding: 0.1em 0.35em;
}
.report pre.code code { background: none; padding: 0; }
.report blockquote {
  margin: 1.8em 0;
  padding: 0.2em 0 0.2em 1.4em;
  border-left: 4px solid var(--color-accent);
  color: var(--color-ink);
  font-size: 1.06em;
  font-weight: 500;
}
.report blockquote p { margin: 0 0 0.5em; }
.report blockquote p:last-child { margin-bottom: 0; }
.report hr {
  border: none;
  width: 4rem;
  border-top: 3px solid var(--color-ink);
  margin: 3em 0;
}
/* --- 图表 ------------------------------------------------------------------ */
.report .chart-figure { margin: 2em 0; }
.report .chart-title {
  text-align: left;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-ink);
  margin: 0 0 0.8em;
  padding-bottom: 0.5em;
  border-bottom: 1px solid var(--color-rule);
}
.report .chart-title .fignum { color: var(--color-accent); margin-right: 0.3em; }
.report .chart { width: 100%; height: var(--chart-height); min-height: 240px; }
/* --- KPI 卡片：直角、粗黑描边、超大等宽数字 -------------------------------- */
.report .kpi-grid {
  display: grid;
  gap: 0;                              /* 共边网格：相邻卡片描边重合成整体表格感 */
  margin: 1.8em 0;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
}
.report .kpi-card {
  padding: 1.15rem 1.25rem 1.05rem;
  background: var(--color-bg);
  border: 1.5px solid var(--color-ink);
  border-radius: 0;
  border-top: 5px solid var(--color-accent);
  margin: 0 -1.5px -1.5px 0;           /* 折叠相邻描边 */
  box-shadow: none;
}
.report .kpi-trend-up { border-top-color: var(--sem-pos); }
.report .kpi-trend-down { border-top-color: var(--sem-neg); }
.report .kpi-trend-flat { border-top-color: var(--color-ink); }
.report .kpi-value {
  font-size: 2.05rem;
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--color-ink);
  font-variant-numeric: tabular-nums;
}
.report .kpi-label {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-muted);
  margin-top: 0.4rem;
}
.report .kpi-delta {
  display: inline-block;
  margin-top: 0.55rem;
  font-size: 0.8rem;
  font-weight: 800;
  padding: 0;
  border-radius: 0;
  background: none;
  font-variant-numeric: tabular-nums;
}
.report .kpi-delta.kpi-up { color: var(--sem-pos); }
.report .kpi-delta.kpi-down { color: var(--sem-neg); }
.report .kpi-delta.kpi-flat { color: var(--color-muted); }
.report .kpi-note { font-size: 0.82rem; color: var(--color-muted); margin-top: 0.5rem; }
.report .kpi-note p { margin: 0.2em 0; }
/* --- 风险条款卡 ------------------------------------------------------------ */
.report .clause-card {
  margin: 1.4em 0;
  padding: 1em 1.3em;
  background: #f6f7f9;
  border: none;
  border-left: 5px solid var(--color-muted);
  border-radius: 0;
}
.report .clause-card.risk-high { border-left-color: var(--sem-neg); background: #fdf0ef; }
.report .clause-card.risk-medium { border-left-color: var(--sem-warn); background: #fdf3ec; }
.report .clause-card.risk-low { border-left-color: var(--sem-pos); background: #ebf6ee; }
.report .clause-card p:last-child { margin-bottom: 0; }
.report .clause-head { margin: 0 0 0.5em; font-weight: 800; }
/* --- 内容盒 ----------------------------------------------------------------- */
.report .content-box {
  margin: 1.6em 0;
  padding: 1.1rem 1.35rem;
  background: var(--color-bg);
  border: 1.5px solid var(--color-ink);
  border-left: 6px solid var(--color-accent);
  border-radius: 0;
}
.report .content-box .box-title {
  margin: 0 0 0.6em;
  font-weight: 800;
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--color-accent);
}
.report .content-box p:last-child, .report .content-box ul:last-child, .report .content-box ol:last-child { margin-bottom: 0; }
.report .box-keyfindings { border-left-color: var(--color-accent); }
.report .box-keyfindings .box-title { color: var(--color-accent); }
.report .box-methodology { border-left-color: var(--color-muted); border-color: var(--color-rule); }
.report .box-methodology .box-title { color: var(--color-muted); }
.report .box-recommendations { border-left-color: var(--sem-pos); }
.report .box-recommendations .box-title { color: var(--sem-pos); }
.report .box-limitations { border-left-color: var(--sem-warn); }
.report .box-limitations .box-title { color: var(--sem-warn); }
/* --- 方案对比卡 -------------------------------------------------------------- */
.report .method-grid {
  display: grid;
  gap: 1.1rem;
  margin: 1.8em 0;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}
.report .method-card {
  padding: 1.15rem 1.3rem;
  background: var(--color-bg);
  border: 1.5px solid var(--color-ink);
  border-radius: 0;
}
.report .method-title {
  margin: 0 0 0.7em;
  font-weight: 800;
  font-size: 1.02rem;
  color: var(--color-ink);
  padding-bottom: 0.45em;
  border-bottom: 3px solid var(--color-accent);
}
.report .method-pros, .report .method-cons { margin: 0.7em 0; }
.report .proscons-title {
  margin: 0 0 0.25em;
  font-weight: 800;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
.report .method-pros .proscons-title { color: var(--sem-pos); }
.report .method-cons .proscons-title { color: var(--sem-neg); }
.report .method-pros ul, .report .method-cons ul { margin: 0.2em 0 0.2em 1.2em; }
/* --- 技术流程 ----------------------------------------------------------------- */
.report .tech-flow {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0.55rem;
  margin: 1.8em 0;
}
.report .tech-node {
  flex: 1 1 150px;
  min-width: 130px;
  padding: 0.85em 1.05em;
  background: #f6f7f9;
  border: 1px solid var(--color-rule);
  border-top: 3px solid var(--color-accent);
  border-radius: 0;
}
.report .tech-node-title {
  margin: 0 0 0.35em;
  font-weight: 800;
  font-size: 0.86rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-ink);
}
.report .tech-node p { margin: 0.2em 0; font-size: 0.86rem; color: var(--color-muted); }
.report .tech-arrow {
  align-self: center;
  flex: 0 0 auto;
  width: 0; height: 0;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-left: 11px solid var(--color-ink);
}
/* --- 响应式 -------------------------------------------------------------------- */
@media (max-width: 640px) {
.report { padding: 0 1.2rem 3.5rem; border-top-width: 8px; }
.report .doc-header { padding-top: 2.2rem; }
.report .doc-title { font-size: 2rem; }
.report .doc-body h1 .secnum { font-size: 2rem; }
.report .kpi-grid { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.report .method-grid { grid-template-columns: 1fr; }
.report .tech-flow { flex-direction: column; }
.report .tech-arrow {
    align-self: center;
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-top: 11px solid var(--color-ink);
    border-bottom: 0;
  }
}
/* --- 打印 ------------------------------------------------------------------------ */
@media print {
.report { background: #fff; }
.report { padding: 0; max-width: none; border-top: 8px solid var(--color-ink); }
.report .doc-body h1, .report .doc-body h2, .report .doc-body h3 { break-after: avoid; }
.report .kpi-card, .report .clause-card, .report .method-card, .report .content-box, .report .tech-node, .report .figure img { break-inside: avoid; }
.report .chart { break-inside: avoid; }
.report pre.code { background: #f4f4f4; color: #222; border: 1px solid var(--color-rule); }
.report tbody tr:hover { background: none; }
.report a { color: var(--color-text); border-bottom: none; }
}
/* ===========================================================================
   _polish.css —— 通用打磨层（非主题；下划线开头，不进入 --list-styles）
   ---------------------------------------------------------------------------
   由 build.py 在每次渲染时自动加载，级联固定为：
       _core.css → 主题 → 本文件 → 可选 --extra-css
   职责：跨主题一致的细节修正，不改变任何主题的气质。只做五类事：
   数字排版（等宽对齐）、外链观感、嵌套列表间距、宽表滚动与图片兜底、
   打印分页与可达性。全部规则变量驱动 / 低特异性，任何主题都可安全叠加；
   主题如需不同行为，用更高特异性选择器或 --extra-css 覆盖即可。
   =========================================================================== */
/* --- 1. 数字排版：表格与 KPI 的数字一律等宽对齐 --------------------------- */
.report td, .report th { font-variant-numeric: tabular-nums lining-nums; }
.report .kpi-value, .report .kpi-delta, .report .eqnum, .report .secnum { font-variant-numeric: tabular-nums lining-nums; }
/* --- 2. 外链：上标化处理，弱化对行文的打断 ----------------------------- */
.report .ref {
  /* font-size: 0.78em;
  vertical-align: 0.28em;
  line-height: 0; */
  padding: 0 0.08em;
}
/* --- 3. 嵌套列表：子列表收紧上下间距（引擎支持嵌套后各主题的统一默认） ------ */
.report li > ul, .report li > ol { margin: 0.25em 0 0.35em 1.25em; }
/* --- 4. 图片与画布的兜底约束、宽表滚动条观感 -------------------------------- */
.report img { max-width: 100%; height: auto; }
.report .chart > canvas, .report .chart > div { max-width: 100%; }
.report .table-scroll { scrollbar-width: thin; }
.report .table-scroll::-webkit-scrollbar { height: 8px; }
.report .table-scroll::-webkit-scrollbar-thumb {
  background: var(--color-rule, #ccc);
  border-radius: 4px;
}
/* --- 5. 可达性：键盘焦点可见 -------------------------------------------------- */
.report a:focus-visible {
  outline: 2px solid var(--color-accent, #06c);
  outline-offset: 2px;
  border-radius: 2px;
}
/* --- 6. 打印与 PDF：孤行/寡行、标题吸附、页边距、跨页表头 ---------------------- */
@media print {
@page { margin: 18mm 16mm; }
.report p, .report li { orphans: 3; widows: 3; }
.report .doc-body h1, .report .doc-body h2, .report .doc-body h3, .report .doc-body h4 { break-after: avoid; }
.report .chart-figure, .report .figure, .report .math-block, .report .theorem-block, .report .kpi-grid, .report .method-grid, .report .tech-flow { break-inside: avoid; }
.report .doc-header { break-after: avoid; }
.report thead { display: table-header-group; }
/* 跨页表格重复表头 */
.report .ref { color: inherit; }
/* 打印时外链不抢焦点 */
}
