/* japan-growth-strategy-analysis.html 専用。
   このファイル単体では使わない。HTMLと同じ assets/ に置くこと。 */

/* ===== 1. @font-face（Space Grotesk / data: URI で同梱）とベーススタイル ===== */
@font-face {
  font-family: "Space Grotesk";
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(data:font/woff2;base64,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)
    format("woff2");
} /* --- 根拠バッジ（出典区分）と根拠資料 --- */
.sec-head {
  flex-wrap: wrap;
}
.sec-head .srcbadges {
  flex-basis: 100%;
  order: 10;
  margin-top: 10px;
}
.srcbadges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.sb {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.08em;
  border: 1px solid;
  border-radius: 999px;
  padding: 4px 11px;
  white-space: nowrap;
  text-decoration: none;
  cursor: help;
  line-height: 1.55;
}
.sb::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  flex: none;
}
.sb em {
  font-style: normal;
  font-weight: 500;
  opacity: 0.8;
  letter-spacing: 0.03em;
}
/* 出典の5分類は「種類」なので色相で分けるが、紙面の主役は弁柄と墨。
   ここは彩度を落として脇に置く。 */
.sb--gov {
  color: #3c5a48;
  border-color: #bcc9c1;
  background: #eef2ef;
}
.sb--doc {
  color: #3f5568;
  border-color: #c0c9d1;
  background: #eef1f4;
}
.sb--ext {
  color: #544a67;
  border-color: #c6c0d0;
  background: #f1eff5;
}
.sb--org {
  color: #6a5238;
  border-color: #d2c5b3;
  background: #f6f1ea;
}
.sb--own {
  color: #6b3b4c;
  border-color: #cfb8c0;
  background: #f6eef1;
}
.sb:hover {
  filter: brightness(0.965);
}
.srcnote {
  border-top: 1px solid var(--rule);
  margin: 32px 0 0;
  padding-top: 15px;
}
details.srcnote {
  border-top: 1px solid var(--rule);
  margin: 32px 0 0;
  padding-top: 0;
}
details.srcnote > summary {
  cursor: pointer;
  list-style: none;
  padding: 13px 0 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.2em;
  color: var(--muted);
}
details.srcnote > summary::-webkit-details-marker {
  display: none;
}
details.srcnote > summary::before {
  content: "＋";
  font: 500 12px var(--grotesk);
  color: var(--rule-2);
  width: 12px;
}
details.srcnote[open] > summary::before {
  content: "−";
}
details.srcnote > summary:hover {
  color: var(--green-deep);
}
details.srcnote[open] > summary {
  color: var(--muted-2);
}
details.srcnote > ul {
  padding-bottom: 16px;
}
.srcnote ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 6px;
}
.srcnote li {
  font-size: 12px;
  line-height: 1.9;
  color: var(--muted-2);
  padding-left: 15px;
  position: relative;
}
.srcnote li::before {
  content: "・";
  position: absolute;
  left: 0;
  color: var(--rule-2);
}
.srcnote li b {
  color: var(--ink);
  font-weight: 700;
}
.srcnote a {
  color: var(--green-deep);
  text-decoration: none;
  font: 700 12px var(--grotesk);
  border: 1px solid var(--green-pale-2);
  border-radius: 3px;
  padding: 1px 5px;
  margin-left: 2px;
  white-space: nowrap;
}
.srcnote a:hover {
  background: var(--green-wash-2);
}
.srcnote li.own {
  color: var(--muted);
  border-top: 1px dashed var(--rule);
  padding-top: 9px;
  margin-top: 4px;
}
.srcnote li.own::before {
  content: "注";
  font: 700 12px var(--grotesk);
  top: 9px;
}
@media (max-width: 760px) {
  .sb {
    font-size: 12px;
    padding: 3px 9px;
  }
  .srcnote li {
    font-size: 12px;
  }
}
@media print {
  .sb {
    background: #fff !important;
  }
  .srcnote {
    page-break-inside: avoid;
  }
}
.viz__note small,
.fignote small {
  display: inline-block;
  margin-top: 5px;
  font-size: 12px;
  line-height: 1.8;
  color: var(--muted);
  font-weight: 400;
}
/* --- 上部タブ ---
   サイドナビの外側に置く全幅のバー。タブを押しても位置が動かないよう、
   margin-left でサイドナビ幅ぶん寄せることはしない。 */
.report-tabs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 12px 56px 11px;
  box-sizing: border-box;
  min-height: var(--topbar-h);
  position: sticky;
  top: 0;
  z-index: 90;
  background: var(--paper);
  border-bottom: 1px solid var(--rule);
  box-shadow: 0 2px 6px rgba(23, 63, 43, 0.05);
}
.report-tabs button {
  font: 700 12px var(--zen);
  letter-spacing: 0.02em;
  padding: 8px 20px;
  border: 1px solid var(--green-pale-2);
  background: #fff;
  color: var(--green-deep);
  cursor: pointer;
  border-radius: 999px;
  line-height: 1.6;
}
.report-tabs button:hover {
  background: var(--green-wash-2);
}
.report-tabs button.active {
  background: var(--chrome);
  color: var(--paper);
  border-color: var(--green-deep);
}
.tab-panel {
  display: none;
}
.tab-panel.active {
  display: block;
}
body.alt-tab .side-nav,
body.alt-tab .nav-toggle {
  display: none !important;
}
body.alt-tab .wrap {
  margin-left: 0;
}
#about h3 {
  margin-top: 30px;
}
#about p {
  color: var(--muted-2);
}
/* サイドナビが出ている幅では、タブの左端をナビの罫（左padding 24px）に揃える。
   ナビが引っ込む1050px以下では本文の左端に揃うので base の56pxのままでよい。 */
@media (min-width: 1051px) {
  .report-tabs {
    padding-left: 24px;
  }
}
@media (max-width: 980px) {
  .report-tabs {
    padding: 10px 28px 9px;
  }
}
@media (max-width: 760px) {
  .report-tabs {
    position: static;
    padding: 10px 16px;
  }
  .report-tabs button {
    font-size: 12px;
    padding: 7px 15px;
  }
}
@media print {
  .report-tabs {
    display: none;
  }
  .tab-panel {
    display: block !important;
  }
}
/* --- FAQ --- */
.faq {
  display: grid;
  gap: 2px;
  border-top: 1px solid var(--rule);
  margin: 20px 0 0;
}
.faq-item {
  border-bottom: 1px solid var(--rule);
  padding: 16px 0;
}
details.faq-item > summary.faq-q {
  margin: 0;
  font-size: 14.5px;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.75;
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding-right: 26px;
  position: relative;
}
details.faq-item > summary.faq-q::-webkit-details-marker {
  display: none;
}
details.faq-item > summary.faq-q::after {
  content: "＋";
  position: absolute;
  right: 0;
  top: 0;
  font: 500 15px var(--grotesk);
  color: var(--rule-2);
}
details.faq-item[open] > summary.faq-q::after {
  content: "−";
  color: var(--green);
}
details.faq-item > summary.faq-q:hover {
  color: var(--green-deep);
}
details.faq-item > .faq-a {
  margin-top: 10px;
}
/* Aboutの署名欄：アイコン＋運営者の一行 */
.byline {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 18px 0 0;
  padding: 16px 0 18px;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.byline__ava {
  flex: none;
  width: 88px;
  height: 88px;
  border-radius: 50%;
  object-fit: cover;
  background: var(--grid);
}
.byline__t {
  min-width: 0;
}
.byline__t > b {
  display: block;
  font-size: 14px;
  color: var(--ink);
}
.byline__t > span {
  display: block;
  margin-top: 4px;
  font-size: 12.5px;
  line-height: 1.95;
  color: var(--muted-2);
}
@media (max-width: 560px) {
  .byline__ava {
    width: 64px;
    height: 64px;
  }
}
/* 汎用アコーディオン：見出しだけ並べ、＋で詳細を開く（A-5・About） */
.accs {
  margin: 18px 0 0;
  border-top: 1px solid var(--rule);
}
details.acc {
  border-bottom: 1px solid var(--rule);
}
details.acc > summary {
  margin: 0;
  padding: 15px 30px 15px 0;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.7;
  cursor: pointer;
  list-style: none;
  position: relative;
}
details.acc > summary::-webkit-details-marker {
  display: none;
}
details.acc > summary::after {
  content: "＋";
  position: absolute;
  right: 2px;
  top: 14px;
  font: 500 15px var(--grotesk);
  color: var(--rule-2);
}
details.acc[open] > summary::after {
  content: "−";
  color: var(--green);
}
details.acc > summary:hover {
  color: var(--green-deep);
}
.acc-b {
  padding: 0 0 18px;
}
.acc-b > p {
  margin: 0 0 10px;
  font-size: 13px;
  line-height: 2.05;
  color: var(--ink-body);
}
.acc-b > p:last-child {
  margin-bottom: 0;
}
.faq-q::before {
  flex: none;
  content: "Q";
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
  background: var(--green-wash-2);
  border-radius: 4px;
  padding: 2px 6px;
  margin-right: 9px;
  vertical-align: 2px;
}
.faq-a {
  margin: 0;
  font-size: 12.5px;
  line-height: 2;
  color: var(--ink-body);
}
.faq-jump {
  display: inline-block;
  margin-left: 8px;
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
  text-decoration: none;
  border: 1px solid var(--green-pale-2);
  border-radius: 3px;
  padding: 1px 7px;
  white-space: nowrap;
}
.faq-jump:hover {
  background: var(--green-wash-2);
}
.footer__meta {
  font-size: 12px;
  line-height: 2;
  opacity: 0.75;
  margin: 14px 0 10px;
}
#tbl-investment {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  margin: 14px 0;
}
#tbl-investment th[scope="col"] {
  background: var(--chrome);
  color: var(--paper);
  font: 700 12px var(--zen);
  text-align: left;
  padding: 9px 12px;
  white-space: nowrap;
}
#tbl-investment td,
#tbl-investment th[scope="row"] {
  padding: 8px 12px;
  border-bottom: 1px solid var(--rule);
  text-align: left;
  font-weight: 400;
  color: var(--ink-body);
}
#tbl-investment th[scope="row"] {
  font-weight: 700;
  color: var(--ink);
}
#tbl-investment tfoot th,
#tbl-investment tfoot td {
  border-top: 2px solid var(--green-deep);
  border-bottom: none;
  font-weight: 700;
  color: var(--green-deep);
}

/* ===== 2. 本体スタイル（レイアウト・タイポグラフィ・各セクション） ===== */
:root {
  color-scheme: light;
  /* 上部タブバーの高さ。サイドナビの開始位置と section の
     scroll-margin-top がこの値に追随する。 */
  --topbar-h: 61px;
  --paper: #f9f8f5;
  --panel: #fdfcfa;
  --ink: #1a1916;
  --ink-body: #33312c;
  --ink-body-2: #4c4a44;
  --muted: #8f8b82;
  --muted-2: #6b6860;
  --rule: #dcd9d1;
  --rule-2: #c8c4ba;
  --grid: #eceae4;
  /* 肯定・充足の側は墨で組む。変数名は参照箇所が多いため据え置き、値だけ差し替える。 */
  --green: #35322c;
  --green-deep: #201e1a;
  --green-pale: #c8c4ba;
  --green-pale-2: #b3aea3;
  --marker: #dedbd4;
  /* 懸念・未達・欠落の側＝弁柄。紙面で色がつくのはここだけにする。 */
  --quit: #a8522f;
  --quit-pale: #e6cdba;
  --zen: "Zen Kaku Gothic New", "Hiragino Sans", "Noto Sans JP", "Yu Gothic", sans-serif;
  --grotesk: "Space Grotesk", ui-monospace, monospace;
  --step-3: #201e1a;
  --step-2: #4a463d;
  --step-1: #9d988e;
  /* chrome＝意味を持たない装飾（タブ・表ヘッダ・番号バッジ・節アイコン）。
     色は「データの意味」だけに使い、装飾は墨で組む。 */
  --chrome: #201e1a;
  --chrome-2: #35322c;
}
/* 760px以下ではタブバーを sticky にしていない（縦幅を優先）。
   天井に貼りつくものが無いので、逃げも 0 にする。 */
@media (max-width: 760px) {
  :root {
    --topbar-h: 0px;
  }
}
* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--zen);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-size: 15px;
  line-height: 2.1;
}
a {
  color: var(--green);
}
a:hover {
  color: var(--green-deep);
}
::selection {
  background: var(--marker);
}
.mono {
  font-family: var(--grotesk);
}
.rule-strong {
  margin: 0 56px;
  height: 1px;
  background: var(--ink);
}
.toc {
  padding: 56px 56px 64px;
  border-bottom: 1px solid var(--rule);
}
.toc__label {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.2em;
  color: var(--green);
  margin-bottom: 26px;
}
.toc ol {
  margin: 0;
  padding: 0;
  list-style: none;
  columns: 2;
  column-gap: 56px;
}
.toc li {
  margin: 0.15em 0;
  break-inside: avoid;
  font-size: 13.5px;
  line-height: 2.2;
}
.toc li a {
  text-decoration: none;
  color: var(--ink-body);
}
.toc li a:hover {
  color: var(--green);
}
.toc li .n {
  font: 700 12px var(--grotesk);
  color: var(--green-pale);
  margin-right: 10px;
  letter-spacing: 0.06em;
}
.toc .grp {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.2em;
  color: var(--muted);
  margin-top: 26px;
  line-height: 2.6;
}
.toc .grp:first-child {
  margin-top: 0;
}
@media (max-width: 820px) {
  .toc ol {
    columns: 1;
  }
}
.wrap {
  max-width: none;
}
section {
  padding: 64px 56px;
  border-bottom: 1px solid var(--rule);
  scroll-margin-top: 64px;
}
section > * {
  max-width: 960px;
}
.side-nav {
  position: fixed;
  left: 0;
  top: var(--topbar-h);
  bottom: 0;
  width: 272px;
  padding: 24px 18px 40px 24px;
  overflow-y: auto;
  border-right: 1px solid var(--rule);
  background: rgba(246, 245, 242, 0.97);
  z-index: 8;
}
.side-nav__title {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.2em;
  color: var(--green);
  margin: 0 0 14px;
}
.side-nav a {
  display: block;
  text-decoration: none;
  color: var(--muted-2);
  border-left: 2px solid transparent;
  padding: 5px 8px;
  font-size: 12px;
  line-height: 1.55;
}
.side-nav a.active,
.side-nav a:hover {
  color: var(--green-deep);
  background: rgba(213, 227, 210, 0.34);
  border-left-color: var(--green);
}
.side-nav a.sub {
  font-size: 12px;
  padding-left: 20px;
  color: var(--muted);
}
.side-nav a.sub.active {
  color: var(--green-deep);
}
.hero,
.rule-strong,
.toc,
.wrap {
  margin-left: 272px;
}
.nav-toggle {
  display: none;
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 30;
  border: 1px solid var(--green-deep);
  background: var(--chrome);
  color: var(--paper);
  padding: 10px 13px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
}
@media (max-width: 1050px) {
  .side-nav {
    transform: translateX(-100%);
    transition: transform 0.2s;
  }
  .side-nav.open {
    transform: none;
    box-shadow: 8px 0 24px rgba(0, 0, 0, 0.12);
  }
  .hero,
  .rule-strong,
  .toc,
  .wrap {
    margin-left: 0;
  }
  .nav-toggle {
    display: block;
  }
}
.sec-head {
  display: flex;
  align-items: baseline;
  gap: 20px;
  margin-bottom: 8px;
}
.pageno {
  font: 700 34px var(--grotesk);
  color: var(--rule-2);
  line-height: 1;
  flex: none;
}
h2 {
  margin: 0;
  font-size: 24px;
  font-weight: 700;
  line-height: 1.5;
}
h3 {
  font-size: 15.5px;
  font-weight: 700;
  margin: 48px 0 4px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--rule);
}
h4 {
  font-size: 13.5px;
  font-weight: 700;
  margin: 28px 0 6px;
  color: var(--ink);
}
p {
  margin: 14px 0;
  color: var(--ink-body);
  text-wrap: pretty;
}
/* バッジ（.sb）は nowrap の分割不能な塊。pretty は「最終行がバッジだけ」を避けようと
   直前の文字を道連れに折り返し、行が不自然に短くなるため、バッジを含む段落だけ外す。 */
p:has(.sb) {
  text-wrap: auto;
}
.skip-link {
  position: fixed;
  top: -56px;
  left: 8px;
  z-index: 300;
  padding: 10px 16px;
  background: var(--ink, #1d1d1b);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  transition: top 0.15s;
}
.skip-link:focus {
  top: 8px;
}
.lead {
  margin: 14px 0 0;
  font-size: 14.5px;
  line-height: 2.2;
  color: var(--ink-body-2);
  max-width: 680px;
}
small {
  color: var(--muted);
  font-size: 12px;
  line-height: 2;
}
.key {
  margin: 32px 0 8px;
  padding: 0 0 0 24px;
  border-left: 2px solid var(--green);
  max-width: 960px;
}
/* 先頭の <b> は「KEY MESSAGE」のラベル。本文中の強調に使う <b> まで
   ラベルの見た目にならないよう、first-child に限定する。 */
.key > b:first-child {
  display: block;
  font: 500 12px var(--grotesk);
  letter-spacing: 0.24em;
  color: var(--green);
  margin-bottom: 12px;
}
.key b {
  font-weight: 700;
  color: var(--ink);
}
.key {
  font-size: 16px;
  line-height: 2.05;
  font-weight: 500;
  color: var(--ink);
}
blockquote {
  margin: 22px 0;
  padding: 22px 26px;
  background: var(--panel);
  border: 1px solid var(--rule);
  font-size: 13.5px;
  line-height: 2.15;
  color: var(--ink-body);
  max-width: 960px;
}
.mark {
  background: linear-gradient(transparent 62%, var(--marker) 62%);
} /* 出所バッジ（5分類）の本文・見出し用インライン版 */
.sb--i {
  font-size: 12px;
  letter-spacing: 0.05em;
  padding: 2px 8px;
  gap: 4px;
  vertical-align: 0.16em;
  margin: 0 3px 0 0;
}
.sb--i::before {
  width: 5px;
  height: 5px;
}
h3 .sb--i,
h4 .sb--i,
th .sb--i {
  vertical-align: 0.18em;
}
.sb--i + .sb--i {
  margin-left: -1px;
}
@media (max-width: 760px) {
  .sb--i {
    font-size: 12px;
    padding: 2px 7px;
  }
}
.gapbox {
  border: 1px solid var(--quit-pale);
  border-left: 3px solid var(--quit);
  background: rgba(231, 211, 180, 0.18);
  padding: 22px 26px;
  margin: 32px 0 0;
  max-width: 960px;
}
.gapbox h4 {
  margin: 0 0 10px;
  color: var(--quit);
  font: 500 12px var(--grotesk);
  letter-spacing: 0.18em;
}
.gapbox ul {
  margin: 0;
  padding-left: 1.1em;
}
.gapbox li {
  margin: 6px 0;
  font-size: 13px;
  line-height: 2;
  color: var(--ink-body);
}
.tw {
  overflow-x: auto;
  margin: 26px 0;
  border: 1px solid var(--rule);
  background: var(--panel);
  max-width: none;
}
table {
  border-collapse: collapse;
  width: 100%;
  font-size: 12.5px;
  line-height: 1.95;
  min-width: 560px;
}
td,
th {
  text-align: left;
  padding: 12px 16px;
  border-bottom: 1px solid var(--rule);
  vertical-align: top;
}
th {
  background: var(--paper);
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--muted-2);
  white-space: nowrap;
}
thead th {
  border-bottom: 1px solid var(--rule-2);
}
tbody th {
  font: 700 12px var(--zen);
  letter-spacing: 0;
  color: var(--ink);
  white-space: normal;
}
tbody tr:last-child td {
  border-bottom: none;
}
tbody tr:hover {
  background: rgba(213, 227, 210, 0.22);
}
td {
  color: var(--ink-body);
}
td.num {
  text-align: right;
  font-family: var(--grotesk);
  font-weight: 500;
  white-space: nowrap;
  font-size: 12px;
  color: var(--ink);
}
.na {
  color: var(--muted);
}
td b,
th b {
  color: var(--ink);
}
.chip {
  display: inline-flex;
  align-items: baseline;
  gap: 7px;
  font: 500 12px var(--zen);
  border: 1px solid var(--rule-2);
  padding: 4px 11px;
  border-radius: 2px;
  color: var(--ink-body);
  background: var(--paper);
  white-space: nowrap;
  line-height: 1.8;
}
.chip em {
  font-style: normal;
  font-size: 1.05em;
}
.chip i {
  display: none;
}
.groups {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  margin: 28px 0;
}
.grpcard {
  padding: 24px 26px;
  background: var(--panel);
}
.grpcard h4 {
  margin: 0 0 8px;
  font-size: 14.5px;
}
.grpcard > p {
  font-size: 12.5px;
  line-height: 2.05;
  color: var(--muted-2);
  margin: 0 0 16px;
}
/* ラベルを左に立て、本文を右に流す。flexで組むと、本文側のリンク・強調・
   用語チップ（JSが後から差し込む .gl）がそれぞれ別のflexアイテムになり、
   1行が複数カラムに割れる。ぶら下げインデントなら通常のインライン整形に
   乗るので、本文中に何が入っても崩れない。 */
.grpcard ul {
  margin: 0;
  padding: 0;
  list-style: none;
  --lb-w: 36px;
  --lb-gap: 10px;
}
.grpcard li {
  margin: 8px 0;
  font-size: 12.5px;
  line-height: 1.95;
  color: var(--ink-body);
  padding-left: calc(var(--lb-w) + var(--lb-gap));
  text-indent: calc(-1 * (var(--lb-w) + var(--lb-gap)));
}
.grpcard li > b:first-child {
  display: inline-block;
  min-width: var(--lb-w);
  margin-right: var(--lb-gap);
  text-indent: 0;
  font: 700 12px var(--grotesk);
  color: var(--green);
}
.grpcard > p:last-child b {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--green);
  display: block;
  margin-bottom: 4px;
}
figure {
  margin: 34px 0;
  max-width: 960px;
}
figcaption {
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 6px;
}
.fignote {
  font-size: 12px;
  line-height: 2;
  color: var(--muted);
  margin: 0 0 18px;
  max-width: 720px;
}
/* 図の見方を切り替えるスイッチ。表示は常に1つだけ */
.fswitch {
  display: inline-flex;
  gap: 3px;
  margin: 2px 0 14px;
  padding: 3px;
  background: var(--grid);
  border-radius: 22px;
}
.fsw {
  border: 0;
  background: transparent;
  color: var(--muted-2);
  border-radius: 20px;
  padding: 6px 15px;
  cursor: pointer;
  font: 700 12px var(--zen);
  line-height: 1.4;
  white-space: nowrap;
}
.fsw:hover {
  color: var(--green-deep);
}
.fsw.is-on {
  background: var(--green-deep);
  color: #fff;
}
.fsw:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}
.mm-panel[hidden] {
  display: none;
}
.bars {
  display: flex;
  flex-direction: column;
  gap: 2px;
  border-top: 1px solid var(--rule);
  padding-top: 10px;
}
.bar {
  display: grid;
  grid-template-columns: minmax(130px, 250px) 1fr 92px;
  align-items: center;
  gap: 14px;
  padding: 4px 0;
}
.bar:hover {
  background: rgba(213, 227, 210, 0.25);
}
.bar .lbl {
  font-size: 12px;
  line-height: 1.7;
  color: var(--ink-body);
  text-align: right;
}
.bar .track {
  background: var(--grid);
  height: 13px;
  border-left: 1px solid var(--rule-2);
}
.bar .fill {
  height: 13px;
  background: var(--green);
  border-radius: 0 2px 2px 0;
}
.bar .val {
  font: 700 12px var(--grotesk);
  color: var(--ink);
  text-align: right;
}
@media (max-width: 640px) {
  .bar {
    grid-template-columns: 1fr auto;
    gap: 4px 10px;
  }
  .bar .lbl {
    text-align: left;
    grid-column: 1;
  }
  .bar .val {
    grid-column: 2;
  }
  .bar .track {
    grid-column: 1/-1;
  }
}
.matrix table {
  min-width: 780px;
}
.cell {
  display: block;
  text-align: center;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.08em;
  padding: 5px 2px;
  border-radius: 2px;
}
/* マトリクスの升目用のチップ。クラス名が yes / part / no と一般的すぎて、
   別の場所の <td class="yes"> にも墨色の地だけが乗り、その上から
   .rm-t td.yes の墨色の文字が重なって読めなくなっていた。.cell に限定する。 */
.cell.yes {
  background: var(--step-3);
  color: var(--paper);
}
.cell.part {
  background: var(--step-1);
  color: var(--green-deep);
}
.cell.no {
  background: var(--grid);
  color: var(--muted);
}
.legend {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  align-items: center;
  margin: 18px 0 0;
  font-size: 12px;
  color: var(--muted-2);
}
.legend span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.legend i {
  width: 22px;
  height: 11px;
  display: inline-block;
  border-radius: 2px;
  font-style: normal;
}
.flow {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 10px;
  margin: 28px 0;
  max-width: 900px;
}
.node {
  flex: 1 1 140px;
  min-width: 132px;
  border: 1px solid var(--rule-2);
  background: var(--panel);
  padding: 14px 16px;
}
.node b {
  display: block;
  font: 500 12px var(--grotesk);
  letter-spacing: 0.18em;
  color: var(--green);
  margin-bottom: 6px;
}
.node span {
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.8;
  color: var(--ink);
}
.arrow {
  align-self: center;
  color: var(--rule-2);
  font: 500 13px var(--grotesk);
  flex: none;
}
@media (max-width: 640px) {
  .arrow {
    transform: rotate(90deg);
  }
}
.lanes table {
  min-width: 880px;
}
.lanes td:first-child,
.lanes th:first-child {
  position: sticky;
  left: 0;
  background: var(--panel);
  z-index: 1;
  border-right: 1px solid var(--rule-2);
}
.lanes thead th:first-child {
  background: var(--paper);
}
.cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 56px;
  margin: 8px 0;
}
@media (max-width: 860px) {
  .cols {
    grid-template-columns: 1fr;
    gap: 0;
  }
}
.stack {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(168px, 1fr));
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  margin: 28px 0;
}
.stat {
  padding: 20px 22px;
  background: var(--panel);
}
.stat .k {
  display: block;
  font: 500 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted);
  margin-bottom: 10px;
  line-height: 1.9;
}
.stat .v {
  display: block;
  font: 700 26px var(--grotesk);
  line-height: 1.15;
  color: var(--green-deep);
}
.stat .n {
  display: block;
  font-size: 12px;
  line-height: 1.9;
  color: var(--muted-2);
  margin-top: 8px;
}
ul.plain {
  padding-left: 1.15em;
  margin: 14px 0;
}
ul.plain li {
  margin: 8px 0;
  line-height: 2.1;
  color: var(--ink-body);
}
ul.plain li b {
  color: var(--ink);
}

/* ラベル付きの箇条書き。ラベルを左に立て、本文を右に流す（grpcardの型を枠なしで使う）。
   grpcardと同じ理由で、flexではなくぶら下げインデントで組む */
ul.plain--label {
  padding-left: 0;
  list-style: none;
  --lb-w: 78px;
  --lb-gap: 12px;
}
ul.plain--label li {
  line-height: 1.95;
  padding-left: calc(var(--lb-w) + var(--lb-gap));
  text-indent: calc(-1 * (var(--lb-w) + var(--lb-gap)));
}
ul.plain--label li > b:first-child {
  display: inline-block;
  min-width: var(--lb-w);
  margin-right: var(--lb-gap);
  text-indent: 0;
  font: 700 12px var(--grotesk);
  color: var(--green);
}
@media (max-width: 640px) {
  ul.plain--label li {
    padding-left: 0;
    text-indent: 0;
  }
  ul.plain--label li > b:first-child {
    display: block;
    margin: 0 0 2px;
  }
}

/* 6-1：つなぎ目の番号。円環の図の丸数字と対応させる */
.jn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-right: 7px;
  border-radius: 50%;
  background: var(--chrome);
  color: var(--paper);
  font: 700 12px var(--grotesk);
  vertical-align: -3px;
}
table.rm-t tr.jrow--out > * {
  color: var(--muted);
  background: rgba(236, 234, 228, 0.45);
}
table.rm-t tr.jrow--out .jn {
  background: var(--muted-2);
}
.dl {
  margin: 22px 0;
  border-top: 1px solid var(--rule);
  max-width: 860px;
}
.dl div {
  display: grid;
  grid-template-columns: 210px 1fr;
  gap: 24px;
  padding: 14px 0;
  border-bottom: 1px solid var(--rule);
}
.dl dt {
  margin: 0;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.9;
}
.dl dd {
  margin: 0;
  font-size: 13px;
  line-height: 2.05;
  color: var(--ink-body);
}
@media (max-width: 640px) {
  .dl div {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}
.srclist {
  margin: 22px 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--rule);
  max-width: 860px;
}
.srclist li {
  border-bottom: 1px solid var(--rule);
  padding: 14px 0;
  font-size: 12.5px;
  line-height: 2;
}
.srclist .who {
  font-weight: 700;
  color: var(--ink);
}
.srclist .meta {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--muted);
  margin-left: 10px;
}
.srclist a {
  word-break: break-all;
  font-size: 12px;
}
.tip {
  position: fixed;
  pointer-events: none;
  background: var(--ink);
  color: var(--paper);
  font-size: 12px;
  padding: 7px 11px;
  border-radius: 2px;
  opacity: 0;
  transition: opacity 0.12s;
  z-index: 50;
  max-width: 280px;
  line-height: 1.8;
}
footer {
  background: var(--chrome);
  color: var(--paper);
  padding: 54px 56px;
}
footer .footer__label {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.24em;
  color: var(--green-pale-2);
  margin-bottom: 16px;
}
footer p {
  color: var(--paper);
  font-size: 13.5px;
  line-height: 2.2;
  margin: 0 0 8px;
  max-width: 760px;
}
footer .footer__copy {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.2em;
  color: var(--green-pale-2);
  margin-top: 28px;
}
.viz {
  margin: 34px 0;
  max-width: 960px;
}
.viz__cap {
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 6px;
}
.viz__note {
  font-size: 12px;
  line-height: 2;
  color: var(--muted);
  margin: 0 0 20px;
  max-width: 760px;
}
.viz__foot {
  font-size: 12px;
  line-height: 2;
  color: var(--muted-2);
  margin: 16px 0 0;
  max-width: 760px;
}
.viz__scroll {
  overflow-x: auto;
}
.t0 {
  background: var(--grid);
  color: var(--muted);
}
.t1 {
  background: #d5d2cb;
  color: var(--green-deep);
}
.t2 {
  background: var(--step-1);
  color: var(--green-deep);
}
.t3 {
  background: var(--step-2);
  color: var(--paper);
}
.t4 {
  background: var(--step-3);
  color: var(--paper);
}
.tq {
  background: #f8f0e8;
  color: var(--quit);
  box-shadow: inset 0 0 0 1px var(--quit-pale);
}
/* 7-1 マトリクス第6列：原文の持ち札。評価主体とは別の語彙・別の色にする */
.tgv {
  background: #fff;
  color: var(--green-deep);
  box-shadow: inset 0 0 0 1px var(--green-pale-2);
}
.gv--verd th.gv-own,
.gv--verd td.gv-own {
  border-left: 2px solid var(--green-deep);
  background: var(--green-wash);
}
.lg-sep {
  margin-left: 6px;
  padding-left: 18px;
  border-left: 1px solid var(--rule-2);
}
/* 持ち札の詳細に出す原文引用 */
.vd-q {
  margin: 10px 0;
  padding: 9px 14px;
  border-left: 3px solid var(--green-deep);
  background: var(--panel);
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.vd-q cite {
  display: block;
  margin-top: 4px;
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: var(--muted-2);
}
.lg {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  align-items: center;
  margin: 16px 0 0;
  font-size: 12px;
  color: var(--muted-2);
}
.lg span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.lg i {
  width: 20px;
  height: 10px;
  display: inline-block;
  border-radius: 2px;
  font-style: normal;
  flex: none;
}
.chain {
  display: grid;
  gap: 6px;
  grid-auto-flow: column;
  grid-auto-columns: minmax(112px, 1fr);
  grid-template-rows: auto auto auto;
  align-items: stretch;
  min-width: 800px;
}
.chain__node {
  border: 1px solid var(--rule-2);
  background: var(--panel);
  padding: 11px 12px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.chain__node b {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.14em;
  color: var(--green);
  margin-bottom: 5px;
}
.chain__node span {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.7;
  color: var(--ink);
}
.chain__link {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.06em;
  text-align: center;
  padding: 7px 4px;
  border-radius: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.chain__kpi {
  font-size: 12px;
  line-height: 1.75;
  color: var(--muted-2);
  padding: 8px 10px;
  border-top: 1px solid var(--rule);
  min-height: 66px;
}
.chain__kpi b {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  margin-bottom: 3px;
}
.chain__arrows {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(112px, 1fr);
  gap: 6px;
  min-width: 800px;
  color: var(--rule-2);
  font: 500 12px var(--grotesk);
  text-align: right;
  padding-right: 6px;
}
.dumb {
  display: grid;
  grid-template-columns: minmax(120px, 190px) 1fr 74px;
  gap: 12px;
  align-items: center;
  padding: 7px 0;
  border-bottom: 1px solid var(--rule);
}
.dumb:hover {
  background: rgba(213, 227, 210, 0.25);
}
.dumb .lbl {
  font-size: 12px;
  line-height: 1.7;
  color: var(--ink-body);
  text-align: right;
}
.dumb .rail {
  position: relative;
  height: 20px;
}
.dumb .rail::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 9.5px;
  height: 1px;
  background: var(--grid);
}
.dumb .seg {
  position: absolute;
  top: 9px;
  height: 2px;
  background: var(--step-1);
}
.dumb .m {
  position: absolute;
  top: 4px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  transform: translateX(-50%);
  box-shadow: 0 0 0 2px var(--panel);
}
.dumb .m--mkt {
  background: var(--step-1);
}
.dumb .m--tgt {
  background: var(--green-deep);
}
.dumb .rate {
  font: 700 12px var(--grotesk);
  text-align: right;
  color: var(--ink);
}
.dumb--hi .rate {
  color: var(--quit);
}
.axis-log {
  position: relative;
  height: 20px;
  margin-left: 0;
}
.axis-log i {
  position: absolute;
  top: 0;
  transform: translateX(-50%);
  font: 500 12px var(--grotesk);
  color: var(--muted);
  font-style: normal;
}
.axis-log i::before {
  content: "";
  position: absolute;
  left: 50%;
  top: -8px;
  width: 1px;
  height: 6px;
  background: var(--rule-2);
}
.dumbhead {
  display: grid;
  grid-template-columns: minmax(120px, 190px) 1fr 74px;
  gap: 12px;
  border-bottom: 1px solid var(--rule-2);
  padding-bottom: 4px;
}
.dumbhead div:last-child {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--muted);
  text-align: right;
}
.units {
  display: flex;
  flex-wrap: wrap;
  gap: 20px 26px;
}
.unitgrp__h {
  font-size: 12px;
  line-height: 1.7;
  color: var(--ink-body);
  margin-bottom: 7px;
  white-space: nowrap;
}
.unitgrp__h b {
  font: 700 12px var(--grotesk);
  color: var(--green);
  margin-left: 6px;
}
.unitgrp__cells {
  display: flex;
  gap: 3px;
  flex-wrap: wrap;
  max-width: 132px;
}
.u {
  width: 19px;
  height: 19px;
  border-radius: 2px;
  background: var(--step-2);
}
.u--re {
  background: 0 0;
  box-shadow: inset 0 0 0 1px var(--rule-2);
}
.funnel {
  border-top: 1px solid var(--rule-2);
}
.frow {
  display: grid;
  grid-template-columns: minmax(96px, 120px) 1fr minmax(200px, 1.4fr);
  gap: 16px;
  align-items: center;
  padding: 9px 0;
  border-bottom: 1px solid var(--rule);
}
.frow:hover {
  background: rgba(213, 227, 210, 0.25);
}
.frow .fk {
  font: 700 12px var(--grotesk);
  color: var(--ink);
}
.frow .fb {
  height: 15px;
  border-radius: 2px;
  display: flex;
  align-items: center;
  padding: 0 8px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
}
.frow .fn {
  font-size: 12px;
  line-height: 1.85;
  color: var(--muted-2);
}
@media (max-width: 640px) {
  .frow {
    grid-template-columns: 1fr;
    gap: 3px;
  }
}
.stack-viz {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sv-band {
  border: 1px solid var(--rule-2);
  background: var(--panel);
  padding: 16px 20px;
}
.sv-band--core {
  background: var(--green-deep);
  border-color: var(--green-deep);
  color: var(--paper);
}
.sv-band--core .sv-h {
  color: var(--green-pale-2);
}
.sv-band--core .sv-cells > div {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.22);
  color: var(--paper);
}
.sv-h {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.18em;
  color: var(--green);
  margin-bottom: 10px;
}
.sv-cells {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 6px;
}
.sv-cells > div {
  border: 1px solid var(--rule-2);
  background: var(--paper);
  padding: 9px 12px;
  font-size: 12px;
  line-height: 1.8;
}
.sv-cells > div b {
  display: block;
  font-weight: 700;
  color: inherit;
  margin-bottom: 2px;
}
.sv-cells > div small {
  display: block;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
}
.sv-band--core .sv-cells > div small {
  color: var(--green-pale-2);
}
/* 5-1 CONTESTED 帯：名前だけを並べる（内訳は 5-3） */
.sv-cells--names {
  grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
}
.sv-cells--names > div b {
  margin-bottom: 0;
}
.sv-tie {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: var(--rule-2);
  font: 500 12px var(--grotesk);
  padding: 2px 0;
}
.sv-tie em {
  font-style: normal;
  font-size: 12px;
  letter-spacing: 0.14em;
  color: var(--muted);
}
.sv-band--gap {
  border-style: dashed;
  border-color: var(--quit-pale);
  background: rgba(231, 211, 180, 0.16);
}
.sv-band--gap .sv-h {
  color: var(--quit);
}
.scales {
  display: grid;
  gap: 14px;
}
.scale {
  border: 1px solid var(--rule-2);
  background: var(--panel);
  padding: 16px 20px;
}
.scale__h {
  display: flex;
  gap: 12px;
  align-items: baseline;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.scale__v {
  font: 700 22px var(--grotesk);
  color: var(--green-deep);
}
.scale__k {
  font-size: 12px;
  font-weight: 700;
  color: var(--ink);
}
.scale__m {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.12em;
  color: var(--muted);
}
.scale__track {
  height: 12px;
  background: var(--grid);
  border-left: 1px solid var(--rule-2);
}
.scale__fill {
  height: 12px;
  background: var(--step-2);
  border-radius: 0 2px 2px 0;
}
.scale__ax {
  display: flex;
  justify-content: space-between;
  font: 500 12px var(--grotesk);
  color: var(--muted);
  margin-top: 5px;
}
.slope {
  display: flex;
  gap: 8px;
  align-items: stretch;
  justify-content: center;
}
.slope svg {
  overflow: visible;
}
.slope text {
  font-family: var(--grotesk);
  font-size: 12px;
  fill: var(--muted);
}
.slope .sv-lab {
  font-family: var(--zen);
  font-size: 12px;
  fill: var(--ink-body);
  font-weight: 700;
}
.slope .sv-val {
  font-family: var(--grotesk);
  font-size: 12px;
  fill: var(--ink);
  font-weight: 700;
}
.gv {
  border-collapse: collapse;
  width: 100%;
  font-size: 12px;
  min-width: 600px;
}
.gv td,
.gv th {
  border: 1px solid var(--paper);
  padding: 0;
  vertical-align: middle;
}
.gv thead th {
  background: 0 0;
  border: none;
  padding: 0 6px 8px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.08em;
  color: var(--muted-2);
  text-align: center;
  white-space: normal;
  line-height: 1.6;
}
.gv tbody th {
  background: 0 0;
  border: none;
  padding: 4px 12px 4px 0;
  text-align: left;
  font: 700 12px var(--zen);
  color: var(--ink);
  white-space: normal;
  line-height: 1.7;
  letter-spacing: 0;
}
.gv tbody th small {
  display: block;
  font-weight: 400;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}
.gv .c {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  border-radius: 2px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
  padding: 4px 6px;
  text-align: center;
  line-height: 1.5;
}
.fmap {
  border: 1px solid var(--rule-2);
  background: var(--panel);
  padding: 0;
  position: relative;
  min-width: 700px;
}
.fmap__axis-x,
.fmap__axis-y {
  position: absolute;
  font: 500 12px var(--grotesk);
  letter-spacing: 0.14em;
  color: var(--muted);
}
.fmap__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-bottom: 1px solid var(--rule);
}
.fmap__row:last-child {
  border-bottom: none;
}
.fmap__q {
  padding: 18px 20px;
  border-right: 1px solid var(--rule);
}
.fmap__q:last-child {
  border-right: none;
}
.fmap__q h5 {
  margin: 0 0 4px;
  font-size: 12px;
  font-weight: 700;
  color: var(--ink);
}
.fmap__q p {
  margin: 0 0 12px;
  font-size: 12px;
  line-height: 1.8;
  color: var(--muted);
}
.fmap__items {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.fmap__items span {
  border: 1px solid var(--rule-2);
  background: var(--paper);
  border-radius: 2px;
  padding: 4px 9px;
  font-size: 12px;
  line-height: 1.7;
  white-space: nowrap;
}
.tl {
  min-width: 820px;
}
.tl__head {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px;
  margin-bottom: 8px;
}
.tl__head div {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--muted-2);
  text-align: center;
  padding: 7px 4px;
  background: var(--grid);
  border-radius: 2px;
}
.tl__body {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px;
}
.tl__lane {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-height: 56px;
}
.tl__item {
  border: 1px solid var(--rule-2);
  background: var(--panel);
  border-left: 3px solid var(--step-2);
  padding: 8px 10px;
  font-size: 12px;
  line-height: 1.7;
}
.tl__item b {
  display: block;
  font-weight: 700;
  color: var(--ink);
}
.tl__item small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}
.tl__item--span {
  border-left-color: var(--step-1);
}
.quad {
  position: relative;
  border: 1px solid var(--rule-2);
  background: var(--panel);
  aspect-ratio: 1.5/1;
  min-height: 280px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  max-width: 660px;
}
.quad__c {
  padding: 20px 22px;
  border-right: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.quad__c:nth-child(2),
.quad__c:nth-child(4) {
  border-right: none;
}
.quad__c:nth-child(3),
.quad__c:nth-child(4) {
  border-bottom: none;
}
.quad__c b {
  display: block;
  font-size: 12px;
  font-weight: 700;
  margin-bottom: 6px;
  color: var(--ink);
}
.quad__c p {
  margin: 0;
  font-size: 12px;
  line-height: 1.85;
  color: var(--muted-2);
}
.quad__empty {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.quad__empty span {
  background: rgba(231, 211, 180, 0.9);
  border: 1px dashed var(--quit);
  color: var(--quit);
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  padding: 9px 16px;
  border-radius: 2px;
  text-align: center;
  line-height: 1.9;
}
.quad-wrap {
  display: flex;
  gap: 12px;
  align-items: stretch;
}
.quad-ylab {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font: 500 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 0;
}
.quad-xlab {
  display: flex;
  justify-content: space-between;
  font: 500 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted);
  max-width: 660px;
  margin-top: 8px;
  margin-left: 22px;
}
/* 4-3 波及仮説：5段と、その段が制度で担保されていない理由を1枚に収める。
   以前は「弱い接続4点」のカード群と「5段の階段図」が別々に置かれていて、
   どの指摘がどの段の話なのかを読み手が突き合わせる必要があった。
   段の隣に理由を置き、左の縦線で「起点だけ実線、あとは破線」を示す。 */
.relay {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
}
.relay__s {
  display: grid;
  grid-template-columns: 196px 104px minmax(0, 1fr);
  gap: 6px 16px;
  align-items: start;
  padding: 15px 0 16px 20px;
  border-left: 2px dashed var(--quit-pale);
}
.relay__s--fixed {
  border-left: 2px solid var(--ink);
}
.relay__s + .relay__s {
  border-top: 1px solid var(--rule);
}
.relay__k {
  position: relative;
}
.relay__k em {
  position: absolute;
  left: -33px;
  top: 1px;
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: #fff;
  background: var(--rule-2);
  border-radius: 50%;
  width: 17px;
  height: 17px;
  display: grid;
  place-items: center;
}
.relay__s--fixed .relay__k em {
  background: var(--ink);
}
.relay__k b {
  display: block;
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--ink);
}
.relay__k small {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  line-height: 1.65;
  color: var(--muted);
}
.relay__st .c {
  display: inline-block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.08em;
  padding: 4px 9px;
  border-radius: 2px;
  white-space: nowrap;
}
.relay__w {
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
@media (max-width: 900px) {
  .relay__s {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }
  .relay__st .c {
    display: inline-block;
  }
}
.facing {
  display: grid;
  grid-template-columns: 1fr 34px 1fr;
  gap: 0;
  align-items: stretch;
}
.facing__col {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.facing__h {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.18em;
  margin-bottom: 6px;
}
.facing__h--a {
  color: var(--green);
}
.facing__h--b {
  color: var(--quit);
}
.facing__i {
  border: 1px solid var(--rule-2);
  background: var(--panel);
  padding: 10px 13px;
  font-size: 12px;
  line-height: 1.75;
  flex: 1;
  display: flex;
  align-items: center;
}
.facing__i--b {
  border-color: var(--quit-pale);
  background: rgba(231, 211, 180, 0.16);
}
.facing__mid {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.facing__link {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--rule-2);
  font: 500 12px var(--grotesk);
}
@media (max-width: 720px) {
  .facing {
    grid-template-columns: 1fr;
  }
  .facing__mid {
    display: none;
  }
  .facing__i--b {
    text-align: left;
  }
  .facing__h--b {
    text-align: left;
    margin-top: 18px;
  }
}
details.fold {
  border: 1px solid var(--rule);
  background: var(--panel);
  margin: 0 0 -1px;
}
details.fold > summary {
  cursor: pointer;
  list-style: none;
  padding: 13px 18px;
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ink);
}
details.fold > summary::-webkit-details-marker {
  display: none;
}
details.fold > summary::after {
  content: "＋";
  margin-left: auto;
  font: 500 13px var(--grotesk);
  color: var(--muted);
}
details.fold[open] > summary::after {
  content: "−";
}
details.fold > summary:hover {
  background: rgba(213, 227, 210, 0.25);
}
details.fold .cnt {
  font: 700 12px var(--grotesk);
  color: var(--green);
  letter-spacing: 0.06em;
}
details.fold .tw {
  margin: 0;
  border-left: none;
  border-right: none;
  border-bottom: none;
}
@media (max-width: 900px) {
  .toc,
  footer,
  section {
    padding-left: 28px;
    padding-right: 28px;
  }
  .rule-strong {
    margin: 0 28px;
  }
}
:root {
  --ink-body: #252d29;
  --ink-body-2: #34413a;
  --muted: #56645d;
  --muted-2: #46554d;
  --rule: #cfd7d1;
  --rule-2: #aebbb2;
  --grid: #e3e9e4;
  --green: #35322c;
  --green-deep: #201e1a;
  --green-bright: #55504a;
  --green-wash: #eeece7;
  --green-wash-2: #e2dfd8;
}
body {
  background: #f7f8f5;
}
section:nth-of-type(2n) {
  background: rgba(232, 240, 234, 0.18);
}
.viz__cap,
figcaption,
h2,
h3,
h4 {
  color: var(--ink);
}
h2 {
  font-size: 26px;
  letter-spacing: 0.01em;
}
h3 {
  font-size: 17px;
  border-bottom: 2px solid var(--rule-2);
}
h4 {
  font-size: 14.5px;
}
.fignote,
.grpcard > p,
.side-nav a.sub,
.srclist .meta,
.stat .k,
.stat .n,
.viz__foot,
.viz__note,
small {
  color: var(--muted);
}
.pageno {
  color: var(--green-bright);
  opacity: 0.72;
}
.toc .grp {
  color: var(--muted-2);
}
.sec-head {
  align-items: center;
  gap: 14px;
}
.sec-icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  color: var(--paper);
  background: var(--chrome);
  box-shadow: 0 8px 18px rgba(26, 25, 22, 0.16);
}
.sec-icon svg {
  width: 22px;
  height: 22px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.key {
  padding: 22px 26px;
  border: 1px solid var(--green-pale-2);
  border-left: 5px solid var(--green);
  background: linear-gradient(135deg, var(--green-wash), rgba(255, 255, 255, 0.76));
  border-radius: 0 10px 10px 0;
}
.key > b:first-child {
  color: var(--green-deep);
}
th {
  color: var(--ink);
  background: var(--grid);
}
.grpcard,
.node,
.scale,
.stat,
.sv-band {
  box-shadow: 0 7px 22px rgba(23, 63, 43, 0.055);
}
.bar {
  padding: 7px 0;
}
.bar .track {
  height: 16px;
  border-radius: 0 8px 8px 0;
  overflow: hidden;
}
.bar .fill {
  height: 16px;
  background: linear-gradient(90deg, var(--green-bright), var(--green-deep));
}
.bar .val {
  color: var(--green-deep);
  font-size: 12.5px;
}
.viz {
  padding: 26px;
  border: 1px solid var(--rule);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.66);
  box-shadow: 0 12px 30px rgba(26, 25, 22, 0.055);
}
.engine--dark {
  margin: 0 -26px 20px;
  padding: 24px 26px 26px;
  border-radius: 0;
  background:
    radial-gradient(720px 380px at 78% -10%, rgba(120, 114, 102, 0.3), transparent 62%),
    linear-gradient(158deg, #16150f 0%, #201e1a 58%, #2b2822 100%);
}
@media (max-width: 900px) {
  .engine--dark {
    margin: 0 -14px 16px;
    padding: 18px 14px;
  }
}
.purpose-orbit {
  position: relative;
  height: 520px;
  max-width: 720px;
  margin: 32px auto 42px;
  border-radius: 50%;
  background: radial-gradient(
    circle at center,
    rgba(47, 107, 75, 0.12) 0 18%,
    transparent 18.3% 38%,
    rgba(47, 107, 75, 0.08) 38.3% 38.8%,
    transparent 39% 100%
  );
}
.orbit-core {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background: var(--green-deep);
  color: #fff;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 17px;
  box-shadow: 0 16px 36px rgba(23, 63, 43, 0.24);
  z-index: 2;
}
.orbit-core b {
  font: 700 27px var(--grotesk);
  line-height: 1;
}
.orbit-core span {
  font-size: 12px;
  margin-top: 8px;
  line-height: 1.5;
}
.orbit-node {
  position: absolute;
  width: 184px;
  min-height: 96px;
  padding: 13px 14px;
  border-radius: 10px;
  border: 1px solid var(--green-pale-2);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 12px 26px rgba(23, 63, 43, 0.09);
}
.orbit-node b {
  display: block;
  color: var(--green-deep);
  font-size: 12px;
  margin-bottom: 5px;
}
.orbit-node span {
  display: block;
  font-size: 12px;
  line-height: 1.65;
  color: var(--ink-body-2);
}
.orbit-node i {
  position: absolute;
  right: 11px;
  top: 10px;
  font: 700 18px var(--grotesk);
  color: var(--green-pale-2);
  font-style: normal;
}
.orbit-node.n1 {
  left: 50%;
  top: 2%;
  transform: translateX(-50%);
}
.orbit-node.n2 {
  right: 1%;
  top: 50%;
  transform: translateY(-50%);
}
.orbit-node.n3 {
  right: 8%;
  bottom: 2%;
}
.orbit-node.n4 {
  left: 8%;
  bottom: 2%;
}
.orbit-node.n5 {
  left: 1%;
  top: 50%;
  transform: translateY(-50%);
}
.scenario-chart {
  display: grid;
  grid-template-columns: 140px 1fr 90px;
  gap: 10px 16px;
  align-items: center;
}
.scenario-chart .sc-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--green-deep);
  text-align: right;
}
.scenario-chart .sc-track {
  height: 28px;
  background: var(--green-wash);
  border-radius: 4px;
  overflow: hidden;
}
.scenario-chart .sc-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--green-pale-2), var(--green-deep));
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding-right: 10px;
  color: #fff;
  font: 700 12px var(--grotesk);
}
.scenario-chart .sc-value {
  font: 700 13px var(--grotesk);
  color: var(--green-deep);
}
.donut-row {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 28px;
  align-items: center;
}
.donut {
  width: 210px;
  height: 210px;
  border-radius: 50%;
  position: relative;
  display: grid;
  place-items: center;
}
.donut::after {
  content: "";
  width: 116px;
  height: 116px;
  border-radius: 50%;
  background: #fff;
  position: absolute;
}
.donut-center {
  position: relative;
  z-index: 1;
  text-align: center;
  color: var(--green-deep);
}
.donut-center b {
  display: block;
  font: 700 25px var(--grotesk);
}
.donut-center span {
  font-size: 12px;
}
.source-ref {
  margin: 34px 0 0;
  padding: 11px 15px;
  border-top: 1px dashed var(--green-pale-2);
  color: var(--muted-2);
  font-size: 12px;
  line-height: 1.8;
  max-width: 960px;
}
.source-ref b {
  color: var(--green-deep);
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  margin-right: 8px;
}
.source-id {
  display: inline-flex;
  min-width: 38px;
  justify-content: center;
  margin: 2px 3px;
  padding: 2px 6px;
  border: 1px solid var(--green-pale-2);
  border-radius: 10px;
  background: var(--green-wash);
  color: var(--green-deep);
  text-decoration: none;
  font: 700 12px var(--grotesk);
}
.source-ledger td:first-child {
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
  white-space: nowrap;
}
.source-ledger .used {
  color: var(--green);
  font-weight: 700;
}
@media (max-width: 760px) {
  .purpose-orbit {
    height: auto;
    border-radius: 14px;
    background: var(--green-wash);
    padding: 18px;
    display: grid;
    gap: 10px;
  }
  .orbit-core,
  .orbit-node {
    position: static;
    transform: none !important;
    width: auto;
    height: auto;
    min-height: 0;
    border-radius: 10px;
  }
  .orbit-core {
    padding: 18px;
  }
  .scenario-chart {
    grid-template-columns: 1fr 70px;
  }
  .scenario-chart .sc-label {
    text-align: left;
    grid-column: 1;
  }
  .scenario-chart .sc-track {
    grid-column: 1/-1;
  }
  .scenario-chart .sc-value {
    grid-column: 2;
    grid-row: 1;
  }
  .donut-row {
    grid-template-columns: 1fr;
  }
  .donut {
    margin: auto;
  }
  .viz {
    padding: 18px 14px;
  }
  .sec-icon {
    width: 38px;
    height: 38px;
  }
  .sec-icon svg {
    width: 19px;
    height: 19px;
  }
}
/* ================= V3 DYNAMIC LAYER (2026-08-01) ================= */
:root {
  /* 5つの群は「種類」なので色相で分ける。ただし紙面の主役は墨と弁柄なので、
     彩度は落として階級を一段下げている。彩度だけで詰めると g3 と g4 が
     ΔE00 で 4.7 まで近づき小さい点では判別できなくなるため、明度も
     階段状にずらして最小 15 前後を確保している。 */
  --g1: #3f5a75;
  --g1-mid: #8697a8;
  --g1-wash: #eef0f3;
  --g2: #8a5238;
  --g2-mid: #b59282;
  --g2-wash: #f4efed;
  --g3: #3f6147;
  --g3-mid: #869b8b;
  --g3-wash: #eef1ee;
  --g4: #79a09c;
  --g4-mid: #abc3c1;
  --g4-wash: #f3f6f6;
  --g5: #6d5f8b;
  --g5-mid: #a39ab6;
  --g5-wash: #f2f1f5;
  --amber: #a8522f;
  --amber-deep: #8a4126;
  --amber-wash: #f8f0e8;
}
/* --- reading progress + back to top --- */
#progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  width: 0;
  background: linear-gradient(90deg, var(--green-bright), var(--green-deep));
  z-index: 95;
}
#totop {
  position: fixed;
  right: 16px;
  bottom: 66px;
  z-index: 30;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid var(--green-deep);
  background: rgba(23, 63, 43, 0.93);
  color: #f2f4ef;
  font: 700 15px var(--grotesk);
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transform: translateY(8px);
  transition:
    opacity 0.25s,
    transform 0.25s;
  box-shadow: 0 8px 20px rgba(23, 63, 43, 0.3);
}
#totop.show {
  opacity: 1;
  pointer-events: auto;
  transform: none;
}
#totop:hover {
  background: var(--chrome-2);
}
@media (min-width: 1051px) {
  #totop {
    bottom: 20px;
  }
}
/* --- 上部タブバーぶんの逃げ ---
   目次の小見出しリンクは h3 を直接指すので、節と同じ逃げを持たせないと
   バーの裏に潜り込む（JS経由の移動はJS側でも同じ量をずらしている）。 */
section,
.wrap h3[id] {
  scroll-margin-top: calc(var(--topbar-h) + 18px);
}
.side-nav {
  top: var(--topbar-h);
  padding-top: 20px;
}
.side-nav__brand {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.24em;
  color: var(--green-deep);
  margin: 0 0 5px;
}
.side-nav__doc {
  font-size: 12px;
  color: var(--muted);
  line-height: 1.75;
  margin: 0 0 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--rule);
}
.side-nav .nav-grp {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted);
  margin: 18px 0 4px;
  line-height: 1.6;
}
.side-nav .nav-grp:first-of-type {
  margin-top: 0;
}
.side-nav a {
  display: flex;
  align-items: flex-start;
  gap: 7px;
}
.side-nav a .nv-ico {
  flex: none;
  width: 13px;
  height: 13px;
  margin-top: 2px;
  opacity: 0.75;
}
.side-nav a .nv-ico svg {
  width: 13px;
  height: 13px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
  display: block;
}
/* --- section heads: icon chip + kicker + big page number --- */
.sec-head {
  align-items: center;
  gap: 16px;
  margin-bottom: 12px;
}
.sec-ttl {
  flex: 1;
  min-width: 0;
}
.sec-kicker {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.22em;
  color: var(--muted);
  margin-bottom: 5px;
}
.sec-head .pageno {
  margin-left: auto;
  order: 9;
  font-size: 42px;
  background: linear-gradient(180deg, var(--green-bright), var(--green-deep));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  opacity: 0.5;
}
.sec-icon {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: linear-gradient(140deg, var(--green), var(--green-deep));
  box-shadow: 0 10px 22px rgba(23, 63, 43, 0.22);
}
.sec-icon svg {
  width: 23px;
  height: 23px;
}
/* --- rhythm marks --- */
section h3::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  background: var(--chrome-2);
  transform: rotate(45deg);
  margin-right: 10px;
  vertical-align: 1px;
}
#contact h3::before {
  background: linear-gradient(135deg, #8fc3a3, #4d8c68);
}
.gapbox h4::before {
  content: "⚠ ";
  font: inherit;
}
/* --- tables: zebra + row accents --- */
table:not(.gv) tbody tr:nth-child(even) {
  background: rgba(232, 240, 234, 0.34);
}
table:not(.gv) tbody tr:hover {
  background: rgba(213, 227, 210, 0.3);
}
tr.g1 > td:first-child,
tr.g1 > th:first-child {
  box-shadow: inset 3px 0 0 var(--g1);
}
tr.g2 > td:first-child,
tr.g2 > th:first-child {
  box-shadow: inset 3px 0 0 var(--g2);
}
tr.g3 > td:first-child,
tr.g3 > th:first-child {
  box-shadow: inset 3px 0 0 var(--g3);
}
tr.g4 > td:first-child,
tr.g4 > th:first-child {
  box-shadow: inset 3px 0 0 var(--g4);
}
tr.g5 > td:first-child,
tr.g5 > th:first-child {
  box-shadow: inset 3px 0 0 var(--g5);
}
/* --- group colored chips / waffle / folds --- */
.chip.g1 {
  border-color: var(--g1-mid);
  background: var(--g1-wash);
  box-shadow: inset 3px 0 0 var(--g1);
}
.chip.g2 {
  border-color: var(--g2-mid);
  background: var(--g2-wash);
  box-shadow: inset 3px 0 0 var(--g2);
}
.chip.g3 {
  border-color: var(--g3-mid);
  background: var(--g3-wash);
  box-shadow: inset 3px 0 0 var(--g3);
}
.chip.g4 {
  border-color: var(--g4-mid);
  background: var(--g4-wash);
  box-shadow: inset 3px 0 0 var(--g4);
}
.chip.g5 {
  border-color: var(--g5-mid);
  background: var(--g5-wash);
  box-shadow: inset 3px 0 0 var(--g5);
}
.fmap__items span.g1 {
  border-color: var(--g1-mid);
  background: var(--g1-wash);
}
.fmap__items span.g2 {
  border-color: var(--g2-mid);
  background: var(--g2-wash);
}
.fmap__items span.g3 {
  border-color: var(--g3-mid);
  background: var(--g3-wash);
}
.fmap__items span.g4 {
  border-color: var(--g4-mid);
  background: var(--g4-wash);
}
.fmap__items span.g5 {
  border-color: var(--g5-mid);
  background: var(--g5-wash);
}
.unitgrp.g1 .u {
  background: var(--g1);
}
.unitgrp.g2 .u {
  background: var(--g2);
}
.unitgrp.g3 .u {
  background: var(--g3);
}
.unitgrp.g4 .u {
  background: var(--g4);
}
.unitgrp.g5 .u {
  background: var(--g5);
}
.unitgrp .u--re {
  background: 0 0 !important;
}
.unitgrp .u {
  transition: transform 0.15s;
}
.unitgrp:hover .u {
  transform: scale(1.06);
}
details.fold > summary {
  border-left: 3px solid transparent;
}
details.fold.g1 > summary {
  border-left-color: var(--g1);
}
details.fold.g2 > summary {
  border-left-color: var(--g2);
}
details.fold.g3 > summary {
  border-left-color: var(--g3);
}
details.fold.g4 > summary {
  border-left-color: var(--g4);
}
details.fold.g5 > summary {
  border-left-color: var(--g5);
}
.bar .fill.g1 {
  background: linear-gradient(90deg, var(--g1-mid), var(--g1));
}
.bar .fill.g2 {
  background: linear-gradient(90deg, var(--g2-mid), var(--g2));
}
.bar .fill.g3 {
  background: linear-gradient(90deg, var(--g3-mid), var(--g3));
}
.bar .fill.g4 {
  background: linear-gradient(90deg, var(--g4-mid), var(--g4));
}
.bar .fill.g5 {
  background: linear-gradient(90deg, var(--g5-mid), var(--g5));
}
/* 1-1 人材需給ミスマッチ：不足と余剰は対の方向なので、資料の発散2極に合わせる。
   足りない側＝弁柄、余る側＝墨。職種別と地域別で同じ意味に同じ色を当てる。 */
.bar .fill--short {
  background: linear-gradient(90deg, #d3a288, var(--quit));
}
.bar .fill--sur {
  background: linear-gradient(90deg, #9d988e, var(--ink));
}
/* 1-1 潜在GDPの国際比較：国は政策目的の5群と無関係なので、群の色は使わない。
   比較対象の4か国＝淡い墨、主語である日本＝弁柄。 */
.bar .fill--ref {
  background: linear-gradient(90deg, #cdc9c0, #9d988e);
}
.bar .fill--focus {
  background: linear-gradient(90deg, #d3a288, var(--quit));
}
.swx {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 3px;
  margin: 0 4px 0 10px;
  vertical-align: -1px;
}
.sw-g1 {
  background: var(--g1);
}
.sw-g2 {
  background: var(--g2);
}
.sw-g3 {
  background: var(--g3);
}
.sw-g4 {
  background: var(--g4);
}
.sw-g5 {
  background: var(--g5);
}
.grouplegend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  align-items: center;
  margin: 14px 0 0;
  font-size: 12px;
  color: var(--muted-2);
}
.grouplegend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.grouplegend i {
  width: 14px;
  height: 14px;
  border-radius: 4px;
  font-style: normal;
  flex: none;
}
/* --- 2-1 orbit & quadrant coloring (fixed meaning) --- */
.orbit-node {
  border-top: 4px solid var(--green-pale-2);
}
.orbit-node.n1 {
  border-top-color: var(--g1);
}
.orbit-node.n1 b {
  color: var(--g1);
}
.orbit-node.n2 {
  border-top-color: var(--g2);
}
.orbit-node.n2 b {
  color: var(--g2);
}
.orbit-node.n3 {
  border-top-color: var(--g3);
}
.orbit-node.n3 b {
  color: var(--g3);
}
.orbit-node.n4 {
  border-top-color: var(--g4);
}
.orbit-node.n4 b {
  color: var(--g4);
}
.orbit-node.n5 {
  border-top-color: var(--g5);
}
.orbit-node.n5 b {
  color: var(--g5);
}

.orbit-core {
  animation: corePulse 4.5s ease-in-out infinite;
}
@keyframes corePulse {
  0%,
  100% {
    transform: translate(-50%, -50%) scale(1);
  }
  50% {
    transform: translate(-50%, -50%) scale(1.035);
  }
}
#s21 .fmap__row:nth-child(1) .fmap__q:nth-child(1) {
  background: linear-gradient(180deg, var(--g1-wash), rgba(255, 255, 255, 0));
}
#s21 .fmap__row:nth-child(1) .fmap__q:nth-child(1) h5 {
  color: var(--g1);
}
#s21 .fmap__row:nth-child(1) .fmap__q:nth-child(2) {
  background: linear-gradient(180deg, var(--g2-wash), rgba(255, 255, 255, 0));
}
#s21 .fmap__row:nth-child(1) .fmap__q:nth-child(2) h5 {
  color: var(--g2);
}
#s21 .fmap__row:nth-child(2) .fmap__q:nth-child(1) {
  background: linear-gradient(180deg, var(--g3-wash), rgba(255, 255, 255, 0));
}
#s21 .fmap__row:nth-child(2) .fmap__q:nth-child(1) h5 {
  color: var(--g3);
}
#s21 .fmap__row:nth-child(2) .fmap__q:nth-child(2) {
  background: linear-gradient(180deg, var(--g4-wash), rgba(255, 255, 255, 0));
}
#s21 .fmap__row:nth-child(2) .fmap__q:nth-child(2) h5 {
  color: var(--g4);
}
#s21 .groups .grpcard {
  border-top: 4px solid var(--rule-2);
}
#s21 .groups .grpcard:nth-child(1) {
  border-top-color: var(--g1);
}
#s21 .groups .grpcard:nth-child(1) h4 {
  color: var(--g1);
}
#s21 .groups .grpcard:nth-child(2) {
  border-top-color: var(--g2);
}
#s21 .groups .grpcard:nth-child(2) h4 {
  color: var(--g2);
}
#s21 .groups .grpcard:nth-child(3) {
  border-top-color: var(--g3);
}
#s21 .groups .grpcard:nth-child(3) h4 {
  color: var(--g3);
}
#s21 .groups .grpcard:nth-child(4) {
  border-top-color: var(--g4);
}
#s21 .groups .grpcard:nth-child(4) h4 {
  color: var(--g4);
}
#s21 .groups .grpcard:nth-child(5) {
  border-top-color: var(--g5);
}
#s21 .groups .grpcard:nth-child(5) h4 {
  color: var(--g5);
}
/* --- hover lift on cards / figures --- */
.grpcard,
.stat,
.node,
.scale,
.tl__item,
.orbit-node,
.facing__i {
  transition:
    transform 0.22s ease,
    box-shadow 0.22s ease;
}
.grpcard:hover,
.stat:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(23, 63, 43, 0.12);
}
.node:hover,
.chain__node:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 22px rgba(23, 63, 43, 0.1);
}
.viz {
  transition: box-shadow 0.25s ease;
}
.viz:hover {
  box-shadow: 0 16px 40px rgba(23, 63, 43, 0.1);
}
.stat {
  border-top: 3px solid var(--green-pale-2);
}
.stat:nth-child(odd) {
  border-top-color: var(--green);
}
/* --- scroll reveal --- */
.rv {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity 0.6s cubic-bezier(0.2, 0.6, 0.2, 1),
    transform 0.6s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.rv--fade {
  transform: none;
}
.rv.rv-in {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .rv {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .orbit-core,
  .hero2__bg,
  .hero2__cue {
    animation: none !important;
  }
}
/* --- before / after columns (1-2) --- */
.ba .ba-old,
.ba .ba-new {
  border: 1px solid var(--rule);
  border-radius: 12px;
  padding: 18px 22px;
  background: var(--panel);
}
.ba .ba-old {
  border-top: 4px solid var(--rule-2);
}
.ba .ba-new {
  border-top: 4px solid var(--green);
  background: linear-gradient(180deg, var(--green-wash), var(--panel));
}
.ba h4 {
  margin-top: 0;
}
.ba .ba-old h4 {
  color: var(--muted-2);
}
.ba .ba-new h4 {
  color: var(--green-deep);
}
.ba ul.plain {
  list-style: none;
  padding-left: 0;
}
.ba ul.plain li {
  padding-left: 1.5em;
  position: relative;
}
.ba .ba-old li::before {
  content: "✕";
  position: absolute;
  left: 0;
  color: var(--rule-2);
  font-weight: 700;
}
.ba .ba-new li::before {
  content: "◎";
  position: absolute;
  left: 0;
  color: var(--green);
  font-weight: 700;
}
/* --- structural constraint cards (1-1) --- */
.consts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(215px, 1fr));
  gap: 12px;
  margin: 24px 0;
  max-width: 960px;
}
.constcard {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  border-radius: 0 10px 10px 0;
  background: var(--panel);
  padding: 16px 18px;
  box-shadow: 0 7px 22px rgba(23, 63, 43, 0.05);
}
.constcard .c-ico {
  font-size: 21px;
  line-height: 1;
  margin-bottom: 9px;
}
.constcard b {
  display: block;
  font-size: 13px;
  color: var(--green-deep);
  margin-bottom: 7px;
  line-height: 1.7;
}
.constcard p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
/* --- cycle SVG (good/vicious loops) --- */
.cyc {
  max-width: 860px;
  margin: 6px auto;
}
.cyc svg {
  width: 100%;
  height: auto;
  display: block;
  overflow: visible;
}
.cyc .cy-box {
  fill: var(--panel);
  stroke: var(--rule-2);
}
.cyc .cy-box--warn {
  fill: rgba(231, 211, 180, 0.28);
  stroke: var(--quit-pale);
}
.cyc text {
  font-family: var(--zen);
}
/* --- A-3 number identity cards --- */
.numcards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
  margin: 24px 0;
  max-width: 960px;
}
.numcard {
  border: 1px solid var(--rule);
  border-radius: 12px;
  background: var(--panel);
  padding: 16px 18px;
  position: relative;
  box-shadow: 0 7px 22px rgba(23, 63, 43, 0.05);
}
.numcard .n-v {
  font: 700 25px var(--grotesk);
  color: var(--green-deep);
  line-height: 1.1;
}
.numcard .n-k {
  display: block;
  font-size: 12px;
  font-weight: 700;
  color: var(--ink);
  margin-top: 8px;
  line-height: 1.7;
}
.numcard .n-s {
  display: block;
  font-size: 12px;
  line-height: 1.8;
  color: var(--muted-2);
  margin-top: 5px;
}
.numcard .n-tag {
  position: absolute;
  top: 14px;
  right: 14px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  border-radius: 999px;
  padding: 4px 10px;
}
.numcard .n-tag--target {
  background: var(--green-wash-2);
  color: var(--green-deep);
}
.numcard .n-tag--est {
  background: var(--g1-wash);
  color: var(--g1);
}
.numcard .n-tag--assume {
  background: var(--amber-wash);
  color: var(--amber-deep);
}
/* --- 3-4 pyramid --- */
.pyr {
  max-width: 820px;
  margin: 6px auto;
}
.pyr svg {
  width: 100%;
  height: auto;
  display: block;
  overflow: visible;
}
.pyr text {
  font-family: var(--zen);
}
/* ================= HERO (dark) ================= */
.hero {
  padding: 0;
}
.hero2 {
  position: relative;
  overflow: hidden;
  color: var(--ink);
  background: var(--paper);
  border-bottom: 1px solid var(--rule);
}
/* 墨の一払い。紙の余白に対する対比として置く。文字の背後には敷かない。 */
.hero2__ink {
  position: absolute;
  right: -3%;
  bottom: -13%;
  width: 58%;
  height: auto;
  fill: var(--ink);
  pointer-events: none;
}
@media (max-width: 900px) {
  .hero2__ink {
    width: 104%;
    right: -20%;
    bottom: -6%;
    opacity: 0.16;
  }
}
.hero2__bg {
  position: absolute;
  /* 移動量ぶん外側へ広げ、親の overflow:hidden で切り取る */
  inset: -160px -300px;
  background-image: radial-gradient(rgba(32, 30, 26, 0.055) 1px, transparent 1.4px);
  background-size: 26px 26px;
  opacity: 0.65;
  /* background-position ではなく transform を動かす（合成のみで再描画が起きない） */
  animation: heroDrift 30s linear infinite;
  will-change: transform;
  pointer-events: none;
}
@keyframes heroDrift {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    transform: translate3d(260px, 130px, 0);
  }
}
.hero2__inner {
  position: relative;
  z-index: 2;
  padding: 110px 56px 96px;
}
.hero2__brand {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.28em;
  color: var(--green-pale);
}
.hero2__title {
  margin: 0;
  font-size: 56px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--ink);
  max-width: 920px;
  text-wrap: balance;
  letter-spacing: 0.02em;
}
.hero2__lead {
  margin: 24px 0 0;
  max-width: 620px;
  font-size: 14.5px;
  line-height: 2.15;
  color: var(--muted-2);
  text-wrap: pretty;
}
.hero2__stats {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 36px;
}
.hstat {
  flex: 1 1 150px;
  min-width: 150px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.055);
  border-radius: 12px;
  padding: 16px 18px;
  transition:
    transform 0.22s,
    background 0.22s;
}
.hstat:hover {
  transform: translateY(-3px);
  background: rgba(255, 255, 255, 0.1);
}
.hstat b {
  display: block;
  font: 700 33px var(--grotesk);
  line-height: 1.05;
  color: #fff;
  white-space: nowrap;
}
.hstat b .unit {
  font-size: 15px;
  margin-left: 2px;
  color: var(--green-pale);
}
.hstat > span {
  display: block;
  margin-top: 8px;
  font-size: 12px;
  line-height: 1.75;
  color: #b4c7ba;
}
.hstat--wide {
  flex: 1.5 1 220px;
}
.hero2__belt {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 30px;
  max-width: 1040px;
}
.beltchip {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  line-height: 1;
  color: #e6eee8;
  text-decoration: none;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 999px;
  padding: 8px 12px 10px;
  background: rgba(255, 255, 255, 0.05);
  transition:
    transform 0.18s,
    background 0.18s;
}
.beltchip em {
  font-style: normal;
  font-size: 13px;
  line-height: 1;
}
.beltchip::after {
  content: "";
  position: absolute;
  left: 11px;
  right: 11px;
  bottom: 4px;
  height: 2px;
  border-radius: 2px;
  background: var(--gc, #4d8c68);
}
.beltchip:hover {
  transform: translateY(-2px);
  background: rgba(255, 255, 255, 0.13);
  color: #fff;
}
.beltchip.g1 {
  --gc: #86abd1;
}
.beltchip.g2 {
  --gc: #d69a89;
}
.beltchip.g3 {
  --gc: #93c6a6;
}
.beltchip.g4 {
  --gc: #8ac2bc;
}
.beltchip.g5 {
  --gc: #b6a6d1;
}
.hero2__meta {
  display: flex;
  gap: 44px;
  flex-wrap: wrap;
  margin-top: 36px;
  padding-top: 22px;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
}
.hero2__meta-k {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.2em;
  color: #9cb1a2;
  margin-bottom: 6px;
}
.hero2__meta-v {
  font-size: 12.5px;
  color: #e2eae3;
}
.hero2__cue {
  margin-top: 30px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.3em;
  color: var(--green-pale);
  animation: cueFloat 2.4s ease-in-out infinite;
  width: max-content;
}
@keyframes cueFloat {
  0%,
  100% {
    transform: translateY(0);
    opacity: 0.7;
  }
  50% {
    transform: translateY(6px);
    opacity: 1;
  }
}
/* ================= CONTACT ================= */
#contact {
  background:
    radial-gradient(900px 500px at 90% -10%, rgba(120, 114, 102, 0.28), transparent 60%),
    linear-gradient(158deg, #16150f 0%, #201e1a 60%, #2b2822 100%);
  border-bottom: none;
  color: #eef3ee;
  position: relative;
  overflow: hidden;
}
#contact::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(255, 255, 255, 0.08) 1px, transparent 1.4px);
  background-size: 26px 26px;
  opacity: 0.5;
  pointer-events: none;
}
#contact > * {
  position: relative;
  z-index: 1;
}
#contact h2 {
  color: #fff;
}
#contact .sec-kicker {
  color: #9cb1a2;
}
#contact .sec-icon {
  background: linear-gradient(140deg, #4a463d, #201e1a);
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.35);
}
#contact .lead {
  color: #ccdad0;
  max-width: 740px;
}
#contact h3 {
  color: #e3ece5;
  border-bottom-color: rgba(255, 255, 255, 0.18);
}
#contact p {
  color: #c4d3c8;
}
#contact small {
  color: #9cb1a2;
}
.ct-grid {
  display: grid;
  grid-template-columns: 1fr 1.25fr;
  gap: 36px;
  margin-top: 32px;
  max-width: 960px;
  /* 左の説明が長くなってもフォームのカードは伸ばさない */
  align-items: start;
}
@media (max-width: 880px) {
  .ct-grid {
    grid-template-columns: 1fr;
  }
}
.ct-topics {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
}
.ct-topics li {
  border: 1px solid rgba(255, 255, 255, 0.22);
  border-radius: 999px;
  padding: 8px 14px;
  font-size: 12px;
  line-height: 1.6;
  color: #dfe9e1;
  background: rgba(255, 255, 255, 0.05);
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.ct-form {
  background: rgba(251, 250, 248, 0.97);
  border-radius: 16px;
  padding: 26px 26px 22px;
  color: var(--ink);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.4);
}
.ct-form .f-row {
  margin-bottom: 14px;
}
.ct-form .f-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 560px) {
  .ct-form .f-cols {
    grid-template-columns: 1fr;
  }
}
.ct-form label {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.14em;
  color: var(--green-deep);
  margin-bottom: 6px;
}
.ct-form label em {
  font-style: normal;
  color: var(--amber-deep);
  margin-left: 5px;
  letter-spacing: 0.06em;
}
.ct-form input,
.ct-form select,
.ct-form textarea {
  width: 100%;
  border: 1px solid var(--rule-2);
  border-radius: 8px;
  background: #fff;
  padding: 10px 12px;
  font: 400 13px var(--zen);
  color: var(--ink);
  line-height: 1.7;
}
.ct-form textarea {
  min-height: 130px;
  resize: vertical;
}
.ct-form input:focus,
.ct-form select:focus,
.ct-form textarea:focus {
  outline: 2px solid var(--green);
  outline-offset: 0;
  border-color: var(--green);
}
.ct-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 18px;
  align-items: center;
}
.ct-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: none;
  border-radius: 9px;
  padding: 12px 20px;
  font: 700 13px var(--zen);
  cursor: pointer;
  transition:
    transform 0.15s,
    box-shadow 0.15s;
}
.ct-btn--main {
  background: linear-gradient(135deg, #35322c, #16150f);
  color: #fff;
  box-shadow: 0 8px 18px rgba(22, 21, 15, 0.35);
}
.ct-btn--main:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(23, 63, 43, 0.4);
}
.ct-btn--sub {
  background: var(--grid);
  color: var(--ink-body);
}
.ct-btn--sub:hover {
  background: var(--rule);
}
.ct-status {
  font-size: 12px;
  line-height: 1.8;
  color: var(--green-deep);
  min-height: 1.8em;
  margin: 10px 0 0;
}
.ct-direct {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px dashed var(--rule-2);
  font-size: 12px;
  color: var(--muted-2);
}
.ct-direct a {
  color: var(--green-deep);
  font-weight: 700;
  word-break: break-all;
}
/* ================= PRINT ================= */
@media print {
  #progress,
  #totop,
  .nav-toggle,
  .side-nav,
  .hero2__cue,
  .tip {
    display: none !important;
  }
  .hero,
  .rule-strong,
  .toc,
  .wrap,
  footer {
    margin-left: 0 !important;
  }
  body {
    background: #fff;
  }
  .rv {
    opacity: 1 !important;
    transform: none !important;
  }
  .hero2,
  #contact,
  footer {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  section {
    padding: 34px 30px;
    border-bottom: 1px solid var(--rule);
  }
  .viz,
  figure,
  .groups,
  .stack,
  blockquote,
  .gapbox,
  .numcards,
  .consts {
    page-break-inside: avoid;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  details.fold {
    page-break-inside: avoid;
  }
  details.fold > summary::after {
    display: none;
  }
  .ct-actions,
  .ct-status {
    display: none !important;
  }
  .tw,
  .viz__scroll {
    overflow: visible;
  }
}
/* ================= RESPONSIVE ================= */
@media (max-width: 900px) {
  .hero2__inner {
    padding: 52px 28px 38px;
  }
  .hero2__title {
    font-size: 42px;
  }
}
@media (max-width: 720px) {
  .quad {
    grid-template-columns: 1fr;
    grid-template-rows: none;
    aspect-ratio: auto;
    max-width: none;
  }
  .quad__c {
    border-right: none !important;
  }
  .quad-wrap {
    display: block;
  }
  .quad-ylab {
    display: none;
  }
  .quad-xlab {
    max-width: none;
    margin-left: 0;
  }
}
@media (max-width: 640px) {
  .hero2__title {
    font-size: 32px;
  }
  .hero2__stats {
    gap: 9px;
  }
  .hstat {
    min-width: calc(50% - 9px);
  }
  .hstat b {
    font-size: 26px;
  }
  .sec-head .pageno {
    display: none;
  }
  .sec-icon {
    width: 40px;
    height: 40px;
    border-radius: 11px;
  }
  .sec-icon svg {
    width: 19px;
    height: 19px;
  }
  .hero2__meta {
    gap: 22px;
  }
}

/* ================= V4 LAYER (feedback round 1) ================= */
/* --g4 をここで橙に振っていたが、(1) 他4群（g1・g2・g3・g5）と彩度がそろわない、
   (2) 懸念・未達を表す --quit（#a8522f）と近く、群の識別色が警告色に読める、
   の2点から取りやめ、上流の #495c5a に戻した。 */
.beltchip.g4 {
  --gc: var(--g4-mid);
}
.orbit-node.n1 i {
  color: var(--g1-mid);
}
.orbit-node.n2 i {
  color: var(--g2-mid);
}
.orbit-node.n3 i {
  color: var(--g3-mid);
}
.orbit-node.n4 i {
  color: var(--g4-mid);
}
.orbit-node.n5 i {
  color: var(--g5-mid);
}
/* engine */
.engine svg {
  width: 100%;
  min-width: 760px;
  height: auto;
  display: block;
}
.engine {
  overflow-x: auto;
}
/* constraint spine */
.spine {
  position: relative;
  margin: 26px 0;
  max-width: 860px;
  padding-left: 8px;
}
.means {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0 22px;
  margin: 18px 0 6px;
  max-width: 960px;
}
.means__col {
  border-top: 3px solid var(--green-pale-2);
  padding-top: 12px;
}
.means__col.g1 {
  border-top-color: var(--g1);
}
.means__col.g2 {
  border-top-color: var(--g2);
}
.means__col.g3 {
  border-top-color: var(--g3);
}
.means__col.g4 {
  border-top-color: var(--g4);
}
.means__h {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 10px;
}
.means__h em {
  font-style: normal;
  font-size: 15px;
}
.means__col.g1 .means__h {
  color: var(--g1);
}
.means__col.g2 .means__h {
  color: var(--g2);
}
.means__col.g3 .means__h {
  color: var(--g3);
}
.means__col.g4 .means__h {
  color: var(--g4);
}
.means__i {
  display: grid;
  grid-template-columns: 20px 1fr;
  gap: 6px;
  padding: 8px 0;
  border-top: 1px solid var(--rule);
}
.means__i:first-of-type {
  border-top: none;
  padding-top: 0;
}
.means__i i {
  font-style: normal;
  font: 700 12px var(--grotesk);
  color: var(--muted);
}
.means__i span {
  font-size: 12px;
  line-height: 1.9;
  color: var(--ink-body-2);
}
@media (max-width: 900px) {
  .means {
    grid-template-columns: repeat(2, 1fr);
    gap: 22px;
  }
}
@media (max-width: 560px) {
  .means {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}
.hspine {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0 18px;
  margin: 30px 0 6px;
  position: relative;
  max-width: 960px;
}
.hspine::before {
  content: "";
  position: absolute;
  left: 9%;
  right: 9%;
  top: 23px;
  height: 2px;
  background: var(--green-pale-2);
  z-index: 0;
}
.hspine__item {
  position: relative;
  z-index: 1;
}
.hspine__node {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--green);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  margin: 0 auto 14px;
  box-shadow: 0 6px 14px rgba(23, 63, 43, 0.12);
}
.hspine__cat {
  display: block;
  text-align: center;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--green);
  margin-bottom: 6px;
}
.hspine__item b {
  display: block;
  text-align: center;
  font-size: 13px;
  line-height: 1.65;
  color: var(--ink);
  margin-bottom: 9px;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--rule);
}
.hspine__item p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body-2);
}
@media (max-width: 900px) {
  .hspine {
    grid-template-columns: repeat(2, 1fr);
    gap: 26px 20px;
  }
  .hspine::before {
    display: none;
  }
}
@media (max-width: 560px) {
  .hspine {
    grid-template-columns: 1fr;
    gap: 22px;
  }
  .hspine__node {
    margin: 0 0 10px;
  }
  .hspine__cat,
  .hspine__item b {
    text-align: left;
  }
}
.spine::before {
  content: "";
  position: absolute;
  left: 29px;
  top: 14px;
  bottom: 14px;
  width: 2px;
  background: linear-gradient(180deg, var(--green-pale-2), var(--green));
}
.spine__item {
  position: relative;
  display: flex;
  gap: 16px;
  padding: 11px 0;
  align-items: flex-start;
}
.spine__node {
  position: relative;
  z-index: 1;
  flex: none;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--green);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 19px;
  box-shadow: 0 6px 14px rgba(23, 63, 43, 0.12);
}
.spine__body {
  flex: 1;
  border: 1px solid var(--rule);
  border-radius: 10px;
  background: var(--panel);
  padding: 12px 16px;
  transition:
    transform 0.2s,
    box-shadow 0.2s;
}
.spine__item:hover .spine__body {
  transform: translateX(3px);
  box-shadow: 0 10px 24px rgba(23, 63, 43, 0.09);
}
.spine__head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.spine__head b {
  font-size: 13.5px;
  color: var(--green-deep);
}
.spine__cat {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  border: 1px solid var(--green-pale-2);
  color: var(--green);
  border-radius: 999px;
  padding: 3px 9px;
  background: var(--green-wash);
}
.spine__body p {
  margin: 7px 0 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
/* region matrix interaction */
.regrow {
  cursor: pointer;
}
.regrow th {
  transition: color 0.15s;
}
.regrow:hover th {
  color: var(--green);
}
.regrow.sel th {
  color: var(--green-deep);
  box-shadow: inset 3px 0 0 var(--green);
}
.regrow:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: -2px;
}
.regdetail {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  background: var(--panel);
  border-radius: 0 12px 12px 0;
  padding: 16px 20px;
  margin: 14px 0 2px;
  box-shadow: 0 8px 22px rgba(23, 63, 43, 0.06);
}
.rd-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.rd-flag {
  font-size: 20px;
}
.rd-head b {
  font-size: 14.5px;
  color: var(--green-deep);
}
.rd-policy {
  font-size: 12px;
  color: var(--muted-2);
}
.rd-grid {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 16px;
}
@media (max-width: 720px) {
  .rd-grid {
    grid-template-columns: 1fr;
  }
}
.rd-grid b {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--green);
  margin-bottom: 4px;
}
.rd-grid p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
/* bar growth */
.bars .fill,
.funnel .fb,
.scale__fill,
.scenario-chart .sc-fill {
  transition: width 0.9s cubic-bezier(0.16, 0.66, 0.3, 1);
}
@media print {
  .bars .fill,
  .funnel .fb,
  .scale__fill,
  .scenario-chart .sc-fill {
    transition: none;
  }
}

/* ================= V5 LAYER (feedback round 2) ================= */
.flg {
  display: inline-flex;
  width: 18px;
  height: 12px;
  border-radius: 2px;
  overflow: hidden;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
  vertical-align: -1px;
  flex: none;
}
.flg svg {
  display: block;
  width: 100%;
  height: 100%;
}
.rd-flag.flg {
  width: 24px;
  height: 16px;
  margin-top: 2px;
}
/* journey map */
.journey {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.jcard {
  flex: 1 1 200px;
  min-width: 186px;
  position: relative;
  display: block;
  text-decoration: none;
  border: 1px solid var(--rule);
  border-radius: 12px;
  background: var(--panel);
  padding: 14px 16px 12px;
  transition:
    transform 0.2s,
    box-shadow 0.2s,
    border-color 0.2s;
}
.jcard:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 26px rgba(23, 63, 43, 0.1);
  border-color: var(--green-pale-2);
}
.jcard .j-no {
  font: 700 22px var(--grotesk);
  color: var(--green-bright);
  opacity: 0.85;
  line-height: 1;
}
.jcard b {
  display: block;
  margin-top: 8px;
  font-size: 13px;
  color: var(--green-deep);
  line-height: 1.6;
}
.jcard small {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted-2);
}
.jcard .j-cnt {
  position: absolute;
  top: 12px;
  right: 14px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.08em;
  color: var(--muted);
  border: 1px solid var(--rule);
  border-radius: 999px;
  padding: 3px 8px;
  background: #fff;
}
.jcard--sub {
  background: rgba(232, 240, 234, 0.35);
  border-style: dashed;
}
.journey__hint {
  margin: 14px 0 0;
  font-size: 12px;
  color: var(--muted);
}
/* world 2x2 */
.worldgrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin: 20px 0;
  max-width: 960px;
}
@media (max-width: 720px) {
  .worldgrid {
    grid-template-columns: 1fr;
  }
}
.wcard {
  border: 1px solid var(--rule);
  border-radius: 12px;
  background: var(--panel);
  padding: 16px 18px;
  box-shadow: 0 7px 22px rgba(23, 63, 43, 0.05);
}
.wcard .w-ico {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: var(--green-wash);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  margin-bottom: 9px;
}
.wcard b {
  font-size: 13px;
  color: var(--green-deep);
}
.wcard p {
  margin: 6px 0 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
/* shift pairs */
.shift {
  display: grid;
  gap: 10px;
  margin: 22px 0;
  max-width: 960px;
}
.shift__row {
  display: grid;
  grid-template-columns: 1fr 44px 1.25fr;
  gap: 0;
  align-items: stretch;
}
@media (max-width: 720px) {
  .shift__row {
    grid-template-columns: 1fr;
  }
  .shift__arw {
    transform: rotate(90deg);
    height: 30px;
  }
}
.shift__old {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--rule-2);
  border-radius: 10px 0 0 10px;
  background: var(--grid);
  padding: 12px 15px;
  font-size: 12px;
  line-height: 1.9;
  color: var(--muted-2);
  display: flex;
  align-items: center;
}
.shift__arw {
  display: flex;
  align-items: center;
  justify-content: center;
  font: 700 18px var(--grotesk);
  color: var(--green);
}
.shift__new {
  border: 1px solid var(--green-pale-2);
  border-left: 4px solid var(--green);
  border-radius: 0 10px 10px 0;
  background: linear-gradient(180deg, var(--green-wash), var(--panel));
  padding: 12px 15px;
  font-size: 12.5px;
  line-height: 1.9;
  color: var(--ink);
  font-weight: 700;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.shift__new small {
  display: block;
  margin-top: 5px;
  font-size: 12px;
  font-weight: 400;
  color: var(--muted-2);
  line-height: 1.8;
}
/* region matrix v2 */
.gv--reg tbody th {
  padding: 10px 12px 9px 0;
  min-width: 200px;
}
.rg-name {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--ink);
}
.regrow th small {
  margin-top: 2px;
}
.rg-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 7px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--green);
  border: 1px solid var(--green-pale-2);
  border-radius: 999px;
  padding: 3px 9px;
  background: var(--green-wash);
  transition:
    background 0.15s,
    color 0.15s;
}
.rg-cta em {
  font-style: normal;
  transition: transform 0.2s;
}
.regrow.sel .rg-cta {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
}
.regrow.sel .rg-cta em {
  transform: rotate(-180deg);
}
.gv--reg .c2 {
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  gap: 2px;
  padding: 8px 11px;
  min-height: 54px;
  letter-spacing: 0;
}
.gv--reg .c2 b {
  font-size: 12px;
  line-height: 1.55;
}
.gv--reg .c2 small {
  font-size: 12px;
  font-weight: 400;
  opacity: 0.9;
  line-height: 1.55;
}
/* bars subheads */
.bars-h {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  color: var(--muted-2);
  margin: 20px 0 6px;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--rule);
}
figure .bars-h:first-of-type {
  margin-top: 8px;
}
/* sector picker */
.secpick {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
  gap: 8px;
  margin: 18px 0 0;
  max-width: 960px;
}
.spk {
  position: relative;
  display: flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--rule-2);
  border-radius: 9px;
  background: #fff;
  padding: 9px 10px 11px;
  cursor: pointer;
  font-family: var(--zen);
  text-align: left;
  transition:
    transform 0.15s,
    box-shadow 0.15s,
    border-color 0.15s;
}
.spk::after {
  content: "";
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 4px;
  height: 3px;
  border-radius: 3px;
  background: var(--rule);
}
.spk.g1::after {
  background: var(--g1-mid);
}
.spk.g2::after {
  background: var(--g2-mid);
}
.spk.g3::after {
  background: var(--g3-mid);
}
.spk.g4::after {
  background: var(--g4-mid);
}
.spk.g5::after {
  background: var(--g5-mid);
}
.spk em {
  font-style: normal;
  font-size: 15px;
  flex: none;
}
.spk .spk-t {
  flex: 1;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--ink);
}
.spk .spk-c {
  font: 700 12px var(--grotesk);
  color: var(--muted);
  flex: none;
}
.spk:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 18px rgba(23, 63, 43, 0.1);
}
.spk.sel {
  border-color: var(--green);
  box-shadow: 0 8px 18px rgba(23, 63, 43, 0.12);
}
.spk.sel .spk-t {
  color: var(--green-deep);
}
.secitems {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  border-radius: 0 12px 12px 0;
  background: var(--panel);
  padding: 16px 20px;
  margin: 14px 0 0;
  max-width: 960px;
  box-shadow: 0 8px 22px rgba(23, 63, 43, 0.06);
}
.secitems.g1 {
  border-left-color: var(--g1);
}
.secitems.g2 {
  border-left-color: var(--g2);
}
.secitems.g3 {
  border-left-color: var(--g3);
}
.secitems.g4 {
  border-left-color: var(--g4);
}
.secitems.g5 {
  border-left-color: var(--g5);
}
.si-head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.si-head em {
  font-style: normal;
  font-size: 20px;
}
.si-head b {
  font-size: 14px;
  color: var(--green-deep);
}
.si-tag {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  border-radius: 999px;
  padding: 3px 9px;
  color: #fff;
  background: var(--green);
}
.si-tag.g1 {
  background: var(--g1);
}
.si-tag.g2 {
  background: var(--g2);
}
.si-tag.g3 {
  background: var(--g3);
}
.si-tag.g4 {
  background: var(--g4);
}
.si-tag.g5 {
  background: var(--g5);
}
.si-cnt {
  font: 700 12px var(--grotesk);
  color: var(--muted);
}
.si-row {
  display: flex;
  gap: 12px;
  align-items: baseline;
  padding: 7px 2px;
  border-bottom: 1px dashed var(--rule);
  font-size: 12.5px;
  line-height: 1.8;
  color: var(--ink-body);
}
.si-row:last-of-type {
  border-bottom: none;
}
.si-no {
  flex: none;
  min-width: 30px;
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
  text-align: right;
}
.si-row--re {
  color: var(--muted);
}
.si-row--re .si-no {
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0.06em;
}
.si-foot {
  margin: 10px 0 0;
  font-size: 12px;
  color: var(--muted-2);
}
/* road */
.road svg {
  width: 100%;
  min-width: 760px;
  height: auto;
  display: block;
}
/* cycle animation */
.cyc-svg .cyN {
  transition:
    opacity 0.5s ease,
    transform 0.5s ease;
}
.cyc-svg.prep .cyN {
  opacity: 0;
  transform: translateY(10px);
}
/* 矢印の長さを測るのは画面に入る直前まで遅らせている（analysis.js の armCyc）。
   測る前は破線量が決まらず線が引かれたまま出てしまうので、armed が付くまで隠す。 */
.cyc-svg.prep:not(.armed) .cyA {
  visibility: hidden;
}
.cyc-svg.prep .cyN.on {
  opacity: 1;
  transform: none;
}
@media print {
  .cyc-svg .cyN {
    opacity: 1 !important;
    transform: none !important;
  }
  .cyc-svg .cyA {
    stroke-dashoffset: 0 !important;
  }
}

/* ================= V6 LAYER (feedback round 3: 表全廃・吸収・クリック化) ================= */
/* neutral card grid（政策目的の群色を持たない汎用カード） */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(272px, 1fr));
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  margin: 20px 0;
}
.cards .grpcard {
  border-top: 3px solid var(--green-pale-2);
  padding: 20px 22px;
}
.cards .grpcard h4 {
  color: var(--green-deep);
  font-size: 13.5px;
}
.cards .grpcard > p {
  margin: 0 0 8px;
  font-size: 12px;
  line-height: 2;
  color: var(--ink-body);
}
.cards--duo {
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}
.cards--gap .grpcard {
  border-top-color: var(--amber);
}
.cards--gap .grpcard h4 {
  color: var(--amber-deep);
}
.cards .grpcard .now {
  color: var(--muted-2);
  font-size: 12px;
  border-top: 1px dashed var(--rule);
  padding-top: 8px;
  margin-top: 10px;
}
/* verdict chips（原文から取れるか） */
.vchip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
  border-radius: 999px;
  padding: 3px 11px;
  border: 1px solid var(--green-pale-2);
  color: var(--green-deep);
  background: var(--green-wash);
}
.vchip--p {
  border-color: var(--rule-2);
  color: var(--muted-2);
  background: #fff;
}
.vchip--n {
  border-color: var(--quit-pale);
  color: var(--quit);
  background: rgba(231, 211, 180, 0.25);
}
.vchip--e {
  border-color: var(--green-deep);
  color: #fff;
  background: var(--green-deep);
}
.vline {
  margin: 2px 0 6px;
}
.vnote {
  font-size: 12px;
  line-height: 1.95;
  color: var(--muted-2);
}
.mininote {
  font-size: 12px;
  line-height: 1.9;
  color: var(--muted-2);
  margin: 10px 0 0;
}
/* 2-2 picker v2 */
.si-meta {
  border: 1px solid var(--rule);
  border-radius: 10px;
  background: #fff;
  padding: 4px 14px;
  margin: 8px 0 12px;
}
.si-mrow {
  display: grid;
  grid-template-columns: 196px 1fr;
  gap: 12px;
  padding: 8px 2px;
  border-bottom: 1px dashed var(--rule);
  align-items: baseline;
}
.si-mrow:last-child {
  border-bottom: none;
}
.si-mrow b {
  font-size: 12px;
  color: var(--green-deep);
  display: flex;
  gap: 7px;
  align-items: baseline;
  font-weight: 700;
}
.si-mrow b i {
  font: 500 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--muted);
  font-style: normal;
  border: 1px solid var(--rule-2);
  border-radius: 2px;
  padding: 1px 5px;
  flex: none;
}
.si-mrow p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.si-hint {
  margin: 0 0 2px;
  font-size: 12px;
  color: var(--muted);
}
details.si-det {
  border-bottom: 1px dashed var(--rule);
}
details.si-det:last-of-type {
  border-bottom: none;
}
details.si-det > summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  gap: 12px;
  align-items: baseline;
  padding: 8px 2px;
  font-size: 12.5px;
  line-height: 1.8;
  color: var(--ink-body);
}
details.si-det > summary::-webkit-details-marker {
  display: none;
}
details.si-det > summary::after {
  content: "＋";
  margin-left: auto;
  font: 500 12px var(--grotesk);
  color: var(--muted);
  flex: none;
}
details.si-det[open] > summary::after {
  content: "−";
}
details.si-det > summary:hover {
  background: rgba(213, 227, 210, 0.22);
}
details.si-det .si-t {
  font-weight: 700;
  color: var(--ink);
}
.si-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  padding: 4px 2px 8px;
}
.si-body > div {
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: 8px;
  padding: 10px 13px;
}
.si-body b {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--muted);
  margin-bottom: 5px;
}
.si-body p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.si-pg {
  margin: 0 0 10px;
  font: 700 12px var(--grotesk);
  color: var(--muted);
  text-align: right;
}
/* 3-1 coverage list */
.covlist {
  border: 1px solid var(--rule);
  background: var(--panel);
  margin: 14px 0;
  max-width: 960px;
}
.covrow {
  display: grid;
  grid-template-columns: minmax(200px, 1.1fr) 128px minmax(200px, 1.4fr);
  gap: 14px;
  padding: 10px 16px;
  border-bottom: 1px dashed var(--rule);
  align-items: baseline;
}
.covrow:last-child {
  border-bottom: none;
}
.covrow--h {
  border-bottom: 1px solid var(--rule);
  background: #fff;
}
.covrow--h span {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.14em;
  color: var(--muted);
}
.cov-el {
  font-size: 12px;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.8;
}
.cov-w {
  font-size: 12px;
  line-height: 1.9;
  color: var(--muted-2);
}
.cov-w small {
  display: block;
  color: var(--quit);
  font-size: 12px;
}
/* 3-1 case stepper */
.steps {
  position: relative;
  margin: 16px 0;
  max-width: 880px;
  padding-left: 4px;
}
.steps::before {
  content: "";
  position: absolute;
  left: 20px;
  top: 14px;
  bottom: 14px;
  width: 2px;
  background: var(--green-pale-2);
}
.step {
  position: relative;
  display: flex;
  gap: 14px;
  padding: 8px 0;
}
.step > i {
  position: relative;
  z-index: 1;
  flex: none;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--green);
  font: 700 12px var(--grotesk);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--green-deep);
  font-style: normal;
}
.step > div {
  flex: 1;
  border: 1px solid var(--rule);
  background: var(--panel);
  border-radius: 9px;
  padding: 11px 15px;
}
.step b {
  font-size: 12.5px;
  color: var(--green-deep);
}
.step p {
  margin: 5px 0 0;
  font-size: 12px;
  line-height: 2.05;
  color: var(--ink-body);
}
/* 3-2 policy-type chips */
.mchips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.mchip {
  font-size: 12px;
  line-height: 1.75;
  border: 1px solid var(--rule-2);
  background: #fff;
  border-radius: 999px;
  padding: 2px 10px;
  color: var(--ink-body);
}
/* 3-2 stage tabs */
.stgwrap {
  margin: 14px 0;
}
.stgpick {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.stg {
  border: 1px solid var(--rule-2);
  border-radius: 999px;
  background: #fff;
  padding: 8px 15px;
  cursor: pointer;
  font: 700 12px var(--zen);
  color: var(--ink-body);
  transition:
    transform 0.15s,
    background 0.15s,
    color 0.15s;
  font-family: var(--zen);
}
.stg:hover {
  transform: translateY(-1px);
}
.stg.sel {
  background: var(--green-deep);
  color: #fff;
  border-color: var(--green-deep);
}
.stg-arr {
  color: var(--muted);
  font-size: 12px;
}
.stgpanel {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  background: var(--panel);
  padding: 14px 18px;
  margin-top: 10px;
  border-radius: 0 10px 10px 0;
}
.stg-h {
  margin-bottom: 10px;
}
.stg-h b {
  font-size: 13.5px;
  color: var(--green-deep);
}
.stg-h span {
  font-size: 12px;
  color: var(--muted);
}
.stg-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.stg-cell {
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: 8px;
  padding: 11px 14px;
}
.stg-cell--w {
  border-left: 3px solid var(--quit);
}
.stg-cell b {
  font-size: 12px;
  color: var(--green-deep);
}
.stg-cell--w b {
  color: var(--quit);
}
.stg-cell p {
  margin: 5px 0 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
/* 3-3 k8 folds */
.k8 {
  border-bottom: 1px solid var(--rule);
  margin: 0 0 6px;
}
.kno {
  flex: none;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--chrome);
  color: #fff;
  font: 700 12px var(--grotesk);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.k8b {
  padding: 2px 18px 16px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.k8b > div {
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: 8px;
  padding: 11px 14px;
}
.k8b b {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  color: var(--muted);
  margin-bottom: 6px;
}
.k8b p {
  margin: 0;
  font-size: 12px;
  line-height: 2;
  color: var(--ink-body);
}
/* 4-3 KPI ladder */
.lstat {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.04em;
  border-radius: 999px;
  padding: 4px 10px;
  white-space: nowrap;
}
.lstat--y {
  background: var(--green-deep);
  color: #fff;
}
.lstat--p {
  background: var(--step-1);
  color: #fff;
}
.lstat--m {
  background: #fff;
  border: 1px solid var(--rule-2);
  color: var(--muted-2);
}
.lstat--n {
  background: #fff;
  border: 1px solid var(--quit-pale);
  color: var(--quit);
}
/* 6-2 中間KPI表：行見出しの下に公式最終目標を小さく出す */
table.rm-t th[scope="row"] small {
  display: block;
  font-weight: 400;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
}
/* 6-1 処方側の詳細パネル：引き金と、フィジカルAIの例 */
.jtrig {
  border-left: 3px solid var(--quit);
  background: rgba(231, 211, 180, 0.16);
  border-radius: 0 6px 6px 0;
  padding: 7px 12px 8px;
  margin: 8px 0 0;
}
.jtrig > b {
  color: var(--quit);
}
.qm {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  color: var(--muted-2);
}
.jex {
  margin: 10px 0 0;
  padding-top: 9px;
  border-top: 1px dashed var(--rule);
  font-size: 12px;
  line-height: 1.95;
  color: var(--muted-2);
}
.jex > b:first-child {
  display: inline-block;
  margin-right: 8px;
  padding: 1px 8px;
  border-radius: 20px;
  background: var(--green-wash);
  color: var(--green-deep);
  font: 700 12px var(--grotesk);
  vertical-align: 1px;
}
.jex b {
  color: var(--ink-body);
}
/* 図の詳細パネル：62項目に降ろしたときの過不足 */
.jrm {
  color: var(--muted-2);
}

/* 4-4 verdict matrix interaction */
.gv--verd tbody td {
  cursor: pointer;
}
.gv--verd tbody td .c {
  transition: box-shadow 0.15s;
}
.gv--verd tbody td:hover .c {
  box-shadow: 0 0 0 2px var(--green-pale-2) inset;
}
.gv--verd tbody td.vsel .c {
  box-shadow: 0 0 0 2px var(--green-deep) inset;
}
.vdetail {
  margin: 12px 0 4px;
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  background: #fff;
  padding: 13px 17px;
  border-radius: 0 10px 10px 0;
  min-height: 64px;
}
.vdetail .vd-h {
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
  margin-bottom: 5px;
}
.vdetail .vd-h b {
  font-size: 12.5px;
  color: var(--green-deep);
}
.vdetail .vd-x {
  color: var(--muted);
  font: 700 12px var(--grotesk);
}
.vdetail .vd-h .c {
  min-height: 0;
  padding: 3px 9px;
  border-radius: 999px;
}
.vdetail p {
  margin: 3px 0 0;
  font-size: 12px;
  line-height: 2.05;
  color: var(--ink-body);
}
.vdetail .vd-bg {
  margin-top: 7px;
  font-size: 12px;
  color: var(--muted);
}
/* 4-4 brake cards */
/* 5-3 結論：賛成／懸念／分かれる の3枚 */
.brkcards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 12px;
  margin: 14px 0;
}
.brk {
  border: 1px solid var(--rule);
  background: var(--panel);
  border-radius: 10px;
  padding: 13px 17px;
}
.brk .b-to {
  display: inline-block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.08em;
  color: var(--green);
  border: 1px solid var(--green-pale-2);
  border-radius: 999px;
  padding: 3px 10px;
  background: var(--green-wash);
  margin-bottom: 8px;
}
.brk q {
  display: block;
  font-size: 12px;
  line-height: 2;
  color: var(--ink-body);
  quotes: "「" "」";
}
/* A-4 grouped investment bars */
.invwrap {
  margin: 14px 0;
}
.invg {
  margin: 16px 0 4px;
}
.invg-h {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 4px;
}
.bar--re {
  opacity: 0.62;
}
.bar--re .lbl::after {
  content: "（再掲・参考）";
  font-size: 12px;
  color: var(--muted);
}
/* sources cards */
.srcgrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(330px, 1fr));
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  margin: 16px 0 26px;
}
.srcgrid--3 {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
.srccard {
  background: var(--panel);
  padding: 15px 19px;
}
.src-h {
  display: flex;
  gap: 10px;
  align-items: baseline;
}
.src-id {
  flex: none;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
  color: #fff;
  background: var(--chrome);
  border-radius: 4px;
  padding: 3px 8px;
}
.src-t {
  font-size: 12px;
  line-height: 1.9;
  font-weight: 700;
  color: var(--ink);
}
.src-t a {
  color: var(--green-deep);
  text-underline-offset: 3px;
}
.src-use {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 9px 0 0;
}
.src-use i {
  font: 700 12px var(--grotesk);
  font-style: normal;
  border: 1px solid var(--rule-2);
  border-radius: 999px;
  padding: 2px 8px;
  color: var(--muted-2);
  background: #fff;
}
.src-what {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--muted-2);
}
/* quote list in fold */
.qol li {
  font-size: 12px;
  line-height: 2.05;
  color: var(--ink-body);
  margin: 8px 0;
}
details.fold .qol {
  padding: 2px 20px 14px 2.4em;
  margin: 0;
}
/* responsive */
@media (max-width: 760px) {
  .si-mrow {
    grid-template-columns: 1fr;
    gap: 3px;
  }
  .si-body {
    grid-template-columns: 1fr;
  }
  .covrow {
    grid-template-columns: 1fr;
    gap: 5px;
  }
  .covrow--h {
    display: none;
  }
  .stg-grid {
    grid-template-columns: 1fr;
  }
  .k8b {
    grid-template-columns: 1fr;
  }
  .cards--duo {
    grid-template-columns: 1fr;
  }
}

/* ================= V7 LAYER (feedback round 4: クリック統一・白文字・オービット) ================= */
/* 1-2 region matrix: 白文字で可読性を確保（薄トーンは濃く調整） */
.gv--reg .c2 b {
  color: #fff;
}
.gv--reg .c2 small {
  color: rgba(255, 255, 255, 0.86);
  opacity: 1;
}
/* 3段階は「どれだけ制度で固めているか」の順序。ここだけ緑を当てていたため、
   段の一つではなく別種類の印に見えていた。墨の濃淡1本（step-3→2→1）で通す。
   いちばん薄い段は白抜きが読めないので、文字を墨に戻す。 */
#s12 .gv--reg .c2.t2 {
  background: var(--step-1);
}
#s12 .gv--reg .c2.t2 b {
  color: var(--ink);
}
#s12 .gv--reg .c2.t2 small {
  color: rgba(26, 25, 22, 0.8);
}
#s12 .lg i.t2 {
  background: var(--step-1);
}
/* 2-1 orbit: clickable */
.purpose-orbit .orbit-node {
  cursor: pointer;
  transition:
    transform 0.18s,
    box-shadow 0.18s;
}
.purpose-orbit .orbit-node:hover {
  transform: translateX(-50%) translateY(-3px);
}
.purpose-orbit .orbit-node.n3:hover,
.purpose-orbit .orbit-node.n4:hover {
  transform: translateY(-3px);
}
.purpose-orbit .orbit-node.n2:hover,
.purpose-orbit .orbit-node.n5:hover {
  transform: translateY(calc(-50% - 3px));
}
.purpose-orbit .orbit-node.sel {
  box-shadow:
    0 12px 26px rgba(23, 63, 43, 0.09),
    0 0 0 2.5px var(--green-deep);
}
.grpdetail {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  background: var(--panel);
  border-radius: 0 12px 12px 0;
  padding: 15px 19px;
  margin: 6px 0 14px;
  box-shadow: 0 8px 22px rgba(23, 63, 43, 0.06);
}
.grpdetail.g1 {
  border-left-color: var(--g1);
}
.grpdetail.g2 {
  border-left-color: var(--g2);
}
.grpdetail.g3 {
  border-left-color: var(--g3);
}
.grpdetail.g4 {
  border-left-color: var(--g4);
}
.grpdetail.g5 {
  border-left-color: var(--g5);
}
.grpdetail .vd-h {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 5px;
}
.grpdetail .vd-h b {
  font-size: 13.5px;
  color: var(--green-deep);
}
.grpdetail p {
  margin: 2px 0 8px;
  font-size: 12px;
  line-height: 2;
  color: var(--ink-body);
}
.gd-no {
  font: 700 15px var(--grotesk);
  color: var(--muted);
  font-style: normal;
}
.gd-secs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 8px;
}
.gd-sec {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  text-align: left;
  border: 1px solid var(--rule-2);
  background: #fff;
  border-radius: 9px;
  padding: 9px 13px;
  cursor: pointer;
  font-family: var(--zen);
  transition:
    transform 0.15s,
    box-shadow 0.15s;
}
.gd-sec:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(23, 63, 43, 0.09);
}
.gd-sec span {
  font-size: 12px;
  line-height: 1.85;
  color: var(--ink-body);
}
.gd-sec em {
  flex: none;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
  color: var(--green);
  font-style: normal;
  white-space: nowrap;
}
/* 3-3 foundation cells */
.sv-band--found {
  border-width: 2px;
}
.sv-cells--k8 {
  grid-template-columns: repeat(4, 1fr);
}
.svk {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(255, 255, 255, 0.1);
  border-radius: 8px;
  padding: 9px 11px;
  cursor: pointer;
  font-family: var(--zen);
  text-align: left;
  color: var(--paper);
  transition:
    background 0.15s,
    transform 0.15s;
}
.svk:hover {
  background: rgba(255, 255, 255, 0.2);
  transform: translateY(-1px);
}
.svk.sel {
  background: var(--paper);
  color: var(--green-deep);
  border-color: var(--paper);
}
.svk i {
  flex: none;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.22);
  font: 700 12px var(--grotesk);
  font-style: normal;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.svk.sel i {
  background: var(--green-deep);
  color: #fff;
}
.svk span {
  font-size: 12px;
  line-height: 1.6;
  font-weight: 700;
}
.k8detail {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  background: #fff;
  border-radius: 0 10px 10px 0;
  padding: 13px 17px;
  margin: 10px 0 2px;
}
.k8detail .vd-h {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.k8detail .vd-h b {
  font-size: 13px;
  color: var(--green-deep);
}
.kd-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.kd-grid > div {
  background: var(--panel);
  border: 1px solid var(--rule);
  border-radius: 8px;
  padding: 10px 14px;
}
.kd-grid b {
  display: block;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  color: var(--muted);
  margin-bottom: 5px;
}
.kd-grid p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.kd-link {
  grid-column: 1/-1;
  border-left: 3px solid var(--green-pale-2);
}
.kd-grid--1 {
  grid-template-columns: 1fr;
}
.kd-more {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.8;
  color: var(--muted);
}
.kd-more a {
  font-weight: 700;
}
/* 3-3 connection map */
.cnmap svg {
  width: 100%;
  min-width: 760px;
  height: auto;
  display: block;
}
.cnL {
  cursor: pointer;
}
.cnL:hover rect {
  stroke: var(--green);
}
.cnL.sel rect {
  stroke: var(--green-deep);
  stroke-width: 2;
}
/* 4-1 junction cycle */
.cyc-svg--j .cyN {
  cursor: pointer;
}
.cyJ {
  cursor: pointer;
}
.cyJ circle {
  stroke-width: 1.8;
  transition: stroke-width 0.15s;
}
.cyJ:hover circle {
  stroke-width: 3;
}
.cyJ.sel circle {
  stroke-width: 2.6;
}
.cyJ text {
  font: 700 10.5px var(--grotesk);
  letter-spacing: 0.06em;
  pointer-events: none;
}
/* つなぎ目のバッジは、ステップの丸（墨・アラビア数字）と取り違えられないよう
   弁柄の色とローマ数字で組む。紙色のハローを1枚敷いて、線や隣の丸から浮かせる。 */
.cyc-svg .cyJ circle.cyJhalo {
  fill: var(--paper);
  stroke: none;
  stroke-dasharray: none;
  pointer-events: none;
}
/* 選択中・フォーカス中の目印は、弁柄／破線という状態の符号を上書きしないよう、
   丸そのものの色は変えずに、外側のハローへ墨の輪を1本出す。 */
.cyc-svg .cyJ.sel circle.cyJhalo {
  stroke: var(--ink);
  stroke-width: 1.3;
}
.jt0 circle {
  fill: var(--paper);
  stroke: var(--quit);
  stroke-dasharray: 3.2 2.6;
}
.jt0 text {
  fill: var(--quit);
}
.jt2 circle {
  fill: var(--quit);
  stroke: var(--quit);
}
.jt2 text {
  fill: var(--paper);
}
.jt1 circle {
  fill: #c8c4ba;
  stroke: #b3aea3;
}
.jt1 text {
  fill: var(--green-deep);
}
.jdetail {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  background: #fff;
  border-radius: 0 10px 10px 0;
  padding: 13px 17px;
  margin: 10px 0 4px;
  min-height: 60px;
}
.jdetail .vd-h {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 5px;
}
.jdetail .vd-h b {
  font-size: 12.5px;
  color: var(--green-deep);
}
.jdetail p {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 2.05;
  color: var(--ink-body);
}
.jchip {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.04em;
  border-radius: 999px;
  padding: 3px 10px;
  white-space: nowrap;
}
.jchip.jt0 {
  background: var(--paper);
  border: 1px dashed var(--quit);
  color: var(--quit);
}
.jchip.jt2 {
  background: var(--quit);
  color: var(--paper);
}
.jchip.jt1 {
  background: #c3d8c9;
  color: var(--green-deep);
}
.jweak {
  border-left: 3px solid var(--quit);
  background: rgba(231, 211, 180, 0.18);
  padding: 8px 12px;
  border-radius: 0 6px 6px 0;
  margin-top: 8px !important;
}
/* SVGクリック時のデフォルトフォーカス枠を抑止（キーボード操作時のみ表示） */
.cyJ:focus,
.cnL:focus,
.purpose-orbit .orbit-node:focus,
.cyc-svg--j .cyN:focus {
  outline: none;
}
.cyJ:focus-visible circle {
  stroke-width: 3;
}
.cyc-svg .cyJ:focus-visible circle.cyJhalo {
  stroke: var(--ink);
  stroke-width: 2;
}
.cnL:focus-visible rect {
  stroke: var(--ink);
  stroke-width: 2;
}
.purpose-orbit .orbit-node:focus-visible {
  box-shadow:
    0 12px 26px rgba(23, 63, 43, 0.09),
    0 0 0 3px var(--green-pale-2);
}
@media (max-width: 760px) {
  .sv-cells--k8 {
    grid-template-columns: repeat(2, 1fr);
  }
  .kd-grid {
    grid-template-columns: 1fr;
  }
  .gd-secs {
    grid-template-columns: 1fr;
  }
}

/* ヒーローは #tab-main の中に入れたので、About / Contact ではパネルごと消える。
   alt-tab で個別に隠していた旧 fix はここから削除した。
   section の scroll-margin-top は上の「上部タブバーぶんの逃げ」に一本化。 */

/* ===== 3. ロードマップ表・マスター表まわり（旧 <style id="rm-css">） ===== */
/* ===== roadmap integration (rm-*) ===== */
.rm-chip {
  display: inline-flex;
  align-items: center;
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
  background: var(--green-wash-2, rgba(213, 227, 210, 0.5));
  border: 1px solid var(--green-pale-2);
  border-radius: 999px;
  padding: 1px 9px;
  margin-left: 8px;
  white-space: nowrap;
  line-height: 1.7;
}
.rm-chip--na {
  color: var(--muted-2);
  background: var(--grid);
  border-color: var(--rule);
}
.rm-ibox {
  border-top: 1px dashed var(--rule);
  margin-top: 10px;
  padding-top: 10px;
}
.rm-ibox > b {
  display: block;
  font-size: 12px;
  color: var(--green-deep);
  letter-spacing: 0.06em;
  margin-bottom: 2px;
}
.rm-ibox p {
  margin: 0 0 4px;
  font-size: 12px;
  line-height: 2;
  color: var(--ink-body);
}
.rm-k {
  display: inline-block;
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 3px;
  padding: 1px 6px;
  margin-right: 6px;
}
/* --- 全62項目マスター表のアコーディオン --- */
details.mtbl {
  margin: 26px 0 0;
}
details.mtbl > summary {
  cursor: pointer;
  list-style: none;
}
details.mtbl > summary::-webkit-details-marker {
  display: none;
}
details.mtbl > summary > h3 {
  margin: 0;
}
details.mtbl > summary > h3::after {
  content: "＋ 開く";
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted-2);
  margin-left: 12px;
  vertical-align: 2px;
}
details.mtbl[open] > summary > h3::after {
  content: "− 閉じる";
}
details.mtbl > summary:hover > h3::after {
  color: var(--green-deep);
}
details.mtbl > summary:focus-visible > h3 {
  outline: 2px solid var(--green-pale-2);
  outline-offset: 3px;
}
details.mtbl > .mininote {
  margin-top: 10px;
}
.rm-search {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 0 10px;
  max-width: 960px;
}
.rm-search input {
  flex: 1;
  max-width: 420px;
  border: 1px solid var(--rule-2);
  border-radius: 8px;
  background: #fff;
  padding: 9px 14px;
  font: 400 13px var(--zen);
  color: var(--ink);
}
.rm-search input:focus {
  outline: 2px solid var(--green-pale-2);
}
.rm-search .rm-cnt {
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
}
table.rm-t {
  border-collapse: collapse;
  width: 100%;
  font-size: 12px;
  line-height: 1.85;
  min-width: 860px;
}
table.rm-t th[scope="col"] {
  background: var(--chrome);
  color: var(--paper);
  font: 700 12px var(--zen);
  text-align: left;
  padding: 8px 10px;
  white-space: nowrap;
}
table.rm-t td,
table.rm-t th[scope="row"] {
  padding: 7px 10px;
  border-bottom: 1px solid var(--rule);
  text-align: left;
  font-weight: 400;
  color: var(--ink-body);
  vertical-align: top;
}
table.rm-t th[scope="row"] {
  font-weight: 700;
  color: var(--ink);
}
table.rm-t td.num {
  text-align: right;
  font-family: var(--grotesk);
  white-space: nowrap;
}
table.rm-t tr.rm-re > * {
  color: var(--muted);
  background: rgba(236, 234, 228, 0.45);
}
table.rm-t tr.rm-sp > * {
  background: rgba(231, 211, 180, 0.16);
}
.rm-judge {
  display: inline-block;
  font: 700 12px var(--zen);
  border-radius: 4px;
  padding: 2px 10px;
  white-space: nowrap;
}
.rm-judge--ok {
  color: #fff;
  background: var(--green);
}
.rm-judge--part {
  color: #6b4a12;
  background: var(--quit-pale);
}
.rm-judge--no {
  color: #fff;
  background: #8a8578;
}
.rm-mx td.mx-main {
  background: var(--green-deep);
  color: #fff;
  font-weight: 700;
}
.rm-mx td.mx-sub {
  background: var(--marker);
  color: var(--green-deep);
  font-weight: 700;
}
.rm-mx td.mx-none {
  color: var(--rule-2);
}
.rm-scatwrap {
  overflow-x: auto;
}
.rm-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin: 8px 0 2px;
  font-size: 12px;
  color: var(--muted-2);
}
.rm-legend i {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-right: 5px;
  vertical-align: -1px;
}
@media print {
  .rm-search {
    display: none;
  }
}
/* ================= 2-3 上位10項目：円グラフ×個票 統合 ================= */
.donut-pick {
  position: relative;
  width: 220px;
  height: 220px;
  margin: 0 auto;
}
.rm-t10-svg {
  width: 220px;
  height: 220px;
  display: block;
}
.rm-t10-slice {
  cursor: pointer;
  pointer-events: stroke;
  transition:
    stroke-width 0.18s,
    opacity 0.18s;
}
.rm-t10-slice:hover {
  opacity: 0.85;
}
.rm-t10-slice:focus {
  outline: none;
}
.rm-t10-slice:focus-visible {
  stroke-width: 40;
  opacity: 1;
}
.rm-t10-slice.sel {
  stroke-width: 40;
  opacity: 1;
}
.rm-t10-slice.dim {
  opacity: 0.4;
}
.rm-t10-other {
  pointer-events: none;
}
.rm-t10-row .donut-center {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.rm-t10-legend {
  display: grid;
  gap: 5px;
}
.rm-t10-chip {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  border: 1px solid var(--rule-2);
  background: #fff;
  border-radius: 8px;
  padding: 7px 11px;
  cursor: pointer;
  text-align: left;
  font-family: var(--zen);
  transition:
    transform 0.15s,
    box-shadow 0.15s,
    border-color 0.15s,
    background 0.15s;
}
.rm-t10-chip::before {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--c);
  flex: none;
}
.rm-t10-chip i {
  font: 700 12px var(--grotesk);
  color: var(--muted);
  font-style: normal;
  flex: none;
  width: 16px;
}
.rm-t10-chip span {
  flex: 1;
  font-size: 12px;
  line-height: 1.5;
  color: var(--ink-body);
}
.rm-t10-chip b {
  flex: none;
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
}
.rm-t10-chip:hover {
  box-shadow: 0 6px 14px rgba(23, 63, 43, 0.08);
  transform: translateY(-1px);
}
.rm-t10-chip.sel {
  border-color: var(--green);
  background: var(--green-wash);
}
.rm-t10-detail {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green);
  background: var(--panel);
  border-radius: 0 12px 12px 0;
  padding: 16px 20px;
  margin: 16px 0 0;
  box-shadow: 0 8px 22px rgba(23, 63, 43, 0.06);
}
.rm-t10-detail .vd-h {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.rm-t10-detail .vd-h b {
  font-size: 14px;
  color: var(--green-deep);
}
.rm-t10-detail .dl-tag {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.05em;
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 20px;
  padding: 3px 10px;
}
.rm-t10-detail p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.9;
  color: var(--ink-body);
}
.rm-t10-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  border-radius: 8px;
  overflow: hidden;
  margin: 10px 0 12px;
}
.rm-t10-m {
  padding: 12px 14px;
  background: var(--panel);
}
.rm-t10-m .k {
  display: block;
  font: 500 12px var(--grotesk);
  letter-spacing: 0.14em;
  color: var(--muted);
  margin-bottom: 8px;
}
.rm-t10-m .v {
  display: block;
  font: 700 22px var(--grotesk);
  color: var(--green-deep);
}
.rm-t10-m .v i {
  font: 700 12px var(--zen);
  font-style: normal;
  color: var(--muted-2);
  margin-left: 3px;
}
/* --- 表｜例外値の扱い 等のアコーディオン化した viz --- */
details.viz > summary.viz__cap {
  cursor: pointer;
  list-style: none;
}
details.viz > summary.viz__cap::-webkit-details-marker {
  display: none;
}
details.viz > summary.viz__cap::after {
  content: "＋ 開く";
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted-2);
  margin-left: 12px;
  vertical-align: 2px;
}
details.viz[open] > summary.viz__cap::after {
  content: "− 閉じる";
}
details.viz > summary.viz__cap:hover::after {
  color: var(--green-deep);
}
details.viz > summary.viz__cap:focus-visible {
  outline: 2px solid var(--green-pale-2);
  outline-offset: 3px;
}
details.viz > .viz__scroll {
  margin-top: 14px;
}
/* --- Ｂ｜金額で明記された目標：帯に市場規模と目標額を併記 --- */
.bar--amt {
  grid-template-columns: minmax(130px, 230px) 1fr 150px;
}
.bar .val b {
  display: block;
  font: 700 12px var(--grotesk);
  color: var(--ink);
}
.bar .val i {
  display: block;
  font: 500 12px var(--grotesk);
  font-style: normal;
  color: var(--muted-2);
  margin-top: 2px;
  white-space: nowrap;
}
@media (max-width: 640px) {
  .bar--amt {
    grid-template-columns: 1fr auto;
  }
  .bar .val i {
    white-space: normal;
  }
}
/* ================= 3-1 17分野の政策パッケージ（原典4点フレーム） ================= */
.frame4 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
}
.frame4__s {
  position: relative;
  border: 1px solid var(--rule);
  border-top: 3px solid var(--green-pale-2);
  border-radius: 10px;
  background: #fff;
  padding: 14px 16px 15px;
}
.frame4__s i {
  display: inline-block;
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: #fff;
  background: var(--green-pale-2);
  border-radius: 20px;
  padding: 1px 9px;
  margin-bottom: 8px;
}
.frame4__s b {
  display: block;
  font-size: 13px;
  color: var(--green-deep);
  margin-bottom: 6px;
}
.frame4__s span {
  display: block;
  font-size: 12px;
  line-height: 1.85;
  color: var(--ink-body-2);
}
.frame4__s--pol {
  border-top-color: var(--green-deep);
  background: var(--green-wash);
}
.frame4__s--pol i {
  background: var(--green-deep);
}
/* 以前はこの右カードだけ span 内の強調を inline に落としていたため、
   左は独立した1行、右は文中の太字と、同じ図の中で強調の出方が食い違っていた。
   左に合わせてブロックの1行に統一する（上書きを外して .frame4__s b を継がせる）。 */
ol.five {
  counter-reset: five;
  list-style: none;
  padding: 0;
  margin: 14px 0 6px;
  max-width: 860px;
}
ol.five li {
  counter-increment: five;
  position: relative;
  padding: 9px 0 9px 40px;
  border-top: 1px solid var(--rule);
  font-size: 12.5px;
  line-height: 2;
  color: var(--ink-body);
}
ol.five li:last-child {
  border-bottom: 1px solid var(--rule);
}
ol.five li::before {
  content: counter(five);
  position: absolute;
  left: 4px;
  top: 12px;
  font: 700 12px var(--grotesk);
  color: var(--green);
  border: 1px solid var(--green-pale-2);
  border-radius: 50%;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
}
.pkg-bar {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 18px 0 10px;
  flex-wrap: wrap;
}
.pkg-bar button {
  border: 1px solid var(--green-pale-2);
  background: var(--green-wash);
  color: var(--green-deep);
  border-radius: 20px;
  padding: 6px 16px;
  cursor: pointer;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
  font-family: var(--zen);
}
.pkg-bar button:hover {
  background: var(--marker);
}
.pkg-bar__n {
  font-size: 12px;
  color: var(--muted-2);
}
.pkg-list {
  display: grid;
  gap: 8px;
}
details.pkg {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--green-pale-2);
  border-radius: 0 10px 10px 0;
  background: var(--panel);
}
details.pkg.g1 {
  border-left-color: var(--g1);
}
details.pkg.g2 {
  border-left-color: var(--g2);
}
details.pkg.g3 {
  border-left-color: var(--g3);
}
details.pkg.g4 {
  border-left-color: var(--g4);
}
details.pkg.g5 {
  border-left-color: var(--g5);
}
.pkg__sum {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 13px 18px;
  cursor: pointer;
  list-style: none;
}
.pkg__sum::-webkit-details-marker {
  display: none;
}
.pkg__sum em {
  font-style: normal;
  font-size: 17px;
  flex: none;
}
.pkg__sum > b {
  flex: 1;
  font-size: 13.5px;
  color: var(--green-deep);
}
.pkg__cnt {
  flex: none;
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 20px;
  padding: 3px 10px;
}
.pkg__sum::after {
  content: "＋";
  flex: none;
  font: 700 13px var(--grotesk);
  color: var(--muted);
}
details.pkg[open] > .pkg__sum::after {
  content: "−";
}
.pkg__sum:hover > b,
.pkg__sum:hover .pkg__h > b {
  text-decoration: underline;
}
/* --- 分野サマリ行：閉じたままでも規模と代表目標が読めるようにする（D案） --- */
.pkg__h {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px 12px;
}
.pkg__h > b {
  font-size: 13.5px;
  color: var(--green-deep);
}
.pkg__m {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.pkg-sc {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font: 500 12px var(--zen);
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 20px;
  padding: 3px 10px;
  cursor: help;
  white-space: nowrap;
}
.pkg-sc > i {
  font-style: normal;
  font-size: 12px;
  color: var(--muted);
}
.pkg-sc b {
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
}
.pkg-sc u {
  text-decoration: none;
  font-size: 12px;
}
.pkg-sc--goal {
  background: var(--marker);
  color: var(--green-deep);
}
.pkg-mini {
  display: block;
  width: 46px;
  height: 4px;
  border-radius: 3px;
  background: var(--rule);
  overflow: hidden;
  flex: none;
}
.pkg-mini i {
  display: block;
  height: 100%;
  background: var(--green-pale-2);
}
/* --- 個票：ⅰⅱは畳み、ⅲ目標とⅳ施策を構造化して見せる --- */
.pf-folds {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 10px;
}
@media (max-width: 760px) {
  .pf-folds {
    grid-template-columns: 1fr;
  }
}
.pf-fold {
  border: 1px solid var(--rule);
  border-radius: 8px;
  background: #fff;
}
.pf-fold > summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  padding: 9px 12px;
  cursor: pointer;
  list-style: none;
}
.pf-fold > summary::-webkit-details-marker {
  display: none;
}
.pf-fold > summary::after {
  content: "＋";
  margin-left: auto;
  font: 700 12px var(--grotesk);
  color: var(--muted);
}
.pf-fold[open] > summary::after {
  content: "−";
}
.pf-fold[open] > summary {
  border-bottom: 1px solid var(--rule);
}
.pf-fold > summary:focus-visible {
  outline: 2px solid var(--green-pale-2);
  outline-offset: -2px;
}
.pf-fold > p {
  margin: 0;
  padding: 11px 13px 13px;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.pf-k {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--green-deep);
  flex: none;
}
.pf-k > i {
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: #fff;
  background: var(--green-pale-2);
  border-radius: 20px;
  padding: 1px 6px;
}
.pf-k > em {
  font-style: normal;
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 20px;
  padding: 2px 8px;
}
.pf-q {
  font-size: 12px;
  color: var(--muted-2);
}
.pf-chips {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
}
/* ⅲ 主な目標：到達点として数値を前に出す */
.pf-goal {
  border: 1px solid var(--green-pale-2);
  border-left: 4px solid var(--green);
  border-radius: 0 8px 8px 0;
  background: #fff;
  padding: 10px 13px 11px;
  margin-bottom: 8px;
}
.pf-goal .pf-k > i {
  background: var(--green);
}
.pf-goal__v {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 8px 0 2px;
}
.pf-goal__v .pfig {
  font-size: 13px;
  padding: 4px 10px;
}
.pf-goal ul {
  margin: 6px 0 0;
  padding-left: 1.1em;
}
.pf-goal li {
  font-size: 12px;
  line-height: 1.95;
  font-weight: 700;
  color: var(--green-deep);
  margin: 2px 0;
}
/* ⅳ 主な施策：1件＝1カード。型タグは本資料による機械分類 */
.pf-pol {
  background: var(--green-wash);
  border-radius: 8px;
  padding: 10px 13px 12px;
}
.pf-pol .pf-k {
  color: var(--green-deep);
}
.pf-pol .pf-k > i {
  background: var(--green-deep);
}
.pf-acts {
  counter-reset: pfa;
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: grid;
  gap: 7px;
}
.pf-acts > li {
  counter-increment: pfa;
  position: relative;
  background: #fff;
  border: 1px solid var(--green-pale-2);
  border-radius: 7px;
  padding: 9px 12px 10px 34px;
}
.pf-acts > li::before {
  content: counter(pfa);
  position: absolute;
  left: 11px;
  top: 10px;
  font: 700 12px var(--grotesk);
  color: var(--green);
}
.pf-acts > li > p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.pf-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 6px;
}
.pf-tag {
  font: 700 12px var(--zen);
  color: var(--green-deep);
  background: var(--marker);
  border-radius: 4px;
  padding: 2px 7px;
  cursor: help;
}
.pkg__sum:focus-visible {
  outline: 2px solid var(--green-pale-2);
  outline-offset: -2px;
}
.pkg__intro {
  margin: 0;
  padding: 0 18px 14px;
  font-size: 12px;
  line-height: 2;
  color: var(--ink-body-2);
  border-bottom: 1px solid var(--rule);
}
.pkg-item {
  padding: 14px 18px 16px;
  border-bottom: 1px solid var(--rule);
}
.pkg-item:last-child {
  border-bottom: none;
}
.pkg-item__h {
  display: flex;
  align-items: baseline;
  gap: 9px;
  margin-bottom: 10px;
}
.pkg-item__h i {
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: #fff;
  background: var(--green);
  border-radius: 50%;
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  flex: none;
}
.pkg-item__h b {
  font-size: 13px;
  color: var(--ink);
}
.pkg-f {
  display: grid;
  grid-template-columns: 116px 1fr;
  gap: 12px;
  padding: 6px 0;
  align-items: start;
}
.pkg-f__k {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.04em;
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 4px;
  padding: 4px 8px;
  text-align: center;
}
.pkg-f p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.pkg-f ul {
  margin: 0;
  padding-left: 1.1em;
}
.pkg-f li {
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
  margin: 2px 0;
}
.pkg-f--goal .pkg-f__k {
  color: var(--green-deep);
  background: var(--marker);
}
.pkg-f--goal li {
  font-weight: 700;
  color: var(--green-deep);
}
.pkg-f--pol .pkg-f__k {
  color: #fff;
  background: var(--green-deep);
}
.pkg-f--pol {
  background: var(--green-wash);
  border-radius: 8px;
  padding: 10px 12px;
  margin-top: 4px;
}
.pkg-item--re .pkg-item__h b {
  color: var(--muted-2);
}
.pkg-re {
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 20px;
  padding: 3px 9px;
}
.pkg-re__n {
  margin: 0;
  font-size: 12px;
  line-height: 1.9;
  color: var(--muted-2);
}
@media (max-width: 640px) {
  .pkg-f {
    grid-template-columns: 1fr;
    gap: 5px;
  }
  .pkg-f__k {
    justify-self: start;
    padding: 3px 10px;
  }
}
/* ================= 4-2 8つの分野横断的な課題（原典Ⅲ章の4点フレーム） ================= */
details.pkg.k8 > .pkg__sum b {
  font-size: 13.5px;
}
.k8 .pkg-f--pol > div {
  display: grid;
  gap: 8px;
}
.k8-pkg {
  border-left: 2px solid var(--green-pale-2);
  padding: 2px 0 2px 12px;
}
.k8-pkg b {
  display: block;
  font-size: 12px;
  color: var(--green-deep);
  margin-bottom: 4px;
  line-height: 1.7;
}
.k8-pkg p {
  margin: 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
.k8-pkg--sub {
  margin-left: 14px;
  border-left-color: var(--rule-2);
}
.k8-pkg--grp {
  border-left: none;
  padding-left: 0;
  margin-top: 4px;
}
.k8-pkg--grp b {
  font-size: 12.5px;
  border-bottom: 1px solid var(--green-pale-2);
  padding-bottom: 4px;
  margin-bottom: 0;
}
/* ================= サイドバー見出しの固定表示 ================= */
.side-nav {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.side-nav__head {
  flex: none;
}
.side-nav__head .side-nav__doc {
  margin-bottom: 12px;
}
.side-nav__list {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  margin-right: -8px;
  padding-right: 8px;
}
/* ================= 2-3 市場獲得の目標：A/B/C 切替タブ ================= */
.tgt-tabs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 8px;
  margin: 6px 0 18px;
}
.tgt-tab {
  display: flex;
  align-items: center;
  gap: 10px;
  text-align: left;
  border: 1px solid var(--rule-2);
  border-top: 3px solid var(--rule-2);
  background: #fff;
  border-radius: 10px;
  padding: 11px 14px;
  cursor: pointer;
  font-family: var(--zen);
  transition:
    transform 0.15s,
    box-shadow 0.15s,
    border-color 0.15s,
    background 0.15s;
}
.tgt-tab i {
  flex: none;
  font: 700 13px var(--grotesk);
  font-style: normal;
  color: var(--muted);
  width: 24px;
  height: 24px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--grid);
}
.tgt-tab span {
  flex: 1;
  font-size: 12px;
  line-height: 1.6;
  color: var(--ink-body);
}
.tgt-tab em {
  flex: none;
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: var(--muted-2);
}
.tgt-tab:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(23, 63, 43, 0.08);
}
.tgt-tab.sel {
  border-color: var(--green-pale-2);
  border-top-color: var(--green-deep);
  background: var(--green-wash);
}
.tgt-tab.sel i {
  background: var(--green-deep);
  color: #fff;
}
.tgt-tab.sel span {
  font-weight: 700;
  color: var(--green-deep);
}
.tgt-tab:focus-visible {
  outline: 2px solid var(--green-pale-2);
  outline-offset: 2px;
}
.tgt-panel {
  display: none;
}
.tgt-panel.sel {
  display: block;
}
/* ================= 3-3A/3-3B 地域実装（3類型） ================= */
.rm-t tr.typ th[scope="row"] em {
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  margin-right: 8px;
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: #fff;
  vertical-align: -3px;
}
.rm-t tr.typ--a th[scope="row"] em {
  background: var(--g1);
}
.rm-t tr.typ--b th[scope="row"] em {
  background: var(--g3);
}
.rm-t tr.typ--c th[scope="row"] em {
  background: var(--g5);
}
.rm-t td.na {
  color: var(--quit);
  font-weight: 700;
}
.rm-t td.yes {
  color: var(--green);
  font-weight: 700;
}
.rm-t tr.typ th[scope="row"] small {
  display: block;
  font-weight: 400;
  color: var(--muted-2);
  font-size: 12px;
}
.rm-t tr.typ td small {
  display: block;
  color: var(--muted-2);
  font-size: 12px;
  margin-top: 3px;
}
.flow3 {
  display: grid;
  gap: 8px;
  margin: 16px 0 6px;
  max-width: 960px;
}
.flow3__r {
  display: grid;
  grid-template-columns: 34px 1fr auto;
  align-items: center;
  gap: 14px;
  border: 1px solid var(--rule);
  border-left: 4px solid var(--rule-2);
  border-radius: 0 10px 10px 0;
  background: var(--panel);
  padding: 12px 16px;
}
.flow3__r i {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: #fff;
}
.flow3__r.typ--a {
  border-left-color: var(--g1);
}
.flow3__r.typ--a i {
  background: var(--g1);
}
.flow3__r.typ--b {
  border-left-color: var(--g3);
}
.flow3__r.typ--b i {
  background: var(--g3);
}
.flow3__r.typ--c {
  border-left-color: var(--g5);
}
.flow3__r.typ--c i {
  background: var(--g5);
}
.flow3__r b {
  font-size: 12px;
  line-height: 1.85;
  color: var(--ink-body);
  font-weight: 400;
}
.flow3__r span {
  flex: none;
  font: 700 12px var(--zen);
  color: var(--green-deep);
  white-space: nowrap;
}
@media (max-width: 720px) {
  .flow3__r {
    grid-template-columns: 26px 1fr;
  }
  .flow3__r span {
    grid-column: 2;
    white-space: normal;
  }
}

/* ================= PARTの中扉（全体像のどこを扱うかを示す） ================= */
.gate {
  padding: 54px 56px 20px;
}
.gate > * {
  max-width: 960px;
}
.gate__no {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--chrome-2);
}
.gate > h2 {
  margin: 6px 0 18px;
  font-size: 30px;
  line-height: 1.45;
  color: var(--green-deep);
  text-wrap: balance;
  border: 0;
  padding: 0;
}
.engine--gate {
  margin: 4px 0 0;
}
.engine--gate svg {
  display: block;
  width: 100%;
  min-width: 640px;
}
.engdim {
  opacity: 0.28;
}
.engbright {
  opacity: 1;
}
.enghi {
  fill: none;
  stroke: #f2c894;
  stroke-width: 3;
  stroke-dasharray: 8 5;
}
.enghi__t {
  fill: #f2c894;
  font: 700 13px var(--grotesk);
  letter-spacing: 0.1em;
}
.gate__cap {
  margin: 10px 0 0;
  font-size: 12px;
  line-height: 1.9;
  color: var(--muted-2);
}
.gate__lead {
  margin: 20px 0 0;
  max-width: 760px;
  font-size: 14px;
  line-height: 2.05;
  color: var(--ink-body);
}
@media (max-width: 860px) {
  .gate > h2 {
    font-size: 23px;
  }
}
/* サイドナビ：PART見出しから中扉へ飛べるようにする */
a.nav-grp--link {
  text-decoration: none;
  cursor: pointer;
}
a.nav-grp--link:hover {
  color: var(--green-deep);
  text-decoration: underline;
}
a.nav-grp--link:focus-visible {
  outline: 2px solid var(--green-pale-2);
  outline-offset: 2px;
}

/* 5-2 撤退の引き金：どの政策手段が効かなかったときの合図か */
.quit-src {
  margin: 0 0 6px;
  font-size: 12px;
  line-height: 1.8;
  color: var(--muted-2);
}
.quit-src b {
  color: var(--quit);
}
.kpi-in {
  white-space: nowrap;
  font-weight: 700;
  color: var(--green-deep);
}

/* 施策の型タグ：3-1の4つの政策類型に色を割り当てる */
.pf-tag--a1 {
  background: #e7edf4;
  color: #2b4d70;
}
.pf-tag--a2 {
  background: var(--marker);
  color: var(--green-deep);
}
.pf-tag--a3 {
  background: #f4e8e4;
  color: #7e3b30;
}
.pf-tag--a4 {
  background: #ede9f3;
  color: #4f4268;
}
.pkg-sc--act {
  gap: 4px;
}
.pkg-sc--act em {
  font-style: normal;
  font: 700 12px var(--zen);
  border-radius: 4px;
  padding: 2px 6px;
}
@media (max-width: 640px) {
  .pkg-sc--act {
    display: none;
  }
}

/* ===== 5-2 8つの課題：構成図と、個票の構造 ===== */
.k8mix {
  display: grid;
  gap: 4px;
}
.k8mx {
  display: grid;
  grid-template-columns: 260px 1fr 34px;
  align-items: center;
  gap: 12px;
  padding: 7px 8px;
  border-radius: 8px;
  text-decoration: none;
  color: inherit;
}
.k8mx:hover {
  background: var(--grid);
}
.k8mx__t {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  font-weight: 700;
  color: var(--green-deep);
}
.k8mx__t em {
  font-style: normal;
  font-size: 14px;
}
.k8mx__b {
  display: flex;
  gap: 2px;
  height: 16px;
  border-radius: 4px;
  overflow: hidden;
  background: var(--grid);
}
.k8mx__b i {
  display: block;
  cursor: help;
}
.k8mx__n {
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
  text-align: right;
}
.k8-acts {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: grid;
  gap: 6px;
}
.k8-grp {
  font-size: 12px;
  font-weight: 700;
  color: var(--green-deep);
  margin-top: 6px;
}
.k8-act {
  background: #fff;
  border: 1px solid var(--green-pale-2);
  border-radius: 7px;
}
/* 施策カードはすべて同じ左端に置く。子を持たない大区分だけが外側に残ると、
   兄弟のカードから飛び出して見えるため。階層は上の見出しの位置で示す。 */
.k8-act {
  margin-left: 14px;
}
.k8-act__h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  padding: 9px 12px 0;
  font-size: 12px;
  font-weight: 700;
  color: var(--ink);
}
/* 施策の要点。1行＝1施策、3点まで。 */
.k8pts {
  list-style: none;
  margin: 6px 0 0;
  padding: 0 12px 11px;
  display: grid;
  gap: 3px;
}
.k8pts > li {
  position: relative;
  padding-left: 13px;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.85;
  color: var(--ink-body);
}
.k8pts > li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 0.85em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--green-pale-2);
}
@media (max-width: 700px) {
  .k8mx {
    grid-template-columns: 1fr 30px;
    gap: 6px;
  }
  .k8mx__t {
    grid-column: 1 / -1;
  }
}

/* ===== 4-2 地域未来戦略の支援施策：類型 × 柱 ===== */
.regmx {
  display: grid;
  gap: 6px;
}
.regmx__r {
  display: grid;
  grid-template-columns: 260px 1fr 40px;
  align-items: center;
  gap: 14px;
  padding: 9px 10px;
  border: 1px solid var(--rule);
  border-radius: 9px;
  background: var(--panel);
  cursor: pointer;
  text-align: left;
  font-family: var(--zen);
}
.regmx__r:hover {
  border-color: var(--green-pale-2);
}
.regmx__r.is-on {
  border-color: var(--green);
  background: #fff;
  box-shadow: 0 0 0 2px var(--marker);
}
.regmx__k {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  color: var(--green-deep);
}
.regmx__c {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  height: 44px;
}
.regmx__c i {
  flex: 1;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  gap: 3px;
  cursor: help;
}
.regmx__c b {
  display: block;
  width: 100%;
  background: var(--green-pale-2);
  border-radius: 3px 3px 0 0;
  min-height: 3px;
}
.regmx__r.is-on .regmx__c b {
  background: var(--green);
}
.regmx__c u {
  text-decoration: none;
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
}
.regmx__n {
  font: 700 12px var(--grotesk);
  color: var(--green-deep);
  text-align: right;
}
.regpick {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 20px 0 12px;
}
.regpick button {
  border: 1px solid var(--rule);
  background: var(--panel);
  color: var(--muted-2);
  border-radius: 20px;
  padding: 7px 15px;
  cursor: pointer;
  font: 700 12px var(--zen);
}
.regpick button:hover {
  border-color: var(--green-pale-2);
  color: var(--green-deep);
}
.regpick button.is-on {
  background: var(--green-deep);
  border-color: var(--green-deep);
  color: #fff;
}
.reg-h {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--rule);
  background: var(--green-wash);
}
.reg-h b {
  font-size: 13.5px;
  color: var(--green-deep);
}
.reg-h span:last-child {
  font-size: 12px;
  color: var(--muted-2);
}
#reg-detail {
  border: 1px solid var(--rule);
  border-radius: 10px;
  background: var(--panel);
  overflow: hidden;
  display: block;
}
#reg-detail .pkg-item {
  border-bottom: 1px solid var(--rule);
}
#reg-detail .pkg-item:last-child {
  border-bottom: none;
}
/* 支援施策：畳む単位を原文の柱（大項目）に揃える。
   閉じているあいだは柱の一覧＋施策例の件数だけが並び、開くと
   課題 → 対応方針 → 主な施策例が上から順に出る。 */
#reg-detail .reg-item {
  padding: 0;
}
#reg-detail .reg-item__h {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0;
  padding: 13px 18px;
  cursor: pointer;
  list-style: none;
}
#reg-detail .reg-item__h::-webkit-details-marker {
  display: none;
}
#reg-detail .reg-item__h:hover {
  background: var(--green-wash);
}
#reg-detail .reg-item__h:focus-visible {
  outline: 2px solid var(--green-pale-2);
  outline-offset: -2px;
}
#reg-detail .reg-item__h::after {
  content: "＋";
  font: 700 12px var(--grotesk);
  color: var(--muted);
  flex: none;
}
#reg-detail .reg-item[open] > .reg-item__h::after {
  content: "−";
}
#reg-detail .reg-item[open] > .reg-item__h {
  border-bottom: 1px solid var(--rule);
}
#reg-detail .reg-item__h b {
  flex: 1 1 auto;
  line-height: 1.6;
}
#reg-detail .reg-item__n {
  font: 700 12px var(--grotesk);
  color: var(--muted-2);
  background: var(--grid);
  border-radius: 20px;
  padding: 2px 8px;
  flex: none;
  white-space: nowrap;
}
#reg-detail .reg-item__b {
  padding: 13px 18px 16px;
}
#reg-detail .pf-blk {
  margin-bottom: 12px;
}
#reg-detail .pf-blk__h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 10px;
}
#reg-detail .pf-blk > p {
  margin: 5px 0 0;
  font-size: 12px;
  line-height: 1.95;
  color: var(--ink-body);
}
@media (max-width: 760px) {
  .regmx__r {
    grid-template-columns: 1fr 36px;
  }
  .regmx__k {
    grid-column: 1 / -1;
  }
  #reg-detail .reg-item__h,
  #reg-detail .reg-item__b {
    padding-left: 13px;
    padding-right: 13px;
  }
  #reg-detail .reg-item__n {
    display: none;
  }
}
.regmx__hd {
  display: grid;
  grid-template-columns: 260px 1fr 40px;
  align-items: end;
  gap: 14px;
  padding: 0 10px 2px;
}
.regmx__hd .regmx__c {
  height: auto;
}
.regmx__hd i,
.regmx__hd span:last-child {
  flex: 1;
  font: 700 12px var(--zen);
  color: var(--muted);
  text-align: center;
  line-height: 1.5;
}
.regmx__hd span:last-child {
  font: 700 12px var(--grotesk);
  text-align: right;
}
.regmx__c s {
  text-decoration: none;
  font-size: 12px;
  line-height: 1.4;
  color: var(--muted-2);
  text-align: center;
}
@media (max-width: 760px) {
  .regmx__hd {
    display: none;
  }
}
.footer__ct {
  border: 0;
  background: none;
  padding: 0;
  font: inherit;
  color: var(--green-pale);
  text-decoration: underline;
  cursor: pointer;
}
.footer__ct:hover {
  color: #fff;
}

/* ===== ES-1 負の連鎖→楔→成長サイクルの3ステップ再生 ===== */
.arcbar {
  display: grid;
  gap: 10px;
  margin: 14px 0 4px;
  padding: 12px 14px;
  border: 1px solid var(--rule);
  border-radius: 10px;
  background: var(--panel);
}
.arcbar__play {
  justify-self: start;
  border: 1px solid var(--green-deep);
  background: var(--green-deep);
  color: #fff;
  border-radius: 20px;
  padding: 7px 16px;
  cursor: pointer;
  font: 700 12px var(--zen);
}
.arcbar__play:hover {
  background: var(--green);
  border-color: var(--green);
}
.arcbar__steps {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
  padding: 0;
  counter-reset: arc;
}
.arcbar__steps button {
  border: 1px solid var(--rule);
  background: #fff;
  color: var(--muted-2);
  border-radius: 20px;
  padding: 6px 13px;
  cursor: pointer;
  font: 700 12px var(--zen);
}
.arcbar__steps button:hover {
  border-color: var(--green-pale-2);
  color: var(--green-deep);
}
.arcbar__steps button.is-on {
  background: var(--marker);
  border-color: var(--green-pale-2);
  color: var(--green-deep);
}
.arcbar__cap {
  margin: 0;
  min-height: 2.2em;
  font-size: 12px;
  line-height: 1.9;
  color: var(--ink-body);
}
/* 楔は既定で見えている。再生を armed したときだけ隠して打ち込む */
.cyWedge.armed {
  opacity: 0;
  transform: translateY(-30px);
}
.cyWedge.armed.is-in {
  opacity: 1;
  transform: none;
  transition:
    opacity 0.35s ease,
    transform 0.55s cubic-bezier(0.22, 1.4, 0.4, 1);
}
@media (prefers-reduced-motion: reduce) {
  .cyWedge.armed {
    opacity: 1;
    transform: none;
  }
}

/* 情報量の少ない図を左右に並べる */
.duo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 34px;
  /* 2枚のカードの高さを揃える。中身は上寄せのままで、枠だけを伸ばす */
  align-items: stretch;
  margin: 8px 0;
}
.duo > .viz,
.duo > figure {
  margin: 0;
  min-width: 0;
}
.duo .bar {
  grid-template-columns: minmax(96px, max-content) 1fr 64px;
}
@media (max-width: 860px) {
  .duo {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* 2つの成長軌道と、それを下から加速するAX */
.tracks {
  display: grid;
  gap: 0;
  margin: 8px 0;
}
.tracks__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.tracks__link {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  justify-items: center;
  padding: 5px 0;
}
.tracks__arw {
  height: 30px;
  width: auto;
  display: block;
}
.tracks__arw path {
  fill: none;
  stroke: var(--green);
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.tracks__ax {
  border-color: var(--green-pale-2) !important;
  background: var(--green-wash) !important;
}
@media (max-width: 700px) {
  .tracks__row {
    grid-template-columns: 1fr;
  }
  .tracks__link {
    grid-template-columns: 1fr;
    padding: 3px 0;
  }
  .tracks__arw {
    height: 24px;
  }
  .tracks__link .tracks__arw:last-child {
    display: none;
  }
}

/* Aboutの「図の作り方」対照表。本文と同じ幅で、狭い画面では横スクロールさせる。 */
.lic-tbl {
  width: 100%;
  border-collapse: collapse;
  margin: 14px 0 4px;
  font-size: 13px;
  display: block;
  overflow-x: auto;
}
.lic-tbl th,
.lic-tbl td {
  border: 1px solid var(--rule);
  padding: 9px 12px;
  text-align: left;
  vertical-align: top;
  color: var(--muted-2);
}
.lic-tbl th {
  background: var(--grid);
  color: var(--ink);
  font-weight: 600;
  white-space: nowrap;
}
.lic-tbl td:first-child {
  white-space: nowrap;
  color: var(--ink);
}

/* ================= 本編の構成（全体像＋PARTの持ち場） =================
   ES-1 の全体像の図を複製し、その上にPARTの枠と番号札を重ねる。色は中扉の
   「いま、ここ」（.enghi）と同じ琥珀色で揃え、同じ意味の印だと分かるようにする。 */
.mapguide__fig {
  margin: 6px 0 0;
  padding: 20px 22px 22px;
  border-radius: 12px;
}
@media (max-width: 900px) {
  .mapguide__fig {
    margin: 6px 0 0;
    padding: 16px 14px 18px;
  }
}
.mapguide__fig svg {
  min-width: 700px;
}
.mgframe {
  fill: none;
  stroke: rgba(242, 200, 148, 0.42);
  stroke-width: 1.6;
  stroke-dasharray: 3 6;
}
.mgframe__t {
  fill: rgba(242, 200, 148, 0.82);
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
}
.mgbox {
  fill: none;
  stroke: #f2c894;
  stroke-width: 2.4;
}
.mgpill {
  fill: #f2c894;
}
.mgpill__t {
  fill: #11261a;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
}
.mgpin {
  transition:
    opacity 0.18s ease,
    filter 0.18s ease;
}
.mgpin a {
  cursor: pointer;
}
/* 一覧の行に触れているあいだ、その持ち場だけを残して他を沈める。
   図の本体をまとめて沈めると、読ませたい当のブロックの文字まで薄くなるので、
   持ち場の矩形に入る要素だけを元の明るさで残し、外の要素に .mgdim を付ける。 */
.mgbase > * {
  transition: opacity 0.18s ease;
}
.mapguide.is-focus .mgbase > .mgdim {
  opacity: 0.28;
}
.mapguide.is-focus .mgpin {
  opacity: 0.22;
}
.mapguide.is-focus .mgpin.is-on {
  opacity: 1;
}
.mapguide.is-focus .mgpin.is-on .mgbox {
  stroke-width: 4;
  filter: drop-shadow(0 0 7px rgba(242, 200, 148, 0.5));
}
.mapguide.is-focus .mgpin.is-on .mgframe {
  stroke: rgba(242, 200, 148, 0.9);
  stroke-width: 2.4;
}
.mgbase {
  transition: opacity 0.18s ease;
}
/* PARTの一覧＝図の凡例。番号・見出し・図のどこを扱うかの3列 */
.mapkey {
  list-style: none;
  margin: 18px 0 0;
  padding: 0;
  max-width: 960px;
}
.mapkey__i > a {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) minmax(0, 1.15fr);
  gap: 0 16px;
  align-items: baseline;
  padding: 10px 10px 9px;
  border-radius: 8px;
  border-bottom: 1px solid var(--rule);
  text-decoration: none;
  color: inherit;
}
.mapkey__i:last-child > a {
  border-bottom: 0;
}
.mapkey__i > a:hover,
.mapkey__i > a:focus-visible {
  background: rgba(47, 107, 75, 0.07);
  outline: none;
}
.mapkey__n {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.12em;
  color: var(--green);
}
.mapkey__t {
  font-size: 13px;
  font-weight: 700;
  line-height: 1.7;
  color: var(--green-deep);
}
.mapkey__w {
  font-size: 12px;
  line-height: 1.8;
  color: var(--muted-2);
}
@media (max-width: 720px) {
  .mapkey__i > a {
    grid-template-columns: 62px minmax(0, 1fr);
    gap: 0 12px;
  }
  .mapkey__w {
    grid-column: 2;
  }
}

/* ================= 目次の段構造 =================
   PART見出し → 節 → 小見出し の3段。節にだけアイコンが付くぶん、節の文字だけが
   右へ押し出され、小見出しが親より左に来ていた（親54px・子46px）。段が逆に見える
   原因はここ。小見出しを親の文字より右へ送り、親の文字の位置に細い罫を通して
   「この節の中身」だと分かるようにする。 */
.side-nav a.sub {
  position: relative;
  padding-left: 40px; /* 文字の左端 66px＝節の文字（54px）より右 */
}
.side-nav a.sub::before {
  content: "";
  position: absolute;
  left: 28px; /* 節の文字の左端（54px）に合わせる */
  top: 0;
  bottom: 0;
  width: 1px;
  background: var(--rule);
}
/* 小見出しが現在地のときは、左端の縦棒ではなく、この入れ子の罫のほうを立てる */
.side-nav a.sub.active {
  border-left-color: transparent;
}
.side-nav a.sub.active::before {
  width: 2px;
  background: var(--green);
}

/* 節を1つずつ独立した描画単位にする。画面外の節はレイアウトを飛ばせるので、
   アコーディオンを開いて文書高が変わっても、後ろ全部を組み直さずに済む。
   （実測：分野アコーディオン1つの開閉が 40〜120ms → 12〜17ms）
   contain-intrinsic-size を auto にして、一度測った高さを覚えさせ、
   スクロールバーが跳ねないようにする。 */
.wrap > section {
  content-visibility: auto;
  contain-intrinsic-size: auto 900px;
}
/* 中扉は短いので、初回の見積もり高さを実寸に近づける */
.wrap > section.gate {
  contain-intrinsic-size: auto 520px;
}
/* 印刷時は画面外の節も出す必要がある */
@media print {
  .wrap > section,
  .wrap > section.gate {
    content-visibility: visible;
  }
}


/* Ｂ｜金額で明記された目標：市場規模（対数）×獲得率の散布図。
   横棒だと獲得率しか出ないので、円の面積で目標額そのものも見えるようにしている。 */
.scat {
  display: block;
  width: 100%;
  height: auto;
  margin: 4px 0 2px;
  overflow: visible;
}
.scat__grid line {
  stroke: var(--grid);
  stroke-width: 1;
}
.scat__ax text {
  font: 500 12px var(--grotesk);
  fill: var(--muted);
}
.scat__ax .axname {
  font: 600 12px var(--grotesk);
  fill: var(--muted-2);
  letter-spacing: 0.04em;
}
.scat__ax .base {
  stroke: var(--rule-2);
  stroke-width: 1.2;
}
.scat__ax .tick {
  stroke: var(--rule-2);
  stroke-width: 1;
}
.scat__pt circle {
  fill-opacity: 0.42;
  stroke-width: 1.4;
  transition:
    fill-opacity 0.18s ease,
    r 0.18s ease;
}
.scat__pt text {
  font: 500 12px var(--zen);
  fill: var(--ink-body);
  pointer-events: none;
}
.scat__pt .pc {
  font: 700 12px var(--grotesk);
  fill: var(--ink);
}
.scat__pt {
  cursor: help;
}
.scat__pt:hover circle,
.scat__pt:focus-visible circle {
  fill-opacity: 0.72;
}
.scat__pt:focus-visible {
  outline: none;
}
.scat__pt:focus-visible text {
  text-decoration: underline;
}
/* 帯の色分けは2-1の政策目的の群に合わせる */
.scat__pt.g1 circle {
  fill: var(--green);
  stroke: var(--green-deep);
}
.scat__pt.g3 circle {
  fill: var(--quit);
  stroke: #8f5a20;
}
.scat__read {
  margin: 14px 0 0;
  font-size: 12.5px;
  line-height: 1.95;
  color: var(--ink-body);
}
.scat__tbl {
  margin: 12px 0 0;
}
.scat__tbl > summary {
  cursor: pointer;
  font: 600 12px var(--zen);
  color: var(--muted-2);
}
.scat__tbl .lic-tbl {
  font-size: 12px;
}
/* 狭い画面で文字が潰れるので、縮めずに横スクロールさせる */
.scat-wrap {
  overflow-x: auto;
  margin: 4px -4px 2px;
  padding: 0 4px;
}
@media (max-width: 760px) {
  .scat {
    min-width: 620px;
  }
}
/* 同じボタンを明るい背景（About）でも使うので、色だけ差し替える */
.footer__ct--light {
  color: var(--green);
}
.footer__ct--light:hover {
  color: var(--green-deep);
}

/* 節ごとの見積もり高さ（実測値を焼き込み）。
   ここがずれると読み進めるたびにスクロールバーが伸縮するので、
   1280px と 430px でそれぞれ閉じた状態の高さを測って入れている。
   auto を付けているので、一度描画された節は実寸に置き換わる。 */
#es1 {
  contain-intrinsic-size: auto 2283px;
}
#gate1 {
  contain-intrinsic-size: auto 799px;
}
#s11 {
  contain-intrinsic-size: auto 4807px;
}
#s12 {
  contain-intrinsic-size: auto 3679px;
}
#gate2 {
  contain-intrinsic-size: auto 771px;
}
#s21 {
  contain-intrinsic-size: auto 2262px;
}
#s23 {
  contain-intrinsic-size: auto 4313px;
}
#s24 {
  contain-intrinsic-size: auto 1834px;
}
#gate3 {
  contain-intrinsic-size: auto 771px;
}
#s31 {
  contain-intrinsic-size: auto 2996px;
}
#s32 {
  contain-intrinsic-size: auto 1405px;
}
#s51 {
  contain-intrinsic-size: auto 2508px;
}
#s53 {
  contain-intrinsic-size: auto 1474px;
}
#s41 {
  contain-intrinsic-size: auto 2409px;
}
#s42 {
  contain-intrinsic-size: auto 1877px;
}
#s43 {
  contain-intrinsic-size: auto 2087px;
}
#gate4 {
  contain-intrinsic-size: auto 799px;
}
#s61 {
  contain-intrinsic-size: auto 2596px;
}
#s71 {
  contain-intrinsic-size: auto 3362px;
}
#s63 {
  contain-intrinsic-size: auto 2313px;
}
#a1 {
  contain-intrinsic-size: auto 3777px;
}
#astruct {
  contain-intrinsic-size: auto 1106px;
}
#aitems {
  contain-intrinsic-size: auto 3809px;
}
#ak8 {
  contain-intrinsic-size: auto 1604px;
}
#a2 {
  contain-intrinsic-size: auto 1160px;
}
#a3 {
  contain-intrinsic-size: auto 1439px;
}
#a4 {
  contain-intrinsic-size: auto 2999px;
}
@media (max-width: 760px) {
  #es1 {
    contain-intrinsic-size: auto 3401px;
  }
  #gate1 {
    contain-intrinsic-size: auto 801px;
  }
  #s11 {
    contain-intrinsic-size: auto 7106px;
  }
  #s12 {
    contain-intrinsic-size: auto 5707px;
  }
  #gate2 {
    contain-intrinsic-size: auto 715px;
  }
  #s21 {
    contain-intrinsic-size: auto 3302px;
  }
  #s23 {
    contain-intrinsic-size: auto 6925px;
  }
  #s24 {
    contain-intrinsic-size: auto 3108px;
  }
  #gate3 {
    contain-intrinsic-size: auto 744px;
  }
  #s31 {
    contain-intrinsic-size: auto 5637px;
  }
  #s32 {
    contain-intrinsic-size: auto 2056px;
  }
  #s51 {
    contain-intrinsic-size: auto 3593px;
  }
  #s53 {
    contain-intrinsic-size: auto 2639px;
  }
  #s41 {
    contain-intrinsic-size: auto 3548px;
  }
  #s42 {
    contain-intrinsic-size: auto 2607px;
  }
  #s43 {
    contain-intrinsic-size: auto 3361px;
  }
  #gate4 {
    contain-intrinsic-size: auto 801px;
  }
  #s61 {
    contain-intrinsic-size: auto 3531px;
  }
  #s71 {
    contain-intrinsic-size: auto 5716px;
  }
  #s63 {
    contain-intrinsic-size: auto 3034px;
  }
  #a1 {
    contain-intrinsic-size: auto 5924px;
  }
  #astruct {
    contain-intrinsic-size: auto 1252px;
  }
  #aitems {
    contain-intrinsic-size: auto 5038px;
  }
  #ak8 {
    contain-intrinsic-size: auto 2296px;
  }
  #a2 {
    contain-intrinsic-size: auto 1451px;
  }
  #a3 {
    contain-intrinsic-size: auto 1541px;
  }
  #a4 {
    contain-intrinsic-size: auto 5367px;
  }
}

/* ===== 用語集（A-3）と、本文に置く用語チップ ===== */
/* 本文の語に付く点線。出どころを示す .sb バッジと役割が違うので、色は持たせない。 */
.gl {
  border-bottom: 1px dotted var(--green);
  cursor: help;
}
.gl::after {
  content: "?";
  font-family: var(--grotesk);
  font-size: 0.62em;
  font-weight: 700;
  color: var(--green);
  vertical-align: 0.42em;
  margin-left: 1px;
}
.gl:hover,
.gl:focus-visible {
  background: var(--marker);
  border-bottom-color: var(--green-deep);
}
.gloss {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 14px 0 0;
}
.gl-item {
  border: 1px solid var(--rule);
  border-left: 3px solid var(--green-pale-2);
  border-radius: 3px;
  background: var(--panel);
  padding: 11px 14px;
}
.gl-item:target {
  border-left-color: var(--green-deep);
  background: var(--marker);
}
.gloss summary {
  font-family: var(--zen);
  font-weight: 700;
  font-size: 14px;
  color: var(--ink);
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  cursor: pointer;
  list-style: none;
}
.gloss summary::-webkit-details-marker {
  display: none;
}
/* ＋／− で開閉を示す。語だけ並ぶ状態から、押すと定義が出る */
.gloss summary::before {
  content: "＋";
  font-family: var(--grotesk);
  font-size: 12px;
  font-weight: 700;
  color: var(--green);
  width: 14px;
  flex: none;
}
.gl-item[open] > summary::before {
  content: "−";
}
.gloss summary:hover {
  color: var(--green-deep);
}
.gl-def {
  margin: 7px 0 0 14px;
  font-size: 13px;
  line-height: 1.85;
  color: var(--ink-body);
}
.gl-def b {
  color: var(--ink);
}
.gl-ref {
  font-family: var(--grotesk);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--green);
  border: 1px solid var(--green-pale);
  border-radius: 999px;
  padding: 1px 8px;
  text-decoration: none;
  white-space: nowrap;
}
.gl-ref:hover {
  background: var(--chrome);
  border-color: var(--green-deep);
  color: var(--paper);
}
@media (max-width: 760px) {
  .gloss dt {
    font-size: 13px;
  }
  .gloss dd {
    font-size: 12.5px;
  }
}

/* ===== 3-1「手段の重さは項目ごとに違う」：3つの関門でどこが欠けるか ===== */
/* 3つの型は「作れる／売れる／残る」のどこが最初に欠けるかで分かれる。
   関門の帯を各カードの先頭に置き、○×の位置で重ならないことを見せる。 */
.lanes {
  display: grid;
  grid-template-columns: repeat(3, minmax(240px, 1fr));
  gap: 14px;
  align-items: stretch;
  min-width: 720px;
}
/* カードの中の5つのブロック（関門・型名・診断・該当・施策）を、
   3枚で同じ行に載せる。該当の項目数が違っても境目が揃う。 */
@supports (grid-template-rows: subgrid) {
  .lanes {
    grid-template-rows: repeat(5, auto);
  }
  .lanes > .lane {
    grid-row: 1 / -1;
    display: grid;
    grid-template-rows: subgrid;
    row-gap: 8px;
  }
  .lane__row--it {
    flex: 0 1 auto;
  }
}
.lane {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border: 1px solid var(--rule);
  border-top: 3px solid var(--rule-2);
  border-radius: 4px;
  background: var(--panel);
  padding: 12px 14px 14px;
}
.lane--dem {
  border-top-color: #3d6e51;
}
.lane--sup {
  border-top-color: #567f66;
}
.lane--str {
  border-top-color: #b5762f;
}
.lane__gates {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
}
/* 3-1 レーンの関門バッジ。図表凡例の .lg（上方で定義）と同名だと
   後勝ちで凡例が太字・中央寄せになるため、専用クラスに分けている。 */
.lgate {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-align: center;
  padding: 4px 2px;
  border-radius: 3px;
  white-space: nowrap;
}
.lgate--ok {
  background: var(--marker);
  color: var(--green-deep);
}
.lgate--ng {
  background: var(--quit-pale);
  color: #8a5312;
}
.lgate--na {
  background: var(--grid);
  color: var(--muted);
}
.lgate--ng::before {
  content: "✕ ";
}
.lgate--ok::before {
  content: "○ ";
}
.lane h4 {
  margin: 2px 0 0;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
}
.lane__dx {
  margin: 0;
  font-size: 12px;
  line-height: 1.75;
  color: var(--ink-body-2);
}
.lane__row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: baseline;
  align-content: flex-start;
  border-top: 1px dashed var(--rule);
  padding-top: 8px;
}
/* 該当項目の数はカードごとに違う。ここで余白を吸わせて、
   その下の「先頭に来る施策」を3枚とも同じ高さに揃える。 */
.lane__row--it {
  flex: 1;
}
.lane__row > b {
  width: 100%;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--muted-2);
}
.lane__it,
.lane__ac {
  font-size: 12px;
  line-height: 1.5;
  padding: 3px 8px;
  border-radius: 999px;
  white-space: nowrap;
}
.lane__it {
  border: 1px solid var(--rule-2);
  color: var(--ink-body);
}
.lane__ac {
  background: var(--green-deep);
  color: var(--paper);
  font-weight: 700;
}
.lane--str .lane__ac {
  background: #8a5312;
}
@media (max-width: 760px) {
  .lanes {
    grid-template-columns: 1fr;
    min-width: 0;
  }
}

/* ===== 8課題の目標（KPI）：1件ごとに「いつ」を頭出しする ===== */
/* 目標（KPI）：原文の1文に複数の目標が入っているので、年限・指標・目標・現状に割る */
.k8g-wrap {
  margin-top: 8px;
  overflow-x: auto;
}
table.k8g {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  line-height: 1.7;
}
table.k8g th,
table.k8g td {
  text-align: left;
  vertical-align: top;
  padding: 6px 10px 6px 0;
  border-bottom: 1px solid var(--rule);
}
table.k8g thead th {
  font: 700 12px var(--grotesk);
  letter-spacing: 0.1em;
  color: var(--muted);
  border-bottom: 1px solid var(--green-pale-2);
  white-space: nowrap;
}
table.k8g thead th:first-child,
.k8g__y {
  width: 1px;
  white-space: nowrap;
}
.k8g__y {
  font-weight: 700;
  color: var(--green-deep);
}
.k8g__y--none {
  color: var(--muted-2);
  font-weight: 500;
}
.k8g__g {
  font-weight: 700;
  color: var(--ink);
}
.k8g__c {
  color: var(--muted);
}
/* 課題見出しの1行要旨。畳んだままでも中身の見当がつくようにする。 */
.k8lead {
  flex-basis: 100%;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
}
/* 現状と課題／対応の方向性：3点なので畳まず出す */
.k8blk {
  border: 1px solid var(--rule);
  border-radius: 8px;
  background: #fff;
}
.k8blk__h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  padding: 9px 12px 0;
}
.k8blk .k8pts {
  padding-bottom: 11px;
}
@media (max-width: 620px) {
  table.k8g {
    min-width: 520px;
  }
}

/* ================= 中扉の墨 ================= */
.gate {
  position: relative;
  overflow: hidden;
}
.gate__ink {
  position: absolute;
  top: 26px;
  right: 40px;
  width: 168px;
  height: 92px;
  fill: var(--ink);
  opacity: 0.09;
  pointer-events: none;
}
/* PARTごとに向きを変え、進んでいることが分かるようにする */
#gate2 .gate__ink { transform: scaleX(-1) rotate(-4deg); opacity: 0.075; }
#gate3 .gate__ink { transform: rotate(6deg); }
#gate4 .gate__ink { transform: scaleX(-1) rotate(3deg); opacity: 0.085; }
@media (max-width: 760px) {
  .gate__ink {
    width: 110px;
    height: 62px;
    right: 14px;
    top: 18px;
  }
}
/* 定義用のSVGは描画しない */
.ink-defs {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

/* ================= 4-1 要件マトリクス（A・B・Cに何が課されているか） ================= */
.vh {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.gv--req {
  min-width: 700px;
}
.gv--req thead th {
  font: 700 12px var(--zen);
  color: var(--ink);
  letter-spacing: 0;
  text-align: left;
  padding: 0 6px 12px;
  vertical-align: bottom;
}
.gv--req thead th em {
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  margin-right: 7px;
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: #fff;
  vertical-align: -4px;
}
.gv--req thead th small {
  display: block;
  font: 400 12px var(--zen);
  color: var(--muted-2);
  margin-top: 5px;
  letter-spacing: 0;
}
.gv--req thead th.typ--a em {
  background: var(--g1);
}
.gv--req thead th.typ--b em {
  background: var(--g3);
}
.gv--req thead th.typ--c em {
  background: var(--g5);
}
.gv--req tbody tr.gvg th {
  padding: 20px 0 7px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted-2);
  border-bottom: 1px solid var(--rule);
}
.gv--req tbody tr.gvg:first-child th {
  padding-top: 2px;
}
.gv--req tbody th small {
  font-size: 12px;
  margin-top: 1px;
}
.gv--req tbody td {
  width: 150px;
  height: 1px; /* 子の height:100% を解決させ、行の高さいっぱいにセルを伸ばす */
}
.gv--req .c {
  flex-direction: column;
  min-height: 36px;
  height: 100%;
  box-sizing: border-box;
  padding: 7px;
}
.gv--req .c small {
  display: block;
  color: inherit;
  font: 400 12px var(--zen);
  letter-spacing: 0;
  line-height: 1.65;
  margin-top: 4px;
  opacity: 0.78;
}
.gv--req tbody tr.is-key th {
  font-size: 12.5px;
}
.gv--req tbody tr.is-key .c {
  min-height: 42px;
}
@media (max-width: 760px) {
  .gv--req {
    min-width: 560px;
    font-size: 12px;
  }
  .gv--req tbody td {
    width: 96px;
  }
  .gv--req thead th {
    font-size: 12px;
  }
}

/* ================= 7-2 産業政策の5つの部品（①〜④は揃い、⑤だけ空いている） ================= */
.parts5 {
  display: grid;
  grid-template-columns: repeat(4, minmax(140px, 1fr)) minmax(250px, 1.45fr);
  gap: 10px;
  min-width: 860px;
  margin: 4px 0 2px;
}
.parts5__band {
  grid-row: 1;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  padding: 0 0 7px 2px;
}
.parts5__band--on {
  grid-column: 1 / 5;
  color: var(--green-deep);
  border-bottom: 1px solid var(--green-pale-2);
}
.parts5__band--off {
  grid-column: 5 / 6;
  color: var(--quit);
  border-bottom: 1px dashed var(--quit-pale);
}
.parts5__p {
  grid-row: 2;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--rule-2);
  background: var(--panel);
  border-radius: 3px;
  padding: 14px 15px 15px;
}
.parts5__p em {
  display: grid;
  place-items: center;
  width: 21px;
  height: 21px;
  border-radius: 50%;
  background: var(--green-deep);
  color: var(--paper);
  font: 700 12px var(--grotesk);
  font-style: normal;
  margin-bottom: 9px;
}
.parts5__p b {
  font: 700 12.5px var(--zen);
  color: var(--ink);
  line-height: 1.7;
}
.parts5__p > span {
  display: block;
  font: 400 12px var(--zen);
  color: var(--muted-2);
  line-height: 1.85;
  margin-top: 6px;
}
.parts5__p--gap {
  background: 0 0;
  border: 1.5px dashed var(--quit);
}
.parts5__p--gap em {
  background: var(--quit);
}
.parts5__p--gap b {
  color: var(--quit);
}
.parts5__in {
  margin-top: 12px;
  padding-top: 11px;
  border-top: 1px dashed var(--quit-pale);
}
.parts5__in p {
  margin: 0 0 8px;
  font-size: 12px;
  line-height: 1.9;
  color: var(--ink-body);
  max-width: none;
}
.parts5__in p:last-child {
  margin-bottom: 0;
}
.parts5__in i {
  display: block;
  width: fit-content;
  font: 700 12px var(--grotesk);
  font-style: normal;
  letter-spacing: 0.06em;
  border-radius: 2px;
  padding: 3px 7px;
  margin-bottom: 4px;
}
.parts5__fill {
  margin: 12px 0 0;
  padding-top: 10px;
  border-top: 1px dashed var(--quit-pale);
  font: 700 12px var(--zen);
  line-height: 1.8;
  color: var(--green-deep);
  max-width: none;
}
.parts5__fill::before {
  content: "→ ";
}
@media (max-width: 860px) {
  .parts5 {
    min-width: 680px;
    grid-template-columns: repeat(4, minmax(112px, 1fr)) minmax(210px, 1.4fr);
  }
}
/* 7-2 観測点：上段＝結論を動かす／下段＝戦略の効き目 */
.rm-t--obs tr.grp th {
  background: 0 0;
  border-bottom: 1px solid var(--rule);
  padding: 20px 0 7px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted-2);
  text-align: left;
}
.rm-t--obs tbody tr:first-child.grp th {
  padding-top: 8px;
}
.rm-t--obs tr.grp {
  background: 0 0 !important;
}
/* ================= READABILITY & MOBILE (review 2026-08-09) ================= */
/* 横スクロール操作案内。JSがはみ出しを検知して .on を付ける */
.xscroll-hint {
  display: none;
  margin: 2px 0 4px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.06em;
  color: var(--muted-2);
  max-width: none;
}
.xscroll-hint.on {
  display: block;
}
@media print {
  .xscroll-hint {
    display: none !important;
  }
}
/* モバイルは本文を16px以上に */
@media (max-width: 720px) {
  body {
    font-size: 16px;
  }
}
/* 単純な表はモバイルでカード形式に変換（JSが gv-cardable と data-label を付与） */
@media (max-width: 640px) {
  table.gv-cardable {
    display: block;
    min-width: 0 !important;
    width: 100%;
  }
  table.gv-cardable thead {
    display: none;
  }
  table.gv-cardable tbody {
    display: block;
  }
  table.gv-cardable tbody tr {
    display: block;
    border: 1px solid var(--rule-2);
    border-radius: 6px;
    background: var(--panel);
    padding: 10px 14px;
    margin: 0 0 10px;
  }
  table.gv-cardable tbody th {
    display: block;
    text-align: left;
    border: none;
    padding: 0 0 8px;
    font-size: 13px;
    white-space: normal;
  }
  table.gv-cardable tbody td {
    display: flex;
    flex-wrap: wrap;
    gap: 2px 10px;
    align-items: baseline;
    border: none;
    padding: 3px 0;
    white-space: normal;
  }
  table.gv-cardable tbody td::before {
    content: attr(data-label);
    flex: 0 0 auto;
    min-width: 6.5em;
    font: 700 12px var(--grotesk);
    color: var(--muted-2);
  }
  table.gv-cardable tbody td:empty {
    display: none;
  }
}
/* Partの着地（次Partへのブリッジ） */
.gate-bridge {
  margin: 30px 0 6px;
  max-width: 960px;
  padding: 16px 22px;
  border-left: 3px solid var(--green-deep);
  background: var(--green-wash);
  border-radius: 0 8px 8px 0;
  font-size: 14px;
  line-height: 2.05;
  color: var(--ink);
}

/* ===== 中扉のPart色。見取り図の4色と対応させる ===== */
#gate1 { --part-c: #8d7a70; }
#gate2 { --part-c: #4d5b6b; }
#gate3 { --part-c: #4a5a4f; }
#gate4 { --part-c: #5a5162; }
.gate .gate__no {
  color: var(--part-c, var(--chrome-2));
}
/* 個票の数値帯。旧マスター表の値を個票の中に持ち込み、
   62項目を1つの様式で読めるようにする。 */
.pkf {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  align-items: baseline;
  margin: 8px 0 12px;
  padding: 9px 12px;
  border: 1px solid var(--rule);
  border-radius: 6px;
  background: var(--panel);
}
.pkf__i {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  padding-right: 10px;
  border-right: 1px solid var(--rule);
}
.pkf__i:last-of-type {
  border-right: none;
  padding-right: 0;
}
.pkf__i i {
  font-style: normal;
  font-size: 11px;
  color: var(--muted-2);
}
.pkf__i b {
  font: 700 14px var(--grotesk);
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.pkf__i u {
  text-decoration: none;
  font-size: 11px;
  color: var(--muted-2);
}
.pkf__n {
  flex: 1 1 100%;
  font-size: 11.5px;
  line-height: 1.8;
  color: var(--muted-2);
}
/* 評価マトリクスの行見出しに添える、4-1のつなぎ目番号 */
.gv--verd th small.gv-j {
  display: block;
  margin-top: 3px;
  font: 400 11px var(--zen);
  color: var(--muted-2);
  letter-spacing: 0;
}
/* ===== 4地域の産業政策比較：列幅を揃え、セルを行の高さいっぱいに ===== */
.gv--reg {
  table-layout: fixed;
  min-width: 820px;
}
.gv--reg tbody th {
  width: 21%;
}
.gv--reg tbody td {
  width: 19.75%;
  /* 子要素に height:100% を効かせるための下敷き。実際の高さは中身が決める */
  height: 1px;
}
.gv--reg .c2 {
  height: 100%;
  width: 100%;
  box-sizing: border-box;
  justify-content: flex-start;
}
/* ================= TOP10：1枚で読ませる横棒＋数値 ================= */
.rm-t10-stat {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin: 4px 0 12px;
}
.rm-t10-stat b {
  font: 700 34px var(--grotesk);
  color: var(--green-deep);
  line-height: 1.1;
}
.rm-t10-stat span {
  font-size: 12px;
  line-height: 1.8;
  color: var(--muted-2);
}
.t10 {
  min-width: 620px;
  display: grid;
  gap: 4px;
}
.t10hd,
.t10r {
  display: grid;
  grid-template-columns: 28px 1fr 92px 104px 84px;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
}
.t10hd {
  padding-bottom: 4px;
  border-bottom: 1px solid var(--rule);
  font-size: 11.5px;
  color: var(--muted-2);
}
.t10hd b {
  font-weight: 400;
  font-size: 11.5px;
  color: var(--muted-2);
  text-align: right;
}
.t10r {
  position: relative;
  border: 1px solid var(--rule-2);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}
/* 投資額に比例した帯を、行の背景として敷く */
.t10r::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: var(--w, 0%);
  background: var(--c);
  opacity: 0.16;
  pointer-events: none;
}
.t10r > * {
  position: relative;
}
.t10r i {
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.t10r i::before {
  content: "";
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--c);
  flex: none;
}
.t10r__t {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--ink-body);
}
.t10r__a,
.t10r__e,
.t10r__p {
  text-align: right;
  font: 700 14px var(--grotesk);
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.t10r__e,
.t10r__p {
  color: var(--ink-body);
  font-size: 13px;
}
.t10r__a u,
.t10r__e u,
.t10r__p u {
  text-decoration: none;
  margin-left: 2px;
  font: 400 10.5px var(--zen);
  color: var(--muted-2);
}
@media (max-width: 760px) {
  .t10hd {
    display: none;
  }
  .t10r {
    grid-template-columns: 26px 1fr;
    row-gap: 2px;
  }
  .t10r__a,
  .t10r__e,
  .t10r__p {
    grid-column: 2;
    text-align: left;
    font-size: 12.5px;
  }
  .t10r__a::after { content: " 官民投資額"; font: 400 10.5px var(--zen); color: var(--muted-2); }
  .t10r__e::after { content: " 経済波及効果"; font: 400 10.5px var(--zen); color: var(--muted-2); }
  .t10r__p::after { content: " 単純合計比"; font: 400 10.5px var(--zen); color: var(--muted-2); }
}
/* ================= バッジの見取り図 =================
   5つのバッジを1列に並べ、上に「公表資料／本資料の手が入った部分」の帯を
   渡して、どこが境目かを図で示す。各カードは --col で列を明示する。 */
.bdgmap {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  min-width: 780px;
  position: relative;
  padding-top: 4px;
}
.bdgmap__band {
  grid-row: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 8px 14px;
  border-radius: 4px;
  font: 700 12.5px var(--zen);
  line-height: 1.5;
}
.bdgmap__band small {
  display: block;
  margin-top: 3px;
  font: 400 11px var(--zen);
  opacity: 0.85;
}
.bdgmap__band--src {
  grid-column: 1 / 4;
  background: var(--green-wash);
  color: var(--green-deep);
  border: 1px solid var(--green-pale);
}
.bdgmap__band--own {
  grid-column: 4 / 6;
  background: var(--amber-wash);
  color: var(--amber-deep);
  border: 1px solid var(--quit-pale);
}
.bdgmap__i {
  grid-row: 2;
  grid-column: var(--col);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding: 12px 12px 14px;
  border: 1px solid var(--rule);
  border-top: 3px solid var(--green-pale);
  border-radius: 0 0 4px 4px;
  background: var(--panel);
}
.bdgmap__i--own {
  border-top-color: var(--quit-pale);
}
.bdgmap__i small {
  font: 400 11.5px var(--zen);
  line-height: 1.75;
  color: var(--muted-2);
}
/* 3列目と4列目のあいだ。グリッドの列を占有すると5つ目が押し出されるので
   絶対配置にする。5等分＋8pxのgapなので、その隙間の中心は 60%+0.8px。 */
.bdgmap__edge {
  position: absolute;
  top: 0;
  bottom: 0;
  left: calc(60% + 0.8px);
  margin-left: -1px;
  width: 0;
  border-left: 2px dashed var(--quit);
  opacity: 0.55;
  pointer-events: none;
}
@media (max-width: 820px) {
  /* 縦積み。DOM順が 帯→3枚→帯→2枚 なので、フレックスにするだけで並ぶ */
  .bdgmap {
    display: flex;
    flex-direction: column;
    min-width: 0;
    gap: 6px;
  }
  .bdgmap__band--own {
    margin-top: 10px;
  }
  .bdgmap__i {
    border-top-width: 3px;
    border-radius: 4px;
  }
  .bdgmap__edge {
    display: none;
  }
}
/* ================= 産業政策の設計プロセス =================
   縦に積むので横スクロールが要らない。1〜5と6〜7のあいだに切れ目を渡す。 */
.proc {
  display: grid;
  gap: 4px;
  margin: 4px 0 0;
}
.proc__hd {
  display: grid;
  grid-template-columns: 30px minmax(150px, 220px) 1fr;
  gap: 12px;
  padding: 0 12px 6px;
  border-bottom: 1px solid var(--rule);
  font-size: 11.5px;
  color: var(--muted-2);
}
.proc__hd span:first-child {
  grid-column: 1 / 3;
}
.proc__r {
  display: grid;
  grid-template-columns: 30px minmax(150px, 220px) 1fr;
  gap: 12px;
  align-items: baseline;
  padding: 11px 12px;
  border: 1px solid var(--rule);
  border-left: 3px solid var(--green-pale-2);
  border-radius: 0 4px 4px 0;
  background: var(--panel);
}
.proc__r em {
  font: 700 12px var(--grotesk);
  font-style: normal;
  color: var(--muted);
}
.proc__r b {
  font: 700 13.5px var(--zen);
  color: var(--ink);
}
.proc__r span {
  font-size: 12.5px;
  line-height: 1.8;
  color: var(--ink-body);
}
.proc__r--off {
  border-left-color: var(--quit);
  background: var(--amber-wash);
}
.proc__r--off b {
  color: var(--amber-deep);
}
.proc__cut {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 6px 0 2px;
  font: 700 11.5px var(--zen);
  color: var(--quit);
}
.proc__cut::before,
.proc__cut::after {
  content: "";
  flex: 1;
  border-top: 2px dashed var(--quit);
  opacity: 0.5;
}
@media (max-width: 620px) {
  .proc__hd {
    display: none;
  }
  .proc__r {
    grid-template-columns: 26px 1fr;
    row-gap: 3px;
  }
  .proc__r span {
    grid-column: 2;
  }
}

/* A-1 情報ギャップ表：論点の出所を示すグループ見出し行 */
table.rm-t tr.rm-grp > th[scope="row"] {
  background: rgba(26, 25, 22, 0.055);
  border-top: 1px solid var(--chrome);
  border-bottom: 1px solid var(--rule);
  color: var(--ink);
  font: 700 12.5px var(--zen);
  padding: 9px 10px 8px;
  letter-spacing: 0.01em;
}
table.rm-t tr.rm-grp > th[scope="row"] small {
  display: inline;
  margin-left: 10px;
  font: 400 11.5px var(--zen);
  color: var(--muted);
}
table.rm-t tr.rm-grp--b > th[scope="row"] {
  background: rgba(168, 82, 47, 0.09);
}
@media (max-width: 760px) {
  table.rm-t tr.rm-grp > th[scope="row"] small {
    display: block;
    margin-left: 0;
  }
}

/* 3類型の一覧（要件列を外した4列版）。横スクロールさせない。 */
table.rm-t--typ {
  min-width: 0;
  table-layout: fixed;
}
table.rm-t--typ th[scope="col"]:first-child {
  width: 20%;
}
table.rm-t--typ th[scope="col"]:nth-child(2) {
  width: 30%;
}
table.rm-t--typ th[scope="col"]:nth-child(3) {
  width: 24%;
}
table.rm-t--typ th[scope="col"] {
  white-space: normal;
}
@media (max-width: 760px) {
  table.rm-t--typ,
  table.rm-t--typ thead,
  table.rm-t--typ tbody,
  table.rm-t--typ tr,
  table.rm-t--typ th,
  table.rm-t--typ td {
    display: block;
    width: auto;
  }
  table.rm-t--typ thead {
    display: none;
  }
  table.rm-t--typ tr.typ {
    border-bottom: 1px solid var(--chrome);
    padding-bottom: 10px;
    margin-bottom: 10px;
  }
  table.rm-t--typ tr.typ > th[scope="row"] {
    border-bottom: none;
    padding-bottom: 2px;
  }
  table.rm-t--typ tr.typ > td {
    border-bottom: none;
    padding: 2px 10px 2px 34px;
  }
  table.rm-t--typ tr.typ > td::before {
    display: block;
    font: 700 11px var(--zen);
    letter-spacing: 0.06em;
    color: var(--muted);
    margin-top: 6px;
  }
  table.rm-t--typ tr.typ > td:nth-of-type(1)::before {
    content: "主導主体・対象";
  }
  table.rm-t--typ tr.typ > td:nth-of-type(2)::before {
    content: "目指す市場";
  }
  table.rm-t--typ tr.typ > td:nth-of-type(3)::before {
    content: "必須KGI";
  }
}

/* 3-5 A・B・Cの概要表：群見出しをアコーディオンにする */
.gv--req tbody[data-grp] tr.gvg th {
  padding: 0;
  border-bottom: 1px solid var(--rule);
}
.gv--req tbody[data-grp] + tbody[data-grp] tr.gvg th {
  padding-top: 14px;
}
.gvg__btn {
  display: flex;
  align-items: baseline;
  gap: 10px;
  width: 100%;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  padding: 9px 2px 7px;
  font: 700 12px var(--grotesk);
  letter-spacing: 0.16em;
  color: var(--muted-2);
  line-height: 1.6;
}
.gvg__btn:hover {
  color: var(--green-deep);
}
.gvg__btn::before {
  content: "＋";
  font: 500 12px var(--grotesk);
  color: var(--rule-2);
  width: 12px;
  flex: none;
  letter-spacing: 0;
}
.gv--req tbody[data-grp].is-open .gvg__btn::before {
  content: "−";
}
.gv--req tbody[data-grp].is-open .gvg__btn {
  color: var(--ink);
}
.gvg__t {
  flex: 1 1 auto;
}
.gvg__n {
  flex: none;
  font: 500 12px var(--grotesk);
  letter-spacing: 0.06em;
  color: var(--muted);
}
.gv--req tbody[data-grp]:not(.is-open) tr:not(.gvg) {
  display: none;
}
/* 概要行（あり／—のチップではなく原文のテキストを置く） */
.gv--req .c--txt {
  display: block;
  min-height: 0;
  text-align: left;
  font: 400 12px var(--zen);
  letter-spacing: 0;
  line-height: 1.75;
  color: var(--ink-body);
  background: var(--panel);
  padding: 8px 10px;
  height: 100%;
  box-sizing: border-box;
}
.gv--req .c--txt small {
  display: block;
  margin-top: 3px;
  font: 400 11.5px var(--zen);
  color: var(--muted);
  line-height: 1.6;
  opacity: 1;
}

/* 概要行を入れて列幅が偏ったので、列を固定して3類型に幅を配る */
.gv--req {
  table-layout: fixed;
}
.gv--req thead th:first-child {
  width: 21%;
}
.gv--req thead th.typ--a,
.gv--req thead th.typ--b,
.gv--req thead th.typ--c {
  width: 26.33%;
}
.gv--req tbody td {
  width: auto;
}

/* ================= V5 LAYER (review 2026-08-10) ================= */
/* 強弱スケールの凡例に添える注記。濃さが図をまたいで同じ意味ではないことを明示する。 */
.lg .lg-note {
  flex-basis: 100%;
  font-size: 12px;
  font-weight: 400;
  color: var(--muted);
  line-height: 1.7;
}

/* 可読性：本文と、図表に添える説明文（図の外にある地の文）を一段大きくする。
   図の内側（SVGのラベル・表のセル）は座標に依存するため据え置き、
   ここでは地の文だけを 12px → 13px、本文を 15px → 16px に上げている。 */
body {
  font-size: 16px;
}
.viz__note,
.viz__foot,
.fignote,
.mininote,
.srcnote li {
  font-size: 13px;
}

/* 3-6「どの類型に、どの柱が厚いか」。X 行（3類型を支える仕組み）は5本の柱に対応しないため、
   柱の列見出しの下に等分で並べず、区分名を添えて左詰めにする。 */
.regmx__c--free {
  justify-content: flex-start;
  gap: 14px;
}
.regmx__c--free i {
  flex: 0 0 auto;
  min-width: 96px;
}

/* ================= TOP10：集中を面積と累積で見せる（2-2） =================
   62.7%という数字だけでは分母側が見えないので、10項目＋残り51項目を
   1本の帯にして面積で示し、行には累積列を足す。帯は viz__scroll の外に
   置いてあるので、狭い画面でも常に全幅で出る。 */
.t10strip {
  margin: 0 0 16px;
}
.t10strip__bar {
  position: relative;
  display: flex;
  height: 18px;
  border-radius: 3px;
  overflow: hidden;
  background: var(--rule-2);
}
.t10strip__bar > i {
  width: var(--s);
  background: var(--c);
  flex: none;
}
.t10strip__rest {
  background: #e4e0d8;
  box-shadow: inset 2px 0 0 var(--paper);
}
.t10strip__mark {
  position: absolute;
  top: -5px;
  bottom: -5px;
  width: 2px;
  background: var(--quit);
}
.t10strip__lab {
  display: flex;
  justify-content: space-between;
  margin-top: 7px;
  font-size: 11.5px;
  color: var(--muted-2);
}
.t10strip__lab .l {
  color: var(--green-deep);
  font-weight: 700;
}
.t10hd,
.t10r {
  grid-template-columns: 28px 1fr 92px 104px 76px 72px;
}
.t10r__cum {
  text-align: right;
  font: 700 13px var(--grotesk);
  color: var(--quit);
  font-variant-numeric: tabular-nums;
}
.t10r__cum u {
  text-decoration: none;
  margin-left: 2px;
  font: 400 10.5px var(--zen);
  color: var(--muted-2);
}
.t10hd b.t10r__cum {
  font-weight: 400;
  font-size: 11.5px;
  color: var(--muted-2);
}
@media (max-width: 760px) {
  .t10r__cum {
    grid-column: 2;
    text-align: left;
    font-size: 12.5px;
  }
  .t10r__cum::after {
    content: " 累積";
    font: 400 10.5px var(--zen);
    color: var(--muted-2);
  }
  .t10strip__lab {
    font-size: 10.5px;
  }
}

/* 17分野バーは色で5群を符号化しているので、鍵を同じ図の中に置く */
.lg--g5 {
  margin: 14px 0 2px;
}
.lg--g5 i {
  border-radius: 50%;
  width: 11px;
  height: 11px;
}

/* 図｜どの段階で、どの政策類型が効くか（.gv--phase）
   auto layout だと列幅が中身依存で 86px〜182px までばらつき、チップも
   1行/2行で高さが揃わず格子が歪む。列幅を等分に固定し、チップをセル高
   いっぱいに伸ばして、行高・列幅の揃った格子にする。
   ≤640px はカード表示（.gv-cardable）に切り替わるため適用しない。 */
@media (min-width: 641px) {
  .gv--phase {
    table-layout: fixed;
  }
  .gv--phase thead th:first-child,
  .gv--phase tbody th {
    width: 16%;
  }
  .gv--phase thead th:not(:first-child),
  .gv--phase tbody td {
    width: 16.8%;
  }
  .gv--phase thead th {
    vertical-align: bottom;
  }
  /* td に最小高を置くことで、子の height:100% が行高に解決される */
  .gv--phase tbody td {
    height: 1px;
  }
  .gv--phase tbody .c {
    box-sizing: border-box;
    height: 100%;
    min-height: 48px;
  }
}
