/* ==========================================================================
   找对标 · 视频对标线样式表（set-b 杂志编辑风体系）
   视觉与版式基准：docs/prototypes/video-line/set-b/
   ========================================================================== */

/* 全局防横向溢出（问题1修复）：只在 html 上裁切，避免在 body 建
   滚动容器破坏既有吸顶（顶栏 / 目录条）效果 */
html { overflow-x: hidden; }

:root {
  --paper: #faf7f2;        /* 暖纸背景 */
  --card: #ffffff;         /* 卡片底 */
  --ink: #1a1a1a;          /* 正文墨黑 */
  --muted: #6b6358;        /* 次要文字暖灰 */
  --line: rgba(26,26,26,.08); /* 细边线 */
  --accent: #b8332a;       /* 朱红强调 */
  --r: 8px;                /* 统一圆角 */
  --serif: 'Songti SC','STSong','Source Han Serif SC','Noto Serif SC','SimSun',serif;
  --sans: -apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei','Helvetica Neue',Arial,sans-serif;
  --maxw: 1200px;
}

/* ---------- 杂志风通用 ---------- */
.set-b {
  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; /* 长文本（分布描述/BV号/URL）不撑破容器（问题1修复） */
}
.set-b a { color: inherit; text-decoration: none; }
.set-b .num { font-variant-numeric: tabular-nums; }
.set-b .wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 32px; }

.set-b .eyebrow {
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--muted);
  border-left: 2px solid var(--accent);
  padding-left: 10px;
}

.set-b .btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--accent);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  padding: 14px 28px;
  border-radius: var(--r);
  transition: .15s ease;
  border: 1px solid var(--accent);
  cursor: pointer;
  text-decoration: none;
}
.set-b .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(184,51,42,.15); }
.set-b .btn-text {
  font-size: 15px;
  color: var(--ink);
  border-bottom: 1px solid var(--ink);
  padding-bottom: 2px;
  transition: .15s ease;
  cursor: pointer;
  text-decoration: none;
}
.set-b .btn-text:hover { color: var(--accent); border-bottom-color: var(--accent); }
.set-b .btn-ghost {
  background: transparent;
  color: var(--ink);
  border: 1px solid var(--line);
  cursor: pointer;
  border-radius: var(--r);
  padding: 14px 28px;
  font-size: 15px;
  font-weight: 600;
  text-decoration: none;
  transition: .15s ease;
}
.set-b .btn-ghost:hover { border-color: var(--ink); transform: translateY(-2px); }

.set-b .tag {
  font-size: 12px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 3px 10px;
  display: inline-block;
}
.set-b .tag.now { color: var(--accent); border-color: var(--accent); font-weight: 600; }
.set-b .badge {
  font-size: 12px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 2px 9px;
  background: var(--card);
}

/* ==========================================================================
   页面 1：主页（Hero + 工作流 + 历史）
   ========================================================================== */
.vl-home-root .hero { padding: 80px 0 64px; border-bottom: 1px solid var(--line); }
.vl-home-root .hero h1 {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 48px;
  line-height: 1.28;
  letter-spacing: 1px;
  margin: 24px 0 0;
  max-width: 880px;
}
.vl-home-root .hero h1 .dropcap {
  float: left;
  font-size: 80px;
  line-height: .82;
  padding: 6px 14px 0 0;
  color: var(--accent);
  font-weight: 700;
}
.vl-home-root .hero p.lead {
  font-size: 17px;
  color: var(--muted);
  max-width: 680px;
  margin: 28px 0 0;
  line-height: 1.8;
}
.vl-home-root .flow {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  margin: 56px 0 0;
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
  background: var(--card);
}
.vl-home-root .flow .step { padding: 24px 28px; border-right: 1px solid var(--line); }
.vl-home-root .flow .step:last-child { border-right: none; }
.vl-home-root .flow .step .n { font-family: var(--serif); font-size: 22px; color: var(--accent); font-weight: 700; }
.vl-home-root .flow .step .t { font-weight: 600; margin: 6px 0 4px; font-size: 16px; }
.vl-home-root .flow .step .d { font-size: 13px; color: var(--muted); line-height: 1.6; text-wrap: balance; }
.vl-home-root .cta { margin: 48px 0 0; display: flex; align-items: center; gap: 20px; }

.vl-home-root .section { padding: 64px 0; }
.vl-home-root .section h2 { font-family: var(--serif); font-size: 28px; font-weight: 700; letter-spacing: .5px; }
.vl-home-root .section .sub { color: var(--muted); margin: 10px 0 0; font-size: 15px; }
.vl-home-root .reports { margin: 36px 0 0; display: flex; flex-direction: column; gap: 20px; }
.vl-home-root .report-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 28px 32px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
  transition: .15s ease;
  cursor: pointer;
  text-decoration: none;
}
.vl-home-root .report-card:hover { transform: translateY(-2px); border-color: rgba(26,26,26,.2); box-shadow: 0 4px 16px rgba(26,26,26,.04); }
.vl-home-root .report-card .kw { font-family: var(--serif); font-size: 22px; font-weight: 700; color: var(--ink); }
.vl-home-root .report-card .meta { font-size: 13px; color: var(--muted); margin-top: 6px; }
.vl-home-root .report-card .stats { display: flex; gap: 32px; text-align: right; margin-top: 10px; }
.vl-home-root .report-card .stats .v { font-family: var(--serif); font-size: 20px; font-weight: 700; color: var(--ink); }
.vl-home-root .report-card .stats .k { font-size: 12px; color: var(--muted); }

/* ==========================================================================
   页面 2：输入页（Steps + Form）
   ========================================================================== */
.vl-input-root .steps { display: flex; gap: 0; max-width: 680px; margin: 48px 0 0; }
.vl-input-root .steps .s { display: flex; align-items: center; gap: 12px; flex: 1; color: var(--muted); font-size: 14px; }
.vl-input-root .steps .s .dot {
  width: 26px; height: 26px; border-radius: var(--r); border: 1px solid var(--line);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-weight: 700; font-size: 14px; background: var(--card);
}
.vl-input-root .steps .s.on { color: var(--ink); font-weight: 600; }
.vl-input-root .steps .s.on .dot { background: var(--accent); color: #fff; border-color: var(--accent); }
.vl-input-root .steps .s.done .dot { background: var(--ink); color: #fff; border-color: var(--ink); }
.vl-input-root .steps .bar { flex: 0 0 1px; width: 40px; height: 1px; background: var(--line); margin: 0 4px; }

.vl-input-root h1.title { font-family: var(--serif); font-size: 28px; font-weight: 700; letter-spacing: .5px; margin: 40px 0 0; }
.vl-input-root p.title-sub { color: var(--muted); margin: 10px 0 0; max-width: 620px; font-size: 15px; }

.vl-input-root form { margin: 40px 0 0; max-width: 760px; }
.vl-input-root .field { margin: 0 0 36px; }
.vl-input-root .field > label { display: block; font-weight: 600; font-size: 15px; margin-bottom: 8px; }
.vl-input-root .field .hint { font-size: 13px; color: var(--muted); margin-top: 8px; line-height: 1.6; }
.vl-input-root .req { color: var(--accent); font-weight: 400; margin-left: 4px; font-size: 12px; }

.vl-input-root input[type=text] {
  width: 100%; background: var(--card); border: 1px solid var(--line); border-radius: var(--r);
  padding: 14px 16px; font-size: 15px; font-family: var(--sans); color: var(--ink); transition: .15s ease;
}
.vl-input-root input[type=text]:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(184,51,42,.1); }
.vl-input-root input::placeholder { color: #b3aa9d; }

.vl-input-root .chips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; transition: .15s ease; }
.vl-input-root .chip {
  font-size: 13px; color: var(--muted); border: 1px solid var(--line); border-radius: var(--r);
  padding: 7px 14px; background: var(--card); cursor: pointer; transition: .15s ease; user-select: none;
}
.vl-input-root .chip:hover { border-color: var(--accent); color: var(--accent); }
.vl-input-root .chip.picked { background: var(--ink); color: #fff; border-color: var(--ink); }

/* 建议次关键词大框：始终可见，三态切换（占位 / 等待 / 候选词），杂志风卡片框 */
.vl-input-root .rec-block {
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--card);
  padding: 18px 20px;
  min-height: 112px;
}
.vl-input-root .rec-block .rec-title { font-weight: 600; font-size: 15px; }
.vl-input-root .rec-block .rec-desc { font-size: 13px; color: var(--muted); margin-top: 4px; }
.vl-input-root .rec-block .rec-status {
  font-size: 13px;
  color: #b3aa9d; /* 占位/等待文案弱化（灰色），与输入框 placeholder 一致 */
  margin-top: 14px;
}

.vl-input-root .uid-row { display: flex; gap: 12px; align-items: stretch; }
.vl-input-root .uid-row input { max-width: 320px; }
.vl-input-root .uid-btn {
  flex: 0 0 auto; background: transparent; border: 1px solid var(--line); border-radius: var(--r);
  padding: 0 20px; font-size: 14px; color: var(--ink); cursor: pointer; transition: .15s ease;
}
.vl-input-root .uid-btn:hover { border-color: var(--ink); background: var(--card); }
.vl-input-root .uid-result {
  margin-top: 14px; display: flex; align-items: center; gap: 16px; padding: 16px 20px;
  border: 1px solid var(--line); border-radius: var(--r); background: var(--card);
}
/* 问题10修复：display:flex 会压过浏览器默认的 [hidden]{display:none}，
   未查询时占位卡必须隐藏（与 stat-fold-detail 同一坑），需显式补回 */
.vl-input-root .uid-result[hidden] { display: none; }
.vl-input-root .uid-avatar {
  width: 44px; height: 44px; border-radius: var(--r); background: var(--ink); color: #fff;
  display: flex; align-items: center; justify-content: center; font-family: var(--serif); font-weight: 700; font-size: 18px; flex: 0 0 auto;
}
.vl-input-root .uid-name { font-weight: 600; font-size: 15px; }
.vl-input-root .uid-fans { font-size: 13px; color: var(--muted); margin-top: 2px; }

.vl-input-root .seg { display: inline-flex; border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--card); }
.vl-input-root .seg button {
  border: none; background: transparent; padding: 12px 26px; font-size: 14px; color: var(--muted);
  cursor: pointer; font-family: var(--sans); transition: .15s ease; font-weight: 500;
}
.vl-input-root .seg button.on { background: var(--ink); color: #fff; font-weight: 600; }

.vl-input-root .range-row { display: flex; align-items: center; gap: 18px; }
.vl-input-root input[type=range] { flex: 1; accent-color: var(--accent); height: 4px; cursor: pointer; }
.vl-input-root .range-val { font-family: var(--serif); font-size: 22px; font-weight: 700; min-width: 96px; text-align: right; }
.vl-input-root .range-val small { font-size: 13px; color: var(--muted); font-family: var(--sans); font-weight: 400; }

.vl-input-root .switch-row { display: flex; align-items: center; gap: 16px; }
.vl-input-root .switch {
  position: relative; width: 46px; height: 26px; border-radius: var(--r); background: var(--line);
  border: 1px solid var(--line); cursor: pointer; transition: .15s ease; flex: 0 0 auto;
}
.vl-input-root .switch.on { background: var(--accent); border-color: var(--accent); }
.vl-input-root .switch::after {
  content: ""; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 6px;
  background: #fff; transition: .15s ease;
}
.vl-input-root .switch.on::after { left: 22px; }
.vl-input-root .switch-label { font-size: 14px; color: var(--muted); }

.vl-input-root .actions { margin: 48px 0 80px; display: flex; align-items: center; gap: 20px; }

/* ==========================================================================
   页面 3：执行页（Live Run 实时进度与阶段时间线）
   ========================================================================== */
.vl-run-root .head { padding: 48px 0 32px; border-bottom: 1px solid var(--line); }
.vl-run-root .head h1 { font-family: var(--serif); font-size: 28px; font-weight: 700; letter-spacing: .5px; margin: 18px 0 0; }
.vl-run-root .head .kw { font-size: 15px; color: var(--muted); margin-top: 10px; }
.vl-run-root .head .kw b { color: var(--ink); font-weight: 600; }

.vl-run-root .overall { margin: 28px 0 0; }
.vl-run-root .overall .bar { height: 6px; background: var(--line); border-radius: var(--r); overflow: hidden; }
.vl-run-root .overall .bar > i { display: block; height: 100%; width: 0%; background: var(--accent); transition: width .4s ease; }
.vl-run-root .overall .meta { display: flex; justify-content: space-between; font-size: 13px; color: var(--muted); margin-top: 12px; }
.vl-run-root .overall .meta b { color: var(--ink); font-weight: 600; }

.vl-run-root .stages { margin: 40px 0 0; display: flex; flex-direction: column; gap: 16px; }
.vl-run-root .stage {
  display: grid; grid-template-columns: 44px 1fr; gap: 20px; background: var(--card);
  border: 1px solid var(--line); border-radius: var(--r); padding: 24px 28px; transition: .15s ease;
}
.vl-run-root .stage.doing { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.vl-run-root .stage.failed { border-color: #b8332a; background: #fdf5f5; }
.vl-run-root .stage .mark {
  width: 36px; height: 36px; border-radius: var(--r); border: 1px solid var(--line);
  display: flex; align-items: center; justify-content: center; font-family: var(--serif); font-weight: 700; font-size: 16px;
  background: var(--paper); color: var(--muted); align-self: start;
}
.vl-run-root .stage.done .mark { background: var(--ink); color: #fff; border-color: var(--ink); }
.vl-run-root .stage.doing .mark { background: var(--accent); color: #fff; border-color: var(--accent); animation: pulseMark 1.8s infinite ease-in-out; }
.vl-run-root .stage.failed .mark { background: #b8332a; color: #fff; border-color: #b8332a; }

@keyframes pulseMark {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}

.vl-run-root .stage .top { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.vl-run-root .stage .name { font-family: var(--serif); font-size: 20px; font-weight: 700; }
.vl-run-root .stage .status {
  font-size: 13px; font-weight: 600; padding: 3px 12px; border-radius: var(--r);
  border: 1px solid var(--line); color: var(--muted);
}
.vl-run-root .stage.done .status { color: var(--ink); background: var(--paper); }
.vl-run-root .stage.doing .status { color: var(--accent); border-color: var(--accent); background: #fff; }
.vl-run-root .stage.failed .status { color: #b8332a; border-color: #b8332a; }

.vl-run-root .stage .desc { font-size: 14px; color: var(--muted); margin-top: 6px; line-height: 1.6; }
.vl-run-root .stage .count { font-family: var(--serif); font-size: 18px; font-weight: 700; margin-top: 12px; }
.vl-run-root .stage.done .count { color: var(--ink); }
.vl-run-root .stage.doing .count { color: var(--accent); }
.vl-run-root .stage.failed .count { color: #b8332a; }
.vl-run-root .stage .remain { font-size: 13px; color: var(--muted); margin-top: 4px; }

.vl-run-root .log { margin: 48px 0 60px; border: 1px solid var(--line); border-radius: var(--r); background: var(--card); overflow: hidden; }
.vl-run-root .log .h { padding: 16px 24px; border-bottom: 1px solid var(--line); font-size: 13px; letter-spacing: 1px; color: var(--muted); text-transform: uppercase; }
.vl-run-root .log ul { list-style: none; padding: 8px 0; max-height: 240px; overflow-y: auto; }
.vl-run-root .log li { display: flex; gap: 14px; padding: 10px 24px; font-size: 14px; line-height: 1.6; }
.vl-run-root .log li .t { font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; flex: 0 0 64px; }
.vl-run-root .log li .x { color: var(--ink); }
.vl-run-root .log li.accent .x b { color: var(--accent); }

.vl-run-root .run-cta-wrap { margin: 32px 0 64px; text-align: center; }

/* ==========================================================================
   页面 4：报告页（杂志编辑风 四段 + 两附件）
   ========================================================================== */
.vl-report-root .report-head { padding: 56px 0 40px; border-bottom: 1px solid var(--line); }
.vl-report-root .report-head h1 { font-family: var(--serif); font-size: 38px; font-weight: 700; letter-spacing: 1px; margin: 18px 0 0; }
.vl-report-root .report-head .sub { color: var(--muted); font-size: 15px; margin-top: 12px; line-height: 1.7; }
.vl-report-root .report-head .sub b { color: var(--ink); font-weight: 600; }

.vl-report-root .toc {
  position: sticky; top: 60px; z-index: 40;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  padding: 12px 0;
}
.vl-report-root .toc .wrap { display: grid; grid-template-columns: repeat(7, 1fr); gap: 12px; }
.vl-report-root .toc a {
  display: flex; align-items: baseline; gap: 8px; padding: 14px 16px; border: 1px solid var(--line);
  border-radius: var(--r); background: var(--card); transition: .15s ease; text-decoration: none;
}
.vl-report-root .toc a:hover { transform: translateY(-2px); border-color: rgba(26,26,26,.16); box-shadow: 0 3px 10px rgba(0,0,0,.03); }
.vl-report-root .toc a .n { font-family: var(--serif); font-weight: 700; color: var(--accent); font-size: 15px; }
.vl-report-root .toc a .t { font-weight: 600; font-size: 13.5px; color: var(--ink); }
/* 当前章节高亮（问题3修复）：滚动/点击后由 JS 加 .active */
.vl-report-root .toc a.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.vl-report-root .toc a.active .t { color: var(--accent); }

.vl-report-root section.block { padding: 60px 0; border-bottom: 1px solid var(--line); scroll-margin-top: 170px; }
.vl-report-root .block .head { display: flex; align-items: baseline; gap: 16px; margin-bottom: 8px; }
.vl-report-root .block .head .no { font-family: var(--serif); font-weight: 700; font-size: 15px; color: var(--accent); letter-spacing: 1px; }
.vl-report-root .block .head h2 { font-family: var(--serif); font-size: 28px; font-weight: 700; letter-spacing: .5px; }
.vl-report-root .block .lead { color: var(--muted); font-size: 15px; max-width: 760px; margin-bottom: 32px; line-height: 1.75; }

/* 01 值不值得做（判局翻新版）：结论横幅 + 三栏（解读 | 低粉爆款榜 | 数据看台）+ 核心数据明细条 */
/* 报告页版心加宽（宽屏饱满）：变量只作用于报告页根，不影响其他页面 */
.vl-report-root { --maxw: 1520px; }

/* 骑线红标签（参考图通用的卡片语言）：挂在卡片左上边框线上 */
.vl-report-root .panel { position: relative; border: 1px solid var(--line); border-radius: var(--r); background: var(--card); }
.vl-report-root .panel-tag {
  position: absolute; top: -11px; left: 18px; z-index: 2;
  background: var(--accent); color: #fff; font-size: 12px; font-weight: 600;
  letter-spacing: 2px; padding: 3px 12px; border-radius: 3px;
}

/* 结论横幅：左超大衬线结论词（含红色句圈点睛），细红竖线分隔，右侧理由 + 三个大数 */
.vl-report-root .verdict-hero { display: flex; align-items: stretch; gap: 30px; padding: 38px 40px 34px; margin-top: 42px; }
.vl-report-root .verdict-hero .vh-word {
  flex: 0 1 auto; display: flex; align-items: center;
  font-family: var(--serif); font-weight: 700; color: var(--accent);
  font-size: clamp(68px, 8.2vw, 126px); line-height: 1.05; letter-spacing: 2px;
}
.vl-report-root .verdict-hero .vh-word::after {
  content: ""; display: inline-block; width: .13em; height: .13em;
  border: .028em solid var(--accent); border-radius: 50%; margin-left: .1em; flex: 0 0 auto;
}
.vl-report-root .verdict-hero .vh-div { flex: 0 0 1px; background: rgba(184, 51, 42, .35); }
.vl-report-root .verdict-hero .vh-side { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 26px; }
.vl-report-root .verdict-hero .vh-why { font-family: var(--serif); font-size: clamp(18px, 1.6vw, 24px); font-weight: 700; line-height: 1.6; }
.vl-report-root .verdict-hero .vh-why:empty::before { content: "一句话结论暂缺"; color: var(--muted); font-weight: 400; font-size: 15px; }
.vl-report-root .verdict-hero .vh-nums { display: grid; grid-template-columns: repeat(3, 1fr); }
.vl-report-root .verdict-hero .num-block { padding: 2px 20px; border-left: 1px solid var(--line); min-width: 0; }
.vl-report-root .verdict-hero .num-block:first-child { border-left: none; padding-left: 0; }
.vl-report-root .verdict-hero .num-block .v { font-family: var(--serif); font-size: 30px; font-weight: 700; color: var(--accent); line-height: 1.2; }
.vl-report-root .verdict-hero .num-block .v small { font-size: 14px; font-weight: 400; color: var(--muted); margin-left: 2px; }
.vl-report-root .verdict-hero .num-block .k { font-size: 13.5px; color: var(--muted); margin-top: 4px; }
.vl-report-root .verdict-hero .num-block .k-explain { font-size: 12px; color: var(--muted); margin-top: 2px; line-height: 1.5; }

/* 三栏：详细解读 | 低粉爆款榜 | 数据看台；列数随可见面板数由 JS 切 cols-* 类 */
.vl-report-root .vj-grid { display: grid; grid-template-columns: 3fr 3fr 4fr; gap: 28px; align-items: start; margin-top: 46px; }
.vl-report-root .vj-grid.cols-2 { grid-template-columns: 1fr 1.3fr; }
.vl-report-root .vj-grid.cols-1 { grid-template-columns: 1fr; }
.vl-report-root .vj-col { padding: 28px 24px 22px; min-width: 0; }

/* 详细解读：幽灵序号 + 数字标红 */
.vl-report-root .vj-details .vd-item { display: flex; gap: 16px; padding: 13px 0; border-bottom: 1px dashed var(--line); }
.vl-report-root .vj-details .vd-item:first-child { padding-top: 2px; }
.vl-report-root .vj-details .vd-item:last-child { border-bottom: none; padding-bottom: 2px; }
.vl-report-root .vd-ghost {
  flex: 0 0 auto; font-family: var(--serif); font-size: 38px; font-weight: 700;
  line-height: 1.05; color: rgba(184, 51, 42, .18);
}
.vl-report-root .vd-body { font-size: 14px; line-height: 1.85; color: var(--ink); min-width: 0; }
.vl-report-root .rd { color: var(--accent); font-weight: 600; font-style: normal; }

/* 低粉爆款 TOP10 榜单：斑马纹行 + 倍数砖红加粗 + 前三名奖级配色 */
.vl-report-root .vj-rank .vj-title { font-family: var(--serif); font-size: 18px; font-weight: 700; margin: 2px 0 6px; }
.vl-report-root .vj-hint { font-size: 12px; color: var(--muted); line-height: 1.65; margin-bottom: 14px; }
.vl-report-root .hr-head,
.vl-report-root .hr-row {
  display: grid; grid-template-columns: 26px minmax(0, 1fr) 66px 50px 56px 42px;
  gap: 8px; align-items: center;
}
.vl-report-root .hr-head { font-size: 11px; color: var(--muted); padding: 0 6px 6px; border-bottom: 1px solid var(--line); }
.vl-report-root .hr-head .hr-r { text-align: right; }
.vl-report-root .hr-row { padding: 8px 6px; font-size: 12.5px; border-radius: 4px; }
.vl-report-root .hr-row:nth-child(odd) { background: rgba(184, 51, 42, .05); }
.vl-report-root .hr-idx { font-family: var(--serif); font-weight: 700; color: var(--muted); text-align: center; }
.vl-report-root .hr-idx.rank-1 { color: #b8860b; }
.vl-report-root .hr-idx.rank-2 { color: #8a8a8a; }
.vl-report-root .hr-idx.rank-3 { color: #ad6a3c; }
.vl-report-root .hr-tt { color: var(--ink); font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vl-report-root .hr-tt:hover { color: var(--accent); }
.vl-report-root .hr-up { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vl-report-root .hr-num { text-align: right; font-variant-numeric: tabular-nums; color: var(--ink); white-space: nowrap; }
.vl-report-root .hr-ratio { text-align: right; font-family: var(--serif); font-weight: 700; color: var(--accent); }
.vl-report-root .hr-expand {
  display: block; margin: 12px auto 0; border: none; background: transparent; cursor: pointer;
  color: var(--accent); font-size: 13px; font-family: var(--sans); padding: 4px 10px;
}
.vl-report-root .hr-expand:hover { opacity: .8; }
.vl-report-root .hr-expand[hidden] { display: none; }

/* 数据看台：四张手绘图卡一次全展示（垄断环形 / 时长直方 / 互动条形 / 形式堆叠） */
.vl-report-root .vc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.vl-report-root .vc-grid > div:empty { display: none; } /* 时长数据整缺时占位格不露空洞 */
.vl-report-root .vc-card { border: 1px solid var(--line); border-radius: var(--r); background: var(--card); padding: 14px 14px 12px; min-width: 0; }
.vl-report-root .vc-head { margin-bottom: 10px; }
.vl-report-root .vc-t { display: block; font-family: var(--serif); font-size: 14.5px; font-weight: 700; }
.vl-report-root .vc-note { display: block; font-size: 11px; color: var(--muted); line-height: 1.5; margin-top: 2px; }
.vl-report-root .vj-charts .rd { color: var(--accent); font-weight: 600; }

/* 环形占比图（纯 SVG 描边圆环） */
.vl-report-root .donut-wrap { display: flex; align-items: center; gap: 12px; }
.vl-report-root .donut-box { position: relative; flex: 0 0 auto; width: 104px; height: 104px; }
.vl-report-root .donut-box svg { width: 100%; height: 100%; display: block; }
.vl-report-root .donut-track { fill: none; stroke: #efe7db; stroke-width: 14; }
.vl-report-root .donut-val { fill: none; stroke: var(--accent); stroke-width: 14; }
.vl-report-root .donut-center {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center;
}
.vl-report-root .donut-center b { font-family: var(--serif); font-size: 20px; color: var(--accent); line-height: 1.1; }
.vl-report-root .donut-center span { font-size: 11px; color: var(--muted); }
.vl-report-root .donut-legend { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--ink); min-width: 0; }
.vl-report-root .donut-legend .lg-extra { color: var(--muted); }
.vl-report-root .lg { display: inline-block; width: 9px; height: 9px; border-radius: 2px; margin-right: 6px; }

/* 时长分布直方图（纯 div 柱 + 中位数虚线） */
.vl-report-root .dh-cols { display: flex; align-items: flex-end; gap: 7px; }
.vl-report-root .dh-col { flex: 1 1 0; min-width: 0; text-align: center; }
.vl-report-root .dh-track { position: relative; height: 96px; border-bottom: 1px solid var(--line); }
.vl-report-root .dh-bar { position: absolute; bottom: 0; left: 15%; width: 70%; background: rgba(184, 51, 42, .45); border-radius: 2px 2px 0 0; display: block; }
.vl-report-root .dh-col.max .dh-bar { background: var(--accent); }
.vl-report-root .dh-median { position: absolute; top: -4px; bottom: -1px; width: 0; border-left: 2px dashed var(--ink); display: block; }
.vl-report-root .dh-v { display: block; font-size: 10.5px; color: var(--muted); line-height: 1.4; min-height: 14px; }
.vl-report-root .dh-lab { display: block; font-size: 10px; color: var(--muted); line-height: 1.35; margin-top: 2px; }

/* 互动 / 收藏 / 近30天新发布：横向条形 */
.vl-report-root .vb-row { display: grid; grid-template-columns: 78px 1fr 74px; gap: 8px; align-items: center; margin-bottom: 12px; }
.vl-report-root .vb-row:last-child { margin-bottom: 2px; }
.vl-report-root .vb-lab { font-size: 11.5px; color: var(--muted); }
.vl-report-root .vb-track { height: 12px; background: #f0e9dd; border-radius: 6px; overflow: hidden; }
.vl-report-root .vb-track i { display: block; height: 100%; background: rgba(184, 51, 42, .5); border-radius: 6px; }
.vl-report-root .vb-track i.deep { background: var(--accent); }
.vl-report-root .vb-val { font-family: var(--serif); font-size: 13px; font-weight: 700; color: var(--accent); text-align: right; white-space: nowrap; }
.vl-report-root .vb-val small { display: block; font-family: var(--sans); font-size: 10px; font-weight: 400; color: var(--muted); }

/* 形式爆款占比：100% 堆叠横条 + 图例 */
.vl-report-root .st-bar { display: flex; height: 26px; border-radius: 5px; overflow: hidden; background: #f0e9dd; }
.vl-report-root .seg { display: flex; align-items: center; justify-content: center; font-size: 10.5px; color: #fff; min-width: 0; overflow: hidden; white-space: nowrap; }
.vl-report-root .seg-1 { background: var(--accent); }
.vl-report-root .seg-2 { background: #c85a44; }
.vl-report-root .seg-3 { background: #d9887a; }
.vl-report-root .seg-4 { background: #e6b3a4; }
.vl-report-root .seg-5 { background: #a82d24; }
.vl-report-root .seg-6 { background: #8f6258; }
.vl-report-root .seg-rest { background: #cfc6b6; }
.vl-report-root .st-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 10px; font-size: 11.5px; color: var(--ink); }
.vl-report-root .st-legend .lg { width: 8px; height: 8px; }

/* 核心数据明细条（固定 4 项小表格，沿用 vs-grid/vs-tab 样式） */
.vl-report-root .vj-fixed { margin-top: 46px; }
.vl-report-root .vj-fixed .vf-head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.vl-report-root .vj-fixed .vf-head h3 { font-family: var(--serif); font-size: 18px; font-weight: 700; }

/* 02 选靶 */
.vl-report-root .targets { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.vl-report-root .target {
  display: block; padding: 22px; border: 1px solid var(--line);
  border-radius: var(--r); background: var(--card); transition: .15s ease; text-decoration: none;
}
.vl-report-root .target:hover { transform: translateY(-2px); border-color: rgba(26,26,26,.16); box-shadow: 0 4px 14px rgba(0,0,0,.03); }
.vl-report-root .target .tt { font-weight: 600; font-size: 15px; line-height: 1.45; color: var(--ink); }
.vl-report-root .target .stats { display: flex; gap: 18px; margin-top: 12px; font-size: 13px; }
.vl-report-root .target .stats .s b { font-family: var(--serif); font-size: 16px; font-weight: 700; margin-right: 4px; color: var(--ink); }
.vl-report-root .target .stats .s span { color: var(--muted); }
.vl-report-root .target .stats .s.hot b { color: var(--accent); }
.vl-report-root .target .target-why {
  font-size: 13px; color: var(--muted); line-height: 1.6; margin-top: 10px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; text-overflow: ellipsis;
}

/* 03 拆解卡 */
.vl-report-root .dec { display: flex; flex-direction: column; gap: 6px; }
.vl-report-root .dec-card { border: 1px solid var(--line); border-radius: var(--r); background: var(--card); overflow: hidden; }
.vl-report-root .dec-card .top {
  display: flex; justify-content: space-between; align-items: center; padding: 22px 28px;
  border-bottom: 1px solid var(--line); gap: 20px; flex-wrap: wrap;
}
.vl-report-root .dec-card .top .tt { font-family: var(--serif); font-size: 20px; font-weight: 700; color: var(--ink); }
.vl-report-root .dec-card .top .meta { font-size: 13px; color: var(--muted); }
.vl-report-root .dec-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.vl-report-root .dec-grid .item { padding: 20px 28px; border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); }
.vl-report-root .dec-grid .item:nth-child(2n) { border-right: none; }
.vl-report-root .dec-grid .item:nth-last-child(-n+2) { border-bottom: none; }
.vl-report-root .dec-grid .item .k { font-size: 13px; color: var(--accent); font-weight: 600; letter-spacing: .5px; }
.vl-report-root .dec-grid .item .v { margin-top: 8px; line-height: 1.7; font-size: 14.5px; color: var(--ink); }

/* 04 规律 */
.vl-report-root .patterns { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.vl-report-root .pattern { border: 1px solid var(--line); border-radius: var(--r); background: var(--card); padding: 28px; }
.vl-report-root .pattern.full { grid-column: 1 / -1; }
.vl-report-root .pattern h3 { font-family: var(--serif); font-size: 18px; font-weight: 700; margin-bottom: 20px; }
.vl-report-root .bar { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.vl-report-root .bar .lab { flex: 0 0 200px; font-size: 14px; color: var(--ink); }
.vl-report-root .bar .track { flex: 1; height: 14px; background: var(--line); border-radius: var(--r); overflow: hidden; }
.vl-report-root .bar .track > i { display: block; height: 100%; background: var(--accent); border-radius: var(--r); }
.vl-report-root .bar .val { font-family: var(--serif); font-weight: 700; font-size: 15px; flex: 0 0 48px; text-align: right; color: var(--ink); }
.vl-report-root .bar.ink .track > i { background: var(--ink); }

/* 01 值不值得做 · 核心数据明细条（vs-grid/vs-tab 供固定四项小表格使用） */
.vl-report-root .vs-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.vl-report-root .vs-tab { border: 1px solid var(--line); border-radius: var(--r); background: var(--card); padding: 20px 24px; }
.vl-report-root .vs-tab h4 { font-family: var(--serif); font-size: 16px; font-weight: 700; margin-bottom: 14px; }
.vl-report-root .vs-tab table { width: 100%; border-collapse: collapse; font-size: 14px; min-width: 0; table-layout: auto; }
.vl-report-root .vs-tab td { padding: 9px 4px; border-bottom: 1px solid var(--line); vertical-align: top; }
.vl-report-root .vs-tab tr:last-child td { border-bottom: none; }
.vl-report-root .vs-tab td.k { color: var(--muted); width: 42%; white-space: nowrap; }
.vl-report-root .vs-tab td.v { color: var(--ink); font-weight: 600; text-align: right; word-break: break-word; }
.vl-report-root .vs-empty { grid-column: 1 / -1; padding: 22px; text-align: center; color: var(--muted); border: 1px dashed var(--line); border-radius: var(--r); background: var(--card); }

/* 统计列表值折叠（问题1：BV号墙等长列表默认折叠） */
.vl-report-root .stat-fold { cursor: pointer; display: inline-block; }
.vl-report-root .stat-fold-summary { font-size: 13px; color: var(--accent); border-bottom: 1px dashed var(--accent); padding-bottom: 1px; }
.vl-report-root .stat-fold-detail { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
/* hidden 属性覆盖：display:flex 优先级高于浏览器默认的 [hidden]{display:none}，需显式补回 */
.vl-report-root .stat-fold-detail[hidden] { display: none; }
.vl-report-root .stat-fold-detail .stat-chip {
  font-size: 12px; color: var(--ink); border: 1px solid var(--line); border-radius: var(--r);
  padding: 2px 8px; background: var(--paper); white-space: nowrap;
}

/* 03 拆解卡 · 分组标题 + 非标杆折叠卡 + 栏目级折叠 */
.vl-report-root .dec-collapse { margin-top: 8px; }
.vl-report-root .dec-collapse-head {
  display: flex; align-items: center; gap: 10px; cursor: pointer;
  padding: 12px 16px; border: 1px solid var(--line); border-radius: var(--r);
  background: var(--card); transition: .15s ease;
}
.vl-report-root .dec-collapse-head:hover { border-color: rgba(26,26,26,.2); }
.vl-report-root .dec-collapse-head h3 { font-family: var(--serif); font-size: 17px; font-weight: 700; }
.vl-report-root .dec-collapse-head .dec-subhead-hint { font-size: 12.5px; color: var(--muted); }
.vl-report-root .dec-collapse-arrow { color: var(--muted); font-size: 14px; margin-left: auto; }
.vl-report-root .dec-collapse-body { margin-top: 6px; }
.vl-report-root .dec-collapse-body[hidden] { display: none; }
.vl-report-root .dec-collapse-foot { text-align: center; padding: 10px 0; }
.vl-report-root .dec-collapse-btn {
  border: 1px solid var(--line); background: var(--card); color: var(--muted);
  border-radius: var(--r); padding: 6px 20px; font-size: 13px; cursor: pointer;
  font-family: var(--sans); transition: .15s ease;
}
.vl-report-root .dec-collapse-btn:hover { border-color: var(--accent); color: var(--accent); }
.vl-report-root .dec-subhead { display: flex; align-items: baseline; gap: 12px; margin-top: 8px; }
.vl-report-root .dec-subhead h3 { font-family: var(--serif); font-size: 17px; font-weight: 700; }
.vl-report-root .dec-subhead .dec-subhead-hint { font-size: 12.5px; color: var(--muted); }
.vl-report-root .dec-card.fold { cursor: pointer; transition: .15s ease; }
.vl-report-root .dec-card.fold:hover { border-color: rgba(26,26,26,.2); }
/* 紧凑单行：序号+标题+UP主名+标签 chip+展开三角 */
.vl-report-root .dec-card.fold .fold-head {
  display: flex; align-items: center; gap: 8px; padding: 7px 16px;
  white-space: nowrap; overflow: hidden;
}
.vl-report-root .dec-card.fold .fold-idx {
  flex: 0 0 auto; font-family: var(--serif); font-size: 13px; color: var(--muted);
  min-width: 24px; text-align: right;
}
.vl-report-root .dec-card.fold .fold-tt {
  flex: 0 1 auto; font-family: var(--serif); font-size: 14px; font-weight: 600; color: var(--ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 420px;
}
.vl-report-root .dec-card.fold .fold-up {
  flex: 0 0 auto; font-size: 12px; color: var(--muted); white-space: nowrap;
}
.vl-report-root .dec-card.fold .fold-badges { display: flex; flex-wrap: nowrap; gap: 4px; flex: 0 0 auto; overflow: hidden; }
.vl-report-root .dec-card.fold .fold-badges .badge { font-size: 11px; padding: 1px 6px; }
.vl-report-root .dec-card.fold .fold-arrow { color: var(--muted); font-size: 12px; flex: 0 0 auto; margin-left: auto; }
.vl-report-root .dec-card.fold .dec-grid { display: none; }
.vl-report-root .dec-card.fold.open .dec-grid { display: grid; }
.vl-report-root .dec-card.fold .fold-head .fold-tt:hover { color: var(--accent); }

/* 04 规律 · 基线说明 / 分布空态 / LLM 启示 */
.vl-report-root .pattern-base { font-size: 12.5px; color: var(--muted); margin: -12px 0 16px; }
.vl-report-root .pattern .empty { padding: 20px; text-align: center; color: var(--muted); font-size: 13.5px; border: 1px dashed var(--line); border-radius: var(--r); }
.vl-report-root .insights { list-style: none; margin: 0; padding: 0; }
.vl-report-root .insights li { position: relative; padding: 10px 0 10px 22px; border-bottom: 1px solid var(--line); line-height: 1.75; font-size: 14.5px; color: var(--ink); }
.vl-report-root .insights li:last-child { border-bottom: none; }
.vl-report-root .insights li::before { content: ""; position: absolute; left: 2px; top: 18px; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
/* 问题7：LLM 启示区到数据表之间空白收紧 — empty 态不撑高 */
.vl-report-root .pattern > .empty:only-child { padding: 12px; }

/* 05 一键出稿（创作区） */
.vl-report-root .creative-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.vl-report-root .creative-card { border: 1px solid var(--line); border-radius: var(--r); background: var(--card); padding: 28px; display: flex; flex-direction: column; gap: 14px; }
.vl-report-root .creative-card h3 { font-family: var(--serif); font-size: 18px; font-weight: 700; }
.vl-report-root .creative-card .desc { color: var(--muted); font-size: 14px; line-height: 1.7; }
/* 按钮推到卡底对齐（问题5修复）：说明行数不同时三卡按钮底边齐平 */
.vl-report-root .creative-card .btn { margin-top: auto; }
.vl-report-root .creative-card .creative-cost { font-size: 12px; color: var(--muted); }
/* 全宽结果区：按 kind 分块，无结果时不显示（hidden） */
.vl-report-root .creative-results { margin-top: 24px; display: flex; flex-direction: column; gap: 24px; }
.vl-report-root .creative-result-block { border: 1px solid var(--line); border-radius: var(--r); background: var(--card); padding: 28px; }
.vl-report-root .creative-result-block[hidden] { display: none; }
.vl-report-root .creative-result-title { font-family: var(--serif); font-size: 18px; font-weight: 700; margin-bottom: 16px; }
/* loading 脉冲点（复用 ev-pulse 动画） */
.vl-report-root .creative-loading { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 14px; }
.vl-report-root .creative-loading .ev-pulse { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); display: inline-block; animation: pulse 1.2s ease-in-out infinite; }
/* 成稿区 markdown */
.vl-report-root .creative-draft { margin-top: 12px; padding: 16px; border: 1px solid var(--line); border-radius: var(--r); background: var(--paper); }
.vl-report-root .creative-draft p { margin: 0 0 10px; }
.vl-report-root .creative-draft p:last-child { margin-bottom: 0; }
.vl-report-root .creative-draft ul, .vl-report-root .creative-draft ol { margin: 8px 0 12px; padding-left: 24px; }
.vl-report-root .creative-draft li { margin-bottom: 4px; line-height: 1.7; }
.vl-report-root .creative-draft strong { font-weight: 700; color: var(--ink); }
.vl-report-root .creative-draft em { font-style: italic; }
/* 来源附注（列表项内的小字来源行，不打断列表编号） */
.vl-report-root .creative-draft .md-src-note, .vl-report-root .answer-txt .md-src-note {
  font-size: 12px; color: var(--muted); margin-top: 4px; line-height: 1.5;
}
.vl-report-root .creative-draft a { color: var(--accent); text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: 1px; }
/* markdown 标题与引用块（renderMdLite 输出，创作区和知识库共用） */
.vl-report-root .creative-draft .md-h1, .vl-report-root .answer-txt .md-h1 { font-family: var(--serif); font-size: 22px; font-weight: 700; margin: 18px 0 12px; line-height: 1.4; color: var(--ink); }
.vl-report-root .creative-draft .md-h2, .vl-report-root .answer-txt .md-h2 { font-family: var(--serif); font-size: 19px; font-weight: 700; margin: 16px 0 10px; line-height: 1.45; color: var(--ink); }
.vl-report-root .creative-draft .md-h3, .vl-report-root .answer-txt .md-h3 { font-family: var(--serif); font-size: 16px; font-weight: 700; margin: 14px 0 8px; line-height: 1.5; color: var(--ink); }
.vl-report-root .creative-draft .md-h4, .vl-report-root .answer-txt .md-h4 { font-family: var(--sans); font-size: 15px; font-weight: 700; margin: 12px 0 6px; line-height: 1.5; color: var(--ink); }
.vl-report-root .creative-draft .md-quote, .vl-report-root .answer-txt .md-quote { margin: 12px 0; padding: 12px 16px; border-left: 3px solid var(--accent); background: var(--paper); border-radius: 0 var(--r) var(--r) 0; color: var(--muted); font-size: 14px; line-height: 1.75; }
.vl-report-root .creative-draft .md-quote:first-child, .vl-report-root .answer-txt .md-quote:first-child { margin-top: 0; }
.vl-report-root .creative-draft .md-quote:last-child, .vl-report-root .answer-txt .md-quote:last-child { margin-bottom: 0; }
/* 合规摘要 */
.vl-report-root .creative-compliance { margin-top: 8px; font-size: 13px; color: var(--muted); line-height: 1.7; }
.vl-report-root .creative-compliance .pass { color: var(--ink); font-weight: 600; }
/* 六平台 tab */
.vl-report-root .cr-platform-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.vl-report-root .cr-platform-tab { border: 1px solid var(--line); background: var(--card); color: var(--ink); border-radius: var(--r); padding: 6px 14px; font-size: 13px; cursor: pointer; font-family: var(--sans); transition: .15s ease; }
.vl-report-root .cr-platform-tab.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.vl-report-root .cr-platform-pane { display: none; }
.vl-report-root .cr-platform-pane.on { display: block; }
/* 风格卡 */
.vl-report-root .creative-style-card { margin-top: 8px; padding: 14px 18px; border: 1px dashed var(--line); border-radius: var(--r); background: var(--paper); }
.vl-report-root .creative-style-card ul { margin: 0; padding-left: 20px; }
.vl-report-root .creative-style-card li { margin-bottom: 6px; font-size: 14px; line-height: 1.7; color: var(--ink); }
/* 复制按钮 */
.vl-report-root .creative-copy-btn { border: 1px solid var(--line); background: var(--card); color: var(--ink); border-radius: var(--r); padding: 6px 16px; font-size: 13px; cursor: pointer; font-family: var(--sans); transition: .15s ease; margin-top: 10px; }
.vl-report-root .creative-copy-btn:hover { border-color: var(--accent); color: var(--accent); }
/* 重试按钮 */
.vl-report-root .creative-retry-btn { border: 1px solid var(--accent); background: transparent; color: var(--accent); border-radius: var(--r); padding: 6px 16px; font-size: 13px; cursor: pointer; font-family: var(--sans); margin-top: 10px; transition: .15s ease; }
.vl-report-root .creative-retry-btn:hover { background: var(--accent); color: #fff; }
/* 错误态 */
.vl-report-root .creative-error { color: var(--accent); font-size: 14px; line-height: 1.7; }

/* 附件一·数据表 */
.vl-report-root .table-tools { display: flex; gap: 12px; align-items: center; margin-bottom: 16px; flex-wrap: wrap; }
.vl-report-root .table-tools select {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--r);
  padding: 9px 14px; font-size: 14px; font-family: var(--sans); color: var(--ink); cursor: pointer;
}
.vl-report-root .table-tools .hint { font-size: 13px; color: var(--muted); }
/* 表格外框（问题4修复）：双轴内部滚动 + 表头吸顶，长表滚动时表头始终可见 */
.vl-report-root .table-wrap { border: 1px solid var(--line); border-radius: var(--r); overflow: auto; max-height: 70vh; background: var(--card); }
.vl-report-root table { border-collapse: collapse; min-width: 1000px; width: 100%; font-size: 14px; text-align: left; table-layout: fixed; }
.vl-report-root thead th {
  position: sticky; top: 0; z-index: 2; /* 吸顶（随表格内部滚动）；低于吸顶目录条(z-index:40) */
  text-align: left; padding: 14px 18px; font-weight: 600; color: var(--muted); font-size: 13px;
  border-bottom: 1px solid var(--line); cursor: pointer; user-select: none; white-space: nowrap; background: var(--paper);
}
.vl-report-root thead th:hover { color: var(--ink); }
.vl-report-root thead th .ar { color: var(--accent); font-size: 11px; margin-left: 4px; }
.vl-report-root tbody td { padding: 13px 18px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.vl-report-root tbody tr:last-child td { border-bottom: none; }
.vl-report-root tbody tr:hover { background: var(--paper); }
.vl-report-root tbody td.num { text-align: right; font-variant-numeric: tabular-nums; }
.vl-report-root tbody td.hot { color: var(--accent); font-weight: 600; }
/* 列宽重排（问题3 + 问题4修复）：
   table-layout: fixed 下列宽只认首行（thead th），必须把宽度写在 th 上；
   td 上的 col-* 类只保留省略号/不换行行为 */
.vl-report-root .col-idx { text-align: center; white-space: nowrap; }
.vl-report-root .col-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vl-report-root .col-up { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vl-report-root .col-dur { white-space: nowrap; }
.vl-report-root .col-fans { white-space: nowrap; }
.vl-report-root .col-form { white-space: nowrap; }
/* 附一数据表各列宽度：数值列定窄，标题列独占剩余空间 */
.vl-report-root #vl-dataTable thead th:nth-child(1) { width: 44px; }
.vl-report-root #vl-dataTable thead th:nth-child(3) { width: 150px; }
.vl-report-root #vl-dataTable thead th:nth-child(4) { width: 70px; }
.vl-report-root #vl-dataTable thead th:nth-child(5),
.vl-report-root #vl-dataTable thead th:nth-child(6) { width: 84px; }
.vl-report-root #vl-dataTable thead th:nth-child(7) { width: 80px; }
.vl-report-root #vl-dataTable thead th:nth-child(8) { width: 96px; }
.vl-report-root #vl-dataTable thead th:nth-child(9) { width: 70px; }
/* 显示全部按钮 */
.vl-report-root .table-showall-row td { text-align: center; padding: 16px; }
.vl-report-root .table-showall-btn {
  border: 1px solid var(--line); background: var(--card); color: var(--ink);
  border-radius: var(--r); padding: 8px 20px; font-size: 13px; cursor: pointer;
  font-family: var(--sans); transition: .15s ease;
}
.vl-report-root .table-showall-btn:hover { border-color: var(--accent); color: var(--accent); }
/* 数据表重试按钮 */
.vl-report-root .table-retry-btn {
  border: 1px solid var(--line); background: var(--card); color: var(--ink);
  border-radius: var(--r); padding: 6px 16px; font-size: 13px; cursor: pointer;
  font-family: var(--sans); transition: .15s ease; margin-top: 10px;
}
.vl-report-root .table-retry-btn:hover { border-color: var(--accent); color: var(--accent); }

/* 附件二·知识库问答 */
.vl-report-root .qa-container { display: flex; flex-direction: column; gap: 20px; }
.vl-report-root .qa-input-box {
  border: 1px solid var(--line); border-radius: var(--r); background: var(--card); padding: 24px;
}
/* 时间筛选选择框 */
.vl-report-root .qa-time-filter {
  display: flex; align-items: center; gap: 8px; margin-bottom: 14px;
}
.vl-report-root .qa-time-label {
  font-size: 13px; color: var(--muted); font-weight: 500; white-space: nowrap;
}
.vl-report-root .qa-time-select {
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--r);
  padding: 6px 12px; font-size: 13px; font-family: var(--sans); color: var(--ink);
  cursor: pointer; transition: .15s ease;
}
.vl-report-root .qa-time-select:focus { outline: none; border-color: var(--accent); }
.vl-report-root .qa-time-echo { display: inline; }
.vl-report-root .qa-input-row { display: flex; gap: 12px; align-items: stretch; }
.vl-report-root .qa-input-row input {
  flex: 1; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r);
  padding: 12px 16px; font-size: 14.5px; font-family: var(--sans); color: var(--ink);
}
.vl-report-root .qa-input-row input:focus { outline: none; border-color: var(--accent); }
.vl-report-root .qa-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.vl-report-root .qa-chip {
  font-size: 12.5px; color: var(--muted); border: 1px solid var(--line); border-radius: var(--r);
  padding: 5px 12px; background: var(--paper); cursor: pointer; transition: .15s ease; user-select: none;
}
.vl-report-root .qa-chip:hover { border-color: var(--accent); color: var(--accent); }

.vl-report-root .qa { border: 1px solid var(--line); border-radius: var(--r); background: var(--card); padding: 28px; }
.vl-report-root .qa .ask { display: flex; gap: 14px; align-items: center; }
.vl-report-root .qa .ask .av {
  flex: 0 0 auto; width: 34px; height: 34px; border-radius: var(--r); background: var(--ink); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600;
}
.vl-report-root .qa .ask .q { font-weight: 600; font-size: 16px; color: var(--ink); }
.vl-report-root .qa .box { margin: 18px 0 0; border: 1px solid var(--line); border-radius: var(--r); padding: 20px; background: var(--paper); }
.vl-report-root .qa .box .from { font-size: 13px; color: var(--accent); font-weight: 600; margin-bottom: 10px; }
.vl-report-root .qa .box .quote { line-height: 1.8; font-size: 15px; }
.vl-report-root .qa .box .quote .ts { font-family: var(--serif); font-weight: 700; color: var(--ink); }
.vl-report-root .qa .box .answer-txt { margin-top: 12px; font-size: 14.5px; color: var(--ink); line-height: 1.75; }
.vl-report-root .qa .box .link {
  display: inline-block; margin-top: 14px; font-size: 14px; color: var(--ink);
  border-bottom: 1px solid var(--accent); padding-bottom: 2px; transition: .15s ease;
}
.vl-report-root .qa .box .link:hover { color: var(--accent); }

/* 答案区 markdown 渲染样式（renderMdLite 输出） */
.vl-report-root .answer-txt p { margin: 0 0 10px; }
.vl-report-root .answer-txt p:last-child { margin-bottom: 0; }
.vl-report-root .answer-txt ul, .vl-report-root .answer-txt ol { margin: 8px 0 12px; padding-left: 24px; }
.vl-report-root .answer-txt li { margin-bottom: 4px; line-height: 1.7; }
.vl-report-root .answer-txt strong { font-weight: 700; color: var(--ink); }
.vl-report-root .answer-txt em { font-style: italic; }
.vl-report-root .answer-txt a { color: var(--accent); text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: 1px; transition: .15s ease; }
.vl-report-root .answer-txt a:hover { opacity: .8; }

/* 视频链接悬停飘窗（桌面端纯 CSS hover，触屏由 JS 控制） */
.vl-report-root .vhc-wrap { position: relative; display: inline-flex; max-width: 100%; }
.vl-report-root .vhc-card {
  position: absolute; top: 100%; left: 0; z-index: 30; margin-top: 6px;
  width: 240px; border: 1px solid var(--line); border-radius: var(--r);
  background: var(--card); padding: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.12);
  display: none;
}
.vl-report-root .vhc-wrap:hover .vhc-card,
.vl-report-root .vhc-wrap:focus-within .vhc-card { display: block; }
.vl-report-root .vhc-cover { display: block; width: 100%; aspect-ratio: 16/9; border-radius: 4px; object-fit: cover; }
.vl-report-root .vhc-title { display: block; margin-top: 8px; font-size: 13px; line-height: 1.5; color: var(--ink); font-weight: 600; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.vl-report-root .vhc-up { display: block; margin-top: 4px; font-size: 12px; color: var(--muted); }
.vl-report-root .vhc-hint-tap { display: none; margin-top: 6px; font-size: 11px; color: var(--muted); }
/* 触屏设备显示「再次点按进入视频页」提示 */
@media (hover: none) {
  .vl-report-root .vhc-hint-tap { display: block; }
  /* 触屏端飘窗由 JS 控制显隐，覆盖 CSS hover 规则 */
  .vl-report-root .vhc-wrap:hover .vhc-card { display: none; }
  .vl-report-root .vhc-wrap .vhc-card[data-tap-open="1"] { display: block; }
}

/* 猜你想追问 chip */
.vl-report-root .qa-suggest-chip {
  font-size: 13px; color: var(--ink); border: 1px solid var(--line); border-radius: var(--r);
  padding: 6px 14px; background: var(--paper); cursor: pointer; transition: .15s ease; user-select: none;
}
.vl-report-root .qa-suggest-chip:hover { border-color: var(--accent); color: var(--accent); }

/* 分组标题（引用视频 / 猜你想问） */
.vl-report-root .qa-group-title {
  font-size: 14px; font-weight: 700; color: var(--ink);
  margin-top: 12px; margin-bottom: 2px;
}
.vl-report-root .qa-group-title-suggest { margin-top: 16px; }

/* 引用视频区折叠展开按钮 */
.vl-report-root .qa-ref-expand-btn {
  display: inline-block; margin-top: 10px;
  border: 1px dashed var(--line); background: transparent; color: var(--muted);
  border-radius: var(--r); padding: 5px 16px; font-size: 13px; cursor: pointer;
  font-family: var(--sans); transition: .15s ease;
}
.vl-report-root .qa-ref-expand-btn:hover { border-color: var(--accent); color: var(--accent); }
.vl-report-root .qa-ref-foldable[hidden] { display: none; }

/* 就地追问输入框（每个 AI 回答卡片底部） */
.vl-report-root .qa-inline-ask {
  display: flex; gap: 8px; align-items: stretch;
  margin-top: 14px; padding-top: 10px; border-top: 1px dashed var(--line);
}
.vl-report-root .qa-inline-input {
  flex: 1; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r);
  padding: 8px 14px; font-size: 13.5px; font-family: var(--sans); color: var(--ink);
}
.vl-report-root .qa-inline-input:focus { outline: none; border-color: var(--accent); }
.vl-report-root .qa-inline-input::placeholder { color: #b3aa9d; }
.vl-report-root .qa-inline-send {
  background: var(--accent); color: #fff; border: 1px solid var(--accent);
  border-radius: var(--r); cursor: pointer; font-family: var(--sans); font-weight: 600;
  transition: .15s ease;
}
.vl-report-root .qa-inline-send:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(184,51,42,.12); }

/* 历史相关问答板块 */
.vl-report-root .kb-related-list { display: flex; flex-direction: column; gap: 16px; }
.vl-report-root .kb-rel-item {
  border: 1px solid var(--line); border-radius: var(--r); background: var(--card);
  padding: 20px 24px; position: relative;
}
.vl-report-root .kb-rel-q { font-size: 15px; font-weight: 700; color: var(--ink); line-height: 1.5; }
.vl-report-root .kb-rel-excerpt-wrap { margin-top: 10px; }
.vl-report-root .kb-rel-excerpt {
  font-size: 14px; color: var(--muted); line-height: 1.7;
  max-height: 4.2em; overflow: hidden; margin: 0;
  transition: max-height .2s ease;
}
.vl-report-root .kb-rel-excerpt[data-collapsed="0"] { max-height: none; }
.vl-report-root .kb-rel-toggle {
  display: inline-block; margin-top: 6px;
  border: none; background: transparent; color: var(--accent);
  font-size: 13px; cursor: pointer; font-family: var(--sans);
  border-bottom: 1px dashed var(--accent); padding-bottom: 1px;
}
.vl-report-root .kb-rel-toggle:hover { opacity: .8; }
.vl-report-root .kb-rel-link {
  display: inline-block; margin-top: 12px; font-size: 13px; color: var(--ink);
  border-bottom: 1px solid var(--accent); padding-bottom: 1px;
  transition: .15s ease;
}
.vl-report-root .kb-rel-link:hover { color: var(--accent); }
.vl-report-root .kb-rel-date {
  display: block; margin-top: 8px; font-size: 12px; color: var(--muted);
}

/* ---------- 响应式断点 ---------- */
@media (max-width: 1180px) {
  /* 01 值不值得做：中窄屏三栏改单列堆叠，结论横幅改上下结构 */
  .vl-report-root .vj-grid,
  .vl-report-root .vj-grid.cols-2 { grid-template-columns: 1fr; }
  .vl-report-root .verdict-hero { flex-direction: column; gap: 22px; padding: 32px 26px 28px; }
  .vl-report-root .verdict-hero .vh-div { flex: 0 0 1px; width: 100%; }
}
@media (max-width: 880px) {
  .vl-home-root .hero h1 { font-size: 36px; }
  .vl-home-root .hero h1 .dropcap { font-size: 60px; }
  .vl-home-root .flow { grid-template-columns: 1fr 1fr; }
  .vl-home-root .flow .step:nth-child(2) { border-right: none; }
  .vl-home-root .flow .step:nth-child(1), .vl-home-root .flow .step:nth-child(2) { border-bottom: 1px solid var(--line); }
  .vl-home-root .report-card { grid-template-columns: 1fr; }
  .vl-home-root .report-card .stats { text-align: left; }

  .vl-input-root .steps { display: none; }
  .vl-input-root .uid-row input { max-width: none; width: 100%; }
  .vl-input-root .uid-row { flex-direction: column; }
  .vl-input-root .uid-btn { padding: 12px 0; }

  .vl-run-root .stage { grid-template-columns: 36px 1fr; gap: 14px; padding: 20px; }
  .vl-run-root .head h1 { font-size: 22px; }

  .vl-report-root .targets, .vl-report-root .dec-grid, .vl-report-root .patterns { grid-template-columns: 1fr; }
  .vl-report-root .toc .wrap { grid-template-columns: repeat(4, 1fr); }
  .vl-report-root section.block { scroll-margin-top: 230px; }
  .vl-report-root .dec-grid .item { border-right: none; }
  .vl-report-root .vs-grid { grid-template-columns: 1fr; }
  .vl-report-root .dec-card.fold .fold-tt { max-width: 200px; }
  .vl-report-root .bar .lab { flex: 0 0 130px; }
  .vl-report-root .report-head h1 { font-size: 28px; }
  .vl-report-root .creative-grid { grid-template-columns: 1fr; }
  /* 01 值不值得做：小屏细节 */
  .vl-report-root .verdict-hero .vh-nums { grid-template-columns: 1fr; gap: 14px; }
  .vl-report-root .verdict-hero .num-block { border-left: none; padding: 0; border-top: 1px solid var(--line); padding-top: 12px; }
  .vl-report-root .verdict-hero .num-block:first-child { border-top: none; padding-top: 0; }
  .vl-report-root .vc-grid { grid-template-columns: 1fr; }
  .vl-report-root .hr-head, .vl-report-root .hr-row { grid-template-columns: 22px minmax(0, 1fr) 54px 44px 50px 40px; gap: 6px; font-size: 12px; }
}

/* ==========================================================================
   营销落地页（vl_landing / vl_landing_placeholder，vll- 命名空间）
   2026-09-03 设计稿 A1 施工：顶部导航 + 双栏 hero（静态报告预览卡 +
   数据入口条）+ 全宽四卡行 + 简版页脚。预览卡为「分析报告仪表盘」静态
   复刻卡片：外壳照设计图，内容只放报告真实存在的结论区与榜单区。
   ========================================================================== */
main.vll-wide-host { max-width: none; padding: 0; } /* 落地页整幅铺开，切走时由视图摘掉 */

.vl-landing-root { background: var(--paper); min-height: 60vh; }

/* ---------- 顶部导航 ---------- */
.vl-landing-root .vll-nav { background: var(--paper); border-bottom: 1px solid var(--line); }
.vl-landing-root .vll-nav-wrap {
  max-width: 1200px; margin: 0 auto; padding: 0 32px; height: 64px;
  display: flex; align-items: center; gap: 28px;
}
.vl-landing-root .vll-brand { display: flex; align-items: center; gap: 10px; color: var(--ink); text-decoration: none; }
.vl-landing-root .vll-brand-mark {
  width: 30px; height: 30px; border-radius: 50%; background: var(--accent); color: #fff;
  font-style: normal; display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-weight: 700; font-size: 15px;
}
.vl-landing-root .vll-brand b { font-family: var(--serif); font-size: 20px; letter-spacing: 1px; }
.vl-landing-root .vll-brand small { font-size: 12px; color: var(--muted); }
.vl-landing-root .vll-nav-menu { display: flex; gap: 4px; margin: 0 auto; }
.vl-landing-root .vll-nav-menu a {
  font-size: 14px; color: var(--muted); padding: 8px 14px;
  border-radius: 999px; transition: .15s ease; text-decoration: none;
}
.vl-landing-root .vll-nav-menu a:hover { color: var(--ink); background: rgba(26,26,26,.04); }
.vl-landing-root .vll-nav-menu a.on { color: var(--accent); font-weight: 600; box-shadow: inset 0 -2px 0 var(--accent); border-radius: 0; }
.vl-landing-root .vll-nav-actions { display: flex; align-items: center; gap: 14px; }
.vl-landing-root .vll-login { font-size: 14px; color: var(--ink); padding: 8px 10px; text-decoration: none; transition: .15s ease; }
.vl-landing-root .vll-login:hover { color: var(--accent); }
.vl-landing-root .vll-try {
  background: var(--accent); color: #fff; font-size: 14px; font-weight: 600;
  padding: 9px 22px; border-radius: 999px; text-decoration: none; transition: .15s ease;
}
.vl-landing-root .vll-try:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(184,51,42,.2); }

/* ---------- hero 双栏 ---------- */
.vl-landing-root .vll-hero { position: relative; padding: 72px 0 64px; overflow: hidden; }
.vl-landing-root .vll-hero-deco {
  position: absolute; top: 0; right: 0; width: 320px; height: 200px; pointer-events: none;
  background: repeating-linear-gradient(135deg, rgba(26,26,26,.06) 0 1px, transparent 1px 12px);
  clip-path: polygon(22% 0, 100% 0, 100% 100%);
}
.vl-landing-root .vll-hero-grid {
  position: relative; max-width: 1200px; margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: minmax(0, 1fr) 460px; gap: 56px; align-items: center;
}
.vl-landing-root .vll-hero-main { min-width: 0; }
.vl-landing-root .vll-h1 {
  font-family: var(--serif); font-weight: 700; font-size: 58px;
  line-height: 1.22; letter-spacing: 2px; margin: 0; color: var(--ink);
}
.vl-landing-root .vll-kicker {
  font-family: var(--serif); color: var(--accent); font-size: 21px;
  font-weight: 700; letter-spacing: 1px; margin: 20px 0 0;
}
.vl-landing-root .vll-lead { color: var(--muted); font-size: 16px; line-height: 1.9; margin: 20px 0 0; }
.vl-landing-root .vll-cta { display: flex; align-items: center; gap: 16px; margin: 32px 0 0; flex-wrap: wrap; }
.vl-landing-root .vll-btn {
  display: inline-flex; align-items: center; background: var(--accent); color: #fff;
  font-size: 15px; font-weight: 600; padding: 13px 32px; border-radius: 999px;
  transition: .15s ease; text-decoration: none;
}
.vl-landing-root .vll-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(184,51,42,.22); }
.vl-landing-root .vll-btn-ghost {
  display: inline-flex; align-items: center; color: var(--ink); font-size: 15px; font-weight: 600;
  padding: 12px 26px; border: 1px solid rgba(26,26,26,.25); border-radius: 999px;
  transition: .15s ease; text-decoration: none;
}
.vl-landing-root .vll-btn-ghost:hover { border-color: var(--accent); color: var(--accent); }

/* ---------- 数据入口条（平台名只允许出现在这里） ---------- */
.vl-landing-root .vll-src-bar {
  margin-top: 26px; display: flex; align-items: center; flex-wrap: wrap;
  gap: 10px 18px; font-size: 13px;
}
.vl-landing-root .vll-src-label { font-size: 12px; letter-spacing: 2px; color: var(--muted); font-weight: 600; }
.vl-landing-root .vll-src-item { display: inline-flex; align-items: center; gap: 7px; color: #b3aa9d; }
.vl-landing-root .vll-src-item .vll-src-note { font-size: 11px; color: var(--muted); }
.vl-landing-root .vll-src-item .vll-src-dot { width: 9px; height: 9px; border-radius: 2px; background: #b3aa9d; opacity: .55; }
/* B站：唯一亮显入口（平台粉 #fb7299 系）+「已上线」小注 */
.vl-landing-root .vll-src-item.on { color: #d4537f; font-weight: 600; }
.vl-landing-root .vll-src-item.on .vll-src-dot { background: #fb7299; opacity: 1; box-shadow: 0 0 0 3px rgba(251,114,153,.18); }
.vl-landing-root .vll-src-item.on .vll-src-note { color: #d4537f; }

/* ---------- 报告预览卡（静态复刻设计图：真实数据优先，失败降级示例） ---------- */
.vl-landing-root .vll-preview-card {
  position: relative; height: 540px; border: 1px solid rgba(26,26,26,.14);
  border-radius: 12px; background: var(--card); overflow: hidden;
  box-shadow: 0 18px 44px rgba(26,26,26,.10);
  transition: transform .18s ease, box-shadow .18s ease;
  transform: perspective(1000px); transform-style: preserve-3d;
  will-change: transform; cursor: pointer;
  display: flex; flex-direction: column;
}
.vl-landing-root .vll-preview-card:hover { box-shadow: 0 24px 56px rgba(26,26,26,.16); }
/* 卡头：小 logo + 标题 + 关键词/日期；右侧两枚纯装饰按钮（不做绑定） */
.vl-landing-root .vll-pv-head {
  flex: 0 0 auto; display: flex; align-items: center; gap: 10px;
  padding: 11px 16px; border-bottom: 1px solid var(--line);
}
.vl-landing-root .vll-pv-logo {
  flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%;
  background: var(--accent); color: #fff; font-style: normal;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-weight: 700; font-size: 14px;
}
.vl-landing-root .vll-pv-tt { flex: 1 1 auto; min-width: 0; }
.vl-landing-root .vll-pv-tt b { font-family: var(--serif); font-size: 15px; letter-spacing: .5px; }
.vl-landing-root .vll-pv-demo-badge {
  display: inline-block; vertical-align: 2px; margin-left: 8px; padding: 1px 8px;
  font-size: 10.5px; font-style: normal; color: var(--accent);
  background: rgba(184,51,42,.08); border: 1px solid rgba(184,51,42,.25); border-radius: 999px;
}
.vl-landing-root .vll-pv-demo-badge[hidden] { display: none; }
.vl-landing-root .vll-pv-sub {
  display: block; font-size: 11px; color: var(--muted); line-height: 1.4; margin-top: 1px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.vl-landing-root .vll-pv-btn {
  flex: 0 0 auto; margin-left: 8px; font-size: 11px; color: var(--muted);
  border: 1px solid var(--line); border-radius: 999px; padding: 3px 10px;
  background: var(--card); white-space: nowrap; pointer-events: none;
}
.vl-landing-root .vll-pv-btn:first-of-type { margin-left: auto; }
/* 卡身：左竖排装饰菜单 + 右内容区 */
.vl-landing-root .vll-pv-body { flex: 1 1 auto; min-height: 0; display: flex; }
.vl-landing-root .vll-pv-menu {
  flex: 0 0 118px; display: flex; flex-direction: column; gap: 2px;
  padding: 12px 10px; background: var(--paper); border-right: 1px solid var(--line);
}
.vl-landing-root .vll-pv-menu span {
  font-size: 12px; color: var(--muted); padding: 6px 9px; border-radius: 7px; white-space: nowrap;
}
.vl-landing-root .vll-pv-menu span.on { color: var(--accent); background: rgba(184,51,42,.09); font-weight: 600; }
.vl-landing-root .vll-pv-menu .vll-pv-menu-set { margin-top: auto; }
.vl-landing-root .vll-pv-main {
  flex: 1 1 auto; min-width: 0; padding: 14px 16px 34px; overflow: hidden; background: var(--card);
}
.vl-landing-root .vll-pv-loading { margin: 40px 0 0; text-align: center; color: var(--muted); font-size: 12px; }
/* 结论区：结论大字（砖红衬线）+ 一句话解读 + 横排三个数据点 */
.vl-landing-root .vll-pv-verdict { border-bottom: 1px solid var(--line); padding-bottom: 12px; }
.vl-landing-root .vll-pv-tag {
  display: block; font-family: var(--serif); font-size: 30px; font-weight: 700;
  color: var(--accent); line-height: 1.15; letter-spacing: 2px;
}
.vl-landing-root .vll-pv-why {
  margin: 4px 0 0; font-size: 12px; color: var(--ink); line-height: 1.6;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.vl-landing-root .vll-pv-nums { display: flex; gap: 18px; margin-top: 10px; }
.vl-landing-root .vll-pv-num { min-width: 0; }
.vl-landing-root .vll-pv-num b { display: block; font-size: 16px; font-weight: 700; color: var(--ink); line-height: 1.3; }
.vl-landing-root .vll-pv-num span { display: block; font-size: 11px; color: var(--muted); margin-top: 1px; }
.vl-landing-root .vll-pv-num i { display: block; font-size: 10px; font-style: normal; color: var(--muted); opacity: .8; }
/* 榜单区：标题 + 行（名次 / 封面缩略图 / 标题与综合数据 / 红色倍数徽章） */
.vl-landing-root .vll-pv-list { padding-top: 10px; }
.vl-landing-root .vll-pv-list-t {
  font-family: var(--serif); font-size: 14px; font-weight: 700; color: var(--ink); letter-spacing: .5px;
}
.vl-landing-root .vll-pv-row {
  display: flex; align-items: center; gap: 9px; padding: 6px 0; border-bottom: 1px solid var(--line);
}
.vl-landing-root .vll-pv-row:last-child { border-bottom: none; }
.vl-landing-root .vll-pv-rank {
  flex: 0 0 18px; width: 18px; height: 18px; border-radius: 5px; background: rgba(26,26,26,.08);
  color: var(--muted); font-size: 11px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center;
}
.vl-landing-root .vll-pv-row:first-of-type .vll-pv-rank { background: var(--accent); color: #fff; }
.vl-landing-root .vll-pv-cover {
  flex: 0 0 62px; width: 62px; height: 36px; border-radius: 6px; overflow: hidden;
  background: rgba(26,26,26,.16); /* 无封面时的墨灰色块占位 */
}
.vl-landing-root .vll-pv-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vl-landing-root .vll-pv-info { flex: 1 1 auto; min-width: 0; }
.vl-landing-root .vll-pv-info b {
  display: block; font-size: 12px; font-weight: 600; color: var(--ink); line-height: 1.4;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.vl-landing-root .vll-pv-info span {
  display: block; font-size: 10.5px; color: var(--muted); line-height: 1.5;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.vl-landing-root .vll-pv-x {
  flex: 0 0 auto; font-size: 12px; font-weight: 700; color: #fff;
  background: var(--accent); border-radius: 999px; padding: 2px 9px;
}
.vl-landing-root .vll-preview-tag {
  position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%);
  z-index: 11; font-size: 12px; color: var(--muted);
  background: rgba(250,247,242,.92); border: 1px solid var(--line);
  border-radius: 999px; padding: 4px 14px; pointer-events: none; white-space: nowrap;
}

/* ---------- 全宽四卡行（章名与报告页四章一致） ---------- */
.vl-landing-root .vll-flow { padding: 8px 0 72px; }
.vl-landing-root .vll-flow-wrap {
  max-width: 1200px; margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
}
.vl-landing-root .vll-flow-card {
  position: relative; display: block; background: var(--card);
  border: 1px solid var(--line); border-radius: var(--r);
  padding: 22px 76px 22px 24px; transition: .15s ease; text-decoration: none;
}
.vl-landing-root .vll-flow-card:hover { transform: translateY(-3px); border-color: rgba(26,26,26,.2); box-shadow: 0 8px 20px rgba(26,26,26,.06); }
.vl-landing-root .vll-flow-ic {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 9px;
  font-size: 16px; font-style: normal; color: var(--accent); margin-bottom: 10px;
}
.vl-landing-root .vll-flow-t { display: block; font-family: var(--serif); font-weight: 700; font-size: 19px; color: var(--ink); }
.vl-landing-root .vll-flow-d { display: block; font-size: 13px; color: var(--muted); margin-top: 8px; line-height: 1.6; }
.vl-landing-root .vll-flow-n {
  position: absolute; right: 20px; top: 50%; transform: translateY(-50%);
  font-family: var(--serif); font-size: 44px; font-weight: 700; color: var(--accent); line-height: 1;
}

/* ---------- 页脚 / 占位页 ---------- */
.vl-landing-root .vll-footer { border-top: 1px solid var(--line); padding: 26px 32px; text-align: center; font-size: 13px; color: var(--muted); }
.vl-landing-root .vll-ph { max-width: 760px; margin: 0 auto; padding: 96px 32px 120px; text-align: center; }
.vl-landing-root .vll-ph-eyebrow { font-size: 13px; letter-spacing: 2px; color: var(--muted); }
.vl-landing-root .vll-ph-title { font-family: var(--serif); font-size: 44px; font-weight: 700; margin: 14px 0 0; color: var(--ink); }
.vl-landing-root .vll-ph-note { color: var(--muted); margin: 18px 0 0; font-size: 15px; }
.vl-landing-root .vll-ph-link {
  display: inline-block; margin-top: 22px; background: var(--accent); color: #fff;
  font-size: 14px; font-weight: 600; padding: 11px 26px; border-radius: 999px;
  transition: .15s ease; text-decoration: none;
}
.vl-landing-root .vll-ph-link:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(184,51,42,.22); }

/* ---------- 落地页响应式 ---------- */
@media (max-width: 960px) {
  /* 窄屏：菜单换到品牌下方横向滚动（保留全部入口）；hero 单列、预览卡高度
     改由内容撑开；倾斜关掉（触屏无 hover 由 JS 判定） */
  .vl-landing-root .vll-nav-wrap { flex-wrap: wrap; height: auto; padding: 12px 20px; gap: 10px; }
  .vl-landing-root .vll-brand small { display: none; }
  .vl-landing-root .vll-nav-menu { order: 3; width: 100%; overflow-x: auto; margin: 0; }
  .vl-landing-root .vll-hero { padding: 48px 0 40px; }
  .vl-landing-root .vll-hero-grid { grid-template-columns: 1fr; gap: 40px; }
  .vl-landing-root .vll-h1 { font-size: 40px; }
  .vl-landing-root .vll-kicker { font-size: 17px; }
  .vl-landing-root .vll-preview-card { height: auto; }
  .vl-landing-root .vll-flow-wrap { grid-template-columns: 1fr 1fr; gap: 14px; }
}
@media (max-width: 880px) {
  .vl-landing-root .vll-flow-wrap { grid-template-columns: 1fr; }
  .vl-landing-root .vll-pv-menu { display: none; } /* 手机上收起装饰菜单，保内容可读 */
  .vl-landing-root .vll-src-bar { gap: 8px 14px; }
}
