/* =============================================
   花火カレンダー スタイル
   hanabi-calendar.css
   ============================================= */

/* 今日の花火バー（トップ固定） */
#hanabi-today-bar {
  background: linear-gradient(90deg, #1a1a2e, #16213e);
  color: #fff;
  padding: .6rem 1rem;
  font-size: .9rem;
  display: none;
  overflow: hidden;
}
#hanabi-today-bar.active { display: block; }
.today-bar-inner {
  display: flex; align-items: center; gap: 1rem;
  max-width: 1200px; margin: 0 auto; flex-wrap: wrap;
}
.today-label {
  background: #e94560; border-radius: 4px;
  padding: .2rem .7rem; font-weight: 700; white-space: nowrap;
}
.today-event-link {
  color: #ffd700; text-decoration: none; font-weight: 600;
  padding: .2rem .5rem; border-radius: 4px;
  transition: background .2s;
}
.today-event-link:hover { background: rgba(255,255,255,.15); }

/* カレンダーウィジェット */
.hanabi-calendar-widget {
  background: #fff; border-radius: 16px;
  box-shadow: 0 4px 24px rgba(0,0,0,.1); overflow: hidden;
  font-family: 'Hiragino Kaku Gothic ProN', Meiryo, sans-serif;
  max-width: 900px; margin: 0 auto 2rem;
}
.hanabi-cal-body { padding: 0; }
.hanabi-cal-loading {
  text-align: center; padding: 3rem; color: #999; font-size: .9rem;
}

/* カレンダーヘッダー */
.hanabi-cal-header {
  display: flex; align-items: center; justify-content: space-between;
  background: linear-gradient(135deg, #1a1a2e, #2d2d6b);
  padding: 1rem 1.5rem; color: #fff;
}
.hanabi-cal-header h3 { margin: 0; font-size: 1.1rem; }
.hanabi-cal-prev,
.hanabi-cal-next {
  background: rgba(255,255,255,.2); border: none; color: #fff;
  width: 36px; height: 36px; border-radius: 50%; cursor: pointer;
  font-size: 1.2rem; display: flex; align-items: center; justify-content: center;
  transition: background .2s;
}
.hanabi-cal-prev:hover,
.hanabi-cal-next:hover { background: rgba(255,255,255,.35); }

/* カレンダーテーブル */
.hanabi-cal-table { width: 100%; border-collapse: collapse; }
.hanabi-cal-table thead th {
  background: #f5f5f5; padding: .6rem .4rem;
  font-size: .8rem; font-weight: 600; color: #555; text-align: center;
  border-bottom: 2px solid #e0e0e0;
}
.hanabi-cal-table thead th.sun { color: #e74c3c; }
.hanabi-cal-table thead th.sat { color: #2980b9; }
.hanabi-cal-table tbody td {
  vertical-align: top; padding: .4rem;
  border: 1px solid #f0f0f0;
  min-height: 70px; width: calc(100% / 7);
  min-width: 0;
}
.hanabi-cal-table tbody td.empty { background: #fafafa; }
.hanabi-cal-table tbody td.today { background: #fffde7; }
.hanabi-cal-table tbody td.today .day-num {
  background: #e94560; color: #fff;
  border-radius: 50%; width: 24px; height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
}
.hanabi-cal-table tbody td.sun .day-num { color: #e74c3c; }
.hanabi-cal-table tbody td.sat .day-num { color: #2980b9; }
.day-num { display: block; text-align: center; font-size: .85rem; font-weight: 700; margin-bottom: .2rem; }

/* カレンダー内イベント */
.cal-event {
  display: block; background: rgba(0,0,0,.04);
  border-radius: 3px; padding: .15rem .3rem;
  margin-bottom: .2rem; text-decoration: none;
  font-size: .7rem; line-height: 1.3; overflow: hidden;
  transition: background .15s;
}
.cal-event:hover { background: rgba(0,0,0,.1); }
.cal-event-name { color: #333; }
/* スマホ: 県名1文字バッジ表示（タップ領域も確保） */
@media(max-width:640px) {
  .cal-event-name { display: none; }
  .cal-event-short { display: inline-block; font-size: .65rem; font-weight: 700; color: #fff; line-height: 1; }
  .cal-event {
    width: 18px; height: 18px; border-radius: 50%; padding: 0;
    display: inline-flex; align-items: center; justify-content: center;
    margin: 1px; border-left: none !important;
  }
  .hanabi-cal-table tbody td { padding: .2rem .1rem; }
}
@media(min-width:641px) {
  .cal-event-short { display: none; }
}

/* エラー表示 */
.hanabi-cal-error {
  text-align: center; padding: 2rem; color: #c0392b;
  font-size: .9rem; background: #fff5f5; border-radius: 8px; margin: 1rem;
}

/* 凡例 */
.hanabi-cal-legend {
  display: flex; flex-wrap: wrap; gap: .6rem;
  padding: .8rem 1.2rem; border-top: 1px solid #f0f0f0;
  background: #fafafa;
}
.legend-item { display: flex; align-items: center; gap: .4rem; font-size: .8rem; color: #555; }
.legend-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }

/* 一覧カード（アーカイブページ） */
.hanabi-archive-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.5rem; max-width: 1200px; margin: 2rem auto; padding: 0 1rem;
}
.hanabi-archive-card {
  background: #fff; border-radius: 12px;
  box-shadow: 0 2px 12px rgba(0,0,0,.08); overflow: hidden;
  transition: transform .2s, box-shadow .2s; display: flex; flex-direction: column;
}
.hanabi-archive-card:hover { transform: translateY(-4px); box-shadow: 0 8px 24px rgba(0,0,0,.14); }
.hanabi-archive-card .card-thumb { height: 180px; overflow: hidden; position: relative; }
.hanabi-archive-card .card-thumb img { width: 100%; height: 100%; object-fit: cover; }
.hanabi-archive-card .card-thumb .card-pref {
  position: absolute; top: .6rem; left: .6rem;
  background: #e94560; color: #fff; border-radius: 4px;
  padding: .2rem .6rem; font-size: .75rem; font-weight: 700;
}
.hanabi-archive-card .card-body { padding: 1rem; flex: 1; display: flex; flex-direction: column; }
.hanabi-archive-card .card-title {
  font-size: 1rem; font-weight: 700; color: #1a1a2e;
  text-decoration: none; line-height: 1.4;
}
.hanabi-archive-card .card-title:hover { color: #e94560; }
.hanabi-archive-card .card-meta { font-size: .82rem; color: #888; margin-top: .4rem; }
.hanabi-archive-card .card-meta span { margin-right: .6rem; }
.hanabi-archive-card .card-footer {
  display: flex; gap: .5rem; align-items: center;
  margin-top: auto; padding-top: .8rem; border-top: 1px solid #f0f0f0;
}
.hanabi-archive-card .badge-live { background: #ff4d4d; color: #fff; border-radius: 20px; padding: .2rem .7rem; font-size: .75rem; font-weight: 700; }
.hanabi-archive-card .badge-soon { background: #ffd700; color: #333; border-radius: 20px; padding: .2rem .7rem; font-size: .75rem; font-weight: 700; }

/* フィルタータブ（県別） */
.hanabi-pref-filter {
  display: flex; flex-wrap: wrap; gap: .5rem;
  max-width: 1200px; margin: 1.5rem auto .5rem; padding: 0 1rem;
}
.hanabi-pref-filter button {
  border: 2px solid #e0e0e0; background: #fff;
  border-radius: 20px; padding: .4rem .9rem; font-size: .85rem;
  cursor: pointer; transition: all .2s; color: #555;
}
.hanabi-pref-filter button:hover,
.hanabi-pref-filter button.active {
  border-color: #e94560; background: #e94560; color: #fff;
}

/* =============================================
   7: 例年比較テーブル
   ============================================= */
.hanabi-history-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.hanabi-history-table {
  width: 100%; border-collapse: collapse; font-size: .88rem; margin: 0;
}
.hanabi-history-table thead th {
  background: #1a1a2e; color: #ffd700;
  padding: .6rem .8rem; text-align: center; white-space: nowrap;
  font-size: .8rem; font-weight: 700;
}
.hanabi-history-table tbody tr:nth-child(even) { background: #f9f9f9; }
.hanabi-history-table tbody tr:hover { background: #fff8e1; }
.hanabi-history-table td {
  padding: .55rem .8rem; border-bottom: 1px solid #eee;
  text-align: center; font-size: .85rem;
}
.hanabi-history-table td:first-child { font-weight: 700; color: #1a1a2e; }
/* 今年の行をハイライト */
.hanabi-history-table tr.this-year { background: #fffde7 !important; }
.hanabi-history-table tr.this-year td:first-child { color: #e94560; }
@media(max-width:640px) {
  .hanabi-history-table th, .hanabi-history-table td { padding: .4rem .5rem; font-size: .78rem; }
}

/* =============================================
   8: 周辺駐車場 料金比較
   ============================================= */
.hanabi-parking-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: .8rem; margin-top: .5rem;
}
.hanabi-parking-card {
  background: #f8f8f8; border: 1px solid #e8e8e8;
  border-radius: 8px; padding: .9rem 1rem;
  display: flex; flex-direction: column; gap: .3rem;
  transition: box-shadow .2s;
}
.hanabi-parking-card:hover { box-shadow: 0 2px 10px rgba(0,0,0,.1); }
.parking-name {
  font-weight: 700; font-size: .9rem; color: #1a1a2e;
  border-bottom: 1px solid #e0e0e0; padding-bottom: .3rem; margin-bottom: .2rem;
}
.parking-fee { font-size: .95rem; color: #e94560; font-weight: 700; }
.parking-cap { font-size: .82rem; color: #555; }
.parking-note { font-size: .8rem; color: #777; }
.parking-map-link {
  display: inline-block; margin-top: .4rem;
  font-size: .8rem; color: #2980b9; text-decoration: none;
}
.parking-map-link:hover { text-decoration: underline; }

/* =============================================
   9: 周辺観光スポット
   ============================================= */
.hanabi-spots-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1rem; margin-bottom: 1rem;
}
.hanabi-spot-card {
  background: #fff; border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0,0,0,.08); overflow: hidden;
  transition: transform .2s, box-shadow .2s;
}
.hanabi-spot-card:hover { transform: translateY(-3px); box-shadow: 0 6px 18px rgba(0,0,0,.13); }
.hanabi-spot-card img {
  width: 100%; height: 130px; object-fit: cover; display: block;
}
.spot-body { padding: .8rem; }
.spot-name { font-weight: 700; font-size: .9rem; }
.spot-name a { color: #1a1a2e; text-decoration: none; }
.spot-name a:hover { color: #e94560; }
.spot-dist { font-size: .78rem; color: #888; margin-top: .25rem; }
.spot-desc { font-size: .82rem; color: #555; margin-top: .3rem; line-height: 1.5; }

/* =============================================
   3: インタラクティブマップ
   ============================================= */
.hanabi-map-widget-outer { max-width: 900px; margin: 2rem auto; }
.hanabi-map-wrap-interactive {
  background: #fff; border-radius: 16px;
  box-shadow: 0 4px 24px rgba(0,0,0,.1); overflow: hidden;
}
.hanabi-map-header {
  background: linear-gradient(135deg, #1a1a2e, #2d2d6b);
  padding: 1rem 1.5rem; color: #fff;
}
.hanabi-map-header h3 { margin: 0; font-size: 1.1rem; }
.hanabi-map-sub { margin: .3rem 0 0; font-size: .82rem; opacity: .8; }

/* SVGは全幅表示 */
.hanabi-map-body { display: block; }
.hanabi-svg-map {
  width: 100%; max-width: 460px; height: auto;
  display: block; margin: 0 auto; padding: 1rem;
}
.hanabi-map-pref.active { filter: brightness(1.2); stroke-width: 3px !important; }

/* ③ 県ボタン：横3列グリッド */
.hanabi-map-legend {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: .7rem;
  padding: 1.2rem 1.4rem 1.4rem;
  background: #f8f8fc;
  border-top: 1px solid #eee;
}
.map-legend-btn {
  display: flex; align-items: center; gap: .55rem;
  background: #fff;
  border: 2px solid #e8e8e8;
  border-radius: 14px;
  padding: .7rem .9rem;
  font-size: .88rem; font-weight: 600;
  cursor: pointer; transition: all .2s ease;
  box-shadow: 0 2px 6px rgba(0,0,0,.05);
}
.map-legend-btn:not(.disabled):hover {
  border-color: var(--pref-color);
  background: var(--pref-color-soft, #fff5f5);
  transform: translateY(-2px);
  box-shadow: 0 5px 14px rgba(0,0,0,.12);
}
.map-legend-btn.active {
  border-color: var(--pref-color);
  background: var(--pref-color-soft, #fff5f5);
  box-shadow: 0 4px 14px color-mix(in srgb, var(--pref-color) 25%, transparent);
}
.map-legend-btn.disabled { opacity: .35; cursor: default; }
.map-legend-dot {
  width: 11px; height: 11px; border-radius: 50%;
  flex-shrink: 0; box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.map-legend-name { flex: 1; color: #1a1a2e; }
.map-legend-count {
  color: #fff; font-size: .7rem; font-weight: 700;
  padding: .15rem .5rem; border-radius: 20px;
  min-width: 22px; text-align: center;
}

/* 読み込み中 */
.hanabi-map-loading { text-align: center; padding: 3rem; color: #999; }

/* 一覧エリア */
.hanabi-map-list { border-top: 1px solid #eee; background: #fafafa; min-height: 60px; }
.hanabi-map-list-inner { padding: 1.2rem 1.4rem; }
.hanabi-map-hint {
  color: #aaa; text-align: center; font-size: .88rem; padding: 1rem 0;
}
.map-list-header {
  display: flex; align-items: center; gap: .6rem;
  padding-left: .8rem; margin-bottom: 1.2rem;
}
.map-list-count {
  color: #fff; font-size: .75rem; font-weight: 700;
  padding: .2rem .7rem; border-radius: 20px;
}

/* ④ 花火大会カード */
.hanabi-map-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}
.map-festival-card {
  background: #fff; border-radius: 14px;
  box-shadow: 0 2px 10px rgba(0,0,0,.07);
  overflow: hidden;
  border-top: 4px solid var(--card-color, #e94560);
  transition: transform .2s, box-shadow .2s;
}
.map-festival-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0,0,0,.13);
}
.map-card-thumb {
  height: 120px; overflow: hidden; background: #f0f0f0;
}
.map-card-thumb img { width: 100%; height: 100%; object-fit: cover; }
.map-card-thumb-empty {
  height: 100%; display: flex; align-items: center;
  justify-content: center; font-size: 2.5rem;
}
.map-card-body { padding: .9rem 1rem 1rem; }
.map-card-top { margin-bottom: .4rem; }
.map-card-badge {
  display: inline-block; font-size: .7rem; font-weight: 700;
  padding: .15rem .55rem; border-radius: 20px;
}
.map-card-badge.live   { background: #ff4d4d; color: #fff; }
.map-card-badge.future { background: #ffd700; color: #333; }
.map-card-badge.past   { background: #bbb; color: #fff; }

/* タイトルをリンクで大きく */
.map-card-title {
  font-size: .97rem; font-weight: 700;
  margin: 0 0 .5rem; line-height: 1.45;
}
.map-card-title a {
  color: #1a1a2e; text-decoration: none;
}
.map-card-title a:hover { color: var(--card-color, #e94560); }
.map-card-meta {
  font-size: .78rem; color: #777;
  display: flex; flex-direction: column; gap: .2rem; margin-bottom: .7rem;
}
.map-card-link {
  display: inline-block;
  font-size: .8rem; font-weight: 700;
  color: var(--card-color, #e94560);
  text-decoration: none;
  border: 1.5px solid var(--card-color, #e94560);
  border-radius: 6px; padding: .3rem .8rem;
  transition: all .15s;
}
.map-card-link:hover {
  background: var(--card-color, #e94560); color: #fff;
}

@media(max-width: 640px) {
  .hanabi-map-legend { grid-template-columns: repeat(2, 1fr); gap: .5rem; padding: .9rem; }
  .map-legend-btn { padding: .55rem .7rem; font-size: .82rem; }
  .hanabi-map-cards { grid-template-columns: 1fr; }
}
.hanabi-map-legend {
  display: flex; flex-direction: column; gap: .4rem;
  padding: 1rem; flex: 1; min-width: 160px;
  justify-content: center;
}
.hanabi-map-legend {
  display: flex; flex-direction: column; gap: .45rem;
  padding: 1.2rem 1rem; flex: 1; min-width: 170px;
  justify-content: center; align-items: stretch;
}
/* ボタン形式の県リスト */
.map-legend-btn {
  display: flex; align-items: center; gap: .65rem;
  background: #fff; border: 1.5px solid #eee;
  border-radius: 12px; padding: .6rem 1rem;
  font-size: .88rem; cursor: pointer;
  transition: all .18s ease; text-align: left; width: 100%;
  box-shadow: 0 1px 4px rgba(0,0,0,.05);
}
.map-legend-btn:not(.disabled):hover {
  border-color: var(--pref-color);
  background: color-mix(in srgb, var(--pref-color) 6%, #fff);
  transform: translateX(4px);
  box-shadow: 0 3px 12px rgba(0,0,0,.1);
}
.map-legend-btn.active {
  border-color: var(--pref-color);
  background: color-mix(in srgb, var(--pref-color) 10%, #fff);
  box-shadow: 2px 3px 12px color-mix(in srgb, var(--pref-color) 30%, transparent);
}
.map-legend-btn.disabled { cursor: default; opacity: .4; }
.map-legend-dot {
  width: 12px; height: 12px; border-radius: 50%;
  display: inline-block; flex-shrink: 0;
  box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.map-legend-name {
  flex: 1; color: #1a1a2e; font-weight: 600; font-size: .85rem;
}
.map-legend-count {
  color: #fff; font-size: .72rem; font-weight: 700;
  padding: .18rem .6rem; border-radius: 20px; flex-shrink: 0;
  box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.hanabi-map-loading { text-align: center; padding: 3rem; color: #999; }
.hanabi-map-list {
  border-top: 1px solid #f0f0f0; background: #fafafa; min-height: 60px;
}
.hanabi-map-list-inner { padding: 1rem 1.5rem; }
.hanabi-map-hint { color: #aaa; text-align: center; font-size: .88rem; padding: 1rem 0; }

/* =============================================
   基盤コンテンツ：年間カレンダー・アクセス・駐車場
   ============================================= */

/* 共通: ローディング */
.hanabi-annual-loading { text-align:center;padding:2rem;color:#999;font-size:.9rem; }

/* 県フィルターボタン */
.hanabi-annual-pref-filter {
  display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;
}
.h-pref-btn {
  border:2px solid #e0e0e0;background:#fff;border-radius:20px;
  padding:.35rem .9rem;font-size:.83rem;font-weight:600;cursor:pointer;
  transition:all .18s;color:#555;
}
.h-pref-btn:hover,.h-pref-btn.active {
  border-color:var(--pc,#e94560);background:var(--pc,#e94560);color:#fff;
}

/* 月別アコーディオン */
.hanabi-annual-month { margin-bottom:.8rem;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.06); }
.h-month-toggle {
  width:100%;display:flex;align-items:center;gap:.7rem;
  padding:.85rem 1.2rem;background:#1a1a2e;color:#fff;
  border:none;cursor:pointer;font-size:.95rem;font-weight:700;
  transition:background .15s;
}
.h-month-toggle:hover { background:#2d2d6b; }
.h-month-label { font-size:1.05rem; }
.h-month-count {
  background:rgba(255,255,255,.2);border-radius:20px;
  padding:.1rem .6rem;font-size:.78rem;
}
.h-month-arrow { margin-left:auto;font-size:.75rem;opacity:.8; }
.h-month-body { display:none;overflow-x:auto; }
.h-month-body.open { display:block; }

/* 年間カレンダーテーブル */
.h-annual-table { width:100%;border-collapse:collapse;font-size:.88rem; }
.h-annual-table thead th {
  background:#f5f5f5;padding:.6rem .8rem;font-size:.78rem;
  color:#666;font-weight:700;white-space:nowrap;border-bottom:2px solid #e8e8e8;
}
.h-annual-table tbody td {
  padding:.65rem .8rem;border-bottom:1px solid #f0f0f0;vertical-align:top;
}
.h-annual-table tbody tr:hover td { background:#fffde7; }
.h-annual-link { color:#1a1a2e;font-weight:600;text-decoration:none; }
.h-annual-link:hover { color:#e94560; }
.h-badge-live {
  display:inline-block;background:#ff4d4d;color:#fff;
  border-radius:4px;padding:.1rem .45rem;font-size:.7rem;font-weight:700;margin-left:.4rem;
}
.h-pref-dot {
  display:inline-block;border-radius:4px;padding:.15rem .55rem;
  font-size:.75rem;font-weight:700;color:#fff;
}
.h-hotel-btn {
  display:inline-block;background:#BF0000;color:#fff;border-radius:5px;
  padding:.25rem .7rem;font-size:.75rem;font-weight:700;text-decoration:none;
  transition:opacity .15s;
}
.h-hotel-btn:hover { opacity:.85; }

/* アクセスカード */
.hanabi-access-section { margin-bottom:2.5rem; }
.hanabi-access-pref-title {
  font-size:1.1rem;font-weight:700;padding-left:.8rem;
  margin:0 0 1rem;display:flex;align-items:center;gap:.5rem;
}
.hanabi-access-grid {
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;
}
.hanabi-access-card {
  background:#fff;border-radius:12px;padding:1.1rem 1.2rem;
  box-shadow:0 2px 10px rgba(0,0,0,.07);
  border-top:4px solid var(--ac,#e94560);
}
.access-card-head { display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.5rem; }
.access-card-title {
  font-weight:700;color:#1a1a2e;text-decoration:none;flex:1;
  font-size:.95rem;line-height:1.4;
}
.access-card-title:hover { color:#e94560; }
.access-card-date { font-size:.78rem;color:#888;white-space:nowrap;padding-top:.1rem; }
.access-card-station { font-size:.85rem;color:#444;margin:.3rem 0;font-weight:600; }
.access-card-detail { font-size:.82rem;color:#555;margin:.4rem 0; }
.access-card-detail summary { cursor:pointer;color:#3498db;font-weight:600; }
.access-card-detail p { margin:.5rem 0 0;line-height:1.7; }
.access-card-map {
  display:inline-block;font-size:.8rem;color:#3498db;
  text-decoration:none;margin-top:.4rem;
}
.access-card-map:hover { text-decoration:underline; }

/* 駐車場テーブル */
.h-parking-table { width:100%;border-collapse:collapse;font-size:.85rem; }
.h-parking-table thead th {
  background:#1a1a2e;color:#fff;padding:.65rem .8rem;
  font-size:.78rem;font-weight:700;white-space:nowrap;
}
.h-parking-table tbody td {
  padding:.65rem .8rem;border-bottom:1px solid #f0f0f0;vertical-align:top;
}
.h-parking-table tbody tr:hover td { background:#f8f8f8; }
.parking-info-cell { font-size:.8rem;color:#555;max-width:240px; }
.h-diff-badge {
  display:inline-block;border-radius:6px;padding:.2rem .6rem;
  font-size:.78rem;font-weight:700;white-space:nowrap;
}
.h-diff-badge.easy  { background:#e8f8f0;color:#085041; }
.h-diff-badge.mid   { background:#fff8e0;color:#633806; }
.h-diff-badge.hard  { background:#fff0f0;color:#791f1f; }
.h-akippa-btn {
  display:inline-block;background:#ff7700;color:#fff;border-radius:5px;
  padding:.25rem .7rem;font-size:.75rem;font-weight:700;text-decoration:none;
}
.h-akippa-btn:hover { opacity:.85; }

@media(max-width:640px) {
  .h-annual-table { font-size:.78rem; }
  .h-annual-table thead th:nth-child(4),
  .h-annual-table tbody td:nth-child(4) { display:none; }
  .h-parking-table thead th:nth-child(4),
  .h-parking-table tbody td:nth-child(4) { display:none; }
  .hanabi-access-grid { grid-template-columns:1fr; }
}

/* =============================================
   ⑲ 印刷スタイル（@media print）
   花火大会情報を印刷して持参するユーザー向け
   ============================================= */
@media print {
  /* ヒーロー・カウントダウン・アフィリエイト・SNSは非表示 */
  .hanabi-hero,
  .hanabi-countdown,
  .hanabi-hotel-card,
  .hanabi-shop-grid,
  #hanabi-today-bar,
  .hanabi-tweets,
  .hanabi-related-grid,
  .hanabi-author-box,
  .hanabi-pref-filter,
  .hanabi-map-widget-outer {
    display: none !important;
  }

  /* 白背景・黒文字でインクを節約 */
  body { background: #fff !important; color: #000 !important; font-size: 11pt; }
  .hanabi-card {
    box-shadow: none !important;
    border: 1px solid #ccc;
    margin-bottom: 1rem;
    padding: .8rem;
    break-inside: avoid;
  }
  .hanabi-card-title { color: #000 !important; }

  /* リンクにURLを印刷 */
  a[href]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #555; }
  a.hanabi-hotel-banner-rich::after,
  a.shop-card-btn::after { content: none; } /* アフィリエイトURLは不要 */

  /* 地図iframeは印刷不可なので代替テキスト */
  .hanabi-map-wrap::after {
    content: "※ 地図は印刷できません。Google マップで会場名を検索してください。";
    display: block; font-size: 9pt; color: #555; padding: .5rem;
    border: 1px dashed #ccc;
  }
  .hanabi-map-wrap iframe { display: none; }

  /* チェックリストを印刷しやすく */
  .hanabi-checklist { grid-template-columns: repeat(2, 1fr); }
  .hanabi-checklist li { background: none; border-bottom: 1px solid #eee; }
}
