/* ============================================================
   Maison L'Escale — design system public
   ============================================================ */

:root {
	--ink: #2c332c;
	--ink-soft: #5c6459;
	--cream: #faf6ee;
	--cream-deep: #f2ead9;
	--white: #ffffff;
	--sauge: #7c8d74;
	--sauge-dark: #4d5a45;
	--bluegray: #7c95a0;
	--gold: #b99a5b;
	--line: rgba(44, 51, 44, 0.12);
	--shadow-soft: 0 20px 45px -28px rgba(44, 51, 44, 0.35);
	--radius: 16px;
	--radius-sm: 10px;
	--font-serif: 'Cormorant Garamond', Georgia, serif;
	--font-sans: 'Jost', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--max: 1220px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
	margin: 0;
	font-family: var(--font-sans);
	color: var(--ink);
	background: var(--cream);
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }

h1, h2, h3, h4 {
	font-family: var(--font-serif);
	font-weight: 600;
	line-height: 1.15;
	color: var(--sauge-dark);
	margin: 0 0 0.5em;
}

p { margin: 0 0 1em; }

.skip-link {
	position: absolute;
	left: -999px;
	top: 0;
	background: var(--sauge-dark);
	color: var(--white);
	padding: 0.8em 1.4em;
	z-index: 2000;
}
.skip-link:focus { left: 1em; top: 1em; }

:focus-visible {
	outline: 2px solid var(--gold);
	outline-offset: 3px;
}

.container { max-width: var(--max); margin: 0 auto; padding: 0 1.6em; }

.eyebrow {
	display: inline-block;
	font-family: var(--font-sans);
	font-size: 0.74rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--gold);
	font-weight: 600;
	margin-bottom: 0.9em;
}

.section-lead { max-width: 62ch; color: var(--ink-soft); }

/* ---------- Buttons ---------- */

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
	padding: 0.9em 1.9em;
	border-radius: 999px;
	font-family: var(--font-sans);
	font-weight: 500;
	font-size: 0.92rem;
	letter-spacing: 0.02em;
	white-space: nowrap;
	border: 1.5px solid transparent;
	cursor: pointer;
	transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.btn-primary { background: #7e8f73; color: var(--white); }
.btn-primary:hover { background: var(--sauge); transform: translateY(-2px); box-shadow: var(--shadow-soft); }

.btn-outline { border-color: var(--sauge-dark); color: var(--sauge-dark); }
.btn-outline:hover { background: #7e8f73; color: var(--white); transform: translateY(-2px); }

.btn-ghost-light { border-color: rgba(255,255,255,0.7); color: var(--white); }
.btn-ghost-light:hover { background: rgba(255,255,255,0.15); transform: translateY(-2px); }

.btn-small { padding: 0.6em 1.3em; font-size: 0.82rem; }
.btn-full { width: 100%; }
.btn[disabled] { opacity: 0.5; cursor: not-allowed; transform: none !important; }

/* ---------- Header ---------- */

.site-header {
	position: sticky;
	top: 0;
	z-index: 500;
	border-bottom: 1px solid var(--line);
}
.site-header::before {
	content: '';
	position: absolute;
	inset: 0;
	background: rgba(250, 246, 238, 0.92);
	backdrop-filter: blur(10px);
	z-index: -1;
}

.site-header__inner {
	max-width: var(--max);
	margin: 0 auto;
	padding: 1em 1.6em;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2em;
}

.site-logo { display: flex; flex-direction: column; line-height: 1.1; }
.site-logo__mark { font-family: var(--font-serif); font-size: 1.5rem; font-weight: 700; color: var(--sauge-dark); }
.site-logo__sub { font-size: 0.68rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold); }

.site-nav { display: flex; align-items: center; gap: 2.2em; flex: 1; justify-content: flex-end; }
.site-nav ul { display: flex; align-items: center; gap: 1.8em; flex-wrap: wrap; }

.site-nav a:not(.btn) {
	font-size: 0.9rem;
	color: var(--ink-soft);
	position: relative;
	padding: 0.3em 0;
}
.site-nav a:not(.btn):hover, .site-nav a.is-active { color: var(--sauge-dark); }
.site-nav .nav-reserve { padding: 0.6em 1.3em; font-size: 0.82rem; }

/* Sélecteur de langue (menu déroulant avec drapeaux) */
.lang-switch { position: relative; }
.lang-flag { display: inline-flex; width: 1.35em; height: 0.95em; line-height: 1; border-radius: 2px; overflow: hidden; box-shadow: 0 0 0 1px rgba(0,0,0,0.08); flex: none; }
.lang-flag svg { display: block; width: 100%; height: 100%; }
.lang-switch__toggle {
	display: flex; align-items: center; gap: 0.45em;
	background: none; border: none; cursor: pointer;
	font-family: var(--font-sans); font-size: 0.78rem; letter-spacing: 0.05em;
	color: var(--ink-soft); padding: 0.3em 0.1em;
}
.lang-switch__toggle:hover { color: var(--sauge-dark); }
.lang-switch__code { font-weight: 600; }
.lang-switch__chevron { color: var(--ink-soft); transition: transform 0.2s ease; }
.js-lang-switch.is-open .lang-switch__toggle { color: var(--sauge-dark); }
.js-lang-switch.is-open .lang-switch__chevron { transform: rotate(180deg); }

.lang-switch__menu {
	position: absolute; top: calc(100% + 0.6em); right: 0;
	min-width: 180px; margin: 0; padding: 0.5em;
	list-style: none;
	background: var(--white); border: 1px solid var(--line); border-radius: var(--radius-sm);
	box-shadow: var(--shadow-soft);
	opacity: 0; visibility: hidden; transform: translateY(-6px);
	transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
	z-index: 700;
}
.js-lang-switch.is-open .lang-switch__menu { opacity: 1; visibility: visible; transform: translateY(0); }

.site-nav .lang-switch__menu .lang-switch__option {
	display: flex; align-items: center; gap: 0.65em;
	width: 100%; box-sizing: border-box;
	padding: 0.55em 0.7em; border-radius: 8px;
	font-size: 0.86rem; color: var(--ink); text-decoration: none;
}
.lang-switch__option:hover { background: var(--cream); }
.lang-switch__option.is-active { color: var(--sauge-dark); font-weight: 600; background: rgba(124,141,116,0.12); }
.lang-switch__name { flex: 1; }
.site-nav a.is-active::after {
	content: '';
	position: absolute;
	left: 0; right: 0; bottom: -3px;
	height: 2px;
	background: var(--gold);
}

.site-header__actions { display: none; align-items: center; gap: 0.8em; position: relative; z-index: 600; }

.nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 42px;
	height: 42px;
	background: none;
	border: none;
	cursor: pointer;
}
.nav-toggle span { display: block; height: 2px; background: var(--sauge-dark); border-radius: 2px; transition: transform 0.25s ease, opacity 0.25s ease; }
.nav-toggle.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle.is-open span:nth-child(2) { opacity: 0; }
.nav-toggle.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ---------- Hero ---------- */

.hero {
	position: relative;
	min-height: 88vh;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	color: var(--white);
}

.hero__media { position: absolute; inset: 0; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; }
.hero__media::after {
	content: '';
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(15,18,15,0.55) 0%, rgba(15,18,15,0.68) 40%, rgba(15,18,15,0.96) 100%);
	z-index: 1;
}

.hero__slide {
	position: absolute; inset: 0;
	opacity: 0;
	transition: opacity 1.4s ease;
}
.hero__slide.is-active { opacity: 1; }
.hero__slide--top { object-position: top; }
.hero__slide--bottom { object-position: 50% 64%; }

.hero__dots {
	position: absolute;
	left: 50%; bottom: 1.8em;
	transform: translateX(-50%);
	z-index: 3;
	display: flex;
	gap: 0.6em;
}
.hero__dot {
	width: 9px; height: 9px;
	border-radius: 50%;
	border: 1px solid rgba(255,255,255,0.7);
	background: rgba(255,255,255,0.25);
	padding: 0;
	cursor: pointer;
	transition: background 0.3s ease, transform 0.3s ease;
}
.hero__dot.is-active { background: var(--white); transform: scale(1.15); }

.hero__content {
	position: relative;
	z-index: 2;
	max-width: var(--max);
	margin: 0 auto;
	padding: 5em 1.6em 4em;
	width: 100%;
}

.hero__content .eyebrow { color: #e7dcc0; text-shadow: 0 1px 10px rgba(0,0,0,0.75); }
.hero__content h1 { color: var(--white); font-size: clamp(2.3rem, 5.5vw, 4rem); max-width: 16ch; text-shadow: 0 2px 16px rgba(0,0,0,0.75); }
.hero__lead { max-width: 48ch; font-size: 1.15rem; color: rgba(255,255,255,0.95); text-shadow: 0 1px 10px rgba(0,0,0,0.7); }
.hero__cta { display: flex; gap: 1em; flex-wrap: wrap; margin: 1.6em 0 2.2em; }

.hero__facts {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6em 2em;
	padding-top: 1.6em;
	border-top: 1px solid rgba(255,255,255,0.25);
	font-size: 0.88rem;
	letter-spacing: 0.02em;
}

/* ---------- Editorial / alternating sections ---------- */

.editorial { background: var(--cream-deep); padding: 2.5em 0; }
.editorial__intro { margin-bottom: 3em; }
.editorial__intro .section-lead { max-width: none; }
.editorial__intro h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); }

.editorial-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 4em;
	align-items: center;
	margin-bottom: 5em;
}
.editorial-row:last-child { margin-bottom: 0; }
.editorial-row--reverse .editorial-row__media { order: 2; }
.editorial-row--reverse .editorial-row__text { order: 1; }

.editorial-row__media img { border-radius: var(--radius); box-shadow: var(--shadow-soft); }
.editorial-row__text h3 { font-size: 1.8rem; }
.editorial-row__text p { color: var(--ink-soft); }
.editorial-row__text p.eyebrow { color: var(--gold); }

.editorial-row--stacked { grid-template-columns: 1fr; }
.editorial-row--stacked .editorial-row__media img { width: 100%; max-height: 640px; object-fit: cover; }

/* ============================================================
   Maison — mise en page éditoriale spécifique à maison.php
   ============================================================ */

.hero--soft .hero__media::after {
	background: linear-gradient(180deg, rgba(15,18,15,0.32) 0%, rgba(15,18,15,0.42) 40%, rgba(15,18,15,0.78) 100%);
}
.hero--soft { align-items: center; min-height: 58vh; }
.hero--soft .hero__content { padding: 2em 1.6em; }
.hero--soft .hero__content h1 { max-width: 34ch; }
.hero--soft .hero__lead { font-size: 1.27rem; }

.maison-full { padding: 3em 0; background: var(--cream); }
.maison-full__media img { width: 100%; aspect-ratio: 16 / 7; object-fit: cover; display: block; }
.maison-full__text { max-width: 60ch; margin-top: 2em; }
.maison-full__text h2 { font-size: clamp(1.8rem, 3.2vw, 2.4rem); margin-bottom: 0.5em; }
.maison-full__text p { color: var(--ink-soft); font-size: 1.1rem; }

.maison-split { padding: 3em 0; background: var(--cream-deep); }
.maison-split--cuisine { background: var(--cream); padding-bottom: 4.5em; }
.maison-split--cream { background: var(--cream); }
.maison-split__header { margin-bottom: 2.4em; }
.maison-split__header h2 { font-size: clamp(1.8rem, 3.2vw, 2.4rem); margin-bottom: 0; }
.maison-split__grid { display: grid; grid-template-columns: 1.3fr 1.2fr; gap: 3em; }
.maison-split__media-main img { width: 100%; height: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; }
.maison-split__text h2 { font-size: clamp(1.8rem, 3.2vw, 2.4rem); margin-bottom: 0.5em; }
.maison-split__text p { color: var(--ink-soft); font-size: 1.1rem; }
.maison-split__text p.maison-split__facts { font-size: 0.95rem; letter-spacing: 0.02em; text-align: center; color: var(--sauge-dark); padding-top: 0.6em; border-top: 1px solid rgba(44, 51, 44, 0.35); }
.maison-split__media-small { margin-top: 2em; }
.maison-split__media-small img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }

.maison-split--reverse .maison-split__grid { grid-template-columns: 1.2fr 1.3fr; }
.maison-split--reverse .maison-split__media-main { order: 2; }
.maison-split--reverse .maison-split__aside { order: 1; }
.maison-split--even .maison-split__grid { grid-template-columns: 1fr 1fr; }
.maison-split--text-lg .maison-split__text p { font-size: 1.27rem; }

.maison-panorama { padding: 3.5em 0; background: var(--cream-deep); }
.maison-panorama__media { max-width: 1200px; margin: 0 auto; }
.maison-panorama__media img { width: 100%; aspect-ratio: 21 / 9; object-fit: cover; display: block; }
.maison-panorama__caption { text-align: center; margin-top: 1.6em; font-size: 0.95rem; letter-spacing: 0.03em; color: var(--ink-soft); }

.maison-mosaic { padding: 3em 0 2.5em; background: var(--cream); }
.maison-mosaic__grid { position: relative; display: flex; align-items: flex-end; flex-wrap: wrap; gap: 1.4em; max-width: 1100px; margin: 0 auto 3.4em; }
.maison-mosaic__item img { width: 100%; display: block; object-fit: cover; box-shadow: 0 12px 30px -20px rgba(44, 51, 44, 0.3); }
.maison-mosaic__item--a { flex: 1 1 45%; }
.maison-mosaic__item--a img { aspect-ratio: 4 / 5; }
.maison-mosaic__item--b { flex: 1 1 28%; transform: translateY(-2em); }
.maison-mosaic__item--b img { aspect-ratio: 3 / 4; }
.maison-mosaic__item--c { flex: 1 1 20%; transform: translateY(1.5em); }
.maison-mosaic__item--c img { aspect-ratio: 1 / 1; }
.maison-mosaic__text { max-width: 60ch; margin: 0 auto; text-align: center; }
.maison-mosaic__text h2 { font-size: clamp(1.8rem, 3.2vw, 2.4rem); margin-bottom: 0.5em; }
.maison-mosaic__text p { color: var(--ink-soft); font-size: 1.1rem; margin-bottom: 1.2em; }

/* ---------- Comfort band ---------- */

.comfort-band { padding: 4em 0; background: var(--cream-deep); }
.comfort-band__intro { text-align: center; max-width: 46ch; margin: 0 auto 3.2em; }
.comfort-band__intro h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
.comfort-band__intro .section-lead { margin: 0 auto; }

.comfort-band__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
}
.comfort-item {
	text-align: center;
	padding: 0 1.8em;
	border-left: 1px solid var(--line);
}
.comfort-item:first-child { border-left: none; }
.comfort-item__icon {
	width: 80px; height: 80px;
	display: flex; align-items: center; justify-content: center;
	color: var(--sauge-dark);
	margin: 0 auto 1em;
	overflow: visible;
}
.comfort-item__icon svg { width: 56px; height: 56px; overflow: visible; }
.comfort-item h4 { font-size: 1.2rem; margin-bottom: 0.3em; color: var(--sauge); font-family: var(--font-sans); font-weight: 600; }
.comfort-item p { margin: 0; font-size: 1rem; color: var(--ink-soft); }

/* ---------- Room cards ---------- */

.rooms-intro { padding: 2.5em 0 1em; text-align: center; }
.rooms-intro h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
.rooms-intro .section-lead { margin: 0 auto; text-align: center; }

.rooms-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.8em;
	padding: 1.2em 0 2.5em;
}

/* ---------- Rooms slider (home page) ---------- */

.rooms-slider {
	position: relative;
	display: flex;
	align-items: center;
	gap: 1em;
	padding: 1.2em 0 2.5em;
}

.rooms-slider__track {
	overflow: hidden;
	flex: 1;
}

.rooms-slider__rail {
	display: flex;
	align-items: flex-start;
	gap: 1.8em;
	will-change: transform;
}

.rooms-slider__item {
	flex: 0 0 auto;
	width: var(--rooms-item-w, 320px);
}

.rooms-slider__item .room-card__desc {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.rooms-slider__item.castle-card { display: flex; flex-direction: column; }
.rooms-slider__item.castle-card .castle-card__body { flex: 1; }

.rooms-slider__arrow {
	flex: 0 0 auto;
	width: 3.4em;
	height: 3.4em;
	border-radius: 50%;
	border: none;
	background: #7e8f73;
	color: var(--white);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: var(--shadow-soft);
	transition: background 0.2s ease, transform 0.2s ease;
}
.rooms-slider__arrow svg { width: 1.5em; height: 1.5em; stroke-width: 2.4; }
.rooms-slider__arrow:hover { background: var(--ink); transform: scale(1.08); }

.room-card {
	background: var(--white);
	border-radius: var(--radius);
	overflow: hidden;
	box-shadow: var(--shadow-soft);
	display: flex;
	flex-direction: column;
	transition: transform 0.3s ease;
}
.room-card:hover { transform: translateY(-4px); }

.room-card__media { display: block; position: relative; aspect-ratio: 4/3; overflow: hidden; }
.room-card__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform 0.5s ease; }
.room-card__media img[src*="126-6X6A9330"] { object-position: center 75%; }
.room-card__media img[src*="140-6X6A9386"] { object-position: center 68%; }
.room-card:hover .room-card__media img { transform: scale(1.06); }
.room-card__badge {
	position: absolute; top: 1em; left: 1em;
	background: rgba(255,255,255,0.92);
	padding: 0.3em 0.9em;
	border-radius: 999px;
	font-size: 0.75rem;
	color: var(--sauge-dark);
	font-weight: 600;
}

.room-card__body { padding: 1.5em; display: flex; flex-direction: column; flex: 1; }
.room-card__body h3 { font-size: 1.4rem; margin-bottom: 0.3em; }
.room-card__meta { font-size: 0.82rem; color: var(--ink-soft); margin-bottom: 0.8em; letter-spacing: 0.02em; }
.room-card__price { font-family: var(--font-serif); font-size: 1.1rem; font-weight: 600; color: var(--sauge-dark); margin: -0.4em 0 0.8em; }
.room-card__desc { color: var(--ink-soft); font-size: 0.92rem; flex: 1; }
.room-card__actions { display: flex; gap: 0.8em; margin-top: 1.2em; }
.room-card__actions .btn { flex: 1; white-space: nowrap; }

/* ---------- Room common amenities band ---------- */

.room-common { padding: 3.5em 0; background: var(--cream-deep); }
.room-common__head { text-align: center; margin-bottom: 2.8em; }
.room-common__head h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); }
.room-common__grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.room-common__item { text-align: center; padding: 0 1.6em; border-left: 1px solid var(--line); }
.room-common__item:first-child { border-left: none; }
.room-common__item h4 { font-size: 1.05rem; margin-bottom: 0.3em; color: var(--sauge-dark); font-family: var(--font-sans); font-weight: 600; }
.room-common__item p { margin: 0; color: var(--ink-soft); font-size: 0.9rem; }
.room-common__note { text-align: center; margin: 2.2em auto 0; color: var(--ink-soft); font-size: 0.88rem; }

/* ---------- Room detail page ---------- */

.room-hero { padding: 3em 0 1em; }
.room-hero__eyebrow { color: var(--gold); }
.room-hero h1 { font-size: clamp(2rem, 4vw, 3rem); }
.room-hero .section-lead { max-width: 92ch; }

/* Slider photo de la chambre (hero) */
.room-slider { position: relative; margin-top: 2em; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-soft); }
.room-slider__track { position: relative; aspect-ratio: 16 / 10; cursor: zoom-in; }
.room-slider__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .5s ease; }
.room-slider__img.is-active { opacity: 1; }
.room-page--lisiere .room-slider__img[src*="89-6X6A9198"] { object-position: center 25%; }
.room-slider__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 2.6em; height: 2.6em; border: none; border-radius: 999px; background: rgba(255,255,255,.85); color: var(--ink); font-size: 1.4rem; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s ease; }
.room-slider__nav:hover { background: #fff; }
.room-slider__nav--prev { left: 1em; }
.room-slider__nav--next { right: 1em; }
.room-slider__dots { position: absolute; left: 0; right: 0; bottom: 1em; display: flex; gap: .5em; justify-content: center; }
.room-slider__dots span { width: 8px; height: 8px; border-radius: 999px; background: rgba(255,255,255,.5); }
.room-slider__dots span.is-active { background: #fff; }

/* Bandeau « Tout pour votre confort » sur la page chambre */
.comfort-band--room { background: var(--cream); padding-top: 2.5em; }
.comfort-band--room .comfort-band__intro h2 { font-size: clamp(1.53rem, 2.9vw, 2.21rem); }

/* Colonne image en regard du bloc « Faire une demande » */
.room-aside-grid { grid-template-columns: 1.15fr 1fr; align-items: center; }
.room-aside-grid .room-aside-img { width: 100%; display: block; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius); box-shadow: var(--shadow-soft); }
.room-sidebar--lg { padding: 2.6em; }
.room-sidebar--lg .room-sidebar__row { font-size: 1rem; padding: 0.75em 0; }
.room-sidebar--lg .form-hint { font-size: 0.9rem; }
.room-sidebar--lg .btn { margin-top: 1.6em; padding-top: 1em; padding-bottom: 1em; font-size: 1.05rem; }

/* Navigation chambre précédente / suivante */
.room-nav { display: flex; justify-content: space-between; gap: 1em; max-width: var(--max); margin: 0 auto; padding: 1em 1.6em 4.5em; }
.room-nav__link { display: inline-flex; align-items: center; gap: 0.9em; text-decoration: none; padding: 0.85em 1.4em; border: 1px solid var(--line); border-radius: 999px; background: var(--white); box-shadow: var(--shadow-soft); transition: background .2s ease, transform .2s ease; }
.room-nav__link:hover { background: var(--cream); transform: translateY(-2px); }
.room-nav__link--next { margin-left: auto; }
.room-nav__link--next .room-nav__label { text-align: right; }
.room-nav__arrow { font-size: 1.5rem; line-height: 1; color: var(--sauge-dark); }
.room-nav__label { display: flex; flex-direction: column; }
.room-nav__dir { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ink-soft); }
.room-nav__name { font-family: var(--font-serif); font-size: 1.2rem; color: var(--sauge-dark); }
@media (max-width: 560px) {
	.room-nav { padding-bottom: 3em; }
	.room-nav__dir { display: none; }
	.room-nav__link { padding: 0.7em 1em; }
}

.room-gallery { padding: 1em 0 3em; }
.room-gallery__main {
	position: relative;
	border-radius: var(--radius);
	overflow: hidden;
	aspect-ratio: 16/9;
	box-shadow: var(--shadow-soft);
	margin-bottom: 1em;
	cursor: zoom-in;
}
.room-gallery__main img { width: 100%; height: 100%; object-fit: cover; }
.room-gallery__nav {
	position: absolute; top: 50%; transform: translateY(-50%);
	width: 44px; height: 44px;
	background: rgba(255,255,255,0.85);
	border: none; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	cursor: pointer; font-size: 1.3rem; color: var(--sauge-dark);
}
.room-gallery__nav--prev { left: 1em; }
.room-gallery__nav--next { right: 1em; }

.room-gallery__thumbs { display: flex; gap: 0.7em; overflow-x: auto; padding-bottom: 0.4em; }
.room-gallery__thumbs img {
	width: 96px; height: 72px; object-fit: cover;
	border-radius: 8px; cursor: pointer; opacity: 0.6;
	border: 2px solid transparent;
	transition: opacity 0.2s ease, border-color 0.2s ease;
	flex-shrink: 0;
}
.room-gallery__thumbs img:hover { opacity: 0.9; }
.room-gallery__thumbs img.is-active { opacity: 1; border-color: var(--gold); }

.room-detail-grid {
	display: grid;
	grid-template-columns: 1.6fr 1fr;
	gap: 3.5em;
	padding: 1em 0 6em;
	align-items: start;
}

.room-detail-grid h2 { font-size: 1.5rem; margin-top: 1.6em; }
.room-detail-grid h2:first-child { margin-top: 0; }

.spec-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0.8em 1.5em; margin: 1em 0 2em; }

.room-equip {
	display: grid;
	grid-template-columns: 1.35fr 1fr;
	gap: 2.5em;
	margin: 2em 0 0;
	padding: 2em 2.2em;
	background: var(--cream);
	border: 1px solid var(--line);
	border-radius: var(--radius);
}
.room-equip h3 { font-size: 1.1rem; margin: 0 0 0.9em; color: var(--sauge-dark); }
.room-equip .spec-list { grid-template-columns: 1fr; gap: 0.55em; margin: 0; }
.room-equip .spec-list li { font-size: 0.9rem; }
.spec-list li { font-size: 0.92rem; color: var(--ink-soft); padding-left: 1.4em; position: relative; }
.spec-list li::before {
	content: '';
	position: absolute; left: 0; top: 0.55em;
	width: 6px; height: 6px; border-radius: 50%;
	background: var(--gold);
}

.room-sidebar {
	position: sticky;
	top: 6.5em;
	background: var(--white);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	padding: 1.8em;
}
.room-sidebar__row { display: flex; justify-content: space-between; font-size: 0.9rem; padding: 0.5em 0; border-bottom: 1px solid var(--line); }
.room-sidebar__row:last-of-type { border-bottom: none; }
.room-sidebar .btn { margin-top: 1.2em; }

/* ---------- Spaces / amenities sections ---------- */

.space-section { padding: 5em 0; }
.space-section--alt { background: var(--cream-deep); }
.space-section__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 4em;
	align-items: center;
}
.space-section__media img { border-radius: var(--radius); box-shadow: var(--shadow-soft); }
.space-section__text h2 { font-size: clamp(1.8rem, 3.2vw, 2.4rem); margin-bottom: 0.5em; }
.space-section__text p { color: var(--ink-soft); font-size: 1.1rem; }
.space-section__text p.eyebrow { color: var(--gold); font-size: 0.74rem; }

.amenity-tags { display: flex; flex-wrap: wrap; gap: 0.6em; margin-top: 1.4em; }
.amenity-tags span {
	background: var(--white);
	border: 1px solid var(--line);
	padding: 0.5em 1.1em;
	border-radius: 999px;
	font-size: 0.84rem;
	color: var(--ink-soft);
}
.space-section--alt .amenity-tags span { background: var(--cream); }

.space-section--compact { padding: 3em 0; }
.space-section--cream { background: var(--cream); }

.space-section__grid--reverse .space-section__media { order: 2; }
.space-section__grid--reverse .space-section__text { order: 1; }

.space-section__media--wide img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }

.space-section__media--duo { display: grid; gap: 1.2em; }
.space-section__media-main { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.space-section__media-inset { width: 72%; margin-left: auto; aspect-ratio: 4 / 3; object-fit: cover; }

.space-section__facts { margin-top: 1.4em; padding-top: 0.6em; border-top: 1px solid rgba(44, 51, 44, 0.35); font-size: 0.95rem; letter-spacing: 0.02em; text-align: center; color: var(--sauge-dark); }

.space-immersive__media {
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	margin: 2.6em calc(50% - 50vw);
}
.space-immersive__media img { display: block; width: 100%; height: clamp(320px, 42vw, 560px); object-fit: cover; }

.amenity-cards {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 2em;
	margin-top: 2em;
}
.amenity-card {
	background: var(--white);
	border-radius: var(--radius);
	overflow: hidden;
	box-shadow: var(--shadow-soft);
	display: flex;
	flex-direction: column;
}
.amenity-card__media { aspect-ratio: 4 / 3; overflow: hidden; }
.amenity-card__media img { width: 100%; height: 100%; object-fit: cover; }
.amenity-card__body { padding: 1.7em; }
.amenity-card__body h3 { font-size: 1.3rem; margin-bottom: 0.4em; }
.amenity-card__body p { color: var(--ink-soft); font-size: 0.95rem; }

/* ---------- Gallery page ---------- */

.gallery-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6em;
	padding: 2em 0;
}
.gallery-filters button {
	background: var(--white);
	border: 1px solid var(--line);
	padding: 0.55em 1.3em;
	border-radius: 999px;
	font-family: var(--font-sans);
	font-size: 0.85rem;
	color: var(--ink-soft);
	cursor: pointer;
	transition: background 0.2s ease, color 0.2s ease;
}
.gallery-filters button.is-active,
.gallery-filters button:hover { background: #7e8f73; color: var(--white); border-color: #7e8f73; }

.gallery-masonry {
	columns: 4 220px;
	column-gap: 0.9em;
	padding-bottom: 5em;
}
.gallery-masonry__item {
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	color: inherit;
	text-align: left;
	-webkit-appearance: none;
	appearance: none;
	break-inside: avoid;
	margin: 0 0 0.9em;
	border-radius: 10px;
	overflow: hidden;
	cursor: zoom-in;
	box-shadow: 0 10px 20px -14px rgba(44,51,44,0.4);
}
.gallery-masonry__item img { width: 100%; display: block; transition: transform 0.4s ease; }
.gallery-masonry--two {
	columns: auto;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	align-content: start;
	gap: 0.9em;
	max-width: 860px;
	margin: 0 auto;
}
.gallery-masonry--two .js-gallery-item { margin: 0; }
/*
 * Colonne du milieu (couloir + hero) : 2 photos paysage empilées pour
 * égaler la hauteur des 2 photos portrait de gauche/droite, qui « enjambent »
 * les 2 lignes — pas de recadrage (object-fit) sur couloir/hero : elles
 * gardent leur format paysage naturel.
 */
.gallery-masonry--two .js-gallery-item[data-entree-pos="4"] { grid-column: 1; grid-row: 1 / span 2; height: 100%; } /* photo 3 (facade-soir) */
.gallery-masonry--two .js-gallery-item[data-entree-pos="1"] { grid-column: 2; grid-row: 1; } /* photo 1 (couloir) */
.gallery-masonry--two .js-gallery-item[data-entree-pos="2"] { grid-column: 2; grid-row: 2; } /* photo 4 (hero) */
.gallery-masonry--two .js-gallery-item[data-entree-pos="3"] { grid-column: 3; grid-row: 1 / span 2; height: 100%; } /* photo 2 (entree) */
.gallery-masonry--two .js-gallery-item[data-entree-pos="3"] img,
.gallery-masonry--two .js-gallery-item[data-entree-pos="4"] img { height: 100%; object-fit: cover; }
.gallery-masonry__item--wide { column-span: all; margin-top: 0.9em; }
.gallery-masonry__item--wide img { max-height: 560px; object-fit: cover; }
/* Filtre spécifique actif (ex: Buanderie) : la mise en avant « grande photo »
   n'a de sens que noyée parmi les ~65 photos de « Toute la maison ». */
.gallery-masonry--filtered .gallery-masonry__item--wide { column-span: none; margin-top: 0; }
.gallery-masonry--filtered .gallery-masonry__item--wide img { max-height: none; }
.gallery-masonry__item:hover img { transform: scale(1.05); }

.lightbox {
	position: fixed; inset: 0;
	background: rgba(20, 24, 18, 0.94);
	display: flex; align-items: center; justify-content: center;
	z-index: 2000;
	padding: 2em;
	opacity: 0; visibility: hidden;
	transition: opacity 0.25s ease;
}
.lightbox.is-open { opacity: 1; visibility: visible; }
.lightbox__image { max-width: 90vw; max-height: 86vh; border-radius: 8px; box-shadow: 0 30px 60px rgba(0,0,0,0.5); }
.lightbox__close {
	position: absolute; top: 1.4em; right: 1.6em;
	background: none; border: none; color: var(--white);
	font-size: 2.4rem; line-height: 1; cursor: pointer;
}
.lightbox__nav {
	position: absolute; top: 50%; transform: translateY(-50%);
	background: rgba(255,255,255,0.15); border: none; color: var(--white);
	width: 48px; height: 48px; border-radius: 50%;
	font-size: 1.4rem; cursor: pointer;
}
.lightbox__nav--prev { left: 1.4em; }
.lightbox__nav--next { right: 1.4em; }

/* ---------- Location / decouvrir Blois ---------- */

.location-facts-band { background: var(--cream-deep); }
.fact {
	background: var(--cream);
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	padding: 1.7em 1.4em;
	text-align: center;
	font-size: 0.99rem;
	line-height: 1.45;
	color: var(--ink-soft);
	box-shadow: 0 6px 20px rgba(44, 51, 44, 0.05);
	box-sizing: border-box;
}
.fact strong {
	display: block;
	font-family: var(--font-serif);
	font-size: 1.54rem;
	line-height: 1.2;
	color: var(--sauge-dark);
	margin-bottom: 0.45em;
}
.fact__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px; height: 46px;
	margin: 0 auto 0.9em;
	border-radius: 50%;
	background: var(--white);
	color: var(--sauge-dark);
}
.fact__icon svg { width: 23px; height: 23px; }

.map-embed { border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-soft); margin: 1em 0 4em; }
.map-embed iframe { width: 100%; height: 420px; border: 0; display: block; }

.discover-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.4em; padding-bottom: 5em; }
.discover-grid--pair { grid-template-columns: repeat(2, 1fr); max-width: 760px; margin: 0 auto; padding-bottom: 0; }
.discover-card {
	background: var(--white);
	border-radius: var(--radius-sm);
	padding: 1.6em;
	border: 1px solid var(--line);
}
.discover-card h4 { font-size: 1.1rem; margin-bottom: 0.3em; }
.discover-card .distance { color: var(--gold); font-size: 0.85rem; font-weight: 600; }
.discover-card__media { margin: -1.6em -1.6em 1.2em; border-radius: var(--radius-sm) var(--radius-sm) 0 0; overflow: hidden; aspect-ratio: 16 / 10; }
.discover-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------- Castle grid ---------- */

.castle-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6em; }
.castle-card {
	background: var(--white);
	border-radius: var(--radius);
	overflow: hidden;
	box-shadow: var(--shadow-soft);
}
.castle-card__media { aspect-ratio: 16 / 10; background: var(--cream-deep); }
.castle-card__media img { width: 100%; height: 100%; object-fit: cover; }
.castle-card__body { padding: 1.2em 1.3em 1.5em; }
.castle-card__body h4 { font-size: 1.29rem; margin-bottom: 0.4em; }
.castle-card__body p { font-size: 0.99rem; color: var(--ink-soft); margin: 0; }

/* ---------- Availability calendar ---------- */

.availability-section { padding: 3em 0 6em; }
.calendar-legend { display: flex; gap: 1.6em; margin: 1.5em 0 2em; font-size: 0.85rem; }
.calendar-legend span { display: inline-flex; align-items: center; gap: 0.5em; }
.legend-dot { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.legend-dot--free { background: #cfe0c9; }
.legend-dot--taken { background: #e3b7b7; }
.legend-dot--blocked { background: #d9d3c4; }

.calendar-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1em; }
.calendar-nav button { background: var(--white); border: 1px solid var(--line); border-radius: 50%; width: 38px; height: 38px; cursor: pointer; }
.calendar-nav h3 { margin: 0; font-size: 1.3rem; text-transform: capitalize; }

.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 0.4em; }
.calendar-grid .dow { text-align: center; font-size: 0.75rem; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.05em; padding-bottom: 0.4em; }
.calendar-day {
	aspect-ratio: 1;
	display: flex; align-items: center; justify-content: center;
	border-radius: 8px;
	font-size: 0.85rem;
	background: #cfe0c9;
	color: var(--ink);
}
.calendar-day.is-empty { background: none; }
.calendar-day.is-taken { background: #e3b7b7; color: #6b3b3b; }
.calendar-day.is-blocked { background: #d9d3c4; color: #6b6250; }
.calendar-day.is-past { background: var(--cream-deep); color: #b7bdb0; }

.stay-calculator {
	background: var(--white);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	padding: 2em;
	margin-top: 3em;
}
.stay-calculator__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2em; }

/* ---------- Forms (shared) ---------- */

.form-group { margin-bottom: 1.3em; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2em; }

/* Widget Turnstile centré. */
.contact-turnstile { display: flex; justify-content: center; margin: 0.4em 0 1.6em; }
.form-group label { display: block; font-size: 0.85rem; font-weight: 600; margin-bottom: 0.5em; color: var(--sauge-dark); }
.form-hint { font-size: 0.78rem; color: var(--ink-soft); margin-top: 0.35em; }

.form-group input,
.form-group select,
.form-group textarea {
	width: 100%;
	padding: 0.85em 1em;
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	font-family: var(--font-sans);
	font-size: 0.95rem;
	background: var(--cream);
	color: var(--ink);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
	outline: none;
	border-color: var(--sauge);
	box-shadow: 0 0 0 3px rgba(124,141,116,0.18);
}
.form-group textarea { resize: vertical; min-height: 130px; }

.stepper { display: flex; align-items: center; gap: 0.7em; }
.stepper input {
	flex: 1;
	text-align: center;
	pointer-events: none;
	caret-color: transparent;
}
.stepper__btn {
	flex: 0 0 auto;
	width: 2.6em;
	height: 2.6em;
	border-radius: 50%;
	border: 1px solid var(--line);
	background: var(--white);
	color: var(--ink);
	font-size: 1.15rem;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.stepper__btn:hover { background: var(--sauge); border-color: var(--sauge); color: var(--white); }
.stepper__btn:disabled { opacity: 0.4; cursor: not-allowed; background: var(--white); border-color: var(--line); color: var(--ink); }

.checkbox-field { display: flex; align-items: flex-start; gap: 0.7em; font-size: 0.88rem; color: var(--ink-soft); }
.checkbox-field input { width: auto; margin-top: 0.25em; }

.alert { padding: 1em 1.3em; border-radius: var(--radius-sm); margin-bottom: 1.5em; font-size: 0.92rem; }
.alert-success { background: rgba(124,141,116,0.14); color: var(--sauge-dark); border: 1px solid rgba(124,141,116,0.35); }
.alert-error { background: rgba(196,68,68,0.1); color: #a83c3c; border: 1px solid rgba(196,68,68,0.3); }
.alert-info { background: rgba(120,120,120,0.08); color: var(--ink); border: 1px solid rgba(120,120,120,0.25); }

/* ---------- Booking flow ---------- */

.booking-section { padding: 3em 0 6em; }
.booking-steps { display: flex; gap: 0.6em; margin-bottom: 2.5em; }
.booking-steps__item {
	flex: 1;
	text-align: center;
	font-size: 0.8rem;
	color: var(--ink-soft);
	padding-bottom: 0.8em;
	border-bottom: 3px solid var(--line);
}
.booking-steps__item.is-active { color: var(--sauge-dark); border-color: var(--gold); font-weight: 600; }
.booking-steps__item.is-done { border-color: var(--sauge); }

.booking-card {
	max-width: 760px;
	margin: 0 auto;
	background: var(--white);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	padding: 2.5em;
}

/* Les fieldsets d'étape ne doivent apporter ni bordure ni padding UA. */
.js-booking-form fieldset { border: 0; margin: 0; padding: 0; min-inline-size: 0; }

.booking-summary { background: var(--cream-deep); border-radius: var(--radius-sm); padding: 1.4em 1.6em; margin: 1.5em 0; }
.booking-summary__row { display: flex; justify-content: space-between; padding: 0.4em 0; font-size: 0.92rem; }
.booking-summary__row.total { border-top: 1px solid var(--line); margin-top: 0.5em; padding-top: 0.8em; font-weight: 700; font-size: 1.05rem; color: var(--sauge-dark); }

.booking-nav { display: flex; justify-content: space-between; margin-top: 2em; }

/* ---------- Étape 2 : sélection / récapitulatif natif ---------- */

/* L'étape 2 (liste des hébergements) respire un peu plus large. */
.booking-card:has(.js-booking-step[data-step="2"]:not([hidden])) { max-width: 960px; }

.selection-card {
	display: flex;
	background: var(--cream);
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	overflow: hidden;
}
.selection-card__media { flex: 0 0 40%; position: relative; min-height: 240px; }
.selection-card__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.selection-card__body { padding: 1.6em 1.8em 1.8em; }
.selection-card__eyebrow {
	text-transform: uppercase; letter-spacing: 0.14em;
	font-size: 0.7rem; color: var(--gold); margin: 0 0 0.4em;
}
.selection-card__body h3 { margin: 0 0 0.3em; }
.selection-card__meta { color: var(--ink-soft); font-size: 0.92rem; margin: 0 0 0.2em; }
.selection-card__stay { color: var(--ink); font-size: 0.92rem; margin: 0 0 1.2em; }
.selection-card__note { font-size: 0.82rem; color: var(--ink-soft); margin: 0.8em 0 0; }

.selection-card__price {
	font-size: 1.15rem; font-weight: 600; color: var(--sauge-dark);
	margin: 0.5em 0 1em;
}
.selection-card__price--pending { font-size: 0.92rem; font-weight: 400; color: var(--ink-soft); }
.selection-card__price__note {
	display: block; font-size: 0.78rem; font-weight: 400; color: var(--ink-soft); margin-top: 0.15em;
}

.units-lead { font-size: 0.92rem; color: var(--ink-soft); margin: 0 0 1.2em; }
.units-empty { color: var(--ink-soft); padding: 0.5em 0 0.5em; }

.minstay-cta {
	display: flex; flex-wrap: wrap; align-items: center; gap: 0.8em 1.2em;
	background: var(--cream-deep);
	border-radius: var(--radius-sm);
	padding: 1em 1.3em;
	margin: 0 0 1.6em;
}
.minstay-cta__label { margin: 0; font-weight: 600; color: var(--sauge-dark); }

.unit-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1.2em;
}
.unit-card {
	display: flex; flex-direction: column;
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	overflow: hidden;
	background: var(--white);
}
.unit-card__media { position: relative; height: 170px; background: var(--cream-deep); }
.unit-card__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.unit-card__body { padding: 1em 1.1em 1.2em; display: flex; flex-direction: column; gap: 0.5em; flex: 1; }
.unit-card__body h4 { margin: 0; }
.unit-card__meta { color: var(--ink-soft); font-size: 0.88rem; margin: 0; }
.unit-card__price { font-size: 1rem; font-weight: 600; color: var(--sauge-dark); margin: 0; }
.unit-card__price--pending { font-size: 0.88rem; font-weight: 400; color: var(--ink-soft); }
.unit-card__price__note { display: block; font-size: 0.74rem; font-weight: 400; color: var(--ink-soft); margin-top: 0.1em; }
.unit-card__body .btn { margin-top: auto; }

@media (max-width: 640px) {
	.selection-card { flex-direction: column; }
	.selection-card__media { flex-basis: auto; min-height: 0; height: 200px; }
}

/* ---------- Étape finale : checkout SuperHote en iframe ---------- */

.booking-checkout__bar { margin: 0 0 1.2em; }
.booking-checkout__title { margin: 0 0 0.15em; }
.booking-checkout__note { font-size: 0.85rem; color: var(--ink-soft); margin: 0 0 1.2em; }
.booking-checkout { margin: 0; }
.booking-checkout-frame {
	display: block;
	width: 100%;
	border: 0;
	border-radius: var(--radius-sm);
	background: var(--cream-deep);
	/*
	 * Hauteur fixe généreuse (pas de height:vh) : le formulaire SuperHote
	 * doit tenir SANS scroll interne — sur mobile un iframe qui scrolle en
	 * interne se bloque au toucher. C'est la PAGE qui défile.
	 */
	min-height: 1500px;
}

@media (max-width: 700px) {
	/* Mobile : place au moteur, on masque titre / note / bouton retour. */
	.js-checkout-view .booking-checkout__bar,
	.js-checkout-view .booking-checkout__title,
	.js-checkout-view .booking-checkout__note { display: none; }

	/*
	 * L'iframe déborde jusqu'aux bords de l'écran (full-bleed) : annule le
	 * padding de .container + .booking-card quel que soit l'imbriquement.
	 */
	.js-checkout-view .booking-checkout {
		width: 100vw;
		margin-left: 50%;
		transform: translateX(-50%);
	}
	.booking-checkout-frame {
		border-radius: 0;
		/* Mise en page mobile SuperHote = colonne unique -> bien plus haute. */
		min-height: 2200px;
	}
}

/* ---------- Datepicker (flatpickr) — habillage aux couleurs du site ---------- */

.flatpickr-calendar {
	font-family: inherit;
	border-radius: var(--radius-sm);
	box-shadow: var(--shadow-soft);
	border: 1px solid var(--line);
}
.flatpickr-months .flatpickr-month,
.flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-current-month input.cur-year { color: var(--ink); }
.flatpickr-months .flatpickr-prev-month svg,
.flatpickr-months .flatpickr-next-month svg { fill: var(--sauge-dark); }
.flatpickr-weekday { color: var(--ink-soft); font-weight: 600; }
.flatpickr-day { color: var(--ink); border-radius: var(--radius-sm); }
.flatpickr-day:hover,
.flatpickr-day:focus { background: var(--cream-deep); border-color: var(--cream-deep); }
.flatpickr-day.today { border-color: var(--gold); }
.flatpickr-day.selected,
.flatpickr-day.selected:hover,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
	background: var(--sauge);
	border-color: var(--sauge);
	color: #fff;
}
.flatpickr-day.flatpickr-disabled,
.flatpickr-day.flatpickr-disabled:hover,
.flatpickr-day.prevMonthDay.flatpickr-disabled,
.flatpickr-day.nextMonthDay.flatpickr-disabled {
	cursor: not-allowed;
	color: rgba(40, 40, 40, 0.22);
	text-decoration: line-through;
	background: repeating-linear-gradient(45deg, transparent, transparent 4px, rgba(0, 0, 0, 0.035) 4px, rgba(0, 0, 0, 0.035) 8px);
}

/* ---------- Confirmation ---------- */

.confirmation-section { padding: 6em 0; text-align: center; }
.confirmation-icon { width: 72px; height: 72px; margin: 0 auto 1.4em; border-radius: 50%; background: var(--cream-deep); display: flex; align-items: center; justify-content: center; color: var(--sauge-dark); }
.confirmation-card { max-width: 560px; margin: 2em auto 0; background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow-soft); padding: 2em; text-align: left; }

/* ---------- Reviews ---------- */

.reviews-section { padding: 2.2em 0; background: var(--cream-deep); }
.reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6em; margin-top: 2.5em; }
.review-card { background: var(--white); border-radius: var(--radius-sm); padding: 1.8em; box-shadow: var(--shadow-soft); }
.review-card__stars { color: var(--gold); letter-spacing: 0.1em; margin-bottom: 0.6em; }
.review-card__demo { display: inline-block; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-soft); background: var(--cream-deep); padding: 0.2em 0.7em; border-radius: 999px; margin-bottom: 0.8em; }
.review-card__meta { font-size: 0.82rem; color: var(--ink-soft); margin-top: 1em; }

/* ---------- Stay options ---------- */

.stay-options { padding: 2.5em 0 4em; background: var(--cream); }
.stay-options--deep { background: var(--cream-deep); }

.maison-privatise { padding: 4em 0; background: var(--cream); }
.maison-privatise__inner { max-width: 920px; margin: 0 auto; text-align: center; }
.maison-privatise__inner h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); margin-bottom: 0.4em; }
.maison-privatise__inner > p:not(.eyebrow) { color: var(--ink-soft); font-size: 1.1rem; margin-bottom: 0; }
.maison-privatise__inner p.maison-privatise__price { font-family: var(--font-serif); font-size: 1.25rem; font-weight: 600; color: var(--sauge-dark); margin: 0.7em 0 1em; }
.maison-privatise__inner .btn { margin-top: 1.4em; }
.maison-privatise__grid { margin: 2.4em 0; }
.maison-privatise__grid .comfort-item h4 { font-size: 1.08rem; }
.maison-privatise__grid .comfort-item p { font-size: 0.9rem; }
@media (max-width: 720px) {
	.maison-privatise__grid { grid-template-columns: 1fr 1fr; gap: 2em 0; }
}
.stay-options__head { text-align: center; max-width: 70ch; margin: 0 auto 3em; }
.stay-options__head h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
.stay-options__head p { margin: 1em auto 0; max-width: 65ch; color: var(--ink-soft); font-size: 1.05rem; }
.stay-options__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5em; max-width: 1000px; margin: 0 auto; }
.stay-option {
	background: var(--white);
	border-radius: var(--radius);
	overflow: hidden;
	box-shadow: var(--shadow-soft);
	display: flex;
	flex-direction: column;
}
.stay-option__media { aspect-ratio: 16 / 9; }
.stay-option__media img { width: 100%; height: 100%; object-fit: cover; }
.stay-option__body { padding: 1.4em 1.6em 1.8em; }
.stay-option__body .eyebrow { font-size: 0.85rem; }
.stay-option__body h3 { font-size: 1.6rem; }
.stay-option__body p { font-size: 1.05rem; }
.stay-option__price { font-family: var(--font-serif); font-size: 1.45rem; font-weight: 600; color: var(--sauge-dark); margin: 0.7em 0 1em; }

/* ---------- CTA band ---------- */

.cta-band { background: var(--sauge-dark); color: var(--white); text-align: center; padding: 2.2em 1.6em; }
.cta-band h2 { color: var(--white); font-size: clamp(1.7rem, 3.2vw, 2.4rem); }
.cta-band p { color: rgba(255,255,255,0.82); max-width: 52ch; margin: 0 auto 1.6em; }

.cta-band--photo {
	position: relative;
	padding: 5.5em 1.6em;
	overflow: hidden;
	background: var(--sauge-dark);
}
.cta-band__media { position: absolute; inset: 0; }
.cta-band__media img { width: 100%; height: 100%; object-fit: cover; }
.cta-band__media::after {
	content: '';
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(15,18,15,0.5) 0%, rgba(15,18,15,0.72) 100%);
}
.cta-band__content { position: relative; z-index: 2; max-width: 620px; margin: 0 auto; }
.cta-band__content h1, .cta-band__content h2 { color: var(--white); font-size: clamp(1.8rem, 3.4vw, 2.6rem); text-shadow: 0 2px 16px rgba(0,0,0,0.6); }
.cta-band__content p { color: rgba(255,255,255,0.92); max-width: 52ch; margin: 0 auto 1.8em; text-shadow: 0 1px 10px rgba(0,0,0,0.55); }
.cta-band__actions { display: flex; gap: 1em; justify-content: center; flex-wrap: wrap; }

/* ---------- Simple page (legal, rules) ---------- */

.simple-page { padding: 5em 0 6em; }
.simple-page__content { max-width: 74ch; }
.simple-page__content h2 { margin-top: 1.8em; font-size: 1.4rem; }
.simple-page__content p { color: var(--ink-soft); }

.rules-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.2em; margin: 2em 0; }
.rule-card { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 1.4em 1.6em; display: flex; gap: 1em; align-items: flex-start; }
.rule-card__icon { color: var(--sauge-dark); flex-shrink: 0; display: flex; align-items: center; }
.rule-card__icon svg { width: 26px; height: 26px; overflow: visible; }

.reglement-band { padding: 3em 0; }
.reglement-band--cream { background: var(--cream); }
.reglement-band--deep { background: var(--cream-deep); }
.reglement-band h2 { margin-top: 0; }
.reglement-band .container > :last-child { margin-bottom: 0; }

.reglement-note {
	margin: 1.6em 0 0;
	padding-top: 1.1em;
	border-top: 1px solid rgba(44, 51, 44, 0.18);
	color: var(--ink-soft);
	font-size: 0.9rem;
	font-style: italic;
}

/* ---------- Footer ---------- */

.site-footer { background: #7e8f73; color: rgba(255,255,255,0.78); padding: 4.5em 0 0; }
.site-footer__inner { max-width: var(--max); margin: 0 auto; padding: 0 1.6em; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 2.5em; padding-bottom: 3em; }
.site-footer .site-logo__mark { font-family: var(--font-serif); font-size: 1.6rem; color: var(--white); }
.site-footer__brand p { margin-top: 0.6em; max-width: 30ch; }
.site-footer__col h4 { color: var(--white); font-family: var(--font-sans); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 1em; }
.site-footer__col { display: flex; flex-direction: column; gap: 0.6em; font-size: 0.9rem; }
.site-footer__col a:hover { color: var(--white); }
.site-footer__bottom {
	border-top: 1px solid rgba(255,255,255,0.15);
	padding: 1.4em 1.6em;
	max-width: var(--max);
	margin: 0 auto;
	display: flex; justify-content: space-between; flex-wrap: wrap; gap: 0.8em;
	font-size: 0.82rem;
}
.site-footer__legal { display: flex; gap: 1.4em; }
.site-footer__legal a:hover { color: var(--white); }

/* ---------- Scroll reveal ---------- */

.reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease, transform 0.7s ease; }
.reveal.is-visible { opacity: 1; transform: translateY(0); }
.reveal.is-visible.cta-band { transform: none; }

/* ============================================================
   Responsive
   ============================================================ */

@media (max-width: 1080px) {
	.comfort-band__grid { grid-template-columns: repeat(2, 1fr); row-gap: 2.4em; }
	.comfort-item { border-left: none; }
	.comfort-item:nth-child(odd) { border-right: 1px solid var(--line); }
	.room-common__grid { grid-template-columns: repeat(2, 1fr); row-gap: 2em; }
	.room-common__item { border-left: none; }
	.room-common__item:nth-child(odd) { border-right: 1px solid var(--line); }
	.rooms-grid { grid-template-columns: repeat(2, 1fr); }
	.discover-grid { grid-template-columns: repeat(2, 1fr); }
	.castle-grid { grid-template-columns: repeat(2, 1fr); }
	.reviews-grid { grid-template-columns: repeat(2, 1fr); }
	.room-detail-grid { grid-template-columns: 1fr; }
	.room-sidebar { position: static; }
}

@media (max-width: 860px) {
	.site-nav {
		position: fixed; top: 0; right: 0; bottom: 0;
		z-index: 550;
		width: min(82vw, 340px);
		background: var(--cream);
		flex-direction: column;
		align-items: flex-start;
		justify-content: flex-start;
		padding: 6em 2em 2em;
		box-shadow: -14px 0 34px rgba(44,51,44,0.18);
		transform: translateX(100%);
		transition: transform 0.3s ease;
	}
	.site-nav.is-open { transform: translateX(0); }
	.site-nav ul { flex-direction: column; align-items: flex-start; gap: 1.4em; }
	.site-nav .nav-reserve { display: none; }
	.site-header__actions { display: flex; }
	.nav-toggle { display: flex; }
	.lang-switch__menu { left: 0; right: auto; }

	.editorial-row, .editorial-row--reverse { grid-template-columns: 1fr; }
	.editorial-row--reverse .editorial-row__media,
	.editorial-row--reverse .editorial-row__text { order: 0; }

	.maison-split__grid,
	.maison-split--reverse .maison-split__grid,
	.maison-split--even .maison-split__grid { grid-template-columns: 1fr; }
	.maison-split--reverse .maison-split__media-main,
	.maison-split--reverse .maison-split__aside { order: initial; }
	.maison-mosaic__grid { flex-direction: column; }
	.maison-mosaic__item--a, .maison-mosaic__item--b, .maison-mosaic__item--c { flex: 1 1 100%; transform: none; }
	.maison-panorama__media img { aspect-ratio: 4 / 3; }

	.details__grid { grid-template-columns: 1fr; grid-template-rows: none; }
	.details__large { grid-row: auto; aspect-ratio: 4 / 3; }
	.details__small:nth-child(3) { margin-top: 0; }

	.stay-options__grid { grid-template-columns: 1fr; }

	.garden-split__grid { grid-template-columns: 1fr; }
	.garden-split__small { align-self: auto; }
	.room-mosaic__accent { width: 55%; right: -0.8em; bottom: -1.2em; }

	.space-section__grid { grid-template-columns: 1fr; }
	.space-section--alt .space-section__media { order: -1; }
	.space-section--media-last .space-section__media { order: 2; }
	.amenity-cards { grid-template-columns: 1fr; }
	.space-immersive__media img { height: 320px; }

	.form-row, .stay-calculator__row { grid-template-columns: 1fr; }
	.site-footer__inner { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
	.rooms-slider { flex-wrap: wrap; justify-content: center; row-gap: 1em; }
	.rooms-slider__track { flex: 1 1 100%; order: 1; }
	.rooms-slider__arrow--prev { order: 2; }
	.rooms-slider__arrow--next { order: 3; }
	.rooms-slider__arrow { width: 2.6em; height: 2.6em; }
}

@media (max-width: 640px) {
	.comfort-item { padding: 0 1em; }
	.comfort-item__icon { width: 56px; height: 56px; margin-bottom: 0.7em; }
	.comfort-item__icon svg { width: 38px; height: 38px; }
	.room-common__grid { grid-template-columns: 1fr; row-gap: 1.8em; }
	.room-common__item { border-right: none; }
	.rooms-grid { grid-template-columns: 1fr; }
	.discover-grid { grid-template-columns: 1fr; }
	.discover-grid--pair { grid-template-columns: 1fr; }
	.castle-grid { grid-template-columns: 1fr; }
	.reviews-grid { grid-template-columns: 1fr; }
	.rules-grid { grid-template-columns: 1fr; }
	.gallery-masonry { columns: 2 160px; }
	.site-footer__inner { grid-template-columns: 1fr; }
	.spec-list { grid-template-columns: 1fr; }
	.room-equip { grid-template-columns: 1fr; gap: 1.6em; padding: 1.5em 1.6em; }
	.hero { min-height: 94vh; }
	.booking-card { padding: 1.6em; }
	.booking-steps__item span { display: none; }
}
