/*
 * [hsp_booking] - D-EDGE booking widget on /reservation-directe/ (www2).
 * Layout from the Claude Design mock "Après - bureau / mobile" (2026-11-02), adjusted by Hala: square corners,
 * site palette (Elementor kit: Orange #DB5F21, Beige #F7F1E8, Dark brown #26190D, Grey #534F49).
 * The widget's markup is D-EDGE's own (websdk.d-edge.com, unversioned): every rule is scoped to .hsp-booking
 * and only restyles it. !important is used where D-EDGE sets inline styles or strong defaults.
 */

.hsp-booking {
	--hb-accent: #DB5F21;        /* site Orange */
	--hb-accent-dark: #A0521E;   /* site Dark Orange (hover) */
	--hb-ink: #26190D;           /* site Dark brown */
	--hb-muted: #534F49;         /* site Grey */
	--hb-off: #A39A92;
	--hb-off-2: #CFC6BA;
	--hb-beige: #F7F1E8;         /* site Beige */
	--hb-line: #DDD3C5;
	--hb-line-soft: #EEE7DC;
	--hb-tint: #FBE7DC;          /* Orange at ~13% on white */
	--hb-font: 'Century Gothic Std', 'Montserrat', 'Helvetica Neue', Arial, sans-serif;

	max-width: 920px;
	margin: 28px auto 0;
	color: var(--hb-ink);
	font-family: var(--hb-font);
	font-size: 16px;
	line-height: 1.45;
}

.hsp-booking #fb-widget-1,
.hsp-booking #fb-widget-1 * {
	font-family: var(--hb-font) !important;
	box-sizing: border-box;
	border-radius: 0 !important;
}

.hsp-booking .widgets--wrapper,
.hsp-booking .fbw-calendar--container {
	background: transparent !important;
	padding: 0 !important;
	margin: 0 !important;
	max-width: none !important;
	width: 100% !important;
	box-shadow: none !important;
	border: 0 !important;
}

/* Card */
.hsp-booking .fbw-calendar--main {
	display: flex !important;
	flex-direction: column;
	gap: 20px;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 32px !important;
	background: #fff !important;
	border: 1px solid var(--hb-line-soft) !important;
	box-shadow: none !important;
}

/* ---------- Guests: adults / children / child ages, then promo ---------- */
.hsp-booking .fbw-calendar--config {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px 20px !important;
	max-width: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}
/* no child: adults and children share the row */
.hsp-booking .fbw-calendar--config:not(:has(.fbw-calendar--children-age)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.hsp-booking .config-item,
.hsp-booking .fbw-calendar--children-age {
	display: flex !important;
	flex-direction: column;
	gap: 6px;
	min-width: 0 !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	flex: initial !important;
}
.hsp-booking .config-item.config--adult { order: 1; }
.hsp-booking .config-item.config--child { order: 2; }
/* the ages wrapper disappears so each age becomes a grid cell next to the counts */
.hsp-booking .config--child-number { display: contents !important; }
.hsp-booking .fbw-calendar--children-age { order: 3; }
.hsp-booking .config-item.config--promo { order: 10; grid-column: 1 / -1; margin-top: -8px !important; }

.hsp-booking .config-item > .fbw-calendar--label,
.hsp-booking .fbw-calendar--children-age > label {
	margin: 0 !important;
	padding: 0 !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	color: var(--hb-ink) !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
}

/* Stepper: [-] value [+] */
.hsp-booking .qty-stepper {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100% !important;
	height: 44px;
	padding: 0 3px;
	border: 1px solid var(--hb-line);
	background: #fff;
}
.hsp-booking .qty-stepper--btn {
	width: 36px;
	height: 36px;
	flex: 0 0 36px;
	padding: 0;
	border: 0;
	background: var(--hb-beige);
	color: var(--hb-ink);
	font-size: 18px;
	line-height: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
	transition: background-color 0.15s, color 0.15s;
}
/* every state set explicitly: the hello-elementor theme paints buttons pink (#c36) on hover / focus */
.hsp-booking .qty-stepper--btn:focus,
.hsp-booking .qty-stepper--btn:active { background: var(--hb-beige) !important; color: var(--hb-ink) !important; outline: none; box-shadow: none; }
.hsp-booking .qty-stepper--btn:hover:not(:disabled) { background: var(--hb-accent) !important; color: #fff !important; }
.hsp-booking .qty-stepper--btn:active:not(:disabled) { background: var(--hb-accent-dark) !important; color: #fff !important; }
.hsp-booking .qty-stepper--btn:disabled,
.hsp-booking .qty-stepper--btn:disabled:hover,
.hsp-booking .qty-stepper--btn:disabled:focus { background: var(--hb-beige) !important; color: var(--hb-off-2) !important; cursor: default; }
.hsp-booking .qty-stepper--btn:focus-visible { outline: 2px solid var(--hb-accent); outline-offset: 2px; }
/* same protection for the month arrows */
.hsp-booking .fbw-calendar--button:focus,
.hsp-booking .fbw-calendar--button:active { background: #fff !important; color: var(--hb-ink); outline: none; }
.hsp-booking .fbw-calendar--button:focus-visible { outline: 2px solid var(--hb-accent); outline-offset: 2px; }
.hsp-booking .qty-stepper--value { flex: 1; text-align: center; font-size: 15px; font-weight: 500; color: var(--hb-ink); }
.hsp-booking .fbw-calendar--children-age .qty-stepper--value { font-size: 15px; }
.hsp-booking .qty-stepper.is-empty .qty-stepper--value { color: var(--hb-muted); font-style: italic; }

/* Missing child age */
.hsp-booking .fbw-calendar--children-age.hsp-age-missing .qty-stepper { border-color: var(--hb-accent); box-shadow: 0 0 0 1px var(--hb-accent); }
.hsp-booking .fbw-calendar--children-age.hsp-age-missing > label { color: var(--hb-accent) !important; }
.hsp-booking .hsp-age-alert {
	display: none;
	order: 9;
	grid-column: 1 / -1;
	padding: 12px 14px;
	border-left: 3px solid var(--hb-accent);
	background: var(--hb-tint);
	color: var(--hb-ink);
	font-size: 14px;
	line-height: 1.4;
}
.hsp-booking .hsp-age-alert.is-visible { display: block; }

/* Promo code: a link until opened */
.hsp-booking .config-item.config--promo { flex-direction: row !important; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.hsp-booking .config-item.config--promo > .fbw-calendar--label {
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	cursor: pointer;
	color: var(--hb-accent) !important;
	font-size: 15px !important;
	font-weight: 400 !important;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.hsp-booking .config-item.config--promo > input { display: none !important; }
.hsp-booking .config-item.config--promo.promo-open > .fbw-calendar--label { color: var(--hb-ink) !important; text-decoration: none; cursor: default; }
.hsp-booking .config-item.config--promo.promo-open > input {
	display: block !important;
	width: 260px !important;
	max-width: 100% !important;
	height: 44px !important;
	padding: 0 12px !important;
	border: 1px solid var(--hb-line) !important;
	background: #fff !important;
	font-size: 15px !important;
	color: var(--hb-ink) !important;
	outline: none !important;
	box-shadow: none !important;
}
.hsp-booking .config-item.config--promo.promo-open > input:focus { border-color: var(--hb-accent) !important; }

/* ---------- Arrival / departure boxes ---------- */
.hsp-booking .fbw-calendar--dates.desktop {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	width: 100% !important;
	margin: 0 !important;
	padding: 20px 0 0 !important;
	border-top: 1px solid var(--hb-line-soft);
}
.hsp-booking .fbw-calendar--dates.mobile { display: none !important; }
.hsp-booking .fbw-calendar--dates .date--arrival,
.hsp-booking .fbw-calendar--dates .date--departure {
	position: relative;
	display: flex !important;
	flex-direction: column !important;
	justify-content: center !important;
	align-items: flex-start !important;
	gap: 1px;
	min-width: 0 !important;
	min-height: 56px;
	width: 100% !important;
	margin: 0 !important;
	padding: 8px 16px 8px 46px !important;
	border: 1px solid var(--hb-line) !important;
	background: #fff;
	overflow: hidden;
}
.hsp-booking .fbw-calendar--dates .date--arrival::before,
.hsp-booking .fbw-calendar--dates .date--departure::before {
	content: '';
	position: absolute;
	left: 16px;
	top: 50%;
	width: 18px;
	height: 18px;
	margin-top: -9px;
	background-color: var(--hb-ink);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E") center / contain no-repeat;
}
.hsp-booking .fbw-calendar--dates .fbw-calendar--label { margin: 0 !important; font-size: 12px !important; font-weight: 500 !important; letter-spacing: 0.08em; color: var(--hb-ink) !important; }
.hsp-booking .fbw-calendar--dates .date--arrival,
.hsp-booking .fbw-calendar--dates .date--departure { height: auto !important; }
.hsp-booking .fbw-calendar--dates .value { min-height: 1.45em; margin: 0 !important; padding: 0 !important; text-indent: 0 !important; font-size: 15px !important; font-weight: 500 !important; color: var(--hb-ink) !important; }
/* the box being filled */
.hsp-booking .fbw-calendar--dates .to-fill { border-color: var(--hb-accent) !important; box-shadow: 0 0 0 1px var(--hb-accent); }
.hsp-booking .fbw-calendar--dates .to-fill .fbw-calendar--label { color: var(--hb-accent) !important; }
.hsp-booking .fbw-calendar--dates .to-fill::before { background-color: var(--hb-accent); }

/* ---------- Calendar ---------- */
.hsp-booking .fwb-cal-bottom--group { display: flex; flex-direction: column; gap: 20px; }
.hsp-booking .fbw-calendar {
	position: relative;
	display: flex !important;
	gap: 20px 40px;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
	border: 0 !important;
}
/* D-EDGE clearfix pseudo-elements would become flex items and take a 40px gap */
.hsp-booking .fbw-calendar::before,
.hsp-booking .fbw-calendar::after { display: none !important; content: none !important; }
.hsp-booking .fbw-calendar--month-bloc { flex: 1 1 0 !important; width: auto !important; max-width: none !important; min-width: 0; padding: 0 !important; margin: 0 !important; }

/* prev / next: square buttons on the month-name line, chevron drawn here (D-EDGE's own svg is off-centre) */
.hsp-booking .fbw-calendar--button {
	position: absolute !important;
	top: 0;
	z-index: 2;
	width: 44px !important;
	height: 44px !important;
	padding: 0 !important;
	margin: 0 !important;
	border: 1px solid var(--hb-line) !important;
	background: #fff !important;
	color: var(--hb-ink);
	display: flex !important;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: none !important;
	transition: background-color 0.15s, border-color 0.15s, color 0.15s;
}
.hsp-booking .fbw-calendar--button:first-child { left: 0; }
.hsp-booking .fbw-calendar--button:last-child { right: 0; }
.hsp-booking .fbw-calendar--button svg { display: none !important; }
.hsp-booking .fbw-calendar--button::before {
	content: '';
	width: 20px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
}
.hsp-booking .fbw-calendar--button:first-child::before { transform: scaleX(-1); }
.hsp-booking .fbw-calendar--button:hover:not(:disabled) { background: var(--hb-accent) !important; border-color: var(--hb-accent) !important; color: #fff; }
.hsp-booking .fbw-calendar--button:disabled { border-color: var(--hb-line-soft) !important; color: var(--hb-off-2); cursor: default; }

.hsp-booking .fbw-calendar--month-name {
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 0 8px !important;
	font-size: 15px !important;
	font-weight: 500 !important;
	letter-spacing: 0.16em !important;
	text-transform: uppercase !important;
	color: var(--hb-accent) !important;
}
.hsp-booking .fbw-calendar--month {
	width: 100% !important;
	table-layout: fixed;
	border-collapse: separate !important;
	border-spacing: 0 4px !important;
	border: 0 !important;
}
.hsp-booking .fbw-calendar--weekdays {
	padding: 4px 0 !important;
	border: 0 !important;
	background: transparent !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	text-align: center;
	color: var(--hb-muted) !important;
}
.hsp-booking .fbw-calendar--day {
	height: 58px !important;
	padding: 10px 0 0 !important;
	vertical-align: top !important;
	text-align: center;
	line-height: 1.2;
	border: 0 !important;
	background: transparent !important;
	color: var(--hb-ink) !important;
	cursor: default;
}
.hsp-booking .fbw-calendar--day.valid_day { cursor: pointer; }
.hsp-booking .fbw-calendar--day p { margin: 0 !important; padding: 0 !important; }
.hsp-booking .day--number { font-size: 15px !important; font-weight: 500 !important; color: inherit !important; }
.hsp-booking .day--price,
.hsp-booking .day--unavailable-price { font-size: 12px !important; color: var(--hb-muted) !important; }
.hsp-booking .day--in,
.hsp-booking .day--out,
.hsp-booking .day--min-stay,
.hsp-booking .min_stay .day--min-stay:before,
.hsp-booking .last-room:before,
.hsp-booking .best-price:after { display: none !important; }
/* closed or past days */
.hsp-booking .fbw-calendar--day.unavailable_day { color: var(--hb-off) !important; }
.hsp-booking .fbw-calendar--day.unavailable_day .day--price,
.hsp-booking .fbw-calendar--day.unavailable_day .day--unavailable-price { color: var(--hb-off) !important; }
.hsp-booking .fbw-calendar--day.unavailable_day.valid_day .day--number { text-decoration: line-through; }
.hsp-booking .fbw-calendar--day.valid_day:not(.chosen_day):not(.unavailable_day):hover { box-shadow: inset 0 0 0 1.5px var(--hb-accent); }

/* selected stay: nights in between keep their price (D-EDGE fades it out) */
.hsp-booking .fbw-calendar--day.fbw-calendar--in-between { background: var(--hb-tint) !important; color: var(--hb-ink) !important; }
.hsp-booking .fbw-calendar--day.fbw-calendar--in-between .day--price { display: block !important; opacity: 1 !important; visibility: visible !important; }
/* arrival / departure days: orange, the price replaced by the "Arrivée" / "Départ" label (D-EDGE's default, kept for clarity) */
.hsp-booking .fbw-calendar--day.day_in,
.hsp-booking .fbw-calendar--day.day_out,
.hsp-booking .fbw-calendar--day.chosen_day:not(.fbw-calendar--in-between) { background: var(--hb-accent) !important; color: #fff !important; }
.hsp-booking .fbw-calendar--day.day_in .day--price,
.hsp-booking .fbw-calendar--day.day_out .day--price { display: none !important; }
.hsp-booking .fbw-calendar--day.day_in .day--in,
.hsp-booking .fbw-calendar--day.day_out .day--out {
	display: block !important;
	height: auto !important;
	opacity: 1 !important;
	visibility: visible !important;
	margin-top: 2px !important;
	font-size: 11px !important;
	font-weight: 500 !important;
	letter-spacing: 0.02em;
	color: #fff !important;
}
.hsp-booking .fbw-calendar--day.chosen_day > div { height: auto !important; max-height: none !important; overflow: visible !important; }

/* ---------- Bottom: total + Réserver ---------- */
.hsp-booking .fbw-calendar--bottom {
	display: flex !important;
	flex-direction: row !important;
	justify-content: flex-end !important;
	align-items: center !important;
	gap: 16px !important;
	height: auto !important;
	min-height: 0 !important;
	padding: 4px 0 0 !important;
	margin: 0 !important;
	border: 0 !important;
}
.hsp-booking .fbw-calendar--legend { display: none !important; }
.hsp-booking .fbw-calendar--action {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	justify-content: flex-end !important;
	gap: 24px;
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
}
/* total for the stay (appears once both dates are picked) */
.hsp-booking .fbw-calendar--action .best-price {
	display: grid !important;
	grid-template-columns: auto;
	justify-items: end;
	align-content: center;
	row-gap: 2px;
	align-self: center !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 24px 0 0 !important;
	border: 0 !important;
	border-right: 1px solid var(--hb-line-soft) !important;
	background: transparent !important;
	text-align: right;
}
.hsp-booking .fbw-calendar--action .best--label { font-size: 13px !important; font-weight: 400 !important; color: var(--hb-muted) !important; text-transform: none !important; letter-spacing: 0 !important; }
.hsp-booking .fbw-calendar--action .best--price { font-size: 22px !important; font-weight: 500 !important; line-height: 1.2; color: var(--hb-ink) !important; }
.hsp-booking .fbw-calendar--action .best--taxes-details { display: flex !important; flex-direction: column; align-items: flex-end; gap: 0; font-size: 11px !important; line-height: 1.4; color: var(--hb-muted) !important; }
.hsp-booking .fbw-calendar--action .taxes--line,
.hsp-booking .fbw-calendar--action .taxes--amount { font-size: 11px !important; color: var(--hb-muted) !important; }
/* Réserver: fixed height, never stretched by the total next to it */
.hsp-booking .fbw-calendar--action .next {
	flex: 0 0 auto !important;
	align-self: center !important;
	min-width: 260px;
	height: 54px !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: var(--hb-accent) !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color 0.15s;
}
.hsp-booking .fbw-calendar--action .next:hover { background: var(--hb-accent-dark) !important; }
.hsp-booking .fbw-calendar--action .next .next--button {
	width: 100%;
	padding: 0 32px;
	line-height: 54px;
	text-align: center;
	text-decoration: none !important;
	font-size: 15px !important;
	font-weight: 500 !important;
	letter-spacing: 0.14em !important;
	color: #fff !important;
}

/* ---------- Mobile ---------- */
@media (max-width: 767px) {
	.hsp-booking { margin-top: 20px; font-size: 15px; padding-bottom: 110px; }
	.hsp-booking .fbw-calendar--main { padding: 20px 16px !important; gap: 18px; }
	.hsp-booking .fbw-calendar--config,
	.hsp-booking .fbw-calendar--config:not(:has(.fbw-calendar--children-age)) { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 12px !important; }
	.hsp-booking .fbw-calendar--children-age { grid-column: 1 / -1; }
	.hsp-booking .qty-stepper { height: 44px; }
	.hsp-booking .qty-stepper--btn { width: 36px; height: 36px; flex-basis: 36px; }
	.hsp-booking .fbw-calendar--dates.desktop { gap: 10px; }
	.hsp-booking .fbw-calendar--dates .date--arrival,
	.hsp-booking .fbw-calendar--dates .date--departure { padding: 8px 14px !important; min-height: 54px; }
	.hsp-booking .fbw-calendar--dates .date--arrival::before,
	.hsp-booking .fbw-calendar--dates .date--departure::before { display: none; }
	.hsp-booking .fbw-calendar--dates .value { font-size: 14px !important; }
	.hsp-booking .fbw-calendar--day { height: 56px !important; padding-top: 8px !important; }
	.hsp-booking .day--number { font-size: 14px !important; }
	.hsp-booking .day--price { font-size: 11px !important; }
	.hsp-booking .fbw-calendar--day.day_in .day--in,
	.hsp-booking .fbw-calendar--day.day_out .day--out { font-size: 9px !important; letter-spacing: 0; }

	/* Réserver fixed at the bottom of the screen, the total in one line above it */
	.hsp-booking .fbw-calendar--bottom { padding: 0 !important; }
	.hsp-booking .fbw-calendar--action {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 50;
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 8px;
		width: 100% !important;
		padding: 10px 16px calc(12px + env(safe-area-inset-bottom)) !important;
		background: #fff !important;
		border-top: 1px solid var(--hb-line);
		box-shadow: 0 -4px 16px rgba(38, 25, 13, 0.06);
	}
	.hsp-booking .fbw-calendar--action .best-price {
		grid-template-columns: 1fr auto;
		justify-items: start;
		align-items: baseline;
		column-gap: 12px;
		width: 100%;
		padding: 0 !important;
		border-right: 0 !important;
	}
	.hsp-booking .fbw-calendar--action .best--price { justify-self: end; font-size: 20px !important; }
	.hsp-booking .fbw-calendar--action .best--taxes-details { display: none !important; }
	.hsp-booking .fbw-calendar--action .next { width: 100%; min-width: 0; align-self: stretch !important; }
}

/* On this page the widget's own Réserver bar replaces the site's mobile sticky bar (footer template 186). */
@media (max-width: 1024px) {
	body:has(.hsp-booking) .elementor-element-74c936e { display: none !important; }
}

/* Room pre-selected from a room page (?chambre=<D-EDGE id>): the room name as a subtitle right under the
   page title (Elementor heading, 33px Century Gothic orange uppercase), as on Catalpa: same font, normal
   weight, accent colour, about half the size, normal case. The negative top margin cancels the block's
   28px top margin + the 16px Elementor gap, leaving 10px under the title. */
.hsp-booking .hsp-booking-room {
	margin: -34px 0 28px;
	padding: 0;
	font-family: var(--hb-font);
	font-size: clamp(16px, 2vw, 19px);
	font-weight: 400;
	line-height: 1.3;
	letter-spacing: 0.04em;
	text-transform: none;
	text-align: center;
	color: var(--hb-accent);
}

/* Elementor's gap above the block is 8px smaller on mobile: keep the subtitle 10px under the title. */
@media (max-width: 767px) {
	.hsp-booking .hsp-booking-room { margin-top: -26px; }
}

/* Title and form appear together (2026-11-03): D-EDGE draws the form ~0.5 s after the page (it waits for its
   config call), which looked like a block "loading" under the title. The page title (Elementor heading
   1cf1aca) and the booking block stay invisible until hsp-booking.js sees the form and sets html.hsp-ready.
   Fallback without JS or if D-EDGE is down: the animation shows them anyway after 3 s. */
@keyframes hsp-booking-reveal { to { opacity: 1; } }

html:not(.hsp-ready) body:has(.hsp-booking) .elementor-element-1cf1aca,
html:not(.hsp-ready) .hsp-booking {
	opacity: 0;
	animation: hsp-booking-reveal 0s linear 3s forwards;
}

html.hsp-ready body:has(.hsp-booking) .elementor-element-1cf1aca,
html.hsp-ready .hsp-booking {
	opacity: 1;
	transition: opacity 0.15s ease-out;
}
