.pat-booking {
	--pat-accent: #77a6f7;
	--pat-strong: #3b6fcf;
	--pat-tint: #eaf1fe;
	--pat-line: #dde4ef;
	--pat-ink: #222;
	--pat-muted: #6b7280;
	--pat-error: #c0392b;
	box-sizing: border-box;
	margin: 24px 0;
	padding: 20px;
	border: 1px solid var(--pat-line);
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 8px 28px rgba(31, 60, 120, 0.08);
	color: var(--pat-ink);
	font-size: 15px;
	line-height: 1.4;
}

.pat-booking *,
.pat-booking *::before,
.pat-booking *::after {
	box-sizing: border-box;
}

.pat-per {
	font-size: 0.55em;
	font-weight: 400;
	letter-spacing: 0;
	color: var(--pat-muted);
	text-transform: none;
}

.pat-booking .pat-step {
	margin: 0 0 20px;
	padding: 0;
	border: 0;
	background: transparent;
	min-width: 0;
}

.pat-booking .pat-step__title {
	display: flex;
	align-items: center;
	gap: 9.6px;
	margin: 0 0 11.2px;
	padding: 0;
	background: transparent;
	font-family: "T.H. Alphabet Soup", sans-serif;
	font-size: 16.8px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: 0.02em;
	color: var(--pat-ink);
}

.pat-step__title em {
	font-family: inherit;
	font-size: 0.8em;
	font-style: normal;
	color: var(--pat-muted);
}

.pat-step__num {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 27.2px;
	height: 27.2px;
	border-radius: 50%;
	background: var(--pat-accent);
	color: #fff;
	font-size: 14.4px;
	line-height: 1;
}

.pat-step--invalid .pat-step__title {
	color: var(--pat-error);
}

.pat-step--invalid .pat-calendar,
.pat-step--invalid .pat-slots,
.pat-step--invalid .pat-date {
	border-color: var(--pat-error);
}

.pat-booking .pat-date,
.pat-booking .pat-ship {
	display: block;
	width: 100%;
	margin: 0;
	padding: 11.2px 13.6px;
	border: 1px solid var(--pat-line);
	border-radius: 10px;
	background: #fff;
	color: var(--pat-ink);
	font: inherit;
}

.pat-booking .pat-ship:focus,
.pat-booking .pat-date:focus {
	outline: 2px solid var(--pat-accent);
	outline-offset: 1px;
}

.pat-js .pat-date {
	display: none;
}

/* Calendrier */

.pat-calendar {
	padding: 12px;
	border: 1px solid var(--pat-line);
	border-radius: 12px;
	background: #fbfcfe;
}

.pat-cal__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 8px;
}

.pat-cal__title {
	font-weight: 700;
}

.pat-booking .pat-cal__nav {
	width: 35.2px;
	height: 35.2px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--pat-strong);
	font-size: 24px;
	line-height: 1;
	cursor: pointer;
}

.pat-booking .pat-cal__nav:hover:not(:disabled) {
	background: var(--pat-tint);
}

.pat-booking .pat-cal__nav:disabled {
	color: #c4cbd6;
	cursor: default;
}

.pat-cal__grid {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 3px;
	text-align: center;
}

.pat-cal__dow {
	padding: 3.2px 0;
	font-size: 12px;
	font-weight: 700;
	color: var(--pat-muted);
}

.pat-booking .pat-day {
	aspect-ratio: 1;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 1px solid transparent;
	border-radius: 50%;
	background: transparent;
	color: var(--pat-ink);
	font: inherit;
	font-size: 14.4px;
	cursor: pointer;
}

.pat-booking .pat-day:hover:not(:disabled) {
	background: var(--pat-tint);
}

.pat-booking .pat-day:disabled {
	color: #c4cbd6;
	cursor: default;
}

.pat-booking .pat-day--today {
	border-color: var(--pat-accent);
}

.pat-booking .pat-day[aria-pressed="true"] {
	background: var(--pat-strong);
	border-color: var(--pat-strong);
	color: #fff;
	font-weight: 700;
}

/* Heure */

.pat-tabs {
	display: flex;
	gap: 4px;
	margin-bottom: 9.6px;
	padding: 4px;
	border-radius: 999px;
	background: var(--pat-tint);
}

.pat-tabs[hidden] {
	display: none;
}

.pat-booking .pat-tab {
	flex: 1;
	margin: 0;
	padding: 7.2px 8px;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--pat-strong);
	font: inherit;
	font-weight: 700;
	cursor: pointer;
}

.pat-booking .pat-tab[aria-pressed="true"] {
	background: #fff;
	box-shadow: 0 1px 4px rgba(31, 60, 120, 0.18);
}

.pat-slots {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(83.2px, 1fr));
	gap: 6px;
	margin-bottom: 8px;
}

.pat-slots[hidden] {
	display: none;
}

.pat-slot {
	position: relative;
	display: block;
	margin: 0;
	cursor: pointer;
}

.pat-slot input {
	position: absolute;
	inset: 0;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.pat-slot span {
	display: block;
	padding: 8.8px 4px;
	border: 1px solid var(--pat-line);
	border-radius: 10px;
	background: #fff;
	text-align: center;
	font-size: 14.4px;
	white-space: nowrap;
}

.pat-slot:hover span {
	border-color: var(--pat-accent);
	background: var(--pat-tint);
}

.pat-slot input:checked + span {
	border-color: var(--pat-strong);
	background: var(--pat-strong);
	color: #fff;
	font-weight: 700;
}

.pat-slot input:focus-visible + span {
	outline: 2px solid var(--pat-accent);
	outline-offset: 2px;
}

/* Personnes */

.pat-stepper {
	display: flex;
	align-items: center;
	gap: 8px;
}

.pat-booking .pat-stepper__btn {
	display: none;
	width: 41.6px;
	height: 41.6px;
	margin: 0;
	padding: 0;
	border: 1px solid var(--pat-line);
	border-radius: 50%;
	background: #fff;
	color: var(--pat-strong);
	font-size: 22.4px;
	line-height: 1;
	cursor: pointer;
}

.pat-js .pat-stepper__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.pat-booking .pat-stepper__btn:hover {
	border-color: var(--pat-accent);
	background: var(--pat-tint);
}

.pat-booking .pat-qty {
	width: 64px;
	height: 41.6px;
	margin: 0;
	padding: 0 4px;
	border: 1px solid var(--pat-line);
	border-radius: 10px;
	background: #fff;
	color: var(--pat-ink);
	font: inherit;
	font-size: 17.6px;
	font-weight: 700;
	text-align: center;
	-moz-appearance: textfield;
}

.pat-qty::-webkit-outer-spin-button,
.pat-qty::-webkit-inner-spin-button {
	margin: 0;
	-webkit-appearance: none;
}

.pat-stepper__unit {
	color: var(--pat-muted);
}

/* Récapitulatif */

.pat-summary {
	margin: 0 0 16px;
	padding: 13.6px 16px;
	border-radius: 12px;
	background: var(--pat-tint);
}

.pat-summary__row,
.pat-summary__total {
	display: flex;
	justify-content: space-between;
	gap: 16px;
}

.pat-summary__row {
	padding: 3.2px 0;
}

.pat-summary__row span {
	color: var(--pat-muted);
}

.pat-summary__row strong {
	text-align: right;
	font-weight: 700;
}

.pat-summary .pat-empty {
	color: var(--pat-muted);
	font-weight: 400;
}

.pat-summary__total {
	align-items: baseline;
	margin-top: 8px;
	padding-top: 9.6px;
	border-top: 1px solid var(--pat-line);
	font-family: "T.H. Alphabet Soup", sans-serif;
}

.pat-summary__total span {
	font-size: 16.8px;
}

.pat-summary__total strong {
	font-size: 24px;
	font-weight: 400;
}

.pat-error {
	margin: 0 0 14.4px;
	padding: 9.6px 13.6px;
	border-left: 4px solid var(--pat-error);
	border-radius: 6px;
	background: #fdecea;
	color: var(--pat-error);
}

.pat-error[hidden] {
	display: none;
}

.pat-booking .pat-submit {
	display: block;
	width: 100%;
	margin: 0;
	padding: 15.2px 16px;
	font-size: 17.6px;
	text-align: center;
	cursor: pointer;
}

.pat-booking .pat-submit:disabled {
	opacity: 0.7;
	cursor: progress;
}

@media (max-width: 380px) {
	.pat-booking {
		padding: 16px;
	}
}
