/* Anti-débordement horizontal : les sections pleine largeur (hero, bandes sombres,
   pied de page Elementor) utilisent width:100vw, qui inclut la scrollbar et créait un
   scroll horizontal à certaines largeurs (retour cliente). overflow-x:clip coupe ce
   débordement SANS créer de conteneur de défilement → le bloc réservation reste sticky
   (clip plutôt que hidden, précisément pour préserver position:sticky).
   Fallback `hidden` d'ABORD : les navigateurs sans support de `clip` (Safari < 16,
   anciens Chrome) l'ignoraient et le scroll horizontal réapparaissait « selon le
   navigateur ». Ils retombent donc sur `hidden` ; les modernes gardent `clip`. */
html,
body {
	overflow-x: hidden;
	overflow-x: clip;
}

.n2dp-search {
	--n2dp-forest: #3a5235;
	--n2dp-peps: #a8cb5d;
	--n2dp-cream: #fff9ed;
	--n2dp-soft: #f4f4f4;
	--n2dp-text-muted: rgba(30, 30, 30, 0.66);
	box-sizing: border-box;
	color: var(--n2dp-forest);
	font-family: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	max-width: 1110px;
	width: 100%;
}

.n2dp-search *,
.n2dp-search *::before,
.n2dp-search *::after {
	box-sizing: border-box;
}

.n2dp-search__tabs {
	align-items: flex-end;
	display: flex;
	gap: 6px;
	padding-left: 0;
}

.n2dp-search__tab {
	align-items: center;
	appearance: none;
	background: var(--n2dp-forest);
	border: 0;
	border-radius: 21px 21px 0 0;
	color: var(--n2dp-peps);
	cursor: pointer;
	display: inline-flex;
	font: 500 19px/1.5 "DM Sans", system-ui, sans-serif;
	gap: 9px;
	justify-content: center;
	min-height: 50px;
	min-width: 184px;
	padding: 10px 25px 11px;
	text-align: center;
	transition: background 160ms ease, color 160ms ease;
}

/* Icône d'onglet (maquette) : trait courant, suit la couleur du texte. */
.n2dp-search__tab svg {
	fill: none;
	flex: 0 0 20px;
	height: 20px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
	width: 20px;
}

/* Pictogramme PLEIN (randonneur de la marque) : pas de contour rapporté —
   l'!important neutralise aussi la règle générique `.n2dp-results svg`. */
.n2dp-search__tab svg.n2dp-icon--fill {
	stroke: none !important;
	stroke-width: 0 !important;
}

.n2dp-search__tab.is-active {
	background: var(--n2dp-cream);
	color: var(--n2dp-forest);
}

/* Survol / actif : ni bordure ni outline — l'onglet garde son radius et l'actif
   se fond avec le bloc crème (maquette). Le focus clavier reste signalé. */
.n2dp-search__tab:hover {
	background: #46603f;
}

.n2dp-search__tab.is-active:hover,
.n2dp-search__tab.is-active:focus,
.n2dp-search__tab.is-active:active {
	background: var(--n2dp-cream);
	color: var(--n2dp-forest);
}

.n2dp-search__tab:focus:not(:focus-visible) {
	outline: none;
}

.n2dp-search__tab:focus-visible,
.n2dp-search-field__control:focus,
.n2dp-search__submit:focus-visible {
	outline: 2px solid var(--n2dp-peps);
	outline-offset: 2px;
}

.n2dp-search__panel {
	background: var(--n2dp-cream);
	border-radius: 21px;
	min-height: 145px;
	padding: 39px 20px;
}

/* Le coin haut-gauche du panneau ne s'aplatit que sous le 1er onglet actif,
   pour fusionner visuellement onglet + bloc (cf. maquette, 3 états). */
.n2dp-search:has(.n2dp-search__tab:first-child.is-active) .n2dp-search__panel {
	border-top-left-radius: 0;
}

.n2dp-search__fields {
	display: grid;
	gap: 18px;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr) minmax(0, 0.74fr) minmax(0, 0.88fr) auto;
}

.n2dp-search-field {
	display: block;
	min-width: 0;
}

/* display:block ci-dessus écraserait l'attribut hidden des champs par onglet
   (Type/Voyageurs/Dates) — on rétablit la priorité du masquage. */
.n2dp-search-field[hidden] {
	display: none;
}

.n2dp-search-field__label {
	align-items: center;
	color: var(--n2dp-forest);
	display: flex;
	font-size: 17px;
	font-weight: 400;
	gap: 4px;
	letter-spacing: 0;
	line-height: 1.21;
	margin: 0 0 7px;
	white-space: nowrap;
}

.n2dp-search-field__label svg {
	fill: none;
	flex: 0 0 17px;
	height: 17px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
	width: 17px;
}

.n2dp-search-field__control {
	appearance: none;
	background-color: var(--n2dp-soft);
	border: 0;
	border-radius: 6px;
	box-shadow: inset 0 4px 10px rgba(0, 0, 0, 0.07);
	color: var(--n2dp-forest);
	display: block;
	font: italic 300 14px/1.3 "DM Sans", system-ui, sans-serif;
	height: 40px;
	max-width: 100%;
	padding: 10px 12px;
	width: 100%;
}

.n2dp-search-field__control::placeholder {
	color: var(--n2dp-text-muted);
	opacity: 1;
}

/* Autocomplétion Localisation (suggestions BAN / api-adresse.data.gouv.fr). */
.n2dp-search-field.n2dp-autocomplete-host {
	position: relative;
}
.n2dp-autocomplete {
	position: absolute;
	top: calc(100% + 4px);
	left: 0;
	right: 0;
	z-index: 60;
	margin: 0;
	padding: 6px;
	list-style: none;
	background: var(--n2dp-cream, #fff9ed);
	border: 1px solid rgba(58, 82, 53, 0.18);
	border-radius: 12px;
	box-shadow: 0 14px 34px rgba(26, 26, 26, 0.16);
	max-height: 300px;
	overflow-y: auto;
}
.n2dp-autocomplete__item {
	display: flex;
	flex-direction: column;
	gap: 1px;
	padding: 9px 12px;
	border-radius: 8px;
	cursor: pointer;
}
.n2dp-autocomplete__item strong {
	color: var(--n2dp-forest, #3a5235);
	font: 600 15px/1.3 "DM Sans", system-ui, sans-serif;
}
.n2dp-autocomplete__item span {
	color: rgba(58, 82, 53, 0.62);
	font: 400 12px/1.3 "DM Sans", system-ui, sans-serif;
}
.n2dp-autocomplete__item.is-active,
.n2dp-autocomplete__item:hover {
	background: rgba(58, 82, 53, 0.09);
}

.n2dp-search-field select.n2dp-search-field__control {
	background-image:
		linear-gradient(45deg, transparent 50%, var(--n2dp-forest) 50%),
		linear-gradient(135deg, var(--n2dp-forest) 50%, transparent 50%);
	background-position:
		calc(100% - 18px) 17px,
		calc(100% - 12px) 17px;
	background-repeat: no-repeat;
	background-size: 6px 6px, 6px 6px;
	padding-right: 32px;
}

.n2dp-search__submit-wrap {
	display: flex;
	justify-content: center;
	padding-top: 19px;
}

.n2dp-search__submit {
	appearance: none;
	background: var(--n2dp-forest);
	border: 0;
	border-radius: 5px;
	color: var(--n2dp-peps);
	cursor: pointer;
	font: 500 19px/1.5 "DM Sans", system-ui, sans-serif;
	min-height: 43px;
	padding: 7px 21px;
	text-align: center;
	transition: background 160ms ease, transform 160ms ease;
}

.n2dp-search__submit:hover {
	background: #2f462b;
}

.n2dp-search__submit:active {
	transform: translateY(1px);
}

.n2dp-filters {
	--n2dp-forest: #3a5235;
	--n2dp-peps: #a8cb5d;
	--n2dp-cream: #fff9ed;
	--n2dp-soft: #f4f4f4;
	--n2dp-muted-shadow: rgba(0, 0, 0, 0.07);
	box-sizing: border-box;
	color: var(--n2dp-forest);
	font-family: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	max-width: 724px;
	width: 100%;
}

.n2dp-filters *,
.n2dp-filters *::before,
.n2dp-filters *::after {
	box-sizing: border-box;
}

.n2dp-filter-panel {
	background: var(--n2dp-cream);
	color: var(--n2dp-forest);
	min-height: 868px;
	padding: 27px 52px 54px;
	position: relative;
	width: 100%;
}

.n2dp-filter-panel--event {
	min-height: 832px;
}

.n2dp-filter-panel--hebergement {
	min-height: 711px;
}

.n2dp-filter-panel__header {
	align-items: flex-start;
	display: flex;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: 55px;
}

.n2dp-filter-panel__title-wrap {
	align-items: center;
	display: flex;
	gap: 11px;
	min-width: 0;
}

.n2dp-filter-panel__title-wrap svg {
	fill: none;
	flex: 0 0 30px;
	height: 30px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.8;
	width: 30px;
}

.n2dp-filter-panel__title {
	color: var(--n2dp-forest);
	font: 700 33px/1.11 "DM Sans", system-ui, sans-serif;
	letter-spacing: 0;
	margin: 0;
}

.n2dp-filter-panel__close {
	align-items: center;
	appearance: none;
	background: transparent;
	border: 0;
	color: var(--n2dp-forest);
	cursor: pointer;
	display: inline-flex;
	font: 500 14px/1.3 "DM Sans", system-ui, sans-serif;
	gap: 5px;
	margin-top: 6px;
	padding: 0;
	text-align: center;
}

.n2dp-filter-panel__close svg {
	fill: none;
	flex: 0 0 28px;
	height: 28px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
	width: 28px;
}

.n2dp-filter-panel__quick-fields {
	display: grid;
	grid-template-columns: 144px 135px;
	grid-template-rows: repeat(2, auto);
	column-gap: 11px;
	row-gap: 21px;
	margin-bottom: 69px;
	max-width: 356px;
}

.n2dp-filter-panel--event .n2dp-filter-panel__quick-fields {
	grid-template-columns: 202px 163px;
	margin-bottom: 61px;
	max-width: 390px;
}

.n2dp-filter-field {
	display: block;
	min-width: 0;
}

.n2dp-filter-field--localisation {
	grid-column: 1 / 3;
	max-width: 202px;
}

.n2dp-filter-panel--event .n2dp-filter-field--localisation {
	grid-column: auto;
	max-width: none;
}

.n2dp-filter-field__label {
	align-items: center;
	color: var(--n2dp-forest);
	display: flex;
	font: 400 17px/1.21 "DM Sans", system-ui, sans-serif;
	gap: 4px;
	letter-spacing: 0;
	margin: 0 0 11px;
	white-space: nowrap;
}

.n2dp-filter-field__label svg,
.n2dp-filter-section__label svg,
.n2dp-filter-section__chevron svg {
	fill: none;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.n2dp-filter-field__label svg {
	flex: 0 0 17px;
	height: 17px;
	stroke-width: 1.7;
	width: 17px;
}

.n2dp-filter-field__control {
	appearance: none;
	background-color: var(--n2dp-soft);
	border: 0;
	border-radius: 6px;
	box-shadow: inset 0 4px 10px var(--n2dp-muted-shadow);
	color: var(--n2dp-forest);
	display: block;
	font: 400 14px/1.3 "DM Sans", system-ui, sans-serif;
	height: 40px;
	max-width: 100%;
	padding: 9px 11px;
	width: 100%;
}

.n2dp-filter-field__control::placeholder {
	color: rgba(58, 82, 53, 0.48);
	opacity: 1;
}

.n2dp-filter-field select.n2dp-filter-field__control {
	background-image:
		linear-gradient(45deg, transparent 50%, var(--n2dp-forest) 50%),
		linear-gradient(135deg, var(--n2dp-forest) 50%, transparent 50%);
	background-position:
		calc(100% - 17px) 17px,
		calc(100% - 11px) 17px;
	background-repeat: no-repeat;
	background-size: 6px 6px, 6px 6px;
	padding-right: 31px;
}

.n2dp-filter-panel__sections {
	display: flex;
	flex-direction: column;
	gap: 31px;
}

.n2dp-filter-panel--event .n2dp-filter-panel__sections {
	gap: 30px;
}

.n2dp-filter-section {
	color: var(--n2dp-forest);
}

.n2dp-filter-section__toggle {
	align-items: center;
	appearance: none;
	background: transparent;
	border: 0;
	color: inherit;
	cursor: pointer;
	display: inline-flex;
	gap: 9px;
	max-width: 100%;
	padding: 0;
	text-align: left;
}

.n2dp-filter-section__label {
	align-items: flex-start;
	display: inline-flex;
	flex: 1 1 auto;
	gap: 15px;
	min-width: 0;
}

.n2dp-filter-section__label span {
	font: 600 24px/1.02 "Albert Sans", "DM Sans", system-ui, sans-serif;
	letter-spacing: 0;
	min-width: 0;
	overflow-wrap: anywhere;
	text-transform: uppercase;
	white-space: normal;
	word-break: normal;
}

.n2dp-filter-section__label svg {
	flex: 0 0 24px;
	height: 24px;
	stroke-width: 1.5;
	width: 24px;
}

.n2dp-filter-section__chevron {
	align-items: center;
	display: inline-flex;
	flex: 0 0 29px;
	height: 29px;
	justify-content: center;
	transition: transform 160ms ease;
	width: 29px;
}

.n2dp-filter-section__chevron svg {
	height: 29px;
	stroke-width: 2;
	width: 29px;
}

.n2dp-filter-section.is-open .n2dp-filter-section__chevron {
	transform: rotate(180deg);
}

/* Replié par défaut, déplié via la classe .is-open (pilotée par le JS). On ne
   dépend PLUS de l'attribut [hidden] : certains thèmes / kits Elementor le
   neutralisent, et surtout la règle :has ci-dessous (même spécificité, plus bas
   dans le fichier) gagnait sur [hidden] → les catégories à sous-groupes (Activités)
   restaient dépliées et impossibles à replier. */
.n2dp-filter-section__body {
	display: none;
	flex-wrap: wrap;
	gap: 10px;
	padding: 15px 0 2px 39px;
}
.n2dp-filter-section.is-open .n2dp-filter-section__body {
	display: flex;
}

/* Sous-groupes (sections Activités hiérarchiques) : intitulé + ses pills. */
.n2dp-filter-section.is-open .n2dp-filter-section__body:has(.n2dp-filter-subgroup) {
	display: block;
	padding-bottom: 6px;
}

.n2dp-filter-subgroup + .n2dp-filter-subgroup {
	margin-top: 16px;
}

.n2dp-filter-subgroup__label {
	color: var(--n2dp-olive, #758958);
	font: 600 15px/1.2 "DM Sans", system-ui, sans-serif;
	letter-spacing: 0;
	margin: 0 0 9px;
	text-transform: uppercase;
}

.n2dp-filter-subgroup__choices {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.n2dp-filter-choice {
	cursor: pointer;
	display: inline-flex;
	position: relative;
}

.n2dp-filter-choice input {
	appearance: none;
	height: 1px;
	opacity: 0;
	position: absolute;
	width: 1px;
}

.n2dp-filter-choice span {
	background: var(--n2dp-soft);
	border: 1px solid rgba(58, 82, 53, 0.12);
	border-radius: 32px;
	color: var(--n2dp-forest);
	font: 500 16px/1.47 "DM Sans", system-ui, sans-serif;
	padding: 5px 14px;
	transition: background 160ms ease, border-color 160ms ease;
}

/* Sélection : la pill reste CLAIRE (cf. maquette 578:5852 — jamais de vert plein).
   On marque la sélection par un contour vert forêt + texte en gras, pas un fond vert. */
.n2dp-filter-choice input:checked + span {
	background: var(--n2dp-soft);
	border-color: var(--n2dp-forest);
	box-shadow: inset 0 0 0 1px var(--n2dp-forest);
	color: var(--n2dp-forest);
	font-weight: 700;
}

.n2dp-filter-panel__close:focus-visible,
.n2dp-filter-field__control:focus,
.n2dp-filter-section__toggle:focus-visible,
.n2dp-filter-choice input:focus-visible + span {
	outline: 2px solid var(--n2dp-peps);
	outline-offset: 2px;
}

.n2dp-detail {
	--n2dp-forest: #3a5235;
	--n2dp-peps: #a8cb5d;
	--n2dp-cream: #fff9ed;
	--n2dp-soft: #f4f4f4;
	--n2dp-blue: #a6bed6;
	--n2dp-brown: #4b4038;
	--n2dp-olive: #758958;
	box-sizing: border-box;
	color: #111;
	font-family: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	width: 100%;
}

.n2dp-detail *,
.n2dp-detail *::before,
.n2dp-detail *::after {
	box-sizing: border-box;
}

/* Intégration Hello Elementor : ce thème plafonne .site-main à 1140px et le
   centre, ce qui crée de grandes marges sur la fiche. On relève ce plafond,
   uniquement sur les fiches du plugin (single « activite »). */
body.single-activite .site-main {
	max-width: 1440px;
}

/* La fiche fournit son propre titre (hero) → on masque le titre du thème
   (repli si le filtre PHP hello_elementor_page_title n'existe pas). */
body.single-activite .page-header {
	display: none;
}

.n2dp-detail__inner {
	margin: 0 auto;
	max-width: 1440px;
	overflow: visible;
	width: 100%;
}

.n2dp-detail__breadcrumb {
	color: var(--n2dp-forest);
	display: flex;
	flex-wrap: wrap;
	font: 400 17px/1.21 "DM Sans", system-ui, sans-serif;
	gap: 7px;
	letter-spacing: 0;
	padding: 34px 90px 0;
}

.n2dp-detail__breadcrumb a {
	color: inherit !important;
	text-decoration: none;
}

.n2dp-detail__hero {
	padding: 38px 90px 23px;
}

.n2dp-detail__eyebrow {
	color: var(--n2dp-brown);
	font: 500 14px/1.3 "DM Sans", system-ui, sans-serif;
	margin: 0 0 10px;
}

.n2dp-detail-section h2,
.n2dp-detail-related h2,
.n2dp-detail-map-section h2 {
	color: var(--n2dp-forest);
	font-family: "Albert Sans", "DM Sans", system-ui, sans-serif;
	font-weight: 700;
	letter-spacing: 0;
	margin: 0;
}

/* H1 de la fiche — réduit vs token Figma 64px (retour cliente : trop gros à l'écran). */
.n2dp-detail h1 {
	color: var(--n2dp-forest);
	font-family: "DM Sans", system-ui, sans-serif;
	font-size: 46px;
	font-weight: 600;
	letter-spacing: -1.2px;
	line-height: 1.05;
	margin: 0;
	max-width: 980px;
}

/* Sous-titre de sous-section (« Gîte à proximité »…) — réduit (retour cliente). */
.n2dp-detail-nearby h2 {
	color: var(--n2dp-olive);
	font-family: "DM Sans", system-ui, sans-serif;
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.8px;
	line-height: 1.12;
	margin: 0;
}

.n2dp-detail__subtitle {
	color: var(--n2dp-olive);
	font: 700 25px/1.2 "DM Sans", system-ui, sans-serif;
	letter-spacing: 0;
	margin: 14px 0 0;
	max-width: 800px;
}

/* Galerie réduite (retour cliente : cadres d'images trop gros en arrivant sur la fiche). */
.n2dp-detail-gallery {
	display: grid;
	gap: 14px;
	grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr) minmax(0, 1fr);
	grid-template-rows: repeat(2, 148px);
	padding: 0 56px 48px;
}

/* Retour cliente : galerie de la fiche en photos nues, bien agencées —
   ni arrondi ni cadre (la grille du webdesign, sans border-radius). */
.n2dp-detail-gallery__item {
	background: linear-gradient(135deg, #d9d9d9, #edf1e7);
	min-height: 0; /* sinon (160px > rangée de 148px) les vignettes débordent et
	                  mangent l'écart vertical → espaces inégaux (retour cliente). */
	overflow: hidden;
}

.n2dp-detail-gallery__item--main {
	grid-row: 1 / 3;
}

.n2dp-detail-gallery__item img,
.n2dp-detail-nearby__image img,
.n2dp-detail-related-card__image img {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

/* Gabarits desktop selon le nombre de photos : écarts homogènes, aucune cellule
   vide (la grille fixe 3×2 ne composait proprement qu'à 5 photos — retour cliente).
   Borné au desktop (>768px) pour ne pas heurter le carrousel/grille mobile. */
@media (min-width: 769px) {
	.n2dp-detail-gallery--n2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-rows: 312px;
	}
	.n2dp-detail-gallery--n2 .n2dp-detail-gallery__item--main {
		grid-row: auto;
	}
	.n2dp-detail-gallery--n3 {
		grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
	}
	.n2dp-detail-gallery--n4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.n2dp-detail-gallery--n4 .n2dp-detail-gallery__item--main {
		grid-row: auto;
	}
}

.n2dp-detail__intro {
	display: grid;
	gap: 56px;
	grid-template-columns: minmax(0, 1fr) 408px;
	padding: 0 90px 70px;
}

.n2dp-detail__content {
	max-width: 620px;
	/* min-width:0 = autorise la colonne de grille à rétrécir sous la largeur
	   min-content de son contenu (sinon un mot/URL/élément large la fait déborder,
	   texte coupé à droite en mobile). break-word casse ces chaînes trop longues. */
	min-width: 0;
	overflow-wrap: break-word;
}

/* Médias/tableaux du contenu rédigé : jamais plus larges que la colonne. */
.n2dp-detail__content img,
.n2dp-detail__content figure,
.n2dp-detail__content iframe,
.n2dp-detail__content table,
.n2dp-detail__content pre {
	max-width: 100%;
}

.n2dp-detail__lead {
	color: var(--n2dp-forest);
	font-size: 20px;
	font-weight: 500;
	line-height: 1.3;
	margin: 0 0 24px;
}

.n2dp-detail__content p {
	font-size: 17px;
	letter-spacing: 0;
	line-height: 1.21;
	margin: 0 0 18px;
}

/* Liens dans les textes rédigés (description, infos, intro destination) :
 * vert plutôt que le rose du thème. Spécificité 0,2,0 + !important pour
 * passer devant la couleur de lien globale d'Elementor/Hello. */
/* Préfixe racine (.n2dp-detail / .n2dp-destination) → spécificité 0,2,1 pour
 * passer DEVANT l'armure « .n2dp-detail a { text-decoration:none !important } ». */
.n2dp-detail .n2dp-detail__content a,
.n2dp-detail .n2dp-detail-section a,
.n2dp-detail .n2dp-detail-feature a,
.n2dp-destination .n2dp-destination-intro__text a {
	color: var(--n2dp-forest) !important;
	/* -webkit-text-fill-color : iOS Safari auto-détecte les numéros de téléphone
	   et repasse leur lien en bleu/rose système PAR-DESSUS `color`. On force donc
	   aussi la couleur de remplissage du texte (sinon color seul est ignoré). */
	-webkit-text-fill-color: var(--n2dp-forest) !important;
	text-decoration-line: underline !important;
	text-decoration-color: var(--n2dp-peps) !important;
	text-underline-offset: 2px;
}
.n2dp-detail .n2dp-detail__content a:hover,
.n2dp-detail .n2dp-detail-section a:hover,
.n2dp-detail .n2dp-detail-feature a:hover,
.n2dp-destination .n2dp-destination-intro__text a:hover {
	color: var(--n2dp-peps) !important;
	-webkit-text-fill-color: var(--n2dp-peps) !important;
	text-decoration-color: var(--n2dp-forest) !important;
}

/* Sous-titres rédigés dans le contenu — Figma : DM Sans Bold olive. */
.n2dp-detail__content h2,
.n2dp-detail__content h3,
.n2dp-detail__content h4 {
	color: var(--n2dp-olive);
	font-family: "DM Sans", system-ui, sans-serif;
	font-weight: 700;
	letter-spacing: -0.5px;
	line-height: 1.11;
	margin: 28px 0 12px;
}
.n2dp-detail__content h2 { font-size: 33px; }
.n2dp-detail__content h3 { font-size: 26px; }
.n2dp-detail__content h4 { font-size: 21px; }

/* Listes du contenu rédigé (block editor). Deux pièges à corriger pour que les
   puces restent alignées avec le reste du texte (retour cliente : contenu pas
   « centré » / harmonisé) :
   1) l'éditeur emballe parfois chaque puce dans un <li list-style:none> contenant
      une sous-liste → double indentation (la puce se retrouvait très à droite) ;
   2) chaque puce peut être un <ul> séparé → gros écarts verticaux entre puces.
   On ramène à une puce simple, à retrait modéré, sans trous. */
.n2dp-detail__content ul,
.n2dp-detail__content ol {
	margin: 0 0 18px;
	padding-inline-start: 22px;
}
.n2dp-detail__content li {
	margin: 0 0 6px;
}
/* Emballage vide (list-style:none) → aucun retrait propre : c'est la sous-liste
   qu'il contient qui porte la puce et son unique niveau d'indentation. */
.n2dp-detail__content ul:has( > li[style*="list-style-type: none"] ),
.n2dp-detail__content ol:has( > li[style*="list-style-type: none"] ) {
	margin: 0;
	padding-inline-start: 0;
}
.n2dp-detail__content li[style*="list-style-type: none"] {
	list-style: none;
	margin: 0;
}
/* Puces consécutives sorties chacune dans son propre <ul> : on colle les listes. */
.n2dp-detail__content ul + ul,
.n2dp-detail__content ol + ol {
	margin-top: 0;
}

.n2dp-detail-card {
	align-self: start;
	background: #758958;
	border-radius: 20px;
	color: var(--n2dp-cream);
	/* min-width:0 : la carte est un item de grille (.n2dp-detail__intro). Sans ça,
	   une valeur interne longue (email, adresse) l'élargit et déborde → texte coupé
	   par le garde-fou anti-scroll au lieu de passer à la ligne (retour cliente). */
	min-width: 0;
	padding: 31px 31px 35px;
	position: sticky;
	top: 24px;
}

/* Boutons de la carte verte alignés à GAUCHE (retour cliente : « coller les 2 boutons à gauche »). */
.n2dp-detail-card .n2dp-detail-button {
	display: flex;
	margin-inline: 0;
	width: fit-content;
}

/* La carte verte peut empiler plusieurs boutons (réservations multiples + Ajouter à
   mon agenda + Voir l'agenda) : on espace chaque bouton de son précédent. */
.n2dp-detail-card .n2dp-detail-button + .n2dp-detail-button {
	margin-top: 12px;
}

/* Bouton « Voir l'agenda de … » : vert charte comme RÉSERVER (retour cliente), posé sous le bouton principal. */
.n2dp-detail-card__agenda.n2dp-detail-button {
	margin-top: 12px;
}

/* Boutons de l'encadré disposés à 2 PAR LIGNE (ils peuvent être nombreux :
   billetterie, contacter, appeler, ajouter à mon agenda, voir l'agenda…). */
.n2dp-detail-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 18px;
}
.n2dp-detail-card .n2dp-detail-card__actions .n2dp-detail-button {
	flex: 1 1 calc(50% - 5px);
	width: auto;
	min-width: 0;
	margin: 0;
	justify-content: center;
	text-align: center;
}

.n2dp-detail-card h2 {
	color: var(--n2dp-cream);
	font: 700 25px/1.15 "DM Sans", system-ui, sans-serif;
	letter-spacing: 0;
	margin: 0 0 14px;
}

.n2dp-detail-card__activity {
	font-size: 17px;
	line-height: 1.21;
	margin: 0 0 22px;
}

.n2dp-detail-card dl {
	display: grid;
	gap: 13px;
	margin: 0 0 24px;
	min-width: 0;
}

.n2dp-detail-card dt {
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	min-width: 0;
}

.n2dp-detail-card dd {
	font-size: 17px;
	line-height: 1.21;
	margin: 2px 0 0;
	min-width: 0;
	/* anywhere (et non break-word) : autorise aussi la coupure au calcul de la
	   largeur min-content → un email/mot très long passe à la ligne au lieu
	   d'élargir la carte. */
	overflow-wrap: anywhere;
}

/* Téléphone / email cliquables dans la carte (tel: et mailto: avec objet).
   Spécificité (0,2,0) : passe devant le « text-decoration: none » de l'armor. */
.n2dp-detail .n2dp-detail-card__link {
	color: inherit;
	/* Empêche iOS de repeindre le n° de tél. / l'email en bleu système sur la carte verte. */
	-webkit-text-fill-color: currentColor;
	/* Un email/lien long passe à la ligne au lieu d'élargir la carte (texte coupé). */
	overflow-wrap: anywhere;
	word-break: break-word;
	text-decoration: underline !important;
	text-underline-offset: 3px;
}

.n2dp-detail .n2dp-detail-card__link:hover {
	color: var(--n2dp-peps);
	-webkit-text-fill-color: var(--n2dp-peps);
}

/* Site web / Facebook / Instagram de l'établissement. */
.n2dp-detail-card__socials {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
	margin: 0 0 24px;
}

.n2dp-detail-card__socials a {
	align-items: center;
	color: inherit;
	display: inline-flex;
	font-size: 15px;
	font-weight: 500;
	gap: 7px;
}

.n2dp-detail-card__socials a:hover {
	color: var(--n2dp-peps);
}

.n2dp-detail-card__socials svg {
	fill: none;
	flex: 0 0 18px;
	height: 18px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
	width: 18px;
}

.n2dp-detail-button {
	align-items: center;
	background: var(--n2dp-peps);
	border: 2px solid var(--n2dp-peps);
	border-radius: 5px;
	color: var(--n2dp-forest);
	display: inline-flex;
	font: 500 19px/1.5 "DM Sans", system-ui, sans-serif;
	justify-content: center;
	min-height: 43px;
	padding: 7px 21px;
	text-decoration: none;
}

.n2dp-detail-button--outline {
	background: transparent;
	border-color: var(--n2dp-forest);
	color: var(--n2dp-forest);
}

.n2dp-detail-related--dark .n2dp-detail-button--outline {
	border-color: var(--n2dp-peps);
	color: var(--n2dp-peps);
}

.n2dp-detail-section,
.n2dp-detail-map-section,
.n2dp-detail-nearby {
	padding: 0 56px 70px;
}

/* Titres de section — réduits vs Figma 52px (retour cliente : trop gros). */
.n2dp-detail-section h2,
.n2dp-detail-map-section h2,
.n2dp-detail-nearby h2 {
	font-size: 34px;
	line-height: 1.06;
	margin-bottom: 22px;
}

.n2dp-detail-feature-grid,
.n2dp-detail-info-grid {
	display: grid;
	gap: 18px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.n2dp-detail-feature,
.n2dp-detail-info {
	background: var(--n2dp-cream);
	border-radius: 10px;
	color: var(--n2dp-brown);
	padding: 26px 30px;
}

.n2dp-detail-feature h3,
.n2dp-detail-info h3 {
	color: var(--n2dp-brown);
	font: 600 24px/1.02 "Albert Sans", "DM Sans", system-ui, sans-serif;
	letter-spacing: 0;
	margin: 0 0 14px;
}

.n2dp-detail-feature p,
.n2dp-detail-info p,
.n2dp-detail-nearby p {
	font-size: 17px;
	letter-spacing: 0;
	line-height: 1.21;
	margin: 0;
}

/* Lien externe d'une option/service (bon cadeau, formule anniversaire…). */
.n2dp-detail .n2dp-detail-feature__link {
	color: var(--n2dp-olive);
	display: inline-block;
	font-size: 15px;
	font-weight: 600;
	margin-top: 12px;
	text-decoration: underline !important;
	text-underline-offset: 3px;
}

.n2dp-detail .n2dp-detail-feature__link:hover {
	color: var(--n2dp-forest);
}

/* FAQ en accordéon ([n2dp_faq]) — déplié natif via <details>, style maison. */
.n2dp-faq {
	max-width: 880px;
	margin: 8px auto 48px;
	padding: 8px 16px 4px;
}

.n2dp-faq__title {
	color: var(--n2dp-forest, #3a5235);
	font-size: clamp(22px, 3vw, 30px);
	line-height: 1.2;
	margin: 0 0 18px;
}

.n2dp-faq__list {
	display: grid;
	gap: 12px;
}

.n2dp-faq__item {
	background: var(--n2dp-cream, #fff9ed);
	border: 1px solid rgba(58, 82, 53, 0.10);
	border-radius: 14px;
	overflow: hidden;
	transition: border-color 0.18s ease, box-shadow 0.18s ease;
}

.n2dp-faq__item[open] {
	border-color: rgba(58, 82, 53, 0.22);
	box-shadow: 0 6px 22px rgba(40, 56, 33, 0.07);
}

.n2dp-faq__question {
	align-items: center;
	color: var(--n2dp-forest, #3a5235);
	cursor: pointer;
	display: flex;
	font-weight: 600;
	font-size: 17px;
	gap: 14px;
	justify-content: space-between;
	list-style: none;
	padding: 18px 22px;
}

.n2dp-faq__question > span {
	min-width: 0;
}

.n2dp-faq__question::-webkit-details-marker {
	display: none;
}

.n2dp-faq__question svg {
	fill: none;
	flex: 0 0 20px;
	height: 20px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 2;
	transition: transform 0.2s ease;
	width: 20px;
}

.n2dp-faq__item[open] .n2dp-faq__question svg {
	transform: rotate(180deg);
}

.n2dp-faq__answer {
	margin: 0;
	padding: 0 22px 20px;
	color: #3d4a36;
	line-height: 1.6;
}

/* Vidéo de la fiche : embed responsive 16:9, compact sur desktop */
.n2dp-detail-video__frame {
	position: relative;
	width: min(100%, 560px);
	margin-inline: auto;
	aspect-ratio: 16 / 9;
	border-radius: 12px;
	overflow: hidden;
	background: #1c241a;
}
.n2dp-detail-video__frame iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}
/* repli navigateurs sans aspect-ratio */
@supports not (aspect-ratio: 16 / 9) {
	.n2dp-detail-video__frame { height: 315px; }
}
@media (max-width: 700px) {
	.n2dp-detail-video__frame {
		width: 100%;
	}
	@supports not (aspect-ratio: 16 / 9) {
		.n2dp-detail-video__frame { height: 0; padding-bottom: 56.25%; }
	}
}

.n2dp-detail-map {
	border-radius: 10px;
	min-height: 360px;
	overflow: hidden;
	width: 100%;
	z-index: 0; /* garde tuiles/contrôles Leaflet sous d'éventuels overlays du thème */
}

/* Leaflet transforme ce conteneur en .leaflet-container : garantir la hauteur. */
.n2dp-detail-map.leaflet-container {
	min-height: 360px;
	font: inherit;
}

/* Protège les tuiles/marqueurs Leaflet d'un éventuel `img { max-width: 100% }`. */
.n2dp-detail-map img {
	max-width: none;
}

.n2dp-detail-map-link {
	align-items: baseline;
	color: var(--n2dp-forest);
	display: inline-flex;
	flex-wrap: wrap;
	gap: 4px 10px;
	margin-top: 12px;
	text-decoration: none;
}

.n2dp-detail-map-link span {
	font-weight: 600;
}

.n2dp-detail-map-link small {
	color: rgba(58, 82, 53, 0.75);
	font-size: 14px;
	text-decoration: underline;
}

.n2dp-detail-why ul {
	column-gap: 90px;
	columns: 2;
	list-style: none;
	margin: 0;
	max-width: 920px;
	padding: 0;
}

.n2dp-detail-why li {
	break-inside: avoid;
	font-size: 17px;
	letter-spacing: 0;
	line-height: 1.21;
	margin: 0 0 21px;
	padding-left: 33px;
	position: relative;
}

.n2dp-detail-why li::before {
	background: var(--n2dp-peps);
	border-radius: 50%;
	content: "";
	height: 10px;
	left: 0;
	position: absolute;
	top: 5px;
	width: 10px;
}

.n2dp-detail-nearby {
	align-items: center;
	display: grid;
	gap: 70px;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
}

.n2dp-detail-nearby__image {
	background: #d9d9d9;
	border-radius: 10px;
	min-height: 360px;
	overflow: hidden;
}

.n2dp-detail-nearby__eyebrow {
	color: var(--n2dp-peps);
	font: 700 14px/1.3 "DM Sans", system-ui, sans-serif;
	letter-spacing: 0.08em;
	margin: 0 0 10px;
	text-transform: uppercase;
}

.n2dp-detail-nearby__loc {
	font-size: 17px;
	font-weight: 500;
	margin: 0 0 14px;
}

.n2dp-detail-nearby__cta {
	margin-top: 26px;
}

.n2dp-detail-related {
	padding: 60px 0 70px;
}

.n2dp-detail-related--dark {
	background: var(--n2dp-forest);
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	width: 100vw;
}

.n2dp-detail-related__inner {
	box-sizing: border-box;
	margin: 0 auto;
	max-width: 1100px;
	padding: 0;
	width: 100%;
}

.n2dp-detail-related h2 {
	font-size: 34px;
	line-height: 1.06;
	margin-bottom: 26px;
}

.n2dp-detail-related--dark h2 {
	color: var(--n2dp-peps);
}

.n2dp-detail-card-grid {
	display: grid;
	gap: 20px;
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Carte liée — maquette CARTE ÉVÈNEMENT / CARTE LIEU : photo portrait
   arrondie + voile léger, titre Albert Sans 24 taupe, mention 14. */
.n2dp-detail-related-card {
	color: var(--n2dp-brown, #4b4038) !important;
	display: grid;
	gap: 8px;
	text-decoration: none;
}

.n2dp-detail-related--dark .n2dp-detail-related-card {
	color: #f4f4f4 !important;
}

.n2dp-detail-related-card__image {
	aspect-ratio: 260 / 315;
	background: #d9d9d9;
	border-radius: 10px;
	display: block;
	overflow: hidden;
	position: relative;
}

.n2dp-detail-related-card__image::after {
	background: rgba(0, 0, 0, 0.1);
	border-radius: 10px;
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
}

.n2dp-detail-related-card strong {
	font: 600 24px/1.02 "Albert Sans", "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.24px;
}

.n2dp-detail-related-card span:last-child {
	font-size: 14px;
	font-weight: 500;
	line-height: 1.3;
}

/* Date d'évènement sur la carte « offre » (pages destinations + recommandations). */
.n2dp-detail-related-card__date {
	font: 700 13px/1.3 "DM Sans", system-ui, sans-serif;
	color: var(--n2dp-forest, #3a5235);
}
.n2dp-detail-related--dark .n2dp-detail-related-card__date {
	color: var(--n2dp-peps, #a8cb5d);
}

/* Distance depuis la fiche d'origine sur la carte « offre » (ex. « à 12 km »). */
.n2dp-detail-related-card__dist {
	font: 700 13px/1.3 "DM Sans", system-ui, sans-serif;
	color: var(--n2dp-forest, #3a5235);
}
.n2dp-detail-related--dark .n2dp-detail-related-card__dist {
	color: var(--n2dp-peps, #a8cb5d);
}

/* Variante de bande centrée (maquette Destinations) + texte d'intro. */
.n2dp-detail-related--centered h2 {
	text-align: center;
}

.n2dp-detail-related__intro {
	font-size: 17px;
	line-height: 1.3;
	margin: -18px auto 34px;
	max-width: 780px;
}

.n2dp-detail-related--centered .n2dp-detail-related__intro {
	text-align: center;
}

.n2dp-detail-related__more {
	display: flex;
	justify-content: center;
	margin-top: 38px;
}

.n2dp-detail-articles__more {
	align-items: center;
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin-top: 44px;
}

.n2dp-detail-articles__more-title {
	color: var(--n2dp-forest);
	font: 700 26px/1.1 "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.5px;
	margin: 0;
}

/* Cartes « article » plein-image (maquette Component 15) : grille 2×2. */
.n2dp-detail-card-grid--articles {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.n2dp-article-card {
	border-radius: 10px;
	display: flex;
	min-height: 362px;
	overflow: hidden;
	position: relative;
	text-decoration: none;
}

.n2dp-article-card::after {
	background: rgba(0, 0, 0, 0.2);
	content: "";
	inset: 0;
	position: absolute;
	z-index: 1;
}

.n2dp-article-card__bg {
	height: 100%;
	inset: 0;
	object-fit: cover;
	position: absolute;
	width: 100%;
}

.n2dp-article-card__body {
	color: #f4f4f4 !important;
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	padding: 32px 30px 36px;
	position: relative;
	z-index: 2;
}

.n2dp-article-card__eyebrow {
	font: 500 14px/1.3 "DM Sans", system-ui, sans-serif;
}

.n2dp-article-card__title {
	font: 700 33px/1.11 "DM Sans", system-ui, sans-serif;
	letter-spacing: -1.32px;
}

.n2dp-article-card__excerpt {
	font: 400 17px/1.21 "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.17px;
	max-width: 36ch;
}

.n2dp-article-card__btn {
	align-items: center;
	background: var(--n2dp-forest, #3a5235);
	border-radius: 5px;
	color: var(--n2dp-peps, #a8cb5d);
	display: inline-flex;
	font: 500 19px/1.5 "DM Sans", system-ui, sans-serif;
	margin-top: auto;
	min-height: 43px;
	padding: 7px 21px;
}

.n2dp-article-card:hover .n2dp-article-card__btn {
	background: #2f462b;
}

@media (max-width: 760px) {
	/* Onglets de type EMPILÉS sur mobile (retour cliente : 3 segments en ligne
	   trop serrés). Chaque type = un bouton pleine largeur, bien aéré ; les 3
	   restent visibles, plus de forme « onglet collé » au panneau. */
	.n2dp-search__tabs {
		flex-direction: column;
		align-items: stretch;
		gap: 8px;
		width: 100%;
		margin-bottom: 12px; /* air entre la pile et le panneau (plus de fusion) */
	}

	/* border-radius en !important : bat la règle verrouillée
	   « .n2dp-search-page .n2dp-search__tab » (0,2,0) qui force 21px 21px 0 0
	   pour la forme onglet. En pile, on veut des pilules pleines. */
	.n2dp-search__tab {
		flex: none;
		width: 100%;
		min-width: 0;
		min-height: 54px;
		justify-content: center;
		gap: 12px;
		font-size: 16px;
		border-radius: 14px !important;
	}

	.n2dp-search__tab svg {
		flex: 0 0 21px;
		height: 21px;
		width: 21px;
	}

	/* En-tête résultats : la pile d'onglets prend toute la largeur ; les outils
	   (Trier / Filtres) passent sur la ligne suivante. */
	.n2dp-results__head .n2dp-search__tabs {
		flex: 1 1 100%;
		width: 100%;
		margin-bottom: 0;
	}
	.n2dp-results__tools {
		width: 100%;
		justify-content: flex-end;
	}

	.n2dp-search__panel {
		border-radius: 16px;
		padding: 24px 16px;
	}

	/* Onglets empilés : pas de fusion d'angle avec les panneaux (non adjacents). */
	.n2dp-search:has(.n2dp-search__tab:first-child.is-active) .n2dp-search__panel,
	.n2dp-results:has(.n2dp-search__tab:first-child.is-active) .n2dp-results__panel {
		border-top-left-radius: 16px !important;
	}

	.n2dp-search__fields {
		grid-template-columns: 1fr;
	}

	.n2dp-search-field__label {
		white-space: normal;
	}

	.n2dp-filter-panel {
		min-height: auto;
		padding: 23px 22px 42px;
	}

	.n2dp-filter-panel__header {
		margin-bottom: 43px;
	}

	.n2dp-filter-panel__title {
		font-size: 30px;
		letter-spacing: 0;
	}

	.n2dp-filter-panel__close {
		margin-top: 5px;
	}

	.n2dp-filter-panel__close span {
		display: none;
	}

	.n2dp-filter-panel__quick-fields {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		margin-bottom: 48px;
		max-width: 100%;
		row-gap: 19px;
	}

	.n2dp-filter-panel--event .n2dp-filter-panel__quick-fields {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		margin-bottom: 48px;
		max-width: 100%;
	}

	.n2dp-filter-field--localisation {
		max-width: min(202px, 100%);
	}

	.n2dp-filter-panel--event .n2dp-filter-field--localisation {
		max-width: none;
	}

	.n2dp-filter-field__label {
		font-size: 15px;
		white-space: normal;
	}

	.n2dp-filter-panel__sections {
		gap: 26px;
	}

	.n2dp-filter-section__toggle {
		align-items: flex-start;
		display: flex;
		justify-content: space-between;
		width: 100%;
	}

	.n2dp-filter-section__label {
		gap: 11px;
	}

	.n2dp-filter-section__label span {
		font-size: 22px;
		line-height: 1.08;
	}

	.n2dp-filter-section__body {
		padding-left: 35px;
	}

	.n2dp-detail__breadcrumb,
	.n2dp-detail__hero,
	.n2dp-detail-gallery,
	.n2dp-detail__intro,
	.n2dp-detail-section,
	.n2dp-detail-map-section,
	.n2dp-detail-nearby {
		padding-left: 22px;
		padding-right: 22px;
	}

	.n2dp-detail__breadcrumb {
		font-size: 14px;
		padding-top: 24px;
	}

	.n2dp-detail h1,
	.n2dp-detail-section h2,
	.n2dp-detail-map-section h2,
	.n2dp-detail-nearby h2,
	.n2dp-detail-related h2 {
		font-size: 30px;
	}

	.n2dp-detail__subtitle,
	.n2dp-detail-card h2 {
		font-size: 26px;
		letter-spacing: 0;
	}

	.n2dp-detail-gallery {
		grid-template-columns: 1fr 1fr;
		grid-template-rows: 260px 120px 120px;
		padding-bottom: 38px;
	}

	.n2dp-detail-gallery__item--main {
		grid-column: 1 / 3;
		grid-row: auto;
	}

	.n2dp-detail__intro,
	.n2dp-detail-nearby {
		/* minmax(0, 1fr) (et non 1fr = minmax(auto,1fr)) : la piste peut rétrécir
		   sous la largeur min-content → le contenu ne déborde jamais l'écran, même
		   si un élément est large. !important : bat un éventuel override Elementor
		   qui laissait la grille à 2 colonnes (colonne carte 408px → débordement). */
		grid-template-columns: minmax(0, 1fr) !important;
		gap: 30px;
	}
	.n2dp-detail__content {
		max-width: 100%;
	}

	/* La hauteur du bloc image dépendait uniquement de min-height, sans hauteur
	   ferme : en mobile (empilé, plus de grid pour la contraindre), l'image en
	   object-fit:cover n'avait rien à quoi rapporter son 100% → pas de vrai cover. */
	.n2dp-detail-nearby__image {
		aspect-ratio: 4 / 3;
		height: auto;
		min-height: 0;
	}

	.n2dp-detail-card {
		border-radius: 20px;
		padding: 24px 20px 28px;
		position: static;
	}

	.n2dp-detail-feature-grid,
	.n2dp-detail-info-grid,
	.n2dp-detail-card-grid {
		grid-template-columns: 1fr;
	}

	.n2dp-detail-why ul {
		columns: 1;
	}

	.n2dp-detail-related__inner {
		padding: 0 22px;
	}

	.n2dp-article-card {
		min-height: 300px;
	}

	.n2dp-article-card__title {
		font-size: 26px;
		letter-spacing: -0.8px;
	}
}

@media (max-width: 420px) {
	.n2dp-filter-panel {
		padding-inline: 18px;
	}

	.n2dp-filter-panel__title {
		font-size: 28px;
	}

	.n2dp-filter-panel__title-wrap {
		gap: 9px;
	}

	.n2dp-filter-panel__title-wrap svg {
		flex-basis: 24px;
		height: 24px;
		width: 24px;
	}

	.n2dp-filter-panel__quick-fields {
		column-gap: 9px;
	}

	.n2dp-filter-section__label svg {
		flex-basis: 21px;
		height: 21px;
		width: 21px;
	}

	.n2dp-filter-section__chevron {
		flex-basis: 24px;
		height: 24px;
		width: 24px;
	}

	/* Boutons de l'encadré vert : 1 par ligne (2 par ligne fait déborder les
	   libellés longs, ex. « AJOUTER À MON AGENDA », sur très petit écran). */
	.n2dp-detail-card .n2dp-detail-card__actions .n2dp-detail-button {
		flex: 1 1 100%;
	}
}

/* ====================================================================
 * Functional search: results page, filters modal & Leaflet map.
 * Tokens are redeclared on .n2dp-search-page so the results region and
 * the modal (siblings of the .n2dp-search form) inherit them too.
 * ================================================================= */
.n2dp-search-page {
	--n2dp-forest: #3a5235;
	--n2dp-peps: #a8cb5d;
	--n2dp-cream: #fff9ed;
	--n2dp-soft: #f4f4f4;
	--n2dp-blue: #a6bed6;
	--n2dp-brown: #4b4038;
	--n2dp-olive: #758958;
	--n2dp-text-muted: rgba(30, 30, 30, 0.66);
	--n2dp-page-max: 1440px; /* largeur max du listing — ajustable ici */
	box-sizing: border-box;
	color: var(--n2dp-forest);
	font-family: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	margin: 0 auto;
	max-width: var(--n2dp-page-max);
	width: 100%;
}

.n2dp-search-page *,
.n2dp-search-page *::before,
.n2dp-search-page *::after {
	box-sizing: border-box;
}

.n2dp-search-page .n2dp-search {
	max-width: none;
}

.n2dp-search-page .n2dp-search__fields {
	align-items: end;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr) minmax(0, 0.74fr) minmax(0, 0.88fr) auto;
}

.n2dp-search__geo {
	align-items: center;
	align-self: end;
	appearance: none;
	background: transparent;
	border: 1px solid rgba(58, 82, 53, 0.35);
	border-radius: 6px;
	color: var(--n2dp-forest);
	cursor: pointer;
	display: inline-flex;
	font: 500 14px/1.2 "DM Sans", system-ui, sans-serif;
	gap: 6px;
	height: 40px;
	padding: 0 14px;
	white-space: nowrap;
}

.n2dp-search__geo svg {
	fill: none;
	height: 16px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
	width: 16px;
}

.n2dp-search__geo.is-active {
	background: var(--n2dp-forest);
	border-color: var(--n2dp-forest);
	color: var(--n2dp-peps);
}

.n2dp-search__geo.is-loading {
	opacity: 0.6;
	pointer-events: none;
}

.n2dp-results {
	margin-top: 34px;
}

.n2dp-results svg,
.n2dp-modal svg {
	fill: none;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
}

.n2dp-results__toolbar {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	justify-content: space-between;
	margin-bottom: 22px;
}

.n2dp-results__count {
	font-size: 16px;
	font-weight: 500;
	margin: 0;
}

.n2dp-results__tools {
	align-items: center;
	display: flex;
	gap: 12px;
}

.n2dp-view-toggle {
	background: var(--n2dp-soft);
	border-radius: 999px;
	display: inline-flex;
	padding: 3px;
}

.n2dp-view-toggle__btn {
	appearance: none;
	background: transparent;
	border: 0;
	border-radius: 999px;
	color: var(--n2dp-forest);
	cursor: pointer;
	font: 500 14px/1 "DM Sans", system-ui, sans-serif;
	padding: 8px 16px;
}

.n2dp-view-toggle__btn.is-active {
	background: var(--n2dp-forest);
	color: var(--n2dp-peps);
}

.n2dp-results__filters-btn {
	align-items: center;
	appearance: none;
	background: #fff;
	border: 1px solid var(--n2dp-forest);
	border-radius: 999px;
	color: var(--n2dp-forest);
	cursor: pointer;
	display: inline-flex;
	font: 500 16px/1 "DM Sans", system-ui, sans-serif;
	gap: 8px;
	padding: 8px 18px;
	transition: background 160ms ease, color 160ms ease;
}

.n2dp-results__filters-btn:hover {
	background: var(--n2dp-forest);
	color: var(--n2dp-cream);
}

.n2dp-results__filters-btn svg {
	fill: none;
	height: 18px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.8;
	width: 18px;
}

.n2dp-results__layout {
	align-items: start;
	display: grid;
	gap: 28px;
	grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
}

/* Cartes au gabarit maquette (~260 px) quel que soit l'espace : le nombre de
   colonnes s'adapte (3 à côté de la carte en desktop) au lieu de 2 colonnes
   géantes — les photos portrait devenaient énormes. */
.n2dp-results__grid {
	display: grid;
	gap: 24px 20px;
	grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
	transition: opacity 160ms ease;
}

.n2dp-results.is-loading .n2dp-results__grid {
	opacity: 0.5;
}

.n2dp-results__empty {
	color: var(--n2dp-text-muted);
	font-size: 16px;
	padding: 40px 0;
	text-align: center;
}

.n2dp-results__empty[hidden] {
	display: none;
}

.n2dp-results__more-wrap {
	display: flex;
	justify-content: center;
	padding: 34px 0 0;
}

.n2dp-results__more {
	appearance: none;
	background: var(--n2dp-forest);
	border: 0;
	border-radius: 5px;
	color: var(--n2dp-peps);
	cursor: pointer;
	font: 600 16px/1 "DM Sans", system-ui, sans-serif;
	letter-spacing: 0.04em;
	padding: 14px 40px;
}

.n2dp-results__more[hidden] {
	display: none;
}

/* ===== PAGE RECHERCHE — conformité maquette (node 350:2685) ===== */

.n2dp-search-page__breadcrumb {
	color: var(--n2dp-forest);
	display: flex;
	flex-wrap: wrap;
	font: 400 17px/1.21 "DM Sans", system-ui, sans-serif;
	gap: 7px;
	margin: 0 0 22px; /* respiration entre le fil d'Ariane et le titre */
}
.n2dp-search-page__breadcrumb a {
	color: inherit !important;
	text-decoration: none;
}
/* Page /recherche (résultats) : un peu d'air au-dessus du fil d'Ariane.
   Scopé à la page résultats (pas les pages type --type ni la barre seule). */
.n2dp-search-page:not(.n2dp-search-page--type):not(.n2dp-search-page--bar) {
	padding-top: 28px;
}
.n2dp-search-page__title {
	color: var(--n2dp-forest);
	font: 700 33px/1.11 "DM Sans", system-ui, sans-serif;
	letter-spacing: -1.32px;
	margin: 0 0 22px;
}

/* « Trier par » — pill outline cohérent avec « Filtres » (blanc sur crème, maquette) */
.n2dp-results__sort {
	display: inline-flex;
}
.n2dp-results__sort select {
	appearance: none;
	background-color: #fff;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none' stroke='%233a5235' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");
	background-position: right 14px center;
	background-repeat: no-repeat;
	border: 1px solid var(--n2dp-forest);
	border-radius: 999px;
	color: var(--n2dp-forest);
	cursor: pointer;
	font: 500 16px/1 "DM Sans", system-ui, sans-serif;
	padding: 9px 36px 9px 18px;
}

/* Pagination numérotée */
.n2dp-results__pagination {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	justify-content: center;
	padding: 34px 0 0;
}
.n2dp-results__pagination:empty {
	display: none;
}
.n2dp-page {
	appearance: none;
	background: transparent;
	border: 1px solid rgba(58, 82, 53, 0.35);
	border-radius: 8px;
	color: var(--n2dp-forest);
	cursor: pointer;
	font: 500 16px/1 "DM Sans", system-ui, sans-serif;
	min-width: 42px;
	padding: 10px 12px;
}
.n2dp-page:hover:not(:disabled):not(.is-current) {
	background: var(--n2dp-soft);
}
.n2dp-page.is-current {
	background: var(--n2dp-forest);
	border-color: var(--n2dp-forest);
	color: var(--n2dp-peps);
	cursor: default;
}
.n2dp-page:disabled {
	cursor: default;
	opacity: 0.4;
}
.n2dp-page-ellipsis {
	color: var(--n2dp-text-muted);
	padding: 0 2px;
}

/* Carte : bouton « agrandir » + plein écran.
   L'aside entier (carte + bouton) est sticky : la zone de grille fait toute la
   hauteur de la colonne résultats, l'aside y reste donc épinglé à droite
   pendant tout le défilement (desktop). */
.n2dp-results__aside {
	position: sticky;
	top: 18px;
}
.n2dp-results__map-expand {
	align-items: center;
	appearance: none;
	background: #fff;
	border: 1px solid rgba(58, 82, 53, 0.25);
	border-radius: 8px;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
	color: var(--n2dp-forest);
	cursor: pointer;
	display: inline-flex;
	justify-content: center;
	padding: 8px;
	position: absolute;
	right: 12px;
	top: 12px;
	z-index: 5;
}
.n2dp-results.is-map-fullscreen .n2dp-results__map {
	border-radius: 0;
	height: 100%;
	inset: 0;
	position: fixed;
	width: 100%;
	z-index: 100000;
}
.n2dp-results.is-map-fullscreen .n2dp-results__map-expand {
	position: fixed;
	right: 16px;
	top: 16px;
	z-index: 100001;
}

/* Bande « Jeu concours » (cf. maquette node 277:1396) */
.n2dp-concours-band {
	background: var(--n2dp-blue, #a6bed6);
	border-radius: 16px;
	margin-top: 40px;
	padding: 54px 24px;
	text-align: center;
}
.n2dp-concours-band__inner {
	margin: 0 auto;
	max-width: 760px;
}
.n2dp-concours-band__icon {
	color: var(--n2dp-forest);
	display: inline-flex;
}
.n2dp-concours-band h2 {
	color: var(--n2dp-forest);
	font: 700 36px/1.06 "Albert Sans", "DM Sans", system-ui, sans-serif;
	margin: 8px 0 14px;
	text-transform: uppercase;
}
.n2dp-concours-band p {
	color: #1e1e1e;
	font-size: 17px;
	line-height: 1.21;
	margin: 0 0 22px;
}
.n2dp-concours-band__btn {
	align-items: center;
	background: var(--n2dp-forest);
	border-radius: 5px;
	color: var(--n2dp-peps);
	display: inline-flex;
	font: 500 19px/1.5 "DM Sans", system-ui, sans-serif;
	padding: 7px 21px;
	text-decoration: none;
}

/* sr-only scopé au module recherche */
.n2dp-search-page .screen-reader-text {
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

/* ===== Page résultats : barre compacte + onglets sur le bloc résultats ===== */

/* Barre de recherche compacte (page résultats) au lieu du grand panneau crème. */
.n2dp-search--inline {
	max-width: 1040px;
}
.n2dp-search--inline .n2dp-search__panel {
	background: transparent;
	border-radius: 0;
	min-height: 0;
	padding: 0;
}
.n2dp-search--inline .n2dp-search__fields {
	gap: 14px;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr) minmax(0, 0.74fr) minmax(0, 0.88fr) auto;
}
.n2dp-search--inline .n2dp-search-field__label {
	color: var(--n2dp-forest);
	font-size: 15px;
}
.n2dp-search--inline .n2dp-search-field__control {
	background: var(--n2dp-soft);
	border: 0;
	box-shadow: inset 0 4px 10px rgba(0, 0, 0, 0.07);
}
.n2dp-search--inline .n2dp-search__geo {
	align-self: end;
}

/* Bouton RECHERCHER de la barre inline : mobile uniquement (la recherche est
   en direct au clavier sur desktop — retour cliente : il manquait sur mobile). */
.n2dp-search__submit-wrap--inline {
	display: none;
	padding-top: 0;
}

@media (max-width: 760px) {
	.n2dp-search__submit-wrap--inline {
		align-self: stretch;
		display: flex;
	}

	.n2dp-search__submit-wrap--inline .n2dp-search__submit {
		width: 100%;
	}
}

/* En-tête résultats : onglets (intercalaires) + Trier/Filtres sur la même
   ligne, posés SUR le panneau crème (pas de filet — maquette 424:13301). */
.n2dp-results__head {
	align-items: flex-end;
	display: flex;
	flex-wrap: wrap;
	gap: 12px 16px;
	justify-content: space-between;
	margin-top: 30px;
}
.n2dp-results__head .n2dp-search__tabs {
	gap: 6px;
	margin-bottom: -1px; /* fusion sans liseré avec le panneau crème */
}
.n2dp-results__tools {
	align-items: center;
	display: inline-flex;
	gap: 10px;
	margin-bottom: 10px;
}

/* Panneau crème englobant sous-barre + cartes + carte + pagination
   (maquette 424:13301). Coin haut-gauche aplati sous le 1er onglet actif,
   comme le bloc de la barre de recherche. */
.n2dp-results__panel {
	background: var(--n2dp-cream);
	border-radius: 21px;
	padding: 20px 26px 34px;
}

.n2dp-results:has(.n2dp-search__tab:first-child.is-active) .n2dp-results__panel {
	border-top-left-radius: 0;
}

/* Sous-barre : compteur + bascule Liste/Carte. */
.n2dp-results__subbar {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: space-between;
	margin: 0 0 20px;
}

.n2dp-results-card {
	color: var(--n2dp-forest) !important;
	display: grid;
	gap: 8px;
	text-decoration: none;
}

/* Légère animation au survol des vignettes (retour cliente) : la carte se
   soulève et la photo zoome doucement. Partagé résultats / recommandations. */
.n2dp-results-card,
.n2dp-detail-related-card {
	transition: transform 0.2s ease;
}

.n2dp-results-card:hover,
.n2dp-detail-related-card:hover {
	transform: translateY(-4px);
}

.n2dp-results-card__img,
.n2dp-detail-related-card__image img {
	transition: transform 0.35s ease;
}

.n2dp-results-card:hover .n2dp-results-card__img,
.n2dp-detail-related-card:hover .n2dp-detail-related-card__image img {
	transform: scale(1.04);
}

/* Carte résultat — maquette CARTE ÉVÈNEMENT/LIEU : photo PORTRAIT arrondie,
   léger voile, titre Albert Sans 24 taupe, mention 14 dessous. */
.n2dp-results-card__media {
	aspect-ratio: 260 / 315;
	background: #d9d9d9;
	border-radius: 10px;
	display: block;
	overflow: hidden;
	position: relative;
}

.n2dp-results-card__media::after {
	background: rgba(0, 0, 0, 0.1);
	border-radius: 10px;
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
}

/* Premium : mise en avant par l'ordre et le badge uniquement — plus de
   contour vert autour de la photo (jugé grossier par la cliente). */

.n2dp-results-card__img {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

.n2dp-results-card__img[hidden] {
	display: none;
}

.n2dp-results-card__badge {
	background: var(--n2dp-forest);
	border-radius: 999px;
	color: var(--n2dp-peps);
	font: 600 12px/1 "DM Sans", system-ui, sans-serif;
	left: 10px;
	padding: 6px 11px;
	position: absolute;
	top: 10px;
}

.n2dp-results-card__badge[hidden] {
	display: none;
}

/* Corps de carte : empilement strict — titre d'abord, puis Lieu + catégorie
   (maquette CARTE ACTIVITE ; sans display:grid les spans inline se mettaient
   sur la même ligne). */
.n2dp-results-card__body {
	display: grid;
	gap: 5px;
	justify-items: start;
}

.n2dp-results-card__title {
	color: var(--n2dp-forest, #3a5235);
	font: 600 24px/1.02 "Albert Sans", "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.24px;
}

.n2dp-results-card__meta {
	color: var(--n2dp-brown, #4b4038);
	display: flex;
	flex-wrap: wrap;
	gap: 4px 14px;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.3;
}

.n2dp-results-card__meta span[hidden] {
	display: none;
}

.n2dp-results-card__distance {
	font-size: 13px;
	font-weight: 600;
}

.n2dp-results-card__distance[hidden] {
	display: none;
}

/* Date de l'évènement sous la vignette (agenda). */
.n2dp-results-card__date {
	color: var(--n2dp-forest);
	font-size: 13px;
	font-weight: 600;
	margin-top: 2px;
}
.n2dp-results-card__date[hidden] {
	display: none;
}

.n2dp-results__map {
	background: var(--n2dp-soft);
	border-radius: 14px;
	height: calc(100vh - 120px);
	min-height: 480px;
	overflow: hidden;
}

.n2dp-results__map .leaflet-container {
	font-family: inherit;
	height: 100%;
	width: 100%;
}

/* Marqueur de carte maison (divIcon SVG — pastille verte + randonneur),
   utilisé sur TOUTES les cartes Leaflet du plugin. !important : la règle
   générique `.n2dp-results svg { stroke: currentColor; fill: none }` (et les
   styles svg des thèmes) écrasait les fills du pictogramme et ajoutait un
   contour qui débordait du viewBox → icône croppée, bonhomme invisible. */
.n2dp-marker {
	background: transparent;
	border: 0;
}

.n2dp-marker svg {
	display: block;
	filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.35));
	height: 42px;
	stroke: none !important;
	stroke-width: 0 !important;
	transition: transform 0.18s ease;
	width: 42px;
}

.n2dp-marker--primary svg {
	filter: drop-shadow(0 4px 9px rgba(0, 0, 0, 0.42));
	transform: scale(1.12);
}

.n2dp-detail-map .leaflet-control-layers {
	border: 0;
	border-radius: 8px;
	box-shadow: 0 8px 20px rgba(0, 0, 0, 0.16);
	color: var(--n2dp-forest, #3a5235);
	font: 600 13px/1.25 "DM Sans", system-ui, sans-serif;
	overflow: hidden;
}

.n2dp-detail-map .leaflet-control-layers-expanded {
	padding: 9px 11px;
}

.n2dp-detail-map .leaflet-control-layers label {
	align-items: center;
	display: flex;
	gap: 7px;
	margin: 3px 0;
}

.n2dp-map-popup {
	display: grid;
	gap: 4px;
	min-width: 150px;
}

.n2dp-map-popup__title {
	color: var(--n2dp-forest, #3a5235) !important;
	font-weight: 700;
	text-decoration: none;
}

.n2dp-map-popup__meta {
	color: #4a4a4a;
	font-size: 12px;
	line-height: 1.35;
}

/* Tooltip au survol d'un point (carte de fiche) : petite carte vignette + titre.
   Posé hors de la carte (wrapper non rognant) → débordement libre des bords. */
.n2dp-detail-map-wrap { position: relative; }
.n2dp-map-tip-float {
	position: absolute;
	z-index: 1200;
	pointer-events: none;
	transform: translate( -50%, calc( -100% - 26px ) );
	background: #fff;
	border-radius: 12px;
	box-shadow: 0 6px 20px rgba( 40, 50, 38, 0.22 );
	max-width: 260px;
	color: #3a5235;
}
/* La flèche (vers le marqueur) est sur le float SANS overflow:hidden, donc visible. */
.n2dp-map-tip-float::after {
	content: '';
	position: absolute;
	left: 50%;
	bottom: -7px;
	transform: translateX( -50% );
	border: 7px solid transparent;
	border-top-color: #fff;
}
/* Le clipping arrondi (vignette comprise) est porté par __inner, pas par le float. */
.n2dp-map-tip__inner { display: flex; align-items: stretch; border-radius: 12px; overflow: hidden; }
.n2dp-map-tip__img {
	flex: 0 0 64px;
	width: 64px;
	min-height: 64px;
	background-size: cover;
	background-position: center;
	background-color: #e9efe0;
}
.n2dp-map-tip__body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 3px;
	padding: 9px 12px;
	min-width: 0;
}
.n2dp-map-tip__title { font: 700 13.5px/1.2 "DM Sans", system-ui, sans-serif; color: #3a5235; }
.n2dp-map-tip__meta { font-size: 11.5px; line-height: 1.3; color: #5b6b54; }
.n2dp-map-tip__date { font-size: 11px; font-weight: 600; color: #5f7d2e; }

/* Vignette survolée → son marqueur grossit sur la carte. */
.n2dp-marker.is-hover svg {
	transform: scale(1.28);
}

.n2dp-results.is-map-view .n2dp-results__main {
	display: none;
}

.n2dp-results.is-map-view .n2dp-results__layout {
	grid-template-columns: 1fr;
}

.n2dp-modal {
	align-items: flex-start;
	display: flex;
	inset: 0;
	justify-content: center;
	overflow-y: auto;
	padding: 48px 16px;
	position: fixed;
	z-index: 100000;
}

.n2dp-modal[hidden] {
	display: none;
}

.n2dp-modal__backdrop {
	background: rgba(20, 28, 18, 0.55);
	inset: 0;
	position: fixed;
}

.n2dp-modal__dialog {
	background: var(--n2dp-cream);
	border-radius: 20px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.25);
	max-width: 724px;
	padding: 28px 44px 34px;
	position: relative;
	width: 100%;
}

.n2dp-modal__header {
	align-items: center;
	display: flex;
	justify-content: space-between;
	margin-bottom: 26px;
}

.n2dp-modal__title-wrap {
	align-items: center;
	display: flex;
	gap: 12px;
}

.n2dp-modal__title-wrap svg {
	height: 28px;
	width: 28px;
}

.n2dp-modal__title {
	font: 600 32px/1 "Albert Sans", "DM Sans", system-ui, sans-serif;
	margin: 0;
}

.n2dp-modal__close {
	appearance: none;
	background: transparent;
	border: 0;
	color: var(--n2dp-forest);
	cursor: pointer;
	line-height: 0;
	padding: 4px;
}

.n2dp-modal__close svg {
	height: 30px;
	width: 30px;
}

.n2dp-modal__body {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

.n2dp-modal__group {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

/* Encadrés rapides en tête de modale — mêmes champs que la barre de recherche
   (cf. maquette panneaux 578:5786/5852/5966). */
.n2dp-modal__quick-fields {
	display: grid;
	gap: 14px;
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr);
	margin-bottom: 12px;
}

@media (max-width: 600px) {
	.n2dp-modal__quick-fields {
		grid-template-columns: 1fr;
	}
}

.n2dp-modal__group[hidden] {
	display: none;
}

.n2dp-modal__empty {
	color: var(--n2dp-text-muted);
	font-size: 15px;
	margin: 0;
}

.n2dp-modal__footer {
	border-top: 1px solid rgba(58, 82, 53, 0.14);
	display: flex;
	gap: 12px;
	justify-content: flex-end;
	margin-top: 28px;
	padding-top: 22px;
}

/* Réinitialiser : bleu #a6bdd5 (demande maquette). */
.n2dp-modal__reset {
	appearance: none;
	background: #a6bdd5;
	border: 0;
	border-radius: 6px;
	color: var(--n2dp-forest);
	cursor: pointer;
	font: 500 15px/1 "DM Sans", system-ui, sans-serif;
	padding: 12px 22px;
	transition: background 160ms ease;
}

.n2dp-modal__reset:hover {
	background: #93afcb;
}

.n2dp-modal__apply {
	appearance: none;
	background: var(--n2dp-forest);
	border: 0;
	border-radius: 6px;
	color: var(--n2dp-peps);
	cursor: pointer;
	font: 600 15px/1 "DM Sans", system-ui, sans-serif;
	padding: 12px 26px;
}

.n2dp-results__filters-btn:focus-visible,
.n2dp-view-toggle__btn:focus-visible,
.n2dp-results__more:focus-visible,
.n2dp-search__geo:focus-visible,
.n2dp-modal__close:focus-visible,
.n2dp-modal__apply:focus-visible,
.n2dp-modal__reset:focus-visible,
.n2dp-results-card:focus-visible {
	outline: 2px solid var(--n2dp-peps);
	outline-offset: 2px;
}

body.n2dp-modal-open {
	overflow: hidden;
}

body.n2dp-map-fullscreen-open {
	overflow: hidden;
}

@media (max-width: 980px) {
	.n2dp-results__layout {
		grid-template-columns: 1fr;
	}

	.n2dp-results__aside {
		display: none;
		position: static;
	}

	.n2dp-results.is-map-view .n2dp-results__aside {
		display: block;
	}

	.n2dp-results.is-map-view .n2dp-results__main {
		display: none;
	}

	.n2dp-results__map {
		height: 70vh;
		position: relative;
		top: 0;
	}
}

@media (max-width: 760px) {
	.n2dp-search-page .n2dp-search__fields {
		grid-template-columns: 1fr;
	}

	.n2dp-search__geo {
		justify-content: center;
		width: 100%;
	}

	.n2dp-results__toolbar {
		align-items: stretch;
		flex-direction: column;
	}
}

@media (max-width: 600px) {
	.n2dp-results__grid {
		grid-template-columns: 1fr;
	}

	.n2dp-modal__dialog {
		padding: 22px 20px 26px;
	}

	.n2dp-modal__title {
		font-size: 26px;
	}
}

/* Sous-titres des cartes Infos pratiques / Options — couleur olive (Figma). */
.n2dp-detail-info h3,
.n2dp-detail-feature h3 {
	color: var(--n2dp-olive);
}

/* Lien cliquable dans une carte info (ex. Réservation → mailto/tel/site).
   Spécificité (0,2,0) + !important : passe devant l'armor « text-decoration:
   none » des liens. */
.n2dp-detail .n2dp-detail-info__link {
	color: var(--n2dp-olive);
	font-weight: 600;
	text-decoration: underline !important;
	text-underline-offset: 3px;
	word-break: break-word;
}

.n2dp-detail .n2dp-detail-info__link:hover {
	color: var(--n2dp-forest);
}

/* Bande taupe « accroche » — cf. maquette node 424:15317. */
.n2dp-detail-accroche {
	background: var(--n2dp-brown);
	border-radius: 20px;
	color: var(--n2dp-cream);
	margin: 0 56px 70px;
	padding: 48px 64px;
}
.n2dp-detail-accroche p {
	font: 600 28px/1.25 "Albert Sans", "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.3px;
	margin: 0;
	max-width: 920px;
}

/* Bande bleue de réassurance — cf. maquette node 272:1350. */
.n2dp-detail-reassurance {
	background: var(--n2dp-blue, #a6bed6);
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	/* Pas de margin-top : sinon un liseré blanc (fond body) apparaît entre la bande
	   précédente et la réassurance — visible quand une bande verte précède (ex. fiche
	   évènement). La bande pleine largeur se colle à la précédente. */
	padding: 56px 0;
	width: 100vw;
}
/* Pages liste (shortcode dans un conteneur Elementor) : le conteneur a un padding-bas
   qui laissait un mince liseré blanc SOUS la bande pleine largeur de fin (réassurance),
   avant le pied de page. On le neutralise quand le conteneur contient cette bande. */
.e-con:has( .n2dp-detail-reassurance ),
.e-con-inner:has( .n2dp-detail-reassurance ),
.elementor-widget-shortcode:has( .n2dp-detail-reassurance ),
.elementor-widget-container:has( .n2dp-detail-reassurance ) {
	padding-bottom: 0 !important;
	margin-bottom: 0 !important;
}
.n2dp-detail-reassurance__inner {
	box-sizing: border-box;
	display: grid;
	gap: 40px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 0 auto;
	max-width: 1180px;
	padding: 0 90px;
	width: 100%;
}
/* Chaque colonne : icône À CÔTÉ du titre (haut), texte indenté dessous. */
.n2dp-detail-reassurance__item {
	column-gap: 16px;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	row-gap: 12px;
}
.n2dp-detail-reassurance__icon {
	color: var(--n2dp-forest);
	display: inline-flex;
	grid-column: 1;
	grid-row: 1;
}
.n2dp-detail-reassurance h3 {
	align-self: center;
	color: var(--n2dp-forest);
	font: 600 24px/1.02 "Albert Sans", "DM Sans", system-ui, sans-serif;
	grid-column: 2;
	grid-row: 1;
	letter-spacing: -0.24px;
	margin: 0;
}
.n2dp-detail-reassurance p {
	color: #111;
	font-size: 17px;
	grid-column: 2;
	grid-row: 2;
	line-height: 1.21;
	margin: 0;
}

/* La barre CTA de fiche n'apparaît qu'en mobile (passée en flex dans la media query). */
.n2dp-detail-cta-bar {
	display: none;
}

/* =====================================================================
 * MOBILE — packs « recherche » + « fiche »
 * Barres d'action collantes, modale en feuille plein écran, carrousels
 * swipe (galerie + recommandations). Ajout par-dessus les media queries
 * existantes. Breakpoints : 768px (mobile) / 480px (petit mobile).
 * (Le bloc « armor » doit rester APRÈS celui-ci.)
 * ===================================================================== */
@media (max-width: 768px) {

	/* --- Anti-zoom iOS (champs ≥ 16px) + cibles tactiles ≥ 44px --- */
	.n2dp-search-field__control,
	.n2dp-filter-field__control,
	.n2dp-search__tab,
	.n2dp-results__filters-btn,
	.n2dp-view-toggle__btn,
	.n2dp-modal__apply,
	.n2dp-modal__reset {
		font-size: 16px;
	}
	.n2dp-view-toggle__btn,
	.n2dp-results__filters-btn,
	.n2dp-search__submit,
	.n2dp-modal__apply,
	.n2dp-modal__reset {
		min-height: 44px;
	}

	/* ---------- PACK RECHERCHE ---------- */

	/* Barre d'action collante en bas : compteur + bascule Liste/Carte */
	.n2dp-results__subbar {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 1000;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: 10px;
		margin: 0;
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
		background: #fff;
		border-top: 1px solid rgba(58, 82, 53, 0.15);
		box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.08);
	}
	.n2dp-results__count {
		flex: 0 1 auto;
		font-size: 14px;
		margin: 0;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	/* En-tête (onglets + Filtres) en flux normal, en haut. */
	.n2dp-results__head {
		gap: 10px;
		margin-top: 16px;
		/* Sur mobile la ligne d'outils (Trier + Filtres) passe sous les onglets et se
		   retrouvait collée au panneau de résultats : on dégage un espace. */
		margin-bottom: 16px;
	}

	/* Panneau crème plus compact sur mobile. */
	.n2dp-results__panel {
		border-radius: 16px;
		padding: 14px 14px 22px;
	}
	.n2dp-results__tools {
		margin-bottom: 0;
	}
	/* on dégage la place de la barre fixe sous les résultats (+ encoche iOS) */
	.n2dp-results {
		padding-bottom: calc(96px + env(safe-area-inset-bottom));
	}

	/* Vue carte quasi plein écran (le retour à la liste se fait via la barre).
	   100dvh = hauteur viewport dynamique (gère la barre d'URL iOS). */
	.n2dp-results.is-map-view .n2dp-results__map {
		height: calc(100dvh - 160px);
		min-height: 360px;
	}

	/* Filtres en feuille plein écran qui monte du bas (bottom-sheet) */
	.n2dp-modal {
		align-items: flex-end;
		overflow: hidden;
		padding: 0;
	}
	.n2dp-modal__dialog {
		animation: n2dp-sheet-up 0.25s ease;
		border-radius: 20px 20px 0 0;
		display: flex;
		flex-direction: column;
		max-height: 92vh;
		max-width: none;
		padding: 22px 20px 0;
		width: 100%;
	}
	.n2dp-modal__body {
		-webkit-overflow-scrolling: touch;
		flex: 1 1 auto;
		overflow-y: auto;
		padding-bottom: 8px;
	}
	.n2dp-modal__footer {
		background: var(--n2dp-cream);
		margin: 0 -20px 0;
		padding: 14px 20px calc(14px + env(safe-area-inset-bottom));
		/* Boutons empilés pleine largeur : « Appliquer les filtres » ne tient pas sur
		   une ligne à côté de « Réinitialiser » en 375px (il passait sur 2 lignes). */
		flex-direction: column;
		gap: 10px;
	}
	.n2dp-modal__apply,
	.n2dp-modal__reset {
		flex: 0 0 auto;
		width: 100%;
		white-space: nowrap;
	}
	/* Cible tactile de la croix de fermeture ≥ 44px. */
	.n2dp-modal__close {
		min-width: 44px;
		min-height: 44px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}

	/* ---------- PACK FICHE ---------- */

	/* CTA « Réserver » collant en bas (prix + bouton) */
	.n2dp-detail-cta-bar {
		align-items: center;
		background: #fff;
		border-top: 1px solid rgba(58, 82, 53, 0.15);
		bottom: 0;
		box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.08);
		display: flex;
		gap: 12px;
		justify-content: space-between;
		left: 0;
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
		position: fixed;
		right: 0;
		z-index: 1000;
	}
	.n2dp-detail-cta-bar__price,
	.n2dp-detail-cta-bar__price a {
		color: var(--n2dp-forest) !important;
		/* iOS Safari transforme le n° de tél. du prix (« Contactez Paul au … ») en
		   lien et le colore en bleu/rose système : on force la couleur ET la couleur
		   de remplissage du texte pour rester dans la charte. */
		-webkit-text-fill-color: var(--n2dp-forest) !important;
		font-size: 16px;
		font-weight: 700;
		text-decoration: none !important;
	}
	.n2dp-detail-cta-bar__btn {
		align-items: center;
		background: var(--n2dp-forest);
		border-radius: 8px;
		color: var(--n2dp-peps);
		display: inline-flex;
		flex: 1 1 auto;
		font-weight: 700;
		justify-content: center;
		min-height: 44px;
		padding: 12px 22px;
		text-decoration: none;
	}
	/* Réserve la place de la barre CTA collante SEULEMENT quand elle existe
	   (fiches avec un canal de réservation). Sans ça, les fiches sans bouton
	   « Réserver » gardaient un vide blanc en bas de page sur mobile. */
	.n2dp-detail:has(.n2dp-detail-cta-bar) {
		padding-bottom: calc(88px + env(safe-area-inset-bottom));
	}
	/* …mais quand la fiche se termine par la bande réassurance pleine largeur,
	   c'est la BANDE qui porte la réserve : sinon le padding créait une marge
	   BLANCHE entre la bande bleue et le pied de page (retour cliente). Le fond
	   bleu descend ainsi jusqu'au footer, et le dernier contenu reste lisible
	   au-dessus de la barre « Réserver ». */
	.n2dp-detail:has(.n2dp-detail-cta-bar):has(.n2dp-detail-reassurance) {
		padding-bottom: 0;
	}
	.n2dp-detail:has(.n2dp-detail-cta-bar) .n2dp-detail-reassurance {
		padding-bottom: calc(36px + 88px + env(safe-area-inset-bottom));
	}

	/* Galerie en carrousel swipe (au lieu de la grille) */
	.n2dp-detail-gallery {
		-webkit-overflow-scrolling: touch;
		display: flex;
		gap: 10px;
		grid-template-columns: none;
		grid-template-rows: none;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}
	.n2dp-detail-gallery::-webkit-scrollbar {
		display: none;
	}
	.n2dp-detail-gallery__item {
		flex: 0 0 86%;
		height: 240px;
		min-height: 0;
		scroll-snap-align: center;
	}
	.n2dp-detail-gallery__item--main {
		grid-column: auto;
		grid-row: auto;
	}
	.n2dp-detail-gallery__item--empty {
		display: none;
	}
	/* Galerie sans aucune image : on masque la bande vide résiduelle. */
	.n2dp-detail-gallery:not(:has(img)) {
		display: none;
	}

	/* Bandes de recommandations en carrousels horizontaux */
	.n2dp-detail-card-grid {
		-webkit-overflow-scrolling: touch;
		display: flex;
		gap: 14px;
		grid-template-columns: none;
		overflow-x: auto;
		padding-bottom: 4px;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}
	.n2dp-detail-card-grid::-webkit-scrollbar {
		display: none;
	}
	.n2dp-detail-card-grid > * {
		flex: 0 0 80%;
		scroll-snap-align: start;
	}
	/* Cartes « article » du Carnet : carrousel horizontal mobile, comme le widget. */
	.n2dp-detail-card-grid--articles {
		-webkit-overflow-scrolling: touch;
		display: flex;
		gap: 14px;
		grid-template-columns: none;
		overflow-x: auto;
		padding-bottom: 4px;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}
	.n2dp-detail-card-grid--articles > * {
		flex: 0 0 82%;
		scroll-snap-align: start;
		width: auto;
	}
	.n2dp-detail-card-grid--articles .n2dp-article-card {
		min-height: 320px;
	}
	.n2dp-detail-card-grid--articles .n2dp-article-card__body {
		padding: 26px 22px 26px;
		gap: 8px;
	}
	.n2dp-detail-card-grid--articles .n2dp-article-card__title {
		font-size: 27px;
		letter-spacing: -0.8px;
	}
	.n2dp-detail-card-grid--articles .n2dp-article-card__excerpt {
		max-width: none;
	}

	/* Mini-carte de fiche un peu plus compacte */
	.n2dp-detail-map,
	.n2dp-detail-map.leaflet-container {
		min-height: 280px;
	}

	/* H1 + bandes taupe/bleue : adaptés au mobile */
	.n2dp-detail h1 {
		font-size: 32px;
		letter-spacing: -0.8px;
	}
	.n2dp-detail-accroche {
		margin: 0 22px 40px;
		padding: 28px 22px;
	}
	.n2dp-detail-accroche p {
		font-size: 21px;
	}
	.n2dp-detail-reassurance {
		padding: 36px 0;
	}
	.n2dp-detail-reassurance__inner {
		gap: 28px;
		grid-template-columns: 1fr;
		padding: 0 22px;
	}

	/* Page recherche — mobile */
	.n2dp-search-page__title {
		font-size: 26px;
	}
	.n2dp-results__sort {
		display: inline-flex;
		min-width: 0;
	}
	.n2dp-concours-band {
		padding: 40px 18px;
	}
	.n2dp-concours-band h2 {
		font-size: 34px;
	}
}

@keyframes n2dp-sheet-up {
	from { transform: translateY(100%); }
	to   { transform: translateY(0); }
}

@media (max-width: 480px) {
	/* Compteur visuellement masqué mais CONSERVÉ dans l'arbre d'accessibilité
	   (région aria-live) ; les contrôles s'alignent à droite. */
	.n2dp-results__subbar { justify-content: flex-end; }
	.n2dp-results__count {
		clip-path: inset(50%);
		height: 1px;
		margin: -1px;
		overflow: hidden;
		position: absolute;
		white-space: nowrap;
		width: 1px;
	}
	.n2dp-detail-gallery__item { flex-basis: 92%; }
	.n2dp-detail-card-grid > * { flex-basis: 88%; }
	.n2dp-detail-card-grid--articles > * { flex-basis: 88%; }
}

/* =====================================================================
 * Pages dédiées par type : hero + chips de catégories ([n2dp_search
 * type="…" layout="page"]). Le hero occupe toute la largeur du conteneur ;
 * le fil d'Ariane et les résultats sont en retrait des bords (maquette).
 * Couleurs des chips = bloc armor (pour battre le kit Elementor).
 * ================================================================= */
.n2dp-search-page--type .n2dp-search--locked {
	display: none;
}

/* Le hero pleine largeur doit coller au header. Posé dans un widget « Shortcode »
   Elementor, il hérite des 10px de padding vertical du conteneur (.e-con-inner)
   → fine bande blanche sous le header. On retire ce padding UNIQUEMENT pour le
   conteneur qui enveloppe notre page catégorie (scopé via :has, sans toucher
   les autres conteneurs Elementor). */
.e-con-inner:has(.n2dp-search-page--type),
.elementor-widget-shortcode:has(.n2dp-search-page--type) {
	padding-top: 0 !important;
	padding-block-start: 0 !important;
}

/* La page type occupe TOUTE la largeur, quel que soit le conteneur Elementor
   (boxed OU full). Sans ça, une page posée dans un conteneur « boxed »
   (évènements/hébergements) est plus étroite qu'une page en conteneur « full »
   (activités). Même technique full-bleed que le héro → rendu identique partout. */
.n2dp-search-page--type {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc( 50% - 50vw );
	margin-right: calc( 50% - 50vw );
}

.n2dp-type-hero {
	align-items: flex-end;
	background: var(--n2dp-forest) center / cover no-repeat;
	display: flex;
	margin: 0 calc(50% - 50vw) 18px;
	min-height: clamp(340px, 40vw, 540px);
	position: relative;
	width: 100vw;
}
.n2dp-type-hero::after {
	background: rgba(0, 0, 0, 0.34);
	content: "";
	inset: 0;
	position: absolute;
}
.n2dp-type-hero__inner {
	margin: 0 auto;
	max-width: var(--n2dp-page-max);
	padding: clamp(28px, 5vw, 64px) clamp(20px, 6vw, 90px);
	position: relative;
	width: 100%;
	z-index: 1;
}
.n2dp-type-hero__title {
	color: #fff;
	font: 600 clamp(30px, 3.4vw, 46px)/1.05 "DM Sans", system-ui, sans-serif;
	letter-spacing: -1.1px;
	margin: 0 0 14px;
	max-width: 22ch;
}
.n2dp-type-hero__intro {
	color: #fff;
	font: 400 clamp(15px, 1.4vw, 18px)/1.5 "DM Sans", system-ui, sans-serif;
	margin: 0;
	max-width: 64ch;
}

/* Fil d'Ariane + résultats en retrait des bords (hero pleine largeur). */
.n2dp-search-page--type > .n2dp-search-page__breadcrumb,
.n2dp-search-page--type > .n2dp-results {
	padding-inline: clamp(20px, 6vw, 90px);
}

/* Chips de catégories (remplacent les onglets sur les pages dédiées).
   Le wrapper se replie sur UNE rangée ; « Voir plus » (front.js) déplie. */
.n2dp-cat-chips-wrap {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
}
.n2dp-cat-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}
/* Replié : « Tout » + 10 catégories au maximum ; les puces suivantes sont
   masquées jusqu'au clic sur « Voir plus » (retour cliente). */
.n2dp-cat-chips:not(.is-expanded) .n2dp-cat-chip:nth-child(n+12) {
	display: none;
}
.n2dp-cat-chips__more {
	align-self: flex-start;
	appearance: none;
	background: transparent;
	border: 0;
	color: var(--n2dp-forest);
	cursor: pointer;
	font: 500 14px/1.3 "DM Sans", system-ui, sans-serif;
	padding: 0;
	text-decoration: underline;
}
.n2dp-cat-chips__more[hidden] {
	display: none;
}
.n2dp-cat-chip {
	border: 0;
	cursor: pointer;
	font: 500 16px/1.47 "DM Sans", system-ui, sans-serif;
	transition: background 0.15s ease, color 0.15s ease;
	white-space: nowrap;
}
.n2dp-search-page--type .n2dp-results__head {
	align-items: flex-start;
	border-bottom: 0;
	flex-wrap: nowrap; /* chips à gauche, « Trier/Filtres » épinglés à droite */
	gap: 16px;
	margin-bottom: 20px; /* respiration sous le « Voir plus » avant les résultats */
}
.n2dp-search-page--type .n2dp-cat-chips-wrap {
	min-width: 0; /* le bloc de chips wrappe à l'intérieur au lieu de pousser les outils */
}
.n2dp-search-page--type .n2dp-results__tools {
	flex: 0 0 auto;
	margin-left: auto; /* colle les outils tout à droite */
}
@media (max-width: 640px) {
	/* sur mobile, on autorise les outils à passer sous les chips */
	.n2dp-search-page--type .n2dp-results__head {
		flex-wrap: wrap;
	}
}

/* =====================================================================
 * Theme / page-builder armor  —  KEEP LAST IN THIS FILE
 * ---------------------------------------------------------------------
 * Dropped into arbitrary themes and Elementor "Shortcode" widgets, the
 * host's global typography and (above all) compound form selectors such
 * as `input[type="text"]` (specificity 0,1,1) outrank our single-class
 * rules (0,1,0) and bleed in — hence fonts/fields/links/buttons looking
 * different in production than in the preview. We re-assert our own
 * baseline, scoped to the plugin roots, using !important ONLY on uniform,
 * non-stateful properties (never on our own colours/hover/active states).
 * Values are restated verbatim, so a bare page is visually unchanged
 * while a themed page is insulated. (We deliberately do NOT force
 * box-sizing here: the results/modal sub-tree was authored under the
 * default and must not shift.)
 * ===================================================================== */

.n2dp-search-page,
.n2dp-detail,
.n2dp-filters,
.n2dp-destinations,
.n2dp-destination {
	font-family: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
}

/* Force our families onto every descendant (themes set them per element). */
.n2dp-search-page *,
.n2dp-search-page *::before,
.n2dp-search-page *::after,
.n2dp-detail *,
.n2dp-detail *::before,
.n2dp-detail *::after,
.n2dp-filters *,
.n2dp-filters *::before,
.n2dp-filters *::after,
.n2dp-destinations *,
.n2dp-destinations *::before,
.n2dp-destinations *::after,
.n2dp-destination *,
.n2dp-destination *::before,
.n2dp-destination *::after {
	font-family: inherit !important;
}

/* Restore the display face on the headings/titles that intentionally use it. */
.n2dp-search-page .n2dp-filter-section__label span,
.n2dp-search-page .n2dp-results-card__title,
.n2dp-search-page .n2dp-modal__title,
.n2dp-filters .n2dp-filter-section__label span,
.n2dp-detail .n2dp-detail-map-section h2,
.n2dp-detail .n2dp-detail-info h3,
.n2dp-detail .n2dp-detail-related-card strong,
.n2dp-destination .n2dp-detail-related-card strong,
.n2dp-destinations .n2dp-destination-card__title {
	font-family: "Albert Sans", "DM Sans", system-ui, sans-serif !important;
}

/* Links never inherit the theme's underline treatment. */
.n2dp-search-page a,
.n2dp-search-page a:hover,
.n2dp-search-page a:focus,
.n2dp-detail a,
.n2dp-detail a:hover,
.n2dp-detail a:focus,
.n2dp-filters a,
.n2dp-filters a:hover,
.n2dp-filters a:focus,
.n2dp-destinations a,
.n2dp-destinations a:hover,
.n2dp-destinations a:focus,
.n2dp-destination a,
.n2dp-destination a:hover,
.n2dp-destination a:focus {
	text-decoration: none !important;
}

/* Buttons shed the theme's chrome — but keep their own colours/state styles. */
.n2dp-search-page button,
.n2dp-detail button,
.n2dp-filters button,
.n2dp-destinations button,
.n2dp-destination button {
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	text-decoration: none;
}

/* Le kit Elementor pose bordure/ombre sur button:hover/:focus → nos boutons
   « changeaient de bordure » au survol et à l'actif. On verrouille : jamais de
   bordure ni d'ombre rapportées, radius conservé ; le focus clavier garde son
   anneau via :focus-visible (réaffirmé plus bas). */
.n2dp-search-page button:hover,
.n2dp-search-page button:focus,
.n2dp-search-page button:active,
.n2dp-search button:hover,
.n2dp-search button:focus,
.n2dp-search button:active,
.n2dp-detail button:hover,
.n2dp-detail button:focus,
.n2dp-detail button:active,
.n2dp-filters button:hover,
.n2dp-filters button:focus,
.n2dp-filters button:active,
.n2dp-destinations button:hover,
.n2dp-destinations button:focus,
.n2dp-destinations button:active,
.n2dp-destination button:hover,
.n2dp-destination button:focus,
.n2dp-destination button:active {
	border: 0 !important;
	box-shadow: none !important;
}

.n2dp-search-page button:focus:not(:focus-visible),
.n2dp-search button:focus:not(:focus-visible),
.n2dp-detail button:focus:not(:focus-visible),
.n2dp-filters button:focus:not(:focus-visible),
.n2dp-destinations button:focus:not(:focus-visible),
.n2dp-destination button:focus:not(:focus-visible) {
	outline: none !important;
}

/* Exception : « Filtres » et la pagination portent une bordure par design —
   on la fige à l'identique dans tous les états au lieu de la supprimer. */
.n2dp-search-page .n2dp-results__filters-btn:hover,
.n2dp-search-page .n2dp-results__filters-btn:focus,
.n2dp-search-page .n2dp-results__filters-btn:active {
	border: 1px solid var(--n2dp-forest) !important;
}

.n2dp-search-page .n2dp-page:hover,
.n2dp-search-page .n2dp-page:focus,
.n2dp-search-page .n2dp-page:active {
	border: 1px solid rgba(58, 82, 53, 0.35) !important;
}

.n2dp-search-page .n2dp-page.is-current:hover,
.n2dp-search-page .n2dp-page.is-current:focus {
	border-color: var(--n2dp-forest) !important;
}

.n2dp-search-page .n2dp-search__geo:hover,
.n2dp-search-page .n2dp-search__geo:focus,
.n2dp-search-page .n2dp-search__geo:active,
.n2dp-search .n2dp-search__geo:hover,
.n2dp-search .n2dp-search__geo:focus,
.n2dp-search .n2dp-search__geo:active {
	border: 1px solid rgba(58, 82, 53, 0.35) !important;
}

.n2dp-search-page .n2dp-search__geo.is-active,
.n2dp-search .n2dp-search__geo.is-active {
	border-color: var(--n2dp-forest) !important;
}

/* The Elementor kit recolours EVERY <button> :
 *   .elementor-kit-6 button { background-color: var(--e-global-color-primary=#3A5235);
 *     color: var(--e-global-color-accent); border-radius: 5px; padding: 10px }  (spec 0,1,1)
 * → tous nos boutons transparents viraient au vert. On ré-affirme les nôtres au
 * scope racine (0,2,0 > 0,1,1), valeurs restituées telles quelles. */

/* — Boutons transparents / sans chrome — états TOUS verrouillés : le kit pose
   un fond sur button:hover/:focus (0,2,1) > nos règles de base (0,2,0) — d'où
   la « surbrillance verte » des intitulés. Ici (0,3,0+) la maquette gagne. — */
.n2dp-search-page .n2dp-filter-section__toggle,
.n2dp-filters .n2dp-filter-section__toggle,
.n2dp-search-page .n2dp-filter-section__toggle:hover,
.n2dp-filters .n2dp-filter-section__toggle:hover,
.n2dp-search-page .n2dp-filter-section__toggle:focus,
.n2dp-filters .n2dp-filter-section__toggle:focus,
.n2dp-search-page .n2dp-filter-section__toggle:active,
.n2dp-filters .n2dp-filter-section__toggle:active {
	background: transparent;
	border-radius: 0;
	color: inherit;
	padding: 0;
}
.n2dp-search-page .n2dp-modal__close,
.n2dp-filters .n2dp-filter-panel__close,
.n2dp-search-page .n2dp-modal__close:hover,
.n2dp-filters .n2dp-filter-panel__close:hover,
.n2dp-search-page .n2dp-modal__close:focus,
.n2dp-filters .n2dp-filter-panel__close:focus,
.n2dp-search-page .n2dp-modal__close:active,
.n2dp-filters .n2dp-filter-panel__close:active {
	background: transparent;
	border-radius: 0;
	color: var(--n2dp-forest);
	padding: 4px;
}

/* Boutons de la galerie de fiche : le kit Elementor habille chaque <button>
   (fond, bordure, padding) → un cadre apparaissait autour des photos. */
.n2dp-detail .n2dp-detail-gallery__button,
.n2dp-detail .n2dp-detail-gallery__button:hover,
.n2dp-detail .n2dp-detail-gallery__button:focus,
.n2dp-detail .n2dp-detail-gallery__button:active {
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	min-height: 0;
	padding: 0 !important;
}
.n2dp-search-page .n2dp-search__geo,
.n2dp-search-page .n2dp-search__geo:hover,
.n2dp-search-page .n2dp-search__geo:focus,
.n2dp-search-page .n2dp-search__geo:active {
	background: transparent;
	border-radius: 6px;
	color: var(--n2dp-forest);
	padding: 0 14px;
}
.n2dp-search-page .n2dp-search__geo.is-active {
	background: var(--n2dp-forest);
	color: var(--n2dp-peps);
}
.n2dp-search-page .n2dp-cat-chips__more,
.n2dp-search-page .n2dp-cat-chips__more:hover,
.n2dp-search-page .n2dp-cat-chips__more:focus,
.n2dp-search-page .n2dp-cat-chips__more:active {
	background: transparent;
	border-radius: 0;
	color: var(--n2dp-forest);
	padding: 0;
	text-decoration: underline;
}
.n2dp-search-page .n2dp-view-toggle__btn,
.n2dp-search-page .n2dp-view-toggle__btn:hover,
.n2dp-search-page .n2dp-view-toggle__btn:focus,
.n2dp-search-page .n2dp-view-toggle__btn:active {
	background: transparent;
	border-radius: 999px;
	color: var(--n2dp-forest);
	padding: 8px 16px;
}
.n2dp-search-page .n2dp-view-toggle__btn.is-active,
.n2dp-search-page .n2dp-view-toggle__btn.is-active:hover,
.n2dp-search-page .n2dp-view-toggle__btn.is-active:focus {
	background: var(--n2dp-forest);
	color: var(--n2dp-peps);
}
/* Réinitialiser : bleu maquette #a6bdd5, tous états. */
.n2dp-search-page .n2dp-modal__reset,
.n2dp-search-page .n2dp-modal__reset:focus,
.n2dp-search-page .n2dp-modal__reset:active {
	background: #a6bdd5;
	border-radius: 6px;
	color: var(--n2dp-forest);
	padding: 12px 22px;
}
.n2dp-search-page .n2dp-modal__reset:hover {
	background: #93afcb;
	border-radius: 6px;
	color: var(--n2dp-forest);
}
.n2dp-search-page .n2dp-results__map-expand,
.n2dp-search-page .n2dp-results__map-expand:hover,
.n2dp-search-page .n2dp-results__map-expand:focus,
.n2dp-search-page .n2dp-results__map-expand:active {
	background: #fff;
	border-radius: 8px;
	color: var(--n2dp-forest);
	padding: 8px;
}
.n2dp-search-page .n2dp-page,
.n2dp-search-page .n2dp-page:focus,
.n2dp-search-page .n2dp-page:active {
	background: transparent;
	border-radius: 8px;
	color: var(--n2dp-forest);
	padding: 10px 12px;
}
.n2dp-search-page .n2dp-page:hover:not(.is-current):not(:disabled) {
	background: var(--n2dp-soft);
	border-radius: 8px;
	color: var(--n2dp-forest);
}
.n2dp-search-page .n2dp-page.is-current,
.n2dp-search-page .n2dp-page.is-current:hover,
.n2dp-search-page .n2dp-page.is-current:focus {
	background: var(--n2dp-forest);
	color: var(--n2dp-peps);
}

/* — Boutons « pleins » / de marque (on restitue fond + radius + padding) —
   Même verrouillage d'états : le radius et le fond ne bougent JAMAIS au
   survol/actif, l'onglet actif se fond avec le bloc crème (maquette). */
.n2dp-search-page .n2dp-search__tab,
.n2dp-search-page .n2dp-search__tab:focus,
.n2dp-search-page .n2dp-search__tab:active {
	background: var(--n2dp-forest);
	border-radius: 21px 21px 0 0;
	color: var(--n2dp-peps);
	padding: 10px 25px 11px;
}
.n2dp-search-page .n2dp-search__tab:hover {
	background: #46603f;
	border-radius: 21px 21px 0 0;
	color: var(--n2dp-peps);
}
.n2dp-search-page .n2dp-search__tab.is-active,
.n2dp-search-page .n2dp-search__tab.is-active:hover,
.n2dp-search-page .n2dp-search__tab.is-active:focus,
.n2dp-search-page .n2dp-search__tab.is-active:active {
	background: var(--n2dp-cream);
	border-radius: 21px 21px 0 0;
	color: var(--n2dp-forest);
}
.n2dp-search-page .n2dp-results__filters-btn {
	background: var(--n2dp-soft);
	border-radius: 999px;
	color: var(--n2dp-forest);
	padding: 8px 18px;
}
.n2dp-search-page .n2dp-search__submit,
.n2dp-search-page .n2dp-search__submit:focus {
	background: var(--n2dp-forest);
	border-radius: 5px;
	color: var(--n2dp-peps);
	padding: 7px 21px;
}
.n2dp-search-page .n2dp-search__submit:hover,
.n2dp-search-page .n2dp-search__submit:active {
	background: #2f462b;
	border-radius: 5px;
	color: var(--n2dp-peps);
}
.n2dp-search-page .n2dp-modal__apply,
.n2dp-search-page .n2dp-modal__apply:focus {
	background: var(--n2dp-forest);
	border-radius: 6px;
	color: var(--n2dp-peps);
	padding: 12px 26px;
}
.n2dp-search-page .n2dp-modal__apply:hover,
.n2dp-search-page .n2dp-modal__apply:active {
	background: #2f462b;
	border-radius: 6px;
	color: var(--n2dp-peps);
}
.n2dp-search-page .n2dp-results__more,
.n2dp-search-page .n2dp-results__more:hover,
.n2dp-search-page .n2dp-results__more:focus,
.n2dp-search-page .n2dp-results__more:active {
	background: var(--n2dp-forest);
	border-radius: 5px;
	color: var(--n2dp-peps);
}
/* Chips de catégories (pages dédiées) : olive par défaut, survol et actif en
   vert peps #A9CB60 (demande maquette), texte vert forêt. */
.n2dp-search-page .n2dp-cat-chip,
.n2dp-search-page .n2dp-cat-chip:focus {
	background: #758958;
	border-radius: 32px;
	color: #f4f4f4;
	padding: 6px 16px;
}
.n2dp-search-page .n2dp-cat-chip:hover,
.n2dp-search-page .n2dp-cat-chip:active {
	background: #a9cb60;
	border-radius: 32px;
	color: var(--n2dp-forest);
}
.n2dp-search-page .n2dp-cat-chip.is-active,
.n2dp-search-page .n2dp-cat-chip.is-active:hover,
.n2dp-search-page .n2dp-cat-chip.is-active:focus {
	background: #a8cb5d;
	color: var(--n2dp-forest);
}
/* Newsletter (pages Destinations) : bouton peps, états verrouillés, même
   hauteur que le champ (46px). */
.n2dp-destinations .n2dp-newsletter-band__btn,
.n2dp-destination .n2dp-newsletter-band__btn,
.n2dp-destinations .n2dp-newsletter-band__btn:hover,
.n2dp-destination .n2dp-newsletter-band__btn:hover,
.n2dp-destinations .n2dp-newsletter-band__btn:focus,
.n2dp-destination .n2dp-newsletter-band__btn:focus,
.n2dp-destinations .n2dp-newsletter-band__btn:active,
.n2dp-destination .n2dp-newsletter-band__btn:active {
	background: var(--n2dp-peps);
	border-radius: 999px;
	color: var(--n2dp-forest);
	height: 46px;
	padding: 0 22px;
	text-transform: none;
}

/* Le kit Elementor force text-transform:uppercase sur TOUT <button> (typo
 * « bouton » globale, 0,1,1). On rétablit la casse normale sur nos boutons
 * d'UI — la maquette ne les écrit pas en capitales. (0,2,0 > 0,1,1.) */
.n2dp-search-page .n2dp-cat-chip,
.n2dp-search-page .n2dp-cat-chips__more,
.n2dp-search-page .n2dp-search__tab,
.n2dp-search-page .n2dp-search__geo,
.n2dp-search-page .n2dp-results__filters-btn,
.n2dp-search-page .n2dp-view-toggle__btn,
.n2dp-search-page .n2dp-modal__reset,
.n2dp-search-page .n2dp-modal__apply,
.n2dp-search-page .n2dp-page {
	text-transform: none;
}

/* Images stay fluid regardless of theme defaults — and shed any kit-level
   chrome: Elementor Site Settings can add a global image border/radius
   (the « bordures vertes » seen by the client) that our wrappers don't clip. */
.n2dp-search-page img,
.n2dp-detail img,
.n2dp-filters img,
.n2dp-destinations img,
.n2dp-destination img {
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	max-width: 100%;
}

/* Les visuels des cartes COUVRENT toute la vignette : Elementor pose
   `.elementor img { height: auto }` (0,1,1) qui battait notre height: 100 %
   (0,1,0) — l'image flottait en haut de la carte portrait. */
.n2dp-search-page .n2dp-results-card__img,
.n2dp-search-page .n2dp-detail-related-card__image img,
.n2dp-detail .n2dp-detail-related-card__image img,
.n2dp-destination .n2dp-detail-related-card__image img,
.n2dp-destinations .n2dp-destination-card__media img,
.n2dp-destination .n2dp-dest-mosaic__item img,
.n2dp-detail .n2dp-dest-mosaic__item img,
.n2dp-detail .n2dp-detail-gallery__item img,
.n2dp-detail .n2dp-detail-nearby__image img,
.n2dp-search-page .n2dp-article-card__bg,
.n2dp-detail .n2dp-article-card__bg,
.n2dp-destination .n2dp-article-card__bg,
.n2dp-destinations .n2dp-article-card__bg {
	height: 100% !important;
	max-width: 100% !important;
	object-fit: cover !important;
	width: 100% !important;
}

/* Form fields = the most aggressively themed surface. Element-qualified +
 * root scope (0,2,1) plus !important beat `input[type="text"]` and Elementor
 * kit field styles. (Only background-COLOR is set, so the custom select
 * arrow background-image is preserved.) */
.n2dp-search-page input.n2dp-search-field__control,
.n2dp-search-page select.n2dp-search-field__control,
.n2dp-filters input.n2dp-search-field__control,
.n2dp-filters select.n2dp-search-field__control {
	-webkit-appearance: none !important;
	appearance: none !important;
	background-color: var(--n2dp-soft) !important;
	border: 0 !important;
	border-radius: 6px !important;
	box-shadow: inset 0 4px 10px rgba(0, 0, 0, 0.07) !important;
	color: var(--n2dp-forest) !important;
	font: italic 300 14px/1.3 "DM Sans", system-ui, sans-serif !important;
	height: 40px !important;
	max-width: 100% !important;
	padding: 10px 12px !important;
	width: 100% !important;
}

.n2dp-search-page input.n2dp-filter-field__control,
.n2dp-search-page select.n2dp-filter-field__control,
.n2dp-filters input.n2dp-filter-field__control,
.n2dp-filters select.n2dp-filter-field__control {
	-webkit-appearance: none !important;
	appearance: none !important;
	background-color: var(--n2dp-soft) !important;
	border: 0 !important;
	border-radius: 6px !important;
	box-shadow: inset 0 4px 10px rgba(0, 0, 0, 0.07) !important;
	color: var(--n2dp-forest) !important;
	font: 400 14px/1.3 "DM Sans", system-ui, sans-serif !important;
	height: 40px !important;
	max-width: 100% !important;
	padding: 9px 11px !important;
	width: 100% !important;
}

/* « Filtres » button: re-assert the maquette look so theme/Elementor button
 * styles (e.g. `.entry-content button`, 0,1,1) can't override our colours. */
.n2dp-search-page .n2dp-results__filters-btn {
	background: #fff !important;
	border: 1px solid var(--n2dp-forest) !important;
	border-radius: 999px !important;
	color: var(--n2dp-forest) !important;
}

.n2dp-search-page .n2dp-results__filters-btn:hover {
	background: var(--n2dp-forest) !important;
	color: var(--n2dp-cream) !important;
}

.n2dp-search-page .n2dp-results__filters-btn svg {
	fill: none !important;
	stroke: currentColor !important;
}

/* Global header search modal + detail-gallery lightbox. */
.elementor-element-0df11f8 .elementor-icon,
[data-n2dp-global-search-open] {
	cursor: pointer;
}

.n2dp-global-search,
.n2dp-lightbox {
	inset: 0;
	position: fixed;
	z-index: 99999;
}

.n2dp-global-search[hidden] {
	display: none;
}

.n2dp-global-search__backdrop,
.n2dp-lightbox {
	background: rgba(17, 24, 16, 0.72);
}

.n2dp-global-search__backdrop {
	inset: 0;
	position: absolute;
}

.n2dp-global-search__dialog {
	background: #fff9ed;
	border-radius: 8px;
	color: #3a5235;
	left: 50%;
	max-height: min(760px, calc(100vh - 36px));
	max-width: 820px;
	overflow: auto;
	padding: 34px;
	position: absolute;
	top: 36px;
	transform: translateX(-50%);
	width: calc(100% - 36px);
}

.n2dp-global-search__close,
.n2dp-lightbox__close,
.n2dp-lightbox__nav {
	appearance: none;
	border: 0;
	cursor: pointer;
}

.n2dp-global-search__close,
.n2dp-global-search__close:hover,
.n2dp-global-search__close:focus {
	align-items: center;
	background: transparent !important;
	border: 0 !important;
	color: #3a5235 !important;
	display: inline-flex;
	height: 40px;
	justify-content: center;
	padding: 0 !important;
	position: absolute;
	right: 18px;
	top: 18px;
	width: 40px;
}

.n2dp-global-search__close svg {
	fill: none;
	height: 28px;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.7;
	width: 28px;
}

.n2dp-global-search h2,
.n2dp-organizer-detail h1 {
	color: #3a5235;
	font-family: "Albert Sans", "DM Sans", system-ui, sans-serif;
	font-size: 42px;
	line-height: 1.05;
	margin: 0 48px 24px 0;
}

.n2dp-global-search__form {
	display: grid;
	gap: 12px;
	grid-template-columns: minmax(0, 1fr) 190px;
}

.n2dp-global-search__form input,
.n2dp-global-search__form select,
.n2dp-contest-form input {
	background: white;
	border: 1px solid rgba(58, 82, 53, 0.22);
	border-radius: 5px;
	color: #3a5235;
	font: 500 16px/1.3 "DM Sans", system-ui, sans-serif;
	min-height: 48px;
	padding: 12px 14px;
	width: 100%;
}

.n2dp-global-search__status {
	color: rgba(58, 82, 53, 0.75);
	font-size: 14px;
	margin: 16px 0;
}

.n2dp-global-search__results {
	display: grid;
	gap: 10px;
}

.n2dp-global-search__item {
	align-items: center;
	background: white;
	border: 1px solid rgba(58, 82, 53, 0.1);
	border-radius: 8px;
	color: #3a5235;
	display: grid;
	gap: 14px;
	grid-template-columns: 78px minmax(0, 1fr);
	padding: 10px;
	text-decoration: none;
}

.n2dp-global-search__item img,
.n2dp-global-search__placeholder {
	background: #dfe8d7;
	border-radius: 6px;
	display: block;
	height: 68px;
	object-fit: cover;
	width: 78px;
}

.n2dp-global-search__item span {
	display: grid;
	gap: 3px;
}

.n2dp-global-search__item small,
.n2dp-global-search__item em {
	color: rgba(58, 82, 53, 0.68);
	font-size: 13px;
	font-style: normal;
}

.n2dp-global-search__item strong {
	font-size: 18px;
	line-height: 1.15;
}

.n2dp-detail-gallery__button {
	appearance: none;
	background: transparent;
	border: 0;
	cursor: pointer;
	display: block;
	height: 100%;
	padding: 0;
	position: relative;
	width: 100%;
}

/* Une seule photo : plus de bandeau pleine largeur — visuel centré. Le format
   est réglable par fiche (champ « Format de l'image ») via --n2dp-gallery-ratio.
   Par défaut (« Originale ») : aucun ratio imposé, l'image garde ses proportions
   natives (classe --natural ci-dessous), donc ni rognage ni zoom. */
.n2dp-detail-gallery--single {
	grid-template-columns: minmax(0, 820px);
	grid-template-rows: none;
	justify-content: center;
}

.n2dp-detail-gallery--single .n2dp-detail-gallery__item--main {
	aspect-ratio: var(--n2dp-gallery-ratio, 3 / 2);
	grid-row: auto;
	min-height: 0;
}

/* « Originale (non rognée) » : l'image définit elle-même sa hauteur.
   On préfixe par .n2dp-detail + !important pour battre l'armure
   object-fit:cover!important (ligne ~3268) qui blinde les images de galerie. */
.n2dp-detail-gallery--natural .n2dp-detail-gallery__item--main {
	aspect-ratio: auto;
	background: none;
}

.n2dp-detail .n2dp-detail-gallery--natural .n2dp-detail-gallery__item--main img {
	height: auto !important;
	object-fit: contain !important;
}

.n2dp-detail-gallery__more {
	align-items: center;
	background: rgba(58, 82, 53, 0.82);
	color: #fff9ed;
	display: flex;
	font-weight: 700;
	inset: 0;
	justify-content: center;
	position: absolute;
}

.n2dp-lightbox {
	align-items: center;
	display: flex;
	justify-content: center;
	padding: 70px;
}

.n2dp-lightbox__image {
	border-radius: 8px;
	max-height: calc(100vh - 140px);
	max-width: calc(100vw - 160px);
	object-fit: contain;
}

/* Hors racines du plugin (overlays au niveau <body>) : on verrouille contre
   les styles <button> globaux du kit, mêmes causes que la galerie. */
.n2dp-lightbox__close,
.n2dp-lightbox__nav,
.n2dp-lightbox__close:hover,
.n2dp-lightbox__nav:hover,
.n2dp-lightbox__close:focus,
.n2dp-lightbox__nav:focus {
	background: #fff9ed !important;
	border: 0 !important;
	border-radius: 999px !important;
	color: #3a5235 !important;
	font-size: 34px;
	height: 48px;
	line-height: 1;
	padding: 0 !important;
	position: absolute;
	width: 48px;
}

.n2dp-lightbox__close {
	right: 24px;
	top: 24px;
}

.n2dp-lightbox__nav--prev {
	left: 24px;
}

.n2dp-lightbox__nav--next {
	right: 24px;
}

.n2dp-lightbox__count {
	background: rgba(17, 24, 16, 0.72);
	border-radius: 999px;
	bottom: 24px;
	color: #fff9ed;
	font-size: 14px;
	left: 50%;
	margin: 0;
	padding: 8px 14px;
	position: absolute;
	transform: translateX(-50%);
}

.n2dp-contest-form {
	background: #fff9ed;
	border-radius: 8px;
	color: #3a5235;
	display: grid;
	gap: 14px;
	max-width: 620px;
	padding: 28px;
}

.n2dp-contest-form label {
	display: grid;
	gap: 6px;
}

.n2dp-contest-form__legal {
	align-items: start;
	display: grid;
	grid-template-columns: 20px minmax(0, 1fr);
}

.n2dp-contest-form__legal input {
	min-height: auto;
	margin-top: 4px;
	width: auto;
}

.n2dp-contest-form button {
	background: #a8cb5d;
	border: 0;
	border-radius: 5px;
	color: #3a5235;
	cursor: pointer;
	font-weight: 700;
	min-height: 44px;
	padding: 10px 18px;
}

.n2dp-contest-form__notice {
	border-radius: 5px;
	margin: 0;
	padding: 10px 12px;
}

.n2dp-contest-form__notice--success {
	background: #dfe8d7;
}

.n2dp-contest-form__notice--error {
	background: #f5d2c8;
}

.n2dp-organizer-detail {
	color: #3a5235;
	margin: 0 auto;
	max-width: 1180px;
	padding: 60px 24px;
}

.n2dp-organizer-detail__hero {
	margin-bottom: 32px;
	max-width: 820px;
}

.n2dp-organizer-detail__intro {
	color: rgba(58, 82, 53, 0.82);
	display: flow-root; /* contient les images flottantes de [caption] */
	font: 400 16px/1.6 "DM Sans", system-ui, sans-serif;
	margin-top: 16px;
}

.n2dp-organizer-detail__intro p {
	margin: 0 0 14px;
}

.n2dp-organizer-detail__intro p:last-child {
	margin-bottom: 0;
}

.n2dp-organizer-detail__intro img {
	border-radius: 12px;
	height: auto;
	max-width: 100%;
}

.n2dp-organizer-detail__intro .wp-caption,
.n2dp-organizer-detail__intro figure {
	margin: 0 0 16px;
	max-width: 100%;
}

.n2dp-organizer-detail__intro .alignleft {
	float: left;
	margin: 0 22px 14px 0;
}

.n2dp-organizer-detail__intro .alignright {
	float: right;
	margin: 0 0 14px 22px;
}

.n2dp-organizer-detail__intro .wp-caption-text,
.n2dp-organizer-detail__intro figcaption {
	color: rgba(58, 82, 53, 0.6);
	font-size: 13px;
	font-style: italic;
	margin: 6px 0 0;
}

.n2dp-organizer-detail__subtitle {
	color: #3a5235;
	font: 700 28px/1.1 "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.6px;
	margin: 44px 0 22px;
}

.n2dp-organizer-detail__empty {
	color: rgba(58, 82, 53, 0.7);
}

/* Agenda en CHRONOLOGIE : une vignette par date, groupée par mois (retour cliente :
   un évènement récurrent réapparaît à chaque date, badge « X dates » en rappel). */
.n2dp-agenda__month {
	color: #3a5235;
	font: 700 21px/1.2 "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.3px;
	margin: 30px 0 16px;
	text-transform: capitalize;
}
.n2dp-agenda__month:first-child {
	margin-top: 8px;
}
.n2dp-agenda__list {
	display: grid;
	gap: 22px;
	grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
	margin-bottom: 8px;
}
.n2dp-agenda__card {
	color: #3a5235 !important;
	display: flex;
	flex-direction: column;
	text-decoration: none !important;
	transition: transform 0.2s ease;
}

/* Soulèvement au survol, comme les autres cartes (le zoom photo existe déjà). */
.n2dp-agenda__card:hover {
	transform: translateY(-4px);
}
.n2dp-agenda__media {
	aspect-ratio: 3 / 2;
	background: linear-gradient(135deg, #d9d9d9, #edf1e7);
	border-radius: 16px;
	overflow: hidden;
	position: relative;
}
.n2dp-agenda__media img {
	display: block;
	height: 100%;
	object-fit: cover;
	transition: transform 0.4s ease;
	width: 100%;
}
.n2dp-agenda__card:hover .n2dp-agenda__media img {
	transform: scale(1.04);
}
.n2dp-agenda__date {
	align-items: center;
	background: #fff9ed;
	border-radius: 12px;
	box-shadow: 0 6px 16px rgba(0, 0, 0, 0.18);
	color: #3a5235;
	display: flex;
	flex-direction: column;
	left: 12px;
	line-height: 1;
	padding: 7px 11px;
	position: absolute;
	top: 12px;
}
.n2dp-agenda__date strong {
	font: 800 21px/1 "DM Sans", system-ui, sans-serif;
}
.n2dp-agenda__date span {
	font-size: 11px;
	letter-spacing: 0.04em;
	margin-top: 2px;
	text-transform: uppercase;
}
.n2dp-agenda__more {
	background: rgba(58, 82, 53, 0.9);
	border-radius: 999px;
	bottom: 12px;
	color: #fff9ed;
	font: 700 12px/1 "DM Sans", system-ui, sans-serif;
	padding: 5px 11px;
	position: absolute;
	right: 12px;
}
.n2dp-agenda__body {
	display: flex;
	flex-direction: column;
	gap: 5px;
	padding: 12px 2px 0;
}
.n2dp-agenda__body strong {
	color: #3a5235;
	font: 700 17px/1.25 "DM Sans", system-ui, sans-serif;
}
.n2dp-agenda__meta {
	color: rgba(30, 30, 30, 0.62);
	font-size: 14px;
}

@media (max-width: 600px) {
	.n2dp-agenda__list {
		gap: 16px;
		grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	}
}

@media (max-width: 760px) {
	.n2dp-global-search__dialog {
		border-radius: 0;
		height: 100vh;
		left: 0;
		max-height: none;
		padding: 28px 20px;
		top: 0;
		transform: none;
		width: 100%;
	}

	.n2dp-global-search h2,
	.n2dp-organizer-detail h1 {
		font-size: 32px;
	}

	.n2dp-global-search__form {
		grid-template-columns: 1fr;
	}

	.n2dp-lightbox {
		padding: 56px 18px;
	}

	.n2dp-lightbox__image {
		max-height: calc(100vh - 130px);
		max-width: calc(100vw - 36px);
	}

	.n2dp-lightbox__nav {
		bottom: 24px;
		top: auto;
	}
}

/* =====================================================================
   RUBRIQUE DESTINATIONS (page liste + page focus)
   Réutilise .n2dp-type-hero, .n2dp-detail-related(-card), .n2dp-search-page__breadcrumb.
   ===================================================================== */

/* Les pages Destinations sont rendues hors des racines .n2dp-search-page /
   .n2dp-detail : on y (re)déclare les tokens, sinon tous les var() des bandes
   partagées (related, newsletter, réassurance) restent indéfinis. */
.n2dp-destinations,
.n2dp-destination {
	--n2dp-forest: #3a5235;
	--n2dp-peps: #a8cb5d;
	--n2dp-cream: #fff9ed;
	--n2dp-soft: #f4f4f4;
	--n2dp-blue: #a6bed6;
	--n2dp-brown: #4b4038;
	--n2dp-olive: #758958;
	--n2dp-text-muted: rgba(30, 30, 30, 0.66);
	--n2dp-page-max: 1440px; /* requis par .n2dp-type-hero__inner — sans lui le hero perdait son centrage */
	box-sizing: border-box;
	color: var(--n2dp-forest);
	font-family: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.n2dp-destinations *,
.n2dp-destinations *::before,
.n2dp-destinations *::after,
.n2dp-destination *,
.n2dp-destination *::before,
.n2dp-destination *::after {
	box-sizing: border-box;
}

/* Boutons du hero des pages Destinations (maquette). */
.n2dp-type-hero__ctas {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 22px;
}

.n2dp-destinations .n2dp-search-page__breadcrumb,
.n2dp-destination .n2dp-search-page__breadcrumb {
	max-width: 1200px;
	margin: 18px auto 8px;
	padding: 0 20px;
}

/* --- Page liste : grille de destinations + carte --------------------- */
.n2dp-destinations__layout {
	max-width: 1200px;
	margin: 8px auto 0;
	padding: 0 20px;
	display: grid;
	grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
	gap: 28px;
	align-items: start;
}

.n2dp-destinations__layout--no-map {
	grid-template-columns: 1fr;
}

/* Cartes-destinations au gabarit maquette (~260 px), colonnes auto. */
.n2dp-destinations__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
	gap: 20px;
}

.n2dp-destinations__empty {
	color: var(--n2dp-text-muted);
}

.n2dp-destinations__aside {
	position: sticky;
	top: 24px;
}

.n2dp-destinations__map {
	width: 100%;
	height: 540px;
	border-radius: 16px;
	overflow: hidden;
	background: var(--n2dp-soft);
}

/* --- Carte d'une destination — même langage que CARTE ÉVÈNEMENT (maquette) :
   photo portrait arrondie + voile, titre Albert Sans 24 taupe dessous. ------ */
.n2dp-destination-card {
	color: var(--n2dp-brown, #4b4038) !important;
	display: grid;
	gap: 8px;
	text-decoration: none;
	transition: transform 0.18s ease;
}

.n2dp-destination-card:hover,
.n2dp-destination-card:focus-visible {
	transform: translateY(-3px);
	outline: none;
}

/* Zoom photo au survol, comme les autres cartes du site. */
.n2dp-destination-card__media img {
	transition: transform 0.35s ease;
}
.n2dp-destination-card:hover .n2dp-destination-card__media img,
.n2dp-destination-card:focus-visible .n2dp-destination-card__media img {
	transform: scale(1.04);
}

.n2dp-destination-card__media {
	aspect-ratio: 260 / 315;
	background: var(--n2dp-soft);
	border-radius: 10px;
	display: block;
	overflow: hidden;
	position: relative;
}

.n2dp-destination-card__media::after {
	background: rgba(0, 0, 0, 0.1);
	border-radius: 10px;
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
}

.n2dp-destination-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.n2dp-destination-card__body {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.n2dp-destination-card__title {
	font: 600 24px/1.02 "Albert Sans", "DM Sans", system-ui, sans-serif;
	letter-spacing: -0.24px;
}

.n2dp-destination-card__meta {
	color: var(--n2dp-brown, #4b4038);
	font-size: 14px;
	font-weight: 500;
}

/* --- Mosaïque d'activités (page focus — maquette Component 6) -------- */
.n2dp-dest-mosaic {
	display: grid;
	gap: 16px;
	grid-template-columns: repeat(8, minmax(0, 1fr));
}

.n2dp-dest-mosaic__item {
	aspect-ratio: 260 / 221;
	border-radius: 10px;
	display: block;
	grid-column: span 2;
	overflow: hidden;
	position: relative;
	transition: transform 0.2s ease;
}

/* Même animation au survol que les autres cartes (retour cliente). */
.n2dp-dest-mosaic__item:hover {
	transform: translateY(-4px);
}

.n2dp-dest-mosaic__item:hover img {
	transform: scale(1.04);
}

/* Quinconce : rangée 1 = colonnes 1-6, rangée 2 décalée = colonnes 3-8. */
.n2dp-dest-mosaic__item:nth-child(4) {
	grid-column: 3 / span 2;
}

.n2dp-dest-mosaic__item::after {
	background: linear-gradient(180deg, rgba(0, 0, 0, 0.04) 35%, rgba(0, 0, 0, 0.68) 100%);
	border-radius: 10px;
	content: "";
	inset: 0;
	position: absolute;
}

.n2dp-dest-mosaic__item img {
	display: block;
	height: 100%;
	object-fit: cover;
	transition: transform 0.35s ease;
	width: 100%;
}

.n2dp-dest-mosaic__name {
	bottom: 12px;
	color: #f4f4f4;
	display: -webkit-box;
	font: 700 clamp(13px, 1.25vw, 17px)/1.16 "DM Sans", system-ui, sans-serif;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	left: 10px;
	overflow: hidden;
	position: absolute;
	right: 10px;
	text-align: center;
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.38);
	z-index: 1;
}

@media (max-width: 760px) {
	.n2dp-dest-mosaic {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.n2dp-dest-mosaic__item,
	.n2dp-dest-mosaic__item:nth-child(4) {
		aspect-ratio: 4 / 3;
		grid-column: auto;
	}

	.n2dp-dest-mosaic__name {
		bottom: 8px;
		font-size: 12px;
		left: 8px;
		line-height: 1.15;
		right: 8px;
		-webkit-line-clamp: 4;
	}
}

/* --- Carte des offres d'une destination ------------------------------ */
.n2dp-destination-map-section {
	margin: 8px auto 36px;
	max-width: 1200px;
	padding: 0 20px;
}

.n2dp-destination-map-section h2 {
	color: var(--n2dp-forest);
	margin: 0 0 18px;
}

/* --- Page focus : bloc éditorial texte + image ---------------------- */
.n2dp-destination-intro {
	max-width: 1200px;
	margin: 28px auto;
	padding: 0 20px;
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
	gap: 32px;
	align-items: center;
}

.n2dp-destination-intro__text h2 {
	margin-top: 0;
}

/* L'arrondi vit sur le wrapper (l'armor neutralise tout radius posé sur les
   img elles-mêmes pour contrer les bordures globales du kit Elementor). */
.n2dp-destination-intro__image {
	border-radius: 16px;
	overflow: hidden;
}

.n2dp-destination-intro__image img {
	width: 100%;
	display: block;
	object-fit: cover;
}

/* --- Bandeau newsletter --------------------------------------------- */
.n2dp-newsletter-band {
	background: var(--n2dp-forest);
	color: var(--n2dp-cream);
	/* Pleine largeur de page (full-bleed) ; collée en bas (pas d'écart blanc). */
	margin: 36px calc(50% - 50vw) 0;
	padding: 48px 20px;
	width: 100vw;
}
/* Pas de ligne blanche entre la newsletter et la bande de réassurance qui suit. */
.n2dp-newsletter-band + .n2dp-detail-reassurance {
	margin-top: 0;
}

.n2dp-newsletter-band__inner {
	max-width: 720px;
	margin: 0 auto;
	text-align: center;
}

.n2dp-newsletter-band__inner h2 {
	color: var(--n2dp-cream);
	margin: 0 0 10px;
}

.n2dp-newsletter-band__inner p {
	margin: 0 auto 20px;
	max-width: 560px;
}

.n2dp-newsletter-band__form {
	display: flex;
	gap: 10px;
	justify-content: center;
	flex-wrap: wrap;
}

/* Champ + bouton à la MÊME hauteur (retour cliente : bouton trop imposant). */
.n2dp-newsletter-band__form input[type="email"] {
	flex: 1 1 320px;
	max-width: 380px;
	height: 46px;
	padding: 0 16px;
	border: 0;
	border-radius: 999px;
	font-size: 1rem;
}

.n2dp-newsletter-band__btn {
	background: var(--n2dp-peps);
	color: var(--n2dp-forest);
	border: 0;
	border-radius: 999px;
	height: 46px;
	padding: 0 22px;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 0.02em;
	cursor: pointer;
	transition: filter 0.18s ease;
}

.n2dp-newsletter-band__btn:hover {
	filter: brightness(1.06);
}

.n2dp-newsletter-band__status {
	min-height: 1.2em;
	margin: 14px 0 0;
	font-size: 0.92rem;
}

.n2dp-newsletter-band__status.is-ok {
	color: var(--n2dp-peps);
}

.n2dp-newsletter-band__status.is-error {
	color: #ffd2d2;
}

@media (max-width: 900px) {
	.n2dp-destinations__layout {
		grid-template-columns: 1fr;
	}

	.n2dp-destinations__aside {
		position: static;
	}

	.n2dp-destinations__map {
		height: 320px;
	}

	.n2dp-destination-intro {
		grid-template-columns: 1fr;
	}

	.n2dp-destination-intro__image {
		order: -1;
	}
}

@media (max-width: 560px) {
	.n2dp-destinations__grid {
		grid-template-columns: 1fr;
	}
}

/* ----------------------------------------------------------------------
 * Dropdowns custom (maquette Figma 386:2340). Le <select> natif est conservé
 * (soumission de formulaire) mais masqué ; l'UI ci-dessous est la surface
 * interactive. Trois variantes : --block (champs barre + filtres), --pill
 * (tri des résultats), --global (recherche globale du header).
 * ------------------------------------------------------------------- */
.n2dp-select {
	position: relative;
}
.n2dp-select--block,
.n2dp-select--global {
	display: block;
	width: 100%;
}
.n2dp-select--pill {
	display: inline-flex;
}

/* Native control : retiré du flux + invisible + non interactif, mais toujours
 * soumis. position/opacity/pointer-events ne sont jamais redéfinis par
 * l'armure Elementor, donc le masquage tient quoi qu'il arrive. */
.n2dp-select__native {
	clip: rect(0 0 0 0) !important;
	clip-path: inset(50%) !important;
	height: 1px !important;
	opacity: 0 !important;
	overflow: hidden !important;
	pointer-events: none !important;
	position: absolute !important;
	width: 1px !important;
}

.n2dp-select__trigger {
	align-items: center;
	appearance: none;
	background: var(--n2dp-soft);
	border: 0;
	border-radius: 6px;
	box-shadow: inset 0 4px 10px rgba(0, 0, 0, 0.07);
	color: var(--n2dp-forest);
	cursor: pointer;
	display: flex;
	font: 400 14px/1.3 "DM Sans", system-ui, sans-serif;
	gap: 10px;
	justify-content: space-between;
	letter-spacing: normal;
	min-height: 40px;
	padding: 9px 12px;
	text-align: left;
	text-transform: none;
	width: 100%;
}
.n2dp-select__trigger.is-placeholder {
	color: var(--n2dp-text-muted);
	font-style: italic;
	font-weight: 300;
}
.n2dp-select__label {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.n2dp-select__chevron {
	color: var(--n2dp-forest);
	display: inline-flex;
	flex: 0 0 auto;
	transition: transform 160ms ease;
}
.n2dp-select__chevron svg {
	display: block;
	height: 8px;
	width: 12px;
}
.n2dp-select.is-open .n2dp-select__chevron {
	transform: rotate(180deg);
}
.n2dp-select.is-disabled {
	opacity: 0.5;
}
.n2dp-select.is-disabled .n2dp-select__trigger {
	cursor: not-allowed;
}
.n2dp-select__trigger:focus-visible {
	outline: 2px solid var(--n2dp-peps);
	outline-offset: 2px;
}

/* Variante pill (tri des résultats) */
.n2dp-select--pill .n2dp-select__trigger {
	background: #fff;
	border: 1px solid var(--n2dp-forest);
	border-radius: 999px;
	box-shadow: none;
	color: var(--n2dp-forest);
	font: 500 16px/1 "DM Sans", system-ui, sans-serif;
	gap: 12px;
	min-height: 0;
	padding: 9px 18px;
	white-space: nowrap;
	width: auto;
}
.n2dp-select--pill .n2dp-select__trigger.is-placeholder {
	color: var(--n2dp-forest);
	font-style: normal;
	font-weight: 500;
}

/* Variante recherche globale (header) */
.n2dp-select--global .n2dp-select__trigger {
	background: #fff;
	border: 1px solid rgba(58, 82, 53, 0.22);
	border-radius: 5px;
	box-shadow: none;
	font: 500 16px/1.3 "DM Sans", system-ui, sans-serif;
	min-height: 48px;
	padding: 12px 14px;
}
.n2dp-select--global .n2dp-select__trigger.is-placeholder {
	color: var(--n2dp-forest);
	font-style: normal;
	font-weight: 500;
}

/* Panneau d'options : fond #f4f4f4, arrondi 6px (maquette 386:2340). */
.n2dp-select__panel {
	background: var(--n2dp-soft);
	border-radius: 6px;
	box-shadow: 0 14px 34px rgba(17, 24, 16, 0.16);
	left: 0;
	list-style: none;
	margin: 6px 0 0;
	max-height: 252px;
	overflow-y: auto;
	padding: 6px;
	position: absolute;
	right: 0;
	top: 100%;
	z-index: 60;
}
.n2dp-select__panel:focus {
	outline: none;
}
.n2dp-select--pill .n2dp-select__panel {
	max-width: 280px;
	min-width: 100%;
	right: auto;
	width: max-content;
}

.n2dp-select__option {
	align-items: center;
	border-radius: 4px;
	color: #1e1e1e;
	cursor: pointer;
	display: flex;
	font: 400 14px/1.3 "DM Sans", system-ui, sans-serif;
	gap: 9px;
	list-style: none;
	margin: 0;
	padding: 8px 10px;
}
/* Case carrée devant chaque option (maquette Figma 386:2362). */
.n2dp-select__option::before {
	background: #fff;
	border: 1px solid #1e1e1e;
	border-radius: 2px;
	content: "";
	flex: 0 0 auto;
	height: 12px;
	width: 12px;
}
.n2dp-select__option[aria-disabled="true"] {
	color: var(--n2dp-text-muted);
	cursor: default;
}
/* Survol / navigation clavier : fond neutre (jamais de vert). */
.n2dp-select__option.is-active,
.n2dp-select__option:hover {
	background: rgba(30, 30, 30, 0.06);
}
/* Sélection : la case est cochée (pas de surbrillance verte). */
.n2dp-select__option.is-selected {
	font-weight: 500;
}
.n2dp-select__option.is-selected::before {
	background: #1e1e1e url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 5.2l2.3 2.3 4.7-5'/%3E%3C/svg%3E") center / 9px 9px no-repeat;
	border-color: #1e1e1e;
}
/* Multi-sélection (barre : Type / Voyageurs) — chaque option cochée porte la coche. */
.n2dp-select__option.is-checked {
	font-weight: 500;
}
.n2dp-select__option.is-checked::before {
	background: #1e1e1e url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 5.2l2.3 2.3 4.7-5'/%3E%3C/svg%3E") center / 9px 9px no-repeat;
	border-color: #1e1e1e;
}

/* Armure Elementor : un <button> hérite des styles de boutons du thème/kit.
 * On réaffirme l'apparence dans chaque racine plugin. */
.n2dp-search-page .n2dp-select__trigger,
.n2dp-filters .n2dp-select__trigger,
.n2dp-detail .n2dp-select__trigger,
.n2dp-destinations .n2dp-select__trigger,
.n2dp-destination .n2dp-select__trigger,
.n2dp-global-search .n2dp-select__trigger,
.n2dp-search-page .n2dp-select__trigger:hover,
.n2dp-filters .n2dp-select__trigger:hover,
.n2dp-global-search .n2dp-select__trigger:hover,
.n2dp-search-page .n2dp-select__trigger:focus,
.n2dp-filters .n2dp-select__trigger:focus,
.n2dp-global-search .n2dp-select__trigger:focus {
	background: var(--n2dp-soft) !important;
	border: 0 !important;
	border-radius: 6px !important;
	box-shadow: inset 0 4px 10px rgba(0, 0, 0, 0.07) !important;
	color: var(--n2dp-forest) !important;
	font-size: 14px !important;
	letter-spacing: normal !important;
	line-height: 1.3 !important;
	text-transform: none !important;
}
.n2dp-search-page .n2dp-select--pill .n2dp-select__trigger,
.n2dp-filters .n2dp-select--pill .n2dp-select__trigger,
.n2dp-search-page .n2dp-select--pill .n2dp-select__trigger:hover,
.n2dp-filters .n2dp-select--pill .n2dp-select__trigger:hover {
	background: #fff !important;
	border: 1px solid var(--n2dp-forest) !important;
	border-radius: 999px !important;
	box-shadow: none !important;
	color: var(--n2dp-forest) !important;
	font-size: 16px !important;
	text-transform: none !important;
}
.n2dp-global-search .n2dp-select--global .n2dp-select__trigger,
.n2dp-global-search .n2dp-select--global .n2dp-select__trigger:hover,
.n2dp-global-search .n2dp-select--global .n2dp-select__trigger:focus {
	background: #fff !important;
	border: 1px solid rgba(58, 82, 53, 0.22) !important;
	border-radius: 5px !important;
	box-shadow: none !important;
	font-size: 16px !important;
	text-transform: none !important;
}

/* Panneau + options : fond #F4F4F4 garanti et styles de liste du thème
 * neutralisés (Elementor ajoute marges/puces aux <ul>/<li>). */
.n2dp-search-page .n2dp-select__panel,
.n2dp-filters .n2dp-select__panel,
.n2dp-detail .n2dp-select__panel,
.n2dp-destinations .n2dp-select__panel,
.n2dp-destination .n2dp-select__panel,
.n2dp-global-search .n2dp-select__panel {
	background: #f4f4f4 !important;
	list-style: none !important;
}
.n2dp-search-page .n2dp-select__option,
.n2dp-filters .n2dp-select__option,
.n2dp-detail .n2dp-select__option,
.n2dp-destinations .n2dp-select__option,
.n2dp-destination .n2dp-select__option,
.n2dp-global-search .n2dp-select__option {
	background: transparent;
	color: #1e1e1e !important;
	list-style: none !important;
	margin: 0 !important;
}
.n2dp-search-page .n2dp-select__option::marker,
.n2dp-filters .n2dp-select__option::marker,
.n2dp-detail .n2dp-select__option::marker,
.n2dp-destinations .n2dp-select__option::marker,
.n2dp-destination .n2dp-select__option::marker,
.n2dp-global-search .n2dp-select__option::marker {
	content: "" !important;
}
.n2dp-search-page .n2dp-select__option.is-active,
.n2dp-search-page .n2dp-select__option:hover,
.n2dp-filters .n2dp-select__option.is-active,
.n2dp-filters .n2dp-select__option:hover,
.n2dp-global-search .n2dp-select__option.is-active,
.n2dp-global-search .n2dp-select__option:hover {
	background: rgba(30, 30, 30, 0.06) !important;
}

/* ----------------------------------------------------------------------
 * Loops d'accueil ([n2dp_loop_activites] etc.) — grille de cartes posable
 * dans Elementor. Réutilise .n2dp-results-card (scopé .n2dp-search-page).
 * Titre + description éditables, thème clair/sombre, bouton « VOIR TOUT ».
 * ------------------------------------------------------------------- */
.n2dp-loop {
	color: var(--n2dp-forest);
	margin: 0;
	padding: 64px 24px;
}
.n2dp-loop__inner {
	margin: 0 auto;
	max-width: 1200px;
	width: 100%;
}
.n2dp-loop__head {
	margin: 0 0 34px;
}
.n2dp-loop__title {
	color: var(--n2dp-forest);
	font-family: "Albert Sans", "DM Sans", system-ui, sans-serif;
	font-size: clamp(30px, 4vw, 46px);
	font-weight: 600;
	line-height: 1.08;
	margin: 0;
}
.n2dp-loop__desc {
	color: var(--n2dp-forest);
	font: 400 16px/1.6 "DM Sans", system-ui, sans-serif;
	margin: 16px 0 0;
}
.n2dp-loop__grid {
	grid-template-columns: repeat(var(--n2dp-loop-cols, 4), minmax(0, 1fr));
}
.n2dp-loop__foot {
	display: flex;
	justify-content: center;
	margin-top: 36px;
}
.n2dp-loop__more {
	background: var(--n2dp-forest);
	border: 0;
	border-radius: 6px;
	color: var(--n2dp-cream);
	display: inline-block;
	font: 500 16px/1 "DM Sans", system-ui, sans-serif;
	padding: 15px 34px;
	text-decoration: none;
	transition: opacity 160ms ease;
	white-space: nowrap;
}
.n2dp-loop__more:hover {
	opacity: 0.9;
}
.n2dp-loop__empty {
	color: var(--n2dp-text-muted);
	font: italic 300 15px/1.4 "DM Sans", system-ui, sans-serif;
}

/* Alignement de l'en-tête */
.n2dp-loop--center .n2dp-loop__head {
	margin-left: auto;
	margin-right: auto;
	max-width: 820px;
	text-align: center;
}
.n2dp-loop--left .n2dp-loop__head {
	max-width: 980px;
	text-align: left;
}

/* Thème sombre (maquette « Les prochains évènements ») : fond vert forêt,
 * titre vert peps, description claire, bouton vert peps. */
.n2dp-loop--dark {
	background: var(--n2dp-forest);
}
.n2dp-loop--dark .n2dp-loop__title {
	color: var(--n2dp-peps);
}
.n2dp-loop--dark .n2dp-loop__desc {
	color: #f4f4f4;
}
.n2dp-loop--dark .n2dp-loop__more {
	background: var(--n2dp-peps);
	color: var(--n2dp-forest);
}
/* Sur fond sombre, le texte des cartes (titre/lieu/DATE/distance) passe en clair.
   La date était oubliée → vert foncé sur fond vert = invisible sur la loop Évènements. */
.n2dp-loop--dark .n2dp-results-card__title,
.n2dp-loop--dark .n2dp-results-card__meta,
.n2dp-loop--dark .n2dp-results-card__date,
.n2dp-loop--dark .n2dp-results-card__distance {
	color: #ffffff;
}

/* Carnet : même rythme vertical que les autres loops. */
.n2dp-loop--carnet {
	padding: 64px 24px;
}
.n2dp-loop--carnet .n2dp-detail-related {
	margin: 0 auto;
	max-width: 1200px;
	/* Le conteneur .n2dp-loop--carnet porte déjà le padding vertical (64px) :
	   on annule celui de .n2dp-detail-related (60/70px) sinon il s'empile et le
	   Carnet a deux fois plus de marge haut/bas que les autres loops. */
	padding: 0;
}
/* Bouton « VOIR TOUT » du carnet : jamais de soulignement rose hérité du thème
   (ceinture en complément du contexte .n2dp-search-page qui restaure le vert). */
.n2dp-loop--carnet .n2dp-detail-button {
	text-decoration: none !important;
}

/* Widget « Carnet (simple) » : en MOBILE uniquement, cartes en carrousel
   horizontal (mêmes cartes, défilement scroll-snap natif). Desktop : la grille
   d'origine ne bouge pas. La spécificité (0,2,0) prime sur la pile mobile
   générique .n2dp-detail-card-grid--articles, qui reste pour la bande de fiche. */
@media (max-width: 768px) {
	.n2dp-loop--carnet .n2dp-detail-card-grid--articles {
		-webkit-overflow-scrolling: touch;
		display: flex;
		gap: 20px;
		grid-template-columns: none;
		overflow-x: auto;
		padding-bottom: 6px;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}
	/* Le wrapper .n2dp-loop--carnet porte déjà le padding latéral : celui de l'inner
	   s'y additionnait (40px cumulés par côté en mobile → cartes trop étroites). */
	.n2dp-loop--carnet .n2dp-detail-related__inner {
		padding-left: 0;
		padding-right: 0;
	}
	.n2dp-loop--carnet .n2dp-detail-card-grid--articles::-webkit-scrollbar {
		display: none;
	}
	.n2dp-loop--carnet .n2dp-detail-card-grid--articles > * {
		/* Grande carte plafonnée à 92% du conteneur → aperçu de la suivante. */
		flex: 0 0 438px;
		max-width: 92%;
		scroll-snap-align: start;
		width: auto;
	}
}

/* Effet au survol des cartes « article » (tous contextes : carnet simple, bande
   d'articles des fiches et des destinations), comme la mosaïque : la carte se
   soulève et la photo de fond zoome doucement. */
.n2dp-article-card {
	transition: transform 0.2s ease;
}
.n2dp-article-card:hover {
	transform: translateY(-4px);
}
.n2dp-article-card__bg {
	transition: transform 0.35s ease;
}
.n2dp-article-card:hover .n2dp-article-card__bg {
	transform: scale(1.04);
}

@media (max-width: 1024px) {
	.n2dp-loop__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 560px) {
	.n2dp-loop {
		padding: 44px 18px;
	}
	/* Mobile : la grille devient un CARROUSEL horizontal (scroll-snap natif,
	   sans JS). Chaque carte fait ~80% de large → la suivante dépasse pour
	   indiquer qu'on peut faire défiler. Les cartes débordent jusqu'aux bords
	   de l'écran (marge négative compensant le padding de .n2dp-loop). */
	.n2dp-loop__grid {
		display: flex;
		grid-template-columns: none;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		margin-inline: -18px;
		padding-inline: 18px;
		scroll-padding-left: 18px;
	}
	.n2dp-loop__grid::-webkit-scrollbar {
		display: none;
	}
	.n2dp-loop__grid > * {
		flex: 0 0 80%;
		scroll-snap-align: start;
		scroll-snap-stop: always;
	}
}

/* ----------------------------------------------------------------------
 * Anti-rose Hello Elementor : son reset.css applique
 *   [type="button"], [type="submit"], button { border: 1px solid #cc3366 }
 * — spécificité 0,1,0, à égalité avec NOS classes de boutons (0,1,0), donc
 * selon l'ordre d'enqueue (front.css vs le thème), une bordure rose pouvait
 * apparaître. On RE-DÉCLARE la bordure VOULUE de chaque bouton via le doublage
 * de classe (.x.x = spécificité 0,2,0) : ça bat le rose, sans !important, avec
 * exactement les mêmes valeurs que prévu — donc rien d'autre n'est modifié.
 * (Les boutons déjà armés en ≥ 0,2,0 ailleurs — filtres, pills de tri — sont
 * déjà couverts et ne figurent pas ici.)
 * ------------------------------------------------------------------- */
.n2dp-search__tab.n2dp-search__tab,
.n2dp-search__submit.n2dp-search__submit,
.n2dp-cat-chip.n2dp-cat-chip,
.n2dp-cat-chips__more.n2dp-cat-chips__more,
.n2dp-view-toggle__btn.n2dp-view-toggle__btn,
.n2dp-modal__close.n2dp-modal__close,
.n2dp-modal__reset.n2dp-modal__reset,
.n2dp-modal__apply.n2dp-modal__apply,
.n2dp-newsletter-band__btn.n2dp-newsletter-band__btn,
.n2dp-detail-gallery__button.n2dp-detail-gallery__button {
	border: 0;
}

/* Mobile : les 3 onglets de type doivent rester sur une seule ligne, aussi bien
   dans le moteur de recherche d'accueil que dans l'en-tête des résultats. */
@media (max-width: 760px) {
	.n2dp-search-page .n2dp-search__tabs,
	.n2dp-search .n2dp-search__tabs,
	.n2dp-results__head .n2dp-search__tabs {
		align-items: stretch;
		display: grid;
		flex: 1 1 100%;
		gap: 4px;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		margin-bottom: 8px;
		width: 100%;
	}

	.n2dp-search-page .n2dp-search__tab,
	.n2dp-search-page .n2dp-search__tab:focus,
	.n2dp-search-page .n2dp-search__tab:active,
	.n2dp-search .n2dp-search__tab,
	.n2dp-results__head .n2dp-search__tab {
		border-radius: 13px !important;
		flex: 1 1 auto;
		font-size: clamp(9px, 2.6vw, 12px);
		gap: 3px;
		letter-spacing: 0;
		line-height: 1.05;
		min-height: 42px;
		min-width: 0;
		overflow: hidden;
		padding: 7px 2px 8px;
		white-space: nowrap;
		width: 100%;
	}

	.n2dp-search-page .n2dp-search__tab:hover,
	.n2dp-search-page .n2dp-search__tab.is-active,
	.n2dp-search-page .n2dp-search__tab.is-active:hover,
	.n2dp-search-page .n2dp-search__tab.is-active:focus,
	.n2dp-search-page .n2dp-search__tab.is-active:active {
		border-radius: 13px !important;
	}

	.n2dp-search__tab span {
		min-width: 0;
		overflow: hidden;
		white-space: nowrap;
	}

	.n2dp-search__tab svg {
		flex: 0 0 14px;
		height: 14px;
		width: 14px;
	}

	.n2dp-results__tools {
		width: 100%;
		gap: 8px;
		justify-content: space-between;
	}
	.n2dp-results__sort .n2dp-select--pill {
		max-width: calc(100vw - 150px);
		min-width: 0;
	}
	.n2dp-results__sort .n2dp-select--pill .n2dp-select__trigger {
		font-size: 13px;
		padding: 8px 12px;
	}
}
/* Boutons plugin qui gardent leur fin liseré voulu (et non le rose). */
.n2dp-search__geo.n2dp-search__geo,
.n2dp-page.n2dp-page {
	border: 1px solid rgba(58, 82, 53, 0.35);
}
.n2dp-results__map-expand.n2dp-results__map-expand {
	border: 1px solid rgba(58, 82, 53, 0.25);
}

/* ----------------------------------------------------------------------
 * Encart (publicité) — [n2dp_encart] / widget « N2DP — Encart pub ».
 * Bande pleine largeur : image de fond + voile + titre + texte + bouton.
 * ------------------------------------------------------------------- */
.n2dp-encart {
	--n2dp-forest: #3a5235;
	--n2dp-peps: #a8cb5d;
	align-items: center;
	background: var(--n2dp-forest);
	color: #fff;
	display: flex;
	justify-content: center;
	min-height: 320px;
	overflow: hidden;
	padding: 64px 24px;
	position: relative;
	text-align: center;
}
.n2dp-encart__bg {
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	inset: 0;
	position: absolute;
	z-index: 0;
}
.n2dp-encart.has-image::after {
	background: rgba(17, 24, 16, 0.46);
	content: "";
	inset: 0;
	position: absolute;
	z-index: 1;
}
.n2dp-encart__inner {
	margin: 0 auto;
	max-width: 720px;
	position: relative;
	z-index: 2;
}
.n2dp-encart__title {
	color: #fff;
	font-family: "Albert Sans", "DM Sans", system-ui, sans-serif;
	font-size: clamp(28px, 3.6vw, 42px);
	font-weight: 600;
	line-height: 1.1;
	margin: 0;
}
.n2dp-encart__text {
	color: #fff;
	font: 400 17px/1.6 "DM Sans", system-ui, sans-serif;
	margin: 16px 0 0;
}
.n2dp-encart__btn {
	background: var(--n2dp-peps);
	border-radius: 6px;
	color: var(--n2dp-forest);
	display: inline-block;
	font: 500 16px/1 "DM Sans", system-ui, sans-serif;
	margin-top: 26px;
	padding: 15px 34px;
	text-decoration: none;
	transition: opacity 160ms ease;
}
.n2dp-encart__btn:hover {
	opacity: 0.9;
}
.n2dp-encart__empty {
	color: var(--n2dp-text-muted, #777);
	font: italic 300 15px/1.4 "DM Sans", system-ui, sans-serif;
}

/* Encart vide → AUCUNE place réservée : le rendu PHP renvoie '' mais Elementor
   laisse un conteneur vide qui garderait marges/paddings de la section. */
.elementor-widget-n2dp_encart > .elementor-widget-container:empty {
	display: none;
}
.elementor-widget-n2dp_encart:has( > .elementor-widget-container:empty ) {
	display: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

@media (max-width: 560px) {
	.n2dp-encart {
		min-height: 260px;
		padding: 44px 18px;
	}
}

/* Encart affiché dans la bande « accroche » d'une fiche : pleine largeur de
 * page (full-bleed, même technique que .n2dp-detail-reassurance) + marge basse
 * pour ne pas coller la section « Options et services » suivante. */
.n2dp-detail .n2dp-encart {
	margin-bottom: 70px;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	width: 100vw;
}
@media (max-width: 768px) {
	.n2dp-detail .n2dp-encart {
		margin-bottom: 44px;
	}
}

/* Dépliable « autres dates » dans le bloc « Quand » de la fiche. */
.n2dp-detail-dates {
	margin-top: 6px;
}
.n2dp-detail-dates > summary {
	color: var(--n2dp-peps, #a8cb5d);
	cursor: pointer;
	display: inline-block;
	font-weight: 600;
	list-style: none;
}
.n2dp-detail-dates > summary::-webkit-details-marker {
	display: none;
}
.n2dp-detail-dates > summary::before {
	content: "▸ ";
	font-size: 0.85em;
}
.n2dp-detail-dates[open] > summary::before {
	content: "▾ ";
}
.n2dp-detail-dates__list {
	list-style: none;
	margin: 8px 0 0;
	padding: 0;
}
.n2dp-detail-dates__list li {
	padding: 2px 0;
}

/* ============================ JEU CONCOURS (widget Elementor) =============
   Reprend le style historique de la bande « Jeu concours » (fond bleu, titre
   forêt, bouton forêt/peps). Fonds + couleurs en !important pour résister au
   kit Elementor (qui force souvent des styles sur ce type de bloc). */
.n2dp-contest {
	box-sizing: border-box;
	/* Bande PLEINE LARGEUR (bord à bord) même à l'intérieur d'un conteneur
	   Elementor contraint : on déborde jusqu'à la largeur de la fenêtre. */
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	background: var(--n2dp-contest-bg, var(--n2dp-blue, #a6bed6)) !important;
	color: var(--n2dp-contest-text, #1e1e1e);
}
.n2dp-contest__inner {
	box-sizing: border-box;
	/* Contenu CENTRÉ (inchangé) : le fond prend toute la largeur, le texte reste
	   concentré au centre. */
	margin: 0 auto;
	max-width: 760px;
	padding: 48px 24px;
	text-align: center;
	background: transparent;
}
.n2dp-contest__icon {
	color: var(--n2dp-contest-icon, var(--n2dp-forest, #3a5235));
	display: inline-flex;
}
.n2dp-contest__title {
	color: var(--n2dp-contest-title, var(--n2dp-forest, #3a5235));
	font: 700 34px/1.06 "Albert Sans", "DM Sans", system-ui, sans-serif;
	margin: 8px 0 12px;
	text-transform: uppercase;
}
.n2dp-contest__text {
	color: var(--n2dp-contest-text, #1e1e1e);
	font-size: 17px;
	line-height: 1.3;
	margin: 0 auto 22px;
	max-width: 600px;
}
.n2dp-contest__link-wrap {
	margin: -10px auto 22px;
	text-align: center;
}
.n2dp-contest__link {
	color: var(--n2dp-contest-link, var(--n2dp-forest, #3a5235));
	font: 700 15px/1.2 "DM Sans", system-ui, sans-serif;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.n2dp-contest__form {
	margin: 0 auto;
	max-width: 520px;
}
.n2dp-contest__row {
	display: flex;
	gap: 10px;
}
.n2dp-contest__email {
	flex: 1 1 auto;
	min-width: 0;
	border: 0;
	border-radius: 6px;
	padding: 13px 16px;
	font-size: 16px;
	background: var(--n2dp-contest-input-bg, #fff) !important;
	color: var(--n2dp-contest-input-text, #1d1d1d) !important;
}
.n2dp-contest__email::placeholder {
	color: var(--n2dp-contest-input-placeholder, rgba(29, 29, 29, 0.58));
}
.n2dp-contest__btn {
	flex: 0 0 auto;
	appearance: none;
	border: 0;
	border-radius: 6px;
	padding: 13px 26px;
	font: 600 16px/1.2 "DM Sans", system-ui, sans-serif;
	cursor: pointer;
	background: var(--n2dp-contest-button-bg, var(--n2dp-forest, #3a5235)) !important;
	color: var(--n2dp-contest-button-text, var(--n2dp-peps, #a8cb5d)) !important;
	transition: background 160ms ease, color 160ms ease, filter 160ms ease;
}
.n2dp-contest__btn:hover {
	background: var(--n2dp-contest-button-hover-bg, var(--n2dp-contest-button-bg, var(--n2dp-forest, #3a5235))) !important;
	color: var(--n2dp-contest-button-hover-text, var(--n2dp-contest-button-text, var(--n2dp-peps, #a8cb5d))) !important;
	filter: brightness(1.08);
}
.n2dp-contest__btn[disabled] {
	opacity: 0.6;
	cursor: default;
}
.n2dp-contest__legal {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin-top: 14px;
	font-size: 13px;
	line-height: 1.35;
	text-align: left;
	color: var(--n2dp-contest-legal, #23331f);
}
.n2dp-contest__legal input {
	margin-top: 2px;
	flex: 0 0 auto;
	accent-color: var(--n2dp-contest-checkbox, var(--n2dp-forest, #3a5235));
}
.n2dp-contest__legal a {
	color: var(--n2dp-contest-legal-link, var(--n2dp-contest-link, var(--n2dp-forest, #3a5235)));
}
.n2dp-contest__notice {
	border-radius: 8px;
	padding: 10px 14px;
	margin: 0 0 14px;
	font-size: 14px;
}
.n2dp-contest__notice--success {
	background: var(--n2dp-contest-notice-success-bg, rgba(255, 255, 255, 0.6));
	color: var(--n2dp-contest-notice-success-text, #1e3a1e);
}
.n2dp-contest__notice--error {
	background: var(--n2dp-contest-notice-error-bg, rgba(176, 38, 24, 0.14));
	color: var(--n2dp-contest-error, #7a1d12);
}
.n2dp-contest__error {
	margin: 10px 0 0;
	font-size: 14px;
	font-weight: 600;
	color: var(--n2dp-contest-error, #7a1d12);
}

/* Modale de confirmation — carte centrée OPAQUE (anti-kit Elementor : !important
   sur fond + couleurs, sinon le kit la rend transparente). */
.n2dp-contest-modal {
	align-items: center;
}
.n2dp-contest-modal .n2dp-modal__backdrop {
	background: var(--n2dp-contest-modal-backdrop, rgba(20, 28, 18, 0.6)) !important;
}
.n2dp-contest-modal__dialog {
	background: var(--n2dp-contest-modal-bg, #fff9ed) !important;
	color: var(--n2dp-contest-modal-text, #333) !important;
	border-radius: 20px !important;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.25) !important;
	max-width: 420px;
	padding: 40px 32px 32px;
	text-align: center;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
}
.n2dp-contest-modal__check {
	color: var(--n2dp-contest-modal-icon, var(--n2dp-forest, #3a5235)) !important;
	display: inline-flex;
}
.n2dp-contest-modal__title {
	color: var(--n2dp-contest-modal-title, var(--n2dp-forest, #3a5235)) !important;
	font: 600 26px/1.1 "Albert Sans", "DM Sans", system-ui, sans-serif;
	margin: 0;
}
.n2dp-contest-modal__text {
	color: var(--n2dp-contest-modal-text, #333) !important;
	font-size: 16px;
	line-height: 1.45;
	margin: 0;
}
.n2dp-contest-modal__ok {
	appearance: none;
	border: 0;
	border-radius: 8px;
	padding: 12px 28px;
	margin-top: 6px;
	font: 600 15px/1 "DM Sans", system-ui, sans-serif;
	cursor: pointer;
	background: var(--n2dp-contest-modal-button-bg, var(--n2dp-forest, #3a5235)) !important;
	color: var(--n2dp-contest-modal-button-text, var(--n2dp-peps, #a8cb5d)) !important;
	transition: background 160ms ease, color 160ms ease, filter 160ms ease;
}
.n2dp-contest-modal__ok:hover {
	background: var(--n2dp-contest-modal-button-hover-bg, var(--n2dp-contest-modal-button-bg, var(--n2dp-forest, #3a5235))) !important;
	color: var(--n2dp-contest-modal-button-hover-text, var(--n2dp-contest-modal-button-text, var(--n2dp-peps, #a8cb5d))) !important;
	filter: brightness(1.08);
}
.n2dp-contest-modal .n2dp-modal__close {
	position: absolute;
	top: 12px;
	right: 12px;
	background: transparent !important;
	color: var(--n2dp-contest-modal-close, var(--n2dp-forest, #3a5235)) !important;
}

@media (max-width: 768px) {
	.n2dp-contest-modal {
		align-items: center;
		overflow-y: auto;
		padding: 16px;
	}
	.n2dp-contest-modal__dialog {
		border-radius: 18px !important;
		max-height: none;
		max-width: 420px;
		padding: 36px 24px 28px;
		animation: none;
	}
	.n2dp-contest__row {
		flex-direction: column;
	}
	.n2dp-contest__btn {
		width: 100%;
	}
	.n2dp-contest__inner {
		padding: 36px 18px;
	}
	.n2dp-contest__title {
		font-size: 28px;
	}
}

/* ============================================================
   Carnet de voyage — widget riche : filtres Destinations + 1 article
   « en avant » + grille 2 colonnes paginée. Reprend l'allure du loop-grid
   Elementor (image arrondie, pastille verte, bouton « Lire l'article »).
   ============================================================ */
.n2dp-carnet {
	width: 100%;
}
.n2dp-carnet__inner {
	box-sizing: border-box;
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 16px;
}
.n2dp-carnet__title {
	margin: 0 0 8px;
	font: 700 30px/1.15 "DM Sans", system-ui, sans-serif;
	color: var(--n2dp-forest);
	text-align: center;
}
.n2dp-carnet__intro {
	margin: 0 auto 8px;
	max-width: 720px;
	color: #5b6b54;
	text-align: center;
}

/* Barre de filtres (pills Destinations) */
.n2dp-carnet__filters {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: center;
	margin: 18px 0 14px;
	transition: max-height 0.25s ease;
}
.n2dp-carnet__filters.is-collapsed {
	max-height: 80px; /* ~2 rangées de chips ; le reste est révélé par « Voir plus » */
	overflow: hidden;
}
/* Bouton « Voir plus / Voir moins » (desktop, quand trop de chips). */
.n2dp-carnet .n2dp-carnet__filters-toggle {
	appearance: none !important;
	-webkit-appearance: none !important;
	display: block;
	width: fit-content !important;
	margin: 0 auto 22px !important;
	padding: 4px 10px !important;
	border: 0 !important;
	background: transparent !important;
	background-image: none !important;
	box-shadow: none !important;
	color: var(--n2dp-forest) !important;
	font: 600 14px/1 "DM Sans", system-ui, sans-serif !important;
	text-transform: none !important;
	text-decoration: underline !important;
	cursor: pointer;
}
.n2dp-carnet__filters-toggle[hidden] {
	display: none !important;
}
/* Chips de filtre façon « e-filter-item » Elementor : pastille outline, fond
   transparent, état actif rempli (piloté par aria-pressed comme l'original).
   ARMURE ANTI-ELEMENTOR : ce sont des <button>, et le thème/kit force ses styles
   de bouton (fond, bord, rayon, couleur, ombre). On monte la spécificité
   (.n2dp-carnet …) et on verrouille en !important les propriétés écrasées. */
.n2dp-carnet .n2dp-carnet__filter {
	appearance: none !important;
	-webkit-appearance: none !important;
	cursor: pointer;
	margin: 0 !important;
	width: auto !important;
	min-height: 0 !important;
	border: 1px solid #758958 !important;
	background: #758958 !important;
	background-image: none !important;
	color: #fff !important;
	border-radius: 999px !important;
	padding: 8px 18px !important;
	font: 500 14px/1 "DM Sans", system-ui, sans-serif !important;
	text-transform: none !important;
	text-decoration: none !important;
	letter-spacing: normal !important;
	box-shadow: none !important;
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.n2dp-carnet .n2dp-carnet__filter:hover,
.n2dp-carnet .n2dp-carnet__filter.is-active,
.n2dp-carnet .n2dp-carnet__filter[aria-pressed="true"] {
	background: #a8cb5d !important;
	border-color: #a8cb5d !important;
	color: #3a5235 !important;
}

/* Carte (commune grille + en avant) */
.n2dp-carnet-card {
	display: flex;
	flex-direction: column;
	gap: 14px;
	color: inherit;
	text-decoration: none;
	transition: transform 0.2s ease;
}
/* Même langage de survol que les autres cartes : soulèvement + zoom photo. */
.n2dp-carnet-card:hover {
	transform: translateY(-4px);
}
.n2dp-carnet-card__img {
	transition: transform 0.35s ease;
}
.n2dp-carnet-card:hover .n2dp-carnet-card__img {
	transform: scale(1.04);
}
.n2dp-carnet-card.is-hidden {
	display: none;
}
.n2dp-carnet-card__media {
	display: block;
	border-radius: 10px;
	overflow: hidden;
	background: #e9efe0;
}
.n2dp-carnet-card__img {
	display: block;
	width: 100%;
	height: 300px;
	object-fit: cover;
	object-position: center center;
}
.n2dp-carnet-card__body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
}
.n2dp-carnet-card__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px;
}
.n2dp-carnet-card__badge {
	background: var(--n2dp-forest);
	color: #fff;
	border-radius: 20px;
	padding: 6px 14px;
	font: 400 14px/1 "DM Sans", system-ui, sans-serif;
}
.n2dp-carnet-card__read {
	color: #6a7a62;
	font-size: 14px;
}
.n2dp-carnet-card__title {
	margin: 0;
	font: 700 24px/1.12 "DM Sans", system-ui, sans-serif;
	color: var(--n2dp-forest);
}
.n2dp-carnet-card__excerpt {
	color: #4f5b49;
	font-size: 15px;
	line-height: 1.5;
}
.n2dp-carnet-card__btn {
	display: inline-flex;
	align-items: center;
	margin-top: 2px;
	background: var(--n2dp-peps);
	color: var(--n2dp-forest);
	border-radius: 20px;
	padding: 9px 18px;
	font: 500 15px/1 "DM Sans", system-ui, sans-serif;
	transition: background 0.15s, color 0.15s;
}
.n2dp-carnet-card:hover .n2dp-carnet-card__btn {
	background: var(--n2dp-forest);
	color: #fff;
}

/* Article « en avant » : pleine largeur, image plus haute, titre plus grand */
.n2dp-carnet__featured {
	margin-bottom: 32px;
}
.n2dp-carnet__featured .n2dp-carnet-card__img {
	height: 440px;
}
.n2dp-carnet__featured .n2dp-carnet-card__title {
	font-size: 30px;
}

/* Grille 2 colonnes — minmax(0,1fr) pour empêcher un titre long d'élargir
   une colonne (même garde-fou que le calendrier de l'agenda). */
.n2dp-carnet__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 30px;
}

/* Pagination (rendue par front.js ; vide → masquée) */
.n2dp-carnet__pager {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin-top: 32px;
}
.n2dp-carnet__pager:empty {
	display: none;
}
.n2dp-carnet .n2dp-carnet__page {
	appearance: none !important;
	-webkit-appearance: none !important;
	cursor: pointer;
	margin: 0 !important;
	min-width: 40px !important;
	width: auto !important;
	height: 40px !important;
	min-height: 0 !important;
	border: 2px solid var(--n2dp-forest) !important;
	background: transparent !important;
	background-image: none !important;
	color: var(--n2dp-forest) !important;
	border-radius: 50% !important;
	padding: 0 !important;
	font: 600 15px/1 "DM Sans", system-ui, sans-serif !important;
	box-shadow: none !important;
	text-decoration: none !important;
}
.n2dp-carnet .n2dp-carnet__page.is-active {
	background: var(--n2dp-forest) !important;
	color: #fff !important;
}

/* Mobile : une seule colonne, images plus basses */
@media (max-width: 781px) {
	.n2dp-carnet__grid {
		grid-template-columns: 1fr;
		gap: 22px;
	}
	.n2dp-carnet__featured .n2dp-carnet-card__img {
		height: 240px;
	}
	.n2dp-carnet-card__img {
		height: 220px;
	}
	.n2dp-carnet__title {
		font-size: 24px;
	}
	.n2dp-carnet__featured .n2dp-carnet-card__title {
		font-size: 24px;
	}

	/* Les chips ne s'empilent plus : UNE seule rangée à défiler horizontalement
	   (swipe), comme le filtre Elementor d'origine. Repli « Voir plus » désactivé. */
	.n2dp-carnet__filters {
		flex-wrap: nowrap;
		justify-content: flex-start;
		overflow-x: auto;
		max-height: none !important;
		scroll-snap-type: x proximity;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		padding-bottom: 4px;
	}
	.n2dp-carnet__filters::-webkit-scrollbar {
		display: none;
	}
	.n2dp-carnet .n2dp-carnet__filter {
		flex: 0 0 auto !important;
		scroll-snap-align: start;
	}
	.n2dp-carnet__filters-toggle {
		display: none !important;
	}
}
