/* 富山BASE の型（site-platform cbdaee2 の apps/toyama-base/content/assets/inner-pages.css）をそのまま写した。Mergeble は文章と写真だけを替える（docs/decisions/0015） */
/* 立地・料金・予約の 3 ページ。ホーム（home-story.css）の見出し・余白・線の言い方に合わせ、同じ部品を使い回す。 */

/* ── 3 ページ共通の頭 ── */
.page-top { padding-top: clamp(32px, 4vw, 48px); }
.page-head { min-width: 0; }
.page-title { margin-top: 18px; max-width: 17em; font-size: clamp(1.75rem, 1.45rem + 1vw, 2.5rem); line-height: 1.5; font-weight: 500; letter-spacing: .04em; text-wrap: balance; }
.page-intro { margin-top: 18px; max-width: 32em; color: var(--sub); font-size: .9rem; line-height: 2; text-wrap: pretty; }
.page-head .stay-status { margin-top: 24px; max-width: 34em; line-height: 1.8; }
.page-facts { margin-top: 28px; max-width: 32em; }
.page-facts-heading { padding-bottom: 4px; font-size: 12px; font-weight: 500; letter-spacing: .12em; color: var(--accent-d); }
.page-facts .price-row { font-size: 14px; align-items: baseline; }
.page-facts-note { margin-top: 12px; color: var(--sub); font-size: 12px; line-height: 1.9; }
.page-facts-note a, .travel-note a, .stay-note a { white-space: nowrap; }

/* ── 立地：頭（文と地図） ── */
.area-map { margin: 0; overflow: hidden; }
.map-caption { margin: 0; padding: 12px 0 14px; border-top: 1px solid var(--rule); font-size: .75rem; line-height: 1.8; color: var(--sub); }

/* ── 立地：行き先 ── */
.area-section .stay-stories { margin-top: 28px; }
.area-section .location-heading, .area-card .location-heading { margin-top: 0; }
.area-section .location-heading h3 { margin: 0; max-width: none; font-size: 1.375rem; line-height: 1.5; letter-spacing: .06em; font-weight: 500; }
.area-section .stay-copy .stay-body, .area-card .stay-body { margin-top: 12px; }
.area-facts { margin: 18px 0 0; padding-top: 4px; max-width: 32em; border-top: 1px solid var(--rule); }
.area-facts > div { display: grid; grid-template-columns: 7em minmax(0, 1fr); gap: 14px; padding: 8px 0; border-bottom: 1px solid var(--rule); }
.area-facts dt { font-size: .75rem; line-height: 1.85; letter-spacing: .06em; color: var(--mute); }
.area-facts dd { margin: 0; font-size: .8125rem; line-height: 1.85; color: var(--ink); text-wrap: pretty; }
.area-more { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(28px, 4vw, 56px); padding-top: 32px; border-top: 1px solid var(--rule); }
.area-card { min-width: 0; }
.area-card .stay-body { max-width: 30em; font-size: .875rem; }
.area-section .stay-note, .season-section .stay-note { margin-top: 28px; }

/* ── 立地：季節 ── */
.season-grid { list-style: none; margin: 28px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--rule); }
.season-item { margin: 0; padding: 22px clamp(14px, 2vw, 28px) 10px; border-left: 1px solid var(--rule); min-width: 0; }
.season-item:first-child { border-left: 0; padding-left: 0; }
.season-name { font-family: inherit; font-size: 1.75rem; line-height: 1.3; font-weight: 500; letter-spacing: .08em; }
.season-period { margin-top: 6px; font-size: .75rem; letter-spacing: .08em; color: var(--accent-d); }
.season-body { margin-top: 16px; font-size: .875rem; line-height: 1.95; color: var(--sub); text-wrap: pretty; }
.season-spots { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--rule); font-size: .75rem; line-height: 1.85; color: var(--mute); }

/* ── 立地：行き方 ── */
.travel-copy h2 { margin-top: 20px; font-size: clamp(1.5rem, 1.25rem + .8vw, 1.9rem); line-height: 1.7; letter-spacing: .035em; font-weight: 500; }
.travel-copy .jp { margin-top: 16px; max-width: 28em; color: var(--sub); font-size: .875rem; line-height: 1.95; text-wrap: pretty; }
.travel-rows .price-row { font-size: 14px; align-items: baseline; }
.travel-rows .price-row > span:last-child:not(:first-child) { max-width: 82%; }
.travel-note { margin-top: 12px; color: var(--sub); font-size: 12px; line-height: 1.9; }
.travel-section .stay-closing { margin-top: 44px; }
.closing-links { display: flex; flex-wrap: wrap; gap: 4px 28px; }

/* ── 地図 ── */
.area-map-svg { display: block; width: 100%; height: auto; }
.map-sea { fill: rgb(104 128 130 / .11); }
.map-coast { fill: none; stroke: rgb(104 128 130 / .55); stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; }
.map-ridge { fill: none; stroke: var(--mute, #69675f); stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; opacity: .7; }
.map-spoke { fill: none; stroke: var(--accent-d, #87432d); stroke-width: 1; stroke-dasharray: 1.5 5; stroke-linecap: round; opacity: .6; }
.map-dot { fill: var(--accent-d, #87432d); r: 4.5px; }
.map-hub .map-dot { r: 5.5px; }
.map-ring { fill: rgb(168 85 57 / .1); stroke: var(--accent-d, #87432d); stroke-width: 1; }
.map-label { font-size: 16px; font-weight: 500; letter-spacing: .08em; fill: var(--ink, #2b2a27); font-family: inherit; paint-order: stroke; stroke: var(--halo, #faf8f3); stroke-width: 4px; stroke-linejoin: round; }
.map-hub .map-label { font-weight: 700; fill: var(--accent-d, #87432d); }
.map-sea-label, .map-ridge-label { font-size: 14px; letter-spacing: .5em; fill: var(--sub, #55544e); font-family: inherit; }
.map-ridge-label { fill: var(--mute, #69675f); letter-spacing: .3em; }
@media (min-width: 901px) and (max-width: 1100px) {
  .map-label { font-size: 19px; stroke-width: 5px; }
  .map-sea-label, .map-ridge-label { font-size: 17px; }
}
@media (max-width: 600px) {
  .map-label { font-size: 22px; stroke-width: 5px; }
  .map-sea-label, .map-ridge-label { font-size: 22px; }
  .map-dot { r: 6.5px; }
  .map-hub .map-dot { r: 8px; }
}

/* ── 地図（本物）: Leaflet＋地理院タイル（淡色地図）。area-map.js が動くと .is-live で概念図と入れ替わる（docs/decisions/0008） ── */
.area-map-live, .map-caption-live, .map-hint-live { display: none; }
.area-map.is-live .area-map-live { display: block; }
.area-map.is-live .map-caption-live, .area-map.is-live .map-hint-live { display: inline; }
.area-map.is-live .area-map-svg, .area-map.is-live .map-caption-fallback, .area-map.is-live .map-hint-fallback { display: none; }
.area-map .area-map-live { width: 100%; aspect-ratio: 560 / 430; border-top: 2px solid var(--line-strong); background: var(--bg); font: inherit; font-size: 12px; line-height: 1.5; }
.area-map .area-map-live:focus-visible { outline: 2px solid var(--shu); outline-offset: 2px; }
/* 淡色地図の白と灰を、紙の地（--bg）に寄せる */
.area-map-tiles { filter: sepia(.32) saturate(.72) brightness(1.01); }
/* 地名の印: 点の真ん中を座標に置く（印の箱は大きさ 0）。点は太い罫で塗る（強制配色でも残る） */
.map-pin, .map-stay-pin { width: 0; height: 0; }
.area-map .map-pin-link { position: absolute; left: -7px; top: -7px; display: flex; align-items: center; gap: 6px; pointer-events: auto; color: var(--ink); text-decoration: none; white-space: nowrap; font-size: 13px; font-weight: 600; line-height: 1.4; letter-spacing: .06em; }
.map-pin.is-left .map-pin-link { left: auto; right: -7px; flex-direction: row-reverse; }
.map-pin-dot { flex: none; width: 14px; height: 14px; border: 5px solid var(--shu); border-radius: 50%; background: var(--paper); }
.map-pin-name { padding: 1px 7px; background: rgb(255 254 250 / .92); border: 1px solid var(--rule-2); }
.map-pin.is-hub .map-pin-name { color: var(--shu); font-weight: 700; border-color: var(--shu); }
.area-map .map-pin-link:hover .map-pin-name, .area-map .map-pin-link:focus-visible .map-pin-name { text-decoration: underline; text-underline-offset: 3px; }
.area-map .map-pin-link:focus-visible { outline: 2px solid var(--shu); outline-offset: 3px; }
/* 宿の所在地（仮）: 朱の破線の円（大きくした時に見える）と、点の左下の「宿（仮）」の印（上と右は行き先の地名が来やすい） */
.map-stay-area { stroke: var(--shu); stroke-width: 1.5; stroke-dasharray: 5 4; fill: var(--shu); fill-opacity: .12; }
.map-stay-pin::before { content: ""; position: absolute; left: -9px; top: -9px; width: 18px; height: 18px; border: 2px dashed var(--shu); border-radius: 50%; }
.map-stay-seal { position: absolute; right: 9px; top: 9px; padding: 2px 8px; color: var(--shu); background: var(--paper); border: 3px double var(--shu); font-size: 12px; font-weight: 700; line-height: 1.5; letter-spacing: .08em; white-space: nowrap; }
/* 拡大・縮小と出典: 紙の地に墨の罫。角は丸めず、影を付けない */
.area-map .leaflet-bar { border: 1px solid var(--line-strong); border-radius: 0; box-shadow: none; }
.area-map .leaflet-bar a, .area-map .leaflet-touch .leaflet-bar a { width: 36px; height: 36px; color: var(--shu); background: var(--paper); border-bottom: 1px solid var(--rule); border-radius: 0; font: 400 20px/34px var(--gothic); }
.area-map .leaflet-bar a:last-child { border-bottom: 0; }
.area-map .leaflet-bar a:hover, .area-map .leaflet-bar a:focus-visible { color: var(--shu); background: var(--accent-t); }
.area-map .leaflet-bar a.leaflet-disabled { color: var(--mute); background: var(--paper); }
.area-map .leaflet-container .leaflet-control-attribution { padding: 2px 8px; color: var(--sub); background: rgb(255 254 250 / .92); font-size: 11px; line-height: 1.6; }
.area-map .leaflet-control-attribution a { color: var(--accent-d); }
@media (max-width: 600px) {
  .area-map .map-pin-link { font-size: 12px; }
  .map-pin-name { padding: 0 5px; }
}
@media (forced-colors: active) {
  .map-pin-name, .map-stay-seal { forced-color-adjust: auto; }
  .map-stay-area { stroke: CanvasText; }
}

@media (max-width: 900px) {
  .area-map { max-width: 560px; margin-inline: auto; }
  .area-more { grid-template-columns: minmax(0, 1fr); gap: 36px; padding-top: 32px; }
  .season-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .season-item:nth-child(odd) { border-left: 0; padding-left: 0; }
  .season-item:nth-child(n+3) { border-top: 1px solid var(--rule); margin-top: 18px; padding-top: 26px; }
}
@media (max-width: 600px) {
  .page-title { margin-top: 16px; }
  .page-intro { margin-top: 16px; font-size: 14px; }
  .area-facts > div { grid-template-columns: 6.5em minmax(0, 1fr); gap: 10px; }
  .season-grid { grid-template-columns: minmax(0, 1fr); }
  .season-item, .season-item:first-child, .season-item:nth-child(odd) { border-left: 0; padding: 22px 0 6px; margin-top: 0; }
  .season-item + .season-item { border-top: 1px solid var(--rule); }
  .season-name { font-size: 24px; }
  .travel-rows .price-row > span:last-child:not(:first-child) { max-width: 74%; }
  .travel-section .stay-closing { margin-top: 40px; }
  .closing-links { margin-top: 6px; }
}
@media print {
  .area-card, .season-item, .area-map, .season-grid, .price-row { break-inside: avoid; }
  .stay-intro, .page-head, .booking-heading, .guide-heading { break-after: avoid; }
}

/* ── 料金 ── */
/* 料金の見かた: 箱にせず天地の罫（site-kit の .tenchi）。手順は縦に積む .flow.is-col */
.guide-card { min-width: 0; padding: 16px 0 4px; }
.guide-heading { margin-top: 10px; font-size: clamp(1.35rem, 1.2rem + .5vw, 1.6rem); line-height: 1.7; letter-spacing: .035em; font-weight: 500; }
.guide-steps { margin-top: 14px; }
/* 料金表：site-kit の帳簿の表（table.t.ledger）に、家の印と列の幅だけ足す。備考の列は置かず、注記は項目名の下に */
.price-table { margin-top: 24px; }
.price-table + .stay-note { margin-top: 18px; }
.price-table table.t { table-layout: fixed; }
.price-table .col-item { width: 31%; }
.house-head { display: inline-flex; flex-direction: column; align-items: center; gap: 6px; }
.house-head .seal { font-size: 1.05rem; }
.house-head-theme { font-size: .7rem; font-weight: 400; line-height: 1.5; letter-spacing: .04em; color: var(--sub); }
/* 例の札：箱にせず天地の罫・左上に家の印（朱の線）・合計の上に二重罫・下に予約への道（家と人数と泊数を引き継ぐ） */
.fuda-grid { list-style: none; margin: 24px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 44px); }
.fuda { margin: 0; min-width: 0; display: flex; flex-direction: column; padding: 18px 0 0; border-top: 2px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); }
.fuda-head { display: flex; align-items: center; gap: 12px; }
.fuda-head .seal { font-size: 1rem; }
.fuda-title { font-size: clamp(1.05rem, .95rem + .3vw, 1.25rem); line-height: 1.5; font-weight: 500; letter-spacing: .04em; }
.fuda-detail { margin: 10px 0 18px; font-size: .8125rem; line-height: 1.85; color: var(--sub); }
.fuda-total { margin-top: auto; padding-top: 12px; display: flex; align-items: baseline; gap: 8px; border-top: 3px double var(--rule-2); }
.fuda-total > span:first-child { margin-right: auto; font-size: .75rem; letter-spacing: .14em; color: var(--mute); }
.fuda-sum { display: inline-flex; align-items: baseline; gap: 4px; white-space: nowrap; }
.fuda-sum b { font-family: var(--mono); font-size: clamp(1.5rem, 1.3rem + .7vw, 2rem); line-height: 1.2; font-weight: 600; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.fuda-sum > span { font-size: .8125rem; color: var(--sub); }
.fuda-link { margin: 12px 0 0; padding: 0 4px 0 0; min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-top: 1px solid var(--rule); font-size: .8125rem; font-weight: 600; letter-spacing: .06em; color: var(--accent-d); text-decoration: none; }
.fuda-link:hover { background: var(--accent-t); }
.fuda-link svg { flex: none; transition: transform .16s; }
.fuda-link:hover svg { transform: translateX(3px); }
.price-flow { margin-top: 24px; }
.flow + .stay-note, .fuda-grid + .stay-note { margin-top: 22px; }
.pay-copy h2 { margin-top: 20px; font-size: clamp(1.5rem, 1.25rem + .8vw, 1.9rem); line-height: 1.7; letter-spacing: .035em; font-weight: 500; }
.pay-copy .jp { margin-top: 16px; max-width: 28em; color: var(--sub); font-size: .875rem; line-height: 1.95; text-wrap: pretty; }
.pay-rows .price-row { font-size: 14px; align-items: baseline; }
.pay-grid + .stay-closing { margin-top: 44px; }
@media (max-width: 900px) {
  .fuda-grid { grid-template-columns: minmax(0, 1fr); gap: 24px; }
}
@media (max-width: 620px) {
  .price-table .col-item { width: 34%; }
  .house-head-theme { display: none; }
  .house-head .seal { font-size: 15px; }
}
@media (max-width: 600px) {
  .pay-grid + .stay-closing { margin-top: 40px; }
  .fuda { padding-top: 16px; }
  .season-spots { padding-top: 0; border-top: 0; }
}
@media print { .fuda, .flow > li, .guide-card { break-inside: avoid; } }

/* ── 立地：地図のリンク（Google マップの検索・新しいタブ） ── */
.area-map-link { margin-top: 8px; }
.map-hint { display: flex; align-items: center; gap: 6px; margin-top: 4px; color: var(--accent-d); }
.map-hint svg { width: 14px; height: 14px; flex: none; }
.map-link:hover .map-label, .map-link:focus-visible .map-label { fill: var(--accent-d); text-decoration: underline; }
.map-link:focus-visible { outline: 2px solid var(--accent-d); outline-offset: 2px; }

/* ── 家：料金と、その家の空きを見る道 ── */
.house-book { margin-top: 10px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 16px; padding: 4px 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.house-book-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-size: 14px; font-weight: 600; letter-spacing: .06em; color: var(--accent-d); text-decoration: none; }
.house-book-link:hover { text-decoration: underline; text-underline-offset: 4px; }

/* ── 予約 ── */
/* 見出し: 左に題、右に説明。流れは下に全幅の横一列（2026-10-25・左の下に空白の帯が出ていたため組み替えた） */
.booking-head .page-intro { margin-top: 0; }
.booking-head .plan-note { margin-top: 14px; max-width: 34em; font-size: .8125rem; color: var(--ink); }
.booking-flow-strip { margin: 20px 0 8px; padding-block: 0; }
.house-picker .booking-subheading { margin: 0 0 10px; font-size: .875rem; letter-spacing: .06em; }
.house-picker { margin: 0 0 22px; container: house-picker / inline-size; }
/* 家を選ぶ: 箱にせず、写真の下に罫で区切った字の段。選んだ家は鉤の角（site-kit の .kagi）と薄い朱 */
.house-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.house-card { min-width: 0; padding: 4px; cursor: pointer; transition: background-color .15s; }
.house-card.kagi::before, .house-card.kagi::after { opacity: 0; transition: opacity .15s; }
.house-card:hover { background: rgb(168 85 57 / .035); }
.house-card:hover::before, .house-card:hover::after { --kagi-color: var(--rule-2); opacity: 1; }
.house-card.is-selected { background: var(--accent-t); }
.house-card.is-selected::before, .house-card.is-selected::after { --kagi-color: var(--shu); opacity: 1; }
.house-card .photo { aspect-ratio: 3/2; border: 0; background: transparent; }
.house-card .photo img { width: 100%; height: 100%; object-fit: cover; }
.house-card .photo-note { font-size: 11px; right: 6px; bottom: 6px; }
.house-card-body { margin-top: 6px; padding: 6px 4px 2px; border-top: 1px solid var(--line-strong); }
.booking-page .house-pick { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; width: 100%; padding: 0; border: 0; background: none; font: inherit; color: var(--ink); text-align: left; cursor: pointer; }
.house-pick::after { content: ''; position: absolute; inset: 0; }
@supports selector(:has(*)) { .booking-page .house-pick:focus-visible { outline: 0; } }
.booking-page .house-pick:disabled { opacity: 1; cursor: inherit; }
.house-card:has(.house-pick:focus-visible) { outline: 2px solid var(--accent-d); outline-offset: 3px; }
.house-name { font-size: 1.2rem; font-weight: 500; letter-spacing: .08em; line-height: 1.4; }
.house-theme { font-size: .75rem; color: var(--sub); line-height: 1.6; }
.house-price { margin-top: 4px; display: flex; align-items: baseline; gap: 4px; flex-wrap: wrap; font-size: .7rem; color: var(--sub); line-height: 1.6; }
.house-price b { font-size: .95rem; font-weight: 500; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.house-state { display: none; margin-top: 6px; font-size: 11px; letter-spacing: .12em; color: var(--accent-d); }
.house-card.is-selected .house-state { display: block; }
.house-note { margin-top: 8px; font-size: .75rem; line-height: 1.8; color: var(--sub); }
.calendar-legend { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 11px; color: var(--sub); }
.calendar-legend li { margin: 0; display: inline-flex; align-items: center; gap: 6px; }
.calendar-legend li::before { content: ''; width: 12px; height: 12px; border: 0; border-bottom: 1px solid var(--mute); box-sizing: border-box; }
.calendar-legend .legend-today::before { border: 0; background: radial-gradient(circle, var(--accent-d) 0 2px, transparent 2.5px); }
.calendar-legend .legend-selected::before { border: 1px solid var(--shu); background: var(--accent-t); }
.calendar-legend .legend-range::before { border: 0; background: var(--accent-t); }
.calendar-legend .legend-unavailable::before { border: 0; background: linear-gradient(135deg, transparent calc(50% - .5px), #8a8882 calc(50% - .5px) calc(50% + .5px), transparent calc(50% + .5px)); }
.booking-day.is-past:disabled { text-decoration: none; color: #8a8882; background: transparent; }
.booking-day.is-today::after { content: ''; position: absolute; left: 50%; bottom: 6px; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: var(--accent-d); }
@media (max-width: 900px) {
  .booking-head { gap: 18px; }
  /* 狭い画面でも流れは縦に積まず、番号と名前だけの一列にする（予約の欄まで早く届くように） */
  .booking-page .flow.booking-flow-steps { grid-auto-flow: column; grid-template-columns: none; }
  .booking-page .flow.booking-flow-steps > li, .booking-page .flow.booking-flow-steps > li + li { position: static; padding: 12px 6px 2px; border-top: 0; border-left: 1px solid var(--rule); }
  .booking-page .flow.booking-flow-steps > li:first-child { padding-left: 0; border-left: 0; }
  .booking-page .flow.booking-flow-steps > li::before { position: static; margin-bottom: 4px; font-size: 11px; }
  .booking-flow-steps .flow-label { font-size: 12px; line-height: 1.55; letter-spacing: .02em; }
  .booking-flow-steps .flow-body { display: none; }
}
@container house-picker (max-width: 560px) {
  .house-cards { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .house-card { display: grid; grid-template-columns: clamp(104px, 36%, 180px) minmax(0, 1fr); align-items: stretch; }
  .house-card .photo { aspect-ratio: auto; height: 100%; min-height: 88px; }
  .house-card-body { padding: 8px 10px; align-self: center; }
}
@media (hover: none) { .house-card:not(.is-selected):hover { background: none; } .house-card:not(.is-selected):hover::before, .house-card:not(.is-selected):hover::after { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .house-card { transition: none; } }
@media (forced-colors: active) {
  .house-card.is-selected { outline: 2px solid Highlight; }
  .booking-day[aria-pressed=true] { outline: 2px solid Highlight; outline-offset: -2px; }
  .booking-day.is-today::after { background: CanvasText; forced-color-adjust: none; }
  .calendar-legend .legend-today::before { background: radial-gradient(circle, CanvasText 0 2px, transparent 2.5px); forced-color-adjust: none; }
  .map-label { stroke: Canvas; }
  .calendar-legend .legend-selected::before { border-color: Highlight; background: Highlight; forced-color-adjust: none; }
}
.company-closing { margin-top: 36px; padding-block: 18px; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }

/* ── 窓口（0008）: 左に入力欄、右に問い合わせの流れと予約への道。下によくある質問 ── */
.contact-split { grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr); }
.contact-main .page-intro { margin-top: 14px; }
.contact-main .form { max-width: none; gap: 18px; }
.contact-main .form button:disabled { color: var(--sub); background: none; border: 1px dashed var(--mute); padding: 12px 22px; font-size: .875rem; }
.contact-aside { display: grid; gap: 20px; padding-top: 4px; }
.contact-flow { padding: 14px 0 4px; }
.contact-flow .flow { margin-top: 6px; border-top: 0; }
.contact-reserve-heading { font-size: 1.05rem; font-weight: 500; letter-spacing: .04em; line-height: 1.7; }
.contact-reserve .jp { margin-top: 6px; font-size: .85rem; line-height: 1.9; color: var(--sub); }
.contact-reserve .closing-links { margin-top: 4px; }
.faq-head h2, .company-section-head h2 { margin-top: 16px; font-size: clamp(1.4rem, 1.2rem + .5vw, 1.7rem); line-height: 1.7; letter-spacing: .035em; font-weight: 500; }
.faq-head .jp, .company-section-head .jp { margin-top: 12px; max-width: 26em; font-size: .875rem; line-height: 1.95; color: var(--sub); }
.faq summary { padding-top: 15px; padding-bottom: 15px; }
.faq summary::before, .faq summary::after { top: 15px; }
.faq .a { padding-bottom: 18px; font-size: .9rem; }
.faq .a a { white-space: nowrap; }
@media (max-width: 900px) { .contact-split { grid-template-columns: minmax(0, 1fr); } }

/* ── 会社概要（0008）: 会社の基本は帳簿の罫（site-kit の .spec.ledger）。左に縦書きの社名の札 ── */
main > section:not(.admin-page):has(.company-tl) { padding-top: 40px; }
.company-lead { margin-top: 18px; font-size: clamp(1.15rem, 1.05rem + .35vw, 1.35rem); font-weight: 500; letter-spacing: .08em; line-height: 1.8; color: var(--accent-d); }
.company-head .page-intro { margin-top: 12px; }
.company-name { display: none; }
@media (min-width: 901px) {
  .company-head .page-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: clamp(20px, 3vw, 40px); align-content: start; }
  .company-head .page-head > * { grid-column: 1; }
  .company-head .page-head > .company-name { display: block; grid-column: 2; grid-row: 1 / span 5; align-self: start; margin: 4px 0 0; padding: 18px 10px; border-inline: 1px solid var(--line-strong); font-size: 1.25rem; font-weight: 500; line-height: 1.4; color: var(--ink); }
}
.company-profile .spec.ledger dt { font-size: .8125rem; }
.company-profile .spec.ledger dd { font-size: .9375rem; line-height: 1.95; }
.company-profile .spec.ledger dd a { white-space: nowrap; }
.company-houses { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); }
.company-houses li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 18px; align-items: start; margin: 0; padding: 16px 0; }
.company-houses li + li { border-top: 1px solid var(--line); }
.company-houses .seal { font-size: 1rem; }
.company-house-theme { font-size: .9rem; font-weight: 600; letter-spacing: .04em; line-height: 1.6; }
.company-house-body { margin-top: 4px; font-size: .85rem; line-height: 1.9; color: var(--sub); }
.company-more { margin-top: 16px; max-width: 36em; font-size: .85rem; line-height: 1.95; color: var(--sub); }
.company-tl { margin-top: 2px; }
.company-tl li { padding-bottom: 24px; }
.company-tl time { font-family: inherit; font-size: .8125rem; letter-spacing: .06em; color: var(--accent-d); }
.company-tl .jp { font-size: .9rem; line-height: 1.8; }
.company-history-note { margin-top: 20px; }

/* ── 個人情報：頁名と制定日を左に、7 項目を帳簿の罫で読む ── */
.privacy-layout { display: grid; grid-template-columns: minmax(0, .72fr) minmax(0, 1.28fr); gap: clamp(40px, 6vw, 84px); align-items: start; }
.privacy-head { position: sticky; top: 108px; min-width: 0; }
.privacy-head .page-title { max-width: 12em; font-size: clamp(1.8rem, 1.45rem + 1vw, 2.6rem); font-weight: 500; }
.privacy-lead { max-width: 34em; margin-top: 20px; color: var(--sub); font-size: .9rem; line-height: 2.05; text-wrap: pretty; }
.privacy-date { margin-top: 24px; padding-top: 12px; border-top: 1px solid var(--rule); }
.privacy-document { border-top: 2px solid var(--line-strong); }
.privacy-entry { padding: 24px 0; border-bottom: 1px solid var(--rule); scroll-margin-top: 96px; }
.privacy-entry h2 { color: var(--accent-d); font-size: 1.05rem; font-weight: 600; line-height: 1.6; letter-spacing: .05em; }
.privacy-entry p, .privacy-entry ul { max-width: 44em; margin-top: 12px; color: var(--sub); font-size: .925rem; line-height: 2.05; text-wrap: pretty; }
.privacy-entry li + li { margin-top: 6px; }
@media (max-width: 900px) {
  .privacy-layout { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .privacy-head { position: static; }
  .privacy-head .page-title { max-width: 17em; }
  .privacy-lead, .privacy-date { max-width: 40em; }
  .privacy-entry { scroll-margin-top: 80px; }
}
@media (max-width: 600px) {
  .privacy-entry { padding: 20px 0; }
  .privacy-entry p, .privacy-entry ul { font-size: .9rem; }
}
@media print {
  .privacy-head { position: static; }
  .privacy-entry { break-inside: avoid; }
}

/* ── 完了票・案内票：短いページも、印と天地罫で目的地を示す ── */
.status-page { display: flex; align-items: center; min-height: clamp(360px, 55svh, 560px); }
.status-layout { display: grid; grid-template-columns: 56px minmax(0, 46rem); gap: clamp(24px, 4vw, 48px); align-items: start; width: 100%; padding-block: 24px; border-block: 1px solid var(--line-strong); }
.status-mark { display: grid; place-items: center; width: 56px; height: 56px; border: 3px double var(--shu); color: var(--shu); }
.status-mark svg { width: 28px; height: 28px; }
.status-copy { min-width: 0; }
.status-copy .page-title { margin-top: 0; font-size: clamp(1.75rem, 1.4rem + 1vw, 2.6rem); font-weight: 500; }
.status-lead { max-width: 42em; margin-top: 18px; color: var(--sub); font-size: .95rem; line-height: 2; text-wrap: pretty; }
.status-action { margin-top: 24px; }
.status-action .btn-primary { min-height: 48px; }
@media (max-width: 600px) {
  .status-page { min-height: 52svh; }
  .status-layout { grid-template-columns: 44px minmax(0, 1fr); gap: 18px; padding-block: 20px; }
  .status-mark { width: 44px; height: 44px; }
  .status-mark svg { width: 24px; height: 24px; }
  .status-lead { font-size: .9rem; }
}
@media print {
  .status-page { min-height: 0; }
}
