.bts-schedule {
	--bts-blue: #244190;
	--bts-blue-hover: #1a2f6b;
	--bts-maroon: #960000;
	--bts-ink: #16203a;
	--bts-body: #4c5670;
	--bts-muted: #5b6478;
	--bts-done: #8a92a6;
	--bts-border: #e3e7f0;
	--bts-border-soft: #edf0f6;
	--bts-tint: #f5f7fb;
	--bts-tag-blue: #eef2fb;
	--bts-tag-pink: #fbeeee;
	--bts-tag-grey: #eceef3;
	--bts-live: #0f5c3a;
	--bts-live-bg: #e3f4ea;
	--bts-font-head: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
	--bts-font-body: "Source Sans 3", system-ui, -apple-system, "Segoe UI", sans-serif;
	box-sizing: border-box;
	max-width: 100%;
	color: var(--bts-body);
	font-family: var(--bts-font-body);
	font-size: 16px;
	line-height: 1.5;
}
.bts-schedule.bts-fonts-theme {
	--bts-font-head: inherit;
	--bts-font-body: inherit;
}
.bts-schedule *,
.bts-schedule *::before,
.bts-schedule *::after { box-sizing: border-box; }
.bts-schedule ul { list-style: none; margin: 0; padding: 0; }
.bts-schedule .screen-reader-text {
	position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Header */
.bts-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 8px 24px; margin-bottom: 20px; }
.bts-eyebrow { margin: 0 0 6px; color: var(--bts-maroon); font: 700 13px/1.2 var(--bts-font-head); letter-spacing: .08em; text-transform: uppercase; }
.bts-heading { margin: 0; color: var(--bts-ink); font: 800 clamp(26px, 4vw, 38px)/1.15 var(--bts-font-head); }
.bts-intro { margin: 8px 0 0; color: var(--bts-body); font-size: 17px; }
.bts-schedule .bts-card__info { display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 2px; margin-left: auto; }
.bts-schedule .bts-updated { color: var(--bts-muted); font: 400 13px/1.3 var(--bts-font-body); letter-spacing: .04em; text-transform: uppercase;  white-space: nowrap; }

/* Tabs */
.bts-tabs { display: flex; gap: 10px; margin-bottom: 16px; padding-bottom: 4px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.bts-tab {
	flex: 0 0 auto; display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 18px;
	border: 1px solid var(--bts-border); border-radius: 999px; background: #fff; color: var(--bts-ink);
	font: 700 15px/1 var(--bts-font-head); cursor: pointer; transition: background-color .15s, color .15s, border-color .15s;
}
.bts-tab:hover { border-color: var(--bts-blue); }
.bts-tab:focus-visible { outline: 3px solid var(--bts-blue); outline-offset: 2px; }
.bts-tab[aria-selected="true"] { background: var(--bts-blue); border-color: var(--bts-blue); color: #fff; }
.bts-tab__short { display: none; }
.bts-tab__count {
	min-width: 24px; padding: 3px 7px; border-radius: 999px; background: var(--bts-tint); color: var(--bts-blue);
	font-size: 13px; line-height: 1.2; text-align: center;
}
.bts-tab[aria-selected="true"] .bts-tab__count { background: rgba(255, 255, 255, .22); color: #fff; }

/* No JS: stack all panels. */
.bts-schedule:not(.bts-js) .bts-tabs { display: none; }
.bts-schedule:not(.bts-js) .bts-panel[hidden] { display: block; }
.bts-schedule:not(.bts-js) .bts-panel { margin-bottom: 24px; }

/* Card */
.bts-panel:focus-visible { outline: 3px solid var(--bts-blue); outline-offset: 2px; border-radius: 14px; }
.bts-card { background: #fff; border: 1px solid var(--bts-border); border-radius: 14px; overflow: hidden; }
.bts-schedule .bts-card__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 16px; padding: 10px 24px; background: var(--bts-tint); border-bottom: 1px solid var(--bts-border); }
.bts-schedule .bts-card__month { margin: 0; padding: 0; color: var(--bts-ink); font: 800 18px/1.3 var(--bts-font-head); letter-spacing: 0; text-transform: none;  white-space: nowrap; }
.bts-schedule .bts-card__stats { display: block; margin: 0; padding: 0; color: var(--bts-muted); font: 400 14px/1.3 var(--bts-font-body); white-space: nowrap; }
.bts-card__foot { padding: 14px 24px; background: var(--bts-tint); border-top: 1px solid var(--bts-border); color: var(--bts-muted); font-size: 14px; }
.bts-card__foot a, .bts-empty a { color: var(--bts-blue); font-weight: 600; text-decoration: underline; }
.bts-empty { padding: 36px 24px; text-align: center; }
.bts-empty p { margin: 0 0 6px; color: var(--bts-ink); font-weight: 600; }

/* Row */
.bts-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; padding: 20px 24px; border-bottom: 1px solid var(--bts-border-soft); }
.bts-row:last-child { border-bottom: 0; }
.bts-date { flex: 0 0 104px; width: 104px; }
.bts-date__range { display: block; color: var(--bts-blue); font: 800 17px/1.25 var(--bts-font-head); }
.bts-date__days { display: block; margin-top: 2px; color: var(--bts-muted); font-size: 14px; }
.bts-main { flex: 1 1 280px; min-width: 0; }
.bts-schedule .bts-course { margin: 0; padding: 0; color: var(--bts-ink); font: 700 16px/1.35 var(--bts-font-head); letter-spacing: 0; text-transform: none; }
.bts-course a { color: inherit; text-decoration: none; }
.bts-course a:hover { color: var(--bts-blue); text-decoration: underline; }
.bts-live { display: inline-block; margin-left: 8px; padding: 3px 10px; border-radius: 999px; background: var(--bts-live-bg); color: var(--bts-live); font: 700 12px/1.3 var(--bts-font-head); vertical-align: middle; }
.bts-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; margin-top: 8px; color: var(--bts-muted); font-size: 15px; }
.bts-meta li { display: inline-flex; align-items: center; gap: 6px; margin: 0; }
.bts-icon { flex: 0 0 auto; color: var(--bts-muted); }
.bts-mode { display: inline-block; padding: 3px 10px; border-radius: 6px; font: 700 13px/1.4 var(--bts-font-head); white-space: nowrap; }
.bts-schedule .bts-mode--top { display: none; }
.bts-mode--online { background: var(--bts-tag-blue); color: var(--bts-blue); }
.bts-mode--physical { background: var(--bts-tag-pink); color: var(--bts-maroon); }
.bts-mode--hybrid { background: var(--bts-tag-grey); color: #3b4358; }

.bts-side { display: flex; align-items: center; gap: 20px; margin-left: auto; }
.bts-fee { text-align: right; }
.bts-fee__label { display: block; color: var(--bts-muted); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; }
.bts-fee__amount { display: block; color: var(--bts-ink); font: 800 16px/1.3 var(--bts-font-head); white-space: nowrap; }
.bts-btn {
	display: inline-flex; align-items: center; justify-content: center; min-width: 112px; height: 40px; padding: 0 16px;
	border-radius: 10px; background: var(--bts-maroon); color: #fff; font: 700 14px/1 var(--bts-font-head); text-decoration: none;
	transition: background-color .15s;
}
.bts-btn:hover, .bts-btn:focus-visible { background: #6f0000; color: #fff; }
.bts-btn:focus-visible { outline: 3px solid var(--bts-blue); outline-offset: 2px; }
.bts-state { display: inline-flex; align-items: center; justify-content: center; min-width: 112px; height: 40px; color: var(--bts-done); font: 700 14px/1 var(--bts-font-head); }
.bts-state--booked { color: var(--bts-maroon); }

/* Completed rows */
.bts-is-completed .bts-date__range,
.bts-is-completed .bts-date__days,
.bts-is-completed .bts-course,
.bts-is-completed .bts-course a,
.bts-is-completed .bts-fee__amount,
.bts-is-completed .bts-meta { color: var(--bts-done); }
.bts-is-completed .bts-icon { color: var(--bts-done); }
.bts-is-completed .bts-mode { background: var(--bts-tag-grey); color: var(--bts-done); }

/* Mobile */
@media (max-width: 639px) {
	.bts-header { align-items: flex-start; }
	.bts-tab { padding: 0 14px; gap: 8px; font-size: 14px; }
	.bts-tab__long { display: none; }
	.bts-tab__short { display: inline; }
	.bts-schedule .bts-card__head { flex-wrap: wrap; padding: 10px 16px; }
	.bts-schedule .bts-card__info { align-items: flex-end; }
	.bts-schedule .bts-card__stats { white-space: normal; text-align: right; }
	.bts-card__foot { padding-left: 16px; padding-right: 16px; }

	.bts-row {
		display: grid; grid-template-columns: 1fr auto; grid-template-areas: "date mode" "main main" "side side";
		gap: 10px 12px; padding: 16px;
	}
	.bts-date { grid-area: date; width: auto; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
	.bts-date__days { margin-top: 0; }
	.bts-schedule .bts-mode--top { display: inline-block; grid-area: mode; align-self: start; }
	.bts-meta__mode { display: none; }
	.bts-main { grid-area: main; }
	.bts-meta { margin-top: 6px; gap: 4px 14px; font-size: 14px; }
	.bts-side { grid-area: side; justify-content: space-between; margin: 4px 0 0; padding-top: 12px; border-top: 1px solid var(--bts-border-soft); }
	.bts-fee { text-align: left; }
}

/* Calmer layout: search, divider, lighter button, more room. */
.bts-filter-wrap { display: none; margin-bottom: 14px; }
.bts-schedule.bts-js .bts-filter-wrap { display: block; }
.bts-schedule .bts-filter {
	width: 100%; max-width: 420px; height: 46px; padding: 0 16px; border: 1px solid var(--bts-border); border-radius: 10px;
	background: #fff; color: var(--bts-ink); font: 400 15px/1 var(--bts-font-body); box-shadow: none;
}
.bts-schedule .bts-filter:focus { outline: 3px solid var(--bts-blue); outline-offset: 1px; border-color: var(--bts-blue); }
.bts-schedule .bts-row { padding: 24px 28px; gap: 14px 28px; }
.bts-schedule .bts-meta { margin-top: 10px; font-size: 14px; gap: 6px 20px; }
.bts-schedule .bts-divider {
	margin: 0; padding: 10px 28px; background: var(--bts-tint); border-top: 1px solid var(--bts-border); border-bottom: 1px solid var(--bts-border-soft);
	color: var(--bts-muted); font: 700 12px/1.3 var(--bts-font-head); letter-spacing: .08em; text-transform: uppercase;
}
.bts-schedule .bts-btn { background: #fff; color: var(--bts-maroon); border: 1.5px solid var(--bts-maroon); }
.bts-schedule .bts-btn:hover, .bts-schedule .bts-btn:focus-visible { background: var(--bts-maroon); color: #fff; }
.bts-schedule .bts-nomatch { margin: 0; padding: 28px 24px; text-align: center; color: var(--bts-muted); }
.bts-schedule [hidden] { display: none !important; }
.bts-schedule:not(.bts-js) .bts-panel[hidden] { display: block !important; }
@media (max-width: 639px) {
	.bts-schedule .bts-row { padding: 18px 16px; }
	.bts-schedule .bts-divider { padding: 10px 16px; }
	.bts-schedule .bts-filter { max-width: none; }
}@media (min-width: 640px) and (max-width: 900px) {
	.bts-schedule .bts-row { gap: 12px 20px; padding: 20px; }
	.bts-schedule .bts-date { flex-basis: 104px; width: 104px; }
	.bts-schedule .bts-main { flex: 1 1 150px; }
	.bts-schedule .bts-side { gap: 14px; }
	.bts-schedule .bts-btn, .bts-schedule .bts-state { min-width: 104px; }
}

/* Month tabs: explicit hover/focus colours so theme button styles cannot override them. */
.bts-schedule .bts-tab:hover,
.bts-schedule .bts-tab:focus { background: var(--bts-tag-blue); color: var(--bts-blue); border-color: var(--bts-blue); }
.bts-schedule .bts-tab:hover .bts-tab__count,
.bts-schedule .bts-tab:focus .bts-tab__count { background: #fff; color: var(--bts-blue); }
.bts-schedule .bts-tab[aria-selected="true"],
.bts-schedule .bts-tab[aria-selected="true"]:hover,
.bts-schedule .bts-tab[aria-selected="true"]:focus { background: var(--bts-blue); border-color: var(--bts-blue); color: #fff; }
.bts-schedule .bts-tab[aria-selected="true"]:hover { background: var(--bts-blue-hover); border-color: var(--bts-blue-hover); }
.bts-schedule .bts-tab[aria-selected="true"] .bts-tab__count,
.bts-schedule .bts-tab[aria-selected="true"]:hover .bts-tab__count { background: rgba(255, 255, 255, .22); color: #fff; }

/* Centre the search box and the month tabs. */
.bts-schedule .bts-filter-wrap { text-align: center; }
.bts-schedule .bts-filter { margin: 0 auto; }
.bts-schedule .bts-tabs { justify-content: flex-start; }
.bts-schedule .bts-tabs > .bts-tab:first-child { margin-left: auto; }
.bts-schedule .bts-tabs > .bts-tab:last-child { margin-right: auto; }

/* Row hover, like a table. Only on devices that can hover. */
.bts-schedule .bts-row { transition: background-color .15s; }
@media (hover: hover) {
	.bts-schedule .bts-row:hover { background: var(--bts-tint); }
	.bts-schedule .bts-row.bts-is-completed:hover { background: #fafbfd; }
}
