/*
 * yao_lp.css
 * 旅っくす（タビックス）ブランドサイト
 * 大相撲八尾場所 チケット＋交通ツアープラン 予告LP
 * ※高齢のお客様が多いため、文字サイズは標準より大きめに設定
 */

/* ============================================================
   カラー変数（グローバル定義）
   ============================================================ */
:root {
  --tbx-primary:    #0066CC;
  --tbx-accent:     #FF6600;
  --tbx-text:       #333333;
  --tbx-text-sub:   #666666;
  --tbx-bg:         #FFFFFF;
  --tbx-bg-sub:     #F5F7FA;
  --tbx-border:     #DDDDDD;
  --tbx-radius:     6px;
  --tbx-shadow:     0 2px 8px rgba(0, 0, 0, 0.10);
  --tbx-max-width:  1200px;

  /* 大相撲テーマカラー */
  --sumo-navy:      #1A2A4A;
  --sumo-gold:      #C8A24A;
  --sumo-red:       #B7282E;
}

/* ============================================================
   共通レイアウト（スコープ内）
   ・高齢者向けに基準フォントサイズを拡大
   ・注意: rem はブラウザの<html>基準サイズ（既定16px）で計算されるため、
     このブロックの font-size 指定は rem を使う子要素には継承されない。
     そのため本文・見出し・注釈まで、各要素の rem 値そのものを
     直接大きめに指定して読みやすさを確保している。
   ============================================================ */
#tbx-yao-lp {
  color: var(--tbx-text);
  font-family: 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', 'Meiryo', sans-serif;
  font-size: 19px;
  line-height: 1.9;
}

#tbx-yao-lp *,
#tbx-yao-lp *::before,
#tbx-yao-lp *::after {
  box-sizing: border-box;
}

#tbx-yao-lp img {
  max-width: 100%;
  height: auto;
  display: block;
}

#tbx-yao-lp a {
  color: var(--tbx-primary);
  text-decoration: none;
}

#tbx-yao-lp a:hover {
  text-decoration: underline;
  opacity: 0.85;
}

/* ============================================================
   ヒーローセクション（ファーストビュー）
   ============================================================ */
#tbx-yao-lp .hero {
  position: relative;
  width: 100%;
  overflow: hidden;
  background: var(--sumo-navy);
}

#tbx-yao-lp .hero__inner {
  position: relative;
}

#tbx-yao-lp .hero__copy {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  color: #fff;
  width: 92%;
  max-width: 820px;
}

#tbx-yao-lp .hero__event-name {
  font-size: clamp(4.8rem, 11.2vw, 7.2rem);
  font-weight: 700;
  line-height: 1.5;
  margin: 0 0 0.7em;
  text-shadow: 0 1px 6px rgba(0,0,0,0.6);
}

#tbx-yao-lp .hero__info {
  margin: 0 0 1em;
  display: flex;
  flex-direction: column;
  gap: 0.4em;
}

#tbx-yao-lp .hero__info-row {
  display: flex;
  justify-content: center;
  align-items: baseline;
  gap: 0.6em;
  flex-wrap: wrap;
  font-size: clamp(1.45rem, 3vw, 1.85rem);
}

#tbx-yao-lp .hero__info-row dt {
  font-weight: 700;
  background: var(--sumo-gold);
  color: #1A2A4A;
  padding: 0.15em 0.6em;
  border-radius: 4px;
}

#tbx-yao-lp .hero__info-row dd {
  margin: 0;
  font-weight: 700;
}

/* ============================================================
   PC表示専用の調整（ヒーロー画像の高さを縮小＋見出し／開催情報の分離配置）
   ・発売開始告知の削除に伴い生じた画像上下の余白を解消するため、
     PC（768px以上）のみ画像を object-fit: cover でトリミング表示
     （画像自体の高さ比率を約46.9% → 約35.2%に縮小）
   ・見出し（hero__event-name）と開催情報（hero__info）を
     hero__copy-top／hero__copy-bottom の2つのブロックに分離。
     見出しは画像の中央に、開催情報は画像下の紺色部分の中央に
     それぞれ独立して配置されるため、開催情報が画像に重なったり
     見切れたりしない。
   ・.hero__inner の min-height は「見出しの必要高さ」＋「開催情報の
     必要高さ」を確保できるよう余裕を持たせて設定。
   ・スマホ表示（767px以下）は元の比率・レイアウトのまま変更しない
   ============================================================ */
@media (min-width: 768px) {
  #tbx-yao-lp .hero__inner {
    min-height: clamp(650px, 71vw + 90px, 860px);
    overflow: visible;
  }

  #tbx-yao-lp .hero__inner img {
    width: 100%;
    aspect-ratio: 1920 / 675;
    object-fit: cover;
    object-position: center;
  }

  #tbx-yao-lp .hero__copy {
    position: absolute;
    inset: 0;
    top: 0;
    left: 0;
    transform: none;
    width: 100%;
    max-width: none;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  #tbx-yao-lp .hero__copy-top {
    width: 92%;
    max-width: 820px;
    min-height: 35.16vw;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  #tbx-yao-lp .hero__copy-bottom {
    width: 92%;
    max-width: 820px;
    flex: 1 1 auto;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  #tbx-yao-lp .hero__event-name {
    margin: 0;
  }

  #tbx-yao-lp .hero__info {
    margin: 0;
  }
}

/* ============================================================
   パンくずリスト
   ============================================================ */
#tbx-yao-lp .breadcrumb {
  padding: 14px 20px;
  background: var(--tbx-bg-sub);
  border-bottom: 1px solid var(--tbx-border);
  font-size: 1.39rem;
}

#tbx-yao-lp .breadcrumb__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  max-width: var(--tbx-max-width);
  margin-inline: auto;
}

#tbx-yao-lp .breadcrumb__item + .breadcrumb__item::before {
  content: '›';
  margin: 0 8px;
  color: var(--tbx-text-sub);
}

/* ============================================================
   汎用セクション
   ============================================================ */
#tbx-yao-lp .section {
  padding: 56px 20px;
}

#tbx-yao-lp .section--bg {
  background: var(--tbx-bg-sub);
}

#tbx-yao-lp .section__inner {
  max-width: var(--tbx-max-width);
  margin-inline: auto;
}

#tbx-yao-lp .section__title {
  font-size: clamp(1.99rem, 3.6vw, 2.78rem);
  font-weight: 700;
  text-align: center;
  margin-bottom: 1.3em;
  padding-bottom: 0.7em;
  border-bottom: 4px solid var(--sumo-red);
}

#tbx-yao-lp .section__text {
  font-size: 1.6rem;
}

/* ============================================================
   ②ツアープラン詳細
   ============================================================ */
#tbx-yao-lp .merit-box,
#tbx-yao-lp .include-box,
#tbx-yao-lp .seat-box {
  background: #fff;
  border: 1px solid var(--tbx-border);
  border-radius: var(--tbx-radius);
  padding: 24px;
  margin-bottom: 24px;
  box-shadow: var(--tbx-shadow);
}

#tbx-yao-lp .merit-box__title,
#tbx-yao-lp .include-box__title,
#tbx-yao-lp .seat-box__title {
  font-size: 1.9rem;
  font-weight: 700;
  color: var(--sumo-red);
  margin: 0 0 0.6em;
}

#tbx-yao-lp .merit-box__text {
  font-size: 1.6rem;
  margin: 0;
}

#tbx-yao-lp .include-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}

@media (min-width: 768px) {
  #tbx-yao-lp .include-list--col3 {
    grid-template-columns: repeat(3, 1fr);
  }
}

#tbx-yao-lp .include-list__item {
  font-size: 1.6rem;
  font-weight: 700;
  padding: 12px 16px;
  background: var(--tbx-bg-sub);
  border-radius: var(--tbx-radius);
  position: relative;
  padding-left: 2.4em;
  display: flex;
  align-items: center;
}

#tbx-yao-lp .include-list__item::before {
  content: '✓';
  position: absolute;
  left: 0.8em;
  color: #fff;
  background: var(--sumo-red);
  width: 1.3em;
  height: 1.3em;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.13rem;
  top: 50%;
  transform: translateY(-50%);
}

#tbx-yao-lp .seat-list {
  list-style: none;
  margin: 0 0 0.6em;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}

@media (min-width: 768px) {
  #tbx-yao-lp .seat-list--col3 {
    grid-template-columns: repeat(3, 1fr);
  }
}

#tbx-yao-lp .seat-list__item {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 0 0 16px;
  border: 1px solid var(--tbx-border);
  border-radius: var(--tbx-radius);
  overflow: hidden;
  background: #fff;
  box-shadow: var(--tbx-shadow);
}

#tbx-yao-lp .seat-list__photo {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  margin: 0 0 10px;
  border-radius: 0;
}

#tbx-yao-lp .seat-list__name {
  font-size: 1.7rem;
  font-weight: 700;
  color: var(--sumo-navy);
  padding: 0 16px;
}

#tbx-yao-lp .seat-list__desc {
  font-size: 1.45rem;
  color: var(--tbx-text-sub);
  padding: 0 16px;
}

#tbx-yao-lp .seat-box__note {
  font-size: 1.39rem;
  color: var(--tbx-text-sub);
  margin: 0;
}

/* ============================================================
   出発地フィルター（ツアープラン一覧）
   ・PC（768px以上）はボタン形式
   ・スマホ（767px以下）はプルダウン形式
   ============================================================ */
#tbx-yao-lp .tour-filter {
  margin-bottom: 28px;
}

#tbx-yao-lp .tour-filter__buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
}

#tbx-yao-lp .tour-filter__btn {
  font-family: inherit;
  font-size: 1.45rem;
  font-weight: 700;
  color: var(--sumo-navy);
  background: #fff;
  border: 2px solid var(--sumo-navy);
  border-radius: 999px;
  padding: 8px 22px;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, opacity 0.2s ease;
}

#tbx-yao-lp .tour-filter__btn:hover {
  opacity: 0.8;
}

#tbx-yao-lp .tour-filter__btn.is-active {
  background: var(--sumo-red);
  border-color: var(--sumo-red);
  color: #fff;
}

#tbx-yao-lp .tour-filter__select-wrap {
  display: none;
}

#tbx-yao-lp .tour-filter__select-label {
  display: block;
  font-size: 1.45rem;
  font-weight: 700;
  text-align: center;
  margin-bottom: 10px;
}

#tbx-yao-lp .tour-filter__select {
  display: block;
  width: 100%;
  max-width: 420px;
  margin: 0 auto;
  font-family: inherit;
  font-size: 1.6rem;
  color: var(--tbx-text);
  background: #fff;
  border: 2px solid var(--tbx-border);
  border-radius: var(--tbx-radius);
  padding: 12px 16px;
}

@media (max-width: 767px) {
  #tbx-yao-lp .tour-filter__buttons {
    display: none;
  }

  #tbx-yao-lp .tour-filter__select-wrap {
    display: block;
  }
}

/* ============================================================
   ツアーカードセット
   ============================================================ */
#tbx-yao-lp .tour-card-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}

@media (min-width: 768px) {
  #tbx-yao-lp .tour-card-list {
    grid-template-columns: repeat(3, 1fr);
  }
}

#tbx-yao-lp .tour-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--tbx-border);
  border-radius: var(--tbx-radius);
  box-shadow: var(--tbx-shadow);
  overflow: hidden;
}

#tbx-yao-lp .tour-card.is-hidden {
  display: none;
}

#tbx-yao-lp .tour-card__photo-wrap {
  position: relative;
}

#tbx-yao-lp .tour-card__photo {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  margin: 0;
}

#tbx-yao-lp .tour-card__caption {
  margin: 0;
  padding: 6px 12px;
  font-size: 1.25rem;
  color: #fff;
  background: rgba(26, 42, 74, 0.75);
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
}

#tbx-yao-lp .tour-card__body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 18px 16px 20px;
  flex: 1 1 auto;
}

#tbx-yao-lp .tour-card__title {
  font-size: 1.66rem;
  font-weight: 700;
  line-height: 1.5;
  margin: 0;
  color: var(--sumo-navy);
}

/* 出発地表示（同一コースで出発地違いのツアーを区別しやすくする） */
#tbx-yao-lp .tour-card__title-departure {
  display: block;
  font-size: 1.39rem;
  font-weight: 700;
  color: #fff;
  background: var(--sumo-red);
  border-radius: 4px;
  padding: 0.15em 0.7em;
  margin-bottom: 0.5em;
}

#tbx-yao-lp .tour-card__tags {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

#tbx-yao-lp .tour-card__tag {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--sumo-red);
  background: #fdeceb;
  border: 1px solid var(--sumo-red);
  border-radius: 999px;
  padding: 4px 12px;
}

#tbx-yao-lp .tour-card__price {
  margin: 0;
  font-size: 1.39rem;
  color: var(--tbx-text-sub);
}

#tbx-yao-lp .tour-card__price-num {
  font-size: 1.72rem;
  font-weight: 700;
  color: var(--sumo-red);
}

#tbx-yao-lp .tour-card__btn {
  margin-top: auto;
  width: 100%;
}

/* ============================================================
   ④販売スケジュール・申込方法
   ============================================================ */
#tbx-yao-lp .step-list {
  list-style: none;
  margin: 0 0 32px;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}

@media (min-width: 768px) {
  #tbx-yao-lp .step-list {
    grid-template-columns: repeat(4, 1fr);
  }
}

#tbx-yao-lp .step-list__item {
  text-align: center;
  background: #fff;
  border: 2px solid var(--tbx-border);
  border-radius: var(--tbx-radius);
  padding: 20px 12px;
}

#tbx-yao-lp .step-list__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.2em;
  height: 2.2em;
  border-radius: 50%;
  background: var(--sumo-navy);
  color: #fff;
  font-size: 1.72rem;
  font-weight: 700;
  margin-bottom: 0.5em;
}

#tbx-yao-lp .step-list__text {
  font-size: 1.6rem;
  font-weight: 700;
  margin: 0;
}

#tbx-yao-lp .pre-register-box {
  text-align: center;
  background: var(--tbx-bg-sub);
  border-radius: var(--tbx-radius);
  padding: 28px 20px;
}

#tbx-yao-lp .pre-register-box__text {
  font-size: 1.59rem;
  font-weight: 700;
  margin: 0 0 1em;
}

/* ============================================================
   ⑤注意事項（アコーディオン）
   ============================================================ */
#tbx-yao-lp .accordion__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

#tbx-yao-lp .accordion__item {
  background: #fff;
  border: 1px solid var(--tbx-border);
  border-radius: var(--tbx-radius);
  overflow: hidden;
}

#tbx-yao-lp .accordion__trigger {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  background: none;
  border: none;
  padding: 18px 20px;
  font-family: inherit;
  font-size: 1.6rem;
  font-weight: 700;
  text-align: left;
  cursor: pointer;
  color: var(--tbx-text);
}

#tbx-yao-lp .accordion__q {
  flex: 1;
}

#tbx-yao-lp .accordion__icon {
  flex: 0 0 auto;
  width: 1.4em;
  height: 1.4em;
  position: relative;
}

#tbx-yao-lp .accordion__icon::before,
#tbx-yao-lp .accordion__icon::after {
  content: '';
  position: absolute;
  background: var(--sumo-red);
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

#tbx-yao-lp .accordion__icon::before {
  width: 100%;
  height: 3px;
}

#tbx-yao-lp .accordion__icon::after {
  width: 3px;
  height: 100%;
  transition: transform 0.2s ease;
}

#tbx-yao-lp .accordion__trigger.is-open .accordion__icon::after {
  transform: translate(-50%, -50%) rotate(90deg) scaleX(0);
}

#tbx-yao-lp .accordion__panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.25s ease;
  padding: 0 20px;
}

#tbx-yao-lp .accordion__panel p {
  font-size: 1.45rem;
  color: var(--tbx-text-sub);
  margin: 0 0 20px;
}

/* ============================================================
   ボタン
   ============================================================ */
#tbx-yao-lp .btn {
  display: inline-block;
  padding: 16px 36px;
  border-radius: var(--tbx-radius);
  font-size: 1.6rem;
  font-weight: 700;
  cursor: pointer;
  transition: opacity 0.2s ease;
  text-align: center;
  text-decoration: none;
}

#tbx-yao-lp .btn:hover {
  opacity: 0.85;
  text-decoration: none;
}

#tbx-yao-lp .btn--primary {
  background: var(--sumo-red);
  color: #fff;
}

#tbx-yao-lp .btn--outline {
  background: transparent;
  color: var(--sumo-navy);
  border: 2px solid var(--sumo-navy);
}

#tbx-yao-lp .btn--lg {
  padding: 20px 52px;
  font-size: 1.72rem;
}

/* ============================================================
   CTAセクション
   ============================================================ */
#tbx-yao-lp .cta-section {
  background: var(--sumo-navy);
  padding: 56px 20px 96px;
  text-align: center;
  color: #fff;
}

#tbx-yao-lp .cta-section__inner {
  max-width: 640px;
  margin-inline: auto;
}

#tbx-yao-lp .cta-section__text {
  font-size: clamp(1.6rem, 2.8vw, 1.85rem);
  margin-bottom: 1.3em;
  font-weight: 700;
}

#tbx-yao-lp .cta-section .btn--primary {
  background: var(--sumo-gold);
  color: var(--sumo-navy);
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}

/* ============================================================
   CTA固定バー（スクロール追従）
   ============================================================ */
.cta-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: #fff;
  border-top: 3px solid var(--sumo-red);
  padding: 12px 16px;
  box-shadow: 0 -2px 10px rgba(0,0,0,0.15);
  transform: translateY(110%);
  transition: transform 0.25s ease;
}

.cta-bar.is-visible {
  transform: translateY(0);
}

.cta-bar__text {
  margin: 0;
  font-size: 1.45rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--tbx-text);
}

.cta-bar__btn {
  flex: 0 0 auto;
  background: var(--sumo-red);
  color: #fff;
  font-size: 1.45rem;
  font-weight: 700;
  padding: 14px 24px;
  border-radius: var(--tbx-radius);
  text-decoration: none;
  white-space: nowrap;
}

.cta-bar__btn:hover {
  opacity: 0.85;
  text-decoration: none;
}

@media (max-width: 480px) {
  .cta-bar__text {
    font-size: 1.4rem;
  }
  .cta-bar__btn {
    padding: 12px 18px;
    font-size: 1.39rem;
  }
}

/* ============================================================
   スマホ表示専用の調整（ヒーロー）
   ・H1のみ画像に重ねて配置（画像中央に絶対配置）
   ・開催日時／重要告知はH1の下、画像の下に通常配置のまま
   ・PC（768px以上）は既存の重ね合わせデザインのまま変更しない
   ============================================================ */
@media (max-width: 767px) {
  #tbx-yao-lp .hero__copy {
    position: static;
    top: auto;
    left: auto;
    transform: none;
    width: 100%;
    max-width: none;
    padding: 24px 20px 32px;
  }

  /* H1のみ画像（hero-sumo-yao.jpg）の上に重ねて配置
     ※ hero__copy が通常配置になり hero__inner の高さが画像より
     長くなったため、50% ではなく画像自体の高さ（1920:900の比率）
     を基準にした vw 値で画像の縦中央に位置を合わせている */
  #tbx-yao-lp .hero__event-name {
    position: absolute;
    top: 23.44vw;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 92%;
    max-width: 820px;
    margin: 0;
  }
}

/* ============================================================
   スマホ表示専用の調整（座席タイプ／ツアープラン一覧を横スライドに）
   ・PC（768px以上）は既存のグリッド表示のまま変更しない
   ============================================================ */
@media (max-width: 767px) {
  #tbx-yao-lp .seat-list,
  #tbx-yao-lp .tour-card-list {
    display: flex;
    flex-wrap: nowrap;
    grid-template-columns: none;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
    gap: 16px;
    padding-bottom: 10px;
    margin-bottom: 0;
  }

  #tbx-yao-lp .seat-list__item,
  #tbx-yao-lp .tour-card {
    flex: 0 0 78%;
    scroll-snap-align: start;
  }

  /* 「注意事項」アコーディオンの＋アイコンをスマホだけ半分の大きさに */
  #tbx-yao-lp .accordion__icon {
    width: 0.7em;
    height: 0.7em;
  }

  #tbx-yao-lp .accordion__icon::before {
    height: 1.5px;
  }

  #tbx-yao-lp .accordion__icon::after {
    width: 1.5px;
  }
}

/* ============================================================
   スマホ表示専用の調整
   ・PCデザインには影響させない（max-width: 480px のみ）
   ============================================================ */
@media (max-width: 480px) {
  /* H1（ヒーロー見出し）をスマホだけ縮小 */
  #tbx-yao-lp .hero__event-name {
    font-size: clamp(2.2rem, 8.5vw, 2.8rem);
  }
}