.jlvb-villa {
	--jlvb-vp-navy: #3a332d;
	--jlvb-vp-secondary-dark: #504238;
	--jlvb-vp-cream: #f4efe6;
	--jlvb-vp-ivory: #f4efe6;
	--jlvb-vp-white: #f4efe6;
	--jlvb-vp-green: #15964a;
	--jlvb-vp-line: rgba(58, 51, 45, 0.16);
	--jlvb-vp-blue: #8a6b3d;
	--jlvb-vp-blue-soft: #f0e7d8;
	--jlvb-vp-action-hover: #504238;
	width: 100%;
	overflow: visible;
	overflow-x: clip;
	color: var(--jlvb-vp-navy);
	background: var(--jlvb-vp-cream);
	font-family: "Manrope", "Helvetica Neue", Arial, sans-serif;
}

/* Manually curated villas shown at the bottom of each villa page. */
.jlvb-related-villas {
	--jlvb-navy: #443a33;
	--jlvb-ivory: #f4efe6;
	--jlvb-red: #d85a52;
	--jlvb-action: #8a6b3d;
	--jlvb-action-hover: #6f542f;
	--jlvb-champagne: #c8b38b;
	width: 100vw;
	margin: clamp(90px, 9vw, 150px) 0 0 calc(50% - 50vw);
	padding: clamp(84px, 7vw, 124px) 24px clamp(96px, 8vw, 140px);
	overflow: hidden;
	color: var(--jlvb-ivory);
	background: #443a33;
}

.jlvb-related-villas__inner {
	width: min(1540px, 100%);
	margin: 0 auto;
}

.jlvb-related-villas__head {
	margin-bottom: clamp(36px, 4vw, 58px);
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 30px;
}

.jlvb-related-villas__eyebrow {
	margin: 0 0 12px !important;
	color: var(--jlvb-champagne) !important;
	font: 700 12px/1.2 "Manrope", "Helvetica Neue", Arial, sans-serif !important;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.jlvb-related-villas__head h2 {
	margin: 0 !important;
	color: var(--jlvb-ivory) !important;
	font: 400 clamp(44px, 4.2vw, 68px)/.98 "Playfair Display", "Times New Roman", serif !important;
}

.jlvb-related-villas .jlvb-slider__controls {
	position: static;
	width: auto;
	padding: 0;
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	transform: none;
}

.jlvb-related-villas .jlvb-slider__arrow {
	width: 50px;
	height: 50px;
	font-size: 21px;
}

.jlvb-related-villas__slider {
	overflow: hidden;
}

.jlvb-related-villas .jlvb-slider__track {
	padding-inline: 0;
	scroll-padding-inline: 0;
}

@media (max-width: 767px) {
	.jlvb-related-villas {
		margin-top: 76px;
		padding: 68px 18px 82px;
	}

	.jlvb-related-villas__head {
		align-items: center;
		margin-bottom: 32px;
	}

	.jlvb-related-villas__head h2 {
		font-size: 43px !important;
	}

	.jlvb-related-villas .jlvb-slider__controls {
		display: none;
	}

	.jlvb-related-villas .jlvb-slider__track {
		gap: 16px;
		padding-right: 12vw;
	}

}

.jlvb-villa *,
.jlvb-villa *::before,
.jlvb-villa *::after {
	box-sizing: border-box;
}

.jlvb-villa button,
.jlvb-villa input {
	font: inherit;
}

.jlvb-villa-icon {
	width: 22px;
	height: 22px;
	display: block;
	flex: 0 0 auto;
}

.jlvb-villa-gallery {
	position: relative;
	width: min(1390px, calc(100% - 48px));
	height: auto;
	aspect-ratio: 2.3 / 1;
	margin: clamp(82px, 7vw, 118px) auto 0;
	overflow: hidden;
	border-radius: 28px;
	background: #d8d6d0;
}

.jlvb-villa-gallery--single {
	display: block;
}

.jlvb-villa-gallery__item {
	position: relative;
	width: 100%;
	height: 100%;
	min-width: 0;
	margin: 0 !important;
	padding: 0 !important;
	overflow: hidden;
	border: 0 !important;
	border-radius: 0 !important;
	background: #d8d6d0 !important;
	box-shadow: none !important;
	cursor: zoom-in;
}

.jlvb-villa-gallery__item img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
	transition: transform 700ms cubic-bezier(.2, .7, .2, 1);
}

.jlvb-villa-gallery__item:hover img {
	transform: scale(1.025);
}

.jlvb-villa-gallery__count {
	position: absolute;
	z-index: 5;
	top: 24px;
	right: 24px;
	min-width: 88px;
	height: 42px;
	padding: 0 17px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	border-radius: 999px;
	color: #f4efe6;
	background: rgba(37, 30, 25, .94);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .02em;
	pointer-events: none;
}

.jlvb-villa-gallery__nav {
	position: absolute;
	z-index: 5;
	right: 20px;
	top: 50%;
	display: grid;
	grid-template-columns: repeat(2, 47px);
	transform: translateY(-50%);
	border-radius: 999px;
	overflow: hidden;
	background: rgba(244, 239, 230, .96);
	box-shadow: 0 10px 28px rgba(48, 39, 33, .13);
}

.jlvb-villa-gallery__nav button {
	width: 47px;
	height: 47px;
	margin: 0 !important;
	padding: 0 !important;
	display: grid !important;
	place-items: center;
	border: 0 !important;
	border-radius: 0 !important;
	color: var(--jlvb-vp-navy) !important;
	background: transparent !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: color .18s ease, background .18s ease;
}

.jlvb-villa-gallery__nav button + button {
	border-left: 1px solid rgba(48, 42, 37, .12) !important;
}

.jlvb-villa-gallery__nav button:hover,
.jlvb-villa-gallery__nav button:focus-visible {
	color: #f4efe6 !important;
	background: var(--jlvb-vp-action-hover) !important;
}

.jlvb-villa-gallery__nav .jlvb-villa-icon {
	width: 18px;
	height: 18px;
}

.jlvb-villa-gallery__all {
	position: absolute;
	z-index: 4;
	left: 24px;
	bottom: 22px;
	min-height: 44px;
	margin: 0 !important;
	padding: 0 18px !important;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	border: 1px solid rgba(48, 42, 37, .16) !important;
	border-radius: 999px !important;
	color: var(--jlvb-vp-navy) !important;
	background: rgba(244, 239, 230, .94) !important;
	box-shadow: 0 10px 28px rgba(48, 39, 33, .13) !important;
	font-size: 14px;
	font-weight: 600;
	text-transform: none !important;
	cursor: pointer;
	backdrop-filter: blur(9px);
}

.jlvb-villa-gallery__all .jlvb-villa-icon {
	width: 18px;
	height: 18px;
}

.jlvb-villa-gallery__empty {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	color: var(--jlvb-vp-navy);
	font-size: 16px;
}

.jlvb-villa__heading {
	width: min(1540px, calc(100% - 44px));
	margin: 0 auto;
	padding: clamp(48px, 5vw, 78px) 0 clamp(42px, 4.4vw, 70px);
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 60px;
	border-bottom: 1px solid var(--jlvb-vp-line);
}

.jlvb-villa__heading h1 {
	margin: 0;
	color: var(--jlvb-vp-navy);
	font: 400 clamp(54px, 5.4vw, 88px)/.94 "Playfair Display", "Times New Roman", serif;
	letter-spacing: -.045em;
}

.jlvb-villa__location {
	margin: 22px 0 0;
	display: flex;
	align-items: center;
	gap: 10px;
	color: rgba(48, 42, 37, .76);
	font-size: 16px;
}

.jlvb-villa__location .jlvb-villa-icon {
	width: 18px;
	height: 18px;
}

.jlvb-villa__quick-specs {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	justify-content: flex-end;
}

.jlvb-villa__quick-specs > span {
	min-height: 52px;
	padding: 0 18px;
	display: inline-flex;
	align-items: center;
	gap: 9px;
	border: 1px solid var(--jlvb-vp-line);
	border-radius: 999px;
	background: rgba(244, 239, 230, .5);
	font-size: 13px;
	white-space: nowrap;
}

.jlvb-villa__quick-specs .jlvb-villa-icon {
	width: 18px;
	height: 18px;
}

.jlvb-villa__quick-specs b {
	font-size: 15px;
}

.jlvb-villa__layout {
	width: min(1540px, calc(100% - 44px));
	margin: 0 auto;
	padding: clamp(58px, 6vw, 96px) 0 112px;
	display: grid;
	grid-template-columns: minmax(0, 1fr) 390px;
	align-items: start;
	gap: clamp(55px, 7vw, 112px);
}

.jlvb-villa__content {
	min-width: 0;
}

.jlvb-villa__booking-column {
	position: relative;
	align-self: stretch;
	min-width: 0;
}

.jlvb-villa-section {
	padding: 0 0 clamp(72px, 7vw, 112px);
}

.jlvb-villa-section + .jlvb-villa-section {
	padding-top: clamp(70px, 7vw, 108px);
	border-top: 1px solid var(--jlvb-vp-line);
}

.jlvb-villa-section__eyebrow {
	margin: 0 0 16px;
	color: rgba(48, 42, 37, .67);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.jlvb-villa-section h2,
.jlvb-villa-similar h2 {
	margin: 0;
	color: var(--jlvb-vp-navy);
	font: 400 clamp(43px, 4vw, 64px)/.98 "Playfair Display", "Times New Roman", serif;
	letter-spacing: -.035em;
}

.jlvb-villa-section__head {
	margin-bottom: 42px;
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 30px;
}

.jlvb-villa-description {
	padding-top: 0 !important;
	border-top: 0 !important;
}

.jlvb-villa-description__copy {
	max-width: 920px;
	margin-top: 34px;
	color: rgba(48, 42, 37, .82);
	font-size: clamp(16px, 1.25vw, 19px);
	line-height: 1.77;
}

.jlvb-villa-description__copy p {
	margin: 0 0 20px;
}

.jlvb-speciality-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 11px;
}

.jlvb-speciality-tag {
	min-height: 42px;
	padding: 9px 18px;
	display: inline-flex;
	align-items: center;
	border-radius: 11px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.25;
	transition: transform .2s ease, box-shadow .2s ease;
}

.jlvb-speciality-tag:hover {
	transform: translateY(-2px);
	box-shadow: 0 9px 20px rgba(52, 43, 36, .12);
}

.jlvb-speciality-tag--included {
	color: #f4efe6;
	background: linear-gradient(135deg, var(--jlvb-vp-blue), var(--jlvb-vp-secondary-dark));
}

.jlvb-speciality-tag--extra {
	color: #f4efe6;
	background: #736e68;
}

.jlvb-speciality-legend {
	margin-top: 30px;
	display: flex;
	flex-wrap: wrap;
	gap: 28px;
	color: rgba(48, 42, 37, .78);
	font-size: 13px;
}

.jlvb-speciality-legend span {
	display: inline-flex;
	align-items: center;
	gap: 9px;
}

.jlvb-speciality-legend i {
	width: 20px;
	height: 20px;
	display: block;
	border-radius: 50%;
}

.jlvb-speciality-legend .is-included {
	background: var(--jlvb-vp-blue);
}

.jlvb-speciality-legend .is-extra {
	background: #736e68;
}

.jlvb-facts {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--jlvb-vp-line);
	border-left: 1px solid var(--jlvb-vp-line);
}

.jlvb-fact {
	min-height: 138px;
	padding: 24px 18px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 22px;
	border-right: 1px solid var(--jlvb-vp-line);
	border-bottom: 1px solid var(--jlvb-vp-line);
}

.jlvb-fact .jlvb-villa-icon {
	width: 25px;
	height: 25px;
}

.jlvb-fact strong,
.jlvb-fact span {
	display: block;
}

.jlvb-fact strong {
	margin-bottom: 6px;
	font: 600 18px/1.2 "Manrope", "Helvetica Neue", Arial, sans-serif;
}

.jlvb-fact span {
	color: rgba(48, 42, 37, .65);
	font-size: 12px;
	line-height: 1.35;
}

.jlvb-location-block {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(270px, .82fr);
	gap: 22px;
}

.jlvb-distances {
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--jlvb-vp-line);
}

.jlvb-distances > div {
	min-height: 57px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 25px;
	border-bottom: 1px solid var(--jlvb-vp-line);
}

.jlvb-distances dt,
.jlvb-distances dd {
	margin: 0;
	font-size: 14px;
}

.jlvb-distances dd {
	font-weight: 600;
}

.jlvb-map-card {
	position: relative;
	min-height: 100%;
	padding: 32px;
	display: flex;
	align-items: end;
	gap: 18px;
	overflow: hidden;
	border-radius: 24px;
	color: var(--jlvb-vp-ivory) !important;
	background:
		linear-gradient(135deg, rgba(48, 42, 37, .84), rgba(48, 42, 37, .97)),
		repeating-linear-gradient(45deg, transparent, transparent 25px, rgba(244, 239, 230,.08) 25px, rgba(244, 239, 230,.08) 27px);
	text-decoration: none !important;
}

.jlvb-map-card::before,
.jlvb-map-card::after {
	position: absolute;
	content: "";
	border: 1px solid rgba(244, 239, 230, .18);
	border-radius: 50%;
}

.jlvb-map-card::before {
	width: 210px;
	height: 210px;
	top: -80px;
	right: -65px;
}

.jlvb-map-card::after {
	width: 120px;
	height: 120px;
	top: -35px;
	right: -22px;
}

.jlvb-map-card__pin {
	width: 54px;
	height: 54px;
	display: grid;
	place-items: center;
	flex: 0 0 54px;
	border-radius: 50%;
	color: var(--jlvb-vp-navy);
	background: var(--jlvb-vp-ivory);
}

.jlvb-map-card__pin .jlvb-villa-icon {
	width: 23px;
	height: 23px;
}

.jlvb-map-card span:nth-child(2) {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	gap: 7px;
}

.jlvb-map-card small {
	color: rgba(244, 239, 230, .72);
	font-size: 11px;
}

.jlvb-map-card strong {
	font: 400 31px/1 "Playfair Display", "Times New Roman", serif;
}

.jlvb-map-card > .jlvb-villa-icon {
	position: relative;
	z-index: 1;
	width: 26px;
	height: 26px;
	margin-left: auto;
}

.jlvb-amenities {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 44px 35px;
}

.jlvb-amenity-group.is-collapsed {
	display: none;
}

.jlvb-amenity-group h3 {
	margin: 0 0 20px;
	padding-bottom: 15px;
	border-bottom: 1px solid var(--jlvb-vp-line);
	color: var(--jlvb-vp-navy);
	font: 400 26px/1.05 "Playfair Display", "Times New Roman", serif;
}

.jlvb-amenity-group ul,
.jlvb-bedroom-card ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jlvb-amenity-group li {
	margin: 0 0 13px;
	display: flex;
	align-items: flex-start;
	gap: 10px;
	color: rgba(48, 42, 37, .78);
	font-size: 13px;
	line-height: 1.45;
}

.jlvb-amenity-group li .jlvb-villa-icon {
	width: 16px;
	height: 16px;
	margin-top: 1px;
}

.jlvb-outline-button {
	min-height: 50px;
	margin: 42px 0 0 !important;
	padding: 0 22px !important;
	display: inline-flex !important;
	align-items: center;
	gap: 10px;
	border: 1px solid var(--jlvb-vp-navy) !important;
	border-radius: 999px !important;
	color: var(--jlvb-vp-navy) !important;
	background: transparent !important;
	box-shadow: none !important;
	font-size: 13px;
	font-weight: 600;
	text-transform: none !important;
	cursor: pointer;
}

.jlvb-outline-button .jlvb-villa-icon {
	width: 17px;
	height: 17px;
	transition: transform .2s ease;
}

.jlvb-outline-button.is-open .jlvb-villa-icon {
	transform: rotate(180deg);
}

.jlvb-bedroom-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 18px;
}

.jlvb-bedroom-card {
	position: relative;
	min-height: 260px;
	overflow: hidden;
	border: 1px solid var(--jlvb-vp-line);
	border-radius: 22px;
	background: rgba(244, 239, 230, .54);
	box-shadow: 0 13px 28px rgba(50, 42, 36, .06);
	transition: transform .25s ease, box-shadow .25s ease;
}

.jlvb-bedroom-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 19px 38px rgba(50, 42, 36, .11);
}

.jlvb-bedroom-card__image {
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: #d8d6d0;
}

.jlvb-bedroom-card__image img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
	transition: transform .55s ease;
}

.jlvb-bedroom-card:hover .jlvb-bedroom-card__image img {
	transform: scale(1.035);
}

.jlvb-bedroom-card__body {
	padding: 25px 26px 28px;
	display: grid;
	grid-template-columns: minmax(130px, .85fr) minmax(0, 1.15fr);
	gap: 22px;
}

.jlvb-bedroom-card:not(.has-image) .jlvb-bedroom-card__body {
	min-height: 260px;
	align-items: start;
}

.jlvb-bedroom-card h3 {
	margin: 0;
	color: var(--jlvb-vp-navy);
	font: 400 28px/1.08 "Playfair Display", "Times New Roman", serif;
}

.jlvb-bedroom-card li {
	position: relative;
	margin-bottom: 10px;
	padding-left: 15px;
	color: rgba(48, 42, 37, .75);
	font-size: 13px;
	line-height: 1.4;
}

.jlvb-bedroom-card li::before {
	position: absolute;
	top: .58em;
	left: 0;
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--jlvb-vp-navy);
	content: "";
}

.jlvb-villa-section__head--calendar {
	align-items: center;
}

.jlvb-calendar-nav {
	display: flex;
	gap: 9px;
}

.jlvb-calendar-nav button {
	width: 44px;
	height: 44px;
	margin: 0 !important;
	padding: 0 !important;
	display: grid !important;
	place-items: center;
	border: 1px solid var(--jlvb-vp-line) !important;
	border-radius: 50% !important;
	color: var(--jlvb-vp-navy) !important;
	background: rgba(244, 239, 230, .5) !important;
	box-shadow: none !important;
	cursor: pointer;
}

.jlvb-calendar-nav .jlvb-villa-icon {
	width: 18px;
	height: 18px;
}

.jlvb-calendar {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 28px;
}

.jlvb-calendar-month {
	padding: 23px;
	border: 1px solid var(--jlvb-vp-line);
	border-radius: 21px;
	background: rgba(244, 239, 230, .52);
}

.jlvb-calendar-month h3 {
	margin: 0 0 20px;
	font: 400 25px/1 "Playfair Display", "Times New Roman", serif;
	text-align: center;
}

.jlvb-calendar-month__grid {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 5px;
}

.jlvb-calendar-month__weekday {
	padding: 5px 0 10px;
	color: rgba(48, 42, 37, .52);
	font-size: 9px;
	font-weight: 600;
	text-align: center;
	text-transform: uppercase;
}

.jlvb-calendar-day {
	min-height: 48px;
	margin: 0 !important;
	padding: 0 !important;
	display: flex !important;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1px;
	border: 0 !important;
	border-radius: 12px;
	color: var(--jlvb-vp-navy) !important;
	background: transparent !important;
	box-shadow: none !important;
	font-size: 11px;
	font-weight: 500;
	text-transform: none !important;
	cursor: pointer;
	transition: color .16s ease, background .16s ease, transform .16s ease;
}

.jlvb-calendar-day__number {
	display: block;
	font: inherit;
	line-height: 1;
}

.jlvb-calendar-day__price {
	display: block;
	color: #8a6b3d;
	font-size: clamp(7px, .55vw, 9px);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -.02em;
}

.jlvb-calendar-day__prices {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1px;
	line-height: 1;
}

.jlvb-calendar-day__price--old {
	color: #b7554f;
	font-size: clamp(7px, .5vw, 8px);
	font-weight: 600;
	text-decoration: line-through;
	text-decoration-thickness: 1px;
}

.jlvb-calendar-day__price--sale {
	color: #3f7148;
	font-size: clamp(8px, .58vw, 10px);
	font-weight: 800;
}

.jlvb-calendar-day.is-selected-start .jlvb-calendar-day__price,
.jlvb-calendar-day.is-selected-end .jlvb-calendar-day__price {
	color: #f4efe6;
}

.jlvb-calendar-day.is-empty {
	visibility: hidden;
}

.jlvb-calendar-day.is-past {
	opacity: .34;
	pointer-events: none;
}

.jlvb-calendar-day.is-booked {
	color: rgba(48, 42, 37, .4) !important;
	background: rgba(48, 42, 37, .09) !important;
	text-decoration: line-through;
	pointer-events: none;
}

.jlvb-calendar-day.is-today {
	box-shadow: inset 0 0 0 1px var(--jlvb-vp-navy);
	font-weight: 700;
}

.jlvb-calendar-day:not(.is-past):not(.is-booked):hover,
.jlvb-calendar-day:not(.is-past):not(.is-booked):focus-visible {
	background: var(--jlvb-vp-blue-soft) !important;
	transform: scale(1.06);
}

.jlvb-calendar-day.is-selected-start,
.jlvb-calendar-day.is-selected-end {
	color: #f4efe6 !important;
	background: var(--jlvb-vp-blue) !important;
	box-shadow: 0 6px 15px rgba(48, 42, 37, .22);
}

.jlvb-calendar-day.is-selected-range {
	border-radius: 9px;
	background: var(--jlvb-vp-blue-soft) !important;
}

.jlvb-calendar-day.is-discounted:not(.is-selected-start):not(.is-selected-end):not(.is-selected-range) {
	background: rgba(106, 151, 111, .075) !important;
	box-shadow: inset 0 0 0 1px rgba(74, 113, 78, .07) !important;
}

.jlvb-calendar-day.is-discounted:not(.is-selected-start):not(.is-selected-end):not(.is-selected-range) .jlvb-calendar-day__price--old {
	color: #b7554f;
}

.jlvb-calendar-day.is-discounted:not(.is-selected-start):not(.is-selected-end):not(.is-selected-range) .jlvb-calendar-day__price--sale {
	color: #3f7148;
}

.jlvb-calendar-day.is-discounted:not(.is-past):not(.is-booked):hover,
.jlvb-calendar-day.is-discounted:not(.is-past):not(.is-booked):focus-visible {
	background: rgba(106, 151, 111, .12) !important;
}

.jlvb-calendar-legend {
	margin-top: 20px;
	display: flex;
	gap: 24px;
	color: rgba(48, 42, 37, .65);
	font-size: 11px;
}

.jlvb-calendar-legend span {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}

.jlvb-calendar-legend i {
	width: 12px;
	height: 12px;
	display: block;
	border: 1px solid var(--jlvb-vp-line);
	border-radius: 50%;
	background: rgba(244, 239, 230, .6);
}

.jlvb-calendar-legend i.is-booked {
	background: rgba(48, 42, 37, .1);
}

.jlvb-calendar-legend i.is-discounted {
	border-color: rgba(74, 113, 78, .12);
	border-radius: 4px;
	background: rgba(106, 151, 111, .09);
}

.jlvb-price-table-wrap {
	overflow-x: auto;
	border: 1px solid var(--jlvb-vp-line);
	border-radius: 20px;
	background: rgba(244, 239, 230, .45);
}

.jlvb-price-table {
	width: 100%;
	border-collapse: collapse;
	color: var(--jlvb-vp-navy);
	font-size: 13px;
}

.jlvb-price-table th,
.jlvb-price-table td {
	padding: 19px 21px;
	border: 0;
	border-bottom: 1px solid var(--jlvb-vp-line);
	text-align: left;
	white-space: nowrap;
}

.jlvb-price-table th {
	color: rgba(48, 42, 37, .62);
	background: rgba(48, 42, 37, .04);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.jlvb-price-table tbody tr:last-child td {
	border-bottom: 0;
}

.jlvb-price-table td:nth-child(2),
.jlvb-price-table td:nth-child(3) {
	font-weight: 600;
}

.jlvb-rules {
	margin: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	border-top: 1px solid var(--jlvb-vp-line);
	border-left: 1px solid var(--jlvb-vp-line);
}

.jlvb-rules > div {
	min-height: 80px;
	padding: 17px 20px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 7px;
	border-right: 1px solid var(--jlvb-vp-line);
	border-bottom: 1px solid var(--jlvb-vp-line);
	background: rgba(244, 239, 230, .45);
	transition: background .2s ease, transform .2s ease;
}

.jlvb-rules > div:hover {
	position: relative;
	z-index: 1;
	background: #f4efe6;
	transform: translateY(-2px);
}

.jlvb-rules dt,
.jlvb-rules dd {
	margin: 0;
}

.jlvb-rules dt {
	color: rgba(48, 42, 37, .58);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
}

.jlvb-rules dd {
	font-size: 13px;
	line-height: 1.4;
}

.jlvb-booking-policy {
	padding: clamp(35px, 4vw, 55px) !important;
	border: 1px solid var(--jlvb-vp-line) !important;
	border-radius: 28px;
	background:
		radial-gradient(circle at 100% 0, rgba(138, 107, 61, .09), transparent 36%),
		rgba(244, 239, 230, .55);
	box-shadow: 0 18px 45px rgba(50, 42, 36, .07);
	scroll-margin-top: 130px;
}

.jlvb-booking {
	position: sticky;
	top: 112px;
	padding: 30px 27px 27px;
	border: 1px solid rgba(48, 42, 37, .13);
	border-radius: 24px;
	background: #f4efe6;
	box-shadow: 0 22px 55px rgba(50, 42, 36, .12);
}

.admin-bar .jlvb-booking {
	top: 144px;
}

.jlvb-booking h2 {
	margin: 0 0 25px;
	color: var(--jlvb-vp-navy);
	font: 400 33px/1 "Playfair Display", "Times New Roman", serif;
}

.jlvb-booking__label,
.jlvb-booking label > span,
.jlvb-booking__guests > div > span {
	display: block;
	color: #8a6b3d;
	font-size: 12px;
	font-weight: 600;
}

.jlvb-booking__label {
	margin: 0 0 11px;
}

.jlvb-booking__label-row {
	margin: 0 0 11px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

.jlvb-booking__label-row .jlvb-booking__label {
	margin: 0;
}

button.jlvb-booking__clear-dates {
	width: auto;
	min-width: 0;
	height: auto;
	margin: 0 !important;
	padding: 2px 0 !important;
	border: 0 !important;
	border-bottom: 1px solid currentColor !important;
	border-radius: 0 !important;
	color: #8a6b3d !important;
	background: transparent !important;
	box-shadow: none !important;
	font-size: 10px;
	font-weight: 600;
	line-height: 1.2;
	text-transform: none !important;
	cursor: pointer;
}

button.jlvb-booking__clear-dates:hover,
button.jlvb-booking__clear-dates:focus-visible {
	color: var(--jlvb-vp-secondary-dark) !important;
}

button.jlvb-booking__clear-dates:disabled {
	opacity: .36;
	cursor: default;
}

.jlvb-booking__dates {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
}

.jlvb-booking label > span {
	margin-bottom: 8px;
}

.jlvb-booking input[type="date"] {
	width: 100%;
	height: 50px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid rgba(48, 42, 37, .2);
	border-radius: 0;
	color: var(--jlvb-vp-navy);
	background: #f4efe6;
	box-shadow: none;
	font-size: 11px;
}

.jlvb-booking__guests {
	margin: 20px 0 17px;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.jlvb-booking__stepper {
	height: 43px;
	margin-top: 8px;
	padding: 3px;
	display: grid;
	grid-template-columns: 35px 1fr 35px;
	align-items: center;
	border: 1px solid rgba(48, 42, 37, .16);
	border-radius: 999px;
}

.jlvb-booking__stepper button {
	width: 34px;
	height: 34px;
	margin: 0 !important;
	padding: 0 !important;
	display: grid !important;
	place-items: center;
	border: 0 !important;
	border-radius: 50% !important;
	color: #f4efe6 !important;
	background: var(--jlvb-vp-blue) !important;
	box-shadow: none !important;
	font: 500 20px/1 "Manrope", "Helvetica Neue", Arial, sans-serif !important;
	text-transform: none !important;
	cursor: pointer;
	transition: background .18s ease, transform .18s ease;
}

.jlvb-booking__stepper button:hover:not(:disabled),
.jlvb-booking__stepper button:focus-visible:not(:disabled) {
	background: var(--jlvb-vp-action-hover) !important;
	transform: scale(1.04);
}

.jlvb-booking__stepper button:disabled {
	opacity: .4;
	cursor: default;
}

.jlvb-booking__stepper output {
	color: var(--jlvb-vp-navy);
	font-size: 13px;
	font-weight: 600;
	text-align: center;
}

.jlvb-booking__summary {
	border-top: 1px solid var(--jlvb-vp-line);
}

.jlvb-booking__summary > div {
	min-height: 48px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 15px;
	border-bottom: 1px solid rgba(48, 42, 37, .11);
	color: #8a6b3d;
	font-size: 13px;
}

.jlvb-booking__summary small {
	font-size: 10px;
}

.jlvb-booking__summary strong {
	color: var(--jlvb-vp-navy);
	font-size: 13px;
}

.jlvb-booking__summary strong.is-discount {
	color: var(--jlvb-vp-green);
}

.jlvb-booking__summary .jlvb-booking__total span,
.jlvb-booking__summary .jlvb-booking__total strong {
	font-size: 15px;
	font-weight: 700;
}

.jlvb-booking__message {
	min-height: 34px;
	margin: 12px 0 2px;
	color: rgba(48, 42, 37, .62);
	font-size: 10px;
	line-height: 1.4;
}

.jlvb-booking__message.is-error {
	color: #b43f39;
}

.jlvb-booking__actions {
	display: grid;
	grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr);
	gap: 10px;
}

.jlvb-booking__actions a {
	min-height: 48px;
	padding: 0 14px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	text-align: center;
	text-decoration: none !important;
	transition: transform .18s ease, opacity .18s ease;
}

.jlvb-booking__actions a:hover {
	transform: translateY(-1px);
}

.jlvb-booking__enquiry {
	border: 1px solid rgba(48, 42, 37, .18);
	color: var(--jlvb-vp-navy) !important;
	background: #faf6ee;
}

.jlvb-booking__book {
	color: #f4efe6 !important;
	background: linear-gradient(135deg, var(--jlvb-vp-blue), var(--jlvb-vp-secondary-dark));
	box-shadow: 0 9px 22px rgba(48, 42, 37, .19);
}

.jlvb-booking__book .jlvb-villa-icon {
	width: 17px;
	height: 17px;
}

.jlvb-booking__actions a.is-disabled {
	opacity: .45;
	pointer-events: none;
}

.jlvb-booking__policy-link {
	margin-top: 17px;
	padding-top: 15px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	border-top: 1px solid rgba(48, 42, 37, .11);
	color: rgba(48, 42, 37, .72) !important;
	font-size: 11px;
	font-weight: 600;
	text-decoration: none !important;
}

.jlvb-booking__policy-link .jlvb-villa-icon {
	width: 14px;
	height: 14px;
	transition: transform .2s ease;
}

.jlvb-booking__policy-link:hover .jlvb-villa-icon {
	transform: translateX(3px);
}

.jlvb-villa-similar {
	padding: clamp(75px, 7vw, 112px) 0 clamp(86px, 8vw, 126px);
	color: var(--jlvb-vp-ivory);
	background: var(--jlvb-vp-navy);
}

.jlvb-villa-similar__inner {
	width: min(1540px, calc(100% - 44px));
	margin: 0 auto;
}

.jlvb-villa-similar .jlvb-villa-section__eyebrow,
.jlvb-villa-similar h2 {
	color: var(--jlvb-vp-ivory);
}

.jlvb-villa-similar__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 28px;
}

.jlvb-villa-similar__grid .jlvb-card {
	width: 100%;
	min-width: 0;
	flex: none;
}

.jlvb-lightbox {
	position: fixed;
	z-index: 999999;
	inset: 0;
	padding: 60px 90px;
	display: grid;
	grid-template-columns: 54px minmax(0, 1fr) 54px;
	align-items: center;
	gap: 25px;
	color: #f4efe6;
	background: rgba(36, 29, 24, .96);
}

.jlvb-lightbox[hidden] {
	display: none;
}

.jlvb-lightbox figure {
	width: 100%;
	height: calc(100vh - 120px);
	margin: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 15px;
}

.jlvb-lightbox img {
	max-width: 100%;
	max-height: calc(100% - 30px);
	display: block;
	object-fit: contain;
}

.jlvb-lightbox figcaption {
	color: rgba(244, 239, 230, .7);
	font-size: 12px;
}

.jlvb-lightbox button {
	width: 52px;
	height: 52px;
	margin: 0 !important;
	padding: 0 !important;
	display: grid !important;
	place-items: center;
	border: 1px solid rgba(244, 239, 230, .25) !important;
	border-radius: 50% !important;
	color: #f4efe6 !important;
	background: rgba(244, 239, 230, .08) !important;
	box-shadow: none !important;
	cursor: pointer;
}

.jlvb-lightbox__close {
	position: absolute;
	top: 22px;
	right: 22px;
	font-size: 27px !important;
}

.jlvb-lightbox .jlvb-villa-icon {
	width: 22px;
	height: 22px;
}

body.jlvb-lightbox-open {
	overflow: hidden;
}

@media (max-width: 1250px) {
	.jlvb-villa__layout {
		grid-template-columns: minmax(0, 1fr) 355px;
		gap: 48px;
	}

	.jlvb-facts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.jlvb-amenities {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 1024px) {
	.jlvb-villa-gallery {
		width: min(100% - 36px, 1390px);
		aspect-ratio: 1.75 / 1;
		border-radius: 22px;
	}

	.jlvb-villa__heading {
		align-items: flex-start;
		flex-direction: column;
		gap: 32px;
	}

	.jlvb-villa__quick-specs {
		justify-content: flex-start;
	}

	.jlvb-villa__layout {
		grid-template-columns: minmax(0, 1fr);
	}

	.jlvb-villa__booking-column {
		grid-row: 1;
	}

	.jlvb-booking {
		position: relative;
		top: auto;
		max-width: 660px;
		margin: 0 auto 20px;
	}

	.jlvb-location-block {
		grid-template-columns: 1fr;
	}

	.jlvb-map-card {
		min-height: 230px;
	}

	.jlvb-villa-similar__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.jlvb-villa-similar__grid .jlvb-card:last-child {
		display: none;
	}
}

@media (max-width: 767px) {
	.jlvb-villa-gallery {
		width: calc(100% - 24px);
		aspect-ratio: 1.18 / 1;
		margin-top: 72px;
		border-radius: 18px;
	}

	.jlvb-villa-gallery__all {
		left: 12px;
		bottom: 12px;
		min-height: 40px;
		padding: 0 13px !important;
		font-size: 11px;
	}

	.jlvb-villa-gallery__count {
		top: 12px;
		right: 12px;
		min-width: 74px;
		height: 36px;
		padding: 0 13px;
		font-size: 11px;
	}

	.jlvb-villa-gallery__nav {
		right: 10px;
		grid-template-columns: repeat(2, 41px);
	}

	.jlvb-villa-gallery__nav button {
		width: 41px;
		height: 41px;
	}

	.jlvb-villa__heading,
	.jlvb-villa__layout,
	.jlvb-villa-similar__inner {
		width: min(100% - 32px, 1540px);
	}

	.jlvb-villa__heading {
		padding: 42px 0 38px;
		gap: 28px;
	}

	.jlvb-villa__heading h1 {
		font-size: clamp(46px, 15vw, 64px);
	}

	.jlvb-villa__location {
		margin-top: 16px;
		font-size: 14px;
	}

	.jlvb-villa__quick-specs {
		width: 100%;
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 7px;
	}

	.jlvb-villa__quick-specs > span {
		min-width: 0;
		min-height: 86px;
		padding: 12px 6px;
		flex-direction: column;
		justify-content: center;
		gap: 5px;
		border-radius: 14px;
		font-size: 10px;
		text-align: center;
	}

	.jlvb-villa__quick-specs b {
		font-size: 14px;
	}

	.jlvb-villa__layout {
		padding-top: 35px;
		padding-bottom: 70px;
	}

	.jlvb-booking {
		padding: 25px 19px 21px;
		border-radius: 20px;
	}

	.jlvb-booking h2 {
		font-size: 31px;
	}

	.jlvb-booking__dates {
		gap: 7px;
	}

	.jlvb-booking input[type="date"] {
		height: 48px;
		padding: 0 6px;
		font-size: 10px;
	}

	.jlvb-booking__actions {
		grid-template-columns: 1fr 1.35fr;
	}

	.jlvb-villa-section {
		padding-bottom: 70px;
	}

	.jlvb-villa-section + .jlvb-villa-section {
		padding-top: 68px;
	}

	.jlvb-villa-section__head {
		margin-bottom: 31px;
	}

	.jlvb-villa-section h2,
	.jlvb-villa-similar h2 {
		font-size: clamp(39px, 12vw, 51px);
	}

	.jlvb-villa-description__copy {
		margin-top: 27px;
		font-size: 15px;
		line-height: 1.7;
	}

	.jlvb-bedroom-grid,
	.jlvb-rules,
	.jlvb-calendar {
		grid-template-columns: 1fr;
	}

	.jlvb-facts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.jlvb-fact {
		min-height: 125px;
	}

	.jlvb-amenities {
		grid-template-columns: 1fr;
		gap: 38px;
	}

	.jlvb-amenity-group.is-collapsed {
		display: none;
	}

	.jlvb-bedroom-card {
		min-height: 0;
		border-radius: 18px;
	}

	.jlvb-bedroom-card h3 {
		font-size: 27px;
	}

	.jlvb-bedroom-card__body {
		padding: 22px 20px 25px;
		grid-template-columns: 1fr;
		gap: 17px;
	}

	.jlvb-booking-policy {
		padding: 28px 20px !important;
		border-radius: 21px;
	}

	.jlvb-calendar-nav button {
		width: 40px;
		height: 40px;
	}

	.jlvb-calendar {
		gap: 14px;
	}

	.jlvb-calendar-month:nth-child(2) {
		display: none;
	}

	.jlvb-price-table-wrap {
		border: 0;
		overflow: visible;
		background: transparent;
	}

	.jlvb-price-table,
	.jlvb-price-table tbody,
	.jlvb-price-table tr,
	.jlvb-price-table td {
		display: block;
		width: 100%;
	}

	.jlvb-price-table thead {
		display: none;
	}

	.jlvb-price-table tr {
		margin-bottom: 12px;
		padding: 18px;
		border: 1px solid var(--jlvb-vp-line);
		border-radius: 16px;
		background: rgba(244, 239, 230, .5);
	}

	.jlvb-price-table td {
		padding: 7px 0;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 14px;
		border: 0;
		white-space: normal;
		text-align: right;
	}

	.jlvb-price-table td::before {
		color: rgba(48, 42, 37, .55);
		font-size: 9px;
		font-weight: 700;
		letter-spacing: .06em;
		text-transform: uppercase;
		content: attr(data-label);
	}

	.jlvb-villa-similar__grid {
		grid-template-columns: 1fr;
	}

	.jlvb-villa-similar__grid .jlvb-card {
		display: block !important;
	}

	.jlvb-villa-similar__grid .jlvb-card:nth-child(n+3) {
		display: none !important;
	}

	.jlvb-lightbox {
		padding: 60px 14px 24px;
		grid-template-columns: 42px minmax(0, 1fr) 42px;
		gap: 7px;
	}

	.jlvb-lightbox figure {
		height: calc(100vh - 84px);
	}

	.jlvb-lightbox button {
		width: 40px;
		height: 40px;
	}

	.jlvb-lightbox__close {
		top: 12px;
		right: 12px;
	}
}

/* --------------------------------------------------------------------------
 * Gallery tools, neutral extras and flat bedroom rail — v0.4.4
 * -------------------------------------------------------------------------- */

.jlvb-villa__pre-gallery {
	width: min(1390px, calc(100% - 48px));
	margin: 0 auto;
	padding-top: clamp(26px, 2.6vw, 42px);
	padding-bottom: 18px;
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 24px;
}

.jlvb-villa-breadcrumbs {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 7px;
	color: var(--jlvb-vp-navy);
	font-size: 13px;
	line-height: 1.45;
}

.jlvb-villa-breadcrumbs a,
.jlvb-villa-breadcrumbs span {
	color: inherit;
	text-decoration: none;
}

.jlvb-villa-breadcrumbs a:hover,
.jlvb-villa-breadcrumbs a:focus-visible {
	color: var(--jlvb-vp-blue);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.jlvb-villa-share {
	min-height: 28px;
	margin: 0 !important;
	padding: 0 !important;
	display: inline-flex !important;
	align-items: center;
	justify-content: flex-start;
	gap: 8px;
	border: 0 !important;
	border-radius: 0 !important;
	color: var(--jlvb-vp-blue) !important;
	background: transparent !important;
	box-shadow: none !important;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.35;
	text-transform: none !important;
	white-space: nowrap;
	cursor: pointer;
}

.jlvb-villa-share .jlvb-villa-icon {
	width: 16px;
	height: 16px;
}

.jlvb-villa-share:hover,
.jlvb-villa-share:focus-visible,
.jlvb-villa-share.is-copied {
	color: var(--jlvb-vp-green) !important;
}

.jlvb-villa-gallery,
.admin-bar .jlvb-villa-gallery {
	margin-top: 0;
}

button.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra:hover,
button.jlvb-speciality-tag--extra:focus-visible,
button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"] {
	color: #655b52;
	border-color: rgba(48, 42, 37, .10);
	background: #e2d9cd;
	box-shadow: none;
}

button.jlvb-speciality-tag--extra.is-selected small,
button.jlvb-speciality-tag--extra[aria-pressed="true"] small {
	border-left-color: rgba(48, 42, 37, .18);
	color: rgba(48, 42, 37, .68);
}

button.jlvb-speciality-tag--extra.is-selected::after,
button.jlvb-speciality-tag--extra[aria-pressed="true"]::after {
	margin-left: 2px;
	color: var(--jlvb-vp-green);
	content: "+";
	font-size: 18px;
	font-weight: 900;
	line-height: 1;
}

.jlvb-sleeping-section,
.jlvb-bedroom-grid,
.jlvb-bedroom-card,
.jlvb-bedroom-card:hover,
.jlvb-bedroom-card:focus-within {
	box-shadow: none !important;
	filter: none !important;
}

.jlvb-bedroom-card:hover {
	transform: none;
}

@media (max-width: 767px) {
	.jlvb-villa__pre-gallery {
		width: min(100% - 28px, 1390px);
		padding-top: 18px;
		padding-bottom: 13px;
		flex-direction: column;
		gap: 7px;
	}

	.jlvb-villa-breadcrumbs {
		gap: 5px;
		font-size: 11px;
	}

	.jlvb-villa-share {
		font-size: 12px;
	}
}

@media (max-width: 420px) {
	.jlvb-booking__guests {
		grid-template-columns: 1fr;
	}

	.jlvb-booking__stepper {
		grid-template-columns: 38px 1fr 38px;
	}

	.jlvb-location-block {
		gap: 18px;
	}

	.jlvb-map-card {
		padding: 25px 20px;
	}
}

/* --------------------------------------------------------------------------
 * Premium villa presentation — v0.4.0
 * A restrained editorial layout inspired by high-end hospitality catalogues.
 * -------------------------------------------------------------------------- */

.jlvb-villa {
	--jlvb-vp-navy: #3a332d;
	--jlvb-vp-secondary-dark: #504238;
	--jlvb-vp-blue: #8a6b3d;
	--jlvb-vp-blue-bright: #8a6b3d;
	--jlvb-vp-blue-soft: #f0e7d8;
	--jlvb-vp-action-hover: #504238;
	--jlvb-vp-cream: #f4efe6;
	--jlvb-vp-cream-deep: #f4efe6;
	--jlvb-vp-paper: #f4efe6;
	--jlvb-vp-ink-soft: #786e66;
	--jlvb-vp-line: rgba(48, 42, 37, .13);
	background:
		linear-gradient(180deg, #faf6ee 0, var(--jlvb-vp-cream) 420px, var(--jlvb-vp-cream) 100%);
}

.jlvb-villa-gallery {
	width: min(1390px, calc(100% - 64px));
	aspect-ratio: 2.22 / 1;
	margin-top: clamp(132px, 10vw, 174px);
	border-radius: 20px;
	background: #d7d9da;
	box-shadow: 0 24px 70px rgba(50, 42, 36, .09);
	isolation: isolate;
}

.admin-bar .jlvb-villa-gallery {
	margin-top: clamp(150px, 11vw, 194px);
}

.jlvb-villa-gallery__item {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	max-width: none !important;
	height: 100% !important;
	display: block !important;
}

.jlvb-villa-gallery__item img {
	position: absolute;
	inset: 0;
	width: 100% !important;
	max-width: none !important;
	height: 100% !important;
	object-fit: cover !important;
}

.jlvb-villa-gallery::after {
	position: absolute;
	z-index: 2;
	inset: auto 0 0;
	height: 34%;
	background: linear-gradient(180deg, transparent, rgba(39, 31, 26, .26));
	content: "";
	pointer-events: none;
}

.jlvb-villa-gallery__count {
	top: 18px;
	right: 18px;
	height: 38px;
	min-width: 79px;
	background: rgba(47, 38, 31, .88);
	backdrop-filter: blur(10px);
}

.jlvb-villa-gallery__nav {
	right: 18px;
	grid-template-columns: repeat(2, 43px);
	box-shadow: 0 8px 25px rgba(42, 33, 27, .12);
}

.jlvb-villa-gallery__nav button {
	width: 43px;
	height: 43px;
}

.jlvb-villa-gallery__all {
	z-index: 5;
	left: 18px;
	bottom: 17px;
	min-height: 40px;
	padding: 0 15px !important;
	border: 0 !important;
	border-radius: 8px !important;
	font-size: 12px;
}

.jlvb-villa__heading {
	width: min(1320px, calc(100% - 64px));
	padding: 34px 0 38px;
	align-items: center;
	border-bottom: 0;
}

.jlvb-villa__heading h1 {
	font-size: clamp(43px, 4.2vw, 62px);
	line-height: .98;
	letter-spacing: -.038em;
}

.jlvb-villa__location {
	margin-top: 13px;
	font-size: 14px;
}

.jlvb-villa__quick-specs {
	gap: 8px;
}

.jlvb-villa__quick-specs > span {
	min-height: 41px;
	padding: 0 13px;
	border: 0;
	border-radius: 9px;
	background: rgba(244, 239, 230, .6);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .09);
	font-size: 11px;
}

.jlvb-villa__quick-specs .jlvb-villa-icon {
	width: 15px;
	height: 15px;
}

.jlvb-villa__quick-specs b {
	font-size: 13px;
}

.jlvb-villa__layout {
	width: min(1320px, calc(100% - 64px));
	padding: 54px 0 118px;
	grid-template-columns: minmax(0, 1fr) 370px;
	gap: clamp(58px, 6vw, 88px);
}

.jlvb-villa__content {
	overflow: hidden;
}

.jlvb-villa-section {
	padding-bottom: clamp(72px, 7vw, 96px);
}

.jlvb-villa-section + .jlvb-villa-section {
	padding-top: clamp(72px, 7vw, 96px);
}

.jlvb-villa-section__eyebrow {
	margin-bottom: 11px;
	color: var(--jlvb-vp-blue);
	font-size: 9px;
	font-weight: 700;
	letter-spacing: .17em;
}

.jlvb-villa-section h2 {
	font-size: clamp(39px, 3.5vw, 54px);
	line-height: 1;
}

.jlvb-villa-section__head {
	margin-bottom: 34px;
}

.jlvb-villa-description {
	max-width: 830px;
}

.jlvb-villa-description__copy {
	max-width: 800px;
	margin-top: 27px;
	color: #6d6258;
	font-size: 15px;
	line-height: 1.82;
}

.jlvb-villa-description__copy p {
	margin-bottom: 17px;
}

.jlvb-editorial-image {
	position: relative;
	width: 100%;
	margin: 0 0 clamp(72px, 7vw, 96px);
	overflow: hidden;
	border-radius: 18px;
	background: #d8d5cf;
	box-shadow: 0 22px 55px rgba(50, 42, 36, .11);
	opacity: 0;
	transform: translateY(22px);
	transition: opacity .7s ease, transform .7s cubic-bezier(.2, .7, .2, 1);
}

.jlvb-editorial-image.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.jlvb-editorial-image--story {
	aspect-ratio: 16 / 9;
}

.jlvb-editorial-image--amenities {
	aspect-ratio: 2.05 / 1;
	margin: 44px 0 0;
}

.jlvb-editorial-image img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
	transition: transform 800ms cubic-bezier(.2, .7, .2, 1);
}

.jlvb-editorial-image:hover img {
	transform: scale(1.025);
}

.jlvb-editorial-image figcaption {
	position: absolute;
	left: 15px;
	bottom: 15px;
	min-height: 38px;
	padding: 0 13px;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	border-radius: 7px;
	color: var(--jlvb-vp-navy);
	background: rgba(244, 239, 230, .93);
	box-shadow: 0 8px 25px rgba(42, 33, 27, .12);
	font-size: 10px;
	font-weight: 600;
}

.jlvb-editorial-image figcaption span,
.jlvb-editorial-image figcaption .jlvb-villa-icon {
	width: 15px;
	height: 15px;
}

.jlvb-speciality-section {
	position: relative;
	padding: clamp(34px, 4vw, 48px) !important;
	overflow: hidden;
	border: 0 !important;
	border-radius: 18px;
	background:
		radial-gradient(circle at 100% 0, rgba(138, 107, 61, .13), transparent 35%),
		var(--jlvb-vp-paper);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08);
}

.jlvb-speciality-section + .jlvb-villa-section {
	margin-top: clamp(72px, 7vw, 96px);
}

.jlvb-speciality-tags {
	gap: 8px;
}

.jlvb-speciality-tag {
	min-height: 34px;
	padding: 7px 12px;
	border-radius: 6px;
	box-shadow: none;
	font-size: 11px;
}

.jlvb-speciality-tag:hover {
	transform: translateY(-1px);
	box-shadow: 0 7px 18px rgba(52, 43, 36, .1);
}

.jlvb-speciality-tag--included {
	background: var(--jlvb-vp-blue);
}

.jlvb-speciality-tag--extra {
	color: #655b52;
	background: #e2d9cd;
}

.jlvb-speciality-legend {
	margin-top: 21px;
	gap: 20px;
	font-size: 10px;
}

.jlvb-speciality-legend i {
	width: 10px;
	height: 10px;
}

.jlvb-speciality-legend .is-extra {
	background: #aab1b7;
}

.jlvb-facts {
	gap: 8px;
	border: 0;
}

.jlvb-fact {
	min-height: 112px;
	padding: 17px;
	border: 0;
	border-radius: 10px;
	background: rgba(244, 239, 230, .55);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08);
}

.jlvb-fact .jlvb-villa-icon {
	width: 20px;
	height: 20px;
	color: var(--jlvb-vp-blue);
}

.jlvb-fact strong {
	font-size: 15px;
}

.jlvb-fact span {
	font-size: 10px;
}

.jlvb-location-block {
	grid-template-columns: minmax(245px, .72fr) minmax(0, 1.28fr);
	gap: 18px;
	align-items: stretch;
}

.jlvb-location-block__details {
	padding: 22px 25px;
	border-radius: 16px;
	background: rgba(244, 239, 230, .5);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08);
}

.jlvb-distances {
	border-top: 0;
}

.jlvb-distances > div {
	min-height: 48px;
	border-bottom-color: rgba(48, 42, 37, .1);
}

.jlvb-distances > div:last-child {
	border-bottom: 0;
}

.jlvb-distances dt,
.jlvb-distances dd {
	font-size: 11px;
}

.jlvb-location-visual {
	position: relative;
	min-height: 360px;
	overflow: hidden;
	border-radius: 16px;
	background: var(--jlvb-vp-navy);
}

.jlvb-location-visual > img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
}

.jlvb-location-visual::after {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 42%, rgba(45, 36, 30, .58));
	content: "";
	pointer-events: none;
}

.jlvb-map-card {
	position: absolute;
	z-index: 2;
	right: 14px;
	bottom: 14px;
	left: 14px;
	min-height: 70px;
	padding: 12px 14px;
	align-items: center;
	border: 1px solid rgba(244, 239, 230, .24);
	border-radius: 10px;
	background: rgba(58, 47, 38, .88);
	box-shadow: 0 14px 34px rgba(39, 31, 26, .2);
	backdrop-filter: blur(12px);
}

.jlvb-map-card::before,
.jlvb-map-card::after {
	display: none;
}

.jlvb-map-card__pin {
	width: 40px;
	height: 40px;
	flex-basis: 40px;
}

.jlvb-map-card__pin .jlvb-villa-icon {
	width: 18px;
	height: 18px;
}

.jlvb-map-card strong {
	font-size: 23px;
}

.jlvb-map-card small {
	font-size: 9px;
}

.jlvb-amenities {
	display: grid;
	grid-template-columns: 210px minmax(0, 1fr);
	gap: 26px;
}

.jlvb-amenities__tabs {
	display: flex;
	flex-direction: column;
	gap: 3px;
}

.jlvb-amenities__tabs button {
	width: 100%;
	min-height: 42px;
	margin: 0 !important;
	padding: 0 13px !important;
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	border: 0 !important;
	border-radius: 7px !important;
	color: #766a60 !important;
	background: transparent !important;
	box-shadow: none !important;
	font-size: 10px;
	font-weight: 600;
	text-align: left;
	text-transform: none !important;
	cursor: pointer;
}

.jlvb-amenities__tabs button::after {
	color: var(--jlvb-vp-blue);
	font-size: 14px;
	content: "›";
	opacity: 0;
	transform: translateX(-4px);
	transition: opacity .18s ease, transform .18s ease;
}

.jlvb-amenities__tabs button:hover,
.jlvb-amenities__tabs button.is-active {
	color: var(--jlvb-vp-navy) !important;
	background: rgba(244, 239, 230, .62) !important;
}

.jlvb-amenities__tabs button.is-active::after {
	opacity: 1;
	transform: translateX(0);
}

.jlvb-amenities__panels {
	min-height: 310px;
	padding: 27px 30px;
	border-radius: 15px;
	background: rgba(244, 239, 230, .56);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08);
}

.jlvb-amenity-group {
	animation: jlvb-amenity-in .28s ease both;
}

.jlvb-amenity-group[hidden] {
	display: none !important;
}

.jlvb-amenity-group h3 {
	margin-bottom: 22px;
	padding-bottom: 14px;
	font-size: 25px;
}

.jlvb-amenity-group ul {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 11px 24px;
}

.jlvb-amenity-group li {
	margin: 0;
	font-size: 11px;
}

.jlvb-amenity-group li .jlvb-villa-icon {
	width: 14px;
	height: 14px;
	color: var(--jlvb-vp-blue);
}

@keyframes jlvb-amenity-in {
	from { opacity: 0; transform: translateY(5px); }
	to { opacity: 1; transform: translateY(0); }
}

.jlvb-bedroom-nav,
.jlvb-calendar-nav {
	display: flex;
	gap: 7px;
}

.jlvb-bedroom-nav button,
.jlvb-calendar-nav button {
	width: 38px;
	height: 38px;
	margin: 0 !important;
	padding: 0 !important;
	display: grid !important;
	place-items: center;
	border: 1px solid rgba(48, 42, 37, .12) !important;
	border-radius: 50% !important;
	color: var(--jlvb-vp-navy) !important;
	background: rgba(244, 239, 230, .58) !important;
	box-shadow: none !important;
	cursor: pointer;
}

.jlvb-bedroom-nav button:hover,
.jlvb-calendar-nav button:hover {
	color: #f4efe6 !important;
	background: var(--jlvb-vp-blue) !important;
}

.jlvb-bedroom-nav .jlvb-villa-icon,
.jlvb-calendar-nav .jlvb-villa-icon {
	width: 15px;
	height: 15px;
}

.jlvb-bedroom-grid {
	padding: 2px 2px 17px;
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(255px, 31%);
	grid-template-columns: none;
	gap: 15px;
	overflow-x: auto;
	overscroll-behavior-inline: contain;
	scroll-behavior: smooth;
	scroll-snap-type: inline mandatory;
	scrollbar-color: rgba(48, 42, 37, .23) transparent;
	scrollbar-width: thin;
}

.jlvb-bedroom-grid::-webkit-scrollbar {
	height: 5px;
}

.jlvb-bedroom-grid::-webkit-scrollbar-thumb {
	border-radius: 999px;
	background: rgba(48, 42, 37, .23);
}

.jlvb-bedroom-card {
	min-height: 385px;
	border: 0;
	border-radius: 13px;
	background: var(--jlvb-vp-paper);
	box-shadow: 0 12px 26px rgba(50, 42, 36, .09);
	scroll-snap-align: start;
}

.jlvb-bedroom-card__image {
	aspect-ratio: 1.48 / 1;
}

.jlvb-bedroom-card__body {
	padding: 19px 18px 22px;
	display: block;
}

.jlvb-bedroom-card:not(.has-image) .jlvb-bedroom-card__body {
	min-height: 385px;
}

.jlvb-bedroom-card h3 {
	margin-bottom: 16px;
	font-size: 24px;
}

.jlvb-bedroom-card li {
	margin-bottom: 7px;
	padding-left: 12px;
	font-size: 10px;
	line-height: 1.45;
}

.jlvb-bedroom-card li::before {
	width: 3px;
	height: 3px;
	background: var(--jlvb-vp-blue);
}

.jlvb-calendar {
	gap: 15px;
}

.jlvb-calendar-month {
	padding: 19px;
	border: 0;
	border-radius: 14px;
	background: rgba(244, 239, 230, .56);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08);
}

.jlvb-calendar-month h3 {
	font-size: 22px;
}

.jlvb-calendar-day {
	font-size: 10px;
}

.jlvb-price-table-wrap {
	border: 0;
	border-radius: 13px;
	background: rgba(244, 239, 230, .53);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08);
}

.jlvb-price-table th,
.jlvb-price-table td {
	padding: 16px 18px;
	font-size: 11px;
}

.jlvb-price-table th {
	font-size: 8px;
}

.jlvb-booking-policy {
	padding: clamp(35px, 4vw, 48px) !important;
	border: 0 !important;
	border-radius: 18px;
	background:
		radial-gradient(circle at 95% 0, rgba(138, 107, 61, .14), transparent 34%),
		var(--jlvb-vp-paper);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08), 0 16px 40px rgba(50, 42, 36, .06);
}

.jlvb-rules {
	gap: 1px;
	border: 0;
	background: rgba(48, 42, 37, .1);
}

.jlvb-rules > div {
	min-height: 70px;
	padding: 15px 17px;
	border: 0;
	background: rgba(250, 246, 238, .97);
}

.jlvb-villa__booking-column {
	align-self: stretch;
}

.jlvb-booking {
	top: 118px;
	padding: 25px 24px 22px;
	border: 0;
	border-radius: 16px;
	background: rgba(244, 239, 230, .96);
	box-shadow:
		0 24px 64px rgba(50, 42, 36, .15),
		inset 0 0 0 1px rgba(48, 42, 37, .08);
	backdrop-filter: blur(12px);
}

.admin-bar .jlvb-booking {
	top: 150px;
}

.jlvb-booking__head {
	margin-bottom: 21px;
	padding-bottom: 18px;
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 15px;
	border-bottom: 1px solid rgba(48, 42, 37, .1);
}

.jlvb-booking__head p {
	margin: 0 0 5px;
	color: var(--jlvb-vp-blue);
	font-size: 8px;
	font-weight: 700;
	letter-spacing: .13em;
	text-transform: uppercase;
}

.jlvb-booking__head h2 {
	margin: 0;
	font-size: 31px;
}

.jlvb-booking__head > span {
	display: grid;
	justify-items: end;
	color: var(--jlvb-vp-ink-soft);
	font-size: 8px;
	line-height: 1.25;
}

.jlvb-booking__head > span strong {
	color: var(--jlvb-vp-navy);
	font-size: 14px;
}

.jlvb-booking__head > span small {
	font-size: 8px;
}

.jlvb-booking input[type="date"] {
	height: 46px;
	border-color: rgba(48, 42, 37, .13);
	border-radius: 7px;
	background: #faf6ee;
}

.jlvb-booking__stepper {
	height: 41px;
	border-color: rgba(48, 42, 37, .12);
	background: #faf6ee;
}

.jlvb-booking__stepper button {
	width: 32px;
	height: 32px;
	background: var(--jlvb-vp-blue) !important;
}

.jlvb-booking__summary > div {
	min-height: 43px;
	font-size: 11px;
}

.jlvb-booking__summary strong {
	font-size: 11px;
}

.jlvb-booking__actions a {
	border-radius: 8px;
}

.jlvb-booking__book {
	background: var(--jlvb-vp-blue);
}

.jlvb-booking__book:hover {
	background: var(--jlvb-vp-action-hover);
}

@media (max-width: 1250px) {
	.jlvb-villa__layout {
		grid-template-columns: minmax(0, 1fr) 350px;
		gap: 46px;
	}

	.jlvb-amenities {
		grid-template-columns: 180px minmax(0, 1fr);
	}

	.jlvb-bedroom-grid {
		grid-auto-columns: minmax(245px, 42%);
	}
}

@media (max-width: 1024px) {
	.jlvb-villa-gallery {
		width: calc(100% - 40px);
		aspect-ratio: 1.72 / 1;
		margin-top: 120px;
	}

	.admin-bar .jlvb-villa-gallery {
		margin-top: 146px;
	}

	.jlvb-villa__heading,
	.jlvb-villa__layout {
		width: min(100% - 48px, 860px);
	}

	.jlvb-villa__layout {
		padding-top: 26px;
	}

	.jlvb-villa__booking-column {
		grid-row: 1;
	}

	.jlvb-booking {
		max-width: none;
		margin: 0 0 65px;
	}

	.jlvb-location-block {
		grid-template-columns: minmax(220px, .7fr) minmax(0, 1.3fr);
	}
}

@media (max-width: 767px) {
	.jlvb-villa {
		background: var(--jlvb-vp-cream);
	}

	.jlvb-villa-gallery {
		width: calc(100% - 24px);
		aspect-ratio: 1.12 / 1;
		margin-top: 92px;
		border-radius: 13px;
	}

	.admin-bar .jlvb-villa-gallery {
		margin-top: 106px;
	}

	.jlvb-villa-gallery__nav {
		display: none;
	}

	.jlvb-villa-gallery__all {
		left: 11px;
		bottom: 11px;
	}

	.jlvb-villa__heading,
	.jlvb-villa__layout {
		width: calc(100% - 32px);
	}

	.jlvb-villa__heading {
		padding: 27px 0 34px;
		gap: 24px;
	}

	.jlvb-villa__heading h1 {
		font-size: clamp(42px, 13vw, 55px);
	}

	.jlvb-villa__quick-specs > span {
		min-height: 68px;
		border-radius: 9px;
	}

	.jlvb-villa__layout {
		padding: 18px 0 76px;
	}

	.jlvb-booking {
		margin-bottom: 56px;
		padding: 22px 17px 19px;
	}

	.jlvb-villa-section,
	.jlvb-editorial-image {
		padding-bottom: 62px;
	}

	.jlvb-villa-section + .jlvb-villa-section {
		padding-top: 62px;
	}

	.jlvb-editorial-image {
		padding-bottom: 0;
		margin-bottom: 62px;
		border-radius: 12px;
	}

	.jlvb-editorial-image--story,
	.jlvb-editorial-image--amenities {
		aspect-ratio: 1.35 / 1;
	}

	.jlvb-speciality-section {
		padding: 27px 20px !important;
		border-radius: 13px;
	}

	.jlvb-speciality-section + .jlvb-villa-section {
		margin-top: 62px;
	}

	.jlvb-villa-section__head {
		margin-bottom: 28px;
		align-items: center;
	}

	.jlvb-villa-section h2 {
		font-size: clamp(37px, 11vw, 47px);
	}

	.jlvb-facts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.jlvb-fact {
		min-height: 105px;
	}

	.jlvb-location-block {
		grid-template-columns: 1fr;
	}

	.jlvb-location-visual {
		min-height: 310px;
	}

	.jlvb-amenities {
		display: block;
	}

	.jlvb-amenities__tabs {
		margin: 0 0 13px;
		padding-bottom: 7px;
		flex-direction: row;
		overflow-x: auto;
		scrollbar-width: none;
	}

	.jlvb-amenities__tabs::-webkit-scrollbar {
		display: none;
	}

	.jlvb-amenities__tabs button {
		width: auto;
		min-width: max-content;
		padding: 0 12px !important;
	}

	.jlvb-amenities__tabs button::after {
		display: none;
	}

	.jlvb-amenities__panels {
		min-height: 0;
		padding: 22px 18px;
	}

	.jlvb-amenity-group ul {
		grid-template-columns: 1fr;
	}

	.jlvb-bedroom-grid {
		grid-template-columns: none;
		grid-auto-columns: minmax(245px, 82%);
	}

	.jlvb-bedroom-card__body {
		grid-template-columns: 1fr;
	}

	.jlvb-calendar {
		grid-template-columns: 1fr;
	}

	.jlvb-calendar-month:nth-child(2) {
		display: none;
	}

	.jlvb-booking-policy {
		padding: 27px 19px !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.jlvb-villa *,
	.jlvb-villa *::before,
	.jlvb-villa *::after {
		scroll-behavior: auto !important;
		animation-duration: .01ms !important;
		transition-duration: .01ms !important;
	}

	.jlvb-editorial-image {
		opacity: 1;
		transform: none;
	}
}

/* --------------------------------------------------------------------------
 * Premium readability and layout refinement — v0.4.1
 * -------------------------------------------------------------------------- */

.jlvb-villa {
	--jlvb-vp-cream: #f4efe6;
	--jlvb-vp-cream-deep: #f4efe6;
	--jlvb-vp-paper: #f4efe6;
	--jlvb-vp-line: rgba(48, 42, 37, .14);
	background: #f4efe6;
	font-size: 17px;
}

.jlvb-villa__heading {
	width: min(1480px, calc(100% - 64px));
	padding-top: 46px;
	padding-bottom: 50px;
}

.jlvb-villa__heading h1 {
	font-size: clamp(56px, 5vw, 78px);
}

.jlvb-villa__location {
	margin-top: 17px;
	font-size: 17px;
}

.jlvb-villa__quick-specs {
	gap: 10px;
}

.jlvb-villa__quick-specs > span {
	min-height: 48px;
	padding: 0 17px;
	border-radius: 11px;
	background: var(--jlvb-vp-cream);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .08);
	font-size: 14px;
}

.jlvb-villa__quick-specs .jlvb-villa-icon {
	width: 18px;
	height: 18px;
}

.jlvb-villa__quick-specs b {
	font-size: 16px;
}

.jlvb-villa-section {
	padding-bottom: 0;
}

.jlvb-villa-section + .jlvb-villa-section {
	margin-top: clamp(82px, 7vw, 108px);
	padding-top: 0;
	border-top: 0;
}

.jlvb-villa-section__eyebrow {
	margin-bottom: 14px;
	font-size: 11px;
	letter-spacing: .16em;
}

.jlvb-villa-section h2 {
	font-size: clamp(49px, 4.2vw, 64px);
	line-height: .98;
}

.jlvb-villa-section__head {
	margin-bottom: 42px;
}

.jlvb-villa-description {
	max-width: 980px;
}

.jlvb-villa-description__copy {
	max-width: 940px;
	margin-top: 33px;
	color: #6b6055;
	font-size: clamp(17px, 1.25vw, 20px);
	line-height: 1.78;
}

.jlvb-villa-description + .jlvb-editorial-image {
	margin-top: clamp(52px, 5vw, 72px);
}

.jlvb-speciality-section {
	padding: clamp(42px, 4.5vw, 58px) !important;
	border-radius: 24px;
	background:
		radial-gradient(circle at 100% 0, rgba(138, 107, 61, .12), transparent 38%),
		var(--jlvb-vp-cream);
	box-shadow:
		inset 0 0 0 1px rgba(48, 42, 37, .08),
		0 20px 55px rgba(48, 42, 37, .06);
}

.jlvb-speciality-tag {
	min-height: 40px;
	padding: 9px 15px;
	border-radius: 8px;
	font-size: 14px;
}

.jlvb-speciality-legend {
	margin-top: 25px;
	font-size: 13px;
}

.jlvb-speciality-legend i {
	width: 13px;
	height: 13px;
}

.jlvb-facts {
	gap: 11px;
}

.jlvb-fact {
	min-height: 130px;
	padding: 21px;
	border-radius: 14px;
	background: var(--jlvb-vp-cream);
	box-shadow:
		inset 0 0 0 1px rgba(48, 42, 37, .08),
		0 10px 24px rgba(48, 42, 37, .04);
}

.jlvb-fact .jlvb-villa-icon {
	width: 23px;
	height: 23px;
}

.jlvb-fact strong {
	font-size: 18px;
}

.jlvb-fact span {
	font-size: 13px;
}

.jlvb-location-section {
	padding: clamp(42px, 4.5vw, 58px) !important;
	border: 0 !important;
	border-radius: 24px;
	background: var(--jlvb-vp-cream);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .07);
}

.jlvb-location-section + .jlvb-villa-section {
	margin-top: clamp(82px, 7vw, 108px);
}

.jlvb-location-block {
	grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
	gap: 22px;
}

.jlvb-location-block__details {
	padding: 27px 30px;
	border-radius: 18px;
	background: #f4efe6;
	box-shadow:
		inset 0 0 0 1px rgba(48, 42, 37, .08),
		0 12px 30px rgba(48, 42, 37, .04);
}

.jlvb-distances > div {
	min-height: 59px;
}

.jlvb-distances dt,
.jlvb-distances dd {
	font-size: 16px;
}

.jlvb-location-visual {
	min-height: 405px;
	border-radius: 18px;
}

.jlvb-map-card {
	right: 16px;
	bottom: 16px;
	left: 16px;
	min-height: 82px;
	padding: 14px 17px;
	border-radius: 12px;
}

.jlvb-map-card strong {
	font-size: 28px;
}

.jlvb-map-card small {
	font-size: 11px;
}

.jlvb-amenities {
	grid-template-columns: 230px minmax(0, 1fr);
	gap: 30px;
}

.jlvb-amenities__tabs {
	gap: 5px;
}

.jlvb-amenities__tabs button {
	min-height: 48px;
	padding: 0 16px !important;
	border-radius: 9px !important;
	font-size: 14px;
}

.jlvb-amenities__tabs button:hover,
.jlvb-amenities__tabs button.is-active {
	background: var(--jlvb-vp-cream) !important;
}

.jlvb-amenities__panels {
	min-height: 345px;
	padding: 32px 35px;
	border-radius: 18px;
	background: var(--jlvb-vp-cream);
}

.jlvb-amenity-group h3 {
	font-size: 29px;
}

.jlvb-amenity-group li {
	font-size: 14px;
	line-height: 1.5;
}

.jlvb-amenity-group li .jlvb-villa-icon {
	width: 16px;
	height: 16px;
}

.jlvb-bedroom-nav button,
.jlvb-calendar-nav button {
	width: 44px;
	height: 44px;
	background: var(--jlvb-vp-cream) !important;
}

.jlvb-bedroom-grid {
	grid-auto-columns: minmax(290px, 32%);
	gap: 18px;
}

.jlvb-bedroom-card {
	min-height: 430px;
	border-radius: 17px;
	background: var(--jlvb-vp-cream);
	box-shadow: 0 15px 34px rgba(50, 42, 36, .10);
}

.jlvb-bedroom-card__body {
	padding: 24px 22px 27px;
}

.jlvb-bedroom-card h3 {
	margin-bottom: 19px;
	font-size: 29px;
}

.jlvb-bedroom-card li {
	margin-bottom: 9px;
	padding-left: 14px;
	font-size: 13px;
	line-height: 1.48;
}

.jlvb-calendar-month {
	padding: 24px;
	border-radius: 18px;
	background: var(--jlvb-vp-cream);
}

.jlvb-calendar-month h3 {
	font-size: 27px;
}

.jlvb-calendar-month__weekday {
	font-size: 11px;
}

.jlvb-calendar-day {
	font-size: 14px;
}

.jlvb-calendar-legend {
	font-size: 13px;
}

.jlvb-availability-section {
	padding: clamp(42px, 4.5vw, 58px) !important;
	border-radius: 24px;
	background: var(--jlvb-vp-cream);
	box-shadow: inset 0 0 0 1px rgba(48, 42, 37, .07);
}

.jlvb-availability-section .jlvb-calendar-month {
	background: #f4efe6;
}

.jlvb-price-table-wrap {
	border-radius: 17px;
	background: var(--jlvb-vp-cream);
}

.jlvb-price-table {
	font-size: 14px;
}

.jlvb-price-table th,
.jlvb-price-table td {
	padding: 19px 20px;
	font-size: 14px;
}

.jlvb-price-table th {
	font-size: 11px;
}

.jlvb-booking-policy {
	border-radius: 24px;
	background:
		radial-gradient(circle at 95% 0, rgba(138, 107, 61, .13), transparent 36%),
		var(--jlvb-vp-cream);
}

.jlvb-rules > div {
	min-height: 78px;
	padding: 17px 20px;
	background: #f4efe6;
}

.jlvb-rules dt {
	font-size: 11px;
}

.jlvb-rules dd {
	font-size: 15px;
}

.jlvb-booking {
	padding: 23px 21px 20px;
	border-radius: 18px;
	background: var(--jlvb-vp-cream);
	box-shadow:
		0 24px 64px rgba(50, 42, 36, .16),
		inset 0 0 0 1px rgba(48, 42, 37, .08);
	scrollbar-color: rgba(48, 42, 37, .25) transparent;
	scrollbar-width: thin;
}

.jlvb-booking__head {
	margin-bottom: 17px;
	padding-bottom: 15px;
}

.jlvb-booking__head p {
	font-size: 10px;
}

.jlvb-booking__head h2 {
	font-size: 42px;
}

.jlvb-booking__head > span {
	font-size: 10px;
}

.jlvb-booking__head > span strong {
	font-size: 18px;
}

.jlvb-booking__head > span small {
	font-size: 10px;
}

.jlvb-booking__label,
.jlvb-booking label > span,
.jlvb-booking__guests > div > span {
	font-size: 13px;
}

.jlvb-booking__label {
	margin-bottom: 9px;
}

.jlvb-booking input[type="date"] {
	height: 45px;
	padding: 0 8px;
	background: #f4efe6;
	font-size: 12px;
}

.jlvb-booking__guests {
	margin: 16px 0 14px;
}

.jlvb-booking__stepper {
	height: 40px;
	margin-top: 6px;
	background: #f4efe6;
}

.jlvb-booking__stepper output {
	font-size: 14px;
}

.jlvb-booking__summary > div {
	min-height: 40px;
	font-size: 13px;
}

.jlvb-booking__summary small {
	font-size: 10px;
}

.jlvb-booking__summary strong {
	font-size: 13px;
}

.jlvb-booking__summary .jlvb-booking__total span,
.jlvb-booking__summary .jlvb-booking__total strong {
	font-size: 16px;
}

.jlvb-booking__message {
	min-height: 29px;
	margin: 9px 0 3px;
	font-size: 11px;
}

.jlvb-booking__actions a {
	min-height: 45px;
	font-size: 13px;
}

.jlvb-booking__enquiry {
	background: #f4efe6;
}

.jlvb-booking__policy-link {
	margin-top: 13px;
	padding-top: 13px;
	font-size: 12px;
}

@media (min-width: 1025px) {
	.jlvb-villa__layout {
		width: min(1480px, calc(100% - 64px));
		padding-top: 62px;
		grid-template-columns: minmax(0, 1fr) 338px;
		gap: clamp(44px, 4vw, 64px);
	}

	.jlvb-booking {
		--jlvb-booking-top: 92px;
		position: sticky;
		top: var(--jlvb-booking-top);
		max-height: calc(100vh - var(--jlvb-booking-top) - 18px);
		max-height: calc(100dvh - var(--jlvb-booking-top) - 18px);
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	.admin-bar .jlvb-booking {
		--jlvb-booking-top: 124px;
		top: var(--jlvb-booking-top);
	}
}

@media (min-width: 1025px) and (max-width: 1250px) {
	.jlvb-villa__layout {
		grid-template-columns: minmax(0, 1fr) 318px;
		gap: 36px;
	}

	.jlvb-booking {
		padding-right: 18px;
		padding-left: 18px;
	}
}

@media (min-width: 1025px) and (max-height: 820px) {
	.jlvb-booking {
		padding-top: 17px;
		padding-bottom: 15px;
	}

	.jlvb-booking__head {
		margin-bottom: 12px;
		padding-bottom: 11px;
	}

	.jlvb-booking__head h2 {
		font-size: 36px;
	}

	.jlvb-booking__guests {
		margin-top: 12px;
		margin-bottom: 10px;
	}

	.jlvb-booking__summary > div {
		min-height: 35px;
	}

	.jlvb-booking__message {
		min-height: 23px;
		margin-top: 6px;
	}

	.jlvb-booking__policy-link {
		margin-top: 9px;
		padding-top: 9px;
	}
}

@media (max-width: 1024px) {
	.jlvb-villa__heading,
	.jlvb-villa__layout {
		width: min(100% - 48px, 900px);
	}

	.jlvb-location-block {
		grid-template-columns: minmax(250px, .9fr) minmax(0, 1.1fr);
	}

	.jlvb-booking {
		max-height: none;
		overflow: visible;
	}
}

@media (max-width: 767px) {
	.jlvb-villa {
		background: #f4efe6;
		font-size: 16px;
	}

	.jlvb-villa__heading,
	.jlvb-villa__layout {
		width: calc(100% - 32px);
	}

	.jlvb-villa__location {
		font-size: 16px;
	}

	.jlvb-villa__quick-specs > span {
		font-size: 12px;
	}

	.jlvb-villa-section__eyebrow {
		font-size: 10px;
	}

	.jlvb-villa-section h2 {
		font-size: clamp(42px, 12vw, 52px);
	}

	.jlvb-villa-description__copy {
		font-size: 17px;
	}

	.jlvb-speciality-section,
	.jlvb-location-section,
	.jlvb-availability-section {
		padding: 29px 21px !important;
		border-radius: 17px;
	}

	.jlvb-location-block {
		grid-template-columns: 1fr;
	}

	.jlvb-location-block__details {
		padding: 22px;
	}

	.jlvb-distances dt,
	.jlvb-distances dd {
		font-size: 15px;
	}

	.jlvb-amenities__tabs button {
		font-size: 13px;
	}

	.jlvb-amenities__panels {
		padding: 25px 21px;
	}

	.jlvb-amenity-group li {
		font-size: 14px;
	}

	.jlvb-bedroom-grid {
		grid-auto-columns: minmax(270px, 86%);
	}

	.jlvb-booking {
		padding: 22px 18px 19px;
	}
}

/* --------------------------------------------------------------------------
 * Final desktop refinement — v0.4.2
 * -------------------------------------------------------------------------- */

.jlvb-villa {
	--jlvb-vp-cream: #f4efe6;
	--jlvb-vp-cream-deep: #f4efe6;
	--jlvb-vp-paper: #f4efe6;
	--jlvb-vp-blue-shadow: rgba(138, 107, 61, .16);
	background: #faf6ee;
}

/* The theme header already occupies its own document space. */
.jlvb-villa-gallery,
.admin-bar .jlvb-villa-gallery {
	margin-top: 0;
}

/* Keep the grid icon and label perfectly centred as one compact control. */
.jlvb-villa-gallery__all {
	width: 178px;
	min-height: 68px;
	padding: 9px 16px !important;
	display: inline-flex !important;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 5px;
	line-height: 1.15;
	text-align: center;
	white-space: nowrap;
}

.jlvb-villa-gallery__all .jlvb-villa-icon {
	margin: 0 auto;
	flex: 0 0 auto;
}

/* Exact cream accent and a slightly clearer blue depth. */
.jlvb-speciality-section,
.jlvb-fact,
.jlvb-location-block__details,
.jlvb-location-visual,
.jlvb-amenities__panels,
.jlvb-calendar-month,
.jlvb-price-table-wrap,
.jlvb-booking-policy,
.jlvb-recommendations-section,
.jlvb-recommendation-card {
	transition:
		transform .28s cubic-bezier(.2, .7, .2, 1),
		box-shadow .28s ease;
}

.jlvb-speciality-section,
.jlvb-location-section,
.jlvb-availability-section,
.jlvb-recommendations-section {
	background-color: var(--jlvb-vp-cream);
}

.jlvb-speciality-section {
	box-shadow:
		inset 0 0 0 1px rgba(48, 42, 37, .08),
		0 18px 42px var(--jlvb-vp-blue-shadow);
}

.jlvb-fact,
.jlvb-bedroom-card,
.jlvb-calendar-month,
.jlvb-price-table-wrap {
	background: var(--jlvb-vp-cream);
}

.jlvb-location-block__details,
.jlvb-availability-section .jlvb-calendar-month,
.jlvb-rules > div,
.jlvb-recommendation-card {
	background: #f4efe6;
}

.jlvb-fact,
.jlvb-location-block__details,
.jlvb-amenities__panels,
.jlvb-calendar-month,
.jlvb-price-table-wrap,
.jlvb-booking-policy,
.jlvb-recommendation-card {
	box-shadow:
		inset 0 0 0 1px rgba(48, 42, 37, .08),
		0 13px 30px rgba(138, 107, 61, .11);
}

@media (hover: hover) and (pointer: fine) {
	.jlvb-speciality-section:hover,
	.jlvb-fact:hover,
	.jlvb-location-block__details:hover,
	.jlvb-location-visual:hover,
	.jlvb-amenities__panels:hover,
	.jlvb-calendar-month:hover,
	.jlvb-price-table-wrap:hover,
	.jlvb-booking-policy:hover,
	.jlvb-recommendation-card:hover {
		transform: translateY(-4px);
		box-shadow:
			inset 0 0 0 1px rgba(48, 42, 37, .09),
			0 24px 50px rgba(138, 107, 61, .19);
	}
}

/* Sleeping rail itself stays completely flat; only its content cards have depth. */
.jlvb-sleeping-section,
.jlvb-bedroom-grid {
	background: transparent !important;
	box-shadow: none !important;
	filter: none !important;
}

.jlvb-sleeping-section::before,
.jlvb-sleeping-section::after,
.jlvb-bedroom-grid::before,
.jlvb-bedroom-grid::after {
	display: none !important;
	box-shadow: none !important;
	content: none !important;
}

.jlvb-bedroom-card {
	box-shadow: 0 13px 30px rgba(138, 107, 61, .12);
}

.jlvb-bedroom-card:hover {
	box-shadow: 0 23px 45px rgba(138, 107, 61, .18);
}

/* Host recommendations: a full-width, image-free companion to Location. */
.jlvb-recommendations-section {
	padding: clamp(42px, 4.5vw, 58px) !important;
	border-radius: 24px;
	box-shadow:
		inset 0 0 0 1px rgba(48, 42, 37, .07),
		0 18px 42px rgba(138, 107, 61, .10);
}

.jlvb-recommendations-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}

.jlvb-recommendation-card {
	min-height: 230px;
	padding: 25px 23px 22px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 30px;
	border-radius: 18px;
	color: var(--jlvb-vp-navy) !important;
	text-decoration: none !important;
}

.jlvb-recommendation-card__type {
	display: inline-flex;
	margin-bottom: 19px;
	padding: 7px 10px;
	border-radius: 999px;
	color: #f4efe6;
	background: var(--jlvb-vp-blue);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .12em;
	line-height: 1;
	text-transform: uppercase;
}

.jlvb-recommendation-card h3 {
	margin: 0;
	color: var(--jlvb-vp-navy);
	font: 400 clamp(28px, 2.2vw, 36px)/1 "Playfair Display", "Times New Roman", serif;
	letter-spacing: -.025em;
}

.jlvb-recommendation-card p {
	margin: 13px 0 0;
	color: rgba(48, 42, 37, .72);
	font-size: 14px;
	line-height: 1.55;
}

.jlvb-recommendation-card__action {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding-top: 17px;
	border-top: 1px solid rgba(48, 42, 37, .11);
	color: var(--jlvb-vp-blue);
	font-size: 13px;
	font-weight: 700;
}

.jlvb-recommendation-card__action .jlvb-villa-icon {
	width: 18px;
	height: 18px;
	transition: transform .22s ease;
}

.jlvb-recommendation-card:hover .jlvb-recommendation-card__action .jlvb-villa-icon {
	transform: translateX(4px);
}

/* Natural-height sticky card: no internal scrollbar and CTA always in the card. */
@media (min-width: 1025px) {
	.jlvb-booking {
		--jlvb-booking-top: 24px;
		top: var(--jlvb-booking-top);
		height: auto;
		min-height: 0;
		max-height: none;
		overflow: visible;
		overscroll-behavior: auto;
	}

	.admin-bar .jlvb-booking {
		--jlvb-booking-top: 56px;
		top: var(--jlvb-booking-top);
	}
}

@media (min-width: 1025px) and (max-height: 820px) {
	.jlvb-booking {
		padding: 15px 18px 14px;
	}

	.jlvb-booking__head {
		margin-bottom: 10px;
		padding-bottom: 9px;
	}

	.jlvb-booking__head h2 {
		font-size: 34px;
	}

	.jlvb-booking__label {
		margin-bottom: 6px;
	}

	.jlvb-booking input[type="date"] {
		height: 41px;
	}

	.jlvb-booking__guests {
		margin: 10px 0 8px;
	}

	.jlvb-booking__stepper {
		height: 36px;
	}

	.jlvb-booking__summary > div {
		min-height: 32px;
	}

	.jlvb-booking__message {
		min-height: 20px;
		margin: 5px 0 2px;
	}

	.jlvb-booking__actions a {
		min-height: 42px;
	}

	.jlvb-booking__policy-link {
		margin-top: 7px;
		padding-top: 7px;
	}
}

@media (max-width: 1100px) {
	.jlvb-recommendations-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.jlvb-villa-gallery,
	.admin-bar .jlvb-villa-gallery {
		margin-top: 0;
	}

	.jlvb-villa-gallery__all {
		width: 150px;
		min-height: 59px;
		padding: 7px 13px !important;
	}

	.jlvb-speciality-section,
	.jlvb-location-section,
	.jlvb-availability-section,
	.jlvb-recommendations-section {
		padding: 29px 21px !important;
		border-radius: 17px;
	}

	.jlvb-recommendations-grid {
		grid-template-columns: 1fr;
	}

	.jlvb-recommendation-card {
		min-height: 205px;
	}
}

/* --------------------------------------------------------------------------
 * Interactive extras, recommendation imagery and sale pricing — v0.4.3
 * -------------------------------------------------------------------------- */

.jlvb-speciality-intro {
	max-width: 720px;
	margin: -10px 0 25px;
	color: rgba(48, 42, 37, .72);
	font-size: 15px;
	line-height: 1.65;
}

button.jlvb-speciality-tag--extra {
	border: 1px solid rgba(48, 42, 37, .10);
	cursor: pointer;
	appearance: none;
	gap: 8px;
	text-align: left;
}

button.jlvb-speciality-tag--extra small {
	padding-left: 8px;
	border-left: 1px solid rgba(48, 42, 37, .18);
	color: rgba(48, 42, 37, .68);
	font-size: 10px;
	font-weight: 700;
	white-space: nowrap;
}

button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"] {
	color: #f4efe6;
	border-color: var(--jlvb-vp-blue);
	background: var(--jlvb-vp-blue);
	box-shadow: 0 10px 24px rgba(138, 107, 61, .24);
}

button.jlvb-speciality-tag--extra.is-selected small,
button.jlvb-speciality-tag--extra[aria-pressed="true"] small {
	border-left-color: rgba(244, 239, 230, .38);
	color: #f4efe6;
}

button.jlvb-speciality-tag--extra.is-selected::after,
button.jlvb-speciality-tag--extra[aria-pressed="true"]::after {
	content: "✓";
	font-size: 13px;
	font-weight: 800;
}

.jlvb-speciality-tag--extra.is-unpriced {
	opacity: .74;
}

.jlvb-booking__extras strong {
	color: var(--jlvb-vp-blue) !important;
}

.jlvb-recommendation-card.has-image {
	min-height: 430px;
	padding: 0;
	overflow: hidden;
	justify-content: flex-start;
	gap: 0;
}

.jlvb-recommendation-card__image {
	width: 100%;
	height: 190px;
	overflow: hidden;
	background: #e2d8c9;
}

.jlvb-recommendation-card__image img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
	transition: transform .55s cubic-bezier(.2, .7, .2, 1);
}

.jlvb-recommendation-card:hover .jlvb-recommendation-card__image img {
	transform: scale(1.045);
}

.jlvb-recommendation-card.has-image .jlvb-recommendation-card__body {
	padding: 20px 22px 0;
}

.jlvb-recommendation-card.has-image .jlvb-recommendation-card__type {
	margin-bottom: 15px;
}

.jlvb-recommendation-card.has-image .jlvb-recommendation-card__action {
	margin: auto 22px 0;
	padding: 17px 0 21px;
}

.jlvb-price-sale {
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px 9px;
}

.jlvb-price-sale del {
	color: rgba(48, 42, 37, .52);
	text-decoration-thickness: 1.5px;
}

.jlvb-price-sale strong {
	color: #c83232;
	font-weight: 800;
}

.jlvb-price-sale small {
	padding: 4px 6px;
	border-radius: 999px;
	color: #f4efe6;
	background: #c83232;
	font-size: 9px;
	font-weight: 800;
	line-height: 1;
	white-space: nowrap;
}

@media (max-width: 767px) {
	.jlvb-speciality-intro {
		margin-top: -5px;
		font-size: 14px;
	}

	button.jlvb-speciality-tag--extra {
		width: 100%;
		justify-content: space-between;
	}

	.jlvb-recommendation-card.has-image {
		min-height: 410px;
	}

	.jlvb-recommendation-card__image {
		height: 200px;
	}
}

/* v0.4.4 final-state overrides must follow the v0.4.3 interactive styles. */
button.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra:hover,
button.jlvb-speciality-tag--extra:focus-visible,
button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"] {
	color: #655b52;
	border-color: rgba(48, 42, 37, .10);
	background: #e2d9cd;
	box-shadow: none;
}

button.jlvb-speciality-tag--extra.is-selected small,
button.jlvb-speciality-tag--extra[aria-pressed="true"] small {
	border-left-color: rgba(48, 42, 37, .18);
	color: rgba(48, 42, 37, .68);
}

button.jlvb-speciality-tag--extra.is-selected::after,
button.jlvb-speciality-tag--extra[aria-pressed="true"]::after {
	margin-left: 2px;
	color: var(--jlvb-vp-green);
	content: "+";
	font-size: 18px;
	font-weight: 900;
	line-height: 1;
}

.jlvb-sleeping-section,
.jlvb-bedroom-grid,
.jlvb-bedroom-card,
.jlvb-bedroom-card:hover,
.jlvb-bedroom-card:focus-within {
	box-shadow: none !important;
	filter: none !important;
}

.jlvb-bedroom-card:hover {
	transform: none;
}

/* --------------------------------------------------------------------------
 * Header clearance and uniform extra-charge controls — v0.4.5
 * -------------------------------------------------------------------------- */

/*
 * The public header can be sticky or absolutely positioned by the active
 * theme, so the complete pre-gallery block needs its own reliable clearance.
 * Keep this desktop-only until the dedicated mobile pass.
 */
@media (min-width: 768px) {
	.jlvb-villa__pre-gallery {
		padding-top: clamp(70px, 5vw, 88px);
	}

	.admin-bar .jlvb-villa__pre-gallery {
		padding-top: clamp(86px, 6vw, 104px);
	}
}

/*
 * Priced and unpriced extras intentionally share one visual shape. Prices stay
 * in data attributes for the booking calculation and are not shown inside the
 * control, preventing priced options from becoming oversized pills.
 */
.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra:hover,
button.jlvb-speciality-tag--extra:focus-visible,
button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"] {
	min-height: 34px;
	padding: 7px 12px;
	align-items: center;
	justify-content: flex-start;
	gap: 7px;
	border: 1px solid rgba(48, 42, 37, .10) !important;
	border-radius: 6px !important;
	color: #655b52 !important;
	background: #e2d9cd !important;
	box-shadow: none !important;
	font-size: 11px;
	font-weight: 600;
	line-height: 1.25;
	transform: none !important;
}

button.jlvb-speciality-tag--extra small {
	display: none !important;
}

button.jlvb-speciality-tag--extra.is-selected::after,
button.jlvb-speciality-tag--extra[aria-pressed="true"]::after {
	margin-left: 1px;
	color: var(--jlvb-vp-green);
	content: "+";
	font-size: 18px;
	font-weight: 900;
	line-height: 1;
}

/* --------------------------------------------------------------------------
 * Stable Villa Speciality cards — v0.4.6
 * -------------------------------------------------------------------------- */

/*
 * Restore the card geometry from v0.4.2 for every speciality. Interactive
 * extras keep exactly the same outer dimensions before and after selection.
 */
.jlvb-speciality-tag,
.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra:hover,
button.jlvb-speciality-tag--extra:focus-visible,
button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"] {
	width: auto !important;
	height: 40px;
	min-height: 40px;
	padding: 9px 15px;
	box-sizing: border-box;
	align-items: center;
	border-radius: 8px !important;
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
}

button.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra:hover,
button.jlvb-speciality-tag--extra:focus-visible,
button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"] {
	display: inline-flex;
	justify-content: flex-start;
	gap: 8px;
	color: #655b52 !important;
	background: #e2d9cd !important;
	box-shadow: none !important;
	transform: none !important;
}

button.jlvb-speciality-tag--extra .jlvb-speciality-tag__price {
	display: inline-flex !important;
	padding: 0 0 0 8px;
	border: 0;
	border-left: 1px solid rgba(48, 42, 37, .18);
	color: #655b52;
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
}

button.jlvb-speciality-tag--extra .jlvb-speciality-tag__status {
	width: 10px;
	min-width: 10px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--jlvb-vp-green);
	font-size: 18px;
	font-weight: 900;
	line-height: 1;
	visibility: hidden;
}

button.jlvb-speciality-tag--extra.is-selected .jlvb-speciality-tag__status,
button.jlvb-speciality-tag--extra[aria-pressed="true"] .jlvb-speciality-tag__status {
	visibility: visible;
}

button.jlvb-speciality-tag--extra.is-selected::after,
button.jlvb-speciality-tag--extra[aria-pressed="true"]::after {
	content: none !important;
}

/* --------------------------------------------------------------------------
 * Production mobile villa layout — v0.4.7
 * -------------------------------------------------------------------------- */

.jlvb-mobile-booking-bar,
.jlvb-booking__mobile-close {
	display: none;
}

@media (max-width: 767px) {
	html {
		scroll-padding-bottom: 96px;
	}

	body.jlvb-mobile-booking-open {
		overflow: hidden;
	}

	.jlvb-villa {
		--jlvb-mobile-gutter: 16px;
		--jlvb-mobile-header-clearance: 86px;
		width: 100%;
		max-width: 100%;
		padding-bottom: calc(94px + env(safe-area-inset-bottom));
		overflow-x: clip;
		background: #f4efe6;
		font-size: 16px;
	}

	.jlvb-villa img,
	.jlvb-villa svg,
	.jlvb-villa table,
	.jlvb-villa input,
	.jlvb-villa button,
	.jlvb-villa a {
		max-width: 100%;
	}

	/* Keep the complete page below fixed or absolute mobile theme headers. */
	.jlvb-villa__pre-gallery {
		width: calc(100% - (var(--jlvb-mobile-gutter) * 2));
		margin: 0 auto;
		padding: var(--jlvb-mobile-header-clearance) 0 14px;
		align-items: flex-start;
		flex-direction: column;
		gap: 9px;
	}

	.admin-bar .jlvb-villa__pre-gallery {
		padding-top: calc(var(--jlvb-mobile-header-clearance) + 46px);
	}

	.jlvb-villa-breadcrumbs {
		width: 100%;
		gap: 5px;
		overflow-wrap: anywhere;
		font-size: 11px;
		line-height: 1.5;
	}

	.jlvb-villa-share {
		min-height: 24px;
		font-size: 12px;
	}

	.jlvb-villa-gallery,
	.admin-bar .jlvb-villa-gallery {
		width: calc(100% - 24px);
		max-width: 520px;
		aspect-ratio: 1.18 / 1;
		margin: 0 auto;
		border-radius: 16px;
	}

	.jlvb-villa-gallery__item img {
		transform: none !important;
	}

	.jlvb-villa-gallery__count {
		top: 11px;
		right: 11px;
		min-width: 70px;
		height: 34px;
		padding: 0 11px;
		font-size: 10px;
	}

	.jlvb-villa-gallery__nav {
		display: none;
	}

	.jlvb-villa-gallery__all {
		left: 11px;
		bottom: 11px;
		width: auto;
		min-width: 132px;
		min-height: 44px;
		padding: 7px 12px !important;
		flex-direction: row;
		gap: 7px;
		border-radius: 999px !important;
		font-size: 10px;
	}

	.jlvb-villa-gallery__all .jlvb-villa-icon {
		width: 16px;
		height: 16px;
	}

	.jlvb-villa__heading,
	.jlvb-villa__layout {
		width: calc(100% - (var(--jlvb-mobile-gutter) * 2));
		max-width: 560px;
		margin-right: auto;
		margin-left: auto;
	}

	.jlvb-villa__heading {
		padding: 28px 0 24px;
		align-items: stretch;
		gap: 22px;
	}

	.jlvb-villa__heading h1 {
		max-width: 100%;
		margin: 0;
		font-size: clamp(40px, 12vw, 52px);
		line-height: .98;
		overflow-wrap: anywhere;
	}

	.jlvb-villa__location {
		margin-top: 11px;
		font-size: 15px;
	}

	.jlvb-villa__quick-specs {
		width: 100%;
		padding: 11px 0;
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 0;
		border-top: 1px solid var(--jlvb-vp-line);
		border-bottom: 1px solid var(--jlvb-vp-line);
	}

	.jlvb-villa__quick-specs > span {
		min-width: 0;
		min-height: 42px;
		padding: 4px 7px;
		flex-direction: row;
		justify-content: center;
		gap: 5px;
		border-right: 1px solid var(--jlvb-vp-line);
		border-radius: 0;
		background: transparent;
		font-size: 10px;
		line-height: 1.2;
		text-align: left;
	}

	.jlvb-villa__quick-specs > span:last-child {
		border-right: 0;
	}

	.jlvb-villa__quick-specs .jlvb-villa-icon {
		width: 16px;
		height: 16px;
	}

	.jlvb-villa__quick-specs b {
		font-size: 12px;
	}

	.jlvb-villa__layout {
		padding: 16px 0 40px;
		display: block;
	}

	.jlvb-villa__content {
		width: 100%;
		min-width: 0;
	}

	.jlvb-villa__content > * {
		max-width: 100%;
	}

	.jlvb-villa-section,
	.jlvb-editorial-image {
		width: 100%;
		max-width: 100%;
		padding-bottom: 52px;
		scroll-margin-top: 20px;
	}

	.jlvb-villa-section + .jlvb-villa-section {
		padding-top: 52px;
	}

	.jlvb-villa-section__head {
		margin-bottom: 25px;
		align-items: flex-end;
		gap: 14px;
	}

	.jlvb-villa-section__eyebrow {
		margin-bottom: 8px;
		font-size: 10px;
		letter-spacing: .14em;
	}

	.jlvb-villa-section h2 {
		max-width: 100%;
		font-size: clamp(34px, 10vw, 43px);
		line-height: .98;
		overflow-wrap: anywhere;
	}

	.jlvb-villa-description__copy {
		margin-top: 23px;
		font-size: 16px;
		line-height: 1.72;
		overflow-wrap: anywhere;
	}

	.jlvb-editorial-image {
		aspect-ratio: 1.28 / 1;
		margin: 0 0 52px;
		padding: 0;
		border-radius: 14px;
	}

	.jlvb-editorial-image figcaption {
		right: 10px;
		bottom: 10px;
		left: 10px;
		width: auto;
		max-width: calc(100% - 20px);
		padding: 9px 11px;
		font-size: 10px;
	}

	/* Uniform, touch-friendly speciality choices with no layout shift. */
	.jlvb-speciality-section,
	.jlvb-location-section,
	.jlvb-availability-section,
	.jlvb-recommendations-section {
		padding: 27px 18px !important;
		border-radius: 16px;
	}

	.jlvb-speciality-section + .jlvb-villa-section,
	.jlvb-location-section + .jlvb-villa-section {
		margin-top: 52px;
	}

	.jlvb-speciality-intro {
		margin: -3px 0 20px;
		font-size: 14px;
		line-height: 1.55;
	}

	.jlvb-speciality-tags {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 9px;
	}

	.jlvb-speciality-tag,
	.jlvb-speciality-tag--extra,
	button.jlvb-speciality-tag--extra,
	button.jlvb-speciality-tag--extra:hover,
	button.jlvb-speciality-tag--extra:focus-visible,
	button.jlvb-speciality-tag--extra.is-selected,
	button.jlvb-speciality-tag--extra[aria-pressed="true"] {
		width: 100% !important;
		height: 54px;
		min-width: 0;
		min-height: 54px;
		padding: 8px 10px;
		justify-content: center;
		gap: 6px;
		white-space: normal;
		font-size: 12px;
		line-height: 1.15;
		text-align: center;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__name {
		min-width: 0;
		display: -webkit-box;
		overflow: hidden;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 2;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__price {
		flex: 0 0 auto;
		padding-left: 6px;
		font-size: 11px;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__status {
		width: 8px;
		min-width: 8px;
		font-size: 16px;
	}

	.jlvb-speciality-legend {
		margin-top: 17px;
		flex-wrap: wrap;
		gap: 10px 16px;
		font-size: 10px;
	}

	.jlvb-facts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 9px;
	}

	.jlvb-fact {
		min-width: 0;
		min-height: 96px;
		padding: 15px 12px;
		gap: 10px;
		border-radius: 14px;
	}

	.jlvb-fact .jlvb-villa-icon {
		width: 20px;
		height: 20px;
	}

	.jlvb-fact strong {
		font-size: 16px;
		overflow-wrap: anywhere;
	}

	.jlvb-fact span {
		font-size: 10px;
	}

	.jlvb-location-block {
		width: 100%;
		grid-template-columns: minmax(0, 1fr);
		gap: 12px;
	}

	.jlvb-location-visual {
		min-width: 0;
		min-height: 230px;
		aspect-ratio: 1.28 / 1;
		order: -1;
		border-radius: 14px;
	}

	.jlvb-location-block__details {
		min-width: 0;
		padding: 18px;
		border-radius: 14px;
	}

	.jlvb-distances > div {
		min-width: 0;
		gap: 12px;
	}

	.jlvb-distances dt,
	.jlvb-distances dd {
		min-width: 0;
		font-size: 14px;
		overflow-wrap: anywhere;
	}

	.jlvb-map-card {
		right: 12px;
		bottom: 12px;
		left: 12px;
		width: auto;
		min-height: 62px;
		padding: 10px 12px;
		border-radius: 12px;
	}

	.jlvb-map-card__pin {
		width: 36px;
		height: 36px;
	}

	.jlvb-amenities {
		width: 100%;
		min-width: 0;
		display: block;
	}

	.jlvb-amenities__tabs {
		width: 100%;
		max-width: 100%;
		margin: 0 0 12px;
		padding: 0 0 7px;
		display: flex;
		flex-direction: row;
		gap: 7px;
		overflow-x: auto;
		overscroll-behavior-inline: contain;
		scrollbar-width: none;
	}

	.jlvb-amenities__tabs::-webkit-scrollbar {
		display: none;
	}

	.jlvb-amenities__tabs button {
		width: auto;
		min-width: max-content;
		min-height: 40px;
		padding: 0 13px !important;
		border: 1px solid var(--jlvb-vp-line) !important;
		border-radius: 999px !important;
		font-size: 12px;
	}

	.jlvb-amenities__tabs button::after {
		display: none;
	}

	.jlvb-amenities__panels {
		width: 100%;
		min-width: 0;
		min-height: 0;
		padding: 21px 17px;
		border-radius: 15px;
	}

	.jlvb-amenity-group h3 {
		font-size: 24px;
	}

	.jlvb-amenity-group ul {
		grid-template-columns: minmax(0, 1fr);
	}

	.jlvb-amenity-group li {
		min-width: 0;
		font-size: 14px;
		overflow-wrap: anywhere;
	}

	.jlvb-editorial-image--amenities {
		margin-top: 18px;
		margin-bottom: 0;
	}

	.jlvb-bedroom-nav {
		flex: 0 0 auto;
	}

	.jlvb-bedroom-nav button {
		width: 39px;
		height: 39px;
	}

	.jlvb-bedroom-grid {
		width: 100%;
		max-width: 100%;
		grid-template-columns: none;
		grid-auto-columns: 100%;
		gap: 12px;
		padding: 0 0 10px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		overscroll-behavior-inline: contain;
	}

	.jlvb-bedroom-card {
		width: 100%;
		min-width: 0;
		scroll-snap-align: start;
		border-radius: 16px;
	}

	.jlvb-bedroom-card__image {
		height: auto;
		aspect-ratio: 1.42 / 1;
	}

	.jlvb-bedroom-card__body {
		min-width: 0;
		padding: 20px 18px 22px;
		grid-template-columns: minmax(0, 1fr);
		gap: 15px;
	}

	.jlvb-bedroom-card h3 {
		font-size: 28px;
		overflow-wrap: anywhere;
	}

	.jlvb-bedroom-card li {
		font-size: 13px;
		overflow-wrap: anywhere;
	}

	.jlvb-calendar {
		width: 100%;
		grid-template-columns: minmax(0, 1fr);
		gap: 0;
	}

	.jlvb-calendar-month {
		width: 100%;
		min-width: 0;
		padding: 17px 12px;
		border-radius: 15px;
	}

	.jlvb-calendar-month:nth-child(2) {
		display: none;
	}

	.jlvb-calendar-month h3 {
		margin-bottom: 15px;
		font-size: 23px;
	}

	.jlvb-calendar-month__grid {
		gap: 3px;
	}

	.jlvb-calendar-day {
		min-width: 0;
		min-height: 44px;
		font-size: 12px;
	}

	.jlvb-calendar-nav button {
		width: 39px;
		height: 39px;
	}

	.jlvb-calendar-legend {
		margin-top: 16px;
		flex-wrap: wrap;
		gap: 9px 16px;
		font-size: 10px;
	}

	.jlvb-recommendations-grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 14px;
	}

	.jlvb-recommendation-card,
	.jlvb-recommendation-card.has-image {
		width: 100%;
		min-width: 0;
		min-height: 0;
		border-radius: 15px;
	}

	.jlvb-recommendation-card__image {
		height: auto;
		aspect-ratio: 1.55 / 1;
	}

	.jlvb-recommendation-card.has-image .jlvb-recommendation-card__body {
		padding: 18px 18px 0;
	}

	.jlvb-recommendation-card h3 {
		font-size: 27px;
		overflow-wrap: anywhere;
	}

	.jlvb-recommendation-card p {
		font-size: 13px;
		overflow-wrap: anywhere;
	}

	.jlvb-recommendation-card.has-image .jlvb-recommendation-card__action {
		margin: 17px 18px 0;
		padding: 15px 0 18px;
	}

	.jlvb-price-table-wrap {
		width: 100%;
		max-width: 100%;
		overflow: visible;
		border: 0;
		background: transparent;
	}

	.jlvb-price-table,
	.jlvb-price-table tbody,
	.jlvb-price-table tr,
	.jlvb-price-table td {
		width: 100%;
		max-width: 100%;
		display: block;
	}

	.jlvb-price-table thead {
		display: none;
	}

	.jlvb-price-table tr {
		margin: 0 0 11px;
		padding: 16px;
		border: 1px solid var(--jlvb-vp-line);
		border-radius: 15px;
		background: var(--jlvb-vp-cream);
	}

	.jlvb-price-table td {
		min-width: 0;
		padding: 7px 0;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 13px;
		border: 0;
		white-space: normal;
		text-align: right;
		overflow-wrap: anywhere;
	}

	.jlvb-price-table td::before {
		flex: 0 0 auto;
		color: rgba(48, 42, 37, .58);
		font-size: 9px;
		font-weight: 700;
		letter-spacing: .05em;
		text-transform: uppercase;
		content: attr(data-label);
	}

	.jlvb-price-sale {
		justify-content: flex-end;
		gap: 5px 7px;
	}

	.jlvb-rules {
		grid-template-columns: minmax(0, 1fr);
	}

	.jlvb-rules > div {
		min-width: 0;
		min-height: 72px;
		padding: 15px 16px;
	}

	.jlvb-rules dt,
	.jlvb-rules dd {
		overflow-wrap: anywhere;
	}

	.jlvb-booking-policy {
		padding: 25px 18px !important;
		border-radius: 16px;
	}

	/*
	 * The desktop card becomes a bottom sheet. It is still the same DOM node,
	 * so availability, guests, extras, discounts and action URLs stay synced.
	 */
	.jlvb-villa__booking-column {
		position: fixed;
		z-index: 999990;
		inset: 0;
		width: 100%;
		height: 100%;
		padding: 16px 12px 0;
		display: flex;
		align-items: flex-end;
		justify-content: center;
		visibility: hidden;
		opacity: 0;
		background: rgba(42, 33, 27, .58);
		backdrop-filter: blur(3px);
		pointer-events: none;
		transition: opacity .2s ease, visibility .2s ease;
	}

	.jlvb-villa__booking-column.is-open {
		visibility: visible;
		opacity: 1;
		pointer-events: auto;
	}

	.jlvb-booking,
	.admin-bar .jlvb-booking {
		position: relative;
		top: auto;
		width: min(100%, 520px);
		max-width: 520px;
		max-height: calc(100dvh - 18px);
		margin: 0 auto;
		padding: 48px 18px calc(19px + env(safe-area-inset-bottom));
		overflow-x: hidden;
		overflow-y: auto;
		border: 0;
		border-radius: 24px 24px 0 0;
		box-shadow: 0 -18px 55px rgba(42, 33, 27, .22);
		overscroll-behavior: contain;
		-webkit-overflow-scrolling: touch;
		transform: translateY(24px);
		transition: transform .22s ease;
	}

	.jlvb-villa__booking-column.is-open .jlvb-booking {
		transform: translateY(0);
	}

	.jlvb-booking__mobile-close {
		position: absolute;
		z-index: 2;
		top: 12px;
		right: 14px;
		width: 34px;
		height: 34px;
		margin: 0 !important;
		padding: 0 !important;
		display: grid !important;
		place-items: center;
		border: 1px solid var(--jlvb-vp-line) !important;
		border-radius: 50% !important;
		color: var(--jlvb-vp-navy) !important;
		background: #f4efe6 !important;
		box-shadow: none !important;
		font-size: 24px;
		font-weight: 400;
		line-height: 1;
		text-transform: none !important;
	}

	.jlvb-booking__head {
		margin-bottom: 18px;
		padding-right: 30px;
	}

	.jlvb-booking__head h2 {
		font-size: 31px;
	}

	.jlvb-booking__dates {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px;
	}

	.jlvb-booking input[type="date"] {
		min-width: 0;
		height: 48px;
		padding: 0 7px;
		font-size: 11px;
	}

	.jlvb-booking__guests {
		margin: 16px 0 14px;
		gap: 8px;
	}

	.jlvb-booking__stepper {
		min-width: 0;
		grid-template-columns: 34px minmax(26px, 1fr) 34px;
	}

	.jlvb-booking__summary > div {
		min-height: 42px;
		font-size: 12px;
	}

	.jlvb-booking__message {
		margin-top: 10px;
	}

	.jlvb-booking__actions {
		grid-template-columns: minmax(0, .78fr) minmax(0, 1.22fr);
		gap: 8px;
	}

	.jlvb-booking__actions a {
		min-height: 48px;
		padding: 0 11px;
	}

	.jlvb-booking__policy-link {
		margin-top: 13px;
		padding-top: 13px;
	}

	/* Persistent action bar inspired by the supplied mobile reference. */
	.jlvb-mobile-booking-bar {
		position: fixed;
		z-index: 999900;
		right: 0;
		bottom: 0;
		left: 0;
		width: 100%;
		min-height: calc(76px + env(safe-area-inset-bottom));
		padding: 9px 12px calc(9px + env(safe-area-inset-bottom));
		display: grid;
		grid-template-columns: minmax(72px, .72fr) minmax(96px, .95fr) minmax(104px, 1.05fr);
		align-items: center;
		gap: 8px;
		border-top: 1px solid rgba(48, 42, 37, .12);
		background: rgba(244, 239, 230, .97);
		box-shadow: 0 -10px 30px rgba(52, 43, 35, .12);
		backdrop-filter: blur(12px);
	}

	.jlvb-mobile-booking-bar__enquiry,
	.jlvb-mobile-booking-bar__open,
	.jlvb-mobile-booking-bar__price {
		width: 100%;
		min-width: 0;
		min-height: 48px;
		margin: 0 !important;
		padding: 0 8px !important;
		border-radius: 999px !important;
		box-shadow: none !important;
		font-family: inherit;
		text-transform: none !important;
		text-decoration: none !important;
	}

	.jlvb-mobile-booking-bar__enquiry {
		display: flex;
		align-items: center;
		justify-content: center;
		border: 1px solid rgba(48, 42, 37, .18);
		color: var(--jlvb-vp-navy) !important;
		background: #f4efe6;
		font-size: 11px;
		font-weight: 600;
	}

	.jlvb-mobile-booking-bar__price {
		display: grid !important;
		grid-template-columns: auto auto;
		align-content: center;
		justify-content: center;
		gap: 0 3px;
		border: 0 !important;
		color: var(--jlvb-vp-navy) !important;
		background: transparent !important;
		font-size: 11px;
		text-align: center;
	}

	.jlvb-mobile-booking-bar__price strong {
		font-size: 14px;
		font-weight: 700;
		white-space: nowrap;
	}

	.jlvb-mobile-booking-bar__price span {
		align-self: end;
		color: rgba(48, 42, 37, .68);
		font-size: 9px;
		white-space: nowrap;
	}

	.jlvb-mobile-booking-bar__price small {
		grid-column: 1 / -1;
		color: rgba(48, 42, 37, .58);
		font-size: 9px;
		text-decoration: underline;
		text-underline-offset: 2px;
	}

	.jlvb-mobile-booking-bar__open {
		border: 0 !important;
		color: #f4efe6 !important;
		background: linear-gradient(135deg, var(--jlvb-vp-blue), var(--jlvb-vp-secondary-dark)) !important;
		font-size: 11px;
		font-weight: 700;
	}
}

@media (max-width: 360px) {
	.jlvb-villa {
		--jlvb-mobile-gutter: 13px;
	}

	.jlvb-villa__quick-specs > span {
		padding-right: 3px;
		padding-left: 3px;
		font-size: 9px;
	}

	.jlvb-speciality-tags {
		grid-template-columns: minmax(0, 1fr);
	}

	.jlvb-mobile-booking-bar {
		padding-right: 8px;
		padding-left: 8px;
		grid-template-columns: 72px minmax(88px, 1fr) minmax(96px, 1.08fr);
		gap: 5px;
	}

	.jlvb-mobile-booking-bar__enquiry,
	.jlvb-mobile-booking-bar__open {
		font-size: 10px;
	}
}

/* --------------------------------------------------------------------------
 * Mobile finishing pass — v0.4.8
 * -------------------------------------------------------------------------- */

/* The booking close control must never appear in the desktop sticky card. */
button.jlvb-booking__mobile-close {
	display: none !important;
}

@media (max-width: 767px) {
	/*
	 * Full-width 3:2 gallery presentation. The public editor continues to use
	 * the existing Villa Gallery field; these rules only change its lightbox.
	 */
	.jlvb-lightbox {
		inset: 0;
		padding: 0;
		display: block;
		color: #f4efe6;
		background: rgba(42, 33, 27, .84);
		backdrop-filter: blur(3px);
	}

	.jlvb-lightbox figure {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		margin: 0;
		display: flex;
		align-items: center;
		justify-content: center;
		transform: none;
	}

	.jlvb-lightbox img {
		width: 100vw;
		max-width: none;
		height: auto;
		max-height: none;
		aspect-ratio: 3 / 2;
		display: block;
		object-fit: cover;
	}

	.jlvb-lightbox figcaption {
		position: fixed;
		z-index: 2;
		top: max(24px, env(safe-area-inset-top));
		left: 20px;
		margin: 0;
		color: #f4efe6;
		font-size: 14px;
		font-weight: 600;
	}

	.jlvb-lightbox button.jlvb-lightbox__close {
		position: fixed;
		z-index: 3;
		top: max(17px, env(safe-area-inset-top));
		right: 16px;
		width: auto;
		height: 48px;
		padding: 0 20px !important;
		border: 1px solid rgba(244, 239, 230, .86) !important;
		border-radius: 999px !important;
		background: rgba(51, 41, 34, .28) !important;
		font-size: 0 !important;
	}

	.jlvb-lightbox button.jlvb-lightbox__close::after {
		content: "Close";
		font-size: 14px;
		font-weight: 600;
		line-height: 1;
	}

	.jlvb-lightbox button.jlvb-lightbox__prev,
	.jlvb-lightbox button.jlvb-lightbox__next {
		position: fixed;
		z-index: 3;
		bottom: calc(94px + env(safe-area-inset-bottom));
		width: 52px;
		height: 52px;
		border-radius: 16px !important;
		background: rgba(51, 41, 34, .54) !important;
	}

	.jlvb-lightbox button.jlvb-lightbox__prev {
		left: calc(50% - 62px);
	}

	.jlvb-lightbox button.jlvb-lightbox__next {
		right: calc(50% - 62px);
	}

	body.jlvb-lightbox-open .jlvb-mobile-booking-bar {
		display: none;
	}

	/*
	 * Extra-charge cards keep the price in a dedicated right rail. Longer
	 * service names can use up to three lines without being clipped.
	 */
	.jlvb-speciality-tags {
		grid-auto-rows: 64px;
	}

	.jlvb-speciality-tag,
	.jlvb-speciality-tag--extra,
	button.jlvb-speciality-tag--extra,
	button.jlvb-speciality-tag--extra:hover,
	button.jlvb-speciality-tag--extra:focus-visible,
	button.jlvb-speciality-tag--extra.is-selected,
	button.jlvb-speciality-tag--extra[aria-pressed="true"] {
		height: 64px;
		min-height: 64px;
	}

	button.jlvb-speciality-tag--extra,
	button.jlvb-speciality-tag--extra:hover,
	button.jlvb-speciality-tag--extra:focus-visible,
	button.jlvb-speciality-tag--extra.is-selected,
	button.jlvb-speciality-tag--extra[aria-pressed="true"] {
		position: relative;
		padding: 7px 65px 7px 10px;
		justify-content: flex-start;
		text-align: left;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__name {
		width: 100%;
		display: -webkit-box;
		overflow: visible;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 3;
		font-size: 11.5px;
		line-height: 1.15;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__price {
		position: absolute;
		right: 28px;
		padding: 0;
		border: 0;
		font-size: 11px;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__status {
		position: absolute;
		right: 8px;
		width: 14px;
		min-width: 14px;
	}

	/* Distances come first; the large image and View Location CTA follow. */
	.jlvb-location-block__details {
		order: 1;
	}

	.jlvb-location-visual {
		order: 2;
	}

	/*
	 * The booking form fits inside the dynamic mobile viewport without an
	 * internal scrollbar. Its close control is a full, proportional button.
	 */
	.jlvb-villa__booking-column {
		padding: 6px 10px;
		align-items: center;
	}

	.jlvb-booking,
	.admin-bar .jlvb-booking {
		width: min(100%, 520px);
		height: auto;
		max-height: calc(100dvh - 12px);
		padding: 43px 16px calc(11px + env(safe-area-inset-bottom));
		overflow: hidden;
		border-radius: 24px;
	}

	button.jlvb-booking__mobile-close {
		position: absolute;
		top: 10px;
		right: 12px;
		width: 38px;
		height: 38px;
		display: grid !important;
		place-items: center;
		border: 0 !important;
		border-radius: 50% !important;
		color: #f4efe6 !important;
		background: var(--jlvb-vp-blue) !important;
		font-size: 23px;
		font-weight: 400;
		line-height: 1;
	}

	.jlvb-booking__head {
		min-height: 0;
		margin: 0 0 9px;
		padding: 0 38px 9px 0;
	}

	.jlvb-booking__head p {
		margin-bottom: 5px;
		font-size: 9px;
	}

	.jlvb-booking__head h2 {
		font-size: 34px;
	}

	.jlvb-booking__head > span {
		font-size: 10px;
	}

	.jlvb-booking__head > span strong {
		font-size: 21px;
	}

	.jlvb-booking__label {
		margin-bottom: 7px;
		font-size: 11px;
	}

	.jlvb-booking label > span,
	.jlvb-booking__guests > div > span {
		margin-bottom: 5px;
		font-size: 10px;
	}

	.jlvb-booking input[type="date"] {
		height: 42px;
		font-size: 10px;
	}

	.jlvb-booking__guests {
		margin: 9px 0 7px;
	}

	.jlvb-booking__stepper {
		height: 37px;
	}

	.jlvb-booking__stepper button {
		width: 32px;
		height: 32px;
	}

	.jlvb-booking__summary > div {
		min-height: 31px;
		font-size: 11px;
	}

	.jlvb-booking__summary small {
		font-size: 8px;
	}

	.jlvb-booking__summary .jlvb-booking__total span,
	.jlvb-booking__summary .jlvb-booking__total strong {
		font-size: 14px;
	}

	.jlvb-booking__message {
		min-height: 18px;
		margin: 4px 0;
		font-size: 9px;
		line-height: 1.3;
	}

	.jlvb-booking__actions a {
		min-height: 42px;
		font-size: 11px;
	}

	.jlvb-booking__policy-link {
		min-height: 24px;
		margin-top: 5px;
		padding-top: 7px;
		font-size: 9px;
	}
}

@media (max-width: 767px) and (max-height: 680px) {
	.jlvb-booking,
	.admin-bar .jlvb-booking {
		padding-top: 38px;
		padding-bottom: 7px;
	}

	button.jlvb-booking__mobile-close {
		top: 7px;
		width: 34px;
		height: 34px;
		font-size: 21px;
	}

	.jlvb-booking__head {
		margin-bottom: 6px;
		padding-bottom: 6px;
	}

	.jlvb-booking__head p,
	.jlvb-booking__policy-link {
		display: none;
	}

	.jlvb-booking__head h2 {
		font-size: 29px;
	}

	.jlvb-booking input[type="date"] {
		height: 38px;
	}

	.jlvb-booking__guests {
		margin: 6px 0 5px;
	}

	.jlvb-booking__stepper {
		height: 34px;
	}

	.jlvb-booking__summary > div {
		min-height: 27px;
	}

	.jlvb-booking__message {
		min-height: 15px;
		margin: 2px 0;
	}

	.jlvb-booking__actions a {
		min-height: 38px;
	}
}

/* --------------------------------------------------------------------------
 * Final interaction and image-quality polish — v0.4.9
 * -------------------------------------------------------------------------- */

/*
 * Extra-charge cards always keep a fixed two-column layout. Selection changes
 * only their colours, never their dimensions or content positions.
 */
button.jlvb-speciality-tag--extra,
button.jlvb-speciality-tag--extra:hover,
button.jlvb-speciality-tag--extra:focus-visible,
button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"] {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) max-content;
	align-items: center;
	justify-content: stretch;
	column-gap: 12px;
	padding-right: 15px;
	padding-left: 15px;
	color: #655b52 !important;
	background: #e2d9cd !important;
	box-shadow: none !important;
	transform: none !important;
	transition: color .18s ease, background-color .18s ease, border-color .18s ease;
}

button.jlvb-speciality-tag--extra .jlvb-speciality-tag__name {
	position: static !important;
	min-width: 0;
	width: auto !important;
	display: block !important;
	overflow: visible !important;
	color: inherit;
	line-height: 1.2;
	text-align: left;
	white-space: normal;
	overflow-wrap: anywhere;
	-webkit-line-clamp: unset !important;
}

button.jlvb-speciality-tag--extra .jlvb-speciality-tag__price {
	position: static !important;
	inset: auto !important;
	justify-self: end;
	margin: 0;
	padding: 0 0 0 10px !important;
	border: 0 !important;
	border-left: 1px solid rgba(48, 42, 37, .20) !important;
	color: inherit !important;
	line-height: 1;
	white-space: nowrap;
}

button.jlvb-speciality-tag--extra .jlvb-speciality-tag__status {
	display: none !important;
}

button.jlvb-speciality-tag--extra.is-selected,
button.jlvb-speciality-tag--extra[aria-pressed="true"],
button.jlvb-speciality-tag--extra.is-selected:hover,
button.jlvb-speciality-tag--extra[aria-pressed="true"]:hover,
button.jlvb-speciality-tag--extra.is-selected:focus-visible,
button.jlvb-speciality-tag--extra[aria-pressed="true"]:focus-visible {
	border-color: var(--jlvb-vp-green) !important;
	color: #f4efe6 !important;
	background: var(--jlvb-vp-green) !important;
}

button.jlvb-speciality-tag--extra.is-selected .jlvb-speciality-tag__price,
button.jlvb-speciality-tag--extra[aria-pressed="true"] .jlvb-speciality-tag__price {
	border-left-color: rgba(244, 239, 230, .42) !important;
	color: #f4efe6 !important;
}

@media (max-width: 767px) {
	.jlvb-lightbox button.jlvb-lightbox__close {
		display: inline-flex !important;
		align-items: center !important;
		justify-content: center !important;
		box-sizing: border-box;
		text-align: center;
		line-height: 1 !important;
	}

	.jlvb-lightbox button.jlvb-lightbox__close::after {
		display: block;
		margin: 0;
		line-height: 1;
		transform: translateY(-.5px);
	}

	button.jlvb-speciality-tag--extra,
	button.jlvb-speciality-tag--extra:hover,
	button.jlvb-speciality-tag--extra:focus-visible,
	button.jlvb-speciality-tag--extra.is-selected,
	button.jlvb-speciality-tag--extra[aria-pressed="true"] {
		padding: 8px 11px !important;
		column-gap: 8px;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__name {
		font-size: 11.5px;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__price {
		padding-left: 7px !important;
		font-size: 11px;
	}
}

/* --------------------------------------------------------------------------
 * Flat seasonal pricing and desktop extra-charge alignment — v0.4.10
 * -------------------------------------------------------------------------- */

/*
 * Keep Seasonal Prices completely flat. Earlier premium-card rules added both
 * an inset edge and a floating shadow to the table wrapper, which showed as a
 * second hazy background around the mobile price cards.
 */
.jlvb-prices-section .jlvb-price-table-wrap,
.jlvb-prices-section .jlvb-price-table-wrap:hover,
.jlvb-prices-section .jlvb-price-table,
.jlvb-prices-section .jlvb-price-table tr {
	box-shadow: none !important;
	filter: none !important;
}

.jlvb-prices-section .jlvb-price-table-wrap,
.jlvb-prices-section .jlvb-price-table-wrap:hover {
	background: transparent !important;
	transform: none !important;
}

/*
 * Desktop-only alignment. Mobile keeps its existing two-column layout exactly
 * as-is, while the name and price sit centred as one stable group on desktop.
 */
@media (min-width: 768px) {
	button.jlvb-speciality-tag--extra,
	button.jlvb-speciality-tag--extra:hover,
	button.jlvb-speciality-tag--extra:focus-visible,
	button.jlvb-speciality-tag--extra.is-selected,
	button.jlvb-speciality-tag--extra[aria-pressed="true"] {
		display: inline-flex !important;
		align-items: center !important;
		justify-content: center !important;
		text-align: center !important;
	}

	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__name,
	button.jlvb-speciality-tag--extra .jlvb-speciality-tag__price {
		justify-self: auto;
		text-align: center;
	}
}

/* --------------------------------------------------------------------------
 * Host Recommendations desktop sizing — v0.4.12
 * -------------------------------------------------------------------------- */

/*
 * Match the vertical section rhythm used by Sleeping Area & Bathrooms.
 * The bedroom rail reserves 17px beneath its cards for the horizontal
 * scrollbar, so the recommendation grid mirrors that space as well.
 * Mobile keeps its existing compact layout unchanged.
 */
@media (min-width: 768px) {
	.jlvb-recommendations-section {
		box-sizing: border-box;
		padding-top: clamp(72px, 7vw, 96px) !important;
		padding-bottom: clamp(72px, 7vw, 96px) !important;
	}

	.jlvb-recommendations-grid {
		padding-bottom: 17px;
	}
}

/*
 * On desktop, use the same 32% card-width basis as the Sleeping Area &
 * Bathrooms rail. The recommendation rail sits inside the section's horizontal
 * padding, so the added clamp term compensates for that inset and keeps the
 * actual card width equal to a bedroom card without moving the section title.
 */
@media (min-width: 1025px) {
	.jlvb-recommendations-grid {
		display: grid;
		grid-auto-flow: column;
		grid-auto-columns: minmax(
			290px,
			calc(32% + clamp(46.08px, 4.48vw, 61.44px))
		);
		grid-template-columns: none;
		gap: 18px;
		overflow-x: auto;
		overscroll-behavior-inline: contain;
		scroll-behavior: smooth;
		scroll-snap-type: inline mandatory;
		scrollbar-color: rgba(48, 42, 37, .23) transparent;
		scrollbar-width: thin;
	}

	.jlvb-recommendations-grid::-webkit-scrollbar {
		height: 5px;
	}

	.jlvb-recommendations-grid::-webkit-scrollbar-thumb {
		border-radius: 999px;
		background: rgba(48, 42, 37, .23);
	}

	.jlvb-recommendation-card {
		width: 100%;
		min-width: 0;
		scroll-snap-align: start;
	}
}
