/* v3.3 组件：报告式排版 + 克制的科技感（细刻度、等宽数字、电光蓝/青） */

/* ---------- card / stat ---------- */
.card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md);
  box-shadow: var(--shadow-1); overflow: hidden;
}
.card[data-action] { transition: border-color .15s, box-shadow .15s; }
.card[data-action]:hover { border-color: #c3d2e6; box-shadow: var(--shadow-2); }
.card-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  padding: 14px 18px; border-bottom: 1px solid var(--line-2); flex-wrap: wrap;
}
.card-head > div:first-child { min-width: 0; }
.card-head .btn { flex: 0 0 auto; }
.card-title {
  font-size: calc(14px * 1.3); font-weight: 650; letter-spacing: -.01em;
  display: flex; align-items: center; gap: 8px; color: var(--ink);
}
.card-title .dot { width: 5px; height: 5px; border-radius: 1px; background: var(--accent); flex: none; }
.card-sub { font-size: calc(11.5px * 1.3); color: var(--muted); margin-top: 4px; line-height: 1.6; }
.card-body { padding: 18px; }
.card-body.tight { padding: 12px; }
.card-foot { padding: 10px 18px; border-top: 1px solid var(--line-2); background: var(--surface-2); }

.stat {
  position: relative; overflow: hidden;
  background: var(--surface);
  border: 1px solid var(--line); border-radius: var(--radius-md);
  padding: 16px 16px 14px; box-shadow: var(--shadow-1);
}
.stat::before {
  content: ""; position: absolute; left: 16px; top: 0; width: 26px; height: 2px;
  background: linear-gradient(90deg, var(--primary), var(--accent));
}
.stat-label {
  font-family: var(--mono);
  font-size: calc(10px * 1.3); letter-spacing: .1em; text-transform: uppercase; color: var(--muted);
  display: flex; align-items: center; gap: 6px;
}
.stat-value {
  font-size: calc(28px * 1.3); font-weight: 700; letter-spacing: -.03em;
  margin-top: 8px; font-variant-numeric: tabular-nums; line-height: 1.15; color: var(--ink);
}
.stat-value small { font-size: calc(12px * 1.3); font-weight: 500; color: var(--faint); margin-left: 3px; letter-spacing: 0; }
.stat-sub { font-size: calc(11px * 1.3); color: var(--faint); margin-top: 5px; }
.stat.green .stat-value { color: var(--success); }
.stat.red .stat-value { color: var(--danger); }
.stat.amber .stat-value { color: var(--warning); }
.stat.purple .stat-value { color: var(--purple); }

/* ---------- icon tile / tag ---------- */
.icon-tile {
  width: 36px; height: 36px; border-radius: var(--radius-sm); display: grid; place-items: center;
  background: var(--primary-light); color: var(--primary); border: 1px solid #dce6ff; flex: none;
}
.icon-tile .icon, .icon-tile svg { width: 18px; height: 18px; }
.icon-tile--green { background: var(--success-bg); border-color: var(--success-line); color: var(--success); }
.icon-tile--amber { background: var(--warning-bg); border-color: var(--warning-line); color: var(--warning); }
.icon-tile--violet { background: var(--purple-bg); border-color: var(--purple-line); color: var(--purple); }
.icon-tile--slate { background: var(--surface-2); border-color: var(--line); color: var(--text-2); }
.tag {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: calc(10.5px * 1.3); line-height: 1; padding: 5px 8px; border-radius: var(--radius-xs);
  background: var(--surface-2); color: var(--muted); border: 1px solid var(--line); white-space: nowrap;
}

/* ---------- button ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 34px; padding: 0 13px; border-radius: var(--radius-sm);
  border: 1px solid var(--border); background: var(--surface); color: var(--text-2);
  font-size: calc(12.5px * 1.3); font-weight: 600; white-space: nowrap;
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
}
.btn:hover { border-color: #b9c9df; background: var(--surface-2); color: var(--ink); }
.btn:active { background: var(--surface-3); }
.btn:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.btn-primary { background: var(--ink); border-color: var(--ink); color: #fff; }
.btn-primary:hover { background: #1b2a44; border-color: #1b2a44; color: #fff; }
.btn-primary:active { background: #0a1220; }
.btn-outline { background: var(--surface); border-color: #b9c9df; color: var(--primary); }
.btn-outline:hover { background: var(--primary-light); border-color: var(--primary); color: var(--primary); }
.btn-ghost { background: transparent; border-color: transparent; color: var(--muted); }
.btn-ghost:hover { background: var(--surface-2); border-color: transparent; color: var(--ink); }
.btn-danger { background: var(--surface); border-color: var(--danger-line); color: var(--danger); }
.btn-danger:hover { background: var(--danger-bg); border-color: #e5b4ad; color: var(--danger); }
.btn-sm { height: 29px; padding: 0 10px; font-size: calc(11.5px * 1.3); }
.btn-xs { height: 25px; padding: 0 8px; font-size: calc(11px * 1.3); border-radius: var(--radius-xs); }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.link-btn { background: none; border: 0; padding: 0; color: var(--primary); font-size: calc(12px * 1.3); font-weight: 600; }
.link-btn:hover { text-decoration: underline; }
.icon-btn {
  width: 30px; height: 30px; padding: 0; border-radius: var(--radius-xs);
  display: inline-grid; place-items: center; border: 1px solid transparent;
  background: transparent; color: var(--muted);
}
.icon-btn:hover { background: var(--surface-2); color: var(--ink); }
.icon-btn svg { width: 16px; height: 16px; }

/* ---------- badge / chip ---------- */
.badge {
  display: inline-flex; align-items: center; gap: 4px;
  height: 21px; padding: 0 7px; border-radius: var(--radius-xs);
  border: 1px solid transparent; font-size: calc(10.5px * 1.3); font-weight: 600; white-space: nowrap;
}
.badge-green { background: var(--success-bg); color: var(--success); border-color: var(--success-line); }
.badge-red { background: var(--danger-bg); color: var(--danger); border-color: var(--danger-line); }
.badge-amber { background: var(--warning-bg); color: var(--warning); border-color: var(--warning-line); }
.badge-blue { background: var(--primary-light); color: var(--primary); border-color: #d9e5ff; }
.badge-gray { background: var(--surface-2); color: var(--text-2); border-color: var(--line); }
.badge-purple { background: var(--purple-bg); color: var(--purple); border-color: var(--purple-line); }
.badge-crimson { background: #fbe9e7; color: #7a1d12; border-color: #f0c9c2; }
.badge-dot { width: 4px; height: 4px; border-radius: 50%; background: currentColor; }

.chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.chip {
  display: inline-flex; align-items: center; gap: 5px;
  height: 29px; padding: 0 10px; border-radius: var(--radius-sm);
  border: 1px solid var(--line); background: var(--surface); color: var(--text-2);
  font-size: calc(12px * 1.3); font-weight: 500; white-space: nowrap;
  transition: border-color .15s, color .15s, background .15s;
}
.chip:hover { border-color: #b7c8e2; color: var(--primary); background: var(--surface-2); }
.chip.active { background: var(--ink); border-color: var(--ink); color: #fff; }
.chip.active:hover { color: #fff; }
.chip-sm { height: 25px; padding: 0 8px; font-size: calc(11px * 1.3); }
.chip-group-label { font-size: calc(11px * 1.3); color: var(--faint); margin-right: 2px; }

/* ---------- tabs ---------- */
.tabs {
  display: flex; align-items: center; gap: 2px;
  border-bottom: 1px solid var(--line); margin-bottom: 18px;
  max-width: 100%; overflow-x: auto; scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tab {
  position: relative; padding: 9px 12px 10px; border: 0; border-radius: 0;
  background: transparent; color: var(--muted);
  font-size: calc(12.5px * 1.3); font-weight: 600; white-space: nowrap;
  transition: color .15s;
}
.tab:hover { color: var(--ink); }
.tab.active { color: var(--ink); }
.tab.active::after {
  content: ""; position: absolute; left: 8px; right: 8px; bottom: -1px;
  height: 2px; border-radius: 0; background: var(--ink);
}
.tab .count {
  font-family: var(--mono); font-size: calc(9.5px * 1.3); background: var(--surface-3); color: var(--muted);
  border-radius: 3px; padding: 1px 5px; margin-left: 6px;
}
.tab.active .count { background: var(--primary-light); color: var(--primary); }

/* ---------- progress ---------- */
.progress { height: 4px; border-radius: 0; background: var(--surface-3); overflow: hidden; }
.progress-bar { height: 100%; border-radius: 0; background: linear-gradient(90deg, var(--primary), var(--accent)); transition: width .5s ease; }
.progress.lg { height: 6px; }
.progress-label { display: flex; justify-content: space-between; font-size: calc(11px * 1.3); color: var(--text-2); margin-bottom: 5px; font-family: var(--mono); }

/* ---------- stepper ---------- */
.stepper {
  display: flex; align-items: center; gap: 0; margin-bottom: 18px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-md); padding: 12px 16px;
}
.step { display: flex; align-items: center; gap: 8px; color: var(--faint); font-size: calc(12px * 1.3); font-weight: 500; }
.step-num {
  width: 23px; height: 23px; border-radius: var(--radius-xs); display: grid; place-items: center;
  background: var(--surface-2); color: var(--muted); font-family: var(--mono); font-size: calc(10px * 1.3); font-weight: 600;
  border: 1px solid var(--line);
}
.step.active { color: var(--ink); font-weight: 600; }
.step.active .step-num { background: var(--ink); color: #fff; border-color: var(--ink); }
.step.done { color: var(--success); }
.step.done .step-num { background: var(--success-bg); color: var(--success); border-color: var(--success-line); }
.step-line { flex: 1; height: 1px; background: var(--line); margin: 0 12px; min-width: 24px; }

/* ---------- modal / toast ---------- */
.modal-mask {
  position: fixed; inset: 0; z-index: 100;
  background: rgba(10, 18, 32, .42); backdrop-filter: blur(3px);
  display: flex; align-items: center; justify-content: center; padding: 24px;
}
.modal {
  width: 100%; max-width: 660px; max-height: 88vh; display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--line); border-top: 3px solid var(--ink); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-3); animation: modal-in .18s ease;
}
.modal.wide { max-width: 900px; }
.modal.xwide { max-width: 1120px; }
@keyframes modal-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.modal-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  padding: 16px 20px; border-bottom: 1px solid var(--line-2);
}
.modal-title { font-size: calc(16px * 1.3); font-weight: 650; letter-spacing: -.015em; color: var(--ink); }
.modal-sub { font-size: calc(11.5px * 1.3); color: var(--muted); margin-top: 3px; }
.modal-body { padding: 20px; overflow-y: auto; }
.modal-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 20px; border-top: 1px solid var(--line-2); background: var(--surface-2); }
.modal-close {
  width: 30px; height: 30px; border: 0; background: transparent; border-radius: var(--radius-xs);
  color: var(--muted); font-size: calc(18px * 1.3); line-height: 1;
}
.modal-close:hover { background: var(--surface-2); color: var(--ink); }

#toast-root { position: fixed; top: 76px; right: 24px; z-index: 200; display: flex; flex-direction: column; gap: 8px; }
.toast {
  min-width: 240px; max-width: 380px; padding: 11px 14px;
  background: var(--surface); border: 1px solid var(--line); border-left: 3px solid var(--primary);
  border-radius: var(--radius-sm); box-shadow: var(--shadow-2);
  font-size: calc(12.5px * 1.3); color: var(--text-2); animation: toast-in .18s ease;
}
.toast.success { border-left-color: var(--success); }
.toast.error { border-left-color: var(--danger); }
.toast.warn { border-left-color: var(--warning); }
@keyframes toast-in { from { opacity: 0; transform: translateX(12px); } to { opacity: 1; transform: none; } }

/* ---------- upload / import ---------- */
.upload-zone {
  border: 1px dashed #c6d3e4; border-radius: var(--radius-md);
  background: var(--surface-2); padding: 30px 20px; text-align: center;
  transition: border-color .15s, background .15s;
}
.upload-zone:hover { border-color: var(--primary); background: var(--primary-light); }
.upload-icon {
  width: 40px; height: 40px; margin: 0 auto 10px; border-radius: var(--radius-md);
  background: var(--surface); color: var(--primary);
  display: grid; place-items: center; border: 1px solid #dce6ff;
}
.upload-icon svg { width: 19px; height: 19px; }
.upload-title { font-size: calc(13.5px * 1.3); font-weight: 600; }
.upload-desc { font-size: calc(12px * 1.3); color: var(--text-2); margin-top: 4px; }
.file-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.file-card {
  border: 1px solid var(--line); border-radius: var(--radius-md); padding: 12px;
  background: var(--surface); cursor: pointer;
  transition: border-color .15s, background .15s;
}
.file-card:hover { border-color: #b7c8e2; background: var(--surface-2); }
.file-card.active { border-color: var(--primary); background: var(--primary-light); }
.file-icon {
  width: 32px; height: 32px; border-radius: var(--radius-xs); display: grid; place-items: center;
  font-family: var(--mono); font-size: calc(9px * 1.3); font-weight: 700; color: #fff; background: #15803d; margin-bottom: 8px;
}
.file-icon.csv { background: var(--accent); }
.file-name { font-size: calc(12px * 1.3); font-weight: 600; word-break: break-all; }
.file-meta { font-size: calc(10px * 1.3); color: var(--faint); margin-top: 3px; font-family: var(--mono); }
.file-desc { font-size: calc(11px * 1.3); color: var(--text-2); margin-top: 6px; line-height: 1.5; }

.split { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.35fr); gap: 14px; align-items: start; }
.doc-preview { border: 1px solid var(--line); border-radius: var(--radius-md); background: #fff; padding: 12px; max-height: 470px; overflow: auto; }
.doc-sheet { font-size: calc(10px * 1.3); border-collapse: collapse; width: 100%; }
.doc-sheet td, .doc-sheet th { border: 1px solid var(--line); padding: 4px 5px; white-space: nowrap; }
.doc-sheet th { background: var(--surface-2); font-weight: 600; }
.doc-title { font-size: calc(12px * 1.3); font-weight: 600; margin-bottom: 8px; }
.doc-tabs { display: flex; gap: 4px; margin-bottom: 8px; }
.doc-tab { font-size: calc(10px * 1.3); padding: 3px 8px; border-radius: var(--radius-xs); background: var(--surface-3); color: var(--text-2); }
.doc-tab.active { background: var(--success); color: #fff; }

.parse-stages { display: grid; gap: 10px; }
.parse-stage {
  display: flex; align-items: center; gap: 10px; padding: 10px 12px;
  border: 1px solid var(--line); border-radius: var(--radius-sm);
  background: var(--surface); font-size: calc(12px * 1.3);
}
.parse-stage .tick {
  width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center;
  background: var(--surface-2); color: var(--faint); font-size: calc(10px * 1.3);
}
.parse-stage.done .tick { background: var(--success-bg); color: var(--success); }
.parse-stage.active { border-color: #b7c8e2; background: var(--primary-light); }
.parse-stage.active .tick { background: var(--primary); color: #fff; }
.parse-stage .stage-meta { margin-left: auto; font-size: calc(10px * 1.3); color: var(--faint); font-family: var(--mono); }

.conf-low { background: #fff9e8 !important; box-shadow: inset 3px 0 0 #d99a1a; }
.conf-mid { background: #fffdf3 !important; }
.cell-input { width: 100%; border: 0; background: transparent; padding: 2px 3px; outline: none; font-size: calc(12px * 1.3); }
.cell-input:focus { background: #fff; box-shadow: 0 0 0 2px var(--primary-glow); border-radius: 3px; }
.conf-tag { font-size: calc(9px * 1.3); color: var(--warning); margin-left: 3px; }

.diff-summary { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.diff-sum { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 11px 12px; background: var(--surface); }
.diff-sum .n { font-size: calc(20px * 1.3); font-weight: 650; font-variant-numeric: tabular-nums; font-family: var(--mono); }
.diff-sum .l { font-size: calc(11px * 1.3); color: var(--muted); }
.diff-sum.block .n { color: var(--danger); }
.diff-sum.confirm .n { color: var(--warning); }
.diff-sum.hint .n { color: var(--primary); }
.diff-list { display: flex; flex-direction: column; gap: 8px; }
.diff-item {
  display: flex; gap: 12px; align-items: flex-start;
  border: 1px solid var(--line); border-radius: var(--radius-sm);
  padding: 11px 12px; background: var(--surface);
}
.diff-item.done { opacity: .55; }
.diff-level { flex: 0 0 auto; font-size: calc(10px * 1.3); font-weight: 600; padding: 2px 7px; border-radius: var(--radius-xs); margin-top: 1px; }
.diff-level.block { background: var(--danger-bg); color: var(--danger); }
.diff-level.confirm { background: var(--warning-bg); color: var(--warning); }
.diff-level.hint { background: var(--primary-light); color: var(--primary); }
.diff-main { flex: 1; min-width: 0; }
.diff-title { font-size: calc(12px * 1.3); font-weight: 600; }
.diff-desc { font-size: calc(11px * 1.3); color: var(--text-2); margin-top: 2px; }
.diff-suggest { font-size: calc(11px * 1.3); color: var(--primary); margin-top: 4px; }
.diff-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }

/* ---------- misc ---------- */
.kv { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 8px 12px; font-size: calc(12px * 1.3); }
.kv dt { color: var(--faint); }
.kv dd { margin: 0; }
.timeline { position: relative; padding-left: 18px; }
.timeline::before { content: ""; position: absolute; left: 5px; top: 6px; bottom: 6px; width: 1px; background: var(--line); }
.timeline-item { position: relative; padding: 0 0 16px 12px; }
.timeline-item::before {
  content: ""; position: absolute; left: -17px; top: 5px; width: 9px; height: 9px;
  border-radius: 50%; background: var(--surface); border: 1px solid var(--border-strong);
}
.timeline-item.done::before { background: var(--success); border-color: var(--success); }
.timeline-item.current::before { background: var(--primary); border-color: var(--primary); }
.alert { display: flex; gap: 10px; padding: 11px 13px; border-radius: var(--radius-sm); font-size: calc(12px * 1.3); border: 1px solid; line-height: 1.7; }
.alert.info { background: var(--primary-light); border-color: #d9e5ff; color: #1b3a9e; }
.alert.warn { background: var(--warning-bg); border-color: var(--warning-line); color: var(--warning); }
.alert.danger { background: var(--danger-bg); border-color: var(--danger-line); color: var(--danger); }
.alert.success { background: var(--success-bg); border-color: var(--success-line); color: var(--success); }
.alert .alert-title { font-weight: 600; }
.readonly-banner {
  display: flex; align-items: center; gap: 8px;
  background: var(--warning-bg); border: 1px solid var(--warning-line); color: var(--warning);
  padding: 9px 13px; border-radius: var(--radius-sm); font-size: calc(12px * 1.3); margin-bottom: 16px;
}
.code {
  font-family: var(--mono); font-size: calc(11px * 1.3); background: var(--surface-2);
  padding: 2px 6px; border-radius: var(--radius-xs); border: 1px solid var(--line-2);
  color: var(--text-2); letter-spacing: -.01em;
}
.bar-row { display: grid; grid-template-columns: 66px minmax(0, 1fr) 56px; gap: 10px; align-items: center; font-size: calc(12px * 1.3); }
.bar-track { height: 6px; background: var(--surface-3); border-radius: 0; overflow: hidden; }
.bar-fill { height: 100%; border-radius: 0; background: var(--primary); }
.bar-fill.green { background: var(--success); }
.bar-fill.red { background: var(--danger); }
.bar-fill.amber { background: var(--warning); }
.chart { width: 100%; overflow: visible; }
.chart text { font-size: calc(10px * 1.3); fill: var(--text-2); }

/* ---------- 9 档色带 ---------- */
.ruler-band { display: grid; grid-template-columns: repeat(9, 1fr); gap: 5px; margin: 16px 0 12px; }
.band {
  border-radius: var(--radius-sm); padding: 10px 5px 9px; text-align: center;
  background: var(--surface); border: 1px solid var(--line);
  color: var(--text); transition: border-color .15s, background .15s;
}
.band:hover { border-color: #b7c8e2; background: var(--surface-2); }
.band b { display: block; font-size: calc(12px * 1.3); font-weight: 600; color: var(--primary); letter-spacing: .02em; }
.band small { display: block; margin-top: 4px; font-size: calc(10px * 1.3); color: var(--muted); font-family: var(--mono); }
.band.b1 { background: #eef3ff; border-color: #d9e5ff; }
.band.b2 { background: #f2f6ff; border-color: #e2eaff; }
.band.b3 { background: #f5f8ff; border-color: #e8eeff; }
.band.b4 { background: #f7faff; }
.band.b5 { background: #f9fbff; }
.band.b6 { background: #fbfcff; }
.band.b7 { background: #fcfdff; }
.band.b8 { background: #fdfeff; }
.band.b9 { background: #ffffff; }
.ruler-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  font-size: calc(11px * 1.3); color: var(--faint); border-top: 1px solid var(--line-2); padding-top: 11px;
}

/* ---------- matrix ---------- */
.matrix-wrap { border: 1px solid var(--line); border-radius: var(--radius-md); overflow: auto; max-height: 620px; background: var(--surface); }
.matrix-table { border-collapse: separate; border-spacing: 0; font-size: calc(12px * 1.3); min-width: 100%; }
.matrix-table th, .matrix-table td { border-bottom: 1px solid var(--line-2); border-right: 1px solid #f3f6fa; padding: 8px 10px; white-space: nowrap; }
.matrix-table thead th { position: sticky; top: 0; z-index: 3; background: var(--surface-2); font-size: calc(11px * 1.3); color: var(--text-2); text-align: center; }
.matrix-table thead tr:nth-child(2) th { top: 34px; }
.matrix-table th.sticky-col, .matrix-table td.sticky-col { position: sticky; left: 0; z-index: 2; background: var(--surface); }
.matrix-table th.sticky-col { z-index: 4; background: var(--surface-2); }
.matrix-table td.sticky-col:nth-child(2), .matrix-table th.sticky-col:nth-child(2) { left: 110px; }
.matrix-table td.sticky-col:nth-child(3), .matrix-table th.sticky-col:nth-child(3) { left: 220px; }
.matrix-table .progress-hold { background: var(--surface-3); }
.matrix-table .progress-up { background: var(--success-bg); }
.matrix-table .progress-down { background: var(--danger-bg); }
.matrix-table .subject-sep { border-left: 1px solid var(--line); }
.matrix-table .name-link { color: var(--primary); font-weight: 600; cursor: pointer; }

/* =========================================================
   报告：封面 / 摘要 / 图表编号（v3.3 新增）
   ========================================================= */
.report-cover {
  position: relative; overflow: hidden;
  background:
    radial-gradient(120% 160% at 88% -20%, rgba(56, 189, 248, 0.18) 0%, rgba(7, 13, 24, 0) 55%),
    linear-gradient(135deg, #070d18 0%, #0a1424 55%, #0b1a2e 100%);
  color: var(--cover-text);
  border-radius: var(--radius-lg);
  border: 1px solid rgba(128, 174, 255, 0.18);
  padding: 28px 32px 24px;
  margin-bottom: 18px;
}
.report-cover::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(128, 174, 255, 0.075) 1px, transparent 1px),
    linear-gradient(90deg, rgba(128, 174, 255, 0.075) 1px, transparent 1px);
  background-size: 32px 32px;
  mask-image: linear-gradient(180deg, rgba(0, 0, 0, .9), transparent 78%);
  -webkit-mask-image: linear-gradient(180deg, rgba(0, 0, 0, .9), transparent 78%);
}
.report-cover::after {
  content: ""; position: absolute; left: 32px; right: 32px; bottom: 0; height: 2px;
  background: linear-gradient(90deg, var(--cover-accent), rgba(56, 189, 248, 0) 62%);
  opacity: .8;
}
.report-cover > * { position: relative; z-index: 1; }
.cover-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.cover-kicker {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--mono); font-size: calc(9.5px * 1.3); letter-spacing: .22em; text-transform: uppercase;
  color: var(--cover-accent);
}
.cover-kicker::before { content: ""; width: 20px; height: 1px; background: currentColor; }
.cover-ver { font-family: var(--mono); font-size: calc(9.5px * 1.3); letter-spacing: .12em; color: var(--cover-faint); }
.cover-title {
  margin-top: 16px; font-size: calc(30px * 1.3); line-height: 1.24; font-weight: 680;
  letter-spacing: -.03em; color: #f4f8ff; max-width: 880px;
}
.cover-desc { margin-top: 9px; font-size: calc(12.5px * 1.3); line-height: 1.75; color: var(--cover-muted); max-width: 760px; }
.cover-meta {
  display: flex; flex-wrap: wrap; gap: 6px 22px; margin-top: 18px;
  font-family: var(--mono); font-size: calc(10px * 1.3); letter-spacing: .02em; color: var(--cover-faint);
}
.cover-meta b { color: #c9d8ec; font-weight: 500; }
.cover-role {
  position: absolute; right: 32px; bottom: 24px; z-index: 1;
  display: inline-flex; align-items: center; gap: 7px;
  padding: 5px 10px; border: 1px solid rgba(128, 174, 255, 0.28); border-radius: var(--radius-pill);
  font-family: var(--mono); font-size: calc(9.5px * 1.3); letter-spacing: .12em; color: #cfe3f8;
}
.cover-role::before { content: ""; width: 4px; height: 4px; border-radius: 50%; background: var(--cover-accent); }
.report-cover .breadcrumb { margin-bottom: 0; color: var(--cover-faint); }
.report-cover .breadcrumb a { color: var(--cover-muted); }
.report-cover .breadcrumb a:hover { color: #fff; }
.report-cover .breadcrumb .sep { color: var(--cover-faint); opacity: .55; }
.report-cover .page-actions { padding-top: 0; }
.report-cover .btn {
  background: rgba(255, 255, 255, 0.045);
  border-color: rgba(128, 174, 255, 0.26);
  color: #d7e4f4;
}
.report-cover .btn:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(128, 174, 255, 0.48);
  color: #fff;
}

/* 摘要条（结果页） */
.report-summary {
  background: var(--surface); border: 1px solid var(--line); border-top: 2px solid var(--ink);
  border-radius: var(--radius-md); padding: 18px 22px 16px; margin-bottom: 18px;
}
.summary-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; }
.summary-kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: calc(9.5px * 1.3); letter-spacing: .18em; text-transform: uppercase; color: var(--faint);
}
.summary-kicker b { color: var(--primary); font-weight: 600; }
.summary-title { font-size: calc(13px * 1.3); font-weight: 650; color: var(--ink); }
.summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; }
.summary-figure { padding: 2px 18px; border-left: 1px solid var(--line-2); min-width: 0; }
.summary-figure:first-child { padding-left: 0; border-left: 0; }
.summary-figure span {
  display: block; font-size: calc(10.5px * 1.3); color: var(--muted); letter-spacing: .02em;
}
.summary-figure b {
  display: inline-block; margin-top: 6px; font-family: var(--mono);
  font-size: calc(30px * 1.3); font-weight: 600; line-height: 1.1; letter-spacing: -.04em; color: var(--ink);
}
.summary-figure em { font-style: normal; font-size: calc(11px * 1.3); color: var(--faint); margin-left: 4px; font-family: var(--font); }
.summary-figure small { display: block; margin-top: 5px; font-size: calc(10.5px * 1.3); color: var(--faint); line-height: 1.5; }
.summary-figure .good { color: var(--success); }
.summary-figure .bad { color: var(--danger); }
.summary-status {
  display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 20px; align-items: center;
  margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line-2);
}
.summary-finding { font-size: calc(12.5px * 1.3); line-height: 1.8; color: var(--text-2); }
.summary-finding b { color: var(--ink); font-weight: 600; }
.summary-finding .accent { color: var(--primary); font-weight: 600; }
.summary-side { min-width: 0; }

/* 图表容器与图注 */
.figure {
  border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface);
  padding: 16px 18px 12px; margin-bottom: 16px;
}
.figure-head { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 10px; }
.figure-label { display: flex; align-items: baseline; gap: 9px; min-width: 0; }
.figure-no {
  font-family: var(--mono); font-size: calc(9.5px * 1.3); letter-spacing: .14em; color: var(--faint); text-transform: uppercase; white-space: nowrap;
}
.figure-title { font-size: calc(12.5px * 1.3); font-weight: 650; color: var(--ink); }
.figure-legend { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: calc(10.5px * 1.3); color: var(--muted); }
.figure-legend span { display: inline-flex; align-items: center; gap: 5px; }
.figure-legend i { width: 7px; height: 7px; border-radius: 50%; display: inline-block; }
.figure-legend i.sq { border-radius: 1px; }
.figure-legend i.entry { background: #b8c6d8; }
.figure-legend i.exit { background: var(--primary); }
.figure-note {
  margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--line-2);
  font-size: calc(11px * 1.3); line-height: 1.75; color: var(--muted);
}
.figure-note b { color: var(--text-2); font-weight: 600; }

/* ---------- 报告分层：结论层 / 证据块 / 明细折叠 ---------- */
.report-conclusion-layer {
  border: 1px solid var(--line); border-top: 3px solid var(--ink);
  border-radius: var(--radius-md); background: var(--surface);
  padding: 20px 24px 0; margin-bottom: 4px;
}
.layer-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.layer-kicker {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--mono); font-size: calc(9px * 1.3); font-weight: 500; letter-spacing: .18em;
  text-transform: uppercase; color: var(--primary);
}
.layer-kicker::before { content: ""; width: 18px; height: 1px; background: currentColor; }
.layer-tag {
  font-family: var(--mono); font-size: calc(8.5px * 1.3); letter-spacing: .1em; color: var(--faint);
  border: 1px solid var(--line); border-radius: var(--radius-xs); padding: 2px 6px;
}
.report-conclusion-layer .report-verdict {
  border: 0; border-left: 0; border-radius: 0; background: transparent; padding: 0;
}
.report-conclusion-layer .verdict-text { font-size: calc(19px * 1.3); line-height: 1.6; margin-top: 10px; }
.report-conclusion-layer .verdict-metrics { margin-top: 16px; padding-top: 14px; }
.conclusion-points {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 16px -24px 0; border-top: 1px solid var(--line);
}
.conclusion-point { padding: 14px 18px 16px; border-left: 1px solid var(--line-2); }
.conclusion-point:first-child { padding-left: 24px; border-left: 0; }
.conclusion-point > span {
  display: block; margin-bottom: 5px;
  font-family: var(--mono); font-size: calc(9px * 1.3); letter-spacing: .14em; color: var(--accent);
}
.conclusion-point:nth-child(3) > span { color: var(--success); }
.conclusion-point p { font-size: calc(12.5px * 1.3); line-height: 1.85; color: var(--text-2); }
.conclusion-point b { color: var(--primary); }
.hl { color: var(--primary); font-weight: 700; }
.hl-bad { color: var(--danger); font-weight: 700; }
.hl-good { color: var(--success); font-weight: 700; }
.hl-warn { color: var(--warning); font-weight: 700; }
.drill-link {
  display: inline; border: 0; padding: 0 1px; background: transparent;
  color: var(--primary); font: inherit; font-weight: 650; cursor: pointer;
  border-bottom: 1px dashed rgba(31, 79, 216, .45); line-height: inherit;
}
.drill-link:hover { background: var(--primary-light); border-bottom-style: solid; }
.report-drill-bar {
  position: sticky; top: 58px; z-index: 24;
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 0 0 14px; padding: 8px 12px;
  border: 1px solid #d9e5ff; background: #f3f7ff; border-radius: var(--radius-sm);
  font-size: calc(11.5px * 1.3); color: var(--primary);
}
.report-drill-bar[hidden] { display: none; }
.drill-bar-label { font-family: var(--mono); font-size: calc(9px * 1.3); letter-spacing: .12em; color: var(--faint); }
.drill-chip {
  display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 3px;
  background: var(--primary); color: #fff; font-size: calc(10.5px * 1.3); font-weight: 600;
}
.drill-clear { margin-left: auto; border: 0; background: transparent; color: var(--primary); font-size: calc(10.5px * 1.3); padding: 0; }
.drill-clear:hover { text-decoration: underline; }
.drill-hit { outline: 2px solid var(--primary); outline-offset: -2px; background: #eef4ff !important; }
.drill-section-hit { outline: 2px solid var(--primary); outline-offset: 4px; border-radius: 6px; }
.report-section, .rblock { scroll-margin-top: 74px; }
.conclusion-nav {
  display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
  margin: 0 -24px; padding: 9px 24px;
  background: var(--surface-2); border-top: 1px solid var(--line);
  border-radius: 0 0 var(--radius-md) var(--radius-md);
}
.conclusion-nav-label { font-family: var(--mono); font-size: calc(8.5px * 1.3); letter-spacing: .1em; color: var(--faint); margin-right: 6px; }
.conclusion-nav-link {
  border: 0; background: transparent; color: var(--primary);
  font-size: calc(10.5px * 1.3); font-weight: 500; padding: 2px 6px; border-radius: var(--radius-xs);
}
.conclusion-nav-link:hover { background: var(--primary-light); }

.rblock {
  border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface); margin-top: 16px; overflow: hidden;
}
.rblock-head {
  display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; gap: 12px;
  align-items: start; padding: 18px 22px 0;
}
.rblock-no {
  font-family: var(--mono); font-size: calc(22px * 1.3); line-height: 1; letter-spacing: -.05em;
  color: #c3cfdf; padding-top: 1px;
}
.rblock-kicker {
  font-family: var(--mono); font-size: calc(8.5px * 1.3); letter-spacing: .16em;
  text-transform: uppercase; color: var(--faint);
}
.rblock-title { margin-top: 4px; font-size: calc(19px * 1.3); line-height: 1.35; font-weight: 680; letter-spacing: -.02em; color: var(--ink); }
.rblock-question { margin-top: 5px; font-size: calc(12px * 1.3); line-height: 1.7; color: var(--muted); }
.rblock-status { padding-top: 4px; }
.rblock-lead {
  margin: 13px 22px 0 86px; padding-left: 12px;
  border-left: 2px solid var(--accent);
  font-size: calc(14.5px * 1.3); line-height: 1.8; color: var(--text-2);
}
.rblock-lead b { color: var(--primary); font-weight: 700; }
.rblock-body { display: grid; gap: 14px; padding: 16px 22px 20px; }
.rblock-body.split { grid-template-columns: minmax(0, 1fr); }
.rblock-body.full { grid-template-columns: minmax(0, 1fr); }
.rblock-visual { min-width: 0; }
.rblock-reading {
  align-self: stretch; min-width: 0;
  background: var(--surface-2); border-left: 0; border-top: 2px solid var(--accent);
  border-radius: 0 0 var(--radius-xs) var(--radius-xs);
  padding: 12px 16px 14px;
}
.reading-label {
  font-family: var(--mono); font-size: calc(9px * 1.3); letter-spacing: .16em;
  color: var(--accent); margin-bottom: 9px;
}
.reading-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; margin: 0; padding: 0; list-style: none; }
.reading-list li { display: grid; grid-template-columns: minmax(0, 1fr); gap: 3px; }
.reading-list b {
  font-family: var(--mono); font-size: calc(9px * 1.3); font-weight: 600; letter-spacing: .04em;
  color: var(--accent); padding-top: 0;
}
.reading-list span { font-size: calc(12.5px * 1.3); line-height: 1.9; color: var(--text-2); }
.reading-list span b { color: var(--ink); font-family: inherit; font-size: inherit; letter-spacing: 0; }
.rblock-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap;
  padding: 8px 22px; border-top: 1px solid var(--line-2); background: var(--surface-2);
  font-family: var(--mono); font-size: calc(8.5px * 1.3); letter-spacing: .02em; color: var(--faint);
}
.rblock-foot .report-check { margin: 0; font-size: calc(8.5px * 1.3); }
.rblock .figure { border: 0; border-radius: 0; padding: 0; margin: 0; }
.rblock .figure-head { margin-bottom: 6px; }
.rblock .figure-note { padding-top: 6px; }
.rblock .report-scan { border: 1px solid var(--line); }
.rblock .report-recs { margin-top: 0; }
/* 图下数据表 */
.chart-table { margin-top: 12px; }
.chart-table-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  margin-bottom: 5px; font-family: var(--mono); font-size: calc(8.5px * 1.3); color: var(--faint);
}
.chart-table-no { color: var(--muted); letter-spacing: .08em; }
.chart-table-note { text-align: right; }
.rblock .table-compact th { font-size: calc(9px * 1.3); padding: 5px 7px; }
.rblock .table-compact td { font-size: calc(10.5px * 1.3); padding: 5px 7px; }
.rblock .table-compact .code { font-size: calc(9.5px * 1.3); padding: 1px 4px; }
/* L4 明细子块 */
.detail-layer { margin-top: 26px; padding-top: 14px; border-top: 2px solid var(--ink); }
.detail-block { padding: 18px 0; border-bottom: 1px solid var(--line); }
.detail-block:last-child { border-bottom: 0; padding-bottom: 6px; }
.detail-head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 10px; }
.detail-letter {
  flex: none; width: 23px; height: 23px; display: grid; place-items: center;
  border: 1px solid var(--line); border-radius: var(--radius-xs);
  font-family: var(--mono); font-size: calc(9.5px * 1.3); color: var(--primary); background: var(--surface);
}
.detail-head h3 { font-size: calc(15px * 1.3); font-weight: 650; letter-spacing: -.01em; color: var(--ink); }
.detail-head p { margin-top: 3px; font-size: calc(11.5px * 1.3); line-height: 1.65; color: var(--muted); }
.detail-reading {
  margin-top: 10px; padding: 8px 11px;
  background: var(--surface-2); border-left: 2px solid var(--accent);
  font-size: calc(11.5px * 1.3); line-height: 1.85; color: var(--text-2);
}
.detail-reading span {
  font-family: var(--mono); font-size: calc(8.5px * 1.3); letter-spacing: .12em;
  color: var(--accent); margin-right: 8px;
}
.detail-body .report-subhead { margin: 14px 0 6px; }
.detail-body .table-wrap { margin-bottom: 8px; }
.detail-body .report-note { margin-top: 8px; }

.report-fold {
  margin-top: 18px; border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface); overflow: hidden;
}
.report-fold-head {
  width: 100%; display: flex; align-items: center; gap: 12px;
  padding: 13px 18px; border: 0; background: var(--surface-2); text-align: left;
}
.report-fold-head:hover { background: #f1f5fb; }
.report-fold-mark {
  flex: none; font-family: var(--mono); font-size: calc(8.5px * 1.3); letter-spacing: .08em;
  color: var(--faint); border: 1px solid var(--line); border-radius: var(--radius-xs); padding: 2px 5px;
}
.report-fold-copy { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.report-fold-copy b { font-size: calc(12.5px * 1.3); font-weight: 650; color: var(--ink); }
.report-fold-copy small { font-size: calc(10px * 1.3); color: var(--faint); }
.report-fold-meta { font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); }
.report-fold-icon {
  flex: none; width: 22px; height: 22px; display: grid; place-items: center;
  border: 1px solid var(--line); border-radius: var(--radius-xs);
  font-size: calc(12px * 1.3); line-height: 1; color: var(--primary); background: var(--surface);
}
.report-fold-body { display: none; }
.report-fold.open .report-fold-body { display: block; }
.report-fold-body .report-section { margin-top: 0; padding: 18px 20px 20px; border-top: 1px solid var(--line-2); }
.report-fold-body .report-section:first-child { border-top: 0; }
.report-fold-body .report-section:last-child { padding-bottom: 24px; }

/* 四象限图 */
.q-chart { width: 100%; height: auto; display: block; overflow: visible; }
.q-chart .q-tint { opacity: 1; }
.q-chart .q-tint-a { fill: rgba(31, 79, 216, 0.035); }
.q-chart .q-tint-b { fill: rgba(14, 147, 176, 0.05); }
.q-chart .q-grid { stroke: var(--chart-grid); stroke-width: 1; }
.q-chart .q-ref { stroke: #a9b7ca; stroke-width: 1; stroke-dasharray: 3 4; }
.q-chart .q-axis { stroke: #cfd9e6; stroke-width: 1; }
.q-chart .q-tick { font-family: var(--mono); font-size: calc(10px * 1.3); fill: var(--muted); }
.q-chart .q-axis-title { font-size: calc(10.5px * 1.3); fill: var(--muted); letter-spacing: .04em; }
.q-chart .q-quad {
  font-family: var(--mono); font-size: calc(9px * 1.3); letter-spacing: .12em; fill: #9fb0c6; text-transform: uppercase;
}
.q-chart .q-point { stroke: #fff; stroke-width: 2; }
.q-chart .q-point.p1 { fill: var(--chart-1); }
.q-chart .q-point.p2 { fill: var(--chart-2); }
.q-chart .q-point.p3 { fill: var(--chart-3); }
.q-chart .q-point.p4 { fill: var(--chart-4); }
.q-chart .q-point.p5 { fill: var(--chart-5); }
.q-chart .q-point.p6 { fill: var(--chart-6); }
.q-chart .q-name { font-size: calc(11.5px * 1.3); font-weight: 600; fill: var(--ink); }
.q-chart .q-sub { font-family: var(--mono); font-size: calc(10px * 1.3); fill: var(--muted); }
.q-chart .q-me { fill: none; stroke: var(--accent); stroke-width: 1.5; stroke-dasharray: 3 3; }
.q-chart .q-point-clip { stroke-dasharray: 2.5 2.5; }
.q-chart .q-clip { font-family: var(--mono); font-size: calc(9px * 1.3); fill: var(--warning); }
.q-chart .q-leader { stroke: #d3dfec; stroke-width: .7; fill: none; }
.q-chart .q-name-all { font-size: calc(11px * 1.3); font-weight: 600; fill: var(--text-2); }
.q-chart .q-name-all.q-name-focus { fill: var(--primary); font-weight: 700; }
.q-chart .q-quad-blue { fill: #1f4fd8; }
.q-chart .q-quad-green { fill: #0f766e; }
.q-chart .q-quad-red { fill: #a8261b; }
.q-chart .q-quad-amber { fill: #a85a05; }
.risk-legend { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.risk-legend .badge { height: 20px; font-size: calc(10px * 1.3); }

/* 等级迁移图 */
.gs-chart { width: 100%; height: auto; display: block; overflow: visible; }
.gs-chart .gs-center { stroke: #dbe4ef; stroke-width: 1; }
.gs-chart .gs-entry-bar { fill: #d7dfe9; }
.gs-chart .gs-exit-bar { fill: var(--primary); }
.gs-chart .gs-grade { font-family: var(--mono); font-size: calc(9.5px * 1.3); fill: var(--muted); }
.gs-chart .gs-count { font-family: var(--mono); font-size: calc(9.5px * 1.3); fill: var(--ink); }
.gs-chart .gs-count.zero { fill: var(--faint); }
.gs-chart .gs-axis-title { font-family: var(--mono); font-size: calc(9px * 1.3); fill: var(--chart-axis); letter-spacing: .04em; }

/* =========================================================
   报告正文（沿用 v3.2 结构，视觉重做）
   ========================================================= */
.report-page { max-width: 1280px; }
.report-head { margin-bottom: 18px; }
.report-doc-grid { display: grid; grid-template-columns: minmax(0, 1fr) 172px; gap: 28px; align-items: start; }
.report-doc-main { min-width: 0; }
.report-toc {
  position: sticky; top: 84px; display: flex; flex-direction: column; gap: 1px;
  padding: 12px 10px; border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface);
}
.report-toc-title {
  padding: 0 8px 8px; font-family: var(--mono);
  font-size: calc(9px * 1.3); font-weight: 500; letter-spacing: .14em; color: var(--faint); text-transform: uppercase;
}
.report-toc-link {
  position: relative; padding: 6px 8px; border: 0; border-radius: var(--radius-xs);
  background: transparent; color: var(--muted); font-size: calc(11.5px * 1.3); text-align: left; line-height: 1.5;
}
.report-toc-link:hover { background: var(--surface-2); color: var(--ink); }
.report-toc-link.active { background: var(--primary-light); color: var(--primary); font-weight: 600; }
.report-toc-link.active::before {
  content: ""; position: absolute; left: 0; top: 7px; bottom: 7px; width: 2px; background: var(--primary);
}
.report-toc-export { width: 100%; justify-content: center; margin-top: 10px; }
.report-toc-note { margin-top: 7px; font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); text-align: center; }
.report-list-note { margin: 10px 0 8px; font-size: calc(11px * 1.3); color: var(--faint); }
.report-check { margin-top: 12px; font-family: var(--mono); font-size: calc(10px * 1.3); letter-spacing: .02em; color: var(--faint); }
.report-check-link { margin: 0 2px; padding: 0; border: 0; background: transparent; color: var(--primary); font-size: calc(10.5px * 1.3); }
.report-check-link:hover { text-decoration: underline; }
.r-hot td.ref { outline: 2px solid var(--danger); outline-offset: -2px; }
.r-app-table { font-size: calc(11.5px * 1.3); }
.r-app-table th, .r-app-table td { white-space: nowrap; }
.r-app-table th small, .r-app-table td small { display: block; font-size: calc(9.5px * 1.3); font-weight: 400; color: var(--faint); font-family: var(--mono); }
.r-app-table td b { font-weight: 600; }
.report-rolebar {
  display: flex; gap: 3px; flex-wrap: wrap; align-items: center;
  padding: 4px; margin-bottom: 14px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-md);
}
.report-role-pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 11px; border-radius: var(--radius-sm);
  font-size: calc(11.5px * 1.3); font-weight: 600; color: var(--muted);
  transition: background .15s, color .15s;
}
.report-role-pill svg { width: 14px; height: 14px; flex: 0 0 14px; }
.report-role-pill:hover { background: var(--surface-2); color: var(--ink); }
.report-role-pill.active { background: var(--ink); color: #fff; }
.report-meta { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-bottom: 16px; }
.report-overview {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0;
  padding: 16px 4px; margin-bottom: 16px;
  background: var(--surface); border: 1px solid var(--line); border-top: 2px solid var(--ink);
  border-radius: var(--radius-md);
}
.report-overview > div { display: flex; flex-direction: column; gap: 3px; padding: 0 18px; border-left: 1px solid var(--line-2); }
.report-overview > div:first-child { border-left: 0; }
.report-overview b {
  font-size: calc(24px * 1.3); line-height: 1.15; letter-spacing: -.03em;
  font-variant-numeric: tabular-nums; font-weight: 650; font-family: var(--mono); color: var(--ink);
}
.report-overview span { font-size: calc(10.5px * 1.3); color: var(--muted); letter-spacing: .02em; }
.report-roles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.report-role-card {
  position: relative;
  display: flex; flex-direction: column; gap: 10px; min-height: 220px;
  padding: 18px; border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface); color: var(--text);
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.report-role-card:hover { border-color: #b7c8e2; color: var(--text); box-shadow: var(--shadow-2); }
.report-role-card::after {
  content: "↗"; position: absolute; right: 16px; top: 14px;
  font-family: var(--mono); font-size: calc(11px * 1.3); color: var(--faint);
}
.report-role-top { display: flex; align-items: center; gap: 11px; }
.report-role-icon {
  width: 36px; height: 36px; flex: 0 0 36px; border-radius: var(--radius-sm);
  display: grid; place-items: center;
  background: var(--primary-light); color: var(--primary); border: 1px solid #dce6ff;
}
.report-role-icon svg { width: 18px; height: 18px; }
.report-role-title { font-size: calc(14px * 1.3); font-weight: 650; color: var(--ink); }
.report-role-reader { font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); margin-top: 3px; letter-spacing: .04em; }
.report-role-q { font-size: calc(12px * 1.3); color: var(--text-2); line-height: 1.7; }
.report-role-list { display: grid; gap: 4px; margin-top: 2px; }
.report-role-list li { font-size: calc(10.5px * 1.3); color: var(--faint); }
.report-role-list li::before { content: "·"; color: var(--accent); margin-right: 6px; font-weight: 700; }
.report-role-go { margin-top: auto; font-family: var(--mono); font-size: calc(10px * 1.3); letter-spacing: .08em; color: var(--primary); }
.report-scope {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 14px; margin-bottom: 18px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}
.report-scope-label { font-family: var(--mono); font-size: calc(9px * 1.3); font-weight: 500; letter-spacing: .14em; color: var(--faint); text-transform: uppercase; }
.view-switch { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.view-switch .chip { height: 27px; font-size: calc(11.5px * 1.3); }
.report-scope-label + * { margin-right: 8px; }
.report-fixed { font-size: calc(12px * 1.3); font-weight: 600; }
.report-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.report-section { margin-top: 30px; scroll-margin-top: 84px; }
.report-sec-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.report-sec-no {
  font-family: var(--mono); font-size: calc(10px * 1.3); font-weight: 600; color: var(--primary); letter-spacing: .1em; flex: none;
}
.report-sec-title { font-size: calc(16px * 1.3); font-weight: 650; letter-spacing: -.015em; color: var(--ink); }
.report-sec-sub { font-size: calc(10.5px * 1.3); color: var(--faint); margin-top: 3px; }
.report-conclusions { display: grid; gap: 8px; }
.report-conclusion {
  display: flex; gap: 14px; padding: 12px 15px;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm);
  font-size: calc(12.5px * 1.3); line-height: 1.85;
}
.report-c-no { flex: 0 0 20px; font-family: var(--mono); font-size: calc(10px * 1.3); font-weight: 600; color: var(--accent); padding-top: 3px; }
.report-conclusion b { color: var(--ink); }
.report-caption { font-size: calc(10.5px * 1.3); color: var(--faint); line-height: 1.7; margin-top: 7px; }
.report-inline-note { font-size: calc(11.5px * 1.3); color: var(--text-2); line-height: 1.8; margin-top: 10px; padding: 9px 12px; background: var(--surface-2); border-radius: var(--radius-xs); }
.report-subhead {
  font-family: var(--mono); font-size: calc(10px * 1.3); font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  color: var(--muted); margin-bottom: 8px;
}
.report-note { font-size: calc(11.5px * 1.3); color: var(--text-2); line-height: 1.9; }
.report-school-card .card-body { padding: 14px 16px; }
.report-mini { display: flex; justify-content: space-between; gap: 10px; font-size: calc(10.5px * 1.3); margin-top: 7px; color: var(--faint); }
.report-mini b { color: var(--text-2); font-weight: 600; }
.report-row-active td { background: #f3f7ff !important; }
.report-row-warn td { background: #fffafa; }
.report-row-warn:hover td { background: #fff5f5 !important; }
.report-row-muted td { opacity: .55; }
.r-good { color: var(--success); }
.r-bad { color: var(--danger); }
.report-recs { display: grid; gap: 8px; }
.report-recs > div {
  display: flex; gap: 14px; align-items: flex-start;
  padding: 12px 14px; background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-sm); font-size: calc(12px * 1.3); line-height: 1.85;
}
.report-recs b {
  flex: 0 0 72px; color: var(--primary); font-size: calc(10px * 1.3); font-family: var(--mono);
  letter-spacing: .08em; padding-top: 3px;
}
.report-recs span { color: var(--text-2); }

/* charts（bars / delta / dist / stack / flow / heat） */
.r-chart { width: 100%; height: auto; display: block; }
.r-chart .grid { stroke: var(--chart-grid); stroke-width: 1; }
.r-chart .axis-label { font-family: var(--mono); font-size: calc(9px * 1.3); fill: var(--chart-axis); }
.r-chart .axis-title { font-size: calc(10px * 1.3); fill: var(--muted); }
.r-chart .ref { stroke: #a9b7ca; stroke-width: 1; stroke-dasharray: 3 4; }
.r-chart .pt-label { font-size: calc(10.5px * 1.3); font-weight: 600; fill: var(--text-2); }
.r-chart .pt-sub { font-family: var(--mono); font-size: calc(9px * 1.3); fill: var(--faint); }
.r-bars { display: grid; gap: 8px; }
.r-bar-row { display: grid; grid-template-columns: 98px minmax(0, 1fr) 62px; align-items: center; gap: 10px; }
.r-bar-label { font-size: calc(11.5px * 1.3); color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.r-bar-label small { font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); margin-left: 4px; }
.r-bar-track { position: relative; height: 8px; border-radius: 0; background: var(--surface-3); overflow: hidden; }
.r-bar-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 0; background: linear-gradient(90deg, #3b63e0, var(--primary)); }
.r-bar-fill.good { background: linear-gradient(90deg, #2f9c8f, var(--success)); }
.r-bar-fill.bad { background: linear-gradient(90deg, #c9554a, var(--danger)); }
.r-bar-fill.active { background: linear-gradient(90deg, #3b63e0, var(--primary-hover)); }
.r-bar-row.active .r-bar-label { color: var(--primary); font-weight: 600; }
.r-bar-row.active .r-bar-value { color: var(--primary); }
.r-ref { position: absolute; top: -3px; bottom: -3px; width: 1px; background: var(--text-3); opacity: .7; z-index: 1; }
.r-bar-value { font-family: var(--mono); font-size: calc(11.5px * 1.3); font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; color: var(--text-2); }
.r-bar-value.r-good { color: var(--success); }
.r-bar-value.r-bad { color: var(--danger); }
.r-heat { width: 100%; border-collapse: separate; border-spacing: 3px; font-size: calc(11.5px * 1.3); }
.r-heat th { font-family: var(--mono); font-size: calc(9.5px * 1.3); font-weight: 500; color: var(--muted); text-align: center; padding: 6px; white-space: nowrap; letter-spacing: .02em; }
.r-heat tbody th { text-align: left; color: var(--text-2); font-weight: 600; padding-left: 8px; }
.r-heat td { text-align: center; padding: 8px 6px; border-radius: var(--radius-xs); font-variant-numeric: tabular-nums; font-family: var(--mono); font-weight: 600; }
.r-heat .h-good { background: #d9f2ec; color: #0b5c54; }
.r-heat .h-mid { background: #ebf7f4; color: #14685f; }
.r-heat .h-warn { background: #fff4e0; color: var(--warning); }
.r-heat .h-bad { background: var(--danger-bg); color: var(--danger); }
.r-heat .h-na { background: var(--surface-3); color: var(--faint); }
.r-legend { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 9px; }
.r-legend span { font-size: calc(10px * 1.3); padding: 3px 8px; border-radius: var(--radius-xs); font-variant-numeric: tabular-nums; }
.r-dist { display: flex; align-items: flex-end; gap: 8px; height: 170px; padding: 6px 4px 0; }
.r-dist-col { flex: 1; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 5px; min-width: 0; }
.r-dist-count { font-family: var(--mono); font-size: calc(10.5px * 1.3); font-weight: 600; color: var(--text-2); height: 15px; }
.r-dist-bar { width: 100%; max-width: 44px; border-radius: 0; min-height: 2px; background: #b8c6d8; }
.r-dist-bar.bad { background: #d9857c; }
.r-dist-bar.warn { background: #e0aa5a; }
.r-dist-bar.keep { background: #b8c6d8; }
.r-dist-bar.good { background: #4aa79b; }
.r-dist-label { font-family: var(--mono); font-size: calc(9.5px * 1.3); color: var(--faint); }
.r-delta { display: grid; gap: 9px; }
.r-delta-row { display: grid; grid-template-columns: 52px minmax(0, 1fr) 60px; align-items: center; gap: 10px; }
.r-delta-label { font-size: calc(11.5px * 1.3); color: var(--text-2); }
.r-delta-track { position: relative; height: 8px; border-radius: 0; background: var(--surface-3); }
.r-delta-track::after { content: ""; position: absolute; left: 50%; top: -3px; bottom: -3px; width: 1px; background: var(--border-strong); }
.r-delta-fill { position: absolute; top: 0; bottom: 0; min-width: 2px; border-radius: 0; }
.r-delta-fill.pos { left: 50%; background: var(--success); }
.r-delta-fill.neg { right: 50%; background: var(--danger); }
.r-delta-val { font-family: var(--mono); font-size: calc(11.5px * 1.3); font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.r-delta-val.pos { color: var(--success); }
.r-delta-val.neg { color: var(--danger); }
.r-statusbar { display: flex; height: 10px; border-radius: 0; overflow: hidden; background: var(--surface-3); }
.r-statusbar .s-progress { background: var(--success); }
.r-statusbar .s-keep { background: #b8c6d8; }
.r-statusbar .s-decline { background: var(--danger); }
.r-status-legend { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 8px; font-size: calc(10px * 1.3); color: var(--text-2); }
.r-status-legend span { display: inline-flex; align-items: center; gap: 5px; }
.r-status-legend i { width: 7px; height: 7px; border-radius: 1px; display: inline-block; }
.r-status-legend i.s-progress { background: var(--success); }
.r-status-legend i.s-keep { background: #b8c6d8; }
.r-status-legend i.s-decline { background: var(--danger); }
.report-peer-bars { padding: 2px 0; }
.r-chart .pt.clickable { cursor: pointer; }
.r-chart .pt.clickable:hover circle { stroke: var(--primary); stroke-width: 3; }
.report-split { display: grid; grid-template-columns: 1.05fr .95fr; gap: 18px; align-items: start; }
.r-excess { display: grid; gap: 10px; padding-top: 6px; }
.r-excess-row { display: grid; grid-template-columns: 56px minmax(0, 1fr) 62px; gap: 10px; align-items: center; }
.r-excess-label { font-size: calc(11.5px * 1.3); color: var(--text-2); }
.r-excess-label small { display: block; font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); }
.r-excess-track { position: relative; height: 10px; border-radius: 0; background: var(--surface-3); }
.r-excess-zero { position: absolute; left: 50%; top: -3px; bottom: -3px; width: 1px; background: var(--border-strong); }
.r-excess-fill { position: absolute; top: 0; bottom: 0; border-radius: 0; }
.r-excess-fill.neg { left: 50%; background: var(--danger); }
.r-excess-fill.pos { right: 50%; background: var(--success); }
.r-excess-val { font-family: var(--mono); font-size: calc(11.5px * 1.3); font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.r-excess-val.neg { color: var(--danger); }
.r-excess-val.pos { color: var(--success); }
.r-stack { display: grid; gap: 7px; }
.r-stack-row { display: grid; grid-template-columns: 86px minmax(0, 1fr) 56px; gap: 10px; align-items: center; padding: 2px 4px; border-radius: var(--radius-xs); }
.r-stack-label { font-size: calc(11.5px * 1.3); color: var(--text-2); white-space: nowrap; }
.r-stack-label small { font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); margin-left: 4px; }
.r-stack-track { display: flex; height: 9px; border-radius: 0; overflow: hidden; background: var(--surface-3); }
.r-stack-track .p { background: var(--success); }
.r-stack-track .k { background: #b8c6d8; }
.r-stack-track .d { background: var(--danger); }
.r-stack-val { font-family: var(--mono); font-size: calc(11.5px * 1.3); font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; color: var(--text-2); }
.r-legend .r-stack-p { background: var(--success-bg); color: var(--success); }
.r-legend .r-stack-k { background: var(--surface-3); color: var(--text-2); }
.r-legend .r-stack-d { background: var(--danger-bg); color: var(--danger); }
.r-flow-wrap { overflow: auto; }
.r-flow { border-collapse: separate; border-spacing: 4px; font-size: calc(12px * 1.3); margin: 0 auto; }
.r-flow th { font-family: var(--mono); color: var(--muted); font-weight: 500; text-align: center; padding: 6px 4px; font-size: calc(10.5px * 1.3); }
.r-flow tbody th { color: var(--text-2); font-size: calc(11px * 1.3); }
.r-flow td { width: 46px; height: 36px; text-align: center; border-radius: var(--radius-xs); font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 600; font-size: calc(12px * 1.3); }
.r-flow .flow-zero { background: var(--surface-3); color: transparent; }
.r-flow .flow-up { color: #0b5c54; background: #e8f6f2; }
.r-flow .flow-down { color: #8f2018; background: #fcefec; }
.r-flow .flow-keep { color: var(--text-2); background: var(--surface-2); }
.r-flow .flow-corner { text-align: left; min-width: 66px; }
.report-filterbar { display: grid; gap: 8px; padding: 10px 12px; margin: 12px 0; background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--radius-sm); }
.report-filter-line { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.report-filter-label { font-family: var(--mono); font-size: calc(9px * 1.3); font-weight: 500; letter-spacing: .1em; color: var(--faint); margin-right: 4px; text-transform: uppercase; }
.report-verdict { padding: 20px 22px; border: 1px solid var(--line); border-left: 3px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.report-verdict.problem { border-left-color: var(--danger); background: linear-gradient(180deg, #fffafa, #fff); }
.report-verdict.attention { border-left-color: #c47a12; background: linear-gradient(180deg, #fffdf7, #fff); }
.report-verdict.highlight { border-left-color: var(--success); background: linear-gradient(180deg, #f8fdfb, #fff); }
.report-verdict.normal { border-left-color: var(--primary); }
.verdict-top { display: flex; align-items: center; gap: 8px; }
.verdict-kicker { font-family: var(--mono); font-size: calc(9px * 1.3); font-weight: 500; letter-spacing: .16em; color: var(--faint); text-transform: uppercase; }
.verdict-text { margin-top: 12px; font-size: calc(17px * 1.3); line-height: 1.65; font-weight: 600; color: var(--ink); letter-spacing: -.01em; }
.verdict-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line-2); }
.verdict-metrics b { display: block; font-family: var(--mono); font-size: calc(24px * 1.3); line-height: 1.15; letter-spacing: -.03em; font-variant-numeric: tabular-nums; color: var(--primary); }
.verdict-metrics span { display: block; margin-top: 4px; font-size: calc(10.5px * 1.3); color: var(--faint); line-height: 1.5; }
.report-scan { border: 1px solid var(--line); border-radius: var(--radius-md); overflow: hidden; background: var(--surface); }
.report-scan-row { display: grid; grid-template-columns: 110px minmax(0, 1.05fr) minmax(0, .95fr) 150px 62px; gap: 10px; align-items: center; padding: 13px 16px; border-bottom: 1px solid var(--line-2); }
.report-scan-row:last-child { border-bottom: 0; }
.report-scan-row:hover { background: #fbfcff; }
.scan-label { display: flex; align-items: center; gap: 7px; font-size: calc(11.5px * 1.3); font-weight: 600; color: var(--text-2); }
.scan-no { font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); letter-spacing: .06em; }
.scan-main b { display: block; font-size: calc(12.5px * 1.3); color: var(--ink); }
.scan-main span { display: block; margin-top: 3px; font-size: calc(10.5px * 1.3); color: var(--faint); }
.scan-diff { font-size: calc(11.5px * 1.3); color: var(--text-2); }
.scan-scale { font-family: var(--mono); font-size: calc(10px * 1.3); color: var(--faint); }
.scan-status { text-align: right; }
.scan-sub { grid-column: 2 / 5; margin-top: -3px; font-family: var(--mono); font-size: calc(9.5px * 1.3); color: var(--faint); letter-spacing: .01em; }
/* 新版扫描行：标签 + 结论/对比/脚注，窄栏也不挤 */
.scan-row { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 16px; padding: 14px 16px; border-bottom: 1px solid var(--line-2); }
.scan-row:last-child { border-bottom: 0; }
.scan-row:hover { background: #fbfcff; }
.scan-row .scan-label { display: flex; align-items: flex-start; gap: 9px; font-size: calc(11.5px * 1.3); font-weight: 600; color: var(--text-2); }
.scan-row .scan-no { padding-top: 2px; }
.scan-body { min-width: 0; }
.scan-headline { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.scan-headline b { font-size: calc(13.5px * 1.3); font-weight: 650; color: var(--ink); }
.scan-detail { margin-top: 4px; font-size: calc(12px * 1.3); line-height: 1.7; color: var(--text-2); }
.scan-compare { display: flex; gap: 6px 16px; flex-wrap: wrap; margin-top: 6px; font-size: calc(11px * 1.3); color: var(--muted); }
.scan-row .scan-diff { font-size: calc(10.5px * 1.3); color: var(--text-2); }
.scan-row .scan-scale { font-family: var(--mono); font-size: calc(9.5px * 1.3); color: var(--faint); }
.scan-row .scan-sub { grid-column: auto; margin-top: 6px; font-family: var(--mono); font-size: calc(9.5px * 1.3); line-height: 1.65; color: var(--faint); }
.scan-row .scan-status { display: none; }
.rblock .scan-row { grid-template-columns: 86px minmax(0, 1fr); gap: 12px; padding: 12px 14px; }
.report-hot-top { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.report-hot-slot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); color: var(--text-2); font-size: calc(11.5px * 1.3); text-align: left; }
.report-hot-slot b { color: var(--danger); font-family: var(--mono); font-size: calc(12px * 1.3); white-space: nowrap; }
.report-hot-slot.empty { border-style: dashed; color: var(--faint); }
.report-hot-slot.empty b { color: var(--faint); font-weight: 500; }
.r-hot { width: 100%; border-collapse: separate; border-spacing: 2px; font-size: calc(10.5px * 1.3); }
.r-hot th { padding: 5px 2px; color: var(--faint); font-family: var(--mono); font-size: calc(9px * 1.3); font-weight: 500; text-align: center; }
.r-hot tbody th { text-align: left; color: var(--text-2); font-size: calc(10.5px * 1.3); white-space: nowrap; }
.r-hot tbody th small { display: block; font-family: var(--mono); font-size: calc(8.5px * 1.3); color: var(--faint); font-weight: 400; }
.r-hot td { padding: 6px 2px; text-align: center; border-radius: var(--radius-xs); background: var(--surface-2); color: var(--faint); cursor: pointer; }
.r-hot td.on { background: #fdece9; color: var(--danger); font-weight: 700; }
.r-hot td.on:hover { background: #fbded9; }
.r-hot td.sum { background: var(--surface-3); color: var(--text-2); font-weight: 600; cursor: default; }
.r-hot-wrap { max-height: none; overflow: visible; }
.detail-table-wrap { max-height: none; overflow-x: auto; }
.rblock .table, .detail-block .table, .r-app-table, .detail-table-wrap .table {
  font-size: calc(12px * 1.3);
}
.rblock .table th, .detail-block .table th, .r-app-table th {
  font-size: calc(10.5px * 1.3); font-weight: 600; letter-spacing: .03em;
  background: var(--surface-2); color: var(--muted); padding: 8px 10px;
}
.rblock .table td, .detail-block .table td, .r-app-table td {
  font-size: calc(11.5px * 1.3); padding: 7px 10px; color: var(--text-2);
}
.rblock .table-compact th, .detail-block .table-compact th { font-size: calc(10px * 1.3); padding: 6px 8px; }
.rblock .table-compact td, .detail-block .table-compact td { font-size: calc(11px * 1.3); padding: 6px 8px; }
.rblock .table tbody tr:hover td, .detail-block .table tbody tr:hover td { background: #f7faff; }
.r-hot { font-size: calc(11px * 1.3); }
.r-hot th { font-size: calc(9.5px * 1.3); padding: 5px 3px; }
.r-hot td { padding: 6px 4px; font-size: calc(10.5px * 1.3); }
.report-appendix { margin-top: 8px; }
.verdict-badge { display: inline-flex; align-items: center; }
.report-tag-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.report-tag-card { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); text-align: left; }
.report-tag-card span { font-size: calc(10.5px * 1.3); color: var(--text-2); }
.report-tag-card b { font-family: var(--mono); font-size: calc(22px * 1.3); line-height: 1.2; letter-spacing: -.02em; }
.report-tag-card b small { font-size: calc(9px * 1.3); color: var(--faint); margin-left: 2px; font-family: var(--font); }
.report-tag-card em { font-style: normal; font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); }
.report-tag-card.red b { color: var(--danger); }
.report-tag-card.amber b { color: var(--warning); }
.report-tag-card.purple b { color: var(--purple); }
.report-tag-card.active { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary-light); }
.report-details { margin-top: 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); }
.report-details > summary { padding: 10px 12px; font-size: calc(11.5px * 1.3); font-weight: 600; color: var(--text-2); cursor: pointer; }
.report-details[open] > summary { border-bottom: 1px solid var(--line-2); }
.report-details > *:not(summary) { margin-left: 12px; margin-right: 12px; }
.report-details > .table-wrap, .report-details > .report-filterbar { margin-top: 10px; margin-bottom: 10px; }
.report-evidence .report-subhead { margin-top: 14px; }

/* ---------- 图标尺寸 ---------- */
.stat-label svg { width: 14px; height: 14px; flex: 0 0 14px; }
.btn svg { width: 16px; height: 16px; flex: 0 0 16px; }
.btn-sm svg, .btn-xs svg { width: 14px; height: 14px; flex: 0 0 14px; }
.alert > svg { width: 16px; height: 16px; flex: 0 0 16px; margin-top: 1px; }
.readonly-banner svg { width: 16px; height: 16px; flex: 0 0 16px; }
.card-title svg { width: 15px; height: 15px; }

/* 旧版 report 容器（兼容） */
.report { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); padding: 30px 36px; max-width: 980px; margin: 0 auto; }
.report-title { font-size: calc(22px * 1.3); font-weight: 700; text-align: center; margin-bottom: 4px; }
.report-sub { text-align: center; color: var(--faint); font-size: calc(12px * 1.3); margin-bottom: 22px; }
.report .report-section h3 { font-size: calc(14px * 1.3); font-weight: 600; margin-bottom: 8px; padding-left: 9px; border-left: 2px solid var(--primary); }
.report .report-section p { font-size: calc(13px * 1.3); line-height: 1.85; color: var(--text-2); margin-bottom: 6px; }
.report .report-section ul { padding-left: 18px; list-style: disc; }
.report .report-section li { font-size: calc(13px * 1.3); line-height: 1.85; color: var(--text-2); }
.report .report-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: calc(11px * 1.3); color: var(--faint); border-top: 1px solid var(--line); padding-top: 14px; margin-top: 24px; }
.report-editable { outline: none; border-radius: 3px; }
.report-editable:focus { background: #fffdf0; box-shadow: 0 0 0 2px var(--warning-bg); }

/* ---------- 统一报告表格 ---------- */
.report-page .table,
.report-page .r-app-table,
.detail-table-wrap .table { font-size: calc(12px * 1.3); border-collapse: separate; border-spacing: 0; }
.report-page .table th,
.report-page .r-app-table th,
.detail-table-wrap .table th {
  font-size: calc(10.5px * 1.3); font-weight: 600; letter-spacing: .03em;
  color: var(--muted); background: var(--surface-2);
  padding: 8px 10px; border-bottom: 1px solid var(--line);
}
.report-page .table td,
.report-page .r-app-table td,
.detail-table-wrap .table td {
  font-size: calc(11.5px * 1.3); color: var(--text-2);
  padding: 7px 10px; border-bottom: 1px solid var(--line-2);
}
.report-page .table tbody tr:last-child td,
.report-page .r-app-table tbody tr:last-child td,
.detail-table-wrap .table tbody tr:last-child td { border-bottom: 0; }
.report-page .table tbody tr:hover td,
.detail-table-wrap .table tbody tr:hover td { background: #f7faff; }
.report-page .table-compact th { font-size: calc(10px * 1.3); padding: 6px 8px; }
.report-page .table-compact td { font-size: calc(11px * 1.3); padding: 6px 8px; }
.report-page .r-hot { font-size: calc(11px * 1.3); }
.report-page .r-hot th { font-size: calc(9.5px * 1.3); padding: 5px 3px; }
.report-page .r-hot td { font-size: calc(10.5px * 1.3); padding: 6px 4px; }
.report-page .r-flow { font-size: calc(12px * 1.3); }
.report-page .r-flow th { font-size: calc(10.5px * 1.3); }
.report-page .r-flow td { font-size: calc(12px * 1.3); }
.report-page .table-wrap { border-radius: var(--radius-md); }
.report-page .detail-table-wrap { max-height: none; overflow-x: auto; }
.report-page .r-hot-wrap { max-height: none; overflow: visible; }

/* 本考试报告说明 */
.report-basics {
  margin: 14px 0 16px; padding: 14px 18px 16px;
  border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface-2);
}
.rb-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.rb-kicker { font-family: var(--mono); font-size: calc(9px * 1.3); letter-spacing: .16em; color: var(--primary); }
.rb-tag { font-family: var(--mono); font-size: calc(9px * 1.3); color: var(--faint); }
.rb-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.rb-grid > div { min-width: 0; }
.rb-grid span { display: block; font-size: calc(9px * 1.3); letter-spacing: .1em; color: var(--faint); }
.rb-grid b { display: block; margin-top: 4px; font-size: calc(12.5px * 1.3); line-height: 1.5; color: var(--ink); font-weight: 650; }
.rb-grid em { display: block; margin-top: 3px; font-style: normal; font-size: calc(10.5px * 1.3); line-height: 1.55; color: var(--muted); }
.algo-panel {
  display: grid; grid-template-columns: 1.15fr 1fr; gap: 20px;
  margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--line);
}
.algo-title { font-size: calc(11px * 1.3); font-weight: 700; color: var(--ink); margin-bottom: 6px; }
.algo-title span { margin-left: 6px; font-family: var(--mono); font-size: calc(8.5px * 1.3); font-weight: 500; color: var(--primary); letter-spacing: .06em; }
.algo-steps ol { margin: 0; padding-left: 17px; display: grid; gap: 5px; }
.algo-steps li { font-size: calc(10.5px * 1.3); line-height: 1.65; color: var(--text-2); }
.algo-steps li b { display: inline; color: var(--ink); font-size: calc(10.5px * 1.3); }
.algo-steps li span { display: block; color: var(--muted); }
.algo-steps code { font-family: var(--mono); font-size: calc(9.5px * 1.3); color: var(--primary); background: #f2f6ff; padding: 0 3px; border-radius: 2px; }
.algo-alt { margin-top: 6px; font-size: calc(9.5px * 1.3); line-height: 1.55; color: var(--faint); }
.algo-metrics dl { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 4px 10px; margin: 0; }
.algo-metrics dt { font-size: calc(10px * 1.3); font-weight: 650; color: var(--ink); line-height: 1.55; }
.algo-metrics dd { margin: 0; font-size: calc(10px * 1.3); line-height: 1.55; color: var(--muted); }
.algo-foot { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 10px; font-size: calc(9.5px * 1.3); color: var(--faint); }
.algo-foot a { color: var(--primary); font-weight: 600; }

/* 科任分班对比卡 */
.class-compare { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.class-compare-card {
  position: relative; padding: 14px 16px 12px;
  border: 1px solid var(--line); border-left: 3px solid var(--line);
  border-radius: var(--radius-md); background: var(--surface);
}
.class-compare-card.weak { border-left-color: var(--danger); }
.class-compare-card.strong { border-left-color: var(--success); }
.cc-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.cc-head span { font-size: calc(13px * 1.3); font-weight: 650; color: var(--ink); }
.cc-head em { font-style: normal; font-family: var(--mono); font-size: calc(9.5px * 1.3); color: var(--faint); }
.class-compare-card > b { display: block; margin-top: 6px; font-family: var(--mono); font-size: calc(26px * 1.3); line-height: 1.1; color: var(--primary); letter-spacing: -.03em; }
.class-compare-card > small { font-size: calc(10px * 1.3); color: var(--faint); }
.cc-metrics { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 6px; font-size: calc(10.5px * 1.3); color: var(--muted); }

/* 区域：指标差异 / 等级结构 / 正向发现 */
.diff-focus { display: grid; gap: 7px; }
.diff-row { display: grid; grid-template-columns: 78px minmax(0, 1fr) 96px 160px; align-items: center; gap: 10px; }
.diff-label { font-size: calc(11px * 1.3); color: var(--text-2); }
.diff-bar { height: 8px; background: var(--surface-3); border-radius: 4px; overflow: hidden; }
.diff-bar i { display: block; height: 100%; background: var(--primary); border-radius: 4px; }
.diff-row b { font-family: var(--mono); font-size: calc(12px * 1.3); color: var(--primary); text-align: right; font-variant-numeric: tabular-nums; }
.diff-row em { font-style: normal; font-size: calc(10.5px * 1.3); color: var(--muted); text-align: right; }
.grade-struct { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.gs-card { padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.gs-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.gs-head b { font-size: calc(12.5px * 1.3); color: var(--ink); }
.gs-head span { font-family: var(--mono); font-size: calc(9.5px * 1.3); color: var(--faint); }
.gs-row { display: grid; grid-template-columns: 30px minmax(0, 1fr); align-items: center; gap: 8px; margin-top: 5px; }
.gs-row > span { font-size: calc(9.5px * 1.3); color: var(--muted); }
.gs-bar { display: flex; height: 15px; border-radius: 2px; overflow: hidden; background: var(--surface-3); }
.gs-seg { display: inline-block; height: 100%; }
.gs-seg.g1 { background: #1a9850; }
.gs-seg.g2 { background: #66bd63; }
.gs-seg.g3 { background: #a6d96a; }
.gs-seg.g4 { background: #d9ef8b; }
.gs-seg.g5 { background: #ffffbf; }
.gs-seg.g6 { background: #fee08b; }
.gs-seg.g7 { background: #fdae61; }
.gs-seg.g8 { background: #f46d43; }
.gs-seg.g9 { background: #d73027; }
.gs-legend { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 10px; font-size: calc(9.5px * 1.3); color: var(--muted); }
.gs-legend span { display: inline-flex; align-items: center; gap: 4px; }
.gs-legend .gs-seg { width: 12px; height: 8px; border-radius: 2px; }
.gs-grade.g1 { fill: #1a9850; font-weight: 700; }
.gs-grade.g9 { fill: #d73027; font-weight: 700; }
.grade-delta-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 8px; }
.gd-card { padding: 10px 12px 18px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.gd-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.gd-head b { font-size: calc(12px * 1.3); color: var(--ink); }
.gd-head span { font-size: calc(9.5px * 1.3); color: var(--muted); }
.gd-head span b { font-family: var(--mono); font-size: calc(11px * 1.3); }
.gd-plot { position: relative; height: 112px; display: grid; grid-template-columns: repeat(9, 1fr); gap: 3px; margin-top: 8px; }
.gd-zero { position: absolute; left: 0; right: 0; top: 50%; border-top: 1px dashed var(--line); }
.gd-col { position: relative; height: 100%; }
.gd-bar { position: absolute; left: 22%; width: 56%; border-radius: 2px; }
.gd-bar.up { bottom: 50%; border-radius: 2px 2px 0 0; }
.gd-bar.down { top: 50%; border-radius: 0 0 2px 2px; }
.gd-col em { position: absolute; bottom: -16px; left: 0; right: 0; text-align: center; font-style: normal; font-family: var(--mono); font-size: calc(8px * 1.3); color: var(--muted); }
.gd-col em.g1 { color: #1a9850; font-weight: 700; }
.gd-col em.g9 { color: #d73027; font-weight: 700; }
.gd-key { display: inline-flex; align-items: center; gap: 5px; margin: 0 14px 4px 0; font-size: calc(9.5px * 1.3); color: var(--muted); }
.gd-swatch { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.gd-swatch.good { background: #1a9850; }
.gd-swatch.bad { background: #d73027; }
.gd-axis { margin-top: 12px; font-size: calc(9.5px * 1.3); color: var(--faint); }
.positive-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
.positive-card { padding: 12px 14px; border: 1px solid var(--line); border-top: 2px solid var(--success); border-radius: var(--radius-md); background: var(--surface); }
.positive-card span { display: block; font-size: calc(9.5px * 1.3); letter-spacing: .08em; color: var(--muted); }
.positive-card b { display: block; margin-top: 5px; font-family: var(--mono); font-size: calc(20px * 1.3); color: var(--success); letter-spacing: -.02em; }
.positive-card em { display: block; margin-top: 3px; font-style: normal; font-size: calc(10px * 1.3); color: var(--text-2); }
.rate-strong { background: #e7f6f0; }
.rate-good { background: #f0f8f4; }
.rate-mid { background: #fbf7ea; }
.rate-pill { display: inline-block; min-width: 38px; padding: 1px 6px; border-radius: 3px; font-family: var(--mono); font-size: calc(10.5px * 1.3); font-weight: 600; text-align: center; font-variant-numeric: tabular-nums; }
.rate-pill.strong { background: #dff3e9; color: #046c4e; }
.rate-pill.good { background: #edf8f2; color: #047857; }
.rate-pill.warn { background: #fbf3e2; color: #9a5b00; }
.rate-pill.bad { background: #fcefec; color: #a8261b; }
.rate-pill.deep { background: #f6ded9; color: #7a1d12; }
.rate-pill.neutral { background: var(--surface-2); color: var(--text-2); }
.gs-bar { outline: 1px solid var(--line-2); }
.gs-seg + .gs-seg { border-left: 1px solid rgba(255, 255, 255, .75); }

/* 全量宽表 */
.r-wide-wrap { overflow-x: auto; }
.r-wide-table { font-size: calc(10.5px * 1.3); min-width: 1080px; }
.r-wide-table th, .r-wide-table td { padding: 6px 7px !important; vertical-align: middle; }
.r-wide-table tbody th { font-size: calc(10.5px * 1.3); white-space: nowrap; }
.wide-cell b { display: block; font-family: var(--mono); font-size: calc(11px * 1.3); line-height: 1.3; }
.wide-cell small { display: block; margin-top: 1px; font-size: calc(9px * 1.3); color: var(--muted); white-space: nowrap; }

/* 班级迁移小多图 */
.shift-block { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--line-2); }
.shift-block-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.shift-block-head b { font-size: calc(12px * 1.3); color: var(--ink); }
.shift-block-head span { font-size: calc(10.5px * 1.3); color: var(--muted); }
.shift-scale { display: flex; align-items: center; gap: 8px; margin: 0 0 8px; font-size: calc(9px * 1.3); color: var(--faint); }
.shift-scale div { display: flex; width: 150px; height: 8px; border-radius: 3px; overflow: hidden; outline: 1px solid var(--line-2); }
.shift-scale i { flex: 1; }
.shift-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.shift-card { padding: 8px 9px 7px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); text-align: left; cursor: pointer; }
.shift-card:hover { border-color: var(--primary); background: #f7faff; }
.shift-card.hot { border-left: 3px solid var(--danger); }
.shift-head { display: flex; justify-content: space-between; align-items: center; gap: 6px; }
.shift-head b { font-size: calc(10.5px * 1.3); color: var(--ink); }
.shift-head em { font-style: normal; font-family: var(--mono); font-size: calc(8.5px * 1.3); color: var(--faint); }
.shift-bar { display: flex; height: 7px; margin-top: 5px; border-radius: 2px; overflow: hidden; background: var(--surface-3); }
.shift-foot { display: flex; justify-content: space-between; gap: 6px; margin-top: 5px; font-size: calc(9px * 1.3); color: var(--muted); }
.shift-foot b { font-family: var(--mono); }
.shift-details { margin-top: 12px; }
.shift-detail { padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.shift-detail-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.shift-detail-head b { font-size: calc(12.5px * 1.3); color: var(--ink); }

@media (max-width: 1180px) {
  .grid-4, .grid-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-main, .split { grid-template-columns: 1fr; }
  .file-grid { grid-template-columns: 1fr; }
  .diff-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .conclusion-points { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rb-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .algo-panel { grid-template-columns: 1fr; gap: 12px; }
  .positive-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grade-struct { grid-template-columns: 1fr; }
  .grade-delta-grid { grid-template-columns: 1fr; }
  .diff-row { grid-template-columns: 70px minmax(0, 1fr) 86px 130px; }
}
@media (max-width: 1100px) {
  .rblock-body.split { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .rblock-lead { margin-left: 22px; }
  .report-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .report-roles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .report-overview { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 0; }
  .report-tag-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .report-doc-grid { grid-template-columns: 1fr; }
  .report-toc { position: static; flex-direction: row; align-items: center; gap: 4px; overflow-x: auto; order: -1; margin-bottom: 12px; }
  .report-toc-title, .report-toc-note { display: none; }
  .report-toc-link { white-space: nowrap; }
  .report-toc-export { width: auto; margin-top: 0; white-space: nowrap; }
  .summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 0; }
  .summary-figure:nth-child(odd) { padding-left: 0; border-left: 0; }
  .summary-status { grid-template-columns: 1fr; gap: 12px; }
}
@media (max-width: 900px) {
  .reading-list { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .rblock-reading { padding: 11px 14px 13px; }
  .rblock-head { grid-template-columns: 40px minmax(0, 1fr); }
  .rblock-status { grid-column: 2; padding-top: 0; }
  .rblock-lead { margin: 12px 16px 0; }
  .rblock-body { padding: 14px 16px 18px; }
  .rblock-foot { padding: 8px 16px; }
  .report-split { grid-template-columns: 1fr; }
  .report-scan-row { grid-template-columns: 108px minmax(0, 1fr) 62px; }
  .scan-diff, .scan-scale { grid-column: 2; }
  .scan-status { grid-column: 3; grid-row: 1; }
  .scan-sub { grid-column: 2 / 4; }
  .report-hot-top { grid-template-columns: 1fr; }
  .cover-role { position: static; margin-top: 14px; display: inline-flex; }
  .report-cover { padding: 22px 20px 18px; }
  .cover-title { font-size: calc(24px * 1.3); }
}
@media (max-width: 760px) {
  .ruler-band { gap: 3px; }
  .band { padding: 8px 3px 7px; }
  .band b { font-size: calc(10.5px * 1.3); }
  .band small { font-size: calc(9px * 1.3); }
}
@media (max-width: 720px) {
  .rblock-visual { overflow-x: auto; }
  .rblock-visual .q-chart { min-width: 560px; }
  .rblock-visual .gs-chart { min-width: 540px; }
  .conclusion-points { grid-template-columns: 1fr; }
  .class-compare, .positive-grid, .rb-grid { grid-template-columns: 1fr; }
  .diff-row { grid-template-columns: 64px minmax(0, 1fr) 78px; }
  .diff-row em { display: none; }
  .conclusion-point { border-left: 0; border-top: 1px solid var(--line-2); padding: 12px 24px; }
  .conclusion-point:first-child { border-top: 0; }
  .report-conclusion-layer { padding: 18px 18px 0; }
  .conclusion-nav { margin: 0 -18px; padding: 9px 18px; }
  .report-roles { grid-template-columns: 1fr; }
  .report-kpis { grid-template-columns: 1fr; }
  .r-bar-row { grid-template-columns: 78px minmax(0, 1fr) 52px; }
  .report-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .verdict-metrics { grid-template-columns: 1fr; }
  .report-tag-grid { grid-template-columns: 1fr; }
  .summary-grid { grid-template-columns: 1fr; gap: 0; }
  .summary-figure { padding: 10px 0; border-left: 0; border-top: 1px solid var(--line-2); }
  .summary-figure:first-child { border-top: 0; }
  .summary-figure b { font-size: calc(26px * 1.3); }
}

/* ---------- print ---------- */
@page { size: A4 portrait; margin: 12mm; }
@media print {
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .report-basics { padding: 8px 12px; margin: 8px 0 10px; }
  .rb-head { margin-bottom: 6px; }
  .rb-grid { gap: 8px; }
  .rb-grid b { font-size: calc(11px * 1.3); }
  .rb-grid em { font-size: calc(9px * 1.3); }
  .algo-panel { gap: 12px; margin-top: 8px; padding-top: 8px; }
  .algo-title { margin-bottom: 3px; font-size: calc(9.5px * 1.3); }
  .algo-steps ol { gap: 2px; }
  .algo-steps li, .algo-steps li b { font-size: calc(8.5px * 1.3); line-height: 1.45; }
  .algo-steps li span { line-height: 1.45; }
  .algo-steps code { font-size: calc(8px * 1.3); }
  .algo-alt, .algo-foot { font-size: calc(8px * 1.3); margin-top: 4px; }
  .algo-metrics dl { gap: 2px 6px; }
  .algo-metrics dt, .algo-metrics dd { font-size: calc(8.5px * 1.3); line-height: 1.4; }
  .topbar, .sidebar, .report-rolebar, .report-scope, .readonly-banner, .report-toc, .page-actions, .report-drill-bar { display: none !important; }
  .layout { display: block; }
  .main { padding: 0; background: #fff; background-image: none; }
  .page { max-width: none; }
  .report-doc-grid { display: block; }
  .report-doc-main { width: 100%; }
  .report-section { break-inside: auto; break-before: auto; }
  .report-section#sec-appendix { break-before: page; }
  .report-sec-head { break-after: avoid; }
  .report-verdict, .report-scan, .report-tag-card, .report-recs > div { break-inside: avoid; }
  .report-conclusion, .report-recs > div, .stat { break-inside: avoid; }
  .report-cover {
    background: #fff !important; color: var(--ink); border: 0; border-bottom: 2px solid var(--ink);
    border-radius: 0; padding: 0 0 14px; margin-bottom: 14px;
  }
  .report-cover::before, .report-cover::after { display: none; }
  .cover-title { color: var(--ink); font-size: calc(22px * 1.3); margin-top: 8px; }
  .cover-desc { color: var(--text-2); }
  .cover-kicker { color: var(--primary); }
  .cover-ver, .cover-meta { color: var(--muted); }
  .cover-meta b { color: var(--ink); }
  .cover-role { display: none; }
  .report-cover .breadcrumb { display: none; }
  .report-cover .page-actions { display: none; }
  .report-summary { break-inside: avoid; }
  .report-conclusion-layer { break-inside: avoid; break-after: page; }
  .rblock { break-inside: auto; border-color: #e5e7eb; }
  .rblock:has(.figure) { break-inside: avoid; }
  .rblock-head { padding: 0 0 10px; break-after: avoid; }
  .rblock-lead { margin: 10px 0 0; break-after: avoid; }
  .rblock-body { padding: 10px 0 12px; }
  .rblock-body.split { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .rblock-reading { border-left: 0; border-top: 2px solid var(--accent); padding: 9px 12px; }
  .reading-list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .reading-list li { grid-template-columns: 1fr; gap: 2px; }
  .reading-list b { padding-top: 0; }
  .rblock-foot { padding: 6px 0; background: #fff; }
  .rblock-reading { background: #f7f9fd; }
  .report-fold { border: 0; margin-top: 10px; }
  .report-fold-head { display: none; }
  .report-fold-body { display: block !important; }
  .report-fold-body .report-section { padding: 14px 0 0; border-top: 0; }
  .figure { break-inside: avoid; }
  .report-hot-top { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .report-tag-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .report-overview { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .report-appendix .table td:nth-child(-n+3) { white-space: nowrap; }
  table { font-size: 9pt; }
  th, td { padding: 5px 6px; }
  thead { display: table-header-group; }
  tr { break-inside: avoid; }
  .r-chart, .gs-chart { max-height: 300px; }
  .q-chart { max-height: 520px; }
}
