/* CourtFlow Events - Front-end styles */

/* Events list - BEM; center filters on mobile and desktop */
.courtflow-events-list {
	min-width: 90%;
	margin: 1.5em 0;
	display: flex;
	flex-direction: column;
	align-items: center;
}
.courtflow-events-list__grid-wrapper {
	width: 100%;
}
.courtflow-events-list__dropdowns-row {
	justify-content: center;
}
.courtflow-events-list__filter-group--category .courtflow-events-list__categories {
	justify-content: center;
}

.courtflow-events-list__locations {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 1rem;
	align-items: center;
	justify-content: center;
}

.courtflow-events-location-btn {
	padding: 0.5em 1em;
	border: 1px solid #ccc;
	background: #fff;
	border-radius: 2em;
	cursor: pointer;
	font-size: 0.95rem;
	transition: background 0.2s, border-color 0.2s;
}

.courtflow-events-location-btn:hover {
	background: #f5f5f5;
	border-color: #999;
}

.courtflow-events-location-btn.is-active {
	background: var(--courtflow-primary, #1F2A44);
	color: #fff;
	border-color: var(--courtflow-primary, #1F2A44);
}

/* Upcoming events list: filter groups (label above options) */
.courtflow-events-list__filter-group {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.35rem;
	margin-bottom: 1rem;
}
.courtflow-events-list__filter-group .courtflow-events-list__filter-label {
	font-size: 0.75rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--courtflow-primary, #1F2A44);
}
.courtflow-events-list__filter-group--location .courtflow-events-list__filter-label,
.courtflow-events-list__filter-group--category .courtflow-events-list__filter-label,
.courtflow-events-list__filter-group--tag .courtflow-events-list__filter-label {
	color: var(--courtflow-primary, #1F2A44);
}

/* Locations + Tags side by side (both dropdowns) */
.courtflow-events-list__dropdowns-row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 1rem;
	margin-bottom: 1rem;
}
.courtflow-events-list__dropdowns-row .courtflow-events-list__filter-group {
	margin-bottom: 0;
}
.courtflow-events-list__location-select,
.courtflow-events-list__tag-select {
	min-width: 8rem;
	padding: 0.5em 2em 0.5em 0.75em;
	border: 1px solid #ccc;
	border-radius: 6px;
	background: #fff;
	font-size: 0.9rem;
	color: #1d2327;
	cursor: pointer;
	appearance: auto;
}
.courtflow-events-list__location-select:hover,
.courtflow-events-list__tag-select:hover {
	border-color: #999;
}
.courtflow-events-list__location-select:focus,
.courtflow-events-list__tag-select:focus {
	outline: 2px solid var(--courtflow-primary, #1F2A44);
	outline-offset: 2px;
}

.courtflow-events-list__categories {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	align-items: center;
	justify-content: flex-start;
}

.courtflow-events-category-btn {
	padding: 0.5em 1em;
	border: 1px solid #ccc;
	background: #fff;
	border-radius: 2em;
	cursor: pointer;
	font-size: 0.95rem;
	transition: background 0.2s, border-color 0.2s;
}

.courtflow-events-category-btn:hover {
	background: #f5f5f5;
	border-color: #999;
}

.courtflow-events-category-btn.is-active {
	background: var(--courtflow-primary, #1F2A44);
	border-color: var(--courtflow-primary, #1F2A44);
	color: #fff;
}

/* Carousel: arrows outside the scroll area (grid layout) */
.courtflow-events-list__grid-wrapper {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
}

.courtflow-events-list__grid-scroll {
	overflow-x: auto;
	overflow-y: hidden;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	scroll-snap-type: x mandatory;
	padding: 0.25rem 0;
	scrollbar-width: none;
	min-width: 0;
}

.courtflow-events-list__grid-scroll::-webkit-scrollbar {
	display: none;
}

.courtflow-events-list__grid {
	display: flex;
	flex-wrap: nowrap;
	gap: 1.5rem;
	min-width: min-content;
	padding: 0 2px;
}

.courtflow-events-list__grid .courtflow-events-card {
	flex: 0 0 300px;
	min-width: 280px;
	scroll-snap-align: start;
}

@media (max-width: 768px) {
	.courtflow-events-list__grid .courtflow-events-card {
		flex: 0 0 260px;
		min-width: 240px;
	}
}

@media (max-width: 480px) {
	.courtflow-events-list__grid .courtflow-events-card {
		flex: 0 0 240px;
		min-width: 220px;
	}
}

/* Arrow buttons – outside card rail, no overlay */
.courtflow-events-list__scroll-btn {
	flex-shrink: 0;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid #ccc;
	background: #fff;
	border-radius: 50%;
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
	transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #333;
}

.courtflow-events-list__scroll-btn:hover {
	background: #f5f5f5;
	border-color: var(--courtflow-primary, #1F2A44);
	color: var(--courtflow-primary, #1F2A44);
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);
}

.courtflow-events-list__scroll-btn:focus {
	outline: 2px solid var(--courtflow-primary, #1F2A44);
	outline-offset: 2px;
}

.courtflow-events-list__scroll-btn:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

@media (max-width: 480px) {
	.courtflow-events-list__scroll-btn {
		width: 36px;
		height: 36px;
		font-size: 1.2rem;
	}
}

.courtflow-events-list__message {
	margin: 1rem 0;
	padding: 0.75rem;
}

.courtflow-events-list__message--empty {
	color: #666;
}

/* Cards – image-first, overlay, badges, meta, CTA */
.courtflow-events-card {
	border: 1px solid #e0e0e0;
	border-radius: 8px;
	overflow: hidden;
	background: #fff;
	transition: box-shadow 0.2s;
	display: flex;
	flex-direction: column;
}

.courtflow-events-card:hover {
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.courtflow-events-card__image-wrap {
	position: relative;
	width: 100%;
}

.courtflow-events-card__image {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 10;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	background-color: #e8e8e8;
}

.courtflow-events-card__image--placeholder {
	background-color: #e0e0e0;
	background-image: none;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0.75rem;
	box-sizing: border-box;
}

.courtflow-events-card__image-placeholder-text {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	text-align: center;
	font-size: 0.95rem;
	line-height: 1.25;
	color: #555;
	font-weight: 600;
}

.courtflow-events-card__overlay {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	padding: 0.5rem 0.75rem;
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	align-items: center;
}

.courtflow-events-card__level,
.courtflow-events-card__type,
.courtflow-events-card__location-pill {
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: #fff;
	background: rgba(0, 0, 0, 0.55);
	padding: 0.2em 0.5em;
	border-radius: 8px;
}

.courtflow-events-card__location-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.25rem;
}

.courtflow-events-card__location-pill-icon {
	flex-shrink: 0;
}

.courtflow-events-card__body {
	padding: 1.25rem;
	display: flex;
	flex-direction: column;
	flex: 1;
	min-height: 0;
}

.courtflow-events-card__title {
	margin: 0 0 0.5rem;
	font-size: 1.1rem;
	line-height: 1.3;
}

.courtflow-events-card__badges {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	margin-bottom: 0.75rem;
}

.courtflow-events-card__badge {
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	padding: 0.25em 0.6em;
	border-radius: 2em;
}

.courtflow-events-card__badge--type {
	background: #f0c14b;
	color: #1a1a1a;
}

.courtflow-events-card__badge--non-dupr {
	background: #2d6a2d;
	color: #fff;
}

.courtflow-events-card__badge--tag {
	/* API may provide BackgroundColor/TextColor via inline styles */
}

.courtflow-events-card__badge:not(.courtflow-events-card__badge--type):not(.courtflow-events-card__badge--non-dupr):not(.courtflow-events-card__badge--tag) {
	background: #e8e8e8;
	color: #444;
}

.courtflow-events-card__badge--tag:not([style*="background"]) {
	background: #e8e8e8;
	color: #444;
}

.courtflow-events-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin-bottom: 1rem;
	font-size: 0.9rem;
	color: #555;
}

.courtflow-events-card__meta-item {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
}

.courtflow-events-card__meta-icon {
	flex-shrink: 0;
}

.courtflow-events-card__meta--location-row {
	margin-bottom: 0.5rem;
}

.courtflow-events-card__meta--date-price {
	flex-direction: column;
	align-items: flex-start;
	gap: 0.25rem;
}

.courtflow-events-card__link {
	display: inline-block;
	margin-top: auto;
	padding: 0.5em 1em;
	text-decoration: none;
	border-radius: 8px;
	font-size: 0.9rem;
	font-weight: 600;
	transition: background 0.2s, border-color 0.2s;
	text-align: center;
	border: 2px solid transparent;
}

.courtflow-events-card__link--primary {
	background: var(--courtflow-register-btn, #5FAF63);
	color: #fff;
	border-color: var(--courtflow-register-btn, #5FAF63);
}

.courtflow-events-card__link--primary:hover {
	background: var(--courtflow-secondary, #1a2438);
	border-color: var(--courtflow-secondary, #1a2438);
	color: #fff;
}

.courtflow-events-card__link--waitlist {
	background: var(--courtflow-waitlist-btn, #f0c14b);
	color: #1a1a1a;
	border-color: var(--courtflow-waitlist-btn, #f0c14b);
}

.courtflow-events-card__link--waitlist:hover {
	filter: brightness(0.95);
	color: #1a1a1a;
}

.courtflow-events-card__link--details {
	background: #fff;
	color: var(--courtflow-primary, #1F2A44);
	border-color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-card__link--details:hover {
	background: #f0f2f5;
	color: var(--courtflow-secondary, #1a2438);
	border-color: var(--courtflow-secondary, #1a2438);
}

.courtflow-events-message {
	margin: 1rem 0;
	padding: 0.75rem;
}

.courtflow-events-error {
	color: #b32d2e;
}

.courtflow-events-empty {
	color: #666;
}

/* Schedule view */
.courtflow-events-schedule {
	margin: 1.5em 0;
}

.courtflow-events-schedule__title {
	margin-bottom: 1rem;
	font-size: 1.25rem;
}

/* Schedule filters: date row, then locations/tags below, then category — centered on desktop */
.courtflow-events-schedule__filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1rem;
	align-items: center;
	justify-content: center;
	margin-bottom: 1.5rem;
}

/* Single date-range trigger: opens calendar popup */
.courtflow-events-schedule__date-trigger {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.5em 1em;
	border: 1px solid #ccc;
	border-radius: 8px;
	background: #fff;
	font-size: 0.95rem;
	font-weight: 500;
	color: #1d2327;
	cursor: pointer;
	transition: background 0.2s, border-color 0.2s;
}

.courtflow-events-schedule__date-trigger:hover {
	background: #f5f5f5;
	border-color: var(--courtflow-primary, #1F2A44);
	color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-schedule__date-trigger:focus {
	outline: 2px solid var(--courtflow-primary, #1F2A44);
	outline-offset: 2px;
}

/* Calendar popup overlay */
.courtflow-events-schedule__calendar-popup {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
	box-sizing: border-box;
}

.courtflow-events-schedule__calendar-popup[hidden] {
	display: none;
}

.courtflow-events-schedule__calendar-popup-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.4);
	cursor: pointer;
}

.courtflow-events-schedule__calendar-popup-panel {
	position: relative;
	background: #fff;
	border-radius: 8px;
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
	padding: 1.25rem;
	max-width: 360px;
	width: 100%;
	max-height: 90vh;
	overflow: auto;
}

.courtflow-events-schedule__calendar-popup-header {
	margin-bottom: 0.75rem;
}

.courtflow-events-schedule__calendar-popup-nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
}

.courtflow-events-schedule__calendar-popup-month {
	font-weight: 700;
	font-size: 1.1rem;
}

.courtflow-events-schedule__calendar-popup-prev,
.courtflow-events-schedule__calendar-popup-next {
	width: 36px;
	height: 36px;
	padding: 0;
	border: 1px solid #ccc;
	border-radius: 8px;
	background: #fff;
	font-size: 1.25rem;
	line-height: 1;
	cursor: pointer;
	transition: background 0.2s, border-color 0.2s;
}

.courtflow-events-schedule__calendar-popup-prev:hover,
.courtflow-events-schedule__calendar-popup-next:hover {
	background: #f0f0f0;
	border-color: var(--courtflow-primary, #1F2A44);
	color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-schedule__calendar-popup-body .courtflow-events-schedule__calendar-header {
	display: none;
}

.courtflow-events-schedule__calendar-popup-body .courtflow-events-schedule__calendar-weekdays,
.courtflow-events-schedule__calendar-popup-body .courtflow-events-schedule__calendar-grid {
	margin-bottom: 0.25rem;
}

.courtflow-events-schedule__calendar-header {
	text-align: center;
	font-weight: 600;
	font-size: 1rem;
	margin-bottom: 0.5rem;
}

.courtflow-events-schedule__calendar-weekdays {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
	text-align: center;
	font-size: 0.7rem;
	color: #666;
	margin-bottom: 0.35rem;
}

.courtflow-events-schedule__calendar-wd {
	padding: 0.2em 0;
}

.courtflow-events-schedule__calendar-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
}

.courtflow-events-schedule__calendar-day {
	padding: 0.4em;
	border: 1px solid transparent;
	background: #fff;
	border-radius: 8px;
	font-size: 0.85rem;
	cursor: pointer;
	transition: background 0.2s, border-color 0.2s;
}

.courtflow-events-schedule__calendar-day:hover {
	background: #f0f0f0;
}

.courtflow-events-schedule__calendar-day--has-events {
	font-weight: 600;
	color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-schedule__calendar-day--in-range {
	background: #eaecf1;
	color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-schedule__calendar-day--range-start,
.courtflow-events-schedule__calendar-day--range-end {
	background: var(--courtflow-primary, #1F2A44);
	color: #fff;
	border-color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-schedule__calendar-day--empty {
	visibility: hidden;
	pointer-events: none;
}

/* Sticky filter bar (mobile-critical) */
.courtflow-events-schedule__filters {
	position: sticky;
	top: 0;
	z-index: 10;
	background: #fff;
	padding: 0.75rem 1rem;
	margin: 0 -1rem 0.5rem -1rem;
	padding-left: 1rem;
	padding-right: 1rem;
}

/* Day navigation: ← date (Today) → — full width so locations/tags sit below */
.courtflow-events-schedule__day-nav {
	flex-basis: 100%;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin-bottom: 0.25rem;
}

.courtflow-events-schedule__day-nav-prev,
.courtflow-events-schedule__day-nav-next {
	flex-shrink: 0;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: 1px solid #ccc;
	background: #fff;
	border-radius: 6px;
	font-size: 1.1rem;
	line-height: 1;
	cursor: pointer;
	transition: background 0.2s, border-color 0.2s;
}

.courtflow-events-schedule__day-nav-prev:hover,
.courtflow-events-schedule__day-nav-next:hover {
	background: #f5f5f5;
	border-color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-schedule__date-trigger {
	padding: 0.4em 0.75em;
	border: 1px solid #ccc;
	background: #fff;
	border-radius: 6px;
	font-size: 0.95rem;
	font-weight: 600;
	cursor: pointer;
	min-width: 10em;
}

.courtflow-events-schedule__date-trigger:hover {
	border-color: var(--courtflow-primary, #1F2A44);
}

/* Filter groups: each has a label and distinct look so Location / Category / Skill are distinguishable */
.courtflow-events-schedule__filter-group {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.35rem;
}

.courtflow-events-schedule__filter-label {
	font-size: 0.75rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #50575e;
	flex-shrink: 0;
}

/* Category filter: primary blue (default pill style) */
.courtflow-events-schedule__filter-group--category .courtflow-events-schedule__filter-label { color: var(--courtflow-primary, #1F2A44); }

/* Locations + Tags side by side below the date row */
.courtflow-events-schedule__dropdowns-row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: center;
	gap: 1rem;
	flex-basis: 100%;
}
.courtflow-events-schedule__filter-group--location .courtflow-events-schedule__filter-label,
.courtflow-events-schedule__filter-group--tag .courtflow-events-schedule__filter-label { color: #50575e; }
.courtflow-events-schedule__location-select,
.courtflow-events-schedule__tag-select {
	min-width: 8rem;
	padding: 0.5em 2em 0.5em 0.75em;
	border: 1px solid #ccc;
	border-radius: 6px;
	background: #fff;
	font-size: 0.9rem;
	color: #1d2327;
	cursor: pointer;
	appearance: auto;
}
.courtflow-events-schedule__location-select:hover,
.courtflow-events-schedule__tag-select:hover {
	border-color: #999;
}
.courtflow-events-schedule__location-select:focus,
.courtflow-events-schedule__tag-select:focus {
	outline: 2px solid var(--courtflow-primary, #1F2A44);
	outline-offset: 2px;
}

.courtflow-events-schedule__categories-wrap {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
}

.courtflow-events-schedule__categories {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	align-items: center;
	justify-content: center;
}

.courtflow-events-schedule__clear-filters {
	font-size: 0.875rem;
	color: var(--courtflow-primary, #1F2A44);
	text-decoration: none;
	align-self: center;
}

.courtflow-events-schedule__clear-filters:hover {
	text-decoration: underline;
}

/* Schedule list: sticky day headers + event rows (events-block style) */
.courtflow-events-schedule__list-container {
	margin-top: 0.5rem;
}

.courtflow-events-schedule__day {
	margin-bottom: 0;
}

.courtflow-events-schedule__day-title {
	position: sticky;
	top: 0;
	z-index: 8;
	margin: 0;
	padding: 0.65rem 1rem;
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.01em;
	background: var(--courtflow-schedule-date-heading-bg, #1F2A44);
	color: #fff;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Sticky order: filters (top) → dark date heading bar → time slot headers.
   Top is set dynamically by JS from the filters section height (--courtflow-schedule-filters-height)
   so multiple rows of category pills don't hide the headings. Fallback for when JS has not run. */
.courtflow-events-schedule__filters ~ .courtflow-events-schedule__list-container .courtflow-events-schedule__day-title {
	top: var(--courtflow-schedule-filters-height, 7.6rem);
	z-index: 8;
}

.courtflow-events-schedule__day:not(:first-child) .courtflow-events-schedule__day-title {
	margin-top: 1rem;
}

.courtflow-events-schedule__list {
	margin: 0;
	padding: 0;
	list-style: none;
	border: 1px solid #e0e0e0;
	border-top: none;
	border-radius: 0 0 8px 8px;
	/* Avoid overflow: hidden so sticky time-slot-headers are not clipped and can stick below the date heading */
	overflow: visible;
}

.courtflow-events-schedule__day:not(:first-child) .courtflow-events-schedule__list {
	border-radius: 8px;
}

/* Time slot: one header (time) + nested events */
.courtflow-events-schedule__time-slot {
	list-style: none;
	margin: 0;
	padding: 0;
	border-bottom: 1px solid #eee;
}

.courtflow-events-schedule__time-slot:last-child {
	border-bottom: none;
}

/* Time slot header: sticky below the dark date heading bar. Top = filters height + day title height (~2.75rem). */
.courtflow-events-schedule__time-slot-header {
	display: flex;
	align-items: center;
	padding: 0.5rem 1rem;
	background: #f8f9fa;
	border-bottom: 1px solid #eee;
	position: sticky;
	top: calc(var(--courtflow-schedule-filters-height, 7.6rem) + 2.75rem);
	z-index: 7;
	box-shadow: 0 1px 0 0 #eee;
}

/* When no filter bar: day title at top: 0, time header sticks below it (~2.75rem) */
.courtflow-events-schedule:not(:has(.courtflow-events-schedule__filters)) .courtflow-events-schedule__time-slot-header {
	top: 2.75rem;
}

.courtflow-events-schedule__time-slot-header .courtflow-events-schedule__item-time {
	font-size: 1.05rem;
	font-weight: 700;
	min-width: 11.5rem;
	width: 11.5rem;
	flex: 0 0 11.5rem;
	white-space: nowrap;
}

.courtflow-events-schedule__time-slot-events {
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Event info spans full width below the time; slight left indent so it sits clearly under the time. */
.courtflow-events-schedule__time-slot-events .courtflow-events-schedule__item {
	border-bottom: 1px solid #f0f0f0;
	padding: 0.5rem 1rem 0.5rem 1.25rem;
	padding-left: 1.25rem;
}

.courtflow-events-schedule__time-slot-events .courtflow-events-schedule__item:last-child {
	border-bottom: none;
}

.courtflow-events-schedule__item {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 0.75rem;
	padding: 0.6rem 1rem;
	border-bottom: 1px solid #eee;
	background: #fff;
	transition: background 0.2s;
}

.courtflow-events-schedule__item:last-child {
	border-bottom: none;
}

.courtflow-events-schedule__item:hover {
	background: #f9f9f9;
}

/* Full = muted row */
.courtflow-events-schedule__item--full {
	opacity: 0.88;
	background: #fafafa;
}

.courtflow-events-schedule__item--full:hover {
	background: #f5f5f5;
}

.courtflow-events-schedule__item-time {
	flex: 0 0 auto;
	min-width: 11.5rem;
	font-size: 1.05rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--courtflow-primary, #1F2A44);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.courtflow-events-schedule__item-main {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.courtflow-events-schedule__item-name {
	font-size: 0.95rem;
	font-weight: 600;
	line-height: 1.3;
	color: #1d2327;
}

.courtflow-events-schedule__item-meta {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	font-size: 0.9rem;
	color: #555;
}

.courtflow-events-schedule__item-meta-icon {
	flex-shrink: 0;
}

.courtflow-events-schedule__item-location {
	display: block;
	margin-top: 0.2rem;
}

.courtflow-events-schedule__item-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem;
}

.courtflow-events-schedule__item-badge {
	font-size: 0.65rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	padding: 0.15em 0.45em;
	border-radius: 1em;
}

/* Skill taxonomy: color = tier */
.courtflow-events-schedule__skill.skill--beginner {
	background: #D1FAE5;
	color: #065f46;
}

.courtflow-events-schedule__skill.skill--recreational {
	background: #D1FAE5;
	color: #065f46;
}

.courtflow-events-schedule__skill.skill--intermediate {
	background: #BFDBFE;
	color: #1e40af;
}

.courtflow-events-schedule__skill.skill--skilled {
	background: #BFDBFE;
	color: #1e40af;
}

.courtflow-events-schedule__skill.skill--advanced {
	background: #FECACA;
	color: #991b1b;
}

.courtflow-events-schedule__skill.skill--other {
	background: #e5e7eb;
	color: #374151;
}

/* Rating level from Court Reserve (e.g. LEVEL 3.0) */
.courtflow-events-schedule__level {
	background: #e0e7ff;
	color: #3730a3;
}

/* Right column: button on top, "X spots left" below when present */
.courtflow-events-schedule__item-actions {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.35rem;
	flex-shrink: 0;
}

.courtflow-events-schedule__availability {
	font-size: 0.75rem;
	font-weight: 600;
	white-space: nowrap;
}

.courtflow-events-schedule__availability--almost {
	color: #b45309;
}

/* Center "X spots left" below the button in the right column */
.courtflow-events-schedule__item-actions .courtflow-events-schedule__availability--almost {
	align-self: stretch;
	text-align: center;
}

.courtflow-events-schedule__availability--waitlist {
	background: #fef3c7;
	color: #92400e;
	padding: 0.2em 0.5em;
	border-radius: 4px;
}

.courtflow-events-schedule__item-link {
	flex: 0 0 auto;
	min-width: 10rem;
	box-sizing: border-box;
	padding: 0.4em 0.85em;
	font-size: 0.85rem;
	text-decoration: none;
	border-radius: 6px;
	transition: background 0.2s, border-color 0.2s;
	white-space: nowrap;
	text-align: center;
}

.courtflow-events-schedule__empty {
	margin: 0;
	padding: 1.25rem;
	color: #666;
	font-size: 0.95rem;
	background: #fff;
	border: 1px solid #e0e0e0;
	border-top: none;
	border-radius: 0 0 8px 8px;
}

.courtflow-events-schedule__day:not(:first-child) .courtflow-events-schedule__empty {
	border-radius: 8px;
}

/* Mobile: use 100% (not 100vw) so schedule stays in bounds and doesn't cause horizontal overflow */
@media (max-width: 768px) {
	.courtflow-events-schedule {
		width: 100%;
		max-width: 100%;
		box-sizing: border-box;
	}

	.courtflow-events-schedule__filters {
		margin-left: 0;
		margin-right: 0;
		padding-left: 1rem;
		padding-right: 1rem;
	}

	.courtflow-events-schedule__list-container {
		width: 100%;
		max-width: 100%;
	}

	/* Sticky offsets use same JS-set variable; fallbacks slightly larger for typical mobile layout. */
	.courtflow-events-schedule__filters ~ .courtflow-events-schedule__list-container .courtflow-events-schedule__day-title {
		top: var(--courtflow-schedule-filters-height, 10.4rem);
	}

	.courtflow-events-schedule__time-slot-header {
		top: calc(var(--courtflow-schedule-filters-height, 10.4rem) + 2.75rem);
	}
}

/* === Theme override protection ===
   Targeted fixes for themes (e.g., Kadence) that set color/font on generic selectors
   like .entry-content h3, .site-content a, etc. Only override what themes actually break.
   Uses doubled-class specificity to beat theme selectors without !important. */

.courtflow-events-list.courtflow-events-list .courtflow-events-card__title {
	color: #1d2327;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
}

.courtflow-events-list.courtflow-events-list .courtflow-events-card__meta-item {
	color: #555;
}

.courtflow-events-list.courtflow-events-list .courtflow-events-card__link {
	text-decoration: none;
}

.courtflow-events-list.courtflow-events-list .courtflow-events-card__link--primary {
	color: #fff;
}

.courtflow-events-list.courtflow-events-list .courtflow-events-card__link--primary:hover {
	color: #fff;
}

.courtflow-events-list.courtflow-events-list .courtflow-events-card__link--waitlist {
	color: #1a1a1a;
}

.courtflow-events-list.courtflow-events-list .courtflow-events-card__link--details {
	color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-list.courtflow-events-list .courtflow-events-category-btn {
	color: #1d2327;
}

.courtflow-events-list.courtflow-events-list .courtflow-events-category-btn.is-active {
	color: #fff;
}

.courtflow-events-schedule.courtflow-events-schedule .courtflow-events-schedule__day-title {
	color: #fff;
}

.courtflow-events-schedule.courtflow-events-schedule .courtflow-events-schedule__item-name {
	color: #1d2327;
}

.courtflow-events-schedule.courtflow-events-schedule .courtflow-events-schedule__item-time {
	color: var(--courtflow-primary, #1F2A44);
}

.courtflow-events-schedule.courtflow-events-schedule .courtflow-events-schedule__item-meta {
	color: #555;
}

.courtflow-events-schedule.courtflow-events-schedule .courtflow-events-schedule__calendar-day {
	color: #1d2327;
}

.courtflow-events-schedule.courtflow-events-schedule .courtflow-events-schedule__calendar-day--range-start,
.courtflow-events-schedule.courtflow-events-schedule .courtflow-events-schedule__calendar-day--range-end {
	color: #fff;
}

/* ===== Events Category List View ===== */

.courtflow-events-category-list__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
	padding: 16px 0;
	width: 100%;
}

@media (min-width: 768px) {
	.courtflow-events-category-list__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
