/* ==========================================================================
   SITE 125 / BAR RESERVATION & PRIVATE — レスポンシブ
   1440+ : 最大幅1160px
   1199- : グローバルナビ→ドロワー
   1023- : モバイル固定CTA表示・1〜2カラム・予約クイックフォームをボトムシート化
   767-  : 完全1カラム・表はカード化
   479-  : 390px を正（横スクロール禁止・本文16px維持）
   文字縮小での解決は行わない（カラム減 → 縦積み → 余白 → 比率 → 折畳み の順）
   ========================================================================== */

/* ---------- 〜1279px ---------- */
@media (max-width: 1279px) {
  :root { --sp-9: 72px; --gutter: 20px; }
  .gnav__link { padding: 0 9px; }
}

/* ---------- 〜1199px : ドロワーへ切替 ---------- */
@media (max-width: 1199px) {
  .gnav { display: none; }
  .drawer-toggle { display: inline-flex; }
  .header-actions { margin-left: auto; }
  .hero__box { grid-template-columns: minmax(0, 1fr); gap: var(--sp-5); }
  .hero__panel { margin-top: -84px; }
  .detail { grid-template-columns: minmax(0, 340px) minmax(0, 1fr); gap: var(--sp-6); }
  .access-grid, .reserve-grid { gap: var(--sp-6); }
  .gallery-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- 〜1023px : モバイル固定CTA・予約クイックフォームをボトムシート化 ---------- */
@media (max-width: 1023px) {
  :root { --sp-9: 64px; --sp-8: 56px; }
  .cta-bar { display: block; }
  body { padding-bottom: calc(var(--cta-h) + env(safe-area-inset-bottom)); }
  .site-footer { padding-bottom: var(--sp-7); }
  .grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .featured { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .featured > :last-child { grid-column: span 2; }
  .featured > :last-child .figure { aspect-ratio: 16 / 9; }
  .site-footer__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .site-footer__grid > :first-child { grid-column: span 2; }
  .split, .access-grid, .reserve-grid, .concept-point { grid-template-columns: minmax(0, 1fr); }
  .concept-point:nth-child(even) .concept-point__media { order: 0; }
  .reserve-side { position: static; }
  .event-card { grid-template-columns: minmax(0, 240px) minmax(0, 1fr); }
  .seat-filter { flex-direction: column; align-items: stretch; }

  /* 予約クイックフォームは画面下部固定のボトムシート的な扱いに変える。
     常設ではなく、ヒーロー内カードとして目立たせつつ2列を維持する。 */
  .reserve-quick__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- 〜899px : 週間カレンダーを縦リストへ ---------- */
@media (max-width: 899px) {
  .week { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .week__day {
    grid-template-columns: 4.5em 1fr; grid-auto-flow: column;
    align-items: center; gap: 4px var(--sp-4); padding: 12px 14px; min-height: 60px;
  }
  .week__date { grid-row: 1; grid-column: 1; }
  .week__wd { grid-row: 2; grid-column: 1; }
  .week__tag, .week__hours, .week__closed, .week__event { grid-column: 2; }
  .week__event { border-top: 0; padding-top: 0; }
}

/* ---------- 〜767px : 完全1カラム ---------- */
@media (max-width: 767px) {
  :root { --sp-9: 56px; --sp-8: 48px; --sp-7: 40px; --header-h: 64px; }
  .brand__name { font-size: 1.0625rem; }
  .header-tel { display: none; }
  .header-actions .btn { min-height: 44px; padding: 8px 14px; font-size: var(--fz-note); }
  .drawer-toggle { padding: 0; width: 44px; }
  .drawer-toggle__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }

  .hero__media { aspect-ratio: 3 / 2; max-height: 380px; }
  .hero__panel { margin-top: -56px; }
  .hero__box { padding: var(--sp-5) var(--sp-4); }
  .hero__facts { grid-template-columns: 5.5em 1fr; gap: 8px var(--sp-3); }
  .reserve-quick__grid { grid-template-columns: minmax(0, 1fr); }

  .grid--3, .grid--4, .featured { grid-template-columns: minmax(0, 1fr); }
  .featured > :last-child { grid-column: auto; }
  .featured > :last-child .figure { aspect-ratio: 4 / 5; }
  .gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-3); }
  .detail { grid-template-columns: minmax(0, 1fr); gap: var(--sp-5); }
  .event-card { grid-template-columns: minmax(0, 1fr); gap: var(--sp-3); }
  .news-item__body { grid-template-columns: minmax(0, 1fr); gap: var(--sp-3); }
  .site-footer__grid { grid-template-columns: minmax(0, 1fr); gap: var(--sp-5); }
  .site-footer__grid > :first-child { grid-column: auto; }

  /* 表はカード化 */
  .table-wrap--cards { border: 0; overflow: visible; }
  .table-wrap--cards .data-table,
  .table-wrap--cards .data-table tbody,
  .table-wrap--cards .data-table tr,
  .table-wrap--cards .data-table th,
  .table-wrap--cards .data-table td { display: block; width: auto; }
  .table-wrap--cards .data-table thead { display: none; }
  .table-wrap--cards .data-table tr {
    border: 1px solid var(--c-line-soft); border-radius: var(--radius);
    background: var(--c-bg-raise); padding: var(--sp-3) var(--sp-4); margin-bottom: 10px;
  }
  .table-wrap--cards .data-table th,
  .table-wrap--cards .data-table td { border-bottom: 0; padding: 4px 0; white-space: normal; }
  .table-wrap--cards .data-table tbody th { color: var(--c-bronze-lt); font-weight: 700; font-size: var(--fz-note); letter-spacing: .04em; }
  .table-wrap--cards .data-table td[data-label]::before {
    content: attr(data-label) " "; color: var(--c-text-3); font-size: var(--fz-note); display: block;
  }

  /* メニュー行: 価格を名前の下へ */
  .menu-item { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .menu-item__price { grid-row: auto; text-align: left; }

  /* お知らせ見出し行 */
  .news-item > summary { grid-template-columns: 1fr auto; grid-template-areas: "date icon" "cat icon" "title title"; gap: 6px var(--sp-3); padding: 14px 4px; }
  .news-item__date { grid-area: date; }
  .news-item__cat { grid-area: cat; justify-self: start; }
  .news-item__title { grid-area: title; }
  .news-item > summary::after { grid-area: icon; align-self: center; }

  .form-confirm dl { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .form-confirm dt { margin-top: 8px; }
  .step { grid-template-columns: 40px 1fr; gap: var(--sp-3); }
  .step__no { width: 40px; height: 40px; }
  .modal__panel { padding: var(--sp-6) var(--sp-4) var(--sp-4); }
  .lightbox__close { top: -46px; }
  .plan-card__reco-tag { position: static; display: inline-flex; transform: none; margin-bottom: var(--sp-2); }
}

/* ---------- 〜479px : 390px を正 ---------- */
@media (max-width: 479px) {
  :root { --gutter: 16px; --sp-9: 48px; }
  .brand__sub { display: none; }
  .brand__mark { width: 30px; height: 30px; }
  .brand__name { font-size: 1rem; }
  .brand { gap: 8px; }
  .hero__media { aspect-ratio: 4 / 3; }
  .hero__title { font-size: 1.5rem; }
  .hero__facts { grid-template-columns: minmax(0, 1fr); gap: 2px; margin-bottom: var(--sp-4); }
  .hero__facts dt { margin-top: 10px; }
  .gallery-grid { grid-template-columns: minmax(0, 1fr); }
  .cta-bar__item { padding: 6px 0; }        /* 文字は14pxを維持し、余白のみ詰める */
  .cta-bar__item svg { width: 18px; height: 18px; }
  .footer-dl { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .footer-dl dt { margin-top: 10px; }
  .side-panel__dl, .room-card__dl, .role-card__dl, .event-card__dl { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .side-panel__dl dt, .room-card__dl dt, .role-card__dl dt, .event-card__dl dt { margin-top: 8px; }
  .form-actions .btn { width: 100%; }
  .lightbox__nav { gap: var(--sp-2); }
  .lightbox__btn { padding: 0 12px; }
  .filter-bar { flex-direction: column; align-items: stretch; }
  .filter-field select { min-width: 0; width: 100%; }
}

/* ---------- 1440px以上 ---------- */
@media (min-width: 1440px) {
  :root { --gutter: 24px; }
}
