/*
Theme Name: StaySpot
Description: 泊まれる場所ポータルのテーマ。スポット個別ページとファセット一覧をSSRで描画する。
Version: 0.1.0
Requires PHP: 8.1
*/

:root {
  --ground: #f5f7f8;
  --surface: #ffffff;
  --ink: #16202a;
  --ink-soft: #46545f;
  --muted: #6e7f8b;
  --rule: #dde3e7;
  --accent: #0e6459;
  --accent-ink: #ffffff;
  --accent-bg: #e2efec;
  /* 天気予報カードのアクセント装飾(2026-08-25)用。--accent-bgよりも一段濃い、
     --accentを薄めた縁取り色。ダークモード用の上書きは意図的に追加しない
     (ダークモード対応は方針として廃止済み、design-constraints-brief.md §2・§3参照)。 */
  --accent-line: #93b9b4;
  --warn: #7a5b12;
  --warn-bg: #f4eeda;
  --danger: #9e3f2e;
  --danger-bg: #f2e4e0;
  --shadow: 0 1px 2px rgba(22, 32, 42, .06);
  --radius: 8px;
  --radius-sm: 4px;

  /* ---------- design refresh 2026-08: カテゴリ識別トークン（判断A） ---------- */
  /* 「泊まる」は既存の --accent/--accent-bg をそのまま使う（正方形マーク）。
     「遊ぶ」「食べる」用に同トーンの新トークンを追加する（置き換えではなく追加）。 */
  --play:    #2f5d78;
  --play-bg: #e4edf2;
  --eat:     #6d5a20;
  --eat-bg:  #f0eddf;

  /* ---------- design refresh 2026-08: 決済ブランド識別バッジ配色（対応決済表示） ---------- */
  /* 国際ブランドのみブランド色相当の単色を割り当てる（ロゴ図形の再現はせず、
     テキストラベル＋色分けのみ）。cash/other_qr/ic_cardは特定ブランドが無いため
     色トークンを割り当てない（.ss-payment-badgeのデフォルト無彩色がそのまま効く）。 */
  --pay-visa:          #1a4fd6;
  --pay-visa-bg:       #e7edfc;
  --pay-mastercard:    #d9720a;
  --pay-mastercard-bg: #faecd9;
  --pay-jcb:           #1450a3;
  --pay-jcb-bg:        #e3edf8;
  --pay-amex:          #2f6fa8;
  --pay-amex-bg:       #e6eff5;
  --pay-dinersclub:    #35678a;
  --pay-dinersclub-bg: #e6eef2;
  --pay-discover:      #c1560c;
  --pay-discover-bg:   #f8e9dc;
  --pay-unionpay:      #b3242f;
  --pay-unionpay-bg:   #f6e2e2;
  --pay-paypay:        #d1002b;
  --pay-paypay-bg:     #fbe1e6;

  /* ---------- design refresh 2026-08: スペーシングスケール ---------- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 28px;
  --space-7: 44px;

  /* ---------- design refresh 2026-08-25: 差し色(spark) ---------- */
  /* ブランドカラー(--accent、深緑)はナビ・見出し等の基幹色として維持したまま、
     お気に入り・「増えた」系の前向きな知らせ等、ワクワクを添えたい瞬間だけに使う
     第2のアクセント。「焚き火のオレンジ」案(依頼者選定、2026-08-25)。
     疑いの瞬間(.ss-doubt-hint)・迷いの気配/決着のこだま(.ss-behavior-echo)は
     誇張しない静かなトーンが設計意図のため、意図的にsparkを使わず現状維持する。 */
  --spark: #b6551f;
  --spark-bg: #f5e6da;
}

/* 2026-08-25: ダークモード対応を廃止（design-constraints-brief.md 6章参照）。
   以前はここに @media (prefers-color-scheme: dark) の :root 上書きがあったが削除し、
   常に上記のライトモード変数のみを使う。 */

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--ground);
  color: var(--ink);
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Noto Sans JP", system-ui, sans-serif;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); }
a:hover { text-decoration-thickness: 2px; }

img { max-width: 100%; height: auto; }

/* keyboard focus — use the theme accent instead of the browser default blue ring */
a:focus-visible, button:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
.ss-filters a:focus-visible, .ss-badge:focus-visible {
  outline-offset: 1px;
}

.ss-wrap { max-width: 860px; margin: 0 auto; padding: 1.75rem 1.25rem 4rem; }

/* ---------- header / footer ---------- */

.ss-site-header {
  border-bottom: 1px solid var(--rule);
  background: var(--surface);
  box-shadow: var(--shadow);
}
.ss-site-header .inner {
  max-width: 860px; margin: 0 auto; padding: .875rem 1.25rem 0;
  display: flex; flex-direction: column;
}
.ss-site-header__top {
  display: flex; justify-content: space-between; align-items: center; gap: .5rem 1rem;
  flex-wrap: wrap;
}
/* design refresh 2026-08-26: ロゴ案5-A（Claude Design案「あそVIVA.倶楽部
   ヒーロー＆ロゴ案」#Logo5A準拠）。稜線＋リングの図形バッジ＋2行ワードマーク。 */
.ss-site-header a.brand {
  display: inline-flex; align-items: center; gap: .5rem;
  text-decoration: none; color: var(--ink); white-space: nowrap;
}
.brand__mark { width: 22px; height: 22px; flex: 0 0 auto; color: var(--accent); }
.brand__word { display: flex; flex-direction: column; line-height: 1.1; }
.brand__word-main { font-weight: 700; font-size: .95rem; letter-spacing: .005em; }
.brand__word-sub { font-size: .58rem; color: var(--muted); letter-spacing: .16em; margin-top: 2px; }

/* グローバルナビゲーション（提案#7 案2、nav-proposal-2026-08-19.md）。
   カテゴリ群（.ss-nav-category）とユーティリティ群（.ss-nav-utility）を
   別々の<nav>として分け、将来の項目追加が既存グループへの挿入だけで
   完結するようにしている。 */
.ss-nav { display: flex; align-items: center; flex-wrap: wrap; gap: .1rem; margin: 0; padding: 0; }

/* design refresh 2026-08: カテゴリナビをタブ形式に変更
   （design-export/Design Proposal.dc.html #3a 41-52行目 / #3b 214-225行目）。
   現在地には下線（accent・font-weight 600）、非現在地は下線を透明のまま確保して
   ホバー時のガタつきを防ぐ。header自体の border-bottom（.ss-site-header）に
   タブの下線が視覚的に接するよう、.inner側のpadding-bottomを0にして
   このnavを header の最下段に置いている（header.php参照）。 */
.ss-nav-category { font-size: .875rem; gap: 1.5rem; margin-top: .625rem; }
.ss-nav-category a {
  color: var(--ink-soft); text-decoration: none;
  padding: .5rem 0 .56rem;
  border-bottom: 2px solid transparent;
  transition: color .15s ease, border-color .15s ease;
}
.ss-nav-category a:hover { color: var(--accent); }
.ss-nav-category a[aria-current="page"] {
  color: var(--accent); font-weight: 600; border-bottom-color: var(--accent);
}

.ss-nav-utility { gap: .15rem; }
.ss-nav-utility a {
  display: inline-flex; align-items: center; gap: .35rem; color: var(--muted); text-decoration: none;
  padding: .35rem .55rem; border-radius: var(--radius-sm); font-size: .82rem;
}
.ss-nav-utility a:hover { color: var(--accent); background: var(--accent-bg); }
.ss-nav-utility a[aria-current="page"] { color: var(--accent); }
.ss-nav-utility svg { width: 1.05em; height: 1.05em; flex: 0 0 auto; }
.ss-nav-utility .label-desktop { display: inline; }

.ss-footer { border-top: 1px solid var(--rule); margin-top: 3.5rem; background: var(--surface); }
.ss-footer .inner {
  max-width: 860px; margin: 0 auto; padding: 1.5rem 1.25rem;
  font-size: .8rem; line-height: 1.8; color: var(--muted);
}
.ss-footer a { color: var(--ink-soft); }

/* ---------- typography ---------- */

.ss-crumb { font-size: .8rem; color: var(--muted); margin-bottom: 1rem; }
.ss-crumb a { color: var(--muted); }
.ss-crumb a:hover { color: var(--accent); }

h1 {
  font-size: clamp(1.4rem, 1.1rem + 1.2vw, 1.85rem);
  line-height: 1.4; margin: 0 0 .6rem; text-wrap: balance;
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
}
h2 {
  font-size: 1.05rem; font-weight: 700; margin: 2.4rem 0 .9rem;
  padding-bottom: .4rem; border-bottom: 1px solid var(--rule);
  letter-spacing: .01em;
}
h2:first-of-type { margin-top: 1.8rem; }

h3 {
  font-size: .92rem; font-weight: 700; color: var(--ink-soft);
  margin: 1.6rem 0 .7rem; letter-spacing: .01em;
}

main.ss-wrap > p { color: var(--ink-soft); }

/* ---------- top page: hero ---------- */

/* design refresh 2026-08-26: 依頼者要望「トップページくらいはメインヴィジュアルが
   欲しい」を受け、写真ヒーローを再導入（Claude Design案「あそVIVA.倶楽部
   ヒーロー＆ロゴ案」#Main準拠）。.ss-hero-photo は .ss-wrap の外側に置かれる
   フルブリード（画面端まで）の写真バンドで、見出し・導線をその上に重ねる。
   画像は生成AIによる風景イメージであり、実在の特定施設を写したものではない
   （design-constraints-brief.md §4-3の「実在しない施設写真」規制はここでは
   写真そのものを禁じているわけではなく、他施設の写真の無断使用を禁じる趣旨
   のため抵触しない）。件数カードは従来どおり写真の下、通常の860px幅コンテナ内に残す。 */
.ss-hero-photo {
  position: relative;
  width: 100%;
  height: 380px;
  overflow: hidden;
  margin: 0 0 1.6rem;
}
.ss-hero-photo__img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: center 58%;
  display: block;
}
.ss-hero-photo__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(14, 20, 24, 0) 30%, rgba(12, 18, 21, .72) 100%);
}
.ss-hero-photo__content {
  position: relative; z-index: 1; height: 100%; box-sizing: border-box;
  max-width: 860px; margin: 0 auto; padding: 0 1.25rem 1.8rem;
  display: flex; flex-direction: column; justify-content: flex-end;
}
.ss-hero-photo__content .ss-hero-eyebrow { color: rgba(255, 255, 255, .85); }
.ss-hero-photo__content .ss-hero-title { color: #fff; text-shadow: 0 1px 4px rgba(0, 0, 0, .3); }
.ss-hero-photo__content .ss-hero-cta--outline {
  background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .55); color: #fff;
}
.ss-hero-photo__content .ss-hero-cta--outline:hover { border-color: #fff; color: #fff; }

.ss-hero {
  margin: 0 0 1.6rem;
  padding: 1.9rem 1.6rem 1.8rem;
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
/* 写真ヒーロー導入後の下段（件数カードのみを収める）。見出し・導線は
   .ss-hero-photo側へ移したため、カード風の枠は不要になり素の余白のみにする。 */
.ss-hero--compact {
  padding: 0; margin: 0 0 1.6rem;
  background: none; border: none; box-shadow: none;
}
.ss-hero-eyebrow {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px; letter-spacing: .14em; color: var(--muted);
  margin: 0 0 1rem;
}
.ss-hero-title {
  font-size: 1.6rem; font-weight: 600; line-height: 1.55;
  margin: 0 0 1.1rem; letter-spacing: .01em;
  border-bottom: none; padding-bottom: 0;
  display: block;
}
.ss-hero-lede {
  font-size: .92rem; line-height: 1.95; color: var(--ink-soft);
  margin: 0 0 1.6rem; max-width: 38rem;
}
.ss-hero-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin: 0 0 2rem; }
.ss-hero-cta {
  display: inline-flex; align-items: center;
  font-size: .92rem; padding: .75rem 1.4rem; border-radius: var(--radius);
  background: var(--accent); color: var(--accent-ink); text-decoration: none; font-weight: 600;
  transition: opacity .15s ease;
}
.ss-hero-cta:hover { opacity: .9; text-decoration: none; }
.ss-hero-cta--outline {
  background: var(--surface); border: 1px solid var(--rule); color: var(--ink); font-weight: 400;
}
.ss-hero-cta--outline:hover { border-color: var(--accent); color: var(--accent); opacity: 1; }

/* design refresh 2026-08: ヒーロー直下の泊/遊/食 統計グリッド。既存の
   .ss-card__mark（一覧カード左面の縦長マーク、76px幅）とは別の、もっと
   コンパクトな新規コンポーネント（design-export/Design Proposal.dc.html
   #3a 64-89行目）。カテゴリ色の面（塗り）は使わず、8x8pxの幾何形アイコンのみで
   識別する（見出しの視覚的な主張を抑え、件数を主役にするため）。 */
.ss-hero-stats {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem;
}
.ss-stat-card {
  border: 1px solid var(--rule); border-radius: var(--radius); padding: 1rem;
  background: var(--surface); box-shadow: var(--shadow);
}
.ss-stat-card__head { display: flex; align-items: center; gap: .5rem; margin-bottom: .6rem; }
.ss-stat-card__glyph { width: 8px; height: 8px; flex: 0 0 auto; background: var(--accent); }
.ss-stat-card__glyph--stay { background: var(--accent); }
.ss-stat-card__glyph--play { background: var(--play); transform: rotate(45deg); }
.ss-stat-card__glyph--eat { background: var(--eat); border-radius: 50%; }
.ss-stat-card__label { font-size: .95rem; font-weight: 600; color: var(--ink); }
.ss-stat-card__count {
  font-size: 1.4rem; color: var(--ink); font-variant-numeric: tabular-nums; margin-bottom: .5rem;
}
.ss-stat-card__count span { font-size: .75rem; color: var(--muted); }
.ss-stat-card__desc { font-size: .76rem; line-height: 1.75; color: var(--muted); }

@media (max-width: 640px) {
  .ss-hero-photo { height: 300px; }
  .ss-hero-photo__content { padding: 0 1rem 1.4rem; }
  .ss-hero { padding: 1.8rem 1rem 2rem; }
  .ss-hero-title { font-size: 1.3rem; }
  .ss-hero-stats { grid-template-columns: 1fr; gap: .6rem; }
}

@media (max-width: 480px) {
  .ss-hero-photo { height: 240px; }
}

/* ---------- top page: section heading + count（design refresh 2026-08） ---------- */

/* 「条件から探す」見出しの右にチップ総数を薄い色で表示
   （design-export/Design Proposal.dc.html #3a 94-97行目）。 */
.ss-section-head {
  display: flex; align-items: baseline; justify-content: space-between;
  margin: 1.6rem 0 .7rem;
}
.ss-section-head h3 { margin: 0; }
.ss-section-count { font-size: .78rem; color: var(--muted); font-variant-numeric: tabular-nums; }

/* ---------- top page: category sections (泊まる / 遊ぶ / 食べる) ---------- */

.ss-category { margin-top: .5rem; }
.ss-category + .ss-category { margin-top: 1rem; }

.ss-category-placeholder {
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  padding: .2rem 1.2rem 1.2rem;
}
.ss-category-placeholder h2 { border-bottom: none; margin-bottom: .3rem; }
.ss-placeholder-note { color: var(--muted); font-size: .88rem; line-height: 1.8; margin: 0; }

/* small inline meta text — replaces repeated inline style="font-size:...;color:var(--muted)" */
.ss-meta-inline { font-size: .78rem; color: var(--muted); margin-left: .5rem; font-weight: 400; }

/* design refresh 2026-08: 数値表示（確認日・件数・確認率・距離）は桁が動いても
   横幅が揃うよう等幅数字にする。意味のあるデータ変更ではなく、純粋な書体設定。
   white-space: nowrap は、幅の狭いカードの flex 内で日本語テキストが1文字ずつ
   折り返される事故を防ぐため（折り返し自体は親の flex-wrap 側に委ねる）。 */
.ss-meta, .ss-count, .ss-rate, .ss-distance {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  white-space: nowrap;
}

/* small explanatory paragraph under a table — replaces repeated inline style paragraphs */
.ss-hint { font-size: .84rem; color: var(--ink-soft); margin: .6rem 0 0; line-height: 1.7; }

/* ---------- summary / editorial / notes ---------- */

.ss-summary {
  background: var(--surface); border: 1px solid var(--rule); border-left: 3px solid var(--accent);
  border-radius: var(--radius-sm);
  padding: 1rem 1.2rem; margin: 1.1rem 0 1.6rem; font-size: .95rem; color: var(--ink-soft);
  line-height: 1.75;
}

.ss-editorial {
  background: var(--accent-bg); border-radius: var(--radius-sm);
  padding: .3rem 1.2rem; margin: 1.2rem 0; color: var(--ink);
  font-size: .92rem; line-height: 1.8;
}
.ss-editorial p { margin: .8rem 0; }

.ss-note {
  background: var(--warn-bg); border-left: 3px solid var(--warn);
  padding: .8rem 1.1rem; font-size: .84rem; color: var(--ink-soft); margin: 1.1rem 0;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0; line-height: 1.7;
}

/* 閉業したスポットは一目で分かるようにする。情報としては残すが、選択肢としては沈める。 */
.ss-closed-notice {
  background: var(--danger-bg); border-left: 3px solid var(--danger); color: #6d2c20;
  padding: 1rem 1.2rem; margin: 1.1rem 0; font-weight: 600;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}

/* 閉業・季節休業の根拠（field_evidenceのstatusキー）。定型文の下に、
   控えめなトーンで出す。根拠が無いスポットではこの要素自体が出力されない。 */
.ss-closed-notice__evidence {
  margin: .5rem 0 0; padding-top: .5rem; border-top: 1px solid rgba(109, 44, 32, .2);
  font-size: .8rem; font-weight: 400; line-height: 1.7; color: rgba(109, 44, 32, .88);
}
.ss-closed-notice__evidence .src-url { display: inline-block; word-break: break-all; }

.ss-closed-section { margin-top: 3rem; padding-top: 1.2rem; border-top: 2px solid var(--rule); }
.ss-closed-section h2 { color: var(--danger); border-bottom-color: var(--danger-bg); margin-top: 0; }

/* 「迷いの気配」「決着のこだま」(2026-08-25追加)。ss-note/ss-closed-noticeのような
   警告色は使わない。件数・人数を主張しない控えめな一文のみを、静かなトーンで出す
   (「不意打ち」原則: 誇張しない)。 */
.ss-behavior-echo {
  margin: 1rem 0; padding: .6rem 1rem; font-size: .84rem; color: var(--ink-soft);
  border-left: 2px solid var(--rule); line-height: 1.7; font-style: italic;
}
.ss-behavior-echo p { margin: .3rem 0; }
.ss-behavior-echo p:first-child { margin-top: 0; }
.ss-behavior-echo p:last-child { margin-bottom: 0; }

/* 2026-08-25: ダークモード廃止に伴い、.ss-closed-noticeのダーク専用上書きも削除。 */

/* ---------- badges ---------- */

.ss-badge {
  display: inline-flex; align-items: center; font-size: .72rem; font-weight: 700;
  padding: .2rem .55rem; border-radius: 999px; line-height: 1.4;
  background: var(--accent-bg); color: var(--accent); white-space: nowrap;
}
.ss-badge.warn { background: var(--warn-bg); color: var(--warn); }
.ss-badge.closed { background: var(--danger-bg); color: var(--danger); }

h1 .ss-badge { font-size: .68rem; }

/* ---------- tri-state / value helpers ---------- */

.ss-yes { color: var(--accent); font-weight: 600; }
.ss-no  { color: var(--muted); }
.ss-unknown { color: var(--muted); font-style: italic; }
.ss-prohibited { color: var(--danger); font-weight: 600; }
.ss-unconfirmed { color: var(--warn); font-weight: 600; }

/* ---------- field-level evidence disclosure (出典・口コミの開示) ---------- */

/* 設計: stayspot-docs/field-level-evidence-design.md 2-1/2-2。
   デフォルト非表示・ユーザー操作で開示という原則をネイティブの
   <details>/<summary> で実現する（軽量・JS不要・アクセシブル）。
   ネイティブのマーカー矢印は既存トーンに馴染まないため、自前の小さな
   開閉アイコンに差し替える。情報量を増やしすぎないよう、確定項目
   （ss-yes/ss-no）の見た目自体は変えず、控えめなアイコンだけを添える。 */
details.ss-evidence { display: inline-block; }
details.ss-evidence > summary {
  display: inline-flex; align-items: center; gap: .3rem;
  cursor: pointer; list-style: none;
}
details.ss-evidence > summary::-webkit-details-marker { display: none; }
details.ss-evidence > summary::marker { content: ""; }
details.ss-evidence > summary::after {
  content: "";
  flex: 0 0 auto;
  width: .5em; height: .5em;
  border-right: 1.5px solid var(--muted);
  border-bottom: 1.5px solid var(--muted);
  transform: rotate(45deg);
  margin-left: .1rem;
  transition: transform .15s ease, border-color .15s ease;
}
details.ss-evidence > summary:hover::after { border-color: var(--accent); }
details.ss-evidence[open] > summary::after { transform: rotate(-135deg); }

.ss-evidence-body {
  margin-top: .4rem; padding: .55rem .75rem;
  background: var(--ground); border: 1px solid var(--rule); border-radius: var(--radius-sm);
  font-size: .78rem; color: var(--ink-soft); line-height: 1.75;
  max-width: 32rem;
}
.ss-evidence-body .src-url { display: inline-block; word-break: break-all; color: var(--muted); }
.ss-evidence-body p { margin: 0 0 .5rem; }
.ss-evidence-body p:last-child { margin-bottom: 0; }

/* 出典・確認方法の共通凡例（UXフェーズ1 #6）。カードごとの繰り返しではなく
   ページに1箇所だけ置く。既存の details.ss-evidence をそのまま流用し、
   ブロック要素として単独行に置けるようにする点だけ差分を足す。 */
.ss-glossary { display: block; margin: 1.1rem 0 1.6rem; }
.ss-glossary > summary { font-size: .82rem; color: var(--muted); }
.ss-glossary > summary:hover { color: var(--ink-soft); }

/* 口コミあり（未確定）: 「未確認」とは見た目を変えるが、true/falseの色
   （ss-yes/ss-no）は使わない。件数何件あっても確定情報には昇格させない
   という原則をここでも崩さない。 */
.ss-review {
  text-decoration: underline dotted;
  text-decoration-color: var(--muted);
  text-underline-offset: 2px;
}
.ss-review-tag {
  display: inline-block; margin-left: .3rem;
  font-size: .66rem; font-weight: 600; color: var(--accent);
  background: var(--accent-bg); border-radius: 999px;
  padding: .05rem .45rem; line-height: 1.5; vertical-align: middle;
}

/* ---------- info table (single-spot matrix) ---------- */

table.ss-matrix {
  width: 100%; border-collapse: separate; border-spacing: 0;
  font-size: .92rem;
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  overflow: hidden; margin: 0 0 .5rem;
}
table.ss-matrix tr:not(:last-child) th,
table.ss-matrix tr:not(:last-child) td {
  border-bottom: 1px solid var(--rule);
}
table.ss-matrix th, table.ss-matrix td {
  text-align: left; padding: .6rem .9rem; vertical-align: top;
}
table.ss-matrix th {
  width: 11em; color: var(--ink-soft); font-weight: 600; font-size: .82rem;
  background: color-mix(in srgb, var(--ground) 60%, var(--surface));
}
table.ss-matrix td.num { font-variant-numeric: tabular-nums; }

/* ---------- card list / grid ---------- */

.ss-list {
  list-style: none; padding: 0; margin: 0 0 1rem;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: .9rem;
}
.ss-card {
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  padding: 1rem 1.15rem; box-shadow: var(--shadow);
  display: flex; flex-direction: column; gap: .4rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.ss-card:hover { border-color: var(--accent); }
.ss-card a.name {
  font-weight: 600; font-size: 1rem; text-decoration: none; color: var(--ink);
  line-height: 1.5;
}
.ss-card a.name:hover { color: var(--accent); }
.ss-card .meta { font-size: .82rem; color: var(--ink-soft); }
.ss-card .src { font-size: .72rem; color: var(--muted); }

.ss-card.is-closed { opacity: .72; border-style: dashed; box-shadow: none; }
.ss-card.is-closed a.name { text-decoration: line-through; }

/* ---------- 個別ページ: クロスドメイン相互リンク導線 ---------- */
/* 同一の実在施設が別ドメインにも掲載されている場合の案内（\StaySpot\LinkedSpots、
   functions.php の stayspot_linked_spots_html()）。カード一覧側の複数マーク
   表示（.ss-card__mark--split、下記）と対になる個別ページ側の追加導線。
   リンクが無いスポット（大半）ではヘルパーが空文字列を返すため、
   このセクション自体が出力されない＝既存ページの見た目に影響しない。 */
.ss-linked-spots {
  background: var(--surface); border: 1px solid var(--rule); border-left: 3px solid var(--accent);
  border-radius: var(--radius-sm);
  padding: 1rem 1.2rem; margin: 1.1rem 0 1.6rem;
}
.ss-linked-spots h2 { margin: 0 0 .3rem; border-bottom: none; padding-bottom: 0; font-size: 1.05rem; }
.ss-linked-spots__list { list-style: none; margin: .6rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.ss-linked-spots__item a {
  display: inline-flex; align-items: center; gap: .5rem;
  text-decoration: none; color: var(--ink); font-weight: 600;
}
.ss-linked-spots__item a:hover { color: var(--accent); }
.ss-linked-spots__badge {
  display: inline-flex; align-items: center; justify-content: center;
  flex: 0 0 auto; width: 1.6em; height: 1.6em; border-radius: 50%;
  font-size: .78rem; font-weight: 700; background: var(--accent-bg); color: var(--accent);
}
.ss-linked-spots__item--play .ss-linked-spots__badge { background: var(--play-bg); color: var(--play); }
.ss-linked-spots__item--eat  .ss-linked-spots__badge { background: var(--eat-bg);  color: var(--eat); }

/* ---------- design refresh 2026-08: カード左面の幾何形マーク（判断A） ---------- */
/* :has() でスコープし、.ss-card__mark を持つカード（スポット一覧・検索結果・
   お気に入り・記事内埋め込み）だけを横並びの新レイアウトにする。トップページの
   都道府県別件数カード（index.php）も2026-08-20よりこの対象に含めた。ただし
   __head/__facts/__foot は持たず、__title（都道府県名）＋ .ss-meta-inline（件数）
   のみのシンプルな__body構成（意味・情報構造は変えず見た目のみ揃える）。
   （：has()未対応の古いブラウザでは縦積みレイアウトへ穏当にフォールバックする）。 */
.ss-card:has(.ss-card__mark) {
  flex-direction: row;
  gap: var(--space-4);
  padding: var(--space-4);
}
.ss-card__mark {
  flex: 0 0 76px; align-self: stretch; min-height: 76px; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 7px; border-radius: var(--radius); font-size: 10px;
  letter-spacing: .04em; background: var(--accent-bg); color: var(--accent);
}
.ss-card__glyph { width: 12px; height: 12px; background: currentColor; flex: 0 0 auto; }
.ss-card--play .ss-card__mark { background: var(--play-bg); color: var(--play); }
.ss-card--play .ss-card__glyph { transform: rotate(45deg); }
.ss-card--eat  .ss-card__mark { background: var(--eat-bg);  color: var(--eat); }
.ss-card--eat  .ss-card__glyph { border-radius: 50%; }
.ss-card.is-closed .ss-card__mark { background: var(--ground); color: var(--muted); }

/* クロスドメイン相互リンク（\StaySpot\LinkedSpots）の複数マーク表示
   （official-site-enrichment-research-2026-08-22.md 追記4）。同一の実在施設が
   stay/play/eatの複数ドメインに別投稿として存在し、確定ペアとしてリンクされて
   いる場合のみ、stayspot_card_mark_html()（functions.php）が.ss-card__markを
   最大3分割した.ss-card__mark-segの束として出力する。リンクが無いスポット
   （大半）では従来どおり単一の.ss-card__markのままで、このブロックのCSSは
   一切適用されない（=既存の見た目に影響しない）。
   各segはカードの自ドメインクラス(.ss-card--stay等)に依存せず、
   ss-card__mark-seg--{domain}修飾子だけで色・幾何形（正方形/菱形/円）を
   決める点が既存の.ss-card__mark（親カードのクラスに依存）と異なる。
   1枚のカードの中に他ドメインの色面が混在するため、親のドメインクラスに
   頼った指定では意図した色が出せないため。 */
.ss-card__mark--split {
  padding: 5px 4px; gap: 4px; background: transparent;
}
.ss-card__mark-seg {
  flex: 1 1 0; width: 100%; min-height: 0;
  display: flex; align-items: center; justify-content: center; gap: 4px;
  border-radius: calc(var(--radius) - 4px); font-size: 9px; letter-spacing: .02em;
  padding: 2px 0;
}
.ss-card__mark-seg .ss-card__glyph { width: 8px; height: 8px; }
.ss-card__mark-seg--stay { background: var(--accent-bg); color: var(--accent); }
.ss-card__mark-seg--play { background: var(--play-bg); color: var(--play); }
.ss-card__mark-seg--play .ss-card__glyph { transform: rotate(45deg); }
.ss-card__mark-seg--eat  { background: var(--eat-bg);  color: var(--eat); }
.ss-card__mark-seg--eat  .ss-card__glyph { border-radius: 50%; }
.ss-card.is-closed .ss-card__mark-seg { background: var(--ground); color: var(--muted); }

@media (max-width: 640px) {
  .ss-card__mark-seg { font-size: 8px; gap: 3px; }
  .ss-card__mark-seg .ss-card__glyph { width: 7px; height: 7px; }
}
@media (max-width: 480px) {
  /* 3分割は56px高では文字まで収めると窮屈なため、幾何形のみで区別する。 */
  .ss-card__mark--split-3 .ss-card__mark-seg__label { display: none; }
}

.ss-card__body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .3rem; }
.ss-card__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) 0; }
/* 2026-08-22: .ss-card__category追加でヘッダー行が伸び、右上絶対配置の
   .ss-fav-btn（32px幅、right:.7rem）にカテゴリバッジ文字が回り込んで重なる
   ケースが出たため、ヘッダー行のみ右側にボタン分の余白を確保する。
   2026-08-24: 「プランに追加」ボタン（.ss-plan-btn）が.ss-fav-btnの左に並ぶため、
   2ボタン分（4.9rem）に拡張（プランのエクスポート機能、下部の該当セクション参照）。 */
.ss-card:has( > .ss-fav-btn ) .ss-card__head { padding-right: 4.9rem; }
.ss-card__type {
  font-size: 11px; color: var(--ink-soft); border: 1px solid var(--rule); padding: 2px 7px;
  border-radius: var(--radius-sm); white-space: nowrap;
}
/* 2026-08-22: play/eatのspot_type（166種・50種の自由記述タグ）を業態ごとの
   小カテゴリ(PlayCategory/EatCategory、DBには持たずspot_typeから都度算出)へ
   束ねた表示。生タグ(.ss-card__type)を置き換えず、より目立つ塗りバッジとして
   手前に添えることでカテゴリを主表示・タグを補助表示にする（未分類はnullを返し
   非表示、空バッジは出さない）。.ss-card__mark と同じ塗り系統の配色トークン
   （--play/--play-bg、--eat/--eat-bg）を流用し、新しい配色は追加しない。
   flex-basis:100%で常に単独行にする: グリッド列幅が狭いため「テーマパーク・
   複合レジャー」等の長いラベルが.ss-card__typeと横並びだと収まらない。
   nowrapは外し、バッジ自身の中で折り返せるようにする。 */
.ss-card__category {
  flex: 1 1 100%; font-size: 11px; font-weight: 600; line-height: 1.3;
  padding: 2px 8px; border-radius: var(--radius-sm); white-space: normal;
}
.ss-card--play .ss-card__category { background: var(--play-bg); color: var(--play); }
.ss-card--eat  .ss-card__category { background: var(--eat-bg);  color: var(--eat); }
.ss-card__area { font-size: 11px; color: var(--muted); margin-left: var(--space-3); white-space: nowrap; }

/* design fix 2026-08-22: .ss-meta はフォントサイズ未指定のまま白-space: nowrap
   だけが効いていたため、一覧カード内の「最終確認」表示が折り返されずカード枠から
   はみ出していた。.ss-card__area（住所表示）と同じ11pxに揃える
   （.ss-card__foot 配下だけに絞る。詳細ページの .ss-source-card 内 .ss-meta は対象外）。 */
.ss-card__foot .ss-meta { font-size: 11px; }
/* .ss-card__title は見出し(h3)の余白・サイズだけを担い、リンクの色・下線・
   hover挙動は既存の `.ss-card a.name` （このファイル冒頭・スポット種別アイコン節）
   をそのまま継承させる。 */
.ss-card__title { font-size: 17px; font-weight: 600; line-height: 1.5; margin: 7px 0 9px; }

.ss-card__facts {
  display: flex; flex-wrap: wrap; gap: var(--space-3); list-style: none; margin: 0 0 11px;
  padding: 0; font-size: 12px; color: var(--ink-soft);
}
.ss-card__facts li { white-space: nowrap; }
.ss-card__facts b { font-weight: 400; color: var(--accent); }
.ss-card__facts .is-none    { color: var(--ink-soft); }
.ss-card__facts .is-unknown { font-style: italic; color: var(--muted); } /* tri-stateの「未確認」— 変更禁止 */

.ss-card__foot {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-2) var(--space-3);
  padding-top: var(--space-3); border-top: 1px solid var(--rule); margin-top: auto;
}
.ss-source-badge { font-size: 11px; padding: 3px 8px; border-radius: var(--radius-sm); white-space: nowrap; }
.ss-source-badge--official { color: var(--accent); background: var(--accent-bg); }
.ss-source-badge--thirdparty, .ss-source-badge--blog { color: var(--warn); background: var(--warn-bg); }

.ss-card:has(.ss-card__mark) > .ss-fav-btn { top: var(--space-3); right: var(--space-3); }

/* design refresh 2026-08: 「近くの◯◯」カード（assets/js/nearby-spots.js）にも
   コンパクト版のカテゴリ面（__mark）を付ける（design-export/Design Proposal.dc.html
   #3c 373-400行目）。一覧カードの76px版より一回り小さい62px幅/56px高の
   変則サイズにするため .ss-card__mark--sm を上乗せする。距離は右端に寄せる。
   他の .meta 利用箇所（一覧カードの旧構成等）には影響させないよう
   .ss-nearby-meta にスコープする。 */
.ss-card__mark--sm { flex-basis: 62px; min-height: 56px; gap: 6px; }
.ss-card__mark--sm .ss-card__glyph { width: 10px; height: 10px; }
.ss-nearby-meta { display: flex; justify-content: space-between; gap: var(--space-3); }

@media (max-width: 640px) {
  .ss-card__mark { flex-basis: 56px; min-height: 56px; font-size: 9px; }
  .ss-card__facts { gap: var(--space-2) var(--space-3); }
}
@media (max-width: 480px) {
  .ss-card:has(.ss-card__mark) { gap: var(--space-3); padding: var(--space-3); }
  .ss-card__foot { flex-direction: column; align-items: flex-start; gap: 6px; }
}

/* ---------- filters (toggle pills) ---------- */

.ss-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.2rem 0 1.6rem; }
.ss-filters a, .ss-filters button {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .84rem; padding: .38rem .85rem; border-radius: var(--radius-sm); text-decoration: none;
  border: 1px solid var(--rule); background: var(--surface); color: var(--ink-soft);
  transition: border-color .15s ease, background-color .15s ease, color .15s ease;
}
/* design refresh 2026-08: チップ内の件数（n）は選択前は控えめに、選択中はラベルと
   同じ強さで見せる（塗りつぶし背景の上でmuted色を使うと視認性が落ちるため）。 */
.ss-filters .n { color: var(--muted); font-variant-numeric: tabular-nums; }
.ss-filters a.on .n, .ss-filters button.on .n { color: inherit; }
/* /search/ の絞り込みトグル（assets/js/search.js）はリンクではなくbuttonで
   実装するため、見た目だけ .ss-filters a と揃える（UXフェーズ2 提案#4、
   ux-phase2-spec.md 3-2節。「これは絞り込みチップだ」という既存の学習を
   利用者がそのまま持ち込めるように、新しい視覚言語は作らない）。 */
.ss-filters button { cursor: pointer; font: inherit; }
.ss-filters a:hover, .ss-filters button:hover { border-color: var(--accent); color: var(--accent); }
.ss-filters a.on, .ss-filters button.on {
  background: var(--accent); border-color: var(--accent); color: var(--accent-ink); font-weight: 600;
}
.ss-filters a.on::before, .ss-filters button.on::before { content: "\2713"; font-weight: 700; }
.ss-filters a.on:hover, .ss-filters button.on:hover { color: var(--accent-ink); opacity: .92; }
/* 複数条件の同時指定数が上限（Registry::MAX_COMBO、Router.php側と共有）に
   達している間、まだオフのチップはリンクを出さずspanで無効表示にする
   （stayspot-facet.php参照）。通常オフ状態(枠線のみ)の見た目を踏襲しつつ、
   不透明度を落としカーソルで「これ以上選べない」ことを明示する。リンクでは
   ないためhover/focus演出は不要。 */
.ss-filters .is-disabled {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .84rem; padding: .38rem .85rem; border-radius: var(--radius-sm);
  border: 1px solid var(--rule); background: var(--surface); color: var(--ink-soft);
  opacity: .45; cursor: not-allowed;
}
.ss-filters .is-disabled .n { color: var(--muted); }
/* 複数条件対応(2026-08-22): 「すべて解除」はチップと混同しないよう、
   .ss-pager のリンクと同じ枠なし・控えめなテキストリンクにする
   （条件選択の塗りつぶしピルと同列に見せない、というux-phase1の方針を踏襲）。 */
.ss-filters__clear {
  display: inline-flex; align-items: center;
  font-size: .84rem; padding: .38rem .3rem; color: var(--ink-soft); text-decoration: underline;
}
.ss-filters__clear:hover { color: var(--accent); }

/* ---------- pager (page number pagination) ---------- */

/* .ss-filters（絞り込み条件の塗りつぶしピル）とは意図的に見た目を分ける
   （UXフェーズ1 #5、stayspot-docs/ux-phase1-spec.md 1-3）。ページャーは
   「同じ一覧内の位置移動」であり、条件選択のチップと混在させると
   何をタップしているのか分かりにくくなるため、テキストベースの
   控えめな表現にとどめる。 */
.ss-pager {
  display: flex; justify-content: center; align-items: center; gap: 1rem; flex-wrap: wrap;
  margin: 2.2rem 0 0; padding-top: 1.2rem; border-top: 1px solid var(--rule);
  font-size: .84rem;
}
.ss-pager a { color: var(--ink-soft); text-decoration: none; padding: .6rem 1rem; border-radius: var(--radius-sm); }
.ss-pager a:hover { color: var(--accent); }
.ss-pager .is-disabled { color: var(--muted); padding: .6rem 1rem; }
.ss-pager .pos { color: var(--ink); font-variant-numeric: tabular-nums; }

/* design refresh 2026-08: ページ番号ストリップ。現在ページのみaccent塗り、
   他はsurface＋rule（既存の.ss-filtersの塗り分けと同じ考え方）。 */
.ss-pager__nums { display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; }
.ss-pager__num {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 2rem; height: 2rem; padding: 0 .3rem; text-decoration: none;
  border-radius: var(--radius-sm); border: 1px solid var(--rule); background: var(--surface);
  color: var(--ink-soft); font-variant-numeric: tabular-nums;
  transition: border-color .15s ease, color .15s ease;
}
.ss-pager__num:hover { border-color: var(--accent); color: var(--accent); }
.ss-pager__num.is-current {
  background: var(--accent); border-color: var(--accent); color: var(--accent-ink); font-weight: 700;
}
.ss-pager__ellipsis { color: var(--muted); padding: 0 .15rem; }

/* ---------- ad slot（一覧ページ、5件目直後に1枠） ---------- */

/* accent・カテゴリ色（--play/--eat等）は使わず、通常のコンテンツから明確に
   区別できる控えめな枠にとどめる（ux-phase1原則: 掲載順位に広告料は反映しない）。 */
.ss-ad-slot {
  grid-column: 1 / -1;
  display: flex; align-items: center; gap: .6rem;
  min-height: 4.5rem; padding: 1rem 1.2rem;
  border: 1px dashed var(--rule); border-radius: var(--radius);
  background: var(--ground); color: var(--muted); font-size: .82rem;
}
.ss-ad-slot__label {
  flex: 0 0 auto; font-size: .62rem; font-weight: 700; letter-spacing: .08em;
  border: 1px solid var(--rule); border-radius: var(--radius-sm); padding: .15rem .4rem;
}
/* 詳細ページ（一覧グリッドの外）で使う場合: grid-column の指定は効かないので
   通常フローの上下余白だけ足す。 */
.ss-ad-slot--block { margin: 1.6rem 0 0; }

/* ---------- confirmation stats bar ---------- */

/* 「確認済み n/m項目」「このエリアの平均確認率」等。ログの中身の一部として
   出す控えめな表示で、目立つバッジにはしない。 */
.ss-confirm-bar {
  display: flex; align-items: center; gap: .65rem;
  margin: 0 0 1.6rem; font-size: .8rem; color: var(--ink-soft);
}
.ss-confirm-bar .track {
  flex: 0 0 6rem; height: var(--space-1); border-radius: 999px;
  background: var(--rule); overflow: hidden;
}
.ss-confirm-bar .fill {
  display: block; height: 100%; background: var(--accent); border-radius: 999px;
}
.ss-confirm-bar .label strong { color: var(--ink); font-variant-numeric: tabular-nums; }

/* design refresh 2026-08: 確認率バー直下の「未確認は件数から除外していない」旨の
   注記。バーの続きとして読めるよう、通常の.ss-hintより上の余白を詰める。 */
.ss-confirm-bar-note { margin-top: -1rem; }

/* ---------- transparency: field change history (2026-08-24) ---------- */

.ss-history { margin-top: 1.6rem; }
.ss-history-list {
  list-style: none; margin: 0; padding: 0;
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  overflow: hidden;
}
.ss-history-entry {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .1rem .8rem;
  padding: .65rem .95rem; font-size: .82rem; color: var(--ink-soft);
}
.ss-history-entry:not(:last-child) { border-bottom: 1px solid var(--rule); }
.ss-history-entry .date {
  flex: 0 0 auto; font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 600;
}
.ss-history-entry .text { flex: 1 1 16rem; }

/* ---------- transparency: field change history (2026-08-24) ---------- */

.ss-history { margin-top: 1.6rem; }
.ss-history-list {
  list-style: none; margin: 0; padding: 0;
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  overflow: hidden;
}
.ss-history-entry {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .1rem .8rem;
  padding: .65rem .95rem; font-size: .82rem; color: var(--ink-soft);
}
.ss-history-entry:not(:last-child) { border-bottom: 1px solid var(--rule); }
.ss-history-entry .date {
  flex: 0 0 auto; font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 600;
}
.ss-history-entry .text { flex: 1 1 16rem; }

/* ---------- data confirmation log ---------- */

.ss-log { margin-top: 2.4rem; }
.ss-log-note {
  font-size: .82rem; color: var(--muted); line-height: 1.8; margin: 0 0 1rem;
}
.ss-log-list {
  list-style: none; margin: 0; padding: 0;
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  overflow: hidden;
}
.ss-log-entry {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .1rem .8rem;
  padding: .65rem .95rem; font-size: .82rem; color: var(--ink-soft);
}
.ss-log-entry:not(:last-child) { border-bottom: 1px solid var(--rule); }
.ss-log-entry .date {
  flex: 0 0 auto; font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 600;
}
.ss-log-entry .kind { flex: 1 1 16rem; }
.ss-log-entry .method { flex: 0 0 auto; font-size: .76rem; color: var(--muted); }
.ss-log-entry.is-baseline .kind { color: var(--muted); font-style: italic; }

/* ペルソナ名（[スカウト]/[オーディット]）はテキストラベルのみで、アイコンや
   色分けは付けない（ペルソナ設計書のリスク対応方針）。.kind は既存の
   ss-log-entry のトーンをそのまま継承するため、専用の装飾クラスは追加しない。 */

/* エリア解説文末尾の共同バイライン。.ss-editorial 本文とは区別しつつ、
   .ss-hint 相当の控えめなトーンに合わせる（バッジ化・強調はしない）。 */
.ss-persona-byline {
  font-size: .82rem; color: var(--muted); line-height: 1.8;
  margin: .2rem 0 1.2rem; padding: 0 1.2rem;
}

/* ---------- generic page content (page.php) ---------- */

.ss-page-content { color: var(--ink-soft); font-size: .95rem; line-height: 1.85; }
.ss-page-content h2 {
  font-size: 1.02rem; font-weight: 700; margin: 2rem 0 .8rem;
  padding-bottom: .4rem; border-bottom: 1px solid var(--rule); color: var(--ink);
}
.ss-page-content h2:first-child { margin-top: 0; }
.ss-page-content p { margin: 0 0 1rem; }

/* ---------- spot type icon ---------- */

/* 施設写真が無いスポットの視覚的な補い。currentColor で置かれた場所の
   文字色を継承するので、見出し・カードそれぞれのトーンにそのまま馴染む。 */
.ss-type-icon {
  display: inline-flex; align-items: center; justify-content: center;
  flex: 0 0 auto; vertical-align: -0.15em;
}
.ss-type-icon svg { width: 1em; height: 1em; }

h1 .ss-type-icon { color: var(--muted); }
h1 .ss-type-icon svg { width: 1.3rem; height: 1.3rem; }

.ss-card a.name {
  display: inline-flex; align-items: center; gap: .45rem;
}
.ss-card a.name .ss-type-icon { color: var(--muted); }
.ss-card a.name:hover .ss-type-icon { color: var(--accent); }

/* ---------- payment methods (対応決済、payment_methods) ---------- */

/* stay/play/eat共通（single-spot.php・single-play_spot.php・single-eat_spot.php、
   stayspot_payment_methods_html()参照）。デザイン判断: 決済ブランドのロゴを
   精巧に再現せず、.ss-card__type / .ss-source-badge と同じ「控えめな塗りバッジ」
   路線に、ブランドごと最小限の識別色（Visaの青、PayPayの赤 等）だけを添える。
   特定ブランドを持たない cash/other_qr/ic_card はこのデフォルトルール（無彩色・
   枠線のみ）がそのまま適用される。 */
.ss-payment-methods { display: inline-flex; flex-wrap: wrap; gap: var(--space-2); vertical-align: middle; }
.ss-payment-badge {
  display: inline-block; font-size: 11px; font-weight: 600; line-height: 1.5;
  padding: 2px 8px; border-radius: var(--radius-sm); white-space: nowrap;
  color: var(--ink-soft); background: var(--surface); border: 1px solid var(--rule);
}
.ss-payment-badge--visa       { color: var(--pay-visa);       background: var(--pay-visa-bg);       border-color: transparent; }
.ss-payment-badge--mastercard { color: var(--pay-mastercard); background: var(--pay-mastercard-bg); border-color: transparent; }
.ss-payment-badge--jcb        { color: var(--pay-jcb);        background: var(--pay-jcb-bg);        border-color: transparent; }
.ss-payment-badge--amex       { color: var(--pay-amex);       background: var(--pay-amex-bg);       border-color: transparent; }
.ss-payment-badge--dinersclub { color: var(--pay-dinersclub); background: var(--pay-dinersclub-bg); border-color: transparent; }
.ss-payment-badge--discover   { color: var(--pay-discover);   background: var(--pay-discover-bg);   border-color: transparent; }
.ss-payment-badge--unionpay   { color: var(--pay-unionpay);   background: var(--pay-unionpay-bg);   border-color: transparent; }
.ss-payment-badge--paypay     { color: var(--pay-paypay);     background: var(--pay-paypay-bg);     border-color: transparent; }

/* ---------- SNS post embed (施設公式X/Instagram投稿) ---------- */

/* データ誠実さの原則: 自社取材ではなく施設公式の発信であることを、
   見出し・ss-hintの一言で必ず明示してから埋め込む。埋め込み本体
   （twitter-tweet / instagram-media）はプラットフォーム側のJSが
   iframeに置き換えるため、ここでは余白と中央寄せのみを整える。 */
.ss-sns-embed { margin: 1.6rem 0 2.2rem; }
.ss-sns-embed .ss-hint { margin: 0 0 .9rem; }
.ss-sns-embed blockquote.twitter-tweet,
.ss-sns-embed blockquote.instagram-media {
  margin: 0 auto !important;
}

/* ---------- misc ---------- */

.ss-source {
  font-size: .78rem; color: var(--muted); margin-top: 2.2rem; line-height: 1.8;
  border-top: 1px solid var(--rule); padding-top: .9rem;
}

/* ---------- design refresh 2026-08: 出典カード（詳細ページ） ---------- */

/* 最終確認日＋出典タイプバッジは常時表示。出典URL・収集方法の詳細は
   <details>で初期非表示のまま（tri-stateの開示パターンと同じ作法）。
   design refresh 2026-08: 単なる上罫線区切りではなく、独立した「カード」として
   見せる（design-export/Design Proposal.dc.html #3c 338-359行目）。 */
.ss-source-card {
  margin-top: 2.2rem; padding: 1.25rem 1.4rem 1.3rem;
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.ss-source-card__head {
  display: flex; align-items: center; flex-wrap: wrap; gap: .6rem; margin-bottom: .8rem;
}
.ss-source-card .ss-evidence-body p { margin: 0 0 .6rem; }
.ss-source-card .ss-evidence-body p:last-child { margin-bottom: 0; }

/* design refresh 2026-08: 「出典の内訳と確認方法 ／ 開く ＋」の行（#3c 366-369行目）。
   このカード内の<details>だけの見た目で、他の.ss-evidence（tri-state値の開示等）
   には影響させない（クラスをスコープに使う）。 */
.ss-source-card__details { display: block; }
details.ss-source-card__details > summary {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  width: 100%;
  border-top: 1px solid var(--rule); padding-top: .8rem;
}
details.ss-source-card__details > summary::after { content: none; } /* 既定のchevronは使わない（.ss-evidenceの規則より詳細度を上げて確実に上書きする） */
.ss-source-card__summary-label { font-size: .82rem; color: var(--ink-soft); }
.ss-source-card__toggle { font-size: .78rem; color: var(--accent); white-space: nowrap; }
.ss-source-card__toggle::before { content: "開く \FF0B"; }
.ss-source-card__details[open] .ss-source-card__toggle::before { content: "閉じる \2212"; }
.ss-source-card__details .ss-evidence-body { margin-top: .7rem; }

.ss-outbound {
  display: inline-flex; align-items: center; gap: .4rem; margin-top: 1.2rem;
  padding: .7rem 1.3rem; background: var(--accent); color: var(--accent-ink);
  text-decoration: none; border-radius: var(--radius-sm); font-size: .92rem; font-weight: 600;
  transition: opacity .15s ease;
}
.ss-outbound:hover { opacity: .88; }
.ss-outbound::after { content: "\2192"; }

/* ---------- nearby display (近くの「泊まる」/「遊ぶ」/「食べる」スポット) ---------- */

/* play-category-design.md §4、eat-category-design.md §4-2で複数ドメイン対応に一般化。
   距離計算・描画は assets/js/nearby-spots.js が行う。各テンプレートは
   <div id="ss-nearby-groups"></div> を埋め込むだけで、JSがドメインごとに
   .ss-nearby セクションを生成して追加する(候補が無いドメインはPHP側で
   除外済みのため、何も追加されないセクションは元々存在しない)。
   h2/.ss-list/.ss-card/.meta/.ss-hint は既存のスタイルをそのまま継承するため、
   専用のレイアウト調整のみ追加する。 */
.ss-nearby { margin-top: 2.6rem; padding-top: 1.2rem; border-top: 1px solid var(--rule); }
.ss-nearby + .ss-nearby { margin-top: 1.4rem; padding-top: 1rem; }

/* ---------- favorites (お気に入りボタン、UXフェーズ2 提案#2) ---------- */

/* stayspot-docs/ux-phase2-spec.md 2-2・2-3節。ハート型アイコンは .ss-type-icon と
   同じ作法（currentColorのストローク線画、1em基準）。新しい色は追加しない
   （--dangerは「閉業・エラー」の意味で既に使われているため転用しない）。 */
.ss-fav-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2rem; height: 2rem; padding: 0; flex: 0 0 auto;
  border-radius: 50%; border: 1px solid var(--rule); background: var(--surface);
  color: var(--muted); cursor: pointer; line-height: 1;
  transition: opacity .15s ease, transform .15s ease, color .15s ease, border-color .15s ease;
}
.ss-fav-btn svg { width: 1.05em; height: 1.05em; fill: none; stroke: currentColor; stroke-width: 1.7; }
.ss-fav-btn:hover { border-color: var(--accent); color: var(--accent); }
.ss-fav-btn:active { transform: scale(.92); }
/* 2026-08-25: お気に入り済み状態は差し色(spark)にして、行為そのものに小さな高揚感を出す。 */
.ss-fav-btn[aria-pressed="true"] { color: var(--spark); border-color: var(--spark); }
.ss-fav-btn[aria-pressed="true"] svg { fill: currentColor; }

/* 一覧カード（.ss-card）: 右上に絶対配置。カード本文のレイアウトには影響させない。 */
.ss-card { position: relative; }
.ss-card > .ss-fav-btn { position: absolute; top: .7rem; right: .7rem; }

/* スポット詳細ページ: <h1>の直後に単独配置（見出しの意味構造とは分ける）。 */
main.ss-wrap > .ss-fav-btn { margin: -.3rem .5rem 1.3rem 0; }

/* ---------- プランに追加ボタン（プランのエクスポート機能、
   ux-hospitality-handoff-2026-08-23.md 2-6節） ---------- */

/* .ss-fav-btn と同じ土台（円形・線画・currentColor）を流用し、アイコンのみ
   「＋」に差し替える。ハート（恒常的な「気になる」の記録）と、丸に＋
   （今回組む周遊プランへの一時的な追加）を見た目で区別する。 */
.ss-plan-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2rem; height: 2rem; padding: 0; flex: 0 0 auto;
  border-radius: 50%; border: 1px solid var(--rule); background: var(--surface);
  color: var(--muted); cursor: pointer; line-height: 1;
  transition: opacity .15s ease, transform .15s ease, color .15s ease, border-color .15s ease;
}
.ss-plan-btn svg { width: 1.05em; height: 1.05em; fill: none; stroke: currentColor; stroke-width: 1.7; }
.ss-plan-btn:hover { border-color: var(--accent); color: var(--accent); }
.ss-plan-btn:active { transform: scale(.92); }
.ss-plan-btn[aria-pressed="true"] { color: var(--accent-ink); background: var(--accent); border-color: var(--accent); }

/* 一覧カード: .ss-fav-btn（右上、right:.7rem）のすぐ左に並べる。
   カテゴリマーク付きカード（.ss-card__mark、design refresh 2026-08）では
   .ss-fav-btnがvar(--space-3)基準の位置に変わるため、それに合わせて再配置する
   （既存の.ss-card:has(.ss-card__mark) > .ss-fav-btnと同じ考え方）。 */
.ss-card > .ss-plan-btn { position: absolute; top: .7rem; right: calc(.7rem + 2rem + .4rem); }
.ss-card:has(.ss-card__mark) > .ss-plan-btn { top: var(--space-3); right: calc(var(--space-3) + 2rem + .4rem); }
/* ヘッダー行の余白（padding-right: 4.9rem、fav・plan 2ボタン分）は
   .ss-card__head の定義側（本ファイル前半）に統合済み。 */

/* スポット詳細ページ: .ss-fav-btnの右に横並び。 */
main.ss-wrap > .ss-plan-btn { margin: -.3rem .5rem 1.3rem 0; }

/* ---------- weather forecast (weather-forecast機能、Open-Meteo連携) ---------- */

/* stay/play/eatの3ドメイン共通（stayspot_weather_forecast_html()参照）。
   地図表示の直前に置く（座標に紐づく情報のため）。座標未確認・API取得失敗時は
   PHP側でブロックごと出力されないため、ここでは「出た場合」の見た目だけを整える。
   アイコンは.ss-type-iconと同じ規約（インラインSVG、currentColorの線画、色分けなし）。 */
.ss-weather-cards {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3);
  margin: 0 0 .6rem;
}
@media (max-width: 480px) {
  /* モバイル幅では3枚横並びだと窮屈なため縦積みに切り替える。 */
  .ss-weather-cards { grid-template-columns: 1fr; gap: var(--space-2); }
}

/* アクセント装飾(2026-08-25、design-constraints-brief.md 6.5節・Option B)。
   カード全体をアクセント色でうっすら染めて、背景に溶け込んでいた見た目に存在感を持たせる。
   背景がaccent-bgに変わったことで従来のvar(--muted)は文字コントラストが不足するため、
   ink/ink-softへ差し替えている(実機で目視確認済み)。 */
.ss-weather-card {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: .3rem; padding: var(--space-3) var(--space-2);
  border: 1px solid var(--accent-line); border-radius: var(--radius); background: var(--accent-bg);
}
.ss-weather-card__date { font-size: .8rem; font-weight: 700; color: var(--ink); }

.ss-weather-icon { display: inline-flex; color: var(--accent); }
.ss-weather-icon svg { width: 2.3rem; height: 2.3rem; }

.ss-weather-card__label { font-size: .78rem; color: var(--ink-soft); }

.ss-weather-card__temps { font-size: .95rem; font-weight: 600; }
.ss-weather-card__temp-max { color: var(--ink); }
.ss-weather-card__temp-max::after { content: " / "; color: var(--ink-soft); font-weight: 400; }
.ss-weather-card__temp-min { color: var(--ink-soft); }

.ss-weather-card__precip { font-size: .72rem; color: var(--ink-soft); }

/* ---------- map (Leaflet、UXフェーズ2 提案#1) ---------- */

/* stayspot-docs/ux-phase2-spec.md 1章。マーカー・ポップアップの配色は
   --accent/--surface/--ink等のCSSカスタムプロパティで描画するため、
   タイル側の明暗切り替え(assets/js/spot-map.js)と自動的に揃う。 */
.ss-map {
  width: 100%; height: 240px;
  border-radius: var(--radius); overflow: hidden; border: 1px solid var(--rule);
  margin: 0 0 .6rem; background: var(--ground);
}
@media (min-width: 641px) {
  .ss-map { height: 300px; }
}

.ss-area-map { margin: 1.2rem 0 1.6rem; }
.ss-area-map > summary {
  cursor: pointer; font-size: .88rem; color: var(--ink-soft); font-weight: 600;
  margin-bottom: .8rem;
}
.ss-area-map .ss-map { height: 220px; }
@media (min-width: 641px) {
  .ss-area-map .ss-map { height: 320px; }
}
.ss-area-map > .ss-hint { margin-top: .6rem; }

/* 通常ピン: --surface地に--accentの輪郭のみの小さい円。
   自スポット(.is-self): --accentで塗りつぶした一回り大きい円。 */
.ss-map-marker {
  width: .85rem; height: .85rem; border-radius: 50%;
  background: var(--surface); border: 2px solid var(--accent);
  box-shadow: var(--shadow);
}
.ss-map-marker.is-self {
  width: 1.1rem; height: 1.1rem; background: var(--accent); border-color: var(--accent-ink);
}

/* ポップアップ: 施設名(リンク)＋種別ラベルのみの最小構成。Leaflet標準の
   白背景・角丸をテーマトークンで上書きする。 */
.ss-map .leaflet-popup-content-wrapper {
  background: var(--surface); color: var(--ink); border-radius: var(--radius-sm);
  box-shadow: var(--shadow); border: 1px solid var(--rule);
}
.ss-map .leaflet-popup-tip { background: var(--surface); }
.ss-map .leaflet-popup-content { margin: .55rem .8rem; font-size: .84rem; line-height: 1.6; }
.ss-map-popup a { font-weight: 600; }
.ss-map-popup-meta { font-size: .76rem; color: var(--muted); margin-top: .15rem; }

/* ズームボタン: Leaflet標準のものを流用しつつ、控えめなトーンに調整する。 */
.ss-map .leaflet-control-zoom a {
  background: var(--surface); color: var(--muted); border-color: var(--rule) !important;
}
.ss-map .leaflet-control-zoom a:hover { color: var(--accent); }

/* 出典表示(attribution): CARTO/OpenStreetMapの著作権表示は法的に必須のため残すが、
   控えめなトーンに絞る（.ss-hintと同様の考え方）。 */
.ss-map .leaflet-control-attribution {
  background: var(--surface); color: var(--muted); font-size: .68rem;
}
.ss-map .leaflet-control-attribution a { color: var(--muted); }

/* ---------- search page (/search/、UXフェーズ2 提案#4) ---------- */

.ss-search-field { margin: 1.4rem 0; }
.ss-search-field label {
  display: block; font-size: .84rem; color: var(--ink-soft); margin-bottom: .4rem; font-weight: 600;
}
.ss-search-field input[type="search"] {
  width: 100%; max-width: 28rem; padding: .6rem .85rem;
  border: 1px solid var(--rule); border-radius: var(--radius-sm);
  background: var(--surface); color: var(--ink); font-size: .95rem;
}
.ss-search-field input[type="search"]:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 1px;
}

/* ---------- guide (読み物, UXフェーズ3) ---------- */

/* データ確認ログ・tri-state表と混同されないための独立したビジュアル言語。
   ux-phase3-spec.md 2章。新しい色相・アイコン・マスコット表現は追加しない
   （既存トークンのみで構成する）。最大の差別化は「表 vs 散文」という
   コンテンツの構造そのものにあり、以下はあくまで補助的な手がかり。 */

/* design refresh 2026-08（判断B）: 記事全体を「読み物」として囲む枠。データページ
   （--surface地）とは意図的に地色を変え、上下を破線で区切る。Webフォントは
   読み込まず、システム明朝（"Hiragino Mincho ProN"/"Yu Mincho"）のみを使う。 */
.ss-guide {
  background: color-mix(in srgb, var(--ground) 60%, var(--surface));
  border-top: 1px dashed color-mix(in srgb, var(--rule) 70%, var(--ink-soft));
  border-bottom: 1px dashed color-mix(in srgb, var(--rule) 70%, var(--ink-soft));
  padding: var(--space-6) 22px;
}
.ss-guide__title {
  font-family: "Hiragino Mincho ProN", "Yu Mincho", serif;
  font-size: 22px; font-weight: 500; line-height: 1.65;
}

.ss-guide-eyebrow {
  font-size: 11px; letter-spacing: .12em;
  color: var(--muted); text-transform: none; margin: 0 0 .5rem;
}
.ss-guide-byline { font-size: .82rem; color: var(--muted); margin: 0 0 1.6rem; }

.ss-guide-hero { margin: 0 0 1.6rem; border-radius: var(--radius); overflow: hidden; }
.ss-guide-hero img { display: block; width: 100%; height: auto; }

/* データ表（.92rem）より少し大きく、行間も広い＝読み物としての可読性を優先。 */
.ss-guide-body {
  font-size: 1rem; line-height: 1.9; color: var(--ink);
}
.ss-guide-body p { margin: 0 0 1.3rem; }
/* データページのh2（罫線あり、.ss-page-content h2 参照）とあえて変える。 */
.ss-guide-body h2 {
  font-size: 1.1rem; font-weight: 700; border-bottom: none; padding-bottom: 0;
  margin: 2.2rem 0 .8rem; color: var(--ink);
}
.ss-guide-body h3 { font-size: 1rem; font-weight: 700; margin: 1.8rem 0 .6rem; color: var(--ink); }
.ss-guide-body ul, .ss-guide-body ol { margin: 0 0 1.3rem; padding-left: 1.4rem; }
.ss-guide-body li { margin-bottom: .4rem; }

/* データページの罫線は実線（.ss-source）。破線にして「別の区画」であることを示す。 */
.ss-guide-disclaimer {
  font-size: .82rem; color: var(--muted); line-height: 1.8; margin: 2rem 0 0;
  padding-top: 1rem; border-top: 1px dashed var(--rule);
}

/* 記事末尾のスポットリンクは既存 .ss-list/.ss-card をそのまま再利用する
   （意図的な選択。ux-phase3-spec.md 3-1節: ここから先はデータページへの
   導線であることを、見た目の切り替わりで伝える）。専用の上書きは不要。 */
.ss-guide-spots { margin-top: 2.6rem; padding-top: 1.4rem; border-top: 1px dashed var(--rule); }
.ss-guide-spots h2 {
  padding-bottom: .4rem; border-bottom: 1px solid var(--rule);
}
.ss-guide-spots h3 { font-size: .9rem; color: var(--ink-soft); margin: 1.6rem 0 .8rem; }
.ss-guide-spots h3:first-of-type { margin-top: 1.2rem; }

/* 一覧ページ（/guides/）: スポット一覧の複数列グリッド探索型とは違い、
   件数が少なく「選んで読む」体験のため縦1列にする（ux-phase3-spec.md 2-3節）。 */
.ss-guide-list { list-style: none; padding: 0; margin: 0 0 1rem; display: flex; flex-direction: column; gap: 1rem; }
.ss-guide-card {
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  padding: 1.1rem 1.3rem;
}
.ss-guide-card .title { font-weight: 700; font-size: 1.05rem; color: var(--ink); text-decoration: none; }
.ss-guide-card .title:hover { color: var(--accent); }
.ss-guide-card .excerpt { color: var(--ink-soft); font-size: .9rem; margin: .5rem 0; line-height: 1.8; }
.ss-guide-card .date { color: var(--muted); font-size: .78rem; margin: 0; }

/* /guides/ のページャー（WP標準 the_posts_pagination()）。既存 .ss-pager と
   トーンを揃える。件数が増えた場合のみ表示される。 */
.navigation.pagination {
  display: flex; justify-content: center; align-items: center; gap: .6rem; flex-wrap: wrap;
  margin: 2.2rem 0 0; padding-top: 1.2rem; border-top: 1px solid var(--rule);
  font-size: .84rem;
}
.navigation.pagination .nav-links { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.navigation.pagination a, .navigation.pagination span {
  color: var(--ink-soft); text-decoration: none; padding: .5rem .85rem; border-radius: var(--radius-sm);
}
.navigation.pagination a:hover { color: var(--accent); }
.navigation.pagination .current { color: var(--ink); font-weight: 700; }

/* ---------- プランのエクスポート機能（/plan/ページ、ux-hospitality-handoff-2026-08-23.md
   2-6節） ---------- */
/* page-my-list.php・my-list.js と同じ設計（PHPは空枠のみ、中身はJS描画）に揃える。
   .ss-listのグリッドレイアウトは順序を視覚的に示すのに向かないため流用せず、
   縦積みの専用リスト（.ss-plan-list）にする。 */

.ss-plan-count { font-weight: 600; margin: 1.2rem 0 0; }
.ss-plan-limit-note { color: var(--warn); }

.ss-plan-list {
  list-style: none; margin: 1rem 0; padding: 0;
  display: flex; flex-direction: column; gap: var(--space-2);
}
.ss-plan-item {
  display: flex; align-items: center; gap: var(--space-2);
  border: 1px solid var(--rule); border-radius: var(--radius); background: var(--surface);
  padding: var(--space-2) var(--space-3);
}
.ss-plan-item.is-dragging { opacity: .5; border-color: var(--accent); }
.ss-plan-item__handle {
  cursor: grab; color: var(--muted); font-size: 1.1rem; padding: 0 var(--space-1);
  touch-action: none; user-select: none; flex: 0 0 auto;
}
.ss-plan-item__index {
  flex: 0 0 auto; width: 1.6rem; height: 1.6rem; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--accent-bg); color: var(--accent); font-size: .78rem; font-weight: 700;
}
.ss-plan-item__body { flex: 1 1 auto; min-width: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--space-2); }
.ss-plan-item__domain {
  font-size: 11px; padding: 2px 7px; border-radius: var(--radius-sm);
  background: var(--accent-bg); color: var(--accent); white-space: nowrap;
}
.ss-plan-item--play .ss-plan-item__domain { background: var(--play-bg); color: var(--play); }
.ss-plan-item--eat  .ss-plan-item__domain { background: var(--eat-bg);  color: var(--eat); }
.ss-plan-item__name { font-weight: 600; text-decoration: none; }
.ss-plan-item__name:hover { text-decoration: underline; }
.ss-plan-item__reservation { font-size: .8rem; color: var(--ink-soft); white-space: nowrap; }
.ss-plan-item__buttons { flex: 0 0 auto; display: flex; align-items: center; gap: var(--space-1); }
.ss-plan-item__move, .ss-plan-item__remove {
  width: 1.7rem; height: 1.7rem; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--rule); border-radius: var(--radius-sm); background: var(--surface);
  color: var(--ink-soft); cursor: pointer; font-size: .78rem; padding: 0; line-height: 1;
}
.ss-plan-item__move:hover, .ss-plan-item__remove:hover { border-color: var(--accent); color: var(--accent); }
.ss-plan-item__move:disabled { opacity: .35; cursor: default; }
.ss-plan-item__move:disabled:hover { border-color: var(--rule); color: var(--ink-soft); }
.ss-plan-item__remove:hover { border-color: var(--danger); color: var(--danger); }

.ss-plan-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin: 1.6rem 0; }
.ss-plan-actions__status { font-size: .84rem; color: var(--accent); }

.ss-plan-share-fallback {
  border: 1px solid var(--rule); border-radius: var(--radius); padding: var(--space-3);
  margin: 0 0 1.6rem; background: var(--ground);
}
.ss-plan-share-fallback textarea {
  width: 100%; box-sizing: border-box; margin: .5rem 0; padding: var(--space-2);
  border: 1px solid var(--rule); border-radius: var(--radius-sm); background: var(--surface);
  color: var(--ink); font: inherit; resize: vertical;
}
.ss-plan-copy-btn {
  font-size: .84rem; padding: .4rem .8rem; border-radius: var(--radius-sm);
  border: 1px solid var(--rule); background: var(--surface); color: var(--ink); cursor: pointer;
}
.ss-plan-copy-btn:hover { border-color: var(--accent); color: var(--accent); }
.ss-plan-copy-status { margin-left: .6rem; font-size: .82rem; color: var(--accent); }

@media (max-width: 480px) {
  .ss-plan-item { flex-wrap: wrap; }
  .ss-plan-item__body { flex-basis: 100%; order: 3; margin-top: .2rem; }
}

/* ---------- responsive ---------- */

@media (max-width: 640px) {
  .ss-wrap { padding: 1.25rem 1rem 3rem; }
  h1 { font-size: 1.35rem; }
  h2 { font-size: 1rem; margin-top: 2rem; }

  /* design refresh 2026-08: 設備表（table.ss-matrix）の「2カラム(640px以下で1カラム)」。
     以前は480px基準だったこのth/td積み上げレイアウトを640pxへ引き上げる
     （行区切り 1px solid var(--rule) は既存の tr:not(:last-child) をそのまま流用）。 */
  table.ss-matrix, table.ss-matrix tbody, table.ss-matrix tr, table.ss-matrix th, table.ss-matrix td {
    display: block; width: auto;
  }
  table.ss-matrix tr { padding: .55rem .9rem; }
  table.ss-matrix tr:not(:last-child) { border-bottom: 1px solid var(--rule); }
  table.ss-matrix th {
    border-bottom: 0; padding: 0 0 .15rem; background: transparent;
    font-size: .74rem; color: var(--muted);
  }
  table.ss-matrix td { border-bottom: 0; padding: 0; }

  /* 狭幅ではユーティリティ群（検索・お気に入り）はアイコンのみにして幅を節約する。
     aria-label はテキストと同じ内容を保持するため、スクリーンリーダー上の情報は
     失われない（nav-proposal-2026-08-19.md §4）。ハンバーガーは導入しない。 */
  .ss-nav-utility .label-desktop { display: none; }
  .ss-nav-category { font-size: .82rem; gap: 1.1rem; }
}

@media (max-width: 480px) {
  .ss-nav-category { gap: .9rem; }

  .ss-log-entry { flex-direction: column; align-items: flex-start; gap: .2rem; }

  .ss-list { grid-template-columns: 1fr; }
}

/* ---------- UGC(地域催事投稿・誤り通報、ux-hospitality-handoff-2026-08-23.md 2-5節) ---------- */

.ss-ugc-form { max-width: 32rem; margin: 1.2rem 0; }
.ss-ugc-field { margin-bottom: 1rem; }
.ss-ugc-field label {
  display: block; font-size: .84rem; color: var(--ink-soft); margin-bottom: .35rem; font-weight: 600;
}
.ss-ugc-required { color: var(--danger); font-weight: 700; font-size: .72rem; margin-left: .3rem; }
.ss-ugc-field input[type="text"],
.ss-ugc-field input[type="date"],
.ss-ugc-field input[type="url"],
.ss-ugc-field textarea {
  width: 100%; max-width: 28rem; padding: .6rem .85rem;
  border: 1px solid var(--rule); border-radius: var(--radius-sm);
  background: var(--surface); color: var(--ink); font-size: .95rem; font-family: inherit;
}
.ss-ugc-field textarea { resize: vertical; }
.ss-ugc-field input:focus-visible, .ss-ugc-field textarea:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 1px;
}
.ss-ugc-field--row { display: flex; gap: 1rem; flex-wrap: wrap; }
.ss-ugc-field--row > div { flex: 1 1 12rem; }

/* ハニーポット欄。人間には見えないが、CSSを読まないボットには見える位置に置く。 */
.ss-ugc-field--honeypot {
  position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden;
}

.ss-ugc-submit {
  border: 1px solid var(--accent); background: var(--accent); color: #fff;
  border-radius: var(--radius-sm); padding: .65rem 1.4rem; font-size: .92rem; font-weight: 700;
  cursor: pointer; transition: opacity .15s ease;
}
.ss-ugc-submit:hover { opacity: .88; }

.ss-ugc-result {
  padding: .8rem 1.1rem; margin: 1rem 0; border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  font-size: .88rem; line-height: 1.7;
}
.ss-ugc-result--ok { background: var(--accent-bg); border-left: 3px solid var(--accent); color: var(--ink); }
.ss-ugc-result--error { background: var(--warn-bg); border-left: 3px solid var(--warn); color: var(--ink-soft); }

/* 誤り通報の中間ステータス表示。閉業バナー(.ss-closed-notice)ほど強くはせず、
   .ss-note相当のトーンに留める(閉業のような確定事実ではなく「確認中」のため)。 */
.ss-ugc-report-notice {
  background: var(--warn-bg); border-left: 3px solid var(--warn);
  padding: .7rem 1.1rem; font-size: .84rem; color: var(--ink-soft); margin: 1rem 0 0;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0; line-height: 1.7; font-weight: 600;
}

/* 「置き忘れた検索」（surprise-features-implementation-proposal-2026-08-24.md 1章）。
   検索ページ内、結果一覧の直前に出す1回限りのバナー。閉業(danger)・誤り通報中間
   ステータス(warn)のような注意喚起ではなく、単純に「増えた」という前向きな知らせ
   なので差し色(spark、2026-08-25変更前はaccentトーン)にする。 */
.ss-search-recall {
  background: var(--spark-bg); border-left: 3px solid var(--spark); color: var(--ink);
  padding: .8rem 1.1rem; margin: 0 0 1.2rem; font-size: .88rem; line-height: 1.7;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem;
}
.ss-search-recall p { margin: 0; }
.ss-search-recall__close {
  background: none; border: none; cursor: pointer; font-size: 1rem; line-height: 1;
  color: var(--ink-soft); padding: 0 .2rem; flex: none;
}

/* 「667件は呼吸する」（同上）。header.php直下、全ページ共通のnoticeバナー。
   出ない時は#ss-site-notice-rootが空のままなのでレイアウトに影響しない。
   2026-08-25: こちらも「増えた」系の前向きな知らせのため差し色(spark)に変更。 */
.ss-site-notice {
  background: var(--spark-bg); color: var(--ink); border-bottom: 1px solid var(--spark);
  padding: .6rem 1rem; font-size: .84rem; line-height: 1.7;
  display: flex; align-items: center; justify-content: center; gap: .8rem; text-align: center;
}
.ss-site-notice p { margin: 0; }
.ss-site-notice__close {
  background: none; border: none; cursor: pointer; font-size: 1rem; line-height: 1;
  color: var(--ink-soft); padding: 0 .2rem; flex: none;
}

/* 再デザイン(2026-08-25、design-constraints-brief.md 6.5節・Option B)。
   ページ最上段の地味なテキストリンクから、ページ下部のアイコン付き縁取りカードへ変更。
   開閉インターフェース(details/summary)自体は維持し、不意打ちにならないよう既定は閉じたまま
   (PHP側 stayspot_ugc_report_section_html() の呼び出し位置をページ末尾へ移動、
   details/summaryの開閉ロジック自体には手を入れていない)。 */
.ss-ugc-report { margin: 2.4rem 0 1.6rem; }
.ss-ugc-report > summary {
  cursor: pointer; list-style: none;
  display: flex; align-items: center; gap: .8rem;
  background: var(--surface); border: 1px solid var(--rule); border-radius: 10px;
  padding: .9rem 1.1rem; box-shadow: var(--shadow);
}
.ss-ugc-report > summary::-webkit-details-marker { display: none; }
.ss-ugc-report[open] > summary {
  border-radius: 10px 10px 0 0; border-bottom: none;
}
.ss-ugc-report__badge {
  flex: none; width: 30px; height: 30px; border-radius: 8px;
  background: var(--accent-bg); color: var(--accent);
  display: flex; align-items: center; justify-content: center;
}
.ss-ugc-report__badge svg { width: 16px; height: 16px; }
.ss-ugc-report__label { font-size: .92rem; font-weight: 700; color: var(--ink); flex: 1 1 auto; }
.ss-ugc-report__chevron {
  color: var(--muted); font-size: .8rem; transition: transform .15s ease;
}
.ss-ugc-report[open] > summary .ss-ugc-report__chevron { transform: rotate(180deg); }
.ss-ugc-report__body {
  background: var(--surface); border: 1px solid var(--rule); border-top: none;
  border-radius: 0 0 10px 10px; padding: 1.1rem 1.1rem 1.3rem; box-shadow: var(--shadow);
}
.ss-ugc-report .ss-ugc-form { margin-top: .8rem; }
.ss-ugc-report__body .ss-ugc-form:first-child { margin-top: 0; }

/* 「疑いの瞬間×訂正履歴」(2026-08-25追加、surprise-features-implementation-proposal-2026-08-24.md)。
   通報フォームの「対象の項目」選択肢と、そこにfocusが当たった際の控えめなヒント表示。 */
.ss-ugc-field--target .ss-ugc-target-options {
  display: flex; flex-wrap: wrap; gap: .5rem 1rem;
}
.ss-ugc-target-option {
  display: flex !important; align-items: center; gap: .3rem;
  font-weight: 400 !important; font-size: .84rem !important; color: var(--ink) !important;
  margin-bottom: 0 !important;
}
.ss-ugc-target-option input[type="radio"] { margin: 0; }
.ss-doubt-hint {
  margin: .5rem 0 0; padding: .5rem .8rem; font-size: .8rem; line-height: 1.6;
  color: var(--ink-soft); background: var(--accent-bg);
  border-left: 2px solid var(--accent); border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.ss-doubt-hint[hidden] { display: none; }

/* 情報表示(名称・営業状況・営業時間/期間)へのhoverで出す控えめなツールチップ。
   PC訪問者向けの補助(タッチ操作では実用上発火しない)。position:fixedなので
   レイアウトには影響しない。 */
.ss-doubt-hover-hint {
  position: fixed; z-index: 60; max-width: 20rem;
  padding: .5rem .75rem; font-size: .78rem; line-height: 1.6;
  background: var(--ink); color: #fff; border-radius: var(--radius-sm);
  box-shadow: 0 2px 10px rgba(0, 0, 0, .18); pointer-events: none;
}
.ss-doubt-hover-hint[hidden] { display: none; }
