﻿/* =========================================================
   Booking modal overlay
   ========================================================= */

.booking-modal-overlay,
.booking-modal-overlay * {
	box-sizing: border-box;
}

	.booking-modal-overlay[hidden] {
		display: none !important;
	}

.booking-modal-overlay {
	position: fixed !important;
	inset: 0 !important;
	z-index: 99999 !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 100vw !important;
	height: 100dvh !important;
	margin: 0 !important;
	padding: 20px;
	visibility: hidden;
	overflow: hidden;
	background: rgba(5, 20, 45, 0.74);
	opacity: 0;
	backdrop-filter: blur(6px);
	transition: visibility 0.18s ease, opacity 0.18s ease;
}

	.booking-modal-overlay.is-open {
		visibility: visible;
		opacity: 1;
	}

.booking-modal-dialog {
	position: relative !important;
	z-index: 1;
	display: flex;
	width: min(820px, 100%) !important;
	max-width: 820px !important;
	max-height: calc(100dvh - 40px);
	margin: 0 !important;
	padding: 0 !important;
	overflow: hidden;
	border: 0;
	border-radius: 24px;
	background: #fff;
	color: #1a2f5e;
	box-shadow: 0 30px 90px rgba(0, 0, 0, 0.4);
	flex-direction: column;
	opacity: 0;
	transform: translateY(20px) scale(0.98);
	transition: opacity 0.18s ease, transform 0.18s ease;
}

.booking-modal-overlay.is-open
.booking-modal-dialog {
	opacity: 1;
	transform: translateY(0) scale(1);
}

/* =========================================================
   Header
   ========================================================= */

.booking-modal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex: 0 0 auto;
	padding: 21px 25px;
	background: linear-gradient( 135deg, #142a57, #214680 );
	color: #fff;
}

.booking-modal-heading {
	min-width: 0;
}

.booking-modal-eyebrow {
	display: block;
	margin-bottom: 5px;
	color: #f2c35e;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.085em;
	text-transform: uppercase;
}

.booking-modal-title {
	margin: 0;
	overflow: hidden;
	color: #fff;
	font-size: 24px;
	font-weight: 800;
	line-height: 1.2;
	text-overflow: ellipsis;
}

.booking-modal-close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 42px;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.15);
	color: #fff;
	cursor: pointer;
}

	.booking-modal-close:hover {
		background: rgba(255, 255, 255, 0.25);
	}

/* =========================================================
   Scrollable content
   ========================================================= */

.booking-modal-scroll {
	min-height: 0;
	padding: 25px;
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
}

body.booking-modal-open {
	overflow: hidden !important;
}

/* =========================================================
   Package summary
   ========================================================= */

.booking-package-summary {
	display: grid;
	grid-template-columns: 140px minmax(0, 1fr);
	gap: 18px;
	margin-bottom: 24px;
	padding: 14px;
	border: 1px solid #e4eaf2;
	border-radius: 17px;
	background: #f6f8fc;
}

.booking-package-image-wrap {
	position: relative;
	overflow: hidden;
	border-radius: 13px;
}

.booking-package-image {
	display: block;
	width: 140px;
	height: 120px;
	object-fit: cover;
}

.booking-popular-badge {
	position: absolute;
	top: 8px;
	left: 8px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 5px 7px;
	border-radius: 999px;
	background: #fff3cd;
	color: #8a5700;
	font-size: 8px;
	font-weight: 800;
}

.booking-package-information {
	display: flex;
	justify-content: center;
	min-width: 0;
	flex-direction: column;
}

.booking-package-category {
	color: #d88714;
	font-size: 9px;
	font-weight: 800;
	letter-spacing: 0.07em;
	text-transform: uppercase;
}

.booking-package-information h3 {
	margin: 5px 0 9px;
	color: #173665;
	font-size: 19px;
	line-height: 1.3;
}

.booking-package-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 9px 14px;
	color: #667085;
	font-size: 11px;
}

	.booking-package-meta i {
		margin-right: 3px;
		color: #f47a18;
	}

.booking-package-price {
	margin-top: 11px;
}

	.booking-package-price > small {
		display: block;
		color: #667085;
		font-size: 9px;
	}

	.booking-package-price > div {
		display: flex;
		align-items: baseline;
		flex-wrap: wrap;
		gap: 5px;
	}

	.booking-package-price span {
		color: #173665;
		font-size: 12px;
		font-weight: 800;
	}

	.booking-package-price strong {
		color: #173665;
		font-size: 22px;
		font-weight: 800;
	}

	.booking-package-price em {
		color: #667085;
		font-size: 10px;
		font-style: normal;
		font-weight: 600;
	}

.booking-price-request {
	color: #173665;
	font-size: 17px;
}

/* =========================================================
   Sections and form
   ========================================================= */

.booking-modal-alert {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 19px;
	padding: 12px 14px;
	border: 1px solid #fecdca;
	border-radius: 11px;
	background: #fff1f0;
	color: #b42318;
	font-size: 12px;
}

.booking-form-section,
.booking-product-fields,
.booking-additional-pickup {
	padding-top: 22px;
	border-top: 1px solid #edf0f5;
}

.booking-notes-section {
	margin-top: 22px;
}

.booking-section-heading {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 16px;
}

.booking-section-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 38px;
	width: 38px;
	height: 38px;
	border-radius: 11px;
	background: #fff0e4;
	color: #f47a18;
}

.booking-section-heading h3 {
	margin: 0;
	color: #173665;
	font-size: 16px;
}

.booking-section-heading p {
	margin: 3px 0 0;
	color: #667085;
	font-size: 10px;
}

.booking-section-help {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 10px;
	color: #667085;
	font-size: 10px;
}

	.booking-section-help i {
		color: #315a98;
	}

.booking-modal-scroll .form-row {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
}

.booking-modal-scroll .form-group {
	min-width: 0;
	margin-bottom: 15px;
}

	.booking-modal-scroll .form-group label {
		display: block;
		margin-bottom: 7px;
		color: #173665;
		font-size: 11px;
		font-weight: 700;
	}

.booking-modal-scroll .form-control {
	display: block;
	width: 100%;
	min-width: 0;
	min-height: 44px;
	padding: 10px 12px;
	border: 1px solid #d3deeb;
	border-radius: 10px;
	background: #fff;
	color: #344054;
	font: inherit;
	font-size: 12px;
	outline: none;
}

.booking-modal-scroll textarea.form-control {
	min-height: 105px;
	resize: vertical;
}

.booking-modal-scroll .form-control:focus {
	border-color: #315a98;
	box-shadow: 0 0 0 3px rgba(49, 90, 152, 0.12);
}

.booking-modal-scroll .text-danger {
	display: block;
	margin-top: 5px;
	color: #c62828;
	font-size: 10px;
}

/* =========================================================
   Submit
   ========================================================= */

.booking-form-submit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	margin-top: 23px;
	padding-top: 21px;
	border-top: 1px solid #edf0f5;
}

	.booking-form-submit p {
		display: flex;
		align-items: center;
		gap: 6px;
		margin: 0;
		color: #667085;
		font-size: 11px;
	}

		.booking-form-submit p i {
			color: #249c58;
		}

.booking-add-cart-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-width: 220px;
	min-height: 50px;
	padding: 11px 20px;
	border: 0;
	border-radius: 13px;
	background: #f47a18;
	color: #fff;
	box-shadow: 0 8px 18px rgba(244, 122, 24, 0.24);
	font-family: inherit;
	font-size: 13px;
	font-weight: 800;
	cursor: pointer;
}

	.booking-add-cart-button:hover {
		background: #dc670c;
	}

/* =========================================================
   Mobile
   ========================================================= */

@media (max-width: 700px) {
	.booking-modal-overlay {
		align-items: stretch;
		padding: 0;
	}

	.booking-modal-dialog {
		width: 100% !important;
		max-width: 100% !important;
		height: 100dvh;
		max-height: 100dvh;
		border-radius: 0;
		transform: translateY(25px);
	}

	.booking-modal-header {
		padding: calc(15px + env(safe-area-inset-top)) 15px 15px;
	}

	.booking-modal-title {
		font-size: 20px;
	}

	.booking-modal-close {
		flex-basis: 39px;
		width: 39px;
		height: 39px;
	}

	.booking-modal-scroll {
		flex: 1;
		min-height: 0;
		padding: 16px 13px calc(28px + env(safe-area-inset-bottom));
	}

	.booking-package-summary {
		grid-template-columns: 90px minmax(0, 1fr);
		gap: 12px;
		padding: 10px;
	}

	.booking-package-image {
		width: 90px;
		height: 100%;
		min-height: 105px;
	}

	.booking-package-information h3 {
		font-size: 15px;
	}

	.booking-package-meta {
		font-size: 9px;
	}

	.booking-package-price strong {
		font-size: 18px;
	}

	.booking-modal-scroll .form-row {
		grid-template-columns: 1fr;
		gap: 0;
	}

	.booking-modal-scroll .form-group,
	.booking-modal-scroll input,
	.booking-modal-scroll select,
	.booking-modal-scroll textarea {
		width: 100%;
		min-width: 0;
		max-width: 100%;
	}

	.booking-form-submit {
		align-items: stretch;
		flex-direction: column;
	}

	.booking-add-cart-button {
		width: 100%;
		min-width: 0;
	}
}
/* Keep location suggestions above the modal content */
.booking-modal-dialog {
	overflow: visible !important;
}

.booking-modal-body,
.booking-modal-scroll {
	position: relative;
}

.booking-modal-overlay .location-autocomplete,
.booking-modal-overlay .pickup-autocomplete {
	position: relative !important;
	z-index: 100;
	overflow: visible !important;
}

	.booking-modal-overlay .location-autocomplete:focus-within,
	.booking-modal-overlay .pickup-autocomplete:focus-within {
		z-index: 999999 !important;
	}

.booking-modal-overlay .location-results {
	position: absolute !important;
	top: calc(100% + 6px) !important;
	right: 0 !important;
	left: 0 !important;
	z-index: 999999 !important;
	display: block;
	width: 100%;
	max-height: 260px;
	padding: 6px;
	overflow-x: hidden;
	overflow-y: auto;
	border: 1px solid #d6dfeb;
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 20px 45px rgba(15, 35, 70, 0.25);
}

	.booking-modal-overlay .location-results[hidden] {
		display: none !important;
	}

/* Keep suggestions inside the scrollable document instead of clipping a popup. */
.booking-modal-overlay [data-location-autocomplete] .location-results {
    position: static !important;
    margin-top: 7px !important;
    max-height: min(240px, 30dvh);
}

.booking-modal-overlay [data-location-autocomplete] .location-search-icon,
.booking-modal-overlay [data-location-autocomplete] .pickup-search-icon {
    top: 25px;
}

.booking-modal-overlay .transfer-fields-card .transfer-location-row {
    grid-template-columns: minmax(0, 1fr) 32px minmax(0, 1fr) !important;
}

.booking-modal-overlay .transfer-fields-card .transfer-location-row.pickup-only-row {
    grid-template-columns: minmax(0, 1fr) !important;
}

@media (max-width: 700px) {
    .booking-modal-overlay .transfer-fields-card .transfer-location-row {
        grid-template-columns: minmax(0, 1fr) !important;
    }
}
