/* =========================================================
   SITE 116 — レスポンシブ
   調整順: カラム減少 → 縦積み → 余白 → 写真比率 → 折畳み → 表カード化 → 見出し
   文字は縮めない（本文16px / 注記14px を全幅で維持）
   ========================================================= */

/* ---------- 1280px 未満: ヘッダーの電話ブロックを畳む ---------- */
@media (max-width: 1279px) {
  .hdr__tel { display: none; }
  .today__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .cast-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- 1080px 未満: ドロワー＋固定CTAへ切替（主要導線を欠かさない） ---------- */
@media (max-width: 1079px) {
  .hdr__nav { display: none; }
  .hdr__menu { display: inline-flex; }
  .hdr__acts { margin-left: auto; }
  body { padding-bottom: calc(56px + env(safe-area-inset-bottom)); }
  .ctabar { display: block; }
}

/* ---------- 1023px 以下 ---------- */
@media (max-width: 1023px) {
  :root { --gutter: 18px; }
  .section { padding-block: var(--sp-7); }
  .ftr { margin-top: var(--sp-8); }

  .today__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cast-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cast-grid--page { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .menu-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plan-grid, .example-grid, .role-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sched-people { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ftr__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- 900px 以下: 2カラムを1カラムへ ---------- */
@media (max-width: 900px) {
  .nexthero { padding-block: var(--sp-6) 0; }
  .nexthero__in { grid-template-columns: minmax(0, 1fr); gap: var(--sp-5); padding-bottom: var(--sp-6); }
  .nexthero__media { order: -1; }
  .nexthero__badge { left: auto; right: 8px; bottom: -12px; max-width: 92%; }
  .concept-sum,
  .access-grid,
  .person-detail,
  .event-hero { grid-template-columns: minmax(0, 1fr); }
  .endcta__in { grid-template-columns: minmax(0, 1fr); }
  .event-item { grid-template-columns: 200px minmax(0, 1fr); }
}

/* ---------- 767px 以下: 完全1カラム / 表をカード化 ---------- */
@media (max-width: 767px) {
  .section { padding-block: var(--sp-6); }
  .page-head { padding-block: var(--sp-5) var(--sp-4); }

  .today__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cast-grid, .cast-grid--page { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .menu-grid { grid-template-columns: minmax(0, 1fr); }
  .plan-grid, .example-grid, .role-grid { grid-template-columns: minmax(0, 1fr); }
  .sched-people { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .flow { grid-template-columns: minmax(0, 1fr); }
  .concept-sum__media { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* イベント一覧（モバイルはリスト化。日付・料金・予約可否を画像外に表示） */
  .event-item { grid-template-columns: minmax(0, 1fr); }
  .event-item__body { padding: 0 var(--sp-4) var(--sp-4); }
  .news-item { grid-template-columns: minmax(0, 1fr); gap: var(--sp-3); }
  .menu-item { grid-template-columns: 96px minmax(0, 1fr); }
  .menu-item__body { padding: var(--sp-3) var(--sp-3) var(--sp-3) 0; }

  /* 定義リストは縦積み */
  .deflist__row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .form__summary div, .form__confirm dl > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }

  /* 週間出勤カレンダーは縦のリストへ */
  .person-week { grid-template-columns: minmax(0, 1fr); gap: var(--sp-2); }
  .person-week__day {
    display: grid;
    grid-template-columns: 4.5rem 5rem minmax(0, 1fr);
    align-items: center;
    gap: var(--sp-3);
    text-align: left;
    padding: 10px 14px;
  }
  .person-week__time { margin-top: 0; }

  /* 表 → カード化（thead は隠し、td の data-label を見出しにする） */
  .table-wrap { overflow: visible; border: 0; background: transparent; border-radius: 0; }
  .table { min-width: 0; display: block; }
  .table thead {
    position: absolute;
    width: 1px; height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
  }
  .table tbody { display: block; }
  .table tr {
    display: block;
    background: var(--c-surface);
    border: 1px solid var(--c-line);
    border-radius: var(--r);
    margin-bottom: var(--sp-3);
    padding: 4px 0;
  }
  .table tr:last-child { margin-bottom: 0; }
  .table td {
    display: grid;
    grid-template-columns: 7.5rem minmax(0, 1fr);
    gap: var(--sp-3);
    border-bottom: 1px dashed var(--c-line);
    padding: 10px 14px;
  }
  .table tr td:last-child { border-bottom: 0; }
  .table td::before {
    content: attr(data-label);
    font-weight: 700;
    color: var(--c-blue-lt);
  }
  .table td.num { text-align: left; white-space: normal; }

  /* ステータス帯は縦積み */
  .statusbar__in { gap: var(--sp-2) var(--sp-4); }
  .statusbar__item { width: 100%; }

  .ftr { padding-block: var(--sp-6) var(--sp-4); }
  .ftr__grid { grid-template-columns: minmax(0, 1fr); gap: var(--sp-5); }
  .ftr__bottom { flex-direction: column; align-items: flex-start; }

  .countdown__cell { min-width: 60px; padding: 8px 10px; }
}

/* ---------- 479px 以下: 390px を正 ---------- */
@media (max-width: 479px) {
  :root { --gutter: 16px; }
  /* SP: ロゴ＋主要CTA1つ＋メニューボタンの3点に絞る（文字は縮めない） */
  .hdr__in { gap: var(--sp-2); padding-inline: var(--gutter); min-height: 64px; }
  .hdr__brand-name { font-size: 1.25rem; }
  .hdr__brand-sub { display: none; }
  .hdr__cta-full { display: none; }
  .hdr__cta-short { display: inline; }
  .hdr__menu-text { display: none; }
  .hdr__menu { padding: 8px; justify-content: center; }
  .hdr__acts .btn--sm { padding: 8px 14px; }

  .sched-people { grid-template-columns: minmax(0, 1fr); }
  .concept-sum__media { grid-template-columns: minmax(0, 1fr); }
  .nexthero__badge { position: static; margin-top: var(--sp-3); max-width: 100%; display: block; }
  .nexthero__media .ph { box-shadow: var(--sh-1); }

  .modal__panel { padding: var(--sp-4); }
  .lightbox__panel { width: 94vw; }
  .lightbox__btn { padding: 0 12px; }

  .example__total { font-size: var(--fs-h4); }
  .plan__price { font-size: 1.75rem; }
  .person-week__day { grid-template-columns: 4rem 4.5rem minmax(0, 1fr); padding: 10px; gap: var(--sp-2); }
  .table td { grid-template-columns: 6.5rem minmax(0, 1fr); gap: var(--sp-2); padding: 10px 12px; }

  .countdown { gap: var(--sp-2); }
  .countdown__cell { min-width: 52px; padding: 6px 8px; }
  .countdown__num { font-size: 1.375rem; }
  .share-row__url { min-width: 0; flex-basis: 100%; }
}

/* ---------- 359px 以下の保険（横スクロールを出さない） ---------- */
@media (max-width: 359px) {
  .today__grid, .cast-grid, .cast-grid--page, .gallery-grid { grid-template-columns: minmax(0, 1fr); }
  .person-week__day { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .table td { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .countdown__cell { min-width: 44px; }
}

/* ---------- 大画面 ---------- */
@media (min-width: 1440px) {
  :root { --gutter: 24px; }
}
