/* ==========================================================================
   FinLearn 组件档位收尾（第二轮）
   --------------------------------------------------------------------------
   收敛审计剩余问题（每页 1—2 种）：
     · .filter-bar / .case-card / .video-card / .accordion / nav.toc 圆角 10px
       → 归入 --rd-lg(12px)，与卡片一致
     · input.input 内边距 6px 40px 6px 12px（右侧为图标留位）
       → 归入 6px 40px 6px 12px（保留图标位），但确认落在网格上
     · select.select 的 6px 12px 已是档位，只需声明
     · ul.data-list 的 padding-left 14.3px（默认 UA 的 40px 被覆盖成 em 值）
       → 归入 20px
     · code 字号 11.7px → 归入 12px
   目标：全站取值 100% 落在 4px 网格与固定档位上。
   ========================================================================== */

/* ==========================================================================
   0. 关键一步：把上一代变量重定向到新档位
   --------------------------------------------------------------------------
   审计发现残留的 10px 圆角与 6px 16px 内边距，全部来自旧的
   --radius-lg / --space-* / --pad-btn 变量仍在被业务样式引用。
   直接改这些变量的值，比逐个组件覆盖更彻底，也更不容易漏。
   ========================================================================== */
:root {
  /* 上一代圆角变量 → 新档位 */
  --radius-xs: var(--rd-xs);
  --radius-sm: var(--rd-sm);
  --radius-md: var(--rd-md);
  --radius-lg: var(--rd-lg);
  --radius-xl: var(--rd-lg);

  /* 上一代间距变量 → 新档位（4px 网格） */
  --space-1: var(--sp-1);
  --space-2: var(--sp-2);
  --space-3: var(--sp-3);
  --space-4: var(--sp-4);
  --space-5: var(--sp-5);
  --space-6: var(--sp-6);
  --space-8: var(--sp-8);
  --space-10: var(--sp-10);
  --space-12: var(--sp-10);

  /* 上一代按钮变量 → 新档位 */
  --pad-btn: 6px var(--sp-3);
  --pad-btn-sm: 4px var(--sp-3);
}

/* 按钮内边距：统一 6px 12px（审计实测仍有 6px 16px） */
.page-body .btn,
.page-body a.btn,
.page-body button.btn {
  padding: 6px var(--sp-3);
}
.page-body .btn--hero-solid,
.page-body .btn--hero-ghost,
.page-body .btn-lg { padding: 8px var(--sp-5); }
.page-body .btn-sm { padding: 4px var(--sp-3); }

/* 圆角仍然残留的元素：全部归到 --rd-lg */
.page-body .mock,
.page-body .cap__icon,
.page-body .path-item,
.page-body .ws-strip,
.page-body .ws-toolbar,
.page-body .state,
.page-body .chat,
.page-body .msg__bubble,
.page-body .avatar {
  border-radius: var(--rd-lg);
}
.page-body .avatar { border-radius: var(--rd-full); }

/* ApexCharts 图例与提示框：图表库内部取值，单独归位 */
.page-body .apexcharts-legend { padding: 0 var(--sp-3); gap: var(--sp-2); }
.page-body .apexcharts-legend-text { padding-left: var(--sp-3); font-size: var(--fz-xs) !important; }
.page-body .apexcharts-tooltip { border-radius: var(--rd-md); font-size: var(--fz-xs); }
.page-body .apexcharts-xaxistooltip,
.page-body .apexcharts-yaxistooltip { padding: var(--sp-2) var(--sp-3); font-size: var(--fz-xs); }

/* 图表内由脚本写入的数值文本 */
.page-body .num { font-size: var(--fz-xs); }
.page-body b.num, .page-body strong.num { font-size: var(--fz-base); }

/* 勾选项 */
.page-body label.check,
.page-body .check { padding: var(--sp-2) var(--sp-3); }

/* 表头（部分页面仍是 10px 12px） */
.page-body table > thead > tr > th { padding: var(--sp-2) var(--sp-3); }

/* 下拉箭头留位固定 */
.page-body select,
.page-body select.select { padding: 6px var(--sp-6) 6px var(--sp-3); }

/* 带图标输入框左侧留位固定 */
.page-body input.input { padding: 6px var(--sp-3); }
.page-body .input-icon input.input,
.page-body input.input.has-icon { padding: 6px var(--sp-10) 6px var(--sp-3); }

/* ==========================================================================
   11. 字号收尾
   --------------------------------------------------------------------------
   审计实测残留：mock__url 10px、mock 内部 9px、图表内 12.25px、
   首页 mock 的 b 17px。全部归到字号档位。
   ========================================================================== */
.page-body .mock__url,
.page-body .mock__kpi span,
.page-body .mock__tr--head,
.page-body .mock-float__label,
.page-body .mock-dot { font-size: var(--fz-micro); }

.page-body .mock__kpi b,
.page-body .mock-float__value { font-size: var(--fz-lg); font-weight: var(--fw-bold); }

/* 图表库写入的默认字号（12.25px = 0.875em 的默认档） */
.page-body .apexcharts-text,
.page-body .apexcharts-legend-text,
.page-body .apexcharts-tooltip,
.page-body text { font-size: var(--fz-xs) !important; }

/* 表格内加粗的小标签 */
.page-body b:not(.num),
.page-body strong:not(.num) { font-size: inherit; font-weight: var(--fw-semibold); }

/* ==========================================================================
   12. 最后三处收尾（审计实测仅剩这 3 项）
   ========================================================================== */

/* (1) 勾选项：learn.css 的 .check 用 --space-2 --space-5 且选择器更具体，
       这里用 !important 收口到 8px 12px（此项为审计最后残留之一）。 */
.page-body label.check,
.page-body .check,
.page-body .checklist label,
.page-body label:has(> input[type="checkbox"]) {
  padding: var(--sp-2) var(--sp-3) !important;
}

/* (2) 财务图表页的 .kpi-table 表头：finance-viz.css 的 10px 12px 需强制收口 */
.page-body table.kpi-table > thead > tr > th,
.page-body .kpi-table > thead > tr > th,
.page-body .kpi-table thead th,
.page-body table.kpi-table th {
  padding: var(--sp-2) var(--sp-3) !important;
}

.page-body table.kpi-table > tbody > tr > td,
.page-body .kpi-table > tbody > tr > td,
.page-body .kpi-table td,
.page-body table.kpi-table td {
  padding: var(--sp-2) var(--sp-3) !important;
}

/* (3) 图表内文本：ApexCharts 把字号写成 SVG 属性，需强制压制到档位 */
.page-body svg text,
.page-body .apexcharts-canvas text,
.page-body .apexcharts-svg text,
.page-body .apexcharts-text,
.page-body .apexcharts-legend-text {
  font-size: var(--fz-xs) !important;
}

.page-body .apexcharts-datalabel,
.page-body .apexcharts-datalabels text { font-size: var(--fz-sm) !important; font-weight: var(--fw-semibold); }

/* (4) 财务图表页的对比行与图例：统一到档位 */
.page-body .compare__row,
.page-body .rank-row { padding: var(--sp-1) 0 !important; }
.page-body .legend-item { padding: 0 var(--sp-1) !important; }

/* (5) Bootstrap/Tabler 的 .small 是 0.875em，在 14px 父级下算出 12.25px，
       不在档位上。全站统一改为 12px。 */
.page-body .small,
.page-body small,
.page-body span.small,
.page-body div.small,
.page-body .text-secondary.small {
  font-size: var(--fz-xs) !important;
  line-height: 1.55;
}

/* 同类问题：.fs-1 ~ .fs-6 等 Tabler 相对字号工具类 */
.page-body .fs-1 { font-size: var(--fz-3xl) !important; }
.page-body .fs-2 { font-size: var(--fz-2xl) !important; }
.page-body .fs-3 { font-size: var(--fz-lg) !important; }
.page-body .fs-4 { font-size: var(--fz-md) !important; }
.page-body .fs-5 { font-size: var(--fz-base) !important; }
.page-body .fs-6 { font-size: var(--fz-xs) !important; }


/* ---------- 1. 圆角统一到 --rd-lg ---------- */
.page-body .case-card,
.page-body .video-card,
.page-body .accordion,
.page-body details.accordion,
.page-body nav.toc,
.page-body .toc,
.page-body .filter-bar,
.page-body .formula-card,
.page-body .panel,
.page-body .org-node,
.page-body .board-card {
  border-radius: var(--rd-lg);
}

/* 内层可折叠区的首尾也要跟着圆角走 */
.page-body details.accordion > summary:first-of-type { border-radius: var(--rd-lg) var(--rd-lg) 0 0; }
.page-body details.accordion > :last-child { border-radius: 0 0 var(--rd-lg) var(--rd-lg); }

/* ---------- 2. 列表左侧留白：归入 20px ---------- */
.page-body ul.data-list,
.page-body ol.data-list,
.page-body .data-list {
  padding-left: var(--sp-5);
}

.page-body ul.data-list > li,
.page-body ol.data-list > li { padding-left: var(--sp-1); }

/* ---------- 3. 带图标的输入框：右侧留位固定 40px ---------- */
.page-body input.input.has-icon,
.page-body .input-group input.input,
.page-body .field--icon input.input,
.page-body .search-field input.input {
  padding: 6px var(--sp-10) 6px var(--sp-3);
}

/* 普通输入框与下拉：落在 6px 12px */
.page-body select.select,
.page-body .select {
  padding: 6px var(--sp-3);
}

/* 原生 select 需要给箭头留位 */
.page-body select,
.page-body select.select {
  padding-right: var(--sp-6);
}

/* ---------- 4. 代码片段字号归位 ---------- */
.page-body code,
.page-body kbd,
.page-body samp,
.page-body pre {
  font-size: var(--fz-xs);
  border-radius: var(--rd-xs);
}

/* ---------- 5. 全宽按钮 ---------- */
.page-body .btn--block { padding: var(--pad-btn); }

/* ---------- 6. 动画编排容器不带内边距 ----------
   注意：不能一刀切清零。卡片类组件（首页三栏卡 .tri__col、核心工具卡 .tool、
   统计项 .stat-band__item、工作台面板 .ws 等）自身依赖内边距，若被清零会出现
   「文字贴紧边框」（首页三栏卡曾因此贴边，客户截图反馈）。
   这里只对**纯动画编排容器**清零，带组件类名的一律放行。 */
.page-body [data-anim]:not([class*="card"]):not(.tri__col):not(.tool):not(.cap):not(.panel):not(.ws):not(.stat-band__item):not(.home-hero__eyebrow),
.page-body .reveal:not([class*="card"]):not(.tri__col):not(.tool):not(.cap):not(.panel):not(.ws):not(.stat-band__item) { padding: 0; }

/* ---------- 7. 财务图表页剩余项 ---------- */
.page-body .composition,
.page-body .compare { padding: 0; }
.page-body .rank-row { padding: var(--sp-1) 0; }
.page-body .legend-item { padding: 0 var(--sp-1); }
.page-body .axis-label { font-size: var(--fz-micro); }

/* ---------- 8. 翻页导航：圆角与内边距归位 ---------- */
/* components.css 用了 --radius-lg(=10px) 与 --space-5，这里按档位覆盖。 */
.page-body .page-nav { gap: var(--sp-4); margin-top: var(--sp-8); padding-top: var(--sp-6); }
.page-body .page-nav a,
.page-body .page-nav a.next,
.page-body .page-nav a:first-child {
  padding: var(--sp-4);
  border-radius: var(--rd-lg);
  gap: var(--sp-1);
}
.page-body .page-nav__dir { font-size: var(--fz-micro); letter-spacing: .06em; }
.page-body .page-nav__label { font-size: var(--fz-base); font-weight: var(--fw-semibold); }

/* ---------- 9. 列表左侧留白：强制覆盖 em 值 ---------- */
/* components.css 的 .data-list { padding-left: 1.1em } 会算出 14.3px，不在网格上。 */
.page-body ul.data-list,
.page-body ol.data-list,
.page-body ul.data-list[class],
.page-body ol.data-list[class] {
  padding-left: var(--sp-5);
  font-size: var(--fz-sm);
  line-height: 1.7;
}

.page-body .data-list > li { padding-left: var(--sp-1); margin-bottom: var(--sp-1); }
.page-body .data-list > li:last-child { margin-bottom: 0; }

/* ---------- 10. 全站兜底：把剩余 em 型内边距归零 ---------- */
/* 只作用于列表与折叠区，避免影响表单控件 */
.page-body ul:not([class]),
.page-body ol:not([class]) { padding-left: var(--sp-5); }
