.sw-enova-search { display: flex; flex-wrap: wrap; gap: 1rem; align-items: end; margin: 1rem 0; }
.sw-enova-search .sw-enova-field { display: flex; flex-direction: column; }
.sw-enova-search input[type="date"] { padding: .5rem; cursor: pointer; }
.sw-enova-search .sw-enova-field, .sw-enova-search .sw-enova-field label { cursor: pointer; }
.sw-enova-submit { padding: .6rem 1.2rem; cursor: pointer; }
.sw-enova-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1.5rem; list-style: none; padding: 0; }
.sw-enova-result a { display: block; text-decoration: none; color: inherit; }
.sw-enova-result img { width: 100%; height: auto; display: block; }
.sw-enova-price { font-weight: 600; }
.sw-enova-reserve-btn { display: inline-block; padding: .8rem 1.4rem; background: #0a7; color: #fff; border-radius: 4px; text-decoration: none; }
.sw-enova-reserve-btn:hover { background: #086; }
.sw-enova-empty { font-style: italic; }

/* ----- Formulaire de recherche (archive) ----- */
.sw-enova-search { margin: 8rem 0 1.5rem; }
.sw-enova-clear { margin-left: .75rem; font-size: .9rem; color: #666; }
.sw-enova-archive-filter-info { margin: 0 0 1rem; font-size: 12pt; color: #444; }
.sw-enova-notice { padding: .75rem 1rem; border-radius: 4px; margin: 0 0 1rem; }
.sw-enova-notice-warning { background: #fff7e6; border: 1px solid #ffd380; color: #6b4500; }

/* ----- Archive villas (grille) ----- */
.sw-enova-archive { max-width: 1200px; margin: 0 auto; padding: 2rem 1rem; }
.sw-enova-archive-header { margin-bottom: 2rem; }
.sw-enova-archive-all { display: inline-block; margin-top: .35rem; font-size: .95rem; color: var(--sw-navy, #192953); }
.sw-enova-archive-title { margin: 0; }
.sw-enova-archive-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; }
.sw-enova-archive-card { border: 1px solid #e5e5e5; border-radius: 6px; overflow: hidden; background: #fff; transition: box-shadow .15s ease; }
.sw-enova-archive-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.08); }
.sw-enova-archive-card-link { display: block; color: inherit; text-decoration: none; }
.sw-enova-archive-card-photo { aspect-ratio: 4 / 3; overflow: hidden; background: #f5f5f5; }
.sw-enova-archive-card-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sw-enova-archive-card-body { padding: 1rem; }
.sw-enova-archive-card-title { margin: 0 0 .5rem; font-size: 1.1rem; }
.sw-enova-archive-card-facts { list-style: none; padding: 0; margin: 0 0 .75rem; display: flex; flex-wrap: wrap; gap: .25rem .75rem; font-size: .9rem; color: #555; }
.sw-enova-archive-card-facts li { white-space: nowrap; }
.sw-enova-archive-card-price { margin: 0; display: flex; align-items: baseline; gap: .35rem; }
.sw-enova-archive-card-price span { font-size: .85rem; color: #666; }
.sw-enova-archive-card-price strong { font-size: 1.1rem; }

/* Pagination façon Enova : première/précédente à gauche, numéros centrés
   (page active en pastille navy), suivante/dernière à droite. */
.sw-enova-pager { position: relative; display: flex; justify-content: center; align-items: center; gap: .25rem; margin: 3rem auto 1rem; min-height: 48px; font-family: Montserrat; }
.sw-enova-pager-pages { list-style: none; display: flex; align-items: center; gap: .25rem; margin: 0; padding: 0; }
.sw-enova-pager-item { margin: 0; padding: 0; }
.sw-enova-pager-edge { position: absolute; top: 50%; transform: translateY(-50%); display: flex; align-items: center; gap: .25rem; }
.sw-enova-pager-edge--start { left: 0; }
.sw-enova-pager-edge--end { right: 0; }
.sw-enova-pager-btn { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-width: 44px; height: 44px; padding: 0 12px; border: 0; border-radius: 999px; background: transparent; color: var(--sw-navy); font-family: Montserrat; font-size: 1rem; font-weight: 500; line-height: 1; text-decoration: none; cursor: pointer; transition: background .15s ease, color .15s ease; }
a.sw-enova-pager-btn:hover { background: rgba(25, 41, 83, .08); color: var(--sw-navy); }
.sw-enova-pager-page.is-active { background: rgba(25, 41, 83, .12); color: var(--sw-navy); font-weight: 600; cursor: default; }
.sw-enova-pager-edge-btn { padding: 0; min-width: 44px; }
.sw-enova-pager-btn.is-disabled { color: #c2c2c2; cursor: default; pointer-events: none; }
.sw-enova-pager-btn svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.sw-enova-pager-dots { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; height: 44px; color: #9a9a9a; }
/* Neutralise le fond gris que Woodmart applique à tous les <button>/<a> stylés en bouton. */
.sw-enova-pager .sw-enova-pager-btn { box-shadow: none !important; }
@media (max-width: 640px) {
	.sw-enova-pager { flex-wrap: nowrap; }
	.sw-enova-pager-btn { min-width: 38px; height: 38px; padding: 0 8px; font-size: 12pt; }
	.sw-enova-pager-edge-btn { min-width: 38px; }
	.sw-enova-pager-pages { gap: .1rem; }
}

/* ----- Single villa (fiche riche — charte Sunny Villas) ----- */
.sw-enova-single {
	--sw-navy: #192953;
	--sw-border: #eeeeee;
	--sw-ink: #1c1c1c;
	--sw-max: 1180px;
	--sw-hero-inset: 1.5rem; /* marge droite commune badges + bloc titre */
	margin: 0; padding: 0;
	font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	color: var(--sw-ink);
}
.sw-enova-single .sw-enova-ico { display: inline-block; vertical-align: middle; }

/* Hero pleine largeur : étiquettes + titre en bas à droite sur dégradé blanc */
.sw-enova-hero { position: relative; width: 100vw; margin-left: calc(50% - 50vw); background-size: cover; background-position: center; background-color: #2a2a2a; min-height: clamp(440px, 50vw, 720px); }
.sw-enova-hero-caption { position: absolute; inset: auto 0 0 0; display: flex; flex-direction: column; align-items: flex-end; text-align: right; padding: 0 0 2.25rem; }
.sw-enova-badges { list-style: none; margin: 0 var(--sw-hero-inset) 1rem 0; padding: 0; display: flex; flex-direction: column; align-items: stretch; }
.sw-enova-badge {
	background: #FFFFFFAB;
	color: #000;
	text-align: center;
	text-transform: uppercase;
	font-size: 12px;
	margin-bottom: 0.625rem;
	font-weight: 700;
	padding: .45rem 1rem;
	border-radius: 4px;
	backdrop-filter: blur(2px);
}
.sw-enova-hero-titlebox { align-self: stretch; box-sizing: border-box; margin-right: var(--sw-hero-inset); padding: 1.4rem 2rem 1.4rem 0; border-radius: 5px; background: linear-gradient(to left, rgba(255,255,255,.95) 0%, rgba(255,255,255,.9) 34%, rgba(255,255,255,0) 78%); }
.sw-enova-hero-title { margin: 0; color: #111; font-family: Montserrat; font-weight: 700; text-transform: uppercase; letter-spacing: .01em; font-size: clamp(1.8rem, 4.2vw, 3rem); line-height: 1.08; }
.sw-enova-hero-loc { display: inline-flex; align-items: center; gap: .4rem; margin: .7rem 0 0; color: var(--sw-navy); font-size: .78rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.sw-enova-hero-loc .sw-enova-ico { width: 18px; height: 18px; }

/* Bandeau de stats sous l'image */
.sw-enova-stats { border-bottom: 1px solid var(--sw-border); }
.sw-enova-stats-list { max-width: var(--sw-max); margin: 0 auto; padding: 45px 50px 30px; list-style: none; display: flex; flex-wrap: wrap; justify-content: center; gap: 1.5rem 3rem; }
.sw-enova-stat { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .55rem; min-width: 96px; width: 12.5%; }
/* Icônes stats : marine (charte), plus grandes, aucun fond derrière. */
.sw-enova-stat-icon { color: var(--sw-navy); line-height: 0; background: none; }
.sw-enova-stat-icon .sw-enova-ico { width: 26px; height: 26px; }
/* Un seul libellé (valeur fusionnée), navy en majuscules — comme la page vitrine. */
.sw-enova-stat-label { text-transform: uppercase;
	letter-spacing: .04em;
	line-height: 1.35;
	margin-top: 10px;
	font-size: 12px;
	color: var(--sw-navy);
	text-align: center;
	font-family: Montserrat;
	font-weight: 400;
	font-style: normal; }

/* Corps */
.sw-enova-body { max-width: none; margin: 0; padding: 2.5rem 0 3.5rem; }
.sw-enova-section { margin: 0 0 3.5rem; }
.sw-enova-section:last-child { margin-bottom: 0; }
/* Titres de section : casse naturelle (comme la page réf. « Availability
   calendar » / « House Photos »), Montserrat 700, marine, ~38px. */
.sw-enova-section > h2 { margin: 0; font-family: Montserrat; font-weight: 700; text-transform: none; font-size: 30px; line-height: 1.4; color: var(--sw-navy); }
/* Titre suivi d'un sous-titre : on resserre l'écart, puis trait séparateur. */
.sw-enova-villa-description{
	padding: 0 35px;
}
.sw-enova-villa-description-content { line-height: 1.85; font-size: 1.02rem; color: #333; }
.sw-enova-villa-description-content > *:first-child { margin-top: 0; }
.sw-enova-villa-description-content > *:last-child { margin-bottom: 0; }
/* Deux blocs éditoriaux côte à côte (« Ce que vous y trouverez » | « Ce que nous aimons »). */
.sw-enova-editorial-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 3.5rem; }
.sw-enova-editorial-cols .sw-enova-editorial-col{ padding: 35px 50px 0; }
.sw-enova-editorial-cols .sw-enova-editorial-col:first-child{ border-right: 1px solid #EEEEEE }
.sw-enova-editorial-title { margin: 0 0 1.25rem; font-family: Montserrat; font-weight: 700; text-transform: uppercase; font-size: 30px; line-height: 1.2; color: black; }
.sw-enova-editorial-content { line-height: 1.6; font-size: 12pt; color: black; }
.sw-enova-editorial-content > *:first-child { margin-top: 0; }
.sw-enova-editorial-content > *:last-child { margin-bottom: 0; }
@media (max-width: 768px) { .sw-enova-editorial-cols { grid-template-columns: 1fr; gap: 2.5rem; } }

/* Galerie : 5 photos par ligne. En haut (5 premières) une seule ligne ;
   sous le calendrier, rangées catégorisées extérieur / intérieur / mélange. */
.sw-enova-gallery { display: grid; grid-template-columns: repeat(5, 1fr); gap: .6rem; }
.sw-enova-gallery-item { display: block; overflow: hidden; border-radius: 8px; aspect-ratio: 4 / 3; background: #f0f0f0; }
.sw-enova-gallery-item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s ease; }
.sw-enova-gallery-item:hover img { transform: scale(1.06); }
.sw-enova-gallery-more { display: inline-block; margin-top: 1.25rem; cursor: pointer; background: transparent; color: var(--sw-navy); border: 1px solid var(--sw-navy); border-radius: 6px; padding: .7rem 1.6rem; font-weight: 700; text-transform: uppercase; font-size: .78rem; letter-spacing: .05em; text-decoration: none; transition: background .15s ease, color .15s ease; }
.sw-enova-gallery-more:hover { background: var(--sw-navy); color: #fff; }
/* Galerie du haut (5 premières) : une seule ligne. Sur écran réduit, ne passe
   PAS à la ligne mais devient un carrousel à flèches (piloté par gallery.js). */
.sw-enova-topgal { position: relative; }
.sw-enova-topgal-viewport { overflow: hidden; }
.sw-enova-topgal.is-navigable .sw-enova-topgal-viewport { cursor: grab; user-select: none; -webkit-user-select: none; }
.sw-enova-topgal-viewport.is-dragging { cursor: grabbing; }
.sw-enova-topgal-track { display: flex; flex-wrap: nowrap; transition: transform .4s ease; will-change: transform; }
/* Pendant le glissé : le track suit le curseur sans lag (pas de transition). */
.sw-enova-topgal-viewport.is-dragging .sw-enova-topgal-track { transition: none; }
.sw-enova-topgal-item { flex: 0 0 auto; }
.sw-enova-topgal-item img { -webkit-user-drag: none; user-select: none; }
/* !important : le thème Woodmart force position:relative sur les <button>. */
.sw-enova-topgal-nav { position: absolute !important; top: 50% !important; transform: translateY(-50%) !important; z-index: 2; width: 2.6rem; height: 2.6rem; display: flex; align-items: center; justify-content: center; border: 0 !important; background: rgba(255,255,255,.92) !important; color: var(--sw-navy); border-radius: 50%; box-shadow: 0 2px 12px rgba(25,41,83,.2); font-size: 1.7rem; line-height: 1; cursor: pointer; padding: 0; }
.sw-enova-topgal-nav:hover:not(:disabled) { background: #fff !important; }
.sw-enova-topgal-nav[hidden] { display: none; }
.sw-enova-topgal-nav:disabled { opacity: .35; cursor: default; }
.sw-enova-topgal-prev { left: .5rem !important; right: auto !important; }
.sw-enova-topgal-next { right: .5rem !important; left: auto !important; }

/* Galerie complète « Photos de la villa » : titre + sous-titre */
.sw-enova-gallery-full .sw-enova-gallery-title,
.sw-enova-gallery-full .sw-enova-gallery-subtitle{
	padding: 0 35px;
}
.sw-enova-gallery-full .sw-enova-carousel:first-of-type{
	padding-top: 35px;
	border-top: 1px solid #EEEEEE;
	margin-top: 30px;
}
.sw-enova-gallery-title { margin: 0 0 .35rem; font-family: Montserrat; font-weight: 700; text-transform: none; letter-spacing: 0; font-size: 30px; color: var(--sw-navy); }
/* Carrousel « Photos de la villa » : scroll natif (donc navigable à la souris —
   glisser + molette horizontale) + auto-défilement d'1 image /2,5 s (gallery.js).
   Barre de scroll masquée. */
.sw-enova-carousel { overflow-x: auto; overflow-y: hidden; margin: 0 0 1.25rem; scroll-behavior: smooth; scrollbar-width: none; -ms-overflow-style: none; cursor: grab; user-select: none; -webkit-user-select: none; }
.sw-enova-carousel::-webkit-scrollbar { display: none; }
.sw-enova-carousel.is-dragging { cursor: grabbing; scroll-behavior: auto; }
.sw-enova-carousel-track { display: flex; flex-wrap: nowrap; width: max-content; }
.sw-enova-carousel-item { flex: 0 0 auto; }
.sw-enova-carousel-item img { -webkit-user-drag: none; user-select: none; }

/* Lightbox — façon capture : overlay sombre, image centrée, compteur en haut-
   gauche, outils en haut-droite, flèches blanches simples sur les côtés. */
html.sw-enova-lb-open { overflow: hidden; }
.sw-enova-lightbox { position: fixed; inset: 0; z-index: 2147483000; display: flex; align-items: center; justify-content: center; background: #141414; }
.sw-enova-lightbox[hidden] { display: none; }
.sw-enova-lb-img { max-width: 80vw; max-height: 88vh; object-fit: contain; }
.sw-enova-lb-counter { position: absolute; top: 1.1rem; left: 1.5rem; color: #fff; font-size: 12pt; letter-spacing: .06em; }
.sw-enova-lb-tools { position: absolute; top: .8rem; right: 1.2rem; display: flex; gap: .3rem; }
.sw-enova-lb-tool { border: 0; background: transparent; color: #d8d8d8; cursor: pointer; line-height: 1; padding: .3rem .5rem; border-radius: 4px; transition: color .15s ease; }
.sw-enova-lb-tool:hover { color: #fff; }
.sw-enova-lb-close { font-size: 2rem; }
.sw-enova-lb-full { font-size: 1.5rem; }
/* !important : le thème force position:relative sur les <button> → sans ça les
   flèches ne se centrent pas verticalement. */
.sw-enova-lb-nav { position: absolute !important; top: 50% !important; transform: translateY(-50%) !important; border: 0; background: transparent; color: #fff; cursor: pointer; font-size: 3.4rem; line-height: 1; padding: .5rem 1rem; opacity: .85; transition: opacity .15s ease; }
.sw-enova-lb-nav:hover { opacity: 1; }
.sw-enova-lb-prev { left: .5rem !important; right: auto !important; }
.sw-enova-lb-next { right: .5rem !important; left: auto !important; }

/* Réservation — carte blanche (façon maquette cible) */
h3.subtitle{
	font-size: 20px;
	color: #111111;
	text-align: left;
	font-family: Montserrat;
	font-weight: 400;
	font-style: normal;
	line-height: 1.4;
}
.sw-enova-booking > h2,
.sw-enova-booking > .subtitle,
.sw-enova-booking > .sw-enova-bc{
	padding: 0 35px;
}
.sw-enova-booking-box { background: #fff; border: 0; border-radius: 16px; padding: 20px 50px; box-shadow: 0 10px 30px rgba(25,41,83,.08); }
.sw-enova-booking-title {
	margin: 0 0 40px;
	padding-bottom: 10px;
	border-bottom: 1px solid #ececec;
	font-family: Montserrat;
	font-weight: 600;
	text-transform: uppercase;
	font-size: 22px;
	color: black;
}

.sw-enova-booking > .sw-enova-bc{
	padding-top: 80px;
	border-top: 1px solid #EEEEEE;
	margin-top: 30px;
	margin-bottom: 150px;
}

/* Champ « Dates » (affichage piloté par le calendrier) */
.sw-enova-booking-field { margin: 0 0 1.5rem; }
.sw-enova-booking-field-label { display: block; font-size: 12pt; font-weight: 500; color: black; margin-bottom: .5rem; }
.sw-enova-daterange { display: flex; align-items: center; gap: .65rem; border: 1px solid #dcdcdc; border-radius: 0; padding: .6rem 1rem; color: var(--sw-navy); }
.sw-enova-daterange-icon { flex: 0 0 auto; width: 20px; height: 20px; background: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23192953' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E"); }
.sw-enova-daterange-in, .sw-enova-daterange-out { font-variant-numeric: tabular-nums; font-weight: 600; }
.sw-enova-daterange:not(.is-filled) .sw-enova-daterange-in,
.sw-enova-daterange:not(.is-filled) .sw-enova-daterange-out { color: #9a9a9a; }
.sw-enova-daterange-sep { color: #b0b0b0; }
.sw-enova-daterange-clear { margin-left: auto; background: transparent; font-size: 28px!important; font-weight: 400!important; cursor: pointer; }
.sw-enova-daterange-clear:hover { color: var(--sw-navy); }

/* Statut de disponibilité */
.sw-enova-booking-result { margin: 0 0 1.25rem; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.sw-enova-booking-result:empty { display: none; }
.sw-enova-booking-result.is-loading .sw-enova-booking-status { color: #6a6a6a; }
.sw-enova-booking-result.is-waiting .sw-enova-booking-status { color: #6a6a6a; }
.sw-enova-booking-result .sw-enova-booking-status { display: inline-flex; align-items: center; gap: .5em; }
.sw-enova-spinner { display: inline-block; width: 1em; height: 1em; flex: 0 0 auto; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: sw-enova-spin .8s linear infinite; }
@keyframes sw-enova-spin { to { transform: rotate( 360deg ); } }
@media (prefers-reduced-motion: reduce) { .sw-enova-spinner { animation-duration: 2.4s; } }
.sw-enova-booking-status { margin: 0; font-weight: 600; font-size: 12pt; }
.sw-enova-booking-result.is-available .sw-enova-booking-status { color: #1a7f4b; }
.sw-enova-booking-result.is-unavailable .sw-enova-booking-status,
.sw-enova-booking-result.is-rules .sw-enova-booking-status { color: #b4232a; }
.sw-enova-booking-result.is-error .sw-enova-booking-status { color: #8a6d00; }
.sw-enova-booking-alt { color: var(--sw-navy); text-decoration: underline; font-weight: 600; font-size: .9rem; }

/* Prix : « à partir de » ou total réel */
.sw-enova-booking .sw-enova-villa-price { margin: 0 0 1.5rem; color: var(--sw-navy); }
.sw-enova-booking .sw-enova-price-from,
.sw-enova-booking .sw-enova-price-total { margin: 0; }
.sw-enova-booking .sw-enova-price-from[hidden],
.sw-enova-booking .sw-enova-price-total[hidden] { display: none; }
.sw-enova-price-line { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.sw-enova-booking .sw-enova-villa-price-label { font-size: 14pt; color: black; font-weight: 600; }
.sw-enova-booking .sw-enova-villa-price-amount { font-size: 28pt; font-weight: 600; line-height: 1; color: black; white-space: nowrap; }
/* Symbole € plus petit et surélevé (façon maquette reza.png). */
.sw-enova-booking .sw-enova-villa-price-cur { font-size: .5em; font-weight: 600; vertical-align: .35em; margin-left: .04em; }
.sw-enova-booking .sw-enova-villa-price-note {
	display: block;
	margin-top: 0;
	font-size: 10pt;
	color: grey;
}

/* Équipements : deux colonnes séparées par un filet vertical */

.sw-enova-villa-equipements{
	padding: 35px 50px 0;
}
.sw-enova-equip-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 3.5rem; }
/* Extérieur = 1 colonne étroite ; Intérieur = 2 colonnes larges. */
.sw-enova-equip-cols--split { grid-template-columns: 1fr 2fr; }
.sw-enova-equip-cols--split .sw-enova-equip-col--out .sw-enova-equip-list { columns: 1; }
.sw-enova-equip-cols--split .sw-enova-equip-col--in .sw-enova-equip-list { columns: 2; }
.sw-enova-equip-col + .sw-enova-equip-col { border-left: 1px solid var(--sw-border); padding-left: 3.5rem; }
.sw-enova-equip-col h3,
.sw-enova-equip-title { margin: 0 0 1.4rem; font-family: Montserrat; font-weight: 700; text-transform: uppercase; font-size: 30px; line-height: 1.2; text-align: left; color: var(--sw-navy); }
.sw-enova-equip-list { list-style: none; padding: 0; margin: 0; columns: 2; column-gap: 2rem; }
.sw-enova-equip-list li { break-inside: avoid; padding: .0 0 0 1.2rem; position: relative; line-height: 1.4; font-size: 14pt; font-weight: 400; margin-bottom: 0; color: black; }
.sw-enova-equip-list li::before { content: "✔"; position: absolute; left: 0; color: black; font-size: 14pt; }

/* Infos pratiques & environnement */
.sw-enova-infos{
	padding: 0 35px;
}
.sw-enova-infos-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem 3rem; }
.sw-enova-infos-list { margin: 0; }
.sw-enova-info { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem 0; border-bottom: 1px solid var(--sw-border); }
.sw-enova-info dt { margin: 0; color: #6a6a6a; }
.sw-enova-info dd { margin: 0; font-weight: 700; text-align: right; color: var(--sw-navy); }

/* Carte + bloc « Arrivée / Départ » à droite */
.sw-enova-map-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; align-items: start; }
.sw-enova-map-cols--nomap { grid-template-columns: 1fr; max-width: 380px; }
.sw-enova-map { border-radius: 8px; overflow: hidden; box-shadow: 0 2px 14px rgba(25,41,83,.12); line-height: 0; }
.sw-enova-map iframe { display: block; }
.sw-enova-map-note { display: flex; align-items: center; gap: .45rem; margin: .85rem 0 0; color: #555; }
.sw-enova-map-note .sw-enova-ico { width: 18px; height: 18px; color: var(--sw-navy); }
/* Bloc « Arrivée / Départ » — carte bordée arrondie façon page 593. */
.sw-enova-checkin { border: 1px solid #e3ddd0; border-radius: 16px; padding: 1.75rem 2rem; background: transparent; }
.sw-enova-checkin-title {
	font-size: 24px;
	text-align: left;
	font-family: Montserrat;
	font-weight: 700;
	font-style: normal;
	margin-bottom: 0.625rem;
	text-transform: uppercase;
}
.sw-enova-checkin-lines { margin: 0; color: black; font-size: 12pt; }
.sw-enova-checkin-lines strong { font-weight: 600; text-transform: uppercase; }
.sw-enova-checkin-sep { border: 0; border-top: 2px solid #e3e3e3; margin: 1.1rem 0; }
.sw-enova-checkin-deposit { margin: 0; font-family: Montserrat; font-weight: 700; font-size: 24px; color: black; text-transform: uppercase; }
.sw-enova-checkin-deposit strong { font-weight: 700; }

/* CTA réserver — pleine largeur dans la carte */
.sw-enova-single .sw-enova-reserve-btn {
	display: block;
	width: 100%;
	box-sizing: border-box;
	text-align: center;
	background: #1c1c1c;
	color: #fff;
	font-weight: 700;
	text-transform: uppercase;
	font-size: 20pt;
	padding: 6px 50px;
	border-radius: 0;
}
.sw-enova-single .sw-enova-reserve-btn:hover { background: #000; }
/* Tunnel interne : bouton verrouillé tant que les dates ne sont pas validées. */
.sw-enova-single .sw-enova-reserve-btn.is-disabled,
.sw-enova-single .sw-enova-reserve-btn.is-disabled:hover { background: #1c1c1c; opacity: .35; cursor: not-allowed; }

@media (max-width: 1100px) {
	.sw-enova-gallery { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 900px) {
	.sw-enova-equip-cols { grid-template-columns: 1fr; gap: 2rem; }
	.sw-enova-equip-col + .sw-enova-equip-col { border-left: 0; padding-left: 0; border-top: 1px solid var(--sw-border); padding-top: 2rem; }
	.sw-enova-gallery { grid-template-columns: repeat(3, 1fr); }
	.sw-enova-map-cols { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
	.sw-enova-hero { min-height: 60vh; }
	.sw-enova-hero-caption { padding: 4.5rem 1.25rem 1.75rem; }
	.sw-enova-equip-list { columns: 1; }
	.sw-enova-gallery { grid-template-columns: repeat(2, 1fr); }
	.sw-enova-booking-box { padding: 1.25rem; }
}
@media (max-width: 499.98px) {
	/* Équipements intérieurs sur une seule colonne sous 500px : sans ce sélecteur
	   ciblé, la règle .--in { columns: 2 } l'emporte par spécificité. */
	.sw-enova-equip-cols--split .sw-enova-equip-col--in .sw-enova-equip-list { columns: 1; }
}

/* ----- Réservation + calendrier (calendrier large | carte réservation) ----- */
.sw-enova-bc { display: grid; grid-template-columns: 1.5fr 1fr; gap: 3rem; align-items: start; }
.sw-enova-bc-cal, .sw-enova-bc-form { min-width: 0; }
.sw-enova-bc-cal{
	max-width: 770px;
}

/* Calendrier — épuré, flèches en haut aux coins */
/* Le thème (Woodmart) colore/borde tous les <button> (fond gris #f3f3f3) : on
   neutralise pour nos boutons calendrier + « × », sinon fonds gris parasites. */
.sw-enova-cal-nav, .sw-enova-cal-nav:hover, .sw-enova-cal-nav:focus,
.sw-enova-cal-day, .sw-enova-cal-day:hover, .sw-enova-cal-day:focus,
.sw-enova-daterange-clear, .sw-enova-daterange-clear:hover, .sw-enova-daterange-clear:focus {
	background-color: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}
/* …puis on ré-applique les fonds de sélection par-dessus le reset. */
.sw-enova-cal-day.is-in-range { background-color: #F7F1D9 !important; }

.sw-enova-cal-head { position: relative; padding: 0; }
.sw-enova-calendar.is-loading .sw-enova-cal-track { opacity: .55; transition: opacity .2s ease; }
/* Flèches calendrier : en haut au niveau des titres de mois, de chaque côté,
   grandes mais FINES et noires (façon maquette calendar.jpg). !important partout
   car Woodmart force position:relative + rétrécit la font-size des <button>. */
.sw-enova-cal-nav { position: absolute !important; top: -12px !important; transform: none !important; width: 38px; height: 38px; display: flex !important; align-items: center; justify-content: center; border: 0; background: transparent; color: black!important; font-size: 34px !important; font-weight: 400 !important; line-height: 1 !important; cursor: pointer; opacity: .9; padding: 0 !important; z-index: 1; }
.sw-enova-cal-nav:hover:not(:disabled) { opacity: 1; }
.sw-enova-cal-prev { left: 0 !important; right: auto !important; }
.sw-enova-cal-next { right: 0 !important; left: auto !important; }
.sw-enova-cal-nav:hover:not(:disabled) { opacity: 1; }
.sw-enova-cal-nav:disabled { opacity: .18; cursor: default; }
.sw-enova-cal-viewport { overflow: hidden; }
.sw-enova-cal-info { text-align: center; margin: 22px 0 0; color: #6a6a6a; font-size: 15px; min-height: 1.2em; }
.sw-enova-cal-info strong { color: var(--sw-navy); font-weight: 700; }
.sw-enova-cal-track { display: flex; flex-wrap: nowrap; transition: transform .35s ease; gap: 80px; }
/* 2 mois visibles collés aux bords du parent + 60px entre eux : chaque mois =
   (100% - 60px)/2. Le JS (initCarousel) recalcule ensuite ces largeurs et la
   translation en px pour que le défilement tienne compte du gap. */
.sw-enova-cal-month { flex: 0 0 calc(50% - 40px); max-width: calc(50% - 40px); box-sizing: border-box; padding: 0; }
.sw-enova-cal-title { text-align: center; font-weight: 700; color: #1a1a1a; margin: 0 0 20px; font-size: 16px; text-transform: capitalize; }
.sw-enova-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px 0; }
.sw-enova-cal-wd { text-align: center; font-size: 14px; font-weight: 700; color: #1a1a1a; padding-bottom: 12px; }
/* appearance/line-height/box-sizing forcés + span borné à 100 % : les jours
   <button> (disponibles) ont exactement la même taille que les <span> (occupés)
   → mois de même hauteur, et aucune cellule ne déborde (plus de chevauchement). */
.sw-enova-cal-day {
	position: relative;
	aspect-ratio: 5 / 4;
	min-width: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 10pt;
	line-height: 1;
	padding: 0;
	margin: 0;
	box-sizing: border-box;
	appearance: none;
	font-family: Montserrat;
	background: transparent;
	font-weight: 500;
}
.sw-enova-cal-day > span { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; width: 2em; height: 2em; max-width: 100%; max-height: 100%; box-sizing: border-box; border-radius: 50%; }
.sw-enova-cal-day.is-empty { visibility: hidden; }
/* Distinction claire : jour d'ARRIVÉE possible (foncé + gras + pastille olive)
   vs jour seulement DISPONIBLE (estompé, non sélectionnable comme date de début). */
/* Jour DISPONIBLE mais pas une date d'arrivée : simplement atténué (pas de
   pastille) — surtout PAS barré, pour ne pas le faire passer pour occupé. */
.sw-enova-cal-day.is-available { color: black; cursor: default; }
/* Jour d'ARRIVÉE possible : foncé, gras, pastille olive dessous. */
.sw-enova-cal-day.is-arrival { color: #1c1c1c; font-weight: 600; cursor: pointer; }
.sw-enova-cal-day.is-arrival::after { content: ''; position: absolute; left: 50%; bottom: .22em; transform: translateX(-50%); width: 5px; height: 5px; border-radius: 50%; background: #abbf12; z-index: 2; }
.sw-enova-cal-day.is-arrival:hover > span,
.sw-enova-calendar.is-picking .sw-enova-cal-day.is-depart-ok:hover > span { background: #efe9cf; }
.sw-enova-cal-day.is-booked { color: #d8cec0; }
.sw-enova-cal-day.is-past { color: #dcd7cd; }
/* Pendant le choix du départ : les « départs possibles » ressortent (pastille
   claire permanente) pour bien montrer qu'il reste à choisir la date de départ. */
.sw-enova-calendar.is-picking .sw-enova-cal-day.is-depart-ok { color: #1c1c1c; font-weight: 600; cursor: pointer; }
.sw-enova-calendar.is-picking .sw-enova-cal-day.is-depart-ok > span { background: #efe9cf; }
.sw-enova-calendar.is-picking .sw-enova-cal-day.is-depart-ok:hover > span { background: #e3dcbd; }
/* Plage sélectionnée : bande crème continue + bornes encadrées façon maquette
   calendar.jpg (bande #F7F1D9, chiffres tan clair comme les autres jours). */
.sw-enova-cal-day.is-in-range { background: #F7F1D9; color: #cfc3ad; }
.sw-enova-calendar.has-range .sw-enova-cal-day.is-sel-start { background: linear-gradient(90deg, transparent 50%, #F7F1D9 50%); }
.sw-enova-calendar.has-range .sw-enova-cal-day.is-sel-end { background: linear-gradient(90deg, #F7F1D9 50%, transparent 50%); }
/* Bornes de la plage (arrivée / départ) : boîte blanche bordée OLIVE VIF,
   arrondie, sur TOUTE LA CASE (bordure portée par la cellule elle-même) —
   exactement comme la maquette. box-sizing:border-box → aucun décalage. */
.sw-enova-cal-day.is-sel-start, .sw-enova-cal-day.is-sel-end {
	background: #FDFAF5 !important;
	border: 2px solid #abbf12 !important;
	border-radius: 8px !important;
	color: #1a1a1a !important;
	font-weight: 700 !important;
	z-index: 1;
}
.sw-enova-cal-day.is-sel-start::after, .sw-enova-cal-day.is-sel-end::after, .sw-enova-cal-day.is-in-range::after { display: none; }
/* En mode sélection, on estompe et neutralise UNIQUEMENT les jours non
   sélectionnables : on garde les jours d'arrivée cliquables pour permettre de
   redéfinir une date de début (y compris antérieure). */
/* Pendant le choix du départ : on estompe TOUT ce qui n'est pas un départ valide
   (y compris les jours d'arrivée trop proches) pour rendre le blocage « durée
   minimum » visible ; les jours d'arrivée restent cliquables (redéfinir le début). */
.sw-enova-calendar.is-picking .sw-enova-cal-day[data-date]:not(.is-depart-ok):not(.is-sel-start) { opacity: .32; }
.sw-enova-calendar.is-picking .sw-enova-cal-day[data-date]:not(.is-depart-ok):not(.is-sel-start):not(.is-arrival) { pointer-events: none; }
/* Départs valides : bien lisibles + pastille masquée (ce ne sont pas des arrivées ici). */
.sw-enova-calendar.is-picking .sw-enova-cal-day.is-depart-ok::after { display: none; }

@media (max-width: 900px) {
	.sw-enova-bc { grid-template-columns: 1fr; gap: 2rem; }
}
@media (max-width: 640px) {
	.sw-enova-cal-month { flex-basis: 100%; max-width: 100%; }
}

/* Fond beige : zone de contenu du thème sur l'archive et les fiches villa */
body.single-villa .wd-page-content,
body.post-type-archive-villa .wd-page-content { background-color: rgb(254, 248, 239); }

/* ==========================================================================
   Tunnel de réservation — écran 1 « Poser une réservation »
   (templates/booking-form.php). Calé sur capture_poser_reservation.png mais
   transposé à la charte de la fiche villa : navy, Montserrat, cartes bordées.
   ⚠ Woodmart impose background/border/position à TOUS les <button> → les
   resets !important ci-dessous sont nécessaires (même famille de bug que les
   flèches du calendrier).
   ========================================================================== */
/* ⚠ Le thème pose `wd-header-overlap` sur <body> (le header se superpose au
   contenu — ce qui convient au hero pleine hauteur de la fiche villa, mais pas
   ici : sans dégagement, le titre et le haut du formulaire passent SOUS le menu).
   On réserve donc la hauteur du header avec les variables du thème, exactement
   comme Woodmart le fait pour .wd-page-title. Repli si la variable est absente. */
/* La page de réservation n'est pas sous .sw-enova-single : elle doit porter
   elle-même les couleurs de la charte (sinon bouton « Retour » invisible). */
.sw-enova-booking-page { --sw-navy: #192953; --sw-border: #eeeeee; --sw-ink: #1c1c1c; }
.sw-enova-booking-page { max-width: var(--sw-max); margin: 0 auto; padding: 2.5rem 50px 4rem; font-family: Montserrat; color: var(--sw-ink); }
body.wd-header-overlap .sw-enova-booking-page { padding-top: calc(var(--wd-header-h, 100px) + var(--wd-header-boxed-sp, 0.001px) + 2.5rem); }
@media (max-width: 1024px) {
	body.wd-header-overlap .sw-enova-booking-page { padding-top: calc(var(--wd-header-sm-h, 70px) + 1.5rem); }
}

.sw-enova-bkg-head { position: relative; display: flex; align-items: center; justify-content: center; min-height: 48px; margin-bottom: 2rem; }
.sw-enova-bkg-title { margin: 0; font-family: Montserrat; font-weight: 700; font-size: 34px; line-height: 1.3; color: var(--sw-navy); text-align: center; }
.sw-enova-bkg-back {
	position: absolute; right: 0; top: 0;
	display: inline-flex; align-items: center; gap: .4rem;
	padding: .6rem 1.2rem;
	background: var(--sw-navy); color: #fff;
	border-radius: 6px; text-decoration: none;
	font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
	transition: background .15s ease;
}
.sw-enova-bkg-back:hover { background: #0f1b38; color: #fff; }

.sw-enova-bkg-saved { max-width: var(--sw-max); margin: 0 0 1.5rem; padding: .85rem 1.2rem; border: 1px solid #bcd9b6; border-radius: 8px; background: #f1f8ef; color: #2d5c26; font-size: 12pt; }
.sw-enova-bkg-error-global { margin: 0 0 1.5rem; padding: .85rem 1.2rem; border: 1px solid #e6b5b5; border-radius: 8px; background: #fdf3f3; color: #8d2b2b; font-size: 12pt; }

.sw-enova-bkg-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 2rem; align-items: start; }
.sw-enova-bkg-main { min-width: 0; }
.sw-enova-bkg-side { position: sticky; top: 2rem; }

.sw-enova-bkg-card { border: 1px solid #e3ddd0; border-radius: 16px; padding: 1.75rem 2rem; background: #fff; margin: 0 0 1.5rem; }
.sw-enova-bkg-cardtitle { margin: 0 0 1.4rem; font-family: Montserrat; font-weight: 600; font-size: 20px; line-height: 1.3; color: var(--sw-navy); }
.sw-enova-bkg-lead { margin: 0 0 1rem; font-size: 12pt; color: var(--sw-ink); }

/* ----- Grille des champs (6 colonnes, cf. maquette) ----- */
.sw-enova-bkg-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1rem 1.1rem; }
.sw-enova-bkg-field { grid-column: span 2; margin: 0; position: relative; }
.sw-enova-bkg-field--half { grid-column: span 3; }
.sw-enova-bkg-field--civ { grid-column: span 2; }
.sw-enova-bkg-field--dept { grid-column: span 4; }
.sw-enova-bkg-field--full { grid-column: span 6; }
.sw-enova-bkg-field[hidden] { display: none; }

.sw-enova-bkg-field input[type="text"],
.sw-enova-bkg-field input[type="email"],
.sw-enova-bkg-field input[type="tel"],
.sw-enova-bkg-field select,
.sw-enova-bkg-field textarea {
	box-sizing: border-box; width: 100%;
	padding: .75rem 1rem;
	border: 1px solid #dcdcdc; border-radius: 6px;
	background: #fff; color: var(--sw-ink);
	font-family: Montserrat; font-size: 11.5pt; line-height: 1.4;
}
.sw-enova-bkg-field textarea { resize: vertical; min-height: 110px; }
.sw-enova-bkg-field input::placeholder,
.sw-enova-bkg-field textarea::placeholder { color: #a9a9a9; }
.sw-enova-bkg-field input:focus,
.sw-enova-bkg-field select:focus,
.sw-enova-bkg-field textarea:focus { outline: 0; border-color: var(--sw-navy); box-shadow: 0 0 0 3px rgba(25, 41, 83, .1); }
.sw-enova-bkg-field.has-error input,
.sw-enova-bkg-field.has-error select,
.sw-enova-bkg-field.has-error .sw-enova-combo-input { border-color: #c96b6b; }
.sw-enova-bkg-err { display: block; margin-top: .35rem; color: #8d2b2b; font-size: .8rem; }

/* ----- Combobox filtrable (pays, département) ----- */
.sw-enova-combo { display: block; position: relative; }
.sw-enova-combo-input { cursor: text; padding-right: 2.2rem !important; }
.sw-enova-combo-caret {
	position: absolute; right: .9rem; top: 50%; transform: translateY(-50%);
	width: 0; height: 0; pointer-events: none;
	border-left: 5px solid transparent; border-right: 5px solid transparent;
	border-top: 6px solid #7a7a7a;
}
.sw-enova-combo-list {
	position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 2px);
	max-height: 260px; overflow-y: auto;
	margin: 0; padding: .3rem 0; list-style: none;
	background: #fff; border: 1px solid #dcdcdc; border-radius: 6px;
	box-shadow: 0 8px 24px rgba(25, 41, 83, .12);
}
.sw-enova-combo-list[hidden] { display: none; }
.sw-enova-combo-list li { padding: .5rem 1rem; font-size: 11pt; line-height: 1.35; cursor: pointer; }
.sw-enova-combo-list li[hidden] { display: none; }
.sw-enova-combo-list li:hover,
.sw-enova-combo-list li.is-active { background: rgba(25, 41, 83, .08); }
.sw-enova-combo-list li[aria-selected="true"] { font-weight: 600; color: var(--sw-navy); }

/* ----- Assurance / à savoir ----- */
.sw-enova-bkg-callout { margin: 0; padding: .9rem 1.1rem; border-left: 4px solid #e8c55a; background: #fdf8e8; color: #6b5418; font-size: 11pt; line-height: 1.5; }
.sw-enova-bkg-cgl { margin: 0 0 1rem; }
.sw-enova-bkg-cgl a { display: inline-flex; align-items: center; gap: .6rem; color: var(--sw-navy); font-weight: 600; text-decoration: none; }
.sw-enova-bkg-cgl a:hover { text-decoration: underline; }
.sw-enova-bkg-cgl-icon {
	flex: 0 0 auto; width: 22px; height: 26px;
	background: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 28'%3E%3Cpath fill='%23ffffff' stroke='%23c33' stroke-width='1.5' d='M2.75 1.75h12l6.5 6.5v17.5a.5.5 0 0 1-.5.5h-18a.5.5 0 0 1-.5-.5V2.25a.5.5 0 0 1 .5-.5z'/%3E%3Cpath fill='none' stroke='%23c33' stroke-width='1.5' d='M14.5 1.75v7h7'/%3E%3Ctext x='12' y='21' font-family='Arial,Helvetica,sans-serif' font-size='7' font-weight='bold' fill='%23c33' text-anchor='middle'%3EPDF%3C/text%3E%3C/svg%3E");
}
.sw-enova-bkg-cancel { margin: 0; font-size: 11pt; line-height: 1.6; }
.sw-enova-bkg-cancel a { color: var(--sw-navy); }

.sw-enova-bkg-actions { margin: 0; }
.sw-enova-booking-page .sw-enova-bkg-submit {
	display: block; width: 100%; box-sizing: border-box;
	border: 0 !important; box-shadow: none !important;
	background: #1c1c1c !important; color: #fff !important;
	font-family: Montserrat; font-weight: 700; text-transform: uppercase;
	font-size: 16pt; padding: .75rem 2rem; border-radius: 0;
	text-align: center; cursor: pointer;
}
.sw-enova-booking-page .sw-enova-bkg-submit:hover { background: #000 !important; }

/* ----- Récapitulatif ----- */
.sw-enova-bkg-recap { position: relative; }
.sw-enova-bkg-recap-photo { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 8px; margin-bottom: 1rem; }
.sw-enova-bkg-recap-ref { margin: 0; font-weight: 700; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; color: var(--sw-navy); }
.sw-enova-bkg-recap-name { margin: .15rem 0 0; font-size: 11pt; color: #555; }
.sw-enova-bkg-recap-loc { display: flex; align-items: center; gap: .4rem; margin: .5rem 0 0; font-size: 10.5pt; color: #3d7ea6; }
.sw-enova-bkg-recap-pin { color: inherit; line-height: 0; }
.sw-enova-bkg-recap-sep { margin: 1.1rem 0; border: 0; border-top: 1px solid #ececec; }
.sw-enova-bkg-recap-dates { margin: 0; font-size: 11pt; line-height: 1.5; color: var(--sw-ink); }
.sw-enova-bkg-recap-guests { display: flex; gap: 2.5rem; margin: .7rem 0 0; font-size: 11pt; color: var(--sw-ink); }
.sw-enova-bkg-recap-row { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin: 0 0 .5rem; font-size: 10.5pt; color: var(--sw-ink); }
.sw-enova-bkg-recap-row > span:last-child { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sw-enova-bkg-recap-row--total { font-size: 13pt; font-weight: 700; color: var(--sw-navy); }
.sw-enova-bkg-recap-row--muted { color: #8a8a8a; }

@media (max-width: 1000px) {
	.sw-enova-bkg-layout { grid-template-columns: 1fr; }
	.sw-enova-bkg-side { position: static; }
	.sw-enova-bkg-side .sw-enova-bkg-card { max-width: 420px; }
}
@media (max-width: 720px) {
	.sw-enova-booking-page { padding: 1.5rem 1.25rem 3rem; }
	body.wd-header-overlap .sw-enova-booking-page { padding-top: calc(var(--wd-header-sm-h, 70px) + 1.5rem); }
	.sw-enova-bkg-head { flex-direction: column-reverse; align-items: flex-start; gap: 1rem; }
	.sw-enova-bkg-back { position: static; }
	.sw-enova-bkg-title { font-size: 26px; text-align: left; }
	.sw-enova-bkg-card { padding: 1.25rem; }
	.sw-enova-bkg-field,
	.sw-enova-bkg-field--half,
	.sw-enova-bkg-field--civ,
	.sw-enova-bkg-field--dept { grid-column: span 6; }
}

/* ----- Voyageurs (carte de réservation de la fiche villa) ----- */
.sw-enova-guests-row { display: flex; gap: 1rem; }
.sw-enova-guests-item { flex: 1 1 0; display: block; margin: 0; }
.sw-enova-guests-label { display: block; margin-bottom: .3rem; font-size: 10.5pt; color: #666; }
.sw-enova-guests-input {
	box-sizing: border-box; width: 100%;
	padding: .6rem 1rem;
	border: 1px solid #dcdcdc; border-radius: 0;
	background: #fff; color: var(--sw-navy);
	font-family: Montserrat; font-size: 12pt; font-weight: 600;
}
.sw-enova-guests-input:focus { outline: 0; border-color: var(--sw-navy); box-shadow: 0 0 0 3px rgba(25, 41, 83, .1); }
.sw-enova-guests-note { display: block; margin-top: .45rem; font-size: .78rem; color: #9a9a9a; }

/* ----- Tunnel : fil d'étapes ----- */
.sw-enova-bkg-steps { display: flex; flex-wrap: wrap; gap: 1.75rem; margin: 0 0 2rem; padding: 0; list-style: none; }
.sw-enova-bkg-step { display: inline-flex; margin: 0; align-items: center; gap: .6rem; color: #9a9a9a; font-size: .82rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.sw-enova-bkg-step-num { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 999px; border: 1px solid currentColor; font-size: .78rem; line-height: 1; }
.sw-enova-bkg-step.is-current { color: var(--sw-navy); }
.sw-enova-bkg-step.is-current .sw-enova-bkg-step-num { background: #fff; border: 2px solid var(--sw-navy); color: #000; }
a.sw-enova-bkg-step-link { display: inline-flex; align-items: center; gap: .6rem; color: inherit; text-decoration: none; }
a.sw-enova-bkg-step-link:hover .sw-enova-bkg-step-label,
a.sw-enova-bkg-step-link:focus-visible .sw-enova-bkg-step-label { text-decoration: underline; text-underline-offset: 3px; }
.sw-enova-bkg-step.is-done { color: #6f8f4e; }

/* ----- Écran 2 : relecture des coordonnées ----- */
.sw-enova-bkg-review { margin: 0; }
.sw-enova-bkg-review-row { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: .5rem 1rem; padding: .6rem 0; border-top: 1px solid #f0ece4; }
.sw-enova-bkg-review-row:first-child { border-top: 0; padding-top: 0; }
.sw-enova-bkg-review dt { margin: 0; color: #8a8a8a; font-size: 10.5pt; }
.sw-enova-bkg-review dd { margin: 0; color: var(--sw-ink); font-size: 11pt; line-height: 1.5; overflow-wrap: anywhere; }
.sw-enova-bkg-editlink { margin: 1.2rem 0 0; }
.sw-enova-booking-page .sw-enova-bkg-editlink a {
	display: inline-flex; align-items: center; gap: .45rem;
	padding: .55rem 1.1rem; border: 1px solid var(--sw-navy); border-radius: 6px;
	color: var(--sw-navy); font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
	text-decoration: none; transition: background .15s ease, color .15s ease;
}
.sw-enova-booking-page .sw-enova-bkg-editlink a:hover { background: var(--sw-navy); color: #fff; }

/* ----- Écran 3 : saisie du code ----- */
.sw-enova-bkg-codewrap { margin: 1.5rem 0 .6rem; text-align: center; }
.sw-enova-booking-page .sw-enova-bkg-code {
	box-sizing: border-box; width: 100%; max-width: 320px;
	padding: .8rem 1rem;
	border: 1px solid #dcdcdc; border-radius: 8px; background: #fff;
	color: var(--sw-navy); font-family: Montserrat; font-size: 30px; font-weight: 700;
	letter-spacing: 14px; text-indent: 14px; /* text-indent recentre le texte que letter-spacing décale à droite */
	text-align: center; font-variant-numeric: tabular-nums;
}
.sw-enova-booking-page .sw-enova-bkg-code:focus { outline: 0; border-color: var(--sw-navy); box-shadow: 0 0 0 3px rgba(25, 41, 83, .1); }
.sw-enova-booking-page .sw-enova-bkg-code::placeholder { color: #dcdcdc; }
.sw-enova-bkg-codehelp { margin: 0 0 1.2rem; text-align: center; color: #8a8a8a; font-size: .82rem; line-height: 1.6; }
.sw-enova-bkg-resend { margin: 0; text-align: center; color: #777; font-size: .85rem; line-height: 1.6; }
/* Bouton rendu comme un lien (Woodmart habille tous les <button> → resets). */
.sw-enova-booking-page .sw-enova-bkg-linkbtn {
	display: inline; padding: 0 !important; margin-left: .3rem;
	border: 0 !important; background: transparent !important; box-shadow: none !important;
	color: var(--sw-navy); font-family: Montserrat; font-size: .85rem; font-weight: 600;
	text-decoration: underline; cursor: pointer;
}
.sw-enova-booking-page .sw-enova-bkg-linkbtn[disabled] { color: #b5b5b5; cursor: not-allowed; text-decoration: none; }

/* ----- Écran 4 : confirmé ----- */
.sw-enova-bkg-done { text-align: center; }
.sw-enova-bkg-done-mark { display: inline-flex; align-items: center; justify-content: center; width: 58px; height: 58px; margin: 0 auto 1rem; border-radius: 999px; background: #eef5e9; color: #5f8a3f; font-size: 30px; line-height: 1; }
.sw-enova-bkg-done .sw-enova-bkg-callout { text-align: left; }
.sw-enova-bkg-done .sw-enova-bkg-actions { margin: 1.4rem 0; }
.sw-enova-bkg-unavailable-stay { margin: 0 0 1rem; font-size: 11pt; line-height: 1.6; color: var(--sw-ink); }
.sw-enova-bkg-unavailable .sw-enova-bkg-actions { margin: 1.4rem 0 0; }
.sw-enova-booking-page a.sw-enova-bkg-submit { text-decoration: none; }

@media (max-width: 720px) {
	.sw-enova-bkg-steps { gap: 1rem; }
	.sw-enova-bkg-step-label { display: none; }
	.sw-enova-bkg-review-row { grid-template-columns: 1fr; gap: .15rem; }
}

/* ----- Tunnel : indicatif + numéro, consentement, piège à robots ----- */
.sw-enova-bkg-phone { display: flex; gap: .5rem; }
.sw-enova-booking-page .sw-enova-bkg-prefix { flex: 0 0 5.5rem; text-align: center; font-variant-numeric: tabular-nums; }
.sw-enova-bkg-phone input[type="tel"] { flex: 1 1 auto; min-width: 0; }

.sw-enova-bkg-consent { display: flex; align-items: flex-start; gap: .7rem; }
.sw-enova-booking-page .sw-enova-bkg-consent input[type="checkbox"] {
	flex: 0 0 auto; width: 18px; height: 18px; margin: .2rem 0 0;
	accent-color: var(--sw-navy); cursor: pointer;
}
.sw-enova-bkg-consent label { font-size: 10.5pt; line-height: 1.55; color: var(--sw-ink); cursor: pointer; }
.sw-enova-bkg-consent a { color: var(--sw-navy); }
.sw-enova-bkg-consent.has-error label { color: #8d2b2b; }

/* Leurre anti-robots : hors écran, jamais masqué par `display:none` — certains
   robots ignorent les champs non rendus, mais remplissent ceux-ci. */
.sw-enova-bkg-trap {
	position: absolute !important;
	left: -9999px !important; top: auto !important;
	width: 1px !important; height: 1px !important;
	overflow: hidden !important;
}

/* ----- Bouton flottant « Toutes les villas » (fiche villa) ----- */
.sw-enova-back-fab { position: fixed; left: 24px; bottom: 24px; z-index: 990; display: inline-flex; align-items: center; gap: 10px; padding: 12px 22px 12px 18px; background: var(--sw-navy, #192953); color: #fff; font-family: Montserrat, sans-serif; font-size: 15px; font-weight: 600; line-height: 1; text-decoration: none; border-radius: 999px; box-shadow: 0 6px 20px rgba(25, 41, 83, .28); transition: background .15s ease, transform .15s ease, box-shadow .15s ease; }
.sw-enova-back-fab:hover, .sw-enova-back-fab:focus-visible { background: #0f1a38; color: #fff; transform: translateY(-2px); box-shadow: 0 10px 24px rgba(25, 41, 83, .34); }
.sw-enova-back-fab:focus-visible { outline: 2px solid #ABBF12; outline-offset: 3px; }
.sw-enova-back-fab-arrow { display: block; flex: 0 0 auto; width: 18px; height: 18px; }
@media (max-width: 640px) {
	.sw-enova-back-fab { left: 14px; bottom: 14px; padding: 10px 16px 10px 13px; font-size: 14px; gap: 8px; }
}
@media print { .sw-enova-back-fab { display: none; } }

/* Recherche : dates d'arrivée proposées quand le jour choisi n'en accepte aucune. */
.sw-enova-search-suggest { display: inline; padding: 0; margin: 0; border: 0; background: none; color: inherit; font: inherit; font-weight: 700; text-decoration: underline; cursor: pointer; text-transform: none; letter-spacing: 0; min-height: 0; box-shadow: none; }
.sw-enova-search-suggest:hover, .sw-enova-search-suggest:focus-visible { text-decoration: none; background: none; color: inherit; }

/* ----- Fiche villa sur mobile : marges latérales et tailles resserrées ----- */
@media (max-width: 640px) {
	.sw-enova-villa-description { padding: 0; }
	.sw-enova-editorial-cols .sw-enova-editorial-col { padding: 25px 0 0; }
	.sw-enova-editorial-cols .sw-enova-editorial-col:first-child { border-right: 0; }
	.sw-enova-editorial-title, .sw-enova-equip-title { font-size: 24px; }
	.sw-enova-stats-list { padding: 30px 0 20px; gap: 1.25rem 1rem; }
	.sw-enova-stat { width: auto; min-width: 84px; }
	.sw-enova-stat-icon .sw-enova-ico { width: 22px; height: 22px; }
	.sw-enova-equip-list li { font-size: 12pt; padding-left: 1.1rem; }
	.sw-enova-equip-list li::before { font-size: 10pt; top: .15em; }
	.sw-enova-checkin { padding: 1.25rem; }
	.sw-enova-checkin-deposit { font-size: 20px; }
	/* Autres sections : marges intérieures d'ordinateur (35–50 px) supprimées. */
	.sw-enova-villa-equipements { padding: 25px 0 0; }
	.sw-enova-infos { padding: 0; }
	.sw-enova-gallery-full .sw-enova-gallery-title,
	.sw-enova-gallery-full .sw-enova-gallery-subtitle { padding: 0; }
	.sw-enova-booking > h2,
	.sw-enova-booking > .subtitle,
	.sw-enova-booking > .sw-enova-bc { padding-left: 0; padding-right: 0; }
	.sw-enova-booking > .sw-enova-bc { padding-top: 40px; margin-bottom: 60px; }
	.sw-enova-booking-box { padding: 1.25rem 1rem; }
	.sw-enova-single .sw-enova-reserve-btn { padding: 6px 16px; font-size: 18pt; }
}
