@charset "UTF-8";
/* ==========================================================================
   Tabibito Port 混雑カレンダー スタイルシート
   --------------------------------------------------------------------------
   準拠：D1 UI/UX仕様書 v2.0（2026-05-09）
   方針：.tbp- プレフィックス徹底でCocoonテーマと衝突回避
   8pxグリッド・WCAG AAA・prefers-reduced-motion対応
   v2.3.0：レゴランド・ジャパン（LGL）対応・アボカドグリーン#7FC242
   ========================================================================== */

/* ==========================================================================
   1. CSS変数（カラー・タイポ・スペーシング・モーション・シャドウ）
   ========================================================================== */

.tbp-cal-root {
	/* --- ブランドカラー --- */
	--tbp-navy:           #0B3D91;
	--tbp-navy-dark:      #072B6B;
	--tbp-pink:           #FF6B9D;
	--tbp-pink-soft:      #FFD6E5;
	--tbp-gold:           #FFB800;
	--tbp-gold-dark:      #D99A00;
	--tbp-bg:             #FAFBFD;
	--tbp-surface:        #FFFFFF;
	--tbp-border:         #E2E8F0;
	--tbp-border-future:  #CBD5E1;
	--tbp-text-primary:   #0F172A;
	--tbp-text-secondary: #475569;
	--tbp-text-soft:      #4A5169;
	--tbp-text-disabled:  #94A3B8;

	/* --- 混雑度Lv1〜7（v2.5.109・設計書16 §4：白→緑→黄緑→アンバー→オレンジ→赤→黒。旧5色は2〜6へスライド） --- */
	--tbp-lv1-main: #FFFFFF; --tbp-lv1-bg: #FFFFFF; --tbp-lv1-border: #22C55E; --tbp-lv1-text: #14532D;
	--tbp-lv2-main: #22C55E; --tbp-lv2-bg: #F0FDF4; --tbp-lv2-border: #86EFAC; --tbp-lv2-text: #14532D;
	--tbp-lv3-main: #84CC16; --tbp-lv3-bg: #F7FEE7; --tbp-lv3-border: #BEF264; --tbp-lv3-text: #365314;
	--tbp-lv4-main: #F59E0B; --tbp-lv4-bg: #FFFBEB; --tbp-lv4-border: #FCD34D; --tbp-lv4-text: #78350F;
	--tbp-lv5-main: #F97316; --tbp-lv5-bg: #FFF7ED; --tbp-lv5-border: #FDBA74; --tbp-lv5-text: #7C2D12;
	--tbp-lv6-main: #EF4444; --tbp-lv6-bg: #FEF2F2; --tbp-lv6-border: #FCA5A5; --tbp-lv6-text: #7F1D1D;
	--tbp-lv7-main: #000000; --tbp-lv7-bg: #1F2937; --tbp-lv7-border: #111827; --tbp-lv7-text: #F9FAFB;

	/* --- 状態バッジ --- */
	--tbp-st-past:        #94A3B8;
	--tbp-st-today:       #FFB800;
	--tbp-st-future:      #0B3D91;
	--tbp-st-future-low:  #94B8E8;

	/* --- 曜日 --- */
	--tbp-dow-sun: #DC2626;
	--tbp-dow-sat: #2563EB;

	/* --- フォント --- */
	--tbp-font-ja:  "Noto Sans JP", "Hiragino Sans", "Yu Gothic UI", system-ui, -apple-system, sans-serif;
	--tbp-font-tc:  "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;
	--tbp-font-ko:  "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
	--tbp-font-en:  "Inter", -apple-system, "Segoe UI", Roboto, sans-serif;
	--tbp-font-num: "Inter", "Noto Sans JP", system-ui, sans-serif;
	--tbp-font-emoji: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;

	/* --- フォントサイズ --- */
	--tbp-fs-xxs:  9px;
	--tbp-fs-xs:   10px;
	--tbp-fs-sm:   11px;
	--tbp-fs-base: 13px;
	--tbp-fs-md:   15px;
	--tbp-fs-lg:   18px;
	--tbp-fs-xl:   22px;
	--tbp-fs-2xl:  28px;

	/* --- スペーシング --- */
	--tbp-sp-1: 4px;  --tbp-sp-2: 8px;  --tbp-sp-3: 12px;
	--tbp-sp-4: 16px; --tbp-sp-5: 20px; --tbp-sp-6: 24px;
	--tbp-sp-8: 32px; --tbp-sp-10: 40px;

	/* --- モーション --- */
	--tbp-ease:     cubic-bezier(0.16, 1, 0.3, 1);
	--tbp-ease-out: cubic-bezier(0.4, 0, 0.2, 1);
	--tbp-dur-fast: 120ms;
	--tbp-dur-base: 200ms;
	--tbp-dur-slow: 320ms;

	/* --- シャドウ --- */
	--tbp-shadow-xs:   0 1px 2px rgba(15, 23, 42, 0.04);
	--tbp-shadow-sm:   0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
	--tbp-shadow-md:   0 4px 8px rgba(11, 61, 145, 0.08), 0 2px 4px rgba(11, 61, 145, 0.04);
	--tbp-shadow-lg:   0 12px 24px rgba(15, 23, 42, 0.10), 0 4px 8px rgba(15, 23, 42, 0.06);
	--tbp-shadow-gold: 0 4px 12px rgba(255, 184, 0, 0.25);
	--tbp-shadow-pink: 0 4px 12px rgba(255, 107, 157, 0.20);

	/* --- レイアウト --- */
	--tbp-radius-sm: 4px;
	--tbp-radius-md: 8px;
	--tbp-radius-lg: 12px;
	--tbp-radius-xl: 16px;
	--tbp-radius-pill: 999px;
}

/* 言語別フォント切替（html[lang]） */
html[lang="ja"]    .tbp-cal-root { font-family: var(--tbp-font-ja); }
html[lang^="zh-tw"]  .tbp-cal-root,
html[lang="zh-Hant"] .tbp-cal-root { font-family: var(--tbp-font-tc); }
html[lang="ko"]    .tbp-cal-root { font-family: var(--tbp-font-ko); }
html[lang="en"]    .tbp-cal-root,
html[lang^="en-"]  .tbp-cal-root { font-family: var(--tbp-font-en); }

/* ==========================================================================
   2. ルート・グローバル
   ========================================================================== */

.tbp-cal-root {
	box-sizing: border-box;
	font-family: var(--tbp-font-ja);
	font-size: var(--tbp-fs-base);
	line-height: 1.5;
	color: var(--tbp-text-primary);
	background: var(--tbp-bg);
	max-width: 1200px;
	margin: var(--tbp-sp-6) auto;
	padding: 0;
	border-radius: var(--tbp-radius-xl);
	box-shadow: var(--tbp-shadow-sm);
	overflow: hidden;
	position: relative;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	contain: layout style;
}
.tbp-cal-root *,
.tbp-cal-root *::before,
.tbp-cal-root *::after {
	box-sizing: border-box;
}
.tbp-cal-root button {
	font-family: inherit;
	color: inherit;
	cursor: pointer;
	background: transparent;
	border: 0;
	padding: 0;
}
.tbp-cal-root :focus-visible {
	outline: 3px solid var(--tbp-pink);
	outline-offset: 2px;
	border-radius: var(--tbp-radius-sm);
}

/* スクリーンリーダー用 hidden */
.tbp-cal-announcer {
	position: absolute;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.tbp-cal-noscript {
	padding: var(--tbp-sp-4);
	background: var(--tbp-lv6-bg);
	color: var(--tbp-lv6-text);
	border: 1px solid var(--tbp-lv6-border);
	border-radius: var(--tbp-radius-md);
	margin: var(--tbp-sp-4);
}

/* ==========================================================================
   3. ヘッダー（4-1. 月切替ヘッダー）
   ========================================================================== */

.tbp-cal-header {
	position: sticky;
	top: 0;
	z-index: 30;
	/* 2行構成（2026-05-09 stella要望）：
	   上段＝月切替ナビ（前矢印・年月選択・次矢印）
	   下段＝アクション（今月＋モードトグル）
	   モバイル/PC共通で縦並び維持。 */
	display: grid;
	grid-template-columns: auto 1fr auto;
	grid-template-rows: auto auto;
	row-gap: var(--tbp-sp-2);
	column-gap: var(--tbp-sp-2);
	align-items: center;
	justify-items: center;
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	background: linear-gradient(180deg, #FFFFFF 0%, #F8FAFC 100%);
	border-bottom: 1px solid var(--tbp-border);
	will-change: transform;
}
/* 上段（行1）：左から prev / title-block / next */
.tbp-cal-header .tbp-cal-nav-prev  { grid-row: 1; grid-column: 1; justify-self: end; }
.tbp-cal-header .tbp-cal-title-block { grid-row: 1; grid-column: 2; justify-self: center; }
.tbp-cal-header .tbp-cal-nav-next  { grid-row: 1; grid-column: 3; justify-self: start; }
/* 下段（行2）：今月＋モードトグルを横並び中央寄せ。
   gridの全カラムに横断するラッパが無いため、両者をflex調整で並べる。 */
.tbp-cal-header .tbp-cal-today {
	grid-row: 2;
	grid-column: 1 / 3;
	justify-self: end;
}
.tbp-cal-header .tbp-cal-mode-toggle {
	grid-row: 2;
	grid-column: 3 / 4;
	justify-self: start;
}

.tbp-cal-nav {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: var(--tbp-radius-pill);
	background: var(--tbp-surface);
	color: var(--tbp-navy);
	border: 1px solid var(--tbp-border);
	transition: background-color var(--tbp-dur-fast) var(--tbp-ease-out),
	            color var(--tbp-dur-fast) var(--tbp-ease-out),
	            transform var(--tbp-dur-fast) var(--tbp-ease-out),
	            box-shadow var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-nav:hover {
	background: var(--tbp-navy);
	color: #FFFFFF;
	box-shadow: var(--tbp-shadow-md);
	transform: translateY(-1px);
}
.tbp-cal-nav:active {
	transform: translateY(0);
}
.tbp-cal-nav[disabled],
.tbp-cal-nav[aria-disabled="true"] {
	opacity: 0.4;
	cursor: not-allowed;
	pointer-events: none;
}

.tbp-cal-title-block {
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0;
}
.tbp-cal-month-select-label {
	position: absolute;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
.tbp-cal-title {
	position: relative;
	/* 垂直中央揃え修正（2026-05-09 stella要望）：
	   ホバー時の背景円と文字のズレを解消するため、
	   全子要素を inline-flex の baseline ではなく center で揃える。 */
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--tbp-sp-1);
	padding: var(--tbp-sp-1) var(--tbp-sp-3);
	border-radius: var(--tbp-radius-pill);
	line-height: 1;
	transition: background-color var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-title:hover {
	background: var(--tbp-bg);
}
.tbp-cal-title-text {
	/* h2自身も中央揃えのフレックスにして、テキスト→ベースラインのズレを排除 */
	display: inline-flex;
	align-items: center;
	font-family: var(--tbp-font-num), var(--tbp-font-ja);
	font-size: var(--tbp-fs-xl);
	font-weight: 800;
	line-height: 1;
	color: var(--tbp-text-primary);
	margin: 0;
	letter-spacing: -0.01em;
	pointer-events: none;
	/* Cocoonテーマのh2デフォルト装飾を打ち消す */
	background: none !important;
	border: none !important;
	border-left: none !important;
	padding: 0 !important;
	box-shadow: none !important;
}
.tbp-cal-title-text::before,
.tbp-cal-title-text::after {
	content: none !important;
	display: none !important;
}
.tbp-cal-title::after {
	content: "";
	display: inline-block;
	flex: none;
	width: 0;
	height: 0;
	border-left: 5px solid transparent;
	border-right: 5px solid transparent;
	border-top: 6px solid var(--tbp-text-secondary);
	pointer-events: none;
	/* baselineではなくcenterで揃うように、インライン要素として高さ分だけ持つ */
	align-self: center;
	transition: transform var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-month-select {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	cursor: pointer;
	font-size: var(--tbp-fs-md);
}

.tbp-cal-today {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: var(--tbp-surface);
	color: var(--tbp-navy);
	font-size: var(--tbp-fs-base);
	font-weight: 700;
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-pill);
	transition: background-color var(--tbp-dur-fast) var(--tbp-ease-out),
	            color var(--tbp-dur-fast) var(--tbp-ease-out),
	            border-color var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-today:hover {
	background: var(--tbp-navy);
	color: #FFFFFF;
	border-color: var(--tbp-navy);
}

.tbp-cal-mode-toggle {
	display: inline-flex;
	background: var(--tbp-bg);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-pill);
	padding: 2px;
	gap: 0;
}
.tbp-cal-mode-btn {
	min-height: 40px;
	padding: var(--tbp-sp-1) var(--tbp-sp-3);
	font-size: var(--tbp-fs-base);
	font-weight: 600;
	color: var(--tbp-text-secondary);
	border-radius: var(--tbp-radius-pill);
	transition: background-color var(--tbp-dur-fast) var(--tbp-ease-out),
	            color var(--tbp-dur-fast) var(--tbp-ease-out),
	            box-shadow var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-mode-btn.is-active {
	background: var(--tbp-navy);
	color: #FFFFFF;
	box-shadow: var(--tbp-shadow-sm);
}

/* ==========================================================================
   4. 凡例アコーディオン（4-2.）
   ========================================================================== */

.tbp-cal-legend {
	margin: 0;
	background: var(--tbp-surface);
	border-bottom: 1px solid var(--tbp-border);
}
.tbp-cal-legend-summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--tbp-sp-2);
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	min-height: 44px;
	cursor: pointer;
	list-style: none;
	font-size: var(--tbp-fs-base);
	font-weight: 600;
	color: var(--tbp-text-secondary);
	user-select: none;
}
.tbp-cal-legend-summary::-webkit-details-marker { display: none; }
.tbp-cal-legend-summary::marker { content: ""; }

.tbp-cal-legend-title {
	display: inline-flex;
	align-items: center;
	gap: var(--tbp-sp-2);
}
.tbp-cal-legend-title::before {
	content: "ⓘ";
	font-size: var(--tbp-fs-md);
	color: var(--tbp-navy);
}
.tbp-cal-legend-chevron {
	transition: transform var(--tbp-dur-base) var(--tbp-ease-out);
	color: var(--tbp-text-secondary);
}
.tbp-cal-legend[open] .tbp-cal-legend-chevron {
	transform: rotate(180deg);
}

.tbp-cal-legend-body {
	padding: 0 var(--tbp-sp-4) var(--tbp-sp-4);
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--tbp-sp-4);
}

.tbp-cal-legend-section {
	background: var(--tbp-bg);
	border-radius: var(--tbp-radius-md);
	padding: var(--tbp-sp-3);
}
.tbp-cal-legend-h {
	margin: 0 0 var(--tbp-sp-2);
	font-size: var(--tbp-fs-sm);
	font-weight: 700;
	color: var(--tbp-text-secondary);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}
.tbp-cal-legend-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: var(--tbp-sp-1) var(--tbp-sp-2);
}
.tbp-cal-legend-item {
	display: inline-flex;
	align-items: center;
	gap: var(--tbp-sp-1);
	font-size: var(--tbp-fs-sm);
	color: var(--tbp-text-primary);
	padding: 2px 0;
}
.tbp-cal-legend-emoji {
	font-family: var(--tbp-font-emoji);
	font-size: var(--tbp-fs-md);
	width: 20px;
	display: inline-flex;
	justify-content: center;
}
.tbp-cal-legend-lvl {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px; height: 20px;
	border-radius: 50%;
	font-family: var(--tbp-font-num);
	font-size: var(--tbp-fs-sm);
	font-weight: 700;
	color: #FFFFFF;
}
.tbp-lv-1 .tbp-cal-legend-lvl { background: var(--tbp-lv1-main); color: #14532D; border: 1px solid var(--tbp-lv1-border); }
.tbp-lv-2 .tbp-cal-legend-lvl { background: var(--tbp-lv2-main); }
.tbp-lv-3 .tbp-cal-legend-lvl { background: var(--tbp-lv3-main); }
.tbp-lv-4 .tbp-cal-legend-lvl { background: var(--tbp-lv4-main); color: #FFFFFF; }
.tbp-lv-5 .tbp-cal-legend-lvl { background: var(--tbp-lv5-main); }
.tbp-lv-6 .tbp-cal-legend-lvl { background: var(--tbp-lv6-main); }
.tbp-lv-7 .tbp-cal-legend-lvl { background: var(--tbp-lv7-main); color: #F9FAFB; }

/* v2.5.17: 凡例summary常時チップ帯（stella案C）。行そのものが凡例になり、開くと従来の詳細。
   色はフロント[tbp_today_summary]の凡例チップと同一ペア（サイト内統一） */
.tbp-cal-legend-summary { flex-wrap: wrap; row-gap: 4px; }
.tbp-cal-legend-chips {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px;
	flex: 1 1 auto;
	min-width: 0;
	font-weight: 500;
}
.tbp-lgc {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	font-size: 12px;
	line-height: 1.5;
	padding: 1px 8px;
	border-radius: 9px;
	white-space: nowrap;
}
.tbp-lgc-lv1 { background: #FFFFFF; color: #14532D; border: 1px solid #22C55E; }
.tbp-lgc-lv2 { background: #E1F5EE; color: #085041; }
.tbp-lgc-lv3 { background: #EAF3DE; color: #3B6D11; }
.tbp-lgc-lv4 { background: #FAEEDA; color: #854F0B; }
.tbp-lgc-lv5 { background: #FAECE7; color: #993C1D; }
.tbp-lgc-lv6 { background: #FCEBEB; color: #A32D2D; }
.tbp-lgc-lv7 { background: #1F2937; color: #F9FAFB; }
.tbp-lgc-heat-danger { background: #FCEBEB; color: #A32D2D; }
.tbp-lgc-heat-severe { background: #FAEEDA; color: #854F0B; }
.tbp-cal-legend-more {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	margin-left: auto;
	font-size: 12px;
	font-weight: 500;
	color: var(--tbp-text-secondary);
	white-space: nowrap;
}
.tbp-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* バッジ汎用 */
.tbp-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 18px;
	padding: 0 var(--tbp-sp-1);
	font-family: var(--tbp-font-ja);
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	border-radius: var(--tbp-radius-sm);
	line-height: 1;
}
.tbp-badge-past       { background: var(--tbp-st-past);       color: #FFFFFF; }
.tbp-badge-today      { background: var(--tbp-st-today);      color: var(--tbp-text-primary); }
.tbp-badge-future     { background: var(--tbp-st-future);     color: #FFFFFF; }
.tbp-badge-future-low { background: var(--tbp-st-future-low); color: #FFFFFF; }

/* ==========================================================================
   5. グリッド（4-3. カレンダーグリッド）
   ========================================================================== */

.tbp-cal-grid-wrap {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--tbp-sp-4);
	padding: var(--tbp-sp-4);
}

.tbp-cal-month {
	background: var(--tbp-surface);
	border-radius: var(--tbp-radius-md);
	overflow: hidden;
	border: 1px solid var(--tbp-border);
	display: flex;
	flex-direction: column;
}
.tbp-cal-month-head {
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: linear-gradient(135deg, var(--tbp-bg) 0%, var(--tbp-surface) 100%);
	border-bottom: 1px solid var(--tbp-border);
}
.tbp-cal-month-title {
	margin: 0;
	font-size: var(--tbp-fs-md);
	font-weight: 700;
	color: var(--tbp-text-primary);
	letter-spacing: -0.01em;
	text-align: center;
}

/* グリッド本体 */
.tbp-cal-grid {
	display: flex;
	flex-direction: column;
}
.tbp-cal-row-head {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
	padding: var(--tbp-sp-1) var(--tbp-sp-1);
	background: var(--tbp-bg);
	border-bottom: 1px solid var(--tbp-border);
}
.tbp-cal-cell-head {
	text-align: center;
	font-size: var(--tbp-fs-sm);
	font-weight: 700;
	color: var(--tbp-text-secondary);
	padding: var(--tbp-sp-1) 0;
	letter-spacing: 0.05em;
}
.tbp-cal-cell-head.tbp-dow-sun { color: var(--tbp-dow-sun); }
.tbp-cal-cell-head.tbp-dow-sat { color: var(--tbp-dow-sat); }

.tbp-cal-body {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
	padding: 2px;
}

/* ==========================================================================
   6. セル（4-4. 日セル：5要素）
   ========================================================================== */

.tbp-cal-cell {
	position: relative;
	display: grid;
	grid-template-rows: auto 1fr auto;
	gap: 2px;
	padding: var(--tbp-sp-1);
	min-height: 64px;
	background: var(--tbp-surface);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-sm);
	cursor: pointer;
	transition: transform var(--tbp-dur-base) var(--tbp-ease-out),
	            box-shadow var(--tbp-dur-base) var(--tbp-ease-out),
	            border-color var(--tbp-dur-base) var(--tbp-ease-out);
	overflow: hidden;
	text-align: left;
	width: 100%;
	font-family: inherit;
	font-size: inherit;
	color: inherit;
}
.tbp-cal-cell:hover {
	transform: translateY(-2px);
	box-shadow: var(--tbp-shadow-md);
	z-index: 2;
}
.tbp-cal-cell:active {
	transform: translateY(0);
}

/* 空セル（前後月） */
.tbp-cal-cell.tbp-empty {
	cursor: default;
	background: transparent;
	border-color: transparent;
	pointer-events: none;
}
.tbp-cal-cell.tbp-empty:hover {
	transform: none;
	box-shadow: none;
}

/* 日付ヘッダ */
.tbp-cell-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2px;
	min-height: 18px;
}
.tbp-cell-date {
	font-family: var(--tbp-font-num);
	font-size: var(--tbp-fs-lg);
	font-weight: 700;
	line-height: 1;
	color: var(--tbp-text-primary);
	letter-spacing: -0.02em;
}
.tbp-cal-cell.tbp-dow-sun .tbp-cell-date { color: var(--tbp-dow-sun); }
.tbp-cal-cell.tbp-dow-sat .tbp-cell-date { color: var(--tbp-dow-sat); }
.tbp-cal-cell.tbp-holiday .tbp-cell-date { color: var(--tbp-dow-sun); }

/* 天気部 */
.tbp-cell-weather {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: 1px;
	font-size: var(--tbp-fs-xs);
	line-height: 1;
}
.tbp-cell-weather-emoji {
	font-family: var(--tbp-font-emoji);
	font-size: var(--tbp-fs-sm);
	line-height: 1;
}

/* 混雑度 */
.tbp-cell-level {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 2px;
	flex: 1;
	min-height: 0;
}
.tbp-cell-level-emoji {
	font-family: var(--tbp-font-emoji);
	font-size: 18px;
	line-height: 1;
}
.tbp-cell-level-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 18px;
	height: 18px;
	border-radius: 50%;
	font-family: var(--tbp-font-num);
	font-size: var(--tbp-fs-sm);
	font-weight: 700;
	color: #FFFFFF;
	line-height: 1;
	letter-spacing: 0;
}

/* イベント注記 */
.tbp-cell-event {
	font-size: var(--tbp-fs-xxs);
	font-weight: 600;
	color: var(--tbp-pink);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	line-height: 1.2;
	min-height: 11px;
}

/* 混雑度Lv 5段階：フラット塗り（視認性改善 2026-05-09 stella要望）
 * 旧：白→tint縦グラデ60→100% / 新：濃いめtintフラット
 * WCAG AAA：文字色 Slate 900 (#0F172A) でコントラスト確保
 */
/* v2.5.109: 7段階（白→緑→黄緑→アンバー→オレンジ→赤→黒）。Lv1 は白地＋緑枠（「データなし」との誤読ガード）、Lv7 は黒地・白文字（唯一の反転） */
.tbp-cal-cell.tbp-lv-1 {
	background: #FFFFFF;
	border-color: var(--tbp-lv1-border);
}
.tbp-cal-cell.tbp-lv-1 .tbp-cell-level-num { background: var(--tbp-lv1-main); color: #14532D; border: 1px solid var(--tbp-lv1-border); }

.tbp-cal-cell.tbp-lv-2 {
	background: #BBF7D0;
	border-color: var(--tbp-lv2-border);
}
.tbp-cal-cell.tbp-lv-2 .tbp-cell-level-num { background: var(--tbp-lv2-main); }

.tbp-cal-cell.tbp-lv-3 {
	background: #D9F99D;
	border-color: var(--tbp-lv3-border);
}
.tbp-cal-cell.tbp-lv-3 .tbp-cell-level-num { background: var(--tbp-lv3-main); }

.tbp-cal-cell.tbp-lv-4 {
	background: #FDE68A;
	border-color: var(--tbp-lv4-border);
}
.tbp-cal-cell.tbp-lv-4 .tbp-cell-level-num { background: var(--tbp-lv4-main); color: #FFFFFF; }

.tbp-cal-cell.tbp-lv-5 {
	background: #FED7AA;
	border-color: var(--tbp-lv5-border);
}
.tbp-cal-cell.tbp-lv-5 .tbp-cell-level-num { background: var(--tbp-lv5-main); }

.tbp-cal-cell.tbp-lv-6 {
	background: #FECACA;
	border-color: var(--tbp-lv6-border);
}
.tbp-cal-cell.tbp-lv-6 .tbp-cell-level-num { background: var(--tbp-lv6-main); }

.tbp-cal-cell.tbp-lv-7 {
	background: #1F2937;
	border-color: var(--tbp-lv7-border);
	color: #F9FAFB;
}
.tbp-cal-cell.tbp-lv-7 :where(span, div, small):not(.tbp-jma-chip):not(.tbp-cell-level-num) { color: #F9FAFB; }
.tbp-cal-cell.tbp-lv-7 .tbp-cell-level-num { background: var(--tbp-lv7-main); color: #F9FAFB; border: 1px solid #F9FAFB; }

/* 状態：過去（実）→opacity 0.65 + grayscale */
.tbp-cal-cell.tbp-past {
	opacity: 0.65;
	filter: grayscale(0.4);
}
.tbp-cal-cell.tbp-past:hover {
	opacity: 0.85;
	filter: grayscale(0.2);
}

/* v2.4.26: 休園日（operating_status='closed'）→ グレーアウト＋斜線パターン
 * サーチくん第8回データ品質点検指摘対応：LGL休園日12件が「普通」表示されていた問題解消 */
/* v2.5.87(案A): 斜線をやめ、落ち着いたグレー地＋中央の「🚫 休園日」で一目で伝える
 * （stella 2026-09-01「この休園の表示があまりよくない」→ 案A採用） */
.tbp-cal-cell.tbp-closed {
	background: #eef2f6;
	color: var(--tbp-text-secondary, #475569);
	cursor: pointer;
	opacity: 1;
	border-color: #cbd5e1;
}
.tbp-cal-cell.tbp-closed .tbp-cell-level-num,
.tbp-cal-cell.tbp-closed .tbp-cell-level-emoji {
	display: none;
}
.tbp-cell-closed-mark {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1px;
	flex: 1 1 auto;
	min-height: 0;
	line-height: 1.1;
}
.tbp-cell-closed-icon {
	font-size: 17px;
}
.tbp-cell-closed-text {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #475569;
	white-space: nowrap;
}
.tbp-cal-cell.tbp-closed:hover {
	background: #e2e8f0;
}
.tbp-cal-cell.tbp-closed:focus-visible {
	outline: 2px solid var(--tbp-text-secondary, #475569);
	outline-offset: 2px;
}

/* 状態：今日 → 金色pulse */
.tbp-cal-cell.tbp-today {
	border: 2px solid var(--tbp-gold);
	box-shadow: var(--tbp-shadow-gold);
	animation: tbp-today-pulse 4s ease-in-out 3; /* v2.5.81: 無限→3回で停止（第1弾S-5） */
	z-index: 1;
}
@keyframes tbp-today-pulse {
	0%, 100% { box-shadow: var(--tbp-shadow-gold); }
	50%      { box-shadow: 0 6px 20px rgba(255, 184, 0, 0.45); }
}

/* 状態：未来1ヶ月超（低精度）→ dashed枠 */
.tbp-cal-cell.tbp-future-low {
	border-style: dashed;
	border-color: var(--tbp-border-future);
}

/* 状態バッジをセル内に */
.tbp-cell-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 18px;
	height: 16px;
	padding: 0 var(--tbp-sp-1);
	font-family: var(--tbp-font-ja);
	font-size: var(--tbp-fs-xxs);
	font-weight: 700;
	border-radius: 3px;
	line-height: 1;
	/* v2.5.22: イベントリボン（.tbp-has-event::before z-index:1）より前面に。
	 * 従来はリボンがバッジに重なり「予測」等が部分的に読めない日があった。 */
	position: relative;
	z-index: 2;
	white-space: nowrap;
}
.tbp-past .tbp-cell-badge       { background: var(--tbp-st-past);       color: #FFFFFF; }
.tbp-today .tbp-cell-badge      { background: var(--tbp-st-today);      color: var(--tbp-text-primary); }
.tbp-future .tbp-cell-badge     { background: var(--tbp-st-future);     color: #FFFFFF; }
.tbp-future-low .tbp-cell-badge { background: var(--tbp-st-future-low); color: #FFFFFF; }

/* v2.2.1: イベントリボン（Sakura Pink）拡大
 * 12px→16pxに拡大して「見切れアイコン」ではなく「リボン」として認識しやすく
 */
.tbp-cal-cell.tbp-has-event::before {
	content: "";
	position: absolute;
	top: 0; right: 0;
	width: 0;
	height: 0;
	border-left: 16px solid transparent;
	border-top: 16px solid var(--tbp-pink);
	pointer-events: none;
	z-index: 1;
}

/* v2.5.22: 3ヶ月モードでもステータスバッジを表示（stella指示 2026-08-09）
 * 旧v2.2.1は「セル幅が1/3になり文字が見切れる」ため非表示にしていたが、
 * 凡例チップ帯（v2.5.17）が過去/本日/予測バッジを常時案内するようになり、
 * モードによってバッジが出たり消えたりする方が不整合になった。
 * スマホ（〜640px＝月1列）はセル幅が1ヶ月モードと同じなので通常サイズのまま。
 * 多列レイアウト（641px〜＝月2〜3列・セル幅32〜50px）は縮小チップにし、
 * 日付と並ばない幅のときは折返して日付の下に収める（見切れ防止）。
 */
@media (min-width: 641px) {
	/* セルは display:grid だが列テンプレート未定義のため、暗黙のauto列が
	 * 中身のmax-content（約50px）に広がりセル幅32pxを超える（overflow:hiddenで
	 * バッジが切断される）。3ヶ月モードのみ列をセル幅に固定して折返しを成立させる。
	 * 副次効果：イベント行の省略記号（…）もセル幅位置で正しく付くようになる。 */
	.tbp-cal-grid-wrap[data-mode="3m"] .tbp-cal-cell {
		grid-template-columns: minmax(0, 1fr);
	}
	.tbp-cal-grid-wrap[data-mode="3m"] .tbp-cell-head {
		flex-wrap: wrap;
		min-width: 0;
	}
	.tbp-cal-grid-wrap[data-mode="3m"] .tbp-cell-badge {
		font-size: 8px;
		min-width: 14px;
		height: 13px;
		padding: 0 2px;
	}
	/* v2.5.110: 3か月表示（2〜3列）は顔の下に番号を縦に積む。横並びだと約32px幅のマス目に入らず番号が切れていた（stella指摘 2026-09-05） */
	.tbp-cal-grid-wrap[data-mode="3m"] .tbp-cell-level {
		flex-direction: column;
		gap: 1px;
		min-width: 0;
	}
	.tbp-cal-grid-wrap[data-mode="3m"] .tbp-cell-level-emoji {
		font-size: 13px;
	}
	.tbp-cal-grid-wrap[data-mode="3m"] .tbp-cell-level-num {
		min-width: 14px;
		height: 14px;
		font-size: 8px;
	}
}

/* 祝日下線 */
.tbp-cal-cell.tbp-holiday .tbp-cell-date {
	border-bottom: 2px solid var(--tbp-dow-sun);
	padding-bottom: 1px;
}

/* ==========================================================================
   7. スケルトン（ロード中）
   ========================================================================== */

.tbp-cal-cell.tbp-skeleton {
	background: linear-gradient(90deg, #F1F5F9 0%, #E2E8F0 50%, #F1F5F9 100%);
	background-size: 200% 100%;
	animation: tbp-shimmer 1.4s ease-in-out infinite;
	cursor: default;
	pointer-events: none;
	border-color: transparent;
}
@keyframes tbp-shimmer {
	0%   { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

.tbp-cal-month.tbp-is-loading .tbp-cal-month-head {
	opacity: 0.6;
}

/* ==========================================================================
   8. エラー表示
   ========================================================================== */

.tbp-cal-error {
	padding: var(--tbp-sp-4);
	margin: var(--tbp-sp-2);
	background: #F8FAFC;
	color: var(--tbp-text-primary);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	text-align: center;
}
.tbp-cal-error-msg {
	margin: 0 0 var(--tbp-sp-2);
	font-size: var(--tbp-fs-base);
	font-weight: 600;
}
.tbp-cal-error-retry {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: var(--tbp-sp-2) var(--tbp-sp-4);
	background: var(--tbp-navy);
	color: #FFFFFF;
	font-size: var(--tbp-fs-base);
	font-weight: 700;
	border-radius: var(--tbp-radius-pill);
	transition: background-color var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-error-retry:hover {
	background: var(--tbp-navy-dark);
}

/* ==========================================================================
   9. 詳細モーダル（4-5. dialog要素）
   ========================================================================== */

.tbp-cal-dialog {
	width: min(560px, 92vw);
	max-height: 90vh;
	padding: 0;
	margin: auto;
	border: 0;
	border-radius: var(--tbp-radius-lg);
	background: var(--tbp-surface);
	color: var(--tbp-text-primary);
	box-shadow: var(--tbp-shadow-lg);
	overflow: hidden;
}
.tbp-cal-dialog::backdrop {
	background: rgba(15, 23, 42, 0.55);
	backdrop-filter: blur(2px);
	-webkit-backdrop-filter: blur(2px);
}
.tbp-cal-dialog[open] {
	animation: tbp-modal-in var(--tbp-dur-slow) var(--tbp-ease) forwards;
}
@keyframes tbp-modal-in {
	from { opacity: 0; transform: translateY(20px) scale(0.96); }
	to   { opacity: 1; transform: translateY(0) scale(1); }
}

.tbp-cal-dialog-inner {
	display: flex;
	flex-direction: column;
	max-height: 90vh;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}

.tbp-cal-dialog-close {
	position: absolute;
	top: var(--tbp-sp-2);
	right: var(--tbp-sp-2);
	width: 40px;
	height: 40px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: rgba(255, 255, 255, 0.85);
	color: var(--tbp-text-primary);
	border-radius: 50%;
	z-index: 5;
	transition: background-color var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-dialog-close:hover {
	background: #FFFFFF;
}

/* hero（混雑度色のlinear-gradient 135°） */
.tbp-cal-dialog-hero {
	padding: var(--tbp-sp-6) var(--tbp-sp-4) var(--tbp-sp-4);
	color: #FFFFFF;
	position: relative;
	background: linear-gradient(135deg, var(--tbp-navy) 0%, var(--tbp-navy-dark) 100%);
}
.tbp-cal-dialog[data-tbp-lv="1"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, #86EFAC 0%, #22C55E 100%); }
.tbp-cal-dialog[data-tbp-lv="2"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv2-main) 0%, #15803D 100%); }
.tbp-cal-dialog[data-tbp-lv="3"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv3-main) 0%, #4D7C0F 100%); }
.tbp-cal-dialog[data-tbp-lv="4"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv4-main) 0%, #B45309 100%); }
.tbp-cal-dialog[data-tbp-lv="5"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv5-main) 0%, #C2410C 100%); }
.tbp-cal-dialog[data-tbp-lv="6"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv6-main) 0%, #B91C1C 100%); }
.tbp-cal-dialog[data-tbp-lv="7"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, #374151 0%, #000000 100%); }

.tbp-cal-dialog-hero-date {
	display: flex;
	align-items: baseline;
	gap: var(--tbp-sp-2);
	margin-bottom: var(--tbp-sp-2);
}
.tbp-cal-dialog-hero-md {
	font-family: var(--tbp-font-num);
	font-size: var(--tbp-fs-2xl);
	font-weight: 800;
	letter-spacing: -0.02em;
	line-height: 1;
}
.tbp-cal-dialog-hero-dow {
	font-size: var(--tbp-fs-md);
	font-weight: 600;
	opacity: 0.85;
}

.tbp-cal-dialog-hero-level {
	display: flex;
	align-items: center;
	gap: var(--tbp-sp-2);
	margin-bottom: var(--tbp-sp-2);
}
.tbp-cal-dialog-hero-emoji {
	font-family: var(--tbp-font-emoji);
	font-size: 32px;
	line-height: 1;
}
.tbp-cal-dialog-hero-lvlnum {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 28px;
	height: 28px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.25);
	font-family: var(--tbp-font-num);
	font-size: var(--tbp-fs-md);
	font-weight: 800;
	color: #FFFFFF;
}
.tbp-cal-dialog-hero-lvltext {
	font-size: var(--tbp-fs-md);
	font-weight: 700;
}

.tbp-cal-dialog-hero-title {
	margin: 0;
	font-size: var(--tbp-fs-lg);
	font-weight: 700;
	line-height: 1.3;
	color: rgba(255, 255, 255, 0.92);
}
.tbp-cal-dialog-hero-title:empty { display: none; }

/* stats grid */
.tbp-cal-dialog-stats {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1px;
	background: var(--tbp-border);
	margin: 0;
	padding: 0;
}
.tbp-cal-stat {
	background: var(--tbp-surface);
	padding: var(--tbp-sp-3);
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.tbp-cal-stat-label {
	font-size: var(--tbp-fs-xs);
	font-weight: 600;
	color: var(--tbp-text-secondary);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}
.tbp-cal-stat-value {
	font-family: var(--tbp-font-num), var(--tbp-font-ja);
	font-size: var(--tbp-fs-md);
	font-weight: 700;
	color: var(--tbp-text-primary);
	display: flex;
	align-items: center;
	gap: var(--tbp-sp-1);
}

/* v2.2.2: モーダルが「実予報なし（8日以降）」モードのとき、
   天気・気温の値を淡色化して混雑度との情報差をはっきりさせる */
.tbp-cal-dialog.tbp-cal-dialog--no-weather [data-tbp-dialog-wam],
.tbp-cal-dialog.tbp-cal-dialog--no-weather [data-tbp-dialog-wpm],
.tbp-cal-dialog.tbp-cal-dialog--no-weather [data-tbp-dialog-tmax],
.tbp-cal-dialog.tbp-cal-dialog--no-weather [data-tbp-dialog-tmin] {
	color: var(--tbp-text-secondary);
	font-weight: 500;
	font-size: var(--tbp-fs-sm);
	opacity: 0.7;
}

/* event/basis */
.tbp-cal-dialog-events,
.tbp-cal-dialog-basis {
	padding: var(--tbp-sp-4);
	background: var(--tbp-bg);
}
.tbp-cal-dialog-section-h {
	margin: 0 0 var(--tbp-sp-2);
	font-size: var(--tbp-fs-sm);
	font-weight: 700;
	color: var(--tbp-text-secondary);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}
.tbp-cal-dialog-event-text {
	margin: 0;
	font-size: var(--tbp-fs-base);
	line-height: 1.65;
	color: var(--tbp-text-primary);
}
.tbp-cal-dialog-basis-list {
	margin: 0;
	padding: 0;
	font-size: var(--tbp-fs-sm);
	color: var(--tbp-text-secondary);
	line-height: 1.6;
}

/* === v2.4.7→v2.4.9: 混雑度の根拠 ハイブリッド表示（ベース＋加算明細＋横棒グラフ＋折りたたみ） === */

/* v2.4.9: 折りたたみコンテナ（要因数が4以上の時に有効） */
.tbp-basis-details {
	margin: 0;
}

.tbp-basis-details > summary {
	cursor: pointer;
	list-style: none;
	padding: 10px 12px;
	background: #fef3c7;
	border-top: 2px solid #f59e0b;
	border-radius: 4px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	font-weight: bold;
	margin-bottom: 8px;
	transition: background-color 0.2s ease;
}

.tbp-basis-details > summary:hover {
	background: #fde68a;
}

.tbp-basis-details > summary::-webkit-details-marker {
	display: none;
}

.tbp-basis-details > summary::before {
	content: '▶';
	display: inline-block;
	font-size: 11px;
	color: #d97706;
	transition: transform 0.2s ease;
	margin-right: 4px;
}

.tbp-basis-details[open] > summary::before {
	transform: rotate(90deg);
}

.tbp-basis-summary-meta {
	font-size: 13px;
	color: #555;
	font-weight: 500;
	flex: 1;
}

.tbp-basis-summary-total {
	font-size: 14px;
	color: #d97706;
	white-space: nowrap;
}

.tbp-basis-summary-num {
	font-weight: bold;
	font-size: 16px;
}

.tbp-basis-details[open] > summary {
	margin-bottom: 4px;
}

.tbp-basis-table {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.tbp-basis-row {
	display: grid;
	grid-template-columns: minmax(120px, 1fr) minmax(60px, 2fr) 60px;
	gap: 10px;
	align-items: center;
	padding: 6px 12px; /* v2.4.114: 右端の数値が詰まって見える問題の緩和（stella指摘 2026-07-10） */
	font-size: 13px;
	border-radius: 4px;
	background: #fafafa;
}

.tbp-basis-label {
	color: #333;
	font-weight: 500;
	line-height: 1.4;
}

/* v2.4.8: .tbp-basis-est / .tbp-basis-tag は廃止（推定マーク・最大要因タグ削除） */

.tbp-basis-bar-wrap {
	height: 14px;
	background: #f0f0f0;
	border-radius: 3px;
	overflow: hidden;
}

.tbp-basis-bar {
	display: block;
	height: 100%;
	border-radius: 3px;
	background: #4a90d9;
	transition: width 0.3s ease;
	min-width: 4px;
}

.tbp-basis-value {
	text-align: right;
	font-weight: bold;
	color: #222;
	font-size: 13px;
	white-space: nowrap;
}

/* ベース行 */
.tbp-basis-base {
	background: #f5f5f5;
}
.tbp-basis-base .tbp-basis-bar {
	background: #888;
}

/* カテゴリ別色 */
.tbp-basis-weekday .tbp-basis-bar { background: #4a90d9; }
.tbp-basis-holiday .tbp-basis-bar { background: #f59e0b; }
.tbp-basis-inbound .tbp-basis-bar { background: #ec4899; }
.tbp-basis-anniversary .tbp-basis-bar { background: #a855f7; }
.tbp-basis-event .tbp-basis-bar { background: #10b981; }
.tbp-basis-local .tbp-basis-bar { background: #06b6d4; }
.tbp-basis-weather .tbp-basis-bar { background: #6366f1; }
.tbp-basis-other .tbp-basis-bar { background: #94a3b8; }

/* マイナス値（金曜-0.3 等） */
.tbp-basis-negative .tbp-basis-bar { background: #94a3b8 !important; }
.tbp-basis-negative .tbp-basis-value { color: #6b7280; }

/* v2.4.8: .tbp-basis-max は廃止（最大要因ハイライト削除） */

/* 合計行 */
.tbp-basis-total {
	background: #fef3c7;
	border-top: 2px solid #f59e0b;
	margin-top: 4px;
	font-weight: bold;
}
.tbp-basis-total .tbp-basis-bar-wrap {
	background: transparent;
}
.tbp-basis-total .tbp-basis-bar--full {
	width: 100%;
	background: linear-gradient(90deg, #888 0%, #4a90d9 25%, #f59e0b 50%, #ec4899 75%, #a855f7 100%);
}
.tbp-basis-total .tbp-basis-value {
	color: #d97706;
	font-size: 14px;
}
/* v2.4.114: 合計行の「4.91 → Lv 3」が固定60px列からはみ出していた（見切れ・stella指摘 2026-07-10）。
   合計行だけ数値列を内容幅に合わせる（通常行は短い数値のみで60px固定のまま＝バー位置が揃う） */
.tbp-basis-total {
	grid-template-columns: minmax(100px, 1fr) minmax(30px, 1fr) auto;
}

/* v2.4.114: 毎朝の学習補正行（実測との答え合わせ）の色 */
.tbp-basis-correction .tbp-basis-bar { background: #14b8a6; }

/* v2.4.114: フロア/祝日/過去日の注記 */
.tbp-basis-note {
	margin: 6px 2px 0;
	font-size: 12px;
	color: #64748b;
	line-height: 1.5;
}
.tbp-basis-note--past {
	margin: 0 2px 8px;
}

/* v2.4.114の参考グループ（.tbp-basis-ref）は v2.4.117 で表示廃止に伴い削除（stella指示 2026-07-10） */

/* v2.4.8: .tbp-basis-note は廃止（断定的な最大要因コメント削除） */

/* スマホ対応 */
@media (max-width: 480px) {
	.tbp-basis-row {
		grid-template-columns: minmax(90px, 1fr) minmax(50px, 1.5fr) 50px;
		gap: 6px;
		padding: 5px 8px;
		font-size: 12px;
	}
	.tbp-basis-value {
		font-size: 12px;
	}
	/* v2.4.114: スマホでも合計行の数値列は内容幅（「4.91 → Lv 3」の見切れ防止） */
	.tbp-basis-total {
		grid-template-columns: minmax(70px, 1fr) minmax(20px, 1fr) auto;
	}
}

/* footer (prev/next) */
.tbp-cal-dialog-footer {
	display: flex;
	gap: var(--tbp-sp-2);
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	border-top: 1px solid var(--tbp-border);
	background: var(--tbp-surface);
}
.tbp-cal-dialog-prev,
.tbp-cal-dialog-next {
	flex: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--tbp-sp-1);
	min-height: 44px;
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: var(--tbp-bg);
	color: var(--tbp-navy);
	font-size: var(--tbp-fs-base);
	font-weight: 700;
	border-radius: var(--tbp-radius-pill);
	border: 1px solid var(--tbp-border);
	transition: background-color var(--tbp-dur-fast) var(--tbp-ease-out),
	            color var(--tbp-dur-fast) var(--tbp-ease-out);
}
.tbp-cal-dialog-prev:hover,
.tbp-cal-dialog-next:hover {
	background: var(--tbp-navy);
	color: #FFFFFF;
}

/* ==========================================================================
   10. アニメーション（月切替slide）
   ========================================================================== */

.tbp-cal-month.tbp-is-leaving-left  { animation: tbp-slide-out-left  var(--tbp-dur-base) var(--tbp-ease-out) forwards; }
.tbp-cal-month.tbp-is-leaving-right { animation: tbp-slide-out-right var(--tbp-dur-base) var(--tbp-ease-out) forwards; }
.tbp-cal-month.tbp-is-entering-left  { animation: tbp-slide-in-left  var(--tbp-dur-base) var(--tbp-ease-out) forwards; }
.tbp-cal-month.tbp-is-entering-right { animation: tbp-slide-in-right var(--tbp-dur-base) var(--tbp-ease-out) forwards; }

@keyframes tbp-slide-out-left  { from { opacity: 1; transform: translateX(0); }    to { opacity: 0; transform: translateX(-24px); } }
@keyframes tbp-slide-out-right { from { opacity: 1; transform: translateX(0); }    to { opacity: 0; transform: translateX(24px); } }
@keyframes tbp-slide-in-left   { from { opacity: 0; transform: translateX(24px); }  to { opacity: 1; transform: translateX(0); } }
@keyframes tbp-slide-in-right  { from { opacity: 0; transform: translateX(-24px); } to { opacity: 1; transform: translateX(0); } }

@keyframes tbp-fade-in {
	from { opacity: 0; }
	to   { opacity: 1; }
}
.tbp-cal-month.tbp-is-loaded .tbp-cal-body {
	animation: tbp-fade-in var(--tbp-dur-base) var(--tbp-ease-out);
}

/* ==========================================================================
   11. レスポンシブ
   ========================================================================== */

/* mobile（≤640px） */
@media (max-width: 640px) {
	.tbp-cal-root {
		margin: var(--tbp-sp-3) 0;
		border-radius: 0;
	}
	.tbp-cal-header {
		/* 基本ルールの2行構成を踏襲し、モバイル向けに余白だけ詰める。
		   行1=prev/title/next、行2=today/mode-toggle はそのまま。 */
		row-gap: var(--tbp-sp-1);
		column-gap: var(--tbp-sp-1);
		padding: var(--tbp-sp-2) var(--tbp-sp-3);
	}
	.tbp-cal-title-text { font-size: var(--tbp-fs-lg); }
	.tbp-cal-grid-wrap { padding: var(--tbp-sp-2); gap: var(--tbp-sp-3); max-width: 100%; overflow-x: hidden; }
	.tbp-cal-grid-wrap[data-mode="3m"] { grid-template-columns: 1fr; }
	.tbp-cal-grid,
	.tbp-cal-body,
	.tbp-cal-row,
	.tbp-cal-cell {
		min-width: 0;
	}
	.tbp-cell-event {
		white-space: normal;
		overflow-wrap: anywhere;
	}
	.tbp-cal-dialog {
		width: min(100vw - 16px, 560px);
		max-height: calc(100dvh - 16px);
	}
	.tbp-cal-dialog-inner {
		max-height: calc(100dvh - 16px);
	}
	.tbp-cal-dialog-hero {
		padding: var(--tbp-sp-5) var(--tbp-sp-4) var(--tbp-sp-4);
	}
	/* v2.5.14: 3パーク共通CTAボタンはスマホ幅でも「ピル｜パーク名｜矢印」の1行構成を維持する。
	   旧 flex-wrap: wrap は名前が長いUSJだけ縦積みに崩れ他パークと見た目がズレた（stella報告 2026-07-24）。
	   縮小・折り返しは名前spanのみに限定（keep-all＋PHP側の文節<wbr>で単語途中の改行を回避、
	   overflow-wrap:anywhere は超狭幅ではみ出さないための保険）。
	   v2.5.15: TDL/TDS切替ボタン（park-switch / fujiq-switch）にも同じ折り返し規律を拡張
	   （富士急ページ等の狭い列で「東京ディズニーラン｜ド」と単語途中で改行していたため）。 */
	.tbp-legoland-cta__btn,
	.tbp-usj-cta__btn,
	.tbp-fujiq-cta__btn {
		width: 100%;
		justify-content: center;
		flex-wrap: nowrap;
		text-align: center;
	}
	.tbp-legoland-cta__btn-pill,
	.tbp-usj-cta__btn-pill,
	.tbp-fujiq-cta__btn-pill,
	.tbp-park-switch-cta__btn-pill,
	.tbp-fujiq-switch-cta__btn-pill {
		flex: 0 0 auto;
	}
	.tbp-legoland-cta__btn-name,
	.tbp-usj-cta__btn-name,
	.tbp-fujiq-cta__btn-name,
	.tbp-park-switch-cta__btn-name,
	.tbp-fujiq-switch-cta__btn-name {
		flex: 0 1 auto;
		min-width: 0;
		word-break: keep-all;
		overflow-wrap: anywhere;
	}
	.tbp-legoland-cta__btn svg,
	.tbp-usj-cta__btn svg,
	.tbp-fujiq-cta__btn svg,
	.tbp-park-switch-cta__btn svg,
	.tbp-fujiq-switch-cta__btn svg {
		flex: 0 0 auto;
	}
}

/* tablet（641-1023px） */
@media (min-width: 641px) and (max-width: 1023px) {
	.tbp-cal-cell { min-height: 76px; }
	.tbp-cal-grid-wrap[data-mode="3m"] { grid-template-columns: 1fr 1fr; }
	.tbp-cell-date { font-size: 20px; }
}

/* desktop（≥1024px） */
@media (min-width: 1024px) {
	.tbp-cal-cell { min-height: 84px; }
	.tbp-cal-grid-wrap[data-mode="3m"] { grid-template-columns: 1fr 1fr 1fr; }
	.tbp-cal-grid-wrap { padding: var(--tbp-sp-5); }
	.tbp-cell-date { font-size: 20px; }
	.tbp-cell-level-emoji { font-size: 22px; }
	/* v2.5.17: 暑さ指数セクション追加で3→4列（auto-fitで中間幅は2×2に自然折返し） */
	.tbp-cal-legend-body { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
}

/* 大画面（≥1280px） 1ヶ月モード */
@media (min-width: 1280px) {
	.tbp-cal-grid-wrap[data-mode="1m"] {
		max-width: 960px;
		margin: 0 auto;
	}
}

/* iPhone SE等（≤380px） */
@media (max-width: 380px) {
	.tbp-cal-cell { min-height: 56px; padding: 3px; }
	.tbp-cell-date { font-size: 14px; }
	.tbp-cell-level-emoji { font-size: 14px; }
	.tbp-cell-level-num { min-width: 16px; height: 16px; font-size: 9px; }
	.tbp-cell-event { font-size: 8px; }
	.tbp-cell-weather-emoji { font-size: 9px; }
	.tbp-cell-badge { font-size: 8px; min-width: 16px; height: 14px; }
	.tbp-cal-cell.tbp-has-event::before {
		border-left-width: 9px;
		border-top-width: 9px;
	}
	.tbp-cal-month-title { font-size: var(--tbp-fs-base); }
	.tbp-cal-title-text { font-size: var(--tbp-fs-md); }
	.tbp-cal-header { padding: var(--tbp-sp-2); }
	.tbp-cal-nav { width: 40px; height: 40px; }
	.tbp-cal-dialog {
		width: min(100vw - 8px, 560px);
	}
	.tbp-cal-dialog-hero-md {
		font-size: 24px;
	}
	.tbp-cal-dialog-footer {
		gap: var(--tbp-sp-1);
		padding: var(--tbp-sp-2);
	}
	.tbp-cal-dialog-prev,
	.tbp-cal-dialog-next {
		padding: var(--tbp-sp-2);
		font-size: 12px;
	}
}

/* ==========================================================================
   12. アクセシビリティ：prefers-reduced-motion
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	.tbp-cal-root *,
	.tbp-cal-root *::before,
	.tbp-cal-root *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
	.tbp-cal-cell.tbp-today { animation: none; }
}

/* ==========================================================================
   13. プリント
   ========================================================================== */

@media print {
	.tbp-cal-header,
	.tbp-cal-mode-toggle,
	.tbp-cal-today,
	.tbp-cal-nav,
	.tbp-cal-dialog,
	.tbp-cal-error-retry {
		display: none !important;
	}
	.tbp-cal-root {
		box-shadow: none;
		border: 1px solid #000;
		page-break-inside: avoid;
	}
	.tbp-cal-cell {
		border: 1px solid #999 !important;
		break-inside: avoid;
	}
	.tbp-cal-cell.tbp-today { animation: none !important; }
}

/* ==========================================================================
   14. ハイコントラスト（forced-colors）対応
   ========================================================================== */

@media (forced-colors: active) {
	.tbp-cal-cell {
		border: 1px solid CanvasText;
	}
	.tbp-cal-cell.tbp-today {
		outline: 3px solid Highlight;
	}
	.tbp-badge,
	.tbp-cell-badge,
	.tbp-cell-level-num {
		forced-color-adjust: none;
	}
}

/* ==========================================================================
   15. 多言語微調整
   ========================================================================== */

.tbp-cell-event {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
html[lang="ko"] .tbp-cell-date { letter-spacing: -0.02em; }
html[lang^="zh-tw"] .tbp-cell-event,
html[lang="zh-Hant"] .tbp-cell-event { font-feature-settings: "palt"; }

/* font-display: swap は wp_register_script 側 + フォントローダで対応するが、
   念のためここでも明示。 */
@supports (font-display: swap) {
	.tbp-cal-root { font-display: swap; }
}

/* ==========================================================================
   16. Cocoon自動目次の非表示（カレンダーページ）
   --------------------------------------------------------------------------
   shortcode を含むページでは目次を表示しない。
   カレンダー内 h3 を Cocoon TOC が拾って意味不明な目次を生成する問題への対応。
   複数セレクタで包括的にカバー（CocoonのTOC実装に依存しない）。
   :has() は Safari 15.4+, Chrome 105+, Firefox 121+ で対応。
   ========================================================================== */

.crowd-calendar-2026-06 .toc,
body.page-id-26 .toc,
.toc:has(+ .tbp-cal-root),
body:has(.tbp-cal-root) .toc {
	display: none !important;
}

/* ==========================================================================
   17. テーマh2/h3デフォルト装飾の打ち消し（カレンダー内のみ）
   --------------------------------------------------------------------------
   Cocoon等のテーマがh2/h3にリボン・背景・border-leftを付ける場合の保険。
   `.tbp-cal-title::after` は h2 ではなく div に付与しているため、
   このセレクタの影響を受けない（ドロップダウン矢印は維持される）。
   ========================================================================== */

.tbp-cal-root h2,
.tbp-cal-root h3,
.tbp-cal-root h4 {
	background: none !important;
	border: none !important;
	border-left: none !important;
	padding: 0 !important;
	box-shadow: none !important;
}
.tbp-cal-root h2::before,
.tbp-cal-root h2::after,
.tbp-cal-root h3::before,
.tbp-cal-root h3::after,
.tbp-cal-root h4::before,
.tbp-cal-root h4::after {
	content: none !important;
	display: none !important;
}

/* ==========================================================================
   予想・変動注意バナー（D1仕様 v1 / 2026-05-09）
   配置：.tbp-cal-root の最初の子要素（ヘッダー直上）
   要件：常時表示・折りたたみ不可・×ボタン禁止
   ========================================================================== */
.tbp-cal-disclaimer {
	display: flex;
	align-items: flex-start;
	gap: var(--tbp-sp-2);
	margin: 0 0 var(--tbp-sp-3) 0;
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	background: var(--tbp-lv4-bg);
	border-left: 4px solid var(--tbp-gold);
	border-radius: var(--tbp-radius-md);
	box-shadow: var(--tbp-shadow-xs);
	font-family: var(--tbp-font-ja);
	/* 4言語切替時は html[lang="*"] body 側で上書き済み */
}

.tbp-cal-disclaimer-icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	margin-top: 2px;
	color: var(--tbp-gold-dark);
}

.tbp-cal-disclaimer-body {
	flex: 1 1 auto;
	min-width: 0;
}

.tbp-cal-disclaimer-title {
	margin: 0 0 var(--tbp-sp-1) 0;
	font-size: var(--tbp-fs-base);   /* 13px */
	font-weight: 700;
	line-height: 1.45;
	color: var(--tbp-lv4-text);      /* #78350F */
}

.tbp-cal-disclaimer-text {
	margin: 0;
	font-size: 12px; /* v2.4.118: 11px→12px（stella GO 2026-07-11「文字が小さすぎる」読みやすさ統一） */
	font-weight: 400;
	line-height: 1.55;
	color: var(--tbp-text-soft);     /* #4A5169 */
}

/* v2.2.2: 天気予報範囲についての補足行 */
/* v2.4.118: 10.5px→12px・薄め指定（opacity）解除（読める濃さに・stella GO 2026-07-11） */
.tbp-cal-disclaimer-text--weather {
	margin-top: 4px;
	padding-top: 4px;
	border-top: 1px dashed rgba(0, 0, 0, 0.08);
	font-size: 12px;
	color: var(--tbp-text-soft);
}

.tbp-cal-disclaimer-link {
	color: var(--tbp-navy);
	text-decoration: underline;
	text-underline-offset: 2px;
	text-decoration-thickness: 1px;
}

.tbp-cal-disclaimer-link:hover,
.tbp-cal-disclaimer-link:focus-visible {
	color: var(--tbp-navy-dark);
	text-decoration-thickness: 2px;
}

.tbp-cal-disclaimer-link:focus-visible {
	outline: 2px solid var(--tbp-navy);
	outline-offset: 2px;
	border-radius: 2px;
}

/* v2.4.104: 予測精度スコアの時間軸ガイド（信頼度）。表示のみ・既存注記は不変・テーマ非依存 */
.tbp-cal-accuracy-horizon {
	margin: var(--tbp-sp-2) 0 0 0;
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: rgba(255, 255, 255, 0.55);
	border: 1px solid rgba(120, 53, 15, 0.14);
	border-radius: var(--tbp-radius-md);
}
.tbp-cal-accuracy-horizon-lead {
	margin: 0 0 var(--tbp-sp-2) 0;
	font-size: 12px; /* v2.4.118: 11px→12px（読みやすさ統一・stella GO 2026-07-11） */
	font-weight: 400;
	line-height: 1.55;
	color: var(--tbp-lv4-text);
}
.tbp-cal-accuracy-horizon-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--tbp-sp-1);
}
.tbp-cal-accuracy-horizon-row {
	padding: 6px 8px;
	background: rgba(255, 255, 255, 0.62);
	border: 1px solid rgba(0, 0, 0, 0.06);
	border-radius: var(--tbp-radius-sm);
}
.tbp-cal-accuracy-horizon-head {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 2px 0;
}
.tbp-cal-accuracy-horizon-label {
	font-size: 12px;
	font-weight: 700;
	color: var(--tbp-text-primary);
}
.tbp-cal-accuracy-horizon-stars {
	font-size: 12px; /* v2.4.118: 11.5px→12px */
	color: var(--tbp-text-soft);
	white-space: nowrap;
}
.tbp-cal-accuracy-horizon-stars .tbp-star-on {
	color: var(--tbp-gold-dark);
	letter-spacing: 1px;
}
.tbp-cal-accuracy-horizon-stars .tbp-star-off {
	color: rgba(0, 0, 0, 0.22);
	letter-spacing: 1px;
}
.tbp-cal-accuracy-horizon-note {
	display: block;
	font-size: 12px; /* v2.4.118: 10.5px→12px（ガイド説明文の読みやすさ・stella GO 2026-07-11） */
	font-weight: 400;
	line-height: 1.5;
	color: var(--tbp-text-soft);
}
@media (max-width: 640px) {
	.tbp-cal-accuracy-horizon {
		padding: var(--tbp-sp-2);
	}
	.tbp-cal-accuracy-horizon-label {
		font-size: 12px; /* v2.4.118: 11.5px→12px（スマホでも12px維持） */
	}
}

/* ===== レスポンシブ ===== */
@media (max-width: 640px) {
	.tbp-cal-disclaimer {
		padding: var(--tbp-sp-2) var(--tbp-sp-3);
		gap: var(--tbp-sp-2);
		border-left-width: 3px;
	}
	.tbp-cal-disclaimer-title {
		font-size: var(--tbp-fs-base);  /* 13px維持・本文だけ縮小 */
	}
	.tbp-cal-disclaimer-text {
		font-size: var(--tbp-fs-sm);    /* 11px維持 */
		line-height: 1.6;               /* スマホでやや広めに */
	}
	.tbp-cal-disclaimer-icon {
		width: 18px;
		height: 18px;
	}
}

@media (min-width: 1024px) {
	.tbp-cal-disclaimer {
		padding: var(--tbp-sp-3) var(--tbp-sp-5);
	}
}

/* ===== ハイコントラストモード ===== */
@media (prefers-contrast: more) {
	.tbp-cal-disclaimer {
		border-left-width: 6px;
		background: #FFF8DC;
		box-shadow: none;
		outline: 1px solid var(--tbp-gold-dark);
	}
	.tbp-cal-disclaimer-title { color: #5A2800; }
	.tbp-cal-disclaimer-text { color: #1A1A1A; }
}

/* ===== prefers-reduced-motion ===== */
@media (prefers-reduced-motion: reduce) {
	.tbp-cal-disclaimer-link {
		transition: none;
	}
}

/* ===== ダークモード（将来対応・現状ライト固定だが布石） ===== */
@media (prefers-color-scheme: dark) {
	/* サイト全体がダーク対応した時に有効化。現状コメントアウト維持。 */
	/*
	.tbp-cal-disclaimer {
		background: rgba(255, 184, 0, 0.10);
		border-left-color: var(--tbp-gold);
	}
	.tbp-cal-disclaimer-title { color: #FCD34D; }
	.tbp-cal-disclaimer-text { color: #E2E8F0; }
	*/
}

/* ===== 印刷時 ===== */
@media print {
	.tbp-cal-disclaimer {
		background: transparent;
		border: 1px solid #999;
		box-shadow: none;
		page-break-inside: avoid;
	}
	.tbp-cal-disclaimer-link {
		color: #000;
		text-decoration: underline;
	}
	/* リンク先URLを印刷時に表示 */
	.tbp-cal-disclaimer-link::after {
		content: " (" attr(href) ")";
		font-size: 9px;
		color: #555;
	}
}

/* ==========================================================================
   v1.2 パーク別テーマカラー（TDL=ピンク系 / TDS=ブルー系）
   --------------------------------------------------------------------------
   ルートクラス .tbp-park-tdl / .tbp-park-tds を切り替えるだけで
   ヘッダー帯・disclaimerのアクセントカラーが変わる軽量カスタマイズ。
   セル本体のレベル別色（lv-1〜5）は変えない（情報の可読性を最優先）。
   ========================================================================== */

/* TDL: ピンクアクセント（控えめ） */
.tbp-cal-root.tbp-park-tdl {
	--tbp-park-accent: #FF6B9D;       /* メイン: TDL Pink */
	--tbp-park-accent-dark: #D14F7A;
	--tbp-park-accent-soft: #FFE4EE;
}

.tbp-cal-root.tbp-park-tdl .tbp-cal-header {
	background: linear-gradient(180deg, #FFFFFF 0%, var(--tbp-park-accent-soft) 100%);
	border-bottom-color: var(--tbp-park-accent);
}
.tbp-cal-root.tbp-park-tdl .tbp-cal-disclaimer {
	border-left-color: var(--tbp-park-accent);
	background: var(--tbp-park-accent-soft);
}
.tbp-cal-root.tbp-park-tdl .tbp-cal-disclaimer-icon {
	color: var(--tbp-park-accent-dark);
}
.tbp-cal-root.tbp-park-tdl .tbp-cal-disclaimer-title {
	color: var(--tbp-park-accent-dark);
}

/* TDS: スカイブルー・アクセント（控えめ） */
.tbp-cal-root.tbp-park-tds {
	--tbp-park-accent: #0EA5E9;       /* メイン: TDS Sky Blue */
	--tbp-park-accent-dark: #0369A1;
	--tbp-park-accent-soft: #E0F2FE;
}

.tbp-cal-root.tbp-park-tds .tbp-cal-header {
	background: linear-gradient(180deg, #FFFFFF 0%, var(--tbp-park-accent-soft) 100%);
	border-bottom-color: var(--tbp-park-accent);
}
.tbp-cal-root.tbp-park-tds .tbp-cal-disclaimer {
	border-left-color: var(--tbp-park-accent);
	background: var(--tbp-park-accent-soft);
}
.tbp-cal-root.tbp-park-tds .tbp-cal-disclaimer-icon {
	color: var(--tbp-park-accent-dark);
}
.tbp-cal-root.tbp-park-tds .tbp-cal-disclaimer-title {
	color: var(--tbp-park-accent-dark);
}

/* v2.3.0: LGL（レゴランド・ジャパン）アボカドグリーン・アクセント */
.tbp-cal-root.tbp-park-lgl {
	--tbp-park-accent: #7FC242;        /* メイン: アボカドグリーン */
	--tbp-park-accent-dark: #4F8A1F;
	--tbp-park-accent-soft: #EAF5D8;
}

.tbp-cal-root.tbp-park-lgl .tbp-cal-header {
	background: linear-gradient(180deg, #FFFFFF 0%, var(--tbp-park-accent-soft) 100%);
	border-bottom-color: var(--tbp-park-accent);
}
.tbp-cal-root.tbp-park-lgl .tbp-cal-disclaimer {
	border-left-color: var(--tbp-park-accent);
	background: var(--tbp-park-accent-soft);
}
.tbp-cal-root.tbp-park-lgl .tbp-cal-disclaimer-icon {
	color: var(--tbp-park-accent-dark);
}
.tbp-cal-root.tbp-park-lgl .tbp-cal-disclaimer-title {
	color: var(--tbp-park-accent-dark);
}
/* v2.3.0: LGL 非公式サイト注記の控えめ表示 */
.tbp-cal-root.tbp-park-lgl .tbp-cal-disclaimer-unofficial {
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px dashed var(--tbp-park-accent-dark);
	font-size: 12px;
	line-height: 1.5;
	color: var(--tbp-park-accent-dark);
	opacity: 0.92;
}

/* v2.4.0: USJ（ユニバーサル・スタジオ・ジャパン）シトラスマリーゴールド・アクセント */
.tbp-cal-root.tbp-park-usj {
	--tbp-park-accent: #E8902A;        /* メイン: シトラスマリーゴールド */
	--tbp-park-accent-dark: #B8730F;
	--tbp-park-accent-soft: #FFE8C9;
}

.tbp-cal-root.tbp-park-usj .tbp-cal-header {
	background: linear-gradient(180deg, #FFFFFF 0%, var(--tbp-park-accent-soft) 100%);
	border-bottom-color: var(--tbp-park-accent);
}
.tbp-cal-root.tbp-park-usj .tbp-cal-disclaimer {
	border-left-color: var(--tbp-park-accent);
	background: var(--tbp-park-accent-soft);
}
.tbp-cal-root.tbp-park-usj .tbp-cal-disclaimer-icon {
	color: var(--tbp-park-accent-dark);
}
.tbp-cal-root.tbp-park-usj .tbp-cal-disclaimer-title {
	color: var(--tbp-park-accent-dark);
}
/* v2.4.0: USJ 非公式サイト注記の控えめ表示 */
.tbp-cal-root.tbp-park-usj .tbp-cal-disclaimer-unofficial {
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px dashed var(--tbp-park-accent-dark);
	font-size: 12px;
	line-height: 1.5;
	color: var(--tbp-park-accent-dark);
	opacity: 0.92;
}

/* v2.5.0: FJQ（富士急ハイランド）ラベンダー・アクセント */
.tbp-cal-root.tbp-park-fjq {
	--tbp-park-accent: #8B5CF6;
	--tbp-park-accent-dark: #6D28D9;
	--tbp-park-accent-soft: #EDE9FE;
}

.tbp-cal-root.tbp-park-fjq .tbp-cal-header {
	background: linear-gradient(180deg, #FFFFFF 0%, var(--tbp-park-accent-soft) 100%);
	border-bottom-color: var(--tbp-park-accent);
}
.tbp-cal-root.tbp-park-fjq .tbp-cal-disclaimer {
	border-left-color: var(--tbp-park-accent);
	background: var(--tbp-park-accent-soft);
}
.tbp-cal-root.tbp-park-fjq .tbp-cal-disclaimer-icon {
	color: var(--tbp-park-accent-dark);
}
.tbp-cal-root.tbp-park-fjq .tbp-cal-disclaimer-title {
	color: var(--tbp-park-accent-dark);
}
.tbp-cal-root.tbp-park-fjq .tbp-cal-disclaimer-unofficial {
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px dashed var(--tbp-park-accent-dark);
	font-size: 12px;
	line-height: 1.5;
	color: var(--tbp-park-accent-dark);
	opacity: 0.92;
}

/* ========================================================================== 
   v2.4.6 パートナー予約サービスCTA（4社ホテル比較 + Klookチケット・控えめデザイン）
   ========================================================================== */
.tbp-cal-root .tbp-cal-partner-cta {
	margin: 24px 0 16px;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}

@media (max-width: 600px) {
	.tbp-cal-root .tbp-cal-partner-cta {
		grid-template-columns: 1fr;
	}
}

.tbp-cal-root .tbp-cal-partner-cta-box {
	padding: 14px 16px;
	background: #fdfdfb;
	border: 1px solid #e5e3dc;
	border-radius: 6px;
}

/* v2.4.6: 行動誘導イントロ（A+Eハイブリッド・grid全幅で配置） */
.tbp-cal-root .tbp-cal-partner-cta-intro {
	grid-column: 1 / -1;
	margin: 0 0 8px;
	padding: 12px 16px;
	background: #faf8f3;
	border-left: 3px solid #8b7e5a;
	border-radius: 4px;
	font-size: 13px;
	color: #5d4f30;
	line-height: 1.7;
	text-align: center;
}

.tbp-cal-root .tbp-cal-partner-cta-intro-supplement {
	display: inline-block;
	margin-top: 4px;
	font-size: 12px;
	color: #6b6353;
	font-weight: 500;
}

/* v2.4.6: Klookチケット言語注記（intro 内に統合・3行目・小さく控えめ） */
.tbp-cal-root .tbp-cal-partner-cta-intro-notice {
	display: block;
	margin-top: 8px;
	padding-top: 6px;
	border-top: 1px dashed #d8d4ca;
	font-size: 11px;
	color: #888;
	line-height: 1.5;
}

.tbp-cal-root .tbp-cal-partner-cta-intro-notice strong {
	color: #6b6353;
	font-weight: 600;
}

.tbp-cal-root .tbp-cal-partner-cta-label {
	margin: 0 0 4px;
	font-size: 11px;
	color: #6b6353;
	letter-spacing: 0.03em;
	font-weight: 700;
	text-align: center; /* v2.4.6: stella指示・文字中央寄せ */
}

.tbp-cal-root .tbp-cal-partner-cta-note {
	margin: 0 0 10px;
	font-size: 11px;
	color: #888;
	text-align: center; /* v2.4.6: stella指示・文字中央寄せ */
}

.tbp-cal-root .tbp-cal-partner-cta-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tbp-cal-root .tbp-cal-partner-cta-list li {
	margin: 0 0 6px;
	padding: 0;
}

.tbp-cal-root .tbp-cal-partner-cta-list li:last-child {
	margin-bottom: 0;
}

.tbp-cal-root .tbp-cal-partner-cta-list li {
	display: flex;
	flex-direction: column;
	padding: 8px 10px;
	background: #fff;
	border: 1px solid #d8d4ca;
	border-radius: 4px;
	transition: all 0.15s ease-out;
	position: relative; /* v2.4.6: ストレッチドリンク用（li全面クリッカブル化） */
	cursor: pointer;
}

.tbp-cal-root .tbp-cal-partner-cta-list li:hover {
	border-color: #8b7e5a;
	background: #faf8f3;
}

.tbp-cal-root .tbp-cal-partner-cta-tag {
	font-size: 10px;
	color: #888;
	line-height: 1.3;
	margin-bottom: 3px;
	letter-spacing: 0.02em;
	text-align: center; /* v2.4.6: stella指示・文字中央寄せ */
	pointer-events: none; /* v2.4.6: クリックを下のaに伝える（ストレッチドリンク） */
}

.tbp-cal-root .tbp-cal-partner-cta-link-wrap {
	display: flex;
	align-items: center;
	gap: 6px;
	justify-content: center; /* v2.4.6: stella指示・文字中央寄せ（flex-start→center） */
}

.tbp-cal-root .tbp-cal-partner-cta-link-wrap a {
	font-size: 13px;
	font-weight: 700;
	color: #3a3a3a;
	text-decoration: none;
	transition: color 0.15s;
	flex: 1; /* v2.4.6: stella指示・残りスペース獲得 */
	text-align: center; /* v2.4.6: stella指示・タブ内テキスト中央寄せ */
}

.tbp-cal-root .tbp-cal-partner-cta-link-wrap a:hover {
	color: #5d4f30;
	text-decoration: underline;
}

.tbp-cal-root .tbp-cal-partner-cta-arrow {
	margin-left: auto;
	color: #8b7e5a;
	font-size: 16px;
	font-weight: 700;
	pointer-events: none; /* v2.4.6: クリックを下のaに伝える（ストレッチドリンク） */
}

/* v2.4.6: ストレッチドリンク本体 - aの擬似要素でli全面を覆ってクリッカブル化 */
.tbp-cal-root .tbp-cal-partner-cta-link-wrap > a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

/* もしも/バリューコマース計測ピクセルは非表示にしない（規約上必須・1x1で見えない） */
.tbp-cal-root .tbp-cal-partner-cta-link-wrap img {
	display: inline;
}

/* チケットボックスは少しアクセント（薄い黄系・LGL割引メリットを匂わせる） */
.tbp-cal-root .tbp-cal-partner-cta-box--ticket {
	background: #fefdf7;
	border-color: #e8e0c5;
}

.tbp-cal-root .tbp-cal-partner-cta-box--ticket .tbp-cal-partner-cta-name {
	color: #5d4f30;
}

/* ==========================================================================
   v1.1 フッタークレジット（精度バッジ + Powered by Queue-Times.com）
   ========================================================================== */
.tbp-cal-root .tbp-cal-credit {
	margin-top: 16px;
	padding: 12px 14px;
	background: var(--tbp-bg, #FAFBFD);
	border: 1px solid var(--tbp-border, #E2E8F0);
	border-radius: 8px;
	text-align: center;
}

.tbp-cal-root .tbp-cal-credit-line {
	margin: 0;
	padding: 2px 0;
	font-size: 12px;
	line-height: 1.6;
	color: var(--tbp-text-secondary, #475569);
}

.tbp-cal-root .tbp-cal-disclaimer-accuracy {
	display: inline-block;
	padding: 2px 8px;
	background: #fff;
	border: 1px solid var(--tbp-border, #E2E8F0);
	border-radius: 4px;
	font-weight: 600;
	color: var(--tbp-text-primary, #0F172A);
}

.tbp-cal-root .tbp-cal-credit-poweredby {
	font-size: 11px;
	color: var(--tbp-text-soft, #4A5169);
}

.tbp-cal-root .tbp-cal-credit-link {
	color: var(--tbp-navy, #0B3D91);
	text-decoration: underline;
}

.tbp-cal-root .tbp-cal-credit-link:hover,
.tbp-cal-root .tbp-cal-credit-link:focus {
	color: var(--tbp-navy-dark, #072B6B);
	text-decoration: none;
}

/* ==========================================================================
   v1.3 Park Identification UI（取り違え防止・四重冗長）
   --------------------------------------------------------------------------
   設計：色 × テキスト × アイコン × 切替動線 の四重冗長で TDL/TDS の取り違いを防ぐ。
   Disney NG ルール完全遵守（公式ロゴ・キャラクター・建造物・お城モチーフ一切なし）。
   ========================================================================== */

/* --- v1.3 共通変数（カラーパレット拡張） --- */
.tbp-cal-root {
	/* TDLアクセント拡張 */
	--tbp-tdl-pink:        #FF6B9D;
	--tbp-tdl-pink-dark:   #D14F7A;
	--tbp-tdl-pink-soft:   #FFE4EE;
	--tbp-tdl-pink-light:  #FFF5F9;
	--tbp-tdl-pink-border: #FBA8C5;
	/* v2.5.78: 他4パークにある -deep が TDL だけ無かったので新設。大型文字・白抜きボタン用。 */
	--tbp-tdl-pink-deep:   #8E1F47;   /* 深いローズ: 白文字で8.62 */

	/* TDSアクセント拡張 */
	--tbp-tds-sky:         #0EA5E9;
	--tbp-tds-navy:        #0369A1;
	--tbp-tds-sky-soft:    #E0F2FE;
	--tbp-tds-sky-light:   #F0F9FF;
	--tbp-tds-sky-border:  #7DD3FC;
	--tbp-tds-deep-navy:   #0C4A6E;

	/* v2.3.0: LGL（レゴランド・ジャパン）アボカドグリーン
	   stella確定2026-05-16・LEGO黄から35°離して公式装いリスク最小 */
	--tbp-lgl-green:        #7FC242;       /* メイン: アボカドグリーン */
	--tbp-lgl-green-dark:   #4F8A1F;       /* ダーク: ピル・ボタン背景 */
	--tbp-lgl-green-soft:   #EAF5D8;       /* ソフト: 背景グラデ */
	--tbp-lgl-green-light:  #F5FBE9;       /* ライト: バナーグラデ用 */
	--tbp-lgl-green-border: #B5D984;       /* ボーダー: 帯下線 */
	--tbp-lgl-green-deep:   #2E5A0E;       /* 深緑: 大型タイトル用文字色 */

	/* v2.4.0: USJ（ユニバーサル・スタジオ・ジャパン）シトラスマリーゴールド
	   stella確定2026-05-18・USJ公式赤から HSL 32°離して公式装いリスク最小 */
	--tbp-usj-orange:        #E8902A;      /* メイン: シトラスマリーゴールド */
	--tbp-usj-orange-dark:   #B8730F;      /* ダーク: ピル・ボタン背景 */
	--tbp-usj-orange-soft:   #FFE8C9;      /* ソフト: 背景グラデ */
	--tbp-usj-orange-light:  #FFF4E0;      /* ライト: バナーグラデ用 */
	--tbp-usj-orange-border: #F4B36A;      /* ボーダー: 帯下線 */
	--tbp-usj-orange-deep:   #5A3A0A;      /* 深褐色: 大型タイトル用文字色 */

	/* v2.5.0: FJQ（富士急ハイランド）ラベンダー */
	--tbp-fjq-lavender:        #8B5CF6;   /* メイン */
	--tbp-fjq-lavender-dark:   #6D28D9;   /* ダーク: ピル・ボタン背景 */
	--tbp-fjq-lavender-soft:   #EDE9FE;   /* ソフト: 背景グラデ */
	--tbp-fjq-lavender-light:  #F5F3FF;   /* ライト: バナーグラデ用 */
	--tbp-fjq-lavender-border: #C4B5FD;   /* ボーダー: 帯下線 */
	--tbp-fjq-lavender-deep:   #4C1D95;   /* 深紫: 大型タイトル用文字色 */
}

/* ==========================================================================
   ① Identity Banner（First View 大型）
   ========================================================================== */
.tbp-cal-root .tbp-park-banner {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 20px;
	padding: 20px 24px;
	margin: 0;
	border-radius: 0;
	border-bottom: 1px solid transparent;
	position: relative;
	overflow: hidden;
}

/* バナー左：アイコン */
.tbp-cal-root .tbp-park-banner__icon {
	width: 72px;
	height: 72px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	flex-shrink: 0;
}
.tbp-cal-root .tbp-park-banner__icon svg {
	width: 56px;
	height: 56px;
}

/* バナー中央：テキスト */
.tbp-cal-root .tbp-park-banner__text {
	min-width: 0;
}
.tbp-cal-root .tbp-park-banner__eyebrow {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.08em;
	color: #64748B;
	margin-bottom: 4px;
	text-transform: none;
}
.tbp-cal-root .tbp-park-banner__pill {
	display: inline-block;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.08em;
	padding: 3px 11px;
	border-radius: 9999px;
	color: #fff;
	margin-bottom: 6px;
	text-transform: uppercase;
	line-height: 1.4;
}
.tbp-cal-root .tbp-park-banner__h1 {
	font-size: 26px;
	font-weight: 800;
	line-height: 1.25;
	margin: 0 0 4px;
	letter-spacing: 0.01em;
}
.tbp-cal-root .tbp-park-banner__sub {
	font-size: 15px;
	font-weight: 700;
	margin: 0 0 4px;
	color: #1E293B;
}
.tbp-cal-root .tbp-park-banner__meta {
	font-size: 12px;
	color: #475569;
	margin: 0;
}

/* バナー右：切替CTA */
.tbp-cal-root .tbp-park-banner__switch {
	display: inline-flex;
	flex-direction: column;
	align-items: stretch;
	gap: 4px;
	padding: 10px 14px;
	border-radius: 12px;
	background: #fff;
	border: 2px solid currentColor;
	text-decoration: none;
	font-weight: 700;
	font-size: 13px;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
	white-space: nowrap;
	flex-shrink: 0;
	min-height: 44px; /* タップターゲット */
}
.tbp-cal-root .tbp-park-banner__switch:hover,
.tbp-cal-root .tbp-park-banner__switch:focus {
	transform: translateY(-2px);
	box-shadow: 0 6px 16px rgba(15, 23, 42, 0.12);
	text-decoration: none;
}
.tbp-cal-root .tbp-park-banner__switch-label {
	font-size: 10px;
	font-weight: 700;
	color: #64748B;
	letter-spacing: 0.04em;
}
.tbp-cal-root .tbp-park-banner__switch-pill {
	display: inline-block;
	font-size: 11px;
	font-weight: 800;
	padding: 2px 8px;
	border-radius: 9999px;
	color: #fff;
	margin-right: 4px;
	vertical-align: middle;
}
.tbp-cal-root .tbp-park-banner__switch-name {
	color: #0F172A;
	font-size: 12px;
}
.tbp-cal-root .tbp-park-banner__switch svg {
	display: inline-block;
	vertical-align: middle;
}

/* --- TDL カラーバインド --- */
.tbp-cal-root .tbp-park-banner--tdl {
	background: linear-gradient(135deg, var(--tbp-tdl-pink-light) 0%, var(--tbp-tdl-pink-soft) 100%);
	border-bottom-color: var(--tbp-tdl-pink-border);
	color: var(--tbp-tdl-pink-dark);
}
.tbp-cal-root .tbp-park-banner--tdl .tbp-park-banner__icon {
	background: rgba(255, 107, 157, 0.14);
	color: var(--tbp-tdl-pink-dark);
}
.tbp-cal-root .tbp-park-banner--tdl .tbp-park-banner__pill,
.tbp-cal-root .tbp-park-banner__pill--tdl {
	background: var(--tbp-tdl-pink);
}
.tbp-cal-root .tbp-park-banner--tdl .tbp-park-banner__h1 {
	color: var(--tbp-tdl-pink-dark);
}
.tbp-cal-root .tbp-park-banner--tdl .tbp-park-banner__switch {
	color: var(--tbp-tds-sky); /* 移動先(TDS)の色をボーダーに使う */
}
.tbp-cal-root .tbp-park-banner--tdl .tbp-park-banner__switch-pill {
	background: var(--tbp-tds-sky);
}

/* --- TDS カラーバインド --- */
.tbp-cal-root .tbp-park-banner--tds {
	background: linear-gradient(135deg, var(--tbp-tds-sky-light) 0%, var(--tbp-tds-sky-soft) 100%);
	border-bottom-color: var(--tbp-tds-sky-border);
	color: var(--tbp-tds-navy);
}
.tbp-cal-root .tbp-park-banner--tds .tbp-park-banner__icon {
	background: rgba(14, 165, 233, 0.14);
	color: var(--tbp-tds-navy);
}
.tbp-cal-root .tbp-park-banner--tds .tbp-park-banner__pill,
.tbp-cal-root .tbp-park-banner__pill--tds {
	background: var(--tbp-tds-sky);
}
.tbp-cal-root .tbp-park-banner--tds .tbp-park-banner__h1 {
	color: var(--tbp-tds-deep-navy);
}
.tbp-cal-root .tbp-park-banner--tds .tbp-park-banner__switch {
	color: var(--tbp-tdl-pink);
}
.tbp-cal-root .tbp-park-banner--tds .tbp-park-banner__switch-pill {
	background: var(--tbp-tdl-pink);
}

/* --- both カラーバインド（中立） --- */
.tbp-cal-root .tbp-park-banner--both {
	background: linear-gradient(135deg, #F8FAFC 0%, #F1F5F9 100%);
	border-bottom-color: #CBD5E1;
	color: #334155;
}
.tbp-cal-root .tbp-park-banner--both .tbp-park-banner__icon {
	background: rgba(11, 61, 145, 0.10);
	color: #0B3D91;
}
.tbp-cal-root .tbp-park-banner--both .tbp-park-banner__pill,
.tbp-cal-root .tbp-park-banner__pill--both {
	background: #475569;
}

/* --- v2.3.0: LGL カラーバインド（アボカドグリーン #7FC242・stella確定2026-05-16） --- */
.tbp-cal-root .tbp-park-banner--lgl {
	background: linear-gradient(135deg, var(--tbp-lgl-green-light) 0%, var(--tbp-lgl-green-soft) 100%);
	border-bottom-color: var(--tbp-lgl-green-border);
	color: var(--tbp-lgl-green-deep);
}
.tbp-cal-root .tbp-park-banner--lgl .tbp-park-banner__icon {
	background: rgba(127, 194, 66, 0.16);
	color: var(--tbp-lgl-green-dark);
}
.tbp-cal-root .tbp-park-banner--lgl .tbp-park-banner__pill,
.tbp-cal-root .tbp-park-banner__pill--lgl {
	background: var(--tbp-lgl-green-dark);
}
.tbp-cal-root .tbp-park-banner--lgl .tbp-park-banner__h1 {
	color: var(--tbp-lgl-green-deep);
}
/* LGL は独立カテゴリ：他パークへの切替リンクは出さない（stella指示2026-05-16） */
.tbp-cal-root .tbp-park-banner--lgl .tbp-park-banner__switch {
	display: none;
}

/* --- v2.4.0: USJ カラーバインド（シトラスマリーゴールド #E8902A・stella確定2026-05-18） --- */
.tbp-cal-root .tbp-park-banner--usj {
	background: linear-gradient(135deg, var(--tbp-usj-orange-light) 0%, var(--tbp-usj-orange-soft) 100%);
	border-bottom-color: var(--tbp-usj-orange-border);
	color: var(--tbp-usj-orange-deep);
}
.tbp-cal-root .tbp-park-banner--usj .tbp-park-banner__icon {
	background: rgba(232, 144, 42, 0.16);
	color: var(--tbp-usj-orange-dark);
}
.tbp-cal-root .tbp-park-banner--usj .tbp-park-banner__pill,
.tbp-cal-root .tbp-park-banner__pill--usj {
	background: var(--tbp-usj-orange-dark);
}
.tbp-cal-root .tbp-park-banner--usj .tbp-park-banner__h1 {
	color: var(--tbp-usj-orange-deep);
}
/* USJ は独立カテゴリ：他パークへの切替リンクは出さない（stella指示2026-05-18） */
.tbp-cal-root .tbp-park-banner--usj .tbp-park-banner__switch {
	display: none;
}

/* --- v2.5.0: FJQ カラーバインド（ラベンダー #8B5CF6・stella確定2026-07-12） --- */
.tbp-cal-root .tbp-park-banner--fjq {
	background: linear-gradient(135deg, var(--tbp-fjq-lavender-light) 0%, var(--tbp-fjq-lavender-soft) 100%);
	border-bottom-color: var(--tbp-fjq-lavender-border);
	color: var(--tbp-fjq-lavender-deep);
}
.tbp-cal-root .tbp-park-banner--fjq .tbp-park-banner__icon {
	background: rgba(139, 92, 246, 0.16);
	color: var(--tbp-fjq-lavender-dark);
}
.tbp-cal-root .tbp-park-banner--fjq .tbp-park-banner__pill,
.tbp-cal-root .tbp-park-banner__pill--fjq {
	background: var(--tbp-fjq-lavender-dark);
}
.tbp-cal-root .tbp-park-banner--fjq .tbp-park-banner__h1 {
	color: var(--tbp-fjq-lavender-deep);
}
/* FJQ は独立カテゴリ：他パークへの切替リンクは出さない */
.tbp-cal-root .tbp-park-banner--fjq .tbp-park-banner__switch {
	display: none;
}

/* ==========================================================================
   ② shortcode内ヘッダーのパーク識別ピル（既存ヘッダー強化）
   ========================================================================== */
.tbp-cal-root .tbp-cal-title-park {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 2px 0 4px;
	font-size: 12px;
	font-weight: 700;
	justify-content: center;
}
.tbp-cal-root .tbp-cal-title-park-pill {
	display: inline-block;
	padding: 2px 10px;
	border-radius: 9999px;
	color: #fff;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.06em;
	line-height: 1.5;
}
.tbp-cal-root .tbp-cal-title-park-name {
	color: #334155;
}
.tbp-cal-root.tbp-park-tdl .tbp-cal-title-park-pill {
	background: var(--tbp-tdl-pink);
}
.tbp-cal-root.tbp-park-tds .tbp-cal-title-park-pill {
	background: var(--tbp-tds-sky);
}
.tbp-cal-root.tbp-park-both .tbp-cal-title-park-pill {
	background: #475569;
}
/* v2.3.0 */
.tbp-cal-root.tbp-park-lgl .tbp-cal-title-park-pill {
	background: var(--tbp-lgl-green-dark);
}
/* v2.4.0 */
.tbp-cal-root.tbp-park-usj .tbp-cal-title-park-pill {
	background: var(--tbp-usj-orange-dark);
}
/* v2.5.0 */
.tbp-cal-root.tbp-park-fjq .tbp-cal-title-park-pill {
	background: var(--tbp-fjq-lavender-dark);
}

/* ==========================================================================
   ③ カレンダー下部の切替CTA
   ========================================================================== */
.tbp-cal-root .tbp-park-switch-cta {
	margin: 24px 16px 16px;
	padding: 20px;
	border-radius: 14px;
	text-align: center;
	border: 1px dashed #CBD5E1;
	background: #FAFBFD;
}
.tbp-cal-root .tbp-park-switch-cta__lead {
	font-size: 14px;
	font-weight: 700;
	margin: 0 0 12px;
	color: #0F172A;
}
.tbp-cal-root .tbp-park-switch-cta__btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 12px 20px;
	border-radius: 12px;
	text-decoration: none;
	font-weight: 800;
	font-size: 14px;
	background: #fff;
	border: 2px solid currentColor;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
	min-height: 44px;
}
.tbp-cal-root .tbp-park-switch-cta__btn:hover,
.tbp-cal-root .tbp-park-switch-cta__btn:focus {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(15, 23, 42, 0.12);
	text-decoration: none;
}
.tbp-cal-root .tbp-park-switch-cta__btn-pill {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 9999px;
	color: #fff;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.05em;
}
.tbp-cal-root .tbp-park-switch-cta__btn-name {
	color: #0F172A;
	font-size: 14px;
	/* v2.5.15: 行の長さが違う2行名称でも左端を揃える（中央揃え継承だと2行目が浮いて見える・stella報告） */
	text-align: left;
}
.tbp-cal-root .tbp-park-switch-cta__hint {
	font-size: 12px;
	color: #475569;
	margin: 12px 0 0;
	line-height: 1.7;
}
.tbp-cal-root .tbp-park-switch-cta__hint strong {
	color: #0F172A;
}
/* v2.3.5：LGLのみdualモード（TDL/TDSは単独CTAに戻した）・ボタン横並びサイズ揃え */
.tbp-cal-root .tbp-park-switch-cta__dual {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: center;
	align-items: stretch;
	margin: 0;
}
.tbp-cal-root .tbp-park-switch-cta__dual .tbp-park-switch-cta__btn {
	flex: 1 1 0;
	min-width: 260px;
	max-width: 440px;
	justify-content: flex-start;
}
@media (max-width: 600px) {
	.tbp-cal-root .tbp-park-switch-cta__dual .tbp-park-switch-cta__btn {
		flex: 1 1 100%;
		max-width: 100%;
	}
}
/* park別ボタン色（btn--tdl / btn--tds の2パターン・LGL dual内のボタン用） */
.tbp-cal-root .tbp-park-switch-cta__btn--tdl {
	color: var(--tbp-tdl-pink);
}
.tbp-cal-root .tbp-park-switch-cta__btn--tdl .tbp-park-switch-cta__btn-pill {
	background: var(--tbp-tdl-pink);
}
.tbp-cal-root .tbp-park-switch-cta__btn--tds {
	color: var(--tbp-tds-sky);
}
.tbp-cal-root .tbp-park-switch-cta__btn--tds .tbp-park-switch-cta__btn-pill {
	background: var(--tbp-tds-sky);
}
/* v2.3.5: TDL/TDS は単独CTAに戻すため、from-tdl/tds 用の色定義を復活（v2.3.3以前と同じ） */
.tbp-cal-root .tbp-park-switch-cta--from-tdl .tbp-park-switch-cta__btn:not([class*="__btn--"]) {
	color: var(--tbp-tds-sky);
}
.tbp-cal-root .tbp-park-switch-cta--from-tdl .tbp-park-switch-cta__btn:not([class*="__btn--"]) .tbp-park-switch-cta__btn-pill {
	background: var(--tbp-tds-sky);
}
.tbp-cal-root .tbp-park-switch-cta--from-tds .tbp-park-switch-cta__btn:not([class*="__btn--"]) {
	color: var(--tbp-tdl-pink);
}
.tbp-cal-root .tbp-park-switch-cta--from-tds .tbp-park-switch-cta__btn:not([class*="__btn--"]) .tbp-park-switch-cta__btn-pill {
	background: var(--tbp-tdl-pink);
}

/* v2.5.0: 富士急ページからTDL/TDSへの独立dual CTA（既存switchクラスを共用しない） */
.tbp-cal-root .tbp-fujiq-switch-cta {
	margin: 24px 16px 16px;
	padding: 20px;
	border-radius: 14px;
	text-align: center;
	border: 1px dashed #CBD5E1;
	background: #FAFBFD;
}
.tbp-cal-root .tbp-fujiq-switch-cta__lead {
	font-size: 14px;
	font-weight: 700;
	margin: 0 0 12px;
	color: #0F172A;
}
.tbp-cal-root .tbp-fujiq-switch-cta__dual {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: center;
	align-items: stretch;
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn {
	display: inline-flex;
	align-items: center;
	justify-content: flex-start;
	gap: 10px;
	flex: 1 1 0;
	min-width: 260px;
	max-width: 440px;
	min-height: 44px;
	padding: 12px 20px;
	border-radius: 12px;
	text-decoration: none;
	font-weight: 800;
	font-size: 14px;
	background: #fff;
	border: 2px solid currentColor;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn:hover,
.tbp-cal-root .tbp-fujiq-switch-cta__btn:focus {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(15, 23, 42, 0.12);
	text-decoration: none;
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn--tdl {
	color: var(--tbp-tdl-pink);
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn--tds {
	color: var(--tbp-tds-sky);
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn-pill {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 9999px;
	color: #fff;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.05em;
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn--tdl .tbp-fujiq-switch-cta__btn-pill {
	background: var(--tbp-tdl-pink);
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn--tds .tbp-fujiq-switch-cta__btn-pill {
	background: var(--tbp-tds-sky);
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn-name {
	color: #0F172A;
	font-size: 14px;
	/* v2.5.15: 左端揃え（park-switch と同義） */
	text-align: left;
}
.tbp-cal-root .tbp-fujiq-switch-cta__hint {
	font-size: 12px;
	color: #475569;
	margin: 12px 0 0;
	line-height: 1.7;
}
.tbp-cal-root .tbp-fujiq-switch-cta__hint strong {
	color: #0F172A;
}
.tbp-cal-root .tbp-fujiq-switch-cta__btn:focus-visible {
	outline: 3px solid #1E40AF;
	outline-offset: 2px;
}
@media (max-width: 600px) {
	.tbp-cal-root .tbp-fujiq-switch-cta {
		margin: 20px 12px 12px;
		padding: 16px;
	}
	.tbp-cal-root .tbp-fujiq-switch-cta__btn {
		flex: 1 1 100%;
		max-width: 100%;
		min-width: 0;
		justify-content: center;
		padding: 12px;
	}
}
@media (prefers-reduced-motion: reduce) {
	.tbp-cal-root .tbp-fujiq-switch-cta__btn {
		transition: none;
	}
	.tbp-cal-root .tbp-fujiq-switch-cta__btn:hover {
		transform: none;
	}
}

/* ========================================================================== 
   v2.3.5 ③-2 レゴランド・ジャパン独立CTA（TDL/TDSページ下部に表示）
   ========================================================================== */
.tbp-cal-root .tbp-legoland-cta {
	margin: 16px 16px;
	padding: 20px;
	border-radius: 14px;
	text-align: center;
	border: 1px dashed var(--tbp-lgl-green);
	background: var(--tbp-lgl-green-light);
}
.tbp-cal-root .tbp-legoland-cta__lead {
	font-size: 14px;
	font-weight: 700;
	margin: 0 0 12px;
	color: var(--tbp-lgl-green-dark);
}
.tbp-cal-root .tbp-legoland-cta__btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 12px 20px;
	border-radius: 12px;
	text-decoration: none;
	font-weight: 800;
	font-size: 14px;
	background: #fff;
	border: 2px solid var(--tbp-lgl-green-dark);
	color: var(--tbp-lgl-green-dark);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
	min-height: 44px;
}
.tbp-cal-root .tbp-legoland-cta__btn:hover,
.tbp-cal-root .tbp-legoland-cta__btn:focus {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(79, 138, 31, 0.18);
	text-decoration: none;
}
.tbp-cal-root .tbp-legoland-cta__btn-pill {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 9999px;
	background: var(--tbp-lgl-green-dark);
	color: #fff;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.05em;
}
.tbp-cal-root .tbp-legoland-cta__btn-name {
	color: #0F172A;
	font-size: 14px;
	/* v2.5.15: 左端揃え（park-switch と同義） */
	text-align: left;
}
.tbp-cal-root .tbp-legoland-cta__hint {
	font-size: 12px;
	color: #475569;
	margin: 12px 0 0;
	line-height: 1.7;
}
.tbp-cal-root .tbp-legoland-cta__hint strong {
	color: var(--tbp-lgl-green-dark);
}

/* ==========================================================================
   v2.4.0 ③-3 ユニバーサル・スタジオ・ジャパン独立CTA（TDL/TDS/LGLページ下部に表示）
   ========================================================================== */
.tbp-cal-root .tbp-usj-cta {
	margin: 16px 16px;
	padding: 20px;
	border-radius: 14px;
	text-align: center;
	border: 1px dashed var(--tbp-usj-orange);
	background: var(--tbp-usj-orange-light);
}
.tbp-cal-root .tbp-usj-cta__lead {
	font-size: 14px;
	font-weight: 700;
	margin: 0 0 12px;
	color: var(--tbp-usj-orange-dark);
}
.tbp-cal-root .tbp-usj-cta__btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 12px 20px;
	border-radius: 12px;
	text-decoration: none;
	font-weight: 800;
	font-size: 14px;
	background: #fff;
	border: 2px solid var(--tbp-usj-orange-dark);
	color: var(--tbp-usj-orange-dark);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
	min-height: 44px;
}
.tbp-cal-root .tbp-usj-cta__btn:hover,
.tbp-cal-root .tbp-usj-cta__btn:focus {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(184, 115, 15, 0.18);
	text-decoration: none;
}
.tbp-cal-root .tbp-usj-cta__btn-pill {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 9999px;
	background: var(--tbp-usj-orange-dark);
	color: #fff;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.05em;
}
.tbp-cal-root .tbp-usj-cta__btn-name {
	color: #0F172A;
	font-size: 14px;
	/* v2.5.15: 左端揃え（park-switch と同義） */
	text-align: left;
}
.tbp-cal-root .tbp-usj-cta__hint {
	font-size: 12px;
	color: #475569;
	margin: 12px 0 0;
	line-height: 1.7;
}
.tbp-cal-root .tbp-usj-cta__hint strong {
	color: var(--tbp-usj-orange-dark);
}

/* ========================================================================== 
   v2.5.0 ③-4 富士急ハイランド独立CTA（TDL/TDS/LGL/USJページ下部に表示）
   ========================================================================== */
.tbp-cal-root .tbp-fujiq-cta {
	margin: 16px 16px;
	padding: 20px;
	border-radius: 14px;
	text-align: center;
	border: 1px dashed var(--tbp-fjq-lavender);
	background: var(--tbp-fjq-lavender-light);
}
.tbp-cal-root .tbp-fujiq-cta--from-tdl,
.tbp-cal-root .tbp-fujiq-cta--from-tds,
.tbp-cal-root .tbp-fujiq-cta--from-lgl,
.tbp-cal-root .tbp-fujiq-cta--from-usj {
	border-color: var(--tbp-fjq-lavender);
	background: var(--tbp-fjq-lavender-light);
}
.tbp-cal-root .tbp-fujiq-cta__lead {
	font-size: 14px;
	font-weight: 700;
	margin: 0 0 12px;
	color: var(--tbp-fjq-lavender-dark);
}
.tbp-cal-root .tbp-fujiq-cta__btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 12px 20px;
	border-radius: 12px;
	text-decoration: none;
	font-weight: 800;
	font-size: 14px;
	background: #fff;
	border: 2px solid var(--tbp-fjq-lavender-dark);
	color: var(--tbp-fjq-lavender-dark);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
	min-height: 44px;
}
.tbp-cal-root .tbp-fujiq-cta__btn:hover,
.tbp-cal-root .tbp-fujiq-cta__btn:focus {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(109, 40, 217, 0.18);
	text-decoration: none;
}
.tbp-cal-root .tbp-fujiq-cta__btn-pill {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 9999px;
	background: var(--tbp-fjq-lavender-dark);
	color: #fff;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.05em;
}
.tbp-cal-root .tbp-fujiq-cta__btn-name {
	color: #0F172A;
	font-size: 14px;
	/* v2.5.15: 左端揃え（park-switch と同義） */
	text-align: left;
}
.tbp-cal-root .tbp-fujiq-cta__hint {
	font-size: 12px;
	color: #475569;
	margin: 12px 0 0;
	line-height: 1.7;
}
.tbp-cal-root .tbp-fujiq-cta__hint strong {
	color: var(--tbp-fjq-lavender-dark);
}

/* ========================================================================== 
   ④ モーダル内パーク表示
   ========================================================================== */
.tbp-cal-root .tbp-cal-dialog-park {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 4px 0 8px;
	font-size: 12px;
	padding: 4px 10px;
	border-radius: 9999px;
	background: rgba(255, 255, 255, 0.6);
}
.tbp-cal-dialog .tbp-cal-dialog-park {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 6px 0 10px;
	font-size: 12px;
	padding: 4px 10px;
	border-radius: 9999px;
	background: rgba(248, 250, 252, 0.95);
	border: 1px solid #E2E8F0;
}
.tbp-cal-dialog .tbp-cal-dialog-park-pill {
	display: inline-block;
	padding: 2px 8px;
	border-radius: 9999px;
	color: #fff;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.05em;
}
.tbp-cal-dialog .tbp-cal-dialog-park-name {
	color: #334155;
	font-weight: 700;
}
.tbp-cal-dialog .tbp-cal-dialog-park--tdl .tbp-cal-dialog-park-pill {
	background: var(--tbp-tdl-pink);
}
.tbp-cal-dialog .tbp-cal-dialog-park--tds .tbp-cal-dialog-park-pill {
	background: var(--tbp-tds-sky);
}
.tbp-cal-dialog .tbp-cal-dialog-park--both .tbp-cal-dialog-park-pill {
	background: #475569;
}
/* v2.3.0: LGL（レゴランド・ジャパン） */
.tbp-cal-dialog .tbp-cal-dialog-park--lgl .tbp-cal-dialog-park-pill {
	background: var(--tbp-lgl-green-dark);
}
/* v2.4.0: USJ（ユニバーサル・スタジオ・ジャパン） */
.tbp-cal-dialog .tbp-cal-dialog-park--usj .tbp-cal-dialog-park-pill {
	background: var(--tbp-usj-orange-dark);
}
/* v2.5.0: FJQ（富士急ハイランド） */
.tbp-cal-dialog .tbp-cal-dialog-park--fjq .tbp-cal-dialog-park-pill {
	background: var(--tbp-fjq-lavender-dark);
}

/* ==========================================================================
   ⑤ 固定ページ用パンくずリスト＆データ注記（shortcode外）
   ========================================================================== */
.tbp-breadcrumb {
	font-size: 13px;
	line-height: 1.6;
	margin: 0 0 16px;
	padding: 8px 0;
	color: #475569;
}
.tbp-breadcrumb ol,
.tbp-breadcrumb-list {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: 0;
	padding: 0;
}
.tbp-breadcrumb li {
	margin: 0;
	padding: 0;
}
.tbp-breadcrumb a {
	color: #475569;
	text-decoration: none;
}
.tbp-breadcrumb a:hover,
.tbp-breadcrumb a:focus {
	text-decoration: underline;
}
.tbp-breadcrumb [aria-current="page"] {
	font-weight: 700;
	color: #0F172A;
}
.tbp-breadcrumb .tbp-breadcrumb-sep {
	color: #94A3B8;
	user-select: none;
}
.tbp-data-note {
	font-size: 12px;
	color: #475569;
	margin: 8px 0 16px;
	padding: 8px 12px;
	background: #F8FAFC;
	border-left: 3px solid #94A3B8;
	border-radius: 4px;
	line-height: 1.6;
}

/* ==========================================================================
   ⑥ モバイル対応（〜768px）
   ========================================================================== */
@media (max-width: 768px) {
	.tbp-cal-root .tbp-park-banner {
		grid-template-columns: 1fr;
		grid-template-rows: auto auto auto;
		padding: 16px;
		gap: 14px;
		text-align: left;
	}
	.tbp-cal-root .tbp-park-banner__icon {
		width: 56px;
		height: 56px;
	}
	.tbp-cal-root .tbp-park-banner__icon svg {
		width: 44px;
		height: 44px;
	}
	.tbp-cal-root .tbp-park-banner__h1 {
		font-size: 22px;
	}
	.tbp-cal-root .tbp-park-banner__sub {
		font-size: 14px;
	}
	.tbp-cal-root .tbp-park-banner__switch {
		width: 100%;
		flex-direction: row;
		justify-content: center;
		padding: 12px;
	}
	.tbp-cal-root .tbp-park-switch-cta {
		margin: 20px 12px 12px;
		padding: 16px;
	}
	.tbp-cal-root .tbp-park-switch-cta__btn {
		width: 100%;
		justify-content: center;
		padding: 12px;
		font-size: 14px;
	}
	.tbp-cal-root .tbp-park-switch-cta__btn-name {
		font-size: 13px;
	}
}

@media (max-width: 480px) {
	.tbp-breadcrumb {
		font-size: 12px;
	}
	.tbp-cal-root .tbp-park-banner__h1 {
		font-size: 20px;
	}
	.tbp-cal-root .tbp-park-banner__meta {
		font-size: 11px;
	}
	.tbp-cal-root .tbp-park-banner__eyebrow {
		font-size: 10px;
	}
}

/* ==========================================================================
   ⑦ アクセシビリティ：focus-visible 強化
   ========================================================================== */
.tbp-cal-root .tbp-park-banner__switch:focus-visible,
.tbp-cal-root .tbp-park-switch-cta__btn:focus-visible {
	outline: 3px solid #1E40AF;
	outline-offset: 2px;
}

/* ハイコントラストモード対応 */
@media (prefers-contrast: more) {
	.tbp-cal-root .tbp-park-banner {
		border-bottom-width: 2px;
		border-bottom-style: solid;
	}
	.tbp-cal-root .tbp-park-banner__pill,
	.tbp-cal-root .tbp-park-switch-cta__btn-pill,
	.tbp-cal-root .tbp-cal-title-park-pill {
		outline: 1px solid rgba(0, 0, 0, 0.4);
	}
}

/* モーション抑制（ユーザー設定） */
@media (prefers-reduced-motion: reduce) {
	.tbp-cal-root .tbp-park-banner__switch,
	.tbp-cal-root .tbp-park-switch-cta__btn {
		transition: none;
	}
	.tbp-cal-root .tbp-park-banner__switch:hover,
	.tbp-cal-root .tbp-park-switch-cta__btn:hover {
		transform: none;
	}
}

/* ==========================================================================
   v2.1：Phase 1.5 TOP3 機能スタイル
   --------------------------------------------------------------------------
   - WBGT（熱中症指数）バッジ：⚠️ / 🌡️
   - Gトレンド変動バッジ：📈 / 📉
   - 前年同日比較セクション：📊
   - モーダル拡張セクション
   ========================================================================== */

/* v2.2.1: セル右下に重ねるインジケータ群（WBGT / Gトレンド）
 * 右上はステータスバッジが占有・横並びでセル幅を超える見切れ問題があったため
 * 右下に移動・セル幅を超えないように max-width と overflow:hidden で完全収納
 */
.tbp-cal-root .tbp-cell-indicators {
	position: absolute;
	bottom: 2px;
	right: 2px;
	display: flex;
	flex-direction: row;
	gap: 2px;
	z-index: 2;
	pointer-events: none;
	max-width: calc(100% - 4px);
	overflow: hidden;
}

.tbp-cal-root .tbp-cell-indicator {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 10px;
	line-height: 1;
	padding: 1px 2px;
	border-radius: 4px;
	background: rgba(255, 255, 255, 0.85);
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.15);
	max-width: 22px;
	max-height: 18px;
	overflow: hidden;
}

.tbp-cal-root .tbp-cell-wbgt--danger {
	background: rgba(254, 226, 226, 0.95);
	color: #991B1B;
}

.tbp-cal-root .tbp-cell-wbgt--warn {
	background: rgba(254, 243, 199, 0.95);
	color: #92400E;
}

.tbp-cal-root .tbp-cell-gtrend--surge {
	background: rgba(220, 252, 231, 0.95);
	color: #166534;
}

.tbp-cal-root .tbp-cell-gtrend--drop {
	background: rgba(224, 242, 254, 0.95);
	color: #075985;
}

/* セル自体に薄い縁取り（WBGT 危険 / Gトレンド急増を視覚的に強調） */
.tbp-cal-root .tbp-cal-cell.tbp-wbgt-danger {
	box-shadow: inset 0 0 0 1px rgba(239, 68, 68, 0.35);
}

.tbp-cal-root .tbp-cal-cell.tbp-gtrend-surge {
	box-shadow: inset 0 0 0 1px rgba(34, 197, 94, 0.35);
}

.tbp-cal-root .tbp-cal-cell.tbp-wbgt-danger.tbp-gtrend-surge {
	box-shadow:
		inset 0 0 0 1px rgba(239, 68, 68, 0.35),
		inset 2px 2px 0 0 rgba(34, 197, 94, 0.25);
}

/* モバイル（480px 以下）：インジケータは少し小さく */
@media (max-width: 480px) {
	.tbp-cal-root .tbp-cell-indicator {
		font-size: 10px;
		padding: 0 2px;
	}
}

/* ---- モーダル内：WBGT セクション ---- */
.tbp-cal-root .tbp-cal-dialog-wbgt {
	background: var(--tbp-bg);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	margin-top: var(--tbp-sp-3);
}

.tbp-cal-root .tbp-cal-dialog-wbgt--danger {
	background: #FEF2F2;
	border-color: #FCA5A5;
}

.tbp-cal-root .tbp-cal-dialog-wbgt--warn {
	background: #FFFBEB;
	border-color: #FCD34D;
}

.tbp-cal-root .tbp-cal-dialog-wbgt--caution {
	background: #F0FDF4;
	border-color: #86EFAC;
}

.tbp-cal-root .tbp-cal-dialog-wbgt-body {
	display: flex;
	align-items: center;
	gap: var(--tbp-sp-2);
	flex-wrap: wrap;
}

.tbp-cal-root .tbp-cal-dialog-wbgt-icon {
	font-size: 20px;
	line-height: 1;
}

.tbp-cal-root .tbp-cal-dialog-wbgt-label {
	font-weight: 700;
	color: var(--tbp-text-primary);
}

.tbp-cal-root .tbp-cal-dialog-wbgt-value-wrap {
	font-size: var(--tbp-fs-base);
	color: var(--tbp-text-secondary);
}

.tbp-cal-root .tbp-cal-dialog-wbgt-value-wrap strong {
	font-family: var(--tbp-font-num);
	font-size: var(--tbp-fs-lg);
	color: var(--tbp-text-primary);
}

.tbp-cal-root .tbp-cal-dialog-wbgt-hint {
	font-size: var(--tbp-fs-xs);
	color: var(--tbp-text-secondary);
	margin: var(--tbp-sp-2) 0 0;
	line-height: 1.5;
}

/* ---- モーダル内：Gトレンドセクション ---- */
.tbp-cal-root .tbp-cal-dialog-gtrend {
	background: var(--tbp-bg);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	margin-top: var(--tbp-sp-3);
}

.tbp-cal-root .tbp-cal-dialog-gtrend--surge {
	background: #F0FDF4;
	border-color: #86EFAC;
}

.tbp-cal-root .tbp-cal-dialog-gtrend--drop {
	background: #EFF6FF;
	border-color: #93C5FD;
}

.tbp-cal-root .tbp-cal-dialog-gtrend-body {
	display: flex;
	align-items: center;
	gap: var(--tbp-sp-2);
}

.tbp-cal-root .tbp-cal-dialog-gtrend-icon {
	font-size: 20px;
	line-height: 1;
}

.tbp-cal-root .tbp-cal-dialog-gtrend-label {
	font-weight: 700;
	color: var(--tbp-text-primary);
}

.tbp-cal-root .tbp-cal-dialog-gtrend-detail {
	font-size: var(--tbp-fs-base);
	color: var(--tbp-text-secondary);
	margin: var(--tbp-sp-1) 0 0;
}

.tbp-cal-root .tbp-cal-dialog-gtrend-hint {
	font-size: var(--tbp-fs-xs);
	color: var(--tbp-text-secondary);
	margin: var(--tbp-sp-2) 0 0;
	line-height: 1.5;
}

/* ---- モーダル内：前年同日比較セクション ---- */
.tbp-cal-root .tbp-cal-dialog-prevyear {
	background: var(--tbp-bg);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	margin-top: var(--tbp-sp-3);
}

.tbp-cal-root .tbp-cal-dialog-prevyear-body {
	display: flex;
	align-items: center;
	gap: var(--tbp-sp-2);
	flex-wrap: wrap;
	color: var(--tbp-text-primary);
}

.tbp-cal-root .tbp-cal-dialog-prevyear-icon {
	font-size: 20px;
	line-height: 1;
}

.tbp-cal-root .tbp-cal-dialog-prevyear-date {
	font-weight: 600;
}

.tbp-cal-root .tbp-cal-dialog-prevyear-sep {
	color: var(--tbp-text-secondary);
	font-weight: 700;
}

.tbp-cal-root .tbp-cal-dialog-prevyear-level {
	font-family: var(--tbp-font-num);
	font-weight: 700;
	color: var(--tbp-navy);
}

.tbp-cal-root .tbp-cal-dialog-prevyear-diff {
	font-size: var(--tbp-fs-base);
	color: var(--tbp-text-secondary);
	margin: var(--tbp-sp-2) 0 0;
	font-weight: 500;
}

/* basis セクション：v2.4.7 でハイブリッド表示に移行（旧 li ベースセレクタは廃止） */
/* extra reasons は v2.4.7 では同じ items 配列に統合され、カテゴリ色で表示 */

/* ハイコントラストモード */
@media (prefers-contrast: more) {
	.tbp-cal-root .tbp-cell-indicator {
		outline: 1px solid rgba(0, 0, 0, 0.5);
	}
	.tbp-cal-root .tbp-cal-dialog-wbgt,
	.tbp-cal-root .tbp-cal-dialog-gtrend,
	.tbp-cal-root .tbp-cal-dialog-prevyear,
	.tbp-cal-root .tbp-cal-dialog-attractions {
		border-width: 2px;
	}
}

/* ====================================================================
 * v2.2: 主要アトラクション別待ち時間セクション
 * ==================================================================== */
.tbp-cal-root .tbp-cal-dialog-attractions {
	background: var(--tbp-bg);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	margin-top: var(--tbp-sp-3);
}

/* v2.2.1: park 別テーマカラー（変な線問題を解消）
 * グラデーション境界・色付きborderが上部に線として見える問題があったため
 * 背景を白に統一・borderを通常色に変更。park識別はタブのアクティブカラーで十分。
 */
.tbp-cal-root .tbp-cal-dialog-attractions--tdl,
.tbp-cal-root .tbp-cal-dialog-attractions--tds {
	background: #FFFFFF;
	border-color: var(--tbp-border);
}

/* セクション見出しの「予想/実績」ピル */
.tbp-cal-root .tbp-cal-dialog-attractions-mode {
	display: inline-block;
	margin-left: var(--tbp-sp-2);
	padding: 2px 8px;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	letter-spacing: 0.02em;
	border-radius: 999px;
	vertical-align: middle;
}

.tbp-cal-root .tbp-cal-dialog-attractions-mode--actual {
	background: #DCFCE7;
	color: #166534;
}

.tbp-cal-root .tbp-cal-dialog-attractions-mode--predicted {
	background: #FEF3C7;
	color: #92400E;
}

/* park 切替タブ */
.tbp-cal-root .tbp-cal-dialog-attractions-tabs {
	display: flex;
	gap: var(--tbp-sp-2);
	margin: var(--tbp-sp-3) 0 var(--tbp-sp-2);
	flex-wrap: wrap;
}
/* v2.4.0: hidden 属性を強制尊重（lgl/usj 単一ビューでタブ非表示・レゴランド時代から残存していたバグ修正） */
.tbp-cal-root .tbp-cal-dialog-attractions-tabs[hidden] {
	display: none !important;
}

.tbp-cal-root .tbp-cal-dialog-attractions-tab {
	flex: 1 1 auto;
	min-width: 80px;
	padding: 8px 14px;
	font-size: var(--tbp-fs-base);
	font-weight: 700;
	color: var(--tbp-text-secondary);
	background: #FFFFFF;
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
	min-height: 44px; /* タップターゲット確保 */
}

.tbp-cal-root .tbp-cal-dialog-attractions-tab:hover {
	background: #F3F4F6;
}

.tbp-cal-root .tbp-cal-dialog-attractions-tab.is-active[data-tbp-attractions-park="tdl"] {
	background: #FB7185;
	color: #FFFFFF;
	border-color: #FB7185;
}

.tbp-cal-root .tbp-cal-dialog-attractions-tab.is-active[data-tbp-attractions-park="tds"] {
	background: #38BDF8;
	color: #FFFFFF;
	border-color: #38BDF8;
}

.tbp-cal-root .tbp-cal-dialog-attractions-tab:focus-visible {
	outline: 2px solid var(--tbp-accent);
	outline-offset: 2px;
}

/* v2.2.1: テーブル枠線除去
 * タブとテーブルの間に「変な線」として見える灰色枠線を撤去
 * テーブル内の行区切り線（thead bottom + row bottom）だけで十分視認可能
 */
.tbp-cal-root .tbp-cal-attractions-table-wrap {
	overflow-x: auto;
	margin: var(--tbp-sp-2) 0 0;
	background: #FFFFFF;
	border: none;
	border-radius: var(--tbp-radius-md);
}

.tbp-cal-root .tbp-cal-attractions-table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--tbp-fs-base);
	border: none;
}

/* v2.2.1: テーブル内の余分なborderを全てリセット */
.tbp-cal-root .tbp-cal-attractions-table,
.tbp-cal-root .tbp-cal-attractions-table tr,
.tbp-cal-root .tbp-cal-attractions-table th,
.tbp-cal-root .tbp-cal-attractions-table td {
	border-top: none;
	border-left: none;
	border-right: none;
}

.tbp-cal-root .tbp-cal-attractions-table thead th {
	background: #F9FAFB;
	color: var(--tbp-text-secondary);
	text-align: left;
	font-size: var(--tbp-fs-sm);
	font-weight: 600;
	padding: 8px 12px;
	border-bottom: 1px solid var(--tbp-border);
}

.tbp-cal-root .tbp-cal-attractions-th-wait {
	text-align: right;
	width: 30%;
}

.tbp-cal-root .tbp-cal-attractions-row {
	border-bottom: 1px solid #F3F4F6;
}

.tbp-cal-root .tbp-cal-attractions-row:last-child {
	border-bottom: none;
}

.tbp-cal-root .tbp-cal-attractions-name {
	padding: 10px 12px;
	color: var(--tbp-text-primary);
	font-weight: 500;
	line-height: 1.4;
}

.tbp-cal-root .tbp-cal-attractions-wait {
	padding: 10px 12px;
	text-align: right;
	font-family: var(--tbp-font-num);
	white-space: nowrap;
}

.tbp-cal-root .tbp-cal-attractions-wait-num {
	font-size: var(--tbp-fs-lg);
	font-weight: 800;
	color: var(--tbp-text-primary);
}

.tbp-cal-root .tbp-cal-attractions-wait-unit {
	margin-left: 2px;
	font-size: var(--tbp-fs-xs);
	font-weight: 500;
	color: var(--tbp-text-secondary);
}

.tbp-cal-root .tbp-cal-attractions-closed,
.tbp-cal-root .tbp-cal-attractions-na {
	color: var(--tbp-text-soft);
	font-size: var(--tbp-fs-sm);
	font-style: italic;
}

/* ヒント文 */
.tbp-cal-root .tbp-cal-dialog-attractions-hint {
	margin: var(--tbp-sp-2) 0 0;
	font-size: var(--tbp-fs-xs);
	color: var(--tbp-text-secondary);
	line-height: 1.5;
}

/* スマホ最適化（480px 以下）：余白とフォントを少し詰める */
@media (max-width: 480px) {
	.tbp-cal-root .tbp-cal-dialog-attractions {
		padding: var(--tbp-sp-2) var(--tbp-sp-3);
	}
	.tbp-cal-root .tbp-cal-attractions-name {
		padding: 8px 10px;
		font-size: var(--tbp-fs-sm);
	}
	.tbp-cal-root .tbp-cal-attractions-wait {
		padding: 8px 10px;
	}
	.tbp-cal-root .tbp-cal-attractions-wait-num {
		font-size: var(--tbp-fs-base);
	}
	.tbp-cal-root .tbp-cal-dialog-attractions-tab {
		padding: 6px 10px;
		font-size: var(--tbp-fs-sm);
		min-height: 40px;
	}
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
	.tbp-cal-root .tbp-cal-dialog-attractions-tab {
		transition: none;
	}
}



/* v2.2.3: クレジット区切り */
.tbp-cal-root .tbp-cal-credit-sep {
	color: var(--tbp-text-soft);
	margin: 0 var(--tbp-sp-1);
}


/* v2.2.6: チケット価格の注記 */
.tbp-cal-root .tbp-cal-dialog-ticket-note {
	margin-top: var(--tbp-sp-1);
	padding: 0 var(--tbp-sp-3);
	/* v2.5.90: 10px + <small> の 0.8em で実質8pxになり読めなかった（stella指摘）。
	   文字色も薄すぎたので本文に近づける。<small> の縮小は inherit で打ち消す。
	   v2.5.90b: 12px は大きすぎたので 11px（元の10pxとの中間・stella指示）。 */
	color: var(--tbp-text-secondary);
	font-size: 11px;
	line-height: 1.6;
}
.tbp-cal-root .tbp-cal-dialog-ticket-note small { font-size: inherit; }
.tbp-cal-root .tbp-cal-dialog-ticket-note a {
	color: var(--tbp-text-secondary);
	text-decoration: underline;
}

/* v2.2.8: モーダルタイトル「2026/05/15(金)」を視覚非表示
 * 上部ヒーロー部分に日付が既に表示されているため冗長
 * ARIA用にDOM上は保持・スクリーンリーダー対応維持
 */
.tbp-cal-root .tbp-cal-dialog-hero-title {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* v2.4.70: compact today summary, inserted above the month header */
.tbp-cal-root .tbp-today-summary {
	background: var(--tbp-surface);
	border-top: 1px solid var(--tbp-border);
	border-bottom: 1px solid var(--tbp-border);
	padding: var(--tbp-sp-4) var(--tbp-sp-6);
}

.tbp-cal-root .tbp-today-summary__inner {
	background: linear-gradient(180deg, var(--tbp-park-accent-soft), var(--tbp-surface));
	border: 1px solid var(--tbp-border);
	border-left: 5px solid var(--tbp-park-accent);
	border-radius: var(--tbp-radius-md);
	box-shadow: var(--tbp-shadow-xs);
	padding: var(--tbp-sp-4);
}

.tbp-cal-root .tbp-today-summary__head {
	align-items: center;
	display: flex;
	gap: var(--tbp-sp-3);
	justify-content: space-between;
}

.tbp-cal-root .tbp-today-summary__eyebrow {
	color: var(--tbp-park-accent-dark);
	font-size: var(--tbp-fs-sm);
	font-weight: 800;
	line-height: 1.2;
	margin: 0 0 var(--tbp-sp-1);
}

.tbp-cal-root .tbp-today-summary__title {
	color: var(--tbp-text-primary);
	font-size: var(--tbp-fs-lg);
	font-weight: 800;
	line-height: 1.35;
	margin: 0;
}

.tbp-cal-root .tbp-today-summary__level {
	align-items: center;
	background: var(--tbp-surface);
	border: 1px solid var(--tbp-park-accent);
	border-radius: var(--tbp-radius-pill);
	color: var(--tbp-park-accent-dark);
	display: flex;
	flex: 0 0 auto;
	gap: 6px;
	min-height: 42px;
	padding: 7px 12px;
	white-space: nowrap;
}

.tbp-cal-root .tbp-today-summary__emoji {
	font-family: var(--tbp-font-emoji);
	font-size: 18px;
	line-height: 1;
}

.tbp-cal-root .tbp-today-summary__metrics {
	display: grid;
	gap: var(--tbp-sp-2);
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin-top: var(--tbp-sp-3);
}

.tbp-cal-root .tbp-today-summary__metrics div,
.tbp-cal-root .tbp-today-summary__point,
.tbp-cal-root .tbp-today-summary__actual {
	background: rgba(255, 255, 255, 0.78);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
}

.tbp-cal-root .tbp-today-summary__metrics div {
	padding: 9px 10px;
}

.tbp-cal-root .tbp-today-summary__metrics span {
	color: var(--tbp-text-secondary);
	display: block;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	line-height: 1.3;
}

.tbp-cal-root .tbp-today-summary__metrics strong {
	color: var(--tbp-text-primary);
	display: block;
	font-size: var(--tbp-fs-base);
	line-height: 1.35;
	margin-top: 2px;
}

.tbp-cal-root .tbp-today-summary__point,
.tbp-cal-root .tbp-today-summary__actual {
	margin-top: var(--tbp-sp-3);
	padding: var(--tbp-sp-3);
}

.tbp-cal-root .tbp-today-summary__point strong,
.tbp-cal-root .tbp-today-summary__actual strong {
	color: var(--tbp-park-accent-dark);
	display: block;
	font-size: var(--tbp-fs-base);
	margin-bottom: 6px;
}

.tbp-cal-root .tbp-today-summary__point p {
	color: var(--tbp-text-primary);
	font-size: var(--tbp-fs-sm);
	line-height: 1.55;
	margin: 3px 0 0;
}

.tbp-cal-root .tbp-today-summary__actual dl {
	display: grid;
	gap: 6px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 0;
}

.tbp-cal-root .tbp-today-summary__actual div {
	background: var(--tbp-surface);
	border-radius: var(--tbp-radius-sm);
	padding: 7px 8px;
}

.tbp-cal-root .tbp-today-summary__actual dt {
	color: var(--tbp-text-secondary);
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
}

.tbp-cal-root .tbp-today-summary__actual dd {
	color: var(--tbp-text-primary);
	font-size: var(--tbp-fs-sm);
	font-weight: 800;
	margin: 1px 0 0;
}

.tbp-cal-root .tbp-today-summary__details {
	align-items: center;
	background: var(--tbp-park-accent-dark);
	border: 0;
	border-radius: var(--tbp-radius-md);
	color: #fff;
	cursor: pointer;
	display: inline-flex;
	font-size: var(--tbp-fs-base);
	font-weight: 800;
	justify-content: center;
	line-height: 1.2;
	margin-top: var(--tbp-sp-3);
	min-height: 42px;
	padding: 10px 16px;
}

.tbp-cal-root .tbp-today-summary__details:hover,
.tbp-cal-root .tbp-today-summary__details:focus-visible {
	background: var(--tbp-park-accent);
	outline: 2px solid var(--tbp-park-accent-soft);
	outline-offset: 2px;
}

.tbp-cal-root .tbp-today-summary__note,
.tbp-cal-root .tbp-today-summary__data-note,
.tbp-cal-root .tbp-today-summary__loading {
	color: var(--tbp-text-secondary);
	font-size: var(--tbp-fs-xs);
	line-height: 1.5;
	margin: var(--tbp-sp-2) 0 0;
}

@media (max-width: 640px) {
	.tbp-cal-root .tbp-today-summary {
		padding: var(--tbp-sp-3);
	}
	.tbp-cal-root .tbp-today-summary__inner {
		padding: var(--tbp-sp-3);
	}
	.tbp-cal-root .tbp-today-summary__head {
		align-items: flex-start;
		flex-direction: column;
	}
	.tbp-cal-root .tbp-today-summary__title {
		font-size: var(--tbp-fs-md);
	}
	.tbp-cal-root .tbp-today-summary__metrics,
	.tbp-cal-root .tbp-today-summary__actual dl {
		grid-template-columns: 1fr;
	}
	.tbp-cal-root .tbp-today-summary__details {
		width: 100%;
	}
}

/* ====================================================================
 * v2.4.74: 静的簡易月間表（SEO/AIO・非JS環境向け）
 * JS非実行のクローラー/環境にもカレンダー内容を提供する <details> テキスト表
 * ==================================================================== */
.tbp-cal-root .tbp-cal-static-summary {
	margin: var(--tbp-sp-4) 0;
	font-size: var(--tbp-fs-sm);
	color: var(--tbp-text-primary);
}
.tbp-cal-root .tbp-cal-static-summary > summary {
	cursor: pointer;
	font-weight: 600;
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: var(--tbp-surface);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	text-align: center; /* v2.4.76: stella指示 2026-07-02（中央寄せの方がきれい） */
}
.tbp-cal-root .tbp-cal-static-summary > summary:hover {
	border-color: var(--tbp-park-accent);
}
.tbp-cal-root .tbp-cal-static-note {
	color: var(--tbp-text-secondary);
	font-size: var(--tbp-fs-xs);
	line-height: 1.6;
	margin: var(--tbp-sp-2) 0 0;
}
/* v2.5.44: アトラクション実測表は列が多くスマホで入りきらないため、横スクロールで逃がす */
.tbp-cal-root .tbp-cal-static-attr-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	max-width: 100%;
}
.tbp-cal-root .tbp-cal-static-attr-wrap .tbp-cal-static-attr-table {
	min-width: 340px;
}
/* v2.5.68: 折りたたみから出して本文の中に置いたので、本文寸法へ（10px→13px）。
   3ヶ月の日別表（.tbp-cal-static-table）は折りたたみのままなので触らない。 */
.tbp-cal-root .tbp-cal-attr-stats { margin: 0 0 var(--tbp-sp-4); }
.tbp-cal-root .tbp-cal-attr-stats .tbp-cal-static-attr-table th,
.tbp-cal-root .tbp-cal-attr-stats .tbp-cal-static-attr-table td {
	font-size: var(--tbp-fs-base);
	padding: 7px 10px;
}
/* 見出しは置き場所によって継承元が変わる（旧格納先の details は 11px を持っていた）。
   昇格して独立した表になったので、セル(13px)より大きく明示指定して表題として立たせる。 */
.tbp-cal-root .tbp-cal-attr-stats .tbp-cal-static-attr-table caption {
	font-size: var(--tbp-fs-md);
	line-height: 1.5;
	padding-bottom: var(--tbp-sp-1);
}
.tbp-cal-root .tbp-cal-attr-stats .tbp-cal-static-note { font-size: var(--tbp-fs-sm); }

.tbp-cal-root .tbp-cal-static-table,
.tbp-cal-root .tbp-cal-static-attr-table {
	width: 100%;
	border-collapse: collapse;
	margin: var(--tbp-sp-3) 0 var(--tbp-sp-2);
}
.tbp-cal-root .tbp-cal-static-table caption,
.tbp-cal-root .tbp-cal-static-attr-table caption {
	text-align: left;
	font-weight: 600;
	padding: var(--tbp-sp-1) 0;
	caption-side: top;
}
.tbp-cal-root .tbp-cal-static-table th,
.tbp-cal-root .tbp-cal-static-table td,
.tbp-cal-root .tbp-cal-static-attr-table th,
.tbp-cal-root .tbp-cal-static-attr-table td {
	border: 1px solid var(--tbp-border);
	padding: var(--tbp-sp-1) var(--tbp-sp-2);
	text-align: left;
	vertical-align: top;
	font-size: var(--tbp-fs-xs);
	line-height: 1.5;
}
/* v2.5.66: color の指定漏れ。背景を var(--tbp-surface)=#FFFFFF に上書きしていたため、
   Cocoon の .entry-content table th { color:#fff } が残り、
   白文字×純白背景で見出しが完全に消えていた（2026-08-24 stella指摘・本番で実測 差0）。
   「平日の平均待ち／土日祝の平均待ち／直近30日の最長」が読めず、数字の意味が不明だった。
   v2.5.64 の .tbp-rt-table thead th と同じ直し方。カード内の表と同じ文字色にそろえる。 */
.tbp-cal-root .tbp-cal-static-table thead th,
.tbp-cal-root .tbp-cal-static-attr-table thead th {
	background: var(--tbp-surface);
	color: var(--tbp-text-secondary);
	white-space: nowrap;
}

/* ====================================================================
 * v2.4.78: 「今月のカレンダーへ」ジャンプボタン（Codex監査⑤-A）
 * ==================================================================== */
.tbp-cal-root .tbp-cal-jump {
	margin: var(--tbp-sp-2) 0 var(--tbp-sp-3);
	text-align: center;
}
.tbp-cal-root .tbp-cal-jump-btn {
	display: inline-block;
	padding: var(--tbp-sp-2) var(--tbp-sp-4);
	background: var(--tbp-park-accent-soft);
	color: var(--tbp-park-accent-dark);
	border: 1px solid var(--tbp-park-accent);
	border-radius: 999px;
	font-size: var(--tbp-fs-sm);
	font-weight: 600;
	text-decoration: none;
}
.tbp-cal-root .tbp-cal-jump-btn:hover {
	background: var(--tbp-park-accent);
	color: #fff;
}
/* ====================================================================
 * v2.5.73: 今日エリア直下の「いまの待ち時間」への内部リンク1行
 *   同じ役割の「今月のカレンダーへ」（.tbp-cal-jump-btn）と同系色にそろえる。
 *   ただし枠線は付けない＝塗りだけ。ボタンが2つ並ぶと主従が分からなくなるので、
 *   こちらは一段控えめなリンク行にとどめる。
 * ==================================================================== */
/* v2.5.117: 薄い塗りだけの「タグ」の形だと押せるものに見えず、読者に気づかれていなかった
   （GA4 8/11〜9/7 の実測＝カレンダー5ページ 73,217 表示に対し待ち時間5ページ 394 表示＝0.5%）。
   枠のあるボタンにして、今日・明日ブロックの中では他の帯と同じ箱に入れる（stella指摘 2026-09-08）。 */
.tbp-cal-root .tbp-cal-wt-link {
	margin: var(--tbp-sp-3) 0 var(--tbp-sp-4);
}
.tbp-cal-root .tbp-tt2-bar--wt .tbp-cal-wt-link {
	margin: 10px 0 0;
}
.tbp-cal-root .tbp-cal-wt-link a {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	box-sizing: border-box;
	width: 100%;
	/* PCで間延びしないように上限を付け、中央に置く */
	max-width: 520px;
	margin: 0 auto;
	padding: 12px 16px;
	/* スマホのタップ領域。この導線はスマホ読者を待ち時間ページへ送るためのものなので、
	   押しやすさを見た目の控えめさより優先する（旧版は600px以下でだけ44pxにしていた）。 */
	min-height: 48px;
	border: 2px solid var(--tbp-park-accent);
	border-radius: 12px;
	background: #fff;
	color: var(--tbp-park-accent-dark);
	/* 11px（--tbp-fs-sm）だと本文16pxの中で読まれない。v2.5.65・v2.5.68 と同じ理由で本文寸法にする。 */
	font-size: var(--tbp-fs-base);
	font-weight: 700;
	line-height: 1.4;
	text-align: center;
	text-decoration: none;
}
.tbp-cal-root .tbp-cal-wt-link a:hover,
.tbp-cal-root .tbp-cal-wt-link a:focus-visible {
	background: var(--tbp-park-accent);
	color: #fff;
}
.tbp-cal-root .tbp-cal-wt-link__arrow {
	flex: 0 0 auto;
	font-weight: 700;
}
/* v2.5.117: 折り返しは「パーク名＋の」と「『いまの待ち時間』をぜんぶ見る」の境目でだけ起きるようにする。
   かたまりごと inline-block にすると、そこ以外では改行されない（語の途中で割れない）。 */
.tbp-cal-root .tbp-cal-wt-link__text {
	min-width: 0;
}
.tbp-cal-root .tbp-cal-wt-link__part {
	display: inline-block;
}
/* 帯の箱。宿=青・チケット=琥珀・答え合わせ=灰 と並ぶので、ここはパークの色にする。 */
.tbp-cal-root .tbp-tt2-bar--wt {
	background: var(--tbp-park-accent-soft);
	border-color: var(--tbp-park-accent);
}
.tbp-cal-root .tbp-tt .tbp-tt2-bar--wt .tbp-tt2-bartitle {
	color: var(--tbp-park-accent-dark);
}
.tbp-cal-root .tbp-cal-grid-wrap {
	scroll-margin-top: 72px;
}

/* ====================================================================
 * v2.4.79: 空いている日TOP5（Codex監査⑤-B）
 * ==================================================================== */
.tbp-cal-root .tbp-cal-quiet-days {
	margin: var(--tbp-sp-4) 0;
	padding: var(--tbp-sp-3) var(--tbp-sp-4);
	background: var(--tbp-surface);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
}
.tbp-cal-root .tbp-cal-quiet-title {
	margin: 0 0 var(--tbp-sp-2);
	font-size: var(--tbp-fs-md);
	font-weight: 700; /* v2.5.43: h3→div で失うブラウザ既定の太字を明示指定 */
	text-align: center;
}
.tbp-cal-root .tbp-cal-quiet-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.tbp-cal-root .tbp-cal-quiet-list li + li {
	border-top: 1px dashed var(--tbp-border);
}
.tbp-cal-root .tbp-cal-quiet-row {
	display: flex;
	align-items: center;
	gap: var(--tbp-sp-3);
	width: 100%;
	padding: var(--tbp-sp-2) var(--tbp-sp-1);
	background: none;
	border: 0;
	cursor: pointer;
	font-size: var(--tbp-fs-sm);
	color: var(--tbp-text-primary);
	text-align: left;
}
.tbp-cal-root .tbp-cal-quiet-row:hover {
	background: var(--tbp-park-accent-soft);
}
.tbp-cal-root .tbp-cal-quiet-rank {
	font-weight: 700;
	color: var(--tbp-park-accent-dark);
	min-width: 2.5em;
}
.tbp-cal-root .tbp-cal-quiet-date {
	flex: 1;
}
.tbp-cal-root .tbp-cal-quiet-badge {
	font-size: var(--tbp-fs-xs);
	padding: 2px 10px;
	border-radius: 999px;
	background: var(--tbp-park-accent-soft);
	color: var(--tbp-park-accent-dark);
	border: 1px solid var(--tbp-park-accent);
	white-space: nowrap;
}
.tbp-cal-root .tbp-cal-quiet-note {
	margin: var(--tbp-sp-2) 0 0;
	font-size: var(--tbp-fs-xs);
	color: var(--tbp-text-secondary);
}

/* ====================================================================
 * v2.4.80: 日付詳細ポップアップの一文要約（Codex監査⑤-C）
 * ==================================================================== */
.tbp-cal-root .tbp-cal-dialog-oneliner {
	margin: var(--tbp-sp-2) 0 var(--tbp-sp-3);
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: var(--tbp-park-accent-soft);
	border-left: 4px solid var(--tbp-park-accent);
	border-radius: 0;
	font-size: var(--tbp-fs-sm);
	line-height: 1.7;
	color: var(--tbp-text-primary);
}

/* ====================================================================
 * v2.4.81: 混雑度連動CTA（Codex監査⑤-D・ポップアップ下部）
 * ==================================================================== */
.tbp-cal-root .tbp-cal-dialog-cta {
	margin: var(--tbp-sp-3) 0;
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: var(--tbp-surface);
	border: 1px dashed var(--tbp-border);
	border-radius: var(--tbp-radius-md);
}
.tbp-cal-root .tbp-cal-dialog-cta-text {
	margin: 0 0 var(--tbp-sp-2);
	font-size: var(--tbp-fs-xs);
	line-height: 1.6;
	color: var(--tbp-text-secondary);
}
.tbp-cal-root .tbp-cal-dialog-cta-btn {
	display: inline-block;
	padding: var(--tbp-sp-1) var(--tbp-sp-3);
	background: none;
	border: 1px solid var(--tbp-park-accent);
	border-radius: 999px;
	color: var(--tbp-park-accent-dark);
	font-size: var(--tbp-fs-xs);
	font-weight: 600;
	cursor: pointer;
}
.tbp-cal-root .tbp-cal-dialog-cta-btn:hover {
	background: var(--tbp-park-accent-soft);
}


/* ================================
 * v2.4.83: 精度スコア算出方法（開閉式・E-E-A-T）
 * ================================ */
.tbp-cal-root .tbp-cal-accuracy-how {
	margin: var(--tbp-sp-1) 0 var(--tbp-sp-2);
	font-size: 12px; /* v2.4.118: 10px→12px（stella GO 2026-07-11・開閉リンクと本文の読みやすさ） */
	color: var(--tbp-text-secondary);
	text-align: left;
}
.tbp-cal-root .tbp-cal-accuracy-how summary {
	display: inline-block;
	cursor: pointer;
	color: var(--tbp-text-soft);
	text-decoration: underline;
	text-underline-offset: 2px;
	padding: 5px 2px; /* v2.4.118: タップ領域拡大（高さ約15px→約25px） */
}
.tbp-cal-root .tbp-cal-accuracy-how summary:hover {
	color: var(--tbp-text-primary);
}
.tbp-cal-root .tbp-cal-accuracy-how[open] summary {
	margin-bottom: var(--tbp-sp-1);
}
.tbp-cal-root .tbp-cal-accuracy-how p {
	margin: 0;
	padding: var(--tbp-sp-2);
	background: var(--tbp-surface);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	line-height: 1.7;
}

/* ================================
 * v2.5.5: 精度3窓成績表（30日/90日/全期間・透明性公開・stella発案 2026-07-16）
 * 説明文ボックスと同じ面材でパネル内に続ける。テーマ側 .entry-content table の
 * 装飾（紺ヘッダー・縞行）に負けないよう tbody tr td まで書いて特異度を確保。
 * ================================ */
.tbp-cal-root .tbp-cal-accuracy-stats {
	margin-top: var(--tbp-sp-1);
	padding: var(--tbp-sp-2);
	background: var(--tbp-surface);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
}
.tbp-cal-root .tbp-cal-accuracy-stats-lead {
	margin: 0 0 6px;
	line-height: 1.6;
}
.tbp-cal-root table.tbp-cal-accuracy-stats-table {
	width: 100%;
	border-collapse: collapse;
	margin: 0;
	font-size: 12px;
	background: #fff;
	box-shadow: none;
}
.tbp-cal-root table.tbp-cal-accuracy-stats-table thead tr th {
	background: var(--tbp-surface);
	color: var(--tbp-text-secondary);
	font-weight: 700;
	border: 1px solid var(--tbp-border);
	padding: 4px 8px;
	text-align: left;
	line-height: 1.5;
}
.tbp-cal-root table.tbp-cal-accuracy-stats-table tbody tr td {
	background: #fff;
	color: var(--tbp-text-secondary);
	border: 1px solid var(--tbp-border);
	padding: 4px 8px;
	text-align: left;
	line-height: 1.5;
}
.tbp-cal-root table.tbp-cal-accuracy-stats-table tbody tr td.tbp-num {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

/* ===== v2.4.84: 診断型ホテルCTA ===== */
.tbp-cal-root .tbp-shindan-q { font-size: 14px; font-weight: 700; margin: 14px 0 8px; color: #1e293b; }
.tbp-cal-root .tbp-shindan-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tbp-cal-root .tbp-shindan-chip { font-size: 13px; padding: 8px 14px; border: 1px solid #bae6fd; border-radius: 999px; background: #fff; color: #0c4a6e; cursor: pointer; line-height: 1.2; }
.tbp-cal-root .tbp-shindan-chip:hover { background: #f0f9ff; }
.tbp-cal-root .tbp-shindan-chip.is-selected { background: #f0f9ff; border-color: #0ea5e9; color: #0369a1; font-weight: 700; }
.tbp-cal-root .tbp-shindan-card { border: 1px solid #e2e8f0; border-radius: 10px; background: #fff; padding: 14px 16px; margin-top: 12px; }
.tbp-cal-root .tbp-shindan.tbp-shindan-js .tbp-shindan-card { display: none; }
.tbp-cal-root .tbp-shindan.tbp-shindan-js .tbp-shindan-card.is-active { display: block; }
.tbp-cal-root .tbp-shindan-card-lead { font-size: 13px; color: #334155; margin: 0 0 10px; }
.tbp-cal-root .tbp-shindan-btn { text-align: center; }
.tbp-cal-root .tbp-shindan-btn a { display: inline-block; width: 100%; max-width: 420px; box-sizing: border-box; background: #0ea5e9; color: #fff !important; font-weight: 700; font-size: 15px; padding: 12px 16px; border-radius: 8px; text-decoration: none; }
.tbp-cal-root .tbp-shindan-btn a:hover { background: #0284c7; }
.tbp-cal-root .tbp-shindan-pr { display: inline-block; font-size: 11px; color: #64748b; border: 1px solid #cbd5e1; border-radius: 4px; padding: 0 5px; margin-right: 8px; vertical-align: middle; }
.tbp-cal-root .tbp-shindan-card-note { font-size: 12px; color: #64748b; margin: 10px 0 0; line-height: 1.6; }
.tbp-cal-root .tbp-shindan-card-sub { font-size: 12px; color: #475569; margin: 8px 0 0; }
.tbp-cal-root .tbp-shindan-card-sub a { color: #0369a1; }
.tbp-cal-root .tbp-shindan-hint { font-size: 13px; color: #94a3b8; margin: 12px 0 0; text-align: center; }

/* ===== v2.4.88: フロントページQ0 ===== */
/* v2.5.28: 「Q0.」見出し行を削除したため、パーク切替チップ行を全幅（grid 1/-1）で導入文の直下に置く（従来は見出し=左列・チップ=右列の並び） */
.tbp-cal-root .tbp-shindan-q0-chips { grid-column: 1 / -1; margin: 2px 0 6px; }
.tbp-cal-root .tbp-shindan-park-panel { margin-top: 8px; }
.tbp-cal-root .tbp-shindan-q0-js .tbp-shindan-park-panel { display: none; }
.tbp-cal-root .tbp-shindan-q0-js .tbp-shindan-park-panel.is-active { display: block; }

/* v2.4.105: フロント診断（park切替）の active パネルを、パークページと同じ2カラムに揃える
   （左=ホテル診断 / 右=チケット）。パーク実装(.tbp-cal-partner-cta の 1fr 1fr)の再利用。
   診断JSがinlineで display:block を当てるため、display のみ !important で上書きする。
   スマホ(<=600px)は1カラムで縦積み（パークページと同じ挙動）。表示のみ・他は無変更。 */
.tbp-cal-root .tbp-shindan-q0-js .tbp-shindan-park-panel.is-active {
	display: grid !important;
	grid-template-columns: 1fr 1fr;
	gap: var(--tbp-sp-3);
	grid-column: 1 / -1;
	align-items: start;
}
@media (max-width: 600px) {
	.tbp-cal-root .tbp-shindan-q0-js .tbp-shindan-park-panel.is-active {
		grid-template-columns: 1fr !important;
	}
}

/* ===== v2.4.89: 日付連動の空室目安 ===== */
.tbp-cal-dialog .tbp-cal-dialog-vacancy { margin: 14px 6px 6px; padding: 12px 14px; background: #f0f9ff; border-left: 4px solid #0ea5e9; border-radius: 4px; text-align: left; }
.tbp-cal-dialog .tbp-vacancy-label { font-size: 12px; font-weight: 700; color: #0c4a6e; margin: 0 0 8px; }
.tbp-cal-dialog .tbp-vacancy-list { list-style: none; margin: 0; padding: 0; }
.tbp-cal-dialog .tbp-vacancy-list li { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 13px; padding: 6px 0; border-bottom: 1px dashed #bae6fd; }
.tbp-cal-dialog .tbp-vacancy-list li:last-child { border-bottom: none; }
.tbp-cal-dialog .tbp-vacancy-list a { color: #0369a1; flex: 1; min-width: 0; }
.tbp-cal-dialog .tbp-vacancy-price { white-space: nowrap; font-weight: 700; color: #1e293b; }
.tbp-cal-dialog .tbp-vacancy-note { font-size: 11px; color: #64748b; margin: 8px 0 0; }
.tbp-cal-dialog .tbp-vacancy-loading { font-size: 12px; color: #94a3b8; margin: 0; }
/* v2.5.26: 宿リスト直下→ページ下部の比較枠（早見表＋診断）への導線（stella 2026-08-15） */
.tbp-cal-dialog .tbp-vacancy-more { margin: 10px 0 0; padding-top: 8px; border-top: 1px dashed #bae6fd; text-align: right; }
.tbp-cal-dialog .tbp-vacancy-more-btn { display: inline-block; background: none; border: none; padding: 2px 0; margin: 0; font: inherit; font-size: 12px; font-weight: 700; color: #0369a1; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; text-align: left; }
.tbp-cal-dialog .tbp-vacancy-more-btn:hover { color: #0c4a6e; }

/* ===== v2.4.93: 条件から探す ===== */
.tbp-cal-root .tbp-shindan-conds-title { margin-top: 18px; border-top: 1px dashed #bae6fd; padding-top: 14px; }
/* v2.5.26: 答え先出しの早見表（左箱先頭） */
.tbp-cal-root .tbp-shindan-quick { margin-top: 4px; }
/* v2.5.27: ホテルCTAの2カラム再配置（stella 2026-08-15）＝左箱=早見表+条件から探す／右カラム=チケット箱→「もっと詳しく選ぶ — 2タップ診断」箱の縦積み。
   右カラムはgridの1セルを占め、中の2箱はflex縦積み。診断箱がflex:1で残りを埋め、左右の下端がそろう。スマホ(1カラム)では左箱→チケット箱→診断箱の順に自然に縦並び */
.tbp-cal-root .tbp-cal-partner-cta-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.tbp-cal-root .tbp-cal-partner-cta-col .tbp-cal-partner-cta-box--shindan { flex: 0 0 auto; } /* v2.5.32: 折りたたみ化で自然高さに（v2.5.27のflex:1は展開時の下端揃え用だったが、閉じた空箱が縦に伸びるため廃止） */

/* ===== v2.4.95: 内部リンクカード（バス枝・非PR） ===== */
.tbp-cal-root .tbp-shindan-btn--internal a { display: inline-block; width: 100%; max-width: 420px; box-sizing: border-box; background: #fff; color: #0369a1 !important; font-weight: 700; font-size: 15px; padding: 11px 16px; border: 2px solid #0ea5e9; border-radius: 8px; text-decoration: none; }
.tbp-cal-root .tbp-shindan-btn--internal a:hover { background: #f0f9ff; }
/* v2.4.106: 空いてる日TOP5直後のインライン・ホテルCTA（主従・パーク色・stella 2026-07-07） */
.tbp-cal-root .tbp-cal-inline-hotel-cta { margin: 16px 0; padding: 14px 16px; background: var(--tbp-park-accent-soft, #f0f9ff); border: 1.5px solid var(--tbp-park-accent, #0ea5e9); border-radius: 12px; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-lead { font-size: 13px; line-height: 1.7; color: var(--tbp-park-accent-dark, #0369a1); margin: 0 0 12px; text-align: center; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-btn { text-align: center; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-btn a { display: inline-block; width: 100%; max-width: 420px; box-sizing: border-box; background: var(--tbp-park-accent-dark, #0369a1); color: #fff !important; font-weight: 700; font-size: 15px; padding: 12px 16px; border-radius: 8px; text-decoration: none; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-btn a:hover { filter: brightness(0.94); }
.tbp-cal-root .tbp-cal-inline-hotel-cta-sub { text-align: center; margin: 10px 0 0; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-sub a { font-size: 12px; color: var(--tbp-park-accent-dark, #0369a1); text-decoration: underline; text-underline-offset: 2px; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-mini { border-top: 1px dashed var(--tbp-park-accent, #0ea5e9); margin-top: 12px; padding-top: 11px; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-mini-q { font-size: 12.5px; color: var(--tbp-park-accent-dark, #0369a1); margin: 0 0 8px; text-align: center; }
.tbp-cal-root .tbp-cal-inline-hotel-cta-mini-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.tbp-cal-root .tbp-cal-inline-mini-chip { font-size: 12px; line-height: 1.4; padding: 5px 11px; border-radius: 999px; border: 1px solid var(--tbp-park-accent, #0ea5e9); background: #fff; color: var(--tbp-park-accent-dark, #0369a1); cursor: pointer; }
.tbp-cal-root .tbp-cal-inline-mini-chip:hover { background: var(--tbp-park-accent-soft, #f0f9ff); }
.tbp-cal-root .tbp-cal-inline-mini-chip--none { border-color: #d1d5db; color: #6b7280; }
.tbp-cal-root #tbp-hotel-cta { scroll-margin-top: 72px; }

/* ==========================================================================
   v2.4.101: 営業時間表示・直近の答え合わせ・時間帯別の混み方
   ========================================================================== */

/* モーダルhero内の営業時間（白いパーク名カプセルの中に置かれるため濃色文字＋区切り線。
   v2.4.102: 旧版の白背景+白文字は白カプセル上で不可視だったバグ修正 */
.tbp-cal-root .tbp-cal-dialog-hero-hours {
	border-left: 1px solid var(--tbp-border);
	color: var(--tbp-text-primary);
	display: inline-block;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	margin-left: 8px;
	padding: 0 2px 0 8px;
	white-space: nowrap;
}

/* 今日カード: 営業時間行 */
.tbp-cal-root .tbp-today-summary__hours {
	color: var(--tbp-text-secondary);
	font-size: var(--tbp-fs-sm);
	font-weight: 700;
	margin: 4px 0 0;
}

/* 今日カード: 直近の答え合わせ */
.tbp-cal-root .tbp-today-summary__recent {
	background: rgba(255, 255, 255, 0.78);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	margin-top: var(--tbp-sp-2);
	padding: 10px 12px;
}

.tbp-cal-root .tbp-today-summary__recent strong {
	display: block;
	font-size: var(--tbp-fs-sm);
}

.tbp-cal-root .tbp-today-summary__recent-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 6px;
}

.tbp-cal-root .tbp-today-summary__recent-chip {
	border: 1px solid var(--tbp-border);
	border-radius: 999px;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	padding: 2px 8px;
	white-space: nowrap;
}

.tbp-cal-root .tbp-today-summary__recent-chip.is-hit {
	background: #e8f7ee;
	border-color: #9bd8b2;
	color: #0f6e3e;
}

.tbp-cal-root .tbp-today-summary__recent-chip.is-near {
	background: #fff7e6;
	border-color: #f1ce8c;
	color: #8a5a00;
}

.tbp-cal-root .tbp-today-summary__recent-chip.is-miss {
	background: #fdecec;
	border-color: #f0a8a8;
	color: #a11616;
}

.tbp-cal-root .tbp-today-summary__recent-note {
	color: var(--tbp-text-secondary);
	font-size: var(--tbp-fs-xs);
	margin: 6px 0 0;
}

/* モーダル: 時間帯別の混み方バー */
/* v2.4.115: セクションコンテナの左右余白（stella指摘 2026-07-10「気持ち右にずらして・見切れそう」）。
   v2.4.101 追加時に padding 未定義のままで、見出し・時刻ラベル・注記がモーダル左端 0px にベタ付きだった。
   他セクション（.tbp-cal-dialog-basis 等の padding 16px）と同じ左右余白に揃える（全パーク共通） */
.tbp-cal-root .tbp-cal-dialog-slots {
	padding: 0 var(--tbp-sp-4);
}
.tbp-cal-root .tbp-cal-slots-row {
	align-items: center;
	display: flex;
	gap: 8px;
	margin-top: 6px;
}

.tbp-cal-root .tbp-cal-slots-label {
	flex: 0 0 44px;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
}

.tbp-cal-root .tbp-cal-slots-track {
	background: #f1f5f9;
	border-radius: 999px;
	flex: 1 1 auto;
	height: 10px;
	overflow: hidden;
}

.tbp-cal-root .tbp-cal-slots-bar {
	background: var(--tbp-park-accent);
	border-radius: 999px;
	display: block;
	height: 100%;
}

.tbp-cal-root .tbp-cal-slots-pct {
	flex: 0 0 42px;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	text-align: right;
}

.tbp-cal-root .tbp-cal-dialog-slots-hint {
	color: var(--tbp-text-secondary);
	font-size: var(--tbp-fs-xs);
	margin-top: 8px;
}

/* ==========================================================================
   v2.5.9: 今日カード「パークの新着トピックス」（速報ウォッチャー連携）
   ========================================================================== */
.tbp-cal-root .tbp-today-summary__topics {
	background: rgba(255, 255, 255, 0.78);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	margin-top: var(--tbp-sp-2);
	padding: 10px 12px;
}

.tbp-cal-root .tbp-today-summary__topics strong {
	display: block;
	font-size: var(--tbp-fs-sm);
}

.tbp-cal-root .tbp-today-summary__topics-item {
	font-size: var(--tbp-fs-sm);
	line-height: 1.6;
	margin: 6px 0 0;
}

.tbp-cal-root .tbp-today-summary__topics-item a {
	color: #0369a1;
	text-decoration: underline;
}

.tbp-cal-root .tbp-today-summary__topics-date {
	color: var(--tbp-text-secondary);
	display: inline-block;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	margin-right: 6px;
}

.tbp-cal-root .tbp-today-summary__topics-note {
	color: var(--tbp-text-secondary);
	font-size: var(--tbp-fs-xs);
	margin: 6px 0 0;
}

/* ==========================================================================
   v2.5.10: モーダル「イベント」欄の期間連動トピックス
   ========================================================================== */
.tbp-cal-root .tbp-cal-dialog-topics-item {
	font-size: var(--tbp-fs-sm);
	line-height: 1.6;
	margin: 6px 0 0;
}

.tbp-cal-root .tbp-cal-dialog-topics-item a {
	color: #0369a1;
	text-decoration: underline;
}
/* ===== v2.5.32: 診断折りたたみ・条件ライト行・合わせ技サブ行（stella案A 2026-08-20） ===== */
.tbp-cal-root .tbp-shindan-fold-summary { cursor: pointer; list-style: none; margin: 0; font-size: 11px; font-weight: 700; color: #6b6353; letter-spacing: 0.03em; text-align: center; }
.tbp-cal-root .tbp-shindan-fold-summary::-webkit-details-marker { display: none; }
.tbp-cal-root .tbp-shindan-fold-summary::marker { content: ""; }
.tbp-cal-root .tbp-shindan-fold-summary:hover { color: #3a3a3a; }
.tbp-cal-root .tbp-shindan-fold-arrow { display: inline-block; margin-left: 6px; font-size: 9px; transition: transform 0.15s ease-out; }
.tbp-cal-root .tbp-shindan-fold[open] .tbp-shindan-fold-arrow { transform: rotate(180deg); }
.tbp-cal-root .tbp-shindan-fold[open] > .tbp-shindan-fold-summary { margin-bottom: 8px; }
.tbp-cal-root .tbp-cal-partner-cta-subrow { margin: 6px 0 0; font-size: 10.5px; color: #888; line-height: 1.5; text-align: center; }
.tbp-cal-root .tbp-cal-partner-cta-subrow a { color: #6b6353; font-weight: 700; text-decoration: underline; }
.tbp-cal-root .tbp-cal-partner-cta-list--lite li { border: none; background: transparent; box-shadow: none; padding: 2px 0; margin: 0 0 4px; flex-direction: row; align-items: baseline; justify-content: center; gap: 4px; cursor: auto; }
.tbp-cal-root .tbp-cal-partner-cta-list--lite li:hover { border-color: transparent; background: transparent; }
.tbp-cal-root .tbp-cal-partner-cta-pr-inline { font-size: 10px; color: #888; }
.tbp-cal-root .tbp-cal-partner-cta-list--lite li a { font-size: 12px; font-weight: 600; color: #55503f; text-decoration: underline; }

/* ==========================================================================
   v2.5.33: 気象庁 警報・注意報＋アメダス実況（今日カード）
   - チップ色は気象庁慣例（注意報=黄/警報=赤/特別警報=紫）。混雑レベル5色とは
     ピル形＋種別名の文字で区別し、カレンダー日セルには載せない。
   - 発表なし・取得失敗時は要素ごと出力されない（ゼロクラッター）。
   ========================================================================== */
.tbp-cal-jma-band{display:block;background:#FDECEA;border:1px solid #F5C6BF;border-left:5px solid #D93A2B;border-radius:10px;padding:10px 14px;margin:0 0 14px;font-size:13px;line-height:1.7;color:#7F1D1D}
.tbp-today-summary__jma{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0 0}
.tbp-today-summary__jma-time{font-size:11px;color:#6b7280;white-space:nowrap}
.tbp-jma-chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:700;line-height:1.6;white-space:nowrap}
.tbp-jma-chip--adv{background:#F2D200;color:#4A3B00}
.tbp-jma-chip--warn{background:#D93A2B;color:#fff}
/* v2.5.36: 令和8年体系の4段階（危険警報=紫・特別警報=黒） */
.tbp-jma-chip--dng{background:#A000A0;color:#fff}
.tbp-jma-chip--emg{background:#1f1f1f;color:#fff}
.tbp-today-summary__obs{font-size:12.5px;color:#374151;margin:10px 0 0;line-height:1.7}
.tbp-today-summary__obs-lbl{font-size:11px;color:#9ca3af;margin-right:6px}
.tbp-today-summary__obs-src{font-size:11px;color:#9ca3af;margin-left:2px}
/* ===== v2.5.34→35: 日付モーダル宿リスト下の楽天モバイル行（案A・stella承認 2026-08-21。v2.5.35でリード+ピル型に強調＝stella指摘「もうちょっと目立ってもよくない？」） ===== */
.tbp-cal-dialog .tbp-vacancy-mobile { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 12px; color: #334155; margin: 10px 0 0; padding-top: 10px; border-top: 1px dashed #bae6fd; line-height: 1.6; }
.tbp-cal-dialog .tbp-vacancy-mobile-lead { font-weight: 700; }
.tbp-cal-dialog .tbp-vacancy-mobile-btn { display: inline-block; border: 1.5px solid #0369a1; color: #0369a1; background: #fff; border-radius: 999px; padding: 4px 14px; font-size: 12px; font-weight: 700; text-decoration: none; transition: background 0.15s, color 0.15s; }
.tbp-cal-dialog .tbp-vacancy-mobile-btn:hover { background: #0369a1; color: #fff; }

/* ==========================================================================
   v2.5.45: 今日・明日ブロック（[tbp_today_tomorrow]／指示書03 §3-1）
   カレンダー最上部に置く2列。既存のトークン（--tbp-*）だけで組む。
   ========================================================================== */
.tbp-cal-root .tbp-tt {
	margin: 0 0 var(--tbp-sp-3);
	padding: var(--tbp-sp-3);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	background: var(--tbp-surface);
}
.tbp-cal-root .tbp-tt-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--tbp-sp-2);
}
.tbp-cal-root .tbp-tt-col {
	min-width: 0;
	padding: var(--tbp-sp-2);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-sm);
	background: var(--tbp-bg);
}
.tbp-cal-root .tbp-tt-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px;
	margin-bottom: var(--tbp-sp-1);
}
.tbp-cal-root .tbp-tt-when {
	font-weight: 700;
	font-size: var(--tbp-fs-sm);
	color: var(--tbp-text-primary);
}
.tbp-cal-root .tbp-tt-date {
	font-size: var(--tbp-fs-xs);
	color: var(--tbp-text-secondary);
}
.tbp-cal-root .tbp-tt-lv {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 2px 0 4px;
}
.tbp-cal-root .tbp-tt-emoji { font-size: 20px; line-height: 1; }
.tbp-cal-root .tbp-tt-lvword { font-weight: 700; font-size: var(--tbp-fs-sm); }
.tbp-cal-root .tbp-tt-wait { font-size: var(--tbp-fs-xs); font-weight: 700; color: var(--tbp-text-primary); }
.tbp-cal-root .tbp-tt-meta { font-size: var(--tbp-fs-xs); color: var(--tbp-text-secondary); line-height: 1.6; }
.tbp-cal-root .tbp-tt-na { font-size: var(--tbp-fs-xs); color: var(--tbp-text-secondary); }
.tbp-cal-root .tbp-tt-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.tbp-cal-root .tbp-tt-acc {
	margin-top: var(--tbp-sp-2);
	font-size: var(--tbp-fs-xs);
	color: var(--tbp-text-secondary);
	text-align: right;
}
.tbp-cal-root .tbp-tt-cta {
	margin-top: var(--tbp-sp-2);
	padding-top: var(--tbp-sp-2);
	border-top: 1px dashed var(--tbp-border);
	display: grid;
	gap: var(--tbp-sp-2);
}
.tbp-cal-root .tbp-tt-ctatitle {
	display: block;
	font-size: var(--tbp-fs-xs);
	font-weight: 700;
	color: var(--tbp-text-secondary);
	margin-bottom: 2px;
}
.tbp-cal-root .tbp-tt-ctarow { display: block; font-size: var(--tbp-fs-xs); line-height: 1.7; }
.tbp-cal-root .tbp-tt-ctalead { display: block; color: var(--tbp-text-primary); }
.tbp-cal-root .tbp-tt-ctarow a { font-weight: 700; }
.tbp-cal-root .tbp-tt-vacancy { display: block; }
.tbp-cal-root .tbp-tt-vacancy ul { margin: 2px 0 2px; padding-left: 1.1em; }
.tbp-cal-root .tbp-tt-vacancy li { font-size: var(--tbp-fs-xs); line-height: 1.7; }
.tbp-cal-root .tbp-tt-vprice { color: var(--tbp-text-secondary); margin-left: 4px; }
@media screen and (max-width: 600px) {
	.tbp-cal-root .tbp-tt-grid { grid-template-columns: 1fr; }
	.tbp-cal-root .tbp-tt-acc { text-align: left; }
}

/* ==========================================================================
   v2.5.45: リアルタイム待ち時間（[tbp_realtime]／指示書03 §3-2）
   広告・アフィリはこのブロックに入れない（指示書の指定）。
   ========================================================================== */
.tbp-cal-root .tbp-rt {
	margin: 0 0 var(--tbp-sp-3);
	padding: var(--tbp-sp-3);
	border: 1px solid var(--tbp-border);
	border-radius: var(--tbp-radius-md);
	background: var(--tbp-surface);
}
.tbp-cal-root .tbp-rt-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 8px;
	margin-bottom: var(--tbp-sp-2);
}
.tbp-cal-root .tbp-rt-park { font-weight: 700; font-size: var(--tbp-fs-sm); }
.tbp-cal-root .tbp-rt-state,
.tbp-cal-root .tbp-rt-time { font-size: var(--tbp-fs-xs); color: var(--tbp-text-secondary); }
.tbp-cal-root .tbp-rt-stale {
	font-size: var(--tbp-fs-xs);
	color: #993C1D;
	background: #FAECE7;
	border-radius: 999px;
	padding: 1px 8px;
}
.tbp-cal-root .tbp-rt-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: var(--tbp-sp-2); }
.tbp-cal-root .tbp-rt-compare {
	display: grid;
	gap: 2px;
	margin-bottom: var(--tbp-sp-2);
	padding: var(--tbp-sp-2);
	border-radius: var(--tbp-radius-sm);
	background: var(--tbp-bg);
	font-size: var(--tbp-fs-xs);
	line-height: 1.7;
}
.tbp-cal-root .tbp-rt-actual { font-weight: 700; color: var(--tbp-text-primary); }
.tbp-cal-root .tbp-rt-tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
.tbp-cal-root .tbp-rt-table { width: 100%; border-collapse: collapse; min-width: 300px; }
.tbp-cal-root .tbp-rt-table th,
.tbp-cal-root .tbp-rt-table td {
	border: 1px solid var(--tbp-border);
	padding: var(--tbp-sp-1) var(--tbp-sp-2);
	font-size: var(--tbp-fs-xs);
	line-height: 1.5;
	text-align: left;
	vertical-align: top;
}
/* v2.5.64: color の指定漏れ。背景だけ明るい --tbp-bg (#FAFBFD) に上書きしていたため、
   Cocoon の .entry-content table th { color:#fff } が残り、記事本文で使うと
   白文字×ほぼ白背景で読めなかった（2026-08-24 stella報告・下書きID3461で実測）。
   [tbp_realtime] を .entry-content で使ったのが今回が初めてで表面化した。
   同ファイルの .tbp-cal-attractions-table thead th と同じ指定にそろえる。 */
.tbp-cal-root .tbp-rt-table thead th {
	background: var(--tbp-bg);
	color: var(--tbp-text-secondary);
	font-weight: 700;
}
.tbp-cal-root .tbp-rt-wait { text-align: right; white-space: nowrap; }
.tbp-cal-root .tbp-rt-unit { font-size: 0.9em; color: var(--tbp-text-secondary); }
.tbp-cal-root .tbp-rt-closed { color: var(--tbp-text-secondary); }
/* ===== v2.5.65: [tbp_realtime] を本文寸法に。カード／カレンダーの表記に合わせる =====
   これまでカレンダーのマス目用の寸法（10〜11px）のまま記事本文（16px）に置いていた。
   .tbp-rt-* は [tbp_realtime] 専用なので、カード・モーダル・フロントには影響しない。 */
.tbp-cal-root .tbp-rt { padding: 14px 16px; border-radius: 10px; border-left-width: 5px; }
.tbp-cal-root .tbp-rt-head { align-items: center; gap: 8px 10px; margin-bottom: 11px; }
.tbp-cal-root .tbp-rt-pill { display: inline-block; font-size: 12px; font-weight: 800;
	letter-spacing: .08em; padding: 2px 10px; border-radius: 9999px; color: #fff; line-height: 1.5; }
.tbp-cal-root .tbp-rt-park { font-size: 17px; font-weight: 700; }
.tbp-cal-root .tbp-rt-state { font-size: 13px; font-weight: 700; padding: 2px 10px; border-radius: 9999px; }
.tbp-cal-root .tbp-rt-time { font-size: 12px; }
/* v2.5.74: 見出し右端の「📅 混雑カレンダーへ」。
   パーク色ではなくサイトカラー(#0EA5E9)にする＝パークのチップ類と役割が違うため。
   塗らずに枠線だけの控えめなボタン。 */
.tbp-cal-root .tbp-rt-callink {
	margin-left: auto;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 4px 12px;
	border: 1px solid #0EA5E9;
	border-radius: 9999px;
	background: #fff;
	color: #0369A1;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.6;
	text-decoration: none;
	white-space: nowrap;
}
/* v2.5.77: ホバーの背景を #0EA5E9 → #0369A1（同系の一段深い青）に。
   白文字 on #0EA5E9 はコントラスト比 2.77 で、読みやすさの基準(4.5)を下回っていた。
   #0369A1 なら 5.93。白文字のまま・青く塗りつぶす挙動も変わらないので見た目の差は最小。
   枠線の #0EA5E9（通常時）はサイトカラーなのでそのまま。 */
.tbp-cal-root .tbp-rt-callink:hover,
.tbp-cal-root .tbp-rt-callink:focus-visible {
	background: #0369A1;
	color: #fff;
}
.tbp-cal-root .tbp-rt-callink__icon { font-size: 12px; }
/* v2.5.78: ボタンをパークのテーマ色に染める（stella指示 2026-08-28）。
   待ち時間ページの他の部品はすべて .tbp-rt--{park} でパーク色になっているので、
   このボタンだけサイト色（青）だと浮いていた。
   🔴 色は -dark ではなく -deep を使う。-dark は TDL 4.11 / LGL 4.21 / USJ 3.82 で
      白文字・soft地のどちらでも読みやすさの基準(4.5)に届かないため。
   🔴 文字色に !important が要る。このボタンは <a> なので、テーマのリンク色が
      通常の指定より強く効く（v2.5.74 の #0369A1 が実際は #0B3D91 で出ていた）。
      背景と枠線は !important 無しで効くので付けない。 */
.tbp-cal-root .tbp-rt--tdl .tbp-rt-callink {
	border-color: var(--tbp-tdl-pink);
	background: var(--tbp-tdl-pink-soft);
	color: var(--tbp-tdl-pink-deep) !important;
}
.tbp-cal-root .tbp-rt--tdl .tbp-rt-callink:hover,
.tbp-cal-root .tbp-rt--tdl .tbp-rt-callink:focus-visible {
	background: var(--tbp-tdl-pink-deep);
	color: #fff !important;
}
.tbp-cal-root .tbp-rt--tds .tbp-rt-callink {
	border-color: var(--tbp-tds-sky);
	background: var(--tbp-tds-sky-soft);
	color: var(--tbp-tds-deep-navy) !important;
}
.tbp-cal-root .tbp-rt--tds .tbp-rt-callink:hover,
.tbp-cal-root .tbp-rt--tds .tbp-rt-callink:focus-visible {
	background: var(--tbp-tds-deep-navy);
	color: #fff !important;
}
.tbp-cal-root .tbp-rt--lgl .tbp-rt-callink {
	border-color: var(--tbp-lgl-green);
	background: var(--tbp-lgl-green-soft);
	color: var(--tbp-lgl-green-deep) !important;
}
.tbp-cal-root .tbp-rt--lgl .tbp-rt-callink:hover,
.tbp-cal-root .tbp-rt--lgl .tbp-rt-callink:focus-visible {
	background: var(--tbp-lgl-green-deep);
	color: #fff !important;
}
.tbp-cal-root .tbp-rt--usj .tbp-rt-callink {
	border-color: var(--tbp-usj-orange);
	background: var(--tbp-usj-orange-soft);
	color: var(--tbp-usj-orange-deep) !important;
}
.tbp-cal-root .tbp-rt--usj .tbp-rt-callink:hover,
.tbp-cal-root .tbp-rt--usj .tbp-rt-callink:focus-visible {
	background: var(--tbp-usj-orange-deep);
	color: #fff !important;
}
.tbp-cal-root .tbp-rt--fjq .tbp-rt-callink {
	border-color: var(--tbp-fjq-lavender);
	background: var(--tbp-fjq-lavender-soft);
	color: var(--tbp-fjq-lavender-deep) !important;
}
.tbp-cal-root .tbp-rt--fjq .tbp-rt-callink:hover,
.tbp-cal-root .tbp-rt--fjq .tbp-rt-callink:focus-visible {
	background: var(--tbp-fjq-lavender-deep);
	color: #fff !important;
}
/* スマホは見出し行に4要素（バッジ・名前・状態チップ・最終更新）が既に入っていて
   右に足すと窮屈になる。全幅の1行として折り返し、タップ領域も確保する。 */
@media screen and (max-width: 600px) {
	.tbp-cal-root .tbp-rt-callink {
		flex: 0 0 100%;
		margin-left: 0;
		margin-top: 2px;
		justify-content: center;
		min-height: 40px;
	}
}
/* 予想／実測。2行のラベルが同じ長さなので数字が自然にそろう。
   違うのは「予想」「実測」の2文字だけなので、そこだけ濃く太くする。 */
.tbp-cal-root .tbp-rt-compare { display: grid;
	grid-template-columns: max-content max-content 1fr;
	align-items: center; row-gap: 6px; column-gap: 16px;
	padding: 11px 14px; border-radius: 6px; border-left: 3px solid transparent;
	font-size: 13px; line-height: 1.7; }
.tbp-cal-root .tbp-rt-who { font-size: 13px; font-weight: 400;
	color: var(--tbp-text-secondary); white-space: nowrap; }
.tbp-cal-root .tbp-rt-who b { font-weight: 700; color: var(--tbp-text-primary); }
.tbp-cal-root .tbp-rt-num { font-size: 14px; font-weight: 700; white-space: nowrap;
	font-variant-numeric: tabular-nums; color: var(--tbp-text-secondary); justify-self: end; }
.tbp-cal-root .tbp-rt-num--now { color: var(--tbp-text-primary); }
.tbp-cal-root .tbp-rt-compare .tbp-ts-lv { justify-self: end; }
.tbp-cal-root .tbp-rt-table th,
.tbp-cal-root .tbp-rt-table td { font-size: 13px; padding: 7px 10px; }
@media (max-width: 600px) {
	.tbp-cal-root .tbp-rt-compare { grid-template-columns: minmax(0,1fr) max-content; column-gap: 10px; }
	.tbp-cal-root .tbp-rt-who { font-size: 12px; white-space: normal; }
	.tbp-cal-root .tbp-rt-compare .tbp-ts-lv { grid-column: 1 / -1; justify-self: start;
		font-size: 12px; padding: 3px 10px; margin-top: 2px; }
}
/* パーク別のテーマ色（既存の変数をそのまま使う。新しい色は足さない） */
.tbp-cal-root .tbp-rt--tdl { border-left-color: var(--tbp-tdl-pink); }
.tbp-cal-root .tbp-rt--tdl .tbp-rt-pill { background: var(--tbp-tdl-pink); }
.tbp-cal-root .tbp-rt--tdl .tbp-rt-park { color: var(--tbp-tdl-pink-dark); }
.tbp-cal-root .tbp-rt--tdl .tbp-rt-state { background: var(--tbp-tdl-pink-soft); color: var(--tbp-tdl-pink-dark); }
.tbp-cal-root .tbp-rt--tdl .tbp-rt-compare { background: var(--tbp-tdl-pink-light); border-left-color: var(--tbp-tdl-pink); }
.tbp-cal-root .tbp-rt--tdl .tbp-rt-table thead th { background: var(--tbp-tdl-pink-light); }
.tbp-cal-root .tbp-rt--tds { border-left-color: var(--tbp-tds-sky); }
.tbp-cal-root .tbp-rt--tds .tbp-rt-pill { background: var(--tbp-tds-sky); }
.tbp-cal-root .tbp-rt--tds .tbp-rt-park { color: var(--tbp-tds-navy); }
.tbp-cal-root .tbp-rt--tds .tbp-rt-state { background: var(--tbp-tds-sky-soft); color: var(--tbp-tds-navy); }
.tbp-cal-root .tbp-rt--tds .tbp-rt-compare { background: var(--tbp-tds-sky-light); border-left-color: var(--tbp-tds-sky); }
.tbp-cal-root .tbp-rt--tds .tbp-rt-table thead th { background: var(--tbp-tds-sky-light); }
.tbp-cal-root .tbp-rt--lgl { border-left-color: var(--tbp-lgl-green); }
.tbp-cal-root .tbp-rt--lgl .tbp-rt-pill { background: var(--tbp-lgl-green); }
.tbp-cal-root .tbp-rt--lgl .tbp-rt-park { color: var(--tbp-lgl-green-dark); }
.tbp-cal-root .tbp-rt--lgl .tbp-rt-state { background: var(--tbp-lgl-green-soft); color: var(--tbp-lgl-green-dark); }
.tbp-cal-root .tbp-rt--lgl .tbp-rt-compare { background: var(--tbp-lgl-green-light); border-left-color: var(--tbp-lgl-green); }
.tbp-cal-root .tbp-rt--lgl .tbp-rt-table thead th { background: var(--tbp-lgl-green-light); }
.tbp-cal-root .tbp-rt--usj { border-left-color: var(--tbp-usj-orange); }
.tbp-cal-root .tbp-rt--usj .tbp-rt-pill { background: var(--tbp-usj-orange); }
.tbp-cal-root .tbp-rt--usj .tbp-rt-park { color: var(--tbp-usj-orange-dark); }
.tbp-cal-root .tbp-rt--usj .tbp-rt-state { background: var(--tbp-usj-orange-soft); color: var(--tbp-usj-orange-dark); }
.tbp-cal-root .tbp-rt--usj .tbp-rt-compare { background: var(--tbp-usj-orange-light); border-left-color: var(--tbp-usj-orange); }
.tbp-cal-root .tbp-rt--usj .tbp-rt-table thead th { background: var(--tbp-usj-orange-light); }
.tbp-cal-root .tbp-rt--fjq { border-left-color: var(--tbp-fjq-lavender); }
.tbp-cal-root .tbp-rt--fjq .tbp-rt-pill { background: var(--tbp-fjq-lavender); }
.tbp-cal-root .tbp-rt--fjq .tbp-rt-park { color: var(--tbp-fjq-lavender-dark); }
.tbp-cal-root .tbp-rt--fjq .tbp-rt-state { background: var(--tbp-fjq-lavender-soft); color: var(--tbp-fjq-lavender-dark); }
.tbp-cal-root .tbp-rt--fjq .tbp-rt-compare { background: var(--tbp-fjq-lavender-light); border-left-color: var(--tbp-fjq-lavender); }
.tbp-cal-root .tbp-rt--fjq .tbp-rt-table thead th { background: var(--tbp-fjq-lavender-light); }
.tbp-cal-root .tbp-rt-na { color: var(--tbp-text-secondary); }
.tbp-cal-root .tbp-rt-none { font-size: var(--tbp-fs-xs); color: var(--tbp-text-secondary); margin: 0 0 var(--tbp-sp-2); }
.tbp-cal-root .tbp-rt-credit { margin: var(--tbp-sp-2) 0 0; font-size: var(--tbp-fs-xs); color: var(--tbp-text-secondary); }
/* ==========================================================================
   v2.5.49: 今日・明日ブロック（[tbp_today_tomorrow]）
   フロントの「本日の混雑予想」カード部品（.tbp-ts-*）に乗せる差分だけを書く。
   .tbp-ts-* 本体は PHP の tbp_ts_css_once() が出すインラインCSS側にある。
   このファイルはフッター読み込み＝インラインより後なので、ここの指定が後勝ちする。
   ========================================================================== */
.tbp-cal-root .tbp-tt { margin: 0 0 var(--tbp-sp-3); }
.tbp-cal-root .tbp-tt .tbp-ts-head { width: 100%; }
.tbp-cal-root .tbp-tt .tbp-tt2-headacc { margin-left: 0; }
.tbp-cal-root .tbp-tt .tbp-tt2-headbadge { margin-left: auto; }

/* カードは <a> ではないので、リンクらしい見た目を消す */
.tbp-cal-root .tbp-ts-card--tt { display: block; cursor: default; }
.tbp-cal-root .tbp-ts-card--tt:hover { background: #f9fafb; }
.tbp-cal-root .tbp-ts-card--tt .tbp-ts-cardbody { display: block; }

/* 1行目：今日/明日ピル＋日付＋右端にLvピル */
.tbp-cal-root .tbp-tt2-when {
	font-size: 11px; font-weight: 700; padding: 1px 9px; border-radius: 999px;
	background: #eef2f7; color: #475569; white-space: nowrap;
}
.tbp-cal-root .tbp-tt2-date { font-size: 14px; font-weight: 700; color: #1f2937; }
/* 警報チップは開園の右端へ */
.tbp-cal-root .tbp-ts-card--tt .tbp-ts-roww .tbp-ts-alerts {
	flex: 0 1 auto; margin-left: auto; justify-content: flex-end;
}
/* 明日が安い日のバッジ */
/* v2.5.50: 価格比較は必ず1行を使う（語の途中で折り返さない・2枚のカードの行数を揃える） */
.tbp-cal-root .tbp-tt2-cmprow { display: block; margin-top: 3px; }
.tbp-cal-root .tbp-tt2-cheap {
	display: inline-block; font-size: 11px; font-weight: 700; white-space: nowrap;
	border-radius: 999px; padding: 1px 8px;
	color: #0f766e; background: #ccfbf1;
}
.tbp-cal-root .tbp-tt2-cheap--up   { color: #9a3412; background: #ffedd5; }
.tbp-cal-root .tbp-tt2-cheap--same { color: #475569; background: #eef2f7; }
/* イベント行 */
/* v2.5.51: .tbp-tt2-event は統合トピックス帯へ移行したため削除 */
/* 今日=実測 ／ 明日=予報（混同しないよう色を分ける） */
.tbp-cal-root .tbp-tt2-obs {
	display: block; margin-top: 9px; padding: 7px 10px; border-radius: 8px;
	background: #f1f5f9; font-size: 12px; line-height: 1.6;
}
.tbp-cal-root .tbp-tt2-obs--fc { background: #eff6ff; }
/* v2.5.63: hidden が効かなかった。クラス2つ(0,2,0) が [hidden](0,1,0) に勝つため、
   JSが obsBox.hidden = true にしても display:block のままで、padding と背景だけの
   空のグレー帯が残っていた（2026-08-24 stella指摘・本番で再現確認）。 */
.tbp-cal-root .tbp-tt2-obs[hidden],
.tbp-cal-root .tbp-cal-dialog-attractions-mode[hidden] { display: none; }
.tbp-cal-root .tbp-tt2-obs-h { display: block; font-weight: 700; color: #334155; }
.tbp-cal-root .tbp-tt2-obs--fc .tbp-tt2-obs-h { color: #1d4ed8; }
.tbp-cal-root .tbp-tt2-obs-b { display: block; color: #1f2937; }
.tbp-cal-root .tbp-tt2-obs-s { display: block; color: #9ca3af; font-size: 11px; }
/* アトラクション予想（開閉） */
.tbp-cal-root .tbp-tt2-attr { margin-top: 9px; }
.tbp-cal-root .tbp-tt2-attr summary { cursor: pointer; font-size: 12px; color: #0369a1; list-style: none; }
.tbp-cal-root .tbp-tt2-attr summary::-webkit-details-marker { display: none; }
.tbp-cal-root .tbp-tt2-attr summary::after { content: " ▼"; }
.tbp-cal-root .tbp-tt2-attr-b { display: block; margin-top: 6px; font-size: 12px; color: #6b7280; }

/* 全幅の帯（フロントのトピックス帯と同じ見た目・.tbp-ts-topicsbar を流用） */
.tbp-cal-root .tbp-tt .tbp-tt2-bartitle { font-size: 14px; color: #0369a1; }
.tbp-cal-root .tbp-tt2-bar--ticket { background: #fffbeb; border-color: #fde68a; }
.tbp-cal-root .tbp-tt2-bar--ticket .tbp-tt2-bartitle { color: #92400e; }
.tbp-cal-root .tbp-tt2-bar--acc { background: #f8fafc; border-color: #e2e8f0; }
.tbp-cal-root .tbp-tt2-bar--acc .tbp-tt2-bartitle { color: #334155; }
.tbp-cal-root .tbp-tt2-tag--official { border-color: #0369a1; color: #0369a1; background: #fff; }
.tbp-cal-root .tbp-tt2-tag--pr { border-color: #9a3412; color: #9a3412; background: #fff; }
/* v2.5.73: 非PRの自社記事リンク用タグ。公式（青）とPR（オレンジ）のどちらでもないことを色で分ける。 */
.tbp-cal-root .tbp-tt2-tag--guide { border-color: #64748b; color: #475569; background: #fff; }
.tbp-cal-root .tbp-tt .tbp-ts-tp-text a { color: #0369a1; text-decoration: underline; }
.tbp-cal-root .tbp-tt2-barmore { margin: 8px 0 0; font-size: 12px; }
.tbp-cal-root .tbp-tt2-barmore a { color: #0369a1; text-decoration: underline; }
/* 答え合わせチップ */
.tbp-cal-root .tbp-tt2-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.tbp-cal-root .tbp-tt2-chip {
	font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; white-space: nowrap;
}
.tbp-cal-root .tbp-tt2-chip.is-hit  { background: #E1F5EE; color: #085041; }
.tbp-cal-root .tbp-tt2-chip.is-near { background: #FAEEDA; color: #854F0B; }
.tbp-cal-root .tbp-tt2-chip.is-miss { background: #FCEBEB; color: #A32D2D; }
.tbp-cal-root .tbp-tt2-foot { font-size: 11px; color: #9ca3af; margin: 10px 0 0; line-height: 1.6; }

/* ==========================================================================
   v2.5.49: 免責を畳む（中身はHTMLに残したまま）
   ========================================================================== */
.tbp-cal-root .tbp-cal-disclaimer-details > summary { list-style: none; cursor: pointer; }
.tbp-cal-root .tbp-cal-disclaimer-details > summary::-webkit-details-marker { display: none; }
.tbp-cal-root .tbp-cal-disclaimer-summary {
	display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px;
	font-size: var(--tbp-fs-sm); font-weight: 700;
}
.tbp-cal-root .tbp-cal-disclaimer-summary-more { margin-left: auto; font-weight: 400; font-size: var(--tbp-fs-xs); }
.tbp-cal-root .tbp-cal-disclaimer-summary-more::after { content: " ▼"; }
.tbp-cal-root .tbp-cal-disclaimer-details[open] .tbp-cal-disclaimer-summary-more::after { content: " ▲"; }
.tbp-cal-root .tbp-cal-disclaimer-inner { margin-top: var(--tbp-sp-2); }
.tbp-cal-root .tbp-cal-disclaimer-range { font-size: var(--tbp-fs-xs); color: var(--tbp-text-secondary); margin: 0 0 var(--tbp-sp-2); }

/* ==========================================================================
   v2.5.49: パークバナー圧縮（100〜120px帯）
   ========================================================================== */
.tbp-cal-root .tbp-park-banner--compact {
	display: block; padding: var(--tbp-sp-2) var(--tbp-sp-3);
}
.tbp-cal-root .tbp-park-banner--compact .tbp-park-banner__row {
	display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.tbp-cal-root .tbp-park-banner--compact .tbp-park-banner__h1 {
	font-size: var(--tbp-fs-lg, 18px); font-weight: 700; line-height: 1.4; margin: 0;
}
.tbp-cal-root .tbp-park-banner--compact .tbp-park-banner__actions {
	display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 6px 0 0;
}
.tbp-cal-root .tbp-park-banner__switch-mini { font-size: var(--tbp-fs-xs); text-decoration: underline; }

/* v2.5.49: 今日の実測（JSが入れる既存マークアップ）を、明日の予報ボックスと揃える */
.tbp-cal-root .tbp-tt .tbp-today-summary__obs {
	display: block; margin: 0; padding: 7px 10px; border-radius: 8px;
	background: #f1f5f9; font-size: 12px; line-height: 1.6; color: #1f2937;
}
.tbp-cal-root .tbp-tt .tbp-today-summary__obs-lbl { display: block; font-weight: 700; color: #334155; }
.tbp-cal-root .tbp-tt .tbp-today-summary__obs-src { display: block; color: #9ca3af; font-size: 11px; }
/* 答え合わせ帯の中の既存パーツは余白だけ整える */
.tbp-cal-root .tbp-tt2-bar--acc .tbp-today-summary__actual { margin-top: 8px; }
.tbp-cal-root .tbp-tt2-bar--acc .tbp-today-summary__recent { margin-top: 8px; }

/* v2.5.51: イベント＋新着トピックスの統合帯（開閉式・アトラクションと同じ操作感） */
.tbp-cal-root .tbp-tt2-bar--acc > summary,
.tbp-cal-root .tbp-tt2-bar--topics > summary {
	list-style: none; cursor: pointer;
	display: flex; align-items: baseline; gap: 8px 10px; flex-wrap: wrap;
}
.tbp-cal-root .tbp-tt2-bar--acc > summary::-webkit-details-marker,
.tbp-cal-root .tbp-tt2-bar--topics > summary::-webkit-details-marker { display: none; }
.tbp-cal-root .tbp-tt2-peek {
	flex: 1 1 auto; min-width: 0; font-size: 12px; color: #4b5563;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.tbp-cal-root .tbp-tt2-barmore-mark { flex: none; font-size: 12px; color: #6b7280; }
.tbp-cal-root .tbp-tt2-barmore-mark::after { content: "▼"; }
.tbp-cal-root .tbp-tt2-bar--acc[open] .tbp-tt2-barmore-mark::after,
.tbp-cal-root .tbp-tt2-bar--topics[open] .tbp-tt2-barmore-mark::after { content: "▲"; }
.tbp-cal-root .tbp-tt2-bar--topics .tbp-ts-tp-list { margin-top: 8px; }
.tbp-cal-root .tbp-tt2-bar--topics .tbp-ts-tpb-note { margin: 6px 0 0; font-size: 11px; color: #9ca3af; }
@media screen and (max-width: 600px) {
	.tbp-cal-root .tbp-tt2-peek { flex-basis: 100%; }
}

/* v2.5.52: パーク切替をボタン形に戻す（stella指摘）。
   旧版の .tbp-park-banner__switch をそのまま使い、縦積み→横1行にだけ変える。 */
.tbp-cal-root .tbp-park-banner__switch--compact {
	flex-direction: row; align-items: center; gap: 7px;
	padding: 7px 13px; min-height: 40px; border-radius: 999px;
}
.tbp-cal-root .tbp-park-banner__switch--compact .tbp-park-banner__switch-pill {
	color: #fff; border-radius: 999px; padding: 1px 9px; font-size: 12px; font-weight: 700;
}
.tbp-cal-root .tbp-park-banner__switch--compact .tbp-park-banner__switch-name { font-size: 13px; }
.tbp-cal-root .tbp-park-banner__switch-arrow { font-weight: 700; }

/* v2.5.54: 答え合わせ帯はタイトルの横に1行（モックの形）。dlの別ブロックはやめる */
.tbp-cal-root .tbp-tt2-actnote { font-size: 12px; color: #4b5563; line-height: 1.7; }
.tbp-cal-root .tbp-tt2-actnote b { color: #1f2937; }
.tbp-cal-root .tbp-tt2-bar--acc .tbp-ts-tpb-head { align-items: baseline; }
/* v2.5.54: パーク切替ボタンは行の右端へ（stella指示） */
.tbp-cal-root .tbp-park-banner--compact .tbp-park-banner__actions { justify-content: flex-start; }
.tbp-cal-root .tbp-park-banner__switch--compact { margin-left: auto; }

/* v2.5.55: 切替ボタンがスマホで全幅になって別行に落ちていた。
   旧版の @media (max-width:768px) に `width:100%` があるため（当時は大きな全幅ボタンだった）。
   圧縮版だけ打ち消して、ジャンプボタンと同じ行の右端に置く（実測：必要270px < 幅343px）。 */
@media screen and (max-width: 768px) {
	.tbp-cal-root .tbp-park-banner__switch--compact {
		width: auto; padding: 7px 13px; justify-content: flex-start; margin-left: auto;
	}
}

/* v2.5.56: 直近7日のチップだけ開閉式（3項目のインライン表示はモックどおり常時表示） */
.tbp-cal-root .tbp-tt2-recent { margin-top: 8px; }
.tbp-cal-root .tbp-tt2-recent > summary {
	list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px;
	font-size: 12px; color: #0369a1;
}
.tbp-cal-root .tbp-tt2-recent > summary::-webkit-details-marker { display: none; }
.tbp-cal-root .tbp-tt2-recent .tbp-tt2-barmore-mark { margin-left: auto; }
.tbp-cal-root .tbp-tt2-recent[open] .tbp-tt2-barmore-mark::after { content: "▲"; }
/* 開いた中の見出しはサマリと重複するので隠す */
.tbp-cal-root .tbp-tt2-recent .tbp-today-summary__recent > strong { display: none; }
.tbp-cal-root .tbp-tt2-recent .tbp-today-summary__recent { margin-top: 6px; }

/* ============================================================
   v2.5.57: 今日カード「いまの待ち時間」（2段階）
   段1=主要アトラクション（明日の予想と同じ並び）／段2=全件（さらに折りたたみ）
   ============================================================ */
.tbp-cal-root .tbp-tt2-rtsec .tbp-tt2-rt-meta {
	display: block;
	margin-top: 2px;
	font-size: 11px;
	font-weight: 400;
	color: var(--tbp-text-secondary);
}
.tbp-cal-root .tbp-tt2-rt-stale {
	margin: 4px 0 0;
	font-size: 11px;
	color: #b45309;
}
.tbp-cal-root .tbp-tt2-rtall {
	margin-top: 8px;
	padding-top: 6px;
	border-top: 1px dashed #e2e8f0;
}
.tbp-cal-root .tbp-tt2-rtall > summary {
	cursor: pointer;
	list-style: none;
	font-size: 12px;
	color: #0369a1;
}
.tbp-cal-root .tbp-tt2-rtall > summary::-webkit-details-marker { display: none; }
.tbp-cal-root .tbp-tt2-rtall > summary::after { content: " ▼"; }
.tbp-cal-root .tbp-tt2-rtall[open] > summary::after { content: " ▲"; }
.tbp-cal-root .tbp-tt2-rtsec .tbp-rt-credit { margin-top: 6px; font-size: 10px; }

/* v2.5.58: 待ち時間を出さないアトラクションの「営業中」表示 */
.tbp-cal-root .tbp-cal-attractions-open {
	font-size: 12px;
	font-weight: 700;
	color: #0369a1;
}

/* v2.5.58: 「営業中（要予約）」の注記 */
.tbp-cal-root .tbp-cal-attractions-note {
	display: block;
	font-size: 10px;
	font-weight: 400;
	color: var(--tbp-text-secondary);
}

/* ============================================================
   v2.5.60: 今日の実測ボックスと明日の予報ボックスの高さを揃える

   公開ページ実測（2026-08-24・PC1280px）
     今日 82.4px ／ 明日 70.0px ／ カード 371 対 359 ＝ 12px ずれ

   原因は2つ
     ① 今日は箱が二重。外側 .tbp-tt2-obs と、JSが入れる内側の
        .tbp-today-summary__obs が、同じ padding/background/border-radius を
        それぞれ持っていた（+14px）。
     ② 見出しの文字サイズ違い。今日のラベルは11px、明日の見出しは12px（-1.6px）。

   内側の箱を解除し、見出しを12pxに揃えると、どちらも 14+19.2+19.2+17.6 = 70.0px。
   ============================================================ */
.tbp-cal-root .tbp-tt .tbp-tt2-obs .tbp-today-summary__obs {
	padding: 0;
	background: none;
	border-radius: 0;
}
.tbp-cal-root .tbp-tt .tbp-tt2-obs .tbp-today-summary__obs-lbl {
	font-size: 12px;
}

/* ============================================================
   v2.5.81 デザイン第1弾（stella GO 2026-08-29）
   待ち時間表の「見て分かる」化＋フロントH1の視覚分割
   ============================================================ */
/* 動きを減らす設定の利用者には今日セルを点滅させない（S-5） */
@media (prefers-reduced-motion: reduce) {
	.tbp-cal-root .tbp-cal-cell.tbp-today,
	.tbp-cal-cell.tbp-today { animation: none; }
}
/* サマリー行（S-2）：パーク色の帯 */
.tbp-cal-root .tbp-rt-sumline { margin: 12px 0 2px; padding: 8px 12px; border-radius: 8px;
	background: #F1F5F9; color: #334155; font-size: 13px; font-weight: 700; }
.tbp-cal-root .tbp-rt-sumline b { font-size: 16px; }
.tbp-cal-root .tbp-rt--tdl .tbp-rt-sumline { background: var(--tbp-tdl-pink-light); color: var(--tbp-tdl-pink-deep); }
.tbp-cal-root .tbp-rt--tds .tbp-rt-sumline { background: var(--tbp-tds-sky-light); color: var(--tbp-tds-deep-navy); }
.tbp-cal-root .tbp-rt--lgl .tbp-rt-sumline { background: var(--tbp-lgl-green-light); color: var(--tbp-lgl-green-deep); }
.tbp-cal-root .tbp-rt--usj .tbp-rt-sumline { background: var(--tbp-usj-orange-light); color: var(--tbp-usj-orange-deep); }
.tbp-cal-root .tbp-rt--fjq .tbp-rt-sumline { background: var(--tbp-fjq-lavender-light); color: var(--tbp-fjq-lavender-deep); }
/* 待ち分の色帯（S-1）：行ストライプ＋数字色。〜15緑/〜45黄/〜75橙/76〜赤 */
.tbp-cal-root tr.tbp-rt-lv1 td:first-child { box-shadow: inset 4px 0 0 #22C55E; }
.tbp-cal-root tr.tbp-rt-lv2 td:first-child { box-shadow: inset 4px 0 0 #EAB308; }
.tbp-cal-root tr.tbp-rt-lv3 td:first-child { box-shadow: inset 4px 0 0 #F97316; }
.tbp-cal-root tr.tbp-rt-lv4 td:first-child { box-shadow: inset 4px 0 0 #EF4444; }
.tbp-cal-root tr.tbp-rt-lv1 .tbp-cal-attractions-wait-num { color: #15803D; }
.tbp-cal-root tr.tbp-rt-lv2 .tbp-cal-attractions-wait-num { color: #A16207; }
.tbp-cal-root tr.tbp-rt-lv3 .tbp-cal-attractions-wait-num { color: #C2410C; }
.tbp-cal-root tr.tbp-rt-lv4 .tbp-cal-attractions-wait-num { color: #DC2626; }
/* sticky列名（S-2）：2列表は横スクロール不要なのでラッパーの overflow を解き、
   固定レイアウト＋名前の折返しで 375px でもはみ出さない（v2.5.44 の教訓は維持） */
.tbp-cal-root .tbp-rt-tablewrap { overflow-x: visible; }
.tbp-cal-root .tbp-rt-table { table-layout: fixed; width: 100%; }
.tbp-cal-root .tbp-rt-table .tbp-rt-name { word-break: break-word; overflow-wrap: anywhere; }
.tbp-cal-root .tbp-rt-table .tbp-rt-wait { width: 118px; }
.tbp-cal-root .tbp-rt-table thead th { position: sticky; top: 0; z-index: 2; }
/* 帯凡例＋用語注記（S-1/S-4） */
.tbp-cal-root .tbp-rt-bandlegend { display: flex; gap: 10px; flex-wrap: wrap; align-items: center;
	margin: 8px 2px 0; font-size: 10.5px; color: #666; }
.tbp-cal-root .tbp-rt-bandlegend i { font-style: normal; display: inline-flex; align-items: center; gap: 4px; }
.tbp-cal-root .tbp-rt-bandlegend i::before { content: ""; width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.tbp-cal-root .tbp-rt-bandlegend .tbp-rt-bl1::before { background: #22C55E; }
.tbp-cal-root .tbp-rt-bandlegend .tbp-rt-bl2::before { background: #EAB308; }
.tbp-cal-root .tbp-rt-bandlegend .tbp-rt-bl3::before { background: #F97316; }
.tbp-cal-root .tbp-rt-bandlegend .tbp-rt-bl4::before { background: #EF4444; }
.tbp-cal-root .tbp-rt-bandlegend .tbp-rt-bl-note { color: #999; }
.tbp-cal-root .tbp-rt-termnote { font-size: 10.5px; color: #888; margin: 6px 2px 0; line-height: 1.7; }
/* 休止中の折りたたみ（S-2） */
.tbp-cal-root details.tbp-rt-pause { margin-top: 10px; border: 1px solid #ECEAE4; border-radius: 8px; background: #FAFAF8; }
.tbp-cal-root details.tbp-rt-pause summary { cursor: pointer; padding: 9px 12px; font-size: 12.5px; color: #666; font-weight: 700; list-style: none; }
.tbp-cal-root details.tbp-rt-pause summary::-webkit-details-marker { display: none; }
.tbp-cal-root details.tbp-rt-pause summary::before { content: "▸ "; color: #999; }
.tbp-cal-root details.tbp-rt-pause[open] summary::before { content: "▾ "; }
.tbp-cal-root details.tbp-rt-pause .tbp-rt-pause-list { padding: 0 12px 10px; font-size: 12.5px; color: #888; line-height: 2; }
/* フロントH1の視覚分割（S-6）：テーマの h1.entry-title 内に立つ span（文言は不変） */
.tbp-front-h1-eyebrow { display: block; font-size: 12px; color: #777; font-weight: 500; letter-spacing: .04em; line-height: 1.6; }
.tbp-front-h1-main { display: block; font-size: 26px; line-height: 1.35; color: #0C4A6E; }
.tbp-front-h1-sub { display: block; font-size: 13px; color: #888; font-weight: 500; margin-top: 2px; line-height: 1.6; }
@media screen and (max-width: 600px) {
	.tbp-front-h1-main { font-size: 22px; }
}

/* ===== v2.5.82 第2弾（stella GO 2026-08-29）: セルのイベントは点・凡例チップは混雑5段階のみ ===== */
.tbp-cal-root .tbp-cell-event--dot { padding: 0; margin: 0; line-height: 1; min-height: 0; }
.tbp-cal-root .tbp-cell-event-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--tbp-gold); }
.tbp-cal-root .tbp-cal-legend-item .tbp-cell-event-dot { margin-right: 2px; vertical-align: middle; }

/* ===== v2.5.83 第3弾-4（stella GO 2026-08-29）: 他パーク導線を1セクションに統合 ===== */
.tbp-cal-root .tbp-other-parks { margin: 28px 0; padding: 16px 14px 12px; border: 1px solid #E5E7EB; border-radius: 12px; background: #FAFAFA; }
.tbp-cal-root .tbp-op-head { font-size: 15px; font-weight: 700; color: #333; margin: 0 0 12px; text-align: center; }
.tbp-cal-root .tbp-op-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.tbp-cal-root .tbp-op-btn { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 8px 12px; border: 1.5px solid; border-radius: 10px; background: #fff; text-decoration: none; transition: background .15s; }
.tbp-cal-root .tbp-op-pill { flex: 0 0 auto; font-size: 11px; font-weight: 700; color: #fff; border-radius: 999px; padding: 2px 10px; }
.tbp-cal-root .tbp-op-name { flex: 1 1 auto; font-size: 13.5px; font-weight: 700; line-height: 1.35; word-break: keep-all; overflow-wrap: anywhere; }
.tbp-cal-root .tbp-op-arrow { flex: 0 0 auto; font-weight: 700; }
.tbp-cal-root .tbp-op-note { font-size: 12px; color: #888; margin: 10px 2px 0; text-align: center; line-height: 1.7; } /* v2.5.84: 完成文復元に合わせ拡大 */
.tbp-cal-root .tbp-op-btn--tdl { border-color: var(--tbp-tdl-pink); }
.tbp-cal-root .tbp-op-btn--tdl .tbp-op-pill { background: var(--tbp-tdl-pink); }
.tbp-cal-root .tbp-op-btn--tdl .tbp-op-name, .tbp-cal-root .tbp-op-btn--tdl .tbp-op-arrow { color: var(--tbp-tdl-pink-deep); }
.tbp-cal-root .tbp-op-btn--tdl:hover { background: var(--tbp-tdl-pink-soft); }
.tbp-cal-root .tbp-op-btn--tds { border-color: var(--tbp-tds-sky); }
.tbp-cal-root .tbp-op-btn--tds .tbp-op-pill { background: var(--tbp-tds-sky); }
.tbp-cal-root .tbp-op-btn--tds .tbp-op-name, .tbp-cal-root .tbp-op-btn--tds .tbp-op-arrow { color: var(--tbp-tds-deep-navy); }
.tbp-cal-root .tbp-op-btn--tds:hover { background: var(--tbp-tds-sky-soft); }
.tbp-cal-root .tbp-op-btn--lgl { border-color: var(--tbp-lgl-green); }
.tbp-cal-root .tbp-op-btn--lgl .tbp-op-pill { background: var(--tbp-lgl-green); }
.tbp-cal-root .tbp-op-btn--lgl .tbp-op-name, .tbp-cal-root .tbp-op-btn--lgl .tbp-op-arrow { color: var(--tbp-lgl-green-deep); }
.tbp-cal-root .tbp-op-btn--lgl:hover { background: var(--tbp-lgl-green-soft); }
.tbp-cal-root .tbp-op-btn--usj { border-color: var(--tbp-usj-orange); }
.tbp-cal-root .tbp-op-btn--usj .tbp-op-pill { background: var(--tbp-usj-orange); }
.tbp-cal-root .tbp-op-btn--usj .tbp-op-name, .tbp-cal-root .tbp-op-btn--usj .tbp-op-arrow { color: var(--tbp-usj-orange-deep); }
.tbp-cal-root .tbp-op-btn--usj:hover { background: var(--tbp-usj-orange-soft); }
.tbp-cal-root .tbp-op-btn--fjq { border-color: var(--tbp-fjq-lavender); }
.tbp-cal-root .tbp-op-btn--fjq .tbp-op-pill { background: var(--tbp-fjq-lavender); }
.tbp-cal-root .tbp-op-btn--fjq .tbp-op-name, .tbp-cal-root .tbp-op-btn--fjq .tbp-op-arrow { color: var(--tbp-fjq-lavender-deep); }
.tbp-cal-root .tbp-op-btn--fjq:hover { background: var(--tbp-fjq-lavender-soft); }
@media screen and (max-width: 600px) {
	.tbp-cal-root .tbp-op-grid { grid-template-columns: 1fr; }
}

/* v2.5.87: 休園セルは狭い画面でも文字を保つ（375pxでセル幅≒44px） */
@media (max-width: 420px) {
	.tbp-cell-closed-icon { font-size: 14px; }
	.tbp-cell-closed-text { font-size: 10px; letter-spacing: 0; }
}

/* ============================================================
   v2.5.100  答え合わせページ [tbp_accuracy]
   ・横に広い表はこの中だけで横スクロールさせる（本文は横に流さない）
   ・色は既存のカレンダーCSSと同じトーン。パーク色には依存しない。
   ============================================================ */
.tbp-acc {
	margin: 24px 0;
}
.tbp-acc .tbp-acc-h {
	margin: 28px 0 8px;
	font-size: 1.05rem;
	line-height: 1.5;
}
.tbp-acc .tbp-acc-lead,
.tbp-acc .tbp-acc-note {
	margin: 8px 0 0;
	font-size: 0.84rem;
	line-height: 1.75;
	color: #4b5563;
}
.tbp-acc .tbp-acc-note--cal {
	color: #92400e;
}
.tbp-acc .tbp-acc-err {
	margin: 12px 0;
	padding: 10px 12px;
	border-left: 4px solid #dc2626;
	background: #fef2f2;
	color: #7f1d1d;
	font-size: 0.88rem;
}
.tbp-acc .tbp-acc-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	margin: 10px 0 0;
}
.tbp-acc table.tbp-acc-table {
	width: 100%;
	min-width: 560px;
	border-collapse: collapse;
	font-size: 0.86rem;
	background: #fff;
}
.tbp-acc table.tbp-acc-table th,
.tbp-acc table.tbp-acc-table td {
	border: 1px solid #e5e7eb;
	padding: 7px 9px;
	text-align: left;
	white-space: nowrap;
	vertical-align: middle;
	/* 🔴 文字色は必ず明示する。サイト側に `.entry-content table th { color:#ffffff }` があり、
	   指定を省くと1列目（日付・月・期間）が白文字になって背景と同化する（v2.5.100 で実発生）。
	   背景は素のまま・色だけ !important でテーマに勝たせる。 */
	color: #111827 !important;
}
.tbp-acc table.tbp-acc-table thead th {
	background: #f0f9ff;
	color: #0c4a6e !important;
	font-weight: 700;
}
.tbp-acc table.tbp-acc-table tbody th {
	background: #f9fafb;
	color: #111827 !important;
	font-weight: 700;
}
.tbp-acc table.tbp-acc-table tbody td {
	background: #fff;
}
.tbp-acc table.tbp-acc-table td.tbp-num {
	text-align: right;
	font-variant-numeric: tabular-nums;
}
.tbp-acc table.tbp-acc-table--daily {
	min-width: 460px;
}
.tbp-acc .tbp-acc-verdict {
	display: inline-block;
	padding: 1px 8px;
	border-radius: 999px;
	font-size: 0.78rem;
	font-weight: 700;
	white-space: nowrap;
}
.tbp-acc .tbp-acc-verdict.is-hit {
	background: #dcfce7;
	color: #14532d;
}
.tbp-acc .tbp-acc-verdict.is-near {
	background: #fef9c3;
	color: #713f12;
}
.tbp-acc .tbp-acc-verdict.is-miss {
	background: #fee2e2;
	color: #7f1d1d;
}
@media (max-width: 600px) {
	.tbp-acc table.tbp-acc-table {
		font-size: 0.8rem;
	}
	.tbp-acc table.tbp-acc-table th,
	.tbp-acc table.tbp-acc-table td {
		padding: 6px 7px;
	}
}

/* v2.5.109: 7段階への切替の帯（切替日から60日で自動で消える） */
.tbp-cal-switch-note {
	margin: 0 0 var(--tbp-sp-3) 0;
	padding: var(--tbp-sp-2) var(--tbp-sp-3);
	background: var(--tbp-lv4-bg);
	border: 1px solid var(--tbp-lv4-border);
	border-radius: var(--tbp-radius-md);
	color: var(--tbp-lv4-text);
	font-size: 13px;
	line-height: 1.55;
}

/* v2.5.115: 今日カードの題を h3 に戻した保険（.tbp-cal-root の外に置かれてもテーマの見出し装飾を受けない） */
.tbp-today-summary h3.tbp-today-summary__title { background: none !important; border: none !important; padding: 0 !important; box-shadow: none !important; }
.tbp-today-summary h3.tbp-today-summary__title::before, .tbp-today-summary h3.tbp-today-summary__title::after { content: none !important; display: none !important; }
