/* ============================================================
   press.css —— 新闻纸 / 出版物视觉层
   加载顺序：base.css（结构）→ press.css（视觉，覆盖全部变量）

   三件事：
     1) 配色：新闻纸米白 + 朱红强调，其余灰阶克制
     2) 字体：衬线标题 + 无衬线正文 + 等宽元信息
     3) 纸纹：两层 SVG fractalNoise（高频纤维 + 低频斑驳），
        stitchTiles="stitch" 保证平铺无缝，放大不显噪点
   ============================================================ */
/* ---------- 1. 纸纹（唯一纹理来源，全站复用） ---------- */
:root{
  /* 高频纸纤维：baseFrequency 0.9 → 颗粒极细；stitchTiles 消除拼接缝 */
  --grain-fine: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='f' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch' seed='11'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23f)'/%3E%3C/svg%3E");
  /* 低频斑驳：大尺度明暗起伏，模拟纸张不平整 */
  --grain-coarse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='800'%3E%3Cfilter id='c' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.011' numOctaves='2' stitchTiles='stitch' seed='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='800' height='800' filter='url(%23c)'/%3E%3C/svg%3E");

  --grain-opacity: .030;   /* 杂志纸更光滑：纹理比新闻纸弱 */
  --grain-blend: multiply;
}

/* ---------- 2. 配色：Magazine 杂志（默认） ----------
   杂志 ≠ 新闻纸：底更干净、黑更黑、朱红更纯更跳，栏线更明确。
   对比度均为实测（取 paper / surface / paper-2 三种底的最小值）。        */
:root, [data-theme="magazine"]{
  --paper: #FAFAF8;
  --paper-2: #F0EFEA;
  --surface: #FFFFFF;

  --bg: var(--paper);
  --bg-elev: var(--paper-2);
  --bg-card: var(--surface);
  --bg-track: #E2DED4;
  --bg-blur: rgba(244, 242, 237, .94);

  --ink: #100F0C;        /* 18.34:1 —— 杂志的高对比黑 */
  --ink-2: #45423B;      /*  9.59:1 */
  --ink-3: #666259;      /*  5.81:1 */

  --line: #CFCBC1;
  --line-strong: #9C978C;
  --accent-line: #D8B4AC;
  --grid-line: rgba(16, 15, 12, .09);
  --scan-c: rgba(16, 15, 12, .012);

  --accent: #CE2C1F;     /* 朱红·填充态，白字反白 5.24:1 */
  --accent-2: #A62012;   /* 朱红·文本态 7.08:1 */
  --accent-deep: #7E1509;
  --on-accent: #FFFFFF;
  --accent-grad: linear-gradient(112deg, #CE2C1F 0%, #A62012 100%);
  --accent-grad-2: linear-gradient(112deg, #A62012 0%, #7E1509 100%);
  --accent-grad-3: linear-gradient(112deg, #CE2C1F 0%, #A52412 100%);
  --accent-glow: rgba(206, 44, 31, .18);
  --shine-c: rgba(255, 255, 255, .5);

  --ok: #1F6B4A;         /* 6.16:1 */
  --warn: #7E5310;       /* 6.42:1 */
  --bad: #A52412;        /* 7.02:1 */

  --cool: #2F3A3E;       /* 深冷石墨，图表第二色 */

  --radius: 2px;
  --radius-sm: 2px;
  --radius-lg: 4px;
  --shadow: 0 1px 2px rgba(22, 21, 15, .07);
  --shadow-3d: 0 1px 2px rgba(22, 21, 15, .07);

  --orb-1: radial-gradient(circle, rgba(193, 52, 31, .05) 0%, transparent 66%);
  --orb-2: radial-gradient(circle, rgba(60, 74, 82, .04) 0%, transparent 66%);
  --space-bg: none;
  --hero-glow: none;

  --font-serif: "Spectral", "Noto Serif SC", "Source Han Serif SC", "Songti SC", Georgia, serif;
  --font-sans: "Inter", "Noto Sans SC", "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;

  --font-display: var(--font-serif);

  /* 玻璃与 3D：本方案全部停用，但保留变量以免旧规则报错 */
  --3d: 0; --hud: 0; --fx: 0;
  --persp: 0px; --lift: 0px; --tilt-max: 0deg; --parallax: 0;
  --glass-bg: var(--surface);
  --glass-bg-2: var(--paper-2);
  --glass-brd: var(--line);
  --glass-hi: rgba(255, 255, 255, .6);
  --glass-lo: rgba(22, 21, 15, .06);
  --glass-blur: 0px;
  --glass-sat: 100%;
  --glass-shadow: none;
  --specular: rgba(255, 255, 255, .3);
  --blob-1: none; --blob-2: none; --blob-3: none;
}

/* ---------- 3. 配色：Newsprint 新闻纸（备选，可对比） ----------
   比杂志更朴素：底偏米黄、黑稍浅、朱红偏暗、纹理更明显。            */
[data-theme="newsprint"]{
  --paper: #F4F2ED;
  --paper-2: #EAE7DF;
  --surface: #FFFFFF;

  --bg: var(--paper);
  --bg-elev: var(--paper-2);
  --bg-card: var(--surface);
  --bg-track: #E2DED4;
  --bg-blur: rgba(244, 242, 237, .94);

  --ink: #16150F;        /* 14.80:1 */
  --ink-2: #4A4740;      /*  7.50:1 */
  --ink-3: #67635B;      /*  4.84:1 */

  --line: #D6D2C7;
  --line-strong: #B8B3A6;
  --accent-line: #C9A9A2;
  --grid-line: rgba(22, 21, 15, .08);
  --scan-c: rgba(22, 21, 15, .012);

  --accent: #C1341F;     /* 填充态，白字反白 5.56:1 */
  --accent-2: #8F2413;   /* 文本态 6.99:1 */
  --accent-deep: #6E1B0E;
  --on-accent: #FFFFFF;
  --accent-grad: linear-gradient(112deg, #C1341F 0%, #8F2413 100%);
  --accent-grad-2: linear-gradient(112deg, #8F2413 0%, #6E1B0E 100%);
  --accent-grad-3: linear-gradient(112deg, #C1341F 0%, #A32A18 100%);
  --accent-glow: rgba(193, 52, 31, .16);
  --shine-c: rgba(255, 255, 255, .45);

  --ok: #2E6B4F; --warn: #835A14; --bad: #A32A18;
  --cool: #3C4A52;

  --grain-opacity: .050;  /* 新闻纸更粗糙 */
  --grain-blend: multiply;
}

/* ---------- 4. 配色：Night 深色 ---------- */
[data-theme="night"]{
  --paper: #0F0E0C;
  --paper-2: #141310;
  --surface: #191816;

  --bg: var(--paper);
  --bg-elev: var(--paper-2);
  --bg-card: var(--surface);
  --bg-track: #22201D;
  --bg-blur: rgba(15, 14, 12, .94);

  --ink: #F2F0EA;        /* 16.93:1 */
  --ink-2: #A9A59B;      /*  7.85:1 */
  --ink-3: #8A857A;      /*  5.25:1 */

  --line: #302D28;
  --line-strong: #45413A;
  --accent-line: #6E3B2E;
  --grid-line: rgba(242, 240, 234, .09);
  --scan-c: rgba(242, 240, 234, .012);

  --accent: #FF6B52;     /* 6.87:1，填充时配近黑字 6.82:1 */
  --accent-2: #FF7A63;   /* 文本态朱红 7.55:1 */
  --accent-deep: #C74A32;
  --on-accent: #100F0C;
  --accent-grad: linear-gradient(112deg, #FF6B52 0%, #C74A32 100%);
  --accent-grad-2: linear-gradient(112deg, #C74A32 0%, #8F2413 100%);
  --accent-grad-3: linear-gradient(112deg, #FF6B52 0%, #FF7A63 100%);
  --accent-glow: rgba(255, 107, 82, .20);
  --shine-c: rgba(242, 240, 234, .10);

  --ok: #6FB58F; --warn: #D8A855; --bad: #F07561;
  --cool: #93A3AC;

  --grain-opacity: .034;
  --grain-blend: screen;
}

/* ---------- 4. 纸纹落地：固定层，不随内容滚动 ---------- */
body::before{
  content: "";
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background-image: var(--grain-fine), var(--grain-coarse);
  background-size: 300px 300px, 800px 800px;
  background-repeat: repeat, repeat;
  opacity: var(--grain-opacity);
  mix-blend-mode: var(--grain-blend);
}
body::after{
  content: "";
  position: fixed; inset: 0; z-index: -2; pointer-events: none;
  background: var(--space-bg, none);
}
main, .wrap, .wrap-narrow, section, footer, header{ position: relative; z-index: 1; }

/* ---------- 5. 字体：衬线标题 + 无衬线正文 + 等宽元信息 ---------- */
body{
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink);
  background: var(--bg);
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4{
  font-family: var(--font-serif);
  font-weight: 600;
  letter-spacing: -.005em;
  color: var(--ink);
}
h1{ font-size: 32px; line-height: 1.2; font-weight: 700; }
h2{ font-size: 22px; line-height: 1.3; }
h3{ font-size: 18px; line-height: 1.4; }
.hero h1, .report-title{ font-size: 44px; line-height: 1.12; letter-spacing: -.02em; }

/* 元信息 / 编号 / 数字：等宽 */
.eyebrow, .sec-no, .meta, .tag, .stat-label, .chart-cap, .src-line, table th, .mono, time, .kbd{
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
.eyebrow{ font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }

/* 长文正文：无衬线 + 舒适行距 */
.prose p, .lead, section.chapter p{
  font-family: var(--font-sans);
  font-size: 17px;
  line-height: 1.75;
}
a{ color: var(--accent-2); text-decoration: none; border-bottom: 1px solid transparent; }
a:hover{ border-bottom-color: var(--accent-2); }
::selection{ background: var(--accent); color: var(--on-accent); }

/* ---------- 6. 去装饰：发光 / 阴影 / 玻璃 / 3D 全部归零 ---------- */*{ text-shadow: none !important; }
.stat, .panel, .line-card, .chart-box, .mini-item, .concl, .hero-card{
  backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  box-shadow: none !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--radius-lg) !important;
  background: var(--bg-card) !important;
  transform: none !important;
}
.card3d, .card3d *{ transform: none !important; }
.brand-mark, .btn3d, button{ box-shadow: none !important; }

/* 按钮：方角 + 描边，朱红只给主操作 */
.btn3d, .btn, button.btn{
  border-radius: var(--radius);
  font-family: var(--font-sans);
  font-weight: 500;
}
.btn-primary{
  background: var(--accent); color: var(--on-accent);
  border: 1px solid var(--accent);
}
.btn-primary:hover{ background: var(--accent-deep); border-color: var(--accent-deep); }

/* 分隔优先用 hairline，不用色块 */
section.chapter + section.chapter{ border-top: 1px solid var(--line); }
input[type="search"], input[type="text"], select{
  width: 100%; padding: 9px 12px; font-size: 15px; font-family: var(--font-sans);
  color: var(--ink); background: var(--surface);
  border: 1px solid var(--line-strong); border-radius: var(--radius);
}
input:focus-visible, select:focus-visible, button:focus-visible, th button:focus-visible{
  outline: 2px solid var(--accent); outline-offset: 1px;
}
select{ width: auto; flex: 0 0 auto; }
.table-wrap{ overflow-x: auto; }
th[aria-sort] button{ color: var(--ink); font-weight: 600; }

/* 状态徽章：形状 + 文字表意，颜色只作辅助 */
.badge{
  display: inline-flex; align-items: center; gap: 5px;
  font-family: var(--font-mono); font-size: 11px; letter-spacing: .04em;
  padding: 2px 8px; border-radius: var(--radius);
  border: 1px solid var(--line-strong); color: var(--ink-2); background: var(--surface);
}
.badge::before{ content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ink-3); }
.badge[data-grade="verified"]{ border-style: solid; }
.badge[data-grade="verified"]::before{ background: var(--ok); }
.badge[data-grade="third-party"]{ border-style: dashed; }
.badge[data-grade="third-party"]::before{ background: var(--cool); }
.badge[data-grade="media"]{ border-style: dotted; }
.badge[data-grade="media"]::before{ background: var(--warn); }
.badge[data-grade="excluded"]{ border-style: solid; color: var(--ink-3); }
.badge[data-grade="excluded"]::before{ background: var(--bad); }

/* 主题切换（极小化，不抢视觉） */
.theme-toggle{
  display: inline-flex; gap: 0; border: 1px solid var(--line-strong); border-radius: var(--radius);
  overflow: hidden;
}
.theme-toggle button{
  padding: 5px 10px; font-size: 12px; cursor: pointer;
  background: var(--surface); color: var(--ink-2); border: 0; font-family: var(--font-mono);
}
.theme-toggle button[aria-pressed="true"]{ background: var(--ink); color: var(--paper); }

/* ---------- 7. 打印：强制 Paper，去交互件 ---------- */
@media print {:root, [data-theme]{
    --bg: #fff; --bg-elev: #f4f2ed; --bg-card: #fff;
    --ink: #111; --ink-2: #333; --ink-3: #555;
    --accent: #8F2413; --accent-2: #8F2413; --line: #ccc; --line-strong: #999;
  }
body::before{ display: none; }
.theme-toggle{ display: none !important; }
table{ font-size: 9.5pt; }
a[href^="http"]::after{ content: " (" attr(href) ")"; font-size: 8pt; color: #555; }
section.chapter{ padding: 14pt 0 !important; break-inside: auto; }
h1, h2, h3{ break-after: avoid; }
}

@media (prefers-reduced-motion: reduce) {*{ animation-duration: .01ms !important; transition-duration: .01ms !important; }
html{ scroll-behavior: auto; }
}

/* ============================================================
   双主题适配补丁（追加段，不改动上方任何既有规则）

   为什么单独拆一条 --line-ui：
     --line 是装饰性分隔线，视觉上要弱（杂志 hairline 就该若隐若现），
     但表格边框、输入框、按钮、徽章属于「功能性边界」，WCAG 1.4.11
     要求 ≥3:1。共用一条变量时，深色下只有 1.41、杂志下只有 1.55，
     都低于阈值。因此拆成两条：装饰用 --line，功能用 --line-ui。
   实测（取主底 / 次级底的最小值）：
     magazine  #87837A  3.62 / 3.28  ✅
     newsprint #87837A  3.38 / 3.06  ✅
     night     #827A6E  4.56 / 4.19  ✅
   ============================================================ */
:root, [data-theme="magazine"]{ --line-ui: #87837A; }
[data-theme="newsprint"]{ --line-ui: #87837A; }
[data-theme="night"]{ --line-ui: #827A6E; }

/* 功能性边界统一走 --line-ui（只改颜色，不动线型与线宽） */
table, thead, tbody, tr, th, td, input, select, textarea, button, .btn, .btn3d, .badge, .theme-toggle, .theme-toggle button, .page-nav, .page-nav button, #toTop, .stat, .panel, .line-card, .chart-box, .mini-item, .concl{
  border-color: var(--line-ui);
}
/* 徽章的线型（实线/虚线/点线）承载语义，不受影响 */
/* 深色主题下的图形与图表兜底 */
[data-theme="night"] svg, [data-theme="night"] canvas, [data-theme="night"] img, [data-theme="night"] video{
  /* 纯白插画在深底上刺眼；轻微降亮并保持对比 */
  filter: brightness(.94) contrast(1.02);
}
[data-theme="night"] ::selection{ background: var(--accent); color: var(--on-accent); }

/* 主题切换时的平滑过渡（颜色层面，不动布局） */
body, .topbar-c, .page-nav, .page-rail, .theme-toggle, table, th, td, .stat, .panel{
  transition: background-color .22s var(--ease), color .22s var(--ease),
              border-color .22s var(--ease);
}

/* ============================================================
   数据台账 · fact ledger（图形化指标卡片）
   全部走语义变量，三档主题（杂志 / 新闻纸 / 夜间）自动适配

   设计约束（2026-09-20 由表格改为图形化）：
     这 18 条主张的口径、单位、年份互不相同，因此**不能**用柱长编码数值 ——
     那等于跨口径比较。图形化只落在可比的分类维度：
       · 可信度分级 → 概览条形图 + 卡片顶部色条（同一套配色，形成呼应）
       · 时效状态   → 概览计数 + 卡片角标
       · 异常条目   → 已勘误用斜纹底 + 红描边 + 数值删除线；
                      缺统计日期用虚线描边
     卡片网格由 auto-fill 自动塌缩，桌面 3–4 列 / 平板 2 列 / 移动 1 列。
   ============================================================ */

.fact-ledger{
  margin: 32px 0 40px;
  border-top: 2px solid var(--ink);
  padding-top: 16px;
}
.fact-ledger + *{ margin-top: 0; }

/* ---------- 头部 ---------- */
.fl-head{ margin-bottom: 20px; }
.fl-head-row{
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; flex-wrap: wrap; margin-bottom: 8px;
}
.fl-head h2{
  font-family: var(--font-serif);
  font-size: 20px; font-weight: 700; letter-spacing: -.01em;
  margin: 0; color: var(--ink);
}
.fl-total{
  font-family: var(--font-mono); font-size: 12px;
  color: var(--ink-3); letter-spacing: .04em;
  border: 1px solid var(--line-ui); border-radius: 2px;
  padding: 2px 8px; white-space: nowrap;
}
.fl-total b{ color: var(--ink); font-weight: 600; font-size: 13px; }

.fl-meta{
  font-family: var(--font-mono);
  font-size: 12px; line-height: 1.75; color: var(--ink-3);
  margin: 0 0 6px; font-variant-numeric: tabular-nums;
}
.fl-meta time{ color: var(--ink-2); }
.fl-policy{
  font-size: 13px; line-height: 1.65; color: var(--ink-2);
  margin: 0; max-width: 68ch;
}

/* ---------- 概览：可比的分类维度 ---------- */
.fl-overview{
  display: grid;
  /* 明确两栏，不用 auto-fit —— 它会把两栏各拉到 700px 宽，
     配合 .fl-age 的「数值靠右」会在中间留下 600px 空白。 */
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px 32px;
  max-width: 860px;              /* 限制总宽，保持信息紧凑 */
  padding: 16px 0 20px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  margin-bottom: 20px;
}
.fl-ov-title{
  font-family: var(--font-mono);
  font-size: 11px; font-weight: 600; letter-spacing: .06em;
  color: var(--ink-2); margin: 0 0 10px;
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
}
.fl-ov-hint{
  font-weight: 400; letter-spacing: 0; color: var(--ink-3); font-size: 10.5px;
}

/* 条形图：长度 = 条目数占比（计数，与数值无关） */
.fl-bars{ list-style: none; margin: 0; padding: 0; }
.fl-bar{
  display: grid;
  grid-template-columns: 8.5em 1fr 1.6em;
  align-items: center; gap: 10px;
  padding: 3px 0;
  font-size: 12.5px; color: var(--ink-2);
}
.fl-bar .k{ white-space: nowrap; }
.fl-bar .track{
  display: block; height: 8px; border-radius: 1px;
  background: var(--bg-track); overflow: hidden;
}
.fl-bar .track i{ display: block; height: 100%; border-radius: 1px; }
.fl-bar .v{
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
  text-align: right; color: var(--ink); font-weight: 600;
}
/* 分级配色：与卡片顶部色条共用，四档在概览里即可区分 */
.fl-bar.g-verified    .track i{ background: var(--ink); }
.fl-bar.g-third-party .track i{ background: var(--cool); }
.fl-bar.g-media       .track i{ background: var(--warn); }
.fl-bar.g-disputed    .track i{ background: var(--bad); }

/* 时效状态列表 */
.fl-ages{ list-style: none; margin: 0; padding: 0; }
.fl-age{
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 10px; padding: 5px 0 5px 12px;
  font-size: 12.5px; color: var(--ink-2);
  border-left: 3px solid var(--line);
  margin-bottom: 6px;
}
.fl-age .v{
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
  font-size: 14px; font-weight: 600; color: var(--ink);
}
.fl-age.g-verified{ border-left-color: var(--ink); }
.fl-age.g-media{ border-left-color: var(--warn); }
.fl-age.g-disputed{ border-left-color: var(--bad); }
.fl-age.g-disputed .v{ color: var(--bad); }

/* 窄屏：概览两栏改单栏 */
@media (max-width: 620px) {
  .fl-overview{ grid-template-columns: 1fr; max-width: none; }
}

/* ---------- 指标卡片网格 ---------- */
.fl-cards{
  list-style: none; margin: 0; padding: 0;
  display: grid;
  /* min(300px,100%) 保证窄屏只出 1 列且不溢出 */
  grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
  gap: 14px;
}

.fl-card{
  position: relative;
  display: flex; flex-direction: column;
  padding: 16px 16px 14px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 2px;
  overflow: hidden;
}
/* 顶部色条：一眼读出可信度，与概览条形图同色 */
.fl-card-bar{
  position: absolute; top: 0; left: 0; right: 0; height: 3px;
}
.fl-card.g-verified    .fl-card-bar{ background: var(--ink); }
.fl-card.g-third-party .fl-card-bar{ background: var(--cool); }
.fl-card.g-media       .fl-card-bar{ background: var(--warn); }
.fl-card.g-disputed    .fl-card-bar{ background: var(--bad); }

.fl-card-claim{
  font-family: var(--font-serif);
  font-size: 14.5px; font-weight: 600; line-height: 1.45;
  color: var(--ink); margin: 6px 0 12px;
  overflow-wrap: anywhere;
}

/* 数值：卡片的主视觉 */
.fl-card-figure{
  margin: 0 0 4px;
  display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap;
}
.fl-card-figure b{
  font-family: var(--font-mono);
  font-size: 26px; font-weight: 600; line-height: 1.1;
  letter-spacing: -.01em;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}
.fl-card-figure .u{
  font-family: var(--font-mono);
  font-size: 12.5px; color: var(--ink-3);
}
/* 长数值（如「算力 30–40 / 人工调校 40–50 / 授权 10–15」）在 26px 下会撑成三行，
   把卡片拉得比同行高出一截。降一档字号并收紧行高，保持网格整齐。
   阈值由 JS 按字符数判定（见 data.facts.js 的 is-long）。 */
.fl-card-figure.is-long b{ font-size: 15px; line-height: 1.45; }
.fl-card-figure.is-long .u{ font-size: 11.5px; }

.fl-card-sub{
  font-size: 12.5px; color: var(--ink-2);
  margin: 0 0 12px; line-height: 1.5;
}
.fl-card-sub .kk{
  font-family: var(--font-mono); font-size: 10.5px;
  color: var(--ink-3); letter-spacing: .04em;
  margin-right: 6px;
}

.fl-card-meta{
  margin: 0; padding: 10px 0 0;
  border-top: 1px solid var(--line);
  font-size: 12px; line-height: 1.55;
}
.fl-card-meta > div{
  display: grid; grid-template-columns: 5.2em 1fr;
  gap: 8px; margin-bottom: 4px;
}
.fl-card-meta dt{
  font-family: var(--font-mono); font-size: 10.5px;
  color: var(--ink-3); letter-spacing: .03em;
  padding-top: 1px;
}
.fl-card-meta dd{ margin: 0; color: var(--ink-2); overflow-wrap: anywhere; }

.fl-card-note{
  font-size: 11.5px; line-height: 1.6; color: var(--ink-3);
  margin: 10px 0 0; padding: 8px 10px;
  background: var(--paper-2); border-radius: 2px;
  overflow-wrap: anywhere;
}

.fl-card-foot{
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  margin-top: auto; padding-top: 12px;
}
.fl-grade{
  display: inline-block; font-size: 11px; padding: 2px 7px;
  border: 1px solid var(--line-ui); border-radius: 2px;
  color: var(--ink-2); white-space: nowrap;
  font-family: var(--font-mono); letter-spacing: .02em;
}
.fl-tag{
  display: inline-block; font-size: 10.5px; padding: 2px 6px;
  border-radius: 2px; border: 1px solid currentColor;
  font-family: var(--font-mono); white-space: nowrap;
  margin-left: auto;
}
.fl-tag.is-warn{ color: var(--warn); }
.fl-tag.is-bad{ color: var(--bad); }

/* ---------- 异常条目的特殊视觉 ---------- */

/* 已勘误：斜纹底 + 红描边 + 数值删除线（明示「不要采用这个数字」） */
.fl-card.is-disputed{
  border-color: var(--bad);
  background-color: var(--surface);
  background-image: repeating-linear-gradient(
    135deg,
    transparent 0 7px,
    rgba(165, 36, 18, .07) 7px 14px
  );
}
.fl-card.is-disputed .fl-card-claim{ color: var(--ink); }
.fl-card.is-disputed .fl-card-figure b{
  color: var(--bad);
  text-decoration: line-through;
  text-decoration-thickness: 2px;
}
.fl-card.is-disputed .fl-grade{ border-color: var(--bad); color: var(--bad); }

/* 缺统计日期：虚线描边 + 灰色顶条（提示时效不明）
   必须排除 .is-disputed —— 已勘误那条本身也没有日期，会同时挂上两个类；
   不加 :not() 的话，这里后定义的虚线灰边框会覆盖掉上面的红色警示，
   把最强的信号（不采用该数字）降级成最弱的信号（日期缺失）。 */
.fl-card.is-nodate:not(.is-disputed){
  border-style: dashed;
  border-color: var(--line-ui);
}
.fl-card.is-nodate:not(.is-disputed) .fl-card-bar{
  background: repeating-linear-gradient(
    90deg, var(--line-ui) 0 6px, transparent 6px 12px
  );
}

/* ---------- 打印：2 列网格、去装饰 ---------- */
@media print {
  .fact-ledger{ break-inside: avoid; }
  .fl-cards{ grid-template-columns: 1fr 1fr; gap: 8pt; }
  .fl-card{
    break-inside: avoid;
    border: 1px solid #999 !important;
    background-image: none !important;   /* 斜纹印刷浪费墨且发灰 */
    padding: 8pt;
  }
  .fl-card-bar{ height: 2px; }
  .fl-card-figure b{ font-size: 16pt; }
  .fl-card-claim{ font-size: 9.5pt; }
  .fl-card-meta, .fl-card-sub, .fl-card-note{ font-size: 8pt; }
  .fl-card.is-disputed{ border-color: #000 !important; }
  .fl-card.is-disputed .fl-card-figure b{
    text-decoration: line-through;
  }
  .fl-overview{ border-color: #999; }
  .fl-bar .track{ background: #ddd; }
  .fl-bar .track i{ background: #555 !important; }
}
