/* ============================================================
   LA MAISON SPA — Booking flow
   Premium aesthetic. No frameworks. Pure CSS.
   ============================================================ */

.lms-booking {
	max-width: 880px;
	margin: 0 auto;
	font-family: var(--lms-body);
	color: var(--lms-ink);
}

/* ============================================================
   Step indicator — Roman numerals, gold underline
   ============================================================ */
.lms-booking__steps {
	display: flex;
	list-style: none;
	padding: 0;
	margin: 0 0 4rem;
	border-top: 1px solid var(--lms-line);
	border-bottom: 1px solid var(--lms-line);
}
.lms-booking__steps li {
	flex: 1;
	padding: 1.5rem 1rem;
	text-align: center;
	font-size: var(--lms-step--1);
	letter-spacing: .28em;
	text-transform: uppercase;
	color: var(--lms-ink-muted);
	position: relative;
	transition: color .5s var(--lms-ease);
}
.lms-booking__steps li:not(:last-child)::after {
	content: "";
	position: absolute;
	right: 0; top: 50%;
	width: 1px; height: 40%;
	background: var(--lms-line);
	transform: translateY(-50%);
}
.lms-booking__step-num {
	display: block;
	font-family: var(--lms-display);
	font-style: italic;
	font-size: 1.4rem;
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--lms-accent-warm);
	margin-bottom: .35rem;
	transition: color .5s var(--lms-ease);
}
.lms-booking__steps li.is-active {
	color: var(--lms-primary);
}
.lms-booking__steps li.is-active .lms-booking__step-num,
.lms-booking__steps li.is-done .lms-booking__step-num {
	color: var(--lms-primary);
}
.lms-booking__steps li.is-active::before {
	content: "";
	position: absolute;
	left: 50%; bottom: -1px;
	transform: translateX(-50%);
	width: 60px; height: 1px;
	background: var(--lms-primary);
	animation: lmsGrowLine .6s var(--lms-ease) both;
}
@keyframes lmsGrowLine {
	from { width: 0; }
	to { width: 60px; }
}

/* ============================================================
   Step container
   ============================================================ */
.lms-booking__step {
	display: none;
	border: 0;
	padding: 0;
	margin: 0;
}
.lms-booking__step.is-active {
	display: block;
	animation: lmsStepFadeIn .7s var(--lms-ease) both;
}
@keyframes lmsStepFadeIn {
	from { opacity: 0; transform: translateY(16px); }
	to { opacity: 1; transform: none; }
}

.lms-booking__step-head {
	text-align: center;
	margin-bottom: 3rem;
}
.lms-booking__step-eyebrow {
	display: inline-block;
	font-size: var(--lms-step--2);
	letter-spacing: .36em;
	text-transform: uppercase;
	color: var(--lms-primary);
	margin-bottom: 1rem;
	font-weight: 500;
}
.lms-booking__step-eyebrow::before,
.lms-booking__step-eyebrow::after {
	content: "";
	display: inline-block;
	width: 30px; height: 1px;
	background: var(--lms-accent-warm);
	vertical-align: middle;
	margin: 0 1rem;
}
.lms-booking__step-title {
	font-family: var(--lms-display);
	font-weight: 400;
	font-size: clamp(1.8rem, 3.5vw, 2.6rem);
	line-height: 1.1;
	margin: 0 0 .75rem;
	color: var(--lms-primary-deep);
}
.lms-booking__step-sub {
	font-size: var(--lms-step-0);
	color: var(--lms-ink-muted);
	max-width: 460px;
	margin: 0 auto;
	line-height: 1.6;
}

/* ============================================================
   STEP 1 — Service selection cards
   ============================================================ */
.lms-booking__services {
	display: grid;
	gap: 1.25rem;
	margin-bottom: 2rem;
}
.lms-booking__service {
	display: block;
	cursor: pointer;
}
.lms-booking__service input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}
.lms-booking__service-card {
	position: relative;
	padding: 2rem 2.25rem;
	background: var(--lms-paper);
	border: 1px solid var(--lms-line);
	border-radius: 14px;
	transition: border-color .5s var(--lms-ease), background .5s var(--lms-ease), transform .5s var(--lms-ease), box-shadow .5s var(--lms-ease);
	overflow: hidden;
}
.lms-booking__service-card::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, transparent 50%, rgba(193, 155, 107, 0.06) 100%);
	opacity: 0;
	transition: opacity .5s var(--lms-ease);
	pointer-events: none;
}
.lms-booking__service-card:hover {
	border-color: var(--lms-accent-warm);
	transform: translateY(-2px);
	box-shadow: 0 14px 40px -20px rgba(15, 73, 69, 0.25);
}
.lms-booking__service-card:hover::before { opacity: 1; }
.lms-booking__service input:checked + .lms-booking__service-card {
	border-color: var(--lms-primary);
	background: var(--lms-paper-warm);
}
.lms-booking__service input:checked + .lms-booking__service-card::before { opacity: 1; }

.lms-booking__service-deco {
	position: absolute;
	top: 1.5rem;
	right: 1.5rem;
	width: 80px;
	height: 80px;
	color: var(--lms-accent-warm);
	opacity: .35;
	transition: opacity .5s var(--lms-ease), transform .8s var(--lms-ease);
}
.lms-booking__service-card:hover .lms-booking__service-deco {
	opacity: .6;
	transform: rotate(45deg);
}
.lms-booking__service input:checked + .lms-booking__service-card .lms-booking__service-deco {
	opacity: .8;
	color: var(--lms-primary);
}

.lms-booking__service-title {
	font-family: var(--lms-display);
	font-weight: 400;
	font-size: clamp(1.4rem, 2.4vw, 1.75rem);
	line-height: 1.15;
	margin: 0 0 .5rem;
	color: var(--lms-primary-deep);
	padding-right: 5rem;
}
.lms-booking__service-desc {
	font-size: var(--lms-step-0);
	color: var(--lms-ink-muted);
	line-height: 1.6;
	margin: 0 0 1.25rem;
	max-width: 38em;
}
.lms-booking__service-meta {
	display: flex;
	gap: .75rem;
	align-items: baseline;
	font-size: var(--lms-step--1);
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--lms-ink-muted);
}
.lms-booking__service-dot { color: var(--lms-accent-warm); }
.lms-booking__service-price {
	color: var(--lms-primary);
	font-weight: 500;
	letter-spacing: .08em;
}

.lms-booking__service-check {
	position: absolute;
	bottom: 1.5rem;
	right: 1.5rem;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: 1px solid var(--lms-line);
	display: grid;
	place-items: center;
	color: var(--lms-primary);
	opacity: 0;
	transform: scale(.7);
	transition: opacity .4s var(--lms-ease), transform .4s var(--lms-ease), background .4s, border-color .4s;
}
.lms-booking__service-check svg { width: 16px; height: 16px; }
.lms-booking__service input:checked + .lms-booking__service-card .lms-booking__service-check {
	opacity: 1;
	transform: scale(1);
	background: var(--lms-primary);
	border-color: var(--lms-primary);
	color: var(--lms-accent);
}

/* ============================================================
   STEP 2 — Calendar + slot slider (side-by-side, compact)
   ============================================================ */
.lms-booking__calendar-wrap {
	display: grid;
	grid-template-columns: minmax(320px, 380px) 1fr;
	gap: 2rem;
	margin-bottom: 1.5rem;
	align-items: start;
}
@media (max-width: 760px) {
	.lms-booking__calendar-wrap {
		grid-template-columns: 1fr;
	}
}

/* Calendar widget */
.lms-calendar {
	background: var(--lms-paper-warm);
	border: 1px solid var(--lms-line);
	padding: 1.25rem 1.25rem 1.5rem;
}
.lms-calendar__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1rem;
}
.lms-calendar__month {
	font-family: var(--lms-display);
	font-weight: 400;
	font-size: 1.2rem;
	color: var(--lms-primary-deep);
	letter-spacing: .02em;
}
.lms-calendar__nav {
	width: 30px;
	height: 30px;
	display: grid;
	place-items: center;
	background: transparent;
	border: 1px solid var(--lms-line);
	color: var(--lms-primary);
	cursor: pointer;
	border-radius: 50%;
	transition: all .35s var(--lms-ease);
}
.lms-calendar__nav svg { width: 12px; height: 12px; }
.lms-calendar__nav:hover {
	background: var(--lms-primary);
	color: var(--lms-accent);
	border-color: var(--lms-primary);
}
.lms-calendar__weekdays {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
	margin-bottom: .35rem;
}
.lms-calendar__weekdays span {
	text-align: center;
	font-size: .65rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--lms-ink-muted);
	padding: .35rem 0;
}
.lms-calendar__grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
}
.lms-calendar__cell {
	position: relative;
	aspect-ratio: 1 / 1;
	border: 1px solid transparent;
	background: transparent;
	color: var(--lms-ink);
	font-family: var(--lms-body);
	font-size: .85rem;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	transition: all .25s var(--lms-ease);
	min-height: 0;  /* prevents aspect-ratio cells from being clipped weirdly */
}
.lms-calendar__cell-num {
	display: block;
	line-height: 1;
	font-weight: 400;
}
.lms-calendar__cell-today {
	position: absolute;
	bottom: 14%;
	left: 50%;
	transform: translateX(-50%);
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background: var(--lms-accent-warm);
}
.lms-calendar__cell.is-outside { color: rgba(15, 73, 69, 0.18); cursor: default; }
.lms-calendar__cell.is-past, .lms-calendar__cell.is-closed, .lms-calendar__cell.is-blocked {
	color: rgba(15, 73, 69, 0.22);
	cursor: not-allowed;
	pointer-events: none;
}
.lms-calendar__cell.is-closed::after {
	content: "";
	position: absolute;
	inset: 30%;
	border-radius: 50%;
	background: rgba(15, 73, 69, 0.06);
	z-index: -1;
}
/* Blocked dates — admin-marked unavailable. Visually distinct from closed days. */
.lms-calendar__cell.is-blocked {
	background: rgba(170, 68, 68, 0.04);
	color: rgba(170, 68, 68, 0.45);
	position: relative;
}
.lms-calendar__cell.is-blocked::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 20%;
	right: 20%;
	height: 1px;
	background: rgba(170, 68, 68, 0.35);
	transform: rotate(-18deg);
	transform-origin: center;
	z-index: 1;
}
.lms-calendar__cell.is-available {
	background: var(--lms-paper);
	border-color: var(--lms-line);
	color: var(--lms-ink);
}
.lms-calendar__cell.is-available:hover {
	border-color: var(--lms-primary);
	background: rgba(14, 79, 83, 0.04);
	color: var(--lms-primary);
}
.lms-calendar__cell.is-selected {
	background: var(--lms-primary);
	border-color: var(--lms-primary);
	color: var(--lms-accent);
	font-weight: 500;
}
.lms-calendar__cell.is-selected .lms-calendar__cell-today { background: var(--lms-accent); }

.lms-calendar__legend {
	display: flex;
	flex-wrap: wrap;
	gap: .85rem;
	justify-content: center;
	margin-top: 1rem;
	padding-top: .85rem;
	border-top: 1px solid var(--lms-line);
	font-size: .62rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--lms-ink-muted);
}
.lms-calendar__legend span { display: inline-flex; align-items: center; gap: .35rem; }
.lms-calendar__dot {
	display: inline-block;
	width: 8px;
	height: 8px;
	border: 1px solid var(--lms-line);
}
.lms-calendar__dot--available { background: var(--lms-paper); }
.lms-calendar__dot--selected { background: var(--lms-primary); border-color: var(--lms-primary); }
.lms-calendar__dot--closed { background: rgba(15, 73, 69, 0.06); border-color: rgba(15, 73, 69, 0.15); border-radius: 50%; }

/* Slot slider — now lives beside the calendar, fits the right column */
.lms-slots {
	background: var(--lms-paper);
	border: 1px solid var(--lms-line);
	padding: 1.25rem 1.25rem 1rem;
	min-height: 100%;
	display: flex;
	flex-direction: column;
}
.lms-slots__header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 1rem;
	gap: 1rem;
}
.lms-slots__eyebrow {
	font-size: .72rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--lms-primary);
	font-weight: 500;
}
.lms-slots__controls { display: flex; gap: .35rem; }
.lms-slots__arrow {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1px solid var(--lms-line);
	background: transparent;
	color: var(--lms-primary);
	display: grid;
	place-items: center;
	cursor: pointer;
	transition: all .3s var(--lms-ease);
}
.lms-slots__arrow svg { width: 11px; height: 11px; }
.lms-slots__arrow:hover {
	background: var(--lms-primary);
	color: var(--lms-accent);
	border-color: var(--lms-primary);
}

/* Slots now render as a 3-column scrollable vertical grid — fits more in less space */
.lms-slots__track {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: .5rem;
	max-height: 360px;
	overflow-y: auto;
	padding: .25rem 0 .5rem;
	scrollbar-width: thin;
	scrollbar-color: var(--lms-accent-warm) transparent;
	flex: 1;
}
.lms-slots__track::-webkit-scrollbar { width: 6px; }
.lms-slots__track::-webkit-scrollbar-track { background: transparent; }
.lms-slots__track::-webkit-scrollbar-thumb { background: var(--lms-accent-warm); border-radius: 3px; }

.lms-slots__placeholder, .lms-slots__empty {
	grid-column: 1 / -1;
	font-style: italic;
	color: var(--lms-ink-muted);
	padding: 2rem 1rem;
	text-align: center;
	font-size: var(--lms-step--1);
}
.lms-slots__loading {
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	padding: 2rem;
}
.lms-slots__loading span {
	width: 7px; height: 7px;
	border-radius: 50%;
	background: var(--lms-accent-warm);
	animation: lmsPulse 1.4s infinite ease-in-out both;
}
.lms-slots__loading span:nth-child(2) { animation-delay: .2s; }
.lms-slots__loading span:nth-child(3) { animation-delay: .4s; }
@keyframes lmsPulse {
	0%, 80%, 100% { transform: scale(.4); opacity: .4; }
	40% { transform: scale(1); opacity: 1; }
}

.lms-slots__slot {
	padding: .75rem .5rem;
	background: var(--lms-paper);
	border: 1px solid var(--lms-line);
	color: var(--lms-ink);
	cursor: pointer;
	font-family: var(--lms-body);
	transition: all .3s var(--lms-ease);
	text-align: center;
}
.lms-slots__slot:hover {
	border-color: var(--lms-primary);
	color: var(--lms-primary);
	background: rgba(14, 79, 83, 0.03);
}
.lms-slots__slot.is-active {
	background: var(--lms-primary);
	border-color: var(--lms-primary);
	color: var(--lms-accent);
}
.lms-slots__slot-time {
	display: block;
	font-family: var(--lms-display);
	font-size: 1.1rem;
	font-weight: 400;
	line-height: 1;
	letter-spacing: .02em;
}

/* ============================================================
   STEP 3 — Form fields
   ============================================================ */
.lms-booking__fields { display: grid; gap: 1.25rem; max-width: 600px; margin: 0 auto; }
.lms-booking__field-row { display: grid; gap: 1.25rem; grid-template-columns: 1fr 1fr; }
.lms-booking__field { display: flex; flex-direction: column; gap: .4rem; }
.lms-booking__field label {
	font-size: var(--lms-step--1);
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--lms-primary);
	font-weight: 500;
}
.lms-booking__field-hint {
	display: block;
	letter-spacing: 0;
	text-transform: none;
	font-size: var(--lms-step--1);
	color: var(--lms-ink-muted);
	font-weight: 400;
	font-style: italic;
	margin-top: .25rem;
}
.lms-booking__field input,
.lms-booking__field textarea {
	font-family: var(--lms-body);
	font-size: var(--lms-step-0);
	padding: .9rem 1.1rem;
	background: var(--lms-paper);
	border: 1px solid var(--lms-line);
	color: var(--lms-ink);
	transition: border-color .3s, background .3s;
	border-radius: 0;
	width: 100%;
	box-sizing: border-box;
}
.lms-booking__field input:focus,
.lms-booking__field textarea:focus {
	outline: none;
	border-color: var(--lms-primary);
	background: var(--lms-paper-warm);
}

/* ============================================================
   STEP 4 — Summary, payment
   ============================================================ */
.lms-booking__summary {
	background: var(--lms-paper-warm);
	border: 1px solid var(--lms-line);
	padding: 2rem 2.25rem;
	margin-bottom: 2rem;
	position: relative;
}
.lms-booking__summary::before,
.lms-booking__summary::after {
	content: "";
	position: absolute;
	width: 30px;
	height: 30px;
	border: 1px solid var(--lms-accent-warm);
}
.lms-booking__summary::before { top: -6px; left: -6px; border-right: 0; border-bottom: 0; }
.lms-booking__summary::after { bottom: -6px; right: -6px; border-left: 0; border-top: 0; }

.lms-booking__summary-row {
	display: grid;
	grid-template-columns: 1fr 2fr;
	gap: 1rem;
	padding: .65rem 0;
	align-items: baseline;
}
.lms-booking__summary-row dt {
	font-size: var(--lms-step--2);
	letter-spacing: .24em;
	text-transform: uppercase;
	color: var(--lms-primary);
	font-weight: 500;
	margin: 0;
}
.lms-booking__summary-row dd {
	margin: 0;
	font-size: var(--lms-step-0);
	color: var(--lms-ink);
}
.lms-booking__summary-divider {
	height: 1px;
	background: linear-gradient(to right, transparent, var(--lms-accent-warm), transparent);
	margin: .75rem 0;
}
.lms-booking__summary-row--total dt,
.lms-booking__summary-row--total dd {
	font-size: var(--lms-step-1);
}
.lms-booking__summary-row--total dd { font-family: var(--lms-display); font-weight: 400; color: var(--lms-primary); }

.lms-booking__pay { margin-bottom: 1rem; }
.lms-booking__pay-title {
	font-size: var(--lms-step--1);
	letter-spacing: .26em;
	text-transform: uppercase;
	color: var(--lms-primary);
	font-weight: 500;
	margin: 0 0 1rem;
}
.lms-booking__pay-options { display: grid; gap: .75rem; margin-bottom: 1.5rem; }
.lms-booking__pay-option {
	position: relative;
	display: grid;
	grid-template-columns: 28px 1fr;
	gap: 1rem;
	padding: 1.25rem 1.5rem;
	background: var(--lms-paper);
	border: 1px solid var(--lms-line);
	cursor: pointer;
	transition: all .35s var(--lms-ease);
}
.lms-booking__pay-option:has(input:checked) {
	background: var(--lms-paper-warm);
	border-color: var(--lms-primary);
}
.lms-booking__pay-option input { position: absolute; opacity: 0; }
.lms-booking__pay-content { display: flex; flex-direction: column; gap: .2rem; }
.lms-booking__pay-label {
	font-size: var(--lms-step-0);
	color: var(--lms-ink);
	font-weight: 500;
}
.lms-booking__pay-sub {
	font-size: var(--lms-step--1);
	color: var(--lms-ink-muted);
	line-height: 1.5;
}
.lms-booking__pay-option::before {
	content: "";
	width: 18px; height: 18px;
	border: 1px solid var(--lms-line);
	border-radius: 50%;
	margin-top: 2px;
	transition: all .3s;
}
.lms-booking__pay-option:has(input:checked)::before {
	background: var(--lms-primary);
	border-color: var(--lms-primary);
	box-shadow: inset 0 0 0 4px var(--lms-paper-warm);
}

.lms-booking__card { margin-bottom: 1.5rem; animation: lmsStepFadeIn .5s var(--lms-ease) both; }
.lms-booking__card-label {
	display: block;
	font-size: var(--lms-step--1);
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--lms-primary);
	font-weight: 500;
	margin-bottom: .6rem;
}
.lms-stripe-element {
	padding: 1rem 1.1rem;
	background: var(--lms-paper);
	border: 1px solid var(--lms-line);
}
.lms-stripe-errors {
	color: #a44;
	font-size: var(--lms-step--1);
	margin-top: .5rem;
	min-height: 1.4em;
}
.lms-booking__card-trust {
	display: flex;
	align-items: center;
	gap: .5rem;
	font-size: var(--lms-step--2);
	color: var(--lms-ink-muted);
	margin: .75rem 0 0;
	letter-spacing: .04em;
}
.lms-booking__card-trust svg { color: var(--lms-primary); flex-shrink: 0; }

/* ============================================================
   Buttons + nav
   ============================================================ */
.lms-booking__nav {
	display: flex;
	gap: 1rem;
	justify-content: space-between;
	align-items: center;
	margin-top: 3rem;
	padding-top: 2rem;
	border-top: 1px solid var(--lms-line);
}
.lms-booking__btn {
	font-family: var(--lms-body);
	font-size: var(--lms-step--1);
	letter-spacing: .14em;
	text-transform: uppercase;
	padding: .95rem 1.85rem;
	background: var(--lms-primary);
	color: var(--lms-paper);
	border: 1px solid var(--lms-primary);
	border-radius: 999px;
	cursor: pointer;
	transition: all .4s var(--lms-ease);
	display: inline-flex;
	align-items: center;
	gap: .6rem;
	font-weight: 500;
}
.lms-booking__btn:hover {
	background: var(--lms-primary-deep);
	border-color: var(--lms-primary-deep);
}
.lms-booking__btn--ghost {
	background: transparent;
	color: var(--lms-primary);
	border-color: var(--lms-line);
}
.lms-booking__btn--ghost:hover {
	background: transparent;
	color: var(--lms-primary-deep);
	border-color: var(--lms-primary);
}
.lms-booking__btn--accent {
	background: var(--lms-primary);
	color: var(--lms-accent);
	position: relative;
	overflow: hidden;
}
.lms-booking__btn--accent::after {
	content: "";
	position: absolute;
	top: 0; left: -100%;
	width: 100%; height: 100%;
	background: linear-gradient(90deg, transparent, rgba(193, 155, 107, 0.3), transparent);
	transition: left .8s var(--lms-ease);
}
.lms-booking__btn--accent:hover::after { left: 100%; }

.lms-booking__btn:disabled {
	opacity: .65;
	cursor: not-allowed;
	letter-spacing: .22em;
}
.lms-booking__btn-loading {
	display: inline-block;
	width: 14px; height: 14px;
	border: 1.5px solid var(--lms-accent);
	border-top-color: transparent;
	border-radius: 50%;
	animation: lmsSpin .9s linear infinite;
}
@keyframes lmsSpin { to { transform: rotate(360deg); } }

/* ============================================================
   Result
   ============================================================ */
.lms-booking__result {
	margin-top: 2rem;
	padding: 0;
	display: none;
	text-align: center;
}
.lms-booking__result.is-visible { display: block; animation: lmsStepFadeIn .8s var(--lms-ease) both; }
.lms-booking__result--error {
	background: rgba(170, 68, 68, 0.06);
	border-left: 3px solid #a44;
	color: #a44;
	padding: 1.25rem 1.5rem;
	text-align: left;
	font-size: var(--lms-step-0);
}
.lms-booking__result--success {
	padding: 3rem 2rem;
	background: var(--lms-paper-warm);
	border: 1px solid var(--lms-accent);
	color: var(--lms-primary);
}
.lms-booking__result-mark {
	width: 80px;
	height: 80px;
	margin: 0 auto 1.5rem;
	color: var(--lms-primary);
}
.lms-booking__result-mark svg {
	width: 100%;
	height: 100%;
}
.lms-booking__result-mark svg circle {
	stroke-dasharray: 175;
	stroke-dashoffset: 175;
	animation: lmsDraw 1.2s var(--lms-ease) .1s forwards;
}
.lms-booking__result-mark svg path {
	stroke-dasharray: 50;
	stroke-dashoffset: 50;
	animation: lmsDraw 1s var(--lms-ease) .6s forwards;
}
@keyframes lmsDraw {
	to { stroke-dashoffset: 0; }
}
.lms-booking__result-text {
	font-family: var(--lms-display);
	font-size: clamp(1.4rem, 2.2vw, 1.8rem);
	font-weight: 400;
	line-height: 1.35;
	color: var(--lms-primary-deep);
	margin: 0;
	max-width: 28em;
	margin-left: auto;
	margin-right: auto;
}

/* ============================================================
   Mobile responsive
   ============================================================ */
@media (max-width: 720px) {
	.lms-booking__steps li { padding: 1rem .5rem; font-size: .65rem; letter-spacing: .14em; }
	.lms-booking__step-num { font-size: 1.1rem; }
	.lms-booking__step-label { display: block; }

	.lms-booking__service-card { padding: 1.5rem 1.5rem; }
	.lms-booking__service-deco { width: 50px; height: 50px; top: 1rem; right: 1rem; }
	.lms-booking__service-title { padding-right: 3.5rem; font-size: 1.3rem; }
	.lms-booking__service-check { width: 28px; height: 28px; bottom: 1rem; right: 1rem; }

	.lms-calendar { padding: 1.25rem 1rem 1.5rem; }
	.lms-calendar__month { font-size: 1.2rem; }
	.lms-calendar__cell { font-size: .85rem; }
	.lms-calendar__weekdays span { font-size: .6rem; }

	.lms-slots__slot { min-width: 90px; padding: 1rem; }
	.lms-slots__slot-time { font-size: 1.15rem; }

	.lms-booking__field-row { grid-template-columns: 1fr; }
	.lms-booking__summary { padding: 1.5rem; }
	.lms-booking__summary-row { grid-template-columns: 1fr; gap: .25rem; }

	.lms-booking__nav { flex-direction: column-reverse; align-items: stretch; gap: .75rem; }
	.lms-booking__btn { justify-content: center; }
}
/* ============================================================
   FULL-STEP SUCCESS STATE — replaces step 4 content after payment
   ============================================================ */
.lms-booking__result--full {
	display: flex !important;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: 3rem 2rem;
	gap: 1.25rem;
	background: linear-gradient(180deg, #FFFFFF 0%, #FAF7F2 100%);
	border: 1px solid var(--lms-line);
	border-radius: 16px;
	animation: lmsResultIn .7s cubic-bezier(0.16, 1, 0.3, 1);
}
.lms-booking__result--full .lms-booking__result-mark {
	width: 80px;
	height: 80px;
	color: var(--lms-primary);
	background: rgba(15, 73, 69, 0.04);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: .5rem;
}
.lms-booking__result--full .lms-booking__result-mark svg {
	width: 60px;
	height: 60px;
	animation: lmsCheckDraw 1s cubic-bezier(0.16, 1, 0.3, 1) .15s both;
}
.lms-booking__result--full .lms-booking__result-mark path {
	stroke-dasharray: 60;
	stroke-dashoffset: 60;
	animation: lmsCheckLine 1s cubic-bezier(0.16, 1, 0.3, 1) .35s forwards;
}
.lms-booking__result-title {
	font-family: var(--lms-display, 'Cormorant Garamond', serif);
	font-size: clamp(2rem, 4vw, 2.8rem);
	font-weight: 400;
	color: var(--lms-primary);
	margin: 0;
	letter-spacing: -0.01em;
}
.lms-booking__result-text {
	font-family: var(--lms-display, 'Cormorant Garamond', serif);
	font-style: italic;
	font-size: clamp(1.1rem, 2vw, 1.35rem);
	color: var(--lms-ink);
	max-width: 36em;
	margin: 0;
	line-height: 1.6;
}
.lms-booking__result-sub {
	font-size: 0.86rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--lms-ink-muted);
	margin: .5rem 0 0;
	font-weight: 500;
}
@keyframes lmsResultIn {
	from { opacity: 0; transform: translateY(20px) scale(.96); }
	to { opacity: 1; transform: none; }
}
@keyframes lmsCheckDraw {
	from { opacity: 0; transform: scale(.6); }
	to { opacity: 1; transform: scale(1); }
}
@keyframes lmsCheckLine {
	to { stroke-dashoffset: 0; }
}

/* ============================================================
   INLINE FIELD VALIDATION ERRORS
   ============================================================ */
.lms-booking__field.has-error label {
	color: #a44;
}
.lms-booking__field.has-error input,
.lms-booking__field.has-error textarea,
.lms-booking__field.has-error select {
	border-color: #a44 !important;
	background: #fff5f5;
	box-shadow: 0 0 0 1px rgba(170, 68, 68, 0.18);
}
.lms-booking__field.has-error input:focus,
.lms-booking__field.has-error textarea:focus,
.lms-booking__field.has-error select:focus {
	outline: 0;
	border-color: #a44 !important;
	box-shadow: 0 0 0 3px rgba(170, 68, 68, 0.18) !important;
}
.lms-booking__field-error {
	display: block;
	margin-top: 0.4rem;
	font-size: 13px;
	color: #a44;
	font-weight: 500;
	min-height: 1.2em;
	animation: lmsFieldErrIn .25s ease-out;
}
.lms-booking__field-error:not(:empty)::before {
	content: "⚠ ";
	font-size: 11px;
}
@keyframes lmsFieldErrIn {
	from { opacity: 0; transform: translateY(-3px); }
	to { opacity: 1; transform: none; }
}
