:root {
	--lvb-ocean: #08789c;
	--lvb-ocean-dark: #08445a;
	--lvb-coral: #d94f45;
	--lvb-sand: #f7f2e8;
	--lvb-ink: #19313c;
	--lvb-muted: #64757d;
	--lvb-line: #dce5e7;
	--lvb-success: #2e8062;
}

body.lvb-booking-enhanced .sidebar {
	display: none !important;
}

body.lvb-booking-enhanced .panel-center {
	left: 0 !important;
	float: none !important;
	width: 100% !important;
}

body.lvb-booking-enhanced .single-product-content-right {
	color: var(--lvb-ink);
}

body.lvb-booking-enhanced .single-product-content-left .socials-sharing,
body.lvb-booking-enhanced .single-product-content-left .product-meta {
	display: none !important;
}

body.lvb-booking-enhanced .single-product-content-right > .product_title {
	margin-bottom: 14px;
	font-size: clamp(30px, 4vw, 46px);
	line-height: 1.08;
	letter-spacing: -0.025em;
}

.lvb-booking-intro {
	margin: 0 0 24px;
	padding: 18px 20px;
	border: 1px solid #d9e5e7;
	border-radius: 16px;
	background: linear-gradient(135deg, #f7fbfc 0%, var(--lvb-sand) 100%);
	box-shadow: 0 10px 28px rgba(8, 68, 90, 0.07);
}

.lvb-booking-intro .lvb-eyebrow {
	display: block;
	margin-bottom: 7px;
	color: var(--lvb-ocean);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.lvb-booking-intro p {
	margin: 0 0 11px;
	font-size: 16px;
}

.lvb-booking-intro ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.lvb-booking-intro li {
	padding: 6px 10px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.82);
	color: var(--lvb-ocean-dark);
	font-size: 13px;
	font-weight: 700;
}

.lvb-booking-form {
	padding: 22px;
	border: 1px solid var(--lvb-line);
	border-radius: 20px;
	background: #fff;
	box-shadow: 0 18px 45px rgba(25, 49, 60, 0.09);
}

.lvb-step-heading {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 26px 0 13px;
	padding-top: 23px;
	border-top: 1px solid var(--lvb-line);
}

.lvb-booking-form > .lvb-step-heading:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

.lvb-step-number {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 30px;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--lvb-ocean-dark);
	color: #fff;
	font-size: 14px;
	font-weight: 800;
	transition: background-color 160ms ease, transform 160ms ease;
}

.lvb-step-heading.is-complete .lvb-step-number {
	background: var(--lvb-success);
}

.lvb-step-heading.is-complete .lvb-step-number::before {
	content: '✓';
}

.lvb-step-heading.is-complete .lvb-step-number {
	font-size: 0;
}

.lvb-step-heading.is-complete .lvb-step-number::before {
	font-size: 15px;
}

.lvb-step-heading strong,
.lvb-step-heading small {
	display: block;
}

.lvb-step-heading strong {
	color: var(--lvb-ink);
	font-size: 18px;
	line-height: 1.2;
}

.lvb-step-heading small {
	margin-top: 3px;
	color: var(--lvb-muted);
	font-size: 13px;
	line-height: 1.35;
}

.lvb-date-hint {
	margin: 7px 0 0;
	color: var(--lvb-ocean-dark);
	font-size: 13px;
	line-height: 1.4;
}

.lvb-participant-hint {
	margin: 10px 0 0;
	padding: 10px 12px;
	border-radius: 10px;
	background: #eef8f5;
	color: var(--lvb-success);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.4;
}

.lvb-participants-mismatch .lvb-participant-hint {
	background: #fff0ef;
	color: #a7342d;
}

.lvb-participants-mismatch input.wccpf-field:invalid {
	border-color: var(--lvb-coral) !important;
	outline: 3px solid rgba(217, 79, 69, 0.12) !important;
}

.lvb-booking-form table.variations,
.lvb-booking-form table.variations tbody {
	display: block;
	width: 100%;
}

.lvb-booking-form table.variations tbody {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
}

.lvb-booking-form table.variations tr,
.lvb-booking-form table.variations th,
.lvb-booking-form table.variations td {
	display: block;
	width: 100%;
	padding: 0 !important;
}

.lvb-booking-form table.variations th.label {
	margin-bottom: 7px;
}

.lvb-booking-form table.variations label,
.lvb-booking-form .wccpf_label label,
.lvb-booking-form .wceb_picker_wrap label {
	color: var(--lvb-ink);
	font-size: 14px;
	font-weight: 800;
}

.lvb-booking-form table.variations select,
.lvb-booking-form .combobox-wrapper,
.lvb-booking-form input.wccpf-field,
.lvb-booking-form input.wceb_datepicker_start {
	width: 100% !important;
	min-height: 50px;
	box-sizing: border-box;
	border: 1px solid #cbd9dc !important;
	border-radius: 10px !important;
	background-color: #fff !important;
	color: var(--lvb-ink) !important;
	font-size: 15px !important;
	box-shadow: none !important;
}

.lvb-booking-form table.variations select:focus,
.lvb-booking-form input.wccpf-field:focus,
.lvb-booking-form input.wceb_datepicker_start:focus {
	border-color: var(--lvb-ocean) !important;
	outline: 3px solid rgba(8, 120, 156, 0.16) !important;
	outline-offset: 1px;
}

.lvb-booking-form .reset_variations {
	display: inline-block;
	margin-top: 10px;
	color: var(--lvb-muted);
	font-size: 13px;
}

.lvb-booking-form .wccpf-fields-container {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
}

.lvb-booking-form table.wccpf_fields_table,
.lvb-booking-form table.wccpf_fields_table tbody,
.lvb-booking-form table.wccpf_fields_table tr,
.lvb-booking-form table.wccpf_fields_table td {
	display: block;
	width: 100% !important;
	box-sizing: border-box;
	padding: 0 !important;
	border: 0 !important;
}

.lvb-booking-form .wccpf_label {
	margin-bottom: 7px;
}

.lvb-booking-form .wceb_picker_wrap .form-row {
	margin: 0;
}

/* Easy Booking masque ce bloc tant qu'aucune variation n'est choisie.
 * On garde le calendrier visible, mais les jours restent inactifs jusqu'au
 * choix du paiement et du niveau afin de ne pas contourner ses règles. */
.lvb-booking-form .wceb_picker_wrap {
	display: block !important;
}

.lvb-booking-form:not(.lvb-variant-ready) .picker.lvb-inline-calendar .picker__day {
	pointer-events: none !important;
}

.lvb-booking-form:not(.lvb-variant-ready) .picker.lvb-inline-calendar .picker__holder {
	opacity: 0.62 !important;
}

.lvb-booking-form input.wceb_datepicker_start {
	padding-left: 48px !important;
	cursor: default;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='%2308789c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important;
	background-position: 16px center !important;
}

.lvb-booking-form .booking_price {
	margin: 4px 0 16px;
	padding: 15px 17px;
	border-radius: 12px;
	background: var(--lvb-sand);
	color: var(--lvb-ink);
	font-size: 28px;
	font-weight: 800;
}

.lvb-booking-form .booking_price:empty {
	display: none;
}

.lvb-booking-form .quantity {
	vertical-align: middle;
}

.lvb-quantity-label {
	display: inline-block;
	margin: 0 8px 0 0;
	color: var(--lvb-ink);
	font-size: 14px;
	font-weight: 800;
}

.lvb-booking-form input.qty[readonly] {
	cursor: default;
	background: #f2f6f7 !important;
	color: var(--lvb-ocean-dark) !important;
	font-weight: 800;
}

.lvb-participant-total {
	display: flex;
	justify-content: space-between;
	gap: 8px 14px;
	align-items: center;
	margin: -4px 0 18px;
	padding: 10px 13px;
	border: 1px solid #cde0e4;
	border-radius: 12px;
	background: #f6fbfc;
	color: var(--lvb-ink);
}

.lvb-participant-total[hidden] {
	display: none !important;
}

.lvb-participant-total span {
	font-size: 14px;
	font-weight: 800;
}

.lvb-participant-total strong {
	font-size: 14px;
	color: var(--lvb-ocean-dark);
}

.lvb-booking-form .single_add_to_cart_button,
.lvb-booking-form .gem-button-container .gem-button {
	min-height: 52px;
	border-radius: 10px !important;
	background: var(--lvb-coral) !important;
	color: #fff !important;
	font-size: 15px !important;
	font-weight: 800 !important;
	letter-spacing: 0.03em;
	box-shadow: 0 10px 22px rgba(217, 79, 69, 0.25);
}

.lvb-booking-form .single_add_to_cart_button:hover,
.lvb-booking-form .single_add_to_cart_button:focus {
	background: #bd3e36 !important;
}

.lvb-reassurance {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 14px 0 0;
	color: var(--lvb-muted);
	font-size: 13px;
}

.lvb-reassurance strong {
	color: var(--lvb-success);
}

/* Calendrier Easy Booking intégré : toujours visible, sans clic préalable. */
.lvb-booking-enhanced .picker.lvb-inline-calendar {
	position: static !important;
	width: 100% !important;
	margin: 12px 0 0 !important;
	font-size: 16px !important;
	text-align: left;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__holder {
	position: static !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	max-height: none !important;
	overflow: visible !important;
	box-sizing: border-box;
	border: 1px solid var(--lvb-line) !important;
	border-radius: 14px !important;
	background: #fff !important;
	opacity: 1 !important;
	visibility: visible !important;
	transform: none !important;
	pointer-events: auto !important;
	transition: none !important;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__frame {
	position: static !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	border-radius: 14px !important;
	overflow: hidden !important;
	opacity: 1 !important;
	transform: none !important;
	box-shadow: 0 9px 24px rgba(8, 68, 90, 0.08) !important;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__wrap {
	display: block !important;
	width: 100% !important;
	height: auto !important;
	margin: 0 !important;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__box {
	display: block !important;
	padding: 18px 18px 14px !important;
	background: #fff !important;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__title {
	margin-bottom: 5px;
	color: var(--lvb-ocean-dark);
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__month,
.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__year {
	color: var(--lvb-ink);
	font-weight: 800;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__table {
	margin: 13px 0 8px !important;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__day {
	min-height: 42px;
	box-sizing: border-box;
	padding: 10px 4px !important;
	border-radius: 8px;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__day--selected {
	border-color: var(--lvb-ocean) !important;
	background: var(--lvb-ocean) !important;
	color: #fff !important;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__day--highlighted:not(.picker__day--selected) {
	border-color: var(--lvb-ocean) !important;
	background: #e7f5f8 !important;
	color: var(--lvb-ocean-dark) !important;
}

.lvb-booking-form:not(.lvb-variant-ready) .picker.lvb-inline-calendar .picker__day--highlighted {
	border-color: #cfd9dc !important;
	background: #eef2f3 !important;
	color: #7b8a90 !important;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__button--today,
.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__button--clear {
	width: 50% !important;
	color: var(--lvb-ink);
	font-weight: 800;
}

.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__button--close {
	display: none !important;
}

@media (min-width: 768px) {
	body.lvb-booking-enhanced .single-product-content {
		display: block !important;
	}

	body.lvb-booking-enhanced .single-product-content-left {
		float: none !important;
		width: 100% !important;
		max-width: 760px;
		margin: 0 auto 30px !important;
	}

	body.lvb-booking-enhanced .single-product-content-left .gem-gallery-preview-carousel-wrap {
		margin-right: auto !important;
		margin-left: auto !important;
	}

	body.lvb-booking-enhanced .single-product-content-right {
		float: none !important;
		width: 100% !important;
		max-width: 760px;
		margin-right: auto !important;
		margin-left: auto !important;
	}

}

@media (max-width: 767px) {
	body.lvb-booking-enhanced .single-product-content {
		margin-left: 0;
		margin-right: 0;
	}

	body.lvb-booking-enhanced .single-product-content-right {
		padding-left: 0;
		padding-right: 0;
	}

	.lvb-booking-form {
		padding: 18px 16px;
		border-radius: 16px;
	}

	.lvb-booking-form table.variations tbody,
	.lvb-booking-form .wccpf-fields-container {
		grid-template-columns: 1fr;
	}

	.lvb-booking-form .gem-button-container,
	.lvb-booking-form .single_add_to_cart_button,
	.lvb-booking-form .gem-button-container .gem-button {
		display: block !important;
		width: 100% !important;
		box-sizing: border-box;
	}

	.lvb-reassurance {
		align-items: flex-start;
		flex-direction: column;
		gap: 2px;
	}

	.lvb-booking-enhanced .picker.lvb-inline-calendar {
		font-size: 15px !important;
	}

	.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__box {
		padding: 14px 10px 10px !important;
	}

	.lvb-booking-enhanced .picker.lvb-inline-calendar .picker__day {
		min-height: 40px;
		padding: 9px 2px !important;
	}
}

/* Keep related-product cards aligned when their source images use different ratios. */
body.lvb-booking-enhanced .related-products .products.row.inline-row {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
}

body.lvb-booking-enhanced .related-products .products.row.inline-row > .product {
	display: flex;
}

body.lvb-booking-enhanced .related-products .product > .product-inner {
	display: flex;
	flex-direction: column;
	width: 100%;
}

body.lvb-booking-enhanced .related-products .product-image {
	display: block;
	aspect-ratio: 3 / 2;
	overflow: hidden;
}

body.lvb-booking-enhanced .related-products .product-image-inner {
	display: block;
	width: 100%;
	height: 100%;
}

body.lvb-booking-enhanced .related-products .product-image img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	object-position: center;
}

body.lvb-booking-enhanced .related-products .product-info {
	flex: 1 1 auto;
}

body.lvb-booking-enhanced .related-products .product-bottom {
	margin-top: auto;
}

/* Keep the lower product sections visually aligned with the booking journey. */
@media (min-width: 768px) {
	body.lvb-booking-enhanced .single-product-content-bottom {
		width: 100%;
		max-width: 760px;
		margin-right: auto;
		margin-left: auto;
	}
}

/* The theme reserves six columns although only five related products are shown. */
body.lvb-booking-enhanced .related-products .products.row.inline-row {
	justify-content: center;
}
