@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〜5 --- */
	--tbp-lv1-main: #22C55E; --tbp-lv1-bg: #F0FDF4; --tbp-lv1-border: #86EFAC; --tbp-lv1-text: #14532D;
	--tbp-lv2-main: #84CC16; --tbp-lv2-bg: #F7FEE7; --tbp-lv2-border: #BEF264; --tbp-lv2-text: #365314;
	--tbp-lv3-main: #F59E0B; --tbp-lv3-bg: #FFFBEB; --tbp-lv3-border: #FCD34D; --tbp-lv3-text: #78350F;
	--tbp-lv4-main: #F97316; --tbp-lv4-bg: #FFF7ED; --tbp-lv4-border: #FDBA74; --tbp-lv4-text: #7C2D12;
	--tbp-lv5-main: #EF4444; --tbp-lv5-bg: #FEF2F2; --tbp-lv5-border: #FCA5A5; --tbp-lv5-text: #7F1D1D;

	/* --- 状態バッジ --- */
	--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-lv5-bg);
	color: var(--tbp-lv5-text);
	border: 1px solid var(--tbp-lv5-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); }
.tbp-lv-2 .tbp-cal-legend-lvl { background: var(--tbp-lv2-main); }
.tbp-lv-3 .tbp-cal-legend-lvl { background: var(--tbp-lv3-main); color: #FFFFFF; }
.tbp-lv-4 .tbp-cal-legend-lvl { background: var(--tbp-lv4-main); }
.tbp-lv-5 .tbp-cal-legend-lvl { background: var(--tbp-lv5-main); }

/* バッジ汎用 */
.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) でコントラスト確保
 */
.tbp-cal-cell.tbp-lv-1 {
	background: #BBF7D0;
	border-color: var(--tbp-lv1-border);
}
.tbp-cal-cell.tbp-lv-1 .tbp-cell-level-num { background: var(--tbp-lv1-main); }

.tbp-cal-cell.tbp-lv-2 {
	background: #D9F99D;
	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: #FDE68A;
	border-color: var(--tbp-lv3-border);
}
.tbp-cal-cell.tbp-lv-3 .tbp-cell-level-num { background: var(--tbp-lv3-main); color: #FFFFFF; }

.tbp-cal-cell.tbp-lv-4 {
	background: #FED7AA;
	border-color: var(--tbp-lv4-border);
}
.tbp-cal-cell.tbp-lv-4 .tbp-cell-level-num { background: var(--tbp-lv4-main); }

.tbp-cal-cell.tbp-lv-5 {
	background: #FECACA;
	border-color: var(--tbp-lv5-border);
}
.tbp-cal-cell.tbp-lv-5 .tbp-cell-level-num { background: var(--tbp-lv5-main); }

/* 状態：過去（実）→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.16.11 (v2.4.26 back-port): 休園日（operating_status='closed'）→ グレーアウト＋斜線パターン
 * サーチくん第8回データ品質点検指摘対応：LGL休園日12件が「普通」表示されていた問題解消 */
.tbp-cal-cell.tbp-closed {
	background: repeating-linear-gradient(
		45deg,
		#f1f5f9 0,
		#f1f5f9 6px,
		#e2e8f0 6px,
		#e2e8f0 12px
	);
	color: var(--tbp-text-muted, #94a3b8);
	cursor: default;
	opacity: 0.85;
}
.tbp-cal-cell.tbp-closed .tbp-cell-badge {
	background: #64748b;
	color: #fff;
	font-weight: 700;
}
.tbp-cal-cell.tbp-closed .tbp-cell-level-num,
.tbp-cal-cell.tbp-closed .tbp-cell-level-emoji {
	display: none;
}
.tbp-cal-cell.tbp-closed:hover {
	background: repeating-linear-gradient(
		45deg,
		#e2e8f0 0,
		#e2e8f0 6px,
		#cbd5e1 6px,
		#cbd5e1 12px
	);
}
.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 infinite;
	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;
}
.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.2.1: 3ヶ月モード時はステータスバッジを非表示
 * セル幅が1/3になるためバッジ文字「過去」「本日」「予測」が見切れる
 * 3ヶ月モードでは色（過去=グレー・本日=金・予測=青）で識別可能なので
 * バッジ自体を非表示にしてセル内をスッキリさせる
 */
.tbp-cal-grid-wrap[data-mode="3m"] .tbp-cell-badge {
	display: none;
}

/* 祝日下線 */
.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: var(--tbp-lv5-bg);
	color: var(--tbp-lv5-text);
	border: 1px solid var(--tbp-lv5-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, var(--tbp-lv1-main) 0%, #15803D 100%); }
.tbp-cal-dialog[data-tbp-lv="2"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv2-main) 0%, #4D7C0F 100%); }
.tbp-cal-dialog[data-tbp-lv="3"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv3-main) 0%, #B45309 100%); }
.tbp-cal-dialog[data-tbp-lv="4"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv4-main) 0%, #C2410C 100%); }
.tbp-cal-dialog[data-tbp-lv="5"] .tbp-cal-dialog-hero { background: linear-gradient(135deg, var(--tbp-lv5-main) 0%, #B91C1C 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 10px;
	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.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 7px;
		font-size: 12px;
	}
	.tbp-basis-value {
		font-size: 12px;
	}
}

/* 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); }
	.tbp-cal-grid-wrap[data-mode="3m"] { grid-template-columns: 1fr; }
}

/* 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; }
	.tbp-cal-legend-body { grid-template-columns: 1fr 1fr 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; }
}

/* ==========================================================================
   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-lv3-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-lv3-text);      /* #78350F */
}

.tbp-cal-disclaimer-text {
	margin: 0;
	font-size: var(--tbp-fs-sm);     /* 11px */
	font-weight: 400;
	line-height: 1.55;
	color: var(--tbp-text-soft);     /* #4A5169 */
}

/* v2.2.2: 天気予報範囲についての補足行（少し控えめに） */
.tbp-cal-disclaimer-text--weather {
	margin-top: 4px;
	padding-top: 4px;
	border-top: 1px dashed rgba(0, 0, 0, 0.08);
	font-size: 10.5px;
	color: var(--tbp-text-soft);
	opacity: 0.92;
}

.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;
}

/* ===== レスポンシブ ===== */
@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.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;

	/* 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;      /* 深褐色: 大型タイトル用文字色 */
}

/* ==========================================================================
   ① 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;
}

/* ==========================================================================
   ② 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);
}

/* ==========================================================================
   ③ カレンダー下部の切替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;
}
.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.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;
}
.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;
}
.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);
}

/* ==========================================================================
   ④ モーダル内パーク表示
   ========================================================================== */
.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);
}

/* ==========================================================================
   ⑤ 固定ページ用パンくずリスト＆データ注記（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);
	color: var(--tbp-text-soft);
	font-size: var(--tbp-fs-xs);
	line-height: 1.4;
}
.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;
}
