/* 演示视图样式（正式版第 2 轮 Part P，规格 §7.1–7.7；对应 report-present.js）。
   结构：dialog#present-view.present-view.ss-light 满屏（顶层），内含外壳 .pv-shell，外壳内是顶部 / 底部操作条、16:9 舞台 .pv-frame（容器单位 cqw）与本页证据层。
         窗口模式下舞台放在上下操作条之间、操作条常显；浏览器全屏（只对外壳请求，对话框加 .is-fullscreen）时舞台占满屏幕、操作条叠放，无操作时隐藏。
         稀疏页（[data-density="sparse"]，由 plan 标出）放大一档字号并在正文区居中。
   规则：幻灯固定浅色（.ss-light 在对话框上重设令牌，深色主题不影响）；颜色只用令牌或令牌的 color-mix；文字设下限，参照舞台 1024 宽时正文、页脚、元信息 ≥16px；
         衬线只用 600/700；圆角 ≤4px；不写内联样式。按钮与对话框先重置全局样式（workspace.css / site.css / workspace-improvements.css）。 */

/* ── 锁定页面与打印 ──────────────────────────────────── */
html[data-report-view="present"] { overflow: hidden; }
@media print { .present-view { display: none !important; } }

/* ── 对话框重置：满屏、无边框、留边为深海军蓝（停在封面时为海军蓝，无接缝） ── */
.present-view {
  position: fixed; inset: 0; width: 100vw; height: 100dvh; max-width: none; max-height: none;
  margin: 0; padding: 0; border: 0; border-radius: 0; box-shadow: none; overflow: hidden;
  background: var(--ss-navy-3); color: var(--ss-ink); font-family: var(--ss-font); font-size: 16px; line-height: 1.5; --pv-bar-h: 44px;
}
.present-view[data-on-cover] { background: var(--ss-navy); }
.present-view::backdrop { background: var(--ss-navy-3); }
/* 外壳：窗口模式下铺满对话框；全屏时浏览器把它放进顶层并铺满屏幕，底色随对话框（封面时为海军蓝） */
.pv-shell { position: absolute; inset: 0; overflow: hidden; background: inherit; }
.present-view:focus { outline: none; }
.present-view :where(p, h2, h3, ol, ul, dl, dd, blockquote) { margin: 0; }
.present-view :where(ol, ul) { padding: 0; list-style: none; }
.present-view button {
  min-height: 0; min-width: 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none;
  color: inherit; font: inherit; transition: none; transform: none; cursor: pointer;
}
.present-view kbd { font-family: var(--ss-font-mono); font-size: .85em; }

/* ── 操作条：窗口模式在舞台外的上下留边内常显；浏览器全屏时叠在舞台上（所以始终带底色），无操作约 2.5 秒后隐藏 ── */
.pv-bar {
  position: absolute; left: 0; right: 0; z-index: 20; height: var(--pv-bar-h);
  display: flex; align-items: center; gap: 12px; padding: 0 16px;
  background: color-mix(in srgb, var(--ss-navy-3) 92%, transparent); color: var(--ss-on-navy);
  font-size: 16px; line-height: 1.4; transition: opacity .3s ease;
}
.pv-bar.is-top { top: 0; }
.pv-bar.is-bottom { bottom: 0; justify-content: center; }
.present-view .pv-btn {
  display: inline-flex; flex: none; align-items: center; gap: 6px; min-height: 32px; padding: 0 12px;
  border: 1px solid var(--ss-on-navy-line); border-radius: 4px; color: var(--ss-on-navy); font-size: 15px; line-height: 1;
}
.present-view .pv-btn:hover { background: var(--ss-on-navy-fill); border-color: var(--ss-on-navy-muted); color: var(--ss-on-navy); }
.present-view .pv-btn[aria-disabled="true"] { border-color: var(--ss-on-navy-line); background: none; color: var(--ss-on-navy-muted); cursor: default; }
.present-view .pv-btn[aria-expanded="true"] { background: var(--ss-on-navy-fill); border-color: var(--ss-accent-on-navy); }
.pv-icon { flex: none; width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.pv-title { flex: 1 1 auto; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-weight: 500; color: var(--ss-on-navy); }
.pv-version { flex: none; color: var(--ss-on-navy-muted); font-variant-numeric: tabular-nums; }
.present-view .pv-bar :focus-visible { outline: 2px solid var(--ss-accent-on-navy); outline-offset: 2px; }
/* 证据层打开时操作条不可操作（inert），淡化以免看起来可点；优先级低于全屏无操作时的隐藏规则 */
.present-view .pv-bar[inert] { opacity: .45; }
.present-view .pv-bar[inert] .pv-btn { cursor: default; }
/* 浏览器全屏（只在可悬停的精确指针设备上）：舞台占满屏幕，操作条叠放，无输入约 2.5 秒后隐藏；鼠标移动或键盘焦点（Tab 移入，JS 加 .has-focus）
   进入条内时重新显示。鼠标点击按钮后留在条内的焦点不阻止隐藏，翻页时操作条不盖住页脚 */
@media (hover: hover) and (pointer: fine) {
  .present-view.is-fullscreen.is-idle .pv-bar:not(.has-focus) { opacity: 0; pointer-events: none; }
  .present-view.is-fullscreen .pv-frame { width: min(100vw, calc(100dvh * 16 / 9)); }
}

/* 首次进入的快捷键提示（浮现 2.4 秒后淡出） */
.pv-hint {
  position: absolute; left: 50%; bottom: 64px; z-index: 21; transform: translateX(-50%);
  display: flex; align-items: center; gap: 4px; padding: 8px 16px; border-radius: 4px; white-space: nowrap;
  background: color-mix(in srgb, var(--ss-navy-3) 94%, transparent); color: var(--ss-on-navy); font-size: 16px; line-height: 1.5;
  box-shadow: var(--ss-shadow-pop); transition: opacity .4s ease;
}
.pv-hint[hidden] { display: none; }
.pv-hint.is-fading { opacity: 0; }
.pv-hint kbd { padding: 0 6px; border: 1px solid var(--ss-on-navy-line); border-radius: 3px; color: var(--ss-on-navy); line-height: 20px; }
.pv-hint-dot { margin: 0 8px; color: var(--ss-on-navy-muted); }

/* ── 舞台：窗口模式宽取 min(视口宽, (视口高 − 上下两条操作条) × 16/9)，舞台始终在两条之间；全屏规则见上；舞台内尺寸用 cqw ─────── */
.pv-viewport { position: absolute; inset: 0; display: grid; place-items: center; }
.pv-frame {
  position: relative; width: min(100vw, calc((100dvh - 2 * var(--pv-bar-h)) * 16 / 9)); aspect-ratio: 16 / 9;
  container-type: inline-size; --sf-h: max(46px, 4.2cqw);
}
/* 触屏设备上操作条更高（命中区 44px），全屏时也不隐藏、舞台仍让出两条的高度 */
@media (hover: none), (pointer: coarse) {
  .present-view { --pv-bar-h: 52px; }
  .present-view .pv-btn { min-height: 44px; }
}
.pv-stage { position: absolute; inset: 0; background: var(--ss-surface); color: var(--ss-ink); font-family: var(--ss-font); }
.pv-frame.is-cover .pv-stage { background: var(--ss-navy); }
.present-view .pv-frame :focus-visible { outline: max(2px, .2cqw) solid var(--ss-accent); outline-offset: 2px; }
.present-view .pv-frame > .pv-stage:focus, .present-view .pv-frame > .pv-ev:focus { outline: none; }

/* ── 幻灯通用：标题行、正文、防误读行（贴在页脚上方） ─────── */
.pv-slide {
  position: absolute; inset: 0 0 var(--sf-h) 0; display: flex; flex-direction: column;
  padding: 3.8cqw 6cqw 1.5cqw; animation: pv-in .24s ease;
}
.pv-slide[hidden] { display: none; }
@keyframes pv-in { from { opacity: 0; } to { opacity: 1; } }
.sl-head { flex: none; display: flex; align-items: flex-start; justify-content: space-between; gap: .6cqw 2cqw; flex-wrap: wrap; }
.present-view .sl-kicker {
  display: flex; align-items: center; gap: 1cqw; min-width: 0; margin: 0;
  font-size: max(16px, 1.3cqw); font-weight: 600; line-height: 1.4; letter-spacing: .08em; color: var(--ss-navy); text-wrap: balance;
}
.sl-kicker::before { content: ""; flex: none; width: 2.4cqw; height: max(2px, .18cqw); background: var(--ss-navy); }
.sl-sub { padding-top: .1cqw; font-size: max(16px, 1.2cqw); line-height: 1.4; color: var(--ss-ink-2); font-variant-numeric: tabular-nums; }
.sl-body { position: relative; flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; margin-top: 2cqw; }
.pv-center { flex: none; margin-block: auto; }
/* 运行时兜底：正文超出版面时改为可滚动，底部渐隐，防误读行末尾写“本页可滚动” */
.sl-body.is-scroll { overflow-y: auto; overscroll-behavior: contain; padding-right: 1cqw; }
.sl-body.is-scroll::after {
  content: ""; position: sticky; bottom: 0; flex: none; display: block; height: 3cqw; margin-top: -3cqw;
  background: linear-gradient(color-mix(in srgb, var(--ss-surface) 0%, transparent), var(--ss-surface)); pointer-events: none;
}
.present-view .sl-body.is-scroll:focus-visible { outline-offset: -2px; }
.sl-guard {
  flex: none; display: flex; align-items: baseline; gap: 1cqw; margin: 0; padding-top: 1.4cqw;
  font-size: max(16px, 1.45cqw); line-height: 1.5; color: var(--ss-ink);
}
.sl-guard-k { flex: none; display: inline-flex; align-items: center; gap: .6cqw; font-weight: 600; color: var(--ss-navy); }
.sl-guard-sep { flex: none; color: var(--ss-line); }
.sl-guard-t { flex: 0 1 auto; min-width: 0; }
.sl-guard-t .status-item + .status-item::before { content: "·"; margin: 0 .6cqw; color: var(--ss-muted); }
.sl-guard-t .is-warn { color: var(--ss-warn-text); }
.sl-more { flex: none; margin-left: auto; padding-left: 1cqw; font-weight: 600; color: var(--ss-ink-2); white-space: nowrap; }
.sl-more[hidden] { display: none; }
.pv-dot { flex: none; width: max(10px, .8cqw); height: max(10px, .8cqw); border-radius: 50%; background: var(--ss-bar, var(--ss-navy)); }

/* 正文（ctx.renderCites 生成的 .answer）：覆盖全局 .answer 的最小高度、字号与 pre-wrap */
.present-view .pv-frame .answer {
  min-height: 0; margin: 0; white-space: pre-line; overflow-wrap: anywhere;
  font: 400 max(17px, 1.55cqw)/1.6 var(--ss-font); color: var(--ss-ink); text-wrap: pretty;
}
.present-view .pv-frame .cite-group { white-space: nowrap; }
/* 本次资料中找不到的引用标识：组末“引用待核验”（警示色文字，不是按钮） */
.pv-cite-missing { margin-left: .45cqw; font: 600 max(16px, 1.25cqw)/1.2 var(--ss-font); color: var(--ss-warn-text); white-space: nowrap; vertical-align: .05em; }
/* 引用编号：与阅读视图同号同义（虚线 = 未定位全文），投影时放大，命中区 ≥24×24 */
.present-view .pv-frame button.cite-ref {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  min-width: max(24px, 1.9cqw); height: max(24px, 1.9cqw); min-height: 0; margin: 0 0 0 .45cqw; padding: 0 .4cqw;
  border: max(1px, .1cqw) solid color-mix(in srgb, var(--ss-accent) 55%, transparent); border-radius: 3px;
  background: var(--ss-surface); color: var(--ss-accent-text); box-shadow: none;
  font: 600 max(14px, 1.1cqw)/1 var(--ss-font); font-variant-numeric: tabular-nums; vertical-align: .15em;
}
.present-view .pv-frame button.cite-ref::after { content: ""; position: absolute; inset: -2px; }
.present-view .pv-frame button.cite-ref.is-abs { border-style: dashed; }
.present-view .pv-frame button.cite-ref:hover { border-color: var(--ss-accent); background: var(--ss-highlight); color: var(--ss-accent-text); }
/* 状态行（strengthStatus，D9）：放大到投影字号 */
.present-view .pv-frame .para-status { display: flex; flex-wrap: wrap; align-items: center; gap: 0 .6cqw; margin: .3cqw 0 0; font-size: max(16px, 1.2cqw); line-height: 1.5; color: var(--ss-ink-2); }
.present-view .pv-frame .para-status .status-dot { width: max(8px, .65cqw); height: max(8px, .65cqw); }
.present-view .pv-frame .para-status .status-item + .status-item::before { margin-right: .6cqw; }

/* 标签：研究判断（深灰底白字）、计划（灰色虚线框） */
.pv-tag {
  display: inline-flex; align-items: center; padding: 0 .8cqw; border-radius: 2px; vertical-align: .1em;
  font: 600 max(16px, 1.15cqw)/1.7 var(--ss-font); letter-spacing: .04em; white-space: nowrap;
}
.pv-tag.is-judge { background: var(--ss-judge-text); color: var(--ss-surface); }
.pv-tag.is-plan { border: max(1px, .1cqw) dashed var(--ss-plan); color: var(--ss-plan-text); line-height: 1.5; }

/* ── 页脚（常驻，舞台内） ─────────────────────────────── */
.sl-foot {
  position: absolute; left: 6cqw; right: 6cqw; bottom: 0; z-index: 2; height: var(--sf-h);
  display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 2cqw;
  border-top: 1px solid var(--ss-line); font-size: max(16px, 1.3cqw); line-height: 1.2; color: var(--ss-ink-2);
}
.sl-foot p { display: flex; align-items: center; gap: .7cqw; min-width: 0; white-space: nowrap; }
.sl-foot-name { overflow: hidden; text-overflow: ellipsis; }
.sl-foot-page { justify-content: flex-end; font-weight: 600; color: var(--ss-ink); font-variant-numeric: tabular-nums; }
.pv-brand-mark { flex: none; width: max(18px, 1.5cqw); height: max(18px, 1.5cqw); color: var(--ss-navy); }
.pv-brand-mark .mark-frame, .pv-brand-mark .mark-wave { fill: none; stroke: currentColor; stroke-width: 4.5; stroke-linecap: round; stroke-linejoin: round; }
.pv-brand-mark .mark-wave { stroke: var(--ss-brand-signal); }
.pv-brand-mark .mark-dot { fill: var(--ss-brand-signal); }
.pv-shield { flex: none; width: max(17px, 1.4cqw); height: max(17px, 1.4cqw); fill: none; stroke: var(--ss-navy); stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.pv-frame.is-cover .sl-foot { border-top-color: var(--ss-on-navy-line); color: var(--ss-on-navy); }
.pv-frame.is-cover .sl-foot-page { color: var(--ss-on-navy); }
.pv-frame.is-cover .sl-foot .pv-brand-mark { color: var(--ss-on-navy); }
.pv-frame.is-cover .sl-foot .pv-brand-mark .mark-wave { stroke: var(--ss-on-navy); }
.pv-frame.is-cover .sl-foot .pv-brand-mark .mark-dot { fill: var(--ss-accent-on-navy); }
/* 封面正文已有完整核对声明，页脚中间一栏不重复 */
.pv-frame.is-cover .sl-foot-decl { visibility: hidden; }

/* ── 封面：海军蓝满版 + 取景框与声纳弧线稿 ─────────────── */
.pv-cover { padding: 4cqw 6cqw 2.4cqw; color: var(--ss-on-navy); }
.pv-cover-art { position: absolute; left: 0; top: 0; width: 100%; height: calc(100% + var(--sf-h)); pointer-events: none; }
.ca-frame { fill: none; stroke: color-mix(in srgb, var(--ss-on-navy) 38%, transparent); stroke-width: 2; }
.ca-arcs path { fill: none; stroke: color-mix(in srgb, var(--ss-on-navy) 20%, transparent); stroke-width: 1.5; }
.ca-arcs .ca-outer { stroke: color-mix(in srgb, var(--ss-on-navy) 14%, transparent); stroke-dasharray: 2 8; }
.ca-ticks { fill: none; stroke: color-mix(in srgb, var(--ss-on-navy) 8%, transparent); stroke-width: 1; }
.ca-dot { fill: var(--ss-accent-on-navy); }
.ca-ping { fill: none; stroke: var(--ss-accent-on-navy); stroke-width: 1.5; opacity: .6; }
.pv-cover-in { position: relative; display: flex; flex-direction: column; height: 100%; }
.pv-cover-top { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 2cqw; }
.pv-cover-brand { display: flex; align-items: center; gap: .9cqw; font-size: max(16px, 1.35cqw); font-weight: 700; letter-spacing: .02em; line-height: 1; color: var(--ss-on-navy); }
.pv-cover-brand .pv-brand-mark { width: 2.4cqw; height: 2.4cqw; min-width: 24px; min-height: 24px; color: var(--ss-on-navy); }
.pv-cover-brand .pv-brand-mark .mark-wave { stroke: var(--ss-on-navy); }
.pv-cover-brand .pv-brand-mark .mark-dot { fill: var(--ss-accent-on-navy); }
.pv-cover-brand-sub { padding-left: .9cqw; border-left: 1px solid var(--ss-on-navy-line); font-weight: 400; color: var(--ss-on-navy-muted); }
.pv-cover .pv-cover-main { flex: none; display: block; min-height: auto; margin-top: auto; max-width: 58cqw; }
.pv-cover-kicker { font-size: max(16px, 1.35cqw); font-weight: 500; line-height: 1.4; letter-spacing: .12em; color: var(--ss-accent-on-navy); }
.present-view .pv-cover-title { margin: 1.2cqw 0 0; font-family: var(--ss-font-serif); font-weight: 700; line-height: 1.25; letter-spacing: .01em; color: var(--ss-on-navy); text-wrap: balance; overflow-wrap: anywhere; }
.present-view .pv-cover-title.tier-1 { font-size: 4.6cqw; }
.present-view .pv-cover-title.tier-2 { font-size: 3.4cqw; }
.present-view .pv-cover-title.tier-3 { font-size: 2.6cqw; line-height: 1.32; }
.pv-cover-meta {
  display: grid; grid-template-columns: repeat(2, minmax(0, auto)); justify-content: start; gap: 1cqw 3.2cqw;
  margin-top: 2.6cqw; padding-top: 1.5cqw; border-top: 1px solid var(--ss-on-navy-line);
}
.pv-cover-meta dt { font-size: max(16px, 1.1cqw); line-height: 1.5; color: var(--ss-on-navy-muted); }
.pv-cover-meta dd { font-size: max(16px, 1.4cqw); line-height: 1.5; color: var(--ss-on-navy); }
.pv-cover-meta > .is-wide { grid-column: 1 / -1; }
/* 日期与短语不在中间断行（nobrParts 分段） */
.pv-nobr { white-space: nowrap; }
/* 结论未形成的占位原句、研究结果状态（标签 + 提示，措辞同报告页头） */
.pv-cover-meta .pv-cover-pending { color: var(--ss-on-navy); }
.pv-cover-meta .pv-cover-outcome { display: flex; flex-wrap: wrap; align-items: baseline; gap: .3cqw .9cqw; }
.pv-outcome-tag { flex: none; padding: 0 .7cqw; border: 1px solid var(--ss-on-navy-muted); border-radius: 3px; font-weight: 600; line-height: 1.6; color: var(--ss-on-navy); }
.pv-outcome-note { min-width: 0; color: var(--ss-on-navy-muted); }
.pv-cover-decl { display: flex; flex-wrap: wrap; align-items: baseline; gap: .3cqw .8cqw; margin-top: 1.6cqw; font-size: max(16px, 1.3cqw); line-height: 1.5; color: var(--ss-on-navy); }
.pv-cover-decl .pv-shield { align-self: center; width: max(18px, 1.5cqw); height: max(18px, 1.5cqw); stroke: var(--ss-accent-on-navy); }
.pv-cover-decl-k { font-weight: 600; }
.pv-cover-decl-n { flex-basis: 100%; color: var(--ss-on-navy-muted); }

/* ── 结论 ─────────────────────────────────────────────── */
.pv-statement { max-width: 82cqw; }
.present-view .pv-frame .pv-statement.tier-1 .answer { font: 600 3.05cqw/1.62 var(--ss-font-serif); }
.present-view .pv-frame .pv-statement.tier-2 .answer { font: 600 2.2cqw/1.62 var(--ss-font-serif); }
.present-view .pv-frame .pv-statement.tier-3 .answer,
.present-view .pv-frame .pv-statement.tier-4 .answer { font: 400 max(17px, 1.55cqw)/1.65 var(--ss-font); }
.pv-statement .pv-tag { margin-right: .4cqw; }

/* ── 关键发现：编号从 2 起，每条下一行证据状态 ─────────── */
.pv-findings { display: grid; gap: 1.4cqw; }
.pv-finding { display: grid; grid-template-columns: 3.8cqw minmax(0, 1fr); align-items: baseline; }
.pv-num { grid-row: 1 / span 2; font: 700 max(18px, 1.9cqw)/1.2 var(--ss-font-serif); color: var(--ss-navy); font-variant-numeric: lining-nums tabular-nums; }
.pv-finding > .answer, .pv-finding > .para-status { grid-column: 2; }
.present-view .pv-frame .pv-findings.is-dense .answer { font-size: max(16px, 1.5625cqw); line-height: 1.55; }

/* ── 关键数字：最多 4 列，各列四行（数字 / 口径 / 核对 / 来源）用 subgrid 对齐 ── */
.pv-figs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(4, auto); column-gap: 2.6cqw; }
.pv-figs.cols-1 { grid-template-columns: minmax(0, 44cqw); }
.pv-figs.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pv-figs.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pv-fig-col { display: grid; grid-row: span 4; grid-template-rows: subgrid; align-content: start; padding-top: 1.4cqw; border-top: 2px solid var(--ss-navy); }
.pv-fig-top { align-self: start; min-width: 0; }
.present-view .pv-fig {
  display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0 .5cqw;
  color: var(--ss-navy); line-height: 1; text-align: left;
}
/* 正文写法与原文不同时的“原文数值：…”（D11，同口径卡片） */
.pv-fig-orig { margin-top: .5cqw; font-size: max(16px, 1.2cqw); line-height: 1.5; color: var(--ss-ink-2); overflow-wrap: anywhere; }
.pv-fig-v { padding-bottom: .3cqw; border-bottom: max(2px, .16cqw) dotted var(--ss-accent); font: 700 5.4cqw/1 var(--ss-font-serif); font-variant-numeric: proportional-nums lining-nums; }
.pv-fig.is-long .pv-fig-v { font-size: 4cqw; }
.pv-fig.is-xlong .pv-fig-v { font-size: 3cqw; }
.pv-fig-u { font: 600 1.8cqw/1.2 var(--ss-font-serif); color: var(--ss-ink-2); }
.present-view .pv-fig:hover, .present-view .pv-fig[aria-expanded="true"] { color: var(--ss-accent-text); }
.pv-fig:hover .pv-fig-v, .pv-fig[aria-expanded="true"] .pv-fig-v { border-bottom-style: solid; }
.pv-fig-cal {
  display: grid; grid-row: 2 / span 3; grid-template-rows: subgrid; grid-template-columns: max(38px, 3.4cqw) minmax(0, 1fr);
  gap: .6cqw 1cqw; margin-top: 1.6cqw; padding-top: 1.1cqw; border-top: 1px solid var(--ss-line); font-size: max(16px, 1.38cqw); line-height: 1.55;
}
.pv-fig-cal dt { padding-top: .1cqw; font-size: max(16px, 1.25cqw); font-weight: 500; color: var(--ss-ink-2); }
.pv-fig-cal dd { min-width: 0; color: var(--ss-ink); overflow-wrap: anywhere; }
.pv-line { display: block; }
.pv-fig-review > span { display: block; }
.pv-fig-machine { color: var(--ss-ink-2); }
.present-view .pv-frame .pv-fig-src .cite-group { display: flex; flex-wrap: wrap; gap: .5cqw; white-space: normal; }
.present-view .pv-frame .pv-fig-src button.cite-ref { margin: 0; vertical-align: 0; }

/* ── 时间：按角色分组（两列或 2×2），计划时间为灰色虚线 ─────── */
.pv-time { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2cqw 3cqw; align-items: start; }
.present-view .pv-tgroup-h {
  display: flex; align-items: center; gap: .8cqw; margin: 0; padding-bottom: .9cqw; border-bottom: 2px solid var(--ss-navy);
  font-size: max(17px, 1.5cqw); font-weight: 700; line-height: 1.4; color: var(--ss-ink);
}
.pv-tgroup.is-planned .pv-tgroup-h { border-bottom-style: dashed; border-bottom-color: var(--ss-plan); }
.pv-tgroup.is-unknown .pv-tgroup-h { border-bottom-color: var(--ss-line); }
.pv-tmark { flex: none; width: max(10px, .9cqw); height: max(10px, .9cqw); border-radius: 50%; }
.pv-tmark.is-actual { background: var(--ss-navy); }
.pv-tmark.is-effective { border: max(2px, .16cqw) solid var(--ss-navy); background: linear-gradient(90deg, var(--ss-navy) 50%, transparent 50%); }
.pv-tmark.is-planned { border: max(2px, .16cqw) dashed var(--ss-plan); }
.pv-tmark.is-unknown { border: max(2px, .16cqw) dotted var(--ss-muted); }
.pv-trow { display: grid; grid-template-columns: 13cqw minmax(0, 1fr); column-gap: 1.2cqw; align-items: baseline; padding: .8cqw 0; border-bottom: 1px solid var(--ss-line); }
.pv-tgroup.is-planned .pv-trow { border-bottom-style: dashed; }
.pv-tdate { font: 600 max(17px, 1.75cqw)/1.4 var(--ss-font-serif); color: var(--ss-ink); font-variant-numeric: tabular-nums lining-nums; }
.pv-tgroup.is-planned .pv-tdate { color: var(--ss-plan-text); }
.pv-tdate.is-missing { font: 500 max(16px, 1.3cqw)/1.5 var(--ss-font); color: var(--ss-ink-2); }
.pv-ttext { font-size: max(17px, 1.55cqw); line-height: 1.5; color: var(--ss-ink); overflow-wrap: anywhere; }
.pv-ttext .pv-tag.is-plan { margin-left: .2cqw; }
.pv-ttext .pv-status { margin-left: .2cqw; white-space: nowrap; }

/* ── 对比表：列与单元格原样，出处列放引用，表头每页重复 ─────── */
.pv-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: max(17px, 1.55cqw); line-height: 1.5; font-variant-numeric: tabular-nums; }
.pv-table col.col-refs, .pv-table col.col-status { width: 10cqw; }
.pv-table th, .pv-table td { padding: 1cqw 1.6cqw 1cqw 0; text-align: left; vertical-align: top; border-bottom: 1px solid var(--ss-line); overflow-wrap: anywhere; }
.pv-table thead th { padding-top: 0; padding-bottom: .7cqw; font-size: max(16px, 1.15cqw); font-weight: 600; letter-spacing: .04em; color: var(--ss-ink-2); border-bottom: 2px solid var(--ss-navy); }
.pv-table th:last-child, .pv-table td:last-child { padding-right: 0; }
.present-view .pv-frame .pv-table .answer { font: inherit; line-height: inherit; }
.present-view .pv-frame .pv-refs .cite-group { display: inline-flex; flex-wrap: wrap; gap: .4cqw; white-space: normal; }
.present-view .pv-frame .pv-refs button.cite-ref { margin: 0; vertical-align: 0; }
.pv-status { font-size: max(16px, 1.3cqw); font-weight: 600; color: var(--ss-ink-2); }
.pv-status.is-human { color: var(--ss-ink); }

/* ── 研究判断与证据缺口 ─────────────────────────────── */
.pv-judge { padding: 2cqw 2.4cqw 2.2cqw; background: var(--ss-judge-soft); border-left: max(4px, .35cqw) solid var(--ss-judge); }
.pv-judge-k { display: flex; align-items: center; gap: 1cqw; margin-bottom: 1cqw; font-size: max(16px, 1.3cqw); line-height: 1.6; color: var(--ss-ink-2); }
.pv-judge-text + .pv-judge-text { margin-top: .8cqw; }
.present-view .pv-frame .pv-judge-text .answer { font: 600 max(18px, 1.75cqw)/1.6 var(--ss-font-serif); color: var(--ss-ink); }
.pv-judge + .pv-gaps { margin-top: 2cqw; }
.present-view .pv-gaps-h { margin: 0 0 .6cqw; font-size: max(16px, 1.3cqw); font-weight: 700; line-height: 1.4; letter-spacing: .04em; color: var(--ss-navy); }
.pv-gaps li { position: relative; padding: .4cqw 0 .4cqw 2cqw; }
/* 短横线对准首行中线：正文字号 × 0.8（行高 1.6 的一半）减去横线一半的高度 */
.pv-gaps li::before { content: ""; position: absolute; left: .2cqw; top: calc(.4cqw + max(17px, 1.55cqw) * .8 - max(1px, .08cqw)); width: max(10px, .9cqw); height: max(2px, .16cqw); background: var(--ss-judge); }

/* ── 来源：两列编号列表，每页至多 5 行 × 2 列；标题在幻灯上最多两行（省略号），完整标题见证据层与 A4 ── */
.pv-src { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 2.4cqw; align-content: start; }
.pv-src li { display: grid; grid-template-columns: max(36px, 3cqw) minmax(0, 1fr); align-items: start; padding: .55cqw 0; border-bottom: 1px solid var(--ss-line); }
.present-view .pv-frame .pv-src-n button.cite-ref { margin: 0; vertical-align: 0; }
.pv-src-t {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
  font-size: max(16px, 1.35cqw); font-weight: 500; line-height: 1.4; color: var(--ss-ink); overflow-wrap: anywhere;
}
.pv-src-m { font-size: max(16px, 1.2cqw); line-height: 1.45; color: var(--ss-ink-2); overflow-wrap: anywhere; }

/* ── 稀疏页（plan 标 data-density="sparse"，决定 3）：条目少时放大一档字号，并在标题行与防误读行之间居中 ── */
.pv-slide[data-density="sparse"] .pv-findings { margin-block: auto; gap: 2.6cqw; }
.present-view .pv-frame .pv-slide[data-density="sparse"] .pv-finding > .answer { font-size: max(19px, 1.85cqw); }
.pv-slide[data-density="sparse"] .pv-num { font-size: max(22px, 2.3cqw); }
.present-view .pv-frame .pv-slide[data-density="sparse"] .pv-judge-text .answer { font-size: max(20px, 2.1cqw); }
.present-view .pv-frame .pv-slide[data-density="sparse"] .pv-gaps .answer { font-size: max(19px, 1.85cqw); }
.pv-slide[data-density="sparse"] .pv-gaps li { padding-block: .7cqw; }
.pv-slide[data-density="sparse"] .pv-gaps li::before { top: calc(.7cqw + max(19px, 1.85cqw) * .8 - max(1px, .08cqw)); }
.pv-slide[data-density="sparse"] .pv-table { margin-block: auto; font-size: max(19px, 1.85cqw); }

/* ── 本页证据层：遮罩 + 面板；高亮元素提到遮罩之上 ─────────── */
.pv-scrim { position: absolute; inset: 0; z-index: 10; background: var(--ss-scrim-strong); }
.pv-scrim[hidden], .pv-ev[hidden] { display: none; }
.pv-frame .is-lit { position: relative; z-index: 11; background: var(--ss-surface); box-shadow: 0 0 0 1cqw var(--ss-surface), 0 0 0 calc(1cqw + max(2px, .2cqw)) var(--ss-accent); }
.pv-frame tr.is-lit { box-shadow: none; outline: max(2px, .2cqw) solid var(--ss-accent); outline-offset: .3cqw; }
.pv-frame tr.is-lit > td { position: relative; z-index: 11; background: var(--ss-surface); }
.pv-fig-col.is-lit .pv-fig-v { color: var(--ss-accent-text); border-bottom-style: solid; }
.pv-ev {
  /* 上下边距至少 2.2cqw；舞台贴近视口上下边缘时让开操作条（舞台上沿到视口上沿的距离为 (100dvh − 56.25cqw) / 2） */
  --ev-gap: max(2.2cqw, calc(var(--pv-bar-h) + 8px - (100dvh - 56.25cqw) / 2));
  position: absolute; z-index: 12; top: var(--ev-gap); right: 2.2cqw; width: 56cqw; max-height: calc(100% - 2 * var(--ev-gap));
  display: flex; flex-direction: column; background: var(--ss-surface); color: var(--ss-ink);
  border-top: max(3px, .28cqw) solid var(--ss-accent); box-shadow: var(--ss-shadow-pop);
}
.pv-ev.is-narrow { width: 46cqw; }
.pv-ev.is-left { right: auto; left: 2.2cqw; }
.pv-ev-head { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 1cqw; padding: .9cqw 2cqw; border-bottom: 1px solid var(--ss-line); }
.pv-ev-kicker { font-size: max(16px, 1.25cqw); font-weight: 500; color: var(--ss-ink-2); font-variant-numeric: tabular-nums; }
.present-view .pv-ev-close {
  display: inline-flex; align-items: center; min-height: 32px; padding: 0 .9cqw; border: 1px solid var(--ss-line); border-radius: 3px;
  background: var(--ss-surface); color: var(--ss-ink-2); font-size: max(16px, 1.25cqw);
}
.present-view .pv-ev-close:hover { background: var(--ss-primary-softer); border-color: var(--ss-ink-2); color: var(--ss-ink); }
.pv-ev-body { flex: 0 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 1.4cqw 2cqw 1.6cqw; }
.present-view .pv-ev-title { margin: 0; font: 700 max(20px, 1.85cqw)/1.4 var(--ss-font-serif); color: var(--ss-ink); }
.pv-ev-cal { margin-top: 1.2cqw; padding: 1.1cqw 1.4cqw 1.2cqw; background: var(--ss-primary-softer); border-left: max(3px, .25cqw) solid var(--ss-navy); }
.pv-ev-cal[hidden] { display: none; }
.pv-ev-cal-v { font: 700 max(28px, 2.8cqw)/1.2 var(--ss-font-serif); color: var(--ss-navy); }
.pv-ev-cal-o { margin-top: .3cqw; font-size: max(16px, 1.3cqw); line-height: 1.5; color: var(--ss-ink-2); overflow-wrap: anywhere; }
.pv-ev-cal-rows { display: grid; grid-template-columns: max(40px, 3.6cqw) minmax(0, 1fr); gap: .4cqw 1cqw; margin-top: .8cqw; font-size: max(16px, 1.4cqw); line-height: 1.55; }
.pv-ev-cal-rows dt { font-weight: 500; color: var(--ss-ink-2); }
.pv-ev-cal-rows dd { min-width: 0; color: var(--ss-ink); overflow-wrap: anywhere; }
.pv-ev-review, .pv-ev-machine { display: block; }
.pv-ev-machine { color: var(--ss-ink-2); }
.pv-ev-list { display: grid; margin-top: 1cqw; }
.pv-ev-item { display: grid; grid-template-columns: max(44px, 3.6cqw) minmax(0, 1fr); padding: 1.1cqw 0; border-top: 1px solid var(--ss-line); }
.pv-ev-main { min-width: 0; }
.present-view .pv-frame .pv-ev-n button.cite-ref { min-width: 32px; height: 32px; margin: 0; font-size: max(16px, 1.3cqw); vertical-align: 0; }
.pv-ev-src { font-size: max(17px, 1.45cqw); font-weight: 600; line-height: 1.45; color: var(--ss-ink); overflow-wrap: anywhere; }
.pv-ev-meta { margin-top: .2cqw; font-size: max(16px, 1.3cqw); line-height: 1.5; color: var(--ss-ink-2); overflow-wrap: anywhere; }
.pv-ev-label { margin-top: .8cqw; font-size: max(16px, 1.2cqw); font-weight: 600; line-height: 1.5; color: var(--ss-ink-2); }
.pv-ev-quote {
  margin: .4cqw 0 0; padding-left: 1.2cqw; border-left: max(3px, .25cqw) solid var(--ss-navy);
  font: 400 max(22px, 1.9cqw)/1.55 var(--ss-font); color: var(--ss-ink); white-space: pre-line; overflow-wrap: anywhere;
}
.pv-mark { background: var(--ss-highlight); color: var(--ss-ink); box-shadow: inset 0 -.2cqw 0 var(--ss-accent); -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.pv-ev-actions { margin-top: .6cqw; }
.present-view .pv-ev-open { display: inline-flex; align-items: center; min-height: 28px; font-size: max(16px, 1.25cqw); font-weight: 500; color: var(--ss-accent-text); }
.present-view .pv-ev-open:hover { text-decoration: underline; text-underline-offset: 3px; }
.pv-ev-empty { padding: 1.1cqw 0; border-top: 1px solid var(--ss-line); font-size: max(16px, 1.35cqw); line-height: 1.6; color: var(--ss-ink-2); }
.pv-ev-foot { flex: none; display: flex; justify-content: flex-end; padding: .7cqw 2cqw; border-top: 1px solid var(--ss-line); background: var(--ss-surface-2); font-size: max(16px, 1.2cqw); line-height: 1.5; color: var(--ss-ink-2); }
.pv-ev-keys { white-space: nowrap; }
.pv-ev-keys kbd { padding: 0 .35em; border: 1px solid var(--ss-line); border-radius: 3px; color: var(--ss-ink-2); font-size: max(16px, .9em); }
.pv-ev-dot { margin: 0 .2em; color: var(--ss-muted); }

/* ── 强制颜色（Windows 高对比度）：高亮与焦点用 Highlight，线条用 CanvasText ── */
@media (forced-colors: active) {
  .pv-bar { background: Canvas; border-bottom: 1px solid CanvasText; }
  .pv-bar.is-bottom { border-top: 1px solid CanvasText; border-bottom: 0; }
  .present-view .pv-btn[aria-disabled="true"] { color: GrayText; }
  .present-view .pv-frame :focus-visible, .present-view .pv-bar :focus-visible { outline-color: Highlight; }
  .pv-frame .is-lit, .pv-frame tr.is-lit { box-shadow: none; outline: 3px solid Highlight; outline-offset: 2px; }
  .sl-kicker::before, .pv-tmark.is-actual, .pv-dot { background: CanvasText; }
  .pv-tmark.is-effective, .pv-tmark.is-planned, .pv-tmark.is-unknown { border-color: CanvasText; }
  .pv-gaps li::before { background: CanvasText; }
  .pv-fig-v { border-bottom-color: CanvasText; }
  .pv-judge, .pv-ev-cal { border-left-color: CanvasText; }
  .pv-ev { border: 1px solid CanvasText; border-top-width: 3px; }
  /* 图形的描边与填充写在多个层级上（封面、页脚），这里统一压过 */
  .pv-brand-mark .mark-dot, .ca-dot { fill: CanvasText !important; }
  .pv-brand-mark .mark-frame, .pv-brand-mark .mark-wave, .pv-shield, .ca-frame, .ca-arcs path, .ca-ticks, .ca-ping, .pv-icon { stroke: CanvasText !important; }
}
