/* 自動生成。手で直さない。型 = ds/esse-sense-report-base/report-base.html の <style> を切り出し（値は写していない）
   ＋ 末尾にレポート固有の部品（tools/build_session_reports_v2.py RP_CSS）。 */
/* ===========================================================
   esse-sense 基礎レポート（report-base）
   基礎スライド（esse-sense-slide-base）と同じ :root を写し、
   版面だけを「投影する16:9」から「読む縦長の文書」へ移した。
   型スケールは ds/tokens.css の本文版面（--fs-body clamp）に乗る。
   =========================================================== */
:root {
  /* ---- 上段: 正本 ds/tokens.css と同名のキーは同値（同名異値を作らない）。照合は ds/verify-base-root.mjs ---- */
  --paper: #FFFFFF; --surface: #FAFAFA; --surface-warm: #FAF8F4;
  --ink-strong: #0E0E0E; --ink: #1A1A1A; --ink-soft: #3A3A3A; --ink-mute: #6B6B6B;
  --rule: #E6E6E6;
  --rule-light: #E8E8E8;   /* 正本に無い */
  --accent: #CC1400; --accent-deep: #9A0F00; --accent-soft: #FF6A5A;
  /* 基礎スライドと見た目を揃えるため、--es-* は同値を継承する */
  /* ---- 局所名（--es-*）: 正本 tokens.css に無い、または正本と値を変えたい投影・本文用の値 ---- */
  --es-ink: var(--ink-strong);   /* 本文と暗面の地を兼ねる。正本 --ink-strong を参照 */
  /* 原本 komany-yoima-zemi/slides/deck.html で「投影での薄れを見込み一段濃く」した値 */
  --es-ink-mute: #5E5E5E; --es-rule: #D6D6D6; --es-rule-light: #E8E8E8;
  /* ANSWER+ CI の暗面の赤（tokens.css answer-warm-dark の --accent）。紙面の地には使わない */
  --es-accent-on-dark: #FF5A47;
  --font-sans: "Noto Sans JP", "Hiragino Sans", -apple-system, sans-serif;
  --font-mono: "Fira Code", "SF Mono", Menlo, monospace;
  --fs-body: clamp(15px, 1.05vw, 17px);
  --fs-lead: clamp(17px, 1.3vw, 20px);
  --fs-h2: clamp(26px, 2.6vw, 36px);
  --fs-h3: clamp(19px, 1.6vw, 22px);
  --fs-title: clamp(36px, 5vw, 64px);
  --measure: 66ch; --measure-wide: 1080px;
  --side: clamp(16px, 6vw, 96px);
  --space-1: 8px; --space-2: 16px; --space-3: 24px; --space-4: 40px; --space-5: 64px; --space-6: 96px;
  --ease: cubic-bezier(.16,1,.3,1);
}
* { box-sizing: border-box; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--paper); color: var(--es-ink); font-family: var(--font-sans); font-size: var(--fs-body); line-height: 1.8; letter-spacing: .02em; font-feature-settings: "palt", "kern"; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; word-break: auto-phrase; }
img { max-width: 100%; display: block; }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.skip-link { position: absolute; left: -999px; top: 8px; background: var(--es-ink); color: #fff; padding: 8px 12px; z-index: 100; }
.skip-link:focus { left: 8px; }
strong { color: var(--accent); font-weight: 700; }
.mono { font-family: var(--font-mono); }

/* ---------- 表紙（写真＋近黒パネル。スライド 01 と同じ構図） ---------- */
.cover { display: grid; grid-template-columns: 1.15fr 1fr; min-height: 78vh; }
.cover-photo { position: relative; overflow: hidden; background: var(--lqip, var(--surface)); min-height: 320px; }
.cover-photo img { width: 100%; height: 100%; object-fit: cover; }
.cover-photo .credit { position: absolute; left: 0; bottom: 0; padding: 6px 12px; font-size: 11px; letter-spacing: .12em; color: rgba(255,255,255,.9); background: rgba(14,14,14,.74); }
.cover-panel { background: var(--es-ink); color: #fff; padding: var(--space-4) var(--space-4) var(--space-3); display: grid; grid-template-rows: auto 1fr auto; gap: var(--space-3); }
.brand-logo { height: 30px; width: auto; }
.cover-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; font-size: 12px; letter-spacing: .12em; color: rgba(255,255,255,.62); }
.cover-main { display: flex; flex-direction: column; justify-content: center; }
.cover-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .32em; color: var(--es-accent-on-dark); text-transform: uppercase; margin-bottom: 14px; }
.cover-title { font-weight: 900; font-size: var(--fs-title); line-height: 1.12; letter-spacing: -.02em; margin: 0; }
.cover-sub { font-size: var(--fs-lead); font-weight: 500; color: rgba(255,255,255,.82); margin-top: 14px; line-height: 1.6; }
.cover-rule { width: 56px; height: 4px; background: var(--es-accent-on-dark); margin: 22px 0; }
.cover-meta { font-family: var(--font-mono); font-size: 13px; letter-spacing: .1em; color: rgba(255,255,255,.62); line-height: 1.9; }
.cover-foot { display: flex; justify-content: space-between; font-size: 12px; letter-spacing: .1em; color: rgba(255,255,255,.62); padding-top: 12px; border-top: 1px solid rgba(255,255,255,.22); }
@media (max-width: 800px) { .cover { grid-template-columns: 1fr; } .cover-photo { min-height: 46vw; } }

/* ---------- 走る見出し（スクロールで追従） ---------- */
.topbar { position: sticky; top: 0; z-index: 50; background: rgba(255,255,255,.96); backdrop-filter: blur(6px); border-bottom: 1px solid var(--es-rule); }
.topbar-inner { max-width: var(--measure-wide); margin: 0 auto; padding: 10px var(--side); display: grid; grid-template-columns: auto 1fr auto; gap: 20px; align-items: center; }
.topbar .brand-logo { height: 22px; }
.topbar .doc { font-size: 12px; letter-spacing: .08em; color: var(--es-ink-mute); text-align: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.topbar .num { font-family: var(--font-mono); font-size: 12px; letter-spacing: .12em; color: var(--accent); }

/* ---------- 版面 ---------- */
.page { max-width: var(--measure-wide); margin: 0 auto; padding: var(--space-5) var(--side) var(--space-6); }
.section { padding: var(--space-5) 0; border-top: 1px solid var(--es-rule); }
.section:first-of-type { border-top: none; padding-top: var(--space-3); }
.sec-head { margin-bottom: var(--space-4); }
.eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .28em; color: var(--es-ink-mute); text-transform: uppercase; display: flex; align-items: center; gap: 12px; }
.eyebrow .n { font-family: var(--font-mono); font-size: 13px; color: var(--accent); letter-spacing: .12em; }
h2 { font-weight: 900; font-size: var(--fs-h2); line-height: 1.25; letter-spacing: -.02em; margin: 10px 0 0; }
.lead { font-size: var(--fs-lead); line-height: 1.7; font-weight: 500; color: var(--ink-soft); max-width: var(--measure); margin: 14px 0 0; }
h3 { font-size: var(--fs-h3); font-weight: 700; line-height: 1.35; margin: var(--space-4) 0 var(--space-2); letter-spacing: -.01em; }
.subhead { font-size: 12px; font-weight: 700; letter-spacing: .16em; color: var(--accent); text-transform: uppercase; margin: var(--space-3) 0 var(--space-2); padding-bottom: 6px; border-bottom: 2px solid var(--accent); display: inline-block; }
p { max-width: var(--measure); margin: 0 0 var(--space-2); }
.prose > p + p { text-indent: 1em; }
.two { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); align-items: start; }
.wide-l { display: grid; grid-template-columns: 1.25fr 1fr; gap: var(--space-4); align-items: start; }
@media (max-width: 800px) { .two, .wide-l { grid-template-columns: 1fr; } }

/* ---------- 部品（スライドと同名・同値） ---------- */
.facts { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--space-3); margin: var(--space-3) 0; }
.facts.f3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
@media (max-width: 800px) { .facts, .facts.f3 { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.fact { border-top: 2px solid var(--accent); padding-top: 8px; display: flex; flex-direction: column; gap: 2px; }
.fact-label { font-size: 12px; font-weight: 700; letter-spacing: .12em; color: var(--es-ink-mute); }
.fact-num { font-weight: 900; font-size: clamp(30px, 3.2vw, 42px); line-height: 1.05; color: var(--accent); letter-spacing: -.01em; }
.fact-num .unit { font-size: 15px; font-weight: 700; color: var(--ink-soft); margin-left: 3px; }
.fact-num.ink { color: var(--es-ink); }
.fact-desc { font-size: 13px; line-height: 1.55; color: var(--ink-soft); }
ul.pts { list-style: none; padding: 0; margin: 0 0 var(--space-2); display: flex; flex-direction: column; gap: 10px; max-width: var(--measure); }
ul.pts li { position: relative; padding-left: 18px; line-height: 1.65; }
ul.pts li::before { content: ""; position: absolute; left: 0; top: .66em; width: 8px; height: 8px; background: var(--accent); }
ul.pts li.warn::before { background: var(--es-ink); }
ul.pts small { display: block; font-size: 13px; color: var(--es-ink-mute); margin-top: 1px; }
.note { padding: 14px 20px; background: var(--surface-warm); border-left: 4px solid var(--accent); font-weight: 500; line-height: 1.7; margin: var(--space-3) 0; max-width: var(--measure-wide); }
.note.ink { border-left-color: var(--es-ink); }
table.tbl { width: 100%; border-collapse: collapse; margin: var(--space-2) 0; }
table.tbl th { font-size: 12px; font-weight: 700; letter-spacing: .12em; color: var(--es-ink-mute); text-align: left; padding: 4px 10px 8px; border-bottom: 2px solid var(--es-ink); }
table.tbl th.r, table.tbl td.r { text-align: right; }
table.tbl td { padding: 10px; border-bottom: 1px solid var(--es-rule-light); vertical-align: middle; }
table.tbl td.nm { font-weight: 700; }
table.tbl td.nm small { display: block; font-size: 12px; font-weight: 400; color: var(--es-ink-mute); }
table.tbl td.r { font-family: var(--font-mono); font-size: 1.02em; font-weight: 500; font-variant-numeric: tabular-nums; }
table.tbl td.r.hi { color: var(--accent); font-weight: 700; }
table.tbl td.r.dim { color: var(--es-ink-mute); }
table.tbl tr.total td { border-top: 2px solid var(--es-ink); border-bottom: none; font-weight: 700; background: var(--surface); }
.tbl-wrap { overflow-x: auto; max-width: 100%; }
.caption { font-size: 12px; color: var(--es-ink-mute); line-height: 1.6; margin: 6px 0 var(--space-3); }
.steps { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--space-3); margin: var(--space-3) 0; }
@media (max-width: 800px) { .steps { grid-template-columns: 1fr; } }
.steps div { border-top: 4px solid var(--accent); padding-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.steps div:nth-child(2) { border-top-color: var(--es-ink); }
.steps h6 { margin: 0; font-family: var(--font-mono); font-size: 12px; font-weight: 500; letter-spacing: .12em; color: var(--accent); }
.steps div:nth-child(2) h6 { color: var(--es-ink); }
.steps .st { font-size: var(--fs-h3); font-weight: 700; line-height: 1.35; }
.steps p { font-size: 14px; line-height: 1.65; color: var(--ink-soft); margin: 0; }
figure.ph { margin: var(--space-3) 0; position: relative; overflow: hidden; background: var(--lqip, var(--surface)); }
figure.ph img { width: 100%; height: 100%; object-fit: cover; }
figure.ph figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 6px 12px; font-size: 12px; line-height: 1.4; font-weight: 500; color: #fff; background: rgba(14,14,14,.74); }
.collage { display: grid; grid-template-columns: 1.5fr 1fr 1fr; grid-template-rows: 220px 220px; gap: 10px; margin: var(--space-3) 0; }
.collage figure.ph { margin: 0; }
.collage .a { grid-row: 1 / 3; }
.collage .voice { background: var(--es-ink); color: #fff; padding: 20px 22px; display: flex; flex-direction: column; justify-content: center; gap: 12px; }
.voice .vq { font-size: 17px; font-weight: 700; line-height: 1.6; padding-left: 14px; border-left: 3px solid var(--es-accent-on-dark); }
.voice .vc { font-size: 12px; font-weight: 500; letter-spacing: .12em; color: var(--es-accent-on-dark); }
@media (max-width: 800px) { .collage { grid-template-columns: 1fr 1fr; grid-template-rows: auto; } .collage .a { grid-column: 1 / -1; grid-row: auto; height: 52vw; } .collage figure.ph { height: 40vw; } }
.quote { padding-left: 14px; border-left: 3px solid var(--accent); font-size: 15px; line-height: 1.7; color: var(--ink-soft); max-width: var(--measure); margin: var(--space-2) 0; }
.quote b { display: block; font-size: 11px; letter-spacing: .1em; color: var(--es-ink-mute); margin-top: 4px; font-weight: 700; }
.people { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; margin: var(--space-2) 0; }
.people div { border-top: 2px solid var(--es-ink); padding-top: 8px; font-size: 14px; line-height: 1.5; }
.people div b { display: block; font-size: 17px; }
.people div small { color: var(--es-ink-mute); }

/* ---------- 目次（スライド 02 と同じ A/B 列） ---------- */
.toc { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
@media (max-width: 800px) { .toc { grid-template-columns: 1fr; } }
.toc-col.b { background: var(--surface-warm); padding: var(--space-2) var(--space-3); margin: calc(-1 * var(--space-2)) 0; }
.toc-head { display: grid; grid-template-columns: auto 1fr; gap: 14px; align-items: end; padding-bottom: 8px; border-bottom: 3px solid var(--accent); margin-bottom: 4px; }
.toc-col.b .toc-head { border-bottom-color: var(--es-ink); }
.toc-head .letter { font-weight: 900; font-size: 56px; line-height: .9; letter-spacing: -.03em; color: var(--accent); }
.toc-col.b .toc-head .letter { color: var(--es-ink); }
.toc-head .lab { font-size: 15px; font-weight: 700; padding-bottom: 6px; }
.toc-head .lab small { display: block; font-size: 11px; letter-spacing: .2em; color: var(--es-ink-mute); text-transform: uppercase; margin-bottom: 2px; }
.toc-item { display: grid; grid-template-columns: 56px 1fr; gap: 14px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--es-rule-light); color: inherit; text-decoration: none; }
.toc-item:last-child { border-bottom: none; }
.toc-item:hover .t { color: var(--accent); }
.toc-item .n { font-family: var(--font-mono); font-size: 16px; font-weight: 500; color: var(--accent); letter-spacing: .04em; }
.toc-col.b .toc-item .n { color: var(--es-ink); }
.toc-item .t { font-size: var(--fs-h3); font-weight: 700; line-height: 1.3; }
.toc-item .t small { display: block; font-size: 13px; font-weight: 400; color: var(--es-ink-mute); margin-top: 2px; line-height: 1.5; }

/* ---------- 結び（暗面） ---------- */
.closing { background: var(--es-ink); color: #fff; position: relative; overflow: hidden; }
.closing .bg { position: absolute; inset: 0; }
.closing .bg img { width: 100%; height: 100%; object-fit: cover; opacity: .22; filter: grayscale(1); }
.closing-inner { position: relative; max-width: var(--measure-wide); margin: 0 auto; padding: var(--space-6) var(--side); }
.closing .eyebrow { color: var(--es-accent-on-dark); }
.closing .msg { font-weight: 900; font-size: var(--fs-h2); line-height: 1.4; letter-spacing: -.02em; margin: 14px 0 0; max-width: 28ch; }
.closing .msg-rule { width: 56px; height: 3px; background: var(--es-accent-on-dark); margin: 24px 0; }
.closing .voices { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px 32px; max-width: var(--measure-wide); }
@media (max-width: 800px) { .closing .voices { grid-template-columns: 1fr; } }
.closing .voices div { padding: 2px 0 2px 14px; border-left: 2px solid rgba(255,255,255,.3); }
.closing .voices b { display: block; font-size: 13px; letter-spacing: .08em; color: var(--es-accent-on-dark); margin-bottom: 2px; }
.closing .voices span { font-size: 15px; line-height: 1.6; color: rgba(255,255,255,.94); }
.closing p.msg-note { color: rgba(255,255,255,.76); margin-top: var(--space-3); }

/* ---------- フッター ---------- */
.foot { max-width: var(--measure-wide); margin: 0 auto; padding: var(--space-3) var(--side); display: grid; grid-template-columns: auto 1fr auto; gap: 16px; font-size: 12px; letter-spacing: .1em; color: var(--es-ink-mute); border-top: 1px solid var(--es-rule); }
.foot .c { text-align: center; }
@media (max-width: 640px) { .foot { grid-template-columns: 1fr; text-align: left; } .foot .c { text-align: left; } }

/* ---------- 印刷（A4 縦・柱と頁番号） ---------- */
@page { size: A4; margin: 18mm 16mm 20mm; @top-left { content: "esse-sense.inc"; font-family: "Noto Sans JP", sans-serif; font-size: 8pt; letter-spacing: .1em; color: #5E5E5E; } @top-right { content: string(doctitle); font-family: "Noto Sans JP", sans-serif; font-size: 8pt; letter-spacing: .08em; color: #5E5E5E; } @bottom-center { content: counter(page); font-family: "Fira Code", monospace; font-size: 8pt; color: #CC1400; } }
.doc-title { string-set: doctitle content(); }
@media print {
  .topbar { display: none; }
  .cover { min-height: auto; break-after: page; grid-template-columns: 1fr; }
  .cover-photo { height: 110mm; }
  .cover-panel { padding: 16mm 14mm; }
  .section { break-before: page; border-top: none; padding-top: 0; }
  .section:first-of-type { break-before: auto; }
  .facts, .steps, table.tbl, figure.ph, .note, .collage { break-inside: avoid; }
  .closing { break-before: page; }
  .closing .bg { display: none; }
  body { font-size: 10.5pt; line-height: 1.7; }
}

/* ---------- レポート固有の部品（docs/plan/archive-reports/DESIGN-v1.md §1-3。値はすべて型の var(--…)） ---------- */
ol.rp-points { list-style: none; padding: 0; margin: var(--space-2) 0 0; counter-reset: rp; display: flex; flex-direction: column; gap: var(--space-3); max-width: var(--measure-wide); }
ol.rp-points > li { counter-increment: rp; position: relative; padding-left: 44px; padding-bottom: var(--space-2); border-bottom: 1px solid var(--es-rule-light); break-inside: avoid; }
ol.rp-points > li::before { content: counter(rp, decimal-leading-zero); position: absolute; left: 0; top: .15em; font-family: var(--font-mono); font-size: 13px; color: var(--accent); letter-spacing: .12em; }
.rp-pt-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 10px; margin-bottom: 6px; }
.rp-pt-label { font-weight: 700; font-size: var(--fs-h3); line-height: 1.35; letter-spacing: -.01em; }
.rp-pt-claim { margin: 0 0 8px; max-width: var(--measure); }
.rp-ex { display: block; font-size: 13px; line-height: 1.6; color: var(--es-ink-mute); border-left: 2px solid var(--es-rule); padding-left: 8px; max-width: var(--measure); }
.rp-ex span { font-weight: 700; }
.rp-tag { display: inline-block; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; border: 1px solid var(--es-rule); color: var(--es-ink-mute); padding: 0 4px; line-height: 1.6; vertical-align: middle; }
.rp-time { font-family: var(--font-mono); font-size: 12px; color: var(--es-ink-mute); font-variant-numeric: tabular-nums; margin-left: auto; }
.rp-role { font-size: 12px; font-weight: 700; letter-spacing: .12em; color: var(--es-ink-mute); margin-left: 8px; }
ol.rp-stages { margin-top: 0; }
table.rp-topics td.nm small.rp-ex { margin-top: 4px; }
table.rp-topics td:last-child { color: var(--ink-soft); font-size: 14px; }
table.rp-structure td.r span { font-family: var(--font-sans); font-size: 13px; color: var(--es-ink-mute); }
.rp-links a { color: var(--accent); font-weight: 700; }
.rp-stats { max-width: var(--measure-wide); margin: 0 auto; padding: 0 var(--side); font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.rp-stats:empty { display: none; }
.collage.c2 { grid-template-columns: 1.5fr 1fr; }
.collage.c2 figure.ph, .collage.c3 .a { grid-row: 1 / 3; }
.collage.c3 { grid-template-columns: 1.5fr 1fr; }
.cover-meta .mg { white-space: nowrap; }
.closing .msg { text-wrap: balance; word-break: auto-phrase; overflow-wrap: normal; }
.tbl-wrap:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.people div b { font-size: 17px; }
.rp-stats { padding-top: var(--space-2); }
table.tbl td a { overflow-wrap: anywhere; }
/* ---------- 2026-10-07 西村さん指示 7・8: 動画へのリンク／まとめ／学術知／写真／登壇者 ---------- */
a.rp-watch { display: inline-flex; align-items: center; gap: 4px; color: var(--accent); text-decoration: none; border: 1px solid var(--es-rule); padding: 0 6px; line-height: 1.7; }
a.rp-watch:hover { border-color: var(--accent); }
a.rp-watch:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.rp-watch-ic { width: 0; height: 0; border-style: solid; border-width: 4px 0 4px 6px; border-color: transparent transparent transparent currentColor; }
.rp-prose { max-width: var(--measure); margin: 0 0 var(--space-3); text-indent: 1em; }
.rp-prose:first-of-type { text-indent: 0; }
.rp-who { font-size: 13px; color: var(--es-ink-mute); }
ol.rp-acad > li::before { content: counter(rp, decimal-leading-zero); }
.rp-acad-rel { margin: 0 0 6px; max-width: var(--measure); font-size: 14px; color: var(--ink-soft); }
.rp-acad-src { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 13px; color: var(--es-ink-mute); }
.rp-acad-src a:not(.rp-watch) { color: var(--accent); overflow-wrap: anywhere; }
.rp-acad-src .rp-watch { margin-left: 0; }
.rp-acad-k { font-weight: 700; letter-spacing: .06em; color: var(--es-ink-mute); margin-right: 4px; }
.rp-acad-db { font-family: var(--font-mono); font-size: 12px; }
.rp-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); max-width: var(--measure-wide); }
.rp-ph { margin: 0; background: none; }
/* ★LQIP の地は画像の側だけ（説明文の下に敷くと文字が読めない・design-quality-auditor gate 2026-10-07） */
.rp-ph img { display: block; width: 100%; height: auto; background: var(--lqip, var(--surface)); }
.rp-ph figcaption { padding-top: 6px; font-size: var(--fs-caption, 13px); line-height: 1.6; color: var(--ink-soft); background: var(--bg, transparent); }
.rp-profiles { display: grid; gap: var(--space-4); max-width: var(--measure-wide); }
.rp-prof { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: var(--space-4); align-items: start; padding-bottom: var(--space-4); border-bottom: 1px solid var(--es-rule-light); break-inside: avoid; }
.rp-prof-ph img { display: block; width: 120px; height: 134px; object-fit: cover; }
.rp-prof-none { display: grid; place-items: center; width: 120px; height: 134px; background: var(--surface); font-size: 28px; font-weight: 700; color: var(--es-ink-mute); }
.rp-prof-name { margin: 0; font-size: var(--fs-h3); line-height: 1.35; }
.rp-prof-name small { display: block; font-family: var(--font-mono); font-size: 12px; font-weight: 400; letter-spacing: .06em; color: var(--es-ink-mute); }
.rp-prof-head { margin: 4px 0 8px; font-size: 14px; color: var(--ink-soft); }
.rp-prof-bio { margin: 0; max-width: var(--measure); font-size: 15px; line-height: 1.85; }
/* 狭幅（design-quality-auditor 2・3: 横スクロールと写真の潰れ） */
@media screen and (max-width: 800px) {
  .cover { grid-template-columns: minmax(0, 1fr); }
  .cover-meta .mg { display: block; }
  .cover-meta .sp { display: none; }
  .cover-title { word-break: auto-phrase; }
  .cover-title, .rp-pt-label { overflow-wrap: anywhere; }
  h2:not(.msg) { overflow-wrap: anywhere; }
  .collage, .collage.c2, .collage.c3 { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .collage.c2 figure.ph { grid-row: auto; }
  .collage.c2 figure.ph:not(.a) { grid-column: 1 / -1; }
  .people { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .rp-time { margin-left: 0; }
  .rp-gallery { grid-template-columns: minmax(0, 1fr); }
  .rp-prof { grid-template-columns: 88px minmax(0, 1fr); gap: var(--space-3); }
  .rp-prof-ph img, .rp-prof-none { width: 88px; height: 98px; }
}
@media print {
  /* セッションレポートは流し込み版: 章ごとの改ページをやめ、頁数の上限（概要 3・詳細 8）だけを見る（設計 §4-4） */
  .section { break-before: auto; padding: 8mm 0 0; }
  .section:first-of-type { padding-top: 0; }
  .sec-head { margin-bottom: 6mm; }
  ol.rp-points { gap: 4mm; }
  ol.rp-points > li { break-inside: avoid; padding-bottom: 2mm; }
  .rp-pt-label { font-size: 11pt; }
  body { font-size: 10pt; line-height: 1.6; }
  .rp-ex { font-size: 8.5pt; line-height: 1.5; }
  .rp-pt-claim { margin-bottom: 1.5mm; }
  .cover { break-inside: avoid; }
  .cover-photo { height: 84mm; max-height: 84mm; min-height: 0; }
  .cover-panel { padding: 10mm 12mm; gap: 6mm; }
  /* 型の @media (max-width:800px) が A4 の本文幅（約 673px）でも効いて写真が重なる（auditor 1）。印刷では広幅の組みに戻す */
  .collage { grid-template-columns: 1.5fr 1fr 1fr; grid-template-rows: 46mm 46mm; }
  .collage.c2, .collage.c3 { grid-template-columns: 1.5fr 1fr; }
  .collage .a { grid-row: 1 / 3; grid-column: auto; height: auto; }
  .collage figure.ph { height: auto; }
  .collage.c2 figure.ph { grid-row: 1 / 3; grid-column: auto; }
  .facts.f3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .facts { grid-template-columns: repeat(4, minmax(0,1fr)); }
  .people { grid-template-columns: repeat(4, minmax(0,1fr)); }
  .cover { grid-template-columns: 1fr; }
  .closing { break-before: auto; }
  .sec-head, .subhead, h3 { break-after: avoid; break-inside: avoid; }
  .closing { break-inside: avoid; }
  .people div, .fact { break-inside: avoid; }
  .facts { margin: 4mm 0; }
  .fact-num { font-size: 22pt; }
  h2 { font-size: 18pt; }
  .lead { font-size: 11pt; }
  .closing .msg { font-size: 16pt; }
  .closing-inner { padding: 14mm; }
  .rp-links, .rp-stats, .skip-link { display: none; }
  .rp-watch-ic { display: none; }
  a.rp-watch { border: 0; padding: 0; color: var(--es-ink-mute); }
  .rp-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rp-ph, .rp-prof { break-inside: avoid; }
  .rp-prof-bio { font-size: 9.5pt; line-height: 1.6; }
  table.tbl td { padding: 1.6mm 2mm; }
  .toc-item { padding: 2mm 0; }
}
