/* ===========================================================
   関東・甲信越の林道マップ スタイル
   -----------------------------------------------------------
   ★ このファイルは公開されます。コメントも含めてです ★
     2026-08-05 まで、ここには別プロジェクトの名前が書かれた
     コメントが残っていました。公開前の grep はその語を見ておらず、
     素通りしていました。**流用したファイルは、コメントと
     使っていないルールを必ず消してから使うこと。**
   =========================================================== */

/* ---------- 配色（ライトが既定） ----------
   ★ 色は必ずこの変数を通すこと ★ 直書きするとダークモードに追従しません。
   ★ ダークは JS が <html data-theme="dark"> を付けたときだけ ★
     「システム設定に合わせる」もJSが解決して light / dark のどちらかを
     入れます（メディアクエリでの二重定義を避けるため）。JSが動かない
     環境では今までどおりライトのままです。
   ★ 姉妹サイト5つで同じ方式です ★ 直すときは5つとも直してください。 */
:root {
  color-scheme: light;
  --bg: #f4f6f9;
  --ink: #1a1f28;
  --ink2: #2b3240;        /* 本文の濃い字 */
  --head: #3a4252;        /* 見出し・強めの字 */
  --head2: #4a545f;       /* 注記カードの本文 */
  --sub: #5a6472;
  --sub2: #6c757d;
  --sub2b: #6b7480;
  --sub2c: #5b636d;
  --sub3: #7a838f;
  --sub4: #8a929c;
  --sub4b: #8b949e;
  --card: #fff;
  --card2: #f7f9fb;       /* 薄い地・ホバーの地 */
  --card3: #fbfcfd;       /* 表の見出しの地 */
  --card4: #fafbfc;       /* 注記カード・チップの地 */
  --line: #e3e7ed;
  --line2: #e3e7ee;
  --line3: #eef1f5;       /* 行の区切り・薄いホバー地 */
  --line4: #e0e4e9;       /* チップの枠 */
  --line-strong: #d5dae1;
  --ctl-line: #cfd6de;    /* 入力欄・ボタンの枠 */
  --ctl-line2: #e2e7ec;   /* 共有ボタンの枠 */
  --ctl-line-hover: #9aa3ad;
  --sep: #b9c4d1;
  --closure-line: #c9ced4;
  --closure-open: #7d8894;
  --soil: #8a5a2b;
  --link: #0b5ed7;
  --focus: #0d6efd;       /* フォーカスの輪郭 */
  --stat-blue: #0d6efd;   /* サマリーの青帯 */
  --stat-green: #12805c;  /* サマリーの緑帯 */
  --lead-accent: #6f42c1; /* 解説カードの帯 */
  --route: #d9480f;       /* 特集ルートの帯 */
  --shadow: rgba(0,0,0,0.08);
  --sort-on-bg: #1a1f28;  /* 選択中の並び替えボタン */
  --sort-on-ink: #fff;
  --danger: #b42318;
  --danger-bg: #fdecea;
  --danger-strong: #d92d20;   /* 警告ブロックの枠 */
  --danger-soft-bg: #fff8f6;  /* 警告ブロックの地 */
  --danger-bd: #f0b4ae;
  --danger2: #a63a0f;
  --danger2-bg: #fdece7;
  --danger2-bd: #f5c6b4;
  --cl-closed: #a3252b;
  --cl-closed-bg: #fdf0f0;
  --warn: #d9a406;
  --warn-ink: #7a5c02;
  --warn-bg: #fffaed;
  --warn-bd: #f0dca8;
  --warn2: #8a6d00;       /* 営業状況「注意」の字 */
  --warn2-bg: #fff8e1;
  --warn3: #9a5b12;       /* 規制「一部」の字 */
  --warn3-bg: #fdf6ec;
  --ok: #0f6b4e;
  --ok-bg: #e6f5ef;
  --ok2: #1a6b45;         /* 「接続」の字 */
  --ok2-bg: #e7f5ee;
  --ok2-bd: #bde3cd;
  --ok3: #2f7a43;         /* 共有「コピーしました」 */
  --ok3-bg: #f2f9f4;
  --mute: #555f6b;        /* 規制「規制あり」の字 */
  --mute-bg: #f2f4f6;
  --mute2: #4a5568;       /* 隙間「一般道」の字 */
  --mute2-bg: #f2f4f7;
  --mute2-bd: #dde2e9;
  --unknown-bg: #eceff3;  /* 営業状況「不明」の地 */
  --nodo: #1864ab;        /* 農道の印の字 */
  --nodo-bg: #eaf2fb;
  --sh-line-bd: #06c755;  /* 共有ボタン各社。縁と字だけ色を借りる */
  --sh-line-ink: #06862f;
  --sh-fb-bd: #1877f2;
  --sh-fb-ink: #1461c8;
  --sh-hb-bd: #00a4de;
  --sh-hb-ink: #0083b3;
  --sh-x: #1a1f28;

  /* ---- 地図の線の色。★ ダークでも変えません ★ ----
     地図タイルはダークでも明るいままです（暗色化しない）。凡例は
     「地図上の見え方をそのまま再現する」ためのものなので、ここが
     テーマで変わると凡例と実物がずれます。 */
  --map-closed: #d92d20;
  --map-caution: #e07000;
  --map-known: #0f7b52;
  --map-plain: #4a5568;
  --map-this: #d9480f;
  --map-other: #1a1f28;
  --map-dot-bg: #fff;
  --map-dot-line: #1a1f28;
}

/* ダーク。★ 地はOGカード（og-card.png）と同じ紺 #1a2a4a ★
   土色もカードと同じ明るめ #c68c4a（#8a5a2b は紺に沈むため）。
   薄い色地は「濃い版の色の14%透過」で作っています。 */
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #1a2a4a;
  --ink: #f4f6f9;
  --ink2: #dce4f0;
  --head: #dce4f0;
  --head2: #a7b4ca;
  --sub: #a7b4ca;
  --sub2: #a7b4ca;
  --sub2b: #a7b4ca;
  --sub2c: #a7b4ca;
  --sub3: #8c9bb5;
  --sub4: #8c9bb5;
  --sub4b: #8c9bb5;
  --card: #213254;
  --card2: #1f2f51;
  --card3: #1f2f51;
  --card4: #1f2f51;
  --line: #324569;
  --line2: #324569;
  --line3: #2e4166;
  --line4: #324569;
  --line-strong: #3c5077;
  --ctl-line: #3c5077;
  --ctl-line2: #3c5077;
  --ctl-line-hover: #8c9bb5;
  --sep: #46587e;
  --closure-line: #46587e;
  --closure-open: #8c9bb5;
  --soil: #c68c4a;
  --link: #8ab8ec;
  --focus: #8ab8ec;
  --stat-blue: #8ab8ec;
  --stat-green: #3fae85;
  --lead-accent: #a98ae0;
  --route: #e8794a;
  --shadow: rgba(0,0,0,0.3);
  --sort-on-bg: #dce4f0;
  --sort-on-ink: #1a2a4a;
  --danger: #f08a80;
  --danger-bg: rgba(240,138,128,0.14);
  --danger-strong: #f08a80;
  --danger-soft-bg: rgba(240,138,128,0.14);
  --danger-bd: rgba(240,138,128,0.45);
  --danger2: #f0967a;
  --danger2-bg: rgba(240,138,128,0.14);
  --danger2-bd: rgba(240,138,128,0.45);
  --cl-closed: #f08a80;
  --cl-closed-bg: rgba(240,138,128,0.14);
  --warn: #e6c35c;
  --warn-ink: #e6c35c;
  --warn-bg: rgba(230,195,92,0.14);
  --warn-bd: rgba(230,195,92,0.45);
  --warn2: #e6c35c;
  --warn2-bg: rgba(230,195,92,0.14);
  --warn3: #e6c35c;
  --warn3-bg: rgba(230,195,92,0.14);
  --ok: #6fcf9f;
  --ok-bg: rgba(111,207,159,0.14);
  --ok2: #6fcf9f;
  --ok2-bg: rgba(111,207,159,0.14);
  --ok2-bd: rgba(111,207,159,0.45);
  --ok3: #6fcf9f;
  --ok3-bg: rgba(111,207,159,0.14);
  --mute: #a7b4ca;
  --mute-bg: rgba(167,180,202,0.14);
  --mute2: #a7b4ca;
  --mute2-bg: rgba(167,180,202,0.14);
  --mute2-bd: rgba(167,180,202,0.45);
  --unknown-bg: rgba(167,180,202,0.14);
  --nodo: #8ab8ec;
  --nodo-bg: rgba(138,184,236,0.14);
  --sh-line-ink: #4ed88a;
  --sh-fb-ink: #6ea8f5;
  --sh-hb-ink: #4cc4ec;
  --sh-x: #f4f6f9;
  /* 地図の線の色（--map-…）はここで上書きしません。上のコメント参照 */
}

* { box-sizing: border-box; }
body {
  margin: 0;
  padding: 24px;
  background: var(--bg);
  font-family: system-ui, -apple-system, "Segoe UI", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  color: var(--ink);
  line-height: 1.6;
}
.wrap { max-width: 980px; margin: 0 auto; }

/* ---------- ヘッダー ---------- */
header.page-header {
  background: var(--card);
  border-radius: 12px;
  padding: 20px 24px;
  margin-bottom: 20px;
  box-shadow: 0 1px 3px var(--shadow);
}
header.page-header h1 { margin: 0 0 6px 0; font-size: 24px; }
header.page-header .date-line { color: var(--sub); font-size: 14px; }
/* 本数の内訳。★ 合計より小さく ★ 走り手が知りたいのは合計が先です */
header.page-header .date-line.sub { font-size: 13px; color: var(--sub3); margin-top: 2px; }

/* ---------- 紋章 ----------
   ★ ライトに濃い面を足さないこと ★
     カード画像（og-card.png）は紺の地ですが、ライトのページに置くのは
     **線だけ**の emblem.svg です。ライトの配色は明るいまま、濃い面は
     1ドットも増えません。長く読む画面に濃い面があると、目に残像が残ります。
     このサイトは林道名を探して何十行もスクロールする場所なので、特に効きます。
     （ダークモードは別です。2026-08-20 に山村さんの指定で追加しました。
       ダークの地はOGカードと同じ紺で、紋章もカードと同じ配色の
       emblem-dark.svg に切り替わります。下の .emblem-light / .emblem-dark。）

   ★ 幅ではなく高さで揃えること ★
     紋章は正方形とは限りません（コース現況だけ横長です）。
     幅を固定すると、そこだけ潰れて別の絵になります。

   ★ page-header 全体に flex を掛けないこと ★
     林道ページ・県ページのヘッダーまで横並びになり、見出しと
     「全長・標高」の行が1行に潰れます。with-emblem を付けた側だけです。

   ★ 姉妹サイト5つで同じ指定です ★ 直すときは5つとも直してください。 */
header.page-header.with-emblem { display: flex; align-items: center; gap: 16px; }
header.page-header.with-emblem .ph-body { min-width: 0; flex: 1; }
header.page-header .emblem { flex: none; height: 64px; width: auto; display: block; }
@media (max-width: 640px) {
  /* ★ 紋章を消さずに小さくすること ★ display:none にすると、
     スマホで来た人だけブランドの印を見ないまま帰ります */
  header.page-header.with-emblem { gap: 12px; }
  header.page-header .emblem { height: 46px; }
}

/* ライト用とダーク用の紋章を両方置いて、表示だけ切り替える。
   ★ <img> の src はCSSから差し替えられないため、2枚置く方式です ★ */
/* ★ 隠す側も :root 付きで書くこと（2026-08-20 の不具合修正）★
     header.page-header .emblem { display: block } のほうが詳細度で強いので、
     裸の .emblem-dark { display: none } では負けて、ライトで2枚とも表示されます。 */
:root[data-theme="dark"] .emblem-light,
:root:not([data-theme="dark"]) .emblem-dark { display: none; }

/* ---------- カード ---------- */
.card {
  background: var(--card);
  border-radius: 12px;
  padding: 18px 22px;
  margin-bottom: 18px;
  box-shadow: 0 1px 3px var(--shadow);
}
.card h2 { margin: 0 0 12px; font-size: 16px; }
.card h3 { font-size: 14px; margin: 20px 0 8px; }
.card p { margin: 0 0 10px; font-size: 14px; color: var(--ink2); }
.card p:last-child { margin-bottom: 0; }
.card ul { margin: 0 0 10px; padding-left: 20px; font-size: 14px; color: var(--ink2); }
.card li { margin-bottom: 4px; }

/* 解説ページの導入部（ボタンは置かない。導線はヘッダーのpagenavに1本だけ） */
.card.lead { border-left: 4px solid var(--lead-accent); }
.card.lead strong { color: var(--ink); }

/* ヘッダー内の控えめな導線 */
.pagenav { margin-top: 10px; font-size: 13px; color: var(--sub); }
.pagenav a { color: var(--sub); text-decoration: none; border-bottom: 1px solid var(--line-strong); }
.pagenav a:hover { color: var(--ink); border-bottom-color: var(--sub4); }

/* 凡例の下などに添える一行注記 */
.footnote { font-size: 12.5px; color: var(--sub); margin: 12px 0 0; }
.footnote a { color: var(--sub); }

/* ---------- 凡例 ---------- */
.legend { display: flex; flex-wrap: wrap; gap: 16px; font-size: 13.5px; color: var(--head); }
.legend .item { display: flex; align-items: center; gap: 8px; }

.hint { font-size: 12.5px; color: var(--sub2); margin: 12px 0 0; }

.tag {
  display: inline-block; font-size: 11px; font-weight: 700;
  padding: 1px 7px; border-radius: 10px; margin-right: 6px;
  vertical-align: 1px;
}
.tag.open { background: var(--ok-bg); color: var(--ok); }

/* ---------- 比較表（series.html） ---------- */
.cmp { width: 100%; border-collapse: collapse; font-size: 13.5px; margin-bottom: 10px; }
.cmp th, .cmp td {
  border: 1px solid var(--line); padding: 9px 12px;
  text-align: left; vertical-align: top;
}
.cmp thead th { background: var(--card2); font-size: 13px; }
.cmp tbody th { background: var(--card3); font-weight: 700; width: 130px; color: var(--head); }
.table-scroll { overflow-x: auto; }

/* ---------- 出典・フッター ---------- */
.sources { font-size: 13px; }
.sources ul { margin: 8px 0 0; padding-left: 18px; }
.sources li { margin-bottom: 4px; }
.sources a { color: var(--link); }

footer.page-footer {
  font-size: 12.5px; color: var(--sub2); text-align: center;
  padding: 18px 0 8px;
  border-top: 1px solid var(--line);
  margin-top: 4px;
}
footer.page-footer .site-name {
  font-weight: 700; color: var(--head); font-size: 14px;
  margin-bottom: 2px;
}
footer.page-footer .foot-links { margin: 10px 0 6px; }
footer.page-footer .foot-links a { color: var(--sub); text-decoration: none; }
footer.page-footer .foot-links a:hover { color: var(--ink); text-decoration: underline; }
footer.page-footer .foot-links .sep { margin: 0 8px; color: var(--sep); }
footer.page-footer .updated { font-size: 11.5px; color: var(--sub4); }

/* ---------- テーマ切替（ライト / 自動 / ダーク） ----------
   フッターに置く小さな3ボタン。★ JSが動いた時だけ見えます ★
   （html に data-theme を付けるのはJSなので、無い＝JSが動いていない＝
     押しても効かないボタンを見せない、という理屈です。）
   ★ 姉妹サイト5つで同じ指定です ★ 直すときは5つとも直してください。 */
.theme-switch { display: none; margin-top: 10px; }
html[data-theme] .theme-switch { display: block; }
.theme-switch button {
  font: inherit;
  font-size: 12px;
  color: var(--sub);
  background: none;
  border: 1px solid var(--sep);
  padding: 2px 12px;
  margin: 0;
  cursor: pointer;
}
.theme-switch button + button { border-left: none; }
.theme-switch button:first-of-type { border-radius: 999px 0 0 999px; padding-left: 14px; }
.theme-switch button:last-of-type { border-radius: 0 999px 999px 0; padding-right: 14px; }
.theme-switch button[aria-pressed="true"] {
  color: var(--ink);
  background: var(--card);
  font-weight: 700;
}
.theme-switch button:focus-visible { outline: 2px solid var(--soil); outline-offset: 1px; }

/* ---------- 詳細ページ（race.html） ---------- */
.crumb { font-size: 13px; margin-bottom: 14px; color: var(--sep); }
.crumb a { color: var(--sub); text-decoration: none; }
.crumb a:hover { color: var(--ink); text-decoration: underline; }
.crumb .sep { margin: 0 8px; }

.cmp.info tbody th { width: 110px; }

/* 楽天ウェブサービスのクレジット表示（フッター）。
   ★ 消したり隠したりしないこと ★ API利用の必須要件です。
     「ユーザーが、このサイトが楽天ウェブサービスに支えられていると
     理解できなくなるような出し方をしないこと」とされているので、
     小さくはしますが display:none や視認できない色にはしません。 */
.rws-credit { margin-top: .6em; font-size: 12px; }
.rws-credit a { color: var(--mute); }

/* 近隣の宿泊・入浴施設の表（詳細ページ）。
   ★ 名前の列を広く取ること ★ 公式サイトのリンクが名前の下に入るので、
     等分にすると名前が2〜3行に折り返して、行数ぶん縦に伸びます。
   ★ 距離は右寄せ ★ 296m / 1.1km / 2.8km が並ぶので、桁を揃えます。 */
.near-places td:first-child { width: 40%; }
.near-places td:nth-child(3) { text-align: right; white-space: nowrap; }
.near-places td:last-child { white-space: nowrap; }
.near-places .nb { margin-left: .4em; }
@media (max-width: 480px) {
  .near-places td:first-child { width: auto; }
}

.unknown { color: var(--sub4); }

/* ---------- 営業状況 ---------- */
.tag.st-open    { background: var(--ok-bg); color: var(--ok); }
.tag.st-caution { background: var(--warn2-bg); color: var(--warn2); }
.tag.st-closed  { background: var(--danger-bg); color: var(--danger); }
.tag.st-unknown { background: var(--unknown-bg); color: var(--sub2); }

/* ---------- 土地の許可についての警告 ---------- */
/* 林道・河川敷にだけ出る。目立たなければ意味がないので、
   カードの中に埋めずに独立したブロックにしている */
.land-warning {
  background: var(--danger-soft-bg);
  border: 2px solid var(--danger-strong);
  border-radius: 12px;
  padding: 16px 20px;
  margin-bottom: 18px;
}
.land-warning .lw-title {
  font-weight: 700; font-size: 15px; color: var(--danger);
  margin-bottom: 8px;
}
.land-warning ul { margin: 0; padding-left: 20px; font-size: 13.5px; color: var(--ink2); }
.land-warning li { margin-bottom: 6px; }
.land-warning li:last-child { margin-bottom: 0; }

/* 詳細ページでは、この警告を「走れるかどうかは書いてありません」の
   カード（.notes）の中に統合している（2026-08-20）。
   赤枠は付けず、見出しの赤だけ残す。地域ページとトップは上の独立ブロックのまま */
.notes .lw-title {
  font-weight: 700; font-size: 15px; color: var(--danger);
  margin: 16px 0 8px;
}
.notes .lw-list { margin: 0; padding-left: 20px; font-size: 13.5px; color: var(--ink2); }
.notes .lw-list li { margin-bottom: 6px; }
.notes .lw-list li:last-child { margin-bottom: 0; }

.tag.land { background: var(--danger-bg); color: var(--danger); border: 1px solid var(--danger-bd); }

/* ---------- 林道マップ ---------- */
#map {
  height: 520px;
  border-radius: 8px;
  border: 1px solid var(--line);
  /* Leaflet のポップアップがカードからはみ出さないように */
  z-index: 0;
}

.map-tools {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 12px;
}
.map-tools input[type="search"] {
  flex: 1 1 auto; min-width: 0;
  font: inherit; font-size: 14px;
  padding: 9px 12px;
  border: 1px solid var(--ctl-line); border-radius: 8px;
  background: var(--card); color: var(--ink);
}
.map-tools input[type="search"]:focus {
  outline: 2px solid var(--focus); outline-offset: 1px; border-color: var(--focus);
}
.map-count { flex: none; font-size: 13px; font-weight: 700; color: var(--sub); }

.map-legend {
  display: flex; flex-wrap: wrap; gap: 8px 20px;
  margin-top: 14px; font-size: 12.5px; color: var(--head);
}
.map-legend .item { display: flex; align-items: center; gap: 8px; }

/* 凡例の線は、地図上の見え方（色・太さ・線種）をそのまま再現する。
   凡例と実物が違うと、かえって迷わせるため。
   ★ 色は --map-… の変数です。ダークでも変わりません ★
     地図タイルはダークでも明るいまま＝実物の線の色も変わらないからです。 */
.map-legend .ln {
  display: inline-block; width: 30px; flex: none;
  /* 高さは太さに合わせて個別指定。中央に揃えるため box は固定 */
  height: 6px; background-clip: content-box;
}
.ln-closed {
  background: var(--map-closed);               /* 太い実線 */
  border-radius: 3px;
}
.ln-caution {                                /* 破線 */
  background: repeating-linear-gradient(90deg, var(--map-caution) 0 9px, transparent 9px 15px);
  height: 5px;
}
.ln-known {                                  /* 実線 */
  background: var(--map-known);
  height: 5px; border-radius: 2.5px;
}
.ln-plain {                                  /* 実線。細くしすぎない */
  background: var(--map-plain);
  height: 3px; border-radius: 1.5px;
}


/* ---------- スマホ ---------- */
@media (max-width: 560px) {
  body { padding: 14px; }
  .cmp tbody th, .cmp.info tbody th { width: auto; }
}

/* ===========================================================
   房総の林道マップ で足したもの
   =========================================================== */

/* 詳細ページの地図。一覧より小さめ */
.map-small { height: 380px; }

/* 詳細ページの凡例。当該の道は種別の色（背景色は build.mjs が直に指定）、
   周辺は黒。★ ここに緑を足さないこと ★ 緑の線は「通行できます」と読まれます */
.ln-this  { background: var(--map-this); height: 5px; border-radius: 2.5px; }
/* 県の地図の凡例。林道＝灰、農道＝青。色は kind.mjs が持っています */
.ln-kind  { height: 4px; border-radius: 2px; }
.ln-other { background: var(--map-other); height: 3px; border-radius: 1.5px; opacity: 0.7; }
.map-legend .ln-dot {
  display: inline-block; flex: none;
  width: 12px; height: 12px; border-radius: 50%;
  background: var(--map-dot-bg); border: 2px solid var(--map-dot-line);
}

/* 並び替えのボタン */
.sort-bar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin-bottom: 8px;
}
.sort-bar .sb-label {
  font-size: 12.5px; font-weight: 700; color: var(--sub);
  margin-right: 2px;
}
.sortbtn {
  font: inherit; font-size: 13px; font-weight: 700;
  padding: 6px 12px;
  border: 1px solid var(--ctl-line); border-radius: 999px;
  background: var(--card); color: var(--head);
  cursor: pointer;
}
.sortbtn:hover { border-color: var(--sub4); background: var(--card2); }
.sortbtn:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
/* 選ばれている項目。矢印だけでなく色でも分かるようにする */
.sortbtn.is-on {
  background: var(--sort-on-bg); border-color: var(--sort-on-bg); color: var(--sort-on-ink);
}
.sortbtn .ar { margin-left: 5px; font-size: 12px; }

/* 林道の一覧 */
/* 行は div。中のリンクが <a>、その隣に☆ボタンが並ぶ。
   ★ <a> の中に <button> を入れないこと（HTMLとして不正）★ */
.rindo-row {
  display: flex; align-items: center; gap: 2px;
  border-bottom: 1px solid var(--line3);
}
.rindo-row:last-child { border-bottom: none; }
.rindo-row:hover { background: var(--card2); }
.rr-link {
  flex: 1 1 auto; min-width: 0;
  display: flex; align-items: center; gap: 12px;
  padding: 11px 4px;
  text-decoration: none; color: inherit;
}
.rr-link:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.rindo-row .rn { flex: 1 1 auto; min-width: 0; font-weight: 700; font-size: 14px; }
.rindo-row .rm {
  flex: none; width: 80px;
  font-size: 12.5px; color: var(--sub);
}
.rindo-row .rl {
  flex: none; width: 78px; text-align: right;
  font-size: 13px; font-weight: 700; color: var(--head);
}
/* いちばん高い地点（▲2,363m）。2026-08-06 に追加。
   ここは以前 .rp という使われていないルールが残っていた場所です。
   ★ 全長（.rl）より控えめな色にしてあります ★
     一覧の主役は名前と長さです。標高は添えもの。
     同じ強さで並べると、どれを見ればいいのか分からなくなります。 */
.rindo-row .re {
  flex: none; width: 68px; text-align: right;
  font-size: 12px; color: var(--sub2b);
  white-space: nowrap;
}
.rindo-row .chev { flex: none; color: var(--sep); font-size: 18px; line-height: 1; }

/* トップの「地域を選ぶ」 */
/* ★ 地方でまとめる（2026-08-19）★
   22都県が一列だと選びにくく、47になれば破綻する。
   地方ごとのページは作らず、同じページの見出しへ飛ばす。
   ★ 既存のトークンだけで書く ★ 色も角丸も region-card と同じものを使い、
   新しい見た目を増やさない。 */
.area-jump {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin: 0 0 14px;
}
.area-jump .aj-label { font-size: 13px; color: var(--sub2c); }
.area-jump .aj-link {
  font-size: 14px; padding: 4px 11px;
  border: 1px solid var(--line); border-radius: 999px;
  background: var(--card); text-decoration: none; color: inherit;
}
.area-jump .aj-link:hover { border-color: var(--sub4); background: var(--card2); }
.area-jump .aj-link:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }

.area-head {
  font-size: 15px; font-weight: 700; color: var(--sub2c);
  margin: 20px 0 10px; padding-bottom: 6px;
  border-bottom: 1px solid var(--line);
  /* ★ 飛んできたときに見出しが上端に貼り付かないように ★ */
  scroll-margin-top: 12px;
}
.area-head:first-of-type { margin-top: 4px; }

/* 地方の見出しの右に置く「通行規制」への導線。
   ★ 見出しより目立たせないこと ★ 主役は地方と県の並びで、これは補助線です。
   スマホでは見出しの下に回り込みます（横に伸びて県名を押し出さないため）。 */
.area-closures {
  float: right; font-size: 12.5px; font-weight: 600;
  text-decoration: none; color: var(--link);
}
.area-closures:hover { text-decoration: underline; }

/* 通行規制のまとめの表。★ 印を縦積みにしないこと ★
   「一部通行止」がスマホで1文字ずつ縦に折れて、行が異様に高くなっていました。
   表は .table-scroll の中なので、横に少しはみ出しても指で送れます。 */
.cl-table .tag { white-space: nowrap; }
.cl-table { min-width: 30em; }              /* 狭い画面では潰さず、横に送る */
.cl-table th:first-child, .cl-table td:first-child { min-width: 8.5em; }
.cl-table th:nth-child(3), .cl-table td:nth-child(3) { min-width: 10em; }  /* 理由 */
.cl-table th:nth-child(4), .cl-table td:nth-child(4) { min-width: 5.5em; } /* いつまで */
@media (max-width: 560px) {
  .area-head { display: flex; flex-wrap: wrap; gap: 2px 10px; align-items: baseline; }
  .area-closures { float: none; }
}

.region-grid {
  display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
}
.region-card {
  display: flex; flex-direction: column; gap: 3px;
  padding: 14px 16px;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--card); text-decoration: none; color: inherit;
}
.region-card:hover { border-color: var(--sub4); background: var(--card2); }
.region-card:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
.region-card .rc-name { font-size: 17px; font-weight: 700; }
.region-card .rc-cov { font-size: 12px; color: var(--sub4); }
.region-card .rc-num { font-size: 13px; font-weight: 700; color: var(--head); margin-top: 4px; }

/* ---- ブックマーク ---- */

.bm-btn {
  display: inline-flex; align-items: center; gap: 6px;
  font: inherit; font-size: 13px; font-weight: 700;
  padding: 7px 14px;
  border: 1px solid var(--ctl-line); border-radius: 8px;
  background: var(--card); color: var(--head);
  cursor: pointer;
}
.bm-btn:hover { border-color: var(--sub4); background: var(--card2); }
.bm-btn:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
.bm-btn .bm-ico { font-size: 15px; line-height: 1; color: var(--sep); }

/* 保存済み。★ 色だけで区別しないこと ★
   ☆ と ★ で形が変わるので、色が見えなくても分かります */
.bm-btn.is-on { border-color: var(--warn); background: var(--warn-bg); color: var(--warn-ink); }
.bm-btn.is-on .bm-ico { color: var(--warn); }

/* 一覧の行に置く小さいほう。文字は出さない */
.bm-mini {
  flex: none;
  padding: 6px 8px; border-color: transparent; background: transparent;
}
.bm-mini:hover { background: var(--line3); border-color: transparent; }
.bm-mini.is-on { background: transparent; border-color: transparent; }
.bm-mini .bm-ico { font-size: 17px; }

/* 詳細ページの見出し下。ボタンと路面の引用が並びます。
   ★ 折り返せるようにしておくこと ★
     ボタン3つ＋路面の引用が横に並ぶので、狭い画面では必ずはみ出します */
.head-tools {
  margin-top: 12px;
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
}

/* 共有ボタン。★ ブックマークより弱く見せること ★
   保存は「自分のため」、共有は「人のため」。押す頻度が違うので、
   同じ強さで並べると保存が埋もれます */
.sh-btn {
  display: inline-flex; align-items: center; gap: 6px;
  font: inherit; font-size: 13px; font-weight: 600;
  padding: 7px 12px;
  border: 1px solid var(--ctl-line2); border-radius: 8px;
  background: var(--card); color: var(--sub);
  cursor: pointer; text-decoration: none;
}
.sh-btn:hover { border-color: var(--ctl-line-hover); background: var(--card2); color: var(--head); }
.sh-btn:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
.sh-btn.sh-done { border-color: var(--ok3); color: var(--ok3); background: var(--ok3-bg); }

/* 送り先ごとの色。★ 塗りつぶさないこと ★
   各社のロゴ色でボタンを塗ると、公式の共有ボタンに見えます。
   縁と文字だけ色を借りて、地はカードのまま並べます。 */
.sh-line:hover { border-color: var(--sh-line-bd); color: var(--sh-line-ink); }
.sh-fb:hover   { border-color: var(--sh-fb-bd); color: var(--sh-fb-ink); }
.sh-hb:hover   { border-color: var(--sh-hb-bd); color: var(--sh-hb-ink); }
.sh-x:hover    { border-color: var(--sh-x); color: var(--sh-x); }

/* アイコンだけのボタン（Facebook・はてブ）は正方形に近づける */
.sh-fb, .sh-hb { padding: 7px 11px; font-weight: 700; }

/* コピーできなかったときに出る入力欄（手で選んでもらう） */
.sh-fallback {
  font: inherit; font-size: 12px;
  padding: 6px 8px; border: 1px solid var(--ctl-line); border-radius: 6px;
  width: 100%; max-width: 420px; color: var(--head);
}

/* 「保存した林道を見る」。1件でもあるときだけ出る（bookmarks.js） */
.bm-jump { margin-bottom: 12px; }
.bm-jump[hidden] { display: none; }
.bm-jump a {
  display: inline-block;
  padding: 8px 14px;
  border: 1px solid var(--warn-bd); border-radius: 8px;
  background: var(--warn-bg); color: var(--warn-ink);
  font-size: 13px; font-weight: 700; text-decoration: none;
}
.bm-jump a:hover { border-color: var(--warn); }
.bm-jump a:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }

.btn-danger {
  font: inherit; font-size: 13px; font-weight: 700;
  padding: 8px 14px;
  border: 1px solid var(--danger2-bd); border-radius: 8px;
  background: var(--card); color: var(--danger2); cursor: pointer;
}
.btn-danger:hover { background: var(--danger2-bg); }
.btn-danger:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }

/* ---- 特集ルート ---- */

.route-grid {
  display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.route-card {
  display: flex; flex-direction: column; gap: 4px;
  padding: 14px 16px;
  border: 1px solid var(--line); border-left: 4px solid var(--route); border-radius: 10px;
  background: var(--card); text-decoration: none; color: inherit;
}
.route-card:hover { border-color: var(--sub4); border-left-color: var(--route); background: var(--card2); }
.route-card:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
/* 県名。地域が増えるとトップに複数県のルートが並ぶので、
   名前だけではどこの話か分からなくなる */
.route-card .rt-pref {
  font-size: 11.5px; font-weight: 700; color: var(--sub4); letter-spacing: .04em;
}
.route-card .rt-name { font-size: 16px; font-weight: 700; }
.route-card .rt-lead { font-size: 12.5px; color: var(--sub2b); line-height: 1.5; }
.route-card .rt-num  { font-size: 13px; font-weight: 700; color: var(--head); margin-top: 2px; }

.route-table th, .route-table td { vertical-align: top; }
.route-table .seg-no {
  width: 1.8em; color: var(--sub4); font-variant-numeric: tabular-nums; text-align: right;
}
.route-table .seg-len,
.route-table .seg-gap { white-space: nowrap; font-variant-numeric: tabular-nums; }
.route-table td .unknown { margin-left: 8px; font-size: 12px; }

/* 隙間の3段階。★ 色だけに頼らず、文字でも読めるようにすること ★ */
.gap {
  display: inline-block; padding: 1px 7px; border-radius: 999px;
  font-size: 12px; font-weight: 700; border: 1px solid transparent;
}
.gap-joined { background: var(--ok2-bg); color: var(--ok2); border-color: var(--ok2-bd); }
.gap-road   { background: var(--mute2-bg); color: var(--mute2); border-color: var(--mute2-bd); }
.gap-far    { background: var(--danger2-bg); color: var(--danger2); border-color: var(--danger2-bd); }

.warn-inline { color: var(--danger2); }

@media (max-width: 560px) {
  /* ★ スマホでは1行を2段に折り返します ★
       1段目 = 林道名（幅いっぱい）
       2段目 = 市区町村・全長・標高
     幅を auto にしないと、固定幅の合計が画面を超えて3段になります。
     標高を足しても段数が増えないことを、560px と 360px で確認済み（2026-08-06）。 */
  .rindo-row { flex-wrap: wrap; gap: 2px 10px; }
  .rindo-row .rn { flex-basis: 100%; }
  .rindo-row .rm { width: auto; }
  .rindo-row .rl { width: auto; text-align: left; }
  .rindo-row .re { width: auto; text-align: left; }
  .rindo-row .chev { display: none; }
  .map-small { height: 300px; }
}

/* ===========================================================
   通行規制の表示
   -----------------------------------------------------------
   ★ 「通行できる」ことを示す緑の印は作らないこと ★
     一覧に出すのは規制がかかっているものだけです。
     理由は build.mjs のデータ読み込みのところに書いてあります。
   =========================================================== */

.cl-badge {
  display: inline-block;
  margin-left: .5em;
  padding: .05em .45em;
  border-radius: 3px;
  font-size: .72em;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
  vertical-align: middle;
  border: 1px solid currentColor;
}
/* 種別の印（農道など）。★ 林道には出しません ★
     既定は林道なので、全行に「林道」と書いても行が長くなるだけです。
   ★ 通行規制の印より目立たせないこと ★
     枠線を持たせず、色も地図の線に合わせた青1色にしてあります。
     いちばん読んでほしいのは、規制のほうです。 */
.k-badge {
  display: inline-block;
  margin-left: .5em;
  padding: .05em .45em;
  border-radius: 3px;
  font-size: .7em;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
  vertical-align: middle;
}
.k-nodo { color: var(--nodo); background: var(--nodo-bg); }

/* 近隣の宿泊・入浴の印（宿・湯）。

   ★ 通行規制の印より目立たせないこと ★
     いちばん読んでほしいのは規制です。枠線を持たせず、
     字の色も背景も控えめにしてあります。

   ★ 色で「良い知らせ」を作らないこと ★
     緑にすると「ここは安心」と読まれます。この印が言えるのは
     「OSMに登録がある」までで、泊まれるとも入れるとも言えません。 */
.nb {
  display: inline-block;
  margin-left: .35em;
  padding: .05em .4em;
  border-radius: 3px;
  font-size: .68em;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
  vertical-align: middle;
  color: var(--mute);
  background: var(--mute-bg);
}

.cl-closed     { color: var(--cl-closed); background: var(--cl-closed-bg); }
.cl-partial    { color: var(--warn3); background: var(--warn3-bg); }
.cl-restricted { color: var(--mute); background: var(--mute-bg); }

/* 詳細ページの枠 */
.card.closure { border-left: 4px solid var(--closure-line); }
.card.closure.cl-stop { border-left-color: var(--cl-closed); }
.card.closure.cl-open { border-left-color: var(--closure-open); }
.card.closure .cl-lead { margin: .2em 0 .8em; }
.card.closure h2 { margin-bottom: .3em; }

@media (max-width: 480px) {
  .cl-badge { font-size: .68em; margin-left: .35em; }
  .k-badge  { font-size: .66em; margin-left: .35em; }
  .nb       { font-size: .64em; margin-left: .3em; padding: .05em .3em; }
}

/* ===========================================================
   見出しに出す路面の引用（ブックマークボタンの右）
   -----------------------------------------------------------
   ★ 語と日付をセットで見せること ★
     「ダート」だけが目に入って日付を見落とすと、
     何年も前の話を今の話として受け取ることになります。
     語は濃く、日付はそのすぐ隣。離さないでください。

   ★ 日付がリンクです（語ではありません）★
     語をリンクにすると、語のほうが当サイトの主張に見えます。
     日付を押すと出典が開く、という形にしてあります。
   =========================================================== */

.hd-surface {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 10px;
  margin-left: 14px;
  vertical-align: middle;
}
.hs-label {
  font-size: 12px;
  color: var(--sub4b);
  letter-spacing: .04em;
}
.hs-chip {
  display: inline-flex;
  align-items: baseline;
  gap: .4em;
  padding: .15em .6em;
  border: 1px solid var(--line4);
  border-radius: 4px;
  background: var(--card4);
  white-space: nowrap;
}
.hs-w { font-size: 13.5px; font-weight: 600; color: var(--ink); }
.hs-d { font-size: 11.5px; color: var(--sub2); text-decoration: underline; }
.hs-d:hover { color: var(--ink); }

/* 注意書きと免責をまとめたカード */
.card.notes { background: var(--card4); }
.card.notes p { font-size: 13.5px; color: var(--head2); margin: 0 0 .7em; }
.card.notes p:last-child { margin-bottom: 0; }
.card.notes b { color: var(--ink); }

@media (max-width: 480px) {
  /* ボタンの右に置くと入りきらないので、下に落として左端をそろえる */
  .hd-surface { display: flex; margin: 10px 0 0; }
}
/* ---------- ハブ（トップ）への1行 ----------
   全ページのフッター末尾に出ます。
   ★ ここに姉妹サイトを並べないこと ★
     サイトが増えるたびに各サイトを直すことになります。一覧はハブが持ちます。
   土色はブランドの色です。ここだけ色を持たせて、サイト群の一員だと分かるようにしています。 */
footer.page-footer .brand-line {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--line2);
  font-size: 12px;
  color: var(--sub4);
}
footer.page-footer .brand-line a {
  color: var(--soil);
  font-weight: 700;
  text-decoration: none;
}
footer.page-footer .brand-line a:hover { text-decoration: underline; }

/* ---------- ここで決めていること（各サイト共通） ----------
   正本はハブ（2strokegoat.com）の site.mjs の RULES。
   文面を直すときは、そちらを直してから4サイトへ写すこと。
   ★ 弱めないこと ★ このサイトの実装上の判断は、すべてこの5行から出ています。 */
.card.rules h2 { margin: 4px 0 12px; font-size: 17px; }
.rule-list { list-style: none; margin: 0; padding: 0; }
.rule-list li { padding: 12px 0; border-top: 1px solid var(--line2); }
.rule-list li:first-child { border-top: 0; padding-top: 0; }
.rule-list .rh { display: block; font-weight: 700; font-size: 15px; }
.rule-list .rb { display: block; color: var(--sub); font-size: 14px; }


/* ---------- トップ（ハブ）へ戻る導線 ----------
   ★ 各ページの上のほうに置くこと ★
     フッターにも1行あるが、下まで読まないと気づかれない。
     トップを起点に4サイトを回ってもらうため、頭にも置いている。
   土色はブランドの色。 */
.home-link { margin-bottom: 12px; font-size: 13px; }
.home-link a { color: var(--soil); font-weight: 700; text-decoration: none; }
.home-link a:hover { text-decoration: underline; }


/* ---------- 地図の印（近隣の宿泊施設・入浴施設・ダム） ----------
   ★ 白地に色の縁 ★ 地図（地理院の淡色）の上に置くので、
     色で塗りつぶすと絵文字が読めません。縁と文字だけを種別の色にします。
   ★ 大きさを 26px から変えないこと ★
     build.mjs の divIcon が iconSize/iconAnchor を [26,26]/[13,13] で
     渡しています。CSS だけ変えると、印が座標からずれます。 */
.spot-pin span {
  display: flex; align-items: center; justify-content: center;
  width: 26px; height: 26px;
  border-radius: 50%; background: #fff; border: 2px solid;
  font-size: 14px; line-height: 1;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .35);
}


/* ---------- 地図の線・印を押したときの枠 ----------
   ★ これが無いと、林道の線を押すたびに黒い長方形が出ます ★
     2026-08-21 に本番で出ました。線に吹き出し（tooltip）を付けたことで
     SVG の path がフォーカスを受け取るようになり、ブラウザ既定の
     フォーカス枠が「線を囲む四角」として描かれます。地図の上では
     ただの黒い長方形にしか見えません。

   ★ ただし消しっぱなしにしないこと ★
     キーボード（Tab）で辿っている人には、どこにいるか分からなくなります。
     マウスで押したときだけ消し、キーボードのときは出します
     （サイト全体で :focus-visible を使い分けているのと同じ流儀）。 */
.leaflet-container .leaflet-interactive:focus { outline: none; }
.leaflet-container .leaflet-interactive:focus-visible {
  outline: 2px solid var(--focus); outline-offset: 2px;
}


/* ---------- 一覧の絞り込み（印で絞る）----------
   ★ 凡例と一体で置くこと ★ 何の印で絞っているのかが見えないと、
     押した人が「何が消えたのか」を判断できません。 */
.filter-bar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin: 0 0 8px;
}
.fb-box {
  display: inline-flex; align-items: center; gap: 5px;
  border: 1px solid var(--line2); border-radius: 999px;
  padding: 3px 11px; font-size: 13px; cursor: pointer; user-select: none;
}
.fb-box:hover { border-color: var(--focus); }
.fb-box:focus-within { outline: 2px solid var(--focus); outline-offset: 1px; }
.fb-count { font-size: 13px; color: var(--sub); font-variant-numeric: tabular-nums; }
.filter-note { margin: 0 0 10px; }
.filter-empty { margin: 8px 0; color: var(--sub); font-size: 14px; }

/* 絵文字の印。★ 背景色を付けないこと ★
   絵文字はそれ自体が色を持つので、背景を敷くと汚れて見えます。
   目立たせるぶん、通行規制の印（色付き）とは種類の違う目立ち方にしています。 */
.nb-icon, .k-icon {
  background: none; color: inherit;
  padding: 0; margin-left: .35em;
  font-size: .95em; letter-spacing: 0;
}
@media (max-width: 480px) {
  .nb-icon, .k-icon { font-size: .9em; margin-left: .3em; }
}


/* ---------- 近隣の施設・ダムの表 ----------
   ★ スマホで名前が縦に潰れていた（2026-08-21 に直した）★
     幅の指定が無いと、地図の2つのリンクが列を押し広げ、
     名前の列に1文字ぶんしか残りませんでした。列幅を固定します。 */
.near-places, .near-dams { table-layout: fixed; width: 100%; }
.np-name { word-break: break-word; }
.np-dist, .np-map { white-space: normal; }

/* 予約ボタン（楽天トラベル）。名前のすぐ右に置く。
   ★ 広告であることは表の下の注記に必ず書くこと ★ */
.bk { margin-left: .5em; white-space: nowrap; }
.bk a {
  display: inline-block;
  padding: .1em .6em;
  border: 1px solid var(--line2);
  border-radius: 999px;
  font-size: .8em;
  line-height: 1.6;
  text-decoration: none;
  color: var(--sub);
}
.bk a:hover { border-color: var(--focus); color: var(--fg); text-decoration: underline; }
.bk a::after { content: " ↗"; font-size: .9em; }

@media (max-width: 560px) {
  /* 種別は絵文字と名前でだいたい分かる。狭い画面では落として、
     名前と距離に幅を回す（★ 情報を消すのは画面が狭いときだけ ★） */
  .near-places .np-kind, .near-places thead th:nth-child(2),
  .near-dams .np-kind,   .near-dams thead th:nth-child(2) { display: none; }
  .near-places .np-name, .near-dams .np-name { width: 52%; }
  .near-places .np-dist, .near-dams .np-dist { width: 20%; }
  .near-places .np-map,  .near-dams .np-map  { width: 28%; }
  .np-map a { display: block; }        /* 地理院とGoogleを縦に積む */
  .np-map .msep { display: none; }     /* 縦に積んだので区切りは要らない */
  .np-map { font-size: .9em; }
  .bk { display: block; margin: .3em 0 0; }
}

/* 地図の吹き出しに並ぶリンク（Googleマップ・楽天トラベル・公式サイト） */
.sp-links { display: inline-block; margin-top: .2em; }
.sp-links a { white-space: nowrap; }

/* ===========================================================
   言語の案内バー（static/langbar.js が差し込みます）
   -----------------------------------------------------------
   ★ 自動では言語を切り替えません ★ ここは「もう一方の版があります」と
     知らせるだけの帯です。転送しない理由は static/langbar.js の頭に。
   ★ 目立たせすぎないこと ★ 本文より先に読ませるものではありません。
     色は必ず変数を通す（直書きするとダークに追従しません）。
   ★ JSが動いたときだけ出ます ★ HTMLには入っていないので、
     切っている人には何も起きません（フッターの言語リンクは常にあります）。
   =========================================================== */
.langbar {
  display: flex;
  align-items: center;
  gap: .6em;
  flex-wrap: wrap;
  padding: .5em .9em;
  background: var(--card2);
  border-bottom: 1px solid var(--line);
  color: var(--sub);
  font-size: .88rem;
  line-height: 1.5;
}
.langbar-msg { flex: 1 1 auto; min-width: 12em; }
.langbar-cta { color: var(--link); white-space: nowrap; }
.langbar-close {
  flex: 0 0 auto;
  padding: 0 .4em;
  border: 0;
  background: none;
  color: var(--sub3);
  font-size: 1.1em;
  line-height: 1;
  cursor: pointer;
}
.langbar-close:hover { color: var(--ink2); }
.langbar-close:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }

/* 隣の地域へのリンク（都道府県ページの末尾）。
   点を消して横に流します。県が8つ並ぶところ（長野）でも2行に収まります。 */
.nearby-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 16px; }
.nearby-list li { margin-bottom: 0; }

/* ---------- 折りたためるカード ----------
   いまは県ページの「林道のそばに泊まれるところ」だけで使っています。
   ★ list-style を消したら、代わりの印を必ず自分で置くこと ★
     何も無いと、押せる場所だと分かりません（▸ を ::before で出しています）。 */
.card.fold { padding: 0; }
.card.fold > summary {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 22px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  list-style: none;
  border-radius: 12px;
}
.card.fold > summary::-webkit-details-marker { display: none; }
.card.fold > summary::before {
  content: "▸";
  color: var(--ink2);
  font-size: 13px;
  transition: transform .15s ease;
}
.card.fold[open] > summary::before { transform: rotate(90deg); }
/* ★ 面の色は足しません ★ ここに使える薄い面の変数が無く、
   新しく色を1つ増やすほどの効果は無いためです（印の▸で足ります）。 */
.card.fold > summary:focus-visible { outline: 3px solid var(--soil); outline-offset: -3px; }
.card.fold .fold-num {
  margin-left: auto;
  font-size: 13px;
  font-weight: 400;
  color: var(--ink2);
}
/* 開いたときの中身。summary と同じ左右の余白にそろえる */
.card.fold > *:not(summary) { margin-left: 22px; margin-right: 22px; }
.card.fold > .route-grid { margin-bottom: 18px; }

@media (prefers-reduced-motion: reduce) {
  .card.fold > summary::before { transition: none; }
}

/* ---------- 農道とは（/nodo）----------
   ★ 一覧は多いときで133本あります ★ 1列で並べると画面が縦に伸びるだけなので、
     広い画面では2段にします。狭い画面は1列のまま（段組は指で追いにくい）。 */
.nodo-list { list-style: none; padding: 0; margin: 6px 0 12px; }
.nodo-list li { padding: 3px 0; border-bottom: 1px solid var(--line); }
@media (min-width: 700px) {
  .nodo-list { columns: 2; column-gap: 24px; }
  .nodo-list li { break-inside: avoid; }
}
/* 本数の列。★ 右寄せにすること ★ 桁がそろわないと 133 と 5 が比べにくい */
.cmp td.num { text-align: right; white-space: nowrap; }
