/* 精神科訪問看護マップ（仮）— 画面用（デザイン B2）
   生成りの紙・緑青・墨。見出しと事業所名だけ明朝（Zen Old Mincho Bold）、それ以外はゴシック（Zen Kaku Gothic New）。
   守ること: 本文 16px 以上（補足は 14px まで・B3）／文字のコントラスト 4.5 以上／押せるものは 44px 以上／
            390px で横にはみ出さない／:focus-visible は緑青の 3px の輪／prefers-reduced-motion: reduce で transition を止める。
   琥珀（--amber）は文字に使わない。使うのは線画の窓（飾り）・家の記号の小さな窓・フォーカスのにじみだけ。
   書体は自前の woff2（static/fonts/・サブセット・SIL OFL 1.1。作り直しは sh bin/subset_fonts.sh）。外部の CDN からは読み込まない。
   線画（_art_hero.html・_art_foot.html）とアイコンの記号（_sprite.html）は python3 -I bin/draw_town.py が書き出す。 */

/* ---------- 書体（相対参照・font-display: swap） ---------- */
@font-face { font-family: "Zen Old Mincho"; src: url("fonts/ZenOldMincho-Bold.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Zen Kaku Gothic New"; src: url("fonts/ZenKakuGothicNew-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Zen Kaku Gothic New"; src: url("fonts/ZenKakuGothicNew-Bold.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }

/* ---------- トークン ---------- */
:root {
  /* 地（紙） */
  --paper: #F6F0E3;      /* 生成り。ページの地 */
  --paper-2: #EEE5D2;    /* 一段深い紙。フッタ・道・押せない部品 */
  --card: #FFFCF5;       /* カードの面 */
  /* 文字 */
  --ink: #22302D;        /* 墨。本文（生成りの上 12.10・カードの上 13.41） */
  --ink-2: #4B5753;      /* 補足（生成り 6.63・カード 7.35・一段深い紙 6.02・淡い緑青 6.56） */
  /* 緑青 */
  --teal-900: #0F3532;   /* 見出し（生成り 11.74） */
  --teal-800: #17443F;   /* 電話ボタンの面（白い文字 10.59） */
  --teal-700: #1F5953;   /* リンク・ボタン（生成り 7.08・カード 7.85） */
  --teal-600: #2D6F68;   /* 入力欄の枠 */
  --teal-200: #BCD3CC;
  --teal-100: #D9E7E2;
  --teal-50:  #E9F1EE;   /* バッジ・選んだチップの面 */
  /* 琥珀（文字には使わない） */
  --amber: #ECA93B;
  --amber-50: #FDF3DF;
  /* 線 */
  --line: #DCD1BC;
  --line-strong: #C9BCA3;
  /* 注意（休止中・準備中）。文字 #5C4300 は面 #FBEFD2 の上で 8.14 */
  --warn-bg: #FBEFD2;
  --warn-line: #D9B86A;
  --warn-ink: #5C4300;
  /* 角丸・影 */
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 18px;
  --shadow-1: 0 1px 0 rgba(23, 68, 63, .06), 0 14px 30px -22px rgba(23, 68, 63, .55);
  --shadow-2: 0 1px 0 rgba(23, 68, 63, .07), 0 22px 44px -26px rgba(23, 68, 63, .6);
  /* 書体 */
  --f-mincho: "Zen Old Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --f-gothic: "Zen Kaku Gothic New", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", Meiryo, sans-serif;
  /* 幅 */
  --wrap: 1200px;
  --gutter: 16px;
  /* 線画（.il）。線は緑青 2px */
  --il-line: var(--teal-700);
  --il-roof: #2B6660;
  --il-wall: var(--card);
  --il-win: #D3E2DD;
  --il-far: #DDE8E3;
  --il-sw: 2px;
  /* CSS だけで出す小さなアイコン（Lucide の形をそのまま mask に。テンプレートに <svg> を置けない所だけで使う） */
  --mi-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  --mi-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");
  --mi-help: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");
  --mi-alert: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");
  /* 旧トークンの別名（bin/build_offline.py の上書き CSS が参照している。新しく書く CSS では使わない） */
  --blue: var(--teal-700);
  --blue-dark: var(--teal-800);
  --blue-ink: var(--teal-900);
  --ink-soft: var(--ink-2);
  --tint: var(--teal-50);
  --tint-2: var(--teal-100);
  --badge-bg: var(--teal-50);
  --badge-line: var(--teal-100);
  --badge-ink: var(--ink);
  --field-line: var(--teal-600);
  --focus: var(--teal-900);
  --radius: var(--r-md);
}
@media (min-width: 720px) { :root { --gutter: 32px; } }
@media (min-width: 1100px) { :root { --gutter: 40px; } }

/* ---------- 土台 ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; background: var(--paper); }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--f-gothic);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: .02em;
  overflow-wrap: anywhere;
}
::selection { background: var(--teal-100); color: var(--ink); }
h1, h2, h3 {
  margin: 0 0 .5em;
  font-family: var(--f-mincho);
  font-weight: 700;
  font-feature-settings: "palt" 1;
  letter-spacing: .04em;
  line-height: 1.45;
  color: var(--teal-900);
  word-break: auto-phrase;   /* 対応するブラウザだけ、見出しを文節で折り返す */
}
h1 { font-size: 26px; }
h2 { font-size: 22px; }
h3 { font-size: 18px; }
@media (min-width: 720px) {
  h1 { font-size: 32px; }
  h2 { font-size: 24px; }
  h3 { font-size: 19px; }
}
@media (min-width: 1100px) {
  h1 { font-size: 36px; }
  h2 { font-size: 26px; }
}
p { margin: 0 0 .9em; }
ul, ol { margin: 0 0 1em; padding-left: 1.4em; }
li { margin-bottom: .25em; }
strong, b { font-weight: 700; }
small { font-size: 15px; }
a { color: var(--teal-700); text-decoration-thickness: 1px; text-underline-offset: .22em; }
a:hover { color: var(--teal-900); text-decoration-thickness: 2px; }
hr { margin: 2em 0; border: 0; border-top: 1px solid var(--line); }
img, svg { max-width: 100%; }
button, input, select, textarea { font: inherit; letter-spacing: inherit; }
[hidden] { display: none !important; }
table { border-collapse: collapse; width: 100%; }
th, td { text-align: left; vertical-align: top; padding: 10px 8px; border-bottom: 1px solid var(--line); }
caption { text-align: left; color: var(--ink-2); font-size: 15px; line-height: 1.6; padding-bottom: 6px; }
.vh { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.wrap { max-width: var(--wrap); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.main { padding-bottom: 8px; }
.main > h1:first-child, .area > h1:first-child { margin-top: 4px; }

/* フォーカス: 緑青の 3px の輪（＋琥珀のにじみ。にじみは飾りで、輪だけで見分けられる） */
:focus { outline: none; }
:focus-visible { outline: 3px solid var(--teal-900); outline-offset: 2px; box-shadow: 0 0 0 7px rgba(236, 169, 59, .38); }
.skip { position: absolute; left: 8px; top: -120px; z-index: 3000; display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; background: var(--teal-800); color: var(--card); border-radius: var(--r-sm); font-weight: 700; text-decoration: none; }
.skip:focus { top: 8px; color: var(--card); }

/* アイコン（_sprite.html の <symbol>。色は文字の色を引き継ぐ） */
.ico { width: 22px; height: 22px; flex: none; }
.ico-sm { width: 18px; height: 18px; flex: none; }

/* ---------- 文字の部品 ---------- */
.lead { font-size: 17px; line-height: 1.9; }
.note { color: var(--ink-2); font-size: 15px; line-height: 1.75; }
.muted, .muted td, .muted th { color: var(--ink-2); }
.block { margin: 32px 0; }
@media (min-width: 720px) { .block { margin: 40px 0; } }
.h-small { font-size: 18px; margin-bottom: 4px; }
@media (min-width: 720px) { .h-small { font-size: 19px; } }
.url { word-break: break-all; }

/* ---------- ヘッダ（サイト名＋運営者。運営者はどの幅でもスクロールせずに見える・16px・墨） ---------- */
.site-header { background: var(--paper); border-bottom: 1px solid var(--line); }
.hdr { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 60px; padding-top: 6px; }
.site-name { display: inline-flex; align-items: center; gap: 8px; min-width: 0; min-height: 48px; color: var(--teal-900); text-decoration: none; }
.site-name:hover { color: var(--teal-900); }
.site-name:hover .brand-name { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em; }
.brand-mark { width: 36px; height: 36px; flex: none; }
.brand-name { font-family: var(--f-mincho); font-weight: 700; font-size: 17px; line-height: 1.35; letter-spacing: .03em; font-feature-settings: "palt" 1; word-break: keep-all; }   /* 狭い画面では「（仮）」の前で折り返す */
@media (min-width: 720px) {
  .hdr { column-gap: 16px; min-height: 64px; padding-top: 6px; }
  .site-name { gap: 10px; }
  .brand-mark { width: 42px; height: 42px; }
  .brand-name { font-size: 20px; }
}

/* 広い画面のナビ（900px〜） */
.nav-wide { display: none; }
.nav-wide a { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; padding: 0 12px; border-radius: var(--r-sm); color: var(--teal-900); font-weight: 700; text-decoration: none; white-space: nowrap; }
.nav-wide a:hover { background: var(--teal-50); color: var(--teal-900); }

/* 狭い画面のメニュー（<details>）。開くと × に替わる */
.nav-narrow { position: relative; flex: none; }
.nav-narrow > summary {
  list-style: none; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0;
  min-width: 64px; min-height: 52px; padding: 4px 4px 3px;
  border: 1.5px solid var(--teal-700); border-radius: var(--r-md); background: var(--card); color: var(--teal-800);
  font-size: 15px; font-weight: 700; line-height: 1.2; letter-spacing: 0; white-space: nowrap; cursor: pointer;
}
.nav-narrow > summary::-webkit-details-marker { display: none; }
.nav-narrow > summary:hover { background: var(--teal-50); }
.nav-narrow .ico-close { display: none; }
.nav-narrow[open] > summary { background: var(--teal-800); border-color: var(--teal-800); color: var(--card); }
.nav-narrow[open] .ico-menu { display: none; }
.nav-narrow[open] .ico-close { display: block; }
.nav-narrow ul { position: absolute; right: 0; top: calc(100% + 8px); z-index: 2000; width: min(300px, calc(100vw - 32px)); list-style: none; margin: 0; padding: 8px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-2); }
.nav-narrow li { margin: 0; }
.nav-narrow li a { display: flex; align-items: center; min-height: 48px; padding: 0 12px; border-radius: var(--r-sm); color: var(--teal-900); font-weight: 700; text-decoration: none; }
.nav-narrow li a:hover { background: var(--teal-50); }
@media (min-width: 900px) {
  .nav-wide { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 2px; }
  .nav-narrow { display: none; }
}

/* ---------- パンくず ---------- */
.crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: flex-start; column-gap: 8px; font-size: 15px; line-height: 1.6; color: var(--ink-2); }
.crumbs li { margin: 0; display: inline-flex; align-items: flex-start; gap: 8px; }
/* 区切りの「>」。折り返した長い項目でも1行目の高さ（44px の行の中央）にそろえる */
.crumbs li + li::before { content: ""; flex: none; width: 7px; height: 7px; margin: 18px 2px 0 0; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: rotate(45deg); }
.crumbs a { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; }
.crumbs [aria-current] { padding: 10px 0; }
/* 狭い画面では、いまのページ名（最後の項目）は画面に出さない（すぐ下の H1 に大きく出る。読み上げと BreadcrumbList には残す） */
@media (max-width: 719px) {
  .crumbs li[aria-current], .crumbs li:has(> [aria-current]) { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
}

/* ---------- ボタン ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; min-width: 44px; padding: 6px 16px;
  border: 1.5px solid var(--teal-700); border-radius: var(--r-md);
  background: var(--card); color: var(--teal-800);
  font-family: var(--f-gothic); font-size: 16px; font-weight: 700; line-height: 1.35; letter-spacing: .04em;
  text-align: center; text-decoration: none; cursor: pointer;
}
.btn:hover { background: var(--teal-50); color: var(--teal-900); }
.btn .ico { width: 20px; height: 20px; }
.btn-sm { padding: 4px 14px; }
/* 電話（濃い緑青の面に白い文字。印刷・送信の主ボタンにも使われている） */
.btn-tel { background: var(--teal-800); border-color: var(--teal-800); color: var(--card); font-size: 18px; letter-spacing: .05em; font-variant-numeric: tabular-nums; }
.btn-tel:hover { background: var(--teal-900); border-color: var(--teal-900); color: var(--card); }
/* 一覧のカード・トップの近い10件・相談窓口の電話: 枠のボタン（淡い面）。濃い塗りは事業所ページの電話にとっておく（B3 §4-5） */
.btn-tel.btn-line { background: var(--teal-50); border-color: var(--teal-700); color: var(--teal-900); }
.btn-tel.btn-line:hover { background: var(--teal-100); border-color: var(--teal-800); color: var(--teal-900); }
.btn-tel.btn-line .ico { color: var(--teal-700); }
.btn[disabled], .btn[disabled]:hover { background: var(--paper-2); border-color: var(--line-strong); color: var(--ink-2); cursor: not-allowed; }

/* ---------- 入力欄 ---------- */
.field { width: 100%; min-height: 48px; padding: 10px 14px; font-size: 16px; line-height: 1.5; color: var(--ink); background: var(--card); border: 1.5px solid var(--teal-600); border-radius: var(--r-md); }
.field::placeholder { color: #66716D; opacity: 1; }   /* カードの上 4.94 */
.field:disabled { background: var(--paper-2); color: var(--ink-2); border-color: var(--line-strong); }
textarea.field { min-height: 120px; }
select.field { appearance: auto; }

/* ---------- バッジ（文字＋アイコン。届出・指定あり＝check、24時間対応体制加算＝clock、情報なし＝minus） ---------- */
.badges { list-style: none; margin: 8px 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 8px; }
.badge {
  display: inline-flex; align-items: flex-start; gap: 6px; margin: 0;
  padding: 4px 12px 4px 9px; border: 1px solid var(--teal-100); border-radius: 10px;
  background: var(--teal-50); color: var(--ink); font-size: 15px; line-height: 1.55;
}
.badge .ico-sm { margin-top: 2px; color: var(--teal-700); }
.badge-na { background: var(--card); border: 1.5px dashed var(--line-strong); color: var(--ink-2); }
.badge-na .ico-sm { color: var(--ink-2); }
/* アイコンの <svg> が無いバッジ（site.js がトップの「近い10件」で作るもの）にも同じ形を CSS で付ける */
.badge:not(:has(> svg))::before { content: ""; flex: none; width: 18px; height: 18px; margin-top: 2px; background: var(--teal-700); -webkit-mask: var(--mi-check) center / contain no-repeat; mask: var(--mi-check) center / contain no-repeat; }
.badge-na:not(:has(> svg))::before { background: var(--ink-2); -webkit-mask-image: var(--mi-minus); mask-image: var(--mi-minus); }
/* 事業所ページの先頭（大きめ） */
.badges-lg { gap: 8px; }
.badges-lg .badge { padding: 6px 14px 6px 10px; font-size: 16px; }
.badges-lg .badge .ico-sm { width: 20px; height: 20px; margin-top: 2px; }
/* 一覧のカード・近くのステーション・トップの近い10件: 面なしで1行ずつ */
.badges-sm, .card .badges, .top-results .badges { display: grid; gap: 2px; margin: 6px 0; }
.badges-sm .badge, .card .badge, .top-results .badge { padding: 0; background: none; border: 0; border-radius: 0; font-size: 15px; }
/* 注記（バッジの読み方） */
.badge-note { margin: 10px 0 14px; padding: 10px 14px; font-size: 15px; line-height: 1.75; color: var(--ink-2); background: var(--card); border-left: 3px solid var(--teal-200); border-radius: 0 var(--r-sm) var(--r-sm) 0; }
.badge-note strong { color: var(--ink); }

/* 休止中の札 */
.flag-suspended { display: inline-flex; align-items: center; gap: 6px; margin: 8px 0 0; padding: 2px 10px; background: var(--warn-bg); border: 1px solid var(--warn-line); border-radius: var(--r-sm); color: var(--warn-ink); font-size: 15px; font-weight: 700; line-height: 1.6; }
.flag-suspended::before { content: ""; flex: none; width: 16px; height: 16px; background: currentColor; -webkit-mask: var(--mi-alert) center / contain no-repeat; mask: var(--mi-alert) center / contain no-repeat; }
.flag-lg { font-size: 16px; margin-bottom: 8px; }

/* ---------- トップ（見出しの上の町並み・見出し）。中身の並びは top.html ---------- */
.hero { margin: 0 0 8px; }
.hero-art { display: block; margin: 0 0 18px; line-height: 0; }
.wrap .hero-art { margin-left: calc(var(--gutter) * -1); margin-right: calc(var(--gutter) * -1); }   /* .wrap の中に置いたときは左右の余白まで広げる */
.hero-art .il { display: block; width: 100%; height: 150px; }   /* 390px で画面の 1/4 以下（中央を切り出す） */
.hero h1 { font-size: 29px; line-height: 1.42; margin: 0 0 12px; }
@media (min-width: 720px) {
  .hero-art .il { height: auto; aspect-ratio: 1440 / 300; }
  .hero h1 { font-size: 36px; }
}
@media (min-width: 1100px) { .hero h1 { font-size: 44px; line-height: 1.36; } }
.pref-h { margin-top: 20px; }
.pref-link { display: inline-flex; align-items: center; min-height: 44px; }

/* 地域への入口（地域名＋件数） */
.area-links { list-style: none; padding: 0; margin: 0 0 12px; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.area-links li { margin: 0; }
.area-links a { display: flex; justify-content: space-between; align-items: center; gap: 8px; min-height: 56px; padding: 8px 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--shadow-1); color: var(--teal-900); font-weight: 700; text-decoration: none; }
.area-links a:hover { border-color: var(--teal-600); background: var(--teal-50); }
.al-count { font-weight: 400; color: var(--ink-2); white-space: nowrap; }

/* 解説・道具への入口 */
.link-cards { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.link-cards li { margin: 0; }
.link-cards a { display: flex; flex-direction: column; justify-content: center; height: 100%; min-height: 60px; padding: 12px 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); color: var(--teal-900); text-decoration: none; }
.link-cards a:hover { border-color: var(--teal-600); }
.lc-title { font-weight: 700; line-height: 1.55; }
.lc-sub { color: var(--ink-2); font-size: 15px; line-height: 1.6; }
.link-list { list-style: none; padding: 0; }
.link-list li { margin: 0; }
.link-list a { display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- 都県ページ ---------- */
.pref-areas { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.pref-area { margin: 0; padding: 8px 16px 12px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
.pref-area h3 { margin: 0 0 4px; }
.pa-link { display: flex; justify-content: space-between; align-items: center; gap: 8px; min-height: 44px; text-decoration: none; }
.pa-link:hover { text-decoration: underline; }
.pa-count { color: var(--ink); white-space: nowrap; }
.mini-nums { margin: 0; font-size: 15px; }
.mini-nums div { display: flex; justify-content: space-between; gap: 8px; padding: 4px 0; border-top: 1px dashed var(--line); }
.mini-nums dt { color: var(--ink-2); }
.mini-nums dd { margin: 0; white-space: nowrap; }

/* ---------- 地域・都県ページ: 件数・探す・絞り込む ---------- */
.count-line { font-size: 16px; margin-bottom: .3em; }
.count-line strong { font-family: var(--f-mincho); font-weight: 700; font-feature-settings: "palt" 1; font-size: 1.375em; line-height: 1.3; letter-spacing: .02em; color: var(--teal-900); }
.finder { margin: 12px 0 0; }

/* 町名・駅名から近い順（コンボボックス）・現在地。トップと地域ページの主役（B3）: 濃い緑青の面はこの欄だけ。
   面の上の文字は生成りの白（10.59）・注記は淡い緑青（8.98）。フォーカスの輪は面の上で見えるよう白に */
.near { padding: 6px 16px 14px; background: var(--teal-800); border-radius: var(--r-lg); color: var(--card); box-shadow: var(--shadow-1); }
.near-label { display: flex; align-items: center; min-height: 44px; font-size: 17px; font-weight: 700; letter-spacing: .04em; color: var(--card); }
.near-row { display: flex; gap: 8px; align-items: flex-start; }
.combo { position: relative; flex: 1 1 auto; min-width: 0; }
.combo > .ico { position: absolute; left: 14px; top: 15px; width: 22px; height: 22px; color: var(--teal-700); pointer-events: none; }
.combo > .ico ~ .field { padding-left: 46px; }
.near .field { min-height: 52px; border: 2px solid var(--card); font-size: 17px; }
.near .btn { background: transparent; border-color: var(--teal-200); color: var(--card); }
.near .btn:hover { background: rgba(255, 252, 245, .12); border-color: var(--card); color: var(--card); }
.near :focus-visible { outline-color: var(--card); }
.combo-list { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 1500; list-style: none; margin: 0; padding: 6px; max-height: 60vh; overflow-y: auto; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--shadow-2); color: var(--ink); }
.combo-list li { display: flex; justify-content: space-between; align-items: center; gap: 8px; min-height: 44px; margin: 0; padding: 6px 12px; border-radius: var(--r-sm); cursor: pointer; }
.combo-list li[aria-selected="true"], .combo-list li:hover { background: var(--teal-50); }
.combo-list .opt-sub { color: var(--ink-2); font-size: 15px; white-space: nowrap; }
.combo-list .opt-none { color: var(--ink-2); cursor: default; }
.combo-list .opt-none:hover { background: none; }
.near-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-top: 10px; }
.near-note { margin: 0; color: var(--teal-100); font-size: 14px; line-height: 1.6; }
.near-status { margin: 8px 0 0; font-weight: 700; line-height: 1.6; color: var(--card); }
.near-status:empty { display: none; }
@media (min-width: 720px) {
  .near { display: grid; grid-template-columns: minmax(0, 560px) auto 1fr; column-gap: 12px; align-items: start; padding: 8px 20px 16px; }
  .near-label, .near-note, .near-status { grid-column: 1 / -1; }
  .near-row { grid-column: 1; }
  .near-sub { display: contents; }
  .btn-geo { grid-column: 2; align-self: center; }
  .near-note { margin-top: 8px; }
}

/* 絞り込み（<details>）。濃い面の下に、淡いカードの1行（開くとチップ） */
.filters { margin: 8px 0 0; padding: 0 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); }
.filters > summary { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; min-height: 48px; padding: 4px 0; font-weight: 700; color: var(--teal-900); cursor: pointer; }
.filters > summary::-webkit-details-marker { display: none; }
.filters > summary::after { content: ""; flex: none; width: 9px; height: 9px; margin: 0 6px 4px auto; border-right: 2px solid var(--teal-700); border-bottom: 2px solid var(--teal-700); transform: rotate(45deg); transition: transform .15s; }
.filters[open] > summary::after { margin-bottom: -4px; transform: rotate(-135deg); }
.filters-body { padding: 4px 0 8px; }
.chips-set { border: 0; margin: 0 0 8px; padding: 0; min-width: 0; }
.chips-set legend { padding: 0; margin-bottom: 8px; font-size: 15px; color: var(--ink-2); }

/* チップ（チェックボックス・ラジオ）。<label class="chip"><input><span class="chip-box"></span><span>文字</span></label> */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { position: relative; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 6px 14px 6px 10px; border: 1.5px solid var(--line-strong); border-radius: 999px; background: var(--card); color: var(--ink); font-size: 15px; line-height: 1.45; cursor: pointer; }
.chip:hover { border-color: var(--teal-600); }
.chip input { position: absolute; top: -2px; left: -2px; width: calc(100% + 4px); height: calc(100% + 4px); margin: 0; opacity: 0; cursor: pointer; -webkit-appearance: none; appearance: none; }
.chip-box { position: relative; flex: none; width: 22px; height: 22px; border: 2px solid var(--teal-700); border-radius: 6px; background: var(--card); }
.chip-radio .chip-box { border-radius: 50%; }
.chip input:checked + .chip-box { background: var(--teal-700); }
.chip input:checked + .chip-box::after { content: ""; position: absolute; inset: 0; background: var(--card); -webkit-mask: var(--mi-check) center / 16px no-repeat; mask: var(--mi-check) center / 16px no-repeat; }
.chip-radio input:checked + .chip-box { background: var(--card); }
.chip-radio input:checked + .chip-box::after { inset: 3px; border-radius: 50%; background: var(--teal-700); -webkit-mask: none; mask: none; }
.chip:has(input:checked) { background: var(--teal-50); border-color: var(--teal-700); }
.chip:has(input:focus-visible) { outline: 3px solid var(--teal-900); outline-offset: 2px; box-shadow: 0 0 0 7px rgba(236, 169, 59, .38); }
.chip.is-disabled { border-style: dashed; background: var(--paper-2); color: var(--ink-2); cursor: not-allowed; }
.chip.is-disabled input { cursor: not-allowed; }
.chip.is-disabled .chip-box { border-color: var(--line-strong); background: var(--paper-2); }
.kw { margin: 4px 0 8px; }
.kw .field { max-width: 560px; }
.kw label { display: flex; align-items: center; min-height: 44px; font-weight: 700; color: var(--teal-900); }

/* ---------- 一覧 ---------- */
.list-head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin-top: 20px; }
.list-head h2 { margin: 0; }
.list-order { margin-left: 4px; font-family: var(--f-gothic); font-feature-settings: normal; font-size: 15px; font-weight: 400; letter-spacing: .02em; color: var(--ink-2); }
.result-count { margin: 0; }
.result-count strong { color: var(--teal-900); }
.list-tools { display: flex; flex-wrap: wrap; gap: 8px; margin-left: auto; }
.list-empty { padding: 16px; background: var(--warn-bg); border: 1px solid var(--warn-line); border-radius: var(--r-md); color: var(--warn-ink); }

/* 一覧のカード（どのカードも同じ位置に同じ項目） */
.cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.card { margin: 0; padding: 10px 16px 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
.card[data-status="休止"] { display: none; }
main:has(#f-suspended:checked) .card[data-status="休止"] { display: block; }
.card-name { margin: 2px 0 2px; font-size: 18px; line-height: 1.5; }
.card-name a { padding: 6px 0; color: var(--teal-900); text-decoration: none; }   /* 行内のリンク（同じ行き先の「詳しく」ボタンは 44px） */
.card-name a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.card-addr { margin: 0; color: var(--ink-2); font-size: 15px; line-height: 1.6; }
.card-dist { display: inline-block; margin-left: 8px; padding: 0 10px; border: 1px solid var(--teal-100); border-radius: 999px; background: var(--teal-50); color: var(--teal-900); font-weight: 700; white-space: nowrap; }
.card-actions { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 519px) { .card-actions .btn-tel { flex: 1 1 auto; } }

/* ---------- 地図（Leaflet・国土地理院の淡色地図）。ピンの色は site.js ---------- */
.map-section { margin-top: 24px; }
.map { position: relative; z-index: 0; isolation: isolate; height: min(62vh, 480px); min-height: 320px; overflow: hidden; background: #EFE8DA; border: 1px solid var(--line); border-radius: var(--r-lg); }
.map .leaflet-tile-pane { filter: sepia(.18) saturate(.85); }
.map-placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; margin: 0; padding: 16px; text-align: center; color: var(--ink-2); }
.map-credit { margin-top: 6px; font-size: 15px; color: var(--ink-2); }
#map.leaflet-container { font: inherit; font-size: 15px; }
#map .leaflet-bar { border: 1px solid var(--line-strong); border-radius: 10px; overflow: hidden; box-shadow: var(--shadow-1); }
#map .leaflet-bar a { width: 44px; height: 44px; line-height: 44px; font-size: 22px; color: var(--teal-800); background: var(--card); }
#map .leaflet-bar a:hover { background: var(--teal-50); }
#map .leaflet-control-attribution { padding: 0 4px; font-size: 13px; color: #333; background: rgba(255, 255, 255, .92); }
#map .leaflet-control-attribution a { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; padding: 0 6px; color: #10325a; }
#map .leaflet-popup-content-wrapper { border-radius: var(--r-md); background: var(--card); color: var(--ink); box-shadow: var(--shadow-2); }
#map .leaflet-popup-tip { background: var(--card); }
#map .leaflet-popup-content { margin: 10px 14px; font-size: 15px; line-height: 1.5; min-width: 200px; }
#map a.leaflet-popup-close-button { width: 44px; height: 44px; font-size: 24px; line-height: 44px; color: var(--ink-2); }
#map .pop-name { display: flex; align-items: center; min-height: 44px; padding-right: 28px; font-weight: 700; color: var(--teal-900); }
#map .pop p { margin: 2px 0 6px; }
#map .pop .btn { margin: 2px 4px 2px 0; color: var(--teal-800); }
#map .pop .btn-tel:not(.btn-line) { color: var(--card); }
#map .pop-flag { display: inline-block; padding: 0 8px; background: var(--warn-bg); border: 1px solid var(--warn-line); border-radius: 6px; color: var(--warn-ink); font-weight: 700; }
.origin-pin { background: none; border: 0; }
.origin-pin span { position: absolute; left: 0; bottom: 8px; transform: translateX(-50%); display: inline-block; padding: 2px 10px; background: var(--ink); color: var(--card); font-weight: 700; font-size: 15px; line-height: 1.5; border-radius: var(--r-sm); border: 2px solid var(--card); box-shadow: 0 1px 4px rgba(0, 0, 0, .35); white-space: nowrap; }
.origin-pin span::after { content: ""; position: absolute; left: 50%; bottom: -8px; margin-left: -6px; border: 6px solid transparent; border-top-color: var(--ink); border-bottom: 0; }
@media (min-width: 1100px) {
  .results { display: grid; grid-template-columns: minmax(0, 1fr) minmax(380px, 44%); grid-template-rows: auto 1fr; gap: 0 24px; align-items: start; }
  .results > .finder { grid-column: 1; grid-row: 1; }
  .results > .list-section { grid-column: 1; grid-row: 2; }
  .results > .map-section { grid-column: 2; grid-row: 1 / span 2; position: sticky; top: 12px; margin-top: 16px; }
  .map { height: calc(100vh - 150px); max-height: 820px; }
  .map-jump { display: none; }
}

/* ---------- 数字・表 ---------- */
.num-table th { font-weight: 400; }
.num-table td { white-space: nowrap; text-align: right; font-weight: 700; color: var(--teal-900); }
.kv { margin: 0 0 12px; }
.kv > div { display: grid; grid-template-columns: 9em minmax(0, 1fr); gap: 4px 16px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.kv dt { color: var(--teal-800); font-weight: 700; }
.kv dd { margin: 0; min-width: 0; }
.dd-action { display: block; margin-top: 8px; }
.kv-table th { width: 42%; font-weight: 700; color: var(--teal-800); }
/* 届出・指定の有無（✓／－／？の代わりに Lucide の形） */
.yn { font-weight: 700; }
.yn::before { content: ""; display: inline-block; width: 18px; height: 18px; margin-right: 5px; vertical-align: -3px; background: currentColor; -webkit-mask: var(--mi-check) center / contain no-repeat; mask: var(--mi-check) center / contain no-repeat; }
.yn.yes { color: var(--teal-900); }
.yn.yes::before { background: var(--teal-700); }
.yn.no { color: var(--ink-2); font-weight: 400; }
.yn.no::before { -webkit-mask-image: var(--mi-minus); mask-image: var(--mi-minus); }
.yn.na { color: var(--warn-ink); }
.yn.na::before { -webkit-mask-image: var(--mi-help); mask-image: var(--mi-help); }
@media (max-width: 599px) {
  .kv > div { grid-template-columns: 1fr; gap: 0; }
  .kv-table th, .kv-table td { display: block; width: auto; border: 0; padding: 2px 0; }
  .kv-table tr { display: block; padding: 10px 0; border-bottom: 1px solid var(--line); }
}

/* ---------- 事業所ページ ---------- */
.station { max-width: 820px; }
.st-sub { color: var(--ink-2); }
.src-label { display: inline-block; padding: 2px 10px; background: var(--teal-50); border-radius: 6px; font-size: 15px; font-weight: 700; color: var(--teal-900); }
.near5 { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.near5 > li { margin: 0; padding: 4px 16px 12px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); }
.near5-name { display: flex; align-items: center; min-height: 44px; margin: 0; font-weight: 700; color: var(--teal-900); }
a.near5-name { text-decoration: none; }
a.near5-name:hover { text-decoration: underline; }
.near5-meta { margin: 0 0 4px; color: var(--ink-2); font-size: 15px; }
.win-tel { margin: 8px 0; }
.src-list { padding-left: 1.2em; }

/* ---------- 解説・方針などの文書 ---------- */
.doc, .guide { max-width: 820px; }
.draft-flag { display: inline-block; padding: 2px 12px; background: var(--warn-bg); border: 1px solid var(--warn-line); border-radius: var(--r-sm); color: var(--warn-ink); font-weight: 700; }
.guide-meta { color: var(--ink-2); font-size: 15px; }
.notice { padding: 12px 16px; background: var(--teal-50); border-radius: var(--r-md); }
.callout { padding: 14px 16px; background: var(--card); border: 1px solid var(--line); border-left: 4px solid var(--teal-700); border-radius: var(--r-sm); }
.prose h2 { margin-top: 1.6em; }
.prose h3 { margin-top: 1.3em; }
.prose table { display: block; overflow-x: auto; margin: 12px 0 16px; font-size: 15px; }
.prose th { background: var(--teal-50); }
.prose blockquote { margin: 12px 0; padding: 8px 16px; border-left: 4px solid var(--line-strong); color: var(--ink-2); }
.prose code { font-size: 15px; background: var(--paper-2); padding: 0 4px; border-radius: 4px; }
.prose img { max-width: 100%; height: auto; }
.stack-table { margin: 16px 0; font-size: 15px; }
.stack-table thead th { background: var(--teal-50); }
@media (max-width: 719px) {
  .stack-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .stack-table tr { display: block; margin-bottom: 10px; padding: 6px 14px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); }
  .stack-table td { display: block; border: 0; padding: 4px 0; }
  .stack-table td::before { content: attr(data-label); display: block; font-size: 15px; font-weight: 700; color: var(--teal-800); }
}

/* お問い合わせ */
.contact-form { margin: 16px 0; padding: 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); }
.field-row { margin: 0 0 16px; border: 0; padding: 0; min-width: 0; }
.field-row > legend { display: block; margin-bottom: 6px; padding: 0; font-weight: 700; color: var(--teal-900); }
.field-row > label { display: flex; align-items: center; min-height: 44px; padding: 0; font-weight: 700; color: var(--teal-900); }
/* 修正・掲載停止のご依頼（templates/contact.html・static/contact.js・functions/api/request.js） */
.field-row > .field-label { display: block; margin-bottom: 6px; font-weight: 700; color: var(--teal-900); }
.contact-target { display: grid; gap: 2px; margin: 0; padding: 10px 14px; background: var(--teal-50); border-radius: var(--r-md); }
.contact-target strong { font-family: var(--f-mincho); font-size: 18px; line-height: 1.5; color: var(--teal-900); }
.contact-target .note { font-variant-numeric: tabular-nums; }
.consent-link { margin: 0 0 6px; }
.consent-link a { display: inline-flex; align-items: center; min-height: 44px; }
.form-error { margin: 0 0 12px; padding: 10px 14px; background: var(--warn-bg); border: 1px solid var(--warn-line); border-radius: var(--r-md); color: var(--warn-ink); }
.btn-send { width: 100%; }
@media (min-width: 720px) { .btn-send { width: auto; min-width: 240px; } }
.contact-done { margin: 16px 0; padding: 16px; background: var(--card); border: 1px solid var(--line); border-left: 4px solid var(--teal-700); border-radius: var(--r-lg); }
.contact-done h2 { margin-top: 0; }
.receipt-label { margin: 0; color: var(--ink-2); font-size: 15px; }
.receipt-no { margin: 0 0 8px; font-family: var(--f-mincho); font-weight: 700; font-size: 28px; line-height: 1.35; letter-spacing: .04em; font-variant-numeric: tabular-nums; color: var(--teal-900); }

/* 料金の計算 */
.calc { padding: 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
.calc .field-row { margin-bottom: 16px; }
.calc-out { margin-top: 16px; padding: 14px 16px; background: var(--teal-50); border-radius: var(--r-md); }
.calc-label { margin: 0; color: var(--ink-2); font-weight: 700; }
.calc-total { margin: 0 0 4px; font-family: var(--f-mincho); font-weight: 700; font-feature-settings: "palt" 1; font-size: 32px; line-height: 1.35; letter-spacing: .02em; color: var(--teal-900); }
@media (min-width: 720px) { .calc-total { font-size: 36px; } }
.calc-table td:last-child, .calc-table th:last-child { text-align: right; white-space: nowrap; }

/* 主治医へのメモ（A4 1枚の記入用紙） */
.memo-intro { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 8px 0 12px; }
.memo-intro .note { margin: 0; }
.sheet { max-width: 720px; margin: 0 auto 24px; padding: 20px 16px 8px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); }
@media (min-width: 720px) { .sheet { padding: 28px 32px 12px; } }
.sheet h1 { text-align: center; margin-bottom: .2em; }
.sheet-sub { text-align: center; color: var(--ink-2); font-size: 15px; }
.box { margin-bottom: 12px; padding: 8px 14px; border: 1.5px solid var(--ink-2); border-radius: 10px; }
.box h2 { margin: 0 0 2px; font-size: 18px; color: var(--ink); }
.box .hint { margin: 0 0 4px; font-size: 15px; color: var(--ink-2); }
.lines { height: 5.4rem; background: repeating-linear-gradient(to bottom, transparent 0, transparent calc(1.8rem - 1px), var(--line-strong) calc(1.8rem - 1px), var(--line-strong) 1.8rem); }
.lines.short { height: 3.6rem; }
.ask { margin: 14px 0; padding: 12px 16px; background: var(--teal-50); border-radius: 10px; }
.ask p { margin: 0 0 4px; }
.ask-h { font-weight: 700; color: var(--teal-900); }
.ask-note { font-size: 15px; color: var(--ink-2); }
.sheet-foot { font-size: 15px; color: var(--ink-2); }

/* ---------- フッタ（町並みの細い帯 → 一段深い紙の面） ---------- */
.site-footer { margin-top: 56px; background: var(--paper-2); color: var(--ink); font-size: 15px; line-height: 1.75; }
.foot-art { display: block; background: var(--paper); line-height: 0; }
.foot-art .il { display: block; width: 100%; height: 56px; }
@media (min-width: 720px) { .foot-art .il { height: 72px; } }
.site-footer > .wrap { padding-top: 22px; padding-bottom: 40px; }
.site-footer p { margin: 0 0 .8em; }
.site-footer .ft-brand { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; color: var(--teal-900); }
.ft-brand .brand-mark { width: 36px; height: 36px; }
.ft-brand .brand-name { font-size: 18px; }
.ft-op { font-size: 16px; }
.ft-about { margin: 8px 0 0; }
.ft-h { font-family: var(--f-mincho); font-weight: 700; font-size: 18px; line-height: 1.4; margin: 0 0 4px; color: var(--teal-900); }
.ft-links { list-style: none; padding: 0; margin: 4px 0 14px; display: flex; flex-wrap: wrap; gap: 0 20px; }
.ft-links li { margin: 0; }
.ft-links a { display: inline-flex; align-items: center; min-height: 44px; }
.src-text { color: var(--ink); }
/* 出典・時点・免責は補足（14px・--ink-2。一段深い紙の上で 6.02）。運営者の行（.ft-op）は 16px・墨のまま */
.ft-src, .ft-time, .ft-disclaimer { color: var(--ink-2); font-size: 14px; line-height: 1.7; }

/* ---------- 線画（.il）。線は緑青 2px・どの大きさでも同じ太さ ---------- */
.il * { vector-effect: non-scaling-stroke; }
.il .il-ln, .il .il-wall, .il .il-roof, .il .il-win, .il .il-amber, .il .il-door, .il .il-rail, .il .il-leaf, .il .il-pole, .il .il-trunk, .il .il-seat {
  stroke: var(--il-line); stroke-width: var(--il-sw); stroke-linecap: round; stroke-linejoin: round;
}
.il .il-ln { fill: none; }
.il .il-wall { fill: var(--il-wall); }
.il .il-roof { fill: var(--il-roof); }
.il .il-win { fill: var(--il-win); stroke-width: 1.5px; }
.il .il-amber { fill: var(--amber); stroke-width: 1.5px; }
.il .il-door { fill: var(--teal-100); stroke-width: 1.5px; }
.il .il-knob { fill: var(--il-line); }
.il .il-rail { fill: var(--teal-100); stroke-width: 1.5px; }
.il .il-leaf { fill: var(--teal-100); }
.il .il-trunk { fill: none; stroke-width: 2.5px; }
.il .il-pole { fill: none; stroke-width: 3.5px; }
.il .il-seat { fill: none; stroke-width: 3.5px; }
.il .il-thin, .il .il-mull { fill: none; stroke: var(--il-line); stroke-width: 1.25px; stroke-linecap: round; }
.il .il-wire { fill: none; stroke: var(--teal-600); stroke-width: 1.1px; opacity: .75; }
.il .il-far { fill: var(--il-far); }
.il .il-road { fill: var(--paper-2); }

/* トップ・都県・地域ページ（デザイン B3「文字を減らし、見る場所を決める」・2026/11/6）
   style.css の同じ部品の指定のあとに置き、上書きする。
   文字の段差: 見出し・数字 ＞ 名称（18px）＞ 本文（16px）＞ 補足（14px・--ink-2。紙・カードの上で 6.6〜7.4）。
   主役は1画面に1つ: トップ＝町名・駅名の欄、地域＝「92件」と町名・駅名の欄（濃い緑青の面はこの欄だけ。カードの電話は枠）。
   枠・罫線は減らす（区切りは余白で）。線画・凡例・記号の約束・動きは足さない（デザイン指示書 B2 §3）。 */

/* ---------- 見出しを文節で折り返す（390px で「ステーシ／ョン」と割れないように）。1つの文節が行より長いときだけ中で折り返す ---------- */
.nb { display: inline-block; max-width: 100%; }

/* ======================================================================
   トップ（①町名・駅名の欄 → ②地域のカード → ③解説と道具）
   ====================================================================== */
.page-top .hero { margin: 0; }
.page-top .hero-art { margin-bottom: 12px; }
.page-top .hero-art .il { height: 132px; }                 /* 390px で 390×132（画面の 1/6）。主役の欄が1画面目の真ん中に来る高さ */
.page-top .hero h1 { font-size: 26px; line-height: 1.42; margin: 0 0 4px; }
.hero-sub { margin: 0; color: var(--ink-2); font-size: 15px; line-height: 1.6; font-variant-numeric: tabular-nums; }
@media (max-width: 379px) { .page-top .hero h1 { font-size: 24px; } }
@media (min-width: 720px) {
  .page-top .hero-art { margin-bottom: 18px; }
  .page-top .hero-art .il { height: auto; aspect-ratio: 1440 / 300; }
  .page-top .hero h1 { font-size: 34px; line-height: 1.36; margin-bottom: 6px; }
  .hero-sub { font-size: 16px; }
}
@media (min-width: 1100px) { .page-top .hero h1 { font-size: 40px; } }

/* 町名・駅名から探す（濃い面）。広い画面では欄の幅まで */
.find { margin: 16px 0 0; }
.find-h { margin: 0 0 10px; }              /* B4 §7: 「ステーションを探す」（住所・駅の検索＋地域のカード） */
.areas { margin-top: 28px; }
.areas-h { font-size: 18px; margin: 0 0 2px; color: var(--ink); font-family: var(--f-gothic); font-weight: 700; letter-spacing: .02em; }
.no-geo { margin: 6px 0 0; }
@media (min-width: 720px) {
  .find { margin-top: 24px; }
  .find > .near { max-width: 860px; }
}

/* 近い10件（地域ページの一覧のカードと同じ .cards／.card を使う） */
.top-results .tr-h { margin: 22px 0 2px; font-size: 20px; }
.top-results .cards { margin: 0; }
.tr-more { margin: 10px 0 0; }
.tr-more a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; }

/* 地域から探す: 都県の見出し（都県のページへ）＋ 地域名と件数のカード */
.page-top .block { margin: 36px 0; }
.pref-h { margin: 14px 0 6px; font-size: 18px; }
.pref-link { gap: 2px; text-decoration: none; }
.pref-link .ico-sm { color: var(--teal-700); }
.pref-link:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.area-links { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; }
.area-links a { gap: 6px; min-height: 60px; padding: 6px 10px 6px 14px; line-height: 1.4; box-shadow: none; }
.al-name { flex: 1 1 auto; min-width: 0; }
.al-count { flex: none; color: var(--ink); font-size: 15px; font-weight: 400; }
.al-num { margin-right: 1px; font-family: var(--f-mincho); font-weight: 700; font-size: 24px; line-height: 1; letter-spacing: 0; color: var(--teal-900); }
.al-go { flex: none; color: var(--teal-700); }

/* 解説と道具（アイコン＋短い題名だけ） */
.link-cards { gap: 8px; }
.link-cards a { flex-direction: row; align-items: center; justify-content: flex-start; gap: 12px; min-height: 64px; padding: 10px 16px; }
.lc-ico { color: var(--teal-700); }
.lc-body { display: flex; flex-direction: column; min-width: 0; }
.page-top .link-cards a { min-height: 56px; padding: 8px 16px; box-shadow: none; }

/* ======================================================================
   都県ページ（件数 → 区市のカード）
   ====================================================================== */
.page-pref h1 { margin: 2px 0 2px; }
.pref-list { margin-top: 20px; }
.pref-areas { gap: 16px; margin-bottom: 8px; }
.pref-area { padding: 8px 16px 16px; box-shadow: none; }
.pref-area h3 { margin: 0 0 2px; }
.pa-link { gap: 6px; }
.pa-name { flex: 1 1 auto; min-width: 0; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .25em; }
.pa-count { flex: none; font-family: var(--f-gothic); font-size: 15px; font-weight: 400; letter-spacing: .02em; color: var(--ink); }
.pa-num { margin-right: 1px; font-family: var(--f-mincho); font-weight: 700; font-size: 26px; line-height: 1; letter-spacing: 0; color: var(--teal-900); }
.pa-go { flex: none; color: var(--teal-700); }
.mini-nums { font-size: 15px; }
.pref-area .mini-nums div { padding: 4px 0; border-top: 0; }
.mini-nums dd { font-weight: 700; color: var(--teal-900); font-variant-numeric: tabular-nums; }

/* ======================================================================
   件数（地域・都県）: 大きな数字＋小さく時点
   ====================================================================== */
@media screen {
  .count-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 12px; margin: 0 0 4px; line-height: 1.2; }
  .count-line strong { flex: none; font-size: 20px; line-height: 1.1; color: var(--teal-900); }
  .cl-num { margin-right: 2px; font-size: 44px; letter-spacing: 0; font-variant-numeric: tabular-nums; }
  .cl-date { color: var(--ink-2); font-size: 14px; line-height: 1.6; }
}

/* ======================================================================
   地域ページ（①「92件」と町名・駅名の欄 → ②一覧のカード → ③地図）。画面だけ（印刷の形は print.css）
   ====================================================================== */
@media screen {
  .area h1 { margin: 2px 0 2px; }

  /* 探す・絞り込む: 濃い面（町名・駅名）＋ 淡いカードの1行（絞り込む）。区切り線は置かない */
  .area .finder { margin: 16px 0 0; }
  .near-row [data-near-clear] { flex: none; white-space: nowrap; }   /* 「解除」が縦に割れないように */
  .filters > summary { flex-wrap: nowrap; gap: 8px; min-height: 52px; }
  .filters > summary > span:first-child { flex: 1 1 auto; }
  .filters > summary::after { margin-left: 2px; }
  /* 条件に合う件数（条件があるときだけ。読み上げは一覧の見出しの横の件数＝aria-live） */
  .filters-hit { flex: none; padding: 0 10px; border: 1px solid var(--teal-100); border-radius: 999px; background: var(--teal-50); color: var(--teal-900); font-size: 15px; font-weight: 700; line-height: 1.7; font-variant-numeric: tabular-nums; }
  .filters-hit:empty { display: none; }
  .filters-body { padding: 0 0 12px; }
  .chip-n { margin-left: 6px; color: var(--ink-2); font-size: 14px; font-variant-numeric: tabular-nums; white-space: nowrap; }
  .kw { margin: 6px 0 0; }

  /* 一覧の見出し: 並び順（大）・件数（小）を左に、地図・印刷を右に */
  .list-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 12px; margin-top: 28px; }
  .list-head h2 { grid-column: 1; margin: 0; font-size: 20px; line-height: 1.4; }
  .result-count { grid-column: 1; margin: 0; color: var(--ink-2); font-size: 14px; line-height: 1.5; font-variant-numeric: tabular-nums; }
  .result-count strong { color: var(--ink); font-weight: 400; }
  .list-tools { grid-column: 2; grid-row: 1 / span 2; margin: 0; gap: 6px; flex-wrap: nowrap; }
  .list-tools .btn { gap: 4px; padding: 4px 12px; }
  .list-tools .ico-sm { color: var(--teal-700); }
  /* 注記（1行・枠なし） */
  .area .badge-note, .top-results .badge-note { margin: 4px 0 10px; padding: 0; background: none; border: 0; border-radius: 0; color: var(--ink-2); font-size: 14px; line-height: 1.6; }

  /* 一覧のカード: 名称（明朝・入口）→ 町名・距離 → バッジ（短い文言・横に流す）→ 電話（枠）・詳しく */
  .cards { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .card { min-width: 0; padding: 10px 16px 14px; box-shadow: none; }
  .card-name { margin: 0; font-size: 18px; line-height: 1.45; }
  .card-name a { padding: 4px 0; }
  .card-addr { display: flex; align-items: baseline; gap: 8px; margin: 0; color: var(--ink-2); font-size: 14px; line-height: 1.6; }
  .ca-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ca-full { display: none; }
  .card-dist { flex: none; margin-left: 0; padding: 0 8px; font-size: 14px; }
  .card .badges { display: flex; flex-wrap: wrap; gap: 0 14px; margin: 4px 0 10px; }
  .card .badge { line-height: 1.6; }
  .card-actions { gap: 8px; }
  .card-actions .btn { padding: 6px 14px; letter-spacing: .02em; }
  .card-actions .btn-tel { gap: 6px; font-size: 17px; letter-spacing: .02em; }
  .card-features { margin: 6px 0 10px; font-size: 14px; color: var(--ink-2); overflow-wrap: anywhere; }

  /* 「ほか◯件」: 文字だけ（押せない）。チェックは付けない（事実の印と紛れないように）。残りの文言は title と、読み上げ用の .badge-rest に */
  .badge.badge-more { color: var(--ink-2); }
  .card .badge-more { padding-left: 0; }
  .badge-rest { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

  /* 「さらに10件を表示」「すべて表示」 */
  .list-more { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; }
  .list-more .btn { flex: 1 1 auto; }

  /* 地図（出典は地図の上）。ピンの色は site.js（緑青・休止は灰・選んだものだけ濃く） */
  .map-section { margin-top: 28px; }
  .map-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 12px; margin: 0 0 6px; }
  .map-head h2 { margin: 0; }
  .map-credit { margin: 0; color: var(--ink-2); font-size: 14px; line-height: 1.6; }

  /* 数字の表（B2 のまま。このサイトについて のページも使う） */
  .num-table { font-size: 15px; font-feature-settings: "palt" 1; }
  .num-table th, .num-table td { padding: 5px 0; line-height: 1.55; }
  .num-table td { padding-left: 12px; font-size: 16px; font-variant-numeric: tabular-nums; }
  .num-table caption { padding-bottom: 4px; }
  /* {地域}の数字（1行ずつ・数字は右。罫線なし） */
  .nums .num-table { width: 100%; max-width: 26em; font-size: 16px; font-feature-settings: "palt" 1; }
  .nums .num-table th, .nums .num-table td { padding: 3px 0; border: 0; line-height: 1.6; }
  .nums .num-table td { padding-left: 16px; font-variant-numeric: tabular-nums; }
  .nums .note { margin-top: 8px; font-size: 14px; }

  /* 相談窓口・よくある質問: スマホでは <details> で畳む（720px 以上は site.js が開く）。見出しが押せる行になる */
  .fold-sec { margin: 24px 0; }
  .fold-sec + .fold-sec { margin-top: -1px; }
  .fold { border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); }
  .fold > summary { list-style: none; display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 6px 0; cursor: pointer; }
  .fold > summary::-webkit-details-marker { display: none; }
  .fold > summary h2 { flex: 1 1 auto; min-width: 0; margin: 0; }
  .fold > summary::after { content: ""; flex: none; width: 10px; height: 10px; margin: 0 8px 5px 0; border-right: 2px solid var(--teal-700); border-bottom: 2px solid var(--teal-700); transform: rotate(45deg); transition: transform .15s; }
  .fold[open] > summary::after { margin-bottom: -5px; transform: rotate(-135deg); }
  .fold > summary:hover h2 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em; }
  .fold-body { padding: 4px 0 16px; }
  .fold-body > :last-child { margin-bottom: 0; }

  /* 近くの地域・この一覧について（3行＋印刷） */
  .area .area-links { margin-bottom: 0; }
  .about-list .al-order { margin: 0 0 4px; }
  .about-list .al-links { margin: 0; }
  .al-print { margin: 8px 0 0; }
  .al-print:empty { display: none; }
}
@media screen and (max-width: 379px) {
  .area h1, .page-pref h1 { font-size: 24px; }
}
/* 狭い画面のカードも電話番号を出す（机の電話からかける紹介元のため・2026/11/6 判断） */
@media screen and (max-width: 519px) {
  .card-actions .btn { padding: 6px 12px; }
  .card-actions .btn-tel { flex: 1 1 auto; gap: 5px; font-size: 16px; }
  .card-actions .btn-tel .ico { width: 18px; height: 18px; }
}
@media screen and (max-width: 719px) {
  .map { height: 360px; min-height: 0; }
}
@media screen and (min-width: 720px) {
  .cl-num { font-size: 52px; }
  .fold-sec { margin: 40px 0; }
  .fold-sec + .fold-sec { margin-top: -1px; }
  .top-results .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .area .finder > .near, .area .finder > .filters { max-width: 860px; }
}
@media screen and (min-width: 720px) and (max-width: 1099px) {
  .map { height: 440px; }
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }   /* タブレット: カードを2列に（並びは左→右・上→下） */
}

/* 件数の折りたたみ（site.js が 11件目以降に .is-folded を付ける。JS が無いときは全件）。
   「休止中も表示」の main:has(#f-suspended:checked) .card[data-status="休止"]（style.css）より強くするため !important */
.card.is-folded { display: none !important; }
.badge.badge-more::before { display: none; }   /* style.css の「svg の無いバッジに CSS でチェックを付ける」を、「ほか◯件」には付けない */

/* 事業所・解説・道具・方針ページの CSS（作業中の分割。最後に style.css へ統合）— デザイン B2
   - 紙のカード（--card・--line・--r-lg）・緑青・墨。飾りの絵・記号の約束・説明・動きは置かない
   - base.html がどのページにも読み込むので、セレクタは body の class（page-station／kind-guide・page-guide・page-tool・page-memo／kind-page）で絞る
     （トップ・都県・地域ページの .lead・.num-table・.link-cards・.kv には効かせない）
   - 印刷: 面・枠・余白・並べ方の飾りは @media screen の中に書く（印刷は style.css＋print.css の指定のまま）
   - 守ること（style.css と同じ）: 本文 16px 以上（補足 15px まで）／コントラスト 4.5 以上／押せるものは 44px 以上／390px ではみ出さない */

/* =====================================================================
   事業所ページ（探す → 比べる → 電話する の最後の画面）
   ===================================================================== */
.page-station .station { max-width: 860px; }
.page-station .station h1 { margin: 4px 0 6px; }
.page-station .nb { white-space: nowrap; }   /* 名称の「訪問看護ステーション」「ステーション」・HPの取得日を途中で割らない */
.page-station .st-sub { margin: 0 0 14px; line-height: 1.7; }
.page-station .near5-km { font-weight: 700; color: var(--teal-900); white-space: nowrap; }

@media screen {
  /* 電話（名称のすぐ下に大きく）: アイコン＋「電話する」＋番号 */
  .page-station .st-call { margin: 0 0 16px; }
  .page-station .btn-call {
    display: flex; width: 100%; justify-content: flex-start; gap: 14px;
    min-height: 60px; padding: 7px 20px 7px 18px; border-radius: var(--r-md);
    text-align: left; box-shadow: var(--shadow-1);
  }
  .page-station .btn-call:focus-visible { box-shadow: 0 0 0 7px rgba(236, 169, 59, .38); }   /* 上の影より、フォーカスのにじみ（style.css と同じ）を優先 */
  .page-station .btn-call .ico { width: 26px; height: 26px; }
  .page-station .call-text { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
  .page-station .call-k { font-size: 16px; letter-spacing: .08em; line-height: 1.25; }
  .page-station .call-num { font-size: 24px; letter-spacing: .05em; line-height: 1.15; font-variant-numeric: tabular-nums; }
  @media (min-width: 600px) {
    .page-station .btn-call { display: inline-flex; width: auto; min-width: 320px; }
    .page-station .call-num { font-size: 26px; }
  }
  .page-station .st-call-none { padding: 10px 14px; background: var(--paper-2); border-radius: var(--r-md); color: var(--ink); font-weight: 700; }

  .page-station .badges-lg { margin: 0 0 8px; }
  .page-station .station .badge-note { margin: 8px 0 0; }

  /* 節はすべて紙のカード（中の行・近くの5件は罫線で区切る。カードの中にカードを重ねない） */
  .page-station .station > .block {
    margin: 16px 0 0; padding: 16px 16px 4px;
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg);
  }
  .page-station .station > .block:first-of-type { margin-top: 24px; }
  @media (min-width: 720px) {
    .page-station .station > .block { margin-top: 20px; padding: 22px 28px 8px; }
    .page-station .station > .block:first-of-type { margin-top: 28px; }
  }
  .page-station .station > .block > h2 { margin: 0 0 8px; }
  .page-station .station > .block .kv { margin-bottom: 8px; }
  .page-station .station > .block .kv > div { align-items: baseline; }   /* 項目名を、ボタン・値の1行目にそろえる */
  @media (min-width: 600px) { .page-station .station > .block .kv > div { grid-template-columns: 10.5em minmax(0, 1fr); } }
  .page-station .station > .block .kv > div:last-child { border-bottom: 0; }
  .page-station .station > .block .kv-table { margin-bottom: 8px; }
  .page-station .station > .block .kv-table tr:last-child th,
  .page-station .station > .block .kv-table tr:last-child td { border-bottom: 0; }
  .page-station .kv-table th { padding-left: 0; }
  @media (max-width: 599px) {
    .page-station .station > .block .kv-table tr:last-child { border-bottom: 0; }
  }

  /* 事業所の申告: 項目名と「未登録」を1行に（広い画面では2列） */
  .page-station .station > .block .kv-compact > div { grid-template-columns: minmax(0, 1fr) auto; gap: 0 12px; padding: 8px 0; }
  .page-station .kv-compact dd { color: var(--ink-2); white-space: nowrap; }
  @media (min-width: 720px) {
    .page-station .kv-compact { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 40px; }
    .page-station .kv-compact > div:nth-last-child(2):nth-child(odd) { border-bottom: 0; }   /* 偶数個のときの最後の行 */
  }

  /* 近くの5件: 罫線で区切った行（広い画面では2列） */
  .page-station .near5 { gap: 0; margin: 4px 0 8px; }
  .page-station .near5 > li { padding: 6px 0 12px; background: none; border: 0; border-top: 1px solid var(--line); border-radius: 0; }
  .page-station .near5 > li:first-child { border-top: 0; }
  @media (min-width: 720px) {
    .page-station .near5 { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 40px; }
    .page-station .near5 > li:nth-child(2) { border-top: 0; }
  }

  .page-station .src-label { margin: 0 0 4px; }
  .page-station .src-list { margin-bottom: 10px; }
  .page-station .src-list li { margin-bottom: .4em; }
}

/* =====================================================================
   解説（本文は Markdown から生成した .prose）・解説と道具の目次。地域ページにも .prose があるので .kind-guide で絞る
   ===================================================================== */
.page-guide .guide { max-width: 780px; }
.page-guide .guide h1 { margin-bottom: 8px; }
.kind-guide .draft-flag { display: inline-flex; align-items: flex-start; gap: 8px; margin: 4px 0 12px; padding: 4px 14px 4px 10px; font-size: 15px; line-height: 1.6; }
.kind-guide .draft-flag .ico-sm { margin-top: 2px; }
.page-guide .guide-meta { margin: 0 0 14px; }
/* 注意書きの面（解説・料金の計算）。アイコンは左の余白に置き、本文の行の流れは崩さない */
.kind-guide .notice { position: relative; margin: 0 0 20px; padding: 12px 16px 12px 46px; background: var(--teal-50); border: 1px solid var(--teal-100); border-radius: var(--r-md); line-height: 1.75; }
.kind-guide .notice > .ico-sm { position: absolute; left: 16px; top: 15px; color: var(--teal-700); }

.kind-guide .prose { font-size: 16px; line-height: 1.8; }
.kind-guide .prose > :first-child { margin-top: 0; }
.kind-guide .prose h2 { margin: 2.2em 0 .6em; }
.kind-guide .prose h3 { margin: 1.8em 0 .4em; }
.kind-guide .prose p { margin: 0 0 1em; }
.kind-guide .prose ul, .kind-guide .prose ol { margin: 0 0 1.2em; }
.kind-guide .prose li { margin-bottom: .4em; }
/* 表: 中身の幅に合わせ、入りきらないときは表だけ横に動かせる。
   本文の overflow-wrap: anywhere のままだと列が1文字まで縮み「22,20／0円」と割れるので、表の中では数字の途中で割らない（日本語の文は普通に折り返す）。
   横に動かせるときは、隠れている側の端に薄い影が出る（背景の local／scroll の重ね。動きはない） */
.kind-guide .prose table {
  display: block; width: fit-content; max-width: 100%; overflow-x: auto;
  margin: 16px 0 20px; font-size: 15px; line-height: 1.65;
  overflow-wrap: normal;
  border: 1px solid var(--line); border-radius: var(--r-md);
  background:
    linear-gradient(to right, var(--card) 40%, rgba(255, 252, 245, 0)) left center / 32px 100% no-repeat local,
    linear-gradient(to left, var(--card) 40%, rgba(255, 252, 245, 0)) right center / 32px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%, rgba(23, 68, 63, .2), rgba(23, 68, 63, 0)) left center / 14px 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%, rgba(23, 68, 63, .2), rgba(23, 68, 63, 0)) right center / 14px 100% no-repeat scroll,
    var(--card);
}
.kind-guide .prose th, .kind-guide .prose td { padding: 9px 12px; border-bottom: 1px solid var(--line); }
.kind-guide .prose th + th, .kind-guide .prose td + td { border-left: 1px solid var(--line); }
.kind-guide .prose thead th { background: var(--teal-50); color: var(--teal-900); font-weight: 700; border-bottom-color: var(--teal-100); }
.kind-guide .prose tbody tr:last-child td, .kind-guide .prose tbody tr:last-child th { border-bottom: 0; }
/* 1列目（項目名・回数など）は 6.5em より細くしない（表のセルの min-width は効かないブラウザがあるので、高さ0の擬似要素で幅を持たせる）。
   数字の列の見出しも 3.5em まで（1文字ずつの縦書きにならないように） */
.kind-guide .prose tr > :first-child::before { content: ""; display: block; width: 6.5em; }
.kind-guide .prose thead th:not(:first-child)::before { content: ""; display: block; width: 3.5em; }
@media (max-width: 599px) { .kind-guide .prose th, .kind-guide .prose td { padding: 8px 10px; } }
.kind-guide .prose blockquote { margin: 16px 0; padding: 10px 16px; background: var(--card); border-left: 4px solid var(--teal-200); border-radius: 0 var(--r-sm) var(--r-sm) 0; color: var(--ink); }
.kind-guide .prose blockquote > :last-child { margin-bottom: 0; }
.kind-guide .prose hr { margin: 2.4em 0 1.2em; border-top: 1px solid var(--line-strong); }
.kind-guide .prose code { font-size: 15px; background: var(--paper-2); padding: 0 4px; border-radius: 4px; }

/* 解説の下（地域の一覧・ほかの解説と道具） */
.page-guide .guide > .block { margin: 40px 0 0; padding-top: 24px; border-top: 1px solid var(--line); }
.page-guide .guide > .block + .block { margin-top: 28px; }
@media (min-width: 720px) {
  .page-guide #gl-h + .link-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
}

/* 解説と道具の目次: トップの「解説と道具」と同じカード（アイコン＋題名＋説明）。説明が長いので、広い画面は2列・アイコンは上ぞろえ */
.kind-guide .gi-lead { max-width: 46em; }
.kind-guide .lc-icon-cards { grid-template-columns: minmax(0, 1fr); gap: 12px; }
@media (min-width: 720px) { .kind-guide .lc-icon-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.kind-guide .lc-icon-cards a { flex-direction: row; align-items: flex-start; justify-content: flex-start; gap: 12px; padding: 14px 18px 16px 16px; }
.kind-guide .lc-icon-cards .lc-ico { margin-top: 1px; color: var(--teal-700); }
.kind-guide .lc-icon-cards .lc-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
@media (min-width: 720px) {
  .kind-guide #a-h + .link-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); column-gap: 24px; }
}

/* =====================================================================
   道具: 料金の計算（_ryokin_calc.html。data-*・id・name は site.js が読む）
   ===================================================================== */
.page-tool .doc { max-width: 820px; }
.page-tool .calc { margin-top: 8px; }
.page-tool .calc > h2 { margin: 0 0 12px; }
.page-tool .calc .field-row { margin-bottom: 20px; }
.page-tool .calc .field-row > legend, .page-tool .calc .field-row > label { color: var(--teal-900); }
.page-tool .calc .field-row .note { margin: 8px 0 0; }
.page-tool .calc ul.note { padding-left: 1.3em; }
.page-tool .calc ul.note li { margin-bottom: 2px; }
.page-tool .calc select.field { max-width: 560px; }
@media (min-width: 720px) { .page-tool .calc { padding: 24px 28px 20px; } }

/* 計算の結果 */
.page-tool .calc-out { margin-top: 24px; padding: 16px 16px 8px; background: var(--teal-50); border: 1px solid var(--teal-100); border-radius: var(--r-md); }
@media (min-width: 720px) { .page-tool .calc-out { padding: 20px 24px 10px; } }
.page-tool .calc-label { color: var(--teal-900); }
.page-tool .calc-total { margin: 0 0 6px; font-size: 36px; line-height: 1.25; color: var(--teal-900); font-variant-numeric: tabular-nums; }
@media (min-width: 720px) { .page-tool .calc-total { font-size: 42px; } }
.page-tool .calc-out [data-calc-sum] { margin-bottom: 12px; }
.page-tool .calc-table { margin: 4px 0 12px; font-size: 15px; line-height: 1.6; background: var(--card); border: 1px solid var(--teal-100); border-radius: var(--r-sm); border-collapse: separate; border-spacing: 0; overflow: hidden; }
.page-tool .calc-table caption { color: var(--ink-2); }
.page-tool .calc-table th, .page-tool .calc-table td { padding: 8px 12px; border-bottom: 1px solid var(--line); }
.page-tool .calc-table thead th { background: var(--teal-50); color: var(--teal-900); font-weight: 700; border-bottom-color: var(--teal-100); }
.page-tool .calc-table tbody th { font-weight: 400; }
.page-tool .calc-table tbody tr:last-child th, .page-tool .calc-table tbody tr:last-child td { border-bottom: 0; border-top: 2px solid var(--teal-200); font-weight: 700; color: var(--teal-900); }
.page-tool .calc-table tbody tr.muted th, .page-tool .calc-table tbody tr.muted td { color: var(--ink-2); }
.page-tool .calc-out .note { margin-bottom: 8px; }

/* =====================================================================
   道具: 主治医へのメモ（画面では紙の記入用紙。印刷は print.css の .page-memo で A4 1枚）
   ===================================================================== */
@media screen {
  .page-memo .memo-intro { margin: 8px 0 16px; }
  .page-memo .sheet { box-shadow: var(--shadow-1); }
  .page-memo .sheet h1 { margin-top: 4px; }
  .page-memo .box { border-color: var(--line-strong); background: var(--card); }
  .page-memo .box h2 { color: var(--teal-900); }
  .page-memo .ask { border: 1px solid var(--teal-100); }
  .page-memo .memo-after { max-width: 720px; margin-left: auto; margin-right: auto; }
}

/* =====================================================================
   このサイトについて・方針・出典・プライバシー・掲載中の事業所の方へ・お問い合わせ（article.doc）
   ===================================================================== */
.kind-page .doc { max-width: 820px; }
.kind-page .doc > h1 { margin-bottom: 12px; }
.kind-page .doc > .block:first-of-type { margin-top: 24px; }
.kind-page .doc .block > h2 { margin-bottom: 10px; }
/* 囲み（緑青の淡い面＋左の線） */
.kind-page .callout { margin: 12px 0 16px; padding: 14px 18px; background: var(--teal-50); border: 0; border-left: 4px solid var(--teal-700); border-radius: 0 var(--r-md) var(--r-md) 0; line-height: 1.8; }
.kind-page .kv > div:last-child { border-bottom: 0; }
.kind-page .kv { border-top: 1px solid var(--line); }
/* データの時点（このサイトについて） */
.kind-page .num-table { margin: 4px 0 14px; }
.kind-page .num-table th { padding-left: 0; }
.kind-page .num-table td { padding-right: 0; }
/* 出典・外部送信の表（広い画面は表、狭い画面は1件ずつのカード） */
.kind-page .stack-table td { line-height: 1.7; }
@media (min-width: 720px) {
  .kind-page .stack-table, .page-tool .stack-table {
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md);
    border-collapse: separate; border-spacing: 0; overflow: hidden;
  }
  .kind-page .stack-table th, .kind-page .stack-table td,
  .page-tool .stack-table th, .page-tool .stack-table td { padding: 10px 14px; }
  .kind-page .stack-table thead th, .page-tool .stack-table thead th { color: var(--teal-900); border-bottom-color: var(--teal-100); }
  .kind-page .stack-table tbody tr:last-child td, .page-tool .stack-table tbody tr:last-child td { border-bottom: 0; }
  .kind-page .stack-table th + th, .kind-page .stack-table td + td,
  .page-tool .stack-table th + th, .page-tool .stack-table td + td { border-left: 1px solid var(--line); }
}
/* データの出典と時点: 時点・ライセンスの列が1〜2文字ずつに縮まないよう幅を決める（広い画面の表だけ） */
@media (min-width: 720px) {
  .kind-page .src-table thead th:nth-child(2) { width: 10em; }
  .kind-page .src-table thead th:nth-child(3) { width: 10em; }
}
.page-tool .stack-table td:not(:first-child) { font-variant-numeric: tabular-nums; }
/* 料金の例（狭い画面）: 値が短いので、項目名と値を1行に並べる */
@media (max-width: 719px) {
  .page-tool .stack-table tr { padding: 4px 14px; }
  .page-tool .stack-table td { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--line); }
  .page-tool .stack-table td:last-child { border-bottom: 0; }
  .page-tool .stack-table td::before { display: inline; flex: 0 1 auto; }
  .page-tool .stack-table td:first-child { font-weight: 700; color: var(--teal-900); }
}

/* お問い合わせ（送信ボタンは disabled のまま） */
.kind-page .contact-form { margin: 20px 0 16px; padding: 18px 16px 20px; box-shadow: var(--shadow-1); }
@media (min-width: 720px) { .kind-page .contact-form { padding: 24px 28px 26px; } }
.kind-page .contact-form #form-state { margin: 0 0 14px; }
.kind-page .contact-form .field-row .note { margin: 6px 0 0; }
.kind-page .contact-form select.field, .kind-page .contact-form input.field { max-width: 560px; }

/* ======================================================================
   B3: 事業所・道具・解説・方針ページ（pages.css から統合）
   ====================================================================== */
/* 事業所・料金の計算・主治医へのメモ・解説・このサイトについてほか のページ（デザイン B3「文字を減らし、見る場所を決める」）
   base.html が style.css の直後に読む（style.css の B2 の指定を、同じか詳細度の高いセレクタで上書きする）。
   - 1画面に主役は1つ（事業所＝名前と電話・料金＝入力→金額・メモ＝記入欄・解説＝H1と短い結論）。濃い緑青の塗りは事業所ページの電話だけ
   - 段差: H1 ＞ 電話の番号・金額 ＞ H2 ＞ 本文 16px ＞ 補足 14px（--ink-2・コントラスト 4.5 以上）
   - 節は枠で囲まず余白で区切る（枠は1画面に1つまで）。畳む所は <details>（.pg-more・.pg-fold・.pg-tip）
   - 守ること: 押せるものは 44px 以上・390px で横にはみ出さない・自前フォント（style.css の @font-face）
   - 面・枠・余白・並べ方は @media screen に書く（印刷は style.css・print.css のまま。最後の @media print は畳んだ中身を印刷に出す分だけ） */

/* =====================================================================
   畳む部品（3種類）
   .pg-more: 1行の「開く」リンク（事業所ページの「正式名と出典」）
   .pg-fold: 見出し（h2）ごと畳む節（料金の計算の「例」「計算のしかた」「根拠と出典」）
   .pg-tip : 入力の近くの小さな補足（「割合の目安」「内訳」）
   ===================================================================== */
.pg-more > summary, .pg-fold > summary, .pg-tip > summary { list-style: none; cursor: pointer; }
.pg-more > summary::-webkit-details-marker, .pg-fold > summary::-webkit-details-marker, .pg-tip > summary::-webkit-details-marker { display: none; }
/* 開閉の印（下向き → 上向き）。文字の色を引き継ぐ */
.pg-more > summary::after, .pg-fold > summary::after, .pg-tip > summary::after {
  content: ""; flex: none; width: 8px; height: 8px; margin: -4px 4px 0 2px;
  border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg);
}
.pg-more[open] > summary::after, .pg-fold[open] > summary::after, .pg-tip[open] > summary::after { margin-top: 5px; transform: rotate(-135deg); }

/* .pg-more の開閉は枠のボタン（summary に .btn。1ファイル版は style.css だけを入れるので、44px は .btn で確保する） */
.pg-more > summary.btn { gap: 8px; padding: 6px 14px 6px 16px; font-size: 15px; }
.pg-tip > summary {
  display: inline-flex; align-items: center; gap: 6px; min-height: 44px; min-width: 44px; padding: 0 2px;
  color: var(--teal-700); font-size: 15px; font-weight: 700; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em;
}
.pg-tip > summary:hover { color: var(--teal-900); text-decoration-thickness: 2px; }
.pg-more-body { padding: 4px 0 8px; font-size: 15px; line-height: 1.75; }
.pg-more-body > :last-child { margin-bottom: 0; }
.pg-h3 { margin: 16px 0 6px; font-size: 17px; }
.pg-more-body > .pg-h3:first-child { margin-top: 4px; }

.pg-folds { margin: 40px 0 0; border-top: 1px solid var(--line); }
.pg-fold { border-bottom: 1px solid var(--line); }
.pg-fold > summary { display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 6px 0; color: var(--teal-700); }
.pg-fold > summary h2 { flex: 1 1 auto; min-width: 0; margin: 0; font-size: 19px; color: var(--teal-900); }
.pg-fold > summary:hover h2 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em; }
.pg-fold-body { padding: 0 0 18px; font-size: 15px; line-height: 1.75; }
.pg-fold-body > :last-child { margin-bottom: 0; }
.pg-fold-body ul, .pg-fold-body ol { padding-left: 1.3em; }
.pg-fold-body li { margin-bottom: .45em; }
@media (min-width: 720px) { .pg-fold > summary h2 { font-size: 20px; } }

/* =====================================================================
   事業所ページ — 見る順: ①名前 → ②電話 → ③札 → ④連絡先
   ===================================================================== */
@media screen {
  .page-station .station { max-width: 760px; }

  /* ① 名前と町名 */
  .page-station .station > h1 { margin: 16px 0 6px; font-size: 30px; line-height: 1.36; letter-spacing: .03em; }
  @media (max-width: 379px) { .page-station .station > h1 { font-size: 27px; } }
  @media (min-width: 720px) { .page-station .station > h1 { margin-top: 20px; font-size: 38px; line-height: 1.3; } }
  .page-station .station > .st-sub { margin: 0 0 24px; font-size: 16px; line-height: 1.7; color: var(--ink-2); }
  .page-station .station > .flag-suspended { margin: 12px 0 0; }

  /* ② 電話（このページの主役。濃い面はここだけ） */
  .page-station .station > .st-call { margin: 0 0 32px; }
  .page-station .btn-call {
    display: flex; width: 100%; justify-content: flex-start; gap: 16px;
    min-height: 88px; padding: 10px 22px 10px 20px; border-radius: var(--r-lg);
    text-align: left; box-shadow: var(--shadow-1);
  }
  .page-station .btn-call:focus-visible { box-shadow: 0 0 0 7px rgba(236, 169, 59, .38); }
  .page-station .btn-call .ico { width: 28px; height: 28px; }
  .page-station .call-text { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
  .page-station .call-k { font-size: 15px; letter-spacing: .1em; line-height: 1.3; }
  .page-station .call-num { font-size: 28px; letter-spacing: .04em; line-height: 1.2; font-variant-numeric: tabular-nums; }
  @media (min-width: 600px) {
    .page-station .btn-call { display: inline-flex; width: auto; min-width: 360px; }
    .page-station .call-num { font-size: 30px; }
  }
  .page-station .st-call-none { padding: 12px 16px; background: var(--paper-2); border-radius: var(--r-md); color: var(--ink); font-weight: 700; }

  /* ③ 札（1行に1つの縦の並び。広い画面は横に流す）と注記1行 */
  .page-station .station > .badges-lg { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; margin: 0; }
  .page-station .station > .badges-lg .badge { align-items: center; gap: 8px; min-height: 44px; padding: 8px 16px 8px 12px; font-size: 17px; line-height: 1.5; }
  .page-station .station > .badges-lg .badge .ico-sm { width: 20px; height: 20px; margin-top: 0; }
  @media (min-width: 720px) { .page-station .station > .badges-lg { flex-direction: row; flex-wrap: wrap; } }
  .page-station .station > .badge-note { margin: 12px 0 0; padding: 0; background: none; border: 0; border-radius: 0; font-size: 14px; line-height: 1.7; color: var(--ink-2); }

  /* 節: 枠で囲まず、余白で区切る。札のまとまりの後は大きくあける（ここまでが1画面目） */
  .page-station .station > .block { margin: 56px 0 0; padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; }
  .page-station .station > .block:first-of-type { margin-top: 112px; }
  @media (min-width: 720px) {
    .page-station .station > .block { margin-top: 64px; padding: 0; }
    .page-station .station > .block:first-of-type { margin-top: 88px; }
  }
  .page-station .station > .block > h2 { margin: 0 0 12px; }
  .page-station .station .note { margin: 8px 0 0; font-size: 14px; line-height: 1.7; color: var(--ink-2); }

  /* ④ 連絡先・HPの事実: 項目名（小さく薄く）と値。罫線なし */
  .page-station .station > .block .st-kv { margin: 0; border: 0; }
  .page-station .station > .block .st-kv > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; padding: 7px 0; border: 0; }
  .page-station .station > .block .st-kv dt { font-size: 14px; font-weight: 400; line-height: 1.6; color: var(--ink-2); }
  .page-station .station > .block .st-kv dd { margin: 0; font-size: 16px; line-height: 1.75; }
  /* 連絡先は項目名が短いので、狭い画面でも横に並べる */
  .page-station .station > .block .st-contact > div { grid-template-columns: 3.4em minmax(0, 1fr); column-gap: 12px; align-items: baseline; padding: 4px 0; }
  .page-station .station > .block .st-contact dt { line-height: 1.75; }
  @media (min-width: 600px) {
    .page-station .station > .block .st-kv:not(.st-contact) > div { grid-template-columns: 10em minmax(0, 1fr); column-gap: 16px; align-items: baseline; }
    .page-station .station > .block .st-kv:not(.st-contact) dt { line-height: 1.75; }
  }
  .page-station .tel-link {
    display: inline-flex; align-items: center; min-height: 44px;
    font-size: 18px; font-weight: 700; letter-spacing: .04em; font-variant-numeric: tabular-nums;
  }
  .page-station .st-contact dd:has(> .tel-link) { margin: -8px 0; }   /* 44px のリンクで行が間延びしないように */
  .page-station .dd-action { display: block; margin: 6px 0 4px; }
  .page-station .dd-action .btn { gap: 6px; padding: 4px 14px; font-size: 15px; }
  .page-station .st-kv .url { font-size: 15px; }

  /* 届出と指定: 2列の短い表（項目は小さく薄く・値の「あり」を濃く） */
  .page-station .st-table { width: 100%; margin: 0; border-collapse: collapse; }
  .page-station .st-table tr { display: table-row; padding: 0; border: 0; }
  .page-station .st-table th, .page-station .st-table td { display: table-cell; padding: 8px 0; border: 0; border-bottom: 1px solid var(--line); vertical-align: baseline; line-height: 1.6; }
  .page-station .st-table tr:last-child th, .page-station .st-table tr:last-child td { border-bottom: 0; }
  .page-station .st-table th { width: 8.4em; padding-right: 12px; font-size: 15px; font-weight: 400; color: var(--ink-2); }
  .page-station .st-table td { font-size: 16px; font-variant-numeric: tabular-nums; }
  @media (min-width: 600px) { .page-station .st-table th { width: 11em; } }

  /* HPに書かれていること */
  .page-station .station .src-label { display: block; margin: -4px 0 6px; padding: 0; background: none; border-radius: 0; font-size: 14px; font-weight: 400; color: var(--ink-2); }

  /* 事業所の申告: 1行 */
  .page-station .station > .st-dec { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 14px; }
  .page-station .station > .st-dec > h2 { margin: 0; font-size: 18px; }
  @media (min-width: 720px) { .page-station .station > .st-dec > h2 { font-size: 19px; } }
  .page-station .st-dec-v { margin: 0; color: var(--ink-2); }
  .page-station .st-dec-link { flex-basis: 100%; margin: 0; }
  .page-station .st-dec-link a, .page-station .st-links a { display: inline-flex; align-items: center; min-height: 44px; }

  /* 近くの5件: 名称（明朝）→ 町名・距離 → 札（横に流す）。罫線なし・間をあける */
  .page-station .near5 { display: grid; gap: 18px; margin: 0; padding: 0; list-style: none; }
  .page-station .near5 > li { margin: 0; padding: 0; background: none; border: 0; border-radius: 0; }
  .page-station .near5-name { display: flex; align-items: center; min-height: 44px; margin: 0; font-family: var(--f-mincho); font-size: 18px; font-weight: 700; line-height: 1.45; letter-spacing: .03em; font-feature-settings: "palt" 1; color: var(--teal-900); }
  .page-station .near5-meta { margin: 0; font-size: 14px; line-height: 1.6; color: var(--ink-2); }
  .page-station .near5-km { font-weight: 700; color: var(--teal-900); white-space: nowrap; }
  .page-station .near5 .badges-sm { display: flex; flex-wrap: wrap; gap: 0 14px; margin: 4px 0 0; }
  .page-station .near5 .badges-sm .badge { padding: 0; background: none; border: 0; border-radius: 0; font-size: 15px; line-height: 1.6; }
  @media (min-width: 720px) {
    .page-station .near5 { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 40px; row-gap: 22px; }
    .page-station .near5 > li:nth-child(2) { border-top: 0; }
  }

  /* 関連: リンク3つ */
  .page-station .st-links { margin: 0; }
  .page-station .st-links li { margin: 0; }

  /* 出典と時点: 1行 ＋ 畳んだ「正式名と出典」 */
  .page-station .st-src-line { margin: 0; font-size: 14px; line-height: 1.75; color: var(--ink-2); }
  .page-station .st-src .pg-more { margin-top: 10px; }
  .page-station .st-src .pg-more[open] > summary { margin-bottom: 8px; }
  .page-station .st-formal { margin: 0 0 10px; }
  .page-station .st-formal > div { display: grid; grid-template-columns: 7.4em minmax(0, 1fr); gap: 0 12px; padding: 5px 0; border-bottom: 1px solid var(--line); }
  .page-station .st-formal dt { color: var(--ink-2); }
  .page-station .st-formal dd { margin: 0; }
  .page-station .pg-notes { margin: 0 0 6px; padding-left: 1.2em; }
  .page-station .pg-notes li { margin-bottom: .35em; }
  .page-station .st-src .src-list { margin: 0 0 8px; padding-left: 1.2em; font-size: 15px; }
  .page-station .st-src .src-list li { margin-bottom: .4em; }
  .page-station .st-src .note { margin-top: 4px; }
}

/* =====================================================================
   料金の計算 — 見る順: ①入力 → ②結果の金額（いちばん大きな文字。入力の間も画面の下に見える）
   ===================================================================== */
.page-tool .calc-lead { margin: 0 0 22px; font-size: 14px; line-height: 1.7; color: var(--ink-2); }
@media screen {
  .page-tool .doc { max-width: 720px; }
  .page-tool .doc > h1 { margin: 8px 0 4px; font-size: 23px; line-height: 1.45; text-wrap: balance; }   /* 道具の H1 は名札。主役（入力と金額）より控えめに */
  @media (min-width: 720px) { .page-tool .doc > h1 { font-size: 28px; } }
  .page-tool .calc { margin: 0; padding: 22px 16px 0; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
  @media (min-width: 720px) { .page-tool .calc { padding: 24px 28px 0; } }
  .page-tool .calc .field-row { margin: 0 0 34px; }
  .page-tool .calc .field-row.calc-rate { margin-bottom: 56px; }   /* 選ぶ（丸）と、受給者証・助成（一覧から選ぶ）の間は広く */
  .page-tool .calc .field-row > legend, .page-tool .calc .field-row > label { min-height: 0; margin: 0 0 10px; font-size: 16px; line-height: 1.5; color: var(--teal-900); }
  .page-tool .calc .field-row > label { display: flex; align-items: flex-end; min-height: 44px; margin-bottom: 8px; }   /* 押せる大きさ 44px（ラベルも入力を選べる） */
  .page-tool .calc .field-row .note { margin: 6px 0 0; font-size: 14px; line-height: 1.6; color: var(--ink-2); }
  .page-tool .calc select.field { max-width: 560px; }

  /* 選択肢: 同じ幅で1行に（チェックの丸は残す＝色だけに頼らない） */
  .page-tool .chips.seg { flex-wrap: nowrap; gap: 8px; }
  .page-tool .chips.seg > .chip { flex: 1 1 0; min-width: 0; justify-content: center; min-height: 52px; padding: 6px 10px 6px 8px; font-size: 16px; white-space: nowrap; }
  .page-tool .chips > .chip:not(.chip-radio) { min-height: 52px; font-size: 16px; }
  @media (min-width: 720px) { .page-tool .chips.seg > .chip { flex: 0 1 150px; } }

  /* 割合の目安（入力のすぐ下の小さな補足） */
  .page-tool .calc .pg-tip { margin: 4px 0 0; }
  .page-tool .calc .pg-tip ul.note { margin: 2px 0 0; padding-left: 1.3em; font-size: 14px; }
  .page-tool .calc .pg-tip ul.note li { margin-bottom: 2px; }

  /* 金額の行: form の直下で sticky（入力が画面に入っている間は画面の下にとどまる）。下の .calc-out と1枚の面に見える */
  .page-tool .calc-head {
    position: sticky; bottom: 0; z-index: 5;
    display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0 12px;
    margin: 30px -16px 0; padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
    background: var(--teal-100); border-top: 1px solid var(--teal-200);
    box-shadow: 0 -10px 24px -18px rgba(23, 68, 63, .55);
  }
  @media (min-width: 720px) { .page-tool .calc-head { margin: 34px -28px 0; padding: 12px 28px calc(12px + env(safe-area-inset-bottom, 0px)); } }
  .page-tool .calc-head .calc-label { margin: 0; font-size: 15px; font-weight: 700; line-height: 1.5; color: var(--teal-900); }
  .page-tool .calc-head .calc-total { margin: 0 0 0 auto; font-size: 42px; line-height: 1.15; letter-spacing: .02em; color: var(--teal-900); font-variant-numeric: tabular-nums; }
  @media (min-width: 720px) { .page-tool .calc-head .calc-total { font-size: 48px; } }

  .page-tool .calc-out { margin: 0 -16px; padding: 10px 16px 16px; background: var(--teal-50); border: 0; border-radius: 0 0 var(--r-lg) var(--r-lg); }
  @media (min-width: 720px) { .page-tool .calc-out { margin: 0 -28px; padding: 12px 28px 20px; } }
  .page-tool .calc-sum { margin: 0 0 4px; font-size: 15px; line-height: 1.7; color: var(--ink); }
  .page-tool .calc-out .pg-tip { margin: 0 0 4px; }
  .page-tool .calc-table { margin: 4px 0 10px; font-size: 15px; line-height: 1.6; background: var(--card); border: 1px solid var(--teal-100); border-radius: var(--r-sm); border-collapse: separate; border-spacing: 0; overflow: hidden; }
  .page-tool .calc-table th, .page-tool .calc-table td { padding: 8px 12px; border-bottom: 1px solid var(--line); }
  .page-tool .calc-table thead th { background: var(--teal-50); color: var(--teal-900); font-weight: 700; border-bottom-color: var(--teal-100); }
  .page-tool .calc-table tbody th { font-weight: 400; }
  .page-tool .calc-table td:last-child, .page-tool .calc-table th:last-child { text-align: right; white-space: nowrap; }
  .page-tool .calc-table tbody tr:last-child th, .page-tool .calc-table tbody tr:last-child td { border-bottom: 0; border-top: 2px solid var(--teal-200); font-weight: 700; color: var(--teal-900); }
  .page-tool .calc-notes { margin: 6px 0 0; padding-left: 1.3em; font-size: 14px; line-height: 1.7; color: var(--ink-2); }
  .page-tool .calc-notes li { margin-bottom: 4px; }
  .page-tool .calc-notes:empty { display: none; }

  /* 畳んだ「例」の表（狭い画面は1件ずつ） */
  .page-tool .pg-fold-body .stack-table { margin: 8px 0 10px; }
}

/* =====================================================================
   主治医へのメモ — 見る順: ①記入欄 → ②印刷ボタン（印刷は print.css の .page-memo で A4 1枚）
   ===================================================================== */
@media screen {
  .page-memo .sheet { margin: 12px auto 20px; padding: 22px 16px 14px; box-shadow: var(--shadow-1); }
  @media (min-width: 720px) { .page-memo .sheet { padding: 32px 36px 18px; } }
  .page-memo .sheet h1 { margin: 0 0 4px; }
  .page-memo .sheet-sub { margin: 0 0 18px; font-size: 15px; }
  .page-memo .box { margin-bottom: 14px; padding: 10px 14px 6px; border: 1.5px solid var(--line-strong); background: var(--card); }
  .page-memo .box h2 { margin: 0 0 2px; font-size: 18px; color: var(--teal-900); }
  .page-memo .lines { height: 7.2rem; }   /* 画面では書く行を4本（印刷は print.css の高さ） */
  .page-memo .box .hint { margin: 0 0 4px; font-size: 14px; color: var(--ink-2); }
  .page-memo .ask { margin: 16px 0 10px; padding: 12px 16px; border: 1px solid var(--teal-100); }
  .page-memo .ask-h { margin: 0 0 4px; font-size: 15px; }
  .page-memo .sheet-foot { margin: 0; font-size: 14px; text-align: center; }
  .page-memo .memo-intro { max-width: 720px; margin: 0 auto; justify-content: center; gap: 8px 16px; }
  .page-memo .memo-intro .note { margin: 0; font-size: 14px; color: var(--ink-2); }
  .page-memo .memo-after { max-width: 720px; margin: 36px auto 0; }
  .page-memo .memo-after h2 { font-size: 19px; }
}

/* =====================================================================
   解説 — 見る順: ① H1 → ② 短い結論（.guide-summary）→ ③ 本文
   ===================================================================== */
.guide-summary { margin: 4px 0 14px; padding: 2px 0 2px 16px; border-left: 4px solid var(--teal-600); font-size: 18px; line-height: 1.8; color: var(--ink); word-break: auto-phrase; }   /* 文節で折り返す（対応するブラウザだけ） */
@media (min-width: 720px) { .guide-summary { font-size: 19px; } }
@media screen {
  .page-guide .guide > h1 { margin: 6px 0 14px; font-size: 26px; line-height: 1.45; }
  @media (min-width: 720px) { .page-guide .guide > h1 { font-size: 30px; line-height: 1.45; } }
  @media (min-width: 1100px) { .page-guide .guide > h1 { font-size: 34px; } }
  /* 下書きの札・更新日: 小さく（枠なし） */
  .kind-guide .guide > .draft-flag { display: flex; align-items: flex-start; gap: 6px; margin: 6px 0 6px; padding: 0; background: none; border: 0; border-radius: 0; font-size: 14px; font-weight: 700; line-height: 1.6; color: var(--warn-ink); }
  .kind-guide .guide > .draft-flag .ico-sm { width: 16px; height: 16px; margin-top: 3px; }
  .page-guide .guide-meta { margin: 0 0 32px; font-size: 14px; color: var(--ink-2); }
  .kind-guide .guide > .notice { padding: 10px 14px 10px 42px; font-size: 15px; }
  .kind-guide .guide > .notice > .ico-sm { left: 14px; top: 13px; }

  /* 目次（解説と道具）: 短い題名だけのカード */
  .kind-guide .gi-lead { margin: 0 0 8px; font-size: 14px; line-height: 1.7; color: var(--ink-2); }
  .kind-guide .lc-icon-cards a { align-items: center; min-height: 60px; padding: 10px 16px; }
  .kind-guide .lc-icon-cards .lc-ico { margin-top: 0; }
  .kind-guide .lc-icon-cards .lc-title { line-height: 1.5; }
  .kind-guide .lc-icon-cards .lc-sub { font-size: 14px; }
}

/* =====================================================================
   このサイトについて・方針・出典・プライバシー・事業所の方へ・お問い合わせ
   ===================================================================== */
@media screen {
  .kind-page .doc > .lead { font-size: 16px; line-height: 1.85; }
  .kind-page .doc > .block { margin: 40px 0 0; }
  .kind-page .doc > .block:first-of-type { margin-top: 24px; }
  .kind-page .doc .note { font-size: 14px; }
  .kind-page .doc .src-text { font-size: 15px; line-height: 1.75; }
}

/* =====================================================================
   印刷: 事業所ページの「正式名と出典」は畳んだままでも中身を出す（::details-content に対応するブラウザ）。開閉の行は出さない
   ===================================================================== */
@media print {
  .page-station .pg-more > summary { display: none; }
  .page-station .pg-more::details-content { content-visibility: visible; display: contents; }
  .page-station .pg-h3 { margin: 2mm 0 1mm; font-size: 9pt; }
  .page-station .st-formal > div { display: grid; grid-template-columns: 26mm minmax(0, 1fr); padding: .4mm 0; font-size: 8pt; }
  .page-station .st-formal dd { margin: 0; }
  .page-station .pg-notes, .page-station .st-src-line { font-size: 8pt; }
  .page-tool .calc-head { position: static; }
  /* 料金の計算: 畳んだ「例」「計算のしかた」「根拠と出典」も印刷する（B2 と同じ中身） */
  .page-tool .pg-fold::details-content { content-visibility: visible; display: contents; }
  .page-tool .pg-fold > summary { display: block; min-height: 0; padding: 0; }
  .page-tool .pg-fold > summary::after { display: none; }
  .page-tool .pg-fold > summary h2 { margin: 4mm 0 1mm; font-size: 11pt; }
  .page-tool .pg-folds, .page-tool .pg-fold { border: 0; }
  .page-tool .pg-fold-body { font-size: 8.5pt; line-height: 1.45; }
}

/* ======================================================================
   B4: 事業所ページ（格子・地図・2列）（_b4_station.css から統合）
   ====================================================================== */
/* B4 作業中の分割: _b4_station（最後に style.css へ統合）
   事業所ページ（templates/station.html）— デザイン B4「しょぼくなくす」（2026/11/6・S班）
   見る順: ①名前 → ②電話（濃い塗りはこのボタンだけ）→ ③届出と指定の格子 → ④地図と連絡先 → ⑤HP・申告（1枚のカード）→ ⑥近くの5件 → 関連と出典（小さな帯）
   - 部品（格子・地図の置き場・連絡先・HPのカード・近くのカード・帯）は .station で絞る（1ファイル版の詳細＝body.page-area の中でも同じ形にするため）
   - ページの並べ方（PC 1000px 以上の2列・右の列が付いてくる）は .page-station で絞る（1ファイル版の詳細は1列のまま）
   - 格子の列数（2→4）と近くのカードの列数（1→2）は、置き場の幅で切り替える（@container。1ファイル版の狭い詳細でも崩れない）
   - 統合のとき: style.css の B2・B3 の「事業所ページ」の節（.page-station .station > … / .st-table / .st-kv / .near5 の上書きなど）はこれで置き換わる。
     ここの指定は、新しい形に当たる旧い指定より詳細度を高くしてある（style.css のどこに入れても、旧い節を消しても消さなくても同じ見た目）
   - 守ること: 本文 16px 以上（補足 14px まで・--ink-2）／コントラスト 4.5 以上／押せるものは 44px 以上／390px ではみ出さない */

/* =====================================================================
   画面
   ===================================================================== */
@media screen {
  .station { --st-gap: 32px; }

  /* ---------- ① 名前・町名と法人 ---------- */
  .station .st-head > .flag-suspended { margin: 12px 0 0; }
  .station .st-layout .st-head h1 { margin: 16px 0 6px; font-size: 30px; line-height: 1.36; letter-spacing: .03em; text-wrap: balance; }   /* 長い名前で最後の1文字だけが次の行に落ちないように */
  @media (max-width: 379px) { .station .st-layout .st-head h1 { font-size: 27px; } }
  @media (min-width: 720px) { .station .st-layout .st-head h1 { margin-top: 20px; font-size: 38px; line-height: 1.3; } }
  .station .st-head .st-sub { margin: 0 0 20px; font-size: 16px; line-height: 1.7; color: var(--ink-2); }
  .station .st-houjin { display: inline-block; max-width: 100%; }   /* 長い法人名は「・法人名」ごと次の行へ */

  /* ---------- ② 電話（ボタンの形は style.css の .page-station .btn-call）＋ 主治医へのメモ ---------- */
  .station .st-layout > .st-call { margin: 0 0 var(--st-gap); }
  .station .st-call-main, .station .st-call-none { margin: 0; }
  .station .st-memo { margin: 12px 0 0; }
  .station .st-memo .btn { gap: 6px; padding: 4px 14px; font-size: 15px; }
  .station .st-memo .ico-sm { color: var(--teal-700); }

  /* ---------- ③ 届出と指定: 7つのタイル（中身は表。th＝短い名前、td＝状態）。スマホ2列・広い置き場は4列 ---------- */
  .station .st-todoke { margin: 0; container: st-todoke / inline-size; }
  .station .st-todoke > h2 { margin: 0 0 10px; font-size: 19px; line-height: 1.45; }
  @media (min-width: 720px) { .station .st-todoke > h2 { font-size: 20px; } }
  .station .st-grid { display: block; width: 100%; margin: 0; border: 0; }
  .station .st-grid tbody { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  /* 列数は置き場の幅で: 2列（スマホ）→ 3列（PC の左の列が狭いとき）→ 4列。一番長い短い名前（重症患者の連携）が1行に入る幅を保つ */
  @container st-todoke (min-width: 520px) {
    .station .st-grid tbody { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  }
  @container st-todoke (min-width: 660px) {
    .station .st-grid tbody { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  }
  .station .st-grid tr.st-tile {
    display: flex; flex-direction: column; min-width: 0; margin: 0;
    padding: 10px 12px 11px; border: 1px solid var(--line); border-radius: var(--r-md); background: transparent;
  }
  .station .st-grid tr.st-tile.is-yes { background: var(--teal-50); border-color: var(--teal-100); }
  .station .st-grid tr.st-tile.is-na { border-style: dashed; border-color: var(--line-strong); }
  .station .st-grid th, .station .st-grid td { display: block; width: auto; margin: 0; padding: 0; border: 0; text-align: left; }
  .station .st-grid th {
    display: flex; align-items: flex-start; gap: 6px;
    font-family: var(--f-gothic); font-size: 15px; font-weight: 700; line-height: 1.5; letter-spacing: .02em; color: var(--ink);
  }
  .station .st-grid th .ico-sm { margin-top: 2px; color: var(--teal-700); }
  .station .st-grid .is-no th, .station .st-grid .is-na th { font-weight: 400; color: var(--ink-2); }
  .station .st-grid .is-no th .ico-sm, .station .st-grid .is-na th .ico-sm { color: var(--ink-2); }
  .station .st-grid td { margin-top: 2px; padding-left: 24px; font-size: 15px; line-height: 1.5; }   /* 状態は名前の文字の頭にそろえる（アイコンの幅だけ下げる） */
  .station .st-tile-v { display: block; font-weight: 700; color: var(--teal-900); }
  .station .is-no .st-tile-v { font-weight: 400; font-size: 14px; color: var(--ink-2); }   /* 「記載なし」は小さく薄く（アイコンの — と二重にしない） */
  .station .is-na .st-tile-v { font-weight: 400; color: var(--ink-2); }
  .station .st-tile-sub { display: block; font-size: 14px; line-height: 1.5; letter-spacing: 0; color: var(--ink-2); font-variant-numeric: tabular-nums; }
  .station .st-note { margin: 10px 0 0; font-size: 14px; line-height: 1.7; color: var(--ink-2); }

  /* ---------- ④ 地図と連絡先（スマホは格子の下、PC は右の列） ---------- */
  .station .st-side { margin: var(--st-gap) 0 0; }
  .station .st-map { margin: 0 0 12px; }
  .station .st-map .map-credit { margin: 0 0 6px; font-size: 14px; line-height: 1.6; color: var(--ink-2); }
  .station .st-map .map { height: 300px; min-height: 0; max-height: none; }
  .station .st-map .map-placeholder { display: grid; place-content: center; justify-items: center; text-align: center; }   /* 狭い脇でも「（国土地理院）」が横に割れないよう縦に積む */
  .station .st-contact { margin: 0; }
  .station .st-dl { margin: 0; }
  .station .st-dl > div { display: grid; grid-template-columns: 3.2em minmax(0, 1fr); column-gap: 12px; align-items: baseline; padding: 5px 0; border: 0; }
  .station .st-dl dt { font-size: 14px; font-weight: 400; line-height: 1.75; color: var(--ink-2); }
  .station .st-dl dd { margin: 0; min-width: 0; font-size: 16px; line-height: 1.75; }
  .station .st-contact .dd-action { display: block; margin: 6px 0 2px; }
  .station .st-contact .dd-action .btn { gap: 6px; padding: 4px 14px; font-size: 15px; }
  .station .st-contact .url { font-size: 15px; }

  /* ---------- ⑤ HPに書かれていること＋事業所の申告（1枚のカード） ---------- */
  .station .st-hp {
    margin: var(--st-gap) 0 0; padding: 14px 16px 4px;
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg);
  }
  @media (min-width: 720px) { .station .st-hp { padding: 18px 24px 6px; } }
  .station .st-hp > h2 { margin: 0 0 2px; font-size: 19px; line-height: 1.45; }
  @media (min-width: 720px) { .station .st-hp > h2 { font-size: 20px; } }
  .station .st-hp p.src-label { display: block; margin: 0 0 4px; padding: 0; background: none; border-radius: 0; font-size: 14px; font-weight: 400; color: var(--ink-2); }
  .station .st-facts > div { grid-template-columns: minmax(0, 1fr); padding: 4px 0; }
  .station .st-facts dt { line-height: 1.6; }
  @media (min-width: 600px) { .station .st-facts > div { grid-template-columns: 10em minmax(0, 1fr); } }
  .station .st-hp p.note { margin: 6px 0 4px; font-size: 14px; line-height: 1.7; color: var(--ink-2); }
  .station .st-hp .note a { white-space: nowrap; }   /* 「修正依頼」を行の途中で割らない */
  .station .st-hp-none { margin: 4px 0 6px; color: var(--ink-2); }
  .station .st-hp-labels { padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--line); }
  .station .st-rinen { margin: 8px 0; padding: 8px 14px; border-left: 3px solid var(--line-strong); overflow-wrap: anywhere; }
  .station .st-rinen p { margin: 0; }
  .station .st-strengths { list-style: none; padding: 0; margin: 8px 0; }
  .station .st-strengths > li { margin: 6px 0; }
  .station .st-strengths summary { min-height: 44px; padding: 10px 8px; cursor: pointer; overflow-wrap: anywhere; }
  .station .st-dec { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 6px; margin: 10px 0 0; padding: 6px 0 0; border-top: 1px solid var(--line); }
  .station .st-dec-h { margin: 0; font-family: var(--f-gothic); font-size: 15px; font-weight: 400; line-height: 1.7; letter-spacing: .02em; color: var(--ink-2); }
  .station .st-dec-h::after { content: ":"; }
  .station .st-dec .st-dec-v { margin: 0; font-weight: 700; color: var(--ink); }
  .station .st-dec-link { flex-basis: 100%; margin: 0; }
  .station .st-dec-link a { display: inline-flex; align-items: center; min-height: 44px; }

  /* ---------- ⑥ 近くの5件（地域ページのカードと同じ形。PC は2列） ---------- */
  .station .st-near { margin: 40px 0 0; container: st-near / inline-size; }
  .station .st-near > h2 { margin: 0 0 10px; font-size: 19px; line-height: 1.45; }
  @media (min-width: 720px) { .station .st-near > h2 { font-size: 20px; } }
  .station .near5.st-cards { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin: 0; padding: 0; list-style: none; }
  @container st-near (min-width: 680px) {   /* 2列でも「電話 番号」と「詳しく」が1行に入る幅から */
    .station .near5.st-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  .station .near5.st-cards > li.card {
    min-width: 0; margin: 0; padding: 10px 16px 14px;
    background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: none;
  }
  .station .near5 .card-name { margin: 0; font-size: 18px; line-height: 1.45; }
  .station .near5 .card-name a { padding: 4px 0; color: var(--teal-900); text-decoration: none; }
  .station .near5 .card-name a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
  .station .near5 .card-addr { display: flex; align-items: baseline; gap: 8px; margin: 0; color: var(--ink-2); font-size: 14px; line-height: 1.6; }
  .station .near5 .ca-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .station .near5 .card-dist { flex: none; margin: 0; padding: 0 8px; border: 1px solid var(--teal-100); border-radius: 999px; background: var(--teal-50); color: var(--teal-900); font-size: 14px; font-weight: 700; white-space: nowrap; }
  .station .near5 .badges { display: flex; flex-wrap: wrap; gap: 0 14px; margin: 4px 0 10px; }
  .station .near5 .badge { padding: 0; background: none; border: 0; border-radius: 0; font-size: 15px; line-height: 1.6; }
  .station .near5 .badge.badge-more { color: var(--ink-2); }
  .station .near5 .card-actions { display: flex; flex-wrap: wrap; gap: 8px; }
  .station .near5 .card-actions .btn { padding: 6px 14px; letter-spacing: .02em; }
  .station .near5 .card-actions .btn-tel { flex: 1 1 auto; gap: 6px; font-size: 17px; letter-spacing: .02em; }
  @media (max-width: 519px) {
    .station .near5 .card-actions .btn { padding: 6px 12px; }
    .station .near5 .card-actions .btn-tel { gap: 5px; font-size: 16px; }
    .station .near5 .card-actions .btn-tel .ico { width: 18px; height: 18px; }
  }
  .station .st-near > p { margin: 0; }

  /* ---------- 関連と出典（最後に小さく1つの帯） ---------- */
  .station .st-foot {
    display: flex; flex-wrap: wrap; align-items: center; gap: 4px 20px;
    margin: 40px 0 0; padding: 8px 0 0; border-top: 1px solid var(--line);
  }
  .station .st-rel, .station .st-src { margin: 0; }
  .station .st-links { display: flex; flex-wrap: wrap; gap: 0 20px; margin: 0; padding: 0; font-size: 15px; }
  .station .st-links li { margin: 0; }
  .station .st-links a { display: inline-flex; align-items: center; min-height: 44px; }
  .station .st-src { flex: 1 1 100%; }
  .station .st-src details.pg-more { margin: 4px 0 0; }
  .station .st-src .pg-more[open] > summary { margin-bottom: 8px; }
  .station .st-src .pg-more-body { max-width: 760px; }
  .station .st-meta { width: 100%; margin: 0 0 10px; font-size: 15px; }
  .station .st-meta th, .station .st-meta td { padding: 5px 0; border-bottom: 1px solid var(--line); line-height: 1.6; vertical-align: baseline; }
  .station .st-meta th { width: 7.4em; padding-right: 12px; font-weight: 400; color: var(--ink-2); }
  .station .st-meta td { font-variant-numeric: tabular-nums; }
}

/* ---------- PC（1000px 以上）: 2列。左＝本文、右＝地図と連絡先（スクロールしても付いてくる）。DOM の順はスマホの順のまま ----------
   2列にするのは .st-layout（関連と出典の帯はその外）。sticky は入れ物の下端で止まるので、右の列は近くの5件の終わりで止まり、帯に重ならない */
@media screen and (min-width: 1000px) {
  .page-station article.station { max-width: none; }
  .page-station .st-layout {
    --st-side: clamp(320px, 34%, 400px);
    display: grid; grid-template-columns: minmax(0, 1fr) var(--st-side); column-gap: clamp(32px, 4vw, 56px);
    grid-template-areas: "head side" "call side" "todoke side" "hp side" "near side";
    grid-template-rows: auto auto auto auto 1fr;   /* 右の列が左より高いときは、余りを最後の行（近くの5件の下）に */
  }
  .page-station .st-layout > .st-head { grid-area: head; }
  .page-station .st-layout > .st-call { grid-area: call; }
  .page-station .st-layout > .st-todoke { grid-area: todoke; }
  .page-station .st-layout > .st-hp { grid-area: hp; }
  .page-station .st-layout > .st-near { grid-area: near; }
  .page-station .st-layout > .st-side { grid-area: side; align-self: start; margin: 24px 0 0; }
  .page-station .station .st-map .map { height: 360px; }
}
/* 画面の高さが足りるときだけ、右の列を付いてこさせる（低い画面で連絡先が画面の外に残らないように） */
@media screen and (min-width: 1000px) and (min-height: 700px) {
  .page-station .st-layout > .st-side { position: sticky; top: 16px; }
}

/* =====================================================================
   印刷（A4・2ページ以内）: 地図・ボタン・申告・関連は出さない。格子は文字で（4列）。電話は番号を文字で
   print.css（あとから読む）と同じ詳細度の指定は負けるので、ここは詳細度を上げて書く
   ===================================================================== */
@media print {
  .page-station .station .st-map { display: none !important; }
  .page-station .station .st-head h1 { margin: 0 0 .5mm; font-size: 15pt; line-height: 1.3; }
  .page-station .station .st-sub { margin: 0 0 1.5mm; font-size: 9.5pt; color: #000; }
  .page-station .station .st-call { margin: 0 0 2.5mm; }
  .page-station .station .st-call-main { margin: 0; }
  .page-station .station .btn-call { font-size: 11pt; font-weight: 700; }
  .page-station .station .btn-call .call-k { display: none; }
  .page-station .station .btn-call .call-num::before { content: "電話 "; }
  .page-station .station h2 { font-size: 10.5pt; margin: 0 0 1mm; }
  /* 届出と指定: 4列の文字（あり／—）。面は出さず、ありの枠を濃く */
  .page-station .station .st-todoke { margin: 0 0 2.5mm; }
  .page-station .station .st-grid { display: block; width: 100%; }
  .page-station .station .st-grid tbody { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.2mm; }
  .page-station .station .st-grid tr.st-tile { display: block; padding: .8mm 1.6mm; border: .25mm solid #999; border-radius: 1mm; break-inside: avoid; }
  .page-station .station .st-grid tr.st-tile.is-yes { border: .35mm solid #000; }
  .page-station .station .st-grid th, .page-station .station .st-grid td { display: block; width: auto; padding: 0; border: 0; font-size: 8.5pt; line-height: 1.35; color: #000; text-align: left; }
  .page-station .station .st-grid th .ico-sm { display: inline-block; width: 1em; height: 1em; margin: 0 .6mm 0 0; vertical-align: -.12em; color: #000; }
  .page-station .station .st-grid .is-no th, .page-station .station .st-grid .is-na th { font-weight: 400; }
  .page-station .station .st-tile-v { font-weight: 700; }
  .page-station .station .is-no .st-tile-v, .page-station .station .is-na .st-tile-v { font-weight: 400; }
  .page-station .station .st-tile-sub { display: block; font-size: 7.5pt; }
  .page-station .station .st-note { margin: 1mm 0 0; font-size: 7.5pt; }
  /* 連絡先・HP */
  .page-station .station .st-side { margin: 0 0 2.5mm; }
  .page-station .station .st-dl > div { display: grid; grid-template-columns: 30mm minmax(0, 1fr); column-gap: 2mm; padding: .4mm 0; break-inside: avoid; }
  .page-station .station .st-dl dt { font-size: 8.5pt; color: #000; }
  .page-station .station .st-dl dd { margin: 0; font-size: 9pt; }
  .page-station .station .st-hp { margin: 0 0 2.5mm; padding: 0; border: 0; background: none; }
  .page-station .station .st-hp .src-label { margin: 0 0 .5mm; font-size: 8pt; font-weight: 400; }
  /* 近くの5件: 1件1行（名前・町名・距離・電話） */
  .page-station .station .st-near { margin: 0 0 2.5mm; }
  .page-station .station .near5.st-cards { display: block; margin: 0; padding: 0; }
  .page-station .station .near5 > li.card { display: block; margin: 0; padding: .6mm 0; border: 0; border-bottom: .2mm solid #999; border-radius: 0; background: none; break-inside: avoid; }
  .page-station .station .near5 .card-name { display: inline; margin: 0; font-size: 9pt; }
  .page-station .station .near5 .card-name a { padding: 0; }
  .page-station .station .near5 .card-addr { display: inline; margin: 0 0 0 2mm; font-size: 8pt; color: #000; }
  .page-station .station .near5 .card-dist { margin-left: 1.5mm; padding: 0; border: 0; background: none; font-weight: 400; color: #000; }
  .page-station .station .near5 .badges { display: none; }
  .page-station .station .near5 .card-actions { display: inline; margin-left: 2mm; }
  .page-station .station .near5 .card-actions .btn.btn-tel { display: inline; font-size: 8.5pt; font-weight: 400; }
  /* 関連と出典の帯: 出典の中身だけ（「正式名と出典」は style.css の指定で開いて出る） */
  .page-station .station .st-foot { display: block; margin: 3mm 0 0; padding: 0; border: 0; }
  .page-station .station .st-meta { width: auto; margin: 0 0 1.5mm; font-size: 8pt; }
  .page-station .station .st-meta th, .page-station .station .st-meta td { padding: .3mm 2mm .3mm 0; border: 0; }
}

/* ======================================================================
   B4: 地図の二本指・住所の候補・料金の※（_b4_map.css から統合）
   ====================================================================== */
/* B4 作業中の分割: _b4_map（最後に style.css へ統合）— 地図の二本指・住所で探す・料金の※（M班）
   統合のとき: 1〜2 は「地図」の節（.map の近く）、3 は「料金の計算」の節（.page-tool .calc-head の近く）へ。
   1 は leaflet.css（site.js が <head> の先頭側に差し込む）より強い必要がある（属性＋クラス4つで勝たせている） */

/* ---------- 1. 地図のタッチ: 一本指はページのスクロール、二本指は地図（拡大・縮小と移動） ----------
   Leaflet は dragging と touchZoom が両方あると touch-action: none にする（一本指で地図が動き、ページが動かない）。
   タッチの扱いはタッチが始まった時点の CSS で決まるので、site.js が dragging を外す前から pan-x pan-y にしておく。
   ページの拡大（pinch-zoom）は入れない＝二本指は Leaflet の touchZoom が受ける */
[data-map].leaflet-container.leaflet-touch-zoom,
[data-map].leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { touch-action: pan-x pan-y; }

/* ---------- 2. 「2本指で動かせます」（一本指で地図をなぞったときだけ・約1.5秒。site.js の coopGestures） ---------- */
.map-hint { position: absolute; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 16px; pointer-events: none; opacity: 0; transition: opacity .2s ease; }
.map-hint.is-on { opacity: 1; }
.map-hint > span { display: inline-block; padding: 9px 18px; background: var(--ink); color: var(--card); border-radius: 999px; font-size: 16px; font-weight: 700; line-height: 1.5; letter-spacing: .04em; box-shadow: 0 6px 18px -6px rgba(0, 0, 0, .45); }
@media (prefers-reduced-motion: reduce) { .map-hint { transition: none; } }
@media print { .map-hint { display: none; } }

/* ---------- 3. 料金の計算: 金額のすぐ下の※の1行と、画面下の金額の帯の「※目安」（帯の高さは変えない） ---------- */
.page-tool .calc-aim { margin: 0 0 6px; font-size: 14px; line-height: 1.6; color: var(--ink-2); }
.page-tool .calc-head .calc-aim-tag { flex: none; font-size: 14px; font-weight: 700; line-height: 1.5; color: var(--teal-900); white-space: nowrap; }
@media print { .page-tool .calc-aim { font-size: 8pt; margin: 0 0 1mm; } }

/* ======================================================================
   B4: 主治医へのメモ（様式17に沿う）（_b4_memo.css から統合）
   ====================================================================== */
/* B4 作業中の分割: _b4_memo（最後に style.css へ統合）
   主治医へのメモ（B4 §5）— 画面は記入用紙のカード、印刷（下の @media print）は A4 1枚の「精神科訪問看護についてのご相談」。
   - 見る順（B3）: ①記入欄 → ②印刷ボタン。画面の文字は少なく、紙は正式な文書らしく（欄と罫線をはっきり）
   - 罫線は border で引く（「背景のグラフィック」を切っても消えない）。欄名の地の灰と自由欄の横罫は背景なので print-color-adjust: exact
   - 印刷では入力欄の枠を消して値だけを出す。プレースホルダは出さない
   - 統合のとき: style.css の旧 .sheet .box .lines .ask .ask-h .ask-note .sheet-sub .sheet-foot .memo-intro と、print.css の .page-memo の
     .sheet .box .lines .ask .memo-intro の指定は使わなくなる（.memo-after は残す）
   - 守ること: 本文 16px（補足 14px まで）／コントラスト 4.5 以上／押せるもの・label は 44px 以上／390px ではみ出さない */

/* ---------- 画面 ---------- */
.page-memo .mm-intro { max-width: 760px; margin: 4px auto 14px; }
.page-memo .mm-intro h1 { margin: 0 0 2px; }
.page-memo .mm-lead { margin: 0; font-size: 15px; line-height: 1.7; color: var(--ink-2); }
.page-memo .mm-filled { margin: 10px 0 0; padding: 8px 14px; background: var(--teal-50); border-left: 3px solid var(--teal-600); border-radius: 0 var(--r-sm) var(--r-sm) 0; font-size: 15px; line-height: 1.6; color: var(--ink); }

.page-memo .mm-paper { max-width: 760px; margin: 0 auto 20px; padding: 18px 14px 14px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
@media (min-width: 720px) { .page-memo .mm-paper { padding: 30px 40px 22px; } }

/* 宛名と日付 */
.page-memo .mm-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 24px; }
.page-memo .mm-to { display: flex; flex: 1 1 220px; align-items: center; gap: 8px; max-width: 380px; margin: 0; }
.page-memo .mm-to .mm-in { flex: 1 1 auto; min-width: 0; }
.page-memo .mm-sama { flex: none; font-family: var(--f-mincho); font-weight: 700; font-size: 18px; color: var(--teal-900); }
.page-memo .mm-date { margin: 0 0 0 auto; }
.page-memo .mm-ymd { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.page-memo .mm-ymd .mm-in, .page-memo .mm-unit .mm-in { width: 4.8em; padding-left: 6px; padding-right: 6px; text-align: center; }
.page-memo .mm-ymd .mm-md, .page-memo .mm-unit .mm-md { width: 3.4em; }

/* 題と趣旨 */
.page-memo .mm-title { margin: 22px 0 6px; font-size: 22px; line-height: 1.5; text-align: center; color: var(--teal-900); }
@media (min-width: 720px) { .page-memo .mm-title { margin-top: 26px; font-size: 26px; } }
.page-memo .mm-purpose { margin: 0 0 20px; font-size: 16px; line-height: 1.8; }

/* 区切り（見出し＋欄） */
.page-memo .mm-sec { margin: 0 0 20px; }
.page-memo .mm-h { margin: 0 0 8px; font-size: 18px; line-height: 1.5; color: var(--teal-900); }
.page-memo .mm-h-sub { font-family: var(--f-gothic); font-weight: 400; font-size: 14px; letter-spacing: .02em; color: var(--ink-2); }

/* 欄（label で包んで、欄名の文字を押しても入力に移る） */
.page-memo .mm-grid { display: grid; gap: 10px 16px; }
@media (min-width: 560px) {
  .page-memo .mm-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .page-memo .mm-span { grid-column: 1 / -1; }
  .page-memo .mm-grid-contact { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); }
}
@media (min-width: 720px) { .page-memo .mm-grid-wish { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1fr); } }
.page-memo .mm-f { display: flex; flex-direction: column; gap: 2px; min-width: 0; margin: 0; }
.page-memo .mm-l { font-size: 15px; font-weight: 700; line-height: 1.6; color: var(--ink); word-break: keep-all; }   /* 長い欄名は <wbr> の所で折り返す */
.page-memo .mm-in { display: block; width: 100%; min-height: 48px; margin: 0; padding: 10px 12px; font-size: 16px; line-height: 1.6; color: var(--ink); background: var(--card); border: 1.5px solid var(--teal-600); border-radius: var(--r-sm); }
.page-memo .mm-in::placeholder { color: #66716D; opacity: 1; }   /* カードの上 4.94 */
.page-memo textarea.mm-in { resize: none; overflow: hidden; field-sizing: content; }   /* 書いた分だけ高く（field-sizing の無いブラウザは memo.js） */
.page-memo textarea.mm-ruled { resize: vertical; }
.page-memo .mm-unit { display: flex; align-items: center; gap: 6px; }

/* チェック欄・ラジオ（.chip と同じ作り。四角の中の印は border で描くので印刷でも消えない） */
.page-memo .mm-checks { display: grid; gap: 8px 12px; }
@media (min-width: 560px) { .page-memo .mm-checks { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.page-memo .mm-opt { position: relative; display: flex; align-items: center; gap: 10px; min-height: 48px; margin: 0; padding: 6px 12px 6px 10px; border: 1.5px solid var(--line-strong); border-radius: var(--r-md); background: var(--card); color: var(--ink); line-height: 1.5; cursor: pointer; }
.page-memo .mm-opt:hover { border-color: var(--teal-600); }
.page-memo .mm-opt input { position: absolute; top: -2px; left: -2px; width: calc(100% + 4px); height: calc(100% + 4px); margin: 0; opacity: 0; cursor: pointer; -webkit-appearance: none; appearance: none; }
.page-memo .mm-box { position: relative; flex: none; width: 22px; height: 22px; border: 2px solid var(--teal-700); border-radius: 5px; background: var(--card); }
.page-memo .mm-round { border-radius: 50%; }
.page-memo .mm-opt input:checked + .mm-box::after { content: ""; position: absolute; left: 5px; top: 0; width: 7px; height: 13px; border: solid var(--teal-900); border-width: 0 3px 3px 0; transform: rotate(45deg); }
.page-memo .mm-opt input[type="radio"]:checked + .mm-box::after { left: 3px; top: 3px; width: 0; height: 0; border-width: 6px; border-radius: 50%; transform: none; }
.page-memo .mm-opt:has(input:checked) { background: var(--teal-50); border-color: var(--teal-700); }
.page-memo .mm-opt:has(input:focus-visible) { outline: 3px solid var(--teal-900); outline-offset: 2px; box-shadow: 0 0 0 7px rgba(236, 169, 59, .38); }
.page-memo .mm-other { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
@media (min-width: 560px) { .page-memo .mm-other { grid-column: 1 / -1; flex-wrap: nowrap; } }
.page-memo .mm-other .mm-opt { flex: none; }
.page-memo .mm-other .mm-in { flex: 1 1 160px; width: auto; min-width: 0; }
.page-memo .mm-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.page-memo .mm-opts .mm-opt { gap: 8px; padding: 6px 12px 6px 8px; }

/* 自由欄（横罫。行の高さと罫の間隔をそろえる） */
.page-memo .mm-ruled { --rl: 32px; min-height: calc(var(--rl) * 4 + 3px); padding: 0 12px; line-height: var(--rl);
  background-color: var(--card);
  background-image: repeating-linear-gradient(to bottom, transparent 0, transparent calc(var(--rl) - 1px), var(--line-strong) calc(var(--rl) - 1px), var(--line-strong) var(--rl));
  background-attachment: local; }

/* 紙の末尾の「すすめるものではありません」は印刷だけ（画面ではフッタの「評価・おすすめはせず」と同じことになるので出さない: B3 §3-2） */
.page-memo .mm-foot { display: none; }

/* 印刷ボタン（このページの主役のボタン） */
.page-memo .mm-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 16px; max-width: 760px; margin: 0 auto; }
.page-memo .mm-print { min-width: 220px; min-height: 52px; }
.page-memo .mm-note { margin: 0; font-size: 14px; color: var(--ink-2); }
.page-memo .mm-note-alt { flex-basis: 100%; font-size: 15px; }
@media screen { .page-memo .memo-after { max-width: 760px; } }

/* ---------- 印刷（A4 縦・1枚。余白は print.css の @page） ---------- */
/* 値の出し方: memo.js が各欄のあとに写し <span class="mm-pv">（欄の class を引き継ぐ）を置き、フォームに .mm-js を付ける。
   印刷では欄を隠して写しを出す（<input> は長い値を折り返せず、端が切れるため）。JS なしは欄そのものを印刷する。
   そのため印刷の指定は、欄（.mm-in）と写し（.mm-pv）の両方に当てる */
.page-memo .mm-pv { display: none; }
@media print {
  .page-memo .mm-intro, .page-memo .mm-actions { display: none !important; }
  .page-memo .mm-paper {
    max-width: none; margin: 0; padding: 0; border: 0; border-radius: 0; background: none;
    font-size: 10.5pt; line-height: 1.45; color: #000;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  .page-memo .mm-paper * { color: #000; }
  .page-memo .mm-js .mm-in { display: none !important; }
  .page-memo .mm-js .mm-pv { display: block; }
  .page-memo .mm-in, .page-memo .mm-pv {
    -webkit-appearance: none; appearance: none;
    width: 100%; min-height: 0; height: auto; margin: 0; padding: 0 1.6mm;
    border: 0; border-radius: 0; background: none; outline: 0;
    font-size: 11pt; line-height: 1.45; resize: none; overflow: hidden; caret-color: transparent;
  }
  .page-memo .mm-pv { min-height: 1.45em; white-space: pre-wrap; overflow-wrap: anywhere; overflow: visible; }
  .page-memo textarea.mm-in { height: auto !important; resize: none; }   /* memo.js が画面で付けた高さを使わない・つまみを出さない */
  .page-memo .mm-in::placeholder { color: transparent; }

  /* 宛名（左）と日付（右） */
  .page-memo .mm-top { flex-wrap: nowrap; align-items: flex-end; gap: 6mm; }
  .page-memo .mm-to { flex: none; max-width: none; gap: 1.5mm; align-items: flex-end; }
  .page-memo .mm-to .mm-in, .page-memo .mm-to .mm-pv { width: 64mm; border-bottom: .3mm solid #000; font-size: 12pt; }
  .page-memo .mm-sama { font-size: 12pt; }
  .page-memo .mm-ymd { flex-wrap: nowrap; align-items: flex-end; gap: .8mm; }
  .page-memo .mm-ymd .mm-y, .page-memo .mm-ymd .mm-md, .page-memo .mm-unit .mm-md { flex: none; width: 12mm; padding: 0; text-align: center; white-space: nowrap; }
  .page-memo .mm-ymd .mm-md, .page-memo .mm-unit .mm-md { width: 8mm; }
  .page-memo .mm-date .mm-y, .page-memo .mm-date .mm-md { border-bottom: .3mm solid #000; }

  /* 題と趣旨 */
  .page-memo .mm-title { margin: 5.5mm 0 2.6mm; font-size: 17pt; line-height: 1.3; letter-spacing: .14em; }
  .page-memo .mm-purpose { margin: 0 0 4.4mm; font-size: 10.5pt; line-height: 1.5; }

  /* 区切り */
  .page-memo .mm-sec { margin: 0 0 3.8mm; break-inside: avoid; page-break-inside: avoid; }
  .page-memo .mm-h { margin: 0 0 1.2mm; padding: 0 0 0 2mm; border-left: 1.2mm solid #000; font-size: 10.5pt; line-height: 1.35; letter-spacing: .06em; }
  .page-memo .mm-h-sub { font-size: 9pt; }

  /* 欄は表の形: 外枠の上・左＋各欄の右・下で罫線を引く。欄名の列は地を淡い灰に */
  .page-memo .mm-grid { --lw: 22mm; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0; border-top: .3mm solid #000; border-left: .3mm solid #000; }
  .page-memo .mm-span { grid-column: 1 / -1; }
  .page-memo .mm-grid-wish { --lw: 19mm; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr); }
  .page-memo .mm-grid-jr { --lw: 20mm; grid-template-columns: minmax(0, 78fr) minmax(0, 110fr); }
  .page-memo .mm-grid-jr .mm-f:nth-child(2) { --lw: 36mm; }
  .page-memo .mm-grid-contact { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); }
  .page-memo .mm-grid-contact .mm-f:nth-child(2n) { --lw: 12mm; }
  .page-memo .mm-f { display: grid; grid-template-columns: var(--lw) minmax(0, 1fr); align-items: center; gap: 0; min-height: 8.2mm; border-right: .3mm solid #000; border-bottom: .3mm solid #000; }
  .page-memo .mm-f > .mm-l { align-self: stretch; display: flex; align-items: center; padding: .5mm 1.8mm; background: #ececec; border-right: .3mm solid #000; font-size: 9.5pt; line-height: 1.3; }
  .page-memo .mm-f > .mm-in, .page-memo .mm-f > .mm-pv { padding-top: .8mm; padding-bottom: .8mm; }
  .page-memo .mm-f > .mm-ymd, .page-memo .mm-f > .mm-unit, .page-memo .mm-f > .mm-opts { padding: 0 2mm; }
  .page-memo .mm-unit { gap: .8mm; }

  /* チェック欄（□・✓）とラジオ（○・●） */
  .page-memo .mm-checks { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .3mm 4mm; padding: 1.4mm 3mm; border: .3mm solid #000; }
  .page-memo .mm-opt { gap: 1.8mm; min-height: 0; padding: .5mm 0; border: 0; border-radius: 0; background: none !important; font-size: 10.5pt; line-height: 1.4; }
  .page-memo .mm-opt input { display: none; }
  .page-memo .mm-box { width: 3.6mm; height: 3.6mm; border: .3mm solid #000; border-radius: 0; background: none; }
  .page-memo .mm-round { border-radius: 50%; }
  .page-memo .mm-opt input:checked + .mm-box::after { left: .95mm; top: .1mm; width: 1.1mm; height: 2.1mm; border-color: #000; border-width: 0 .55mm .55mm 0; }
  .page-memo .mm-opt input[type="radio"]:checked + .mm-box::after { left: .6mm; top: .6mm; width: 0; height: 0; border-width: .9mm; }
  .page-memo .mm-other { grid-column: 1 / -1; flex-wrap: nowrap; align-items: flex-end; gap: 1mm; }
  .page-memo .mm-other .mm-in, .page-memo .mm-other .mm-pv { flex: 1 1 auto; width: auto; border-bottom: .3mm solid #000; }
  .page-memo .mm-opts { flex-wrap: nowrap; gap: 0 4.5mm; }
  .page-memo .mm-opts .mm-opt { flex: none; gap: 1.8mm; padding: .5mm 0; white-space: nowrap; }

  /* 自由欄: 横罫5行（書いた分だけ下へ伸びる） */
  .page-memo .mm-ruled { --rl: 7mm; min-height: calc(var(--rl) * 5); padding: 0 2mm; border: .3mm solid #000; line-height: var(--rl); font-size: 11pt;
    background-image: repeating-linear-gradient(to bottom, transparent 0, transparent calc(var(--rl) - .25mm), #7a7a7a calc(var(--rl) - .25mm), #7a7a7a var(--rl)); }

  .page-memo .mm-foot { display: block; margin: 2mm 0 0; font-size: 8pt; break-before: avoid; color: #333; text-align: right; }
}

/* ---- 全国対応（S）---- 2026/11/7。トップ＝都道府県の入口（地方ごと）、都道府県ページ＝区市町村のカード（政令市は市でまとめ、区はその下）・近い順の結果。
   見た目は B2〜B4 のまま（カードの形・緑青・44px）。0件の区市町村はリンクにしない（薄い文字） */
.find-sub { margin: -4px 0 10px; color: var(--ink-2); font-size: 15px; }
.region { margin: 0 0 18px; }
.region-h { display: flex; align-items: baseline; gap: 10px; margin: 0 0 6px; font-size: 18px; color: var(--ink); font-family: var(--f-gothic); font-weight: 700; letter-spacing: .02em; }
.region-n { font-weight: 400; color: var(--ink-2); font-size: 14px; }
.pref-links { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; }
.pref-links li { margin: 0; }
.pref-links a { display: flex; justify-content: space-between; align-items: center; gap: 6px; min-height: 60px; padding: 6px 10px 6px 14px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); color: var(--teal-900); font-weight: 700; line-height: 1.4; text-decoration: none; }
.pref-links a:hover { border-color: var(--teal-600); background: var(--teal-50); }
.page-pref .find { margin: 12px 0 0; }
.page-pref .pref-list h2 { margin-bottom: 10px; }
.page-pref .area-links { margin-bottom: 14px; }
.al-zero { display: flex; justify-content: space-between; align-items: center; gap: 6px; min-height: 60px; padding: 6px 14px; border: 1px dashed var(--line); border-radius: var(--r-md); color: var(--ink-2); line-height: 1.4; }
.al-zero .al-count { color: var(--ink-2); }
.city-group { margin: 0 0 18px; }
.city-h { margin: 0 0 6px; font-size: 18px; }
.city-h .pref-link { gap: 8px; }
.city-h .al-count { font-weight: 400; color: var(--ink-2); font-size: 15px; }
.ward-links { padding-left: 0; }
@media (min-width: 720px) { .ward-links { padding-left: 16px; } }
.win-kind { font-weight: 400; color: var(--ink-2); font-size: 14px; }
.top-results .near-status { color: var(--ink-2); }

/* ---------- 動きを減らす設定（このサイトにアニメーションはない。transition とスクロールも止める） ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
