/**
 * Fiche d'annonce Haunted Lodges.
 * Évolution ciblée du rendu Listeo, sans remplacement des composants métier.
 */

body.hl-single-listing {
	/*
	 * Tous repris des variables globales Elementor. L'ancien rouge sombre
	 * #751313 disparaît : la charte n'admet qu'un rouge, l'état survolé
	 * bascule donc vers le noir profond.
	 */
	--hl-accent: var( --hl-red );
	--hl-accent-dark: var( --hl-black );
	--hl-ink: var( --hl-encre );
	--hl-muted: var( --hl-encre-douce );
	--hl-line: var( --hl-beige );
	--hl-soft: var( --hl-ivory-light );
	--hl-radius: 16px;
	background: var( --hl-ivory-light );
	color: var(--hl-ink);
}

/* En-tête de la fiche */
body.hl-single-listing #titlebar.listing-titlebar {
	min-height: 0;
	margin: 0;
	padding: 34px 0 26px;
	border: 0;
	background: transparent;
	box-shadow: none;
}

body.hl-single-listing #listing-gallery.listeo-grid-gallery-title {
	background: transparent;
}

body.hl-single-listing #titlebar .listing-titlebar-title {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 7px 18px;
	width: 100%;
	max-width: none;
}

body.hl-single-listing #titlebar .hl-title-main-row {
	order: 1;
	display: flex;
	flex: 0 0 100%;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	min-width: 0;
}

body.hl-single-listing #titlebar h1 {
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	color: var(--hl-ink);
	font-size: clamp(30px, 3vw, 42px);
	font-weight: 600;
	letter-spacing: -0.035em;
	line-height: 1.12;
}

body.hl-single-listing #titlebar .listing-titlebar-title > span:not(.listing-pricing-tag) {
	order: 2;
	margin: 0;
}

body.hl-single-listing #titlebar .listing-address {
	color: var(--hl-muted);
	font-size: var( --hl-fs-body );
	font-weight: 500;
}

body.hl-single-listing #titlebar .listing-address i {
	color: var(--hl-accent);
}

body.hl-single-listing #titlebar .star-rating {
	order: 2;
	display: inline-flex;
	align-items: center;
	margin: 0;
	padding: 0;
}

body.hl-single-listing #titlebar .rating-counter a {
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	text-decoration: underline;
	text-underline-offset: 3px;
}

body.hl-single-listing #titlebar .listing-titlebar-tags {
	order: 3;
	flex: 0 0 100%;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 7px 0 0;
}

body.hl-single-listing #titlebar .listing-tag {
	margin: 0;
	padding: 0;
	background: transparent;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	font-weight: 500;
}

body.hl-single-listing #titlebar .listing-tag + .listing-tag::before {
	content: "";
	display: inline-block;
	width: 4px;
	height: 4px;
	margin: 0 10px 2px 0;
	border-radius: 50%;
	background: #bcb2a1;
}

body.hl-single-listing #titlebar .listing-tag a {
	color: inherit;
}

body.hl-single-listing #titlebar .listing-pricing-tag,
body.hl-single-listing #titlebar br,
body.hl-single-listing #titlebar .listing-rating-link:empty {
	display: none;
}

body.hl-single-listing #titlebar > .widget_buttons {
	display: none;
}

body.hl-single-listing #titlebar .hl-title-actions {
	display: flex;
	flex: 0 0 auto;
	align-items: center;
	gap: 10px;
}

body.hl-single-listing #titlebar .like-button,
body.hl-single-listing #titlebar .like-button-notlogged,
body.hl-single-listing #titlebar .hl-share-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: auto;
	min-height: 44px;
	margin: 0;
	padding: 10px 17px;
	border: 1px solid var(--hl-line);
	border-radius: 999px;
	background: var( --hl-ivory-light );
	box-shadow: none;
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
}

body.hl-single-listing #titlebar .like-button:hover,
body.hl-single-listing #titlebar .like-button-notlogged:hover,
body.hl-single-listing #titlebar .hl-share-button:hover {
	border-color: #bcb2a1;
	background: var(--hl-soft);
}

body.hl-single-listing #titlebar .hl-share-button i {
	color: var(--hl-accent);
	font-size: var( --hl-fs-small );
}

body.hl-single-listing .hl-share-copy-helper {
	position: fixed;
	top: -9999px;
	left: -9999px;
}

/* Galerie native Listeo */
body.hl-single-listing .listeo-single-listing-gallery-grid {
	margin-bottom: 0;
}

body.hl-single-listing #single-listing-grid-gallery {
	position: relative;
	gap: 8px;
	overflow: hidden;
	border-radius: var(--hl-radius);
	background: var(--hl-soft);
}

body.hl-single-listing #single-listing-grid-gallery .slg-gallery-img {
	overflow: hidden;
}

body.hl-single-listing #single-listing-grid-gallery img {
	transition: opacity 0.2s ease;
}

body.hl-single-listing #single-listing-grid-gallery a:hover img {
	opacity: 0.92;
}

body.hl-single-listing #single-listing-grid-gallery .hl-gallery-button {
	position: absolute !important;
	right: 18px !important;
	bottom: 18px !important;
	left: auto !important;
	top: auto !important;
	z-index: 8;
	display: inline-flex !important;
	align-items: center;
	gap: 8px;
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	padding: 11px 16px !important;
	border: 1px solid rgba( 21, 14, 16, 0.28 ) !important;
	border-radius: 999px !important;
	background: var( --hl-ivory-light ) !important;
	box-shadow: 0 4px 18px rgba( 0, 0, 0, 0.14 ) !important;
	color: var(--hl-ink) !important;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 650 !important;
	line-height: 1.2 !important;
	text-transform: none !important;
}

body.hl-single-listing #single-listing-grid-gallery .hl-gallery-button:hover {
	background: var(--hl-soft) !important;
}

body.hl-single-listing #single-listing-grid-gallery .hl-gallery-button i {
	margin: 0;
	font-size: var( --hl-fs-body );
}

/* Corps de page */
body.hl-single-listing .listeo-single-listing-content {
	padding-right: 48px;
}

body.hl-single-listing .listing-nav-container:not(.cloned) {
	margin: 30px 0 0;
	border-bottom: 1px solid var(--hl-line);
}

body.hl-single-listing .listing-nav-container .listing-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 0 26px;
	height: auto;
	max-height: none;
	overflow: visible !important;
	padding: 0;
	white-space: normal;
}

body.hl-single-listing .listing-nav li {
	margin: 0;
}

body.hl-single-listing .listing-nav li a {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 18px 0 15px;
	border-bottom-width: 2px;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	font-weight: 600;
}

body.hl-single-listing .listing-nav li a.active,
body.hl-single-listing .listing-nav li a:hover {
	color: var(--hl-ink);
}

body.hl-single-listing .listing-nav .hl-nav-icon {
	color: var(--hl-accent);
	font-size: var( --hl-fs-small );
}

body.hl-single-listing .listing-nav-container .ps__rail-x,
body.hl-single-listing .listing-nav-container .ps__rail-y {
	display: none !important;
}

body.hl-single-listing #listing-overview,
body.hl-single-listing #listing-location,
body.hl-single-listing #listing-reviews {
	padding-top: 36px;
	scroll-margin-top: 110px;
}

body.hl-single-listing .hl-section-title,
body.hl-single-listing .listing-desc-headline,
body.hl-single-listing .listing-details-header,
body.hl-single-listing #listing-location > h2,
body.hl-single-listing #listing-reviews > h2 {
	margin: 0 0 22px !important;
	color: var(--hl-ink);
	font-size: var( --hl-fs-h4 );
	font-weight: 600;
	letter-spacing: -0.02em;
	line-height: 1.25;
}

body.hl-single-listing .hl-listing-intro {
	margin: 0 0 36px;
	padding: 0 0 36px;
	border-bottom: 1px solid var(--hl-line);
}

body.hl-single-listing .hl-listing-intro p {
	max-width: 68ch;
	margin: 0;
	color: #373132;
	font-size: var( --hl-fs-body );
	line-height: 1.75;
}

body.hl-single-listing .hl-details-title {
	margin-top: 0 !important;
}

body.hl-single-listing #listing-overview ul.listing-details {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 28px;
	margin: 0 0 38px;
	padding: 0;
	background: transparent;
}

body.hl-single-listing #listing-overview ul.listing-details li {
	position: relative;
	display: grid;
	grid-template-columns: 30px minmax(0, 1fr);
	grid-template-rows: auto auto;
	column-gap: 12px;
	min-height: 76px;
	margin: 0;
	padding: 15px 0;
	border-bottom: 1px solid var(--hl-line);
	background: transparent;
}

body.hl-single-listing #listing-overview ul.listing-details li > i:first-child {
	grid-column: 1;
	grid-row: 1 / 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	margin: 1px 0 0;
	border-radius: 50%;
	background: #f5eaea;
	color: var(--hl-accent);
	font-size: var( --hl-fs-label );
}

body.hl-single-listing #listing-overview ul.listing-details li > div {
	grid-column: 2;
	grid-row: 1;
	margin: 0 0 3px;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	font-weight: 500;
	line-height: 1.35;
}

body.hl-single-listing #listing-overview ul.listing-details li > span {
	grid-column: 2;
	grid-row: 2;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 600;
	line-height: 1.4;
}

body.hl-single-listing .listing-details-header {
	text-transform: none;
}

body.hl-single-listing #listing-overview .listing-features {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px 26px;
	margin: 0;
	padding: 0 0 38px;
	border-bottom: 1px solid var(--hl-line);
}

body.hl-single-listing #listing-overview .listing-features li {
	width: auto;
	margin: 0;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	line-height: 1.45;
}

body.hl-single-listing #listing-overview .listing-features li::before {
	color: var(--hl-accent);
}

body.hl-single-listing #listing-overview .listing-features a {
	color: inherit;
}

body.hl-single-listing #singleListingMap {
	overflow: hidden;
	border: 1px solid var(--hl-line);
	border-radius: var(--hl-radius);
}

/* Réservation native Listeo et Booking Plus */
body.hl-single-listing .listeo-single-listing-sidebar {
	padding-left: 18px;
}

body.hl-single-listing .listeo-single-listing-sidebar .widget_booking,
body.hl-single-listing .listeo-single-listing-sidebar .lbp-bpw,
body.hl-single-listing .listeo-single-listing-sidebar .booking-widget {
	margin: 30px 0 24px !important;
	padding: 24px !important;
	border: 1px solid var(--hl-line);
	border-radius: var(--hl-radius);
	background: var( --hl-ivory-light );
	box-shadow: 0 12px 34px rgba( 30, 21, 24, 0.10 );
}

body.hl-single-listing .listeo-single-listing-sidebar .widget_booking > h3,
body.hl-single-listing .listeo-single-listing-sidebar .booking-widget > h3,
body.hl-single-listing .listeo-single-listing-sidebar [id^="widget_booking"] > h3,
body.hl-single-listing .listeo-single-listing-sidebar .booking-widget-title-wrap {
	display: none;
}

body.hl-single-listing #booking-widget-anchor.hl-booking-card {
	margin: 0 !important;
	padding: 0 !important;
	border: 0;
	background: transparent;
	box-shadow: none;
}

body.hl-single-listing .hl-booking-card__header {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 18px;
	margin: 0 0 22px;
}

body.hl-single-listing .hl-booking-card__price {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

body.hl-single-listing .hl-booking-card__eyebrow {
	color: var(--hl-muted);
	font-size: var( --hl-fs-meta );
	font-weight: 500;
}

body.hl-single-listing .hl-booking-card__price strong {
	color: var(--hl-ink);
	font-size: var( --hl-fs-h4 );
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.2;
}

body.hl-single-listing .hl-booking-card__rating {
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

body.hl-single-listing #booking-widget-anchor .form-booking {
	margin: 0 0 18px;
}

body.hl-single-listing .hl-booking-dates {
	position: relative;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	min-height: 72px;
	overflow: visible;
	border: 1px solid #bcb2a1;
	border-radius: 13px 13px 0 0;
	background: var( --hl-ivory-light );
}

body.hl-single-listing .hl-booking-date {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-width: 0;
	min-height: 72px;
	margin: 0;
	padding: 13px 15px;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	color: inherit;
	text-align: left;
	text-transform: none;
}

body.hl-single-listing .hl-booking-date + .hl-booking-date {
	border-left: 1px solid #bcb2a1;
}

body.hl-single-listing .hl-booking-date__label {
	margin-bottom: 4px;
	color: var(--hl-ink);
	font-size: var( --hl-fs-label );
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: 1;
	text-transform: uppercase;
}

body.hl-single-listing .hl-booking-date__value {
	overflow: hidden;
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 500;
	line-height: 1.3;
	text-overflow: ellipsis;
	white-space: nowrap;
}

body.hl-single-listing .hl-booking-dates .hl-native-date-picker {
	position: absolute !important;
	top: 0 !important;
	left: 0 !important;
	z-index: -1;
	display: block !important;
	width: 1px !important;
	height: 1px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	opacity: 0;
	pointer-events: none;
}

body.hl-single-listing .hl-booking-date {
	cursor: pointer;
}

/* Calendrier identique à celui de la recherche, relié au champ Listeo. */
body.hl-single-listing .hl-booking-calendar {
	position: fixed;
	top: 50%;
	right: auto;
	left: 50%;
	z-index: 10000;
	display: none;
	width: min(720px, calc(100vw - 32px));
	max-width: calc(100vw - 32px);
	max-height: calc(100dvh - 32px);
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 24px 28px 20px;
	border: 1px solid var(--hl-line);
	border-radius: 28px;
	background: var( --hl-ivory-light );
	box-shadow: 0 12px 34px rgba( 0, 0, 0, 0.18 );
	transform: translate(-50%, -50%);
}

body.hl-single-listing .hl-booking-calendar.is-open {
	display: block;
}

body.hl-single-listing.hl-calendar-modal-open {
	overflow: hidden;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-body {
	position: relative;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-months {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 40px;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-nav {
	position: absolute;
	top: -4px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 1px solid #bcb2a1;
	border-radius: 50%;
	background: var( --hl-ivory-light );
	box-shadow: none;
	color: var(--hl-ink);
	font-size: var( --hl-fs-h4 );
	line-height: 1;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-nav.is-prev {
	left: 0;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-nav.is-next {
	right: 0;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-title {
	margin: 0 0 14px;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 600;
	line-height: 24px;
	text-align: center;
	text-transform: capitalize;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-grid {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	row-gap: 2px;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-wd {
	padding: 0 0 8px;
	color: var(--hl-muted);
	font-size: var( --hl-fs-meta );
	font-weight: 600;
	text-align: center;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-day {
	position: relative;
	height: 44px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	line-height: 44px;
	cursor: pointer;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-day::after {
	content: "";
	position: absolute;
	inset: 0;
	margin: auto;
	width: 42px;
	height: 42px;
	max-width: 100%;
	border: 1.5px solid transparent;
	border-radius: 50%;
	pointer-events: none;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-day:hover:not(:disabled)::after,
body.hl-single-listing .hl-booking-calendar .hl-cal-day.is-until::after {
	border-color: var(--hl-ink);
}

body.hl-single-listing .hl-booking-calendar .hl-cal-day:disabled {
	color: #bcb2a1;
	text-decoration: line-through;
	cursor: default;
}

/* Jours entre l'arrivée et le départ : le même crème plus foncé que dans
   le calendrier de la recherche. --hl-soft vaut ici le fond de page, la
   bande était donc invisible. */
body.hl-single-listing .hl-booking-calendar .hl-cal-day.in-range {
	background: #eeebe5;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-day.is-start,
body.hl-single-listing .hl-booking-calendar .hl-cal-day.is-end {
	z-index: 1;
	color: var( --hl-ivory );
}

body.hl-single-listing .hl-booking-calendar .hl-cal-day.is-start::before,
body.hl-single-listing .hl-booking-calendar .hl-cal-day.is-end::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	margin: auto;
	width: 42px;
	height: 42px;
	max-width: 100%;
	border-radius: 50%;
	background: var(--hl-ink);
}

body.hl-single-listing .hl-booking-calendar .hl-cal-day.is-today:not(.is-start):not(.is-end) {
	text-decoration: underline;
	text-underline-offset: 4px;
}

body.hl-single-listing .hl-booking-calendar .hl-cal-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	margin: 16px 0 0;
	padding: 16px 0 0;
	border-top: 1px solid #eeebe5;
}

body.hl-single-listing .hl-booking-calendar__hint {
	color: var(--hl-muted);
	font-size: var( --hl-fs-meta );
}

body.hl-single-listing .hl-booking-calendar .hl-cal-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-left: auto;
}

body.hl-single-listing .hl-booking-calendar .hl-clear,
body.hl-single-listing .hl-booking-calendar .hl-apply {
	min-height: 40px;
	margin: 0;
	padding: 9px 18px;
	border-radius: 999px;
	font-size: var( --hl-fs-small );
	font-weight: 600;
}

body.hl-single-listing .hl-booking-calendar .hl-clear {
	border: 0;
	background: transparent;
	color: var(--hl-ink);
	text-decoration: underline;
}

body.hl-single-listing .hl-booking-calendar .hl-apply {
	border: 0;
	background: var(--hl-ink);
	color: var( --hl-ivory );
}

body.hl-single-listing .hl-booking-calendar .hl-apply:disabled {
	opacity: 0.38;
	cursor: not-allowed;
}

body.hl-single-listing #booking-widget-anchor .panel-dropdown,
body.hl-single-listing #booking-widget-anchor .booking-guests {
	margin: -1px 0 0 !important;
}

body.hl-single-listing #booking-widget-anchor .panel-dropdown > a,
body.hl-single-listing #booking-widget-anchor .booking-guests > a {
	position: relative;
	display: flex !important;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	min-height: 66px;
	margin: 0 !important;
	padding: 21px 42px 16px 15px !important;
	border: 1px solid #bcb2a1 !important;
	border-radius: 0 0 13px 13px !important;
	background: var( --hl-ivory-light ) !important;
	box-shadow: none !important;
	color: var(--hl-ink) !important;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
	text-align: left !important;
}

body.hl-single-listing #booking-widget-anchor .panel-dropdown > a::after,
body.hl-single-listing #booking-widget-anchor .booking-guests > a::after {
	top: 50% !important;
	right: 17px !important;
	margin: 0 !important;
	transform: translateY(-50%);
}

body.hl-single-listing .hl-booking-guests__label {
	display: block;
	margin-bottom: 3px;
	color: var(--hl-ink);
	font-size: var( --hl-fs-label );
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: 1;
	text-transform: uppercase;
}

body.hl-single-listing .hl-booking-guests__value {
	display: block !important;
	max-width: 100%;
	margin: 2px 0 0 !important;
	color: var(--hl-ink) !important;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 500 !important;
	line-height: 1.2 !important;
	text-align: left !important;
}

body.hl-single-listing #booking-widget-anchor .hl-native-guests-total {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
	clip: rect(0 0 0 0) !important;
}

body.hl-single-listing #booking-widget-anchor .hl-guests-ready {
	position: relative;
}

body.hl-single-listing #booking-widget-anchor .hl-guests-ready .panel-dropdown-content {
	position: fixed !important;
	top: 50% !important;
	right: auto !important;
	bottom: auto !important;
	left: 50% !important;
	z-index: 10000;
	display: none !important;
	width: 380px !important;
	max-width: calc(100vw - 32px);
	max-height: calc(100dvh - 32px);
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 8px 24px 12px;
	border: 1px solid var(--hl-line);
	border-radius: 20px;
	background: var( --hl-ivory-light );
	box-shadow: 0 12px 34px rgba( 0, 0, 0, 0.16 );
}

body.hl-single-listing #booking-widget-anchor .hl-guests-ready.hl-guests-open .panel-dropdown-content {
	display: block !important;
	opacity: 1 !important;
	visibility: visible !important;
	pointer-events: auto !important;
	transform: translate(-50%, -50%) !important;
}

body.hl-single-listing #booking-widget-anchor .hl-counter {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 14px 0;
}

body.hl-single-listing #booking-widget-anchor .hl-counter + .hl-counter {
	border-top: 1px solid #eeebe5;
}

body.hl-single-listing #booking-widget-anchor .hl-counter-text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

body.hl-single-listing #booking-widget-anchor .hl-counter-label {
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 600;
}

body.hl-single-listing #booking-widget-anchor .hl-counter-hint {
	color: var(--hl-muted);
	font-size: var( --hl-fs-meta );
}

body.hl-single-listing #booking-widget-anchor .hl-counter-controls {
	display: flex;
	flex: 0 0 auto;
	align-items: center;
	gap: 10px;
}

body.hl-single-listing #booking-widget-anchor .hl-counter-value {
	min-width: 22px;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	text-align: center;
}

body.hl-single-listing #booking-widget-anchor .hl-round {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 1px solid #bcb2a1;
	border-radius: 50%;
	background: var( --hl-ivory-light );
	box-shadow: none;
	color: var(--hl-muted);
	font-size: var( --hl-fs-lead );
	font-weight: 400;
	line-height: 1;
}

body.hl-single-listing #booking-widget-anchor .hl-round:disabled {
	opacity: 0.3;
	cursor: not-allowed;
}

body.hl-single-listing #booking-widget-anchor .hl-guests-note {
	margin: 4px 0 2px;
	color: var(--hl-muted);
	font-size: var( --hl-fs-label );
	line-height: 1.45;
}

body.hl-single-listing #booking-widget-anchor .coupon-widget-wrapper,
body.hl-single-listing #booking-widget-anchor #coupon_code {
	display: none !important;
}

body.hl-single-listing #booking-widget-anchor .book-now-notloggedin,
body.hl-single-listing .listeo-single-listing-sidebar .lbp-bpw-btn,
body.hl-single-listing .listeo-single-listing-sidebar .lbp-book-now-btn {
	display: flex !important;
	align-items: center;
	justify-content: center;
	min-height: 50px;
	margin: 18px 0 0 !important;
	padding: 13px 20px !important;
	border: 0 !important;
	border-radius: 999px !important;
	background: var(--hl-accent) !important;
	box-shadow: none !important;
	color: var( --hl-ivory ) !important;
	font-size: var( --hl-fs-body ) !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	text-align: center;
	transition: background-color 0.18s ease, transform 0.18s ease;
}

body.hl-single-listing #booking-widget-anchor .book-now-notloggedin:hover,
body.hl-single-listing .listeo-single-listing-sidebar .lbp-bpw-btn:hover,
body.hl-single-listing .listeo-single-listing-sidebar .lbp-book-now-btn:hover {
	background: var(--hl-accent-dark) !important;
}

body.hl-single-listing #booking-widget-anchor .book-now-notloggedin:active,
body.hl-single-listing .listeo-single-listing-sidebar .lbp-bpw-btn:active,
body.hl-single-listing .listeo-single-listing-sidebar .lbp-book-now-btn:active {
	transform: translateY(1px);
}

body.hl-single-listing .hl-booking-card__note,
body.hl-single-listing .lbp-bpw__note {
	margin: 14px 5px 0;
	color: var(--hl-muted);
	font-size: var( --hl-fs-meta );
	line-height: 1.5;
	text-align: center;
}

body.hl-single-listing #booking-widget-anchor .hl-booking-card__note {
	order: 10;
}

body.hl-single-listing .lbp-bpw__header {
	border-color: var(--hl-line);
}

body.hl-single-listing .lbp-bpw__price {
	color: var(--hl-ink);
	font-family: inherit;
	font-size: var( --hl-fs-h4 );
	letter-spacing: -0.02em;
}

body.hl-single-listing .lbp-bpw-week__day {
	border-color: var(--hl-line);
	border-radius: 10px;
}

/* Carte hôte et actions secondaires */
body.hl-single-listing .hl-host-section {
	clear: both;
	float: none;
	width: 100%;
	margin-top: 18px;
	padding-top: 46px;
	border-top: 1px solid var(--hl-line);
}

body.hl-single-listing .hl-host-section__heading {
	display: flex;
	align-items: center;
	gap: 15px;
	margin: 0 0 22px;
}

body.hl-single-listing .hl-host-section__icon {
	display: inline-flex;
	flex: 0 0 46px;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: #f5eaea;
	color: var(--hl-accent);
	font-size: var( --hl-fs-lead );
}

body.hl-single-listing .hl-host-section__copy h2 {
	margin: 0 0 3px;
	color: var(--hl-ink);
	font-size: var( --hl-fs-h4 );
	font-weight: 650;
	letter-spacing: -0.025em;
	line-height: 1.2;
}

body.hl-single-listing .hl-host-section__copy p {
	margin: 0;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	line-height: 1.45;
}

body.hl-single-listing .hl-host-section .hl-host-card {
	display: grid;
	grid-template-columns: minmax(240px, 1.05fr) minmax(280px, 1.25fr) minmax(200px, auto);
	align-items: center;
	gap: 30px;
	margin: 0 0 48px;
	padding: 30px 32px;
	border: 1px solid var(--hl-line);
	border-radius: var(--hl-radius);
	background: #fbf9f8;
	box-shadow: none;
}

body.hl-single-listing .hl-host-card .hosted-by-title {
	min-height: 72px;
	padding-right: 0;
	padding-left: 88px;
	border: 0;
}

body.hl-single-listing .hl-host-card .hosted-by-avatar {
	top: 0;
	right: auto;
	left: 0;
	width: 72px;
	height: 72px;
	border: 3px solid var( --hl-ivory-light );
	box-shadow: 0 4px 14px rgba( 30, 21, 24, 0.10 );
}

body.hl-single-listing .hl-host-card .hosted-by-title h4 {
	margin: 0 0 6px;
	font-size: var( --hl-fs-body );
	line-height: 1.35;
}

body.hl-single-listing .hl-host-card .hosted-by-title h4 > span {
	display: block;
	color: var(--hl-muted);
	font-size: var( --hl-fs-meta );
	font-weight: 500;
}

body.hl-single-listing .hl-host-card .hosted-by-title h4 > a {
	color: var(--hl-ink);
	font-size: var( --hl-fs-lead );
	font-weight: 650;
}

body.hl-single-listing .hl-host-card .hosted-by-link {
	display: inline-flex;
	align-items: center;
	margin-top: 4px;
	padding: 0;
	background: transparent;
	color: var(--hl-accent);
	font-size: var( --hl-fs-small );
	font-weight: 600;
}

body.hl-single-listing .hl-host-card__help {
	margin: 0;
	padding: 3px 0 3px 30px;
	border-top: 0;
	border-left: 1px solid var(--hl-line);
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	line-height: 1.5;
}

body.hl-single-listing .hl-host-card a.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	margin: 0;
	padding: 12px 16px;
	border: 1px solid var(--hl-ink);
	border-radius: 999px;
	background: transparent;
	box-shadow: none;
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	text-align: center;
}

body.hl-single-listing .hl-host-card a.button i {
	margin-right: 9px;
	font-size: var( --hl-fs-body );
}

body.hl-single-listing .hl-host-card a.button:hover {
	background: var(--hl-ink);
	color: var( --hl-ivory );
}

body.hl-single-listing .listeo-single-listing-sidebar #widget_buttons_listings-2 {
	display: none !important;
}

body.hl-single-listing .listeo-single-listing-sidebar .listing-report-button-container {
	margin: 4px 0 0;
	text-align: center;
}

body.hl-single-listing .listeo-single-listing-sidebar .listing-report-button-container a,
body.hl-single-listing .listeo-single-listing-sidebar a[href="#report-listing-dialog"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 10px 16px;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

body.hl-single-listing :is(
	.hl-title-actions button,
	.hl-gallery-button,
	.listing-nav a,
	.hl-booking-date,
	.hl-cal-day,
	.hl-cal-nav,
	.hl-clear,
	.hl-apply,
	.hl-round,
	.hl-host-card a.button
):focus-visible {
	outline: 3px solid rgba( 150, 27, 27, 0.24 ) !important;
	outline-offset: 3px;
}

/* Mobile */
@media (max-width: 991px) {
	body.hl-single-listing #titlebar .listing-titlebar-title {
		max-width: 100%;
		padding-right: 0;
	}

	body.hl-single-listing .listeo-single-listing-content,
	body.hl-single-listing .listeo-single-listing-sidebar {
		width: 100%;
		padding-right: 15px;
		padding-left: 15px;
	}

	body.hl-single-listing .listeo-single-listing-sidebar {
		margin-top: 8px;
	}

	body.hl-single-listing .listeo-single-listing-sidebar .widget_booking,
	body.hl-single-listing .listeo-single-listing-sidebar .lbp-bpw,
	body.hl-single-listing .listeo-single-listing-sidebar .booking-widget {
		margin-top: 0 !important;
	}

	body.hl-single-listing .hl-host-section .hl-host-card {
		grid-template-columns: minmax(220px, 1fr) minmax(260px, 1fr);
	}

	body.hl-single-listing .hl-host-card a.button {
		grid-column: 1 / -1;
		width: auto;
	}
}

@media (max-width: 767px) {
	body.hl-single-listing #titlebar.listing-titlebar {
		padding: 28px 0 22px;
	}

	body.hl-single-listing #titlebar h1 {
		font-size: var( --hl-fs-h3 );
	}

	body.hl-single-listing #titlebar .hl-title-main-row {
		flex-wrap: wrap;
		gap: 16px;
	}

	body.hl-single-listing #titlebar .hl-title-actions {
		width: 100%;
	}

	body.hl-single-listing #titlebar .hl-title-actions > button {
		flex: 1 1 0;
	}

	body.hl-single-listing #titlebar .listing-titlebar-tags {
		gap: 5px 8px;
	}

	body.hl-single-listing #single-listing-grid-gallery {
		border-radius: 12px;
	}

	body.hl-single-listing #single-listing-grid-gallery .hl-gallery-button {
		right: 12px !important;
		bottom: 12px !important;
		padding: 9px 12px !important;
	}

	body.hl-single-listing .hl-booking-calendar {
		top: 50%;
		right: auto;
		left: 50%;
		width: calc(100vw - 28px);
		max-height: calc(100dvh - 28px);
		overflow-y: auto;
		padding: 22px 18px 18px;
		transform: translate(-50%, -50%);
	}

	body.hl-single-listing .hl-booking-calendar .hl-cal-months {
		grid-template-columns: 1fr;
	}

	body.hl-single-listing .hl-booking-calendar .hl-cal-month + .hl-cal-month {
		display: none;
	}

	body.hl-single-listing .hl-booking-calendar .hl-cal-foot {
		align-items: flex-start;
		flex-direction: column;
	}

	body.hl-single-listing .hl-booking-calendar .hl-cal-actions {
		width: 100%;
		margin-left: 0;
	}

	body.hl-single-listing .hl-booking-calendar .hl-apply {
		flex: 1;
	}

	body.hl-single-listing #booking-widget-anchor .hl-guests-ready .panel-dropdown-content {
		right: auto !important;
		left: 50% !important;
		width: min(380px, calc(100vw - 32px)) !important;
		max-height: calc(100dvh - 32px);
	}

	body.hl-single-listing #booking-widget-anchor .hl-guests-ready.hl-guests-open .panel-dropdown-content {
		transform: translate(-50%, -50%) !important;
	}

	body.hl-single-listing .hl-host-section {
		padding-top: 32px;
	}

	body.hl-single-listing .hl-host-section__heading {
		align-items: flex-start;
	}

	body.hl-single-listing .hl-host-section .hl-host-card {
		display: block;
		margin-bottom: 34px;
		padding: 24px;
	}

	body.hl-single-listing .hl-host-card__help {
		margin: 22px 0 16px;
		padding: 18px 0 0;
		border-top: 1px solid var(--hl-line);
		border-left: 0;
	}

	body.hl-single-listing .hl-host-card a.button {
		display: flex;
		width: 100%;
	}

	body.hl-single-listing .listing-nav-container:not(.cloned) {
		margin-top: 22px;
	}

	body.hl-single-listing .listing-nav-container .listing-nav {
		/* Trois rangées sur téléphone : sans écart vertical, elles se touchent. */
		gap: 10px 12px;
	}

	body.hl-single-listing #listing-overview ul.listing-details,
	body.hl-single-listing #listing-overview .listing-features {
		grid-template-columns: 1fr;
	}

	body.hl-single-listing #listing-overview ul.listing-details li {
		min-height: 68px;
	}

}

@media (prefers-reduced-motion: reduce) {
	body.hl-single-listing #single-listing-grid-gallery img,
	body.hl-single-listing #booking-widget-anchor .book-now-notloggedin,
	body.hl-single-listing .listeo-single-listing-sidebar .lbp-bpw-btn,
	body.hl-single-listing .listeo-single-listing-sidebar .lbp-book-now-btn {
		transition: none;
	}
}

/* ----------------------------------------------- Retouches du 2026-09-16 */

/* Cœur du bouton « Enregistrer » : il pendait sous la ligne de texte. */
body.hl-single-listing #titlebar .like-button .like-icon,
body.hl-single-listing #titlebar .like-button-notlogged .like-icon {
	display: inline-flex !important;
	position: static !important;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	margin: 0 !important;
	line-height: 1 !important;
}

body.hl-single-listing #titlebar .like-icon::before {
	position: static !important;
	top: auto !important;
	left: auto !important;
	margin: 0 !important;
	font-size: var( --hl-fs-body );
	line-height: 1 !important;
}

/* Même typographie et même famille d'icônes pour Partager et Enregistrer. */
body.hl-single-listing #titlebar .hl-title-actions > * {
	font-family: inherit;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 600 !important;
	letter-spacing: 0;
}

body.hl-single-listing #titlebar .hl-share-button i {
	width: 18px;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	line-height: 1;
	text-align: center;
}

body.hl-single-listing #titlebar .like-button .bookmark-btn-title,
body.hl-single-listing #titlebar .like-button-notlogged .bookmark-btn-title,
body.hl-single-listing #titlebar .hl-share-button span {
	font-weight: 600;
	line-height: 1;
}

/* Niveau de peur : petites têtes rouges au lieu du fantôme générique. */
.hl-fear-level {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	margin: 0 6px 0 0;
	vertical-align: -2px;
}

.hl-fear-level__icon {
	width: 17px !important;
	height: 19px !important;
	max-width: none !important;
	border-radius: 0 !important;
	object-fit: contain;
}

/* Prix de la réservation : un seul montant, suivi de son unité. */
.hl-booking-card__unit {
	margin-left: 6px;
	color: var(--hl-muted);
	font-size: var( --hl-fs-body );
	font-weight: 500;
}

/* « Signaler cette annonce » : discret, sans cadre. */
body.hl-single-listing .listeo-single-listing-sidebar .listing-report-button-container {
	margin-top: 14px;
	text-align: center;
}

body.hl-single-listing .listeo-single-listing-sidebar .listing-report-button-container a,
body.hl-single-listing .listeo-single-listing-sidebar a[href="#report-listing-dialog"] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	width: auto;
	padding: 4px 2px !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	box-shadow: none !important;
	color: var(--hl-muted) !important;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 500 !important;
	text-decoration: none !important;
}

body.hl-single-listing .listeo-single-listing-sidebar a[href="#report-listing-dialog"]:hover {
	color: var(--hl-ink) !important;
	text-decoration: underline !important;
}

/* Carte « Emplacement » : zone approximative, taille constante. */
.hl-area-map {
	height: 380px;
	border-radius: 16px;
	overflow: hidden;
}

.hl-area-note {
	margin: 10px 0 0;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	line-height: 1.45;
}

/* Icônes des titres de section. */
.hl-section-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	margin-right: 12px;
	border-radius: 12px;
	background: rgba( 150, 27, 27, 0.08 );
	color: var( --hl-red );
	font-size: var( --hl-fs-body );
	vertical-align: middle;
}

body.hl-single-listing .hl-has-icon {
	display: flex;
	align-items: center;
}

/* Section « Votre hôte ». */
body.hl-single-listing .hl-host-section {
	margin: 40px 0 0;
}

body.hl-single-listing .hl-host-card {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 22px;
	padding: 28px;
	border: 1px solid var(--hl-line);
	border-radius: 20px;
	background: var( --hl-ivory-light );
	box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.04 );
}

body.hl-single-listing .hl-host-card .hosted-by-avatar img {
	width: 72px !important;
	height: 72px !important;
	border-radius: 50%;
	object-fit: cover;
}

body.hl-single-listing .hl-host-card .hl-host-card__help {
	max-width: 46ch;
	margin: 0;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	line-height: 1.5;
}

.hl-host-points {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 220px, 1fr ) );
	gap: 16px;
	margin: 4px 0 0;
	padding: 20px 0 0;
	border-top: 1px solid var(--hl-line);
	list-style: none;
}

.hl-host-point {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
}

.hl-host-point__icon {
	display: inline-flex;
	flex: 0 0 34px;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 10px;
	background: rgba( 150, 27, 27, 0.08 );
	color: var( --hl-red );
	font-size: var( --hl-fs-small );
}

.hl-host-point__copy {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.hl-host-point__copy strong {
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	line-height: 1.3;
}

.hl-host-point__copy span {
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	line-height: 1.45;
}

/* Prix de la réservation sur une seule ligne. */
.hl-booking-card__price {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 0 6px;
}

.hl-booking-card__eyebrow {
	flex: 1 0 100%;
}

/* Expériences : liste des séances proposées. */
.hl-sessions-source .slot-carousel-content {
	display: none !important;
}

.hl-sessions {
	margin: 4px 0 8px;
}

.hl-sessions__title {
	margin: 0 0 12px !important;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body ) !important;
	font-weight: 700 !important;
}

.hl-sessions__rows {
	display: flex;
	flex-direction: column;
	gap: 10px;
	max-height: 320px;
	overflow-y: auto;
	padding-right: 4px;
}

.hl-session {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 12px 14px;
	border: 1px solid var(--hl-line);
	border-radius: 14px;
	background: var( --hl-ivory-light );
}

.hl-session__date strong {
	display: block;
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	line-height: 1.3;
	text-transform: capitalize;
}

.hl-session__times {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.hl-session__slot {
	margin: 0;
	padding: 7px 12px;
	border: 1px solid var(--hl-line);
	border-radius: 999px;
	background: var( --hl-ivory-light );
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
	transition: border-color 0.15s, background-color 0.15s, color 0.15s;
}

.hl-session__slot:hover {
	border-color: var( --hl-red );
}

.hl-session__slot.is-selected {
	border-color: var( --hl-red );
	background: var( --hl-red );
	color: var( --hl-ivory );
}

.hl-sessions__empty {
	margin: 0;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	line-height: 1.45;
}

.hl-sessions__more {
	margin: 12px 0 0;
	padding: 0;
	border: 0;
	background: none;
	color: var(--hl-ink);
	font-size: var( --hl-fs-small );
	font-weight: 600;
	text-decoration: underline;
	cursor: pointer;
}

/* ----------------------------------------------- Retouches du 2026-09-16 (2) */

/*
 * Cœur du bouton « Enregistrer ».
 *
 * Listeo dessine deux cœurs superposés (::before éteint, ::after allumé quand
 * l'annonce est enregistrée) et les cale en absolu sur `.listing-share`. Hors
 * de ce conteneur, le second cœur se repositionnait sur la page entière : il
 * apparaissait donc à côté du bouton dès que l'annonce était en favori.
 */
body.hl-single-listing #titlebar .hl-title-actions .like-icon {
	position: relative !important;
	display: inline-flex !important;
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	margin: 0 !important;
	float: none !important;
	background: transparent !important;
	line-height: 1 !important;
}

body.hl-single-listing #titlebar .hl-title-actions .like-icon::before,
body.hl-single-listing #titlebar .hl-title-actions .like-icon::after {
	position: absolute !important;
	top: 0 !important;
	right: 0 !important;
	bottom: 0 !important;
	left: 0 !important;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 !important;
	color: var( --hl-red );
	font-size: var( --hl-fs-body );
	line-height: 1 !important;
}

body.hl-single-listing #titlebar .hl-title-actions .like-icon:hover,
body.hl-single-listing #titlebar .hl-title-actions .like-icon.liked {
	background: transparent !important;
	color: var( --hl-red ) !important;
}

/* Même graisse et même taille pour « Partager » et « Enregistrer ». */
body.hl-single-listing #titlebar .hl-title-actions button,
body.hl-single-listing #titlebar .hl-title-actions a,
body.hl-single-listing #titlebar .hl-title-actions span,
body.hl-single-listing #titlebar .hl-title-actions b {
	color: var(--hl-ink) !important;
	font-family: inherit;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 600 !important;
	letter-spacing: 0;
	line-height: 1 !important;
	text-transform: none;
}

body.hl-single-listing #titlebar .hl-title-actions .hl-share-button span,
body.hl-single-listing #titlebar .hl-title-actions .bookmark-btn-title {
	display: inline-block !important;
	margin: 0;
}

/* Équipements : une icône par ligne, façon Airbnb. */
body.hl-single-listing .listing-features.checkboxes {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 260px, 1fr ) );
	gap: 4px 28px;
}

body.hl-single-listing .listing-features.checkboxes li {
	display: flex;
	align-items: center;
	gap: 14px;
	width: auto !important;
	margin: 0 !important;
	padding: 11px 0 !important;
	border-bottom: 1px solid var(--hl-line);
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	line-height: 1.4;
}

body.hl-single-listing .listing-features.checkboxes li::before,
body.hl-single-listing .listing-features.checkboxes li::after {
	content: none !important;
}

body.hl-single-listing .listing-features.checkboxes li i {
	flex: 0 0 24px;
	width: 24px;
	color: var(--hl-ink) !important;
	font-size: var( --hl-fs-body );
	text-align: center;
}

body.hl-single-listing .listing-features.checkboxes li a {
	color: var(--hl-ink);
	font-weight: 500;
	text-decoration: none;
}

body.hl-single-listing .listing-features.checkboxes li a:hover {
	text-decoration: underline;
}

/* Règles et informations pratiques, sous l'emplacement. */
body.hl-single-listing .hl-rules-section {
	margin-top: 50px;
}

body.hl-single-listing .hl-rules-title {
	margin-bottom: 22px;
}

/* Section « Votre hôte » : titre de section, profil à gauche, repères à droite. */
body.hl-single-listing .hl-host-section {
	margin: 50px 0 0;
	clear: both;
}

body.hl-single-listing .hl-host-section__title {
	margin-bottom: 22px;
}

body.hl-single-listing .hl-host-section .hl-host-card {
	display: block;
	max-width: 100%;
	padding: 26px 28px;
}

body.hl-single-listing .hl-host-card__inner {
	display: grid;
	grid-template-columns: minmax( 210px, 250px ) minmax( 0, 1fr );
	gap: 28px 36px;
	align-items: start;
}

body.hl-single-listing .hl-host-card__profile {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	text-align: center;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-title {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	border: 0;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-avatar {
	order: -1;
	margin: 0;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-avatar img {
	width: 96px !important;
	height: 96px !important;
	border-radius: 50%;
	object-fit: cover;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-title h4 {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin: 0;
	line-height: 1.3;
}

body.hl-single-listing .hl-host-card__profile .hl-host-card__help {
	max-width: 30ch;
	text-align: center;
}

body.hl-single-listing .hl-host-card__profile > a.button {
	width: 100%;
	margin: 4px 0 0;
	text-align: center;
}

body.hl-single-listing .hl-host-card__inner .hl-host-points {
	grid-template-columns: repeat( auto-fit, minmax( 230px, 1fr ) );
	margin: 0;
	padding: 0;
	border-top: 0;
}

@media ( max-width: 991px ) {
	body.hl-single-listing .hl-host-card__inner {
		grid-template-columns: minmax( 0, 1fr );
	}

	body.hl-single-listing .hl-host-card__profile {
		align-items: flex-start;
		text-align: left;
	}

	body.hl-single-listing .hl-host-card__profile .hosted-by-title,
	body.hl-single-listing .hl-host-card__profile .hl-host-card__help {
		align-items: flex-start;
		text-align: left;
	}
}

/* Séances : conditions de l'hôte et places par créneau. */
.hl-sessions__terms {
	margin: -6px 0 12px;
	color: var(--hl-muted);
	font-size: var( --hl-fs-small );
	line-height: 1.45;
}

.hl-session__slot {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	gap: 3px;
	padding: 8px 14px;
	line-height: 1.2;
}

.hl-session__seats {
	font-size: var( --hl-fs-label );
	font-weight: 500;
	opacity: 0.75;
}

/* L'avatar Listeo est calé en absolu : il redevient un élément de la colonne. */
body.hl-single-listing .hl-host-card__profile .hosted-by-title {
	min-height: 0;
	padding-left: 0;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-avatar {
	position: static;
	width: 96px;
	height: 96px;
	border: 3px solid var( --hl-ivory-light );
	box-shadow: 0 6px 18px rgba( 30, 21, 24, 0.12 );
	border-radius: 50%;
}

body.hl-single-listing .hl-host-card__profile .hl-host-card__help {
	padding: 0;
	border-left: 0;
}

/* ----------------------------------------------- Retouches du 2026-09-17 */

/* Prix de la carte de réservation : « À partir de 450,00 €/nuit », une ligne. */
body.hl-single-listing .hl-booking-card__price {
	display: flex;
	flex-direction: row;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 0 8px;
	margin: 0 0 20px;
}

body.hl-single-listing .hl-booking-card__eyebrow {
	flex: 0 0 auto;
	color: var(--hl-muted);
	font-size: var( --hl-fs-body );
	font-weight: 500;
}

body.hl-single-listing .hl-booking-card__price strong {
	font-size: var( --hl-fs-h4 );
}

body.hl-single-listing .hl-booking-card__unit {
	margin-left: 0;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 600;
}

body.hl-single-listing .hl-booking-card__header {
	display: block;
	margin: 0;
}

/* Séances : places restantes. */
.hl-session__slot.is-full {
	opacity: 0.45;
	cursor: not-allowed;
	text-decoration: line-through;
}

.hl-session__seats.is-low {
	color: var( --hl-red );
	opacity: 1;
}

/*
 * Section « Votre hôte », mise en page demandée par la cliente :
 * photo à gauche avec le nom à sa droite, message et bouton dessous, alignés
 * sur le bord gauche de la photo, repères à droite centrés verticalement.
 */
body.hl-single-listing .hl-host-card__inner {
	grid-template-columns: minmax( 300px, 0.9fr ) minmax( 0, 1.1fr );
	gap: 30px 48px;
	align-items: center;
}

body.hl-single-listing .hl-host-card__profile {
	align-items: stretch;
	gap: 18px;
	text-align: left;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-title {
	display: grid;
	grid-template-columns: 96px minmax( 0, 1fr );
	grid-template-rows: auto auto;
	align-items: center;
	column-gap: 20px;
	row-gap: 4px;
	text-align: left;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-avatar {
	grid-column: 1;
	grid-row: 1 / span 2;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-title h4 {
	grid-column: 2;
	grid-row: 1;
	align-self: end;
	text-align: left;
}

body.hl-single-listing .hl-host-card__profile .hosted-by-link {
	grid-column: 2;
	grid-row: 2;
	align-self: start;
	justify-self: start;
	margin: 0;
}

body.hl-single-listing .hl-host-card__profile .hl-host-card__help {
	max-width: 42ch;
	margin: 0;
	text-align: left;
}

body.hl-single-listing .hl-host-card__profile > a.button {
	width: auto;
	max-width: 320px;
	margin: 0;
	align-self: flex-start;
}

body.hl-single-listing .hl-host-card__inner .hl-host-points {
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	gap: 22px 26px;
	align-self: center;
}

@media ( max-width: 1199px ) {
	body.hl-single-listing .hl-host-card__inner .hl-host-points {
		grid-template-columns: minmax( 0, 1fr );
	}
}

@media ( max-width: 767px ) {
	body.hl-single-listing .hl-host-card__profile .hosted-by-title {
		grid-template-columns: 76px minmax( 0, 1fr );
		column-gap: 14px;
	}

	body.hl-single-listing .hl-host-card__profile .hosted-by-avatar,
	body.hl-single-listing .hl-host-card__profile .hosted-by-avatar img {
		width: 76px !important;
		height: 76px !important;
	}

	body.hl-single-listing .hl-host-card__profile > a.button {
		width: 100%;
		max-width: none;
	}
}

/* ----------------------------------------------- Retouches du 2026-09-17 (2) */

/*
 * Photo de l'hôte : ronde, pas ovale.
 *
 * Listeo pose `max-width: 56px` et `box-sizing: content-box` sur le lien, et le
 * thème borne les images à `max-width: 100%` : la largeur restait à 56 px quand
 * la hauteur montait à 96, d'où l'ovale.
 */
body.hl-single-listing .hl-host-card__profile a.hosted-by-avatar {
	display: block;
	box-sizing: border-box;
	width: 102px !important;
	max-width: 102px !important;
	height: 102px !important;
	padding: 0;
	overflow: hidden;
	border: 3px solid var( --hl-ivory-light );
	border-radius: 50%;
	aspect-ratio: 1 / 1;
}

body.hl-single-listing .hl-host-card__profile a.hosted-by-avatar img,
body.hl-single-listing .hl-host-card__profile a.hosted-by-avatar img.avatar {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	border-radius: 50%;
	object-fit: cover;
	aspect-ratio: 1 / 1;
}

/* Le texte d'accroche tient sur deux lignes nettes. */
body.hl-single-listing .hl-host-card__help {
	max-width: none;
}

body.hl-single-listing .hl-host-card__help span {
	display: block;
}

/* Repères du titre : lieu, type et note sur une seule ligne. */
body.hl-single-listing .hl-title-compact .listing-titlebar-tags,
body.hl-single-listing .hl-title-compact > span,
body.hl-single-listing .hl-title-compact > br,
body.hl-single-listing .hl-title-compact .star-rating,
body.hl-single-listing .hl-title-compact > .listing-rating-link {
	display: none !important;
}

body.hl-single-listing .hl-title-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px 14px;
	margin: 10px 0 0;
	color: var(--hl-muted);
	font-size: var( --hl-fs-body );
	line-height: 1.4;
}

/* Ancien séparateur typographique : remplacé par un vrai point (hl-title-meta__dot). */
body.hl-single-listing .hl-title-meta > * + *::before {
	content: none !important;
}

body.hl-single-listing .hl-title-meta .listing-address {
	display: inline;
	margin: 0;
	padding: 0;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 500;
	text-decoration: none;
}

body.hl-single-listing .hl-title-meta .listing-address:hover {
	text-decoration: underline;
}

body.hl-single-listing .hl-title-meta .listing-address i {
	margin-right: 6px;
	color: var(--hl-accent);
	font-size: var( --hl-fs-small );
}

body.hl-single-listing .hl-title-meta__type,
body.hl-single-listing .hl-title-meta__type a {
	color: var(--hl-muted);
	font-size: var( --hl-fs-body );
	font-weight: 500;
	text-decoration: none;
}

body.hl-single-listing .hl-title-meta__type a:hover {
	color: var(--hl-ink);
	text-decoration: underline;
}

body.hl-single-listing .hl-title-meta__rating {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 600;
	text-decoration: none;
}

body.hl-single-listing .hl-title-meta__rating:hover span {
	text-decoration: underline;
}

body.hl-single-listing .hl-title-meta__rating i {
	color: var(--hl-accent);
	font-size: var( --hl-fs-small );
}

/* ----------------------------------------------- Haut de fiche · 1.53.0 */

/*
 * Bandeau de titre remis à plat : une ligne de titre avec ses deux boutons,
 * puis une ligne de repères, même taille et même graisse pour tout le monde.
 */
body.hl-single-listing #titlebar .listing-titlebar-title {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0;
	row-gap: 0;
}

body.hl-single-listing #titlebar .hl-title-main-row {
	order: 1;
	flex: 0 0 auto;
	width: 100%;
	align-items: center;
	gap: 28px;
}

body.hl-single-listing #titlebar .hl-title-meta {
	order: 2;
	width: 100%;
	margin: 12px 0 0;
	gap: 0;
	font-size: var( --hl-fs-body );
	line-height: 1;
}

/* Tous les repères partagent la même typographie. */
body.hl-single-listing #titlebar .hl-title-meta > *,
body.hl-single-listing #titlebar .hl-title-meta a,
body.hl-single-listing #titlebar .hl-title-meta span {
	display: inline-flex;
	align-items: center;
	font-family: inherit;
	font-size: var( --hl-fs-body ) !important;
	font-weight: 500 !important;
	letter-spacing: 0;
	line-height: 1 !important;
}

body.hl-single-listing #titlebar .hl-title-meta .listing-address {
	color: var(--hl-ink) !important;
}

body.hl-single-listing #titlebar .hl-title-meta .listing-address i {
	margin-right: 7px;
	color: var(--hl-accent);
	font-size: var( --hl-fs-small );
	line-height: 1;
}

/*
 * Le type peut contenir deux liens séparés par une virgule : il reste en ligne
 * pour que la virgule et l'espace tombent juste, et le centrage vertical vient
 * du conteneur.
 */
body.hl-single-listing #titlebar .hl-title-meta__type {
	display: inline-block !important;
}

body.hl-single-listing #titlebar .hl-title-meta__type a {
	display: inline !important;
}

body.hl-single-listing #titlebar .hl-title-meta__type,
body.hl-single-listing #titlebar .hl-title-meta__type a {
	color: var(--hl-muted) !important;
}

body.hl-single-listing #titlebar .hl-title-meta__rating {
	gap: 6px;
	color: var(--hl-ink) !important;
}

body.hl-single-listing #titlebar .hl-title-meta__rating i {
	color: var(--hl-accent);
	font-size: var( --hl-fs-small );
	line-height: 1;
}

/* Séparateur : un vrai élément, centré comme les autres repères. */
body.hl-single-listing #titlebar .hl-title-meta__dot {
	flex: 0 0 3px;
	width: 3px;
	height: 3px;
	margin: 0 12px;
	padding: 0;
	border-radius: 50%;
	background: #bcb2a1;
}

/*
 * Cœur du bouton « Enregistrer ».
 *
 * Listeo relève l'icône de 3 px (`bottom: 3px`) et lui impose une hauteur de
 * ligne de 30 px : le cœur flottait au-dessus du mot. Tout est remis à plat.
 */
body.hl-single-listing #titlebar .hl-title-actions .like-icon {
	top: auto !important;
	right: auto !important;
	bottom: auto !important;
	left: auto !important;
	align-self: center;
	height: 18px !important;
	font-size: 0;
}

body.hl-single-listing #titlebar .hl-title-actions .like-button,
body.hl-single-listing #titlebar .hl-title-actions .like-button-notlogged,
body.hl-single-listing #titlebar .hl-title-actions .hl-share-button {
	align-items: center;
	height: 46px;
	padding: 0 20px;
	line-height: 1 !important;
}

body.hl-single-listing #titlebar .hl-title-actions .hl-share-button i {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 18px;
	line-height: 1;
}

body.hl-single-listing #titlebar .hl-title-actions .bookmark-btn-title,
body.hl-single-listing #titlebar .hl-title-actions .hl-share-button span {
	display: inline-flex !important;
	align-items: center;
	height: 18px;
}

/* Titre : un peu plus d'air sous le fil d'Ariane, moins sous la ligne. */
body.hl-single-listing #titlebar h1 {
	font-weight: 650;
	letter-spacing: -0.03em;
}

@media ( max-width: 767px ) {
	body.hl-single-listing #titlebar .hl-title-meta {
		flex-wrap: wrap;
		row-gap: 8px;
		font-size: var( --hl-fs-small );
	}

	body.hl-single-listing #titlebar .hl-title-meta > *,
	body.hl-single-listing #titlebar .hl-title-meta a,
	body.hl-single-listing #titlebar .hl-title-meta span {
		font-size: var( --hl-fs-small ) !important;
	}

	body.hl-single-listing #titlebar .hl-title-meta__dot {
		margin: 0 9px;
	}
}

/* Repères du titre : tous sur la même ligne optique. */
body.hl-single-listing #titlebar .hl-title-meta {
	align-items: center;
	line-height: 20px;
}

body.hl-single-listing #titlebar .hl-title-meta__item {
	display: inline-flex !important;
	align-items: center;
	height: 20px;
	line-height: 20px !important;
}

body.hl-single-listing #titlebar .hl-title-meta__type {
	display: inline-flex !important;
	align-items: center;
}

body.hl-single-listing #titlebar .hl-title-meta__type a,
body.hl-single-listing #titlebar .hl-title-meta__comma {
	display: inline-block !important;
	line-height: 20px !important;
}

body.hl-single-listing #titlebar .hl-title-meta__rating span {
	line-height: 20px !important;
}

body.hl-single-listing #titlebar .hl-title-meta .listing-address i,
body.hl-single-listing #titlebar .hl-title-meta__rating i {
	display: inline-flex;
	align-items: center;
	height: 20px;
	line-height: 20px;
}

/*
 * Dernier mot sur l'alignement des repères.
 *
 * Une marge basse de 3 px héritée des étiquettes Listeo remontait le type d'un
 * pixel et demi, et la hauteur de ligne retombait à 15 px sur les `span`. Les
 * trois repères, leurs liens et leurs points partagent maintenant la même
 * boîte de 20 px, sans marge ni remplissage.
 */
body.hl-single-listing #titlebar .hl-title-meta > .hl-title-meta__item,
body.hl-single-listing #titlebar .hl-title-meta > .hl-title-meta__item span,
body.hl-single-listing #titlebar .hl-title-meta > .hl-title-meta__item a {
	margin: 0 !important;
	padding: 0 !important;
	line-height: 20px !important;
}

body.hl-single-listing #titlebar .hl-title-meta > .hl-title-meta__item {
	height: 20px !important;
	align-items: center !important;
}

body.hl-single-listing #titlebar .hl-title-meta > .hl-title-meta__item i {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

/* ----------------------------------------------- Fiche épurée · 1.56.0 */

/*
 * Bouton « Enregistrer » : cœur vide au repos, cœur plein une fois l'annonce
 * enregistrée, avec une pulsation à chaque bascule.
 *
 * Listeo superpose deux cœurs pleins : le premier passe en graisse 400 (tracé
 * seul de Font Awesome), le second reste plein et n'apparaît qu'en favori.
 */
body.hl-single-listing #titlebar .hl-title-actions .like-icon::before {
	font-weight: 400 !important;
	opacity: 1;
	transform: scale( 1 );
	transition: opacity 0.18s ease, transform 0.18s ease;
}

body.hl-single-listing #titlebar .hl-title-actions .like-icon::after {
	font-weight: 900 !important;
	opacity: 0;
	transform: scale( 0.6 );
	transition: opacity 0.18s ease, transform 0.25s cubic-bezier( 0.2, 1.4, 0.5, 1 );
}

body.hl-single-listing #titlebar .hl-title-actions .like-icon.liked::before {
	opacity: 0;
	transform: scale( 0.7 );
}

body.hl-single-listing #titlebar .hl-title-actions .like-icon.liked::after {
	opacity: 1;
	transform: scale( 1 );
}

@keyframes hl-heart-pop {
	0% { transform: scale( 1 ); }
	35% { transform: scale( 1.32 ); }
	65% { transform: scale( 0.92 ); }
	100% { transform: scale( 1 ); }
}

body.hl-single-listing #titlebar .hl-title-actions .like-icon.hl-heart-beat {
	animation: hl-heart-pop 0.42s cubic-bezier( 0.2, 1.2, 0.4, 1 );
}

body.hl-single-listing #titlebar .hl-title-actions .like-button {
	transition: border-color 0.18s ease, background-color 0.18s ease;
}

@media ( prefers-reduced-motion: reduce ) {
	body.hl-single-listing #titlebar .hl-title-actions .like-icon.hl-heart-beat,
	body.hl-single-listing #titlebar .hl-title-actions .like-icon::before,
	body.hl-single-listing #titlebar .hl-title-actions .like-icon::after {
		animation: none;
		transition: none;
	}
}

/* Plus aucun trait entre les sections ni entre les lignes. */
body.hl-single-listing .listing-section,
body.hl-single-listing .hl-host-section,
body.hl-single-listing .hl-rules-section,
body.hl-single-listing .listing-nav-container,
body.hl-single-listing .listing-nav,
body.hl-single-listing #listing-overview,
body.hl-single-listing .hl-listing-intro,
body.hl-single-listing .listing-details,
body.hl-single-listing .listing-details li,
body.hl-single-listing .listing-features.checkboxes li,
body.hl-single-listing .hl-host-card .hl-host-points,
body.hl-single-listing .hosted-by-title {
	border-top: 0 !important;
	border-bottom: 0 !important;
}

body.hl-single-listing .listing-section::before,
body.hl-single-listing .listing-section::after,
body.hl-single-listing .listing-details li::after,
body.hl-single-listing hr {
	display: none !important;
}

body.hl-single-listing .hl-host-section {
	padding-top: 0;
}

/* Détails : mêmes icônes que les équipements, sans pastille rouge. */
body.hl-single-listing .listing-details li i,
body.hl-single-listing .listing-details li.hl-detail-ready i {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 24px;
	width: 24px;
	height: 24px;
	margin: 0 14px 0 0;
	padding: 0;
	border-radius: 0;
	background: transparent !important;
	color: var(--hl-ink) !important;
	font-size: var( --hl-fs-body );
	line-height: 1;
}

body.hl-single-listing .listing-details li {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0 6px;
	padding: 11px 0 !important;
}

body.hl-single-listing .listing-details li > div {
	flex: 1 1 auto;
	min-width: 0;
	color: var(--hl-muted);
	font-size: var( --hl-fs-body );
	line-height: 1.4;
}

body.hl-single-listing .listing-details li > span {
	flex: 0 0 auto;
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 600;
	line-height: 1.4;
}

/* Réputation paranormale, sous la description. */
.hl-fear-row {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 18px 0 0;
}

.hl-fear-row .hl-fear-level {
	margin: 0;
}

.hl-fear-row__label {
	color: var(--hl-ink);
	font-size: var( --hl-fs-body );
	font-weight: 600;
	line-height: 1.3;
}

/* Cœur maison : les deux cœurs superposés de Listeo sont neutralisés. */
body.hl-single-listing #titlebar .hl-title-actions .like-icon::before,
body.hl-single-listing #titlebar .hl-title-actions .like-icon::after {
	content: none !important;
	display: none !important;
}

body.hl-single-listing #titlebar .hl-title-actions .hl-heart {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	color: var(--hl-accent);
	font-size: var( --hl-fs-body );
	line-height: 1;
	transition: transform 0.2s cubic-bezier( 0.2, 1.4, 0.5, 1 ), color 0.18s ease;
}

body.hl-single-listing #titlebar .hl-title-actions .like-button:hover .hl-heart {
	transform: scale( 1.08 );
}

/* =====================================================================
 * Harmonisation de la fiche · 1.58.0
 *
 * Trois trames, une seule fois, pour toute la page : une échelle de
 * caractères, une trame verticale en multiples de 8, une largeur de lecture.
 * Tout ce qui suit s'y rattache, plus rien n'est réglé au cas par cas.
 *
 * Relevé avant correction : les titres de section vivaient en deux tailles
 * (21 px / graisse 500 dans l'aperçu, 23 px / 600 ailleurs), les écarts entre
 * blocs valaient 0, 22, 36, 38, 53 puis 219 px, et les paragraphes couraient
 * sur 83 signes.
 * ===================================================================== */

body.hl-single-listing {
	/*
	 * L'échelle locale d'origine cède la place à l'échelle du site, définie
	 * dans Elementor (Variables globales) : ces noms ne sont plus que des
	 * renvois, pour que les règles écrites ici restent valables.
	 */
	--hl-text-note: var( --hl-fs-meta );
	--hl-text-small: var( --hl-fs-small );
	--hl-text-body: var( --hl-fs-body );
	--hl-text-lead: var( --hl-fs-lead );
	--hl-text-title: var( --hl-fs-h4 );

	/* Trame verticale. */
	--hl-gap-line: 12px;
	--hl-gap-block: 32px;
	--hl-gap-title: 24px;
	--hl-gap-section: 72px;

	/* Largeur de lecture. */
	--hl-measure: 68ch;
}

/* ------------------------------------------------ 1. Titres de section */
body.hl-single-listing .hl-section-title,
body.hl-single-listing .hl-details-title,
body.hl-single-listing .listing-desc-headline,
body.hl-single-listing .hl-rules-title,
body.hl-single-listing .hl-host-section__title,
body.hl-single-listing #listing-reviews .listing-desc-headline,
body.hl-single-listing #listing-location .listing-desc-headline {
	margin: 0 0 var(--hl-gap-title) !important;
	color: var(--hl-ink);
	font-size: var(--hl-text-title) !important;
	font-weight: 600 !important;
	letter-spacing: -0.02em;
	line-height: 1.25 !important;
}

/* ------------------------------------------------ 2. Rythme vertical */
body.hl-single-listing .listing-section,
body.hl-single-listing .hl-host-section {
	margin: 0 !important;
	padding: var(--hl-gap-section) 0 0 !important;
}

body.hl-single-listing #listing-overview {
	padding-top: 40px !important;
}

body.hl-single-listing .hl-listing-intro {
	margin: 0 0 var(--hl-gap-section);
	padding: 0;
}

body.hl-single-listing .listing-details {
	margin: 0 0 var(--hl-gap-section) !important;
	padding: 0;
}

body.hl-single-listing .hl-rules-section .listing-details,
body.hl-single-listing .listing-features {
	margin-bottom: 0 !important;
	padding-bottom: 0 !important;
}

body.hl-single-listing .listing-details li,
body.hl-single-listing .listing-features.checkboxes li {
	padding: 10px 0 !important;
}

/* ------------------------------------------------ 3. Longueur de ligne */
body.hl-single-listing .hl-listing-intro p,
body.hl-single-listing #listing-overview > p,
body.hl-single-listing .hl-area-note {
	max-width: var(--hl-measure);
	font-size: var(--hl-text-body);
	line-height: 1.7;
}

/* ------------------------------------------------ 4. Plus rien sous 14 px */
body.hl-single-listing .listing-details li > div {
	margin: 0 !important;
	color: var(--hl-muted);
	font-size: var(--hl-text-small) !important;
	line-height: 1.5 !important;
}

body.hl-single-listing .listing-details li > span {
	font-size: var(--hl-text-small) !important;
	line-height: 1.5 !important;
}

body.hl-single-listing .hl-host-point__copy strong {
	font-size: var(--hl-text-small) !important;
	line-height: 1.4 !important;
}

body.hl-single-listing .hl-host-point__copy span {
	font-size: var(--hl-text-note) !important;
	line-height: 1.5 !important;
}

body.hl-single-listing .hl-host-card__help {
	font-size: var(--hl-text-small) !important;
	line-height: 1.6 !important;
}

body.hl-single-listing .listing-features.checkboxes li,
body.hl-single-listing .listing-features.checkboxes li a {
	font-size: var(--hl-text-body) !important;
	line-height: 1.5 !important;
}

/* ------------------------------------------------ 5. Réputation en tête */
.hl-fear-row {
	margin-top: var(--hl-gap-block);
}

.hl-fear-row__label {
	font-size: var(--hl-text-lead);
}

/* ------------------------------------------------ 6. Focus visible */
body.hl-single-listing a:focus-visible,
body.hl-single-listing button:focus-visible,
body.hl-single-listing input:focus-visible,
body.hl-single-listing select:focus-visible,
body.hl-single-listing [tabindex]:focus-visible {
	outline: 2px solid var(--hl-accent);
	outline-offset: 3px;
	border-radius: 6px;
}

/* ------------------------------------------------ 7. Cibles tactiles */
body.hl-single-listing .hl-session__slot,
body.hl-single-listing .hl-sessions__more,
body.hl-single-listing .listing-nav a {
	min-height: 44px;
}

body.hl-single-listing .hl-session__slot {
	justify-content: center;
}

/* ------------------------------------------------ 8. Mouvement mesuré */
@media ( prefers-reduced-motion: reduce ) {
	body.hl-single-listing * {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

@media ( max-width: 767px ) {
	body.hl-single-listing {
		--hl-gap-section: 48px;
		--hl-gap-block: 24px;
		--hl-gap-title: 20px;
		/* La taille suit désormais le palier mobile du système. */
	}
}

/* Encart des avis : rattaché à sa section, à la trame. */
body.hl-single-listing .hl-review-notice {
	margin: var(--hl-gap-title) 0 0 !important;
	padding: 16px 20px !important;
	border: 0 !important;
	border-radius: var(--hl-radius, 14px);
	background: var(--hl-soft, #f7f6f3) !important;
	color: var(--hl-muted) !important;
}

body.hl-single-listing .hl-review-notice p {
	margin: 0;
	color: var(--hl-muted) !important;
	font-size: var(--hl-text-small);
	line-height: 1.5;
}

body.hl-single-listing .hl-review-notice::before,
body.hl-single-listing .hl-review-notice::after {
	content: none !important;
}

/* Bloc hôte : dernières valeurs hors trame (12, 13 et 19 px). */
body.hl-single-listing .hl-host-card .hosted-by-title h4 > span {
	font-size: var(--hl-text-note) !important;
	font-weight: 500;
	line-height: 1.4 !important;
}

body.hl-single-listing .hl-host-card .hosted-by-title h4 > a {
	font-size: var( --hl-fs-lead ) !important;
	font-weight: 600 !important;
	letter-spacing: -0.01em;
	line-height: 1.3 !important;
}

body.hl-single-listing .hl-host-card .hosted-by-link {
	font-size: var(--hl-text-small) !important;
	line-height: 1.4 !important;
}

body.hl-single-listing .hl-host-card a.button {
	font-size: var(--hl-text-small) !important;
	min-height: 48px;
}

/* =====================================================================
 * Pas d'ancienne version visible avant le remodelage · 1.63.0 / 1.64.0
 *
 * La fiche est réorganisée en JavaScript, et sur ce thème le script ne
 * s'exécute qu'au bout d'environ trois secondes : masquer les blocs en
 * attendant aurait remplacé un saut par un trou. On fait l'inverse.
 *
 * 1. Les éléments que le script retire ou déplace sont cachés tout de suite,
 *    par le CSS seul : plus rien de l'ancienne mise en page n'apparaît.
 * 2. Les éléments qui restent reçoivent leur allure finale sans attendre.
 * 3. Les deux blocs entièrement reconstruits (repères du titre, en-tête du
 *    prix) paraissent en fondu quand ils arrivent.
 * ===================================================================== */

/* 1. Ce qui ne survit pas au remodelage ne s'affiche jamais. */
body.hl-single-listing #titlebar .listing-titlebar-tags,
body.hl-single-listing #titlebar .listing-titlebar-title > span,
body.hl-single-listing #titlebar .listing-titlebar-title > br,
body.hl-single-listing #titlebar .listing-titlebar-title > .listing-rating-link,
body.hl-single-listing #titlebar .star-rating,
body.hl-single-listing #titlebar > .widget_buttons,
body.hl-single-listing .listing-details-header {
	display: none !important;
}

/* 2. Le titre a son allure finale dès le premier affichage. */
body.hl-single-listing #titlebar .listing-titlebar-title {
	min-height: 104px;
}

/* 3. Fondu pour les blocs reconstruits de toutes pièces. */
@keyframes hl-settle-in {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

body.hl-single-listing .hl-title-meta,
body.hl-single-listing .hl-booking-card__header,
body.hl-single-listing .hl-title-actions,
body.hl-single-listing .hl-fear-row,
body.hl-single-listing .hl-host-card__inner {
	animation: hl-settle-in 0.24s ease-out both;
}

@media ( prefers-reduced-motion: reduce ) {
	body.hl-single-listing .hl-title-meta,
	body.hl-single-listing .hl-booking-card__header,
	body.hl-single-listing .hl-title-actions,
	body.hl-single-listing .hl-fear-row,
	body.hl-single-listing .hl-host-card__inner {
		animation: none !important;
	}
}

/* =====================================================================
 * Rien de l'ancienne mise en page, même une seconde · 1.65.0
 *
 * Masquer ce qui disparaît ne suffisait pas : le bloc d'aperçu, la carte, le
 * bloc de réservation et la carte hôte sont réorganisés en profondeur, et leur
 * état d'origine restait visible le temps du script. Les quatre zones
 * attendent maintenant la marque `hl-ready`, posée par le script quand tout
 * est en place, et paraissent ensemble.
 *
 * Filet de sécurité : si le script ne s'exécute pas, elles se révèlent seules
 * au bout de 2,5 s. Jamais de page vide.
 * ===================================================================== */

body.hl-single-listing:not(.hl-ready) #titlebar .listing-titlebar-title,
body.hl-single-listing:not(.hl-ready) #listing-overview,
body.hl-single-listing:not(.hl-ready) #listing-location,
body.hl-single-listing:not(.hl-ready) #listing-reviews,
body.hl-single-listing:not(.hl-ready) .listeo-single-listing-sidebar {
	opacity: 0;
	animation: hl-failsafe-reveal 0s linear 2.5s forwards;
}

@keyframes hl-failsafe-reveal {
	to {
		opacity: 1;
	}
}

body.hl-single-listing.hl-ready #titlebar .listing-titlebar-title,
body.hl-single-listing.hl-ready #listing-overview,
body.hl-single-listing.hl-ready #listing-location,
body.hl-single-listing.hl-ready #listing-reviews,
body.hl-single-listing.hl-ready .listeo-single-listing-sidebar {
	animation: hl-settle-in 0.2s ease-out both;
}

@media ( prefers-reduced-motion: reduce ) {
	body.hl-single-listing:not(.hl-ready) #titlebar .listing-titlebar-title,
	body.hl-single-listing:not(.hl-ready) #listing-overview,
	body.hl-single-listing:not(.hl-ready) #listing-location,
	body.hl-single-listing:not(.hl-ready) #listing-reviews,
	body.hl-single-listing:not(.hl-ready) .listeo-single-listing-sidebar {
		animation-delay: 0s;
	}
}

/* =====================================================================
 * Lot du 2026-09-17 après-midi · 1.68.0
 * ===================================================================== */

/*
 * Bloc de réservation qui suit le défilement.
 *
 * Listeo pose `height: 100vh` et `position: sticky` sur la colonne : elle se
 * décrochait dès que sa propre hauteur était dépassée, et le bloc restait en
 * haut de page. La colonne reprend la hauteur de la ligne, et c'est le bloc
 * lui-même qui colle, sur toute la longueur de la fiche.
 */
body.hl-single-listing .row.sticky-wrapper {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
}

body.hl-single-listing .listeo-single-listing-sidebar.sticky-sidebar-enabled {
	position: static !important;
	height: auto !important;
	float: none !important;
}

body.hl-single-listing .listeo-single-listing-sidebar > .listing-widget:first-child {
	position: sticky;
	top: 96px;
}

/* Galerie : moins d'air au-dessus et en dessous. */
body.hl-single-listing #titlebar {
	padding-bottom: 16px;
}

body.hl-single-listing .listeo-single-listing-gallery-grid {
	margin-bottom: 0;
}

body.hl-single-listing .listing-nav-container {
	margin-top: 40px !important;
}

/* Bouton de réservation : il respire. */
body.hl-single-listing #booking-widget-anchor .button,
body.hl-single-listing #booking-widget-anchor .book-now-notloggedin,
body.hl-single-listing #booking-widget-anchor .send-message-to-owner {
	margin: 22px 0 0 !important;
	padding: 15px 22px !important;
}

body.hl-single-listing #booking-widget-anchor .hl-booking-note,
body.hl-single-listing #booking-widget-anchor .booking-note {
	margin-top: 14px;
}

/*
 * Règles et informations pratiques : les lignes se chevauchaient.
 *
 * La liste de Listeo est en `flex` sans largeur sur les éléments. Elle passe
 * en grille, et chaque ligne aligne son icône, son libellé et sa valeur.
 */
body.hl-single-listing .listing-details {
	display: grid !important;
	grid-template-columns: repeat( auto-fit, minmax( 280px, 1fr ) );
	gap: 6px 32px;
	align-items: start;
}

body.hl-single-listing .listing-details > li {
	display: grid !important;
	grid-template-columns: 24px minmax( 0, 1fr );
	align-items: start;
	column-gap: 14px;
	row-gap: 2px;
	width: auto !important;
	margin: 0 !important;
	padding: 12px 0 !important;
}

body.hl-single-listing .listing-details > li > i {
	grid-column: 1;
	grid-row: 1 / span 2;
	align-self: center;
	margin: 0 !important;
}

body.hl-single-listing .listing-details > li > div {
	grid-column: 2;
	grid-row: 1;
}

body.hl-single-listing .listing-details > li > span {
	grid-column: 2;
	grid-row: 2;
	font-weight: 600;
}

/* Cas des cases à cocher : Listeo range la valeur dans le libellé. */
body.hl-single-listing .listing-details > li.checkboxed-single > div {
	grid-row: 1 / span 2;
	align-self: center;
}

body.hl-single-listing .listing-details > li.checkboxed-single > div span {
	display: block;
	color: var(--hl-ink);
	font-weight: 600;
}

/* Iconographie : une seule taille, une seule couleur, un seul alignement. */
body.hl-single-listing .listing-details > li > i,
body.hl-single-listing .listing-features.checkboxes li i,
body.hl-single-listing .hl-host-point__icon i,
body.hl-single-listing .listing-nav a i,
body.hl-single-listing .hl-title-meta i {
	font-size: var( --hl-fs-body ) !important;
	line-height: 1 !important;
	text-align: center;
}

body.hl-single-listing .listing-nav a i {
	font-size: var( --hl-fs-body ) !important;
	margin-right: 8px;
}

/* Air autour de la galerie : 60 px de marge sous la grille, 40 au-dessus de la
   navigation, soit 100 px de vide. Ramené à 24 + 24. */
body.hl-single-listing #single-listing-grid-gallery {
	margin-bottom: 24px !important;
}

body.hl-single-listing .listing-nav-container {
	margin-top: 24px !important;
}

body.hl-single-listing #titlebar {
	padding-bottom: 10px;
}

/* =====================================================================
 * Retouches du 2026-09-17, fin de journée · 1.70.0
 * ===================================================================== */

/* La colonne de droite suit le défilement d'un seul tenant, signalement compris. */
body.hl-single-listing .listeo-single-listing-sidebar > .listing-widget:first-child {
	position: static;
	top: auto;
}

body.hl-single-listing .hl-sticky-stack {
	position: sticky;
	top: 96px;
}

/* Trait sous les équipements : c'est la liste elle-même qui le portait. */
body.hl-single-listing .listing-features,
body.hl-single-listing .listing-features.checkboxes {
	border: 0 !important;
}

/* Fond gris des listes de détails, hérité de Listeo. */
body.hl-single-listing .listing-details {
	background: transparent !important;
	border-radius: 0 !important;
}

/*
 * Galerie resserrée · 1.78.0
 *
 * L'écart entre les photos ne venait pas d'un `gap` mais de marges de 7 px
 * posées sur chaque rangée (`slg-grid-top`, `slg-grid-inner`), soit 14 px
 * entre deux images. Marges ramenées à 2 px, et l'air au-dessus comme en
 * dessous de la galerie réduit d'autant.
 */
body.hl-single-listing #single-listing-grid-gallery .slg-grid-top,
body.hl-single-listing #single-listing-grid-gallery .slg-grid-inner,
body.hl-single-listing #single-listing-grid-gallery .slg-grid-bottom {
	margin: 2px 2px 0 !important;
}

body.hl-single-listing #single-listing-grid-gallery .slg-grid {
	gap: 4px !important;
}

body.hl-single-listing #single-listing-grid-gallery {
	gap: 4px !important;
	margin-bottom: 14px !important;
}

body.hl-single-listing #single-listing-grid-gallery .slg-half {
	margin-top: -18px !important;
}

body.hl-single-listing #titlebar {
	padding-bottom: 0;
}

body.hl-single-listing .listing-nav-container {
	margin-top: 14px !important;
}

/* Le bandeau de titre gardait 26 px de remplissage sous lui, plus fort que ma
   règle précédente : la galerie remonte d'autant. */
body.hl-single-listing #titlebar.listing-titlebar {
	padding-bottom: 8px !important;
}

/* =====================================================================
 * Retouches du 2026-09-18 · 1.83.0
 * ===================================================================== */

/*
 * Bouton de réservation de nouveau collé au bloc des champs : la règle de
 * 1.68.0 ne visait pas le bouton des visiteurs, qui porte d'autres classes.
 */
body.hl-single-listing #booking-widget-anchor a.button,
body.hl-single-listing #booking-widget-anchor button.button,
body.hl-single-listing #booking-widget-anchor .book-now-notloggedin,
body.hl-single-listing #booking-widget-anchor .sign-in,
body.hl-single-listing #booking-widget-anchor input[type="submit"] {
	margin-top: 22px !important;
	padding: 15px 22px !important;
}

/*
 * Barre de navigation collante : le clone héritait de la marge haute posée
 * pour la barre d'origine, d'où une bande vide sous l'en-tête au défilement.
 */
body.hl-single-listing .listing-nav-container.cloned {
	margin-top: 0 !important;
	padding-top: 0 !important;
}

/* Séances : la date à gauche, les créneaux alignés à droite. */
.hl-session {
	align-items: flex-start;
	gap: 16px;
}

.hl-session__date {
	flex: 0 0 168px;
	padding-top: 4px;
}

.hl-session__times {
	flex: 1 1 auto;
	justify-content: flex-end;
	gap: 8px;
}

.hl-session__slot {
	min-width: 132px;
}

@media ( max-width: 767px ) {
	.hl-session {
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
	}

	.hl-session__date {
		flex: 0 0 auto;
		padding-top: 0;
	}

	.hl-session__times {
		justify-content: flex-start;
	}
}

/* =====================================================================
 * Bloc de réservation · 1.85.0
 * ===================================================================== */

/*
 * Bouton de réservation collé : il vit dans le widget, pas dans le bloc que
 * nous habillons, et Listeo lui donne cinq pixels de marge haute.
 */
body.hl-single-listing .listeo-single-listing-sidebar a.book-now,
body.hl-single-listing .listeo-single-listing-sidebar .book-now,
body.hl-single-listing .listeo-single-listing-sidebar .book-now-notloggedin,
body.hl-single-listing .listeo-single-listing-sidebar .send-message-to-owner,
body.hl-single-listing .listeo-single-listing-sidebar .sign-in.button {
	margin-top: 20px !important;
	padding: 15px 22px !important;
}

/* La mention d'aide ne s'adresse qu'aux visiteurs non connectés. */
body.hl-single-listing.logged-in .hl-booking-card__note {
	display: none;
}

/* Dates manquantes : le bloc le dit au lieu de laisser filer la commande. */
.hl-booking-error {
	margin: 0 0 12px;
	padding: 10px 14px;
	border-radius: 12px;
	background: rgba( 150, 27, 27, 0.08 );
	color: var( --hl-red );
	font-size: var( --hl-fs-small );
	font-weight: 500;
	line-height: 1.4;
}

.hl-booking-dates.is-missing {
	border-color: var( --hl-red ) !important;
	box-shadow: 0 0 0 3px rgba( 150, 27, 27, 0.12 );
}

/* Expériences : un bloc plus compact, qui tient dans un écran. */
.hl-sessions {
	margin: 0 0 4px;
}

.hl-sessions__title {
	margin: 0 0 8px !important;
	font-size: var( --hl-fs-small ) !important;
}

.hl-sessions__terms {
	margin: 0 0 10px;
	font-size: var( --hl-fs-meta );
}

.hl-sessions__rows {
	max-height: 232px;
	gap: 8px;
}

.hl-session {
	padding: 10px 12px;
}

.hl-session__slot {
	min-width: 118px;
	padding: 7px 12px;
}

.hl-sessions__more {
	margin: 10px 0 0;
}

/* Séances : le bloc se signale quand la demande part sans créneau choisi. */
.hl-sessions.is-missing .hl-sessions__rows {
	border-radius: 14px;
	box-shadow: 0 0 0 2px rgba( 150, 27, 27, 0.35 );
}

.hl-sessions.is-missing .hl-sessions__title {
	color: var( --hl-red );
}

/*
 * Bouton en attente d'un choix de date ou de séance.
 *
 * Le gris d'attente porte du texte blanc : sous #6b6151 il tombait à 2,1
 * pour 1, illisible en plein jour. Assez sombre pour se lire, assez terne
 * pour ne pas passer pour un bouton actif.
 */
body.hl-single-listing .listeo-single-listing-sidebar .hl-awaiting-dates {
	background: #6b6151 !important;
	border-color: #6b6151 !important;
	cursor: not-allowed;
}

body.hl-single-listing .listeo-single-listing-sidebar .hl-awaiting-dates:hover {
	background: #6b6151 !important;
}

/* Lieu sans réputation paranormale : l'icône paisible, même gabarit. */
.hl-fear-level--calm img,
.hl-fear-row--calm .hl-fear-level img {
	width: 17px !important;
	height: 19px !important;
	max-width: none !important;
	border-radius: 0 !important;
	object-fit: contain;
}

.hl-fear-row--calm .hl-fear-row__label {
	color: var(--hl-muted);
	font-weight: 500;
}

/* =====================================================================
 * Contrastes sur fond plein · 1.93.0
 *
 * Un créneau choisi passe sur fond rouge de marque : son sous-titre, écrit en
 * rouge quand les places se font rares, y devenait illisible. Sur un fond
 * plein, tout le contenu passe en blanc, le secondaire simplement atténué.
 * ===================================================================== */

.hl-session__slot.is-selected,
.hl-session__slot.is-selected .hl-session__hour,
.hl-session__slot.is-selected .hl-session__seats,
.hl-session__slot.is-selected .hl-session__seats.is-low {
	color: var( --hl-ivory ) !important;
}

.hl-session__slot.is-selected .hl-session__seats {
	opacity: 0.85;
}

.hl-session__slot.is-selected:hover {
	background: #7d1717;
	border-color: #7d1717;
}

/* Même garde-fou partout où le rouge de marque sert de fond. */
body.hl-single-listing .button:not(.border),
body.hl-single-listing .book-now,
body.hl-single-listing .send-message-to-owner {
	color: var( --hl-ivory );
}

body.hl-single-listing .button:not(.border) *,
body.hl-single-listing .book-now *,
body.hl-single-listing .send-message-to-owner * {
	color: inherit !important;
}

/* Le fond du créneau choisi doit gagner : des règles plus tardives sur
   `.hl-session__slot` le repassaient en blanc, et le texte blanc devenait
   invisible sur blanc. */
.hl-session__slot.is-selected,
.hl-session__slot.is-selected:hover {
	background: var( --hl-red ) !important;
	border-color: var( --hl-red ) !important;
}

.hl-session__slot.is-selected:hover {
	background: #7d1717 !important;
	border-color: #7d1717 !important;
}


/*
 * Gris de Listeo restés sous la barre des 4,5 pour 1.
 *
 * Le bandeau d'avis du titre, la note d'ensemble et les dates de commentaires
 * étaient écrits en #948670 sur blanc, soit 3,5 pour 1. Même nuance, assombrie.
 * Le sélecteur porte #titlebar : la règle de Listeo en dépend, et sans lui
 * elle repassait devant la nôtre.
 */
body.hl-single-listing #titlebar .hl-title-meta__rating span,
body.hl-single-listing #titlebar .hl-title-meta__dot,
body.hl-single-listing .rating-overview-box-percent,
body.hl-single-listing .comment .comment-by .date,
body.hl-single-listing .comments .date {
	color: #6b6151;
}

/*
 * Acompte et solde, sous le coût total.
 *
 * Ton posé, pas alarmant : le voyageur doit comprendre qu'il ne paie pas tout
 * aujourd'hui, sans que cela ressemble à un avertissement.
 */
.hl-deposit {
	margin: 14px 0 0;
	padding: 14px 0 0;
	border-top: 1px solid #eeebe5;
	color: #373132;
	font-size: 14px;
	line-height: 1.45;
	text-align: left;
}

.hl-deposit__ligne {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	padding: 3px 0;
}

.hl-deposit__libelle {
	color: #6b6151;
}

.hl-deposit__montant {
	flex: 0 0 auto;
	color: #150e10;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.hl-deposit__ligne.is-fort .hl-deposit__libelle,
.hl-deposit__ligne.is-fort .hl-deposit__montant {
	color: #150e10;
	font-weight: 600;
}

.hl-deposit__note {
	margin: 8px 0 0 !important;
	color: #6b6151;
	font-size: 13px;
	line-height: 1.45;
}

/* ------------------------------------------------ Téléphone : votre hôte */

/*
 * Sur téléphone, la carte de l'hôte partait en morceaux : la liste des
 * quatre repères tombait à zéro de large tout en gardant sa hauteur, d'où
 * un grand vide, et la photo ronde, positionnée en absolu par Listeo,
 * passait par-dessus le nom. Tout repasse en une colonne, la photo reprend
 * sa place dans le flux.
 */
@media ( max-width: 991px ) {
	/*
	 * La mise en page en deux colonnes demandée par la cliente est déclarée
	 * plus haut sans media query : elle gagnait donc aussi sur téléphone, où
	 * sa première colonne de 300 px dépasse déjà la largeur disponible. On la
	 * ramène à une seule colonne ici, en fin de feuille.
	 */
	body.hl-single-listing .hl-host-card__inner {
		grid-template-columns: minmax( 0, 1fr );
		gap: 18px;
		align-items: start;
	}

	body.hl-single-listing .hl-host-card__profile {
		width: 100%;
		max-width: 100%;
	}

	body.hl-single-listing .hl-host-card__inner .hl-host-points,
	body.hl-single-listing .hl-host-points {
		grid-template-columns: minmax( 0, 1fr );
		width: 100%;
		margin-top: 18px;
		padding-top: 18px;
		border-top: 1px solid var( --hl-line );
	}

	body.hl-single-listing .hl-host-card .hosted-by-avatar {
		position: static !important;
		margin: 0 0 4px;
	}

	/*
	 * La colonne de la photo tombe à 76 px sur téléphone, alors que l'image
	 * restait calée à 96 : elle mordait sur le nom. Même diamètre que la
	 * colonne, bordure comprise.
	 */
	body.hl-single-listing .hl-host-card__profile a.hosted-by-avatar,
	body.hl-single-listing .hl-host-card__profile a.hosted-by-avatar img {
		width: 70px !important;
		height: 70px !important;
	}

	body.hl-single-listing .hl-host-card .hosted-by-title {
		padding-left: 0 !important;
	}
}

/*
 * Barre de réservation collée en bas d'écran, sur téléphone.
 *
 * Elle recouvrait la fin du pied de page : la mention de droits d'auteur
 * passait dessous. La page se réserve sa hauteur.
 */
@media ( max-width: 991px ) {
	body.hl-single-listing {
		padding-bottom: 90px;
	}
}

/*
 * Séances sur téléphone : la liste déroulait dans sa propre boîte de 232 px,
 * ce qui coupait une rangée en deux et obligeait à deux gestes de défilement
 * imbriqués. La page défile déjà, la liste se déploie.
 */
@media ( max-width: 767px ) {
	.hl-sessions__rows {
		max-height: none;
		overflow-y: visible;
	}
}

/*
 * Bande blanche de 132 px au-dessus de l'en-tête, sur téléphone.
 *
 * Listeo duplique la barre de navigation de la fiche pour la rendre collante.
 * Sur téléphone la copie sortait de l'écran par le haut tout en gardant sa
 * place dans le flux : toute la page descendait d'autant. La copie disparaît,
 * la barre d'origine reste dans la page, et le pouce a déjà la barre de
 * réservation collée en bas.
 */
@media ( max-width: 991px ) {
	body.hl-single-listing .listing-nav-container.cloned {
		display: none !important;
	}
}

/* ------------------------------ Galerie défilante, téléphone et tablette */

@media ( max-width: 991px ) {
	body.hl-single-listing .hl-gallery-ready.hl-gallery-strip-on {
		position: relative;
		height: auto !important;
	}

	/* La grille d'origine ne sert plus, ses photos vivent dans la bande. */
	body.hl-single-listing .hl-gallery-strip-on .slg-half {
		display: none !important;
	}

	.hl-gallery-strip {
		display: flex;
		gap: 8px;
		margin: 0 -15px;
		padding: 0 15px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain;
	}

	.hl-gallery-strip::-webkit-scrollbar {
		display: none;
	}

	.hl-gallery-strip .slg-gallery-img {
		flex: 0 0 88%;
		height: 240px;
		border-radius: 14px;
		overflow: hidden;
		scroll-snap-align: center;
	}

	.hl-gallery-strip .slg-gallery-img img {
		width: 100% !important;
		height: 100% !important;
		object-fit: cover;
		border-radius: 14px;
	}

	body.hl-single-listing .hl-gallery-strip-on .hl-gallery-button {
		position: absolute;
		right: 12px;
		bottom: 12px;
		z-index: 3;
		margin: 0;
	}
}

/* --------------------------- Onglets de la fiche : rangées trop serrées */

/*
 * Le gabarit ne posait d'écart qu'entre les colonnes : sur téléphone, où les
 * onglets passent sur trois rangées, elles se touchaient.
 */
body.hl-single-listing .listing-nav-container .listing-nav,
body.hl-single-listing .listing-nav-container ul {
	gap: 10px 12px;
}

/* Le libellé du bouton de réservation portait l'encre du thème sur le rouge
   de marque, 1,83 pour 1. */
body.hl-single-listing .book-now-text,
body.hl-single-listing .lbp-book-now-btn span,
body.hl-single-listing .lbp-bpw-btn span,
body.hl-single-listing a.button.book-now,
body.hl-single-listing .booking-sticky-footer .button {
	color: var( --hl-ivory ) !important;
}

/* Barre de réservation collée en bas : le bouton porte le rouge de marque,
   son libellé doit donc être ivoire. */
body.hl-single-listing .bsf-right .button,
body.hl-single-listing .booking-sticky-footer .bsf-right .button,
body.hl-single-listing #booking-sticky-footer .button {
	color: var( --hl-ivory ) !important;
}

/* Derniers écarts à l'échelle sur la fiche. */
body.hl-single-listing .hosted-by-link,
body.hl-single-listing .lost_password,
body.hl-single-listing .hl-fear-level,
body.hl-single-listing .main-detail span,
body.hl-single-listing .hl-detail-ready span,
body.hl-single-listing .leaflet-control-zoom-in,
body.hl-single-listing .leaflet-control-zoom-out {
	font-size: var( --hl-fs-small ) !important;
}

/* « Ce que propose ce lieu » : mentions, pas de liens (single-listing.js). */
.hl-feature-texte {
	color: inherit;
	cursor: default;
}

/* =========================================================================
   TITRE D'UNE ANNONCE : TAILLE TENUE, BOUTONS FIXES
   La règle générale des titres h1 donnait au nom du lieu la taille du
   bandeau d'accueil (jusqu'à 92 px). Un nom long poussait alors Partager et
   Enregistrer et renvoyait le crayon d'édition sur une ligne à part. Le nom
   prend une taille de titre de page, réduite encore pour les noms longs
   (classes posées par enhanceTitle), et passe à la ligne de façon
   équilibrée. Les boutons restent calés en haut à droite, alignés sur la
   première ligne, quelle que soit la longueur du nom.
   ========================================================================= */
html body.hl-single-listing #titlebar .hl-title-main-row {
	--hl-titre-annonce: clamp( 34px, 3.2vw, 48px );
	align-items: flex-start;
}

html body.hl-single-listing #titlebar .hl-title-main-row.is-long {
	--hl-titre-annonce: clamp( 30px, 2.7vw, 40px );
}

html body.hl-single-listing #titlebar .hl-title-main-row.is-very-long {
	--hl-titre-annonce: clamp( 28px, 2.3vw, 34px );
}

html body.hl-single-listing #titlebar .hl-title-main-row h1 {
	display: block;
	flex: 1 1 0;
	min-width: 0;
	font-size: var( --hl-titre-annonce ) !important;
	line-height: 1.1 !important;
	text-wrap: balance;
	overflow-wrap: break-word;
	hyphens: manual;
}

/* Boutons centrés sur la première ligne du titre. */
html body.hl-single-listing #titlebar .hl-title-main-row .hl-title-actions {
	align-self: flex-start;
	margin-top: max( 0px, calc( ( var( --hl-titre-annonce ) * 1.1 - 44px ) / 2 ) );
}

/* Crayon d'édition (administration) : petit, à la suite du nom. */
html body.hl-single-listing #titlebar h1 .listing-title-edit {
	display: inline-flex;
	align-items: center;
	margin-left: 0.3em;
	font-size: 18px;
	line-height: 1;
	vertical-align: middle;
}

@media ( max-width: 767px ) {
	html body.hl-single-listing #titlebar .hl-title-main-row,
	html body.hl-single-listing #titlebar .hl-title-main-row.is-long {
		--hl-titre-annonce: 30px;
	}

	html body.hl-single-listing #titlebar .hl-title-main-row.is-very-long {
		--hl-titre-annonce: 26px;
	}

	html body.hl-single-listing #titlebar .hl-title-main-row h1 {
		flex: 1 1 100%;
	}

	html body.hl-single-listing #titlebar .hl-title-main-row .hl-title-actions {
		margin-top: 0;
	}
}

/* Sélecteur de voyageurs pas encore rempli : invitation en gris doux,
   comme les champs vides de la recherche. */
body.hl-single-listing .hl-booking-guests__value.is-empty {
	color: var( --hl-muted ) !important;
	font-weight: 400 !important;
}

/* =========================================================================
   OPTIONS (services réservables de Listeo)
   Même présentation que le sélecteur de voyageurs : une ligne « Options »
   sous les voyageurs, une fenêtre centrée avec une case par prestation, sa
   description et l'unité de son prix.
   ========================================================================= */
body.hl-single-listing #booking-widget-anchor .panel-dropdown.hl-has-options > a {
	border-radius: 0 !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready {
	position: relative;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready > a .services-counter {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
	clip: rect( 0 0 0 0 ) !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .panel-dropdown-content {
	position: fixed !important;
	top: 50% !important;
	right: auto !important;
	bottom: auto !important;
	left: 50% !important;
	z-index: 10000;
	display: none !important;
	width: min( 440px, calc( 100vw - 32px ) ) !important;
	max-height: calc( 100dvh - 32px );
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 22px 24px 18px !important;
	border: 1px solid var( --hl-line );
	border-radius: 20px;
	background: var( --hl-ivory-light );
	box-shadow: 0 12px 34px rgba( 0, 0, 0, 0.16 );
	transform: translate( -50%, -50% ) !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready.hl-services-open .panel-dropdown-content {
	display: block !important;
	opacity: 1 !important;
	visibility: visible !important;
	pointer-events: auto !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .panel-dropdown-scrollable {
	max-height: none !important;
	overflow: visible !important;
	padding: 0 !important;
}

body.hl-single-listing .hl-services__title {
	margin: 0 0 4px;
	color: var( --hl-ink );
	font-size: var( --hl-fs-body );
	font-weight: 600;
	line-height: 1.3;
}

body.hl-single-listing .hl-services__hint {
	margin: 0 0 8px;
	color: var( --hl-muted );
	font-size: var( --hl-fs-small );
	line-height: 1.45;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .bookable-services {
	display: block !important;
	margin: 0 !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service {
	position: relative;
	float: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	border-top: 1px solid #eeebe5;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service input[type="checkbox"] {
	position: absolute !important;
	opacity: 0 !important;
	pointer-events: none;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service label {
	position: relative;
	display: flex !important;
	flex-direction: column;
	gap: 3px;
	width: 100% !important;
	height: auto !important;
	margin: 0 !important;
	padding: 14px 44px 14px 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	color: var( --hl-ink ) !important;
	text-align: left !important;
	cursor: pointer;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service label h5 {
	margin: 0 !important;
	color: var( --hl-ink ) !important;
	font-family: inherit !important;
	font-size: var( --hl-fs-body ) !important;
	font-weight: 600 !important;
	line-height: 1.3 !important;
}

body.hl-single-listing #booking-widget-anchor .hl-service__desc {
	color: var( --hl-muted );
	font-size: var( --hl-fs-small );
	font-weight: 400;
	line-height: 1.45;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service-price {
	position: static !important;
	display: block !important;
	margin: 2px 0 0 !important;
	padding: 0 !important;
	background: transparent !important;
	color: var( --hl-ink ) !important;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 600 !important;
	line-height: 1.3 !important;
}

/* La case : carré à droite, coché en encre. */
body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service label::before {
	content: "" !important;
	position: absolute !important;
	top: 50% !important;
	right: 0 !important;
	left: auto !important;
	width: 24px !important;
	height: 24px !important;
	margin: 0 !important;
	border: 1.5px solid #bcb2a1 !important;
	border-radius: 7px !important;
	background: transparent !important;
	transform: translateY( -50% ) !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service label::after {
	content: none !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service input:checked + label::before {
	border-color: var( --hl-ink ) !important;
	background: var( --hl-ink ) url( "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 16.2 5.3 12l-1.4 1.4 5.6 5.6L20.1 8.4 18.7 7z' fill='%23f7f3ec'/%3E%3C/svg%3E" ) center / 18px no-repeat !important;
}

body.hl-single-listing #booking-widget-anchor .hl-services-ready .single-service input:focus-visible + label::before {
	outline: 2px solid var( --hl-ink );
	outline-offset: 2px;
}

body.hl-single-listing .hl-services__foot {
	display: flex;
	justify-content: flex-end;
	padding-top: 14px;
	border-top: 1px solid #eeebe5;
}

body.hl-single-listing .hl-services__close {
	min-height: 44px;
	padding: 10px 22px;
	border: 0;
	border-radius: 999px;
	background: var( --hl-ink );
	color: var( --hl-ivory );
	font-size: var( --hl-fs-small );
	font-weight: 600;
	cursor: pointer;
}

/* Fenêtre voyageurs ou options ouverte : la colonne collante passe devant
   tout le reste (elle crée son propre empilement, le bouton de la galerie
   passait au-dessus), le widget perd sa transformation pour que la fenêtre
   se centre sur l'écran, et le fond s'assombrit comme sur Airbnb. Un clic
   sur le fond ferme la fenêtre. */
body.hl-single-listing.hl-popup-ouverte .hl-sticky-stack,
body.hl-single-listing.hl-popup-ouverte [class*="col-"]:has( > .hl-sticky-stack ) {
	z-index: 10001 !important;
}

/* Le widget cesse d'être un empilement à lui seul : la fenêtre (z 10000)
   passe au-dessus du voile (z 9999), la carte de réservation dessous. */
body.hl-single-listing.hl-popup-ouverte #booking-widget-anchor,
body.hl-single-listing.hl-popup-ouverte .hl-sticky-stack .listing-widget {
	z-index: auto !important;
	transform: none !important;
}

body.hl-single-listing.hl-popup-ouverte .hl-sticky-stack::after {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 9999;
	background: rgba( 21, 14, 16, 0.38 );
}

/* Galerie défilante : la hauteur prévue (240 px) était écrasée par celle de
   la grille Listeo (700 px), d'où des photos presque carrées et immenses
   sur tablette. Les vignettes prennent un format paysage tenu par leur
   largeur : 4:3 sur téléphone, 3:2 sur tablette avec une photo et demie
   visible pour inviter à faire défiler. */
@media ( max-width: 991px ) {
	/* La galerie est un conteneur flex : sans largeur explicite, la bande
	   prenait celle de son contenu, nul une fois les photos en absolu. */
	body.hl-single-listing #single-listing-grid-gallery .hl-gallery-strip {
		flex: 0 0 auto;
		align-self: flex-start;
		width: calc( 100% + 30px );
		min-width: 0;
		height: auto !important;
		align-items: flex-start;
	}

	body.hl-single-listing #single-listing-grid-gallery .hl-gallery-strip .slg-gallery-img {
		position: relative;
		flex: 0 0 88%;
		height: auto !important;
		max-height: 52vh;
		aspect-ratio: 4 / 3;
	}

	/* La photo remplit la vignette sans dicter sa hauteur. */
	body.hl-single-listing #single-listing-grid-gallery .hl-gallery-strip .slg-gallery-img img {
		position: absolute;
		inset: 0;
	}
}

@media ( min-width: 600px ) and ( max-width: 991px ) {
	body.hl-single-listing #single-listing-grid-gallery .hl-gallery-strip .slg-gallery-img {
		flex-basis: 64%;
		aspect-ratio: 3 / 2;
	}
}

/* La grille Listeo impose 400 px de hauteur minimale : en mode bande, la
   galerie prend la hauteur des photos et le bouton reste posé dessus. */
@media ( max-width: 991px ) {
	body.hl-single-listing #single-listing-grid-gallery.hl-gallery-strip-on {
		height: auto !important;
		min-height: 0 !important;
		overflow: visible;
		background: transparent;
	}
}

/* « À quoi servent ces frais ? » sous la ligne des frais de service. */
body.hl-single-listing .hl-deposit__info {
	margin: -2px 0 6px;
	font-size: var( --hl-fs-small );
	line-height: 1.45;
}

body.hl-single-listing .hl-deposit__info summary {
	display: inline-block;
	color: var( --hl-muted );
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
	list-style: none;
}

body.hl-single-listing .hl-deposit__info summary::-webkit-details-marker {
	display: none;
}

body.hl-single-listing .hl-deposit__info summary:focus-visible {
	outline: 2px solid var( --hl-ink );
	outline-offset: 2px;
}

body.hl-single-listing .hl-deposit__info p {
	margin: 6px 0 0;
	padding: 10px 12px;
	border-radius: 10px;
	background: #eeebe5;
	color: var( --hl-ink );
}



/* =========================================================================
   ONGLETS DE LA FICHE (Aperçu, Galerie, Emplacement, Avis)
   Pictogrammes pleins couleur encre, comme les détails de la fiche ; le
   rouge marque l'onglet actif. Sur téléphone : une seule ligne qui défile,
   pastilles crème, la pastille active en encre. Sur ordinateur, la barre
   collante prend le crème de la page au lieu du blanc.
   ========================================================================= */
body.hl-single-listing .listing-nav .hl-nav-icon {
	color: #373132;
	font-family: "Font Awesome 6 Free";
	font-weight: 900;
}

body.hl-single-listing .listing-nav li a.active .hl-nav-icon,
body.hl-single-listing .listing-nav li a:hover .hl-nav-icon {
	color: var( --hl-accent );
}

body.hl-single-listing .listing-nav-container.cloned,
body.hl-single-listing .listing-nav-container.cloned .listing-nav {
	background: #f7f6f3 !important;
}

body.hl-single-listing .listing-nav-container.cloned {
	border-bottom: 1px solid #eeebe5 !important;
	box-shadow: none !important;
}

@media ( max-width: 767px ) {
	body.hl-single-listing .listing-nav-container .listing-nav {
		flex-wrap: nowrap !important;
		gap: 8px !important;
		overflow-x: auto !important;
		padding: 2px 0 6px !important;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	body.hl-single-listing .listing-nav-container .listing-nav::-webkit-scrollbar {
		display: none;
	}

	body.hl-single-listing .listing-nav-container .listing-nav li {
		flex: 0 0 auto;
	}

	body.hl-single-listing .listing-nav-container .listing-nav li a {
		gap: 8px;
		padding: 10px 16px !important;
		border: 0 !important;
		border-radius: 999px !important;
		background: #eeebe5 !important;
		color: #373132 !important;
		font-size: 14px !important;
		font-weight: 600 !important;
		white-space: nowrap;
	}

	body.hl-single-listing .listing-nav-container .listing-nav li a.active {
		background: #373132 !important;
		color: #f7f6f3 !important;
	}

	body.hl-single-listing .listing-nav-container .listing-nav li a.active .hl-nav-icon {
		color: #f7f6f3;
	}

	/* Fondu de bord : le crème de la page, plus le blanc. */
	body.hl-single-listing .listing-nav-container::after {
		background-image: linear-gradient( 90deg, rgba( 247, 246, 243, 0 ) 0%, #f7f6f3 100% ) !important;
	}
}

/* Fenêtres voyageurs et options : pas d'animation de position (Listeo
   anime « all » sur 0,3 s, la fenêtre glissait du bouton vers le centre). */
body.hl-single-listing #booking-widget-anchor .hl-guests-ready .panel-dropdown-content,
body.hl-single-listing #booking-widget-anchor .hl-services-ready .panel-dropdown-content {
	transition: none !important;
}

body.hl-single-listing #booking-widget-anchor .hl-guests-ready.hl-guests-open .panel-dropdown-content,
body.hl-single-listing #booking-widget-anchor .hl-services-ready.hl-services-open .panel-dropdown-content {
	animation: hl-fenetre 0.16s ease-out;
}

@keyframes hl-fenetre {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

/* Expériences : carte de réservation non collante et séances compactes. */
body.hl-single-listing.hl-a-seances .hl-sticky-stack {
	position: static;
}

.hl-sessions__terms {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0 0 12px;
}

.hl-sessions__chip {
	padding: 4px 10px;
	border: 1px solid var( --hl-line );
	border-radius: 999px;
	background: var( --hl-ivory-light );
	color: var( --hl-ink );
	font-size: 13px;
	font-weight: 500;
	line-height: 1.3;
}

.hl-sessions__rows {
	max-height: 212px;
	gap: 6px;
}

.hl-session {
	padding: 8px 10px;
	border-radius: 12px;
}

.hl-session__slot {
	min-width: 0;
	padding: 6px 10px;
}

/* Options proposées sur la fiche : pas de bande blanche une ligne sur deux. */
body.hl-single-listing #listing-pricing-list li,
body.hl-single-listing #listing-pricing-list .pricing-list-container li {
	background: transparent !important;
	border-bottom: 1px solid var( --hl-line );
}

body.hl-single-listing #listing-pricing-list li:last-child {
	border-bottom: 0;
}

/* Quantité d'une option : visible seulement une fois l'option cochée, sous
   son prix, sans encadré gris. */
body.hl-single-listing .single-service.with-qty-btns .bookable-service-checkbox:not( :checked ) ~ .qtyButtons {
	display: none !important;
}

body.hl-single-listing .single-service.with-qty-btns .qtyButtons {
	display: flex;
	align-items: center;
	gap: 8px;
	width: auto;
	margin: 10px 0 4px;
	padding: 0 !important;
	background: transparent !important;
}

body.hl-single-listing .single-service.with-qty-btns .qtyButtons::before {
	content: "Quantité";
	margin-right: 4px;
	color: var( --hl-muted );
	font-size: 14px;
}

body.hl-single-listing .single-service.with-qty-btns .qtyDec,
body.hl-single-listing .single-service.with-qty-btns .qtyInc {
	width: 32px;
	height: 32px;
	border: 1px solid var( --hl-line );
	border-radius: 999px;
	background: var( --hl-ivory-light );
}

body.hl-single-listing .single-service.with-qty-btns .qtyButtons input {
	width: 36px;
	height: 32px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var( --hl-ink );
	font-weight: 600;
	text-align: center;
}

/* Séances : la date en tête, les horaires en ligne dessous (moins haut). */
.hl-session {
	flex-direction: column;
	align-items: stretch;
	gap: 6px;
}

.hl-session__date {
	flex: none !important;
}

.hl-session__times {
	flex: none !important;
	justify-content: flex-start;
}

.hl-session__slot {
	flex-direction: row;
	align-items: baseline;
	gap: 6px;
}

/* Boutons de séance : heure et places centrées sur une même ligne. */
.hl-session__slot {
	display: inline-flex !important;
	flex-direction: row !important;
	align-items: center !important;
	gap: 8px;
	padding: 8px 14px !important;
	line-height: 1 !important;
}

.hl-session__hour,
.hl-session__seats {
	display: block;
	line-height: 1;
}

.hl-session__seats {
	font-size: 12px;
}

/* Option vendue à l'unité : son propre compteur, comme les voyageurs. */
body.hl-single-listing .single-service.hl-service-qty {
	position: relative;
	padding-right: 130px;
}

body.hl-single-listing .single-service.hl-service-qty label::before,
body.hl-single-listing .single-service.hl-service-qty .qtyButtons {
	display: none !important;
}

body.hl-single-listing .single-service.hl-service-qty .hl-service-counter {
	position: absolute;
	top: 50%;
	right: 0;
	transform: translateY( -50% );
}

/* ------------------------------------------------------------- Avis */

/* Note d'ensemble : un grand chiffre et ses repères, sans boîte blanche. */
body.hl-single-listing .hl-reviews-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 20px 28px;
	margin: 0 0 28px;
	padding: 0 0 28px;
	border-bottom: 1px solid var( --hl-line );
}

body.hl-single-listing .hl-reviews-score {
	display: flex;
	align-items: baseline;
	gap: 6px;
}

body.hl-single-listing .hl-reviews-score__value {
	color: var( --hl-ink );
	font-family: "Cormorant Garamond", Georgia, serif;
	font-size: 64px;
	font-weight: 500;
	line-height: 0.9;
	letter-spacing: -0.02em;
}

body.hl-single-listing .hl-reviews-score__max {
	color: var( --hl-muted );
	font-size: var( --hl-fs-small );
}

body.hl-single-listing .hl-reviews-meta {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

body.hl-single-listing .hl-reviews-count {
	color: var( --hl-muted );
	font-size: var( --hl-fs-small );
}

body.hl-single-listing .hl-reviews-head .rating-bars {
	flex: 1 1 280px;
	margin: 0;
}

/* Étoiles à l'encre, cases vides beige (plus de jaune ni de gris). */
body.hl-single-listing #listing-reviews .star-rating .star::before,
body.hl-single-listing #listing-reviews .star-rating .star.half::after {
	color: var( --hl-ink ) !important;
}

body.hl-single-listing #listing-reviews .star-rating .star.half::before,
body.hl-single-listing #listing-reviews .star-rating .star.empty::before {
	color: #ddd7cc !important;
}

/* Avis en cartes, deux colonnes sur grand écran. */
body.hl-single-listing #listing-reviews .comment-list {
	display: grid;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	gap: 16px;
	margin: 0;
	padding: 0;
}

@media ( max-width: 767px ) {
	body.hl-single-listing #listing-reviews .comment-list {
		grid-template-columns: 1fr;
	}
}

body.hl-single-listing #listing-reviews .comment-list > li {
	display: grid;
	grid-template-columns: 44px minmax( 0, 1fr );
	gap: 0 14px;
	margin: 0 !important;
	padding: 20px !important;
	border: 1px solid var( --hl-line ) !important;
	border-radius: 16px;
	background: var( --hl-ivory-light );
}

body.hl-single-listing #listing-reviews .comment-list > li::before,
body.hl-single-listing #listing-reviews .comment-list > li::after,
body.hl-single-listing #listing-reviews .arrow-comment {
	display: none !important;
}

body.hl-single-listing #listing-reviews .comment .avatar {
	position: static !important;
	width: 44px;
	height: 44px;
	margin: 0 !important;
}

body.hl-single-listing #listing-reviews .comment .avatar img,
body.hl-single-listing .hl-review-initial {
	width: 44px !important;
	height: 44px !important;
	border-radius: 50%;
	object-fit: cover;
}

body.hl-single-listing .hl-review-initial {
	display: flex;
	align-items: center;
	justify-content: center;
	background: #ddd7cc;
	color: var( --hl-red );
	font-family: "Cormorant Garamond", Georgia, serif;
	font-size: 22px;
	font-weight: 600;
}

body.hl-single-listing #listing-reviews .comment-content {
	min-width: 0;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
}

body.hl-single-listing #listing-reviews .comment-by {
	position: relative;
	margin: 0 0 10px !important;
	padding: 0 !important;
}

body.hl-single-listing #listing-reviews .comment-by h5 {
	margin: 0 0 2px !important;
	color: var( --hl-ink );
	font-size: var( --hl-fs-body );
	font-weight: 600;
	line-height: 1.3;
}

body.hl-single-listing #listing-reviews .comment-by .date {
	display: block;
	color: var( --hl-muted ) !important;
	font-size: var( --hl-fs-meta );
}

body.hl-single-listing #listing-reviews .comment-by .star-rating {
	position: static !important;
	float: none !important;
	margin: 8px 0 0 !important;
	padding: 0 !important;
	background: transparent !important;
}

body.hl-single-listing #listing-reviews .comment-content > p {
	margin: 0 0 12px;
	color: var( --hl-ink );
	font-size: var( --hl-fs-small );
	line-height: 1.6;
}

/* « Avis utile » : un petit lien, pas un gros bouton. */
body.hl-single-listing #listing-reviews .rate-review {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	color: var( --hl-muted ) !important;
	font-size: var( --hl-fs-meta );
	font-weight: 500;
}

body.hl-single-listing #listing-reviews .rate-review:hover {
	color: var( --hl-red ) !important;
}

/* Sans avis : un encart qui invite. */
body.hl-single-listing .hl-reviews-empty {
	padding: 28px 28px 24px;
	border: 1px dashed #ddd7cc;
	border-radius: 16px;
	background: var( --hl-ivory-light );
}

body.hl-single-listing .hl-reviews-empty__title {
	margin: 0 0 6px !important;
	color: var( --hl-ink );
	font-family: "Cormorant Garamond", Georgia, serif;
	font-size: 26px;
	font-weight: 500;
	line-height: 1.2;
}

body.hl-single-listing .hl-reviews-empty__text {
	max-width: 52ch;
	margin: 0 !important;
	color: var( --hl-ink );
	font-size: var( --hl-fs-body );
	line-height: 1.55;
}

body.hl-single-listing .hl-reviews-empty .hl-review-notice {
	margin: 16px 0 0 !important;
	padding: 0 !important;
	background: transparent !important;
}

/* Formulaire d'avis : même famille que la fiche. */
body.hl-single-listing #add-review.add-review-box {
	margin-top: 32px;
	padding: 28px !important;
	border: 1px solid var( --hl-line ) !important;
	border-radius: 16px;
	background: var( --hl-ivory-light ) !important;
	box-shadow: none !important;
}

body.hl-single-listing #add-review .logged-in-as,
body.hl-single-listing #add-review .comment-reply-title {
	display: none !important;
}

body.hl-single-listing #add-review .add-sub-rating {
	margin-bottom: 8px;
}

body.hl-single-listing #add-review .sub-rating-title {
	color: var( --hl-ink );
	font-weight: 600;
}

body.hl-single-listing #add-review .leave-rating label {
	color: #ddd7cc !important;
}

body.hl-single-listing #add-review .leave-rating input:checked ~ label,
body.hl-single-listing #add-review .leave-rating label:hover,
body.hl-single-listing #add-review .leave-rating label:hover ~ label {
	color: var( --hl-ink ) !important;
}

body.hl-single-listing #add-review .uploadButton label,
body.hl-single-listing #add-review .uploadButton-button {
	border: 1px solid var( --hl-line ) !important;
	border-radius: 999px !important;
	background: #fff !important;
	color: var( --hl-ink ) !important;
}

body.hl-single-listing #add-review textarea {
	border-radius: 12px;
	background: #fff;
}

/* Étoiles d'un avis sur leur propre ligne, sous la date. */
body.hl-single-listing #listing-reviews .comment-by .star-rating {
	display: flex !important;
	gap: 1px;
	width: max-content;
}

body.hl-single-listing #listing-reviews .comment-content > p {
	clear: both;
}

body.hl-single-listing #listing-reviews .hl-reviews-empty .hl-reviews-empty__title {
	font-family: "Cormorant Garamond", Georgia, serif !important;
	font-size: 26px !important;
	font-weight: 500 !important;
	line-height: 1.2 !important;
}

/* Pas de trait sous la note d'ensemble : l'espace suffit. */
body.hl-single-listing .hl-reviews-head {
	padding-bottom: 0;
	border-bottom: 0;
}

/* ------------------------------------------- Fiche réordonnée (3.49) */

/* Réputation sous le titre, à la place d'une ligne dans la description. */
body.hl-single-listing .hl-title-meta .hl-title-meta__fear {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	color: var( --hl-ink );
	font-size: inherit;
	font-weight: 600;
}

body.hl-single-listing .hl-title-meta__fear .hl-fear-level img {
	width: 18px !important;
	height: 18px !important;
}

body.hl-single-listing .hl-title-meta__fear .hl-fear-row__label {
	font-size: inherit !important;
	font-weight: 600;
}

/* À propos : texte replié au-delà de huit lignes. */
body.hl-single-listing .hl-listing-intro__text.is-clamped {
	display: -webkit-box;
	-webkit-line-clamp: 8;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

body.hl-single-listing .hl-listing-intro__text p:last-child {
	margin-bottom: 0;
}

body.hl-single-listing .hl-read-more {
	margin: 12px 0 0;
	padding: 0;
	border: 0;
	background: none;
	color: var( --hl-ink );
	font-size: var( --hl-fs-small );
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}

body.hl-single-listing .hl-read-more:hover {
	color: var( --hl-red );
}

/* L'essentiel : icônes et valeurs sur une ligne qui passe à la ligne. */
body.hl-single-listing .hl-essentials-block {
	margin: 0 0 36px;
	padding: 0 0 36px;
	border-bottom: 1px solid var( --hl-line );
}

body.hl-single-listing .hl-essentials {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 28px;
}

body.hl-single-listing .hl-essential {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: var( --hl-ink );
	font-size: var( --hl-fs-body );
	font-weight: 500;
}

body.hl-single-listing .hl-essential i {
	width: 18px;
	color: var( --hl-ink );
	font-size: 16px;
	text-align: center;
}

body.hl-single-listing .hl-essentials-extra {
	margin: 16px 0 0 !important;
	color: var( --hl-ink );
	font-size: var( --hl-fs-small );
	line-height: 1.55;
}

/* Ce qu'on y a rapporté : la promesse du site, mise en avant. */
body.hl-single-listing .hl-phenomena-block {
	margin: 0 0 36px;
	padding: 0 0 36px;
	border-bottom: 1px solid var( --hl-line );
}

body.hl-single-listing .hl-phenomena {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}

body.hl-single-listing .hl-phenomena li {
	display: inline-flex !important;
	align-items: center;
	gap: 8px;
	width: auto !important;
	margin: 0 !important;
	padding: 9px 16px !important;
	border: 1px solid #ead7d2;
	border-radius: 999px;
	background: #f6e8e6;
	color: var( --hl-ink );
	font-size: var( --hl-fs-small );
	font-weight: 500;
}

body.hl-single-listing .hl-phenomena li i {
	margin: 0 !important;
	color: var( --hl-red ) !important;
	font-size: 14px;
}

body.hl-single-listing .hl-phenomena li::before {
	display: none !important;
}

/* Équipements : huit, puis « Voir les N équipements ». */
body.hl-single-listing .listing-features.is-collapsed li:nth-child( n + 9 ) {
	display: none !important;
}

body.hl-single-listing .hl-features-more {
	display: inline-block;
	margin: 8px 0 0;
}

/* Conditions de prix sous le tarif de la carte de réservation. */
body.hl-single-listing .hl-booking-card__terms {
	margin: 6px 0 0 !important;
	color: var( --hl-muted );
	font-size: var( --hl-fs-meta );
	line-height: 1.45;
}

/* Carte : un cercle approximatif n'a pas besoin de 330 px. */
body.hl-single-listing #listing-location .hl-area-map {
	height: 280px !important;
}

/* Vides inutiles avant « Votre hôte ». */
body.hl-single-listing .listeo-single-listing-content > .margin-top-50:empty {
	display: none;
}

body.hl-single-listing .hl-listing-intro__text p {
	margin: 0 0 14px !important;
}

/* Dernier bloc de l'aperçu : pas de filet ni de marge en trop. */
body.hl-single-listing #listing-overview > .hl-essentials-block:last-child,
body.hl-single-listing #listing-overview > .hl-phenomena-block:last-child {
	margin-bottom: 0;
	padding-bottom: 0;
	border-bottom: 0;
}

body.hl-single-listing .hl-booking-card__terms {
	margin: 6px 0 16px !important;
}

/* Bulles d'information de la carte de réservation. */
body.hl-single-listing .hl-info {
	position: relative;
	display: inline-flex;
	vertical-align: middle;
	margin-left: 6px;
}

body.hl-single-listing .hl-info__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var( --hl-muted );
	font-size: 15px;
	line-height: 1;
	cursor: pointer;
}

body.hl-single-listing .hl-info__btn:hover,
body.hl-single-listing .hl-info__btn[aria-expanded="true"] {
	color: var( --hl-red );
}

body.hl-single-listing .hl-info__bubble {
	position: absolute;
	top: calc( 100% + 8px );
	right: -12px;
	z-index: 30;
	width: 260px;
	padding: 12px 14px;
	border: 1px solid var( --hl-line );
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 12px 30px rgba( 21, 14, 16, 0.14 );
	color: var( --hl-ink );
	font-size: 13px;
	font-weight: 400;
	line-height: 1.5;
	text-align: left;
	white-space: normal;
}

body.hl-single-listing .hl-info__bubble[hidden] {
	display: none;
}

body.hl-single-listing .hl-booking-card__price {
	position: relative;
}

body.hl-single-listing .hl-info__bubble {
	right: auto;
	left: -8px;
}

body.hl-single-listing .hl-booking-card__price .hl-info__bubble {
	left: -140px;
}

/* La bulle passe devant les champs de dates et de voyageurs. */
body.hl-single-listing .hl-booking-card__header {
	position: relative;
	z-index: 20;
}

body.hl-single-listing .hl-info__bubble {
	z-index: 1000;
}

body.hl-single-listing .hl-deposit {
	position: relative;
	z-index: 20;
}

body.hl-single-listing .hl-deposit .hl-info__bubble {
	left: -130px;
}

/* ------------------------------------------------ Carte hôte (3.51) */
body.hl-single-listing .hl-host-section .hl-host-card {
	padding: 28px !important;
}

body.hl-single-listing .hl-host-card .hl-host-card__inner {
	display: block !important;
}

body.hl-single-listing .hl-host-card__id {
	display: flex;
	align-items: center;
	gap: 18px;
}

body.hl-single-listing .hl-host-card__id .hosted-by-avatar {
	position: static !important;
	flex: 0 0 72px;
	width: 72px !important;
	height: 72px !important;
	margin: 0 !important;
}

body.hl-single-listing .hl-host-card__id .hosted-by-avatar img,
body.hl-single-listing .hl-host-card__id .hl-review-initial {
	width: 72px !important;
	height: 72px !important;
	border-radius: 50%;
	object-fit: cover;
}

body.hl-single-listing .hl-host-card__id .hl-review-initial {
	font-size: 32px;
}

body.hl-single-listing .hl-host-card__name {
	margin: 0 0 4px !important;
	font-family: "Cormorant Garamond", Georgia, serif;
	font-size: 26px;
	font-weight: 500;
	line-height: 1.15;
}

body.hl-single-listing .hl-host-card__name a {
	color: var( --hl-ink ) !important;
}

body.hl-single-listing .hl-host-card__facts {
	display: flex;
	flex-wrap: wrap;
	gap: 2px 16px;
	margin: 0 !important;
	color: var( --hl-muted );
	font-size: var( --hl-fs-small );
}

body.hl-single-listing .hl-host-card__bio {
	max-width: 62ch;
	margin: 18px 0 0 !important;
	color: var( --hl-ink );
	font-size: var( --hl-fs-body );
	line-height: 1.6;
}

body.hl-single-listing .hl-host-card__bio.is-clamped {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

body.hl-single-listing .hl-host-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 22px;
}

body.hl-single-listing .hl-host-card__actions a.button,
body.hl-single-listing .hl-host-card__actions .hl-host-card__profile-link {
	display: inline-flex !important;
	align-items: center;
	gap: 10px;
	width: auto !important;
	margin: 0 !important;
	padding: 12px 22px !important;
	border-radius: 999px !important;
	font-size: var( --hl-fs-small ) !important;
	font-weight: 600 !important;
	line-height: 1 !important;
}

body.hl-single-listing .hl-host-card__actions .hl-host-card__profile-link {
	border: 1px solid var( --hl-line );
	background: transparent;
	color: var( --hl-ink );
}

body.hl-single-listing .hl-host-card__actions .hl-host-card__profile-link::after {
	content: none !important;
}

body.hl-single-listing .hl-host-card__actions .hl-host-card__profile-link:hover {
	border-color: var( --hl-red );
	color: var( --hl-red );
}

/* Réserver en toute sérénité : trois garanties, une ligne chacune. */
body.hl-single-listing .hl-guarantees {
	padding-top: 40px;
}

body.hl-single-listing .hl-guarantees__list {
	display: grid;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media ( max-width: 767px ) {
	body.hl-single-listing .hl-guarantees__list {
		grid-template-columns: 1fr;
	}
}

body.hl-single-listing .hl-guarantee {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	padding: 18px;
	border: 1px solid var( --hl-line );
	border-radius: 16px;
	background: var( --hl-ivory-light );
}

body.hl-single-listing .hl-guarantee__icon {
	display: inline-flex;
	flex: 0 0 36px;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 10px;
	background: #f6e8e6;
	color: var( --hl-red );
}

body.hl-single-listing .hl-guarantee__copy strong {
	display: block;
	margin-bottom: 2px;
	color: var( --hl-ink );
	font-size: var( --hl-fs-small );
	font-weight: 600;
}

body.hl-single-listing .hl-guarantee__copy span {
	color: var( --hl-muted );
	font-size: var( --hl-fs-meta );
	line-height: 1.45;
}

body.hl-single-listing .hl-host-card .hl-host-card__id .hosted-by-avatar,
body.hl-single-listing .hl-host-card .hl-host-card__id .hosted-by-avatar img {
	width: 72px !important;
	min-width: 72px;
	height: 72px !important;
	border-radius: 50% !important;
}

body.hl-single-listing .hl-host-card .hl-host-card__name,
body.hl-single-listing .hl-host-card .hl-host-card__name a {
	font-family: "Cormorant Garamond", Georgia, serif !important;
	font-size: 26px !important;
	font-weight: 500 !important;
	line-height: 1.15 !important;
}

body.hl-single-listing .hl-host-card__actions .hl-host-card__profile-link {
	border-color: var( --hl-ink ) !important;
}

body.hl-single-listing .hl-guarantees {
	padding-top: 8px !important;
	padding-bottom: 64px;
}

body.hl-single-listing .listeo-single-listing-content > .hl-guarantees {
	padding-bottom: 72px !important;
}

/*
 * 3.77 · Bouton de réservation collé aux champs (visiteur non connecté) :
 * les champs sont des colonnes Bootstrap flottantes, le formulaire ne les
 * contenait pas (hauteur 0). La marge du bouton s'appuyait donc sur un
 * formulaire vide et le bouton touchait les champs, quelles que soient les
 * marges posées avant. Le formulaire contient désormais ses colonnes, et
 * leur retrait de 15 px est retiré pour aligner champs, prix et bouton.
 */
body.hl-single-listing #booking-widget-anchor form {
	display: flow-root;
	margin-bottom: 0 !important;
}

body.hl-single-listing #booking-widget-anchor form > .col-lg-12 {
	float: none;
	padding-right: 0;
	padding-left: 0;
}

/*
 * 3.77 · Séances sur téléphone : la hauteur maximale de 212 px posée plus
 * haut dans ce fichier (sans media query) écrasait la règle mobile qui
 * déployait la liste, mais pas son overflow visible : la liste débordait
 * sur les participants et le bouton. Déployée en entier, elle mesurait
 * jusqu'à 1 280 px. La liste défile donc dans une boîte de 300 px, comme
 * sur ordinateur ; « Voir les dates suivantes » la fait défiler.
 */
@media ( max-width: 767px ) {
	.hl-sessions__rows {
		max-height: 300px;
		overflow-y: auto;
		overscroll-behavior: contain;
	}
}

/* Moins et plus en traits dessinés, centrés dans leur cercle (3.90). */
body.hl-single-listing .hl-round svg {
	display: block;
	width: 12px;
	height: 12px;
	flex: 0 0 12px;
}

/* Coupons retirés du parcours de réservation (3.94). */
body.hl-single-listing #booking-widget-anchor .coupon-widget-wrapper,
body.hl-single-listing #booking-widget-anchor .coupon-booking-widget-wrapper {
	display: none !important;
}

/* 3.96 : barre fixe mobile. Le prix reprend le coût total de la carte de
   réservation dès que des dates sont choisies, sinon « À partir de ». */
body.hl-single-listing .booking-sticky-footer .bsf-left h4 {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 6px;
	margin: 0;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.3;
	color: #6B6151;
}

body.hl-single-listing .booking-sticky-footer .bsf-left h4 strong {
	font-size: 17px;
	font-weight: 700;
	color: #150E10;
}

body.hl-single-listing .booking-sticky-footer .bsf-left h4.hl-bsf-total strong {
	color: #961B1B;
}

body.hl-single-listing .booking-sticky-footer .hl-bsf-detail {
	font-size: 14px;
}

/* 3.96.2 : « Réserver maintenant » sur une seule ligne dans la barre mobile. */
body.hl-single-listing .booking-sticky-footer .bsf-right .button {
	white-space: nowrap;
}

/* 3.111 : « Comment souhaitez-vous présenter ce lieu ? » est une question
   posée à l'hôte ; sur la fiche, le niveau de réputation suffit. */
.main-detail-_statut_paranormal {
	display: none !important;
}
