@charset "UTF-8";
/* =====================================================================
 * 日本のお祭りツアー特集  共通CSS  /domestic/special/festival/css/fes-common.css
 * トップ・下層の全ページで共用。すべて #tbx-lp-festival 起点（WPテーマと衝突させない）
 * ページ固有の色・画像は各ページの css/fes-◯◯.css へ
 * モバイルファースト（768px 以上でPCレイアウト）
 * ===================================================================== */
:root {
  --fes-navy: #16264a; --fes-navy2: #1c305c; --fes-red: #a3121b; --fes-red2: #c8202b;
  --fes-gold: #c89932; --fes-gold2: #8c7042; --fes-cream: #f8f4e6; --fes-beige: #ede4cd;
  --fes-ink: #2b2b2b; --fes-muted: #6b6457; --fes-line: #d9cfb6;
  --fes-ok: #1f7a3e; --fes-few: #c26a00; --fes-full: #9a9a9a; --fes-ask: #2f5fa8;
}
#tbx-lp-festival { color: var(--fes-ink); font-family: 'Noto Sans JP', sans-serif; font-size: 16px; line-height: 1.8; background: #fff; overflow-x: hidden; }
#tbx-lp-festival *, #tbx-lp-festival *::before, #tbx-lp-festival *::after { box-sizing: border-box; }
#tbx-lp-festival img { max-width: 100%; display: block; }
#tbx-lp-festival a { color: inherit; }
#tbx-lp-festival h1, #tbx-lp-festival h2, #tbx-lp-festival h3 { font-family: 'Noto Serif JP', serif; margin: 0; letter-spacing: .02em; }
#tbx-lp-festival p { margin: 0; }
#tbx-lp-festival [hidden] { display: none !important; }
/* WPテーマ共通CSSの section（白背景・下線）を打ち消す */
#tbx-lp-festival section { background: transparent; border-bottom: 0; }
#tbx-lp-festival .fes-inner { max-width: 1100px; margin: 0 auto; padding: 0 16px; }

/* ---------- パンくず ---------- */
#tbx-lp-festival .fes-bc { font-size: 13px; color: var(--fes-muted); padding-top: 10px; padding-bottom: 10px; }
#tbx-lp-festival .fes-bc ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px; }
#tbx-lp-festival .fes-bc li + li::before { content: "›"; margin-right: 4px; color: #bbb; }
#tbx-lp-festival .fes-bc a { text-decoration: none; color: var(--fes-navy2); }

/* ---------- ボタン ---------- */
#tbx-lp-festival .fes-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; padding: 0 28px; border-radius: 6px; font-weight: 700; font-size: 17px; text-decoration: none; cursor: pointer; border: 0; font-family: inherit; line-height: 1.4; text-align: center; }
#tbx-lp-festival .fes-btn--red { background: var(--fes-red2); color: #fff; box-shadow: 0 3px 0 #7d0e15; }
#tbx-lp-festival .fes-btn--red:hover { background: var(--fes-red); }
#tbx-lp-festival .fes-btn--line { background: #fff; color: var(--fes-navy2); border: 2px solid var(--fes-navy2); }
#tbx-lp-festival .fes-btn.is-disabled { background: #c9c9c9; color: #fff; border-color: #c9c9c9; box-shadow: none; cursor: not-allowed; }
#tbx-lp-festival .fes-link { background: none; border: 0; color: var(--fes-navy2); text-decoration: underline; cursor: pointer; font: inherit; font-weight: 700; }

/* ---------- ヒーロー ---------- */
#tbx-lp-festival .fes-hero { position: relative; color: #fff; background: var(--fes-navy); overflow: hidden; }
#tbx-lp-festival .fes-hero__bg { position: absolute; inset: 0; background: center / cover no-repeat; }
#tbx-lp-festival .fes-hero__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22,38,74,.55) 0%, rgba(22,38,74,.92) 55%); }
#tbx-lp-festival .fes-hero .fes-inner { position: relative; padding-top: 40px; padding-bottom: 40px; }
#tbx-lp-festival .fes-hero__tag { display: inline-block; border: 1px solid var(--fes-gold); color: #f3dca0; font-size: 14px; padding: 2px 12px; letter-spacing: .1em; }
#tbx-lp-festival .fes-hero h1 { font-size: 28px; line-height: 1.35; margin: 16px 0 10px; font-weight: 900; color: #fff; }
#tbx-lp-festival .fes-hero h1 .nw { display: inline-block; }
#tbx-lp-festival .fes-hero h1 small { display: block; font-size: 16px; font-weight: 500; color: #f3dca0; margin-bottom: 6px; }
#tbx-lp-festival .fes-hero__lead { max-width: 560px; margin-bottom: 22px; color: #f1ecdf; }
#tbx-lp-festival .fes-hero__facts { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 24px; padding: 0; list-style: none; }
#tbx-lp-festival .fes-hero__facts li { flex: 1 1 100%; background: rgba(255,255,255,.1); border-left: 3px solid var(--fes-gold); padding: 8px 16px; }
#tbx-lp-festival .fes-hero__facts span { display: block; font-size: 12px; color: #d9cfb6; letter-spacing: .1em; }
#tbx-lp-festival .fes-hero__facts strong { font-size: 18px; font-weight: 700; }
#tbx-lp-festival .fes-hero .fes-btn { width: 100%; }

/* ---------- ページ内メニュー ---------- */
#tbx-lp-festival .fes-toc { background: var(--fes-cream); border-bottom: 1px solid var(--fes-line); }
#tbx-lp-festival .fes-toc ul { list-style: none; margin: 0; padding: 0; display: flex; overflow-x: auto; }
#tbx-lp-festival .fes-toc a { display: block; white-space: nowrap; padding: 12px 14px; text-decoration: none; font-size: 14px; color: var(--fes-navy2); font-weight: 500; }
#tbx-lp-festival .fes-toc a::after { content: "▼"; font-size: 9px; margin-left: 6px; color: var(--fes-gold2); }

/* ---------- セクション ---------- */
#tbx-lp-festival .fes-sec { padding: 52px 0; }
#tbx-lp-festival .fes-sec--cream { background: var(--fes-cream); }
#tbx-lp-festival .fes-h2 { text-align: center; font-size: 23px; line-height: 1.4; color: var(--fes-navy); margin-bottom: 12px; font-weight: 700; }
#tbx-lp-festival .fes-h2::after { content: ""; display: block; width: 60px; height: 3px; background: var(--fes-red2); margin: 16px auto 0; }
#tbx-lp-festival .fes-sub { text-align: center; color: var(--fes-muted); margin-bottom: 32px; font-size: 15px; }
#tbx-lp-festival .fes-empty { text-align: center; background: var(--fes-cream); border-radius: 8px; padding: 28px 16px; }
#tbx-lp-festival .fes-empty p { margin-bottom: 16px; }

/* ---------- 出発地の絞り込み ---------- */
#tbx-lp-festival .fes-filter { position: sticky; top: 0; z-index: 20; background: var(--fes-navy); color: #fff; padding: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,.2); }
#tbx-lp-festival .fes-filter .fes-inner { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
#tbx-lp-festival .fes-filter__label { font-weight: 700; font-size: 13px; width: 100%; }
#tbx-lp-festival .fes-chips { display: flex; flex-wrap: nowrap; overflow-x: auto; gap: 8px; width: 100%; }
#tbx-lp-festival .fes-chip { white-space: nowrap; background: transparent; color: #fff; border: 1px solid rgba(255,255,255,.55); border-radius: 999px; padding: 4px 14px; font-size: 15px; cursor: pointer; font-family: inherit; }
#tbx-lp-festival .fes-chip small { opacity: .8; margin-left: 4px; }
#tbx-lp-festival .fes-chip.is-active { background: var(--fes-gold); border-color: var(--fes-gold); color: var(--fes-navy); font-weight: 700; }
#tbx-lp-festival .fes-filter__count { width: 100%; font-size: 13px; }
#tbx-lp-festival .fes-filter__count strong { font-size: 18px; color: #f3dca0; margin: 0 2px; }

/* ---------- ツアーカード（上段：左に画像・右に商品情報／下段：説明・カレンダー・ボタン） ---------- */
#tbx-lp-festival .fes-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 28px; }
#tbx-lp-festival .fes-card { background: #fff; border: 1px solid var(--fes-line); border-radius: 10px; box-shadow: 0 4px 14px rgba(40,30,0,.08); }
#tbx-lp-festival .fes-card article { margin: 0; }
#tbx-lp-festival .fes-card__top { display: grid; grid-template-columns: 1fr; gap: 16px; padding: 16px 16px 0; }
/* 画像は 4:3 の枠に重ねて表示（縦長の写真でも枠が伸びない） */
#tbx-lp-festival .fes-card__img { position: relative; margin: 0; align-self: start; border-radius: 6px; overflow: hidden; background: #eee; aspect-ratio: 4 / 3; }
#tbx-lp-festival .fes-card__img > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
#tbx-lp-festival .fes-card__days { position: absolute; left: 10px; top: 10px; background: var(--fes-red2); color: #fff; font-weight: 700; padding: 2px 12px; border-radius: 3px; font-size: 15px; }
#tbx-lp-festival .fes-card__ended { position: absolute; left: 0; right: 0; bottom: 0; background: rgba(60,60,60,.85); color: #fff; text-align: center; font-weight: 700; padding: 8px; letter-spacing: .2em; }
#tbx-lp-festival .fes-card__icons { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
#tbx-lp-festival .fes-card__icons li { font-size: 13px; background: var(--fes-beige); color: var(--fes-gold2); padding: 1px 10px; border-radius: 3px; font-weight: 500; }
#tbx-lp-festival .fes-card__icons li.is-strong { background: var(--fes-navy2); color: #fff; }
#tbx-lp-festival .fes-card__code { font-size: 13px; color: var(--fes-muted); }
#tbx-lp-festival .fes-card__name { font-size: 19px; line-height: 1.5; color: var(--fes-navy); margin: 2px 0 12px; font-weight: 700; }
#tbx-lp-festival .fes-card__dep { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; flex-wrap: wrap; }
#tbx-lp-festival .fes-card__dep label { font-weight: 700; color: var(--fes-navy2); }
#tbx-lp-festival .fes-card__dep select { width: 100%; font-size: 16px; padding: 8px 12px; border: 2px solid var(--fes-navy2); border-radius: 6px; font-family: inherit; background: #fff; color: var(--fes-ink); }
#tbx-lp-festival .fes-card__dep select.is-shake { animation: fesShake .4s; }
@keyframes fesShake { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
#tbx-lp-festival .fes-card__price { background: var(--fes-cream); border-radius: 6px; padding: 10px 16px; margin: 0 0 12px; }
#tbx-lp-festival .fes-card__price dt { font-size: 14px; color: var(--fes-muted); }
#tbx-lp-festival .fes-card__price dd { margin: 0; line-height: 1.3; }
#tbx-lp-festival .fes-card__price .js-price { font-size: 26px; font-weight: 700; color: var(--fes-red); }
#tbx-lp-festival .fes-card__price small { display: block; font-size: 13px; color: var(--fes-muted); margin-top: 2px; }
#tbx-lp-festival .fes-card__meta { display: grid; grid-template-columns: 72px 1fr; gap: 2px 10px; margin: 0 0 4px; }
#tbx-lp-festival .fes-card__meta dt { color: var(--fes-gold2); font-weight: 500; }
#tbx-lp-festival .fes-card__meta dd { margin: 0; }
#tbx-lp-festival .fes-card__bottom { padding: 16px; }
#tbx-lp-festival .fes-card__text { font-size: 15px; color: #444; padding-top: 14px; margin-bottom: 16px; border-top: 1px solid var(--fes-line); }
#tbx-lp-festival .fes-card__booking { display: grid; grid-template-columns: 1fr; gap: 14px; align-items: start; }
#tbx-lp-festival .fes-card__side { display: flex; flex-direction: column; gap: 10px; }
#tbx-lp-festival .fes-card__btns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
#tbx-lp-festival .fes-card__btns .fes-btn { width: 100%; padding: 0 10px; }
#tbx-lp-festival .fes-card__alert { color: var(--fes-red2); font-weight: 700; font-size: 15px; }
#tbx-lp-festival .fes-card.is-ended { opacity: .8; }
#tbx-lp-festival .fes-card.is-ended .fes-card__top { padding-bottom: 16px; }
#tbx-lp-festival .fes-card.is-ended .fes-card__img > img { filter: grayscale(1); }
#tbx-lp-festival .fes-card.is-ended .js-price { color: #777; font-size: 22px; }
#tbx-lp-festival .fes-card__ended-note { color: var(--fes-muted); font-size: 15px; margin-top: 8px; }

/* ---------- 出発日カレンダー ---------- */
#tbx-lp-festival .fes-cal { border: 1px solid var(--fes-line); border-radius: 8px; padding: 12px; background: #fffdf7; }
#tbx-lp-festival .fes-cal__head { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
#tbx-lp-festival .fes-cal__title { font-weight: 700; color: var(--fes-navy2); }
#tbx-lp-festival .fes-cal__sum { font-size: 14px; }
#tbx-lp-festival .fes-cal__sum strong { font-size: 18px; color: var(--fes-red); }
#tbx-lp-festival .fes-cal__nav { display: flex; align-items: center; justify-content: center; gap: 16px; margin-bottom: 4px; }
#tbx-lp-festival .fes-cal__nav-btn { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--fes-line); background: #fff; font-size: 20px; line-height: 1; cursor: pointer; color: var(--fes-ink); }
#tbx-lp-festival .fes-cal__nav-btn:disabled { opacity: .3; cursor: default; }
#tbx-lp-festival .fes-cal__label { font-weight: 700; font-size: 17px; }
#tbx-lp-festival .fes-cal__label--single { text-align: center; margin-bottom: 4px; }
#tbx-lp-festival .fes-cal__table { width: 100%; border-collapse: collapse; table-layout: fixed; margin: 0; }
#tbx-lp-festival .fes-cal__caption { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
#tbx-lp-festival .fes-cal__table th { font-size: 13px; font-weight: 500; padding: 4px 0; color: var(--fes-muted); text-align: center; background: none; border: 0; }
#tbx-lp-festival .fes-cal__table th.is-sun { color: #c0392b; }
#tbx-lp-festival .fes-cal__table th.is-sat { color: #2f5fa8; }
#tbx-lp-festival .fes-cal__table td { padding: 2px; text-align: center; vertical-align: top; height: 50px; border: 0; background: none; }
#tbx-lp-festival .fes-cal__num { display: block; font-size: 13px; color: #bbb; padding-top: 6px; line-height: 1.2; }
#tbx-lp-festival .fes-cal__day { width: 100%; height: 48px; border: 1px solid var(--fes-line); border-radius: 6px; background: #fff; cursor: pointer; padding: 2px 0; position: relative; font-family: inherit; line-height: 1.2; color: var(--fes-ink); }
#tbx-lp-festival .fes-cal__day .fes-cal__num { color: var(--fes-ink); padding-top: 2px; font-weight: 500; }
#tbx-lp-festival .fes-cal__mark { display: block; font-size: 16px; font-weight: 700; }
#tbx-lp-festival .fes-cal__day.is-ok .fes-cal__mark { color: var(--fes-ok); }
#tbx-lp-festival .fes-cal__day.is-few .fes-cal__mark { color: var(--fes-few); }
#tbx-lp-festival .fes-cal__day.is-full { background: #f4f4f4; }
#tbx-lp-festival .fes-cal__day.is-full .fes-cal__mark { color: var(--fes-full); }
#tbx-lp-festival .fes-cal__day.is-ask .fes-cal__mark { color: var(--fes-ask); font-size: 14px; }
#tbx-lp-festival .fes-cal__star { position: absolute; right: 3px; top: 1px; color: var(--fes-gold); font-size: 12px; }
#tbx-lp-festival .fes-cal__day.is-selected { outline: 3px solid var(--fes-red2); outline-offset: -1px; background: #fff4f0; }
#tbx-lp-festival .fes-cal__legend { font-size: 13px; color: var(--fes-muted); margin-top: 8px; display: flex; flex-wrap: wrap; gap: 2px 12px; }
#tbx-lp-festival .fes-cal__legend b { font-weight: 700; margin-right: 2px; }
#tbx-lp-festival .fes-cal__legend .is-ok { color: var(--fes-ok); }
#tbx-lp-festival .fes-cal__legend .is-few { color: var(--fes-few); }
#tbx-lp-festival .fes-cal__legend .is-full { color: var(--fes-full); }
#tbx-lp-festival .fes-cal__legend .is-ask { color: var(--fes-ask); }
#tbx-lp-festival .fes-cal__legend .is-k { color: var(--fes-gold); }
#tbx-lp-festival .fes-cal__updated { font-size: 12px; color: var(--fes-muted); margin-top: 8px; }
#tbx-lp-festival .fes-cal__guide { background: var(--fes-cream); border: 1px dashed var(--fes-gold2); border-radius: 8px; padding: 18px; text-align: center; color: var(--fes-gold2); font-weight: 500; }
#tbx-lp-festival .fes-cal--ended .fes-cal__msg { text-align: center; color: #777; padding: 12px; }
/* 日付を押したときの詳細 */
#tbx-lp-festival .fes-cal__detail { background: var(--fes-cream); border-radius: 6px; padding: 12px 14px; font-size: 15px; }
#tbx-lp-festival .fes-cal__hint { color: var(--fes-muted); }
#tbx-lp-festival .fes-cal__detail-date { font-weight: 700; font-size: 17px; color: var(--fes-navy2); }
#tbx-lp-festival .fes-cal__detail-list { list-style: none; margin: 0; padding: 0; }
#tbx-lp-festival .fes-cal__detail-item + .fes-cal__detail-item { border-top: 1px dotted var(--fes-line); margin-top: 6px; padding-top: 6px; }
#tbx-lp-festival .fes-cal__detail-row { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; margin-top: 4px; }
#tbx-lp-festival .fes-tag { font-size: 13px; padding: 0 8px; border-radius: 3px; background: #fff; border: 1px solid var(--fes-line); }
#tbx-lp-festival .fes-tag.is-ok { color: var(--fes-ok); border-color: var(--fes-ok); }
#tbx-lp-festival .fes-tag.is-few { color: var(--fes-few); border-color: var(--fes-few); }
#tbx-lp-festival .fes-tag.is-full { color: #777; }
#tbx-lp-festival .fes-tag.is-ask { color: var(--fes-ask); border-color: var(--fes-ask); }
#tbx-lp-festival .fes-tag.is-k { background: var(--fes-gold); color: #fff; border-color: var(--fes-gold); }
#tbx-lp-festival .fes-cal__detail-price { font-size: 20px; font-weight: 700; color: var(--fes-red); }
#tbx-lp-festival .fes-cal__detail-price small { font-size: 13px; color: var(--fes-muted); font-weight: 400; margin-left: 4px; }
#tbx-lp-festival .fes-cal__detail-room { font-size: 13px; color: var(--fes-muted); }
#tbx-lp-festival .fes-cal__go { display: block; text-align: center; margin-top: 10px; background: var(--fes-navy2); color: #fff; text-decoration: none; font-weight: 700; padding: 10px; border-radius: 6px; }
#tbx-lp-festival .fes-cal__go-note { font-size: 12px; color: var(--fes-muted); text-align: center; margin-top: 4px; }

/* ---------- 開催概要 ---------- */
#tbx-lp-festival .fes-info { display: grid; grid-template-columns: 1fr; gap: 28px; align-items: start; }
#tbx-lp-festival .fes-info__table { width: 100%; border-collapse: collapse; background: #fff; margin: 0; }
#tbx-lp-festival .fes-info__table th, #tbx-lp-festival .fes-info__table td { border: 1px solid var(--fes-line); padding: 10px 12px; text-align: left; vertical-align: top; font-size: 15px; }
#tbx-lp-festival .fes-info__table th { background: var(--fes-beige); color: var(--fes-navy2); width: 32%; font-weight: 700; }
#tbx-lp-festival .fes-info__table td strong { color: var(--fes-red); font-size: 17px; }
#tbx-lp-festival .fes-info__note { font-size: 13px; color: var(--fes-muted); margin-top: 8px; }
#tbx-lp-festival .fes-info__text p { margin-bottom: 14px; }
#tbx-lp-festival .fes-info__text h3 { font-size: 20px; color: var(--fes-navy); margin-bottom: 10px; padding-left: 12px; border-left: 4px solid var(--fes-red2); }

/* ---------- 見どころ ---------- */
#tbx-lp-festival .fes-points { display: grid; grid-template-columns: 1fr; gap: 24px; }
#tbx-lp-festival .fes-point { background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,.06); }
#tbx-lp-festival .fes-point__img { aspect-ratio: 4 / 3; background: var(--fes-beige); position: relative; }
#tbx-lp-festival .fes-point__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
#tbx-lp-festival .fes-point__img small { position: absolute; right: 6px; bottom: 4px; font-size: 10px; color: #fff; text-shadow: 0 0 3px rgba(0,0,0,.6); }
#tbx-lp-festival .fes-point__num { position: absolute; left: 0; top: 0; background: var(--fes-gold); color: var(--fes-navy); font-family: 'Noto Serif JP', serif; font-weight: 900; padding: 4px 12px; font-size: 18px; }
#tbx-lp-festival .fes-point h3 { font-size: 19px; color: var(--fes-navy); margin: 16px 18px 6px; }
#tbx-lp-festival .fes-point p { margin: 0 18px 18px; font-size: 15px; }

/* ---------- 会場ガイド ---------- */
#tbx-lp-festival .fes-venues { display: grid; grid-template-columns: 1fr; gap: 20px; }
#tbx-lp-festival .fes-venue { border-top: 4px solid var(--fes-red2); background: #fff; padding-bottom: 16px; box-shadow: 0 2px 8px rgba(0,0,0,.05); }
#tbx-lp-festival .fes-venue__img { aspect-ratio: 16 / 10; background: var(--fes-beige); position: relative; }
#tbx-lp-festival .fes-venue__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
#tbx-lp-festival .fes-venue h3 { font-size: 18px; color: var(--fes-navy); margin: 12px 16px 4px; }
#tbx-lp-festival .fes-venue p { margin: 0 16px; font-size: 15px; line-height: 1.75; }

/* ---------- ツアーで行く理由 ---------- */
#tbx-lp-festival .fes-merits { display: grid; grid-template-columns: 1fr; gap: 16px; list-style: none; margin: 0; padding: 0; }
#tbx-lp-festival .fes-merits li { background: #fff; border: 1px solid var(--fes-line); border-radius: 8px; padding: 22px 20px; }
#tbx-lp-festival .fes-merits__icon { width: 64px; height: 64px; border-radius: 50%; background: var(--fes-navy2); color: #f3dca0; display: flex; align-items: center; justify-content: center; margin: 0 auto 12px; font-family: 'Noto Serif JP', serif; font-weight: 700; font-size: 16px; }
#tbx-lp-festival .fes-merits h3 { font-size: 19px; color: var(--fes-navy); margin-bottom: 8px; text-align: center; }
#tbx-lp-festival .fes-merits p { font-size: 15px; }

/* ---------- よくある質問 ---------- */
#tbx-lp-festival .fes-faq { max-width: 860px; margin: 0 auto; }
#tbx-lp-festival .fes-faq details { background: #fff; border: 1px solid var(--fes-line); border-radius: 8px; margin-bottom: 12px; }
#tbx-lp-festival .fes-faq summary { list-style: none; cursor: pointer; padding: 14px 44px 14px 52px; position: relative; font-weight: 700; color: var(--fes-navy); }
#tbx-lp-festival .fes-faq summary::-webkit-details-marker { display: none; }
#tbx-lp-festival .fes-faq summary::before { content: "Q"; position: absolute; left: 14px; top: 12px; width: 28px; height: 28px; border-radius: 50%; background: var(--fes-red2); color: #fff; text-align: center; line-height: 28px; font-family: 'Noto Serif JP', serif; }
#tbx-lp-festival .fes-faq summary::after { content: "+"; position: absolute; right: 16px; top: 10px; font-size: 24px; color: var(--fes-gold2); }
#tbx-lp-festival .fes-faq details[open] summary::after { content: "−"; }
#tbx-lp-festival .fes-faq details p { padding: 0 18px 16px 52px; font-size: 15px; }

/* ---------- ほかのお祭り ---------- */
#tbx-lp-festival .fes-others { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; list-style: none; margin: 0; padding: 0; }
#tbx-lp-festival .fes-others a { display: block; text-decoration: none; background: #fff; border: 1px solid var(--fes-line); border-radius: 8px; overflow: hidden; height: 100%; }
#tbx-lp-festival .fes-others__img { aspect-ratio: 4 / 3; background: linear-gradient(135deg, var(--fes-navy2), #3a4f80) center / cover no-repeat; }
#tbx-lp-festival .fes-others__body { padding: 10px 12px 14px; }
#tbx-lp-festival .fes-others__st { display: inline-block; font-size: 12px; padding: 0 8px; border-radius: 3px; font-weight: 700; }
#tbx-lp-festival .fes-others__st.is-on { background: var(--fes-red2); color: #fff; }
#tbx-lp-festival .fes-others__st.is-off { background: #eee; color: #777; }
#tbx-lp-festival .fes-others h3 { font-size: 16px; color: var(--fes-navy); margin: 6px 0 2px; }
#tbx-lp-festival .fes-others p { font-size: 12px; color: var(--fes-muted); }
#tbx-lp-festival .fes-back { text-align: center; margin-top: 32px; }

/* ---------- 既存の「おすすめ特集」パーツ（osusume_tokushu.html）用の最低限のスタイル ---------- */
#tbx-lp-festival .fes-osusume .box-wrap { display: flex; flex-direction: column; gap: 24px; }
#tbx-lp-festival .fes-osusume .box { width: 100%; max-width: 400px; margin: 0 auto; }
#tbx-lp-festival .fes-osusume .box img { width: 100%; height: auto; }
#tbx-lp-festival .fes-osusume .box h3 { font-size: 17px; color: var(--fes-navy); margin: 10px 0; }
#tbx-lp-festival .fes-osusume .box a { display: inline-block; width: 100%; background: #ed3700; color: #fff; padding: 12px 0; border-radius: 5px; margin: 5px 0; text-align: center; text-decoration: none; }

/* =====================================================================
 * 768px 以上（タブレット・PC）
 * ===================================================================== */
@media (min-width: 768px) {
  #tbx-lp-festival { font-size: 17px; }
  #tbx-lp-festival .fes-inner { padding: 0 20px; }
  #tbx-lp-festival .fes-hero__bg::after { background: linear-gradient(90deg, rgba(22,38,74,.92) 0%, rgba(22,38,74,.75) 45%, rgba(22,38,74,.15) 100%); }
  #tbx-lp-festival .fes-hero .fes-inner { padding-top: 64px; padding-bottom: 64px; }
  #tbx-lp-festival .fes-hero h1 { font-size: 40px; margin-top: 18px; }
  #tbx-lp-festival .fes-hero h1 small { font-size: 20px; }
  #tbx-lp-festival .fes-hero__facts li { flex: 0 1 auto; min-width: 200px; }
  #tbx-lp-festival .fes-hero .fes-btn { width: auto; }
  #tbx-lp-festival .fes-toc ul { justify-content: center; flex-wrap: wrap; }
  #tbx-lp-festival .fes-toc a { padding: 14px 20px; font-size: 15px; }
  #tbx-lp-festival .fes-sec { padding: 72px 0; }
  #tbx-lp-festival .fes-h2 { font-size: 30px; }
  #tbx-lp-festival .fes-sub { font-size: 16px; margin-bottom: 40px; }
  #tbx-lp-festival .fes-filter { padding: 12px 0; }
  #tbx-lp-festival .fes-filter .fes-inner { flex-wrap: nowrap; gap: 14px; }
  #tbx-lp-festival .fes-filter__label { width: auto; font-size: 16px; white-space: nowrap; }
  #tbx-lp-festival .fes-chips { width: auto; flex-wrap: wrap; }
  #tbx-lp-festival .fes-chip { padding: 6px 18px; font-size: 16px; }
  #tbx-lp-festival .fes-filter__count { width: auto; margin-left: auto; font-size: 15px; white-space: nowrap; }
  #tbx-lp-festival .fes-filter__count strong { font-size: 22px; }
  #tbx-lp-festival .fes-cards { gap: 32px; }
  #tbx-lp-festival .fes-card__top { grid-template-columns: 340px 1fr; gap: 24px; padding: 24px 24px 0; }
  #tbx-lp-festival .fes-card__name { font-size: 21px; }
  #tbx-lp-festival .fes-card__dep select { width: auto; min-width: 260px; }
  #tbx-lp-festival .fes-card__price .js-price { font-size: 28px; }
  #tbx-lp-festival .fes-card__meta { grid-template-columns: 80px 1fr; font-size: 16px; }
  #tbx-lp-festival .fes-card__bottom { padding: 20px 24px 24px; }
  #tbx-lp-festival .fes-card__text { font-size: 16px; }
  #tbx-lp-festival .fes-card.is-ended .fes-card__top { padding-bottom: 24px; }
  #tbx-lp-festival .fes-cal { padding: 14px 16px; }
  #tbx-lp-festival .fes-cal__table td { height: 54px; }
  #tbx-lp-festival .fes-cal__day { height: 52px; }
  #tbx-lp-festival .fes-cal__num { font-size: 14px; }
  #tbx-lp-festival .fes-cal__mark { font-size: 17px; }
  #tbx-lp-festival .fes-info__table th, #tbx-lp-festival .fes-info__table td { padding: 12px 16px; font-size: 16px; }
  #tbx-lp-festival .fes-info__table th { white-space: nowrap; width: 30%; }
  #tbx-lp-festival .fes-points, #tbx-lp-festival .fes-venues, #tbx-lp-festival .fes-merits { grid-template-columns: repeat(2, 1fr); }
  #tbx-lp-festival .fes-others { grid-template-columns: repeat(3, 1fr); gap: 18px; }
  #tbx-lp-festival .fes-osusume .box-wrap { flex-direction: row; justify-content: space-between; }
  #tbx-lp-festival .fes-osusume .box { width: calc(100% / 3 - 20px); margin: 0; }
}

/* =====================================================================
 * 1024px 以上（PC）
 * ===================================================================== */
@media (min-width: 1024px) {
  #tbx-lp-festival .fes-card__top { grid-template-columns: 380px 1fr; gap: 28px; padding: 24px 28px 0; }
  #tbx-lp-festival .fes-card__bottom { padding: 20px 28px 28px; }
  #tbx-lp-festival .fes-card__booking { grid-template-columns: 1fr 340px; gap: 24px; }
  #tbx-lp-festival .fes-card__btns { grid-template-columns: 1fr; }
  #tbx-lp-festival .fes-card__side .fes-cal__detail { min-height: 120px; }
  #tbx-lp-festival .fes-info { grid-template-columns: 1fr 1fr; gap: 40px; }
  #tbx-lp-festival .fes-points, #tbx-lp-festival .fes-venues, #tbx-lp-festival .fes-merits { grid-template-columns: repeat(3, 1fr); }
  #tbx-lp-festival .fes-merits { gap: 24px; }
  #tbx-lp-festival .fes-others { grid-template-columns: repeat(4, 1fr); }
}

/* =====================================================================
 * 追記①（2026-10-26 さっぽろ雪まつりで追加）会場の補足・楽しみ方・気温と服装・グルメ・観光スポット
 * ===================================================================== */
#tbx-lp-festival .fes-venue__tag { display: inline-block; font-size: 12px; padding: 0 8px; border-radius: 3px; margin: 0 16px 6px; color: #fff; background: var(--fes-navy2); }
#tbx-lp-festival .fes-venue__meta { display: grid; grid-template-columns: 64px 1fr; gap: 2px 8px; margin: 10px 16px 0; font-size: 14px; }
#tbx-lp-festival .fes-venue__meta dt { color: var(--fes-gold2); font-weight: 700; }
#tbx-lp-festival .fes-venue__meta dd { margin: 0; }

#tbx-lp-festival .fes-howto { display: grid; grid-template-columns: 1fr; gap: 16px; }
#tbx-lp-festival .fes-howto__item { background: #fff; border-radius: 8px; padding: 20px; border: 1px solid var(--fes-line); }
#tbx-lp-festival .fes-howto__label { display: inline-block; background: var(--fes-gold); color: var(--fes-navy); font-weight: 700; padding: 0 14px; border-radius: 999px; margin-bottom: 8px; }
#tbx-lp-festival .fes-howto__label.is-night { background: var(--fes-navy2); color: #f3dca0; }
#tbx-lp-festival .fes-howto__label.is-tip { background: var(--fes-red2); color: #fff; }
#tbx-lp-festival .fes-howto h3 { font-size: 19px; color: var(--fes-navy); margin-bottom: 8px; }
#tbx-lp-festival .fes-howto p { font-size: 15px; }

#tbx-lp-festival .fes-wear { display: grid; grid-template-columns: 1fr; gap: 28px; }
#tbx-lp-festival .fes-wear h3 { font-size: 19px; color: var(--fes-navy); margin-bottom: 10px; padding-left: 12px; border-left: 4px solid var(--fes-red2); }
#tbx-lp-festival .fes-climate th, #tbx-lp-festival .fes-climate td { text-align: center; }
#tbx-lp-festival .fes-climate tbody th { text-align: left; }
#tbx-lp-festival .fes-climate thead th { background: var(--fes-navy2); color: #fff; }
#tbx-lp-festival .fes-wear__more { margin-top: 14px; font-size: 15px; }
#tbx-lp-festival .fes-wear__more a, #tbx-lp-festival .fes-related a, #tbx-lp-festival .fes-spot__more a { color: var(--fes-navy2); font-weight: 700; }
#tbx-lp-festival .fes-wear__items { display: grid; grid-template-columns: 1fr; gap: 0; margin: 0 0 20px; border-top: 1px solid var(--fes-line); }
#tbx-lp-festival .fes-wear__items dt { font-weight: 700; color: var(--fes-red); padding-top: 10px; }
#tbx-lp-festival .fes-wear__items dd { margin: 0; padding-bottom: 10px; border-bottom: 1px solid var(--fes-line); font-size: 15px; }
#tbx-lp-festival .fes-wear__walk { background: var(--fes-cream); border-radius: 8px; padding: 16px 18px; }
#tbx-lp-festival .fes-wear__walk h3 { border-left-color: var(--fes-gold); }
#tbx-lp-festival .fes-wear__walk ul { margin: 0; padding-left: 1.3em; font-size: 15px; }

#tbx-lp-festival .fes-gourmet { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr; gap: 14px; }
#tbx-lp-festival .fes-gourmet li { background: #fff; border-radius: 8px; padding: 18px 18px 18px 66px; position: relative; border: 1px solid var(--fes-line); }
#tbx-lp-festival .fes-gourmet__num { position: absolute; left: 16px; top: 16px; font-family: 'Noto Serif JP', serif; font-weight: 900; font-size: 24px; color: var(--fes-gold); line-height: 1; }
#tbx-lp-festival .fes-gourmet h3 { font-size: 18px; color: var(--fes-navy); margin-bottom: 4px; }
#tbx-lp-festival .fes-gourmet p { font-size: 15px; }

#tbx-lp-festival .fes-spots { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; margin-bottom: 12px; }
#tbx-lp-festival .fes-spot { display: grid; grid-template-columns: minmax(0, 1fr); background: #fff; border: 1px solid var(--fes-line); border-radius: 8px; overflow: hidden; }
#tbx-lp-festival .fes-spot__img { aspect-ratio: 16 / 10; position: relative; background: linear-gradient(135deg, var(--fes-navy2), #3a4f80); }
#tbx-lp-festival .fes-spot__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
#tbx-lp-festival .fes-spot__body { padding: 16px 18px 18px; }
#tbx-lp-festival .fes-spot h3 { font-size: 19px; color: var(--fes-navy); }
#tbx-lp-festival .fes-spot__meta { font-size: 13px; color: var(--fes-muted); margin: 2px 0 8px; }
#tbx-lp-festival .fes-spot__body > p { font-size: 15px; }
#tbx-lp-festival .fes-spot__tours { margin-top: 12px; background: #fff4f0; border-left: 3px solid var(--fes-red2); padding: 8px 12px; font-size: 14px; }
#tbx-lp-festival .fes-spot__tours span { display: block; font-weight: 700; color: var(--fes-red); }
#tbx-lp-festival .fes-spot__tours a { display: block; color: var(--fes-navy2); overflow-wrap: anywhere; }
#tbx-lp-festival .fes-spot__tours a::before { content: "▶ "; font-size: 10px; color: var(--fes-red2); }
#tbx-lp-festival .fes-spot__more { margin-top: 8px; font-size: 14px; }
#tbx-lp-festival .fes-related { text-align: center; margin-top: 24px; font-size: 15px; }

@media (min-width: 768px) {
  #tbx-lp-festival .fes-howto { grid-template-columns: repeat(3, 1fr); gap: 20px; }
  #tbx-lp-festival .fes-gourmet { grid-template-columns: repeat(2, 1fr); }
  #tbx-lp-festival .fes-spot { grid-template-columns: 280px minmax(0, 1fr); }
  #tbx-lp-festival .fes-spot__img { aspect-ratio: auto; min-height: 200px; }
}
@media (min-width: 1024px) {
  #tbx-lp-festival .fes-wear { grid-template-columns: 1fr 1fr; gap: 40px; }
  #tbx-lp-festival .fes-gourmet { grid-template-columns: repeat(3, 1fr); }
  #tbx-lp-festival .fes-spots { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #tbx-lp-festival .fes-spot { grid-template-columns: minmax(0, 1fr); align-content: start; }
  #tbx-lp-festival .fes-spot__img { aspect-ratio: 16 / 9; min-height: 0; }
  #tbx-lp-festival .fes-venues--3 { grid-template-columns: repeat(3, 1fr); }
}
