/* ============================================================
   style.css — 京都府立植物園 PR・マーケティング戦略提案
   設計方針:
   - 各 .page = A4横(297:210)。container-type:inline-size を持ち、
     内部の文字・余白はすべて cqw(ページ幅の%) で指定。
     → 画面でも印刷(A4横)でもレイアウト比率が完全に一致する。
   - 白の余白を主役に。写真は大胆に。文字は少なく、細く。
   - 色は 墨 + 深緑(アクセント1色) + 季節色4色 のみ。
   ============================================================ */

:root {
  /* 紙と墨 */
  --paper: #fcfcfa;
  --paper-2: #f4f4f0;
  --ink: #14171a;
  --ink-2: #565e64;
  --ink-3: #949a9e;
  --ink-4: #c4c8c9;
  --line: #e2e3de;
  --line-2: #eceded;

  /* アクセント（深い葉の緑） */
  --green: #1d4d3b;
  --green-2: #2f6b53;
  --green-pale: #eef3f0;
  --gold: #a4874f;

  /* 季節色（彩度を抑えた4色） */
  --spring: #d98ca4;
  --summer: #3f8a68;
  --autumn: #c1783c;
  --winter: #6d87a1;

  /* 書体 */
  --mincho: 'Noto Serif JP', 'Hiragino Mincho ProN', 'Yu Mincho', serif;
  --sans: 'Noto Sans JP', -apple-system, BlinkMacSystemFont,
          'Hiragino Kaku Gothic ProN', 'Yu Gothic', Meiryo, sans-serif;
  --en: 'Inter', 'Helvetica Neue', Arial, sans-serif;

  --page-max: 1160px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }

body {
  font-family: var(--sans);
  color: var(--ink);
  background: #d7d8d3;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
}

/* ============================ ページ枠 ============================ */
.sheet {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
  padding: 78px 16px 90px;
}

.page {
  position: relative;
  width: 100%;
  max-width: var(--page-max);
  aspect-ratio: 297 / 210;
  background: var(--paper);
  container-type: inline-size;
  overflow: hidden;
  isolation: isolate;
  box-shadow: 0 14px 44px rgba(18, 22, 20, .14);
}

/* 標準の内側余白（A4横の天地左右） */
.pad {
  position: absolute;
  inset: 0;
  padding: 4.4cqw 5.6cqw 4.2cqw;
  display: flex;
  flex-direction: column;
}
.pad.wide { padding-left: 4.2cqw; padding-right: 4.2cqw; }
.pad.tight { padding-top: 3.6cqw; }

/* ページ見出し（番号 / 和文 / 英文の3点セット） */
.phead {
  display: flex;
  align-items: baseline;
  gap: 1.5cqw;
  padding-bottom: 1.1cqw;
  border-bottom: 1px solid var(--line);
  flex: 0 0 auto;
}
.phead .pnum {
  font-family: var(--en);
  font-weight: 500;
  font-size: 1.45cqw;
  letter-spacing: .1em;
  color: var(--green);
}
.phead .ptitle {
  font-family: var(--mincho);
  font-weight: 500;
  font-size: 1.85cqw;
  letter-spacing: .12em;
}
.phead .peng {
  font-family: var(--en);
  font-weight: 400;
  font-size: .95cqw;
  letter-spacing: .22em;
  color: var(--ink-3);
  text-transform: uppercase;
  margin-left: auto;
}

/* 小見出し／ラベル */
.eyebrow {
  font-family: var(--en);
  font-size: .88cqw;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--ink-3);
}
.label-jp {
  font-size: 1.05cqw;
  letter-spacing: .14em;
  color: var(--green);
  font-weight: 500;
}

/* 大きな主張（明朝・細字・広い字間） */
.statement {
  font-family: var(--mincho);
  font-weight: 300;
  font-size: 3.5cqw;
  line-height: 1.55;
  letter-spacing: .04em;
}
.statement em { font-style: normal; color: var(--green); font-weight: 500; }
.statement .thin { color: var(--ink-3); }

.lead {
  font-size: 1.26cqw;
  line-height: 2.0;
  color: var(--ink-2);
  letter-spacing: .03em;
  font-weight: 300;
}
.note {
  font-size: .92cqw;
  line-height: 1.85;
  color: var(--ink-3);
  letter-spacing: .02em;
}
.tiny {
  font-family: var(--en);
  font-size: .8cqw;
  letter-spacing: .16em;
  color: var(--ink-4);
}

/* ノド（ページ番号） */
.folio {
  position: absolute;
  bottom: 2.05cqw;
  left: 5.6cqw;
  right: 5.6cqw;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--en);
  font-size: .82cqw;
  letter-spacing: .18em;
  color: var(--ink-4);
  z-index: 4;
}
.folio .pgno { color: var(--ink-2); font-weight: 500; }
.page.dark .folio { color: rgba(255,255,255,.5); }
.page.dark .folio .pgno { color: rgba(255,255,255,.8); }

/* ============================ 表紙 ============================ */
.cover { background: #0d1210; }
.cover .cover-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  filter: saturate(.94) contrast(1.02);
}
.cover .scrim {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(10,14,12,.55) 0%, rgba(10,14,12,.06) 34%, rgba(10,14,12,.10) 52%, rgba(8,12,10,.82) 100%);
}
.cover .cover-body {
  position: absolute; inset: 0;
  padding: 4.4cqw 5.6cqw;
  display: flex; flex-direction: column; justify-content: space-between;
  color: #fff;
}
.cover .ctop { display: flex; justify-content: space-between; align-items: flex-start; }
.cover .cmark {
  font-family: var(--en); font-size: .88cqw; letter-spacing: .3em;
  color: rgba(255,255,255,.82); text-transform: uppercase;
}
.cover .cyear { font-family: var(--en); font-size: .88cqw; letter-spacing: .22em; color: rgba(255,255,255,.7); }
.cover h1 {
  margin: 0;
  font-family: var(--mincho);
  font-weight: 300;
  font-size: 3.35cqw;
  letter-spacing: .16em;
  line-height: 1.4;
}
.cover .csub {
  margin-top: 1.5cqw;
  font-family: var(--mincho);
  font-weight: 200;
  font-size: 5.4cqw;
  line-height: 1.34;
  letter-spacing: .045em;
}
.cover .crule { width: 6cqw; height: 1px; background: rgba(255,255,255,.55); margin: 2.2cqw 0 1.6cqw; }
.cover .cmeta {
  display: flex; gap: 3.2cqw; align-items: baseline;
  font-size: 1.0cqw; letter-spacing: .1em; color: rgba(255,255,255,.86); font-weight: 300;
}
.cover .cmeta b { font-weight: 500; letter-spacing: .12em; }

/* ============================ 目次 ============================ */
.toc-grid {
  flex: 1;
  display: grid;
  grid-template-columns: 1.15fr 1fr 1fr;
  gap: 0 3.4cqw;
  padding-top: 2.4cqw;
}
.toc-intro .statement { font-size: 2.55cqw; }
.toc-intro .lead { margin-top: 1.8cqw; font-size: 1.12cqw; line-height: 2.05; }
.toc-col { padding-top: .5cqw; }
.toc-item {
  display: flex; gap: 1.1cqw; align-items: baseline;
  padding: .85cqw 0;
  border-bottom: 1px solid var(--line-2);
}
.toc-item .tn { font-family: var(--en); font-size: .95cqw; color: var(--green); width: 2.1cqw; flex: 0 0 auto; letter-spacing: .06em; }
.toc-item .tt { font-size: 1.08cqw; letter-spacing: .05em; }
.toc-item .tp { margin-left: auto; font-family: var(--en); font-size: .86cqw; color: var(--ink-4); }
.toc-item.lead-item .tt { font-weight: 500; }

/* ============================ 汎用グリッド ============================ */
.body-2col { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 3.4cqw; padding-top: 2.4cqw; }
.body-3col { flex: 1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.6cqw; padding-top: 2.4cqw; }
.body-4col { flex: 1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.9cqw; padding-top: 2.2cqw; }
.stack { display: flex; flex-direction: column; }
.mt-a { margin-top: auto; }

/* 数字ブロック */
.facts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2.2cqw; }
.fact { border-top: 2px solid var(--ink); padding-top: .9cqw; }
.fact .fv {
  font-family: var(--en); font-weight: 300; font-size: 3.1cqw; line-height: 1;
  letter-spacing: -.01em;
}
.fact .fv small { font-family: var(--sans); font-size: 1.15cqw; font-weight: 400; letter-spacing: .06em; margin-left: .25cqw; }
.fact .fl { margin-top: .7cqw; font-size: .93cqw; color: var(--ink-2); letter-spacing: .07em; line-height: 1.7; }

/* 課題カード */
.issue { border-left: 2px solid var(--green); padding: .1cqw 0 .1cqw 1.3cqw; }
.issue .in { font-family: var(--en); font-size: .85cqw; color: var(--green); letter-spacing: .18em; }
.issue h4 { margin: .45cqw 0 .5cqw; font-size: 1.32cqw; letter-spacing: .05em; font-weight: 500; }
.issue p { margin: 0; font-size: .95cqw; line-height: 1.9; color: var(--ink-2); font-weight: 300; }

/* 写真 */
.ph { position: relative; overflow: hidden; background: var(--paper-2); }
.ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ph.mono img { filter: grayscale(1) contrast(1.05); }
.cap {
  margin-top: .6cqw;
  font-size: .78cqw; color: var(--ink-4); letter-spacing: .06em; line-height: 1.7;
}

/* 半面ブリード写真 */
.bleed-right { position: absolute; top: 0; right: 0; bottom: 0; width: 44%; }
.bleed-right img { width: 100%; height: 100%; object-fit: cover; }
.bleed-left { position: absolute; top: 0; left: 0; bottom: 0; width: 44%; }
.bleed-left img { width: 100%; height: 100%; object-fit: cover; }
.bleed-bottom { position: absolute; left: 0; right: 0; bottom: 0; height: 38%; }
.bleed-bottom img { width: 100%; height: 100%; object-fit: cover; }

/* ============================ 図解パーツ ============================ */
/* 縦フロー */
.flow { display: flex; flex-direction: column; gap: 0; }
.flow-node {
  border: 1px solid var(--line);
  background: #fff;
  padding: .72cqw 1.1cqw;
  font-size: 1.0cqw;
  letter-spacing: .06em;
  text-align: center;
}
.flow-node.on { border-color: var(--green); background: var(--green-pale); color: var(--green); font-weight: 500; }
.flow-node.dead { border-color: var(--ink-4); color: var(--ink-3); border-style: dashed; }
.flow-arrow { height: 1.5cqw; position: relative; }
.flow-arrow::before {
  content: ""; position: absolute; left: 50%; top: 0; bottom: .35cqw;
  width: 1px; background: var(--ink-4); transform: translateX(-.5px);
}
.flow-arrow::after {
  content: ""; position: absolute; left: 50%; bottom: 0;
  width: .42cqw; height: .42cqw; border-right: 1px solid var(--ink-4); border-bottom: 1px solid var(--ink-4);
  transform: translateX(-50%) rotate(45deg);
}
.flow-arrow.g::before { background: var(--green-2); }
.flow-arrow.g::after { border-color: var(--green-2); }

.journey { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 3.6cqw; padding-top: 2.2cqw; }
.jcol { display: flex; flex-direction: column; }
.jhead { display: flex; align-items: baseline; gap: .9cqw; margin-bottom: 1.4cqw; }
.jhead .jt { font-family: var(--mincho); font-size: 1.7cqw; letter-spacing: .1em; font-weight: 500; }
.jhead .jl { font-family: var(--en); font-size: .82cqw; letter-spacing: .2em; color: var(--ink-4); }
.jcol.after .jhead .jt { color: var(--green); }
.jbody { position: relative; padding-left: 2.4cqw; }
.jcol.before .jbody { padding-left: 0; padding-right: 2.4cqw; }
/* 再来園のループ線 */
.loop {
  position: absolute; left: 0; top: 1.4cqw; bottom: 1.4cqw; width: 1.7cqw;
  border: 1px solid var(--green-2); border-right: none;
  border-radius: .9cqw 0 0 .9cqw;
}
.loop::after {
  content: ""; position: absolute; right: -.05cqw; top: -.22cqw;
  width: .42cqw; height: .42cqw;
  border-top: 1px solid var(--green-2); border-right: 1px solid var(--green-2);
  transform: rotate(45deg);
}
.loop-label {
  position: absolute; left: -.35cqw; top: 50%;
  transform: translateY(-50%) rotate(180deg);
  writing-mode: vertical-rl;
  font-size: .88cqw; letter-spacing: .18em; color: var(--green-2);
  background: var(--paper); padding: .4cqw 0;
}
.verdict {
  margin-top: 1.5cqw; padding: .9cqw 1.1cqw;
  font-size: 1.0cqw; letter-spacing: .06em; line-height: 1.8;
}
.verdict.bad { background: var(--paper-2); color: var(--ink-2); }
.verdict.good { background: var(--green); color: #fff; }

/* 横フロー（矢印つなぎ） */
.hflow { display: flex; align-items: stretch; gap: 0; }
.hnode {
  flex: 1; border: 1px solid var(--line); background: #fff;
  padding: 1.0cqw .8cqw; text-align: center;
  display: flex; flex-direction: column; justify-content: center; gap: .4cqw;
}
.hnode .hn { font-family: var(--en); font-size: .78cqw; letter-spacing: .18em; color: var(--ink-4); }
.hnode .ht { font-size: 1.08cqw; letter-spacing: .07em; font-weight: 500; }
.hnode .hd { font-size: .84cqw; color: var(--ink-2); line-height: 1.7; font-weight: 300; }
.hnode.on { background: var(--green); border-color: var(--green); color: #fff; }
.hnode.on .hn { color: rgba(255,255,255,.6); }
.hnode.on .hd { color: rgba(255,255,255,.82); }
.harrow { flex: 0 0 1.9cqw; position: relative; }
.harrow::before {
  content: ""; position: absolute; top: 50%; left: .3cqw; right: .5cqw; height: 1px; background: var(--ink-4);
}
.harrow::after {
  content: ""; position: absolute; top: 50%; right: .35cqw;
  width: .38cqw; height: .38cqw; border-top: 1px solid var(--ink-4); border-right: 1px solid var(--ink-4);
  transform: translateY(-50%) rotate(45deg);
}

/* 4段階（見る→楽しむ→持ち帰る→共有する） */
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6cqw; }
.step { border-top: 1px solid var(--line); padding-top: 1.0cqw; }
.step .sn {
  font-family: var(--en); font-size: .82cqw; letter-spacing: .2em; color: var(--ink-4);
  display: block; margin-bottom: .7cqw;
}
.step h5 {
  margin: 0 0 .6cqw; font-family: var(--mincho); font-size: 1.62cqw; letter-spacing: .1em; font-weight: 500;
}
.step p { margin: 0; font-size: .88cqw; line-height: 1.85; color: var(--ink-2); font-weight: 300; }
.step.hi { border-top-color: var(--green); border-top-width: 2px; }
.step.hi h5 { color: var(--green); }

/* ターゲットカード */
.tcard { display: flex; flex-direction: column; }
.tcard .ph { aspect-ratio: 4 / 3; }
.tcard .tno {
  font-family: var(--en); font-size: .82cqw; letter-spacing: .2em; color: var(--green);
  margin: .9cqw 0 .4cqw;
}
.tcard h4 { margin: 0 0 .15cqw; font-size: 1.38cqw; letter-spacing: .06em; font-weight: 500; }
.tcard .tsub { font-size: .82cqw; color: var(--ink-3); letter-spacing: .04em; }
.tcard ul { list-style: none; margin: .85cqw 0 0; padding: 0; }
.tcard li {
  font-size: .88cqw; line-height: 1.55; color: var(--ink-2); font-weight: 300;
  padding: .34cqw 0 .34cqw 1.0cqw; border-top: 1px solid var(--line-2); position: relative;
}
.tcard li:first-child { border-top: none; }
.tcard li::before {
  content: ""; position: absolute; left: 0; top: .82cqw; width: .38cqw; height: 1px; background: var(--green-2);
}
.tcard .tfreq {
  margin-top: .85cqw; padding-top: .6cqw; border-top: 1px solid var(--line);
  font-size: .84cqw; color: var(--green); letter-spacing: .06em;
}
.tcard .tfreq b { font-family: var(--en); font-size: 1.05cqw; font-weight: 500; }

/* 年間カレンダー（12ヶ月） */
.cal { flex: 1; display: flex; flex-direction: column; padding-top: 2.0cqw; }
.cal-seasons { display: grid; grid-template-columns: repeat(12, 1fr); }
.cal-seasons div {
  grid-column: span 3; padding: .42cqw 0; text-align: center;
  font-size: .92cqw; letter-spacing: .3em; color: #fff; font-weight: 500;
}
.cal-seasons .s-spring { background: var(--spring); }
.cal-seasons .s-summer { background: var(--summer); }
.cal-seasons .s-autumn { background: var(--autumn); }
.cal-seasons .s-winter { background: var(--winter); }
.cal-grid { display: grid; grid-template-columns: repeat(12, 1fr); border-left: 1px solid var(--line); }
.cal-cell { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: .5cqw .42cqw; }
.cal-grid .cal-row-h .cal-cell { background: var(--paper-2); }
.cal-m {
  font-family: var(--en); font-size: 1.05cqw; text-align: center; padding: .5cqw 0;
  border-right: 1px solid var(--line); border-bottom: 1px solid var(--ink);
  letter-spacing: .04em;
}
.cal-m span { font-size: .68cqw; color: var(--ink-3); letter-spacing: .1em; display: block; }
.cal-plant { font-size: .8cqw; line-height: 1.6; letter-spacing: .01em; min-height: 4.0cqw; }
.cal-act { font-size: .8cqw; line-height: 1.6; color: var(--green); min-height: 5.6cqw; font-weight: 500; }
.cal-act .ex { color: var(--ink-3); font-weight: 400; display: block; }
.cal-rowlabel {
  display: grid; grid-template-columns: repeat(12, 1fr);
}
.cal-side {
  position: absolute; left: 1.5cqw; font-size: .8cqw; letter-spacing: .14em; color: var(--ink-3);
  writing-mode: vertical-rl;
}
.cal-legend { display: flex; gap: 1.6cqw; margin-top: 1.1cqw; align-items: center; }
.cal-legend span { font-size: .82cqw; color: var(--ink-3); letter-spacing: .06em; display: flex; align-items: center; gap: .45cqw; }
.cal-legend i { width: .8cqw; height: .8cqw; display: inline-block; }
.cal-legend i.now { background: var(--green-pale); border: 1px solid var(--green); }
.cal-legend i.new { background: var(--green); }

/* 表 */
.tbl { width: 100%; border-collapse: collapse; }
.tbl th, .tbl td { text-align: left; padding: .68cqw .8cqw; border-bottom: 1px solid var(--line); vertical-align: top; }
.tbl thead th {
  font-size: .84cqw; letter-spacing: .14em; color: var(--ink-3); font-weight: 400;
  border-bottom: 1px solid var(--ink); text-transform: uppercase; font-family: var(--sans);
}
.tbl td { font-size: .95cqw; line-height: 1.7; }
.tbl td.k { font-weight: 500; letter-spacing: .05em; }
.tbl td.num { font-family: var(--en); font-size: 1.02cqw; letter-spacing: .02em; }
.tbl td.goal { color: var(--green); font-weight: 500; }
.tbl tbody tr:nth-child(even) { background: rgba(0,0,0,.014); }
.tbl .sub { display: block; font-size: .78cqw; color: var(--ink-3); margin-top: .18cqw; font-weight: 400; }

/* ロードマップ */
.rm { flex: 1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; padding-top: 2.2cqw; }
.rm-col { border-left: 1px solid var(--line); padding: 0 1.7cqw; display: flex; flex-direction: column; }
.rm-col:first-child { border-left: none; padding-left: 0; }
.rm-col:last-child { padding-right: 0; }
.rm-phase { font-family: var(--en); font-size: .82cqw; letter-spacing: .22em; color: var(--ink-4); }
.rm-term { font-family: var(--mincho); font-size: 2.0cqw; letter-spacing: .1em; margin: .5cqw 0 .2cqw; font-weight: 500; }
.rm-when { font-size: .86cqw; color: var(--green); letter-spacing: .1em; }
.rm-aim {
  margin: 1.1cqw 0 1.2cqw; padding: .75cqw .9cqw; background: var(--green-pale);
  font-size: .92cqw; line-height: 1.75; color: var(--green); letter-spacing: .04em;
}
.rm-list { list-style: none; margin: 0; padding: 0; }
.rm-list li {
  font-size: .9cqw; line-height: 1.65; color: var(--ink-2); font-weight: 300;
  padding: .48cqw 0 .48cqw 1.1cqw; border-top: 1px solid var(--line-2); position: relative;
}
.rm-list li b { color: var(--ink); font-weight: 500; }
.rm-list li::before {
  content: ""; position: absolute; left: 0; top: .95cqw; width: .42cqw; height: 1px; background: var(--ink-4);
}
.rm-cost {
  margin-top: auto; padding-top: .8cqw; border-top: 1px solid var(--line);
  font-size: .82cqw; color: var(--ink-3); letter-spacing: .05em; line-height: 1.7;
}
.rm-cost b { color: var(--ink-2); font-weight: 500; }

/* スマホモック */
.phone {
  border: 1px solid var(--ink-4); border-radius: 1.4cqw; background: #fff;
  padding: .55cqw; aspect-ratio: 9 / 17; overflow: hidden;
  display: flex; flex-direction: column;
}
.phone .pscreen { flex: 1; border-radius: 1.0cqw; overflow: hidden; background: var(--paper-2); display: flex; flex-direction: column; }
.phone .pbar {
  padding: .45cqw .6cqw; font-size: .68cqw; letter-spacing: .1em; color: var(--ink-3);
  border-bottom: 1px solid var(--line-2); display: flex; justify-content: space-between; align-items: center;
}
.phone .pimg { aspect-ratio: 4/3; overflow: hidden; }
.phone .pimg img { width: 100%; height: 100%; object-fit: cover; }
.phone .pbody { padding: .6cqw; display: flex; flex-direction: column; gap: .4cqw; }
.phone .ptit { font-size: .78cqw; font-weight: 500; letter-spacing: .04em; }
.phone .ptxt { font-size: .66cqw; color: var(--ink-2); line-height: 1.6; }
.phone .pchip {
  display: inline-block; font-size: .62cqw; letter-spacing: .08em; padding: .18cqw .45cqw;
  background: var(--green); color: #fff; border-radius: 1cqw;
}
.phone .pgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .28cqw; padding: .5cqw; }
.phone .pgrid i { aspect-ratio: 1; background: var(--paper-2); border: 1px solid var(--line-2); display: block; }
.phone .pgrid i.got { background: var(--green-pale); border-color: var(--green-2); }

/* 機能カード（デジタル体験） */
.fcard { display: flex; flex-direction: column; }
.fcard .fno {
  font-family: var(--en); font-size: .82cqw; letter-spacing: .2em; color: var(--green); margin-bottom: .55cqw;
}
.fcard h4 { margin: 0 0 .55cqw; font-size: 1.5cqw; letter-spacing: .07em; font-weight: 500; }
.fcard .fdesc { font-size: .9cqw; line-height: 1.9; color: var(--ink-2); font-weight: 300; }
.fcard .flist { list-style: none; margin: .9cqw 0 0; padding: 0; }
.fcard .flist li {
  font-size: .86cqw; line-height: 1.6; padding: .38cqw 0 .38cqw 1.0cqw;
  border-top: 1px solid var(--line-2); position: relative; color: var(--ink-2); font-weight: 300;
}
.fcard .flist li::before {
  content: ""; position: absolute; left: 0; top: .78cqw; width: .38cqw; height: 1px; background: var(--green-2);
}

/* ナイト（暗いページ） */
.page.dark { background: #0e1412; color: #fff; }
.page.dark .phead { border-bottom-color: rgba(255,255,255,.2); }
.page.dark .phead .ptitle { color: #fff; }
.page.dark .phead .pnum { color: #8fc0a9; }
.page.dark .phead .peng { color: rgba(255,255,255,.42); }
.page.dark .statement { color: #fff; }
.page.dark .statement em { color: #9ed3b7; }
.page.dark .lead { color: rgba(255,255,255,.72); }
.page.dark .note { color: rgba(255,255,255,.48); }
.page.dark .eyebrow { color: rgba(255,255,255,.45); }
.page.dark .cap { color: rgba(255,255,255,.4); }
.night-img { filter: brightness(.4) saturate(.55) contrast(1.15) hue-rotate(-8deg); }
.night-item { border-top: 1px solid rgba(255,255,255,.22); padding-top: .85cqw; }
.night-item .nl { font-family: var(--en); font-size: .78cqw; letter-spacing: .2em; color: rgba(255,255,255,.42); }
.night-item h5 { margin: .45cqw 0 .4cqw; font-size: 1.28cqw; letter-spacing: .08em; font-weight: 500; }
.night-item p { margin: 0; font-size: .84cqw; line-height: 1.8; color: rgba(255,255,255,.62); font-weight: 300; }

/* グッズ */
.goods { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5cqw; }
.good {
  border: 1px solid var(--line); padding: 1.0cqw; display: flex; flex-direction: column; gap: .5cqw;
  background: #fff;
}
.good .gi { height: 3.0cqw; display: flex; align-items: center; justify-content: center; }
.good .gi svg { height: 100%; width: auto; }
.good h5 { margin: 0; font-size: 1.05cqw; letter-spacing: .06em; font-weight: 500; }
.good p { margin: 0; font-size: .8cqw; line-height: 1.7; color: var(--ink-2); font-weight: 300; }
.good .gp { margin-top: auto; font-family: var(--en); font-size: .84cqw; color: var(--green); letter-spacing: .06em; }

/* 地域回遊マップ */
.map-wrap { flex: 1; display: grid; grid-template-columns: 1.25fr 1fr; gap: 3.0cqw; padding-top: 2.2cqw; }
.map-fig { position: relative; }
.map-fig svg { width: 100%; height: auto; display: block; }
.spot-list { list-style: none; margin: 0; padding: 0; }
.spot-list li {
  display: flex; gap: .9cqw; align-items: baseline;
  padding: .58cqw 0; border-bottom: 1px solid var(--line-2);
}
.spot-list .sn { font-family: var(--en); font-size: .8cqw; color: var(--green); width: 1.6cqw; flex: 0 0 auto; }
.spot-list .st { font-size: .98cqw; letter-spacing: .05em; }
.spot-list .sd { margin-left: auto; font-size: .8cqw; color: var(--ink-3); font-family: var(--en); }

/* IP */
.ip-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.4cqw; }
.ip-card { border: 1px solid var(--line); padding: .95cqw 1.0cqw; background: #fff; }
.ip-card .ipl { font-family: var(--en); font-size: .74cqw; letter-spacing: .18em; color: var(--ink-4); }
.ip-card h5 { margin: .35cqw 0 .35cqw; font-size: 1.05cqw; letter-spacing: .05em; font-weight: 500; }
.ip-card p { margin: 0; font-size: .8cqw; line-height: 1.7; color: var(--ink-2); font-weight: 300; }
.disclaimer {
  margin-top: 1.1cqw; padding: .7cqw .9cqw; border: 1px dashed var(--ink-4);
  font-size: .8cqw; line-height: 1.75; color: var(--ink-3); letter-spacing: .03em;
}

/* SNS */
.sns-grid { flex: 1; display: grid; grid-template-columns: 1fr 1.35fr; gap: 3.0cqw; padding-top: 2.2cqw; }
.post-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.0cqw; }
.post {
  border: 1px solid var(--line); background: #fff; padding: .8cqw .9cqw;
  display: flex; flex-direction: column; gap: .35cqw;
}
.post .pk { font-family: var(--en); font-size: .72cqw; letter-spacing: .18em; color: var(--green); }
.post .pq { font-family: var(--mincho); font-size: 1.12cqw; letter-spacing: .04em; line-height: 1.5; }
.post .pr { font-size: .78cqw; color: var(--ink-3); line-height: 1.65; }

/* KPI */
.kpi-head { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.8cqw; margin-bottom: 1.6cqw; }
.kpi-h { border-top: 2px solid var(--green); padding-top: .8cqw; }
.kpi-h .kl { font-size: .86cqw; letter-spacing: .1em; color: var(--ink-2); }
.kpi-h .kv { font-family: var(--en); font-weight: 300; font-size: 2.0cqw; margin-top: .35cqw; color: var(--green); }
.kpi-h .kv small { font-family: var(--sans); font-size: .9cqw; letter-spacing: .05em; }

/* 体制図 */
.org { flex: 1; display: flex; flex-direction: column; gap: 1.2cqw; padding-top: 2.2cqw; }
.org-row { display: grid; gap: 1.4cqw; }
.org-box {
  border: 1px solid var(--line); background: #fff; padding: .85cqw 1.0cqw; text-align: center;
}
.org-box .ol { font-family: var(--en); font-size: .72cqw; letter-spacing: .18em; color: var(--ink-4); }
.org-box h5 { margin: .3cqw 0 .3cqw; font-size: 1.08cqw; letter-spacing: .05em; font-weight: 500; }
.org-box p { margin: 0; font-size: .8cqw; line-height: 1.65; color: var(--ink-2); font-weight: 300; }
.org-box.core { background: var(--green); border-color: var(--green); color: #fff; }
.org-box.core .ol { color: rgba(255,255,255,.55); }
.org-box.core p { color: rgba(255,255,255,.8); }

/* 財源カード */
.fund { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5cqw; }
.fund-card { border-top: 1px solid var(--line); padding-top: .85cqw; }
.fund-card .fk { font-family: var(--en); font-size: .76cqw; letter-spacing: .18em; color: var(--ink-4); }
.fund-card h5 { margin: .4cqw 0 .4cqw; font-size: 1.1cqw; letter-spacing: .05em; font-weight: 500; }
.fund-card p { margin: 0; font-size: .82cqw; line-height: 1.75; color: var(--ink-2); font-weight: 300; }

/* 最終ページ */
.closing { position: relative; }
.closing .cimg { position: absolute; inset: 0; }
.closing .cimg img { width: 100%; height: 100%; object-fit: cover; filter: brightness(.42) saturate(.7); }
.closing .cbody {
  position: absolute; inset: 0; padding: 5.6cqw 7.5cqw;
  display: flex; flex-direction: column; justify-content: center; color: #fff;
}
.closing .cbody .statement { font-size: 2.85cqw; font-weight: 200; }
.closing .cbody .sig { margin-top: 3.2cqw; padding-top: 1.4cqw; border-top: 1px solid rgba(255,255,255,.3); }
.closing .cbody .sig .sname { font-family: var(--mincho); font-size: 1.5cqw; letter-spacing: .16em; }
.closing .cbody .sig .srole { font-size: .9cqw; color: rgba(255,255,255,.62); letter-spacing: .1em; margin-top: .5cqw; }

/* クレジット */
.credit-grid { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 3.0cqw; padding-top: 2.2cqw; }
.credit-list { list-style: none; margin: 0; padding: 0; }
.credit-list li {
  font-size: .78cqw; line-height: 1.7; color: var(--ink-2); padding: .3cqw 0;
  border-bottom: 1px solid var(--line-2); font-weight: 300;
}
.credit-list li b { font-weight: 500; color: var(--ink); }

/* ============================ 画面UI（印刷では非表示） ============================ */
.topbar {
  position: fixed; top: 0; left: 0; right: 0; height: 52px; z-index: 50;
  background: rgba(252,252,250,.92); backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
  display: flex; align-items: center; gap: 18px; padding: 0 20px;
}
.topbar .tb-title { font-size: 12px; letter-spacing: .14em; color: var(--ink-2); }
.topbar .tb-title b { font-weight: 500; color: var(--ink); }
.topbar .tb-right { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.topbar .tb-pos { font-family: var(--en); font-size: 11px; letter-spacing: .1em; color: var(--ink-3); }
.btn {
  font-family: var(--sans); font-size: 11px; letter-spacing: .1em;
  padding: 7px 14px; border: 1px solid var(--ink); background: transparent; color: var(--ink);
  cursor: pointer; border-radius: 2px;
}
.btn:hover { background: var(--ink); color: #fff; }
.btn.primary { background: var(--green); border-color: var(--green); color: #fff; }
.btn.primary:hover { background: var(--green-2); }

.progress { position: fixed; top: 52px; left: 0; height: 2px; background: var(--green); z-index: 51; width: 0; }

.print-hint {
  max-width: var(--page-max); margin: 0 auto; padding: 0 16px 40px;
  font-size: 12px; line-height: 1.9; color: var(--ink-2); letter-spacing: .03em;
}
.print-hint b { color: var(--ink); }

.reveal { opacity: 0; transform: translateY(14px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in { opacity: 1; transform: none; }

@media (max-width: 900px) {
  .sheet { padding: 68px 8px 60px; gap: 12px; }
  .topbar { gap: 10px; padding: 0 12px; }
  .topbar .tb-title { font-size: 10px; }
}

/* ============================================================
   ページ個別パーツ（後追いレイヤー）
   ============================================================ */

/* P05 「4回」の階段 */
.stair { margin-top: 1.0cqw; display: flex; flex-direction: column; gap: .42cqw; }
.stair-row { display: flex; align-items: center; gap: .8cqw; }
.stair-row .sr-n {
  flex: 0 0 4.6cqw; font-size: .88cqw; letter-spacing: .06em; color: var(--ink-2);
}
.stair-row .sr-bar {
  height: 1.5cqw; background: var(--ink-4); position: relative; display: block;
}
.stair-row .sr-v {
  margin-left: auto; font-family: var(--en); font-size: .92cqw; color: var(--ink-2); letter-spacing: .02em;
}
.stair-row.hit .sr-bar { background: var(--ink); }
.stair-row.hit .sr-n, .stair-row.hit .sr-v { color: var(--ink); font-weight: 500; }
.stair-row.pass { margin-top: .5cqw; padding-top: .6cqw; border-top: 1px solid var(--line); }
.stair-row.pass .sr-n { color: var(--green); font-weight: 500; }
.stair-row.pass .sr-v { color: var(--green); font-weight: 500; }
.stair-row .sr-bar.full {
  flex: 1; background: var(--green); color: #fff; height: auto;
  padding: .42cqw .8cqw; font-size: .86cqw; letter-spacing: .08em;
}

/* P05 3つの効果 */
.effects { margin-top: auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5cqw; padding-top: 1.6cqw; }
.effect { border-top: 1px solid var(--line); padding-top: .8cqw; }
.effect .en { font-family: var(--en); font-size: .74cqw; letter-spacing: .18em; color: var(--ink-4); }
.effect h5 { margin: .4cqw 0 .35cqw; font-size: 1.05cqw; letter-spacing: .05em; font-weight: 500; }
.effect p { margin: 0; font-size: .8cqw; line-height: 1.7; color: var(--ink-2); font-weight: 300; }

/* P06 4段階のはしご */
.ladder { margin-top: auto; padding-top: 1.8cqw; display: flex; flex-direction: column; }
.lad {
  display: flex; gap: 1.1cqw; align-items: flex-start;
  padding: .78cqw 0; border-top: 1px solid var(--line);
}
.lad .ln { font-family: var(--en); font-size: .82cqw; letter-spacing: .16em; color: var(--ink-4); padding-top: .28cqw; }
.lad h5 {
  margin: 0 0 .2cqw; font-family: var(--mincho); font-size: 1.42cqw;
  letter-spacing: .14em; font-weight: 500;
}
.lad p { margin: 0; font-size: .86cqw; line-height: 1.75; color: var(--ink-2); font-weight: 300; }
.lad.hi { border-top-color: var(--green); }
.lad.hi h5 { color: var(--green); }
.lad.hi .ln { color: var(--green-2); }

/* P09 端境期カード */
.gapcard { border-top: 2px solid var(--ink); padding-top: .95cqw; display: flex; flex-direction: column; }
.gapcard .gm {
  font-family: var(--en); font-weight: 300; font-size: 2.4cqw; line-height: 1; letter-spacing: -.01em;
}
.gapcard .gt { font-size: .84cqw; letter-spacing: .2em; color: var(--ink-3); margin-top: .35cqw; }
.gapcard h5 {
  margin: .9cqw 0 .9cqw; font-family: var(--mincho); font-size: 1.42cqw;
  letter-spacing: .08em; font-weight: 500; color: var(--green);
}
.gapcard .grow {
  display: flex; gap: .85cqw; padding: .5cqw 0; border-top: 1px solid var(--line-2);
}
.gapcard .grow span {
  flex: 0 0 4.2cqw; font-size: .78cqw; letter-spacing: .1em; color: var(--ink-3); padding-top: .1cqw;
}
.gapcard .grow p { margin: 0; font-size: .84cqw; line-height: 1.7; color: var(--ink-2); font-weight: 300; }

/* P11 実装の考え方（全幅バー） */
.realsolution {
  margin-top: 1.6cqw; display: flex; gap: 1.4cqw; align-items: flex-start;
  background: var(--green-pale); padding: .95cqw 1.2cqw;
}
.realsolution .rl {
  flex: 0 0 8cqw; font-size: .84cqw; letter-spacing: .12em; color: var(--green); font-weight: 500;
}
.realsolution p { margin: 0; font-size: .88cqw; line-height: 1.85; color: var(--ink-2); font-weight: 300; }
.realsolution p b { color: var(--green); font-weight: 500; }

/* P12 ナイトの制約・既存実績 */
.nightrule {
  margin-top: 2.0cqw; padding: .9cqw 1.1cqw; border: 1px solid rgba(255,255,255,.24);
}
.nightrule .nrl {
  font-size: .84cqw; letter-spacing: .12em; color: #9ed3b7; display: block; margin-bottom: .45cqw;
}
.nightrule p { margin: 0; font-size: .84cqw; line-height: 1.85; color: rgba(255,255,255,.7); font-weight: 300; }
.assetnote { margin-top: auto; padding-top: 1.2cqw; border-top: 1px solid rgba(255,255,255,.2); }
.assetnote .al {
  font-family: var(--en); font-size: .76cqw; letter-spacing: .2em; color: rgba(255,255,255,.42);
  display: block; margin-bottom: .45cqw;
}
.assetnote p { margin: 0; font-size: .86cqw; line-height: 1.85; color: rgba(255,255,255,.72); font-weight: 300; }
.assetnote p b { color: #fff; font-weight: 500; }

/* P13 グッズの原則 */
.ruleitem { border-top: 1px solid var(--line); padding-top: .85cqw; }
.ruleitem h5 { margin: 0 0 .45cqw; font-size: 1.12cqw; letter-spacing: .05em; font-weight: 500; }
.ruleitem p { margin: 0; font-size: .86cqw; line-height: 1.8; color: var(--ink-2); font-weight: 300; }

/* P14 打ち手リスト */
.actlist { margin-top: .7cqw; display: flex; flex-direction: column; }
.act {
  display: grid; grid-template-columns: 1.8cqw 1fr; gap: 0 .8cqw;
  padding: .6cqw 0; border-top: 1px solid var(--line-2);
}
.act b { font-family: var(--en); font-size: .8cqw; color: var(--green); font-weight: 500; grid-row: span 2; padding-top: .12cqw; }
.act span { font-size: .95cqw; letter-spacing: .04em; font-weight: 500; }
.act p { margin: .2cqw 0 0; font-size: .8cqw; line-height: 1.7; color: var(--ink-2); font-weight: 300; }

/* P15 運用メモ */
.opnote {
  margin-top: auto; padding-top: 1.4cqw; display: grid; grid-template-columns: 1fr 1fr; gap: 1.8cqw;
}
.opnote .ol {
  font-size: .82cqw; letter-spacing: .12em; color: var(--green); display: block; margin-bottom: .4cqw; font-weight: 500;
}
.opnote p { margin: 0; font-size: .84cqw; line-height: 1.8; color: var(--ink-2); font-weight: 300; }
.opnote p b { color: var(--ink); font-weight: 500; }

/* P20 本資料について */
.closing-note {
  margin-top: 1.6cqw; padding: .9cqw 1.1cqw; background: var(--paper-2);
}
.closing-note .cnl { font-size: .82cqw; letter-spacing: .12em; color: var(--green); display: block; margin-bottom: .4cqw; font-weight: 500; }
.closing-note p { margin: 0; font-size: .8cqw; line-height: 1.85; color: var(--ink-2); font-weight: 300; }

/* ============================================================
   レイアウト微調整レイヤー（A4横1ページを使い切るための後勝ち調整）
   ============================================================ */

/* 表紙：写真の明るい部分に文字が乗っても読めるようにする */
.cover .scrim {
  background:
    linear-gradient(180deg,
      rgba(8,12,10,.58) 0%,
      rgba(8,12,10,.06) 26%,
      rgba(8,12,10,.34) 48%,
      rgba(6,10,8,.88) 84%,
      rgba(6,10,8,.94) 100%);
}
.cover h1, .cover .csub, .cover .cmark, .cover .cmeta {
  text-shadow: 0 1px 14px rgba(0,0,0,.5);
}

/* P04 ジャーニー：フロー上部＋結論を下端に */
.jbody { flex: 1; display: flex; flex-direction: column; padding-left: 0; padding-right: 0; }
.jcol.before .jbody { padding-right: 0; }
.jflow { position: relative; padding-left: 2.4cqw; }
.jcol.before .jflow { padding-left: 0; padding-right: 2.4cqw; }
.jbody .verdict { margin-top: auto; }
/* 「再来園」ラベルは縦組みのまま自然に読める向きに */
.loop-label {
  position: absolute; left: -.28cqw; top: 50%;
  transform: translateY(-50%);
  writing-mode: vertical-rl; text-orientation: upright;
  font-size: .86cqw; letter-spacing: .1em; color: var(--green-2);
  background: var(--paper); padding: .5cqw .1cqw;
}

/* P05 「4回」の壁 */
.p05-body { flex: 1; }
.p05-body > .stack { height: 100%; }
.p05-photo { margin-top: auto; }
.stair-row .sr-v { white-space: nowrap; flex: 0 0 auto; }
.stair-row .sr-bar { flex: 0 0 auto; }

/* P07 ターゲット：カード下端に「提供する体験」を揃える */
.tcard .tfreq { margin-top: auto; padding-top: .8cqw; }

/* P08 年間カレンダー：行を伸ばしてページを使い切る */
.cal-grid.g-months { flex: 0 0 auto; }
.cal-grid.g-plant { flex: 1.05; }
.cal-grid.g-act { flex: 1.55; }
.cal-cell { display: flex; }
.cal-plant, .cal-act { min-height: 0; }
.cal-plant { font-size: .88cqw; line-height: 1.75; }
.cal-act { font-size: .86cqw; line-height: 1.75; }
.cal-legend i { display: none; }
.cal-legend { margin-top: 1.3cqw; }

/* P09 端境期：成立条件を下端に */
.gapcard .grow.last { margin-top: auto; border-top: 1px solid var(--line); }

/* P10 IP：メカニズム図を下端に */
.p10-mech { margin-top: auto; }
.hnode { padding: 1.3cqw .8cqw; }

/* P11 デジタル：図鑑タイルの塗りを見えるように */
.phone .pgrid i.got { background: #dbe7e0; border-color: var(--green-2); }
.phone .pgrid { flex: 0 0 auto; }
.phone .pscreen > .pbody:last-child { margin-top: auto; }

/* P13 グッズ：原則ブロックを下端に */
.p13-rule { margin-top: auto; }
.good { padding: 1.2cqw 1.1cqw; }
.good .gi { height: 3.8cqw; }

/* P14 地域回遊 */
.map-wrap { grid-template-columns: 1.4fr 1fr; }
.map-fig { display: flex; flex-direction: column; }
.map-fig svg { margin-top: .4cqw; }
.map-fig .cap { margin-top: auto; padding-top: .8cqw; }

/* P15 SNS */
.sns-grid .post { padding: 1.05cqw 1.1cqw; }
.sns-grid .post-list { gap: 1.15cqw; }
.p15-phone { margin-top: auto; }

/* ============================================================
   仕上げ調整レイヤー 2
   ============================================================ */

/* 表紙：明るいガラス面に文字が乗る帯をしっかり沈める */
.cover .scrim {
  background:
    linear-gradient(180deg,
      rgba(8,12,10,.55) 0%,
      rgba(8,12,10,.04) 22%,
      rgba(8,12,10,.28) 40%,
      rgba(6,10,8,.72) 57%,
      rgba(6,10,8,.90) 78%,
      rgba(6,10,8,.94) 100%);
}
.cover .crule { margin: 1.6cqw 0 1.2cqw; }

/* P04：フロー自体を大きくして、結論との間の空きを詰める */
.jbody { padding-left: 0; padding-right: 0; }
.jcol.after .jbody { padding-left: 2.4cqw; }
.jcol.before .jbody { padding-right: 2.4cqw; }
.jflow { position: relative; padding-left: 0; padding-right: 0; }
.jcol.before .jflow { padding-left: 0; padding-right: 0; }
.loop { left: -2.05cqw; }
.flow-node { padding: .95cqw 1.1cqw; }
.flow-arrow { height: 1.95cqw; }

/* P05：階段グラフを大きくして左右の高さを揃える */
.stair { gap: .62cqw; }
.stair-row .sr-bar { height: 2.15cqw; }
.stair-row .sr-n { font-size: .95cqw; }
.stair-row .sr-v { font-size: 1.0cqw; }
.stair-row .sr-bar.full { padding: .62cqw .85cqw; font-size: .9cqw; }
.p05-photo { aspect-ratio: 16 / 9 !important; }

/* P08：行ラベルを付け、3段（植物／施策／ターゲット）で組む */
.cal-rowlab {
  font-size: .8cqw; letter-spacing: .16em; color: var(--ink-3);
  padding: .55cqw 0 .3cqw;
}
.cal-grid.g-plant { flex: .78; }
.cal-grid.g-act { flex: 1.22; }
.cal-grid.g-target { flex: .5; }
.cal-target { font-size: .82cqw; line-height: 1.7; color: var(--ink-2); }

/* P14：地図＋近隣（上段）／打ち手3本（下段）の2段組み */
.map-wrap { flex: 0 1 auto; grid-template-columns: 1.55fr 1fr; }
.map-fig svg { max-height: 42cqw; align-self: flex-start; }
.p14-action { margin-top: auto; padding-top: 1.6cqw; border-top: 1px solid var(--line); }
.p14-action .body-3col { flex: 0 0 auto; }
.p14-action .ruleitem h5 { font-size: 1.05cqw; }

/* P11：スマホモックの中身は上から詰める（P15の余白バグ回避） */
.phone .pscreen > .pbody:last-child { margin-top: 0; }

/* P13：ラインアップを2段8点に */
.goods { grid-template-columns: repeat(4, 1fr); gap: 1.2cqw; }
.good { padding: 1.0cqw 1.0cqw; }
.good .gi { height: 3.0cqw; }
.good h5 { font-size: 1.0cqw; }
.good p { font-size: .78cqw; }
.good .gp { font-size: .78cqw; }
.p13-rule .ruleitem h5 { font-size: 1.05cqw; }

/* P15：チャネルの役割分担 */
.chlist { margin-top: .7cqw; }
.ch {
  display: grid; grid-template-columns: 7.4cqw 1fr; gap: .8cqw;
  padding: .5cqw 0; border-top: 1px solid var(--line-2);
}
.ch span { font-family: var(--en); font-size: .84cqw; letter-spacing: .04em; color: var(--green); font-weight: 500; }
.ch p { margin: 0; font-size: .8cqw; line-height: 1.7; color: var(--ink-2); font-weight: 300; }

/* P11：測れるようになるもの */
.p11-measure { margin-top: auto; padding-top: 1.6cqw; border-top: 1px solid var(--line); }
.p11-measure .ruleitem { border-top: none; padding-top: 0; }
.p11-measure .ruleitem h5 { font-size: 1.05cqw; }
.p11-measure .ruleitem p { font-size: .82cqw; }
.realsolution { margin-top: 1.4cqw; }

/* P18：体制図の3段をページ内に均等配置 */
.org { justify-content: space-between; }

/* P19：最終ページの可読性（写真の上の文字） */
.closing .cimg img { filter: brightness(.33) saturate(.62); }
.closing .cbody .statement,
.closing .cbody .lead,
.closing .cbody .sig .sname { text-shadow: 0 1px 16px rgba(0,0,0,.55); }
.closing .cbody .lead { color: rgba(255,255,255,.88) !important; }

/* P05：階段グラフのバーは可変トラック内で伸縮させる（A4実寸でのはみ出し対策） */
.stair-row { gap: .9cqw; }
.stair-row .sr-track { flex: 1 1 auto; min-width: 0; display: block; }
.stair-row .sr-bar { display: block; height: 2.15cqw; background: var(--ink-4); }
.stair-row.hit .sr-bar { background: var(--ink); }
.stair-row .sr-bar.full {
  width: 100%; background: var(--green); color: #fff; height: auto;
  padding: .62cqw .85cqw; font-size: .9cqw; letter-spacing: .08em; box-sizing: border-box;
}
.stair-row .sr-v { flex: 0 0 auto; text-align: right; }

/* P11：A4実寸で下端に収める */
.p11-measure { padding-top: 1.25cqw; }
.p11-measure .ruleitem p { font-size: .8cqw; line-height: 1.7; }
.realsolution { margin-top: 1.15cqw; padding: .85cqw 1.1cqw; }
.realsolution p { font-size: .84cqw; line-height: 1.78; }

/* P11：あと数px分の詰め（A4実寸で確実に収める） */
.p11-measure { padding-top: 1.0cqw; }
.p11-measure .ruleitem h5 { margin-bottom: .3cqw; font-size: 1.0cqw; }
.realsolution { margin-top: .95cqw; padding: .75cqw 1.05cqw; }
.realsolution p { font-size: .82cqw; line-height: 1.72; }

/* P02：導入文の折り返しを整え、ページ下部に前提メモを置く */
.toc-intro .statement { font-size: 2.15cqw; line-height: 1.62; }
.toc-intro .lead { font-size: 1.06cqw; line-height: 2.0; }
.toc-note {
  margin-top: auto; padding-top: 1.1cqw; border-top: 1px solid var(--line);
}
.toc-note .tnl { font-size: .82cqw; letter-spacing: .12em; color: var(--green); font-weight: 500; }
.toc-note p { margin: .45cqw 0 0; font-size: .82cqw; line-height: 1.8; color: var(--ink-3); font-weight: 300; }
.toc-intro { display: flex; flex-direction: column; }

/* P19：写真の上の文章を確実に読ませる */
.closing .cscrim {
  position: absolute; inset: 0;
  background: linear-gradient(100deg, rgba(6,10,8,.72) 0%, rgba(6,10,8,.55) 46%, rgba(6,10,8,.18) 78%, rgba(6,10,8,.10) 100%);
}
.closing .cbody { z-index: 2; }
.closing .cbody .lead { max-width: 46cqw; }
.closing .cbody .sig { max-width: 46cqw; }
