/* ========================================================
   一億人の妄想 お金の現在地 / 記事ページ共通CSS
   人生丸ごとのお金を1記事に収める長尺フォーマット。
   スマホ完璧対応・情報密度を落とさない設計
   ======================================================== */

:root{
  /* === ブランド ==================================================
     17_(妄想家計簿)はピンク基調、19_(お金の現在地)は深いインディゴ基調。
     時間の重み・人生の年輪を感じさせる重厚なトーンでスタート。 */
  --ink:#10182a;
  --ink-sub:#38455c;
  --ink-mute:#6d7790;
  --line:#e2e7ef;
  --line-strong:#ccd3df;
  --bg:#f6f8fc;
  --bg-card:#ffffff;
  --bg-soft:#eef2f9;

  --accent:#2d4a85;
  --accent-2:#4967b0;
  --accent-soft:#e6edf9;
  --gold:#c78b3a;
  --gold-2:#e6b26b;
  --gold-soft:#fbf2e0;

  --good:#0d8f6f;
  --good-bg:#e2f4ed;
  --bad:#c8384a;
  --bad-bg:#fbe9ec;
  --note:#5d4fcf;
  --note-bg:#ecebfa;

  /* ライフステージカラー */
  --stage-baby:#e89473;    /* 幼少期 0〜6 */
  --stage-school:#6aa9d1;  /* 学童期 7〜12 */
  --stage-teen:#8c9fd8;    /* 中高 13〜18 */
  --stage-univ:#7bb8a6;    /* 大学・新社会人 19〜24 */
  --stage-career:#5a8a6f;  /* キャリア期 25〜39 */
  --stage-family:#c58ba8;  /* 家族期 30〜50 */
  --stage-mid:#b8945a;     /* ミドル 45〜60 */
  --stage-senior:#8a7fb3;  /* シニア 60〜 */

  /* チャート */
  --chart-a:#2d4a85;
  --chart-b:#c78b3a;
  --chart-c:#0d8f6f;
  --chart-d:#c8384a;
  --chart-e:#5d4fcf;
  --chart-f:#3da5a5;
  --chart-g:#e8833b;
  --chart-h:#8a7fb3;
  --chart-i:#9aa4b8;

  --radius:14px;
  --radius-sm:8px;
  --radius-lg:20px;
  --shadow:0 2px 6px rgba(16,24,42,.04), 0 14px 40px rgba(16,24,42,.07);
  --shadow-sm:0 1px 3px rgba(16,24,42,.06);
  --shadow-md:0 4px 14px rgba(16,24,42,.08);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;
  color:var(--ink);
  background:var(--bg);
  line-height:1.8;
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"palt";
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* ===== HEADER ===== */
.siteheader{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.92);
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}
.siteheader__inner{
  max-width:1080px;margin:0 auto;padding:14px 20px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
.siteheader__logo{
  font-weight:900;font-size:17px;letter-spacing:.02em;line-height:1.2;
  display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;
}
.siteheader__logo em{color:var(--accent);font-style:normal;font-family:"Inter",sans-serif}
.siteheader__logo small{
  font-size:10px;color:var(--ink-mute);font-weight:600;
  letter-spacing:.18em;font-family:"Inter",sans-serif;
}
.siteheader__logo{text-decoration:none;color:inherit}
.siteheader__logo:hover{text-decoration:none;opacity:.85}
.siteheader__nav{display:flex;gap:18px;font-size:13px;font-weight:600}
.siteheader__nav a{color:var(--ink-sub)}

/* ハンバーガー（チェックボックス・ハック） */
.siteheader__toggle{
  position:absolute;left:-9999px;width:1px;height:1px;
  opacity:0;pointer-events:none;
}
.siteheader__menubtn{display:none;cursor:pointer}
@media(max-width:820px){
  .siteheader__menubtn{
    display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;
    width:38px;height:38px;border:1px solid var(--line-strong);border-radius:8px;
    background:#fff;padding:0;flex-shrink:0;
  }
  .siteheader__menubtn span{
    display:block;width:18px;height:2px;background:var(--ink);border-radius:2px;
    transition:transform .2s,opacity .2s;
  }
  .siteheader__nav{
    position:fixed;top:0;right:-100%;width:78%;max-width:320px;height:100vh;
    flex-direction:column;gap:0;background:#fff;border-left:1px solid var(--line);
    padding:72px 8px 32px;box-shadow:-4px 0 24px rgba(0,0,0,.08);
    transition:right .28s ease;z-index:60;overflow-y:auto;
  }
  .siteheader__nav a{
    padding:14px 16px;border-bottom:1px solid var(--line);font-size:15px;font-weight:700;
  }
  .siteheader__toggle:checked ~ .siteheader__nav{right:0}
  .siteheader__toggle:checked ~ .siteheader__menubtn span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .siteheader__toggle:checked ~ .siteheader__menubtn span:nth-child(2){opacity:0}
  .siteheader__toggle:checked ~ .siteheader__menubtn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .siteheader__overlay{display:none;position:fixed;inset:0;background:rgba(16,24,42,.5);z-index:55}
  .siteheader__toggle:checked ~ .siteheader__overlay{display:block}
}

/* ===== HERO ===== */
.hero{
  background:
    radial-gradient(1200px 500px at 15% 0%, rgba(45,74,133,.11), transparent 60%),
    radial-gradient(900px 400px at 90% 100%, rgba(199,139,58,.10), transparent 60%),
    linear-gradient(180deg,#ffffff 0%, #f6f8fc 100%);
  padding:56px 20px 44px;border-bottom:1px solid var(--line);
}
.hero__inner{max-width:900px;margin:0 auto}
.hero__breadcrumb{
  font-size:12px;color:var(--ink-mute);margin-bottom:18px;
  letter-spacing:.05em;
}
.hero__category{
  display:inline-block;background:var(--accent);color:#fff;
  padding:5px 14px;border-radius:99px;font-size:11px;font-weight:800;
  letter-spacing:.12em;margin-bottom:16px;font-family:"Inter",sans-serif;
}
.hero__title{
  font-size:clamp(23px,4.5vw,36px);font-weight:900;line-height:1.45;
  margin:0 0 22px;letter-spacing:-.01em;
}
.hero__title em{
  color:var(--accent);font-style:normal;
  background:linear-gradient(transparent 60%, rgba(199,139,58,.28) 60%);
  padding:0 2px;
}
.hero__lead{
  font-size:15.5px;line-height:2;color:var(--ink-sub);margin:0;
  border-left:4px solid var(--accent);padding:8px 0 8px 18px;
  background:linear-gradient(90deg, rgba(45,74,133,.05), transparent);
}
.hero__lead strong{color:var(--ink);font-weight:700}
.hero__meta{
  display:flex;flex-wrap:wrap;gap:18px;margin-top:28px;
  padding-top:22px;border-top:1px dashed var(--line);
  font-size:12px;color:var(--ink-mute);
}
.hero__meta strong{color:var(--ink);font-weight:700}

/* ===== KEY FACTS ===== */
.keyfacts{
  max-width:900px;margin:-32px auto 0;padding:0 20px;
  position:relative;z-index:2;
}
.keyfacts__grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;
}
.keyfacts__item{
  text-align:center;padding:22px 12px;
  border-right:1px solid var(--line);
}
.keyfacts__item:last-child{border-right:0}
.keyfacts__label{
  font-size:10.5px;color:var(--ink-mute);letter-spacing:.14em;
  font-weight:700;font-family:"Inter",sans-serif;
}
.keyfacts__num{
  font-family:"Inter",sans-serif;font-weight:900;
  font-size:clamp(18px,3.8vw,26px);color:var(--ink);
  line-height:1.2;margin:6px 0 3px;letter-spacing:-.02em;
}
.keyfacts__num em{color:var(--accent);font-style:normal;font-size:.65em;margin-left:2px}
.keyfacts__num.is-gold em{color:var(--gold)}
.keyfacts__sub{font-size:11px;color:var(--ink-mute);line-height:1.5}
@media(max-width:720px){
  .keyfacts__grid{grid-template-columns:repeat(2,1fr)}
  .keyfacts__item{border-bottom:1px solid var(--line)}
  .keyfacts__item:nth-child(odd){border-right:1px solid var(--line)}
  .keyfacts__item:nth-child(even){border-right:0}
  .keyfacts__item:nth-last-child(-n+2){border-bottom:0}
}

/* ===== 本文レイアウト ===== */
.article{
  max-width:900px;margin:0 auto;padding:56px 20px 32px;
}
.article section{margin-bottom:64px}
.article h2{
  font-size:clamp(21px,3.4vw,28px);font-weight:900;
  margin:0 0 22px;padding:0 0 14px 0;
  border-bottom:3px solid var(--ink);letter-spacing:-.01em;
  position:relative;line-height:1.4;
}
.article h2::after{
  content:"";position:absolute;left:0;bottom:-3px;
  width:72px;height:3px;background:var(--accent);
}
.article h2 .num{
  display:inline-block;background:var(--ink);color:#fff;
  font-family:"Inter",sans-serif;font-size:13px;font-weight:800;
  padding:3px 11px;border-radius:4px;margin-right:12px;vertical-align:middle;
  letter-spacing:.08em;
}
.article h3{
  font-size:clamp(17px,2.6vw,20px);font-weight:800;
  margin:36px 0 16px;padding-left:14px;border-left:4px solid var(--accent);
  line-height:1.55;
}
.article h4{
  font-size:15.5px;font-weight:800;margin:24px 0 12px;color:var(--ink);
}
.article p{margin:0 0 16px;color:var(--ink-sub);font-size:15px;line-height:2}
.article p strong{color:var(--ink);font-weight:700}
.article ul,.article ol{padding-left:1.4em;margin:0 0 16px;color:var(--ink-sub);line-height:1.9}
.article li{margin-bottom:4px}

/* ===== プロフィールカード ===== */
.persona{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);overflow:hidden;
}
.persona__top{
  background:linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);
  color:#fff;padding:28px 28px 22px;position:relative;
}
.persona__top.cat-young   {background:linear-gradient(135deg,#5a8a6f,#7ab393)}
.persona__top.cat-family  {background:linear-gradient(135deg,#c58ba8,#dfa8c0)}
.persona__top.cat-mid     {background:linear-gradient(135deg,#b8945a,#d4b074)}
.persona__top.cat-senior  {background:linear-gradient(135deg,#8a7fb3,#a79bd0)}
.persona__top.cat-single  {background:linear-gradient(135deg,#c8384a,#e06775)}
.persona__avatar{
  width:80px;height:80px;border-radius:50%;
  background:#fff;color:var(--accent);
  display:flex;align-items:center;justify-content:center;
  font-size:32px;font-weight:900;font-family:"Noto Sans JP",sans-serif;
  box-shadow:0 4px 18px rgba(0,0,0,.14);margin-bottom:14px;
}
.persona__name{font-size:23px;font-weight:900;margin:0 0 4px;line-height:1.3}
.persona__name small.persona__name__pseudo{
  font-size:.55em;font-weight:500;opacity:.85;margin-left:8px;
  letter-spacing:.05em;
}
.persona__tag{font-size:13px;opacity:.92;line-height:1.6}
.persona__badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.persona__badge{
  background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.42);
  padding:4px 11px;border-radius:99px;font-size:11px;font-weight:600;
  letter-spacing:.02em;
}
.persona__table{padding:0}
.persona__table dl{
  margin:0;display:grid;grid-template-columns:130px 1fr;
}
.persona__table dt,.persona__table dd{
  margin:0;padding:13px 22px;border-bottom:1px solid var(--line);
  font-size:14px;line-height:1.7;
}
.persona__table dt{
  background:#fafbfd;color:var(--ink-mute);font-weight:700;
  font-size:12px;display:flex;align-items:center;letter-spacing:.02em;
}
.persona__table dd{color:var(--ink);font-weight:500}
.persona__table > dl > :nth-last-child(-n+2){border-bottom:0}
@media(max-width:580px){
  .persona__table dl{grid-template-columns:96px 1fr}
  .persona__table dt,.persona__table dd{padding:10px 14px;font-size:13px}
}

/* ===== ライフステージ・ナビ（スクロールで追従するTOC的） ===== */
.stage-nav{
  position:sticky;top:58px;z-index:40;
  background:rgba(255,255,255,.95);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
  padding:10px 20px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.stage-nav__inner{
  max-width:900px;margin:0 auto;
  display:flex;gap:6px;min-width:max-content;
}
.stage-nav a{
  display:inline-flex;align-items:center;gap:6px;
  background:#fff;border:1px solid var(--line);
  padding:6px 12px;border-radius:99px;
  font-size:11.5px;font-weight:700;color:var(--ink-sub);
  white-space:nowrap;transition:all .15s;
}
.stage-nav a:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}
.stage-nav a .age{
  font-family:"Inter",sans-serif;font-size:10px;color:var(--ink-mute);
  font-weight:800;letter-spacing:.03em;
}

/* ===== ライフステージ区切り（でっかい章見出し） ===== */
.stage-divider{
  margin:56px 0 32px;padding:32px 28px 28px;
  border-radius:var(--radius-lg);position:relative;overflow:hidden;
  color:#fff;box-shadow:var(--shadow-md);
}
.stage-divider.is-baby   {background:linear-gradient(135deg,#e89473,#f0b092)}
.stage-divider.is-school {background:linear-gradient(135deg,#6aa9d1,#8fc2e0)}
.stage-divider.is-teen   {background:linear-gradient(135deg,#8c9fd8,#adbbe6)}
.stage-divider.is-univ   {background:linear-gradient(135deg,#7bb8a6,#9bcebe)}
.stage-divider.is-career {background:linear-gradient(135deg,#5a8a6f,#7ab393)}
.stage-divider.is-family {background:linear-gradient(135deg,#c58ba8,#dfa8c0)}
.stage-divider.is-mid    {background:linear-gradient(135deg,#b8945a,#d4b074)}
.stage-divider.is-senior {background:linear-gradient(135deg,#8a7fb3,#a79bd0)}
.stage-divider::before{
  content:"";position:absolute;right:-40px;top:-40px;
  width:200px;height:200px;border-radius:50%;
  background:rgba(255,255,255,.09);
}
.stage-divider__chapter{
  display:inline-block;font-family:"Inter",sans-serif;
  font-size:11px;font-weight:900;letter-spacing:.18em;
  background:rgba(255,255,255,.22);padding:4px 12px;border-radius:99px;
  margin-bottom:14px;
}
.stage-divider__title{
  font-size:clamp(22px,4.2vw,30px);font-weight:900;
  margin:0 0 8px;letter-spacing:-.01em;line-height:1.3;
}
.stage-divider__range{
  font-family:"Inter",sans-serif;font-weight:800;
  font-size:clamp(14px,2.8vw,17px);opacity:.9;letter-spacing:.02em;
  margin-bottom:14px;
}
.stage-divider__lead{
  font-size:14px;line-height:1.9;max-width:640px;
  opacity:.95;position:relative;z-index:2;
}

/* ===== 人生年表（スタンダード縦型・拡張版） ===== */
.timeline{
  list-style:none;padding:0;margin:24px 0 0;position:relative;
}
.timeline::before{
  content:"";position:absolute;left:12px;top:12px;bottom:12px;
  width:2px;background:linear-gradient(180deg,var(--accent) 0%,var(--gold) 50%,var(--line) 100%);
}
.timeline li{
  position:relative;padding:6px 0 22px 40px;
}
.timeline li::before{
  content:"";position:absolute;left:5px;top:14px;
  width:16px;height:16px;border-radius:50%;
  background:#fff;border:3px solid var(--accent);
  box-shadow:0 0 0 3px #fff;
}
.timeline li.is-milestone::before{background:var(--gold);border-color:var(--gold)}
.timeline__date{
  font-family:"Inter",sans-serif;font-weight:800;font-size:12px;
  color:var(--accent);letter-spacing:.05em;
}
.timeline__date .age{
  display:inline-block;margin-left:8px;padding:1px 8px;
  background:var(--accent-soft);color:var(--accent);
  border-radius:4px;font-size:10.5px;font-weight:800;
}
.timeline li.is-milestone .timeline__date{color:var(--gold)}
.timeline li.is-milestone .timeline__date .age{background:var(--gold-soft);color:var(--gold)}
.timeline__text{font-size:14px;color:var(--ink);margin-top:4px;line-height:1.75}
.timeline__text strong{font-weight:700;color:var(--ink)}

/* ===== 年齢×お金のライフラインチャート（SVGベース） ===== */
.lifechart{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:24px;box-shadow:var(--shadow-sm);margin-top:16px;
}
.lifechart__title{
  font-size:12px;font-weight:800;color:var(--ink-mute);
  letter-spacing:.1em;margin:0 0 16px;
}
.lifechart__svg{width:100%;height:auto;display:block}
.lifechart__legend{
  display:flex;flex-wrap:wrap;gap:14px;margin-top:14px;
  font-size:12px;color:var(--ink-sub);
}
.lifechart__legend-item{display:flex;align-items:center;gap:6px}
.lifechart__legend-item::before{
  content:"";display:inline-block;width:14px;height:4px;border-radius:2px;
  background:currentColor;
}

/* ===== 書類インデックス（ジャンプカード） ===== */
.doc-index{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
  gap:10px;margin-top:16px;
}
.doc-index__card{
  display:block;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius-sm);padding:14px 16px;
  text-decoration:none;color:var(--ink);
  transition:all .15s;
}
.doc-index__card:hover{
  border-color:var(--accent);box-shadow:var(--shadow-sm);
  transform:translateY(-2px);text-decoration:none;
}
.doc-index__icon{
  font-family:"Inter",sans-serif;font-size:10px;font-weight:800;
  letter-spacing:.12em;color:var(--accent);margin-bottom:6px;
  display:block;
}
.doc-index__title{
  font-size:13.5px;font-weight:800;line-height:1.5;color:var(--ink);
  margin:0 0 4px;
}
.doc-index__meta{
  font-size:11px;color:var(--ink-mute);line-height:1.5;
}

/* ===== 給与明細テーブル（17_から継承） ===== */
.paystub{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);overflow:hidden;
}
.paystub__header{
  background:var(--ink);color:#fff;padding:18px 22px;
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;
}
.paystub__title{font-weight:800;font-size:15px;margin:0;color:#fff}
.paystub__month{font-family:"Inter",sans-serif;font-size:12px;opacity:.85;letter-spacing:.08em}
.paystub__body{padding:0}
.paystub__section{padding:14px 22px;border-bottom:1px solid var(--line)}
.paystub__section:last-child{border-bottom:0}
.paystub__section-title{
  font-size:11px;font-weight:800;letter-spacing:.1em;
  color:var(--ink-mute);margin:0 0 10px;
}
.paystub__section-title.is-give{color:var(--good)}
.paystub__section-title.is-take{color:var(--bad)}
.paystub__row{
  display:grid;grid-template-columns:1fr auto;gap:8px;
  padding:6px 0;font-size:14px;align-items:baseline;
}
.paystub__row__label{color:var(--ink-sub);display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.paystub__row__value{
  font-family:"Inter",sans-serif;font-weight:700;color:var(--ink);
  font-variant-numeric:tabular-nums;
}
.paystub__row sup a{
  font-size:10px;color:var(--note);background:var(--note-bg);
  padding:1px 6px;border-radius:99px;text-decoration:none;font-weight:700;
}
.paystub__total{
  display:grid;grid-template-columns:1fr auto;gap:8px;
  padding:14px 22px;background:#fafbfd;
  font-weight:800;align-items:baseline;
}
.paystub__total .paystub__row__value{font-size:18px}
.paystub__total.is-take-home{
  background:linear-gradient(135deg,#10182a,#1c2947);color:#fff;
}
.paystub__total.is-take-home .paystub__row__label{color:#fff}
.paystub__total.is-take-home .paystub__row__value{color:var(--gold-2);font-size:26px}

/* ===== ウォーターフォール ===== */
.waterfall{
  margin-top:22px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-sm);
}
.waterfall__title{
  font-size:12px;font-weight:800;color:var(--ink-mute);
  letter-spacing:.08em;margin:0 0 14px;
}
.waterfall__bars{display:flex;flex-direction:column;gap:8px}
.waterfall__bar{
  display:grid;grid-template-columns:96px 1fr 92px;gap:10px;
  align-items:center;font-size:13px;
}
.waterfall__bar__label{color:var(--ink-sub);font-weight:600}
.waterfall__bar__track{
  height:28px;background:#f3f5f9;border-radius:4px;position:relative;overflow:hidden;
}
.waterfall__bar__fill{
  position:absolute;top:0;bottom:0;border-radius:4px;
  display:flex;align-items:center;padding:0 10px;
  color:#fff;font-weight:700;font-size:11px;
  font-family:"Inter",sans-serif;
}
.waterfall__bar__value{
  font-family:"Inter",sans-serif;font-weight:800;text-align:right;
  font-variant-numeric:tabular-nums;
}
@media(max-width:560px){
  .waterfall__bar{grid-template-columns:72px 1fr 76px;font-size:12px}
  .waterfall__bar__label{font-size:12px}
}

/* ===== 円グラフ ===== */
.donut{
  display:grid;grid-template-columns:240px 1fr;gap:26px;align-items:center;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:26px;box-shadow:var(--shadow-sm);
}
@media(max-width:680px){.donut{grid-template-columns:1fr;gap:16px;padding:22px}}
.donut__svg{width:100%;max-width:240px;margin:0 auto}
.donut__legend{display:flex;flex-direction:column;gap:4px}
.donut__legend-row{
  display:grid;grid-template-columns:14px 1fr auto auto;gap:10px;
  align-items:center;font-size:13px;padding:5px 0;
  border-bottom:1px dashed var(--line);
}
.donut__legend-row:last-child{border-bottom:0}
.donut__swatch{width:12px;height:12px;border-radius:3px}
.donut__legend-label{color:var(--ink-sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.donut__legend-value{font-family:"Inter",sans-serif;font-weight:700;font-variant-numeric:tabular-nums}
.donut__legend-pct{
  font-family:"Inter",sans-serif;font-size:11px;color:var(--ink-mute);
  background:#f3f5f9;padding:1px 7px;border-radius:4px;
  min-width:46px;text-align:center;font-weight:700;
}

/* ===== 支出一覧テーブル（汎用金額テーブル） ===== */
.expense{
  width:100%;border-collapse:collapse;margin-top:16px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow-sm);font-size:14px;
}
.expense thead{background:#fafbfd}
.expense th{
  padding:13px 14px;font-size:12px;font-weight:800;color:var(--ink-mute);
  text-align:left;letter-spacing:.05em;border-bottom:1px solid var(--line);
}
.expense th.is-num{text-align:right}
.expense td{
  padding:13px 14px;border-bottom:1px solid var(--line);
  vertical-align:top;line-height:1.7;
}
.expense tr:last-child td{border-bottom:0}
.expense td.is-num{
  text-align:right;font-family:"Inter",sans-serif;font-weight:700;
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.expense td.is-bar{padding:13px 0}
.expense__bar{
  height:20px;background:#f3f5f9;border-radius:3px;position:relative;
  margin:0 10px;
}
.expense__bar__fill{
  position:absolute;inset:0;background:var(--chart-a);
  border-radius:3px;opacity:.85;
}
.expense__note{font-size:11px;color:var(--ink-mute);margin-top:3px;line-height:1.5}
.expense tfoot td{
  background:var(--ink);color:#fff;font-weight:800;font-size:15px;padding:14px;
}
.expense tfoot td.is-num{color:var(--gold-2);font-size:17px}
@media(max-width:560px){
  .expense{font-size:13px}
  .expense th,.expense td{padding:10px 10px}
}

/* ===== 2視点カード（親視点/本人視点） ===== */
.view-split{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;
}
@media(max-width:700px){.view-split{grid-template-columns:1fr}}
.view-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 24px;box-shadow:var(--shadow-sm);
  position:relative;overflow:hidden;
}
.view-card.is-parent{border-top:4px solid var(--chart-b)}
.view-card.is-self  {border-top:4px solid var(--chart-a)}
.view-card__label{
  display:inline-block;font-family:"Inter",sans-serif;
  font-size:10px;font-weight:900;letter-spacing:.14em;
  padding:3px 10px;border-radius:4px;margin-bottom:10px;
}
.view-card.is-parent .view-card__label{background:var(--gold-soft);color:var(--gold)}
.view-card.is-self .view-card__label{background:var(--accent-soft);color:var(--accent)}
.view-card__title{
  font-size:16px;font-weight:800;margin:0 0 10px;line-height:1.5;
}
.view-card__big{
  font-family:"Inter",sans-serif;font-weight:900;
  font-size:clamp(22px,3.6vw,28px);color:var(--ink);
  margin:6px 0;line-height:1.2;font-variant-numeric:tabular-nums;
}
.view-card__body{font-size:13.5px;line-height:1.8;color:var(--ink-sub);margin:10px 0 0}

/* ===== 養育費ロードマップ（スタック横棒） ===== */
.roadmap{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:24px;box-shadow:var(--shadow-sm);margin-top:16px;
}
.roadmap__title{font-size:13px;font-weight:800;color:var(--ink);margin:0 0 14px}
.roadmap__row{
  display:grid;grid-template-columns:100px 1fr 96px;gap:12px;
  align-items:center;padding:10px 0;
  border-bottom:1px dashed var(--line);font-size:13px;
}
.roadmap__row:last-child{border-bottom:0}
.roadmap__label{font-weight:700;color:var(--ink)}
.roadmap__label small{display:block;font-size:10.5px;color:var(--ink-mute);font-weight:500;margin-top:2px}
.roadmap__stack{
  height:26px;border-radius:4px;background:#f3f5f9;
  display:flex;overflow:hidden;
}
.roadmap__seg{
  height:100%;display:flex;align-items:center;justify-content:center;
  font-size:10.5px;font-weight:700;color:#fff;
  font-family:"Inter",sans-serif;overflow:hidden;white-space:nowrap;
}
.roadmap__total{
  text-align:right;font-family:"Inter",sans-serif;font-weight:800;
  font-variant-numeric:tabular-nums;color:var(--ink);
}
.roadmap__summary{
  margin-top:16px;padding:14px 18px;background:var(--accent-soft);
  border-radius:var(--radius-sm);font-size:13px;line-height:1.8;color:var(--ink-sub);
}
.roadmap__summary strong{color:var(--accent);font-weight:800}
@media(max-width:560px){
  .roadmap__row{grid-template-columns:80px 1fr 76px;font-size:12px;gap:8px}
}

/* ===== 残高カード ===== */
.balance{
  margin-top:22px;padding:26px 30px;
  background:linear-gradient(135deg,var(--gold-soft),#fff);
  border:2px solid var(--gold-2);border-radius:var(--radius);
  display:flex;justify-content:space-between;align-items:center;
  gap:16px;flex-wrap:wrap;
}
.balance__label{font-size:13px;font-weight:700;color:var(--ink-sub);line-height:1.6}
.balance__label small{display:block;font-size:11px;color:var(--ink-mute);font-weight:500;margin-top:3px}
.balance__value{
  font-family:"Inter",sans-serif;font-weight:900;
  font-size:clamp(28px,5vw,42px);color:var(--ink);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em;
}
.balance__value em{color:var(--gold);font-style:normal;font-size:.7em;margin-left:4px}
.balance__value.is-negative{color:var(--bad)}

/* ===== 資産負債サマリー（BS風） ===== */
.bsheet{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px;
}
@media(max-width:680px){.bsheet{grid-template-columns:1fr}}
.bsheet__col{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow-sm);
}
.bsheet__head{
  padding:14px 20px;font-size:12px;font-weight:800;letter-spacing:.12em;
  color:#fff;
}
.bsheet__col.is-asset .bsheet__head{background:var(--good)}
.bsheet__col.is-liab .bsheet__head{background:var(--bad)}
.bsheet__list{padding:6px 0}
.bsheet__row{
  display:grid;grid-template-columns:1fr auto;gap:10px;
  padding:10px 20px;border-bottom:1px dashed var(--line);
  font-size:13.5px;align-items:baseline;
}
.bsheet__row:last-child{border-bottom:0}
.bsheet__row__label{color:var(--ink-sub);line-height:1.5}
.bsheet__row__label small{display:block;font-size:11px;color:var(--ink-mute);margin-top:2px}
.bsheet__row__value{
  font-family:"Inter",sans-serif;font-weight:700;
  font-variant-numeric:tabular-nums;color:var(--ink);
}
.bsheet__total{
  padding:14px 20px;background:#fafbfd;
  display:grid;grid-template-columns:1fr auto;gap:10px;
  font-weight:800;font-size:15px;align-items:baseline;
}
.bsheet__total .bsheet__row__value{font-size:17px}
.bsheet__col.is-asset .bsheet__total .bsheet__row__value{color:var(--good)}
.bsheet__col.is-liab  .bsheet__total .bsheet__row__value{color:var(--bad)}
.bsheet__net{
  margin-top:14px;padding:20px 24px;
  background:linear-gradient(135deg,#10182a,#1c2947);color:#fff;
  border-radius:var(--radius);
  display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap;
}
.bsheet__net__label{font-size:12px;font-weight:700;letter-spacing:.08em;opacity:.9}
.bsheet__net__value{
  font-family:"Inter",sans-serif;font-weight:900;
  font-size:clamp(24px,4.2vw,32px);color:var(--gold-2);
  font-variant-numeric:tabular-nums;
}

/* ===== 比較バー ===== */
.compare{
  margin-top:22px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:22px 26px;box-shadow:var(--shadow-sm);
}
.compare__title{font-size:14px;font-weight:800;margin:0 0 16px;color:var(--ink)}
.compare__row{
  display:grid;grid-template-columns:160px 1fr 88px;gap:10px;
  align-items:center;margin-bottom:10px;font-size:13px;
}
.compare__row:last-child{margin-bottom:0}
.compare__label{color:var(--ink-sub);font-weight:500;line-height:1.4}
.compare__track{height:22px;background:#f3f5f9;border-radius:4px;position:relative;overflow:hidden}
.compare__fill{
  height:100%;border-radius:4px;
  background:linear-gradient(90deg,var(--chart-a),var(--accent-2));
}
.compare__fill.is-me{background:linear-gradient(90deg,var(--gold),var(--gold-2))}
.compare__value{
  text-align:right;font-family:"Inter",sans-serif;font-weight:800;
  font-variant-numeric:tabular-nums;
}
.compare__row.is-me .compare__label{color:var(--gold);font-weight:800}
@media(max-width:560px){
  .compare__row{grid-template-columns:116px 1fr 72px;font-size:12px}
}

/* ===== 分析カード（good/bad） ===== */
.point-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
@media(max-width:700px){.point-grid{grid-template-columns:1fr}}
.point{
  border-radius:var(--radius);padding:22px 24px;
  background:#fff;border:1px solid var(--line);position:relative;
}
.point.is-good{background:var(--good-bg);border-color:rgba(13,143,111,.3)}
.point.is-bad{background:var(--bad-bg);border-color:rgba(200,56,74,.3)}
.point__head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.point__icon{
  width:34px;height:34px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-weight:900;color:#fff;font-size:18px;
}
.point.is-good .point__icon{background:var(--good)}
.point.is-bad .point__icon{background:var(--bad)}
.point__label{font-size:11px;font-weight:800;letter-spacing:.15em;text-transform:uppercase}
.point.is-good .point__label{color:var(--good)}
.point.is-bad .point__label{color:var(--bad)}
.point__title{font-size:17px;font-weight:800;margin:0 0 10px;line-height:1.5}
.point__body{font-size:13.5px;line-height:1.85;color:var(--ink-sub);margin:0}
.point__body strong{color:var(--ink);font-weight:700}
.point__score{
  display:inline-block;font-family:"Inter",sans-serif;
  font-weight:900;font-size:11px;padding:2px 8px;border-radius:4px;
  margin-left:auto;letter-spacing:.08em;
}
.point.is-good .point__score{background:var(--good);color:#fff}
.point.is-bad .point__score{background:var(--bad);color:#fff}

/* ===== 総合評価ゲージ ===== */
.verdict{
  margin-top:28px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:26px;box-shadow:var(--shadow-sm);
}
.verdict__title{font-size:12px;font-weight:800;letter-spacing:.1em;color:var(--ink-mute);margin:0 0 14px}
.verdict__gauge{
  height:14px;border-radius:99px;overflow:hidden;position:relative;
  background:linear-gradient(90deg,var(--bad) 0%,var(--gold) 50%,var(--good) 100%);
}
.verdict__marker{
  position:absolute;top:-6px;width:4px;height:26px;background:var(--ink);
  border-radius:2px;box-shadow:0 0 0 3px #fff, 0 2px 6px rgba(0,0,0,.2);
}
.verdict__scale{
  display:flex;justify-content:space-between;margin-top:10px;
  font-size:11px;color:var(--ink-mute);font-weight:700;
}
.verdict__summary{
  margin-top:16px;padding:16px 20px;background:#fafbfd;
  border-radius:var(--radius-sm);font-size:14px;line-height:1.85;color:var(--ink-sub);
}
.verdict__summary strong{color:var(--accent);font-weight:800}

/* ===== 引用・本人の声 ===== */
.quote{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:28px 32px;box-shadow:var(--shadow-sm);position:relative;margin-top:18px;
}
.quote::before{
  content:"\201C";position:absolute;top:8px;left:18px;
  font-size:80px;font-family:Georgia,serif;color:var(--accent);
  opacity:.18;line-height:1;font-weight:900;
}
.quote__body{
  font-size:15px;line-height:2;color:var(--ink);
  padding-left:50px;margin:0;font-weight:500;
}
.quote__cite{
  display:block;text-align:right;margin-top:12px;
  font-size:12px;color:var(--ink-mute);
}

/* ===== Q&A ===== */
.qa{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.qa details{border-bottom:1px solid var(--line)}
.qa details:last-child{border-bottom:0}
.qa summary{
  list-style:none;cursor:pointer;padding:18px 22px;
  display:grid;grid-template-columns:30px 1fr 20px;gap:12px;align-items:center;
  font-weight:700;font-size:15px;color:var(--ink);
  transition:background .15s;
}
.qa summary::-webkit-details-marker{display:none}
.qa summary:hover{background:#fafbfd}
.qa summary::before{
  content:"Q";background:var(--accent);color:#fff;
  width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:"Inter",sans-serif;font-weight:900;font-size:13px;
}
.qa summary::after{
  content:"+";font-family:"Inter",sans-serif;font-weight:900;
  font-size:22px;color:var(--ink-mute);text-align:right;
  transition:transform .2s;
}
.qa details[open] summary::after{content:"−"}
.qa__answer{
  padding:0 22px 22px 64px;font-size:14px;line-height:1.95;color:var(--ink-sub);
}
.qa__answer p{margin:0 0 8px}

/* ===== 脚注 ===== */
.footnotes{
  margin-top:40px;padding:24px;background:#fff;
  border:1px solid var(--line);border-radius:var(--radius);
  font-size:12px;line-height:1.9;color:var(--ink-mute);
}
.footnotes h3{
  margin:0 0 12px;font-size:12px;font-weight:800;
  letter-spacing:.1em;color:var(--ink);border:0;padding:0;
}
.footnotes ol{margin:0;padding-left:20px;columns:1}
.footnotes li{margin-bottom:6px}
.footnotes li a{word-break:break-all;color:var(--note)}

/* ===== フッター ===== */
.sitefooter{
  margin-top:60px;padding:44px 20px 32px;
  background:var(--ink);color:rgba(255,255,255,.75);font-size:12px;
}
.sitefooter__inner{max-width:900px;margin:0 auto;text-align:center}
.sitefooter__logo{font-weight:900;color:#fff;margin-bottom:10px;font-size:16px}
.sitefooter__logo em{color:var(--gold-2);font-style:normal}
.sitefooter a{color:rgba(255,255,255,.9)}
.sitefooter__nav{
  margin-top:14px;display:flex;justify-content:center;gap:16px;flex-wrap:wrap;
  font-size:12px;
}
.sitefooter__copy{margin-top:20px;font-size:11px;opacity:.7}

/* ===== ユーティリティ ===== */
.u-center{text-align:center}
.u-mt-0{margin-top:0!important}
.u-note{font-size:12px;color:var(--ink-mute);line-height:1.8}
.u-tag{
  display:inline-block;background:var(--note-bg);color:var(--note);
  font-size:11px;font-weight:700;padding:2px 8px;border-radius:4px;
  letter-spacing:.03em;
}
.u-tag.is-gold{background:var(--gold-soft);color:var(--gold)}
.u-tag.is-good{background:var(--good-bg);color:var(--good)}
.u-tag.is-bad{background:var(--bad-bg);color:var(--bad)}

/* ===== アニメーション ===== */
@media(prefers-reduced-motion:no-preference){
  .keyfacts,.persona,.paystub,.donut,.expense,.compare,.point,
  .verdict,.qa,.waterfall,.stage-divider,.lifechart,.roadmap,.bsheet,.view-split{
    animation:fadeUp .5s ease both;
  }
  @keyframes fadeUp{
    from{opacity:0;transform:translateY(8px)}
    to{opacity:1;transform:translateY(0)}
  }
}

/* ===== フィクション注意書き ===== */
.disclaimer{
  max-width:900px;margin:48px auto 0;padding:22px 28px;
  background:linear-gradient(135deg,var(--gold-soft),#fffdf5);
  border:1px dashed var(--gold);border-radius:var(--radius);
  font-size:12.5px;line-height:1.9;color:var(--ink-sub);
  text-align:left;
}
.disclaimer__label{
  display:inline-block;background:var(--gold);color:#fff;
  font-size:10px;font-weight:800;padding:3px 10px;border-radius:99px;
  letter-spacing:.12em;margin-bottom:10px;
}
.disclaimer strong{color:var(--ink);font-weight:800}
.disclaimer p{margin:0 0 6px;font-size:12.5px;line-height:1.9;color:var(--ink-sub)}
.disclaimer p:last-child{margin-bottom:0}

/* ===== INDEX ページ用 ===== */
.lp-hero{
  padding:80px 20px 60px;text-align:center;
  background:
    radial-gradient(1400px 500px at 50% 0%, rgba(45,74,133,.12), transparent 60%),
    linear-gradient(180deg,#fff 0%,#f6f8fc 100%);
  border-bottom:1px solid var(--line);
}
.lp-hero__brand{
  font-family:"Inter",sans-serif;font-weight:900;font-size:11px;
  letter-spacing:.3em;color:var(--accent);margin-bottom:20px;
}
.lp-hero__title{
  font-size:clamp(26px,5.5vw,46px);font-weight:900;
  line-height:1.4;margin:0 0 24px;letter-spacing:-.02em;
}
.lp-hero__title em{
  color:var(--accent);font-style:normal;
  background:linear-gradient(transparent 62%, rgba(199,139,58,.3) 62%);
}
.lp-hero__lead{
  font-size:16px;line-height:2.1;color:var(--ink-sub);
  max-width:720px;margin:0 auto 30px;
}
.lp-hero__stats{
  display:flex;justify-content:center;gap:40px;flex-wrap:wrap;
  padding-top:24px;border-top:1px dashed var(--line);
  max-width:640px;margin:0 auto;
}
.lp-hero__stat{text-align:center}
.lp-hero__stat__num{
  font-family:"Inter",sans-serif;font-weight:900;font-size:28px;
  color:var(--accent);letter-spacing:-.02em;
}
.lp-hero__stat__label{font-size:11px;color:var(--ink-mute);letter-spacing:.1em;font-weight:700}

.lp-section{max-width:1040px;margin:0 auto;padding:56px 20px}
.lp-section__title{
  font-size:clamp(20px,3.5vw,28px);font-weight:900;margin:0 0 16px;
  text-align:center;letter-spacing:-.01em;
}
.lp-section__lead{
  font-size:14px;line-height:1.9;color:var(--ink-sub);
  text-align:center;max-width:620px;margin:0 auto 32px;
}
.persona-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;
}
.persona-card{
  display:block;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;text-decoration:none;color:inherit;
  box-shadow:var(--shadow-sm);transition:all .2s;
}
.persona-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);text-decoration:none}
.persona-card__top{padding:22px 22px 18px;color:#fff;position:relative}
.persona-card__top.cat-young   {background:linear-gradient(135deg,#5a8a6f,#7ab393)}
.persona-card__top.cat-family  {background:linear-gradient(135deg,#c58ba8,#dfa8c0)}
.persona-card__top.cat-mid     {background:linear-gradient(135deg,#b8945a,#d4b074)}
.persona-card__top.cat-senior  {background:linear-gradient(135deg,#8a7fb3,#a79bd0)}
.persona-card__top.cat-single  {background:linear-gradient(135deg,#c8384a,#e06775)}
.persona-card__no{
  font-family:"Inter",sans-serif;font-size:11px;font-weight:800;
  letter-spacing:.15em;opacity:.85;
}
.persona-card__name{font-size:19px;font-weight:900;margin:8px 0 4px;line-height:1.3}
.persona-card__tag{font-size:12px;opacity:.92;line-height:1.6}
.persona-card__body{padding:18px 22px 22px}
.persona-card__lead{font-size:13px;line-height:1.8;color:var(--ink-sub);margin:0 0 12px}
.persona-card__meta{
  display:flex;gap:10px;flex-wrap:wrap;
  padding-top:12px;border-top:1px dashed var(--line);
  font-size:11px;color:var(--ink-mute);
}
.persona-card__meta strong{color:var(--ink);font-weight:700}
.persona-card__status{
  display:inline-block;font-size:10px;font-weight:800;
  background:var(--gold-soft);color:var(--gold);
  padding:2px 8px;border-radius:4px;letter-spacing:.05em;
}
.persona-card.is-coming{opacity:.65;pointer-events:none}
.persona-card.is-coming .persona-card__status{background:#f3f5f9;color:var(--ink-mute)}

/* ===== フィルタUI ===== */
.filter-bar{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:0;margin-bottom:32px;box-shadow:var(--shadow-sm);overflow:hidden;
}
.filter-bar__toggle{
  width:100%;display:flex;align-items:center;justify-content:space-between;
  gap:12px;padding:18px 24px;background:#fff;border:0;cursor:pointer;
  font-family:inherit;text-align:left;color:inherit;
}
.filter-bar__toggle:hover{background:#fafbfd}
.filter-bar__toggle-text{
  font-size:13px;font-weight:800;color:var(--ink);
  letter-spacing:.08em;display:flex;align-items:center;gap:8px;
}
.filter-bar__toggle-icon{
  display:inline-block;font-size:10px;color:var(--accent);
  transition:transform .2s;
}
.filter-bar.is-collapsed .filter-bar__toggle-icon{transform:rotate(-90deg)}
.filter-bar__toggle-summary{
  font-size:11.5px;color:var(--ink-mute);font-weight:600;
  text-align:right;flex:1;line-height:1.5;
  overflow:hidden;text-overflow:ellipsis;
}
.filter-bar__body{
  padding:4px 24px 22px;max-height:2000px;
  transition:max-height .25s ease,opacity .2s;opacity:1;
}
.filter-bar.is-collapsed .filter-bar__body{
  max-height:0;padding-top:0;padding-bottom:0;
  overflow:hidden;opacity:0;pointer-events:none;
}
.filter-bar__title{
  font-size:12px;font-weight:800;color:var(--ink-mute);
  letter-spacing:.12em;margin:0 0 12px;
}
.filter-bar__group{display:flex;flex-wrap:wrap;gap:18px;margin-bottom:14px}
.filter-bar__group:last-child{margin-bottom:0}
.filter-bar__label{
  font-size:11px;font-weight:800;color:var(--ink);
  letter-spacing:.08em;min-width:72px;padding-top:6px;
}
.filter-bar__chips{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.filter-chip{
  display:inline-flex;align-items:center;gap:6px;
  background:#fff;border:1px solid var(--line);
  padding:6px 12px;border-radius:99px;
  font-size:12px;font-weight:600;color:var(--ink-sub);
  cursor:pointer;transition:all .15s;user-select:none;
}
.filter-chip:hover{border-color:var(--accent);color:var(--accent)}
.filter-chip.is-active{
  background:var(--accent);color:#fff;border-color:var(--accent);
}
.filter-chip__count{
  font-size:10px;opacity:.65;font-family:"Inter",sans-serif;font-weight:800;
}
.filter-bar__search{
  width:100%;padding:10px 14px;margin:0 0 18px;
  border:1px solid var(--line);border-radius:var(--radius-sm);
  font-size:13px;background:#fafbfd;box-sizing:border-box;
}
.filter-bar__search:focus{outline:2px solid var(--accent);border-color:var(--accent)}
.filter-bar__reset{
  display:inline-block;margin-top:12px;font-size:12px;color:var(--note);
  text-decoration:none;cursor:pointer;font-weight:600;
}
.filter-bar__reset:hover{text-decoration:underline}
.filter-stat{
  margin-bottom:20px;padding:12px 18px;background:var(--accent-soft);
  border-radius:var(--radius-sm);font-size:13px;color:var(--ink-sub);
}
.filter-stat strong{color:var(--accent);font-weight:800}
.persona-card.is-hidden{display:none}

/* ===== モバイル：絞り込みUI ===== */
@media(max-width:720px){
  .filter-bar{border-radius:10px;margin-bottom:20px}
  .filter-bar__toggle{padding:14px 16px}
  .filter-bar__toggle-text{font-size:12.5px}
  .filter-bar__toggle-summary{font-size:11px}
  .filter-bar__body{padding:4px 16px 16px}
  .filter-bar__title{font-size:11px;margin-bottom:10px}
  .filter-bar__group{
    flex-direction:column;align-items:stretch;
    gap:6px;margin-bottom:12px;
    padding-bottom:12px;border-bottom:1px solid var(--line);
  }
  .filter-bar__group:last-child{border-bottom:0;padding-bottom:0;margin-bottom:0}
  .filter-bar__label{
    min-width:0;padding-top:0;
    font-size:10.5px;color:var(--ink-mute);
    letter-spacing:.1em;
  }
  .filter-bar__chips{gap:5px;width:100%}
  .filter-chip{
    padding:5px 10px;font-size:11.5px;
    border-radius:99px;line-height:1.4;
  }
  .filter-chip__count{font-size:9.5px}
  .filter-bar__search{
    margin-top:12px;padding:9px 12px;font-size:12.5px;
    border-radius:8px;
  }
  .filter-bar__reset{margin-top:10px;font-size:11.5px}
  .filter-stat{
    margin-bottom:14px;padding:10px 14px;
    font-size:12px;border-radius:8px;
  }
  .lp-hero__stats{gap:20px;padding-top:18px}
  .lp-hero__stat__num{font-size:22px}
  .lp-hero__stat__label{font-size:10px}
  .persona-grid{grid-template-columns:1fr;gap:14px}
  .persona-card__top{padding:18px 18px 14px}
  .persona-card__name{font-size:17px}
  .persona-card__tag{font-size:11.5px}
  .persona-card__body{padding:14px 18px 18px}
  .persona-card__lead{font-size:12.5px;line-height:1.75}
  .persona-card__meta{font-size:11px;gap:8px}
}
@media(max-width:400px){
  .filter-bar{padding:14px 12px}
  .filter-chip{padding:4px 9px;font-size:11px}
}

/* ===== トップ・フィクションバナー ===== */
.fiction-banner{
  margin:0 0 22px;padding:12px 18px;
  background:linear-gradient(135deg,#fbf2e0,#fef8e6);
  border:1px solid var(--gold);border-radius:var(--radius-sm);
  display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;
  font-size:12.5px;line-height:1.65;color:var(--ink-sub);
  box-shadow:0 2px 8px rgba(199,139,58,.08);
}
.fiction-banner__icon{
  background:var(--gold);color:#fff;font-weight:800;
  padding:3px 10px;border-radius:4px;font-size:10.5px;
  letter-spacing:.12em;white-space:nowrap;
}
.fiction-banner__text strong{color:var(--ink);font-weight:700}
@media(max-width:560px){.fiction-banner{font-size:11.5px}}

/* ===== TL;DR ビジュアル要約カード ===== */
.tldr{
  max-width:900px;margin:24px auto 0;padding:28px 30px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);position:relative;
}
.tldr__label{
  display:inline-block;font-family:"Inter",sans-serif;font-weight:900;
  font-size:11px;letter-spacing:.14em;
  background:var(--accent-soft);color:var(--accent);
  padding:4px 12px;border-radius:4px;margin-bottom:14px;
}
.tldr__headline{
  font-size:clamp(18px,3vw,22px);font-weight:900;line-height:1.5;
  margin:0 0 18px;color:var(--ink);
}
.tldr__snapshots{
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
  margin-bottom:20px;
}
.tldr__snap{
  background:#fafbfd;border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:16px 18px;text-align:center;
}
.tldr__snap__label{
  font-size:10.5px;color:var(--ink-mute);font-weight:700;
  letter-spacing:.1em;font-family:"Inter",sans-serif;
}
.tldr__snap__val{
  font-family:"Inter",sans-serif;font-weight:900;
  font-size:clamp(18px,3.6vw,24px);color:var(--ink);
  margin:6px 0 2px;letter-spacing:-.01em;
}
.tldr__snap__val em{color:var(--accent);font-style:normal;font-size:.6em;margin-left:2px}
.tldr__snap__sub{font-size:11px;color:var(--ink-mute)}
@media(max-width:640px){.tldr__snapshots{grid-template-columns:1fr;gap:10px}}

/* ===== ライフアーク（ビジュアル年表） ===== */
.lifearc{
  margin-top:6px;background:#fafbfd;
  border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:18px 22px;
}
.lifearc__label{
  font-size:10.5px;font-weight:700;color:var(--ink-mute);
  letter-spacing:.1em;margin:0 0 12px;
}
.lifearc__track{
  position:relative;display:flex;align-items:center;
  padding:20px 0 28px;
}
.lifearc__line{
  position:absolute;left:0;right:0;top:50%;height:3px;
  background:linear-gradient(90deg,var(--stage-baby),var(--stage-univ),var(--stage-career),var(--stage-family),var(--stage-senior));
  border-radius:99px;
}
.lifearc__dot{
  position:relative;z-index:2;flex:1;text-align:center;
}
.lifearc__dot::before{
  content:"";display:block;width:14px;height:14px;margin:0 auto;
  background:#fff;border:3px solid var(--accent);border-radius:50%;
  box-shadow:0 0 0 3px #fafbfd;
}
.lifearc__dot.is-now::before{background:var(--gold);border-color:var(--gold);width:18px;height:18px;margin-top:-2px}
.lifearc__dot__age{
  display:block;font-family:"Inter",sans-serif;font-weight:800;
  font-size:10px;color:var(--ink-mute);margin-top:8px;
}
.lifearc__dot__label{
  display:block;font-size:10.5px;line-height:1.4;
  color:var(--ink-sub);margin-top:3px;padding:0 2px;
}
.lifearc__dot.is-now .lifearc__dot__age{color:var(--gold)}
.lifearc__dot.is-now .lifearc__dot__label{color:var(--ink);font-weight:700}

/* ===== ストーリー1行 ===== */
.tldr__story{
  margin-top:16px;padding:14px 18px;
  background:linear-gradient(90deg,var(--accent-soft),transparent);
  border-left:4px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;
  font-size:14px;line-height:1.8;color:var(--ink);font-weight:500;
}
.tldr__story strong{color:var(--accent);font-weight:800}

/* ===== 目次（TOC） ===== */
.toc{
  max-width:900px;margin:16px auto 0;padding:16px 22px;
  background:#fafbfd;border:1px solid var(--line);border-radius:var(--radius-sm);
  font-size:13px;
}
.toc__title{
  font-weight:800;color:var(--ink-mute);font-size:11px;
  letter-spacing:.1em;margin:0 0 10px;
}
.toc__list{
  display:flex;flex-wrap:wrap;gap:8px 14px;list-style:none;padding:0;margin:0;
}
.toc__list a{
  color:var(--ink-sub);text-decoration:none;
  border-bottom:1px dashed transparent;transition:all .15s;
}
.toc__list a:hover{color:var(--accent);border-color:var(--accent)}
.toc__list a::before{
  content:"・";color:var(--accent);margin-right:2px;
}

/* ===== 尊厳配慮バナー（末尾） ===== */
.dignity-note{
  max-width:900px;margin:28px auto 0;padding:22px 28px;
  background:linear-gradient(135deg,#eef2f9,#fff);
  border-left:4px solid var(--accent);border-radius:var(--radius-sm);
  font-size:12.5px;line-height:1.9;color:var(--ink-sub);
}
.dignity-note__label{
  display:inline-block;font-family:"Inter",sans-serif;font-weight:900;
  font-size:10.5px;letter-spacing:.14em;color:var(--accent);
  margin-bottom:6px;
}
.dignity-note strong{color:var(--ink);font-weight:700}

/* ===== 意思決定ログ（decision-log） ===== */
.decision-log{
  max-width:900px;margin:36px auto;padding:26px 30px;
  background:linear-gradient(135deg,#fefaf1 0%,#fff 100%);
  border:1px solid var(--gold);border-radius:var(--radius);
  box-shadow:0 4px 16px rgba(199,139,58,.08);position:relative;
}
.decision-log::before{
  content:"DECISION LOG";position:absolute;top:-10px;left:24px;
  background:var(--gold);color:#fff;font-family:"Inter",sans-serif;
  font-weight:900;font-size:10.5px;letter-spacing:.14em;
  padding:4px 12px;border-radius:4px;
}
.decision-log__date{
  font-family:"Inter",sans-serif;font-weight:800;font-size:11px;
  color:var(--gold);letter-spacing:.1em;margin-bottom:4px;
}
.decision-log__title{
  font-size:18px;font-weight:900;color:var(--ink);
  margin:2px 0 14px;line-height:1.5;
}
.decision-log__body{
  font-size:14px;line-height:1.95;color:var(--ink-sub);margin:0 0 16px;
}
.decision-log__body strong{color:var(--ink);font-weight:700}
.decision-log__voice{
  border-left:3px solid var(--accent,#c78b3a);
  padding:12px 16px;margin:12px 0;
  font-style:italic;color:var(--ink-sub);
  background:rgba(199,139,58,0.04);
  font-size:14px;line-height:1.85;
}
.decision-log__voice.is-expert{border-left-color:#5fa08a;background:rgba(95,160,138,0.04)}
.decision-log__voice.is-family{border-left-color:#c8384a;background:rgba(200,56,74,0.04)}

/* お金の苦労エピソード */
.hardship{
  background:rgba(200,56,74,0.04);
  border:1px solid rgba(200,56,74,0.2);
  border-radius:8px;padding:20px 22px;margin:16px 0;
  position:relative;
}
.hardship__label{
  position:absolute;top:-10px;left:20px;
  background:#c8384a;color:#fff;
  padding:3px 10px;border-radius:3px;
  font-family:Inter,sans-serif;font-size:11px;font-weight:900;letter-spacing:0.15em;
}
.hardship h3{
  font-size:17px;font-weight:900;color:var(--ink,#10182a);
  margin:4px 0 10px;line-height:1.5;
}
.hardship p{
  font-size:14px;line-height:1.9;color:var(--ink-sub);margin:0 0 12px;
}

/* ==========================
   K-Phase: 可読性＆装飾強化
   ========================== */

/* ひと休みコラム */
.callout{
  background:linear-gradient(135deg,rgba(95,160,138,0.06),rgba(95,160,138,0.02));
  border-left:4px solid #5fa08a;border-radius:6px;
  padding:18px 22px;margin:20px 0;position:relative;
}
.callout::before{
  content:"💭 COLUMN";position:absolute;top:-10px;left:18px;
  background:#5fa08a;color:#fff;padding:3px 10px;border-radius:3px;
  font-family:Inter,sans-serif;font-size:10px;font-weight:900;letter-spacing:0.2em;
}
.callout h4{margin:6px 0 8px;font-size:16px;font-weight:900;color:var(--ink)}
.callout p{font-size:14px;line-height:1.9;color:var(--ink-sub);margin:0 0 8px}

/* 要約ボックス（セクション冒頭） */
.summary-box{
  background:rgba(45,74,133,0.04);border:1px solid rgba(45,74,133,0.18);
  border-radius:8px;padding:16px 20px;margin:14px 0 22px;
  font-size:14px;line-height:1.85;color:var(--ink-sub);
}
.summary-box strong{color:var(--ink);font-weight:800}
.summary-box::before{
  content:"TL;DR";display:inline-block;background:#2d4a85;color:#fff;
  padding:2px 8px;border-radius:3px;font-family:Inter,sans-serif;
  font-size:10px;font-weight:900;letter-spacing:0.15em;margin-right:10px;vertical-align:middle;
}

/* ハイライトインライン */
.hl{background:linear-gradient(transparent 60%,rgba(199,139,58,0.3) 60%);padding:0 2px;font-weight:700}
.hl-red{background:linear-gradient(transparent 60%,rgba(200,56,74,0.25) 60%);padding:0 2px;font-weight:700}
.hl-green{background:linear-gradient(transparent 60%,rgba(95,160,138,0.25) 60%);padding:0 2px;font-weight:700}

/* 3シナリオ比較グリッド */
.scenario-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0;
}
@media (max-width:720px){.scenario-grid{grid-template-columns:1fr}}
.scenario-card{
  background:rgba(255,255,255,0.03);border:1px solid rgba(255,255,255,0.08);
  border-radius:8px;padding:18px;
}
.scenario-card.is-best{border-color:#5fa08a;background:rgba(95,160,138,0.05)}
.scenario-card.is-base{border-color:#c78b3a;background:rgba(199,139,58,0.05)}
.scenario-card.is-worst{border-color:#c8384a;background:rgba(200,56,74,0.05)}
.scenario-card__label{
  font-family:Inter,sans-serif;font-size:10px;font-weight:900;letter-spacing:0.2em;
  padding:3px 8px;border-radius:3px;display:inline-block;margin-bottom:8px;
}
.scenario-card.is-best .scenario-card__label{background:#5fa08a;color:#fff}
.scenario-card.is-base .scenario-card__label{background:#c78b3a;color:#fff}
.scenario-card.is-worst .scenario-card__label{background:#c8384a;color:#fff}
.scenario-card h4{font-size:15px;font-weight:900;margin:4px 0 8px;color:var(--ink)}
.scenario-card__num{font-family:Inter,sans-serif;font-size:28px;font-weight:900;color:var(--ink);line-height:1}
.scenario-card__unit{font-size:12px;color:var(--ink-mute);margin:2px 0 10px}
.scenario-card p{font-size:13px;line-height:1.8;color:var(--ink-sub);margin:8px 0 0}

/* 家族の声グリッド */
.family-voices{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin:18px 0;
}
.voice-card{
  background:rgba(255,255,255,0.03);border-radius:8px;
  padding:16px;border-top:3px solid var(--accent,#c78b3a);
}
.voice-card.is-father{border-top-color:#2d4a85}
.voice-card.is-mother{border-top-color:#c8384a}
.voice-card.is-spouse{border-top-color:#c78b3a}
.voice-card.is-child{border-top-color:#5fa08a}
.voice-card.is-sibling{border-top-color:#8a6f3a}
.voice-card__role{
  font-family:Inter,sans-serif;font-size:10px;font-weight:900;letter-spacing:0.2em;
  color:var(--ink-mute);margin-bottom:4px;
}
.voice-card__name{font-size:13px;font-weight:900;color:var(--ink);margin-bottom:10px}
.voice-card__text{font-size:13px;line-height:1.85;color:var(--ink-sub);font-style:italic}

/* 関連ペルソナカード */
.related-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:18px 0;
}
.related-card{
  display:block;background:rgba(255,255,255,0.03);border:1px solid rgba(255,255,255,0.08);
  border-radius:6px;padding:14px;text-decoration:none;color:inherit;
  transition:border-color .15s,transform .15s;
}
.related-card:hover{border-color:var(--accent,#c78b3a);transform:translateY(-2px)}
.related-card__no{font-family:Inter,sans-serif;font-size:10px;font-weight:900;color:var(--accent,#c78b3a);letter-spacing:0.15em}
.related-card__name{font-size:14px;font-weight:900;color:var(--ink);margin:4px 0 6px}
.related-card__diff{font-size:12px;line-height:1.6;color:var(--ink-sub)}

/* 日次マネー日記 タイムライン */
.daily-log{
  position:relative;margin:18px 0 18px 20px;padding-left:24px;
  border-left:2px solid rgba(199,139,58,0.4);
}
.daily-log__entry{position:relative;padding:10px 0;margin-bottom:6px}
.daily-log__entry::before{
  content:"";position:absolute;left:-31px;top:14px;width:10px;height:10px;
  border-radius:50%;background:var(--accent,#c78b3a);
}
.daily-log__time{
  font-family:Inter,sans-serif;font-size:12px;font-weight:900;color:var(--accent,#c78b3a);
  letter-spacing:0.05em;
}
.daily-log__title{font-size:14px;font-weight:800;color:var(--ink);margin:2px 0 4px}
.daily-log__detail{font-size:13px;line-height:1.8;color:var(--ink-sub)}
.daily-log__amount{
  font-family:Inter,sans-serif;font-weight:900;color:var(--ink);
  background:rgba(199,139,58,0.12);padding:2px 8px;border-radius:3px;font-size:12px;
  margin-left:6px;
}

/* 書類画像風SVGコンテナ */
.docx{
  background:#fafaf6;border:1px solid #ddd;border-radius:4px;
  padding:0;margin:16px 0;
  box-shadow:0 2px 8px rgba(0,0,0,0.08);
  max-width:640px;
}
.docx__svg{display:block;width:100%;height:auto}
.docx__caption{
  font-size:12px;color:var(--ink-mute);padding:8px 12px;
  background:rgba(0,0,0,0.02);border-top:1px solid #eee;
}

/* L Phase 追加: 金銭権力図・地域別比較・ライフエンド・ポッドキャスト台本 */
.power-map{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin:18px 0;
}
.power-card{
  background:rgba(45,74,133,0.04);border:1px solid rgba(45,74,133,0.2);
  border-radius:8px;padding:16px;
}
.power-card__role{font-family:Inter,sans-serif;font-size:11px;font-weight:900;color:#2d4a85;letter-spacing:0.15em;margin-bottom:6px}
.power-card__person{font-size:14px;font-weight:900;color:var(--ink);margin-bottom:8px}
.power-card__detail{font-size:13px;line-height:1.8;color:var(--ink-sub)}
.power-card__influence{font-family:Inter,sans-serif;font-weight:900;color:#c78b3a;margin-top:8px}

.region-compare{
  background:rgba(95,160,138,0.04);border-radius:8px;
  padding:16px 20px;margin:16px 0;
}
.region-compare table{width:100%;font-size:13px}
.region-compare th{background:rgba(95,160,138,0.12);padding:8px;text-align:left}
.region-compare td{padding:8px;border-bottom:1px solid rgba(255,255,255,0.05)}

.lifeend-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin:18px 0;
}
.lifeend-card{
  background:rgba(138,111,58,0.04);border:1px solid rgba(138,111,58,0.2);
  border-radius:8px;padding:16px;
}
.lifeend-card__icon{font-size:22px;margin-bottom:6px}
.lifeend-card__title{font-size:14px;font-weight:900;color:var(--ink);margin-bottom:4px}
.lifeend-card__cost{font-family:Inter,sans-serif;font-weight:900;color:#8a6f3a;margin-bottom:8px}
.lifeend-card__detail{font-size:12px;line-height:1.7;color:var(--ink-sub)}

.podcast-script{
  background:rgba(0,0,0,0.4);border-radius:10px;
  padding:20px 24px;margin:18px 0;
  font-family:'Courier New',monospace;font-size:13px;
  color:#e0e0e0;line-height:1.85;
}
.podcast-script__line{display:flex;gap:12px;margin-bottom:8px}
.podcast-script__speaker{
  font-family:Inter,sans-serif;font-weight:900;font-size:11px;
  color:#c78b3a;letter-spacing:0.05em;min-width:60px;
}
.podcast-script__text{flex:1}
.podcast-script__direction{color:#888;font-style:italic;font-size:12px;margin:6px 0 6px 72px}

/* M Phase: 書類画像SVG用追加スタイル */
.doc-replica{
  background:#fefcf4;color:#222;border:1px solid #c4b89c;
  border-radius:2px;padding:0;margin:18px 0;
  box-shadow:0 4px 16px rgba(0,0,0,0.12);
  max-width:680px;font-family:'MS Gothic','Hiragino Mincho ProN',serif;
}
.doc-replica__header{
  background:#3a3a3a;color:#fff;padding:10px 14px;
  font-size:13px;font-weight:900;letter-spacing:0.1em;
}
.doc-replica__svg{display:block;width:100%;height:auto;background:#fefcf4}
.doc-replica__note{
  background:rgba(0,0,0,0.03);padding:8px 14px;
  font-size:11px;color:#666;border-top:1px solid #eee;
}

/* 読了進行バー（オプション） */
.reading-progress{
  position:fixed;top:0;left:0;height:3px;background:var(--accent,#c78b3a);
  z-index:100;transition:width .1s ease-out;width:0;
}

/* セクション見出しアイコン */
.section-icon{
  display:inline-block;width:24px;height:24px;margin-right:10px;
  vertical-align:-4px;background:var(--accent,#c78b3a);color:#fff;
  border-radius:50%;text-align:center;font-family:Inter,sans-serif;
  font-size:12px;font-weight:900;line-height:24px;
}

/* 愛読書カード */
.book-list{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:14px;margin:18px 0;
}
.book-card{
  background:rgba(255,255,255,0.02);
  border:1px solid rgba(255,255,255,0.08);
  border-radius:6px;padding:16px;
}
.book-card__title{
  font-size:15px;font-weight:900;color:var(--ink);margin-bottom:4px;line-height:1.4;
}
.book-card__author{
  font-size:12px;color:var(--ink-mute,#888);margin-bottom:10px;
  font-family:Inter,sans-serif;letter-spacing:0.05em;
}
.book-card__comment{
  font-size:13px;line-height:1.75;color:var(--ink-sub);
}
.decision-log__sides{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0;
}
.decision-log__side{
  padding:14px 16px;border-radius:var(--radius-sm);font-size:13px;line-height:1.8;
}
.decision-log__side.is-for{background:rgba(90,138,111,.08);border-left:3px solid #5a8a6f}
.decision-log__side.is-against{background:rgba(200,56,74,.06);border-left:3px solid var(--bad)}
.decision-log__side h4{
  font-size:12px;font-weight:800;margin:0 0 6px;
  font-family:"Inter",sans-serif;letter-spacing:.06em;
}
.decision-log__side.is-for h4{color:#5a8a6f}
.decision-log__side.is-against h4{color:var(--bad)}
.decision-log__result{
  font-size:13px;padding:12px 16px;
  background:var(--ink);color:#fff;border-radius:var(--radius-sm);
  line-height:1.8;
}
.decision-log__result strong{color:var(--gold);font-weight:800}
@media(max-width:640px){
  .decision-log{padding:24px 20px}
  .decision-log__sides{grid-template-columns:1fr}
}

/* ===== IF分岐シミュレーション（if-branch） ===== */
.if-branch{
  max-width:900px;margin:30px auto;padding:28px 30px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
}
.if-branch__label{
  display:inline-block;font-family:"Inter",sans-serif;font-weight:900;
  font-size:11px;letter-spacing:.14em;
  background:#2d4a85;color:#fff;padding:4px 12px;border-radius:4px;
  margin-bottom:12px;
}
.if-branch__headline{
  font-size:clamp(17px,2.6vw,21px);font-weight:900;line-height:1.5;
  margin:0 0 8px;color:var(--ink);
}
.if-branch__sub{font-size:13px;color:var(--ink-mute);margin:0 0 22px;line-height:1.7}
.if-branch__grid{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0;
}
.if-branch__col{
  padding:20px 22px;border-radius:var(--radius-sm);
  background:#fbfbfd;border:1px solid var(--line);
}
.if-branch__col.is-reality{background:linear-gradient(135deg,#fdf7ea,#fff);border-color:var(--gold)}
.if-branch__col.is-what-if{background:linear-gradient(135deg,#eef2f9,#fff);border-color:var(--accent)}
.if-branch__col-label{
  font-family:"Inter",sans-serif;font-weight:900;font-size:10.5px;
  letter-spacing:.14em;margin-bottom:10px;
}
.is-reality .if-branch__col-label{color:var(--gold)}
.is-what-if .if-branch__col-label{color:var(--accent)}
.if-branch__col-title{
  font-size:15px;font-weight:800;line-height:1.55;margin:0 0 14px;color:var(--ink);
}
.if-branch__col-num{
  font-family:"Inter",sans-serif;font-weight:900;
  font-size:clamp(28px,4.5vw,38px);letter-spacing:-.02em;
  line-height:1.1;margin-bottom:6px;color:var(--ink);
}
.if-branch__col-num em{font-size:.55em;font-style:normal;font-weight:700;margin-left:3px}
.is-reality .if-branch__col-num em{color:var(--gold)}
.is-what-if .if-branch__col-num em{color:var(--accent)}
.if-branch__col-unit{font-size:11px;color:var(--ink-mute);margin-bottom:12px;line-height:1.6}
.if-branch__col-body{font-size:13px;line-height:1.85;color:var(--ink-sub)}
.if-branch__col-body strong{color:var(--ink)}
.if-branch__diff{
  margin-top:16px;padding:14px 18px;
  background:var(--ink);color:#fff;border-radius:var(--radius-sm);
  font-size:13.5px;line-height:1.8;
}
.if-branch__diff strong{color:var(--gold);font-weight:800}
@media(max-width:640px){
  .if-branch{padding:22px 20px}
  .if-branch__grid{grid-template-columns:1fr}
}

/* ===== サンキー図（sankey-flow）シンプルSVG向け ===== */
.sankey-flow{
  max-width:900px;margin:24px auto;padding:24px 28px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
}
.sankey-flow__title{
  font-size:14px;font-weight:800;color:var(--ink);margin:0 0 14px;
  letter-spacing:.02em;
}
.sankey-flow__svg{width:100%;height:auto;display:block}
.sankey-flow__legend{
  display:flex;flex-wrap:wrap;gap:14px;margin-top:12px;
  font-size:11.5px;color:var(--ink-mute);
}
.sankey-flow__legend-item{display:flex;align-items:center;gap:6px}
.sankey-flow__legend-item::before{
  content:"";width:10px;height:10px;border-radius:2px;background:currentColor;
}

/* ===== 分布中の位置（dist-dot） ===== */
.dist-dot{
  max-width:900px;margin:22px auto;padding:24px 28px;
  background:linear-gradient(135deg,#fbfbfd,#fff);
  border:1px solid var(--line);border-radius:var(--radius);
}
.dist-dot__title{
  font-size:14px;font-weight:800;color:var(--ink);margin:0 0 4px;
}
.dist-dot__sub{font-size:12px;color:var(--ink-mute);margin:0 0 18px}
.dist-dot__bar{
  position:relative;height:54px;margin:22px 0 8px;
  background:linear-gradient(90deg,
    rgba(200,56,74,.12) 0%,
    rgba(231,176,70,.15) 50%,
    rgba(90,138,111,.18) 100%);
  border-radius:27px;
}
.dist-dot__marker{
  position:absolute;top:-10px;width:4px;height:74px;
  background:var(--ink);border-radius:2px;
}
.dist-dot__marker::after{
  content:"";position:absolute;left:-10px;top:-10px;
  width:24px;height:24px;border-radius:50%;
  background:var(--gold);border:4px solid #fff;
  box-shadow:0 2px 8px rgba(0,0,0,.18);
}
.dist-dot__marker-label{
  position:absolute;top:-32px;left:50%;transform:translateX(-50%);
  background:var(--ink);color:#fff;font-family:"Inter",sans-serif;
  font-weight:900;font-size:10.5px;letter-spacing:.1em;
  padding:3px 10px;border-radius:4px;white-space:nowrap;
}
.dist-dot__scale{
  display:flex;justify-content:space-between;
  font-family:"Inter",sans-serif;font-size:11px;color:var(--ink-mute);
  font-weight:700;margin-top:10px;
}
.dist-dot__scale span{flex:1;text-align:center}
.dist-dot__scale span:first-child{text-align:left}
.dist-dot__scale span:last-child{text-align:right}
.dist-dot__note{
  font-size:12px;color:var(--ink-sub);margin-top:14px;line-height:1.8;
}
.dist-dot__note strong{color:var(--ink)}

/* ===== 目次に戻るボタン ===== */
.toc-back-btn{position:fixed;bottom:24px;right:24px;background:#243259;color:#fff !important;padding:12px 22px;border-radius:99px;font-size:14px;font-weight:700;text-decoration:none;box-shadow:0 4px 16px rgba(0,0,0,.18);z-index:100;display:none;align-items:center;gap:6px;letter-spacing:.04em;transition:opacity .25s,transform .25s,background .15s;font-family:inherit}
.toc-back-btn.visible{display:inline-flex}
.toc-back-btn:hover{background:#1a2645;transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.22)}
.toc-back-btn .arrow{font-size:16px;line-height:1}
@media(max-width:768px){.toc-back-btn{bottom:16px;right:16px;padding:10px 18px;font-size:13px}}

/* ===== パンくずリスト ===== */
.breadcrumbs{
  max-width:1080px;margin:0 auto;padding:14px 20px 0;
  font-size:12px;color:var(--ink-mute);
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
}
.breadcrumbs a{color:var(--ink-sub);text-decoration:none}
.breadcrumbs a:hover{color:var(--accent);text-decoration:underline}
.breadcrumbs .sep{color:var(--ink-mute);opacity:.6}
.breadcrumbs .current{color:var(--ink);font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sitefooter .breadcrumbs{margin-bottom:24px;padding:0 20px;color:rgba(255,255,255,.7);justify-content:center}
.sitefooter .breadcrumbs a{color:rgba(255,255,255,.85)}
.sitefooter .breadcrumbs .current{color:#fff}

/* ===== ページトップに戻るボタン ===== */
.back-to-top{
  position:fixed;bottom:24px;left:24px;
  width:46px;height:46px;border-radius:50%;
  background:var(--ink);color:#fff !important;
  display:flex;align-items:center;justify-content:center;
  font-size:20px;font-weight:800;text-decoration:none;
  box-shadow:0 4px 14px rgba(0,0,0,.22);z-index:99;
  opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;
}
.back-to-top.is-visible{opacity:1;pointer-events:auto}
.back-to-top:hover{transform:translateY(-2px);background:#000;text-decoration:none}
@media(max-width:768px){.back-to-top{bottom:16px;left:16px;width:42px;height:42px;font-size:18px}}

/* ===== SP 幅フィット強化（ストーリー版含む全記事） ===== */
html{overflow-x:hidden}
body{overflow-x:hidden;max-width:100vw;width:100%}
img,svg,video,iframe{max-width:100%;height:auto}
@media(max-width:640px){
  pre,code{white-space:pre-wrap;word-break:break-word}
  /* 横長テーブルは横スクロール可能なラッパーとして扱う */
  .expense,.compare__table,.region-compare table{
    display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;
  }
  /* 2カラム → 1カラムへフォールバック */
  .keyfacts__grid,.view-split,.bsheet__grid{grid-template-columns:1fr !important}
  /* 主要セクションの padding 調整 */
  .hero,.persona,.lifechart,.donut,.qa,.point,.disclaimer,.bsheet,.waterfall,.compare,.roadmap{
    padding-left:14px;padding-right:14px;
    max-width:100%;
  }
  .hero__inner,.lp-hero,.lp-section{padding-left:16px;padding-right:16px;max-width:100%}
  /* 長い英数字や金額の改行を許可 */
  .hero__breadcrumb,.hero__title,.hero__lead,.persona__table dd,.qa__a,
  .verdict,.point__body,.expense td:not(.is-num){
    word-break:break-word;overflow-wrap:anywhere;
  }
  /* グリッドベースのレイアウト崩れ防止 */
  .waterfall__bar,.roadmap__row,.compare__row{
    grid-template-columns:1fr !important;gap:6px !important;
  }
  /* article 内全体の幅制限 */
  article,main,section,.article{max-width:100vw;overflow-x:hidden}
  /* sticky/fixed ヘッダー幅 */
  .siteheader,.view-toggle,.stage-nav{max-width:100vw}
}
