.booking {
	--booking-shadow: 0 1.875rem 4.375rem color-mix(in srgb, var(--color-shadow) 30%, transparent);
	width: min(32.5rem, calc(100% - var(--space-12)));
	max-height: calc(100% - var(--space-12));
	padding: var(--space-10) var(--space-10) var(--space-10);
	overflow: auto;
	background: var(--color-surface);
	border: 0;
	border-radius: var(--radius-2xl);
	box-shadow: var(--booking-shadow);
	color: var(--color-text);
}

.booking::backdrop {
	background: var(--color-overlay);
}

.booking[open] {
	animation: booking-in var(--duration-base) var(--ease-out);
}

.booking__close {
	position: absolute;
	top: var(--space-5);
	right: var(--space-5);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	background: var(--color-bg-soft);
	border: 0;
	border-radius: 50%;
	color: var(--color-accent-strong);
	transition: background-color var(--duration-fast) ease, transform 0.08s ease;
}

.booking__close-icon {
	width: 1.25rem;
	height: 1.25rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.4;
	stroke-linecap: round;
}

.booking__title {
	padding-right: var(--space-12);
	margin-bottom: var(--space-2);
	color: var(--color-text-heading);
	font-size: var(--text-2xl);
	font-weight: var(--font-weight-extrabold);
	line-height: var(--leading-snug);
}

.booking__lead {
	margin-bottom: var(--space-6);
	color: var(--color-text-muted);
	line-height: var(--leading-relaxed);
	text-wrap: pretty;
}

.booking__demo {
	margin-bottom: var(--space-6);
	padding: var(--space-3) var(--space-4);
	background: var(--color-note);
	border-radius: var(--radius-lg);
	color: var(--color-text-body);
	font-size: var(--fs-small);
	line-height: var(--leading-normal);
}

.booking__fields {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
}

.booking__row {
	display: grid;
	grid-template-columns: 7rem 1fr;
	gap: var(--space-3);
}

.field {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
}

.field__label {
	color: var(--color-accent-strong);
	font-size: var(--fs-small);
	font-weight: var(--font-weight-bold);
}

.field__input {
	width: 100%;
	min-height: 3.25rem;
	padding: var(--space-3) var(--space-4);
	background: var(--color-bg-soft);
	border: 1.5px solid var(--color-line);
	border-radius: var(--radius-lg);
	color: var(--color-text-strong);
	font-size: var(--fs-body);
	outline: none;
	appearance: none;
	transition: border-color var(--duration-fast) ease, box-shadow var(--duration-fast) ease;
}

.field__input::placeholder {
	color: var(--color-text-faint);
}

.field__input:focus {
	border-color: var(--color-accent);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 16%, transparent);
}

.field__input[aria-invalid="true"] {
	border-color: var(--color-danger);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-danger) 14%, transparent);
}

.field__select {
	position: relative;
	display: block;
}

.field__select::after {
	content: "";
	position: absolute;
	top: 50%;
	right: var(--space-4);
	width: 0.5rem;
	height: 0.5rem;
	margin-top: -0.375rem;
	border-right: 2px solid var(--color-accent-strong);
	border-bottom: 2px solid var(--color-accent-strong);
	transform: rotate(45deg);
	pointer-events: none;
}

.field__select .field__input {
	padding-right: var(--space-10);
	cursor: pointer;
}

@supports (appearance: base-select) {
	.field__select::after {
		display: none;
	}

	.field__select select.field__input {
		appearance: base-select;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--space-3);
		padding-right: var(--space-4);
	}

	select.field__input::picker-icon {
		content: "";
		flex: none;
		width: 0.5rem;
		height: 0.5rem;
		margin-top: -0.25rem;
		border-right: 2px solid var(--color-accent-strong);
		border-bottom: 2px solid var(--color-accent-strong);
		rotate: 45deg;
		transition: rotate var(--duration-fast) ease;
	}

	select.field__input:open::picker-icon {
		margin-top: 0.25rem;
		rotate: 225deg;
	}

	select.field__input::picker(select) {
		appearance: base-select;
		min-width: anchor-size(width);
		margin-top: var(--space-2);
		padding: var(--space-2);
		background: var(--color-surface);
		border: 1.5px solid var(--color-line);
		border-radius: var(--radius-lg);
		box-shadow: var(--shadow-lg);
	}

	select.field__input option {
		display: flex;
		align-items: center;
		justify-content: flex-start;
		gap: var(--space-3);
		padding: var(--space-3) var(--space-4);
		border-radius: var(--radius-md);
		color: var(--color-text-strong);
		font-size: var(--fs-body);
		cursor: pointer;
	}

	select.field__input option:checked {
		background: var(--color-accent-soft);
		color: var(--color-accent-strong);
		font-weight: var(--font-weight-bold);
	}

	select.field__input option::checkmark {
		order: 1;
		margin-left: auto;
		color: var(--color-accent-strong);
	}

	select.field__input option:focus-visible {
		background: var(--color-bg-soft);
		outline: 2px solid var(--color-focus);
		outline-offset: -2px;
	}
}

@media (hover: hover) {
	@supports (appearance: base-select) {
		select.field__input option:hover {
			background: var(--color-bg-soft);
			color: var(--color-accent-strong);
		}
	}
}

.booking__trap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.consent {
	display: flex;
	align-items: flex-start;
	gap: var(--space-3);
	margin-top: var(--space-5);
	color: var(--color-text-muted);
	font-size: var(--fs-small);
	line-height: var(--leading-normal);
	cursor: pointer;
}

.consent__box {
	flex: none;
	width: 1.25rem;
	height: 1.25rem;
	margin: 0.125rem 0 0;
	background: var(--color-bg-soft);
	border: 1.5px solid var(--color-line);
	border-radius: var(--radius-sm);
	appearance: none;
	cursor: pointer;
	transition: background-color var(--duration-fast) ease, border-color var(--duration-fast) ease;
}

.consent__box:checked {
	background: var(--color-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 10.5l3.2 3.2L15 7' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 100% no-repeat;
	border-color: var(--color-accent);
}

.consent__box[aria-invalid="true"] {
	border-color: var(--color-danger);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-danger) 14%, transparent);
}

.consent__line {
	display: block;
}

.consent__text a {
	color: var(--color-accent-strong);
	font-weight: var(--font-weight-bold);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.booking__message {
	min-height: calc(2 * 1.5em);
	margin: var(--space-2) 0;
	color: var(--color-danger);
	font-size: var(--fs-small);
	font-weight: var(--font-weight-bold);
	line-height: 1.5;
}

.booking__submit {
	width: 100%;
}

.booking__submit[aria-busy="true"] {
	cursor: progress;
}

.booking__done {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-2);
}

.booking__done[hidden] {
	display: none;
}

@keyframes booking-in {
	from {
		opacity: 0;
		transform: translateY(1rem) scale(0.98);
	}

	to {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
}

.booking__close:active {
	transform: scale(0.94);
}

@media (hover: hover) {
	.booking__close:hover {
		background: var(--color-accent-soft);
	}

	.consent__box:hover {
		border-color: var(--color-accent);
	}
}

@media (max-width: 560px) {
	.booking {
		width: calc(100% - var(--space-6));
		max-height: calc(100% - var(--space-6));
		padding: var(--space-8) var(--space-5) var(--space-6);
	}

	.booking__row {
		grid-template-columns: 1fr;
	}
}
