/* =============================================================================
   GovScope — 再デザインCSS（昆布 2026-09-28）
   設計方針（redesign-spec.md 参照）
   - 「かわいい行政データサイト」→「信頼できる行政データの相談窓口」へ。
   - 配色：ベース(淡い青灰)75% + メイン(濃紺)20% + アクセント(琥珀・1点)5%。
   - box-shadow 全廃／大きな角丸を縮小／丸ゴシックを廃止／面（背景色差）でゾーニング。
   - 憲法は継続：断定・評価しない／赤は「締切が近い」チップ以外に使わない／
     金額・比較バー・中央値比バッジは中立色厳守／全数値に一次資料リンク。
   - 外部フォント/CDN/外部画像/絵文字は禁止。既存クラス名はすべて維持（差し替え可能）。
   ============================================================================= */

/* ---- 1. 配色トークン（Light）--------------------------------------------- */
:root{
  --bg:#f4f6f9; --surface:#ffffff; --surface-1:#eef1f6; --surface-2:#dfe4ec;
  --header:#0e2745; --header-ink:#eef2f8; --header-ink-sub:#a9b8cc;
  --ink:#2b2f33; --ink-sub:#666d76; --ink-onwarm:#3a2c10;
  --link:#155e9e; --link-strong:#0f4a7d; --link-weak:#e6eef7;
  --primary:#123a63;
  --accent:#b8842c; --accent-weak:#f5ecd9;
  --warm:var(--accent); --warm-weak:var(--accent-weak); /* 旧トークン名を維持（互換） */
  --neutral-bar:#8b96a3; --neutral-face:#dfe4ec;
  --border:#dde2ea; --focus:#155e9e;
  --radius:6px; --radius-sm:4px; --radius-btn:5px; --pill:999px;
  --shadow-soft:none; /* box-shadow 全廃：この変数を参照する箇所は自動的に無効化される */
  --fs-body:16px; --fs-meta:13px; --fs-h1:32px; --fs-h2:22px; --fs-num:32px;
  --lh-body:1.8;
  --sp-1:8px; --sp-2:16px; --sp-3:24px; --sp-4:32px; --sp-6:48px; --sp-8:64px;
  --measure:66ch; --wrap:1000px;
  --font-base:system-ui,-apple-system,"Hiragino Kaku Gothic ProN","Yu Gothic Medium","Meiryo",sans-serif;
  --font-rounded:var(--font-base); /* 丸ゴシックは廃止。旧トークン参照箇所を自動でゴシックに統一 */

  /* 県識別色（識別専用・データ着色には使わない） */
  --pref-aomori:#5b7ba0; --pref-iwate:#4f8f8f; --pref-miyagi:#5c8f5a;
  --pref-akita:#a98a45;  --pref-yamagata:#8a6f9c; --pref-fukushima:#b97a52;
}

/* ---- 1. 配色トークン（Dark）--------------------------------------------- */
@media (prefers-color-scheme: dark){
  :root{
    --bg:#14181d; --surface:#1c2228; --surface-1:#222932; --surface-2:#2b333d;
    --header:#0a1826; --header-ink:#e7edf5; --header-ink-sub:#8fa0b8;
    --ink:#e4e7ec; --ink-sub:#9aa3ad; --ink-onwarm:#2a2010;
    --link:#6fa8dc; --link-strong:#8fc0ea; --link-weak:#182a3c;
    --primary:#5c88bd; --accent:#d1a55c; --accent-weak:#33291a;
    --neutral-bar:#7c8b9c; --neutral-face:#2b333d;
    --border:#30363f; --focus:#6fa8dc; --shadow-soft:none;
  }
}

/* ---- リセット・土台 ------------------------------------------------------ */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-base);color:var(--ink);background:var(--bg);font-size:var(--fs-body);line-height:var(--lh-body);font-feature-settings:"palt" 1}
img{max-width:100%;height:auto}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--sp-3)}
@media(max-width:640px){.wrap{padding:0 var(--sp-2)}}

a{color:var(--link);text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover{color:var(--link-strong);text-decoration-color:currentColor}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:2px}

/* ---- ヘッダー（サイトの顔＝濃紺の全面帯。影・角丸なし）------------------ */
header.site{background:var(--header);color:var(--header-ink);padding:var(--sp-2) 0}
header.site .wrap{display:flex;gap:var(--sp-2) var(--sp-3);align-items:center;flex-wrap:wrap;justify-content:space-between}
header.site .brand{display:flex;flex-direction:column;gap:2px}
header.site .logo{display:inline-flex;align-items:center;gap:.55em;font-weight:800;font-size:18px;color:var(--header-ink);text-decoration:none;letter-spacing:.01em}
header.site .logo .logo-mark{flex:none;color:var(--header-ink)}
header.site .logo .logo-svg{display:block;height:30px;width:auto;color:var(--header-ink)}
header.site .site-tagline{font-size:var(--fs-meta);color:var(--header-ink-sub);margin:0;letter-spacing:.01em}
header.site nav{display:flex;gap:var(--sp-3);flex-wrap:wrap}
header.site nav a{font-size:14px;color:var(--header-ink-sub);text-decoration:none;padding:2px 0;border-bottom:2px solid transparent;transition:color .15s ease,border-color .15s ease}
header.site nav a:hover,header.site nav a:focus-visible{color:var(--header-ink);border-bottom-color:var(--accent)}
header.site nav a[aria-current="page"]{color:var(--header-ink);font-weight:700;border-bottom-color:var(--accent)}

/* ---- データ帯（旧「最終更新」誤読対策：年度を主語にした専用帯）--------- */
.databar{background:var(--surface-1);border-top:none}
.databar-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-1) var(--sp-3);padding:10px 0}
.databar-main{font-size:14px;color:var(--ink);line-height:1.6}
.databar-label{color:var(--ink-sub);font-weight:700;font-size:12px;letter-spacing:.04em;margin-right:.4em}
.databar-main strong{color:var(--primary);font-weight:800}
.databar-sub{color:var(--ink-sub);font-size:12.5px;margin-left:.35em}
.databar-side{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.databar-note{font-size:12px;color:var(--ink-sub)}
/* 旧構造（.wrap>.meta）が残るページ用の後方互換スタイル。新規実装は .databar を使う */
.meta{color:var(--ink-sub);font-size:var(--fs-meta);line-height:1.7;margin:6px 0 0;max-width:none}
.wrap > .meta:first-child{background:var(--surface-1);padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-sm);margin:var(--sp-3) 0 0}

/* ---- パンくず ------------------------------------------------------------ */
.breadcrumb{font-size:var(--fs-meta);color:var(--ink-sub);padding:var(--sp-2) 0 0;display:flex;flex-wrap:wrap;gap:.4em;align-items:center}
.breadcrumb a{color:var(--ink-sub);text-decoration:none}
.breadcrumb a:hover{color:var(--link);text-decoration:underline}
.breadcrumb .sep{color:var(--ink-sub);opacity:.6}
.breadcrumb [aria-current="page"]{color:var(--ink);font-weight:700}

/* ---- セカンダリナビ（議会切替チップ＋県識別ドット。塗り面で現在地を示す）-- */
.subnav{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin:var(--sp-3) 0 0}
.subnav a{display:inline-flex;align-items:center;font-size:14px;text-decoration:none;color:var(--ink);background:var(--surface-1);padding:7px 15px;border-radius:var(--pill);transition:background .15s ease,color .15s ease}
.subnav a:hover{background:var(--surface-2)}
.subnav a[aria-current="true"]{background:var(--primary);color:#fff;font-weight:700}
.subnav a[aria-current="true"] .pref-dot{background:#fff}
.subnav a .pref-dot{width:8px;height:8px;border-radius:50%;background:var(--pref);display:inline-block;margin-right:6px;vertical-align:middle;flex:none}

/* ---- 見出し（ジャンプ率・余白で区切る。丸ゴシック廃止）------------------ */
h1{font-family:var(--font-base);font-size:var(--fs-h1);line-height:1.35;font-weight:800;margin:var(--sp-4) 0 var(--sp-2);letter-spacing:.005em}
h1 .badge{vertical-align:middle;margin-left:.5em}
h2{font-size:var(--fs-h2);line-height:1.4;font-weight:800;margin:var(--sp-6) 0 var(--sp-2);padding:0;border:none}
.eyebrow{font-family:var(--font-base);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:700;margin:var(--sp-6) 0 4px}
.eyebrow + h2{margin-top:0}

/* ---- 本文 ----------------------------------------------------------------- */
p{margin:var(--sp-2) 0;max-width:var(--measure)}

/* ---- プレビュー用の案内帯（中立面・実公開ではない旨）------------------- */
.preview-banner{background:var(--surface-1);color:var(--ink-sub);padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-sm);margin:var(--sp-3) 0 0;font-size:var(--fs-meta);line-height:1.7}

/* ---- パネル（影なし・面の差だけで区切る）--------------------------------- */
.card{background:var(--surface);padding:var(--sp-3);margin:var(--sp-3) 0;border-radius:var(--radius)}
@media(max-width:640px){.card{padding:var(--sp-2)}}

/* ---- KPI（交付額・支出合計）：主役数字は中立色（primary）--------------- */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}
@media(max-width:640px){.grid{grid-template-columns:1fr}}
.grid .card{margin:var(--sp-2) 0}
.total{font-family:var(--font-base);font-size:var(--fs-num);font-weight:800;line-height:1.2;font-variant-numeric:tabular-nums;color:var(--primary)}

/* ---- 項目リスト（zebra 面で読ませる）------------------------------- */
.recip-list{list-style:none;padding:0;margin:0}
.recip-list li{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2);border-radius:var(--radius-sm)}
.recip-list li:nth-child(odd){background:var(--surface-1)}
.recip-list li:nth-child(even){background:transparent}
.recip-list li:hover{background:var(--surface-2)}
.recip-list a{font-weight:700;font-size:17px;text-decoration:none}
.recip-list a:hover{text-decoration:underline}
.recip-list .type{font-size:12px;color:var(--ink-sub);background:var(--surface-2);border-radius:var(--pill);padding:2px 10px;white-space:nowrap}
.recip-list .badge{margin-left:auto;font-size:13px}

/* ---- データテーブル（見出し帯強め＋zebra＋余白を拡大）------------------- */
table{width:100%;border-collapse:separate;border-spacing:0;font-size:15px}
thead th{background:var(--surface-2);color:var(--ink-sub);font-weight:800;text-align:left;padding:12px var(--sp-2);white-space:nowrap}
thead th:first-child{border-radius:var(--radius-sm) 0 0 0}
thead th:last-child{border-radius:0 var(--radius-sm) 0 0}
tbody td{padding:14px var(--sp-2);border:none;vertical-align:top}
tbody tr:nth-child(even){background:var(--surface-1)}
td.amt,th.amt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
td:first-child{font-weight:700}
td .meta{display:inline;margin:0}

/* ---- 中央値比バッジ（評価しない・中立の面チップ厳守）--------------- */
.badge{display:inline-block;background:var(--neutral-face);color:var(--ink);border-radius:var(--pill);padding:4px 13px;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---- 比較バー（構成比）：善悪の色分けをしない中立単色 -------------- */
.bar{background:var(--surface-2);height:8px;border-radius:var(--pill);overflow:hidden;margin-bottom:4px;max-width:180px}
.bar>span{display:block;height:100%;background:var(--neutral-bar);border-radius:var(--pill)}

/* ---- 出典チップ（署名要素）：全数値が一次資料へ還る導線を目立たせる - */
.src a,a.source-pill{display:inline-flex;align-items:center;gap:.45em;white-space:nowrap;background:var(--link-weak);color:var(--link);font-size:13px;font-weight:700;text-decoration:none;padding:6px 13px;border-radius:var(--pill);transition:background .15s ease}
.src a:hover,a.source-pill:hover{background:#d7e6f4}
.src a svg,a.source-pill svg{width:14px;height:14px;flex:none}
.link-icon{width:.95em;height:.95em;vertical-align:-.14em;margin-right:.2em;flex:none}
@media (prefers-color-scheme: dark){
  .src a:hover,a.source-pill:hover{background:#20374d}
}

/* ---- CTA：フォーム送信系（訂正申し出等）だけに限定して使う ------------- */
.cta{display:inline-flex;align-items:center;gap:.5em;margin-top:var(--sp-1);padding:13px 24px;background:var(--primary);color:#fff;font-weight:700;font-size:16px;text-decoration:none;border-radius:var(--radius-btn);border:none;cursor:pointer;transition:background .15s ease}
.cta:hover{background:var(--link-strong);color:#fff}
.cta svg{width:16px;height:16px;flex:none}

/* ---- 免責・注意（中立の淡面。黄色警告色は使わない）---------------- */
.notice{background:var(--surface-1);padding:var(--sp-2) var(--sp-3);margin:var(--sp-4) 0 var(--sp-3);color:var(--ink-sub);font-size:14px;line-height:1.8;border-radius:var(--radius);max-width:none}
.notice a{color:var(--link)}

/* ---- 掲載範囲の注記（coverage）：box-shadowをやめ、背景グラデーションの
        「面の境界」で左端の色を表現する ------------------------------- */
.coverage{padding:var(--sp-2) var(--sp-3);margin:var(--sp-3) 0;border-radius:var(--radius);font-size:14px;line-height:1.8;max-width:none}
.coverage-partial{background:linear-gradient(to right, var(--link) 4px, var(--link-weak) 4px);color:var(--ink);font-weight:700}
.coverage-complete{background:linear-gradient(to right, var(--neutral-bar) 4px, var(--surface-1) 4px);color:var(--ink-sub)}

/* ---- フォーム（訂正の申し出）-------------------------------------- */
.formrow{margin:var(--sp-2) 0}
.formrow label{display:block;font-size:14px;font-weight:700;color:var(--ink);margin-bottom:6px}
.formrow input,.formrow textarea,.formrow select{width:100%;max-width:520px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:16px;font-family:inherit;color:var(--ink);background:var(--surface)}
.formrow textarea{min-height:140px;resize:vertical}

/* ---- リスト（about のデータソース等）------------------------------ */
main ul,.wrap > ul{padding-left:1.4em;max-width:var(--measure)}
.wrap > ul li{margin:6px 0}

/* ---- フッター（淡面で締める）------------------------------------- */
footer.site{margin-top:var(--sp-8);background:var(--surface-1);color:var(--ink-sub);font-size:13px;padding:var(--sp-4) 0;line-height:1.8}
footer.site p{max-width:none;margin:6px 0}
footer.site a{color:var(--link)}

/* ---- レスポンシブ：テーブルを狭幅でブロック化 -------------------- */
@media(max-width:640px){
  :root{--fs-h1:28px;--fs-h2:20px;--fs-num:28px}
  table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  table,tbody,tr,td{display:block;width:100%}
  tbody tr{padding:var(--sp-2);border-radius:var(--radius-sm);margin:0}
  tbody tr:nth-child(odd){background:var(--surface-1)}
  tbody tr:nth-child(even){background:transparent}
  tbody td{padding:4px 0;text-align:left}
  td.amt{text-align:left}
  tbody td[data-label]::before{content:attr(data-label);display:block;font-size:12px;font-weight:700;color:var(--ink-sub);margin-bottom:2px}
  .bar{max-width:100%}
  .recip-list .badge{margin-left:0;width:100%}
  .databar-inner{flex-direction:column;align-items:flex-start;gap:6px}
}

/* ---- 動きの抑制（reduced-motion 尊重）--------------------------- */
@media(prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important;scroll-behavior:auto !important}
}

/* =============================================================================
   データ可視化コンポーネント
   ・区切りは線・箱・影ではなく「面（背景色の差）」と余白で作る。
   ・件数・金額・比率は中立色。赤は「締切が近い」チップ1コンポーネントだけに使う。
   ============================================================================= */

:root{
  --viz-0:#eef1f6; --viz-1:#dde6ee; --viz-2:#bcd0e0; --viz-3:#8fabc4;
  --viz-4:#5f80a3; --viz-5:#123a63;
  --viz-ink-lo:#333a3d; --viz-ink-hi:#ffffff;
  --viz-track:#e2e7ee; --viz-fill:#8b96a3; --viz-fill-strong:#4f6a8a;

  --lane-a:transparent; --lane-b:#eef1f6; --lane-hover:#e4e9f0; --lane-head:#dfe4ec;

  --st-urgent-face:#f6e0dc; --st-urgent-ink:#9a3722;
  --st-soon-face:#f2e6cd;   --st-soon-ink:#7a5115;
  --st-open-face:#e2e7ee;   --st-open-ink:#5b5f66;
  --st-past-face:#e9ebef;   --st-past-ink:#7b7e85;
  --st-none-face:#e9ebef;   --st-none-ink:#7b7e85;
}
@media (prefers-color-scheme: dark){
  :root{
    --viz-0:#222932; --viz-1:#25313f; --viz-2:#2c4258; --viz-3:#365974;
    --viz-4:#4c78a0; --viz-5:#6f9ac8;
    --viz-ink-lo:#e2e6ec; --viz-ink-hi:#0d1520;
    --viz-track:#2b333d; --viz-fill:#7c8b9c; --viz-fill-strong:#9db4cc;

    --lane-a:transparent; --lane-b:#1f2530; --lane-hover:#28303c; --lane-head:#2b333d;

    --st-urgent-face:#4a2a23; --st-urgent-ink:#f0b9a8;
    --st-soon-face:#3a301c;   --st-soon-ink:#e6c98c;
    --st-open-face:#2b333d;   --st-open-ink:#b3b8c0;
    --st-past-face:#262c35;   --st-past-ink:#9b9fa8;
    --st-none-face:#262c35;   --st-none-ink:#9b9fa8;
  }
}

/* ---- 補助クラス ---------------------------------------------------------- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--surface);color:var(--link);padding:10px 16px;border-radius:0 0 var(--radius-sm) 0;z-index:10}
.skip-link:focus{left:0}
.missing{color:var(--ink-sub);font-size:13px;font-weight:400}

/* ---- ヒーロー（1画面＝1メッセージ）------------------------------------- */
.hero{margin:var(--sp-4) 0 var(--sp-6)}
.hero h1{margin:0 0 var(--sp-2);max-width:22em}
.hero-lead{font-size:17px;color:var(--ink);margin:0 0 var(--sp-3);max-width:none}
.hero-now{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2);align-items:baseline;background:var(--surface-1);border-radius:var(--radius);padding:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-2);max-width:none;font-size:15px}
.hero-now-date{font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums;white-space:nowrap}
.hero-now-cycle{color:var(--ink)}
.hero-fact{margin:0;font-size:15px;color:var(--ink);max-width:none}
.hero-fact strong{color:var(--primary)}
.viz-note-inline{color:var(--ink-sub);font-size:12px}

/* ---- KPI 4枚（面だけで区切る。枠線・影は使わない）---------------------- */
.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);margin:0 0 var(--sp-6)}
.kpi-item{background:var(--surface-1);border-radius:var(--radius);padding:var(--sp-3) var(--sp-2);display:flex;flex-direction:column;gap:4px}
.kpi-num{font-family:var(--font-base);font-size:38px;line-height:1.1;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums}
.kpi-label{font-size:14px;font-weight:700;color:var(--ink);line-height:1.5}
.kpi-sub{font-size:12px;color:var(--ink-sub);line-height:1.7}
@media(max-width:900px){.kpi{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.kpi{grid-template-columns:1fr}}

/* ---- セクション見出し（通し番号＋英字ラベル）：数字でリズムを作る ------ */
.section-h{display:flex;align-items:flex-start;gap:var(--sp-2);margin:var(--sp-8) 0 var(--sp-2)}
.section-num{font-family:var(--font-base);font-size:22px;font-weight:800;color:var(--accent);letter-spacing:.06em;font-variant-numeric:tabular-nums;padding-top:.05em;opacity:.85}
.section-h-body{display:flex;flex-direction:column;gap:2px}
.section-en{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-sub);font-weight:700}
.section-h h2{margin:0}
.sub-h{font-size:16px;font-weight:800;color:var(--ink);margin:var(--sp-4) 0 var(--sp-1)}

/* ---- ヒートマップ（主役）------------------------------------------------ */
.heat-scroll{overflow-x:auto;margin:var(--sp-2) 0 var(--sp-1);padding-bottom:4px}
.heat{width:100%;min-width:640px;border-collapse:separate;border-spacing:3px;font-size:12px}
.heat caption{caption-side:top}
.heat thead th{background:transparent;color:var(--ink-sub);font-size:12px;font-weight:700;text-align:center;padding:2px 0;white-space:nowrap;border-radius:0}
.heat thead th.heat-rowh{text-align:left}
.heat tbody tr{background:transparent}
.heat tbody tr:nth-child(even){background:transparent}
.heat th.heat-rowh{background:var(--surface-1);color:var(--ink);font-weight:700;text-align:left;font-size:12.5px;line-height:1.45;padding:6px 10px;width:15em;min-width:13em;border-radius:var(--radius-sm)}
.heat .heat-c{padding:0;text-align:center;font-weight:700;font-variant-numeric:tabular-nums;border-radius:4px;background:var(--viz-0);color:var(--viz-ink-lo)}
.heat .heat-c span{display:block;padding:9px 2px}
.heat .heat-c[data-step="1"]{background:var(--viz-1)}
.heat .heat-c[data-step="2"]{background:var(--viz-2)}
.heat .heat-c[data-step="3"]{background:var(--viz-3)}
.heat .heat-c[data-step="4"]{background:var(--viz-4);color:var(--viz-ink-hi)}
.heat .heat-c[data-step="5"]{background:var(--viz-5);color:var(--viz-ink-hi)}
.heat .heat-c[data-step="0"]{color:var(--ink-sub);font-weight:400}
.heat-legend{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin:0 0 var(--sp-1);font-size:12px;color:var(--ink-sub);max-width:none}
.heat-legend-lab{margin:0 6px}
.heat-sw{width:22px;height:12px;border-radius:3px;background:var(--viz-0);display:inline-block}
.heat-sw[data-step="1"]{background:var(--viz-1)}
.heat-sw[data-step="2"]{background:var(--viz-2)}
.heat-sw[data-step="3"]{background:var(--viz-3)}
.heat-sw[data-step="4"]{background:var(--viz-4)}
.heat-sw[data-step="5"]{background:var(--viz-5)}
.heat-legend-unit{margin-left:auto}

/* ---- グラフ直下の分母定義（全グラフに常設）----------------------------- */
.viz-note{font-size:12px;line-height:1.75;color:var(--ink-sub);margin:0 0 var(--sp-3);max-width:none}

/* ---- 横棒 ---------------------------------------------------------------- */
.hbar{list-style:none;padding:0;margin:var(--sp-2) 0 var(--sp-1);max-width:none}
.hbar li{display:grid;grid-template-columns:9em 1fr 6.5em;gap:var(--sp-2);align-items:center;padding:5px 0}
.hbar-lab{font-size:13px;color:var(--ink);font-weight:700}
.hbar-track{background:var(--viz-track);height:14px;border-radius:var(--pill);overflow:hidden}
.hbar-fill{display:block;height:100%;background:var(--viz-fill);border-radius:var(--pill)}
.hbar-val{font-size:13px;color:var(--ink-sub);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:640px){
  .hbar li{grid-template-columns:1fr auto;grid-template-areas:"lab val" "track track";gap:2px var(--sp-1)}
  .hbar-lab{grid-area:lab}
  .hbar-val{grid-area:val}
  .hbar-track{grid-area:track;margin-bottom:6px}
}

/* ---- 縦棒 ---------------------------------------------------------------- */
.vbar-scroll{overflow-x:auto;margin:var(--sp-2) 0 var(--sp-1);padding-bottom:4px}
.vbar{display:grid;grid-template-columns:repeat(var(--n,8),minmax(58px,1fr));gap:var(--sp-1);align-items:end;min-width:520px}
.vbar-item{display:flex;flex-direction:column;align-items:center;gap:5px}
.vbar-val{font-size:12px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.vbar-track{width:100%;height:150px;display:flex;align-items:flex-end;background:var(--viz-track);border-radius:4px 4px 0 0}
.vbar-fill{display:block;width:100%;background:var(--viz-fill);border-radius:4px 4px 0 0}
.vbar-lab{font-size:11px;line-height:1.4;color:var(--ink-sub);text-align:center;word-break:keep-all}

/* ---- 分位帯（リードタイム）---------------------------------------------- */
.viz-hero{background:var(--surface-1);border-radius:var(--radius);padding:var(--sp-3);margin:var(--sp-2) 0;display:flex;flex-direction:column;gap:2px}
.viz-hero-num{font-family:var(--font-base);font-size:56px;line-height:1.05;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums;margin:0;max-width:none}
.viz-hero-unit{font-size:22px;margin-left:.12em}
.viz-hero-label{font-size:14px;color:var(--ink-sub);margin:0;max-width:none}
.qrange{margin:var(--sp-2) 0 4px;max-width:720px}
.qrange-track{position:relative;height:22px;background:var(--viz-track);border-radius:var(--pill)}
.qrange-band{position:absolute;top:0;bottom:0;background:var(--viz-fill);border-radius:var(--pill)}
.qrange-med{position:absolute;top:-4px;bottom:-4px;width:3px;margin-left:-1.5px;background:var(--primary);border-radius:2px}
.qrange-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-sub);margin-top:4px;font-variant-numeric:tabular-nums}
.qrange-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;color:var(--ink-sub);margin:0 0 var(--sp-2);max-width:none}
.qrange-key{width:18px;height:10px;border-radius:3px;display:inline-block;margin-left:var(--sp-2)}
.qrange-legend .qrange-key:first-child{margin-left:0}
.qrange-key-band{background:var(--viz-fill)}
.qrange-key-med{width:3px;height:14px;background:var(--primary)}

/* ---- 軸の外に隔離した値（未記載・不明）--------------------------------- */
.isolate{display:flex;gap:var(--sp-3);align-items:flex-start;background:var(--surface-1);border-radius:var(--radius);padding:var(--sp-2) var(--sp-3);margin:var(--sp-2) 0}
.isolate-num{font-family:var(--font-base);font-size:30px;line-height:1.1;font-weight:800;color:var(--ink-sub);font-variant-numeric:tabular-nums;margin:0;white-space:nowrap;max-width:none}
.isolate-unit{font-size:15px;margin-left:.1em}
.isolate-body{flex:1 1 auto;min-width:0}
.isolate-lab{font-size:14px;font-weight:700;color:var(--ink);margin:0 0 2px;max-width:none}
.isolate .viz-note{margin:0}
@media(max-width:640px){.isolate{flex-direction:column;gap:var(--sp-1)}}

/* ---- 締切が近い公募（面のレーンで読ませる）----------------------------- */
.deadline-list{list-style:none;padding:0;margin:var(--sp-2) 0 var(--sp-1);max-width:none}
.deadline-list li{display:flex;gap:var(--sp-2);align-items:flex-start;justify-content:space-between;padding:var(--sp-2);border-radius:var(--radius-sm)}
.deadline-list li:nth-child(odd){background:var(--lane-b)}
.deadline-list li:nth-child(even){background:var(--lane-a)}
.deadline-list li:hover{background:var(--lane-hover)}
.deadline-main{min-width:0}
.deadline-title{font-size:16px;font-weight:700;line-height:1.6;text-decoration:none}
.deadline-title:hover{text-decoration:underline}
.deadline-meta{font-size:12.5px;color:var(--ink-sub);margin:2px 0 0;max-width:none;line-height:1.7}
.deadline-meta .sep{margin:0 .4em;opacity:.6}
.deadline-chip{flex:none;padding-top:2px}
@media(max-width:640px){
  .deadline-list li{flex-direction:column;gap:6px}
  .deadline-chip{padding-top:0}
}

/* ---- 状態チップ（このサイトで赤を使うのはここだけ）-------------------- */
.chip{display:inline-block;border-radius:var(--pill);padding:3px 12px;font-size:12px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.chip-urgent{background:var(--st-urgent-face);color:var(--st-urgent-ink)}
.chip-soon{background:var(--st-soon-face);color:var(--st-soon-ink)}
.chip-open{background:var(--st-open-face);color:var(--st-open-ink)}
.chip-past{background:var(--st-past-face);color:var(--st-past-ink);font-weight:400}
.chip-none{background:var(--st-none-face);color:var(--st-none-ink);font-weight:400}

/* ---- 表示範囲のトグル ---------------------------------------------------- */
.toggle{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin:var(--sp-2) 0;max-width:none}
.toggle a{font-size:13px;text-decoration:none;color:var(--ink);background:var(--surface-1);padding:7px 16px;border-radius:var(--pill);transition:background .15s ease}
.toggle a:hover{background:var(--surface-2)}
.toggle a[aria-current="true"]{background:var(--primary);color:#fff;font-weight:700}

/* ---- リンクカード（枠線・影を使わず面で分ける）-------------------------- */
.linkcards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin:var(--sp-2) 0 var(--sp-4)}
.linkcard{display:flex;flex-direction:column;gap:4px;background:var(--surface-1);border-radius:var(--radius);padding:var(--sp-3);text-decoration:none;color:var(--ink);transition:background .15s ease}
.linkcard:hover{background:var(--surface-2);color:var(--ink)}
.linkcard-en{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-sub);font-weight:700}
.linkcard-ja{font-family:var(--font-base);font-size:20px;font-weight:800;color:var(--primary);line-height:1.4}
.linkcard-desc{font-size:13px;color:var(--ink-sub);line-height:1.75}
.linkcard-go{margin-top:auto;padding-top:var(--sp-1);font-size:13px;font-weight:700;color:var(--link)}
@media(max-width:820px){.linkcards{grid-template-columns:1fr}}

/* ---- テキストリンク型の導線（巨大な原色ボタンを並べない）--------------- */
.more-link{margin:var(--sp-1) 0 var(--sp-4);max-width:none;font-size:14px}
.more-link a{font-weight:700;text-decoration:none}
.more-link a:hover{text-decoration:underline}

/* ---- 絞り込みバー -------------------------------------------------------- */
.filterbar{background:var(--surface-1);border-radius:var(--radius);padding:var(--sp-3);margin:var(--sp-3) 0}
.filterbar-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}
.filterbar-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.filterbar-f-wide{grid-column:span 2}
.filterbar-lab{font-size:12px;font-weight:700;color:var(--ink-sub)}
.filterbar select,.filterbar input[type="search"]{width:100%;padding:9px 12px;border:none;border-radius:var(--radius-sm);font-size:15px;font-family:inherit;color:var(--ink);background:var(--surface)}
.filterbar-act{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-2)}
.filterbar-reset{font-size:13px}
@media(max-width:820px){
  .filterbar-row{grid-template-columns:1fr 1fr}
  .filterbar-f-wide{grid-column:span 2}
}
@media(max-width:480px){
  .filterbar-row{grid-template-columns:1fr}
  .filterbar-f-wide{grid-column:span 1}
}

/* ---- 一覧の件数表示・公募テーブル・ページング --------------------------- */
.result-count{font-size:14px;color:var(--ink-sub);margin:var(--sp-3) 0 0;max-width:none}
.result-count strong{color:var(--ink);font-size:16px;font-variant-numeric:tabular-nums}
.proc td:first-child{width:44%;font-weight:400}
.proc .proc-title{font-weight:700;font-size:15px;line-height:1.6;text-decoration:none}
.proc .proc-title:hover{text-decoration:underline}
.proc-sub{display:block;font-size:12px;color:var(--ink-sub);line-height:1.7;margin-top:3px}
.proc-sub .source-pill{margin-left:.5em}
.pager{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);margin:var(--sp-3) 0 var(--sp-4);font-size:14px}
.pager a{background:var(--surface-1);padding:9px 18px;border-radius:var(--pill);text-decoration:none;font-weight:700}
.pager a:hover{background:var(--surface-2)}
.pager-off{color:var(--ink-sub);padding:9px 18px;opacity:.55}
.pager-now{color:var(--ink-sub);font-variant-numeric:tabular-nums}

/* ---- フッターの運営表記 -------------------------------------------------- */
.operator{background:var(--surface-2);border-radius:var(--radius);padding:var(--sp-3);margin:0 0 var(--sp-3)}
.operator-name{font-size:15px;font-weight:700;color:var(--ink);margin:0 0 4px}
.operator p{margin:2px 0}
.operator-links .sep{margin:0 .5em;opacity:.6}

/* ---- 狭幅：ヒートマップだけはテーブルのまま（横スクロールで見せる）----- */
@media(max-width:640px){
  .heat{display:table;min-width:600px}
  .heat thead{position:static;width:auto;height:auto;overflow:visible;clip:auto}
  .heat thead tr,.heat tbody tr{display:table-row;padding:0;background:transparent}
  .heat tbody{display:table-row-group}
  .heat th,.heat td{display:table-cell;width:auto}
  .heat th.heat-rowh{width:11em;min-width:11em;font-size:11.5px;padding:5px 7px}
  .heat .heat-c span{padding:8px 1px}
  .heat tbody td[data-label]::before{content:none}
  .viz-hero-num{font-size:44px}
  .proc td:first-child{width:auto}
  .pager{gap:var(--sp-2)}
}

/* ---- 補助金情報の絞り込みUI（素のJS・中立表示）------------------------ */
#hojo-filter .filter-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}
@media(max-width:760px){#hojo-filter .filter-grid{grid-template-columns:1fr 1fr}}
@media(max-width:480px){#hojo-filter .filter-grid{grid-template-columns:1fr}}
#hojo-filter .formrow{margin:0}
#hojo-filter .chk{display:flex;align-items:center;gap:8px;font-weight:400;margin-top:2px}
#hojo-filter .chk input{width:auto;max-width:none;margin:0}
#hojo-filter .filter-actions{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-2)}
#hojo-filter .filter-actions .cta{margin-top:0;padding:9px 18px;font-size:14px}

/* ==== セクション見出しの下線（社長指示 2026-09-29）==== */
main h2,main .section-h{position:relative;padding-bottom:10px;border-bottom:1px solid var(--border);margin-top:var(--sp-6)}
main h2::after,main .section-h::after{content:"";position:absolute;left:0;bottom:-1px;width:72px;height:3px;background:var(--link)}
main .section-h h2{border-bottom:0;padding-bottom:0;margin-top:0}
main .section-h h2::after{content:none}

/* databar の左右余白（狭い画面で文字が端に付く対策 2026-09-29）*/
.databar .wrap.databar-inner{padding-left:16px;padding-right:16px}

/* =============================================================================
   改行・折返しの整理（社長指示 2026-09-29）
   ・段落の max-width（66ch＝日本語では約580px）がカードより狭く、本文だけ細く折れていた → 撤廃
   ・日本語は文節単位で折る（word-break:auto-phrase：非対応ブラウザは従来どおり）。
     長い英数字だけは overflow-wrap:break-word で溢れを防ぐ（min-content に影響しない指定を選ぶ）
   ・見出しは balance、本文は pretty で、1〜2文字だけの行（孤立行）を減らす
   ============================================================================= */
:root{--measure:none}
body{word-break:normal;overflow-wrap:break-word;line-break:strict}
p,li,dd,h1,h2,h3,.meta,.notice,.coverage,.viz-note,.hero-lead,.linkcard-desc,.kpi-sub,.databar-main{word-break:auto-phrase}
/* 表の中は文節折りにしない（auto-phrase は表の最小幅を押し広げ、768px前後で横スクロールを起こすため） */
table :is(td,th,p,li,span,a,strong,.meta){word-break:normal}
p,li,dd,td,.meta,.notice,.coverage,.viz-note{text-wrap:pretty}
h1,h2,h3,.linkcard-ja,.kpi-label,.eyebrow,.hero-lead{text-wrap:balance}
.hero-lead{text-wrap:pretty}

/* 見出し＋バッジ：折り返してもバッジの左端が揃う（インライン＋左マージンをやめる） */
h1:has(> .badge),h2:has(> .badge){display:flex;flex-wrap:wrap;align-items:center;gap:.2em .6em}
h1 .badge,h2 .badge{margin-left:0}
h2 .badge{font-size:13px}

/* 出典チップ：長い出典名は折り返す（375px で横スクロールが出ていた） */
a.source-pill{white-space:normal;max-width:100%;text-align:left;line-height:1.5}
.databar-main,.databar-side,.databar-note{min-width:0;max-width:100%}
.databar-main strong{overflow-wrap:anywhere}

/* 表セルの不自然な折返し：担当課・日付は文節の途中で折らない／数値+単位を割らない */
@media(min-width:1000px){.proc td[data-label="担当課"],.proc td[data-label="自治体"],.proc td[data-label="公告日"],.proc td[data-label="提出期限"]{word-break:auto-phrase}}
.nb{white-space:nowrap}


/* トップ：Finance & Policy / Grants & Subsidies カード（上余白が広すぎた） */
.grid{margin:var(--sp-3) 0 0}
.grid .card{margin:0;padding:var(--sp-3);display:flex;flex-direction:column;justify-content:center}
.grid .card .eyebrow{margin:0 0 var(--sp-1)}
.grid .card .meta{margin:0}
@media(max-width:640px){.grid .card{padding:var(--sp-2) var(--sp-2)}}

/* 国の交付金：交付先（直接）と関わり方（間接）。色は中立のみ・評価に使わない */
.grantee{display:inline-flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.gt{display:inline-block;border-radius:var(--pill);padding:3px 12px;font-size:12.5px;font-weight:700;line-height:1.6;white-space:nowrap}
.gt-direct{background:var(--primary);color:#fff}
.gt-indirect{background:var(--surface-2);color:var(--ink)}
.grantee-mini .gt{font-size:11.5px;padding:1px 9px}
.grantee-mini{margin-left:.35em;vertical-align:.05em}
.grantee-row{margin:6px 0 4px}
.grantee-note{margin:4px 0 var(--sp-1)}
.grantee-legend{font-size:13.5px;color:var(--ink-sub);line-height:2.1}
.grantee-legend .gt{margin-right:.3em}

/* 出典チップ内の数字・年度を .nb で包んでも、flex の gap で余計な隙間が出ないようにする */
.src a,a.source-pill{gap:0}
.src a svg,a.source-pill svg{margin-right:.45em}
/* 出典チップは inline-block に（inline-flex だと .nb の span が「折り返さない1行」の flex 項目になり、狭い画面で溢れる） */
.src a,a.source-pill{display:inline-block;max-width:100%}
.src a svg,a.source-pill svg{display:inline-block;vertical-align:-.15em}
/* flex 内のリンク：文節の最小幅が行幅を超える長い名称は、行末で折る（auto-phrase の最小幅対策） */
.recip-list a,.deadline-title,.linkcard-desc{min-width:0;overflow-wrap:anywhere}
.card > h3:first-child{margin-top:0}
.grantee-src{margin:6px 0 var(--sp-2)}
@media(min-width:821px){.proc td:nth-child(2){width:5.5em}.proc td:nth-child(4){width:7.5em}.proc td:nth-child(5){width:9.5em}}
/* 公募・補助金の一覧表：タブレット幅(〜820px)でも縦積みカード表示に（表のままだと件名列が数文字幅に潰れて不自然に折れる） */
@media(max-width:820px){
  .proc thead,#hojo-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .proc,.proc tbody,.proc tr,.proc td,#hojo-table,#hojo-table tbody,#hojo-table tr,#hojo-table td{display:block;width:100%}
  .proc tbody tr,#hojo-table tbody tr{padding:var(--sp-2);border-radius:var(--radius-sm);margin:0}
  .proc tbody tr:nth-child(odd),#hojo-table tbody tr:nth-child(odd){background:var(--surface-1)}
  .proc tbody tr:nth-child(even),#hojo-table tbody tr:nth-child(even){background:transparent}
  .proc tbody td,#hojo-table tbody td{padding:4px 0;text-align:left}
  .proc td.amt,#hojo-table td.amt{text-align:left}
  .proc tbody td[data-label]::before,#hojo-table tbody td[data-label]::before{content:attr(data-label);display:block;font-size:12px;font-weight:700;color:var(--ink-sub);margin-bottom:2px}
  .proc td:first-child{width:auto}
}
