/*
 * Executive Lane Booking Engine - front-end booking form.
 *
 * Scoped to .elbe-book. Neutral, theme-agnostic styling for Phase 3b; the
 * full black/gold treatment lands with the marketing theme.
 */
.elbe-book {
	--elbe-ink: #17150f;
	--elbe-line: #d9d4c8;
	--elbe-gold: #a7842f;
	--elbe-bg: #fffdf8;
	max-width: 640px;
	margin: 0 auto;
	font-size: 15px;
	color: var(--elbe-ink);
	color-scheme: light;
}
.elbe-book *,
.elbe-book *::before,
.elbe-book *::after { box-sizing: border-box; }

/* Author display rules below would otherwise beat the UA [hidden] rule. */
.elbe-book [hidden] { display: none !important; }

.elbe-testmode-banner {
	margin: 0 0 14px;
	padding: 8px 12px;
	border-radius: 6px;
	background: #fef3cd;
	border: 1px solid #f0d98a;
	color: #7a5c00;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .02em;
}
.elbe-book-notice,
.elbe-book-help { font-size: 13px; color: #6c675e; }
.elbe-book-notice a,
.elbe-book-help a { color: var(--elbe-gold); font-weight: 600; }

/* Step indicator */
.elbe-steps {
	display: flex;
	list-style: none;
	margin: 0 0 18px;
	padding: 0;
	counter-reset: elbe-step;
	font-size: 12px;
}
.elbe-steps li {
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	color: #a29b8c;
	text-align: center;
	position: relative;
}
.elbe-steps li::before {
	counter-increment: elbe-step;
	content: counter( elbe-step );
	width: 26px;
	height: 26px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	border: 1px solid var(--elbe-line);
	background: #fff;
	font-weight: 700;
}
.elbe-steps li::after {
	content: "";
	position: absolute;
	top: 13px;
	left: 50%;
	width: 100%;
	height: 1px;
	background: var(--elbe-line);
	z-index: 0;
}
.elbe-steps li:last-child::after { display: none; }
.elbe-steps li span { position: relative; z-index: 1; }
.elbe-steps li.is-current { color: var(--elbe-ink); }
.elbe-steps li.is-current::before { border-color: var(--elbe-gold); background: var(--elbe-gold); color: #15130b; }
.elbe-steps li.is-done::before { border-color: var(--elbe-ink); background: var(--elbe-ink); color: #fff; }

.elbe-step { animation: elbe-fade .2s ease-out; }
@keyframes elbe-fade { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .elbe-step { animation: none; } }
.elbe-step > h3 { margin: 0 0 14px; font-size: 16px; }

.elbe-book-form {
	background: var(--elbe-bg);
	border: 1px solid var(--elbe-line);
	border-radius: 8px;
	padding: 22px;
}

.elbe-triptype { display: flex; gap: 6px; margin-bottom: 18px; }
.elbe-trip {
	flex: 1;
	padding: 9px 10px;
	border: 1px solid var(--elbe-line);
	background: #faf9f6;
	color: #4b4842;
	border-radius: 5px;
	font-size: 12px;
	font-weight: 700;
	cursor: pointer;
}
.elbe-trip.is-active { background: var(--elbe-ink); color: #fff; border-color: var(--elbe-ink); }

.elbe-field { margin-bottom: 14px; }
.elbe-field > label {
	display: block;
	font-size: 11px;
	letter-spacing: .06em;
	text-transform: uppercase;
	font-weight: 700;
	color: #8a857b;
	margin-bottom: 6px;
}
.elbe-row { display: flex; gap: 12px; }
.elbe-row .elbe-field { flex: 1; }

.elbe-field input[type="text"],
.elbe-field input[type="date"],
.elbe-field input[type="time"],
.elbe-field input[type="number"],
.elbe-field select,
.elbe-ac-fallback {
	width: 100%;
	height: 44px;
	border: 1px solid var(--elbe-line);
	border-radius: 5px;
	padding: 0 12px;
	font-size: 14px;
	background: #fff;
	color: var(--elbe-ink);
}

.elbe-ac { min-height: 44px; }
.elbe-ac gmp-place-autocomplete {
	width: 100%;
	display: block;
	color-scheme: light;
	--gmpx-color-surface: #fff;
	--gmpx-color-on-surface: #17150f;
	--gmpx-color-primary: #a7842f;
}

.elbe-airport {
	border: 1px solid var(--elbe-line);
	border-radius: 6px;
	padding: 14px 16px;
	margin: 6px 0 16px;
	background: #faf8f2;
}
.elbe-airport legend { font-size: 12px; font-weight: 700; padding: 0 6px; }
.elbe-check { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.elbe-check input { width: auto; height: auto; }

.elbe-actions { display: flex; align-items: center; gap: 10px; margin-top: 18px; }
.elbe-actions-split { justify-content: space-between; }
.elbe-back {
	height: 48px;
	padding: 0 18px;
	border: 1px solid var(--elbe-line);
	border-radius: 5px;
	background: #fff;
	color: #4b4842;
	font-weight: 700;
	font-size: 14px;
	cursor: pointer;
}
.elbe-submit {
	height: 48px;
	padding: 0 22px;
	border: 0;
	border-radius: 5px;
	background: var(--elbe-gold);
	color: #15130b;
	font-weight: 800;
	font-size: 14px;
	cursor: pointer;
}
.elbe-submit:disabled { opacity: .6; cursor: default; }
.elbe-spinner {
	width: 18px; height: 18px;
	border: 2px solid var(--elbe-line);
	border-top-color: var(--elbe-gold);
	border-radius: 50%;
	animation: elbe-spin .7s linear infinite;
}
@keyframes elbe-spin { to { transform: rotate( 360deg ); } }
@media (prefers-reduced-motion: reduce) { .elbe-spinner { animation: none; } }

.elbe-err { color: #b32d2e; font-size: 12px; margin: 6px 0 0; }

.elbe-result {
	margin-top: 16px;
	border: 1px solid var(--elbe-line);
	border-radius: 8px;
	padding: 18px;
	background: #fff;
}
.elbe-result-headline { font-size: 17px; }
.elbe-result-headline strong { color: var(--elbe-gold); }
.elbe-muted { color: #8a857b; font-size: 13px; }
.elbe-legs { margin: 10px 0 0; padding-left: 18px; font-size: 13px; color: #6c675e; }
.elbe-airport-badge { margin: 12px 0 0; font-size: 13px; color: #4b4842; }
.elbe-outofarea {
	margin-top: 12px;
	padding: 12px 14px;
	border-radius: 6px;
	background: #fcf5e9;
	border: 1px solid #e8d3a8;
	color: #6b531d;
	font-size: 14px;
}
.elbe-next { margin-top: 12px; font-size: 13px; color: #1a7f37; }

/* Vehicle selection */
.elbe-price { margin-top: 18px; }
.elbe-price h3 { margin: 0 0 10px; font-size: 15px; }
.elbe-vehicle {
	display: flex;
	align-items: center;
	gap: 12px;
	border: 1px solid var(--elbe-line);
	border-radius: 7px;
	padding: 12px 14px;
	margin-bottom: 8px;
	cursor: pointer;
	background: #fff;
}
.elbe-vehicle.is-selected,
.elbe-vehicle:has(input:checked) { border-color: var(--elbe-gold); box-shadow: 0 0 0 2px rgba(167, 132, 47, .18); }
.elbe-vehicle input { margin: 0; }
.elbe-vehicle img,
.elbe-vehicle-noimg { width: 72px; height: 54px; object-fit: cover; border-radius: 4px; flex: none; }
.elbe-vehicle-noimg { background: #f1ede2; display: block; }
.elbe-vehicle-body { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.elbe-vehicle-price { font-weight: 800; color: var(--elbe-ink); white-space: nowrap; }

.elbe-addons { margin-top: 10px; }
.elbe-addons .elbe-check { margin: 0; }
.elbe-addon-row { display: flex; align-items: center; gap: 8px; margin: 4px 0; }
.elbe-addon-row .elbe-check { flex: 1; }
.elbe-addon-qty { padding: 2px 4px; font: inherit; }
.elbe-addon-qty:disabled { opacity: .5; }

.elbe-price-table { width: 100%; border-collapse: collapse; }
.elbe-price-table td { padding: 8px 0; border-bottom: 1px solid #efe9db; font-size: 14px; }
.elbe-price-table tr:last-child td { border-bottom: 0; }
.elbe-price-table .elbe-amt { text-align: right; font-variant-numeric: tabular-nums; }
.elbe-price-table .elbe-total td { font-weight: 800; border-top: 2px solid var(--elbe-ink); border-bottom: 0; padding-top: 10px; }
.elbe-price-table .elbe-line-detail { display: block; color: #8a857b; font-size: 12px; font-weight: 400; margin-top: 2px; }
.elbe-price-table .elbe-pay td { border-bottom: 0; padding: 4px 0; }
.elbe-price-table .elbe-pay:first-of-type td { padding-top: 10px; }
.elbe-price-note { font-size: 12px; color: #8a857b; margin-top: 8px; }

/* Customer form + review */
.elbe-customer-form .elbe-field input,
.elbe-customer-form .elbe-field textarea {
	width: 100%;
	border: 1px solid var(--elbe-line);
	border-radius: 5px;
	padding: 10px 12px;
	font-size: 14px;
	background: #fff;
	color: var(--elbe-ink);
	font-family: inherit;
}
.elbe-customer-form .elbe-field input { height: 44px; }

.elbe-review-list { margin: 0; }
.elbe-review-row {
	display: flex;
	gap: 14px;
	padding: 9px 0;
	border-bottom: 1px solid #efe9db;
	font-size: 14px;
}
.elbe-review-row dt { flex: 0 0 34%; margin: 0; color: #8a857b; font-weight: 600; }
.elbe-review-row dd { flex: 1; margin: 0; }
.elbe-review h4 { margin: 20px 0 8px; font-size: 14px; }
.elbe-review-price { margin-top: 4px; }
.elbe-reserve-note {
	margin-top: 12px;
	padding: 12px 14px;
	border-radius: 6px;
	background: #fcf5e9;
	border: 1px solid #e8d3a8;
	color: #6b531d;
	font-size: 13px;
}
[data-reserve] { display: inline-flex; align-items: center; gap: 8px; }
[data-reserve] .elbe-spinner { border-top-color: #15130b; }

.elbe-confirmation {
	border: 1px solid var(--elbe-line);
	border-radius: 8px;
	padding: 22px;
	background: var(--elbe-bg);
}
.elbe-confirmed-badge,
.elbe-created-badge {
	display: inline-block;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
	border-radius: 4px;
	padding: 4px 10px;
}
.elbe-confirmed-badge { color: #1a7f37; background: #edfaef; border: 1px solid #b6e3c0; }
.elbe-created-badge { color: #6b531d; background: #fcf5e9; border: 1px solid #e8d3a8; }
.elbe-review-pay-note { margin-top: 16px; font-size: 13px; color: #6c675e; }
.elbe-resnum {
	font-size: 28px;
	font-weight: 800;
	letter-spacing: .02em;
	margin: 12px 0 16px;
}
.elbe-addr-line { display: block; }
.elbe-pickup-when { display: block; margin-top: 10px; font-size: 13px; color: #6c675e; }
.elbe-confirmed-note { margin-top: 14px; font-size: 13px; color: #6c675e; }

/* Payment step */
.elbe-pay > h3 { margin: 0 0 12px; font-size: 16px; }
.elbe-pay-summary { margin-bottom: 18px; }
.elbe-pay-element { margin: 6px 0 14px; min-height: 40px; }
.elbe-pay-secure { margin-top: 12px; font-size: 12px; color: #8a857b; }
.elbe-pay [data-pay-btn] { min-width: 180px; justify-content: center; }

@media (max-width: 520px) {
	.elbe-row { flex-direction: column; gap: 0; }
	.elbe-vehicle img,
	.elbe-vehicle-noimg { display: none; }
	.elbe-steps li span { display: none; }
	.elbe-review-row { flex-direction: column; gap: 2px; }
	.elbe-review-row dt { flex-basis: auto; }
}
