/* CSB Tournaments v2.2 — Coastline Select Baseball brand tokens, LIGHT theme.
   cyan #12C6E6 / #0EA9C9 accents on light #F5F7F9 / #FFFFFF surfaces,
   ink text #101820, font Saira, 6px radius.
   The [csb_tournament] shortcode owns the whole page section (.csb-page):
   a light canvas headed by the TOPPER — the uploaded promo poster beside the
   tournament info (LIVE pill, name, date/location chips, division pills). */

.csb-page,
.csb-tournament,
.csb-live-region {
	--csb-cyan: #12c6e6;
	--csb-cyan-deep: #0ea9c9;
	--csb-cyan-ink: #0a4b57; /* cyan-tinted dark — accents/links ON light */
	--csb-surface: #1c212b; /* dark set kept for the hero + LIVE pill */
	--csb-surface-deep: #06222b;
	--csb-ink: #0b0f14;
	--csb-bg: #f5f7f9; /* light page canvas */
	--csb-card: #ffffff;
	--csb-text: #101820;
	--csb-muted: #46505c;
	--csb-dim: #6b7683;
	--csb-line: #dfe4ea;
	--csb-line-strong: #c9d1da;
	--csb-radius: 6px;
	font-family: 'Saira', sans-serif;
	color: var(--csb-text);
}

/* ---- Page shell: full-bleed, seamless light ---- */

/* 100vw includes the scrollbar gutter; keep the page from scrolling sideways.
   Scoped via :has so only pages carrying the component are touched.
   clip, not hidden — hidden turns body into a scroll container and kills
   the sticky day headers. */
body:has(.csb-page) {
	overflow-x: hidden;
	overflow-x: clip;
}

.csb-page {
	width: 100vw;
	max-width: none !important; /* beat theme per-child content-width caps */
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	background: var(--csb-bg);
	padding-bottom: 64px;
	overflow-x: hidden;
	overflow-x: clip; /* clip keeps sticky day headers working */
}

.csb-page-inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 6px 20px 24px;
}

/* The component dissolves into the page — no box, no border. */
.csb-tournament {
	background: transparent;
	border: none;
	border-radius: 0;
	padding: 0;
	max-width: 100%;
}

/* Granular shortcodes ([csb_schedule] etc.) still stand alone as a light card. */
.csb-live-region {
	background: var(--csb-card);
	border: 1px solid var(--csb-line);
	border-radius: var(--csb-radius);
	padding: 16px;
}

@keyframes csb-fly {
	from { opacity: 0; transform: translateY(22px); }
	to   { opacity: 1; transform: none; }
}

/* ---- Topper: poster + tournament info on the light canvas ---- */

.csb-topper {
	display: grid;
	grid-template-columns: minmax(0, 62fr) minmax(0, 38fr);
	gap: 36px;
	align-items: center;
	max-width: 1200px;
	margin: 0 auto;
	padding: 44px 20px 4px; /* breathing room under the solid site header */
}

/* No poster: the info block owns the full width. */
.csb-topper--full {
	grid-template-columns: minmax(0, 1fr);
}

.csb-topper-poster {
	aspect-ratio: 2 / 1;
	border-radius: 12px;
	overflow: hidden;
	background: var(--csb-ink); /* letterboxes a non-2:1 upload gracefully */
	box-shadow: 0 2px 10px rgba(16, 24, 32, 0.12);
}

.csb-poster-img {
	display: block;
	width: 100% !important;
	height: 100% !important; /* themes ship img{height:auto} rules */
	max-width: none !important;
	object-fit: cover;
	object-position: center;
}

/* Info sits clean on the white page — no card box. */
.csb-topper-info > .csb-live-pill {
	margin-bottom: 14px;
	animation: csb-fly 0.7s cubic-bezier(0.18, 0.7, 0.2, 1) both, csb-pulse 2s ease-in-out infinite;
}

.csb-topper-title {
	margin: 0 0 16px;
	font-family: 'Saira', sans-serif;
	font-size: clamp(1.7rem, 3.2vw, 2.5rem);
	font-weight: 800;
	line-height: 1.08;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--csb-text);
	animation: csb-fly 0.7s cubic-bezier(0.18, 0.7, 0.2, 1) both;
}

.csb-topper-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 12px;
	font-size: 0.95rem;
	animation: csb-fly 0.7s cubic-bezier(0.18, 0.7, 0.2, 1) 0.08s both;
}

/* Dates + location read as solid chips, not fine print. */
.csb-topper-meta .csb-dates,
.csb-topper-meta .csb-location {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	padding: 9px 16px;
	font-size: 0.95rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--csb-text);
	background: var(--csb-card);
	border: 1px solid var(--csb-line-strong);
	border-radius: 999px;
}

.csb-meta-icon {
	width: 17px;
	height: 17px;
	flex: 0 0 auto;
	color: var(--csb-cyan-ink);
}

.csb-live-pill {
	display: inline-flex;
	align-items: center;
	background: var(--csb-cyan);
	color: var(--csb-surface-deep);
	font-weight: 700;
	font-size: 0.78rem;
	letter-spacing: 0.08em;
	padding: 6px 16px;
	border-radius: 999px;
	animation: csb-pulse 2s ease-in-out infinite;
}

@keyframes csb-pulse {
	50% { opacity: 0.65; }
}

/* No-tournament page: just the light empty-state card, comfortably below the nav. */
.csb-page--empty {
	padding-top: 40px;
}

/* ---- Division selector (in the topper, light context) ---- */

.csb-division-block {
	margin-top: 26px;
	animation: csb-fly 0.7s cubic-bezier(0.18, 0.7, 0.2, 1) 0.16s both;
}

/* "DIVISIONS" heading with a short cyan rule — names the button row. */
.csb-division-label {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: 12px;
	margin-bottom: 14px;
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--csb-cyan-ink);
}

.csb-division-label::before {
	content: "";
	width: 16px;
	height: 3px;
	background: var(--csb-cyan-deep);
}

.csb-division-bar {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-start;
	gap: 12px;
}

.csb-division-btn {
	font-family: 'Saira', sans-serif;
	font-size: 1rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	padding: 13px 30px;
	min-height: 52px;
	border: 2px solid var(--csb-line-strong);
	border-radius: 999px;
	background: var(--csb-card);
	color: var(--csb-text);
	cursor: pointer;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease, transform 0.15s ease;
}

.csb-division-btn:hover {
	border-color: var(--csb-cyan-deep);
	background: rgba(18, 198, 230, 0.08);
	transform: translateY(-1px);
}

.csb-division-btn:focus-visible {
	outline: 2px solid var(--csb-cyan-deep);
	outline-offset: 3px;
}

.csb-division-btn.is-active {
	background: var(--csb-cyan-ink);
	border-color: var(--csb-cyan-ink);
	color: #ffffff;
	box-shadow: 0 4px 14px rgba(10, 75, 87, 0.28);
}

.csb-division-btn.is-active:hover {
	background: #08404a;
	border-color: #08404a;
	transform: none;
}

.csb-division-single {
	font-weight: 700;
	color: var(--csb-text);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-size: 1.05rem;
}

/* ---- Tabs ---- */

.csb-tabs {
	display: flex;
	gap: 2px;
	border-bottom: 1px solid var(--csb-line-strong);
	margin-top: 18px;
}

.csb-tab {
	font-family: 'Saira', sans-serif;
	font-size: 0.95rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 12px 22px;
	min-height: 46px;
	flex: 0 1 auto;
	background: transparent;
	color: var(--csb-muted);
	border: none;
	border-bottom: 3px solid transparent;
	margin-bottom: -1px;
	cursor: pointer;
	transition: color 0.15s ease, border-color 0.15s ease;
}

.csb-tab:hover {
	color: var(--csb-text);
}

.csb-tab.is-active {
	color: var(--csb-cyan-ink);
	border-bottom-color: var(--csb-cyan-deep);
}

.csb-panel {
	display: none;
	padding-top: 24px;
}

.csb-panel.is-active {
	display: block;
}

.csb-panels.is-loading {
	opacity: 0.55;
	transition: opacity 0.15s ease;
}

/* ---- Schedule: day groups with sticky headers ---- */

.csb-day-group {
	margin: 0 0 36px;
}

.csb-day-group:last-child {
	margin-bottom: 8px;
}

.csb-day {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px); /* clears the admin bar for logged-in staff */
	z-index: 4;
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 4px;
	padding: 14px 2px 12px;
	background: var(--csb-bg); /* opaque so rows scroll underneath */
	font-family: 'Saira', sans-serif;
	font-size: 0.84rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.16em;
	color: var(--csb-text);
	border-bottom: 1px solid var(--csb-line-strong);
}

.csb-day::before {
	content: "";
	flex: 0 0 auto;
	width: 16px;
	height: 3px;
	background: var(--csb-cyan-deep);
}

/* ---- Tables (schedule + standings): white cards on the light canvas ---- */

.csb-table-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	background: var(--csb-card);
	border: 1px solid var(--csb-line);
	border-radius: 10px;
	box-shadow: 0 1px 3px rgba(16, 24, 32, 0.05);
}

.csb-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.9rem;
	background: transparent;
	margin: 0;
}

.csb-table thead th {
	background: transparent;
	color: var(--csb-dim);
	text-transform: uppercase;
	font-size: 0.7rem;
	letter-spacing: 0.12em;
	font-weight: 700;
	text-align: left;
	padding: 10px 12px 8px;
	white-space: nowrap;
	border: none;
	border-bottom: 1px solid var(--csb-line-strong);
}

.csb-table tbody td {
	padding: 12px;
	border: none;
	border-bottom: 1px solid var(--csb-line);
	color: var(--csb-text);
	vertical-align: middle;
}

.csb-table tbody tr:last-child td {
	border-bottom: none;
}

/* The sox theme stripes odd rows via
   table > tbody > tr:nth-child(2n+1) > td — outrank it with our own zebra. */
.csb-table > tbody > tr:nth-child(2n+1) > td {
	background: #f7f9fb;
}

.csb-table > tbody > tr:nth-child(2n) > td {
	background: var(--csb-card);
}

.csb-table tbody tr:hover td {
	background: rgba(18, 198, 230, 0.08) !important;
}

.csb-col-num {
	white-space: nowrap;
	color: var(--csb-muted);
}

.csb-col-when,
.csb-col-field {
	white-space: nowrap;
	color: var(--csb-muted);
}

.csb-col-team {
	font-weight: 600;
	min-width: 130px;
}

.csb-col-score {
	text-align: center;
	white-space: nowrap;
}

.csb-col-status {
	text-align: right;
	white-space: nowrap;
}

/* Symmetric scoreboard layout for the schedule table (mobile uses cards).
   Fixed layout pins the meta columns to constant widths, so the two team
   columns split the remainder equally and every day group's score column
   sits on the same vertical line. */
.csb-schedule-table {
	table-layout: fixed;
}

.csb-schedule-table .csb-col-num {
	width: 110px;
}

.csb-schedule-table th:nth-child(2) {
	width: 90px;
}

.csb-schedule-table th:nth-child(3) {
	width: 76px;
}

.csb-schedule-table .csb-col-score {
	width: 84px;
	text-align: center;
}

.csb-schedule-table .csb-col-status {
	width: 108px;
	text-align: right;
}

.csb-schedule-table th:nth-child(4),
.csb-schedule-table td:nth-child(4) {
	text-align: right;
}

.csb-schedule-table .csb-col-team {
	min-width: 0;
	overflow-wrap: break-word;
}

/* Narrow-tablet band (cards take over below 641px): tighter meta columns
   so the team columns keep enough room. */
@media (max-width: 900px) {
	.csb-schedule-table thead th,
	.csb-schedule-table tbody td {
		padding-left: 8px;
		padding-right: 8px;
	}

	.csb-schedule-table .csb-col-num {
		width: 86px;
	}

	.csb-schedule-table th:nth-child(2) {
		width: 74px;
	}

	.csb-schedule-table th:nth-child(3) {
		width: 56px;
	}

	.csb-schedule-table .csb-col-score {
		width: 62px;
	}

	.csb-schedule-table .csb-col-status {
		width: 92px;
	}
}

.csb-score {
	font-weight: 700;
	color: var(--csb-cyan-ink);
}

.csb-vs {
	color: var(--csb-dim);
	font-size: 0.8rem;
	text-transform: uppercase;
}

.csb-winner {
	color: var(--csb-cyan-ink);
}

.csb-seed {
	color: var(--csb-dim);
	font-weight: 400;
	font-size: 0.8rem;
}

.csb-badge {
	display: inline-block;
	font-size: 0.65rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 1px 7px;
	border-radius: 999px;
	margin-left: 6px;
	vertical-align: 1px;
}

.csb-badge-gold {
	background: rgba(230, 184, 18, 0.2);
	color: #7d6404;
}

.csb-badge-silver {
	background: rgba(90, 100, 112, 0.14);
	color: var(--csb-muted);
}

.csb-badge-bracket {
	background: rgba(18, 198, 230, 0.16);
	color: var(--csb-cyan-ink);
}

.csb-status-badge {
	display: inline-block;
	font-size: 0.66rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	padding: 3px 10px;
	border-radius: 999px;
	white-space: nowrap;
}

.csb-status-final {
	color: var(--csb-cyan-ink);
	background: rgba(18, 198, 230, 0.16);
}

.csb-status-upcoming {
	color: var(--csb-muted);
	background: rgba(90, 100, 112, 0.12);
}

/* ---- Schedule: stacked game cards (<640px) ---- */

.csb-cards {
	display: none;
}

.csb-game-card {
	background: var(--csb-card);
	border: 1px solid var(--csb-line);
	border-radius: 10px;
	padding: 12px 14px;
	box-shadow: 0 1px 3px rgba(16, 24, 32, 0.05);
}

.csb-game-card + .csb-game-card {
	margin-top: 10px;
}

.csb-game-top {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 8px;
	margin-bottom: 8px;
}

.csb-game-meta {
	font-size: 0.8rem; /* readability: was 0.72 dim-gray */
	color: var(--csb-muted);
	letter-spacing: 0.04em;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.csb-game-flags {
	display: flex;
	align-items: center;
	gap: 6px;
	flex: 0 0 auto;
}

.csb-game-flags .csb-badge {
	margin-left: 0;
	vertical-align: baseline;
}

.csb-game-team {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	padding: 8px 0;
	font-size: 0.98rem;
	font-weight: 600;
	color: var(--csb-text);
}

.csb-game-team + .csb-game-team {
	border-top: 1px solid var(--csb-line);
}

.csb-game-name {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.csb-game-score {
	flex: 0 0 auto;
	min-width: 28px;
	text-align: right;
	font-weight: 700;
	font-size: 1.15rem; /* readability: bolder scores on phones */
}

.csb-row-upcoming .csb-game-team {
	color: var(--csb-muted);
}

/* ---- Standings: leader + playoff cut line + legend ---- */

.csb-table > tbody > tr.csb-leader > td {
	background: rgba(18, 198, 230, 0.1);
}

.csb-leader td:first-child {
	box-shadow: inset 3px 0 0 var(--csb-cyan-deep);
}

.csb-standings-table .csb-col-num {
	width: 44px;
}

.csb-table > tbody > tr.csb-cutline > td {
	padding: 0;
	border-bottom: none;
	background: transparent !important;
}

.csb-cutline td span {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 7px 8px;
	font-size: 0.68rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.2em;
	color: var(--csb-cyan-ink);
	white-space: nowrap;
}

.csb-cutline td span::before,
.csb-cutline td span::after {
	content: "";
	flex: 1 1 auto;
	border-top: 2px dashed rgba(14, 169, 201, 0.55);
}


.csb-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 24px;
	margin: 16px 2px 0;
	font-size: 0.8rem; /* readability: was 0.75 dim */
	color: var(--csb-muted);
}

.csb-legend strong {
	color: var(--csb-text);
	font-weight: 700;
	margin-right: 4px;
}

.csb-standings-note {
	color: var(--csb-muted);
	font-size: 0.8rem;
	margin: 6px 2px 0;
}

/* ---- Bracket with connector lines ---- */

.csb-bracket-group {
	margin-bottom: 30px;
}

.csb-bracket-title {
	font-family: 'Saira', sans-serif;
	font-size: 1.05rem;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--csb-text);
	margin: 0 0 12px;
}

.csb-bracket-gold .csb-bracket-title {
	color: #8a6d00;
}

.csb-bracket-silver .csb-bracket-title {
	color: var(--csb-muted);
}

.csb-bracket-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	padding-bottom: 8px;
}

.csb-bracket {
	display: flex;
	gap: 28px;
	align-items: stretch;
	min-width: min-content;
}

.csb-round {
	display: flex;
	flex-direction: column;
	min-width: 230px;
}

.csb-round-label {
	text-align: center;
	font-size: 0.74rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--csb-dim);
	margin-bottom: 10px;
}

.csb-round-games {
	flex: 1;
	display: flex;
	flex-direction: column;
}

.csb-slot {
	position: relative;
	flex: 1;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 8px 0;
}

/* Elbow out of each game toward its next-round slot: odd slots drop to the
   pair midpoint, even slots rise to it, both half the 28px column gap wide. */
.csb-round:not(:last-child) .csb-slot:nth-child(odd)::after {
	content: "";
	position: absolute;
	left: 100%;
	top: 50%;
	width: 14px;
	height: calc(50% + 1px);
	border-top: 2px solid var(--csb-line-strong);
	border-right: 2px solid var(--csb-line-strong);
}

.csb-round:not(:last-child) .csb-slot:nth-child(even)::after {
	content: "";
	position: absolute;
	left: 100%;
	bottom: 50%;
	width: 14px;
	height: calc(50% + 1px);
	border-bottom: 2px solid var(--csb-line-strong);
	border-right: 2px solid var(--csb-line-strong);
}

/* Stub into each game from the previous round's joined vertical. */
.csb-round + .csb-round .csb-slot::before {
	content: "";
	position: absolute;
	right: 100%;
	top: calc(50% - 1px);
	width: 14px;
	border-top: 2px solid var(--csb-line-strong);
}

.csb-bracket-game {
	background: var(--csb-card);
	border: 1px solid var(--csb-line-strong);
	border-radius: var(--csb-radius);
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(16, 24, 32, 0.05);
}

.csb-bracket-game.csb-final {
	border-color: rgba(14, 169, 201, 0.5);
}

.csb-bracket-meta {
	font-size: 0.74rem; /* readability: was 0.7 */
	color: var(--csb-muted);
	padding: 6px 10px;
	background: #eef1f5;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.csb-bracket-team {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 10px;
	padding: 8px 10px;
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--csb-muted);
}

.csb-bracket-team + .csb-bracket-team {
	border-top: 1px solid var(--csb-line);
}

.csb-bracket-team.csb-winner {
	color: var(--csb-text);
}

.csb-bracket-team.csb-winner .csb-bracket-score {
	color: var(--csb-surface-deep);
	background: var(--csb-cyan);
}

.csb-bracket-name {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.csb-bracket-score {
	min-width: 26px;
	text-align: center;
	font-weight: 700;
	border-radius: 4px;
	padding: 1px 5px;
}

.csb-champion {
	margin-top: 14px;
	background: linear-gradient(90deg, rgba(18, 198, 230, 0.14), rgba(18, 198, 230, 0.03));
	border: 1px solid rgba(14, 169, 201, 0.45);
	border-radius: var(--csb-radius);
	padding: 14px 18px;
	font-size: 1.05rem;
	font-weight: 700;
	color: var(--csb-text);
}

.csb-champion-label {
	display: block;
	font-size: 0.68rem;
	letter-spacing: 0.1em;
	color: var(--csb-cyan-ink);
	margin-bottom: 2px;
}

/* ---- Empty states ---- */

.csb-empty {
	color: var(--csb-muted);
	text-align: center;
	padding: 44px 16px;
	margin: 0;
	font-size: 1rem;
}

.csb-empty-panel {
	max-width: 560px;
	margin: 48px auto 24px;
	text-align: center;
	background: var(--csb-card);
	border: 1px solid var(--csb-line);
	border-radius: 12px;
	padding: 46px 30px 42px;
	box-shadow: 0 1px 3px rgba(16, 24, 32, 0.05);
}

.csb-empty-mark {
	display: inline-block;
	width: 15px;
	height: 15px;
	border: 2px solid var(--csb-cyan-deep);
	transform: rotate(45deg);
	margin-bottom: 20px;
}

.csb-empty-title {
	margin: 0 0 10px;
	font-family: 'Saira', sans-serif;
	font-size: 1.3rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--csb-text);
}

.csb-empty-copy {
	margin: 0 auto;
	max-width: 42ch;
	color: var(--csb-muted);
	line-height: 1.55;
}

.csb-empty-link {
	display: inline-block;
	margin-top: 24px;
	background: var(--csb-cyan);
	color: var(--csb-surface-deep);
	font-weight: 700;
	font-size: 0.8rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 12px 24px;
	border-radius: var(--csb-radius);
	text-decoration: none;
	transition: background 0.15s ease;
}

.csb-empty-link:hover {
	background: var(--csb-cyan-deep);
	color: var(--csb-surface-deep);
}

/* ---- Footer stamp ---- */

.csb-updated {
	margin-top: 14px;
	font-size: 0.75rem;
	color: var(--csb-dim);
	text-align: right;
}

/* ---- Motion ---- */

@media (prefers-reduced-motion: reduce) {
	.csb-topper-title,
	.csb-topper-meta,
	.csb-topper-info > .csb-live-pill,
	.csb-division-block,
	.csb-live-pill {
		animation: none;
	}
}

/* ---- Mobile ---- */

@media (max-width: 640px) {
	.csb-page-inner {
		padding: 2px 14px 16px;
	}

	/* Topper stacks: poster on top, info below. */
	.csb-topper {
		display: block;
		padding: 26px 14px 0;
	}

	.csb-topper-poster {
		margin-bottom: 22px;
		border-radius: 10px;
	}

	.csb-topper-title {
		font-size: clamp(1.5rem, 6.4vw, 1.9rem);
	}

	.csb-topper-meta {
		font-size: 0.9rem;
	}

	.csb-topper-meta .csb-dates,
	.csb-topper-meta .csb-location {
		font-size: 0.9rem;
		padding: 8px 14px;
	}

	.csb-page--empty {
		padding-top: 24px;
	}

	.csb-meta-icon {
		width: 15px;
		height: 15px;
	}

	.csb-division-block {
		margin-top: 26px;
	}

	.csb-division-bar {
		gap: 10px;
	}

	.csb-division-btn {
		padding: 11px 22px;
		font-size: 0.92rem;
		min-height: 48px;
	}

	.csb-tabs {
		margin-top: 12px;
	}

	.csb-tab {
		flex: 1;
		padding: 11px 6px;
		font-size: 0.85rem;
		text-align: center;
	}

	/* Schedule flips from table to stacked game cards — no sideways scroll. */
	.csb-schedule .csb-table-wrap {
		display: none;
	}

	.csb-cards {
		display: block;
	}

	.csb-day {
		padding: 12px 2px 10px;
		margin-bottom: 12px;
		font-size: 0.8rem;
	}

	.csb-table {
		font-size: 0.85rem;
	}

	.csb-table thead th,
	.csb-table tbody td {
		padding: 9px 8px;
	}

	.csb-col-team {
		min-width: 110px;
	}

	.csb-round {
		min-width: 205px;
	}

	.csb-empty-panel {
		margin-top: 32px;
		padding: 38px 20px 34px;
	}
}
