
*{margin:0;padding:0;box-sizing:border-box;}
:root{--bg:#FDF8F0;--ink:#1a1a1a;--gold:#C8A85C;--brown:#78350F;--green:#1B6B3A;--red:#C0392B;--line:#e7dcc8;--max:720px;--padi:26px;--padb:24px;--pw:360px;--ph:600px;--iw:308px;--ih:552px;--bkdur:380ms;}
@media (max-width:560px){:root{--padi:17px;--padb:15px;}}
html,body{background:var(--bg);color:var(--ink);}
body{font-family:'Noto Serif JP','Hiragino Mincho ProN',serif;line-height:1.62;}
.rd-header{position:sticky;top:0;z-index:30;background:rgba(253,248,240,.95);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:10px 14px;}
.rd-header a.home,.rd-header .brand{font-family:'Noto Sans JP',sans-serif;font-weight:700;font-size:14px;text-decoration:none;color:var(--brown);white-space:nowrap;}
/* 縮むのはタイトルだけ。ボタンが「≡ ⋯」に潰れないよう flex を固定する。 */
.rd-header a.home,.rd-header .rd-btn{flex:0 0 auto;}
.rd-header .brand{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}
.rd-header .spacer{flex:1 1 auto;min-width:4px;}
@media (max-width:560px){.rd-header{gap:7px;padding:9px 10px;}.rd-header .brand{display:none;}.rd-btn{padding:7px 10px;}#fsBtn .lbl{display:none;}#topBtn{padding:7px 9px;}}
.rd-btn{font-family:'Noto Sans JP',sans-serif;font-size:12.5px;font-weight:700;color:#5b4a2a;background:#fff;border:1px solid var(--gold);border-radius:999px;padding:7px 13px;cursor:pointer;white-space:nowrap;text-decoration:none;}
.rd-btn:active{transform:translateY(1px);}
.crumb{max-width:var(--max);margin:0 auto;padding:14px 20px 0;font-family:'Noto Sans JP',sans-serif;font-size:12px;color:#9a8a6a;}
.crumb a{color:#9a8a6a;text-decoration:none;}
.reader{max-width:var(--max);margin:0 auto;padding:10px 20px 30px;}
.reader h1{font-family:'Noto Serif JP',serif;font-size:24px;font-weight:900;color:#2b2b2b;line-height:1.5;margin:14px 0 4px;}
/* 書籍表紙（文字＋CSS・画像なし） */
.book-cover{max-width:var(--max);margin:12px auto 6px;padding:50px 26px;text-align:center;background:#fff;border:1px solid var(--gold);border-radius:6px;box-shadow:0 10px 30px rgba(60,40,10,.12);}
.book-cover .bc-eyebrow{font-family:'Noto Sans JP',sans-serif;font-size:11.5px;letter-spacing:5px;color:var(--gold);font-weight:700;}
.book-cover .bc-title{font-family:'Noto Serif JP',serif;font-size:25px;font-weight:900;line-height:1.7;color:#2b2b2b;margin:20px 0;}
.book-cover .bc-rule{width:40px;height:2px;background:var(--gold);margin:16px auto;}
.book-cover .bc-sub{font-family:'Noto Serif JP',serif;font-size:19px;color:var(--brown);font-weight:700;letter-spacing:1px;line-height:1.75;text-wrap:balance;}
/* 副題は15字あるので、紙面が狭いと折り返しが語中で割れる。紙幅に追従させる。 */
.bk-on .book-cover .bc-sub{font-size:min(19px,calc(var(--pw)/23));}
.bk-on .book-cover .bc-tag{font-size:min(12.5px,calc(var(--pw)/30));}
.book-cover .bc-tag{font-family:'Noto Sans JP',sans-serif;font-size:12.5px;color:#9a8358;letter-spacing:.08em;margin-top:18px;font-weight:500;}
.book-cover .bc-author{font-size:13px;color:#999;margin-top:22px;line-height:1.9;}
.book-cover .bc-author .bc-pub{font-size:12px;color:#bbb;}
/* 章扉（各章の表紙） */
.chapter-cover{max-width:var(--max);margin:0 auto;padding:40px 20px 24px;text-align:center;}
.chapter-cover .cc-num{font-family:'Noto Sans JP',sans-serif;font-size:13px;font-weight:700;letter-spacing:5px;color:var(--gold);}
.chapter-cover .cc-title{font-family:'Noto Serif JP',serif;font-size:27px;font-weight:900;color:#2b2b2b;line-height:1.5;margin:14px 0 0;}
.chapter-cover .cc-rule{width:46px;height:3px;background:var(--gold);margin:20px auto 0;}
/* 縦書き：表紙・章扉を縦組みの先頭ページとして表示 */
body.vertical .reader .book-cover,body.vertical .reader .chapter-cover{writing-mode:vertical-rl;-webkit-writing-mode:vertical-rl;height:100%;max-width:none;width:auto;margin:0;padding:38px 30px;background:transparent;border:none;border-left:1px solid var(--line);border-radius:0;box-shadow:none;display:grid;place-content:center;justify-items:center;text-align:center;}
body.vertical .reader .bc-eyebrow,body.vertical .reader .cc-num{writing-mode:horizontal-tb;-webkit-writing-mode:horizontal-tb;letter-spacing:3px;margin:0 0 8px;}
body.vertical .reader .bc-rule{width:2px;height:40px;margin:18px auto;}
body.vertical .reader .cc-rule{width:3px;height:48px;margin:22px auto 0;}
body.vertical .reader .bc-title,body.vertical .reader .cc-title{margin:14px 0;}
body.vertical .reader .bc-author{margin:0 22px 0 0;}
.section-block{margin:0 0 26px;}
.section-block h3{font-family:'Noto Serif JP',serif;font-size:18px;font-weight:700;color:#2b2b2b;margin:30px 0 12px;padding-left:11px;border-left:4px solid var(--gold);line-height:1.5;}
.section-subtitle{font-size:13.5px;color:var(--brown);margin:-6px 0 14px;padding-left:11px;}

    .chapter-number { font-size: 12px; color: #9A6A2F; font-weight: 700; letter-spacing: 4px; margin-bottom: 8px; }
    .chapter-number::before { content: "❖"; display: block; color: #C8A85C; font-size: 13px; letter-spacing: 0; margin-bottom: 16px; }
    .chapter-title { font-size: 21px; font-weight: 900; line-height: 1.6; color: #222; letter-spacing: 2px; padding: 0 8px; text-wrap: balance; -webkit-text-wrap: balance; }
    .chapter-title::before, .chapter-title::after {
      content: ''; display: block; width: 44px; height: 1px;
      background: #C8A85C; margin: 18px auto;
    }
    .section-block { margin-bottom: 16px; }
    .section-block-summary {
      margin-bottom: 16px;
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
    }
    .section-block h3, .section-block-summary h3 {
      font-size: 14px; font-weight: 700; margin-top: 12px; margin-bottom: 10px;
      color: #222; break-after: avoid;
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
    }
    .section-block h3::after, .section-block-summary h3::after {
      content: ''; display: block; width: 30px; height: 2px;
      background: #C8A85C; margin-top: 6px;
    }
    .section-subtitle { font-size: 12px; color: #78350F; margin-bottom: 14px; break-after: avoid; }
    p { text-indent: 1em; margin-bottom: 2px; text-align: justify; line-break: strict; orphans: 2; widows: 2; }
    /* 手動改行を含む段落は左揃え（justifyだと改行直前の行が間延びするため） */
    p.p-lines { text-align: left; }
    /* 見出し直後の段落は字下げしない（和書の作法） */
    h3 + p, h4 + p, .section-subtitle + p { text-indent: 0; }
    strong { font-weight: 700; }
    /* 強調＝ゴシック／地の文＝明朝 の統一ルール */
    strong, .accent, .hl-marker, .hl-underline, .tag-em, .box-em {
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
    }
    blockquote { border-left: 3px solid #C8A85C; padding-left: 12px; margin: 8px 0; color: #4a4234; break-inside: avoid; }
    .block-emotional {
      text-align: center; margin: 16px 0; padding: 18px 16px;
      background: linear-gradient(180deg, #FEFAF2 0%, #F7EACF 100%);
      border-radius: 16px;
      color: #78350F; font-size: 14px; font-weight: 700; line-height: 2;
      break-inside: avoid;
    }
    .block-box, .block-merit {
      margin: 14px 0; padding: 13px 16px 13px 18px;
      background: #F8F1E1; border-radius: 14px;
      border-left: 4px solid #C8A85C;
      font-size: 12.5px; line-height: 1.8; break-inside: avoid;
    }
    .block-merit { border-left-color: #6E8B5B; }
    /* :::vision — 願望・ビジョンの宣言（罫線・背景なし／中央寄せの太字のみ） */
    .block-vision {
      text-align: center; margin: 16px 0; padding: 4px 14px;
      color: #78350F; font-size: 13.5px; font-weight: 700; line-height: 2;
      break-inside: avoid;
    }
    .highlight {
      font-weight: 900; font-size: 15px; color: #222; display: block;
      text-align: center; margin: 14px 0; padding: 12px 16px;
      border: 1px solid #C8A85C; border-radius: 12px;
      line-break: strict; text-wrap: balance; -webkit-text-wrap: balance;
    }
    /* :::keep — 改ページで割らせない範囲（見た目は素のまま）。本文と同じ字送りで表示 */
    .keep-together { break-inside: avoid; text-align: justify; line-break: strict; }
    .accent { font-weight: 700; color: #78350F; }
    .hl-marker { background: linear-gradient(transparent 58%, #FCE3A6 58%); font-weight: 700; padding: 0 1px; }
    .hl-underline { border-bottom: 2px solid #C8A85C; font-weight: 700; }
    .tag-em { background: #F3E8C8; color: #6b4f1d; font-weight: 700; border-radius: 4px; padding: 0 5px; }
    .box-em { border: 1px solid #C8A85C; border-radius: 4px; padding: 0 5px; font-weight: 700; color: #6b4f1d; }
    ruby rt { font-size: 0.55em; font-weight: 400; color: #6b6256; }
    .impact { font-size: 1.3em; font-weight: 900; color: #9A6A2F; }
    .loc-badge {
      display: inline-block; font-size: 10px; color: #5C6B4F;
      background: #EEF3EC; border: 1px solid #DCE6DD; border-radius: 10px;
      padding: 1px 9px; white-space: nowrap;
    }
    .stat-block {
      text-align: center; margin: 14px 0; padding: 14px 12px;
      background: #FBF7EE; border: 1px solid #EADFC4; border-radius: 6px;
      break-inside: avoid;
    }
    .stat-num { font-size: 32px; font-weight: 900; color: #9A6A2F; line-height: 1.15; }
    .stat-unit { font-size: 0.5em; font-weight: 700; margin-left: 2px; }
    .stat-label { font-size: 11px; color: #78350F; margin-top: 4px; }
    /* :::byline — 証言者クレジット（右寄せ・氏名強調） */
    .byline { text-align: right; margin: 6px 0 18px; line-height: 1.55; }
    .by-affil { font-size: 11px; color: #7a7060; }
    .by-name {
      font-size: 15px; font-weight: 700; color: #2a2418; margin-top: 3px;
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
    }
    .saying {
      text-align: center; margin: 18px 0; color: #54493a;
      font-size: 13px; line-height: 1.9;
    }
    .saying::before { content: "—　"; color: #c9b98c; }
    .saying::after { content: "　—"; color: #c9b98c; }
    /* 複数行は ― を左右に置き、ブロックの縦中央に揃える */
    .saying-multi { display: flex; align-items: center; justify-content: center; gap: 14px; }
    .saying-multi::before { content: "—"; display: inline; color: #c9b98c; margin: 0; flex: 0 0 auto; }
    .saying-multi::after { content: "—"; display: inline; color: #c9b98c; margin: 0; flex: 0 0 auto; }
    .block-voice {
      margin: 14px 0; padding: 13px 16px; background: #F3F7F4;
      border-radius: 14px; border: 1px solid #DCE6DD; break-inside: avoid;
    }
    .block-voice-text { font-size: 11.5px; line-height: 1.7; color: #2f3b33; }
    .block-voice-text::before { content: "“"; color: #9FB6A2; font-weight: 700; margin-right: 1px; }
    .block-voice-name { font-size: 10px; color: #5C6B4F; text-align: right; margin-top: 8px; }
    .tip-block {
      margin: 14px 0; padding: 12px 14px; background: #FFF7E6;
      border: 1px solid #F0DFB0; border-radius: 10px; break-inside: avoid;
    }
    .tip-head { font-size: 11px; font-weight: 900; color: #9A6A2F; margin-bottom: 6px; letter-spacing: 1px; }
    .tip-body { font-size: 11.5px; line-height: 1.7; color: #4a4030; }
    .icon-chip { display: inline-block; width: 11px; height: 11px; border-radius: 3px; margin-right: 5px; vertical-align: middle; }
    .svc-card {
      margin: 12px 0; padding: 14px 16px; background: #FFFFFF;
      border: 1px solid #EADFC4; border-radius: 12px; break-inside: avoid;
    }
    .svc-hook { font-size: 11.5px; line-height: 1.75; color: #3a3326; margin-bottom: 9px; }
    .svc-merits { list-style: none; padding-left: 0; margin: 0 0 9px; }
    .svc-merits li { font-size: 11.5px; line-height: 1.7; padding-left: 17px; position: relative; margin-bottom: 2px; }
    .svc-merits li::before { content: "✓"; color: #6E8B5B; position: absolute; left: 0; font-weight: 900; }
    .svc-closer {
      font-size: 12px; font-weight: 900; color: #9A6A2F; text-align: center;
      margin-top: 4px; padding-top: 9px; border-top: 1px solid #F0E6CC;
    }
    .timeline { margin: 14px 0 14px 6px; }
    .tl-item { position: relative; padding-left: 20px; padding-bottom: 14px; border-left: 2px solid #E0D3B0; }
    .tl-item.tl-last { border-left-color: transparent; padding-bottom: 0; }
    .tl-marker {
      position: absolute; left: -7px; top: 1px; width: 12px; height: 12px;
      border-radius: 50%; background: #C8A85C; border: 2px solid #FCFAF4;
    }
    .tl-label { display: block; font-weight: 900; color: #9A6A2F; font-size: 12px; margin-bottom: 2px; }
    .tl-text { font-size: 11.5px; line-height: 1.7; color: #3a3326; }
    /* :::principle — 原則カード（綱領レイアウト） */
    .principles { margin: 16px 0; }
    .pr-item {
      display: flex; align-items: flex-start; gap: 14px;
      padding: 13px 4px; border-top: 1px solid #E0D3B0; break-inside: avoid;
    }
    .pr-item:last-child { border-bottom: 1px solid #E0D3B0; }
    .pr-num {
      flex: 0 0 auto; min-width: 36px;
      font-family: 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
      font-size: 27px; font-weight: 900; line-height: 1; color: #9A6A2F; letter-spacing: 1px;
    }
    .pr-body { flex: 1 1 auto; }
    .pr-name {
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
      font-weight: 700; font-size: 13.5px; color: #222; margin-bottom: 4px; line-height: 1.4;
    }
    .pr-text { font-size: 11.5px; line-height: 1.65; color: #3a3326; text-align: justify; }
    /* :::summary — 章のまとめ（ポイント集） */
    .summary-list { margin: 16px 0; }
    .sm-item {
      display: flex; align-items: flex-start; gap: 12px;
      padding: 11px 2px; border-bottom: 1px dashed #E0D3B0; break-inside: avoid;
    }
    .sm-item.sm-last { border-bottom: none; }
    .sm-badge {
      flex: 0 0 auto; width: 25px; height: 25px; border-radius: 50%;
      background: #C8A85C; color: #FCFAF4; font-weight: 900; font-size: 12.5px;
      display: inline-flex; align-items: center; justify-content: center; margin-top: 2px;
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
    }
    .sm-body { flex: 1 1 auto; }
    .sm-key {
      display: block; font-weight: 700; font-size: 12.5px; line-height: 1.5; color: #2a2418;
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
    }
    .sm-detail {
      display: block; font-weight: 400; font-size: 11px; line-height: 1.5; color: #6b6552; margin-top: 2px;
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
    }
    /* :::versus — NG→OK 対比カード（コンパクト） */
    .versus { margin: 12px 0; }
    .vs-item {
      padding: 8px 11px; margin-bottom: 7px;
      background: #FBF7EE; border: 1px solid #EADFC4; border-radius: 9px;
      break-inside: avoid;
    }
    .vs-head { margin-bottom: 3px; line-height: 1.5; }
    .vs-ng {
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
      font-weight: 700; font-size: 10.5px; color: #A8927A;
    }
    .vs-ng::before { content: "✕"; margin-right: 3px; color: #C58B86; font-weight: 900; }
    .vs-arrow { color: #C8A85C; font-weight: 900; margin: 0 5px; }
    .vs-ok {
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
      font-weight: 700; font-size: 11.5px; color: #2F6B3F;
    }
    .vs-ok::before { content: "○"; margin-right: 3px; color: #6E8B5B; font-weight: 900; }
    .vs-desc { font-size: 11px; line-height: 1.55; color: #3a3326; text-align: justify; }
    .marker {
      font-weight: 700;
      font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
      -webkit-text-emphasis: filled dot;
      text-emphasis: filled dot;
      -webkit-text-emphasis-color: #9A6A2F;
      text-emphasis-color: #9A6A2F;
      -webkit-text-emphasis-position: over;
      text-emphasis-position: over right;
    }
    h4 { font-size: 15px; font-weight: 900; color: #333; margin: 14px 0 8px; break-after: avoid; }
    ul { list-style: none; padding-left: 12px; margin: 8px 0; break-inside: avoid; }
    ul li { font-size: 11.5px; line-height: 1.6; text-indent: -10px; padding-left: 10px; }
    ul li::before { content: "・"; color: #C8A85C; }
    .img-container {
      text-align: center; margin: 12px 0;
      break-inside: avoid;
    }
    /* テキスト＋画像が同居するブロック（DLボタン等）は途中で分割しない */
    .img-block { break-inside: avoid; text-align: center; margin: 12px 0; }
    .img-block strong { display: inline-block; margin-bottom: 6px; }
    .book-img { display: block; margin: 0 auto; width: auto; height: auto; border-radius: 8px; }
    .book-img-small  { max-width: 36%; max-height: 24vh; }
    .book-img-medium { max-width: 54%; max-height: 34vh; }
    .book-img-wide   { max-width: 90%; max-height: 46vh; }
    .book-img-full   { max-width: 100%; max-height: 47vh; }
    /* vtop: 縦長画像の上部だけ表示（下部をクリップ）。aspect-ratioで切り取り高さを指定 */
    .img-crop-vision { width: 100%; margin: 0 auto; overflow: hidden; border-radius: 8px; aspect-ratio: 1276 / 1075; }
    .img-crop-vision img { width: 100%; display: block; }
    /* right: 右に回り込み（本文が左に回り込む） */
    .book-img-right { float: right; width: 25%; max-width: 25%; height: auto; margin: -24mm 0 8px 14px; border-radius: 8px; }

/* 縦書き（非JS時のフォールバック経路。JSが動く時は body.vertical を付けない） */
/* text-orientation は mixed。upright だと「2018年」が縦に1文字ずつ積まれて読めない。 */
/* 高さは svh（dvh はURLバー開閉で毎回組み直しが走る）＋ JS が実測pxで上書きする。 */
body.vertical .reader{writing-mode:vertical-rl;-webkit-writing-mode:vertical-rl;width:100%;max-width:none;height:74svh;min-height:340px;padding:24px 20px;overflow-x:auto;overflow-y:hidden;margin:0;column-gap:48px;text-orientation:mixed;overscroll-behavior-x:contain;}
body.vertical .reader .section-block h3{border-left:none;border-right:4px solid var(--gold);padding-left:0;padding-right:11px;}
body.vertical .reader .section-subtitle{padding-left:0;padding-right:11px;}
body.vertical .reader table,body.vertical .reader .img-container,body.vertical .reader pre{writing-mode:horizontal-tb;}
/* 章ナビ・CTA */
.chnav{max-width:var(--max);margin:10px auto;padding:0 20px;display:flex;gap:10px;align-items:stretch;}
.chnav a{flex:1;text-decoration:none;border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 12px;font-family:'Noto Sans JP',sans-serif;font-size:13px;color:#3b3b3b;text-align:center;}
.chnav a.mid{flex:0 0 auto;color:var(--brown);}
.chnav a small{display:block;font-size:10.5px;color:#a98;margin-bottom:2px;}
.dl-cta{max-width:var(--max);margin:26px auto;background:linear-gradient(135deg,#ff7a18,#ff9a3d);color:#fff;border-radius:16px;padding:24px 20px;text-align:center;}
.dl-cta p{color:#fff;margin:0 0 14px;font-size:15px;line-height:1.7;}
.dl-cta a{display:inline-block;background:#fff;color:#e3640a;font-family:'Noto Sans JP',sans-serif;font-weight:700;font-size:15px;text-decoration:none;padding:13px 26px;border-radius:999px;}
.glossary-entry{margin:0 0 18px;}
.glossary-term{font-size:15px;font-weight:900;color:#222;border-bottom:1px solid var(--gold);padding-bottom:4px;margin-bottom:5px;}
.glossary-term .gid{font-size:11px;color:var(--red);font-weight:700;margin-right:6px;}
.glossary-term .gr{font-size:11px;color:#999;font-weight:400;margin-left:6px;}
.glossary-def{font-size:13.5px;color:#444;line-height:1.8;margin-bottom:5px;}
.glossary-interp{font-size:13.5px;color:var(--brown);line-height:1.8;font-style:italic;padding-left:10px;border-left:3px solid var(--gold);}

.bk-shell{position:relative;}
.bk-stage{position:relative;}
.bk-boot .bk-stage{height:68svh;min-height:340px;overflow:hidden;}
.bk-boot #reader{opacity:0;}
.bk-on #reader{transition:opacity .25s ease;}
/* touch-action:pan-y ＝ 縦スクロールは通し、横スワイプはこちらで受ける
   （ブラウザの「横スワイプで戻る」に取られないため） */
.bk-on .bk-stage{display:flex;align-items:center;justify-content:center;overflow:hidden;padding:0 8px;touch-action:pan-y;overscroll-behavior-x:contain;}
.bk-book{position:relative;perspective:2600px;perspective-origin:50% 50%;}
.bk-page{position:absolute;top:0;left:0;background:#FFFCF7;border-radius:3px;
  box-shadow:0 6px 20px rgba(70,48,12,.13),0 0 0 1px rgba(200,168,92,.20);}
.bk-clip{position:absolute;top:var(--padb);bottom:var(--padb);left:var(--padi);right:var(--padi);overflow:clip;}
@supports not (overflow:clip){.bk-clip{overflow:hidden;}}
.bk-track{margin:0;padding:0;max-width:none;max-height:none;height:100%;transform-origin:0 0;}
/* 縦書きでページ末尾から先（＝物理左側）を紙色で覆う目隠し。幅はJSが毎ページ設定。 */
.bk-mask{position:absolute;left:0;top:0;bottom:0;width:0;background:#FFFCF7;z-index:2;pointer-events:none;}
.bk-stage[data-m="h"] .bk-track{width:100%;column-fill:auto;}
.bk-stage[data-m="v"] .bk-clip{writing-mode:vertical-rl;-webkit-writing-mode:vertical-rl;}
.bk-stage[data-m="v"] .bk-track{width:auto;writing-mode:vertical-rl;-webkit-writing-mode:vertical-rl;text-orientation:mixed;}
.bk-stage[data-m="v"] .tcy{text-combine-upright:all;-webkit-text-combine:horizontal;}
/* 見開きは1枚の紙に見せる */
.bk-stage[data-spread="1"] .bk-book{background:#FFFCF7;border-radius:4px;box-shadow:0 12px 34px rgba(70,48,12,.17);}
.bk-stage[data-spread="1"] .bk-page{box-shadow:none;border-radius:0;}
.bk-stage[data-spread="1"] .bk-book::after{content:'';position:absolute;top:0;bottom:0;left:50%;width:46px;margin-left:-23px;z-index:5;pointer-events:none;
  background:linear-gradient(to right,rgba(120,90,40,0),rgba(120,90,40,.13) 34%,rgba(120,90,40,.20) 50%,rgba(120,90,40,.13) 66%,rgba(120,90,40,0));}
/* めくる紙 */
.bk-leaf{position:absolute;top:0;z-index:6;visibility:hidden;transform-style:preserve-3d;}
.bk-leaf .bk-face{backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);}
.bk-leaf .bk-back{transform:rotateY(180deg) translateZ(0);}
.bk-shade{position:absolute;inset:0;opacity:0;pointer-events:none;border-radius:inherit;z-index:9;}
/* 綴じ側（蝶番）ほど暗い＝紙が起き上がって影が落ちる */
.bk-stage[data-m="h"] .bk-front .bk-shade{background:linear-gradient(to right,rgba(35,22,2,.52),rgba(35,22,2,.10) 40%,rgba(35,22,2,0) 72%);}
.bk-stage[data-m="h"] .bk-back .bk-shade{background:linear-gradient(to left,rgba(35,22,2,.46),rgba(35,22,2,.08) 40%,rgba(35,22,2,0) 72%);}
.bk-stage[data-m="v"] .bk-front .bk-shade{background:linear-gradient(to left,rgba(35,22,2,.52),rgba(35,22,2,.10) 40%,rgba(35,22,2,0) 72%);}
.bk-stage[data-m="v"] .bk-back .bk-shade{background:linear-gradient(to right,rgba(35,22,2,.46),rgba(35,22,2,.08) 40%,rgba(35,22,2,0) 72%);}
.bk-leaf.is-flip .bk-front .bk-shade{animation:bkShOut var(--bkdur) ease both;}
.bk-leaf.is-flip .bk-back .bk-shade{animation:bkShIn var(--bkdur) ease both;}
.bk-leaf.is-flip.is-back .bk-shade{animation-direction:reverse;}
/* 浮いた紙の落とす影。filter は preserve-3d を潰すので box-shadow を面に載せる。 */
.bk-leaf.is-flip .bk-face{box-shadow:0 0 34px rgba(55,36,6,.40);}
@keyframes bkShOut{0%{opacity:0}55%{opacity:.62}100%{opacity:.3}}
@keyframes bkShIn{0%{opacity:.5}60%{opacity:.16}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.bk-leaf,.bk-shade{animation:none!important;transition:none!important;}}
/* 下部バー */
.bk-bar{display:flex;align-items:center;gap:12px;padding:7px 14px 9px;border-top:1px solid var(--line);background:rgba(253,248,240,.96);}
.bk-nav{font-size:19px;line-height:1;color:#7a6740;background:#fff;border:1px solid var(--gold);border-radius:999px;width:38px;height:34px;cursor:pointer;}
.bk-nav:disabled{opacity:.32;cursor:default;}
.bk-prog{flex:1;height:4px;background:#eadfc9;border-radius:999px;overflow:hidden;}
.bk-prog-fill{height:100%;width:0;background:var(--gold);border-radius:999px;transition:width .25s ease;}
.bk-pnum{font-family:'Noto Sans JP',sans-serif;font-size:12px;color:#8a7a58;min-width:62px;text-align:right;font-variant-numeric:tabular-nums;}
.bk-dbg{font:11px/1.5 monospace;color:#a33;background:#fff6f6;padding:4px 10px;word-break:break-all;}
.bk-alt{text-align:center;padding:10px 0 0;}
.bk-alt button{font-family:'Noto Sans JP',sans-serif;font-size:12px;color:#9a8a6a;background:none;border:none;text-decoration:underline;cursor:pointer;padding:6px 10px;}
/* 全画面（iOS Safari は要素の Fullscreen API が無いので CSS でも成立させる） */
.bk-fs .bk-shell{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;flex-direction:column;}
.bk-fs .bk-stage{flex:1;}
.bk-fs body>*:not(.bk-shell){display:none;}
.bk-fs #rdCrumb{display:none;}
.bk-shell:fullscreen{background:var(--bg);}
.bk-hidechrome #rdHeader,.bk-hidechrome #bkBar{opacity:0;pointer-events:none;}
#rdHeader,#bkBar{transition:opacity .35s ease;}
@media (max-width:560px){.bk-on #rdCrumb{display:none;}}
/* 表紙・章扉は単独ページに */
.bk-on .book-cover{break-after:column;height:100%;margin:0;padding:26px 18px;background:transparent;border:none;box-shadow:none;max-width:none;display:grid;place-content:center;justify-items:center;}
.bk-on .chapter-cover{break-after:column;height:100%;margin:0;padding:26px 18px;max-width:none;display:grid;place-content:center;justify-items:center;}
/* 紙面の内寸ちょうど＝1ページ分。--pw だと余白ぶんはみ出して改ページが崩れる。 */
.bk-stage[data-m="v"] .book-cover,.bk-stage[data-m="v"] .chapter-cover{width:var(--iw);}
/* 画像は「画面」ではなく「紙面」に合わせる（vh のままだとページを超えて送れなくなる） */
.bk-on .book-img{max-width:100%;max-height:calc(var(--ih)*.60);}
.bk-on .book-img-small{max-width:46%;max-height:calc(var(--ih)*.34);}
.bk-on .book-img-medium{max-width:62%;max-height:calc(var(--ih)*.46);}
.bk-on .book-img-wide{max-width:92%;max-height:calc(var(--ih)*.58);}
.bk-on .book-img-full{max-width:100%;max-height:calc(var(--ih)*.62);}
.bk-on .img-crop-vision{max-height:calc(var(--ih)*.58);}
/* float+負マージン(-24mm)は段組でも縦書きでも破綻する（該当1枚） */
.bk-on .book-img-right{float:none;display:block;width:auto;max-width:44%;max-height:calc(var(--ih)*.34);margin:10px auto 12px;}
/* 本文中のURL。縦書きでは横倒しの長い英字が1行に収まらないので折り返しを許す。 */
.bk-url{color:var(--brown);text-decoration:underline;text-underline-offset:2px;word-break:break-all;overflow-wrap:anywhere;}
/* ── 囲み・格言が見開きで割れないように ────────────────────────
   BOOK_CONTENT_CSS では .highlight / .saying / .block-box に break-inside が
   無く、見開きの左右で真っ二つになっていた（「私たちの答えです」の件）。 */
.bk-on .highlight,.bk-on .saying,.bk-on .block-box,.bk-on .block-merit,
.bk-on .block-voice,.bk-on .tip-block,.bk-on .byline{break-inside:avoid;}

/* .saying-multi は display:flex。<br> や <strong> が別々のフレックス要素に
   なって「立派な進化」「です。」がバラバラの位置に飛ぶ（実測）。
   本モードでは普通のブロックとして中央寄せする。 */
.bk-on .saying-multi{display:block;}
.bk-on .saying-multi::before{content:"—　";margin:0;}
.bk-on .saying-multi::after{content:"　—";margin:0;}

/* ビジョンマップは 1200×1683 の縦長。aspect-ratio 1276/1075 ＋ overflow:hidden で
   横長に切り抜かれ、絵の大半が見えなくなっていた。本モードでは全体を収める。 */
.bk-on .img-crop-vision{aspect-ratio:auto;overflow:visible;width:auto;}
/* 縦長の1枚絵なので、本文と同じページに置くと必ず下が切れる。1ページ丸ごと使う。 */
.bk-on .img-container:has(.img-crop-vision){break-before:column;break-inside:avoid;margin:0;}
.bk-on .img-crop-vision img{width:auto;max-width:100%;max-height:calc(var(--ih)*.94);margin:0 auto;}

/* ── まとまり（セクション・箇条書き）を割らない ─────────────────
   break-inside:avoid ＝「残りに収まるならそのまま／収まらなければ丸ごと次ページへ」。
   ページより大きいものは次ページ先頭から始まって内部で分割される。
   ①セクション（節・小見出しの単位） */
.bk-on .section-block{break-inside:avoid;}
.bk-on .bk-sec{break-inside:avoid;}
/* ②箇条書き・連番のまとまり（1つ目だけ取り残されるのを防ぐ） */
.bk-on .sec-links,.bk-on .sec-link{break-inside:avoid;}
.bk-on .principles,.bk-on .summary-list,.bk-on .timeline,.bk-on .versus,
.bk-on .svc-merits,.bk-on ul,.bk-on ol{break-inside:avoid;}
.bk-on ul li,.bk-on ol li{break-inside:avoid;}
/* 2〜3行の段落は割らない＝1行だけの取り残し（widow/orphan）を作らない。
   Chromeの段組は orphans/widows を守らないので、こちらで宣言する。 */
.bk-on .bk-keep{break-inside:avoid;}
/* 見出しの泣き別れ防止 */
.bk-on .sec-head{break-inside:avoid;break-after:avoid;}
.bk-on .section-block h3,.bk-on h4{break-inside:avoid;break-after:avoid;}
.sec-head{display:block;}
.bk-stage[data-m="v"] .book-img,.bk-stage[data-m="v"] .img-crop-vision{max-width:calc(var(--pw)*.78);max-height:calc(var(--ih)*.78);}
/* 縦書き: 物理左に固定された装飾を block-start（＝物理右）へ寄せ替える */
.bk-stage[data-m="v"] blockquote{border-left:0;border-right:3px solid var(--gold);padding-left:0;padding-right:12px;}
.bk-stage[data-m="v"] .block-box,.bk-stage[data-m="v"] .block-merit{border-left:0;border-right:4px solid var(--gold);}
.bk-stage[data-m="v"] .block-merit{border-right-color:#6E8B5B;}
.bk-stage[data-m="v"] .glossary-interp{border-left:0;border-right:3px solid var(--gold);padding-left:0;padding-right:10px;}
.bk-stage[data-m="v"] .hl-underline{border-bottom:0;border-right:2px solid var(--gold);}
.bk-stage[data-m="v"] .hl-marker{background:linear-gradient(to left,transparent 58%,#FCE3A6 58%);}
.bk-stage[data-m="v"] .section-block h3{border-left:none;border-right:4px solid var(--gold);padding-left:0;padding-right:11px;}
/* margin:-6px は横書きで見出しに寄せるための指定。縦書きだと「行の頭」を6px削り、
   横倒しになる英字（AI 等）が紙面の上で切れる。軸を block 方向へ振り直す。 */
.bk-stage[data-m="v"] .section-subtitle{padding-left:0;padding-right:11px;margin:0 -6px 0 14px;}
.bk-stage[data-m="v"] .glossary-term{border-bottom:0;border-left:1px solid var(--gold);padding-bottom:0;padding-left:4px;margin-bottom:0;margin-left:5px;}
.bk-stage[data-m="v"] .bc-rule,.bk-stage[data-m="v"] .cc-rule{width:2px;height:44px;margin:18px auto;}
.bk-stage[data-m="v"] .bc-eyebrow,.bk-stage[data-m="v"] .cc-num{letter-spacing:3px;}
.bk-stage[data-m="v"] .timeline{margin:14px 6px 14px 0;}
/* 4項目が1ページ（紙面幅）に収まるよう詰める。余白が広いと最後の1項目だけ
   次ページへ落ちて、連番のまとまりが壊れる。 */
.bk-stage[data-m="v"] .tl-item{border-left:0;border-right:2px solid #E0D3B0;padding-left:8px;padding-right:12px;padding-bottom:0;}
.bk-stage[data-m="v"] .tl-item.tl-last{border-right-color:transparent;}
.bk-stage[data-m="v"] .tl-marker{left:auto;right:-7px;}
/* 画像を horizontal-tb に戻すと直交フローになり inline-size が紙面の「高さ」に対して
   解決されるため、画像1枚でページを食い潰す。縦組みのまま置く。 */
.bk-stage[data-m="v"] .img-container,.bk-stage[data-m="v"] .img-block{writing-mode:vertical-rl;}
@media print{.bk-on .bk-stage{display:block!important;height:auto!important;overflow:visible!important;}
  .bk-page,.bk-clip{position:static!important;width:auto!important;height:auto!important;overflow:visible!important;box-shadow:none!important;}
  .bk-track{height:auto!important;column-width:auto!important;transform:none!important;}
  .bk-leaf,.bk-slot-l,.bk-bar,.bk-alt{display:none!important;}}

footer{margin-top:40px;border-top:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,0) 220px);font-family:'Noto Sans JP',sans-serif;font-size:13px;color:#7c6f5a;line-height:1.75;}
footer a{color:#6b5b3e;text-decoration:none;}
/* 本文の p は1字下げ（BOOK_CSS）。フッターの文章は下げない。 */
footer p{text-indent:0;margin:0;}
/* 金の罫＋菱形。本文の .bc-rule / .cc-rule と同じ語彙で「本の終わり」を示す */
.ft-orn{max-width:var(--max);margin:0 auto;padding:26px 20px 0;display:flex;align-items:center;gap:12px;}
.ft-orn::before,.ft-orn::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);}
.ft-orn i{width:6px;height:6px;background:var(--gold);transform:rotate(45deg);flex:0 0 auto;}
.ft-in{max-width:var(--max);margin:0 auto;padding:24px 20px 4px;display:grid;grid-template-columns:1fr;gap:24px;}
@media (min-width:720px){.ft-in{grid-template-columns:1.4fr 1fr 1.05fr;gap:30px;padding-top:28px;}}
.ft-brand{font-family:'Noto Serif JP',serif;font-size:16px;font-weight:900;color:#2b2b2b;letter-spacing:.02em;}
.ft-tag{font-size:12.5px;color:#8a7d67;margin-top:9px;line-height:1.85;}
.ft-h{font-size:10.5px;font-weight:700;letter-spacing:.16em;color:var(--gold);margin-bottom:6px;}
.ft-col a{display:block;padding:5px 0;font-size:13px;line-height:1.6;}
.ft-col a:hover{color:var(--brown);text-decoration:underline;text-underline-offset:3px;}
.ft-hp{font-weight:700;color:var(--brown)!important;}
.ft-sns{display:flex!important;align-items:center;gap:6px;margin-top:2px;}
.ft-ic{flex:0 0 auto;color:var(--gold);}
/* 奥付 */
.ft-book{max-width:var(--max);margin:18px auto 0;padding:16px 20px 0;border-top:1px solid var(--line);text-align:center;}
.ft-bk-t{font-family:'Noto Serif JP',serif;font-size:13.5px;font-weight:700;color:#4a4034;}
.ft-bk-t::before,.ft-bk-t::after{color:#c3b79f;font-weight:400;}
.ft-bk-t::before{content:"『";}
.ft-bk-t::after{content:"』";}
.ft-bk-m{font-size:12px;color:#9b8e78;margin-top:5px;}
.ft-bk-m a{color:#8a7d67;}
.ft-copy{text-align:center;font-size:11px;color:#b9ad97;letter-spacing:.05em;padding:12px 20px 44px;}
/* ⚠ 本モードは CSS段組でページを作るため、この中に display:flex を置くと
   段に乗らず宙に浮き、画面外に固定されてタップできなくなる（.saying-multi と同じ現象）。
   フレックスを使わず、ブロック＋margin で縦に並べること。 */
.sec-links{margin:22px 0 6px;}
.sec-link{display:block;margin-top:10px;padding:14px 18px;border-radius:10px;background:var(--brown,#B45309);color:#fff;font-weight:700;text-align:center;text-decoration:none;line-height:1.5;}
.sec-link:first-child{margin-top:0;}
.sec-link:hover{opacity:.88;}

.bk-toc{position:fixed;inset:0;z-index:80;writing-mode:horizontal-tb;font-family:'Noto Sans JP',sans-serif;}
.bk-toc[hidden]{display:none;}
.bk-toc-scrim{position:absolute;inset:0;background:rgba(42,30,12,.42);opacity:0;transition:opacity .22s ease;}
.bk-toc.is-open .bk-toc-scrim{opacity:1;}
.bk-toc-panel{position:absolute;top:0;bottom:0;left:0;width:min(93vw,392px);background:var(--bg);border-right:1px solid var(--line);box-shadow:14px 0 40px rgba(60,40,10,.18);display:flex;flex-direction:column;transform:translateX(-101%);transition:transform .26s cubic-bezier(.3,.05,.3,1);}
.bk-toc.is-open .bk-toc-panel{transform:none;}
@media (prefers-reduced-motion:reduce){.bk-toc-scrim,.bk-toc-panel{transition:none;}}
.bk-toc-head{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 14px 12px 18px;border-bottom:1px solid var(--line);background:rgba(253,248,240,.98);}
.bk-toc-ttl{font-family:'Noto Serif JP',serif;font-size:16px;font-weight:900;color:#2b2b2b;letter-spacing:.06em;}
.bk-toc-head .sp{flex:1;}
.tc-all{font-size:11.5px;font-weight:700;color:#5b4a2a;background:#fff;border:1px solid var(--gold);border-radius:999px;padding:6px 11px;cursor:pointer;white-space:nowrap;}
.tc-x{font-size:17px;line-height:1;color:#8a7d67;background:none;border:0;padding:8px 10px;cursor:pointer;border-radius:8px;}
.tc-x:hover{background:rgba(200,168,92,.14);}
.bk-toc-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:6px 0 26px;}
.tc-ch{border-bottom:1px solid rgba(231,220,200,.7);}
.tc-chbtn{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;padding:13px 14px 13px 18px;cursor:pointer;font-family:inherit;}
.tc-chbtn:hover{background:rgba(200,168,92,.09);}
.tc-lbl{flex:0 0 auto;font-size:10.5px;font-weight:700;letter-spacing:.08em;color:var(--gold);min-width:52px;}
.tc-ttl{flex:1;font-family:'Noto Serif JP',serif;font-size:14.5px;font-weight:700;color:#2b2b2b;line-height:1.5;}
.tc-caret{flex:0 0 auto;font-size:11px;color:#b3a58a;transition:transform .18s ease;}
.tc-ch.is-open .tc-caret{transform:rotate(180deg);}
.tc-ch.is-here .tc-lbl{color:var(--brown);}
.tc-ch.is-here .tc-ttl{color:var(--brown);}
.tc-secs{list-style:none;margin:0;padding:0 0 8px;}
.tc-secs[hidden]{display:none;}
/* 本文の li は「・」を ::before で描く（BOOK_CSS）。目次には出さない。 */
.bk-toc li::before{content:none;}
.tc-sec{display:block;padding:9px 16px 9px 34px;font-size:13px;line-height:1.6;color:#6b5b3e;text-decoration:none;cursor:pointer;border-left:3px solid transparent;}
.tc-sec:hover{background:rgba(200,168,92,.12);color:var(--brown);}
.tc-sec.lv4{padding-left:50px;font-size:12.3px;color:#8a7d67;}
.tc-sec.lv4::before{content:"— ";color:#c3b79f;}
.tc-sec.is-now{border-left-color:var(--gold);background:rgba(200,168,92,.16);color:var(--brown);font-weight:700;}
.bk-toc-foot{flex:0 0 auto;border-top:1px solid var(--line);padding:12px 18px calc(12px + env(safe-area-inset-bottom));background:rgba(253,248,240,.98);}
.tc-dl{display:block;text-align:center;font-size:13px;font-weight:700;color:#fff;background:var(--brown);border-radius:999px;padding:11px 14px;text-decoration:none;}
.tc-hp{display:block;text-align:center;font-size:12px;color:#8a7d67;text-decoration:none;padding:9px 4px 1px;}
.tc-hp:hover{color:var(--brown);text-decoration:underline;text-underline-offset:3px;}

