/* ==========================================================================
   Snoeck Container v2 — reproduction fidèle des styles Elementor d'origine.
   Valeurs extraites des CSS compilés de production (post-16/33/37/46/403/472).
   Breakpoints Elementor : desktop, ≤1024px, ≤767px.
   ========================================================================== */

/* ---------- Fontes locales ---------- */
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 300; font-display: swap; src: url('../fonts/poppins-300-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 300; font-display: swap; src: url('../fonts/poppins-300-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/poppins-400-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/poppins-400-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 600; font-display: swap; src: url('../fonts/poppins-600-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 600; font-display: swap; src: url('../fonts/poppins-600-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; }
/* Fontes héritées du design d'origine : descriptions Démarches + cartes Avis */
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/montserrat-400-latin.woff2') format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/manrope-400-latin.woff2') format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/manrope-500-latin.woff2') format('woff2'); }

/* ---------- Tokens (kit Elementor 16) ---------- */
:root {
	--c-primary: #D91F23;
	--c-primary-hover: #CA0B0F;
	--c-secondary: #FECA00;
	--c-text: #14243B;
	--c-dark-hover: #101E31;
	--c-nav-active: #324A6D;
	--c-soft: #F8F8F8;
	--c-grey: #EFEFEF;
	--c-divider: #000000;
	--c-card-border: #C4CBDB;
	--c-icon-white: #FFFFFFD6;
	--halo: radial-gradient(at top center, #FFD01340 0%, #00000000 79%);
	--font: 'Poppins', Helvetica, Arial, sans-serif;
	--container: 1300px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	font-family: var(--font);
	font-weight: 300;
	font-size: 16px;
	line-height: 1.5;
	color: var(--c-text);
	background: #FFFFFF;
	/* Lissage identique à l'ancien thème (reset.css de Hello Elementor) */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--c-primary); text-decoration: none; }
a:hover { color: var(--c-primary); text-decoration: none; }
h1, h2, h3, h4, h5 { margin: 0; font-weight: 600; }
h4 { color: var(--c-primary); font-size: 22px; text-transform: capitalize; line-height: 1.2; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }

.screen-reader-text { position: absolute !important; width: 1px; height: 1px; clip-path: inset(50%); overflow: hidden; white-space: nowrap; }
.skip-link { left: 8px; top: 8px; background: #fff; padding: 8px 16px; z-index: 200; }
.skip-link:focus { position: fixed !important; width: auto; height: auto; clip-path: none; }

/* Conteneur : 1300px, SANS padding latéral en desktop (container_padding = 0 du kit) */
.container { width: 100%; max-width: var(--container); margin-inline: auto; }
.container--narrow { max-width: 860px; }
.rounded { border-radius: 30px; }
.icon { width: 1em; height: 1em; display: inline-block; vertical-align: -0.125em; }

/* ---------- Sur-titre (16/400 uppercase, espacement 2px, #222) ---------- */
.surtitle {
	margin: 0;
	font-size: 16px;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 2px;
	line-height: 1.1;
	color: #222222;
}

/* ---------- Titres de section (65/600 navy, lh 1.2) ---------- */
.section-title {
	font-size: 65px;
	font-weight: 600;
	line-height: 1.2;
	color: var(--c-text);
}

/* ---------- Boutons pill (typo Accent : 16/400 capitalize, lh 1) ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	gap: 25px;
	padding: 12px 24px;
	background-color: var(--c-primary);
	color: #FFFFFF;
	fill: #FFFFFF;
	border: none;
	border-radius: 100px;
	font-family: var(--font);
	font-size: 16px;
	font-weight: 400;
	text-transform: capitalize;
	line-height: 1;
	cursor: pointer;
	transition: all .3s ease;
}
.btn:hover, .btn:focus { background-color: var(--c-primary-hover); color: #FFFFFF; }
.btn__icon { width: 1em; height: 1em; flex-shrink: 0; }
/* Variante navy (boutons Informations / Tarifs) — texte sans capitalize */
.btn--dark { background-color: var(--c-text); text-transform: none; }
.btn--dark:hover, .btn--dark:focus { background-color: var(--c-dark-hover); }

/* ---------- Préchargeur + transitions de page (réglages Elementor d'origine :
   fond #F4F4F4, image loading.png rotation 1550ms opacité .6, fondu 1000ms) ---------- */
.preloader { position: fixed; inset: 0; z-index: 999; display: flex; align-items: center; justify-content: center; background: #F4F4F4; opacity: 1; transition: opacity 1s ease; }
.preloader.is-done { opacity: 0; pointer-events: none; }
.preloader__spinner {
	width: 3vw;
	min-width: 40px;
	aspect-ratio: 1;
	background: url('../img/loading.png') center / contain no-repeat;
	animation: snoeck-spin 1.55s linear infinite;
	opacity: .6;
}
@keyframes snoeck-spin { to { transform: rotate(360deg); } }
/* Sortie de page : fondu entrant qui descend (e-page-transition-fade-in-down) */
.preloader.is-exit {
	pointer-events: auto;
	animation: snoeck-page-exit .5s ease forwards;
}
@keyframes snoeck-page-exit {
	from { opacity: 0; transform: translateY(-8%); }
	to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 1024px) { .preloader__spinner { width: 9vw; } }
@media (max-width: 767px) { .preloader__spinner { width: 12vw; } }

/* ---------- Barre coordonnées : ROUGE, texte blanc, à droite ---------- */
.topbar {
	background: var(--c-primary);
	box-shadow: 15px 15px 30px 5px rgba(0, 0, 0, 0.04);
}
.topbar__inner { display: flex; justify-content: flex-end; align-items: center; gap: 30px; padding-block: 10px; }
.topbar__item { display: inline-flex; align-items: center; color: #FFFFFF; font-size: 16px; font-weight: 300; transition: color .3s; }
.topbar__item .icon { width: 15px; height: 15px; color: #FFFFFF; margin-right: 8px; }
.topbar__item:hover { color: #FFFFFF; }

/* ---------- En-tête sticky (#F8F8F8) ---------- */
.site-header { position: sticky; top: 0; z-index: 95; background: var(--c-soft); }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; padding: 20px 0; }
.site-header__logo { flex: 1; display: flex; justify-content: flex-start; }
/* Comme l'original : boîte de 70 px de haut, image contenue dedans. Sous 1025 px,
   le menu (base 100 %) comprime le logo en flex — d'où un logo plus petit. */
.site-header__logo img, .site-header__logo .custom-logo {
	width: 100%;
	height: 70px;
	object-fit: contain;
	object-position: center center;
}
.site-header__name { font-weight: 600; font-size: 22px; color: var(--c-text); }
.site-nav { flex: 1; display: flex; justify-content: flex-end; }
.site-nav__list { display: flex; list-style: none; margin: 0; padding: 0; }
.site-nav__list li { margin-inline: calc(45px / 2); }
.site-nav__list a {
	display: inline-block;
	position: relative;
	padding: 5px 0;
	color: var(--c-text);
	font-size: 16px;
	font-weight: 400;
	line-height: 1;
	transition: color .3s;
}
.site-nav__list a:hover,
.site-nav__list .current-menu-item > a { color: var(--c-nav-active); }
.site-nav__list a::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 1px;
	background: var(--c-nav-active);
	opacity: 0;
	transition: opacity .3s;
}
.site-nav__list a:hover::after,
.site-nav__list .current-menu-item > a::after { opacity: 1; }

/* Bouton burger : fond transparent, icône rouge, bascule burger/croix (comme Elementor) */
.nav-toggle {
	display: none;
	align-items: center;
	justify-content: center;
	background-color: #02010100;
	border: 0;
	border-radius: 3px;
	padding: .25em;
	color: var(--c-primary);
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
}
.nav-toggle__icon { display: flex; line-height: 1; }
.nav-toggle__icon .icon { width: 1em; height: auto; fill: currentColor; }
.nav-toggle[aria-expanded="true"] .nav-toggle__icon--open,
.nav-toggle[aria-expanded="false"] .nav-toggle__icon--close { display: none; }

/* ---------- Hero accueil : pleine largeur, titre ROUGE, photo cover 60% ---------- */
.hero--full { background: #FFFFFF; }
.hero--full .hero__wrap { display: flex; align-items: stretch; }
.hero--full .hero__content { width: 40%; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 20px; padding: 100px 50px; }
.hero--full .hero__title { font-size: 65px; font-weight: 600; line-height: 1.2; color: var(--c-primary); }
.hero--full .hero__media { width: 60%; background-position: center center; background-repeat: no-repeat; background-size: cover; }

/* ---------- Hero halo (Containers / Tarifs) : gradient jaune, photo flottante ---------- */
.hero--halo { background-color: transparent; background-image: var(--halo); }
.hero--halo .hero__wrap { display: flex; align-items: stretch; padding-block: 50px; }
.hero--halo .hero__content { width: 50%; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 20px; padding: 50px 30px; }
.hero--halo .hero__title { max-width: 450px; font-size: 65px; font-weight: 600; line-height: 1.2; color: var(--c-text); }
.hero--halo .hero__media {
	width: 50%;
	background-position: center right;
	background-repeat: no-repeat;
	background-size: 85% auto;
}
.hero__text { font-size: 16px; font-weight: 300; line-height: 1.5; color: var(--c-text); }
.hero__actions { display: flex; flex-wrap: wrap; gap: 20px; }

/* ---------- Sections génériques ---------- */
.section { padding-block: 50px; }
.section--soft { background: var(--c-soft); }
.section__text { font-size: 16px; font-weight: 300; line-height: 1.5; color: var(--c-text); }

/* ---------- Équipe (fond #F8F8F8, gap 100, image arrondie 30px) ---------- */
.split-equipe { padding-block: 50px; background: var(--c-soft); }
.split-equipe .container { display: flex; gap: 100px; }
.split-equipe__media { width: 50%; display: flex; flex-direction: column; justify-content: center; }
.split-equipe__media img { border-radius: 30px; }
.split-equipe__content { width: 50%; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 20px; }
.split-equipe__content .surtitle { margin-top: 4%; }
.split-equipe__content .section-title { max-width: 550px; }

/* ---------- Containers & tarifs (texte 50% / grille 50%) ---------- */
.section-types { padding-block: 50px; }
.section-types .container { display: flex; }
.section-types__content { width: 50%; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 20px; padding: 0 50px; }
.section-types__content .surtitle { margin-top: 4%; }
.section-types__content .section-title { max-width: 450px; }
.tiles { width: 50%; display: flex; flex-wrap: wrap; justify-content: center; align-content: center; }
.tile { width: 50%; display: flex; flex-direction: column; justify-content: center; gap: 20px; padding: 5%; border: 0 solid var(--c-divider); }
.tile:nth-child(1) { border-width: 0 1px 1px 0; }
.tile:nth-child(2) { border-width: 0 0 1px 0; }
.tile:nth-child(3) { border-width: 0 1px 1px 0; }
.tile:nth-child(4) { border-width: 0 0 1px 0; }
.tile:nth-child(5) { border-width: 0 1px 0 0; }
.tile:nth-child(6) { border-width: 0; }
/* Icône « framed » : pastille rouge en cercle parfait (83px), SVG blanc 45px */
.icon-badge {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 83px;
	height: 83px;
	flex-shrink: 0;
	background-color: var(--c-primary);
	border-radius: 50%;
	color: var(--c-icon-white);
}
.icon-badge svg { display: block; height: 45px; width: auto; max-width: 54px; fill: var(--c-icon-white); }
.tile__title { font-size: 24px; font-weight: 600; line-height: 1.1; color: #212121; }

/* ---------- Localisation (carte 50% / encart #F8F8F8 50%) ---------- */
.section-map { padding-block: 50px; }
.section-map .container { display: flex; }
.section-map__media { width: 50%; display: flex; flex-direction: column; }
.section-map__box { width: 50%; min-height: 500px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 20px; padding: 50px; background: var(--c-soft); align-self: center; }
.section-map__box .section-title { max-width: 450px; }
#map { width: 100%; height: 500px; }
.marker_snoeck_container { background-image: url('../img/marker_small.png'); background-size: cover; width: 44px; height: 60px; cursor: pointer; top: -30px !important; }
.mapboxgl-popup { top: -30px !important; }
.mapboxgl-popup-content { font-family: 'Open Sans', sans-serif; padding: 10px 30px 10px 10px !important; }
.mapboxgl-popup strong { font-size: 14px; }
.mapboxgl-popup a { display: inline-block; background-color: #3d3e3f; color: white; text-decoration: none; margin-top: 8px; padding: 2px 4px; transition: all 0.3s ease; outline: none; }
.mapboxgl-popup a:hover { background-color: #64656a; color: white; }
.mapboxgl-ctrl-attrib-button { padding: 1px 6px; }
.mapboxgl-popup-close-button { padding: 1px 6px; line-height: 18px; }

.zone-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.zone-list li { display: flex; align-items: center; }
.zone-list .icon { width: 25px; height: 25px; flex-shrink: 0; margin-right: 8px; }
.zone-list__text { font-size: 15px; font-weight: 400; line-height: 1.5; color: var(--c-text); }
.zone--0 .icon { color: #82B860; }
.zone--1 .icon { color: #FF6200A1; }
.zone--2 .icon { color: #FF0000A1; }

/* ---------- Démarches (pastilles JAUNES, textes Montserrat) ---------- */
.section-demarches { padding-block: 50px; display: flex; flex-direction: column; gap: 50px; }
.section-demarches__head { display: flex; justify-content: center; }
.steps { display: flex; justify-content: flex-start; gap: 50px; }
.step { flex: 1 1 0; max-width: 25%; text-align: start; }
.step__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 85px;
	height: 85px;
	background-color: var(--c-secondary);
	border-radius: 50%;
	color: var(--c-icon-white);
	margin-bottom: 8px;
}
.step__icon .icon { width: auto; height: 35px; max-width: 48px; }
.step__title { font-size: 24px; font-weight: 600; line-height: 1.2; color: var(--c-text); margin-bottom: 18px; }
.step__text { margin: 0; font-family: 'Montserrat', Sans-serif; font-size: 18px; font-weight: 400; line-height: 1.5; color: var(--c-text); }

/* ---------- Avis clients (cartes bordées #C4CBDB, Manrope) ---------- */
.section-avis { padding-block: 50px; display: flex; flex-direction: column; gap: 50px; overflow: hidden; }
.reviews { display: flex; align-items: stretch; gap: 5%; }
.review {
	margin: 0;
	width: 33%;
	max-width: 33%;
	display: block;
	padding: 20px;
	border: 1px solid var(--c-card-border);
	border-radius: 5px;
	background: #FFFFFF;
}
.review__avatar-col { display: block; width: 12%; margin: 0 0 10px; }
.review__avatar { border-radius: 100px; width: 100%; }
.review__quote { margin: 0 0 15px; font-family: 'Manrope', Sans-serif; font-size: 16px; font-weight: 500; line-height: 1.5; color: #0D2D68; }
.review__name { font-family: 'Manrope', Sans-serif; font-size: 15px; font-weight: 400; line-height: 1.2; letter-spacing: 0.5px; text-transform: capitalize; color: #323232; }

/* ---------- Page Containers : fiches bordées ---------- */
.cards { display: flex; flex-wrap: wrap; justify-content: center; gap: 20px; padding-top: 50px; padding-bottom: 100px; }
.card {
	width: 47%;
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	gap: 20px;
	padding: 30px;
	border: 1px solid var(--c-card-border);
	border-radius: 5px;
}
.card__title { font-size: 24px; font-weight: 600; line-height: 1.1; color: #212121; }
.card__note { margin: 0; font-size: 16px; font-weight: 300; color: var(--c-text); }
.checklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.checklist li { display: flex; align-items: flex-start; }
.checklist__icon { width: 25px; height: 25px; flex-shrink: 0; margin-right: 8px; }
.checklist--yes .checklist__icon svg { fill: #C7E9C6; width: 25px; height: 25px; display: block; }
.checklist--no .checklist__icon svg { fill: #E9C6C6; width: 25px; height: 25px; display: block; }
.checklist__text { font-size: 15px; font-weight: 400; line-height: 1.5; color: var(--c-text); }

/* ---------- Page Tarifs : critères empilés (#F8F8F8) ---------- */
.section-criteres { display: flex; flex-direction: column; gap: 20px; }
.section-criteres__head { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; padding: 50px 30px; }
.section-criteres__head h2 { font-size: 30px; font-weight: 600; line-height: 1.2; color: var(--c-text); }
.criterion { display: flex; flex-direction: column; gap: 20px; padding: 20px; background: var(--c-soft); }
.criterion__head { display: flex; align-items: center; gap: 20px; }
.criterion__title { font-size: 24px; font-weight: 600; line-height: 1.1; color: #212121; }
.criterion__text { font-size: 16px; font-weight: 300; line-height: 1.5; color: var(--c-text); }
.criterion__text ul { margin: 0; padding-left: 1.2em; }

.section-reservation { padding-top: 50px; }
.section-reservation__head { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; padding: 0 30px; }
.section-reservation__head h2 { font-size: 30px; font-weight: 600; line-height: 1.2; color: var(--c-text); }

/* ---------- Pied de page ---------- */
.footer-contact { background: var(--c-grey); }
.footer-contact__inner { display: flex; gap: 50px; padding-block: 100px; }
.footer-contact__infos { width: 50%; display: flex; flex-direction: column; gap: 20px; }
.footer-contact__form { width: 50%; display: flex; flex-direction: column; }
.footer-contact__title { font-size: 65px; font-weight: 600; line-height: 1.2; color: #14243B30; }
.footer-contact__text { font-size: 16px; font-weight: 300; line-height: 1.5; color: var(--c-text); }
.contact-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.contact-list li { display: flex; }
.contact-list a, .contact-list__static { display: inline-flex; align-items: flex-start; color: var(--c-text); font-size: 16px; font-weight: 500; line-height: 1.5; transition: color .3s; }
.contact-list a:hover { color: var(--c-primary); }
.contact-list .icon { width: 20px; height: 20px; flex-shrink: 0; color: var(--c-primary); margin-right: 5px; position: relative; top: 1px; }

/* Formulaire de contact (styles Elementor Forms d'origine) */
.contact-form__row { display: flex; margin-inline: -5px; margin-bottom: 10px; }
.contact-form__field { flex: 1; margin: 0; padding-inline: 5px; }
.contact-form label { display: block; font-size: 16px; font-weight: 300; margin-bottom: 2px; color: var(--c-text); }
.contact-form input, .contact-form textarea {
	display: block;
	width: 100%;
	padding: 8px 16px;
	font-family: var(--font);
	font-size: 16px;
	font-weight: 400;
	line-height: 1.5;
	color: var(--c-text);
	background-color: #ffffff;
	border: 2px solid #D9E2EC;
	border-radius: 5px;
	outline: 0;
	appearance: none;
	transition: border-color .3s ease;
}
.contact-form input:focus, .contact-form textarea:focus { border-color: var(--c-primary); }
.contact-form .btn--submit {
	width: 100%;
	justify-content: center;
	border-radius: 3px;
	text-transform: none;
	gap: 10px;
}
.hp-field { position: absolute !important; left: -9999px; }

/* Validation JS : champ en erreur + message sous le champ. */
.field-error { display: block; margin-top: 4px; font-size: 14px; font-weight: 400; line-height: 1.4; color: var(--c-primary); }
.contact-form input.is-invalid, .contact-form textarea.is-invalid { border-color: var(--c-primary); }

.form-alert { padding: 15px; margin: 0 0 20px; border-radius: 10px; font-size: 16px; }
.form-alert--success { background: #A3D9A5; }
.form-alert--error { background: #FAB38B; }

.footer-legal { background: var(--c-grey); }
.footer-legal__inner { display: flex; align-items: center; padding-block: 10px; }
.footer-legal__links { width: 50%; margin: 0; font-size: 16px; font-weight: 300; line-height: 1.5; }
.footer-legal__signature { width: 50%; margin: 0; text-align: end; font-size: 16px; font-weight: 300; line-height: 1.5; }

/* ---------- Pages standard (CGV, confidentialité) ---------- */
.page-header { background-image: var(--halo); padding: 50px 0; }
.page-header .entry-title { font-size: 65px; font-weight: 600; line-height: 1.2; color: var(--c-text); padding: 0 30px; }
.entry-content { font-size: 16px; font-weight: 300; line-height: 1.5; }
.entry-content h2, .entry-content h3 { color: var(--c-text); margin: 1.2em 0 .5em; }
.entry-content h2 { font-size: 30px; }
.entry-content h3 { font-size: 22px; }
.section--page { padding-block: 50px; }
.section--page .container--narrow { padding-inline: 30px; }
.section--center { text-align: center; padding-block: 100px; }
.error-code { font-size: 200px; font-weight: 600; color: var(--c-primary); margin: 0; line-height: 1.2; }
.post-card { margin-bottom: 40px; }
.post-card__meta { font-size: 14px; opacity: .7; }

/* ---------- Construction ---------- */
.page-construction { display: flex; min-height: 100vh; align-items: center; background: #FFFFFF; }
.construction { width: 100%; padding: 40px 0; }
.construction .container { display: flex; align-items: center; gap: 40px; padding-inline: 30px; }
.construction .split__content { width: 50%; display: flex; flex-direction: column; align-items: flex-start; gap: 20px; }
.construction .split__content h1 { font-size: 65px; font-weight: 600; line-height: 1.2; color: var(--c-primary); }
.construction .split__media { width: 50%; }

/* ---------- Animations d'entrée (fadeIn / zoomIn d'Elementor) ---------- */
[data-anim] { opacity: 0; }
[data-anim].is-visible { animation-duration: 1s; animation-fill-mode: both; }
[data-anim="fadeIn"].is-visible { animation-name: snoeck-fade-in; }
[data-anim="zoomIn"].is-visible { animation-name: snoeck-zoom-in; }
@keyframes snoeck-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes snoeck-zoom-in { from { opacity: 0; transform: scale3d(.6, .6, .6); } to { opacity: 1; transform: scale3d(1, 1, 1); } }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	[data-anim] { opacity: 1; }
	[data-anim].is-visible { animation: none; }
	.preloader { display: none; }
}
.no-anim [data-anim] { opacity: 1; }

/* ==========================================================================
   ≤ 1024px (tablette Elementor)
   ========================================================================== */
@media (max-width: 1024px) {
	body { font-size: 14px; }
	h4 { font-size: 22px; }
	.section-title { font-size: 45px; }
	.btn { font-size: 14px; }

	/* Tailles de texte de l'original sous 1025 px : corps à 14 px… */
	.hero__text,
	.section__text,
	.criterion__text,
	.card__note,
	.footer-contact__text,
	.footer-legal__links,
	.footer-legal__signature,
	.entry-content,
	.contact-form label,
	.contact-form input,
	.contact-form textarea { font-size: 14px; }
	/* …mais les listes à puces colorées passent à 16 px */
	.zone-list__text,
	.checklist__text { font-size: 16px; }

	.topbar__inner { padding-block: 5px; padding-inline: 20px; }
	.topbar__item { font-size: 14px; }
	.site-header__inner { padding: 10px 20px; gap: 20px; }
	/* Le menu prend 100 % en base et comprime le logo (mécanique de l'original) */
	.site-header__logo { flex: 0 1 auto; min-width: 0; }
	.site-nav { flex: 0 1 100%; }

	/* Hero accueil */
	.hero--full .hero__wrap { flex-direction: column; gap: 20px; padding: 50px 20px; }
	.hero--full .hero__content { width: 100%; padding: 0; }
	.hero--full .hero__title { font-size: 45px; }
	.hero--full .hero__media { width: 100%; min-height: 300px; border-radius: 30px; }

	/* Hero halo : la photo est masquée sous 1025 px (comme dans l'original) */
	.hero--halo .hero__wrap { flex-direction: column; padding: 50px 20px; }
	.hero--halo .hero__content { width: 100%; padding: 0; }
	.hero--halo .hero__title { font-size: 45px; }
	.hero--halo .hero__media { display: none; }

	/* Équipe */
	.split-equipe { padding: 50px 20px; }
	.split-equipe .container { gap: 20px; justify-content: center; align-items: center; flex-wrap: wrap; }
	.split-equipe__media, .split-equipe__content { width: 100%; }

	/* Types */
	.section-types { padding: 50px 20px; }
	.section-types .container { flex-direction: column; gap: 20px; }
	.section-types__content { width: 100%; padding: 0; }
	.tiles { width: 100%; }
	.icon-badge { width: 103px; height: 103px; }
	.icon-badge svg { height: 65px; max-width: 74px; }
	.tile__title { font-size: 20px; }

	/* Localisation : pleine largeur sous 1025 px (l'encart porte son propre padding) */
	.section-map { padding: 0; }
	.section-map .container { flex-wrap: wrap; }
	.section-map__box { padding: 30px 20px; }

	/* Démarches */
	.section-demarches { padding: 50px 20px; gap: 20px; }
	.steps { justify-content: space-around; flex-wrap: wrap; gap: 66px; }
	.step { flex: 0 1 45%; max-width: 45%; }
	.step__title { font-size: 25px; }
	.step__text { font-size: 14px; }

	/* Avis */
	.section-avis { padding: 50px 20px; min-height: 380px; }
	.reviews { justify-content: space-between; flex-wrap: wrap; gap: 20px; }
	.review { width: 30%; max-width: 30%; }
	.review__avatar-col { width: 25%; }
	.review__quote { font-size: 14px; }
	.review__name { font-size: 14px; }

	/* Containers */
	.cards { padding-inline: 20px; padding-bottom: 50px; }
	.card { width: 47%; padding: 20px; }
	.checklist { gap: 20px; }

	/* Tarifs */
	.section-criteres__head { padding: 30px; }
	.section-reservation { padding-top: 0; }
	.section-reservation__head { padding: 20px; }
	/* Les pastilles des critères sont plus petites que celles des tuiles (50 px vs 65 px) */
	.criterion .icon-badge { width: 88px; height: 88px; }
	.criterion .icon-badge svg { height: 50px; max-width: 58px; }
	.zone-list { gap: 20px; }

	/* Tarifs */
	.section-criteres__head h2 { font-size: 45px; }
	.section-reservation__head h2 { font-size: 45px; }
	.criterion__title { font-size: 20px; }

	/* Footer */
	.footer-contact__inner { flex-wrap: wrap; gap: 20px; padding: 50px 20px; }
	.footer-contact__infos, .footer-contact__form { width: 100%; }
	.footer-contact__title { font-size: 45px; }
	.contact-list a, .contact-list__static { font-size: 14px; }
	.footer-legal__inner { padding-inline: 20px; }

	.page-header .entry-title { font-size: 45px; }
	.error-code { font-size: 145px; }
	.construction .split__content h1 { font-size: 45px; }
}

/* ==========================================================================
   ≤ 767px (mobile Elementor)
   ========================================================================== */
@media (max-width: 767px) {
	.surtitle { font-size: 13px; }
	.section-title { font-size: 28px; line-height: 1.1; }

	.topbar__inner { min-height: 50px; justify-content: center; flex-wrap: wrap; gap: 12px; }
	.topbar__item .icon { width: 12px; height: 12px; }

	.site-header__inner { min-height: 50px; padding: 10px 20px; }
	.site-header__logo { justify-content: flex-start; }
	/* En mobile c'est le bouton qui occupe la base 100 % et comprime le logo */
	.nav-toggle { display: flex; font-size: 20px; flex: 0 1 100%; justify-content: flex-end; }
	/* Dépliage du menu : scaleY + max-height sur 0,3 s depuis le haut (animation Elementor) */
	.site-nav {
		display: block;
		position: absolute;
		left: 0;
		right: 0;
		top: 100%;
		background: #F3F5F8;
		z-index: 9997;
		transform-origin: top;
		transform: scaleY(0);
		max-height: 0;
		overflow: hidden;
		transition: max-height .3s, transform .3s;
	}
	.site-nav.is-open {
		transform: scaleY(1);
		max-height: 1000vmax;
		overflow-x: hidden;
		overflow-y: auto;
	}
	.site-nav__list { flex-direction: column; }
	.site-nav__list li { margin: 0; }
	.site-nav__list a { display: block; padding: 14px 20px; font-size: 14px; text-transform: capitalize; color: #1C244B; }
	.site-nav__list a::after { content: none; }
	.site-nav__list a:hover, .site-nav__list .current-menu-item > a { background: #F9FAFD; color: #1C244B; }

	/* Hero accueil */
	.hero--full .hero__wrap { padding: 15% 5%; }
	.hero--full .hero__title { font-size: 40px; line-height: 1.1; }
	.hero--full .hero__media { min-height: 150px; }

	/* Hero halo */
	.hero--halo .hero__title { font-size: 28px; line-height: 1.1; }

	.split-equipe__content .section-title, .section-types__content .section-title, .section-map__box .section-title { font-size: 28px; line-height: 1.1; }

	/* Tuiles : 1 colonne, filet supérieur, centrées */
	.tile { width: 100%; padding: 20px; align-items: center; text-align: center; border-width: 1px 0 0 0 !important; }
	.tile:first-child { border-width: 0 !important; }
	.tile .icon-badge { align-self: center; }

	/* Localisation : texte au-dessus de la carte */
	.section-map .container { flex-direction: column-reverse; }
	.section-map__media, .section-map__box { width: 100%; }
	.section-map__box { padding: 50px 20px; }
	.zone-list .icon { width: 28px; height: 28px; }
	.zone-list__text { font-size: 16px; }

	/* Démarches */
	.steps { justify-content: center; gap: 43px; }
	.step { flex: 1 1 100%; max-width: 100%; }
	.step__title { font-size: 28px; line-height: 1.1; }

	/* Avis */
	.reviews { justify-content: center; gap: 50px; }
	.review { width: 100%; max-width: 100%; display: block; text-align: center; }
	.review__avatar-col { width: 25%; margin: 0 auto 10px; }

	/* Containers */
	.card { width: 100%; padding: 10% 5%; }
	.checklist__icon { width: 28px; height: 28px; }
	.checklist--yes .checklist__icon svg, .checklist--no .checklist__icon svg { width: 28px; height: 28px; }

	/* Tarifs */
	.section-criteres__head { padding: 50px 20px; }
	/* Icône au-dessus du titre, centrées, dans les encarts critères (les listes restent à gauche) */
	.criterion__head { flex-direction: column; align-items: center; }
	.criterion__head .icon-badge { align-self: center; } /* prime sur le align-self:flex-start de base */
	.criterion__title { text-align: center; }
	.section-criteres__head h2 { font-size: 28px; line-height: 1.1; }
	.section-reservation__head { padding: 50px 20px; }
	.section-reservation__head h2 { font-size: 28px; line-height: 1.1; }

	.footer-contact__title { font-size: 28px; line-height: 1.1; }
	/* Champs empilés en pleine largeur, comme le formulaire d'origine */
	.contact-form__row { flex-direction: column; margin-inline: 0; margin-bottom: 0; }
	.contact-form__field { padding-inline: 0; margin-bottom: 10px; }
	.footer-legal__inner { flex-direction: column; gap: 8px; }
	.footer-legal__links, .footer-legal__signature { width: 100%; text-align: start; }

	.page-header .entry-title { font-size: 28px; line-height: 1.1; }
	.error-code { font-size: 100px; line-height: 1; }
	.construction .container { flex-direction: column; }
	.construction .split__content, .construction .split__media { width: 100%; }
	.construction .split__content h1 { font-size: 28px; line-height: 1.1; }
}
