/* ==========================================================================
   找对标 · 报告页 2.0（report2）独立骨架样式
   --------------------------------------------------------------------------
   本文件是报告页重做版（views/vl_report2.js + #/vl_report2）的专属样式：
   - 骨架从零另起，全部类名以 .r2- 前缀命名，不复用 set-b.css 的
     .wrap / .block 等容器类（那是旧页绕圈子的根因）；
   - 仅引用 set-b.css :root 里的调色变量（--paper/--ink/--accent 等）；
   - 版心 1520px，宽屏多栏铺满，窄屏降级单列。
   ========================================================================== */

/* ---------- 根与版心 ---------- */
/* 报告页挂载期间（vl_report2.js mount 时给 main 加本类）放开应用壳 main.wrap
   的 1060px 限宽，否则 .r2-page 的 1520px 版心永远达不到（宽屏两侧大片空白）；
   unmount 时移除，不影响其他页面 */
main.r2-wide-host { max-width: none; padding: 0; }
.r2-root {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.7;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  overflow-wrap: break-word;
  /* 参考稿主色是哑光砖红 #B04A3A（set-b 的 --accent 偏正红），仅报告页作用域覆盖 */
  --accent: #b04a3a;
}
.r2-root a { color: inherit; text-decoration: none; }
.r2-root .r2-num-font { font-variant-numeric: tabular-nums; }
/* 版心：宽屏饱满（1840px 量级，参考稿要求版心占满视口、两侧只留窄边），
   突破应用壳 main.wrap 的窄约束 */
.r2-root .r2-page {
  width: 100%;
  max-width: 1840px;
  margin: 0 auto;
  padding: 0 clamp(20px, 2.4vw, 40px);
}

/* ---------- 报告头 ---------- */
.r2-root .r2-head { padding: 52px 0 26px; }
.r2-root .r2-eyebrow {
  font-size: 13px;
  letter-spacing: 2px;
  color: var(--muted);
  border-left: 2px solid var(--accent);
  padding-left: 10px;
  margin-bottom: 14px;
}
.r2-root .r2-head h1 {
  font-family: var(--serif);
  font-size: clamp(32px, 3.1vw, 54px);
  font-weight: 700;
  line-height: 1.35;
  margin: 0 0 12px;
}
.r2-root .r2-head-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 0;
  color: var(--muted);
  font-size: 14px;
}
.r2-root .r2-head-meta b { color: var(--ink); font-weight: 600; }
.r2-root .r2-head-meta .r2-sep { margin: 0 12px; color: var(--line); }
.r2-root .r2-head-meta .r2-sep::before { content: "|"; color: rgba(26,26,26,.18); }

/* ---------- 吸顶章节导航 ---------- */
.r2-root .r2-toc {
  position: sticky;
  top: 60px; /* 全局顶栏高度 */
  z-index: 40;
  background: rgba(250, 247, 242, .96);
  backdrop-filter: blur(8px);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.r2-root .r2-toc-inner {
  display: flex;
  align-items: stretch;
  overflow-x: auto;
  scrollbar-width: none;
}
.r2-root .r2-toc-inner::-webkit-scrollbar { display: none; }
.r2-root .r2-toc a {
  flex: 1 0 auto;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 8px;
  padding: 13px 18px;
  border-left: 1px solid var(--line);
  white-space: nowrap;
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.r2-root .r2-toc a:first-child { border-left: none; }
.r2-root .r2-toc a .n {
  font-family: var(--serif);
  font-size: 15px;
  font-weight: 700;
  color: var(--accent);
}
.r2-root .r2-toc a .t { font-size: 14px; font-weight: 600; }
.r2-root .r2-toc a:hover { background: rgba(26,26,26,.035); }
.r2-root .r2-toc a.active { background: var(--accent); color: #fff; }
.r2-root .r2-toc a.active .n { color: #fff; }

/* ---------- 章节通用 ---------- */
.r2-root .r2-sec { padding: 52px 0 60px; border-top: 1px solid var(--line); }
.r2-root .r2-sec:first-of-type { border-top: none; }
.r2-root .r2-sec-head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 12px; flex-wrap: wrap; }
.r2-root .r2-sec-no {
  font-family: var(--serif);
  font-size: clamp(30px, 2.6vw, 44px);
  font-weight: 700;
  color: var(--accent);
  line-height: 1;
}
.r2-root .r2-sec-title {
  font-family: var(--serif);
  font-size: clamp(24px, 2.2vw, 34px);
  font-weight: 700;
  line-height: 1.3;
}
.r2-root .r2-lead { color: var(--muted); font-size: 15px; max-width: 980px; margin-bottom: 26px; }
.r2-root .r2-lead b { color: var(--ink); }
.r2-root .r2-lead .rd { color: var(--accent); font-weight: 600; }

/* 面板通用：白卡 + 细边框 + 极浅平面投影 + 骑线红徽章 */
.r2-root .r2-panel {
  position: relative;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 26px 24px 22px;
  box-shadow: 0 1px 2px rgba(26, 26, 26, .03), 0 14px 34px -26px rgba(26, 26, 26, .30);
}
.r2-root .r2-panel-tag {
  position: absolute;
  top: -11px;
  left: 18px;
  background: var(--accent);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 1px;
  padding: 3px 12px;
  border-radius: 999px;
}
.r2-root .r2-panel-title { font-family: var(--serif); font-size: 20px; font-weight: 700; margin: 2px 0 8px; }
.r2-root .r2-panel-hint { font-size: 12.5px; color: var(--muted); margin: 0 0 14px; }

/* ---------- 01 大结论横幅（报纸头版：大结论字占近半幅） ---------- */
.r2-root .r2-hero {
  position: relative;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 46px 52px 42px;
  display: flex;
  align-items: stretch;
  gap: 52px;
  box-shadow: 0 1px 2px rgba(26, 26, 26, .03), 0 18px 40px -28px rgba(26, 26, 26, .32);
}
.r2-root .r2-hero-tag {
  position: absolute;
  top: -13px;
  left: 26px;
  background: var(--accent);
  color: #fff;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 1.5px;
  padding: 4px 14px;
  border-radius: 999px;
}
.r2-root .r2-hero-word {
  flex: 0 0 auto;
  align-self: center;
  font-family: var(--serif);
  font-size: clamp(64px, 8.2vw, 158px);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: 8px;
  color: var(--accent);
  white-space: nowrap;
}
.r2-root .r2-hero-div { flex: 0 0 1px; background: rgba(176, 74, 58, .35); }
.r2-root .r2-hero-side { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 26px; }
.r2-root .r2-hero-why {
  font-family: var(--serif);
  font-size: clamp(18px, 1.6vw, 26px);
  font-weight: 700;
  line-height: 1.6;
}
.r2-root .r2-hero-why:empty::before { content: "一句话结论暂缺"; color: var(--muted); font-weight: 400; font-size: 15px; }
.r2-root .r2-hero-nums { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 28px; }
.r2-root .r2-numk + .r2-numk { border-left: 1px solid var(--line); padding-left: 28px; }
.r2-root .r2-numk .v {
  font-family: var(--serif);
  font-size: clamp(30px, 2.6vw, 48px);
  font-weight: 700;
  color: var(--accent);
  line-height: 1.15;
}
.r2-root .r2-numk .v small { font-size: 14px; font-weight: 600; margin-left: 2px; }
.r2-root .r2-numk .k { font-size: 13px; font-weight: 600; margin-top: 2px; }
.r2-root .r2-numk .k-explain { font-size: 12px; color: var(--muted); margin-top: 2px; }
/* 失败态数字卡空态：替换三个半成品数字，占满数字区并说明原因 */
.r2-root .r2-numk-na {
  grid-column: 1 / -1;
  padding: 14px 18px;
  border: 1px dashed var(--line);
  border-radius: 10px;
  color: var(--muted);
  font-size: 15px;
  font-weight: 600;
}
.r2-root .r2-numk-na small { display: block; font-size: 12.5px; font-weight: 400; margin-top: 4px; }

/* ---------- 01 行动卡（结论下方：聚合判局行动建议/高机会切口/规律规则句） ---------- */
.r2-root .r2-ac-wrap { margin-top: 18px; }
.r2-root .r2-action-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  border-radius: 10px;
  padding: 16px 22px 12px;
  box-shadow: 0 8px 20px -18px rgba(26, 26, 26, .25);
}
.r2-root .r2-ac-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.r2-root .r2-ac-badge {
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.5px;
  color: #fff;
  background: var(--accent);
  border-radius: 999px;
  padding: 2px 10px;
}
.r2-root .r2-ac-title { font-family: var(--serif); font-size: 18.5px; font-weight: 700; }
.r2-root .r2-ac-note { font-size: 12px; color: var(--muted); }
.r2-root .r2-ac-sec { padding: 10px 0 6px; }
.r2-root .r2-ac-sec + .r2-ac-sec { border-top: 1px dashed var(--line); }
.r2-root .r2-ac-k {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--muted);
  margin-bottom: 4px;
}
.r2-root .r2-ac-sec ul { margin: 0; padding-left: 20px; }
.r2-root .r2-ac-sec li { font-size: 13.5px; line-height: 1.9; }
.r2-root .r2-ac-sec li .r2-opp { margin-right: 8px; }
.r2-root .r2-ac-sec li.r2-ac-warn { color: var(--muted); font-size: 12.5px; }

/* ---------- 01 行动卡·AI checklist 版（后端生成优先：序号圆点+动作加粗+依据小字） ---------- */
.r2-root .r2-ac-list { list-style: none; margin: 10px 0 2px; padding: 0; }
.r2-root .r2-ac-item { display: flex; gap: 10px; align-items: flex-start; padding: 8px 0; }
.r2-root .r2-ac-item + .r2-ac-item { border-top: 1px dashed var(--line); }
.r2-root .r2-ac-idx {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: var(--accent);
  color: #fff;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 20px;
  text-align: center;
  margin-top: 1px;
}
.r2-root .r2-ac-body { flex: 1 1 auto; min-width: 0; }
.r2-root .r2-ac-action { font-size: 14.5px; font-weight: 700; line-height: 1.55; }
.r2-root .r2-ac-why { font-size: 12.5px; color: var(--muted); line-height: 1.6; margin-top: 2px; }

/* ---------- 01 三栏：解读 / 榜单 / 看台 ---------- */
.r2-root .r2-vj {
  display: grid;
  grid-template-columns: 27fr 33fr 40fr;
  gap: 22px;
  margin-top: 26px;
  /* 同行三栏等高：grid 默认 stretch 把同行卡片拉到一样高，内容各自顶部对齐、不裁内容 */
  align-items: stretch;
}
.r2-root .r2-vj.cols-2 { grid-template-columns: 1fr 1.3fr; }
.r2-root .r2-vj.cols-1 { grid-template-columns: 1fr; }

/* 详细解读小卡 */
.r2-root .r2-vd-item { display: flex; gap: 14px; padding: 12px 0; }
.r2-root .r2-vd-item + .r2-vd-item { border-top: 1px dashed var(--line); }
.r2-root .r2-vd-ghost {
  font-family: var(--serif);
  font-size: 40px;
  font-weight: 700;
  line-height: 1.05;
  color: rgba(176, 74, 58, .22);
  flex: 0 0 auto;
  min-width: 54px;
}
.r2-root .r2-vd-body { font-size: 14px; line-height: 1.8; min-width: 0; }
.r2-root .r2-vd-body .rd { color: var(--accent); font-weight: 600; }

/* 01 结构化解读（新报告字段：总述 + 论点块 + 证据小条） */
.r2-root .r2-sr-summary { font-size: 15.5px; font-weight: 600; line-height: 1.8; margin-bottom: 6px; }
.r2-root .r2-sr-point { padding: 12px 0; }
.r2-root .r2-sr-point + .r2-sr-point { border-top: 1px dashed var(--line); }
.r2-root .r2-sr-concl { font-weight: 700; font-size: 14.5px; margin-bottom: 8px; }
.r2-root .r2-sr-evs { display: flex; flex-wrap: wrap; gap: 10px; }
.r2-root .r2-sr-ev {
  flex: 1 1 0;
  min-width: 130px;
  background: #fdfbf7;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 14px;
}
.r2-root .r2-sr-ev .v { font-family: var(--serif); font-size: 20px; font-weight: 700; color: var(--accent); line-height: 1.2; }
.r2-root .r2-sr-ev .k { font-size: 12px; color: var(--muted); margin-top: 3px; line-height: 1.6; }
.r2-root .r2-sr-risk { font-size: 12.5px; color: var(--muted); margin-top: 8px; }

/* 低粉爆款榜（列序对齐参考稿：排名/标题/UP主/粉丝/播放/倍数） */
.r2-root .r2-hr-note { font-size: 12px; color: var(--muted); margin: 4px 0 10px; }
.r2-root .r2-hr-head,
.r2-root .r2-hr-row {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr) 72px 56px 56px 50px;
  gap: 10px;
  align-items: center;
}
.r2-root .r2-hr-head {
  font-size: 12px;
  color: var(--muted);
  padding: 4px 0 8px;
  border-bottom: 1px solid var(--line);
}
.r2-root .r2-hr-head .r2-hr-r, .r2-root .r2-hr-row .r2-hr-r { text-align: right; }
.r2-root .r2-hr-row { padding: 8px 0; border-bottom: 1px solid var(--line); }
.r2-root .r2-hr-row:last-of-type { border-bottom: none; }
/* 基础限高：420px 内部滚动（展开态生效；收起态 10 行不足 420px，无视觉变化）。
   滚动条悬停显隐：不滚动/鼠标不在时透明隐藏，悬停（含滚轮滚动瞬间）才显示——Windows 滚动条常显难看 */
.r2-root .r2-hr-rows { max-height: 420px; overflow-y: auto; scrollbar-color: transparent transparent; }
.r2-root .r2-hr-rows::-webkit-scrollbar { width: 8px; height: 8px; }
.r2-root .r2-hr-rows::-webkit-scrollbar-thumb { background: transparent; border-radius: 4px; }
.r2-root .r2-hr-rows::-webkit-scrollbar-track { background: transparent; }
.r2-root .r2-hr-rows:hover { scrollbar-color: var(--muted) transparent; }
.r2-root .r2-hr-rows:hover::-webkit-scrollbar-thumb { background: var(--muted); }
/* 默认态=栏高自适应（2026-09-04 用户反馈：默认列表高度不够、按钮不在模块底部）：
   榜单面板在等高栏里改纵向 flex，头部/口径行/按钮固定，列表吃满剩余高度。
   flex-basis 0 让列表不反推栏高（栏高仍由详细解读/数据看台决定），
   装不下的行直接裁掉——能显示几条显示几条，不写死 10 条；按钮压在模块最底部 */
.r2-root .r2-hr-panel { display: flex; flex-direction: column; }
.r2-root .r2-hr-panel .r2-hr-note,
.r2-root .r2-hr-panel .r2-hr-head { flex: 0 0 auto; }
.r2-root .r2-hr-panel .r2-hr-rows {
  flex: 1 1 0;
  min-height: 96px; /* 兜底：另两栏太矮时列表至少露出几行 */
  max-height: none;
  overflow-y: hidden;
}
/* 展开态（R9-1 修，2026-09-08；R9-1b 二次修，2026-09-08）：
   展开 = 原来的裁剪框变成可滚动框——只把 overflow-y 从 hidden 换成 auto，
   不写任何 flex/max-height 覆盖（继续继承默认态 flex:1 1 0 + max-height:none），
   列表高仍等于栏内剩余高度，模块外框与左右两栏展开前后一像素不变，
   用户在原高度内滚到全部行；收起（摘掉 r2-hr-open）回默认态 */
.r2-root .r2-hr-panel .r2-hr-rows.r2-hr-open { overflow-y: auto; scrollbar-gutter: stable; }
/* 展开态滚动条常显（收起态维持上面的悬停显隐契约不动）：细条、半透明暖灰
   （取 --muted 的 RGB），常驻提示「此框可滚动」；Firefox 与 WebKit 双写 */
.r2-root .r2-hr-panel .r2-hr-rows.r2-hr-open { scrollbar-width: thin; scrollbar-color: rgba(107, 99, 88, .45) transparent; }
.r2-root .r2-hr-panel .r2-hr-rows.r2-hr-open::-webkit-scrollbar { width: 6px; height: 6px; }
.r2-root .r2-hr-panel .r2-hr-rows.r2-hr-open::-webkit-scrollbar-thumb { background: rgba(107, 99, 88, .45); border-radius: 3px; }
.r2-root .r2-hr-panel .r2-hr-rows.r2-hr-open::-webkit-scrollbar-track { background: transparent; }
.r2-root .r2-hr-panel .r2-hr-expand { flex: 0 0 auto; margin-top: auto; padding-top: 10px; }
/* 「点这里看榜单」跳转定位脉冲：砖红描边圈 + 浅底色 1.5s 渐隐，醒目不刺眼 */
.r2-root .r2-locus-pulse { border-radius: 6px; animation: r2-locus-pulse 1.5s ease-out; }
@keyframes r2-locus-pulse {
  0%   { box-shadow: 0 0 0 3px rgba(176, 74, 58, .55); background: rgba(176, 74, 58, .10); }
  45%  { box-shadow: 0 0 0 3px rgba(176, 74, 58, .30); background: rgba(176, 74, 58, .05); }
  100% { box-shadow: 0 0 0 3px rgba(176, 74, 58, 0);  background: rgba(176, 74, 58, 0); }
}
.r2-root .r2-hr-idx {
  font-family: var(--serif);
  font-size: 15px;
  font-weight: 700;
  color: var(--muted);
}
.r2-root .r2-hr-idx.rank-1, .r2-root .r2-hr-idx.rank-2, .r2-root .r2-hr-idx.rank-3 { color: var(--accent); }
.r2-root .r2-hr-tt {
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.r2-root .r2-hr-tt:hover { color: var(--accent); }
/* 标题包悬停浮窗后（r2-vhc-wrap 内联块）保持单行省略，不把榜单行撑破 */
.r2-root .r2-hr-tt .r2-vhc-wrap {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.r2-root .r2-hr-tt .r2-vhc-wrap a { display: block; overflow: hidden; text-overflow: ellipsis; }
.r2-root .r2-hr-up { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r2-root .r2-hr-num { font-size: 12.5px; text-align: right; white-space: nowrap; }
.r2-root .r2-hr-ratio { font-size: 14px; font-weight: 700; color: var(--accent); text-align: right; white-space: nowrap; }
.r2-root .r2-hr-expand {
  display: block;
  width: 100%;
  margin-top: 10px;
  padding: 9px 0;
  border: none;
  border-top: 1px dashed var(--line);
  background: transparent;
  color: var(--accent);
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
}
.r2-root .r2-hr-expand:hover { background: rgba(176, 74, 58, .05); }

/* 数据看台四图卡 */
.r2-root .r2-vc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.r2-root .r2-vc-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 16px 16px 14px;
  background: #fffdfa;
  box-shadow: 0 8px 20px -18px rgba(26, 26, 26, .25);
}
.r2-root .r2-vc-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 12px; }
.r2-root .r2-vc-t { font-family: var(--serif); font-size: 15px; font-weight: 700; }
.r2-root .r2-vc-note { font-size: 11px; color: var(--muted); text-align: right; }

/* 环形图 */
.r2-root .r2-donut-wrap { display: flex; align-items: center; gap: 18px; }
.r2-root .r2-donut-box { position: relative; width: 108px; height: 108px; flex: 0 0 auto; }
.r2-root .r2-donut-box svg { width: 100%; height: 100%; display: block; }
.r2-root .r2-donut-track { fill: none; stroke: #eee5d9; stroke-width: 11; }
.r2-root .r2-donut-val { fill: none; stroke: var(--accent); stroke-width: 11; stroke-linecap: butt; }
.r2-root .r2-donut-center {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
.r2-root .r2-donut-center b { font-family: var(--serif); font-size: 22px; color: var(--accent); line-height: 1.1; }
.r2-root .r2-donut-center span { font-size: 11px; color: var(--muted); }
.r2-root .r2-donut-legend { display: flex; flex-direction: column; gap: 8px; font-size: 12.5px; }
.r2-root .r2-donut-legend .lg-extra { color: var(--muted); font-size: 11.5px; }
.r2-root .r2-lg { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 6px; vertical-align: baseline; }
.r2-root .r2-lg.lg-a { background: var(--accent); }
.r2-root .r2-lg.lg-b { background: #e7ddcf; }

/* 时长直方图 */
.r2-root .r2-dh-cols { display: flex; align-items: flex-end; gap: 8px; }
.r2-root .r2-dh-col { flex: 1; display: flex; flex-direction: column; align-items: center; min-width: 0; }
.r2-root .r2-dh-track { position: relative; width: 100%; height: 96px; display: flex; align-items: flex-end; }
.r2-root .r2-dh-bar { display: block; width: 62%; margin: 0 auto; background: #d9c2b4; border-radius: 3px 3px 0 0; }
.r2-root .r2-dh-col.max .r2-dh-bar { background: var(--accent); }
.r2-root .r2-dh-median {
  position: absolute; top: 0; bottom: 0; width: 0;
  border-left: 2px dashed var(--accent);
}
.r2-root .r2-dh-v { font-size: 11px; color: var(--muted); margin-top: 4px; min-height: 14px; }
.r2-root .r2-dh-lab { font-size: 10.5px; color: var(--muted); text-align: center; white-space: nowrap; }

/* 互动三横条 */
.r2-root .r2-vb-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.r2-root .r2-vb-lab { flex: 0 0 86px; font-size: 12px; color: var(--muted); }
.r2-root .r2-vb-track { flex: 1; height: 12px; background: #f1e9dd; border-radius: 999px; overflow: hidden; }
.r2-root .r2-vb-track i { display: block; height: 100%; background: #d9a08f; border-radius: 999px; }
.r2-root .r2-vb-track i.deep { background: var(--accent); }
.r2-root .r2-vb-val { flex: 0 0 76px; text-align: right; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }
.r2-root .r2-vb-val small { font-size: 11px; color: var(--muted); font-weight: 400; margin-left: 3px; }

/* 形式占比堆叠条（分段只留颜色不塞文字：悬停浮条看数，点击分段/图例联动附一筛选） */
.r2-root .r2-st-bar { display: flex; width: 100%; height: 26px; border-radius: 6px; overflow: hidden; }
.r2-root .r2-st-bar .seg {
  display: block;
  cursor: pointer;
  transition: opacity .12s ease;
}
.r2-root .r2-st-bar .seg:hover { opacity: .82; }
.r2-root .r2-st-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 10px; font-size: 12px; color: var(--muted); }
/* 图例 = 小色块 + 正常墨色文字（形式名 条数 · 占比），文字块不涂形式色底；可点击 */
.r2-root .r2-st-legend .lg {
  display: inline-flex;
  align-items: center;
  border: none;
  background: none;
  padding: 2px 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
}
.r2-root .r2-st-legend .lg:hover { color: var(--accent); }
/* 分段悬停浮条：跟随鼠标显示「形式：N 条，占 X%」，fixed 定位不占布局 */
.r2-root .r2-st-tip {
  position: fixed;
  z-index: 60;
  display: none;
  pointer-events: none;
  background: var(--ink);
  color: #fff;
  font-size: 12px;
  line-height: 1;
  padding: 7px 11px;
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(26, 26, 26, .22);
  white-space: nowrap;
}

/* 核心数据明细（固定四项，整行铺开承载 01 章底部密度） */
.r2-root .r2-fixed { margin-top: 26px; }
.r2-root .r2-fixed-head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 10px; }
.r2-root .r2-fixed-head h3 { font-family: var(--serif); font-size: 20px; font-weight: 700; }
.r2-root .r2-fixed-head span { font-size: 12.5px; color: var(--muted); }
.r2-root .r2-vs-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.r2-root .r2-vs-tab {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--card);
  padding: 14px 16px;
  box-shadow: 0 8px 20px -18px rgba(26, 26, 26, .25);
}
.r2-root .r2-vs-tab h4 { font-size: 13.5px; font-weight: 700; margin: 0 0 8px; }
.r2-root .r2-vs-tab table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.r2-root .r2-vs-tab td { padding: 4px 0; vertical-align: top; }
.r2-root .r2-vs-tab td.k { color: var(--muted); white-space: nowrap; padding-right: 12px; }
.r2-root .r2-vs-tab td.v { font-weight: 500; }
/* 核心数据明细个性化对照版：四张问题卡（问题 → 答案 → 怎么用）+ 收起的原始统计 */
.r2-root .r2-q-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 12px; }
.r2-root .r2-q-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 16px 16px 12px;
  box-shadow: 0 8px 20px -18px rgba(26, 26, 26, .25);
}
.r2-root .r2-q-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  font-size: 10.5px;
  font-weight: 600;
  color: var(--muted);
  background: #fdfbf7;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 1px 8px;
  white-space: nowrap;
}
.r2-root .r2-q-card h4 { font-family: var(--serif); font-size: 16.5px; font-weight: 700; margin: 0; padding-right: 76px; }
.r2-root .r2-q-ans { font-size: 13px; line-height: 1.8; color: var(--ink); margin: 0; }
.r2-root .r2-q-ans b { color: var(--accent); font-size: 15px; }
.r2-root .r2-q-use { font-size: 12px; line-height: 1.7; color: var(--muted); margin: auto 0 0; }
.r2-root .r2-q-link {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  font-size: 12px;
  color: var(--accent);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.r2-root .r2-q-link:hover { color: var(--accent); opacity: .8; }
.r2-root .r2-q-toggle {
  background: none;
  border: none;
  padding: 0;
  font-size: 12px;
  color: var(--muted);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.r2-root .r2-q-toggle:hover { color: var(--accent); }
.r2-root .r2-q-raw { margin-top: 12px; }
.r2-root .r2-stat-chip {
  display: inline-block;
  font-size: 11.5px;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 1px 9px;
  margin: 2px 3px 2px 0;
  background: #fdfbf7;
}
.r2-root .r2-stat-fold { cursor: pointer; }
.r2-root .r2-stat-fold .r2-stat-fold-summary { color: var(--accent); font-size: 12px; }
.r2-root .r2-stat-fold:hover .r2-stat-fold-summary { text-decoration: underline; }

/* ---------- 02 推荐对标 ---------- */
/* 切换器挂在章节标题行右侧（参考稿：左标题右切换器，同一行） */
.r2-root .r2-pick-bar { display: flex; align-items: center; gap: 16px; margin: 0 0 0 auto; align-self: center; flex-wrap: wrap; }
.r2-root .r2-mode-tabs {
  display: inline-flex;
  border: 1px solid var(--ink);
  border-radius: 999px;
  overflow: hidden;
  background: var(--card);
}
.r2-root .r2-mode-tab {
  border: none;
  background: transparent;
  padding: 7px 22px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.r2-root .r2-mode-tab.on { background: var(--accent); color: #fff; }
.r2-root .r2-mode-tab + .r2-mode-tab { border-left: 1px solid var(--line); }

/* 清单 + 详情 双栏 */
.r2-root .r2-pick-body { display: grid; grid-template-columns: 42fr 58fr; gap: 22px; align-items: start; }

/* 左清单 */
.r2-root .r2-list-head,
.r2-root .r2-list-row {
  display: grid;
  grid-template-columns: 34px 76px minmax(0, 1fr) 96px minmax(0, 1.1fr);
  gap: 12px;
  align-items: center;
}
.r2-root .r2-list-head {
  font-size: 12px;
  color: var(--muted);
  padding: 0 6px 10px;
  border-bottom: 1px solid var(--line);
}
.r2-root .r2-list-row {
  padding: 10px 6px;
  border-bottom: 1px solid var(--line);
  border-radius: 8px;
  cursor: pointer;
  transition: background .12s ease;
}
.r2-root .r2-list-row:hover { background: rgba(26,26,26,.03); }
.r2-root .r2-list-row.on { outline: 2px solid var(--accent); outline-offset: -2px; }
.r2-root .r2-list-row:last-child { border-bottom: none; }
.r2-root .r2-li-no {
  font-family: var(--serif);
  font-size: 17px;
  font-weight: 700;
  color: var(--accent);
  text-align: center;
}
.r2-root .r2-cover {
  display: block;
  width: 76px;
  aspect-ratio: 16 / 10;
  border-radius: 4px;
  object-fit: cover;
  border: 1px solid var(--line);
  background: #eee7dd;
}
.r2-root .r2-cover-ph {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  letter-spacing: 1px;
  color: #a89c8d;
  background: #f2ede4;
}
.r2-root .r2-li-tt {
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.r2-root .r2-li-up { font-size: 12px; color: var(--muted); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r2-root .r2-li-nums .p { font-size: 13.5px; font-weight: 700; }
.r2-root .r2-li-nums .f { font-size: 12px; color: var(--muted); margin-top: 2px; }
.r2-root .r2-li-why {
  font-size: 12px;
  color: #8a6f5f;
  line-height: 1.55;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.r2-root .r2-list-empty { padding: 30px 10px; text-align: center; color: var(--muted); font-size: 13.5px; }

/* 右详情面板 */
.r2-root .r2-detail-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.r2-root .r2-detail-t { font-family: var(--serif); font-size: 19px; font-weight: 700; }
.r2-root .r2-detail-t .r2-detail-from { font-family: var(--sans); font-size: 13px; font-weight: 400; color: var(--muted); margin-left: 8px; }
.r2-root .r2-detail-link { font-size: 13px; color: var(--accent); white-space: nowrap; }
.r2-root .r2-detail-link:hover { text-decoration: underline; }
.r2-root .r2-detail-media { display: flex; gap: 22px; align-items: flex-start; }
.r2-root .r2-detail-cover {
  display: block;
  flex: 0 0 236px;
  width: 236px;
  aspect-ratio: 16 / 9;
  border-radius: 8px;
  object-fit: cover;
  border: 1px solid var(--line);
  background: #eee7dd;
}
.r2-root .r2-detail-cover.r2-cover-ph { height: auto; }
.r2-root .r2-detail-facts { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.r2-root .r2-fact { display: flex; align-items: baseline; gap: 10px; font-size: 13.5px; }
.r2-root .r2-fact .k { flex: 0 0 64px; color: var(--muted); font-size: 12.5px; }
.r2-root .r2-fact .v { font-weight: 600; min-width: 0; }
.r2-root .r2-fact .v.hot-ratio { color: var(--accent); font-weight: 700; }
.r2-root .r2-fact .v .r2-mini-badge {
  display: inline-block;
  font-size: 11px;
  color: #fff;
  background: var(--accent);
  border-radius: 999px;
  padding: 0 8px;
  margin-left: 8px;
  vertical-align: 1px;
}
.r2-root .r2-detail-title-line { font-size: 14.5px; font-weight: 700; line-height: 1.55; }

/* 七维拆解表 */
.r2-root .r2-dec { margin-top: 20px; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.r2-root .r2-dec-row { display: grid; grid-template-columns: 168px minmax(0, 1fr); }
.r2-root .r2-dec-row + .r2-dec-row { border-top: 1px solid var(--line); }
.r2-root .r2-dec-k {
  display: flex; align-items: center; gap: 8px;
  background: #f7f0e6;
  font-size: 13px;
  font-weight: 600;
  padding: 11px 14px;
}
.r2-root .r2-dec-k::before {
  content: "";
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--accent);
  flex: 0 0 auto;
}
.r2-root .r2-dec-v { padding: 11px 16px; font-size: 13.5px; line-height: 1.75; background: var(--card); }
.r2-root .r2-dec-v .r2-mut { color: var(--muted); }
/* 拆解卡标注：卡级「拆解来源」徽标 + 维度「画面依据」小字（视觉拆解新字段，
   存量卡没有不显示）。不带 .r2-root 前缀——弹层挂在 body 下吃不到 .r2-root 作用域 */
.r2-dec-src { margin: 0 0 10px; }
.r2-dec-src-badge {
  display: inline-block;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--accent);
  background: rgba(176, 74, 58, .07);
  border: 1px solid rgba(176, 74, 58, .28);
  border-radius: 999px;
  padding: 2px 10px;
  line-height: 1.6;
}
.r2-dec-vis { font-size: 12px; color: var(--muted); margin-top: 4px; line-height: 1.7; }
.r2-root .r2-dec-empty { padding: 22px 16px; color: var(--muted); font-size: 13.5px; text-align: center; }

/* 为什么推荐它 callout */
.r2-root .r2-why-callout {
  margin-top: 18px;
  background: #f9f0e5;
  border-left: 4px solid var(--accent);
  border-radius: 6px;
  padding: 14px 18px;
}
.r2-root .r2-why-callout b { display: block; font-size: 13.5px; color: var(--accent); margin-bottom: 4px; }
.r2-root .r2-why-callout p { margin: 0; font-size: 13.5px; line-height: 1.75; }

/* 自选态：状态条 + 全池网格 */
.r2-root .r2-pick-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  background: #faf1e7;
  border: 1px solid rgba(176, 74, 58, .28);
  border-radius: 8px;
  padding: 12px 18px;
  margin-bottom: 16px;
  font-size: 14px;
}
.r2-root .r2-pick-status b { color: var(--accent); }
.r2-root .r2-pool-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(228px, 1fr));
  gap: 16px;
}
.r2-root .r2-pool-card {
  position: relative;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px;
  cursor: pointer;
  transition: border-color .12s ease, box-shadow .12s ease;
}
.r2-root .r2-pool-card:hover { border-color: rgba(26,26,26,.25); }
.r2-root .r2-pool-card.on { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.r2-root .r2-pool-cover {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 5px;
  object-fit: cover;
  border: 1px solid var(--line);
  background: #eee7dd;
}
.r2-root .r2-pool-check {
  position: absolute;
  top: 14px; right: 14px;
  width: 22px; height: 22px;
  border: 1.5px solid rgba(255,255,255,.9);
  outline: 1px solid rgba(26,26,26,.25);
  border-radius: 5px;
  background: rgba(255,255,255,.85);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  color: transparent;
  font-weight: 700;
}
.r2-root .r2-pool-card.on .r2-pool-check { background: var(--accent); border-color: var(--accent); outline-color: var(--accent); color: #fff; }
.r2-root .r2-pool-tt {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  margin-top: 8px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: 2.9em;
}
.r2-root .r2-pool-meta { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-top: 6px; }
.r2-root .r2-pool-up { font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r2-root .r2-pool-nums { font-size: 11.5px; color: var(--muted); white-space: nowrap; }
.r2-root .r2-pool-nums b { color: var(--ink); font-size: 12.5px; }
.r2-root .r2-pool-nums b.hot { color: var(--accent); }
.r2-root .r2-pool-empty { padding: 40px 20px; text-align: center; color: var(--muted); }

/* 其余拆解卡折叠条 */
.r2-root .r2-fold-bar {
  margin-top: 26px;
  border: 1px dashed rgba(26,26,26,.22);
  background: #f6f1e8;
  border-radius: 8px;
  padding: 12px 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}
.r2-root .r2-fold-bar:hover { border-color: var(--accent); color: var(--accent); }
.r2-root .r2-fold-arrow { color: var(--accent); margin-left: 2px; }
.r2-root .r2-fold-body { margin-top: 14px; display: flex; flex-direction: column; gap: 10px; }
.r2-root .r2-fold-card { border: 1px solid var(--line); border-radius: 8px; background: var(--card); overflow: hidden; }
.r2-root .r2-fold-card-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  cursor: pointer;
}
.r2-root .r2-fold-card-head:hover { background: rgba(26,26,26,.03); }
.r2-root .r2-fold-idx { font-family: var(--serif); font-size: 15px; font-weight: 700; color: var(--accent); }
.r2-root .r2-fold-tt { font-size: 13.5px; font-weight: 600; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r2-root .r2-fold-tt:hover { color: var(--accent); }
.r2-root .r2-fold-up { font-size: 12px; color: var(--muted); white-space: nowrap; }
.r2-root .r2-fold-badges { display: flex; gap: 4px; flex: 0 0 auto; }
.r2-root .r2-badge {
  font-size: 11px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 1px 8px;
  white-space: nowrap;
}
/* 行尾「看拆解 ›」引导：点击整行弹出详情浮层 */
.r2-root .r2-fold-open { color: var(--accent); font-size: 12px; margin-left: auto; flex: 0 0 auto; white-space: nowrap; }
.r2-root .r2-fold-card-head:hover .r2-fold-open { text-decoration: underline; }

/* ---------- 03 规律与建议 ---------- */
.r2-root .r2-pattern-base { font-size: 13px; color: var(--muted); margin: -10px 0 18px; }
.r2-root .r2-dist-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 16px; }
/* 卡内分布条双列排布：压缩「一桶一行」造成的超高卡片，密度对齐参考稿 */
.r2-root .r2-dist-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 18px 18px 14px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2px 18px;
  align-content: start;
  box-shadow: 0 8px 20px -18px rgba(26, 26, 26, .22);
}
.r2-root .r2-dist-card h3 { grid-column: 1 / -1; font-family: var(--serif); font-size: 15.5px; font-weight: 700; margin: 0 0 14px; }
.r2-root .r2-dist-card .r2-empty { grid-column: 1 / -1; }
.r2-root .r2-dist-card.r2-dist-full { grid-column: span 2; }
.r2-root .r2-bar-row { display: flex; align-items: center; gap: 8px; padding: 4px 0; }
.r2-root .r2-bar-row .lab { flex: 0 0 44%; font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r2-root .r2-bar-row .track { flex: 1; height: 10px; background: #f1e9dd; border-radius: 999px; overflow: hidden; }
.r2-root .r2-bar-row .track i { display: block; height: 100%; background: var(--accent); border-radius: 999px; opacity: .85; }
.r2-root .r2-bar-row.ink .track i { background: var(--ink); opacity: .72; }
.r2-root .r2-bar-row .val { flex: 0 0 26px; text-align: right; font-size: 11.5px; font-weight: 700; }
/* 分布卡有用化：takeaway 一句话（程序规则生成）+ 类别行可点看代表视频 */
.r2-root .r2-dist-takeaway {
  grid-column: 1 / -1;
  display: flex;
  align-items: flex-start;
  gap: 6px;
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--ink);
  background: rgba(176, 74, 58, .06);
  border: 1px solid rgba(176, 74, 58, .22);
  border-radius: 8px;
  padding: 8px 10px;
  margin-bottom: 10px;
}
.r2-root .r2-dist-takeaway svg { flex: 0 0 auto; margin-top: 2px; color: var(--accent); }
.r2-root .r2-dist-hint { grid-column: 1 / -1; font-size: 11.5px; color: var(--muted); margin-top: 8px; }
.r2-root .r2-bar-row[data-r2-cat] { cursor: pointer; border-radius: 6px; }
.r2-root .r2-bar-row[data-r2-cat]:hover .lab { color: var(--accent); }
.r2-root .r2-empty {
  padding: 18px 10px;
  text-align: center;
  color: var(--muted);
  font-size: 13px;
  border: 1px dashed var(--line);
  border-radius: 8px;
}
.r2-root .r2-insights {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 16px;
}
.r2-root .r2-insights li:only-child { grid-column: 1 / -1; }
.r2-root .r2-insights li {
  position: relative;
  padding: 12px 16px 12px 40px;
  background: #fdfbf7;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 14px;
  line-height: 1.75;
  counter-increment: r2i;
}
.r2-root .r2-insights li::before {
  content: counter(r2i, decimal-leading-zero);
  position: absolute;
  left: 14px;
  top: 13px;
  font-family: var(--serif);
  font-size: 17px;
  font-weight: 700;
  color: rgba(176, 74, 58, .35);
}
.r2-root .r2-ai-card { margin-top: 20px; }

/* 03 新增三块（发布时机 / 内容缺口 / 爆点归因）：沿用 panel + 浅投影卡片语言 */
.r2-root .r2-advice-card { margin-top: 20px; }
.r2-root .r2-advice-lead { font-size: 14.5px; line-height: 1.8; margin-bottom: 14px; }
.r2-root .r2-advice-note { font-size: 12px; color: var(--muted); margin-top: 10px; }
/* advice 降级原因小字（M33）：failed/skipped 时把后端「错误」翻成人话附在提示下 */
.r2-root .r2-advice-err { font-size: 12.5px; color: var(--muted); margin-top: 8px; line-height: 1.7; }
/* 发布时机：最佳时段卡（数值醒目 + 人话注释小字） */
.r2-root .r2-slot-row { display: flex; flex-wrap: wrap; gap: 12px; }
.r2-root .r2-slot {
  flex: 1 1 0;
  min-width: 160px;
  background: #fdfbf7;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px 16px;
  box-shadow: 0 8px 20px -18px rgba(26, 26, 26, .22);
}
.r2-root .r2-slot .t { font-family: var(--serif); font-size: 19px; font-weight: 700; color: var(--accent); }
.r2-root .r2-slot .n { font-size: 12px; color: var(--muted); margin-top: 4px; line-height: 1.6; }
/* 内容缺口：每条缺口一张卡，机会徽标 高=砖红 / 中=琥珀 / 低=灰 */
.r2-root .r2-gap-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.r2-root .r2-gap-card { background: #fdfbf7; border: 1px solid var(--line); border-radius: 8px; padding: 14px 16px; }
.r2-root .r2-gap-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.r2-root .r2-gap-head b { font-size: 14.5px; }
.r2-root .r2-opp { flex: 0 0 auto; font-size: 11px; font-weight: 600; color: #fff; border-radius: 999px; padding: 2px 10px; }
.r2-root .r2-opp.r2-opp-high { background: var(--accent); }
.r2-root .r2-opp.r2-opp-mid { background: #c2913b; }
.r2-root .r2-opp.r2-opp-low { background: #9a938a; }
.r2-root .r2-gap-seg { font-size: 13px; line-height: 1.7; margin-top: 8px; }
.r2-root .r2-gap-seg .k { font-size: 12px; font-weight: 600; color: var(--muted); margin-bottom: 2px; }
.r2-root .r2-gap-src { margin-top: 10px; font-size: 12px; color: var(--muted); display: flex; flex-wrap: wrap; gap: 4px 10px; }
.r2-root .r2-gap-src a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
/* 爆点归因：每条标杆一张卡（卡头衬线标题 + UP主小字；五维逐行：左彩色小徽章、
   右内容正文；卡与整页卡片同一套白底细边浅投影语言） */
.r2-root .r2-why-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.r2-root .r2-why-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 18px 20px 16px;
  box-shadow: 0 1px 2px rgba(26, 26, 26, .03), 0 14px 34px -26px rgba(26, 26, 26, .30);
}
.r2-root .r2-why-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--line);
}
.r2-root .r2-why-title {
  font-family: var(--serif);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.45;
}
.r2-root .r2-why-title a:hover { color: var(--accent); }
.r2-root .r2-why-up { font-size: 12px; color: var(--muted); white-space: nowrap; }
/* 五维逐行：左维度徽章（五维各配一色，低饱和从整页哑光色系延伸）右正文 */
.r2-root .r2-why-dims { display: flex; flex-direction: column; gap: 7px; }
.r2-root .r2-why-dimrow { display: flex; align-items: flex-start; gap: 10px; }
.r2-root .r2-why-dimtag {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11.5px;
  font-weight: 600;
  border-radius: 999px;
  padding: 2px 10px;
  line-height: 1.6;
  margin-top: 1px;
  white-space: nowrap;
}
.r2-root .r2-why-dimtag svg { width: 12px; height: 12px; }
.r2-root .r2-why-dimval { font-size: 13px; line-height: 1.7; min-width: 0; }
/* 五维徽章配色：选题角度=砖红 / 标题手法=深青 / 开头留人=琥珀 / 全片结构=灰蓝 / 情绪点=紫灰 */
.r2-root .r2-why-dim-c-topic { background: rgba(176, 74, 58, .09); color: var(--accent); }
.r2-root .r2-why-dim-c-title_hook { background: rgba(67, 112, 122, .10); color: #43707a; }
.r2-root .r2-why-dim-c-opening { background: rgba(194, 145, 59, .12); color: #a1792f; }
.r2-root .r2-why-dim-c-structure { background: rgba(100, 116, 138, .12); color: #64748a; }
.r2-root .r2-why-dim-c-emotion { background: rgba(138, 117, 133, .12); color: #8a7585; }
/* 「无法判断」/空的维度行：整行淡灰弱化 */
.r2-root .r2-why-dimrow.r2-why-dim-na { opacity: .45; }
.r2-root .r2-why-dimrow.r2-why-dim-na .r2-why-dimtag { background: #f2ede4; color: var(--muted); }
/* 情绪点值渲染成彩色 chip（与徽章同一套低饱和色系） */
.r2-root .r2-emo-chip {
  display: inline-block;
  font-size: 11.5px;
  font-weight: 600;
  border-radius: 999px;
  padding: 1px 9px;
  margin: 1px 4px 1px 0;
  line-height: 1.7;
  white-space: nowrap;
}
.r2-root .r2-emo-c-anxious { background: rgba(194, 145, 59, .14); color: #a1792f; }
.r2-root .r2-emo-c-resonate { background: rgba(176, 74, 58, .09); color: var(--accent); }
.r2-root .r2-emo-c-curious { background: rgba(67, 112, 122, .11); color: #43707a; }
.r2-root .r2-emo-c-thrill { background: rgba(100, 116, 138, .14); color: #64748a; }
.r2-root .r2-emo-c-other { background: rgba(138, 117, 133, .12); color: #8a7585; }

/* ---------- 04 一键出稿 ---------- */
/* 单列布局：三张动作卡纵向各占一整行，长文案结果区得以全宽展示 */
.r2-root .r2-creative-grid { display: grid; grid-template-columns: 1fr; gap: 20px; }
.r2-root .r2-creative-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 24px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  grid-template-rows: auto auto;
  grid-template-areas:
    "title cost actions"
    "desc  cost actions";
  gap: 12px 28px;
  box-shadow: 0 1px 2px rgba(26, 26, 26, .03), 0 14px 34px -26px rgba(26, 26, 26, .30);
}
.r2-root .r2-creative-card h3 { grid-area: title; align-self: end; font-family: var(--serif); font-size: 18px; font-weight: 700; margin: 0; }
.r2-root .r2-creative-card .desc { grid-area: desc; align-self: start; color: var(--muted); font-size: 13.5px; line-height: 1.7; }
.r2-root .r2-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--accent);
  color: #fff;
  font-size: 14.5px;
  font-weight: 600;
  padding: 12px 24px;
  border: 1px solid var(--accent);
  border-radius: 8px;
  cursor: pointer;
  transition: .15s ease;
}
.r2-root .r2-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(176,74,58,.16); }
.r2-root .r2-btn:disabled { opacity: .6; cursor: default; transform: none; box-shadow: none; }
.r2-root .r2-btn.ghost { background: transparent; color: var(--ink); border-color: var(--line); }
.r2-root .r2-btn.ghost:hover { border-color: var(--ink); box-shadow: none; }
.r2-root .r2-creative-card .r2-btn { grid-area: actions; align-self: center; justify-self: end; }
.r2-root .r2-creative-cost { grid-area: cost; align-self: center; justify-self: end; font-size: 12px; color: var(--muted); }
.r2-root .r2-creative-results { grid-column: 1 / -1; margin-top: 8px; border-top: 1px solid var(--line); padding-top: 20px; display: flex; flex-direction: column; gap: 18px; }
.r2-root .r2-creative-block { border: 1px solid var(--line); border-radius: 10px; background: var(--card); padding: 22px 24px; }
.r2-root .r2-creative-block h3 { font-family: var(--serif); font-size: 17px; font-weight: 700; margin: 0 0 14px; }
.r2-root .r2-draft { font-size: 14px; line-height: 1.85; }
.r2-root .r2-draft p { margin: 0 0 10px; }
.r2-root .r2-draft .md-h2 { font-family: var(--serif); font-size: 17px; font-weight: 700; margin: 16px 0 8px; }
.r2-root .r2-draft .md-h3 { font-family: var(--serif); font-size: 15.5px; font-weight: 700; margin: 14px 0 6px; }
.r2-root .r2-draft .md-quote { border-left: 3px solid rgba(176,74,58,.4); padding: 4px 14px; color: var(--muted); margin: 8px 0; }
.r2-root .r2-draft ul, .r2-root .r2-draft ol { margin: 4px 0 10px; padding-left: 22px; }
/* 来源附注（列表项内的小字「来源：BVxxx」行，不打断列表编号；BV 转 B 站链接） */
.r2-root .md-src-note { font-size: 12px; color: var(--muted); margin-top: 4px; line-height: 1.5; }
.r2-root .md-src-note a { color: var(--accent); text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: 1px; }
.r2-root .r2-compliance { font-size: 12.5px; color: var(--muted); margin-top: 10px; }
.r2-root .r2-compliance .pass { color: var(--accent); font-weight: 600; }
.r2-root .r2-compliance .warn { color: var(--accent); font-weight: 600; }
.r2-root .r2-copy-btn, .r2-root .r2-retry-btn {
  border: 1px solid var(--line);
  background: #fdfbf7;
  color: var(--ink);
  font-size: 13px;
  padding: 7px 16px;
  border-radius: 6px;
  cursor: pointer;
  margin-top: 10px;
}
.r2-root .r2-copy-btn:hover, .r2-root .r2-retry-btn:hover { border-color: var(--accent); color: var(--accent); }
.r2-root .r2-loading { color: var(--muted); font-size: 13.5px; }
.r2-root .r2-cr-error { color: var(--accent); font-size: 13.5px; }
.r2-root .r2-platform-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.r2-root .r2-platform-tab {
  border: 1px solid var(--line);
  background: #fdfbf7;
  border-radius: 999px;
  padding: 6px 16px;
  font-size: 13px;
  cursor: pointer;
}
.r2-root .r2-platform-tab.on { background: var(--accent); border-color: var(--accent); color: #fff; }
.r2-root .r2-platform-pane { display: none; }
.r2-root .r2-platform-pane.on { display: block; }

/* 04 cross-platform v0.2.0：标题区 + 标题候选条 + AI 腔检测块 */
.r2-root .r2-title-row { display: flex; align-items: baseline; gap: 8px; margin-bottom: 8px; }
.r2-root .r2-title-label { font-size: 12px; color: var(--muted); flex: none; }
.r2-root .r2-title-text { font-family: var(--serif); font-size: 15.5px; font-weight: 700; }
.r2-root .r2-cand-list { display: flex; flex-direction: column; gap: 6px; margin: 0 0 12px; }
.r2-root .r2-cand-bar {
  text-align: left;
  border: 1px solid var(--line);
  background: #fdfbf7;
  color: var(--ink);
  font-size: 12.5px;
  line-height: 1.5;
  padding: 6px 10px;
  border-radius: 6px;
  cursor: pointer;
}
.r2-root .r2-cand-bar:hover { border-color: var(--accent); color: var(--accent); }
.r2-root .r2-cand-bar.cur { border-color: var(--accent); background: rgba(176, 74, 58, .06); }
.r2-root .r2-cand-bar .no { color: var(--muted); margin-right: 8px; }
.r2-root .r2-cand-bar:hover .no, .r2-root .r2-cand-bar.cur .no { color: inherit; }
.r2-root .r2-cp-det { margin-top: 10px; }
.r2-root .r2-cp-det .r2-cp-issue { color: var(--muted); }

.r2-root .r2-style-card { background: #fdfbf7; border: 1px solid var(--line); border-radius: 8px; padding: 12px 16px; margin-bottom: 12px; }
.r2-root .r2-style-card ul { margin: 0; padding-left: 20px; font-size: 13px; }

/* 04 学风格写稿：学谁下拉 + 学我的风格双按钮操作区 / 风格卡状态行 / 粘贴蒸馏面板 */
.r2-root .r2-style-actions { grid-area: actions; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; justify-self: end; }
.r2-root .r2-style-actions .r2-btn { padding: 10px 20px; }
.r2-root .r2-style-up {
  border: 1px solid var(--line);
  background: #fdfbf7;
  color: var(--ink);
  font-size: 13px;
  border-radius: 6px;
  padding: 6px 10px;
  max-width: 240px;
  cursor: pointer;
}
.r2-root .r2-my-style-state, .r2-root .r2-style-paste { grid-column: 1 / -1; border-top: 1px dashed var(--line); padding-top: 12px; }
.r2-root .r2-my-style-state { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; font-size: 13px; color: var(--muted); }
.r2-root .r2-my-style-state[hidden] { display: none; }
.r2-root .r2-my-style-state .r2-btn { padding: 5px 14px; font-size: 12.5px; }
.r2-root .r2-my-style-summary b { color: var(--ink); }
.r2-root .r2-style-paste[hidden] { display: none; }
.r2-root .r2-style-paste-hint { font-size: 12.5px; color: var(--muted); margin-bottom: 8px; }
.r2-root .r2-style-paste-ta {
  width: 100%;
  box-sizing: border-box;
  min-height: 120px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  font-size: 13.5px;
  line-height: 1.7;
  background: #fdfbf7;
  color: var(--ink);
  resize: vertical;
}
.r2-root .r2-style-paste-btns { display: flex; gap: 10px; margin-top: 10px; }
.r2-root .r2-style-paste-status { margin-top: 8px; font-size: 13px; }

/* 04 出稿附加：相关性警示条 / 原稿来源小字 / 本稿参考的对标视频清单 */
.r2-root .r2-rel-warn {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  border: 1px solid rgba(176, 74, 58, .55);
  background: rgba(176, 74, 58, .06);
  color: var(--accent);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.7;
  margin-bottom: 14px;
}
.r2-root .r2-rel-warn svg { flex: 0 0 auto; margin-top: 3px; }
.r2-root .r2-src-note { font-size: 12px; color: var(--muted); margin-bottom: 10px; }

/* 04 出稿附加（2026-09 第三批）：选选题小步 / 语料不足提示条（沿用 r2- 变量） */
.r2-root .r2-topic-pick { grid-column: 1 / -1; border-top: 1px dashed var(--line); padding-top: 12px; }
.r2-root .r2-topic-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.r2-root .r2-topic-cur { font-size: 13px; color: var(--muted); }
.r2-root .r2-topic-cur b { color: var(--ink); font-size: 13.5px; }
.r2-root .r2-topic-toggle {
  border: 1px solid var(--line);
  background: #fdfbf7;
  color: var(--ink);
  font-size: 12.5px;
  padding: 5px 14px;
  border-radius: 6px;
  cursor: pointer;
}
.r2-root .r2-topic-toggle:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
.r2-root .r2-topic-toggle:disabled { opacity: .6; cursor: default; }
.r2-root .r2-topic-list { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.r2-root .r2-topic-list[hidden] { display: none; }
.r2-root .r2-topic-bar {
  text-align: left;
  border: 1px solid var(--line);
  background: #fdfbf7;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.6;
  padding: 8px 12px;
  border-radius: 6px;
  cursor: pointer;
}
.r2-root .r2-topic-bar:hover { border-color: var(--accent); color: var(--accent); }
.r2-root .r2-topic-bar.cur { border-color: var(--accent); background: rgba(176, 74, 58, .06); }
.r2-root .r2-topic-bar { overflow: hidden; }
.r2-root .r2-topic-bar .no { color: var(--muted); margin-right: 8px; font-size: 12px; }
.r2-root .r2-topic-bar .why { display: block; font-size: 12px; color: var(--muted); margin-top: 2px; }
/* 支撑依据行：超宽截断省略，全文悬停浮条看全（data-ev-full + _bindStatTip） */
.r2-root .r2-topic-bar .refs {
  display: block;
  max-width: 100%;
  font-size: 11.5px;
  color: var(--muted);
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.r2-root .r2-topic-bar:hover .no, .r2-root .r2-topic-bar.cur .no,
.r2-root .r2-topic-bar:hover .why, .r2-root .r2-topic-bar.cur .why { color: inherit; }
.r2-root .r2-topic-empty { font-size: 12.5px; color: var(--muted); }
.r2-root .r2-corpus-warn {
  display: flex;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 8px;
  border: 1px solid rgba(176, 74, 58, .55);
  background: rgba(176, 74, 58, .06);
  color: var(--accent);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.7;
  margin-bottom: 14px;
}
.r2-root .r2-corpus-warn svg { flex: 0 0 auto; margin-top: 3px; }
.r2-root .r2-corpus-warn span { flex: 1 1 auto; min-width: 200px; }
.r2-root .r2-corpus-btn {
  flex: 0 0 auto;
  border: 1px solid var(--accent);
  background: transparent;
  color: var(--accent);
  font-size: 12.5px;
  font-weight: 600;
  padding: 5px 14px;
  border-radius: 6px;
  cursor: pointer;
}
.r2-root .r2-corpus-btn:hover:not(:disabled) { background: var(--accent); color: #fff; }
.r2-root .r2-corpus-btn:disabled { opacity: .6; cursor: default; }
/* 失败态横幅：run 非 completed 时页面顶部的醒目提示（报告没跑完，别把半成品当结论） */
.r2-root .r2-run-banner {
  border: 1.5px solid rgba(176, 74, 58, .65);
  background: rgba(176, 74, 58, .07);
  color: var(--accent);
  border-radius: 10px;
  padding: 18px 22px;
  margin: 4px 0 26px;
}
.r2-root .r2-run-banner-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--serif);
  font-size: 20px;
  font-weight: 700;
}
.r2-root .r2-run-banner-head svg { flex: 0 0 auto; }
.r2-root .r2-run-banner-sub { margin-top: 6px; font-size: 13.5px; font-weight: 400; color: var(--muted); line-height: 1.7; }
.r2-root .r2-run-banner-reason { margin-top: 6px; font-size: 13.5px; font-weight: 600; line-height: 1.7; word-break: break-word; }
.r2-root .r2-run-banner-cta {
  display: inline-block;
  margin-top: 12px;
  border: 1px solid var(--accent);
  border-radius: 6px;
  padding: 6px 16px;
  color: var(--accent);
  text-decoration: none;
  font-size: 13.5px;
  font-weight: 600;
}
.r2-root .r2-run-banner-cta:hover { background: var(--accent); color: #fff; }
.r2-root .r2-bench { margin-top: 14px; border-top: 1px dashed var(--line); padding-top: 12px; }
.r2-root .r2-bench-t { font-size: 12.5px; font-weight: 600; color: var(--muted); margin-bottom: 6px; }
.r2-root .r2-bench ul { margin: 0; padding-left: 0; list-style: none; font-size: 13px; }
.r2-root .r2-bench li { padding: 5px 0; display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; }
.r2-root .r2-bench li a { font-weight: 600; }
.r2-root .r2-bench li a:hover { color: var(--accent); }
.r2-root .r2-bench li .up, .r2-root .r2-bench li .why { font-size: 12px; color: var(--muted); }
.r2-root .r2-bench li.skip { opacity: .55; }
.r2-root .r2-bench li.skip a { color: var(--muted); font-weight: 400; }
/* 04 出稿附加：AI 事实校核块（旧产物无 fact_check 字段不渲染；砖红=已修正 / 琥珀=存疑） */
.r2-root .r2-fc { margin-top: 14px; border-top: 1px dashed var(--line); padding-top: 12px; }
.r2-root .r2-fc-head { font-size: 12.5px; font-weight: 600; color: var(--muted); margin-bottom: 8px; }
.r2-root .r2-fc-line { font-size: 12.5px; color: var(--muted); line-height: 1.7; }
.r2-root .r2-fc-err { font-size: 12px; color: var(--muted); margin-top: 4px; }
.r2-root .r2-fc-item {
  border-left: 3px solid var(--accent);
  background: rgba(176, 74, 58, .05);
  border-radius: 6px;
  padding: 8px 12px;
  margin-bottom: 8px;
  font-size: 13px;
  line-height: 1.7;
}
.r2-root .r2-fc-item.unsure { border-left-color: #c2913b; background: rgba(194, 145, 59, .08); }
.r2-root .r2-fc-item-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.r2-root .r2-fc-item.fix .r2-fc-item-head b { color: var(--accent); }
.r2-root .r2-fc-item.unsure .r2-fc-item-head b { color: #c2913b; }
.r2-root .r2-fc-badge {
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 1px 8px;
  background: var(--card);
}
.r2-root .r2-fc-note { font-size: 12.5px; color: var(--ink); margin-top: 3px; }
.r2-root .r2-fc-warn { font-size: 12px; color: var(--accent); margin-top: 4px; }
.r2-root .r2-fc-revised {
  font-size: 12.5px;
  color: var(--ink);
  background: #fdfbf7;
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 6px 10px;
  margin-top: 6px;
}

/* ---------- 附一 数据表 ---------- */
.r2-root .r2-table-tools { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; flex-wrap: wrap; }
.r2-root .r2-table-tools select {
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--card);
  padding: 8px 12px;
  font-size: 13.5px;
  color: var(--ink);
}
.r2-root .r2-table-tools .hint { font-size: 12.5px; color: var(--muted); }
.r2-root .r2-table-scroll {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card);
  overflow: auto;
  max-height: 70vh;
}
.r2-root .r2-table { width: 100%; border-collapse: collapse; font-size: 13.5px; table-layout: fixed; }
.r2-root .r2-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #f7f0e6;
  border-bottom: 1px solid var(--line);
  padding: 12px 14px;
  text-align: left;
  font-size: 12.5px;
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
}
.r2-root .r2-table thead th:hover { color: var(--accent); }
.r2-root .r2-table thead th .ar { color: var(--accent); }
/* 表头定宽（标题列弹性，其余按内容定宽） */
.r2-root .r2-table th.r2-c-idx, .r2-root .r2-table td.r2-c-idx { width: 56px; text-align: right; }
.r2-root .r2-table th.r2-c-title, .r2-root .r2-table td.r2-c-title { width: auto; min-width: 260px; }
.r2-root .r2-table th.r2-c-up, .r2-root .r2-table td.r2-c-up { width: 128px; }
.r2-root .r2-table th.r2-c-dur, .r2-root .r2-table td.r2-c-dur { width: 76px; }
.r2-root .r2-table th.r2-c-play, .r2-root .r2-table td.r2-c-play { width: 92px; }
.r2-root .r2-table th.r2-c-like, .r2-root .r2-table td.r2-c-like { width: 84px; }
.r2-root .r2-table th.r2-c-favorites, .r2-root .r2-table td.r2-c-favorites { width: 84px; }
.r2-root .r2-table th.r2-c-fans, .r2-root .r2-table td.r2-c-fans { width: 92px; }
.r2-root .r2-table th.r2-c-ratio, .r2-root .r2-table td.r2-c-ratio { width: 96px; }
.r2-root .r2-table th.r2-c-form, .r2-root .r2-table td.r2-c-form { width: 88px; }
.r2-root .r2-table tbody td {
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}
.r2-root .r2-table tbody tr:nth-child(even) { background: #fdfaf5; }
.r2-root .r2-table tbody tr:hover { background: #f8f1e7; }
.r2-root .r2-table td.r2-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.r2-root .r2-table td.r2-c-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r2-root .r2-table td.r2-c-title a:hover { color: var(--accent); }
.r2-root .r2-table td .hot { color: var(--accent); font-weight: 700; }
.r2-root .r2-table td.r2-c-ratio { font-weight: 600; }
.r2-root .r2-table-showall-btn {
  display: block;
  width: 100%;
  border: none;
  border-top: 1px dashed var(--line);
  background: transparent;
  color: var(--accent);
  font-size: 13.5px;
  font-weight: 600;
  padding: 11px 0;
  cursor: pointer;
}
.r2-root .r2-table-showall-btn:hover { background: rgba(176,74,58,.05); }
.r2-root .r2-table-retry {
  border: 1px solid var(--line);
  background: #fdfbf7;
  border-radius: 6px;
  padding: 6px 16px;
  font-size: 13px;
  cursor: pointer;
  margin-top: 8px;
}

/* ---------- 历史相关问答 ---------- */
.r2-root .r2-kb-list { display: flex; flex-direction: column; gap: 12px; }
.r2-root .r2-kb-item { border: 1px solid var(--line); border-radius: 8px; background: var(--card); padding: 16px 18px; }
.r2-root .r2-kb-q { font-size: 14px; font-weight: 600; margin-bottom: 8px; }
.r2-root .r2-kb-excerpt { font-size: 13px; color: var(--muted); margin: 0 0 8px; }
.r2-root .r2-kb-link { font-size: 12.5px; color: var(--accent); margin-right: 12px; }
.r2-root .r2-kb-link:hover { text-decoration: underline; }
.r2-root .r2-kb-date { font-size: 12px; color: var(--muted); }
.r2-root .r2-kb-toggle { border: none; background: none; color: var(--accent); font-size: 12.5px; cursor: pointer; padding: 0; }

/* ---------- 附二 知识库问答 ---------- */
.r2-root .r2-qa-wrap { display: flex; flex-direction: column; gap: 18px; }
/* 知识库索引状态行（R2-10）：问答区标题下的小字提示，building/ready 才渲染 */
.r2-root .r2-kb-status {
  font-size: 13px;
  color: var(--muted);
  padding: 8px 12px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  margin-top: -6px;
}
.r2-root .r2-qa-list { display: flex; flex-direction: column; gap: 16px; }
.r2-root .r2-qa { border: 1px solid var(--line); border-radius: 10px; background: var(--card); padding: 20px 22px; }
.r2-root .r2-qa-user { align-self: flex-end; max-width: 78%; background: #f7f0e6; }
.r2-root .r2-qa-ask { display: flex; align-items: flex-start; gap: 12px; }
.r2-root .r2-qa-av {
  flex: 0 0 34px;
  width: 34px; height: 34px;
  border-radius: 50%;
  background: #e9e0d2;
  display: flex; align-items: center; justify-content: center;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ink);
}
.r2-root .r2-qa-av.ai { background: var(--accent); color: #fff; }
.r2-root .r2-qa-q { font-size: 14px; font-weight: 600; line-height: 1.7; min-width: 0; }
.r2-root .r2-qa-box { margin-top: 12px; }
.r2-root .r2-qa-answer { font-size: 14px; line-height: 1.85; }
.r2-root .r2-qa-answer p { margin: 0 0 8px; }
.r2-root .r2-qa-answer ul, .r2-root .r2-qa-answer ol { margin: 4px 0 8px; padding-left: 22px; }
.r2-root .r2-qa-answer .md-quote { border-left: 3px solid rgba(176,74,58,.4); padding: 4px 14px; color: var(--muted); margin: 8px 0; }
.r2-root .r2-qa-degraded { color: var(--accent); font-size: 12px; margin-bottom: 8px; }
.r2-root .r2-qa-gtitle { font-size: 12.5px; color: var(--muted); margin: 12px 0 4px; font-weight: 600; }
.r2-root .r2-qa-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; border-top: 1px dashed var(--line); padding-top: 10px; }
.r2-root .r2-qa-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fdfbf7;
  padding: 4px 13px;
  font-size: 12.5px;
  cursor: pointer;
  color: var(--ink);
}
.r2-root .r2-qa-chip:hover { border-color: var(--accent); color: var(--accent); }
.r2-root .r2-qa-chip.r2-ref-chip { cursor: pointer; }
.r2-root .r2-qa-inline { display: flex; gap: 10px; margin-top: 12px; }
.r2-root .r2-qa-inline input {
  flex: 1;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 14px;
  font-size: 13.5px;
  background: #fdfbf7;
}
.r2-root .r2-qa-inline input:focus { outline: none; border-color: var(--accent); }
.r2-root .r2-qa-input-box { border-top: 1px solid var(--line); padding-top: 16px; }
.r2-root .r2-qa-time { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; font-size: 13px; color: var(--muted); }
.r2-root .r2-qa-time select {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 6px 10px;
  background: var(--card);
  font-size: 13px;
}
.r2-root .r2-qa-row { display: flex; gap: 12px; }
.r2-root .r2-qa-row input {
  flex: 1;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px 16px;
  font-size: 14px;
  background: var(--card);
}
.r2-root .r2-qa-row input:focus { outline: none; border-color: var(--accent); }
.r2-root .r2-qa-row .r2-btn { padding: 12px 26px; }
.r2-root .r2-ref-expand {
  border: none;
  background: none;
  color: var(--accent);
  font-size: 12.5px;
  cursor: pointer;
  margin-top: 6px;
  padding: 0;
}

/* ---------- 详情弹层（02 其余拆解卡）：挂在 body 下，不进 .r2-root 作用域 ---------- */
.r2-modal-overlay {
  /* 与 .r2-root 同款砖红主色（body 下拿不到 .r2-root 的变量覆盖，这里补上） */
  --accent: #b04a3a;
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(24, 15, 11, .55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.r2-modal-card {
  display: flex;
  flex-direction: column;
  width: min(760px, 100%);
  max-height: 80vh;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 24px 60px -24px rgba(26, 26, 26, .45);
  overflow: hidden;
}
.r2-modal-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 18px 22px 12px;
  border-bottom: 1px solid var(--line);
  flex: 0 0 auto;
}
.r2-modal-title {
  font-family: var(--serif);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.4;
  min-width: 0;
}
.r2-modal-up { font-size: 12.5px; color: var(--muted); white-space: nowrap; }
.r2-modal-close {
  margin-left: auto;
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #fdfbf7;
  color: var(--muted);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}
.r2-modal-close:hover { border-color: var(--accent); color: var(--accent); }
.r2-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 16px 22px 20px;
}
.r2-modal-hint {
  flex: 0 0 auto;
  padding: 8px 22px 12px;
  border-top: 1px dashed var(--line);
  text-align: center;
  font-size: 12px;
  color: var(--muted);
}
/* 03 分布卡「点类别看代表视频」弹层条目（弹层挂在 body 下，同 r2-modal-* 不受 .r2-root 作用域限制） */
.r2-cat-item { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0; border-bottom: 1px dashed var(--line); }
.r2-cat-item:last-of-type { border-bottom: 0; }
.r2-cat-cover {
  flex: 0 0 auto;
  width: 96px;
  height: 60px;
  border-radius: 6px;
  object-fit: cover;
  border: 1px solid var(--line);
  background: #eee7dd;
}
/* r2-cover-ph 的定义带 .r2-root 作用域，弹层挂在 body 下吃不到，这里就地补占位样式 */
.r2-cat-cover.r2-cover-ph { display: flex; align-items: center; justify-content: center; font-size: 11px; letter-spacing: 1px; color: #a89c8d; }
.r2-cat-info { min-width: 0; }
.r2-cat-tt { display: block; font-size: 13.5px; font-weight: 600; line-height: 1.55; color: var(--ink); text-decoration: none; }
a.r2-cat-tt:hover { color: var(--accent); }
.r2-cat-meta { margin-top: 3px; font-size: 12px; color: var(--muted); }
.r2-cat-note { margin-top: 8px; font-size: 12px; color: var(--muted); }

/* ---------- 视频链接悬停浮窗（交互自旧页 vhc 移植，r2- 命名空间） ---------- */
.r2-root .r2-vhc-wrap { position: relative; display: inline-flex; max-width: 100%; }
.r2-root .r2-vhc-card {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 30;
  margin-top: 6px;
  width: 240px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card);
  padding: 10px;
  box-shadow: 0 4px 16px rgba(26, 26, 26, .14);
  display: none;
}
.r2-root .r2-vhc-wrap:hover .r2-vhc-card,
.r2-root .r2-vhc-wrap:focus-within .r2-vhc-card { display: block; }
.r2-root .r2-vhc-cover {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 4px;
  object-fit: cover;
  background: #eee7dd;
}
.r2-root .r2-vhc-title {
  display: -webkit-box;
  margin-top: 8px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--ink);
  font-weight: 600;
  overflow: hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.r2-root .r2-vhc-up { display: block; margin-top: 4px; font-size: 12px; color: var(--muted); }
.r2-root .r2-vhc-nums { display: block; margin-top: 4px; font-size: 12px; color: var(--muted); }
.r2-root .r2-vhc-hint-tap { display: none; margin-top: 6px; font-size: 11px; color: var(--muted); }
/* 触屏设备显示「再次点按进入视频页」提示；浮窗显隐由 JS 控制，覆盖 CSS hover 规则 */
@media (hover: none) {
  .r2-root .r2-vhc-hint-tap { display: block; }
  .r2-root .r2-vhc-wrap:hover .r2-vhc-card { display: none; }
}

/* ---------- 空态 / 兜底 ---------- */
.r2-root .r2-view-empty { padding: 90px 32px; text-align: center; }
.r2-root .r2-view-empty h1 { font-family: var(--serif); font-size: 26px; margin: 0 0 14px; }
.r2-root .r2-view-empty p { color: var(--muted); margin: 0 0 24px; }
.r2-root .r2-loading-line { padding: 70px 0; text-align: center; color: var(--muted); font-size: 15px; }

/* ---------- 响应式降级 ---------- */
@media (max-width: 1380px) {
  .r2-root .r2-vj { grid-template-columns: 1fr 1fr; }
  .r2-root .r2-vj.cols-2 { grid-template-columns: 1fr; }
  .r2-root .r2-dist-grid { grid-template-columns: repeat(3, 1fr); }
  .r2-root .r2-dist-card.r2-dist-full { grid-column: span 1; }
}
@media (max-width: 1100px) {
  .r2-root .r2-pick-body { grid-template-columns: 1fr; }
  .r2-root .r2-hero { flex-direction: column; gap: 24px; padding: 34px 28px 28px; }
  .r2-root .r2-hero-div { flex: 0 0 1px; width: 100%; height: 1px; }
  .r2-root .r2-hero-word { font-size: clamp(56px, 12vw, 96px); }
  .r2-root .r2-detail-media { flex-direction: column; }
  .r2-root .r2-detail-cover { flex-basis: auto; width: 100%; max-width: 420px; }
  .r2-root .r2-vs-grid { grid-template-columns: repeat(2, 1fr); }
  .r2-root .r2-q-grid { grid-template-columns: repeat(2, 1fr); }
}
/* 窄屏动作卡降回纵向堆叠：头部信息从横排改回上下排 */
@media (max-width: 880px) {
  .r2-root .r2-creative-card { grid-template-columns: minmax(0, 1fr); grid-template-areas: "title" "desc" "cost" "actions"; }
  .r2-root .r2-creative-card .r2-creative-cost, .r2-root .r2-creative-card .r2-btn { justify-self: start; }
  .r2-root .r2-style-actions { justify-self: start; align-items: flex-start; }
}
@media (max-width: 860px) {
  .r2-root .r2-vj { grid-template-columns: 1fr; }
  .r2-root .r2-dist-grid { grid-template-columns: repeat(2, 1fr); }
  .r2-root .r2-gap-grid, .r2-root .r2-why-grid { grid-template-columns: 1fr; }
  /* 窄屏归因卡：维度行从「徽章|正文」横排降为纵向堆叠 */
  .r2-root .r2-why-dimrow { flex-direction: column; gap: 3px; }
  .r2-root .r2-why-dimtag { margin-top: 0; }
  .r2-root .r2-hero-nums { grid-template-columns: 1fr; gap: 14px; }
  .r2-root .r2-numk + .r2-numk { border-left: none; padding-left: 0; border-top: 1px solid var(--line); padding-top: 14px; }
  .r2-root .r2-list-head { display: none; }
  .r2-root .r2-list-row { grid-template-columns: 34px 76px minmax(0, 1fr); }
  .r2-root .r2-li-nums, .r2-root .r2-li-why { grid-column: 2 / -1; }
  .r2-root .r2-vc-grid { grid-template-columns: 1fr; }
  .r2-root .r2-q-grid { grid-template-columns: 1fr; }
  .r2-root .r2-table-tools { flex-direction: column; align-items: flex-start; }
  .r2-root .r2-dec-row { grid-template-columns: 1fr; }
  .r2-root .r2-dec-k { padding: 9px 14px; }
  /* 窄屏单列没有「等高栏高」可吃：榜单列表降回 420px 内滚看全量 */
  .r2-root .r2-hr-panel .r2-hr-rows { flex: 0 0 auto; min-height: 0; max-height: 420px; overflow-y: auto; }
}
