/**
 * Public event archive month grid — visual language aligned with staff calendar (month view).
 * Scoped under .bs-public-event-calendar to avoid theme clashes.
 */

.bs-public-event-calendar {
	max-width: 1000px;
	margin: 0 auto;
	font-family: var(--bk-body-font-family, inherit);
	font-size: var(--bk-body-font-size, 16px);
	color: var(--bk-body-color, var(--bs-arch-ink, #0f1419));
	--bs-arch-ink: #0f1419;
	--bs-cal-btn-bg: var(--bk-cal-btn-bg, var(--bk-theme-panel, #fafaf8));
	--bs-cal-btn-text: var(--bk-cal-btn-text, var(--bk-heading-color, #0f1419));
	--bs-cal-btn-bg-hover: var(--bk-cal-btn-bg-hover, var(--bk-theme-panel, #ffffff));
	--bs-cal-btn-border: var(--bk-cal-btn-border, var(--bk-cal-border, var(--bk-theme-border, #e7e5e0)));
	--bs-cal-item-bg: var(--bk-cal-item-bg, var(--bk-btn-accent, #007aff));
	--bs-cal-item-rgb: var(--bk-cal-item-rgb, var(--bk-btn-accent-rgb, 0, 122, 255));
	--bs-cal-item-text: var(--bk-cal-item-text, var(--bk-cal-date-text, #ffffff));
	--bs-cal-empty-bg: var(--bs-cal-bg);
	--bs-cal-item-soft: rgba(var(--bs-cal-item-rgb), 0.1);
	--bs-cal-item-soft-strong: rgba(var(--bs-cal-item-rgb), 0.12);
	--bs-cal-schedule-bg: var(--bk-cal-schedule-bg, var(--bs-cal-item-soft));
	--bs-cal-today-bg: var(--bk-cal-today-bg, var(--bk-btn-accent, #007aff));
	--bs-cal-today-rgb: var(--bk-cal-today-rgb, var(--bk-btn-accent-rgb, 0, 122, 255));
	--bs-cal-today-badge-bg: var(--bk-cal-today-badge-bg, var(--bs-cal-item-bg, var(--bk-btn-accent, #007aff)));
	--bs-cal-today-badge-text: var(--bk-cal-today-badge-text, #ffffff);
	--bs-cal-date-text: var(--bk-cal-date-text, #ffffff);
	--bs-cal-bg: var(--bk-cal-bg, #ffffff);
	--bs-cal-border: var(--bk-cal-border, var(--bk-theme-border, #e7e5e0));
	--bs-cal-border-soft: var(--bk-cal-border, var(--bk-theme-border, #e7e5e0));
	--bs-cal-item-selected: var(--bk-cal-item-selected, var(--bk-heading-color, #1a1a1a));
	--bs-cal-item-selected-width: var(--bk-cal-item-selected-border-width, 2px);
	--bs-cal-item-border: var(--bk-cal-item-border, transparent);
	--bs-cal-item-selected-text: var(--bk-cal-item-selected-text, var(--bs-surface, #ffffff));
	/* Date / time inside the selected ring (light cell): Calendar → Selected item text color. */
	--bs-cal-selected-day-text: var(--bk-cal-selected-day-text, var(--bk-heading-color, #0f1419));
	--bs-surface: var(--bk-cal-bg, #ffffff);
}

@supports (background: color-mix(in srgb, white 50%, black)) {
	.bs-public-event-calendar {
		--bs-cal-empty-bg: color-mix(in srgb, var(--bs-cal-item-bg) 4%, var(--bs-cal-bg));
		--bs-cal-item-soft: color-mix(in srgb, var(--bs-cal-item-bg) 10%, var(--bs-cal-bg));
		--bs-cal-item-soft-strong: color-mix(in srgb, var(--bs-cal-item-bg) 12%, var(--bs-cal-bg));
	}
}

/*
 * Single-page classic wizard (tour/event/rental step 1): calendar + side column.
 * Undo the archive-oriented max-width / centering on .bs-public-event-calendar so the main
 * column uses full width and the sidebar layout matches single-post CSS in single-booking-items.css.
 * Leaves public browse archives (--browse-archive) and compact mini calendars (--tour-sidebar-mini) untouched.
 */
.rental-tour-wizard-step1-layout .bs-booking-wizard-step1-main .bs-public-event-calendar:not(.bs-public-event-calendar--browse-archive):not(.bs-public-event-calendar--tour-sidebar-mini) {
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
}

.rental-tour-wizard-step1-layout .bs-booking-wizard-step1-main .bs-public-event-calendar:not(.bs-public-event-calendar--browse-archive):not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

/* Tour classic wizard: full-width calendar (no sidebar column). */
.tour-wizard-step1-layout--classic .tour-wizard-calendar-wrap .bs-public-event-calendar:not(.bs-public-event-calendar--browse-archive):not(.bs-public-event-calendar--tour-sidebar-mini) {
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
}

.tour-wizard-step1-layout--classic .tour-wizard-calendar-wrap .bs-public-event-calendar:not(.bs-public-event-calendar--browse-archive):not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

/* Event classic wizard: full-width calendar (no sidebar column). */
.event-wizard-step1-layout--classic .event-wizard-calendar-wrap .bs-public-event-calendar:not(.bs-public-event-calendar--browse-archive):not(.bs-public-event-calendar--tour-sidebar-mini) {
	max-width: none;
	width: 100%;
	margin-left: 0;
	margin-right: 0;
}

.event-wizard-step1-layout--classic .event-wizard-calendar-wrap .bs-public-event-calendar:not(.bs-public-event-calendar--browse-archive):not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

.bs-public-event-calendar .calendar-navigation {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	padding: 12px 16px;
	margin-bottom: 12px;
	background: transparent;
	border-radius: var(--bk-cal-radius);
	max-width: 1000px;
	margin-left: auto;
	margin-right: auto;
	box-sizing: border-box;
}

.bs-public-event-calendar .calendar-navigation__left {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	justify-self: start;
}

.bs-public-event-calendar .calendar-navigation__right {
	display: inline-flex;
	align-items: center;
	justify-self: end;
}

.bs-public-event-calendar .calendar-navigation button:hover {
	transform: none;
}

.bs-public-event-calendar .current-month {
	font-family: var(--bk-heading-font-family, inherit);
	font-size: var(--bk-heading-font-size, inherit);
	font-weight: 600;
	color: var(--bk-heading-color, #1d1d1f);
	text-align: center;
	justify-self: center;
}

.bs-public-event-calendar .bs-pec-grid {
	background: var(--bs-cal-bg);
	border-radius: var(--bk-cal-radius, 16px);
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
	overflow: hidden;
	border: 1px solid var(--bs-cal-border);
}

/* .calendar-grid shares the same node in event/tour templates — avoid duplicate shell styles. */
.bs-public-event-calendar .calendar-grid.bs-pec-grid {
	border-radius: var(--bk-cal-radius, 16px);
}

.bs-public-event-calendar .calendar-header {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	background: var(--bs-cal-schedule-bg);
	border-bottom: 1px solid var(--bs-cal-border);
}

.bs-public-event-calendar .calendar-day-header {
	padding: 12px 8px;
	text-align: center;
	font-weight: 600;
	color: var(--bk-body-color, #8e8e93);
	font-size: var(--bk-ui-field-label-font-size);
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

/* Full weekday names (e.g. måndag) — allow wrap on narrow grids */
.bs-public-event-calendar .calendar-day-header--weekday-full {
	text-transform: none;
	letter-spacing: 0;
	font-size: var(--bk-ui-chip-category-font-size);
	font-weight: 600;
	line-height: 1.2;
	hyphens: auto;
	overflow-wrap: anywhere;
	padding: 10px 4px;
}

.bs-public-event-calendar .calendar-day-header__short {
	display: none;
}

.bs-public-event-calendar .calendar-days {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 1px;
	background-color: var(--bs-cal-border-soft);
}

.bs-public-event-calendar .calendar-day {
	min-height: 104px;
	padding: 8px;
	border: none;
	position: relative;
	background: var(--bs-cal-bg);
	transition: background 0.2s ease;
}

.bs-public-event-calendar--browse-archive .bs-pec-grid .calendar-days {
	border: 1px solid var(--bs-cal-border-soft);
	box-sizing: border-box;
}

.bs-public-event-calendar .calendar-day:hover:not(.empty) {
	background: var(--bs-cal-item-soft);
}

.bs-public-event-calendar .calendar-day.empty {
	background: var(--bs-cal-empty-bg);
	cursor: default;
	min-height: 104px;
}

.bs-public-event-calendar .calendar-day.weekend:not(.today) {
	background: #fefefe;
}

.bs-public-event-calendar .calendar-day.has-schedule:not(.today) {
	background: var(--bs-cal-schedule-bg);
}

.bs-public-event-calendar .calendar-day.today {
	background: var(--bs-cal-today-bg);
	color: var(--bs-cal-date-text);
}

.bs-public-event-calendar .calendar-day.today .calendar-day-number {
	color: var(--bs-cal-date-text) !important;
}

.bs-public-event-calendar .calendar-day.today .bs-pec-event-link {
	background: var(--bs-cal-item-soft-strong);
	color: var(--bs-cal-item-bg);
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}

.bs-public-event-calendar .calendar-day-number {
	position: absolute;
	top: 8px;
	left: 8px;
	font-weight: 600;
	color: var(--bs-arch-ink, var(--bk-heading-color, #0f1419));
	font-size: var(--bk-ui-field-font-size);
	z-index: 2;
}

.bs-public-event-calendar .bs-pec-events {
	margin-top: 28px;
	display: flex;
	flex-direction: column;
	gap: 4px;
	max-height: 70px;
	overflow-y: auto;
	overflow-x: hidden;
	padding-right: 2px;
}

.bs-public-event-calendar .bs-pec-event-link {
	display: block;
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	padding: 4px 6px;
	border-radius: var(--bk-ui-chip-category-radius);
	font-size: var(--bk-ui-field-compact-label-font-size);
	line-height: 1.25;
	text-decoration: none;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	box-shadow: 0 1px 2px rgba(var(--bs-cal-item-rgb), 0.25);
	transition: opacity 0.15s ease, transform 0.15s ease, background 0.15s ease;
}

.bs-public-event-calendar .bs-pec-event-link:hover {
	opacity: 0.92;
	transform: translateY(-1px);
	background: var(--bs-cal-today-bg);
	color: var(--bs-cal-date-text);
}

.bs-public-event-calendar .bs-pec-event-link.is-selected-tour-slot {
	outline: 2px solid var(--bs-cal-item-selected);
	box-shadow: 0 0 0 2px var(--bs-cal-item-bg);
}

.event-booking .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	white-space: normal;
	text-overflow: unset;
	overflow: hidden;
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border: 1px solid transparent;
	box-shadow: none;
	transform: none;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

/* A long event name takes two lines at most ("…"), so the time below it always shows in the day. */
.event-booking .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick .bs-pec-event-link__title,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick .bs-pec-event-link__title {
	display: -webkit-box;
	width: 100%;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	overflow-wrap: normal;
}

/* The time under it is centred like the name. */
.event-booking .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick .bs-pec-event-link__time,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick .bs-pec-event-link__time {
	align-self: center;
}

.event-booking .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick:hover,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick:hover {
	opacity: 1;
	transform: none;
	filter: none;
	background: var(--bs-cal-today-bg);
	color: var(--bs-cal-date-text);
}

.event-booking .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick.is-selected-event-slot,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick.is-selected-event-slot {
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border: 2px solid var(--bs-cal-item-selected);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.65);
	outline: none;
}

.event-booking .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick.is-selected-event-slot:hover,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick.is-selected-event-slot:hover {
	background: var(--bs-cal-today-bg);
	color: var(--bs-cal-date-text);
	border-color: var(--bs-cal-item-selected);
}

.event-booking .event-wizard-calendar-wrap .calendar-day.today .bs-pec-event-link.bs-pec-event-link--pick:not(.is-selected-event-slot),
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .calendar-day.today .bs-pec-event-link.bs-pec-event-link--pick:not(.is-selected-event-slot) {
	background: var(--bs-surface, #fff);
	color: var(--bs-cal-item-bg);
	border: 1px solid transparent;
	box-shadow: none;
}

.event-booking .event-wizard-calendar-wrap .calendar-day.today .bs-pec-event-link.bs-pec-event-link--pick:not(.is-selected-event-slot):hover,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .calendar-day.today .bs-pec-event-link.bs-pec-event-link--pick:not(.is-selected-event-slot):hover {
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
}

.event-booking .event-wizard-calendar-wrap .calendar-day.today .bs-pec-event-link.bs-pec-event-link--pick.is-selected-event-slot,
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .calendar-day.today .bs-pec-event-link.bs-pec-event-link--pick.is-selected-event-slot {
	background: var(--bs-surface, #fff);
	color: var(--bs-cal-selected-day-text);
	border: 2px solid var(--bs-cal-item-selected);
	box-shadow: 0 0 0 2px var(--bs-cal-item-bg);
}

.event-booking .event-wizard-calendar-wrap .calendar-day.is-selected-day:not(.today),
#bs-hotel-archive-modal.is-booking-mode .event-wizard-calendar-wrap .calendar-day.is-selected-day:not(.today) {
	background: var(--bs-cal-item-soft-strong);
	box-shadow: none;
}












/*
 * Tour classic wizard calendar: tour name + time stacked (parity with event --pick).
 */
.tour-booking.booking-steps-wrapper .tour-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick,
#bs-hotel-archive-modal.is-booking-mode .tour-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--pick {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	white-space: normal;
	text-overflow: unset;
	overflow: hidden;
	transform: none;
}

.tour-booking.booking-steps-wrapper .tour-wizard-calendar-wrap .bs-pec-event-link__title,
#bs-hotel-archive-modal.is-booking-mode .tour-wizard-calendar-wrap .bs-pec-event-link__title {
	display: -webkit-box;
	width: 100%;
	font-weight: 600;
	font-size: var(--bk-ui-field-compact-label-font-size);
	line-height: 1.2;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.tour-booking.booking-steps-wrapper .tour-wizard-calendar-wrap .bs-pec-event-link__time,
#bs-hotel-archive-modal.is-booking-mode .tour-wizard-calendar-wrap .bs-pec-event-link__time {
	display: block;
	width: 100%;
	font-size: var(--bk-ui-field-compact-label-font-size);
	line-height: 1.15;
	font-weight: 500;
	opacity: 0.95;
}

.tour-booking.booking-steps-wrapper .tour-wizard-calendar-wrap .bs-pec-events {
	max-height: none;
	overflow-y: visible;
}

/* Phones and narrow tablets (days under ~100 px): three-letter weekday names (the full name stays for screen
   readers), shorter days, smaller month, and on an item's own page the time instead of its name. */
@media (max-width: 782px) {
	.bs-public-event-calendar .calendar-day,
	.bs-public-event-calendar .calendar-day.empty {
		min-height: 56px;
		padding: 4px;
	}

	.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day {
		min-height: 36px;
		padding: 5px;
	}

	.bs-public-event-calendar .calendar-day-header--weekday-full {
		position: relative;
		hyphens: none;
		overflow-wrap: normal;
	}

	.bs-public-event-calendar .calendar-day-header--weekday-full .calendar-day-header__full {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}

	.bs-public-event-calendar .calendar-day-header--weekday-full .calendar-day-header__short {
		display: inline;
	}

	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation .current-month {
		font-size: min(var(--bk-heading-font-size, 1.15rem), 1.15rem);
	}

	.bs-public-event-calendar .bs-pec-events {
		max-height: 52px;
	}

	.bs-public-event-calendar .bs-pec-event-link {
		font-size: var(--bk-ui-field-compact-label-font-size);
		padding: 3px 4px;
	}

	/* On an event's or tour's own page every entry is the same item: its name was cut to "Suns Yog by th" in the
	   narrow days. The time (and "Full — waitlist", "Cancelled") is enough; the name stays for screen readers. */
	.bs-public-event-calendar .bs-pec-event-link.is-current-event .bs-pec-event-link__title,
	.tour-wizard-calendar-wrap .bs-public-event-calendar .bs-pec-event-link__title {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}

	.bs-public-event-calendar .bs-pec-event-link.is-current-event,
	.tour-wizard-calendar-wrap .bs-public-event-calendar .bs-pec-event-link {
		white-space: normal;
		overflow-wrap: break-word;
		text-align: center;
	}

	/* "18:00 — Full — waitlist" may take three short lines in a narrow day instead of being cut. */
	.bs-public-event-calendar .bs-pec-event-link.is-current-event,
	.tour-wizard-calendar-wrap .bs-public-event-calendar .bs-pec-event-link {
		box-sizing: border-box;
		width: 100%;
		padding-inline: 1px;
	}

	/* The entry fills the day (not the width of its words), so only what does not fit breaks: never "18:00". */
	.bs-public-event-calendar .bs-pec-event-link.is-current-event .bs-pec-event-link__time,
	.tour-wizard-calendar-wrap .bs-public-event-calendar .bs-pec-event-link__time {
		display: block;
		width: 100%;
		min-width: 0;
		white-space: normal;
		overflow-wrap: anywhere;
	}

	.bs-public-event-calendar .bs-pec-events:has(.is-current-event),
	.tour-wizard-calendar-wrap .bs-public-event-calendar .bs-pec-events {
		max-height: none;
	}
}

/* Small phones (days about 40 px): "08:30" took the whole day less its padding and broke into "08:3 / 0". Less
   padding, and the time breaks only between words ("Full — waitlist"), never inside "08:30". */
@media (max-width: 480px) {
	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-day:has(.bs-pec-event-link:is(.is-current-event, .bs-pec-event-link--tour)) {
		padding-inline: 2px;
	}

	.bs-public-event-calendar .bs-pec-event-link.is-current-event .bs-pec-event-link__time,
	.tour-wizard-calendar-wrap .bs-public-event-calendar .bs-pec-event-link__time {
		overflow-wrap: normal;
		letter-spacing: -0.02em;
	}

	.bs-public-event-calendar .bs-pec-event-link.is-current-event,
	.tour-wizard-calendar-wrap .bs-public-event-calendar .bs-pec-event-link {
		padding-inline: 0;
	}
}

/* --- Tour compact sidebar: mini month (ring on departure days, no slot list in cells) --- */
.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini {
	max-width: 100%;
	font-size: var(--bk-ui-field-label-font-size);
	--bs-tour-mini-cal-ring: var(--bk-cal-item-border, var(--bs-cal-item-bg));
	--bs-tour-mini-cal-ring-selected: var(--bs-cal-item-selected, var(--bs-cal-item-bg));
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation {
	margin-bottom: 8px;
}

/*
 * Compact sidebar mini calendar nav: Today on a row of its own, then "← November 2026 →" (the month on one line
 * did not fit beside Today in the narrow sidebar).
 */
.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	grid-template-areas:
		"today today today"
		"prev month next";
	align-items: center;
	column-gap: 0.35rem;
	row-gap: 6px;
	height: auto;
	padding: 6px 0;
	margin-left: 0;
	margin-right: 0;
	max-width: none;
	box-sizing: border-box;
}

/* Legacy booking-modules.css sets flex on .calendar-navigation — keep grid in wizard calendars. */
.booking-calendar-view.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation {
	display: grid;
}

.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation__left,
.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation__right {
	display: contents;
}

.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation .today-month {
	grid-area: today;
	justify-self: start;
}

.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation .prev-month {
	grid-area: prev;
	justify-self: start;
}

.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation .next-month {
	grid-area: next;
	justify-self: end;
}

.bs-public-event-calendar--tour-sidebar-mini .calendar-navigation .current-month {
	grid-area: month;
	justify-self: center;
	align-self: center;
	font-family: var(--bk-heading-font-family, inherit);
	/* Override global .current-month heading token (often 20px+) in narrow sidebar. */
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--bk-heading-color, #1d1d1f);
	text-align: center;
	line-height: 1.15;
	padding: 0 0.2em;
	white-space: nowrap;
	pointer-events: none;
}

/* Header background runs edge to edge: no gap above (grid padding) or below (header margin). */
.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .bs-pec-grid {
	padding: 0;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-header {
	margin-bottom: 0;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day-header {
	font-size: var(--bk-ui-field-compact-label-font-size);
	padding: 4px 2px;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day-header--weekday-short {
	font-size: var(--bk-ui-field-compact-label-font-size);
	letter-spacing: 0.02em;
	text-transform: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 38px;
	padding: 5px;
	box-sizing: border-box;
	cursor: default;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.has-schedule {
	cursor: pointer;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.has-schedule:not(.today) {
	background: var(--bs-cal-schedule-bg);
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.today {
	background: var(--bs-cal-item-soft-strong);
	color: inherit;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.today .calendar-day-number {
	color: var(--bs-cal-item-bg) !important;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day-number {
	position: static;
	inset: auto;
	top: auto;
	right: auto;
	bottom: auto;
	left: auto;
	font-size: var(--bk-ui-field-label-font-size);
	font-weight: 600;
	line-height: 1.2;
	color: var(--bs-arch-ink, var(--bk-heading-color, #0f1419));
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.65rem;
	min-height: 1.65rem;
	border-radius: var(--bk-ui-chip-tag-radius);
	padding: 3px;
	box-sizing: border-box;
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.has-schedule .calendar-day-number {
	box-shadow: 0 0 0 2px var(--bs-tour-mini-cal-ring, var(--bs-cal-item-bg));
	background: var(--bs-cal-item-soft);
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.is-selected-day .calendar-day-number {
	box-shadow: 0 0 0 3px var(--bs-tour-mini-cal-ring-selected, var(--bs-cal-item-bg));
	background: rgba(var(--bs-cal-item-rgb), 0.14);
	color: var(--bs-cal-selected-day-text);
}

.bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .bs-pec-events {
	display: none !important;
}

:where(.booking-steps-wrapper, .booking-module, .booking-service-embed, [class^="bs-"], [class*=" bs-"]) .tour-sidebar-mini-slot-row {
	margin-top: 8px;
	padding-top: 12px;
	border-top: 1px solid var(--bs-arch-border, #dcdcde);
}

:where(.booking-steps-wrapper, .booking-module, .booking-service-embed, [class^="bs-"], [class*=" bs-"]) .tour-sidebar-mini-slot-row__label {
	display: block;
	font-weight: 600;
	font-size: var(--bk-ui-chip-category-font-size);
	margin-bottom: 6px;
	color: #50575e;
}

:where(.booking-steps-wrapper, .booking-module, .booking-service-embed, [class^="bs-"], [class*=" bs-"]) .tour-sidebar-mini-slot-row__select {
	width: 100%;
	max-width: 100%;
}

:where(.booking-steps-wrapper, .booking-module, .booking-service-embed, [class^="bs-"], [class*=" bs-"]) .tour-sidebar-calendar__calendar-block {
	margin-bottom: 0;
}

/* Tour sidebar + mini calendar: space below calendar, then tickets heading below selection */
.tour-booking--ui-sidebar-calendar.tour-booking.event-sidebar-module--narrow .tour-sidebar-cal-selection,
.event-booking--ui-sidebar-calendar.event-booking.event-sidebar-module--narrow .event-sidebar-cal-selection {
	margin-top: 1rem;
}

.tour-booking--ui-sidebar-calendar.tour-booking.event-sidebar-module--narrow .bs-booking-wizard-sidebar__tickets.event-sidebar-card__section,
.event-booking--ui-sidebar-calendar.event-booking.event-sidebar-module--narrow .bs-booking-wizard-sidebar__tickets.event-sidebar-card__section {
	margin-top: 1.25rem;
}

/* Public browse archive month calendar: white canvas; toolbar uses archive tokens below */
.bs-booking-archive-calendar {
	/* Same archive tokens as .bs-public-event-list/.bs-public-event-grid — this is the outer wrapper
	   when Tour/Event browse layout is "Calendar" or "Calendar + sidebar", so it needs its own copy
	   instead of relying on inheriting from those (this wrapper doesn't nest inside them). Without an
	   explicit font-family here, text falls back to whatever the parent markup happens to use — e.g. a
	   monospace UA default if the shortcode output is ever wrapped in a <code>/<pre> element. */
	--bs-arch-ink: #0f1419;
	--bs-arch-muted: var(--bk-theme-muted, var(--bk-body-color, #64748b));
	--bs-arch-surface: #ffffff;
	--bs-arch-canvas: #f4f3f0;
	--bs-arch-border: #e7e5e0;
	--bs-arch-border-hover: #d4cfc6;
	--bs-arch-accent: var(--bk-btn-accent, #2196f3);
	--bs-arch-accent-soft: rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.14);
	--bs-arch-radius-lg: 16px;
	--bs-arch-radius-md: 12px;
	--bs-arch-shadow: 0 1px 2px rgba(15, 20, 25, 0.05);
	--bs-arch-shadow-card: 0 4px 24px rgba(15, 20, 25, 0.06);
	--bs-arch-shadow-hover: 0 18px 44px rgba(15, 20, 25, 0.1);

	min-width: 0;
	width: 100%;
	max-width: 1000px;
	margin: 0 auto;
	box-sizing: border-box;
	font-family: var(--bk-body-font-family, inherit);
	font-size: var(--bk-body-font-size, inherit);
	color: var(--bk-body-color, var(--bs-arch-ink));
}

.bs-booking-archive-calendar .calendar-filters.bs-booking-archive__toolbar {
	margin-bottom: clamp(20px, 4vw, 32px);
}

.bs-booking-archive-calendar .calendar-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 16px;
	margin-bottom: clamp(20px, 4vw, 32px);
	padding: clamp(12px, 2vw, 16px) clamp(14px, 2.5vw, 20px);
	background: var(--bk-views-toolbar-bg, var(--bs-arch-surface, #fff));
	border-radius: var(--bs-arch-radius-lg, 16px);
	border: 1px solid var(--bk-views-toolbar-border, var(--bs-arch-border, #e7e5e0));
	box-shadow: var(--bs-arch-shadow, 0 1px 2px rgba(15, 20, 25, 0.05));
	overflow-x: auto;
	overflow-y: visible;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
}

.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__sort-wrap,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__filter-wrap {
	flex: 0 1 auto;
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
	align-self: center;
	gap: 8px 10px;
	min-width: 0;
	max-width: 100%;
}

.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__sort-label,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__filter-label {
	font-size: var(--bk-views-toolbar-label-font-size, var(--bk-ui-field-compact-label-font-size));
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--bk-views-toolbar-label-color, var(--bs-arch-muted, #64748b));
	padding: 0;
	margin: 0;
	line-height: 1.2;
	white-space: nowrap;
	cursor: pointer;
	flex: 0 0 auto;
}

.bs-booking-archive-calendar .calendar-filters > .bs-booking-archive__filter-wrap,
.bs-booking-archive-calendar .calendar-filters > .bs-booking-archive__sort-wrap {
	max-width: min(100%, 240px);
}

/*
 * Only the first filter in the group gets margin-left: auto — same "group filters together on the
 * right" pattern as list/grid (see the .bs-public-event-list .list-filters equivalent below). Giving
 * every filter its own auto margin (as before) splits the row's free space evenly between each one's
 * left margin, so with two taxonomy filters (Category + Tag) they drift apart instead of sitting next
 * to each other like they do on list/grid.
 */
.bs-booking-archive-calendar .calendar-filters > .bs-booking-archive__search-wrap + :is(.bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap),
.bs-booking-archive-calendar .calendar-filters:not(:has(.bs-booking-archive__search-wrap)) > :is(.bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap):first-child {
	margin-left: auto;
}

.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__search-wrap {
	flex: 1 1 200px;
	min-width: min(200px, 100%);
}

.bs-booking-archive-calendar .calendar-filters input.bs-event-archive-search,
.bs-booking-archive-calendar .calendar-filters input.search-filter {
	flex: 0 1 200px;
	max-width: min(240px, 100%);
}

.bs-booking-archive-calendar__body--with-sidebar {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 16px;
}

.bs-booking-archive-calendar__body--with-sidebar .bs-public-event-calendar {
	flex: 1 1 100%;
	min-width: 0;
}

/* Sidebar is a sibling of .bs-public-event-calendar — define panel tokens on the element itself. */
.bs-public-event-calendar__sidebar {
	--bs-cal-sidebar-bg: var(--bk-cal-sidebar-bg, var(--bk-theme-panel, #f0f4fa));
	--bs-cal-sidebar-border-color: var(--bk-cal-sidebar-border-color, var(--bk-theme-border, #e2e8f0));
	--bs-cal-sidebar-border-width: var(--bk-cal-sidebar-border-width, 1px);
	--bs-cal-sidebar-border-radius: var(--bk-cal-sidebar-border-radius, 8px);
	--bs-cal-sidebar-label-color: var(--bk-cal-sidebar-label-color, var(--bk-theme-muted, #64748b));
	--bs-cal-sidebar-text-color: var(--bk-cal-sidebar-text-color, var(--bk-body-color, #111827));
	--bs-cal-sidebar-empty-text-color: var(--bk-cal-sidebar-empty-text-color, var(--bs-cal-sidebar-text-color));
	--bs-cal-sidebar-actions-border-color: var(--bk-cal-sidebar-actions-border-color, var(--bk-cal-border, #e7e5e0));
	display: none;
	flex: 0 0 300px;
	width: 300px;
	max-width: 100%;
	min-width: 0;
	box-sizing: border-box;
	padding: 1rem 1.15rem;
	background: var(--bs-cal-sidebar-bg);
	border: var(--bs-cal-sidebar-border-width) solid var(--bs-cal-sidebar-border-color);
	border-radius: var(--bs-cal-sidebar-border-radius);
}

.bs-public-event-calendar__sidebar-empty {
	margin: 0;
	font-size: var(--bk-ui-field-font-size);
	color: var(--bs-cal-sidebar-empty-text-color);
	line-height: 1.5;
}

.bs-public-event-calendar__sidebar-details {
	display: grid;
	gap: 1.1rem;
}

.bs-public-event-calendar__sidebar-meta {
	display: grid;
	gap: 0.55rem;
	margin-top: -0.25rem;
}

.bs-public-event-calendar__sidebar-meta-row {
	display: grid;
	gap: 0.2rem;
}

.bs-public-event-calendar__sidebar-meta-label {
	font-size: var(--bk-ui-chip-category-font-size);
	font-weight: 600;
	color: var(--bs-cal-sidebar-label-color);
}

.bs-public-event-calendar__sidebar-name,
.bs-public-event-calendar__sidebar-date,
.bs-public-event-calendar__sidebar-time {
	font-size: var(--bk-body-font-size);
	font-weight: 600;
	color: var(--bs-cal-sidebar-text-color);
	line-height: 1.45;
	font-family: var(--bk-body-font-family, inherit);
}

.bs-public-event-calendar__sidebar-actions {
	margin-top: 0;
	padding-top: 1.1rem;
	border-top: 1px solid var(--bs-cal-sidebar-actions-border-color);
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: stretch;
	gap: 0.5rem;
}

.bs-public-event-calendar__sidebar .bs-public-event-calendar__sidebar-view,
.bs-public-event-calendar__sidebar .bs-public-event-calendar__sidebar-book {
	display: inline-flex;
	flex: 1 1 0;
	min-width: 0;
}

/* A date that has passed (Show past events on) gets no Book button. */
.bs-public-event-calendar__sidebar .bs-public-event-calendar__sidebar-actions .bs-public-event-calendar__sidebar-book[hidden] {
	display: none;
}

.bs-public-event-calendar__sidebar-view.is-disabled,
.bs-public-event-calendar__sidebar-book:disabled {
	opacity: 0.45;
	cursor: not-allowed;
}

.bs-booking-archive-calendar__body--with-sidebar.bs-booking-archive-calendar__body--has-selection .bs-public-event-calendar {
	flex: 1 1 0;
	max-width: calc(100% - 316px);
}

.bs-booking-archive-calendar__body--with-sidebar.bs-booking-archive-calendar__body--has-selection .bs-public-event-calendar__sidebar {
	display: block;
	/* Top edge level with the calendar grid (weekday header): fixed nav row height + its bottom margin. */
	margin-top: calc(var(--bs-cal-archive-nav-h, 72px) + 12px);
}

/* Sidebar archive view: keep same calendar surface as single-page wizards. */
.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .bs-pec-grid {
	background: var(--bs-cal-bg) !important;
	border-radius: var(--bk-cal-radius, var(--bs-arch-radius-lg, 16px));
	box-shadow: none;
	overflow: hidden;
	border: 1px solid var(--bs-cal-border) !important;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-header {
	background: var(--bs-cal-schedule-bg) !important;
	border-bottom: 1px solid var(--bs-cal-border);
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-navigation {
	box-sizing: border-box;
	height: var(--bs-cal-archive-nav-h, 72px);
	padding: 0 16px;
	margin-bottom: 12px;
	background: transparent;
	border-radius: var(--bk-cal-radius);
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-navigation button:hover {
	transform: none;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day:not(.today) {
	background: var(--bs-cal-bg) !important;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.empty {
	background: var(--bs-cal-empty-bg) !important;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.weekend:not(.today) {
	background: #fefefe !important;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.has-schedule:not(.today) {
	background: var(--bs-cal-schedule-bg) !important;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .bs-pec-event-link:hover {
	opacity: 0.92;
	transform: translateY(-1px);
}

@media (max-width: 960px) {
	.bs-booking-archive-calendar__body--with-sidebar.bs-booking-archive-calendar__body--has-selection .bs-public-event-calendar {
		flex: 1 1 100%;
		max-width: none;
	}

	.bs-booking-archive-calendar__body--with-sidebar.bs-booking-archive-calendar__body--has-selection .bs-public-event-calendar__sidebar {
		flex: 1 1 100%;
		width: 100%;
		margin-top: 10px;
	}
}

.bs-booking-archive-calendar .calendar-filters input.bs-event-archive-search,
.bs-booking-archive-calendar .calendar-filters input.search-filter,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__search {
	flex: 1 1 220px;
	min-width: 0;
	width: 100%;
	box-sizing: border-box;
}

.bs-booking-archive-calendar .calendar-filters select,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__sort,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__date-filter {
	flex: 0 0 auto;
	width: 100%;
	min-width: 160px;
	max-width: min(220px, 100%);
	align-self: flex-start;
	cursor: pointer;
}

/* Outer frame lives on the grid (header + days) so "Calendar border radius" rounds one clean border. */
.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .bs-pec-grid {
	background: var(--bs-cal-bg) !important;
	border: 1px solid var(--bs-cal-border) !important;
	border-radius: var(--bk-cal-radius, var(--bs-arch-radius-lg, 16px));
	box-shadow: none;
}

.bs-public-event-calendar--browse-archive .bs-pec-grid .calendar-days {
	border: 0;
}

/* Taller weekday header (archive calendar). */
.bs-public-event-calendar--browse-archive .calendar-day-header,
.bs-public-event-calendar--browse-archive .calendar-day-header.calendar-day-header--weekday-full {
	padding-top: 16px;
	padding-bottom: 16px;
}

.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .calendar-header {
	background: var(--bs-cal-schedule-bg) !important;
	border-bottom: 1px solid var(--bs-cal-border);
}

.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .calendar-navigation {
	padding: 6px 0;
	margin-bottom: 10px;
}

.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .calendar-navigation button:hover {
	transform: none;
}

.bs-public-event-calendar--browse-archive .calendar-day-number {
	color: var(--bs-arch-ink, #0f1419);
}

/* Today: filled badge — accent fill + contrasting date text from Settings. */
.bs-public-event-calendar--browse-archive .calendar-day.today {
	background: var(--bs-cal-bg, #fff) !important;
	color: inherit;
}

.bs-public-event-calendar--browse-archive .calendar-day.today .calendar-day-number {
	position: absolute;
	top: 8px;
	left: 8px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.85rem;
	min-height: 1.85rem;
	padding: 2px 4px;
	border-radius: var(--bk-ui-chip-tag-radius);
	background: var(--bs-cal-today-badge-bg, var(--bs-cal-item-bg, #007aff));
	color: var(--bs-cal-today-badge-text, #fff) !important;
	box-shadow: 0 1px 4px rgba(15, 20, 25, 0.28);
	font-weight: 700;
}

.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .calendar-day:not(.today),
.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .calendar-day.empty {
	background: var(--bs-cal-bg) !important;
}

.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .calendar-day.weekend:not(.today) {
	background: var(--bs-cal-bg) !important;
}

.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .calendar-day.has-schedule:not(.today) {
	background: var(--bs-cal-schedule-bg) !important;
}

.bs-public-event-calendar--browse-archive:not(.bs-public-event-calendar--with-sidebar) .bs-pec-event-link:hover {
	opacity: 1;
	transform: none;
}

/*
 * Browse archive calendar view: items are filled with "Item color", use "Item text color" and an optional "Item border color".
 * Selected items add the "Selected item border color" frame (1px border + inset shadow up to the chosen size, so nothing shifts).
 */
.bs-public-event-calendar--browse-archive .bs-pec-event-link:not(.is-selected-archive-slot),
.bs-public-event-calendar--browse-archive .calendar-day.today .bs-pec-event-link:not(.is-selected-archive-slot) {
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border: 1px solid var(--bs-cal-item-border, transparent);
	box-shadow: none;
}

.bs-public-event-calendar--browse-archive .bs-pec-event-link:not(.is-selected-archive-slot):hover,
.bs-public-event-calendar--browse-archive .calendar-day.today .bs-pec-event-link:not(.is-selected-archive-slot):hover {
	opacity: 0.88;
	transform: none;
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
}

.bs-public-event-calendar--browse-archive .bs-pec-event-link.is-selected-archive-slot {
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border: 1px solid var(--bs-cal-item-selected);
	box-shadow: inset 0 0 0 calc(max(var(--bs-cal-item-selected-width), 1px) - 1px) var(--bs-cal-item-selected);
	outline: none;
}

/* Selected item: same single hover as unselected items (no color swap). */
.bs-public-event-calendar--browse-archive .bs-pec-event-link.is-selected-archive-slot:hover {
	opacity: 0.88;
	transform: none;
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border-color: var(--bs-cal-item-selected);
}

/* Browse archive calendar: event name + time stacked (narrower cells). */
.bs-public-event-calendar--browse-archive .bs-pec-event-link:has(.bs-pec-event-link__title),
.bs-public-event-calendar--browse-archive .bs-pec-event-link:has(.bs-pec-event-link__time) {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	white-space: normal;
	text-overflow: unset;
	overflow: hidden;
}

.bs-public-event-calendar--browse-archive .bs-pec-event-link__title {
	display: -webkit-box;
	width: 100%;
	font-weight: 600;
	font-size: var(--bk-ui-field-compact-label-font-size);
	line-height: 1.2;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.bs-public-event-calendar--browse-archive .bs-pec-event-link__time {
	display: block;
	width: 100%;
	font-size: var(--bk-ui-field-compact-label-font-size);
	line-height: 1.15;
	font-weight: 500;
	opacity: 0.95;
}

.bs-public-event-calendar--browse-archive .bs-pec-events {
	max-height: none;
	overflow-y: visible;
}

/* Single-page wizard parity for archive sidebar calendar. */
.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.has-schedule:not(.today) {
	background: var(--bs-cal-schedule-bg) !important;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.today {
	background: var(--bs-cal-bg, #fff) !important;
	color: inherit;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.today .calendar-day-number {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.85rem;
	min-height: 1.85rem;
	padding: 2px 4px;
	border-radius: var(--bk-ui-chip-tag-radius);
	background: var(--bs-cal-today-badge-bg, var(--bs-cal-item-bg, #007aff));
	color: var(--bs-cal-today-badge-text, #fff) !important;
	box-shadow: 0 1px 4px rgba(15, 20, 25, 0.28);
	font-weight: 700;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.today .bs-pec-event-link:not(.is-selected-archive-slot) {
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border: 1px solid var(--bs-cal-item-border, transparent);
	box-shadow: none;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .bs-pec-event-link.is-selected-archive-slot {
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border: 1px solid var(--bs-cal-item-selected);
	box-shadow: inset 0 0 0 calc(max(var(--bs-cal-item-selected-width), 1px) - 1px) var(--bs-cal-item-selected);
	outline: none;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.today .bs-pec-event-link.is-selected-archive-slot {
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border: 1px solid var(--bs-cal-item-selected);
	box-shadow: inset 0 0 0 calc(max(var(--bs-cal-item-selected-width), 1px) - 1px) var(--bs-cal-item-selected);
	outline: none;
}

.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .calendar-day.today .bs-pec-event-link.is-selected-archive-slot:hover,
.bs-public-event-calendar--browse-archive.bs-public-event-calendar--with-sidebar .bs-pec-event-link.is-selected-archive-slot:hover {
	opacity: 0.88;
	transform: none;
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border-color: var(--bs-cal-item-selected);
}

/* --- Public archive list & grid (events, tours, rentals, rooms) --- */

/* Let archive toolbars shrink inside narrow theme columns (avoids Dates sticking out). */
.booking-list-view.bs-public-event-list,
.booking-grid-view.bs-public-event-grid {
	min-width: 0;
	width: 100%;
	box-sizing: border-box;
}

.bs-public-event-list,
.bs-public-event-grid {
	--bs-arch-ink: #0f1419;
	--bs-arch-muted: var(--bk-theme-muted, var(--bk-body-color, #64748b));
	--bs-arch-surface: #ffffff;
	--bs-arch-list-surface: var(--bk-views-bg, var(--bk-views-list-bg, var(--bs-arch-surface, #ffffff)));
	--bs-arch-grid-surface: var(--bk-views-bg, var(--bk-views-grid-bg, var(--bs-arch-surface, #ffffff)));
	--bs-arch-list-heading: var(--bk-views-heading-color, var(--bk-views-list-heading-color, var(--bk-heading-color, #0f1419)));
	--bs-arch-list-body: var(--bk-views-body-color, var(--bk-views-list-body-color, var(--bk-body-color, var(--bs-arch-muted, #64748b))));
	--bs-arch-list-location-bg: var(--bk-views-location-bg, var(--bk-views-list-location-bg, rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.12)));
	--bs-arch-list-location-text: var(--bk-views-location-text-color, var(--bk-views-list-location-text-color, var(--bs-arch-list-heading, var(--bk-heading-color, #0f1419))));
	--bs-arch-list-date-text: var(--bk-views-date-text-color, var(--bk-btn-text, #ffffff));
	--bs-arch-list-time-text: var(--bk-views-time-text-color, var(--bs-arch-muted));
	--bs-arch-list-schedule-bg: var(--bk-views-schedule-bg, linear-gradient(135deg, var(--bk-btn-accent, #2196f3) 0%, var(--bk-btn-accent-hover, #1976d2) 100%));
	--bs-arch-list-category-text: var(--bk-views-category-text-color, var(--bs-arch-accent, var(--bk-btn-accent, #2196f3)));
	--bs-arch-list-category-bg: var(--bk-views-category-bg, transparent);
	--bs-arch-list-tag-text: var(--bk-views-tag-text-color, var(--bs-arch-muted));
	--bs-arch-list-highlights-text: var(--bk-views-highlights-text-color, var(--bs-arch-muted));
	--bs-arch-list-amenities-text: var(--bk-views-amenities-text-color, var(--bs-arch-muted));
	--bs-arch-list-attributes-text: var(--bk-views-attributes-text-color, var(--bs-arch-muted));
	--bs-arch-grid-heading: var(--bk-views-heading-color, var(--bk-views-grid-heading-color, var(--bk-heading-color, #0f1419)));
	--bs-arch-grid-body: var(--bk-views-body-color, var(--bk-views-grid-body-color, var(--bk-body-color, var(--bs-arch-muted, #64748b))));
	--bs-arch-grid-location-bg: var(--bk-views-location-bg, var(--bk-views-grid-location-bg, rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.12)));
	--bs-arch-grid-location-text: var(--bk-views-location-text-color, var(--bk-views-grid-location-text-color, var(--bs-arch-grid-heading, var(--bk-heading-color, #0f1419))));
	--bs-arch-grid-date-text: var(--bk-views-date-text-color, var(--bs-arch-accent, var(--bk-btn-accent, #2196f3)));
	--bs-arch-grid-time-text: var(--bk-views-time-text-color, var(--bs-arch-muted));
	--bs-arch-grid-schedule-bg: var(--bk-views-schedule-bg, linear-gradient(135deg, var(--bk-btn-accent, #2196f3) 0%, var(--bk-btn-accent-hover, #1976d2) 100%));
	--bs-arch-grid-category-text: var(--bk-views-category-text-color, var(--bs-arch-accent, var(--bk-btn-accent, #2196f3)));
	--bs-arch-grid-category-bg: var(--bk-views-category-bg, transparent);
	--bs-arch-grid-tag-text: var(--bk-views-tag-text-color, var(--bs-arch-muted));
	--bs-arch-grid-highlights-text: var(--bk-views-highlights-text-color, var(--bs-arch-muted));
	--bs-arch-grid-amenities-text: var(--bk-views-amenities-text-color, var(--bs-arch-muted));
	--bs-arch-grid-attributes-text: var(--bk-views-attributes-text-color, var(--bs-arch-muted));
	--bs-arch-grid-buttons-justify: var(--bk-views-grid-buttons-justify, flex-end);
	--bs-arch-canvas: #f4f3f0;
	--bs-arch-border: #e7e5e0;
	--bs-arch-border-hover: #d4cfc6;
	/* Settings → Styling (primary button); same tokens as wizard / hotel search. */
	--bs-arch-accent: var(--bk-btn-accent, #2196f3);
	--bs-arch-accent-soft: rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.14);
	--bs-arch-radius-lg: 16px;
	--bs-arch-radius-md: 12px;
	--bs-arch-shadow: 0 1px 2px rgba(15, 20, 25, 0.05);
	--bs-arch-shadow-card: 0 4px 24px rgba(15, 20, 25, 0.06);
	--bs-arch-shadow-hover: 0 18px 44px rgba(15, 20, 25, 0.1);

	max-width: 1200px;
	margin: 0 auto;
	padding: clamp(8px, 2vw, 16px) 0;
	font-family: var(--bk-body-font-family, inherit);
	font-size: var(--bk-body-font-size, inherit);
	color: var(--bk-body-color, var(--bs-arch-ink));
}

.bs-booking-archive {
	box-sizing: border-box;
}

/* Archive: no link/title underlines (themes often style <a> with underline); the View and Book buttons keep their own border. */
.bs-public-event-list,
.bs-public-event-grid {
	-webkit-tap-highlight-color: transparent;
}

.bs-public-event-list a:not(.bs-event-list-item__view, .bs-event-list-item__book),
.bs-public-event-list a:not(.bs-event-list-item__view, .bs-event-list-item__book):hover,
.bs-public-event-list a:not(.bs-event-list-item__view, .bs-event-list-item__book):focus,
.bs-public-event-list a:not(.bs-event-list-item__view, .bs-event-list-item__book):active,
.bs-public-event-grid .bs-event-grid-card__link,
.bs-public-event-grid .bs-event-grid-card__link:hover,
.bs-public-event-grid .bs-event-grid-card__link:focus,
.bs-public-event-grid .bs-event-grid-card__link:active {
	text-decoration: none;
	border-bottom: none;
	box-shadow: none;
}

.bs-public-event-list .bs-event-list-item__title {
	font-family: var(--bk-heading-font-family, inherit);
	font-size: var(--bk-views-title-font-size, var(--bk-heading-font-size, inherit));
	color: var(--bs-arch-list-heading, var(--bk-heading-color, inherit));
	text-decoration: none;
	border-bottom: none;
}

.bs-public-event-grid .bs-event-grid-card__title {
	font-family: var(--bk-heading-font-family, inherit);
	font-size: var(--bk-views-title-font-size, var(--bk-heading-font-size, inherit));
	color: var(--bs-arch-grid-heading, var(--bk-views-heading-color, var(--bk-views-grid-heading-color, var(--bk-heading-color, inherit))));
	text-decoration: none;
	border-bottom: none;
}

.bs-public-event-grid .bs-event-grid-card__excerpt {
	color: var(--bs-arch-grid-body, var(--bk-views-body-color, var(--bk-views-grid-body-color, var(--bk-body-color, var(--bs-arch-muted, #64748b)))));
}

.bs-public-event-list .bs-event-list-item *,
.bs-public-event-grid .bs-event-grid-card__link * {
	text-decoration: none;
}

/* Event / tour / rooms / rental list: strip underlines themes add on links or headings. */
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item,
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item:hover,
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item:focus,
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item:active,
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item:visited,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item:hover,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item:focus,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item:active,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item:visited,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item:hover,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item:focus,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item:active,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item:visited,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item:hover,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item:hover,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item:focus,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item:focus,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item:active,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item:active,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item:visited,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item:visited {
	text-decoration: none !important;
	border-bottom: none !important;
	box-shadow: none;
}

.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__title,
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__time,
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__excerpt,
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__img,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__title,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__time,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__excerpt,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__img,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item__title,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item__time,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item__excerpt,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item__amenities,
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item__img,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item__title,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item__title,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item__time,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item__time,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item__excerpt,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item__excerpt,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item__img,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item__img {
	text-decoration: none !important;
	border-bottom: none !important;
}

.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__link,
.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__link:hover,
.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__link:focus,
.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__link:active,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__link,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__link:hover,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__link:focus,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__link:active,
.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__link,
.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__link:hover,
.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__link:focus,
.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__link:active,
.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card__link,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card__link,
.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card__link:hover,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card__link:hover,
.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card__link:focus,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card__link:focus,
.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card__link:active,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card__link:active {
	text-decoration: none !important;
	border-bottom: none !important;
	box-shadow: none;
}

.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__title,
.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__excerpt,
.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__location,
.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__highlights,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__title,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__excerpt,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__location,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__highlights,
.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__title,
.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__excerpt,
.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__amenities,
.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card__title,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card__title,
.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card__excerpt,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card__excerpt {
	text-decoration: none !important;
	border-bottom: none !important;
}

.bs-public-event-list .list-filters,
.bs-public-event-grid .grid-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 16px;
	margin-bottom: clamp(20px, 4vw, 32px);
	padding: clamp(12px, 2vw, 16px) clamp(14px, 2.5vw, 20px);
	/* Styling → Views → Toolbar (theme surface / border until set). */
	background: var(--bk-views-toolbar-bg, var(--bs-arch-surface));
	border-radius: var(--bs-arch-radius-lg);
	border: 1px solid var(--bk-views-toolbar-border, var(--bs-arch-border));
	box-shadow: var(--bs-arch-shadow);
	overflow-x: auto;
	overflow-y: visible;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
}

.bs-booking-archive__toolbar {
	align-items: center;
}/* Form controls ignore wrapper font-family (browser default UI fonts) — bind to Settings → Styling body. */

.bs-booking-archive__toolbar :is(
	.bs-booking-archive__sort-label,
	.bs-booking-archive__filter-label
) {
	font-family: var(--bk-body-font-family, inherit);
}

.bs-booking-archive__attr-filters {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-end;
	/* Same row/column gap as the outer .list-filters/.grid-filters row (12px 16px) so the gap
	 * between "Dates" and the first attribute filter matches the gap between attribute filters
	 * themselves (e.g. Gearbox ↔ Bags) instead of drifting slightly narrower. */
	gap: 12px 16px;
	overflow-x: auto;
	overflow-y: hidden;
	-webkit-overflow-scrolling: touch;
}

.bs-booking-archive__attr-filter-field {
	display: flex;
	flex-direction: column;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 6px;
	min-width: 0;
}

.bs-booking-archive__attr-filter-field .bs-booking-archive__filter-label {
	align-self: flex-start;
}

.bs-booking-archive__attr-filter {
	min-width: min(100%, 11rem);
	max-width: 100%;
	box-sizing: border-box;
}/* Field chrome: frontend-field-chrome.css (--bk-field-*). Layout/width below. */

/*
 * `.list-filters input, .grid-filters input` in booking-modules.css (legacy list/grid shell rule)
 * matches at the same specificity as the class-only rules above and sets its own border/radius/flex,
 * so on the archive list & grid it was winning and making the number/text filter look like a plain
 * text box instead of matching the select dropdowns. Re-declare with the archive-qualified selector
 * (same pattern as the select rule below) so this always wins regardless of stylesheet order.
 */
.bs-public-event-list .list-filters input.bs-booking-archive__attr-filter,
.bs-public-event-grid .grid-filters input.bs-booking-archive__attr-filter {
	/*
	 * `.bs-booking-archive__attr-filter-field` (the wrapper) is a COLUMN flex container, so `flex-basis`
	 * on this input sizes its HEIGHT, not its width — a plain `flex: 0 1 160px` here is a no-op for
	 * width and left the field stretched to the input's native intrinsic width (~190px) instead, which
	 * is wider than the rendered/clamped box and shows up as extra empty gap before the next filter.
	 * Use a definite `width` instead so the wrapper's own size (and therefore the gap to its neighbour)
	 * matches what's actually rendered.
	 */
	flex: 0 1 auto;
	width: 160px;
	min-width: 0;
	max-width: min(220px, 100%);
}

/* Number filters ("Bags min" etc.) don't need as much room as a text/choice control, but the
 * placeholder text ("Bags min") plus the spinner still needs more than a couple of digits' worth
 * of width — keep text/search filters at the width above since those hold longer words. */
input.bs-booking-archive__attr-filter[type="number"] {
	min-width: 0;
	max-width: min(140px, 100%);
}

.bs-public-event-list .list-filters input.bs-booking-archive__attr-filter[type="number"],
.bs-public-event-grid .grid-filters input.bs-booking-archive__attr-filter[type="number"] {
	/* See the comment above on the general input rule — same fix, definite `width` instead of a
	 * `flex-basis` that's silently ignored for width inside the column-direction field wrapper. */
	flex: 0 1 auto;
	width: 130px;
	max-width: min(140px, 100%);
}

input.bs-booking-archive__attr-filter::placeholder {
	color: var(--bk-field-text, var(--bs-arch-muted));
	font-weight: 500;
	opacity: 1;
}

/* Tour archive grid: slightly tighter toolbar padding. */
.bs-public-event-grid.bs-booking-archive--tour .grid-filters {
	gap: 10px 14px;
	margin-bottom: clamp(14px, 3vw, 22px);
	padding: 10px 14px;
}

.bs-booking-archive__search-wrap {
	flex: 1 1 180px;
	min-width: 0;
	max-width: 100%;
}

/*
 * Taxonomy/date/sort filters stack their label above the control — pin search to the
 * bottom of the row so the input lines up with the dropdowns, not the labels.
 */
.bs-public-event-list .list-filters > .bs-booking-archive__search-wrap,
.bs-public-event-grid .grid-filters > .bs-booking-archive__search-wrap,
.bs-booking-archive-calendar .calendar-filters > .bs-booking-archive__search-wrap {
	align-self: flex-end;
}

/* Event grid: keep the search field from flex-shrinking to invisible when dates + sort sit on the right. */
.bs-public-event-grid.bs-booking-archive--event .grid-filters .bs-booking-archive__search-wrap {
	flex: 1 1 200px;
	min-width: min(200px, 100%);
}

/* Filter controls: width cap without forcing horizontal scroll. */
.bs-public-event-list .list-filters > .bs-booking-archive__filter-wrap,
.bs-public-event-grid .grid-filters > .bs-booking-archive__sort-wrap {
	max-width: min(100%, 280px);
}

/*
 * Search left; filters grouped on the right — with or without search field.
 * Only the first filter control in the group gets margin-left: auto (not every dropdown).
 */
.bs-public-event-list .list-filters > .bs-booking-archive__search-wrap + :is(.bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap, .bs-booking-archive__attr-filters),
.bs-public-event-grid .grid-filters > .bs-booking-archive__search-wrap + :is(.bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap, .bs-booking-archive__attr-filters),
.bs-public-event-list .list-filters:not(:has(.bs-booking-archive__search-wrap)) > :is(.bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap, .bs-booking-archive__attr-filters):first-child,
.bs-public-event-grid .grid-filters:not(:has(.bs-booking-archive__search-wrap)) > :is(.bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap, .bs-booking-archive__attr-filters):first-child {
	margin-left: auto;
}

/* Event grid: date + sort controls grouped on the right. */
.bs-public-event-grid.bs-booking-archive--event .grid-filters > .bs-booking-archive__filter-wrap,
.bs-public-event-grid.bs-booking-archive--event .grid-filters > .bs-booking-archive__sort-wrap {
	max-width: min(100%, 220px);
}

.bs-public-event-grid.bs-booking-archive--tour .grid-filters .bs-booking-archive__search-wrap {
	flex: 1 1 200px;
	min-width: min(200px, 100%);
}

.bs-public-event-grid.bs-booking-archive--tour .grid-filters > .bs-booking-archive__filter-wrap,
.bs-public-event-grid.bs-booking-archive--tour .grid-filters > .bs-booking-archive__sort-wrap {
	max-width: min(100%, 220px);
}

.bs-public-event-grid .grid-filters > .bs-booking-archive__sort-wrap {
	max-width: min(100%, 320px);
}

/* Rentals: keep filter controls grouped on the right like other modules. */
.bs-public-event-list.bs-booking-archive--rental .list-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__filter-wrap,
.bs-public-event-list.bs-booking-archive--service .list-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__filter-wrap,
.bs-public-event-list.bs-booking-archive--rental .list-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__sort-wrap,
.bs-public-event-list.bs-booking-archive--service .list-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__sort-wrap,
.bs-public-event-list.bs-booking-archive--rental .list-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__attr-filters,
.bs-public-event-list.bs-booking-archive--service .list-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__attr-filters,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__filter-wrap,
.bs-public-event-grid.bs-booking-archive--service .grid-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__filter-wrap,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__sort-wrap,
.bs-public-event-grid.bs-booking-archive--service .grid-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__sort-wrap,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__attr-filters,
.bs-public-event-grid.bs-booking-archive--service .grid-filters > .bs-booking-archive__search-wrap + .bs-booking-archive__attr-filters {
	margin-left: auto;
}

.bs-public-event-list.bs-booking-archive--rental .list-filters > .bs-booking-archive__search-wrap,
.bs-public-event-list.bs-booking-archive--service .list-filters > .bs-booking-archive__search-wrap,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters > .bs-booking-archive__search-wrap,
.bs-public-event-grid.bs-booking-archive--service .grid-filters > .bs-booking-archive__search-wrap {
	margin-right: auto;
}

.bs-public-event-list.bs-booking-archive--rental .list-filters,
.bs-public-event-list.bs-booking-archive--service .list-filters,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters,
.bs-public-event-grid.bs-booking-archive--service .grid-filters {
	justify-content: flex-end;
}

.bs-public-event-list.bs-booking-archive--rental .list-filters .bs-booking-archive__attr-filters,
.bs-public-event-list.bs-booking-archive--service .list-filters .bs-booking-archive__attr-filters,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters .bs-booking-archive__attr-filters,
.bs-public-event-grid.bs-booking-archive--service .grid-filters .bs-booking-archive__attr-filters {
	flex: 0 1 auto;
}

/*
 * Rentals: Sort/Dates sit next to the attribute filters (Gearbox, Bags, ...), which always stack
 * their label above the control — match that here instead of the row layout other modules use, so
 * the whole toolbar reads consistently.
 */
.bs-public-event-list.bs-booking-archive--rental .list-filters .bs-booking-archive__sort-wrap,
.bs-public-event-list.bs-booking-archive--service .list-filters .bs-booking-archive__sort-wrap,
.bs-public-event-list.bs-booking-archive--rental .list-filters .bs-booking-archive__filter-wrap,
.bs-public-event-list.bs-booking-archive--service .list-filters .bs-booking-archive__filter-wrap,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters .bs-booking-archive__sort-wrap,
.bs-public-event-grid.bs-booking-archive--service .grid-filters .bs-booking-archive__sort-wrap,
.bs-public-event-grid.bs-booking-archive--rental .grid-filters .bs-booking-archive__filter-wrap,
.bs-public-event-grid.bs-booking-archive--service .grid-filters .bs-booking-archive__filter-wrap {
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
}

.bs-booking-archive__sort-wrap,
.bs-booking-archive__filter-wrap {
	/* 0 1 auto: allow shrinking so Dates/Sort stay inside the padded toolbar (0 0 auto overflows). */
	flex: 0 1 auto;
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
	align-self: center;
	gap: 8px 10px;
	min-width: 0;
	max-width: 100%;
}

.bs-booking-archive__sort-label,
.bs-booking-archive__filter-label {
	font-size: var(--bk-views-toolbar-label-font-size, var(--bk-ui-field-compact-label-font-size));
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--bk-views-toolbar-label-color, var(--bs-arch-muted));
	padding: 0;
	margin: 0;
	line-height: 1.2;
	white-space: nowrap;
	cursor: pointer;
	flex: 0 0 auto;
}

/* Category/tag filters should always stack label over dropdown across archive views. */
.bs-booking-archive__taxonomy-filter {
	flex-direction: column;
	align-items: flex-start;
	/* Bottom of the row like the search field: a label on two lines grows upwards, the dropdowns stay in line. */
	align-self: flex-end;
	gap: 6px;
}

.bs-booking-archive__taxonomy-filter .bs-booking-archive__filter-label {
	white-space: normal;
	/* One long word (Swedish "Evenemangskategorier") breaks inside the column instead of running into the next filter. */
	max-width: 100%;
	overflow-wrap: anywhere;
	hyphens: auto;
}

.bs-booking-archive__taxonomy-filter .bs-booking-archive__sort,
.bs-booking-archive__taxonomy-filter .bs-booking-archive__select,
.bs-booking-archive__taxonomy-filter select {
	width: 100%;
	min-width: 160px;
}

/* Event/tour/room list+grid: stack the Dates / Sort label above the dropdown, like the category and tag filters. */
.bs-public-event-list.bs-booking-archive--event .bs-booking-archive__stacked-filter,
.bs-public-event-list.bs-booking-archive--tour .bs-booking-archive__stacked-filter,
.bs-public-event-list.bs-booking-archive--hotel .bs-booking-archive__stacked-filter,
.bs-public-event-grid.bs-booking-archive--event .bs-booking-archive__stacked-filter,
.bs-public-event-grid.bs-booking-archive--tour .bs-booking-archive__stacked-filter,
.bs-public-event-grid.bs-booking-archive--hotel .bs-booking-archive__stacked-filter {
	flex-direction: column;
	align-items: flex-start;
	align-self: flex-end;
	gap: 6px;
}

/* Calendar taxonomy filters: force stacked layout (override calendar row rules). */
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__taxonomy-filter {
	flex-direction: column;
	align-items: flex-start;
	align-self: flex-end;
	gap: 6px;
}

.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__taxonomy-filter select,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__taxonomy-filter .bs-booking-archive__select,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__taxonomy-filter .bs-booking-archive__sort {
	width: 100%;
	min-width: 160px;
}

.bs-public-event-list .list-filters input.bs-event-archive-search,
.bs-public-event-list .list-filters input.search-filter,
.bs-public-event-grid .grid-filters input.bs-event-archive-search,
.bs-public-event-grid .grid-filters input.search-filter,
.bs-booking-archive__search {
	flex: 1 1 220px;
	min-width: 0;
	width: 100%;
	box-sizing: border-box;
}

/* Event list/grid: keep search compact so filters stay visible on one row. */
.bs-public-event-list .list-filters input.bs-event-archive-search,
.bs-public-event-list .list-filters input.search-filter,
.bs-public-event-grid .grid-filters input.bs-event-archive-search,
.bs-public-event-grid .grid-filters input.search-filter {
	flex: 0 1 200px;
	max-width: min(240px, 100%);
}

.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__taxonomy-filter select,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__taxonomy-filter .bs-booking-archive__select,
.bs-booking-archive-calendar .calendar-filters .bs-booking-archive__taxonomy-filter .bs-booking-archive__sort {
	width: 100%;
	min-width: 160px;
	color: var(--bk-views-toolbar-value-color, var(--bs-arch-muted, #64748b));
}

.bs-public-event-list .list-filters select:not(.bs-frontend-select__native),
.bs-public-event-grid .grid-filters select:not(.bs-frontend-select__native),
.bs-booking-archive__sort:not(.bs-frontend-select__native),
.bs-booking-archive__date-filter:not(.bs-frontend-select__native) {
	flex: 0 0 auto;
	width: 100%;
	min-width: 160px;
	max-width: min(220px, 100%);
	box-sizing: border-box;
	align-self: flex-start;
	cursor: pointer;
}

/* Archive toolbar enhanced selects — trigger chrome in frontend-field-chrome.css. */

.bs-booking-archive__toolbar > .bs-booking-archive__search-wrap,
.bs-booking-archive__toolbar > .bs-booking-archive__filter-wrap,
.bs-booking-archive__toolbar > .bs-booking-archive__sort-wrap,
.bs-booking-archive__toolbar > .bs-booking-archive__attr-filters {
	display: flex;
	flex: 0 1 auto;
	min-width: 0;
	visibility: visible;
	opacity: 1;
}

.bs-booking-archive__toolbar > select:not([multiple]) {
	flex: 0 0 auto;
	width: auto;
	min-width: 160px;
	max-width: min(220px, 100%);
	align-self: flex-start;
}

.bs-public-event-grid .events-grid,
.bs-public-event-grid .bs-booking-archive__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 288px), 1fr));
	gap: clamp(18px, 3vw, 26px);
	align-items: stretch;
}

.bs-event-archive-empty {
	text-align: center;
	color: var(--bs-arch-muted);
	padding: clamp(28px, 6vw, 48px) 20px;
	margin: 0;
	font-size: var(--bk-body-font-size);
	line-height: 1.5;
	background: linear-gradient(180deg, #fafaf8 0%, #f4f3f0 100%);
	border-radius: var(--bs-arch-radius-md);
	border: 1px dashed var(--bs-arch-border);
}

.bs-event-archive-empty--grid {
	grid-column: 1 / -1;
}

.bs-booking-archive__pagination {
	display: flex;
	justify-content: center;
	margin-top: clamp(20px, 4vw, 36px);
}

.bs-booking-archive__load-more,
.bs-public-event-grid .load-more {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 200px;
	padding: 12px 28px;
	font-size: var(--bk-ui-field-font-size);
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--bk-btn-text, #fff);
	background: var(--bs-arch-accent);
	border: none;
	border-radius: var(--bk-ui-chip-tag-radius);
	cursor: pointer;
	box-shadow: 0 2px 8px rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.25);
	transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.bs-booking-archive__load-more:hover,
.bs-public-event-grid .load-more:hover {
	background: var(--bk-btn-accent-hover, var(--bs-arch-accent));
	color: var(--bk-btn-text-hover, var(--bk-btn-text, #fff));
	filter: none;
	box-shadow: 0 6px 22px rgba(15, 20, 25, 0.18);
	transform: translateY(-1px);
}

/* All booking archive lists: constrain each row width (event, tour, rooms, rental). */
/* Border matches the grid card (--bs-arch-border/--bs-arch-shadow-card) — the shadow-only version
   was too faint to read as a wrapper on light theme backgrounds. */
.bs-public-event-list .bs-event-list-row {
	margin: 0 auto 7px;
	max-width: min(48rem, 100%);
	width: 100%;
	box-sizing: border-box;
	border-radius: var(--bk-views-card-radius, 10px);
	overflow: hidden;
	border: var(--bk-views-card-border-width, 1px) solid var(--bk-views-card-border-color, var(--bs-arch-border, #e7e5e0));
	box-shadow: var(--bs-arch-shadow-card, 0 4px 24px rgba(15, 20, 25, 0.06));
	background: var(--bs-arch-list-surface, var(--bs-arch-surface, #fff));
}

.bs-public-event-list.bs-booking-archive--event .bs-event-list-row,
.bs-public-event-list.bs-booking-archive--tour .bs-event-list-row {
	margin-bottom: 18px;
}

.bs-public-event-list.bs-booking-archive--hotel .bs-event-list-row {
	margin-bottom: 22px;
}

.bs-event-list-item {
	display: flex;
	align-items: stretch;
	gap: 0;
	text-decoration: none;
	color: inherit;
	transition: background 0.2s ease, transform 0.15s ease;
}

.bs-event-list-item:hover {
	background: rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.06);
	color: inherit;
}

/* Hotel archive cards: disable hover lift/highlight per UX preference. */
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item {
	transition: none;
}

.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item:hover {
	background: transparent;
	color: inherit;
}

/* Rental browse list: disable hover lift/highlight (parity with Rooms). */
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item {
	transition: none;
}

.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item:hover,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item:hover {
	background: transparent;
	color: inherit;
}

/* Browse list view_button rows: no card hover tint (all modules). */
.bs-booking-archive--hotel.bs-event-list--layout-view_button .bs-event-list-item--view-button,
.bs-booking-archive--rental.bs-event-list--layout-view_button .bs-event-list-item--view-button,
.bs-booking-archive--service.bs-event-list--layout-view_button .bs-event-list-item--view-button,
.bs-booking-archive--event.bs-event-list--layout-view_button .bs-event-list-item--view-button,
.bs-booking-archive--tour.bs-event-list--layout-view_button .bs-event-list-item--view-button {
	transition: none;
}

.bs-booking-archive--hotel.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover,
.bs-booking-archive--rental.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover,
.bs-booking-archive--service.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover,
.bs-booking-archive--event.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover,
.bs-booking-archive--tour.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover {
	background: transparent;
	color: inherit;
}

.bs-event-list-item__date {
	flex: 0 0 auto;
	width: 100%;
	max-width: none;
	padding: 10px 12px;
	background: var(--bs-arch-list-schedule-bg, linear-gradient(135deg, var(--bk-btn-accent, #2196f3) 0%, var(--bk-btn-accent-hover, #1976d2) 100%));
	color: var(--bs-arch-list-date-text, var(--bk-btn-text, #fff));
	font-weight: 600;
	font-size: var(--bk-views-date-font-size, 12px);
	line-height: 1.3;
	display: flex;
	align-items: center;
	box-sizing: border-box;
}

.bs-event-list-item__schedule {
	flex: 0 0 108px;
	max-width: 32%;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	align-self: stretch;
	min-width: 0;
}

.bs-event-list-item__schedule-time {
	margin: 0;
	padding: 8px 6px 10px;
	width: 100%;
	box-sizing: border-box;
	text-align: center;
	font-size: var(--bk-views-time-font-size, 12px);
	font-weight: 500;
	line-height: 1.3;
	color: var(--bs-arch-list-time-text, #8e8e93);
	background: var(--bs-arch-list-surface, var(--bs-arch-surface, #fff));
	border-top: 1px solid var(--bs-arch-border, #e7e5e0);
}

.bs-event-list-item__main-wrap {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-self: stretch;
}

.bs-event-list-item__main-wrap > .bs-event-list-item__body {
	flex: 1;
	min-width: 0;
}

.bs-event-list-item__header {
	display: flex;
	flex-direction: row;
	justify-content: flex-start;
	align-items: flex-start;
	gap: 10px;
	padding: 8px 14px 0;
	min-width: 0;
}

/* Event/tour list: roomier insets (rooms/rentals keep the default header/body padding). */
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__header,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__header {
	padding: 12px clamp(16px, 3vw, 20px) 0;
}

.bs-event-list-item__header .bs-event-list-item__taxonomy-intro {
	flex: 1 1 auto;
	min-width: 0;
	max-width: min(38rem, 72%);
}

.bs-event-list-item__taxonomy-intro,
.bs-event-grid-card__taxonomy-intro {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.35rem 0.75rem;
}

.bs-event-list-item__taxonomy-intro .bs-event-list-item__tags,
.bs-event-grid-card__taxonomy-intro .bs-event-grid-card__tags {
	margin: 0;
	max-width: 100%;
}

.bs-event-list-item__taxonomy-intro .bs-event-list-item__categories--corner,
.bs-event-grid-card__taxonomy-intro .bs-event-grid-card__categories--corner {
	margin: 0;
	align-self: center;
	text-align: left;
}

.bs-event-list-item__header + .bs-event-list-item__body {
	padding-top: 4px;
}

.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__lead,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__lead {
	padding: 6px clamp(16px, 3vw, 20px) clamp(14px, 2.5vw, 18px);
	min-width: 0;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__header
	+ .bs-event-list-item__lead,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__header
	+ .bs-event-list-item__lead {
	padding-top: 6px;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__lead
	.bs-event-list-item__title-row,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__lead
	.bs-event-list-item__title-row {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 10px 12px;
	width: 100%;
	min-width: 0;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__title-row
	.bs-event-list-item__title,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__title-row
	.bs-event-list-item__title {
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__title-row
	.bs-event-list-item__location,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__title-row
	.bs-event-list-item__location {
	flex: 0 1 auto;
	margin: 0;
	max-width: min(14rem, 48%);
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__lead
	.bs-event-list-item__highlights,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__lead
	.bs-event-list-item__highlights {
	margin: 4px 0 0;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__lead
	.bs-event-list-item__excerpt,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__lead
	.bs-event-list-item__excerpt {
	margin: 4px 0 0;
	max-width: 100%;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__lead
	+ .bs-event-list-item__body,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__lead
	+ .bs-event-list-item__body {
	padding-top: 4px;
}

.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__body--browse-content,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__body--browse-content {
	align-items: flex-start;
	padding: 6px clamp(16px, 3vw, 20px) clamp(14px, 2.5vw, 18px);
}



.bs-event-list-item__categories--corner {
	display: inline-flex;
	align-items: flex-start;
	gap: 0.35em;
	margin: 0;
	max-width: min(16rem, 58%);
	text-align: right;
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
}

/* Event & tour list: schedule column fills row height; date + time share the schedule background. */
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__schedule,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__schedule {
	flex: 0 0 140px;
	width: 140px;
	max-width: 38%;
	background: var(--bs-arch-list-schedule-bg, linear-gradient(135deg, var(--bk-btn-accent, #2196f3) 0%, var(--bk-btn-accent-hover, #1976d2) 100%));
	justify-content: center;
}

.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__schedule .bs-event-list-item__date,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__schedule .bs-event-list-item__date {
	background: transparent;
	flex: 0 0 auto;
	width: 100%;
	max-width: none;
	padding: 10px 8px;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	gap: 2px;
}

.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__schedule
	.bs-event-list-item__date--range-label {
	font-size: var(--bk-views-date-font-size, clamp(0.72rem, 2vw, 0.82rem));
	font-weight: 600;
	line-height: 1.25;
	padding: 10px 6px;
}

.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__schedule-time,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__schedule-time {
	background: transparent;
	border-top: none;
	padding: 0 8px 10px;
	color: var(--bs-arch-list-date-text, var(--bk-btn-text, #fff));
	font-size: var(--bk-views-time-font-size, clamp(0.72rem, 2vw, 0.82rem));
	font-weight: 500;
	opacity: 0.95;
}

/* Event/tour list: date + optional stacked image share one fixed-width left column (variant 3). */
.bs-event-list-item__schedule-media {
	flex: 1 1 auto;
	min-height: 72px;
	display: flex;
	overflow: hidden;
	background: var(--bs-arch-canvas, #f4f3f0);
}

.bs-event-list-item__schedule-media .bs-event-list-item__media {
	width: 100%;
	height: 100%;
	min-height: 72px;
	flex: 1 1 auto;
	align-self: stretch;
	border-radius: 0;
	border: none;
	border-top: 1px solid rgba(255, 255, 255, 0.14);
}

.bs-event-list-item__schedule-media .bs-event-list-item__img {
	width: 100%;
	height: 100%;
	min-height: 72px;
	object-fit: cover;
	display: block;
}

/* Event/tour list: image-only lead column (no date). */
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media {
	flex: 0 0 140px;
	width: 140px;
	align-self: stretch;
	height: auto;
	min-height: 100%;
	margin: 0;
	border-radius: 0;
	border: none;
	border-right: 1px solid var(--bs-arch-border, #e7e5e0);
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item
	> .bs-event-list-item__media
	.bs-event-list-item__img,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item
	> .bs-event-list-item__media
	.bs-event-list-item__img {
	width: 100%;
	height: 100%;
	min-height: 100%;
	object-fit: cover;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item
	> .bs-event-list-item__media
	+ .bs-event-list-item__main-wrap,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item
	> .bs-event-list-item__media
	+ .bs-event-list-item__main-wrap {
	flex: 1;
	min-width: 0;
}

.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__date-day,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__date-day {
	display: block;
	font-size: var(--bk-views-date-day-font-size, clamp(1.85rem, 5vw, 2.25rem));
	font-weight: 700;
	line-height: 1;
}

.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__date-month,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__date-month {
	display: block;
	font-size: var(--bk-views-date-font-size, clamp(1.05rem, 2.9vw, 1.2rem));
	font-weight: 600;
	line-height: 1.1;
}

.bs-public-event-list .bs-event-list-item__body {
	flex: 1;
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 10px 12px;
	padding: 10px 14px;
	min-width: 0;
	box-sizing: border-box;
}
















.bs-event-list-item__media {
	flex: 0 0 auto;
	align-self: center;
	width: 56px;
	height: 56px;
	border-radius: var(--bk-ui-field-radius);
	overflow: hidden;
	background: var(--bs-arch-canvas, #f4f3f0);
	border: 1px solid var(--bs-arch-border, #e7e5e0);
}

/* Rooms / rental list: full-height cover image as a left column on the row. */
.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media {
	flex: 0 0 176px;
	width: 176px;
	align-self: stretch;
	height: auto;
	min-height: 100%;
	margin: 0;
	border-radius: 0;
	border: none;
	border-right: 1px solid var(--bs-arch-border, #e7e5e0);
}

.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media .bs-event-list-item__img,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media .bs-event-list-item__img,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media .bs-event-list-item__img {
	width: 100%;
	height: 100%;
	min-height: 100%;
	object-fit: cover;
	object-position: center;
}

.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media + .bs-event-list-item__main-wrap,
.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media + .bs-event-list-item__main-wrap,
.bs-booking-archive--service.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media + .bs-event-list-item__main-wrap {
	flex: 1;
	min-width: 0;
}

.bs-event-list-item__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.bs-event-list-item__content {
	flex: 1;
	min-width: 0;
}

/* Event & tour list: title / meta (rubrik) left, description to the right, 20px gap */
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__content-split,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__content-split {
	display: flex;
	flex-direction: row;
	align-items: flex-start;
	justify-content: flex-start;
	gap: 20px;
	width: 100%;
	min-width: 0;
}

/* Main column (vänster i split): meta som fortfarande ligger i __content; ofta tom när meta flyttats till thumb. */
.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__main,
.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__main {
	flex: 0 1 auto;
	align-self: flex-start;
	width: fit-content;
	max-width: 100%;
	min-width: 0;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__content-split
	.bs-event-list-item__main
	> *,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__content-split
	.bs-event-list-item__main
	> * {
	max-width: 100%;
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__content-split
	.bs-event-list-item__main
	.bs-event-list-item__highlights,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__content-split
	.bs-event-list-item__main
	.bs-event-list-item__highlights {
	max-width: min(18rem, 100%);
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__content-split
	.bs-event-list-item__main
	.bs-event-list-item__time-location,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__content-split
	.bs-event-list-item__main
	.bs-event-list-item__time-location {
	max-width: min(18rem, 100%);
}

.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__content-split
	> .bs-event-list-item__excerpt,
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__content-split
	> .bs-event-list-item__excerpt {
	flex: 1 1 0;
	min-width: 0;
	max-width: none;
	margin: 0;
	text-align: left;
	-webkit-line-clamp: 8;
}




.bs-booking-archive--event.bs-public-event-list
	.bs-event-list-item__body:has( .bs-event-list-item__content-split ),
.bs-booking-archive--tour.bs-public-event-list
	.bs-event-list-item__body:has( .bs-event-list-item__content-split ) {
	align-items: flex-start;
}

.bs-event-list-item__title {
	margin: 0 0 4px;
	font-size: var(--bk-views-title-font-size, 15px);
	font-weight: 600;
	color: var(--bs-arch-list-heading, #1d1d1f);
	line-height: 1.28;
}

.bs-event-list-item__title + .bs-event-list-item__capacity,
.bs-event-list-item__title + .bs-event-list-item__highlights,
.bs-event-list-item__title + .bs-event-list-item__amenities,
.bs-event-list-item__title + .bs-event-list-item__attributes {
	margin-top: 0;
}

.bs-event-list-item__time-location {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px 0;
	margin: 4px 0 0;
	max-width: min(38rem, 100%);
}

.bs-event-list-item__time {
	margin: 0;
	font-size: var(--bk-views-time-font-size, 13px);
	color: var(--bs-arch-list-time-text, #8e8e93);
	line-height: 1.3;
}

.bs-event-list-item__time-location .bs-event-list-item__time {
	flex: 0 0 auto;
	max-width: 100%;
}

.bs-event-list-item__time-location .bs-event-list-item__location {
	margin: 0;
	flex: 0 0 auto;
	width: fit-content;
	max-width: min(22rem, 100%);
}

.bs-event-list-item__excerpt {
	margin: 5px 0 0;
	max-width: min(38rem, 88%);
	font-size: var(--bk-views-body-font-size, 13px);
	line-height: 1.45;
	color: var(--bs-arch-list-body, var(--bs-arch-muted, #64748b));
	display: -webkit-box;
	-webkit-line-clamp: 5;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.bs-event-list-item__location {
	display: inline-block;
	margin: 0 0 6px;
	width: fit-content;
	max-width: min(38rem, 100%);
	line-height: 1.35;
	font-weight: 500;
	color: var(--bs-arch-list-location-text, var(--bs-arch-list-heading, var(--bs-arch-ink, #1d1d1f)));
	background: var(--bs-arch-list-location-bg, rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.12));
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
}

/* Recurring event / tour cards: "Thu–Sun until 13 Dec" under the title (the date shows the next time). */
.bs-event-list-item__schedule-summary,
.bs-event-grid-card__schedule-summary {
	margin: 0 0 6px;
	font-size: var(--bk-ui-field-label-font-size);
	line-height: 1.4;
	color: var(--bs-arch-muted, #64748b);
}

/* Service, event and tour cards: "From 700 kr · 1 h 30 min" (price in the heading color, duration muted). */
.bs-event-list-item__price-row,
.bs-event-grid-card__price-row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 0.5em;
	margin: 0 0 8px;
	font-size: var(--bk-ui-field-label-font-size);
	line-height: 1.4;
}

.bs-event-list-item__price,
.bs-event-grid-card__price {
	font-weight: 600;
	color: var(--bk-views-heading-color, var(--bk-heading-color, inherit));
}

.bs-event-list-item__duration,
.bs-event-grid-card__duration {
	color: var(--bs-arch-muted, #64748b);
}

.bs-event-list-item__price + .bs-event-list-item__duration::before,
.bs-event-grid-card__price + .bs-event-grid-card__duration::before {
	content: "·";
	margin-right: 0.5em;
}

.bs-event-list-item__highlights {
	margin: 0 0 8px;
	max-width: min(38rem, 88%);
	font-size: var(--bk-views-highlights-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.4;
	font-weight: 600;
	color: var(--bs-arch-list-highlights-text, var(--bs-arch-muted, #64748b));
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.bs-event-list-item__categories {
	margin: 0 0 4px;
	max-width: min(38rem, 88%);
	font-size: var(--bk-views-category-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.35;
	font-weight: 600;
	color: var(--bs-arch-list-category-text, var(--bs-arch-accent, var(--bk-btn-accent, #115e59)));
}

.bs-event-list-item__categories-icon,
.bs-event-grid-card__categories-icon {
	flex: 0 0 14px;
	width: 14px;
	height: 14px;
	margin-top: 0.12em;
	background-color: currentColor;
	opacity: 0.9;
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z'/%3E%3C/svg%3E");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.bs-event-list-item__categories-text,
.bs-event-grid-card__categories-text {
	flex: 1 1 auto;
	min-width: 0;
}

.bs-event-list-item__tags {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: 0 0 8px;
	max-width: min(38rem, 88%);
}

/* Tag pill chrome: frontend-chips.css */

.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item__capacity {
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	margin: 2px 0 8px;
	max-width: 100%;
	font-family: inherit;
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
}

.bs-event-list-item__amenities {
	margin: 0 0 8px;
	max-width: min(38rem, 88%);
	font-size: var(--bk-views-amenities-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.4;
	font-weight: 600;
	color: var(--bs-arch-list-amenities-text, var(--bs-arch-muted, #64748b));
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.bs-event-list-item__attributes {
	margin: 0 0 8px;
	max-width: min(38rem, 88%);
	font-size: var(--bk-views-amenities-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.4;
	font-weight: 700;
	color: var(--bs-arch-list-attributes-text, var(--bs-arch-muted, #64748b));
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* List view+book layout: category + location top-right, actions bottom-right (all modules). */
.bs-event-list-item--view-button .bs-event-list-item__main-wrap--has-actions {
	min-height: 100%;
}

.bs-event-list-item--view-button .bs-event-list-item__header .bs-event-list-item__header-meta {
	margin-left: auto;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 4px;
	flex: 0 1 auto;
	max-width: min(16rem, 52%);
	min-width: 0;
}

.bs-event-list-item--view-button .bs-event-list-item__header-meta .bs-event-list-item__location--corner {
	margin: 0;
	max-width: 100%;
	text-align: right;
	line-height: 1.35;
	font-size: var(--bk-ui-field-label-font-size);
	color: var(--bs-arch-list-location-text, var(--bs-arch-list-heading, var(--bs-arch-ink, #1d1d1f)));
}

.bs-event-list-item--view-button .bs-event-list-item__footer {
	margin-top: auto;
	flex: 0 0 auto;
	display: flex;
	justify-content: flex-end;
	align-items: flex-end;
	padding: 8px clamp(14px, 3vw, 20px) clamp(14px, 2.5vw, 18px);
	box-sizing: border-box;
}

.bs-event-list-item--view-button .bs-event-list-item__footer .bs-event-list-item__actions {
	flex: 0 0 auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	padding: 0;
	box-sizing: border-box;
}

/* Keep description from spanning the full row width beside View/Book (all list modules). */
.bs-event-list-item--view-button .bs-event-list-item__main-wrap--has-actions .bs-event-list-item__lead .bs-event-list-item__excerpt,
.bs-event-list-item--view-button .bs-event-list-item__main-wrap--has-actions .bs-event-list-item__body .bs-event-list-item__excerpt {
	max-width: min(36rem, calc(100% - clamp(6.5rem, 20vw, 10rem)));
	box-sizing: border-box;
}

/* Phones: the buttons sit under the text, so the description takes the card's width. */
@media (max-width: 782px) {
	.bs-event-list-item--view-button .bs-event-list-item__main-wrap--has-actions .bs-event-list-item__lead .bs-event-list-item__excerpt,
	.bs-event-list-item--view-button .bs-event-list-item__main-wrap--has-actions .bs-event-list-item__body .bs-event-list-item__excerpt {
		max-width: none;
	}
}

.bs-booking-archive--event.bs-event-list--layout-view_button .bs-event-list-item--view-button .bs-event-list-item__lead,
.bs-booking-archive--tour.bs-event-list--layout-view_button .bs-event-list-item--view-button .bs-event-list-item__lead {
	padding-bottom: 6px;
}

.bs-booking-archive--hotel.bs-event-list--layout-view_button .bs-event-list-item--view-button .bs-event-list-item__body,
.bs-booking-archive--rental.bs-event-list--layout-view_button .bs-event-list-item--view-button .bs-event-list-item__body,
.bs-booking-archive--service.bs-event-list--layout-view_button .bs-event-list-item--view-button .bs-event-list-item__body {
	padding-bottom: 6px;
}

/* Event list layout: minimalistic with button (row is not a single link). */
.bs-booking-archive--event.bs-event-list--layout-view_button .bs-event-list-item--view-button {
	display: flex;
	flex-direction: row;
	align-items: stretch;
	text-decoration: none;
	color: inherit;
}

.bs-booking-archive--event.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover {
	background: transparent;
	color: inherit;
}

/* List/grid View + Book CTA: frontend-buttons.css. */

/* Event grid layout: classic with View button (card is not one big link). */
.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card__inner {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__body {
	flex: 1 1 auto;
	padding-top: clamp(10px, 2vw, 14px);
	padding-bottom: clamp(10px, 2vw, 14px);
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card__footer {
	flex: 0 0 auto;
	padding: 0 clamp(16px, 3vw, 22px) clamp(16px, 3vw, 22px);
	box-sizing: border-box;
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card__actions {
	display: flex;
	justify-content: var(--bs-arch-grid-buttons-justify, flex-end);
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	padding-top: 2px;
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__location {
	text-decoration: none;
	color: var(--bs-arch-grid-location-text, var(--bs-arch-grid-heading, var(--bs-arch-ink, #1d1d1f)));
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__highlights {
	text-decoration: none;
	color: var(--bs-arch-grid-highlights-text, var(--bs-arch-muted, #64748b));
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories,
.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories--corner {
	text-decoration: none;
	color: var(--bs-arch-grid-category-text, var(--bs-arch-accent, var(--bk-btn-accent, #115e59)));
}

.bs-booking-archive--event.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__tags {
	text-decoration: none;
	color: var(--bs-arch-grid-tag-text, var(--bs-arch-muted, #64748b));
}

/* Tour browse: same list/grid “View button” layout as events (shared BEM blocks). */
.bs-booking-archive--tour.bs-event-list--layout-view_button .bs-event-list-item--view-button {
	display: flex;
	flex-direction: row;
	align-items: stretch;
	text-decoration: none;
	color: inherit;
}

.bs-booking-archive--tour.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover {
	background: transparent;
	color: inherit;
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card__inner {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;
	overflow: hidden;
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__body {
	flex: 1 1 auto;
	padding-top: clamp(10px, 2vw, 14px);
	padding-bottom: clamp(10px, 2vw, 14px);
	overflow: hidden;
}

.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__excerpt {
	-webkit-line-clamp: 3;
	line-clamp: 3;
	max-height: calc(1.55em * 3);
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card__footer {
	flex: 0 0 auto;
	padding: 0 clamp(16px, 3vw, 22px) clamp(16px, 3vw, 22px);
	box-sizing: border-box;
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card__actions {
	display: flex;
	justify-content: var(--bs-arch-grid-buttons-justify, flex-end);
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	padding-top: 2px;
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__location {
	text-decoration: none;
	color: var(--bs-arch-grid-location-text, var(--bs-arch-grid-heading, var(--bs-arch-ink, #1d1d1f)));
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__highlights {
	text-decoration: none;
	color: var(--bs-arch-grid-highlights-text, var(--bs-arch-muted, #64748b));
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories,
.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories--corner {
	text-decoration: none;
	color: var(--bs-arch-grid-category-text, var(--bs-arch-accent, var(--bk-btn-accent, #115e59)));
}

.bs-booking-archive--tour.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__tags {
	text-decoration: none;
	color: var(--bs-arch-grid-tag-text, var(--bs-arch-muted, #64748b));
}

/*
 * Rentals: ensure action row on list rows when layout class was out of sync (JS fixes the class too).
 */

/* Rentals browse: same list/grid "View button" layout as events/tours. */
.bs-booking-archive--rental.bs-event-list--layout-view_button .bs-event-list-item--view-button,
.bs-booking-archive--service.bs-event-list--layout-view_button .bs-event-list-item--view-button {
	display: flex;
	flex-direction: row;
	align-items: stretch;
	text-decoration: none;
	color: inherit;
}

.bs-booking-archive--rental.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover,
.bs-booking-archive--service.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover {
	background: transparent;
	color: inherit;
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card__inner,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card__inner {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__body,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__body {
	flex: 1 1 auto;
	padding-top: clamp(10px, 2vw, 14px);
	padding-bottom: clamp(10px, 2vw, 14px);
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card__footer,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card__footer {
	flex: 0 0 auto;
	padding: 0 clamp(16px, 3vw, 22px) clamp(16px, 3vw, 22px);
	box-sizing: border-box;
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card__actions,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card__actions {
	display: flex;
	justify-content: var(--bs-arch-grid-buttons-justify, flex-end);
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	padding-top: 2px;
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__location,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__location {
	text-decoration: none;
	color: var(--bs-arch-grid-location-text, var(--bs-arch-grid-heading, var(--bs-arch-ink, #1d1d1f)));
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__highlights,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__highlights {
	text-decoration: none;
	color: var(--bs-arch-grid-highlights-text, var(--bs-arch-muted, #64748b));
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__attributes,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__attributes {
	text-decoration: none;
	color: var(--bs-arch-grid-attributes-text, var(--bs-arch-muted, #64748b));
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories,
.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories--corner,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__categories--corner {
	text-decoration: none;
	color: var(--bs-arch-grid-category-text, var(--bs-arch-accent, var(--bk-btn-accent, #115e59)));
}

.bs-booking-archive--rental.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__tags,
.bs-booking-archive--service.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__tags {
	text-decoration: none;
	color: var(--bs-arch-grid-tag-text, var(--bs-arch-muted, #64748b));
}

/* Rooms browse: same list/grid “View button” layout as events/tours (shared BEM blocks). */
.bs-booking-archive--hotel.bs-event-list--layout-view_button .bs-event-list-item--view-button {
	display: flex;
	flex-direction: row;
	align-items: stretch;
	text-decoration: none;
	color: inherit;
}

.bs-booking-archive--hotel.bs-event-list--layout-view_button .bs-event-list-item--view-button:hover {
	background: transparent;
	color: inherit;
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card__inner {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__body {
	flex: 1 1 auto;
	padding-top: clamp(10px, 2vw, 14px);
	padding-bottom: clamp(10px, 2vw, 14px);
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card__footer {
	flex: 0 0 auto;
	padding: 0 clamp(16px, 3vw, 22px) clamp(16px, 3vw, 22px);
	box-sizing: border-box;
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card__actions {
	display: flex;
	justify-content: var(--bs-arch-grid-buttons-justify, flex-end);
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	padding-top: 2px;
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__location {
	text-decoration: none;
	color: var(--bs-arch-grid-location-text, var(--bs-arch-grid-heading, var(--bs-arch-ink, #1d1d1f)));
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__amenities {
	text-decoration: none;
	color: var(--bs-arch-grid-amenities-text, var(--bs-arch-muted, #64748b));
}

.bs-booking-archive--hotel.bs-event-grid--layout-grid_view_button .bs-event-grid-card--view-button .bs-event-grid-card__capacity {
	text-decoration: none;
	color: var(--bk-views-capacity-text-color, var(--bk-body-color, inherit));
}

/* Grid card shell — View/Book CTA chrome lives in frontend-buttons.css. */
.bs-event-grid-card {
	position: relative;
	border-radius: var(--bk-views-card-radius, var(--bs-arch-radius-lg, 16px));
	overflow: hidden;
	background: var(--bs-arch-grid-surface, var(--bs-arch-surface, #fff));
	border: var(--bk-views-card-border-width, 1px) solid var(--bk-views-card-border-color, var(--bs-arch-border, #e7e5e0));
	box-shadow: var(--bs-arch-shadow-card, 0 4px 24px rgba(15, 20, 25, 0.06));
	transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.bs-event-grid-card:hover {
	transform: translateY(-3px);
	border-color: var(--bk-views-card-border-color, var(--bs-arch-border-hover, #d4cfc6));
	box-shadow: var(--bs-arch-shadow-hover, 0 18px 44px rgba(15, 20, 25, 0.1));
}

.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card {
	transition: border-color 0.22s ease;
}

.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card:hover {
	transform: none;
	border-color: var(--bk-views-card-border-color, var(--bs-arch-border, #e7e5e0));
	box-shadow: var(--bs-arch-shadow-card, 0 4px 24px rgba(15, 20, 25, 0.06));
}

/* Event grid (classic + view button): no card lift or image zoom on hover */
.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card {
	transition: border-color 0.22s ease;
}

.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card:hover {
	transform: none;
	border-color: var(--bk-views-card-border-color, var(--bs-arch-border, #e7e5e0));
	box-shadow: var(--bs-arch-shadow-card, 0 4px 24px rgba(15, 20, 25, 0.06));
}

.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__img {
	transition: none;
}

.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card:hover .bs-event-grid-card__img {
	transform: none;
}

/* Tour grid (classic + view button): no card lift or image zoom on hover */
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card {
	transition: border-color 0.22s ease;
}

.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card:hover {
	transform: none;
	border-color: var(--bk-views-card-border-color, var(--bs-arch-border, #e7e5e0));
	box-shadow: var(--bs-arch-shadow-card, 0 4px 24px rgba(15, 20, 25, 0.06));
}

.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__img {
	transition: none;
}

.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card:hover .bs-event-grid-card__img {
	transform: none;
}

.bs-event-grid-card__link {
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: inherit;
	height: 100%;
	min-height: 0;
	box-sizing: border-box;
	flex: 1;
}

.bs-event-grid-card__link:hover {
	color: inherit;
}

.bs-event-grid-card__link:focus-visible {
	outline: 2px solid var(--bs-arch-accent, #115e59);
	outline-offset: 3px;
}

.bs-event-grid-card__media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: linear-gradient(160deg, #e8f0ef 0%, #f4f3f0 48%, #e5e2dc 100%);
	flex-shrink: 0;
}



.bs-event-grid-card__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.4s ease;
}

.bs-event-grid-card:hover .bs-event-grid-card__img {
	transform: scale(1.03);
}

.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__img {
	transition: none;
}

.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card:hover .bs-event-grid-card__img {
	transform: none;
}

.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card {
	transition: border-color 0.22s ease;
}

.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card:hover,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card:hover {
	transform: none;
	border-color: var(--bk-views-card-border-color, var(--bs-arch-border, #e7e5e0));
	box-shadow: var(--bs-arch-shadow-card, 0 4px 24px rgba(15, 20, 25, 0.06));
}

.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card__img,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card__img {
	transition: none;
}

.bs-booking-archive--rental.bs-public-event-grid .bs-event-grid-card:hover .bs-event-grid-card__img,
.bs-booking-archive--service.bs-public-event-grid .bs-event-grid-card:hover .bs-event-grid-card__img {
	transform: none;
}

.bs-event-grid-card__body {
	padding: clamp(16px, 3vw, 22px) clamp(16px, 3vw, 22px) clamp(18px, 3vw, 24px);
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex: 1;
	min-height: 0;
	overflow: hidden;
}

.bs-booking-archive--event.bs-public-event-grid .bs-event-grid-card__body,
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__body {
	gap: 6px;
}

.bs-event-grid-card__meta-row {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 0;
}

.bs-event-grid-card__meta-start {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
	min-width: 0;
	flex: 1 1 auto;
}

.bs-event-grid-card__meta-row .bs-event-grid-card__location-row {
	margin: 0;
	flex: 0 1 auto;
	min-width: 0;
	max-width: min(100%, 16rem);
}

.bs-event-grid-card__meta-start .bs-event-grid-card__taxonomy-intro {
	width: 100%;
}

.bs-event-grid-card__meta-start .bs-event-grid-card__tags {
	margin: 0;
	max-width: min(100%, 16rem);
}

.bs-event-grid-card__schedule {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	min-width: 0;
	flex: 1 1 auto;
	font-size: var(--bk-ui-field-label-font-size);
	line-height: 1.35;
}

.bs-event-grid-card__schedule--overlay {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 2;
	flex: none;
	max-width: calc(100% - 20px);
	padding: 6px 10px;
	border-radius: var(--bk-views-date-radius, 8px);
	background: var(--bs-arch-grid-schedule-bg, rgba(15, 20, 25, 0.78));
	box-shadow: 0 2px 10px rgba(15, 20, 25, 0.18);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}

.bs-event-grid-card__schedule.bs-event-grid-card__schedule--overlay .bs-event-grid-card__date {
	/* Same date/time text as the list view schedule column (Views → Date text color). */
	color: var(--bk-views-date-text-color, var(--bk-btn-text, #fff));
	font-weight: 600;
}

.bs-event-grid-card__schedule.bs-event-grid-card__schedule--overlay .bs-event-grid-card__time {
	color: var(--bk-views-date-text-color, var(--bk-btn-text, #fff));
	font-weight: 500;
}

.bs-event-grid-card__meta-row--category-only {
	justify-content: flex-end;
}

/* Tour grid: location or title shares the meta row with corner category. */
.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__meta-row {
	width: 100%;
	align-self: stretch;
}

.bs-booking-archive--tour.bs-public-event-grid .bs-event-grid-card__meta-row .bs-event-grid-card__meta-start {
	justify-content: flex-start;
	align-items: flex-start;
}

.bs-booking-archive--tour.bs-public-event-grid
	.bs-event-grid-card__meta-row
	> .bs-event-grid-card__location-row {
	flex: 0 1 auto;
	min-width: 0;
	margin: 0;
	margin-right: auto;
	align-self: center;
}

.bs-booking-archive--tour.bs-public-event-grid
	.bs-event-grid-card__meta-row
	> .bs-event-grid-card__title--in-meta-row {
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	margin-right: auto;
	align-self: center;
}

.bs-event-grid-card__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 0.35em;
	font-size: var(--bk-ui-field-label-font-size);
	line-height: 1.35;
	color: var(--bs-arch-muted, #64748b);
}

.bs-event-grid-card__schedule .bs-event-grid-card__date {
	font-size: var(--bk-views-date-font-size, inherit);
	font-weight: 600;
	color: var(--bs-arch-grid-date-text, var(--bs-arch-accent, #115e59));
	letter-spacing: 0.01em;
	text-transform: none;
}

.bs-event-grid-card__schedule .bs-event-grid-card__time {
	font-size: var(--bk-views-time-font-size, inherit);
	font-weight: 500;
	color: var(--bs-arch-grid-time-text, var(--bs-arch-muted, #64748b));
}

.bs-event-grid-card__meta .bs-event-grid-card__date {
	font-size: var(--bk-views-date-font-size, inherit);
	font-weight: 600;
	color: var(--bs-arch-grid-date-text, var(--bs-arch-accent, #115e59));
	letter-spacing: 0.01em;
	text-transform: none;
}

.bs-event-grid-card__meta .bs-event-grid-card__time {
	font-size: var(--bk-views-time-font-size, inherit);
	font-weight: 500;
	color: var(--bs-arch-grid-time-text, var(--bs-arch-muted, #64748b));
}

.bs-event-grid-card__meta .bs-event-grid-card__date + .bs-event-grid-card__time::before {
	content: '·';
	margin-right: 0.35em;
	font-weight: 700;
	opacity: 0.45;
}

.bs-event-grid-card__location-row {
	margin: 0;
	max-width: 100%;
}

.bs-event-grid-card__title {
	margin: 0;
	font-size: var(--bk-views-title-font-size, clamp(1.05rem, 2.4vw, 1.2rem));
	font-weight: 600;
	color: var(--bs-arch-grid-heading, var(--bk-views-heading-color, var(--bk-views-grid-heading-color, var(--bs-arch-ink, #0f1419))));
	line-height: 1.28;
	letter-spacing: -0.02em;
}

.bs-event-grid-card__excerpt {
	margin: 4px 0 0;
	font-size: var(--bk-views-body-font-size, 14px);
	line-height: 1.55;
	color: var(--bs-arch-grid-body, var(--bk-views-body-color, var(--bk-views-grid-body-color, var(--bs-arch-muted, #64748b))));
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	flex: 0 0 auto;
	min-height: 0;
	max-height: calc(1.55em * 3);
	word-break: break-word;
	overflow-wrap: anywhere;
}

.bs-event-grid-card__highlights {
	margin: 0;
	font-size: var(--bk-views-highlights-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.45;
	font-weight: 600;
	color: var(--bs-arch-grid-highlights-text, var(--bs-arch-muted, #64748b));
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.bs-event-grid-card__categories {
	margin: 0;
	font-size: var(--bk-views-category-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.35;
	font-weight: 600;
	color: var(--bs-arch-grid-category-text, var(--bs-arch-accent, var(--bk-btn-accent, #115e59)));
	background: var(--bs-arch-grid-category-bg, transparent);
}

.bs-event-grid-card__categories--corner {
	display: inline-flex;
	align-items: flex-start;
	gap: 0.35em;
	flex: 0 1 auto;
	max-width: min(14rem, 55%);
	margin: 0;
	text-align: right;
	align-self: center;
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
}

.bs-event-grid-card__tags {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: 0;
	max-width: min(100%, 16rem);
}

.bs-event-grid-card__tags + .bs-event-grid-card__highlights {
	margin-top: -2px;
}

.bs-booking-archive--hotel.bs-public-event-grid .bs-event-grid-card__capacity {
	display: inline-flex;
	align-items: center;
	width: fit-content;
	max-width: 100%;
	margin: 0 0 8px;
	font-family: inherit;
}

.bs-event-grid-card__title + .bs-event-grid-card__capacity {
	margin-top: 2px;
}

.bs-event-grid-card__amenities {
	margin: 0;
	font-size: var(--bk-views-amenities-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.45;
	font-weight: 600;
	color: var(--bs-arch-grid-amenities-text, var(--bs-arch-muted, #64748b));
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.bs-event-grid-card__attributes {
	margin: 0;
	font-size: var(--bk-views-amenities-font-size, var(--bk-ui-field-label-font-size));
	line-height: 1.45;
	font-weight: 700;
	color: var(--bs-arch-grid-attributes-text, var(--bs-arch-muted, #64748b));
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.bs-event-grid-card__location {
	display: inline-block;
	margin: 0;
	width: fit-content;
	max-width: 100%;
	line-height: 1.45;
	font-weight: 500;
	color: var(--bs-arch-grid-location-text, var(--bs-arch-grid-heading, var(--bs-arch-ink, #1d1d1f)));
	background: var(--bs-arch-grid-location-bg, rgba(var(--bk-btn-accent-rgb, 33, 150, 243), 0.12));
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
	vertical-align: baseline;
}

.bs-event-grid-card__location-row .bs-event-grid-card__location {
	flex: 0 1 auto;
	max-width: min(100%, 16rem);
}

@media (max-width: 600px) {
	.bs-event-list-item {
		flex-direction: column;
	}

	/* The list "with buttons" too: its row rule (per module, above) kept date and text side by side, so the text
	   column got a few characters wide (one word per line, the buttons cut off). */
	:is(.bs-booking-archive--event, .bs-booking-archive--tour, .bs-booking-archive--hotel, .bs-booking-archive--rental, .bs-booking-archive--service).bs-event-list--layout-view_button .bs-event-list-item--view-button {
		flex-direction: column;
	}

	

	

	.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__content-split,
	.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__content-split {
		flex-direction: column;
		align-items: stretch;
		gap: 20px;
	}

	.bs-booking-archive--event.bs-public-event-list
		.bs-event-list-item__content-split
		.bs-event-list-item__main,
	.bs-booking-archive--tour.bs-public-event-list
		.bs-event-list-item__content-split
		.bs-event-list-item__main {
		width: auto;
		max-width: 100%;
	}

	.bs-booking-archive--event.bs-public-event-list
		.bs-event-list-item__content-split
		> .bs-event-list-item__excerpt,
	.bs-booking-archive--tour.bs-public-event-list
		.bs-event-list-item__content-split
		> .bs-event-list-item__excerpt {
		flex: none;
		max-width: 100%;
		-webkit-line-clamp: 4;
	}

	.bs-event-list-item__media {
		width: 52px;
		height: 52px;
	}

	.bs-booking-archive--hotel.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media,
	.bs-booking-archive--rental.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media,
	.bs-booking-archive--service.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media {
		flex: 0 0 auto;
		width: 100%;
		height: clamp(140px, 42vw, 180px);
		min-height: 0;
		border-right: none;
		border-bottom: 1px solid var(--bs-arch-border, #e7e5e0);
	}

	.bs-booking-archive--event.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media,
	.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item > .bs-event-list-item__media {
		flex: 0 0 auto;
		width: 100%;
		height: clamp(140px, 42vw, 180px);
		min-height: 0;
		border-right: none;
		border-bottom: 1px solid var(--bs-arch-border, #e7e5e0);
	}

	.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__schedule--stacked,
	.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__schedule--stacked {
		flex: none;
		width: 100%;
		max-width: none;
		flex-direction: row;
		align-items: stretch;
	}

	.bs-booking-archive--event.bs-public-event-list
		.bs-event-list-item__schedule--stacked
		.bs-event-list-item__schedule-media,
	.bs-booking-archive--tour.bs-public-event-list
		.bs-event-list-item__schedule--stacked
		.bs-event-list-item__schedule-media {
		flex: 0 0 clamp(120px, 34vw, 160px);
		min-height: 0;
		border-left: 1px solid rgba(255, 255, 255, 0.14);
	}

	.bs-booking-archive--event.bs-public-event-list
		.bs-event-list-item__schedule--stacked
		.bs-event-list-item__schedule-media
		.bs-event-list-item__media,
	.bs-booking-archive--tour.bs-public-event-list
		.bs-event-list-item__schedule--stacked
		.bs-event-list-item__schedule-media
		.bs-event-list-item__media {
		border-top: none;
		min-height: 0;
	}

	.bs-event-list-item__excerpt {
		max-width: 100%;
	}

	.bs-event-list-item__date {
		max-width: none;
		flex: none;
	}

	.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__schedule,
	.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__schedule {
		flex-direction: column;
		width: 100%;
		max-width: none;
	}

	.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__schedule-time,
	.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__schedule-time {
		border-left: none;
		padding: 0 8px 10px;
		min-width: 0;
	}

	.bs-event-list-item__schedule {
		flex: none;
		max-width: none;
		width: 100%;
		flex-direction: row;
		align-items: stretch;
	}

	.bs-event-list-item__schedule .bs-event-list-item__date {
		flex: 1 1 auto;
	}

	.bs-event-list-item__schedule-time {
		flex: 0 0 auto;
		border-top: none;
		border-left: 1px solid var(--bs-arch-border, #e7e5e0);
		display: flex;
		align-items: center;
		justify-content: center;
		padding: 10px 12px;
		min-width: 5.5rem;
	}

	.bs-booking-archive--event.bs-public-event-list .bs-event-list-item__schedule .bs-event-list-item__date,
	.bs-booking-archive--tour.bs-public-event-list .bs-event-list-item__schedule .bs-event-list-item__date {
		flex: 0 0 auto;
		width: 100%;
		padding: 12px 14px;
	}

	.bs-public-event-grid .events-grid,
	.bs-public-event-grid .bs-booking-archive__grid {
		grid-template-columns: 1fr;
		gap: 18px;
	}

	.bs-public-event-list .list-filters,
	.bs-public-event-grid .grid-filters {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		overflow-x: auto;
		overflow-y: visible;
	}

	.bs-public-event-grid.bs-booking-archive--tour .grid-filters {
		gap: 10px;
		padding: 10px 12px;
	}

	.bs-public-event-list .list-filters input.bs-event-archive-search,
	.bs-public-event-list .list-filters input.search-filter {
		flex: 1 1 auto;
		min-width: 0;
		max-width: min(240px, 100%);
	}

	.bs-booking-archive__sort-wrap,
	.bs-booking-archive__filter-wrap {
		flex: 0 1 auto;
		min-width: 0;
		width: auto;
		max-width: min(100%, 280px);
	}

	.bs-public-event-grid .grid-filters > .bs-booking-archive__sort-wrap {
		max-width: min(100%, 320px);
	}

	.bs-public-event-list .list-filters select:not(.bs-frontend-select__native),
	.bs-public-event-grid .grid-filters select:not(.bs-frontend-select__native),
	.bs-booking-archive__sort:not(.bs-frontend-select__native),
	.bs-booking-archive__date-filter:not(.bs-frontend-select__native) {
		max-width: min(220px, 100%);
		min-width: 160px;
		flex: 0 0 auto;
		width: 100%;
}

	.bs-event-grid-card:hover {
		transform: none;
	}
}

/* Grid cards inside linked classic layout: keep Views title/body colors (link uses color:inherit). */
.bs-public-event-grid .bs-event-grid-card__link .bs-event-grid-card__title {
	color: var(--bs-arch-grid-heading, var(--bk-views-heading-color, var(--bk-views-grid-heading-color, var(--bk-heading-color, var(--bs-arch-ink, #0f1419)))));
}

.bs-public-event-grid .bs-event-grid-card__link .bs-event-grid-card__excerpt {
	color: var(--bs-arch-grid-body, var(--bk-views-body-color, var(--bk-views-grid-body-color, var(--bk-body-color, var(--bs-arch-muted, #64748b)))));
}

/*
 * Booking wizards (tour / event classic, tour sidebar calendar, archive book popups): today is not a choice, so it
 * gets a light cell and its day number in a small "Today color" badge instead of the archive's filled cell, which
 * looked like a selected date (and left a white number on a white cell in the sidebar calendar).
 */
.booking-steps-wrapper .bs-public-event-calendar .calendar-day.today,
.booking-steps-wrapper .bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.today {
	background: linear-gradient(rgba(var(--bs-cal-today-rgb), 0.06), rgba(var(--bs-cal-today-rgb), 0.06)), var(--bs-cal-bg);
	color: inherit;
}

.booking-steps-wrapper .bs-public-event-calendar .calendar-day.today .calendar-day-number,
.booking-steps-wrapper .bs-public-event-calendar.bs-public-event-calendar--tour-sidebar-mini .calendar-day.today .calendar-day-number {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.65rem;
	min-height: 1.65rem;
	padding: 0 0.3rem;
	border-radius: 999px;
	box-sizing: border-box;
	background: var(--bs-cal-today-badge-bg);
	color: var(--bs-cal-today-badge-text) !important;
}

/* Several start times of one event / tour on a day: each button shows its time only (event.js, tour-wizard.js). */
.bs-public-event-calendar .bs-pec-event-link.bs-pec-event-link--time-only .bs-pec-event-link__time,
.tour-booking.booking-steps-wrapper .tour-wizard-calendar-wrap .bs-pec-event-link.bs-pec-event-link--time-only .bs-pec-event-link__time {
	font-weight: 600;
	opacity: 1;
}

/* A day with many start times: the list had max-height 70px and its column flex shrank the buttons to 15px
   (unreadable). Buttons keep their height and a list of times shows them all; the day cell grows instead. */
.bs-public-event-calendar .bs-pec-events > .bs-pec-event-link {
	flex-shrink: 0;
}

.bs-public-event-calendar .bs-pec-events:has(> .bs-pec-event-link--time-only) {
	max-height: none;
	overflow: visible;
}

/*
 * Toolbar in a narrow column (a theme's 645 px content width, a sidebar): search and up to three filters
 * keep one row by letting the dropdowns shrink below their 160 px minimum. Phones (< 480 px) still wrap.
 */
.bs-public-event-list .list-filters,
.bs-public-event-grid .grid-filters,
.bs-booking-archive-calendar .calendar-filters {
	container-type: inline-size;
}

@container (min-width: 480px) and (max-width: 860px) {
	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) .bs-booking-archive__toolbar:not(:has(.bs-booking-archive__attr-filters)) > .bs-booking-archive__search-wrap {
		flex: 1 1 120px;
		min-width: 0;
	}

	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) .bs-booking-archive__toolbar:not(:has(.bs-booking-archive__attr-filters)) > :is(.bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap) {
		flex: 1 1 120px;
		min-width: 0;
		max-width: 200px;
	}

	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) .bs-booking-archive__toolbar:not(:has(.bs-booking-archive__attr-filters)) :is(select, .bs-frontend-select__trigger, input.bs-event-archive-search, input.search-filter) {
		min-width: 0;
		max-width: 100%;
		text-overflow: ellipsis;
		white-space: nowrap;
		overflow: hidden;
	}
}

/* "Sold out" / "Cancelled" times in the booking calendars (Booking rules → Show full times as Sold out, and
   cancelled times): shown, not pickable (event-tour-double-booking.js marks them). */
.bs-public-event-calendar .bs-pec-event-link.bs-pec-event-link--pick.is-unavailable,
.bs-public-event-calendar .bs-pec-event-link.bs-pec-event-link--pick.is-unavailable:hover {
	opacity: 1;
	cursor: not-allowed;
	background: var(--bs-cal-item-bg);
	color: var(--bs-cal-item-text);
	border-color: transparent;
}

/* The name and time fade; the "Sold out" / "Cancelled" line stays readable. */
.bs-public-event-calendar .bs-pec-event-link.is-unavailable :is(.bs-pec-event-link__title, .bs-pec-event-link__time) {
	opacity: 0.5;
}

.bs-public-event-calendar .bs-pec-event-link.is-unavailable .bs-pec-event-link__time {
	text-decoration: line-through;
}

.bs-public-event-calendar .bs-pec-event-link__status {
	display: block;
	width: 100%;
	font-size: 0.85em;
	font-weight: 700;
	color: var(--bs-cal-item-text, inherit);
}

.bs-public-event-calendar .calendar-day.is-unavailable {
	cursor: not-allowed;
}

.bs-public-event-calendar .calendar-day.is-unavailable .calendar-day-number {
	text-decoration: line-through;
	opacity: 0.6;
}

/* A cancelled event / tour in the lists, grids and archive calendar (its Cancellation box). */
.bs-archive-cancelled-badge {
	display: inline-block;
	margin-right: 0.35em;
	padding: 0.1em 0.55em;
	border: 1px solid currentColor;
	border-radius: var(--bk-ui-chip-category-radius, 999px);
	font-size: var(--bk-ui-chip-category-font-size, 0.75em);
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	vertical-align: middle;
	color: var(--bs-arch-list-category-text, var(--bk-btn-accent, #b42318));
}

:is(.bs-event-list-row, .bs-event-grid-card).is-cancelled :is(.bs-event-list-item__title, .bs-event-grid-card__title) {
	opacity: 0.75;
}

.bs-public-event-calendar .bs-pec-event-link.is-cancelled :is(.bs-pec-event-link__title, .bs-pec-event-link__time) {
	opacity: 0.6;
}

/* Phones: the search and every filter of the archive toolbar on a row of its own, full width. The "group the
   filters on the right" margin (above) pushed only the first filter right once the row wrapped. */
@media (max-width: 600px) {
	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > :is(.bs-booking-archive__search-wrap, .bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap, .bs-booking-archive__attr-filters) {
		flex: 1 1 100%;
		width: 100%;
		max-width: 100%;
		margin-left: 0;
	}

	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) .bs-booking-archive__toolbar :is(input.bs-event-archive-search, input.search-filter, .bs-select-wrap, select, .bs-frontend-select__trigger) {
		flex: 1 1 auto;
		width: 100%;
		max-width: 100%;
	}
}

/* Phones: "Today" on a row of its own above "← October 2026 →". In one row the month sat against the left arrow
   (the three columns had no room for a gap, and a longer month did not fit at all). */
@media (max-width: 600px) {
	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation {
		grid-template-columns: auto minmax(0, 1fr) auto;
		grid-template-areas:
			"today today today"
			"prev month next";
		column-gap: 8px;
		row-gap: 8px;
		height: auto;
	}

	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation__left {
		display: contents;
	}

	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation .today-month {
		grid-area: today;
		justify-self: start;
	}

	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation .prev-month {
		grid-area: prev;
	}

	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation .current-month {
		grid-area: month;
	}

	.bs-public-event-calendar:not(.bs-public-event-calendar--tour-sidebar-mini) .calendar-navigation__right {
		grid-area: next;
	}
}

/* Archive calendar and the calendar of all events in [kezara_book_event] (--overview) on phones: a dot on days
   with events, the picked day's events listed under the calendar with their whole name and time (renderDayList in
   booking-modules.js and wizards/event.js). The names in the days were cut to a few letters. */
.bs-pec-day-list {
	display: none;
}

@media (max-width: 600px) {
	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .calendar-day .bs-pec-events {
		display: none;
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .calendar-day.has-schedule {
		position: relative;
		cursor: pointer;
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .calendar-day.has-schedule::after {
		content: "";
		position: absolute;
		left: 50%;
		bottom: 8px;
		width: 7px;
		height: 7px;
		border-radius: 50%;
		background: var(--bs-cal-today-badge-bg, var(--bk-btn-accent, currentColor));
		transform: translateX(-50%);
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .calendar-day.is-picked-day {
		box-shadow: inset 0 0 0 2px var(--bs-cal-item-selected, var(--bs-cal-item-bg));
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .bs-pec-day-list {
		display: block;
		margin-top: 12px;
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .bs-pec-day-list__date {
		margin: 0 0 8px;
		font-weight: 600;
		color: var(--bk-heading-color, inherit);
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .bs-pec-day-list__events {
		display: flex;
		flex-direction: column;
		gap: 8px;
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .bs-pec-day-list .bs-pec-event-link {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 2px;
		padding: 10px 12px;
		white-space: normal;
		font-size: 0.95rem;
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .bs-pec-day-list :is(.bs-pec-event-link__title, .bs-pec-event-link__time) {
		font-size: inherit;
	}

	:is(.bs-public-event-calendar--browse-archive, .bs-public-event-calendar--overview) .bs-pec-day-list .bs-pec-event-link__title {
		display: block;
		-webkit-line-clamp: unset;
		overflow: visible;
	}
}

/* The booking calendar's list: each event in a box with its name and time on the left (the buttons in the days
   have no border and centre the time). */
@media (max-width: 600px) {
	.event-booking .event-wizard-calendar-wrap .bs-public-event-calendar--overview .bs-pec-day-list .bs-pec-event-link.bs-pec-event-link--pick:not(.is-selected-event-slot) {
		border-color: var(--bk-field-border, #dcdcde);
	}

	.event-booking .event-wizard-calendar-wrap .bs-public-event-calendar--overview .bs-pec-day-list .bs-pec-event-link.bs-pec-event-link--pick {
		width: 100%;
		text-align: left;
		border-radius: var(--bk-ui-radius, 8px);
	}

	.event-booking .event-wizard-calendar-wrap .bs-public-event-calendar--overview .bs-pec-day-list .bs-pec-event-link--pick .bs-pec-event-link__time {
		align-self: flex-start;
	}
}

/* Archive toolbars (list, grid, calendar, every module): the search and filters share the toolbar's whole width,
   which is the list's, so a toolbar with only the search has one search field as wide as the list, instead of
   short fields with empty space beside them. The rules above that cap each field's width or push the filters to
   the right are undone here (same specificity, later). The basis is small enough for five fields (search,
   category, tag, dates, sort) on one row of a normal content width; at 180 px four already wrapped at 726 px.
   Phones stack them full width (above); there the toolbar is a column, so a flex basis would be a height. */
@media (min-width: 601px) {
	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > :is(.bs-booking-archive__search-wrap, .bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap, .bs-booking-archive__attr-filters) {
		flex: 1 1 120px;
		max-width: none;
		margin-left: 0;
		margin-right: 0;
	}

	/* The sort holds the longest text ("Date (earliest first)"), which a native select cannot cut with an ellipsis,
	   so it ran under the caret when the field was as narrow as the others. */
	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > .bs-booking-archive__sort-wrap {
		flex-basis: 175px;
	}

	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > :is(.bs-booking-archive__search-wrap, .bs-booking-archive__filter-wrap, .bs-booking-archive__sort-wrap) :is(input.bs-event-archive-search, input.search-filter, input.bs-booking-archive__search, .bs-select-wrap, select, .bs-frontend-select, .bs-frontend-select__trigger) {
		flex: 1 1 auto;
		width: 100%;
		max-width: none;
	}
}

/* Attribute filters (rentals, services: Size, Seats …) are toolbar fields like the others and share its width with
   them. In their own non-wrapping row the fields were narrower than their 160 px controls, which overlapped the
   next filter ("Antal platser" showed "al p"). */
:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > .bs-booking-archive__attr-filters {
	display: contents;
}

:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > .bs-booking-archive__attr-filters > .bs-booking-archive__attr-filter-field {
	flex: 1 1 140px;
	min-width: 0;
	max-width: none;
	align-self: flex-end;
}

:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > .bs-booking-archive__attr-filters > .bs-booking-archive__attr-filter-field :is(input.bs-booking-archive__attr-filter, select.bs-booking-archive__attr-filter, .bs-select-wrap, .bs-frontend-select, .bs-frontend-select__trigger) {
	flex: 1 1 auto;
	width: 100%;
	min-width: 0;
	max-width: none;
}

@media (max-width: 600px) {
	:is(.bs-public-event-list, .bs-public-event-grid, .bs-booking-archive-calendar) :is(.list-filters, .grid-filters, .calendar-filters).bs-booking-archive__toolbar > .bs-booking-archive__attr-filters > .bs-booking-archive__attr-filter-field {
		flex: 1 1 100%;
		width: 100%;
	}
}
