/* Progressive enhancement: the ordinary WooCommerce form always remains available. */
.ws-booking { display: none; }
@media (max-width: 799px) {
	.ws-booking:not([hidden]) { display: block; color: #202020; font-family: "Open Sans", sans-serif; }
	.ws-booking *, .ws-booking *::before, .ws-booking *::after { box-sizing: border-box; }
	.ws-booking [hidden] { display: none !important; }
	.ws-booking button { font-family: inherit; cursor: pointer; }
	.ws-booking__bar, .ws-booking__dialog {
		position: fixed; inset: auto 0 0; z-index: 100001;
		width: 100%; margin: 0; border: 0; border-radius: 10px 10px 0 0;
		box-shadow: 0 -4px 8px rgb(0 0 0 / 25%);
		transform: translateY(calc(100% + 12px)); visibility: hidden;
		transition: transform .25s ease, visibility .25s;
	}
	.ws-booking.is-visible .ws-booking__bar,
	.ws-booking.is-open .ws-booking__dialog { transform: translateY(0); visibility: visible; }
	.ws-booking__bar {
		height: calc(50px + env(safe-area-inset-bottom, 0px));
		padding: 14px 44px calc(8px + env(safe-area-inset-bottom, 0px));
		background: #f3f3f3; color: #f36405; font-size: 16px; line-height: 28px; font-weight: 700; text-align: center;
	}
	.ws-booking--anchor .ws-booking__bar {
		display: flex; align-items: center; justify-content: center;
		padding: 10px 20px calc(10px + env(safe-area-inset-bottom, 0px));
		line-height: 30px; text-decoration: none;
	}
	.ws-booking--anchor .ws-booking__bar:is(:hover, :focus-visible) { color: #f36405; background: #f3f3f3; text-decoration: underline; }
	.ws-booking__handle { position: absolute; top: 8px; left: calc(50% - 20px); width: 40px; height: 3px; background: url('../icons/sheet-handle.svg') center / 40px 3px no-repeat; }
	.ws-booking__backdrop { position: fixed; inset: 0; z-index: 100000; background: rgb(32 32 32 / 59%); }
	.ws-booking__dialog {
		display: flex; flex-direction: column; overflow: hidden;
		/* Visibility must be immediate so focus can enter during the slide-in. */
		transition: transform .25s ease;
		max-height: min(calc(474px + env(safe-area-inset-bottom, 0px)), 85vh);
		max-height: min(calc(474px + env(safe-area-inset-bottom, 0px)), 85dvh);
		background: #fff; padding: 0 0 env(safe-area-inset-bottom, 0px);
	}
	.ws-booking__heading { position: relative; flex: 0 0 50px; background: #f3f3f3; text-align: center; }
	.ws-booking__heading h2 { margin: 0; padding: 15px 44px 7px; color: #f36405; font-size: 16px; line-height: 28px; font-weight: 700; letter-spacing: 0; }
	.ws-booking__close { position: absolute; top: 3px; right: 3px; display: grid; place-items: center; width: 44px; height: 44px; border: 0; padding: 0; background: transparent; }
	.ws-booking__close img { display: block; width: 19px; height: 17px; }
	.ws-booking__dates { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 18px 20px 6px; scrollbar-width: thin; }
	.ws-booking__date { display: grid; grid-template-columns: 12px minmax(0, 1fr) auto; align-items: center; gap: 0 17px; min-height: 37px; margin: 0; color: #202020; cursor: pointer; font-size: 14px; line-height: 1.4; font-weight: 400; }
	.ws-booking__date input { appearance: none; -webkit-appearance: none; width: 10px; height: 10px; padding: 0; margin: 0; border: 1px solid currentColor; border-radius: 50%; background: #fff; color: inherit; cursor: inherit; }
	.ws-booking__date input:checked { border-color: #f36405; background: #f36405; box-shadow: inset 0 0 0 2px #fff; }
	.ws-booking__date-label { padding-block: 7px; overflow-wrap: anywhere; }
	.ws-booking__stock { font-size: 12px; line-height: 1.4; }
	.ws-booking__stock:empty { display: none; }
	.ws-booking__stock.is-last-place { color: #fc0808; }
	.ws-booking__date.is-unavailable { color: #959797; cursor: default; }
	.ws-booking__footer { flex: 0 0 auto; padding: 10px 20px 20px; text-align: center; }
	.ws-booking__reserve { min-width: 172px; min-height: 37px; margin: 0; padding: 9px 20px; border: 0; border-radius: 30px; background: #f36405; color: #fff; font-size: 14px; line-height: 19px; font-weight: 700; }
	.ws-booking__reserve:disabled { opacity: .45; cursor: default; }
	.ws-booking__message { margin: 0 0 10px; font-size: 13px; line-height: 1.4; }
	.ws-booking__message:empty { display: none; }
	.ws-booking :focus-visible { outline: 2px solid #007ba4; outline-offset: 3px; }
	body.ws-booking-visible #page { padding-bottom: calc(50px + env(safe-area-inset-bottom, 0px)); }
	/* Keep product-provided features in two equal columns without clipping long text. */
	.wspinart-course-features--mobile-top, .wspinart-course-features--bottom { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.wspinart-course-features li > span:last-child { min-width: 0; overflow-wrap: anywhere; }
}
@media (max-width: 379px) {
	.ws-booking__date { column-gap: 12px; }
	.ws-booking__dates { padding-inline: 20px; }
}
@media (prefers-reduced-motion: reduce) {
	.ws-booking__bar, .ws-booking__dialog { transition: none; }
}
@media (forced-colors: active) {
	.ws-booking__date input { appearance: auto; }
	.ws-booking__reserve, .ws-booking__bar { border: 1px solid ButtonText; }
}
