/* キャラショーカレンダー — スマホ最優先レイアウト */
:root {
  --pink: #e8578a;
  --pink-light: #fdeef4;
  --text: #333;
  --muted: #777;
  --border: #e5dce0;
  --bg: #fffafb;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  color: var(--text);
  background: var(--bg);
  line-height: 1.6;
  font-size: 16px;
}
main { max-width: 640px; margin: 0 auto; padding: 12px 12px 40px; }

/* header */
.site-header { background: var(--pink); color: #fff; padding: 14px 16px; }
.site-title-h1 { margin: 0; font-size: 1.3rem; line-height: 1.3; }
.site-title { color: #fff; text-decoration: none; font-size: 1.3rem; font-weight: bold; }
.site-tagline { font-size: 0.75rem; opacity: 0.9; }

/* filters */
.filters { display: flex; gap: 8px; margin: 12px 0 8px; flex-wrap: wrap; }
.filters select {
  flex: 1; min-width: 120px; padding: 10px 8px;
  border: 1px solid var(--border); border-radius: 8px; font-size: 15px; background: #fff;
}
.filters button {
  padding: 10px 18px; border: none; border-radius: 8px;
  background: var(--pink); color: #fff; font-size: 15px; cursor: pointer;
}
.views { display: flex; gap: 8px; margin-bottom: 8px; }
.views a {
  padding: 8px 16px; border-radius: 20px; text-decoration: none;
  color: var(--pink); background: var(--pink-light); font-size: 14px;
}
.views a.active { background: var(--pink); color: #fff; }

/* 種別チップ (ワンタップ絞り込み) */
.type-chips { display: flex; gap: 6px; margin-bottom: 12px; overflow-x: auto; padding-bottom: 4px; }
.type-chips .chip {
  padding: 6px 12px; border-radius: 16px; text-decoration: none; white-space: nowrap;
  font-size: 13px; border: 1px solid var(--border); color: var(--muted); background: #fff;
}
.type-chips .chip-show      { color: var(--pink); border-color: var(--pink); }
.type-chips .chip-live      { color: #7a3bd0; }
.type-chips .chip-photo     { color: #1a6bc4; }
.type-chips .chip-hightouch { color: #1a8a4a; }
.type-chips .chip-festival  { color: #c47a1a; }
.type-chips .chip.active            { background: var(--muted); color: #fff; border-color: var(--muted); }
.type-chips .chip-show.active       { background: var(--pink); color: #fff; border-color: var(--pink); }
.type-chips .chip-live.active       { background: #7a3bd0; color: #fff; border-color: #7a3bd0; }
.type-chips .chip-photo.active      { background: #1a6bc4; color: #fff; border-color: #1a6bc4; }
.type-chips .chip-hightouch.active  { background: #1a8a4a; color: #fff; border-color: #1a8a4a; }
.type-chips .chip-festival.active   { background: #c47a1a; color: #fff; border-color: #c47a1a; }

/* キャラショーのカードを強調 (主題) */
/* 2026-07-10 ユーザー指摘: 左の色帯がキャラショーのカードにしか付かず
   「欠けている」ように見えた → 全カード共通のアクセントに変更 (base側で定義) */

/* ミニカレンダー */
.mini-cal {
  background: #fff; border: 1px solid var(--border); border-radius: 12px;
  padding: 10px 12px; margin-bottom: 14px;
}
.mini-cal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.mini-cal-head a { text-decoration: none; color: var(--pink); font-size: 1.2rem; padding: 0 12px; }
.mini-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; }
/* 曜日色分け (2026-07-10 ユーザー指定: 平日=薄い青 / 土・日・祝=赤 の2系統で週末を際立たせる) */
.mini-cal-grid .dow { font-size: 0.65rem; color: #8fb0dc; padding: 2px 0; }
.mini-cal-grid .dow.sun, .mini-cal-grid .dow.sat { color: #d05050; }
.cal-day {
  font-size: 0.78rem; padding: 4px 0 2px; border-radius: 8px; color: #a9c3e6;
  display: flex; flex-direction: column; align-items: center; min-height: 34px;
  text-decoration: none;
}
.cal-day.has-events { color: #1e56b0; background: #eaf1fd; font-weight: bold; }
.cal-day.has-events:active { background: var(--pink); color: #fff; }
.cal-day.selected { outline: 2px solid var(--pink); }
.cal-day.past { opacity: 0.45; }
.cal-day.cal-sun, .cal-day.cal-holiday, .cal-day.cal-sat { color: #e08a8a; }
.cal-day.has-events.cal-sun, .cal-day.has-events.cal-holiday,
.cal-day.has-events.cal-sat { color: #c62828; background: #fdeaea; }
.cal-day.cal-holiday::after { content: "祝"; font-size: 0.5rem; line-height: 1; color: #d05050; }
.cal-day.has-events.cal-holiday::after { color: #c62828; }
.cal-dot {
  font-size: 0.6rem; background: var(--pink); color: #fff;
  border-radius: 8px; padding: 0 5px; margin-top: 1px; line-height: 1.4;
}
.cal-dot.dim { background: #ccc; }
.day-filter-note { font-size: 0.85rem; margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.day-filter-note .chip {
  padding: 4px 10px; border-radius: 14px; text-decoration: none;
  font-size: 12px; border: 1px solid var(--border); color: var(--muted); background: #fff;
}

/* 開催中・期間イベントの集約枠 (日別リストの希釈防止) */
.period-section {
  background: #f7f3f5; border-radius: 12px; padding: 10px 12px; margin-bottom: 14px;
}
.period-heading { font-size: 0.85rem; color: var(--muted); margin-bottom: 8px; }
.period-card { padding: 10px 12px; margin-bottom: 6px; }
.period-card .event-title { font-size: 0.88rem; }
.period-range {
  background: #fff; border: 1px solid var(--border); color: var(--text);
  padding: 1px 8px; border-radius: 10px; font-weight: bold; white-space: nowrap;
}
.special-days {
  font-size: 0.75rem; color: #8a6d00; background: #fff9e0;
  border-radius: 8px; padding: 4px 8px; margin-top: 6px;
}
.badge-open {
  font-size: 0.7rem; background: #1a8a4a; color: #fff;
  padding: 2px 8px; border-radius: 10px; font-weight: bold;
}
.badge-upcoming {
  font-size: 0.7rem; background: #eee; color: #666;
  padding: 2px 8px; border-radius: 10px; font-weight: bold;
}
.badge-family {
  font-size: 0.7rem; background: #ffe9f2; color: #c2185b;
  padding: 2px 8px; border-radius: 10px; margin-left: 6px;
  white-space: nowrap; font-weight: bold; border: 1px solid #f5b8d0;
}
/* 親子優先席 (配置配慮あり) は最上位表示 */
.badge-family-priority { background: #c2185b; color: #fff; border-color: #c2185b; }

/* 参加方法バッジ (観覧自由/整理券/チケット制) — 全イベント共通・最重要バッジ */
.badge-adm {
  font-size: 0.72rem; padding: 3px 9px; border-radius: 12px;
  font-weight: bold; white-space: nowrap; color: #fff;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.badge-adm-free      { background: #1a8a4a; }
.badge-adm-token     { background: #e8890c; }
.badge-adm-firstcome { background: #c94a4a; }  /* 先着順: 赤系で「早めに来て」の警戒感 */
.badge-adm-paid      { background: #1565c0; }
.badge-adm-unknown {
  background: #fff; color: var(--muted); border: 1px dashed #bbb;
  box-shadow: none; font-weight: normal;
}

/* 作品ポータル (総合トップ) */
.portal-lead { font-size: 0.9rem; color: var(--muted); margin: 14px 2px 14px; line-height: 1.7; }
.portal-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 20px; }
.portal-card {
  position: relative; display: flex; flex-direction: column; gap: 4px;
  background: #fff; border: 1px solid var(--border); border-radius: 14px;
  padding: 16px 14px 14px; text-decoration: none; color: var(--text);
  border-left-width: 6px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
.portal-card:active { background: var(--pink-light); }
.portal-precure    { border-left-color: #e8578a; }
.portal-kamenrider { border-left-color: #c62828; }
.portal-gavan      { border-left-color: #1565c0; }
.portal-sentai     { border-left-color: #e65100; }
.portal-name { font-size: 1.05rem; font-weight: bold; }
.portal-meta { font-size: 0.78rem; color: var(--muted); }
.portal-meta strong { font-size: 1.2rem; color: var(--text); margin-right: 2px; }
.portal-nearest { margin-left: 6px; }
.portal-arrow {
  position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
  color: var(--pink); font-weight: bold;
}
.portal-weekend { margin-top: 6px; }
.portal-pick-fr {
  font-size: 0.7rem; padding: 2px 8px; border-radius: 10px; color: #fff;
  font-weight: bold; white-space: nowrap; background: var(--muted);
}
.portal-anpanman   { border-left-color: #e64a19; }
.portal-sanrio     { border-left-color: #d81b60; }
.portal-pokemon    { border-left-color: #f9a825; }
.portal-pokemoncard { border-left-color: #1565c0; }
.portal-pokemongo  { border-left-color: #00897b; }
.portal-shimajiro  { border-left-color: #689f38; }
.portal-ultraman   { border-left-color: #c62828; }
.portal-pawpatrol  { border-left-color: #1e88e5; }
.portal-chiikawa   { border-left-color: #a1887f; }
.portal-sumikko    { border-left-color: #64b5f6; }
.portal-pick-fr.portal-precure    { background: #e8578a; }
.portal-pick-fr.portal-kamenrider { background: #c62828; }
.portal-pick-fr.portal-anpanman   { background: #e64a19; }
.portal-pick-fr.portal-sanrio     { background: #d81b60; }
.portal-pick-fr.portal-pokemon    { background: #f9a825; }
.portal-pick-fr.portal-pokemoncard { background: #1565c0; }
.portal-pick-fr.portal-pokemongo  { background: #00897b; }
.portal-pick-fr.portal-shimajiro  { background: #689f38; }
.portal-pick-fr.portal-ultraman   { background: #c62828; }
.portal-pick-fr.portal-pawpatrol  { background: #1e88e5; }
.portal-pick-fr.portal-chiikawa   { background: #a1887f; }
.portal-pick-fr.portal-sumikko    { background: #64b5f6; }
.portal-pick-fr.portal-gavan      { background: #1565c0; }
.portal-pick-fr.portal-sentai     { background: #e65100; }
.portal-more { font-size: 0.8rem; color: var(--muted); margin-top: 8px; }

/* 会場ページ */
.venue-h1 { font-size: 1.2rem; margin: 8px 0 4px; }
.venue-address { font-size: 0.88rem; font-weight: bold; margin: 4px 0 2px; }
.venue-access { font-size: 0.85rem; line-height: 1.8; color: var(--text); margin: 4px 0; }
.venue-links { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 4px; }
.venue-btn {
  display: inline-block; padding: 9px 12px; border-radius: 10px; text-decoration: none;
  background: var(--pink); color: #fff; font-size: 0.82rem; font-weight: bold;
}
.venue-btn-sub { background: #fff; color: var(--pink); border: 1px solid var(--pink); }
.venue-link { color: var(--text); font-weight: bold; }
.venue-link-hint { display: block; font-size: 0.78rem; margin-top: 2px; }
.venue-page > .event-meta { margin-bottom: 4px; }
.venue-section { margin-top: 4px; }
.venue-facilities { margin: 4px 0; }
.venue-date { font-weight: bold; color: var(--text); }
.venue-past { padding-left: 1.2em; }
.venue-past li { font-size: 0.85rem; line-height: 1.9; }
.venue-past-fr { color: var(--muted); font-size: 0.78rem; }

/* 周辺ホテル枠 (折りたたみ・既定で閉)。閉じていても「何があるか」を
   チラ見せチップで認知させる (ピン留めカードと同じ左帯の視覚言語・青=宿泊) */
.hotel-box {
  background: #f7faff; border: 1px solid #cfe0f5; border-left: 4px solid #1565c0;
  border-radius: 12px; margin: 12px 0;
}
.hotel-box[open] { background: #fff; }
.hotel-summary {
  cursor: pointer; padding: 12px 14px; font-size: 0.88rem;
  color: var(--text); list-style: none; display: block;
}
.hotel-summary::-webkit-details-marker { display: none; }
.hotel-summary-row { display: flex; align-items: center; gap: 8px; }
.hotel-summary-main { font-weight: bold; flex: 1; }
.hotel-open-pill {
  background: #1565c0; color: #fff; font-size: 0.7rem; font-weight: bold;
  padding: 3px 10px; border-radius: 10px; white-space: nowrap;
}
.hotel-box[open] .hotel-open-pill { display: none; }
.hotel-teaser { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.hotel-box[open] .hotel-teaser { display: none; }
.hotel-teaser-chip {
  font-size: 0.72rem; background: #fff; border: 1px solid #cfe0f5;
  color: #1565c0; padding: 2px 9px; border-radius: 10px; white-space: nowrap;
}
.hotel-body { padding: 0 14px 12px; }
.hotel-card {
  border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; margin-bottom: 10px;
}
.hotel-pick {
  display: inline-block; font-size: 0.72rem; font-weight: bold;
  padding: 2px 10px; border-radius: 10px; margin-bottom: 6px;
}
.hotel-pick-near  { background: #e3f2fd; color: #1565c0; }
.hotel-pick-cheap { background: #fff3e0; color: #e65100; }
.hotel-pick-ai    { background: #f3e5f5; color: #7b1fa2; }
.hotel-name { font-size: 0.92rem; font-weight: bold; margin-bottom: 4px; }
.hotel-access { font-size: 0.8rem; color: var(--text); line-height: 1.7; }
.hotel-feature { font-size: 0.8rem; color: var(--muted); line-height: 1.7; margin-top: 2px; }
.hotel-cta { display: flex; align-items: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.hotel-price { font-size: 0.85rem; font-weight: bold; color: #d32f2f; }
.hotel-price small { font-weight: normal; color: var(--muted); }
.hotel-vacancy { font-size: 0.75rem; font-weight: bold; padding: 2px 8px; border-radius: 8px; white-space: nowrap; }
.hotel-vacancy-ok   { background: #e8f5e9; color: #1a8a4a; }
.hotel-vacancy-full { background: #eee; color: #777; }
.hotel-btn { background: #bf0000; }  /* 楽天ブランド色 */
.hotel-area-fallback { margin: 4px 0 8px; }
.btn-pr { font-size: 0.65rem; font-weight: normal; opacity: 0.75; }
.hotel-area-lead { display: block; font-size: 0.78rem; color: var(--muted); margin-bottom: 4px; }

/* ホテル枠: 移動時間ゾーンファインダー (安さ重視カードの後継) */
.hotel-zone-finder {
  border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; margin-bottom: 10px; background: #fffdf7;
}
.zone-head { font-size: 0.88rem; font-weight: bold; margin-bottom: 8px; }
.zone-tabs { display: flex; gap: 6px; margin-bottom: 8px; }
.zone-tab {
  flex: 1; padding: 7px 10px; border-radius: 10px; font-size: 0.82rem; font-weight: bold;
  border: 1px solid var(--pink); background: #fff; color: var(--pink); cursor: pointer;
}
.zone-tab.active { background: var(--pink); color: #fff; }
.zone-slider-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.zone-slider-label { font-size: 0.82rem; font-weight: bold; white-space: nowrap; }
.zone-slider-label output { color: var(--pink); font-size: 1rem; }
#zoneRange { flex: 1; accent-color: var(--pink); }
.zone-list { display: flex; flex-wrap: wrap; gap: 8px; }
.zone-btn { font-size: 0.8rem; }
.zone-empty { font-size: 0.78rem; color: var(--muted); }

/* ホテル枠: 終演後の乗換検索 (出発時刻チップ + 行き先ボタン → Yahoo!乗換案内) */
.hotel-depart {
  border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; margin-bottom: 10px; background: #f7fcf8;
}
.depart-caption { font-size: 0.78rem; color: var(--muted); margin: 0 0 8px; line-height: 1.7; }
.depart-times { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.depart-time {
  padding: 5px 10px; border-radius: 10px; font-size: 0.8rem; font-weight: bold;
  border: 1px solid #1a8a4a; background: #fff; color: #1a8a4a; cursor: pointer;
}
.depart-time.active { background: #1a8a4a; color: #fff; }
/* 信頼性表示・誤り報告導線 */
.verified-note { display: block; font-size: 0.72rem; color: var(--muted); margin-top: 2px; }
.report-link { display: inline-block; margin-left: 8px; color: #b26a00; font-size: 0.78rem; }
.report-target { background: #fff7e6; border: 1px solid #f0c36d; border-radius: 10px; padding: 4px 14px 10px; margin-bottom: 14px; }
.report-target code { background: #fff; padding: 2px 6px; border-radius: 6px; font-size: 0.8rem; word-break: break-all; }

/* ポケモンの系統タグ (GO/ポケカ)。本体キャラ系イベントと視覚的に区別する */
.badge-subseries {
  font-size: 0.7rem; padding: 2px 8px; border-radius: 10px; white-space: nowrap;
  background: #37474f; color: #fff;
}

/* 期間イベントの期間1行表示 (日別差分がない場合、空白だらけの表の代わり) */
.period-line {
  background: #fff; border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 14px; font-size: 0.9rem; margin: 12px 0;
}

/* SNSヒント (公式未確認情報)。注意喚起だが断定ではないため警告色は控えめの橙 */
.alert-sns {
  background: #fff7e6; border: 1px solid #f0c36d; border-radius: 10px;
  padding: 10px 12px; font-size: 0.85rem; line-height: 1.8; color: #7a5200;
}
.alert-sns-cancel { background: #fdeaea; border-color: #e08a8a; color: #8a2a2a; }
.sns-hint-meta { font-size: 0.75rem; color: inherit; opacity: 0.8; }

/* イベント固有の詳細ブロック (extra_note: 対象店舗一覧等)。既定で開いた折りたたみ */
.extra-note {
  background: #fff; border: 1px solid var(--border); border-radius: 12px;
  margin: 12px 0; padding: 0;
}
.extra-note-summary {
  cursor: pointer; padding: 12px 14px; font-size: 0.88rem; font-weight: bold;
  list-style: none;
}
.extra-note-summary::-webkit-details-marker { display: none; }
.extra-note-summary::after { content: ' ▾'; color: var(--muted); }
.extra-note[open] .extra-note-summary::after { content: ' ▴'; }
.extra-note-body {
  padding: 0 14px 12px; font-size: 0.84rem; line-height: 1.9; color: var(--text);
}

.bus-line { font-size: 0.82rem; line-height: 1.9; margin-top: 6px; }
.bus-deps { font-weight: bold; color: #1a8a4a; letter-spacing: 0.02em; }
.bus-ver { color: var(--muted); font-size: 0.7rem; }

/* 静的ページ (運営者情報・プライバシーポリシー等) */
.static-page { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 18px 16px; }
.static-page h1 { font-size: 1.15rem; color: var(--pink); margin-bottom: 12px; }
.static-page h2 { font-size: 0.95rem; margin: 18px 0 6px; padding-bottom: 3px; border-bottom: 2px solid var(--pink-light); }
.static-page p, .static-page li { font-size: 0.88rem; line-height: 1.8; }
.static-page ul { padding-left: 1.3em; }
.footer-links { margin-top: 8px; font-size: 0.75rem; }

/* シェアボタン */
.share-buttons { display: flex; gap: 8px; margin: 10px 0; }
.share-btn {
  flex: 1; text-align: center; padding: 10px 8px; border-radius: 10px;
  text-decoration: none; color: #fff; font-size: 0.85rem; font-weight: bold;
}
.share-x    { background: #111; }
.share-line { background: #06c755; }

/* 参加方法の凡例 (リスト上部) */
.adm-legend {
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px;
  background: #fff; border: 1px solid var(--border); border-radius: 12px;
  padding: 8px 12px; margin-bottom: 14px; font-size: 0.72rem; color: var(--muted);
}
.adm-legend .legend-item { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }

/* 受付中の抽選/チケット: トップ上部のピン留めセクション */
.ticket-open-section { margin: 14px 0; }
.ticket-open-card { border-left: 4px solid #d32f2f; background: #fff8f8; }

/* チケット・抽選バッジ */
.badge-ticket {
  font-size: 0.7rem; padding: 2px 8px; border-radius: 10px;
  margin-left: 6px; white-space: nowrap; font-weight: bold;
}
.badge-ticket-open     { background: #d32f2f; color: #fff; }
.badge-ticket-upcoming { background: #fff; color: #d32f2f; border: 1px solid #d32f2f; }
.badge-ticket-soldout  { background: #555; color: #fff; }
.badge-ticket-few      { background: #ef6c00; color: #fff; }
.badge-ticket-presale  { background: #8d6e63; color: #fff; }   /* 前売終了・当日券要確認 */
.badge-ticket-closed   { background: #999; color: #fff; }
.badge-ticket-tba      { background: #fff; color: #777; border: 1px solid #ccc; }
.badge-ticket-unknown  { background: #fff; color: #999; border: 1px dashed #ccc; font-weight: normal; }
.ticket-status { font-size: 0.75rem; padding: 2px 8px; border-radius: 8px; white-space: nowrap; }
.ticket-open     { background: #d32f2f; color: #fff; font-weight: bold; }
.ticket-upcoming { background: #fde8e8; color: #d32f2f; }
.ticket-tba      { background: #eee; color: #777; }
.ticket-closed   { background: #eee; color: #aaa; text-decoration: line-through; }
.ticket-soldout  { background: #555; color: #fff; font-weight: bold; }
.ticket-few      { background: #ef6c00; color: #fff; font-weight: bold; }
.ticket-presale_ended { background: #8d6e63; color: #fff; font-weight: bold; }
.pr-mark { font-size: 0.65rem; color: #999; }
.type-chips .chip-family        { color: #c2185b; border-color: #f5b8d0; }
.type-chips .chip-family.active { background: #c2185b; color: #fff; border-color: #c2185b; }
.badge-facility {
  font-size: 0.75rem; background: #f0f7f0; color: #2e7d32;
  padding: 2px 10px; border-radius: 10px; margin-right: 4px;
  display: inline-block; margin-bottom: 4px;
}
.facility-note { font-size: 0.75rem; color: var(--muted); margin-top: 4px; }

/* 詳細ページ: 期間イベントの日別スケジュール表 */
.day-schedule { width: 100%; border-collapse: collapse; font-size: 0.8rem; background: #fff; margin: 12px 0; }
.day-schedule th, .day-schedule td { border: 1px solid var(--border); padding: 6px 8px; text-align: left; }
.day-schedule th { background: var(--pink-light); color: var(--pink); }
.day-schedule tr.current { background: #fff9e0; font-weight: bold; }

/* event list */
.date-heading {
  font-size: 1rem; color: var(--pink); margin: 18px 0 6px;
  padding-bottom: 4px; border-bottom: 2px solid var(--pink-light);
}
.event-card {
  display: block; background: #fff; border: 1px solid var(--border);
  border-left: 4px solid var(--pink);   /* 全カード共通の左色帯 (2026-07-10) */
  border-radius: 10px; padding: 12px 14px; margin-bottom: 8px;
  text-decoration: none; color: var(--text);
}
.event-card:active { background: var(--pink-light); }
.event-card.removed { opacity: 0.6; }
/* ピン留め (購入型先行) は赤帯を維持 (base より後で上書き) */
.event-card.ticket-open-card { border-left-color: #d32f2f; }
/* タイトル行とバッジ行を分離し、折り返し時の行間を一定に保つ */
.event-main { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.event-main .event-title { flex-basis: 100%; }
/* flex の gap で間隔を管理するため、バッジ個別の margin は打ち消す */
.event-main .badge, .series-tag .badge { margin-left: 0; }
.event-title { font-weight: bold; font-size: 0.95rem; line-height: 1.45; }
.event-meta {
  font-size: 0.8rem; color: var(--muted); margin-top: 8px;
  display: flex; gap: 6px 10px; flex-wrap: wrap; align-items: center; line-height: 1.4;
}
.event-meta .pref {
  background: var(--pink-light); color: var(--pink);
  padding: 1px 8px; border-radius: 10px; font-weight: bold;
}
.badge-removed {
  font-size: 0.7rem; background: #f5c518; color: #5a4500;
  padding: 2px 8px; border-radius: 10px; margin-left: 6px; white-space: nowrap;
}
.badge-type {
  font-size: 0.7rem; padding: 2px 8px; border-radius: 10px;
  margin-left: 6px; white-space: nowrap; font-weight: bold;
}
.badge-show      { background: var(--pink-light); color: var(--pink); }
.badge-live      { background: #f3e8ff; color: #7a3bd0; }
.badge-photo     { background: #e3f0ff; color: #1a6bc4; }
.badge-hightouch { background: #e6f7ec; color: #1a8a4a; }
.badge-festival  { background: #fff0dd; color: #c47a1a; }
.badge-cafe      { background: #fdf0e6; color: #a0522d; }
.badge-goods     { background: #eef3f8; color: #4a6785; }
.badge-other     { background: #ececec; color: #666; }
.empty { padding: 30px 0; text-align: center; color: var(--muted); }

/* event detail */
.event-detail h1 { font-size: 1.2rem; margin: 14px 0 6px; }
.series-tag {
  color: var(--pink); font-size: 0.85rem; font-weight: bold; margin-bottom: 12px;
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
/* 詳細表: エクセルセル風の枠内枠レイアウト (2026-07-13)。
   各項目 (dt+dd) を罫線で仕切り、視認性を上げる。ラベル列は薄い背景色。 */
.detail-table {
  background: #fff; border: 1px solid var(--border); border-radius: 10px;
  padding: 0; overflow: hidden;
}
.detail-table dt {
  padding: 8px 14px; margin: 0;
  background: #faf6f8;
  color: var(--muted); font-size: 0.75rem; font-weight: 600;
  border-bottom: 1px solid var(--border);
}
.detail-table dd {
  padding: 10px 14px; margin: 0;
  border-bottom: 1px solid var(--border);
}
/* 最終行の下罫線は消して外枠と重ならないように */
.detail-table dt:last-of-type,
.detail-table dd:last-of-type { border-bottom: none; }

/* デスクトップ: ラベル | 値 の2カラム + 縦罫線 */
@media (min-width: 720px) {
  .detail-table {
    display: grid; grid-template-columns: 9em 1fr;
  }
  .detail-table dt {
    border-right: 1px solid var(--border); align-self: stretch;
    display: flex; align-items: center;
  }
}
/* モバイル: 段組 (ラベル上・値下) + 各セル罫線 */
@media (max-width: 719px) {
  .detail-table dt { padding: 6px 12px; font-size: 0.72rem; }
  .detail-table dd { padding: 8px 12px 10px; font-size: 0.95rem; }
  .cond-row { padding: 2px 0; }
}
/* 観覧条件の構造化行 (2026-07-12 詳細ページPhase A) */
.cond-structured { display: flex; flex-direction: column; gap: 6px; }
.cond-row {
  display: grid; grid-template-columns: 6em 1fr; align-items: baseline;
  gap: 10px; font-size: 0.9rem; line-height: 1.55;
}
.cond-label { color: var(--muted); font-size: 0.78rem; font-weight: 600; }
.cond-body { color: var(--fg); }
@media (max-width: 480px) {
  .cond-row { grid-template-columns: 5em 1fr; gap: 8px; font-size: 0.86rem; }
}
/* 料金表 (2026-07-12 詳細ページPhase B・fee_table) */
.fee-table-wrap { margin: 2px 0; }
.fee-table {
  border-collapse: collapse; width: auto; font-size: 0.9rem;
  border: 1px solid var(--border, #ddd);
}
.fee-table th, .fee-table td {
  padding: 6px 12px; border: 1px solid var(--border, #ddd);
  text-align: right; white-space: nowrap;
}
.fee-table thead th {
  background: #f7f5fa; color: var(--fg); font-weight: 600; text-align: center;
}
.fee-table th.fee-kind {
  background: #faf7fc; color: var(--muted); font-size: 0.82rem;
  font-weight: 600; text-align: left;
}
.fee-notes {
  color: var(--muted); font-size: 0.78rem; margin-top: 4px; line-height: 1.5;
}
@media (max-width: 480px) {
  .fee-table { font-size: 0.85rem; }
  .fee-table th, .fee-table td { padding: 5px 8px; }
}
/* 過去日のカレンダー件数 (2026-07-14): 未来と区別してグレー表示 */
.cal-dot.past { background: #b0b0b0; }
.cal-day.past.has-events { opacity: 0.75; }

/* AI要約 (2026-07-13): 会場のファミリー設備と並ぶ dl 内の dd として配置 */
.ai-summary-body {
  font-size: 0.92rem; line-height: 1.75; color: var(--text);
  text-align: justify;
}
.ai-summary-meta {
  margin: 6px 0 0; font-size: 0.78rem; color: var(--muted); text-align: right;
}
.ai-summary-meta a { color: var(--pink); text-decoration: none; }
.ai-summary-meta a:hover { text-decoration: underline; }
@media (max-width: 480px) {
  .ai-summary-body { font-size: 0.88rem; line-height: 1.7; }
}

.alert {
  background: #f2f2f2; border-radius: 8px; padding: 10px 14px;
  font-size: 0.85rem; margin: 12px 0;
}
.alert-removed { background: #fff3cd; color: #664d03; }
.official-link { margin: 18px 0 8px; text-align: center; }
.btn-official {
  display: inline-block; background: var(--pink); color: #fff;
  padding: 13px 22px; border-radius: 10px; text-decoration: none; font-weight: bold;
}
.note { font-size: 0.75rem; color: var(--muted); text-align: center; margin-bottom: 16px; }
.gcal-link { text-align: center; margin-bottom: 10px; display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.btn-gcal {
  display: inline-block; background: #fff; color: #1a6bc4; border: 1px solid #1a6bc4;
  padding: 9px 16px; border-radius: 10px; text-decoration: none; font-size: 0.85rem;
}
.btn-gcal-sub { color: var(--muted); border-color: var(--border); }

/* footer */
.site-footer {
  max-width: 640px; margin: 0 auto; padding: 18px 16px 30px;
  border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--muted);
}
.site-footer p { margin-bottom: 8px; }
.disclaimer strong { color: #b03050; }

/* admin */
.admin-table { width: 100%; border-collapse: collapse; font-size: 0.8rem; background: #fff; }
.admin-table th, .admin-table td { border: 1px solid var(--border); padding: 6px 8px; text-align: left; }
.admin-table th { background: var(--pink-light); }
/* モバイル対応: タップで長押し選択にならないよう明示 (2026-07-12) */
.admin-table button, .admin-bulk button {
  min-height: 44px; padding: 8px 14px; margin: 2px 3px;
  border: 1px solid var(--border); border-radius: 8px;
  background: #fff; color: var(--fg);
  font-size: 0.9rem; font-weight: 500;
  cursor: pointer;
  -webkit-user-select: none; user-select: none;
  -webkit-touch-callout: none; touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(176, 48, 80, 0.15);
}
.admin-table button:active, .admin-bulk button:active { background: #f3f0f5; }
.admin-table button.primary, .admin-bulk button.primary {
  background: var(--pink); color: #fff; border-color: var(--pink);
}
.admin-table button.primary:active, .admin-bulk button.primary:active {
  background: #a02040;
}
.admin-table button.danger, .admin-bulk button.danger {
  background: #fff; color: #b03050; border-color: #b03050;
}
.admin-bulk {
  position: sticky; top: 0; z-index: 10;
  background: var(--pink-light); border-bottom: 2px solid var(--pink);
  padding: 10px; margin-bottom: 10px;
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
.admin-bulk .bulk-count { font-weight: 600; margin-right: 8px; }
.admin-bulk .bulk-count.zero { color: var(--muted); }

/* 🙋 ユーザーキュー カード表示 (2026-07-12) */
.user-queue-heading { color: #b03050; margin: 20px 0 12px; font-size: 1.15rem; }
.user-queue-list { display: flex; flex-direction: column; gap: 12px; margin-bottom: 30px; }
.uq-card {
  background: #fff; border: 2px solid #b03050; border-radius: 10px;
  padding: 14px; box-shadow: 0 2px 6px rgba(176,48,80,0.1);
}
.uq-header {
  display: flex; flex-wrap: wrap; gap: 12px; align-items: baseline;
  padding-bottom: 8px; border-bottom: 1px dashed #e0d0d5; margin-bottom: 8px;
  font-size: 0.85rem; color: var(--muted);
}
.uq-id { color: #b03050; font-weight: bold; font-size: 1rem; }
.uq-date { font-weight: 500; color: var(--fg); }
.uq-title { font-size: 1rem; font-weight: 600; margin-bottom: 4px; }
.uq-venue { color: var(--fg); font-size: 0.9rem; margin-bottom: 10px; }
.uq-links { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.uq-link {
  padding: 10px 14px; border-radius: 8px; text-decoration: none;
  font-size: 0.9rem; font-weight: 500; border: 1px solid var(--border);
  -webkit-tap-highlight-color: rgba(176,48,80,0.15);
}
.uq-link-site { background: #e8f4fd; color: #0059b8; border-color: #b8d4ea; }
.uq-link-src { background: #fef4e8; color: #b85e00; border-color: #eacfb8; }
.uq-link-edit { background: #f0f0f0; color: var(--fg); }
.uq-current, .uq-check {
  background: #faf7f9; padding: 8px 12px; border-radius: 6px;
  margin-bottom: 8px; font-size: 0.88rem;
}
.uq-check { background: #fff3f0; border-left: 3px solid #b03050; }
.uq-label {
  font-size: 0.78rem; color: var(--muted); font-weight: 600;
  margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.05em;
}
.uq-current-list { margin: 0; padding-left: 20px; }
.uq-current-list li { margin-bottom: 2px; }
.uq-diff > div { margin-bottom: 4px; line-height: 1.5; }
.uq-diff-raw { line-height: 1.5; }
.uq-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.uq-actions button {
  min-height: 44px; padding: 10px 16px; border: 1px solid var(--border);
  border-radius: 8px; background: #fff; cursor: pointer; font-size: 0.9rem;
  -webkit-user-select: none; user-select: none; touch-action: manipulation;
}
.uq-actions button.primary {
  background: var(--pink); color: #fff; border-color: var(--pink); font-weight: 600;
}
.uq-actions button.danger { background: #fff; color: #b03050; border-color: #b03050; }
@media (max-width: 640px) {
  .uq-card { padding: 12px; }
  .uq-header { font-size: 0.8rem; gap: 8px; }
  .uq-links { flex-direction: column; }
  .uq-link { display: block; text-align: center; }
}
.admin-form label { display: block; margin: 10px 0 2px; font-size: 0.85rem; }
.admin-form input, .admin-form select, .admin-form textarea {
  width: 100%; padding: 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 15px;
}
.admin-form button { margin-top: 14px; padding: 10px 20px; background: var(--pink); color: #fff; border: none; border-radius: 8px; }
.type-checks { display: flex; gap: 14px; flex-wrap: wrap; background: #fff; border: 1px solid var(--border); border-radius: 6px; padding: 10px; }
.type-check { display: inline-flex; align-items: center; gap: 4px; margin: 0 !important; font-size: 0.9rem; }
.type-check input { width: auto; }
.admin-nav { display: flex; gap: 12px; margin: 12px 0; font-size: 0.9rem; }

/* ==== サイト内検索・お気に入り・会場一覧・アーカイブ (2026-07-11) ==== */
/* ヘッダ内ツール列 (検索フォーム + お気に入りリンク) */
.site-tools { display: flex; gap: 8px; align-items: center; margin-top: 10px; }
.site-search { display: flex; flex: 1; max-width: 340px; }
.site-search input {
  flex: 1; min-width: 0; padding: 7px 10px; border: none; border-radius: 8px 0 0 8px;
  font-size: 14px; background: rgba(255, 255, 255, 0.95); color: var(--text);
}
.site-search button {
  padding: 7px 12px; border: none; border-radius: 0 8px 8px 0;
  background: rgba(255, 255, 255, 0.25); color: #fff; font-size: 14px; cursor: pointer;
}
.fav-link {
  color: #fff; text-decoration: none; font-size: 0.8rem; white-space: nowrap;
  padding: 7px 10px; border-radius: 8px; background: rgba(255, 255, 255, 0.18);
}
#fav-count { font-weight: bold; }

/* カード上の ☆ トグル (fav.js が挿入)。カード全体がリンクのため右上に重ねる */
.event-card { position: relative; }
.event-card .fav-star {
  position: absolute; top: 6px; right: 8px; border: none; background: none;
  font-size: 1.15rem; line-height: 1; color: #c9b8bf; cursor: pointer; padding: 6px;
}
.event-card .fav-star.on { color: #f5a623; }
.event-main { padding-right: 28px; }   /* ☆ とタイトルの重なり防止 */

/* 詳細ページの大きいお気に入りボタン */
.fav-row { margin: 10px 0 4px; }
.fav-btn {
  width: 100%; padding: 11px; border: 1px solid var(--border); border-radius: 10px;
  background: #fff; color: var(--text); font-size: 0.95rem; cursor: pointer;
}
.fav-btn.on { background: #fff7e8; border-color: #f5a623; color: #a96e00; }

/* 検索ページのフォーム */
.search-page-form { display: flex; gap: 0; }
.search-page-form input[type="search"] {
  flex: 1; min-width: 0; padding: 10px 12px; border: 1px solid var(--border);
  border-radius: 10px 0 0 10px; font-size: 16px;   /* iOSの自動ズーム防止に16px */
}
.search-page-form button {
  padding: 10px 18px; border: none; border-radius: 0 10px 10px 0;
  background: var(--pink); color: #fff; font-size: 15px; cursor: pointer;
}

/* 会場一覧 */
.venue-list { list-style: none; margin: 0; padding: 0; }
.venue-list li a {
  display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
  background: #fff; border: 1px solid var(--border); border-left: 4px solid var(--pink);
  border-radius: 10px; padding: 10px 14px; margin-bottom: 6px;
  text-decoration: none; color: var(--text);
}
.venue-list-name { font-weight: bold; font-size: 0.92rem; }
.venue-list-meta { font-size: 0.78rem; color: var(--muted); white-space: nowrap; }

/* アーカイブ (終了イベント) のカードは色帯をグレーに */
.event-card.archive-card { border-left-color: #b8b0b4; }

/* 日別スケジュール表の終了済みの日 (期間の起点表示のために含める) */
.day-schedule tr.past-day td { opacity: 0.55; }

/* パンくずリスト (2026-07-12) */
.breadcrumbs {
  font-size: 0.76rem; color: var(--muted); margin: 2px 0 10px;
  overflow-x: auto; white-space: nowrap;
}
.breadcrumbs a { color: var(--muted); text-decoration: none; }
.breadcrumbs a:hover { color: var(--pink); text-decoration: underline; }
.bc-sep { margin: 0 6px; }
.bc-here { color: var(--text); }

/* 関連イベント (詳細ページ下部の内部リンク・2026-07-12) */
.related-events { margin-top: 18px; }
.related-list { list-style: none; margin: 0 0 12px; padding: 0; }
.related-list li a {
  display: block; padding: 8px 12px; margin-bottom: 4px;
  background: #fff; border: 1px solid var(--border); border-radius: 8px;
  text-decoration: none; color: var(--text); font-size: 0.86rem;
}
.related-list li a:hover { border-color: var(--pink); }

/* ガイド記事 (2026-07-12) */
.guide { line-height: 1.85; }
.guide h2 { font-size: 1.05rem; margin: 22px 0 8px; padding-left: 10px;
  border-left: 4px solid var(--pink); }
.guide p { margin: 8px 0; font-size: 0.92rem; }
.guide ul, .guide ol { margin: 8px 0 8px 22px; font-size: 0.92rem; }
.guide li { margin: 4px 0; }
.guide-faq dt { font-weight: bold; margin-top: 14px; font-size: 0.92rem; }
.guide-faq dd { margin: 4px 0 0 14px; font-size: 0.9rem; color: #444; }
.guide-note { font-size: 0.78rem; color: var(--muted); margin-top: 18px; }
.guide-list { list-style: none; margin: 0; padding: 0; }
.guide-list li a {
  display: block; background: #fff; border: 1px solid var(--border);
  border-left: 4px solid var(--pink); border-radius: 10px;
  padding: 12px 14px; margin-bottom: 8px; text-decoration: none; color: var(--text);
}
.guide-list .guide-title { font-weight: bold; font-size: 0.95rem; }
.guide-list .guide-desc { font-size: 0.8rem; color: var(--muted); margin-top: 4px; }

/* 期間開催イベントの折りたたみ (4件目以降・2026-07-11) */
.period-more summary {
  cursor: pointer; padding: 9px 14px; margin-bottom: 8px;
  background: #fff; border: 1px dashed var(--border); border-radius: 10px;
  font-size: 0.85rem; color: var(--muted);
}
.period-more summary:hover { border-color: var(--pink); color: var(--pink); }
.period-more[open] summary { margin-bottom: 8px; }

/* 回ごとの空席状況チップ (時間表示に後置・飛行船直販由来・2026-07-11) */
.tmark {
  display: inline-block; padding: 1px 7px; border-radius: 8px;
  font-size: 0.72rem; font-weight: bold; vertical-align: 1px; white-space: nowrap;
}
.tmark-open { background: #e6f4ea; color: #1a6b3c; }
.tmark-few  { background: #fff3e0; color: #b45309; }
.tmark-sold { background: #e8e8e8; color: #666; }

/* 第4陣 franchise ポータル色 (2026-07-17) */
.portal-disney     { border-left-color: #5c6bc0; }
.portal-thomas     { border-left-color: #0277bd; }
.portal-tamagotchi { border-left-color: #ec407a; }
.portal-yuruchara  { border-left-color: #8d6e63; }
.portal-pick-fr.portal-disney     { background: #5c6bc0; }
.portal-pick-fr.portal-thomas     { background: #0277bd; }
.portal-pick-fr.portal-tamagotchi { background: #ec407a; }
.portal-pick-fr.portal-yuruchara  { background: #8d6e63; }

/* 期間イベントの開催中バッジ (#65 2026-07-17) */
.badge-open-now { background: #2e7d32; color: #fff; }

/* 上映会タグ (screening 2026-07-17) */
.badge-screening { background: #455a64; color: #fff; }

/* --- 終了イベントの受け皿 (2026-07-18 SEO施策2) --- */
.next-shows {
  background: linear-gradient(135deg, var(--pink-light), #fff5f9);
  border: 2px solid var(--pink);
  border-radius: 12px;
  padding: 16px 18px;
  margin: 14px 0 18px;
}
.next-shows-title { font-size: 1.05rem; color: var(--pink); margin-bottom: 10px; }
.next-shows-list { list-style: none; }
.next-shows-list li { margin: 0; border-top: 1px dashed #f0c6d6; }
.next-shows-list li:first-child { border-top: 0; }
.next-shows-list a {
  display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline;
  padding: 9px 4px; text-decoration: none; color: var(--text);
}
.next-shows-list a:hover { background: rgba(255,255,255,.7); border-radius: 8px; }
.ns-date { font-weight: 700; color: var(--pink); white-space: nowrap; }
.ns-title { font-weight: 600; }
.ns-venue { font-size: .84rem; color: var(--muted); width: 100%; }
.next-shows-more { margin-top: 8px; text-align: right; font-size: .9rem; }
.next-shows-more a { color: var(--pink); font-weight: 600; text-decoration: none; }
.event-memo {
  background: #f7f9fc;
  border: 1px solid #d7e0ec;
  border-left: 5px solid #6b93c4;
  border-radius: 10px;
  padding: 14px 16px;
  margin: 0 0 18px;
}
.event-memo-title { font-size: .98rem; color: #3d6396; margin-bottom: 8px; }
.event-memo-body { font-size: .93rem; line-height: 1.7; }
.event-memo-disc { font-size: .78rem; color: var(--muted); margin-top: 8px; }
.past-records {
  background: #f4faf5;
  border: 1px solid #cfe4d3;
  border-left: 5px solid #5da571;
  border-radius: 10px;
  padding: 14px 16px;
  margin: 14px 0 18px;
}
.past-records-title { font-size: .98rem; color: #35714a; margin-bottom: 10px; }
.past-record { margin-bottom: 10px; }
.pr-head { font-size: .88rem; font-weight: 600; margin-bottom: 4px; }
.pr-head a { color: #35714a; }
.pr-body { font-size: .92rem; line-height: 1.7; }


/* --- フィルタ折りたたみ + トップ地域導線 + 開催中バッジ (2026-07-19 UX) --- */
.filter-box { margin-bottom: 10px; }
.filter-summary {
  cursor: pointer; list-style: none;
  background: var(--pink-light); border: 1px solid var(--border);
  border-radius: 8px; padding: 9px 12px;
  font-weight: 600; color: var(--pink); font-size: .95rem;
}
.filter-summary::-webkit-details-marker { display: none; }
.filter-summary::before { content: "\1F50D "; }
.filter-summary::after { content: " ▾"; float: right; }
details.filter-box[open] > .filter-summary::after { content: " ▴"; }
@media (min-width: 768px) { .filter-summary { display: none; } }
.badge-open {
  background: #e8f6ec; color: #2c7a44; border: 1px solid #9fd4ae;
  border-radius: 6px; padding: 1px 6px; font-size: .78rem; font-weight: 700;
}
.portal-area { margin: 16px 0 4px; }
