/* =====================================================================
 * Refonte 2026 — blocs « nh2_* » (templates/nh2/)
 * Tout est préfixé .nh2 : aucun effet sur les blocs existants du thème.
 * Couleurs et typographie reprises de la maquette validée (Lovable).
 * ===================================================================== */

:root {
	--nh-green: oklch(0.706 0.033 164.9);
	--nh-green-dark: oklch(0.547 0.032 164.6);
	--nh-fuchsia: oklch(0.339 0.101 351);
	--nh-fuchsia-light: oklch(0.463 0.164 351.5);
	--nh-fuchsia-black: oklch(0.32 0.1 351);
	--nh-red: oklch(0.595 0.204 15.3);
	--nh-orange: oklch(0.68 0.156 33.1);
	--nh-gray: oklch(0.971 0.003 174.5);
	--nh-line: oklch(0.931 0 89.9);
	--nh-texte: oklch(0.129 0.042 264.695);
	--nh-texte-doux: oklch(0.554 0.046 257.417);
	--nh-titre: var(--nh-fuchsia);
}

.nh2 {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: 5rem 1.5rem;
	font-family: "montserrat", "Montserrat", sans-serif;
	font-weight: 300;
	color: var(--nh-texte);
	background: #fff;
}

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

.nh2-wrap { max-width: 72rem; margin: 0 auto; }

/* reset.css du thème met tous les <p> en inline-block 100 % : on revient au flux normal */
.nh2 p { display: block; width: auto; }

/* --- Fonds ----------------------------------------------------------- */
.nh2--gris { background: var(--nh-gray); }
.nh2--fuchsia { background: var(--nh-fuchsia); }
.nh2--fuchsia_fonce { background: var(--nh-fuchsia-black); }
.nh2--vert { background: var(--nh-green); }
.nh2--feuille { background: var(--nh-green-dark); }
.nh2-fond-img { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; object-fit: cover; }

.nh2--fuchsia,
.nh2--fuchsia_fonce,
.nh2--vert,
.nh2--feuille { --nh-titre: #fff; --nh-texte-doux: rgb(255 255 255 / 0.9); color: #fff; }

/* Deux blocs consécutifs sur le même fond = une seule section visuelle */
.nh2--blanc + .nh2--blanc,
.nh2--gris + .nh2--gris,
.nh2--fuchsia + .nh2--fuchsia,
.nh2--fuchsia_fonce + .nh2--fuchsia_fonce,
.nh2--vert + .nh2--vert { padding-top: 0; }

/* --- Typographie ------------------------------------------------------ */
.nh2 h1,
.nh2 h2,
.nh2 h3 { font-family: inherit; margin: 0; letter-spacing: normal; text-transform: none; }

.nh2-titre {
	font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.25rem);
	font-weight: 600;
	line-height: 1.2;
	color: var(--nh-titre);
	text-align: center;
}
.nh2-titre em { font-style: normal; font-weight: 300; }

.nh2-intro {
	max-width: 48rem;
	margin: 1.25rem auto 0;
	font-size: 1rem;
	line-height: 1.7;
	text-align: center;
	color: var(--nh-texte-doux);
}

.nh2-prose { line-height: 1.75; color: var(--nh-texte-doux); }
/* p seul sans .nh2 en tête : la règle d'espacement entre éléments (plus spécifique) doit l'emporter */
.nh2-prose p { margin: 0; }
.nh2 .nh2-prose > * + * { margin-top: 1rem; }
.nh2-prose a { color: inherit; text-decoration: underline; text-underline-offset: 4px; }
.nh2-prose strong { font-weight: 600; }

/* --- Boutons ---------------------------------------------------------- */
.nh2-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.85rem 1.6rem;
	border: 1px solid transparent;
	border-radius: 2px;
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none !important;
	transition: background-color 0.2s, color 0.2s, border-color 0.2s;
}
.nh2-btn--principal { background: var(--nh-orange); border-color: var(--nh-orange); color: #fff; }
.nh2-btn--principal:hover { background: var(--nh-red); border-color: var(--nh-red); color: #fff; }
.nh2-btn--secondaire { border-color: var(--nh-green-dark); color: var(--nh-green-dark); }
.nh2-btn--secondaire:hover { background: var(--nh-green-dark); color: #fff; }
.nh2-btn--clair { border-color: rgb(255 255 255 / 0.7); color: #fff; }
.nh2-btn--clair:hover { background: #fff; border-color: #fff; color: var(--nh-fuchsia); }

.nh2-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; margin-top: 3rem; }
.nh2-actions:empty { display: none; }

/* --- Grilles et cartes ------------------------------------------------ */
/* .nh2 en préfixe : reset.css impose ul[class] { margin: 0; padding-left: 1rem } */
.nh2 .nh2-grille { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; margin: 3rem 0 0; padding: 0; list-style: none; }
@media (min-width: 768px) {
	.nh2 .nh2-grille--2,
	.nh2 .nh2-grille--3,
	.nh2 .nh2-grille--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.nh2 .nh2-grille--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.nh2 .nh2-grille--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Une carte blanche garde des couleurs de texte « fond clair », même posée sur un fond sombre */
.nh2-carte {
	--nh-titre: var(--nh-fuchsia);
	--nh-texte-doux: oklch(0.554 0.046 257.417);
	display: flex;
	flex-direction: column;
	margin: 0;
	background: #fff;
	color: var(--nh-texte);
}
.nh2-carte-img { display: block; aspect-ratio: 16 / 9; overflow: hidden; }
.nh2-carte-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nh2-carte-corps { display: flex; flex: 1; flex-direction: column; align-items: flex-start; padding: 1.5rem; }
.nh2-carte-corps .nh2-btn { margin-top: auto; }
.nh2-carte-corps > .nh2-btn:not(:first-child) { margin-top: 1.5rem; }

.nh2-carte-titre { margin-top: 0.75rem !important; font-size: 1.125rem; font-weight: 600; line-height: 1.35; color: var(--nh-fuchsia); }
.nh2-carte-titre:first-child { margin-top: 0 !important; }
.nh2-carte-titre a { color: inherit; text-decoration: none; }
.nh2-carte-titre a:hover { color: var(--nh-fuchsia-light); }
.nh2-carte-texte { margin: 0.75rem 0 0; font-size: 0.875rem; line-height: 1.7; color: var(--nh-texte-doux); }
.nh2-carte-texte p { margin: 0 0 0.5rem; }
.nh2 .nh2-carte-texte ul { margin: 0.75rem 0 0; padding: 0; list-style: none; color: var(--nh-texte); }
.nh2 .nh2-carte-texte li { display: flex; gap: 0.5rem; margin: 0.35rem 0 0; }
.nh2-carte-texte li::before { content: "—"; color: var(--nh-green-dark); }

.nh2-etiquette,
.nh2-badge {
	display: inline-block;
	padding: 0.25rem 0.75rem;
	background: var(--nh-gray);
	border: 1px solid var(--nh-line);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--nh-green-dark);
}
.nh2-badge { margin: 1rem 0 0; }
.nh2-surtitre { margin: 0; font-size: 0.75rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--nh-green-dark); }
.nh2-prix { margin: 0.5rem 0 0; font-size: 1rem; font-weight: 600; color: var(--nh-green-dark); }
.nh2-auteur { margin: 1rem 0 0; font-size: 0.75rem; color: var(--nh-fuchsia); }

/* Cartes à image sur fond blanc : un filet */
.nh2--blanc .nh2-cartes--image .nh2-carte,
.nh2-cartes--image.nh2--blanc .nh2-carte { border: 1px solid var(--nh-line); }
.nh2-cartes--image .nh2-grille--4 .nh2-carte-img { aspect-ratio: 4 / 3; }
.nh2-cartes--image .nh2-grille--4 .nh2-carte-corps { padding: 1.25rem; }

/* Encadrés texte */
.nh2-cartes--encadre .nh2-carte { padding: 0.5rem; border: 1px solid var(--nh-line); background: transparent; color: inherit; }
.nh2-cartes--encadre .nh2-carte-titre { font-size: 1.25rem; }
.nh2-cartes--encadre .nh2-carte-corps .nh2-btn { margin-top: 1.5rem; }
.nh2-cartes--encadre.nh2--fuchsia .nh2-carte,
.nh2-cartes--encadre.nh2--fuchsia_fonce .nh2-carte,
.nh2-cartes--encadre.nh2--vert .nh2-carte {
	--nh-titre: #fff;
	--nh-texte-doux: rgb(255 255 255 / 0.9);
	border-color: rgb(255 255 255 / 0.3);
	color: #fff;
}
.nh2-cartes--encadre.nh2--fuchsia .nh2-carte-titre,
.nh2-cartes--encadre.nh2--fuchsia_fonce .nh2-carte-titre,
.nh2-cartes--encadre.nh2--vert .nh2-carte-titre { color: #fff; }
.nh2-cartes--encadre .nh2-grille { margin-top: 2.5rem; }
.nh2-cartes--encadre .nh2-grille--2 { max-width: 64rem; margin-left: auto; margin-right: auto; }

/* --- Image + texte ---------------------------------------------------- */
.nh2-deux-colonnes { display: grid; gap: 3rem; align-items: center; }
@media (min-width: 768px) {
	.nh2-deux-colonnes { grid-template-columns: 1fr 1fr; }
	.nh2-image--droite .nh2-figure { order: 2; }
}
.nh2-figure { margin: 0; }
.nh2-figure img { display: block; width: 100%; height: auto; object-fit: cover; }
.nh2-legende { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 0.5rem; margin-top: 0.75rem; font-size: 0.875rem; font-weight: 500; text-align: center; color: var(--nh-green); }
.nh2-texte .nh2-titre { text-align: left; }
.nh2-texte .nh2-prose { margin-top: 1.25rem; }
.nh2-texte .nh2-btn { margin-top: 1.75rem; }
.nh2-signature { margin: 1.5rem 0 0; font-size: 0.875rem; opacity: 0.8; }
.nh2-decor-feuille {
	background-image: url("../images/feuille-entire-bannieres.svg");
	background-repeat: no-repeat;
	background-size: 32rem;
	background-position: -7rem 130%;
	padding-top: 6rem;
	padding-bottom: 6rem;
}

/* --- Points clés ------------------------------------------------------ */
.nh2-liste-points { counter-reset: nh2-etape; }
.nh2-liste-points li { margin: 0; }
.nh2-points--filet .nh2-liste-points li { padding-top: 1.25rem; border-top: 1px solid var(--nh-line); }
.nh2--fuchsia .nh2-liste-points li,
.nh2--fuchsia_fonce .nh2-liste-points li,
.nh2--vert .nh2-liste-points li { border-color: rgb(255 255 255 / 0.3); }
.nh2-point-titre { font-size: 0.875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.nh2-point-texte { margin: 0.75rem 0 0; font-size: 0.875rem; line-height: 1.7; color: var(--nh-texte-doux); }
.nh2-points--numero .nh2-liste-points li { position: relative; padding-left: 3.25rem; }
.nh2-points--numero .nh2-liste-points li::before {
	counter-increment: nh2-etape;
	content: counter(nh2-etape);
	position: absolute;
	left: 0;
	top: 0;
	width: 2.25rem;
	height: 2.25rem;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--nh-fuchsia);
	color: #fff;
	font-weight: 600;
}
.nh2-points--numero .nh2-point-titre { text-transform: none; letter-spacing: normal; font-size: 1rem; color: var(--nh-titre); }

/* --- Témoignages (carrousel) ------------------------------------------ */
.nh2-carrousel { margin-top: 2.5rem; }
.nh2-carrousel-piste {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 100%;
	gap: 2rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
}
.nh2-carrousel-piste::-webkit-scrollbar { display: none; }
.nh2-carrousel-piste > * { scroll-snap-align: start; }
@media (min-width: 768px) { .nh2-carrousel-piste { grid-auto-columns: calc((100% - 4rem) / 3); } }
.nh2-temoignage blockquote { margin: 0.75rem 0 0; padding: 0; border: 0; font-style: normal; }
.nh2-carrousel-nav { display: flex; justify-content: center; gap: 0.75rem; margin-top: 2rem; }
.nh2-carrousel-btn {
	width: 2.5rem;
	height: 2.5rem;
	border: 1px solid var(--nh-line);
	background: #fff;
	color: var(--nh-green-dark);
	font-size: 1.25rem;
	line-height: 1;
	cursor: pointer;
}
.nh2-carrousel-btn:disabled { opacity: 0.4; cursor: default; }

/* --- FAQ -------------------------------------------------------------- */
.nh2-faq-liste { max-width: 48rem; margin: 2.5rem auto 0; border-top: 1px solid var(--nh-line); }
.nh2-faq-item { border-bottom: 1px solid var(--nh-line); }
.nh2-faq-item summary {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.25rem 0;
	font-weight: 600;
	color: var(--nh-green-dark);
	cursor: pointer;
	list-style: none;
}
.nh2-faq-item summary::-webkit-details-marker { display: none; }
.nh2-faq-item summary::after { content: "+"; color: var(--nh-fuchsia-light); font-weight: 400; }
.nh2-faq-item[open] summary::after { content: "−"; }
.nh2-faq-item .nh2-prose { padding-bottom: 1.5rem; font-size: 0.9375rem; }

/* --- Actualités (onglets) --------------------------------------------- */
.nh2-onglets { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; margin-top: 2rem; }
.nh2-onglet {
	padding: 0.5rem 1.25rem;
	border: 1px solid var(--nh-line);
	background: #fff;
	font: inherit;
	font-size: 0.75rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--nh-green-dark);
	cursor: pointer;
}
.nh2-onglet[aria-selected="true"] { background: var(--nh-green); border-color: var(--nh-green); color: #fff; }
.nh2-actu .nh2-carte-img { aspect-ratio: 1024 / 391; }
.nh2-onglets + .nh2-grille { margin-top: 2.5rem; }

/* --- Appel à l'action ------------------------------------------------- */
.nh2-cta .nh2-actions { margin-top: 2rem; }
.nh2-cta.nh2--vert .nh2-btn--secondaire,
.nh2-cta .nh2-btn--clair { border-color: rgb(255 255 255 / 0.7); color: #fff; }

/* --- Programmes ------------------------------------------------------- */
.nh2-programmes .nh2-carte { text-align: left; }

@media (max-width: 767px) {
	.nh2 { padding: 3.5rem 1rem; }
	.nh2-decor-feuille { background-size: 18rem; padding-top: 4rem; padding-bottom: 4rem; }
}

/* =====================================================================
 * Refonte 2026 — v2 : hero, texte, ancres, notes, formulaire, variantes
 * de points, en-tête/menu, bouton rendez-vous, gabarit d'article.
 * ===================================================================== */

/* --- Ancres : décalage sous l'en-tête collant --- */
.nh2[id] { scroll-margin-top: 9rem; }

/* --- Hero (flexible « entete ») --- */
.nh2-hero { padding: 6rem 1.5rem; text-align: center; color: #fff; --nh-titre: #fff; --nh-texte-doux: rgb(255 255 255 / 0.92); }
.nh2-hero .nh2-wrap { max-width: 56rem; }
.nh2-hero .nh2-titre { font-size: clamp(2rem, 1.4rem + 2.6vw, 3.25rem); }
.nh2-hero .nh2-intro { font-size: 1.0625rem; }
.nh2-hero-surtitre { margin: 0 0 1rem; font-size: 0.8125rem; letter-spacing: 0.2em; text-transform: uppercase; }
.nh2-hero--photo::after { content: ""; position: absolute; inset: 0; z-index: -1; opacity: 0.85; }
.nh2-hero--photo.nh2-hero--fuchsia_clair::after { background: var(--nh-fuchsia-light); }
.nh2-hero--photo.nh2-hero--fuchsia_fonce::after { background: var(--nh-fuchsia-black); opacity: 0.6; }
.nh2-hero--photo.nh2-hero--rouge::after { background: var(--nh-red); }
.nh2-hero--photo.nh2-hero--vert::after { background: var(--nh-green-dark); }
.nh2-hero--photo .nh2-fond-img { z-index: -2; }
.nh2-hero--aplat.nh2-hero--fuchsia_clair { background: var(--nh-fuchsia-light); }
.nh2-hero--aplat.nh2-hero--fuchsia_fonce { background: var(--nh-fuchsia-black); }
.nh2-hero--aplat.nh2-hero--rouge { background: var(--nh-red); }
.nh2-hero--aplat.nh2-hero--vert { background: var(--nh-green-dark); }
.nh2-hero--aplat { padding-bottom: 10rem; }
.nh2-hero-visuel { position: relative; max-width: 64rem; margin: -8rem auto 0; padding: 0 1.5rem; }
.nh2-hero-visuel img { display: block; width: 100%; height: auto; box-shadow: 0 10px 40px rgb(0 0 0 / 0.18); }
.nh2-ariane { margin-top: 1.5rem; font-size: 0.75rem; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.9; }
.nh2-ariane a { color: inherit; text-decoration: none; }
.nh2-ariane a:hover { text-decoration: underline; }
.nh2-hero .nh2-actions { margin-top: 2rem; }

/* --- Texte --- */
.nh2-texte-col { max-width: 48rem; margin: 0 auto; }
.nh2-texte--large .nh2-texte-col { max-width: 64rem; }
.nh2-texte .nh2-titre { text-align: left; }
.nh2-texte--centre .nh2-titre,
.nh2-texte--centre .nh2-prose { text-align: center; }
.nh2-texte .nh2-prose { margin-top: 1.5rem; font-size: 1rem; }
.nh2-texte .nh2-titre + .nh2-prose { margin-top: 1.25rem; }
.nh2-texte .nh2-prose:first-child { margin-top: 0; }
.nh2-texte .nh2-actions { margin-top: 2rem; }
.nh2-texte:not(.nh2-texte--centre) .nh2-actions { justify-content: flex-start; }

/* --- Prose : tableaux, encadrés, boutons, notes --- */
.nh2-prose h2 { margin: 2.5rem 0 0.5rem; font-size: 1.5rem; font-weight: 600; line-height: 1.3; color: var(--nh-fuchsia-light); }
.nh2-prose h3 { margin: 2rem 0 0.25rem; font-size: 1.125rem; font-weight: 600; color: var(--nh-green-dark); }
.nh2--fuchsia .nh2-prose h2, .nh2--fuchsia_fonce .nh2-prose h2, .nh2--vert .nh2-prose h2,
.nh2--fuchsia .nh2-prose h3, .nh2--fuchsia_fonce .nh2-prose h3, .nh2--vert .nh2-prose h3 { color: #fff; }
.nh2 .nh2-prose ul:not([class]),
.nh2 .nh2-prose ol:not([class]) { margin: 1rem 0 0; padding-left: 1.4rem; }
.nh2 .nh2-prose ul:not([class]) { list-style: disc; }
.nh2 .nh2-prose ol:not([class]) { list-style: decimal; }
.nh2 .nh2-prose li { margin: 0.4rem 0 0; }
.nh2-prose blockquote { margin: 1.5rem 0 0; padding-left: 1.1rem; border-left: 3px solid var(--nh-fuchsia-light); font-style: normal; }
.nh2-prose table { width: 100%; min-width: 48rem; border-collapse: collapse; font-size: 0.875rem; color: var(--nh-texte); }
.nh2-prose .nh2-table { overflow-x: auto; border: 1px solid var(--nh-line); background: #fff; }
.nh2-prose th { padding: 0.75rem 1rem; background: var(--nh-green); color: #fff; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.06em; text-align: left; text-transform: uppercase; }
.nh2-prose td { padding: 0.75rem 1rem; border-top: 1px solid var(--nh-line); }
.nh2-prose td:first-child { color: var(--nh-green-dark); font-weight: 500; }
.nh2-prose tr.nh2-table-groupe td { background: var(--nh-gray); color: var(--nh-fuchsia); font-size: 0.75rem; letter-spacing: 0.06em; text-transform: uppercase; }
.nh2-encadre { padding: 1rem 1.25rem; border-left: 2px solid var(--nh-line); background: var(--nh-gray); font-size: 0.875rem; }
.nh2-boutons { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 1.75rem !important; }
.nh2-boutons a.nh2-btn { text-decoration: none; }
.nh2-boutons .nh2-btn--principal { color: #fff !important; }
.nh2-boutons .nh2-btn--secondaire { color: var(--nh-green-dark) !important; }
.nh2-boutons .nh2-btn--secondaire:hover { color: #fff !important; }

/* Note de validation : visible des seuls utilisateurs connectés (filtrée côté PHP) */
.nh2-a-valider {
	display: block;
	margin: 1.25rem 0;
	padding: 0.85rem 1.1rem;
	border: 1px dashed var(--nh-orange);
	background: oklch(0.97 0.03 60);
	color: oklch(0.45 0.12 40);
	font-family: "montserrat", sans-serif;
	font-size: 0.8125rem;
	line-height: 1.6;
}
.nh2-a-valider::before { content: "À valider avant publication · "; font-weight: 600; }
.nh2-a-valider--bloc { max-width: 64rem; margin: 1.5rem auto; }
.nh2-a-valider--bloc::before { content: none; }

/* --- Barre d'ancres --- */
.nh2-ancres { position: sticky; top: var(--nh2-header-h, 0px); z-index: 30; border-top: 1px solid var(--nh-line); border-bottom: 1px solid var(--nh-line); background: var(--nh-gray); font-family: "montserrat", sans-serif; }
.nh2-ancres ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem 2rem; max-width: 64rem; margin: 0 auto !important; padding: 1rem 1.5rem !important; list-style: none; }
.nh2-ancres li { margin: 0; }
.nh2-ancres a { font-size: 0.875rem; color: var(--nh-green-dark); text-decoration: none; }
.nh2-ancres a:hover { color: var(--nh-fuchsia); }

/* --- Points : variantes --- */
.nh2-point-lien { display: inline-block; margin-top: 0.75rem; font-size: 0.875rem; color: var(--nh-fuchsia-light); text-decoration: underline; text-underline-offset: 4px; }
.nh2-apres { max-width: 48rem; margin: 2.5rem auto 0; text-align: center; }
.nh2-points--carte_numero .nh2-liste-points li,
.nh2-points--carte .nh2-liste-points li { padding: 1.75rem; background: #fff; border: 1px solid var(--nh-line); }
.nh2-points--carte_numero .nh2-liste-points li::before {
	counter-increment: nh2-etape;
	content: counter(nh2-etape, decimal-leading-zero);
	display: block;
	font-size: 1.875rem;
	font-weight: 600;
	line-height: 1;
	color: var(--nh-green);
}
.nh2-points--carte_numero .nh2-point-titre,
.nh2-points--carte .nh2-point-titre { margin-top: 0.5rem !important; color: var(--nh-fuchsia-light); }
.nh2-points--carte .nh2-liste-points li { border-width: 4px 0 0; border-color: var(--nh-fuchsia-light); }
.nh2-points--carte .nh2-point-titre { margin-top: 0 !important; text-transform: none; letter-spacing: normal; font-size: 1.125rem; color: var(--nh-green-dark); }
.nh2--vert.nh2-points--carte .nh2-liste-points li,
.nh2--fuchsia.nh2-points--carte .nh2-liste-points li { background: rgb(255 255 255 / 0.1); border-color: var(--nh-orange); }
.nh2--vert.nh2-points--carte .nh2-point-titre,
.nh2--fuchsia.nh2-points--carte .nh2-point-titre { color: #fff; }
.nh2-points--barre .nh2-liste-points li { padding-left: 1.5rem; border-left: 4px solid var(--nh-green); }
.nh2-points--barre .nh2-point-titre { text-transform: none; letter-spacing: normal; font-size: 1.25rem; font-weight: 500; color: var(--nh-green-dark); }
.nh2 .nh2-grille--1 { max-width: 48rem; margin-left: auto; margin-right: auto; gap: 1.25rem; }
.nh2-points--carte_numero .nh2-grille--1 li { display: grid; grid-template-columns: auto 1fr; column-gap: 1.25rem; }
.nh2-points--carte_numero .nh2-grille--1 li::before { grid-row: span 3; font-size: 1.5rem; }
.nh2-points--carte_numero .nh2-grille--1 .nh2-point-titre { margin-top: 0 !important; }

/* --- Badge orange (programmes) --- */
.nh2 .nh2-badge--orange { margin: 0 0 0.75rem; background: var(--nh-orange); border-color: var(--nh-orange); color: #fff; }

/* --- Infos + formulaire --- */
.nh2-form-grille { display: grid; gap: 3rem; max-width: 64rem; margin: 0 auto; }
@media (min-width: 768px) { .nh2-form-grille { grid-template-columns: 1fr 1.2fr; align-items: start; } }
.nh2-form-infos .nh2-titre,
.nh2-form-boite .nh2-titre { font-size: 1.375rem; text-align: left; }
.nh2-form-infos .nh2-prose { margin-top: 1.5rem; font-size: 0.9375rem; }
.nh2-form-infos .nh2-prose strong { color: var(--nh-green-dark); }
.nh2-form-boite { padding: 1.75rem; border: 1px solid var(--nh-line); background: #fff; }
.nh2-cf7 { margin-top: 1.5rem; }
.nh2-cf7 input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]),
.nh2-cf7 select,
.nh2-cf7 textarea { width: 100%; padding: 0.6rem 0.75rem; border: 1px solid var(--nh-line); background: #fff; font: inherit; font-size: 0.875rem; }
.nh2-cf7 input[type="submit"] { width: 100%; padding: 0.85rem 1.6rem; border: 0; border-radius: 2px; background: var(--nh-orange); color: #fff; font-weight: 600; cursor: pointer; }
.nh2-cf7 input[type="submit"]:hover { background: var(--nh-red); }

/* =====================================================================
 * En-tête et menu
 * ===================================================================== */
.nh2-header {
	position: sticky;
	top: 0;
	z-index: 1000;
	background: #fff;
	box-shadow: 0 2px 18px rgb(0 0 0 / 0.1);
	font-family: "montserrat", "Montserrat", sans-serif;
}
.nh2-header-barre { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding-left: 1.25rem; }
.nh2-header-logo { display: flex; flex-shrink: 0; align-items: center; padding: 0.75rem 0; }
.nh2-header-logo img { width: auto; height: 2.75rem; }
.nh2-header-actions { display: flex; align-self: stretch; }
.nh2-header-contact { display: flex; align-items: center; gap: 0.6rem; padding: 0 1.25rem; background: var(--nh-orange); color: #fff !important; font-size: 0.95rem; text-decoration: none !important; transition: background-color 0.2s; }
.nh2-header-contact:hover { background: var(--nh-red); }
.nh2-header svg { width: 1.25rem; height: 1.25rem; fill: none; stroke: currentColor; stroke-width: 1.5; }

.nh2-nav { display: none; align-self: stretch; }
.nh2-nav-liste { display: flex; align-items: stretch; height: 100%; gap: 1.75rem; margin: 0 !important; padding: 0 !important; list-style: none; }
.nh2-nav-item { position: relative; display: flex; align-items: center; margin: 0; }
.nh2-nav-lien { position: relative; display: flex; align-items: center; gap: 0.35rem; padding: 1.5rem 0; font-size: 0.95rem; font-weight: 400; white-space: nowrap; color: var(--nh-green-dark) !important; text-decoration: none !important; }
.nh2-nav-lien svg { width: 0.85rem; height: 0.85rem; stroke-width: 2.5; transition: transform 0.2s; }
.nh2-nav-lien::after { content: ""; position: absolute; left: 0; bottom: 0.9rem; width: 100%; height: 2px; background: var(--nh-fuchsia); transform: scaleX(0); transform-origin: left; transition: transform 0.3s; }
.nh2-nav-item:hover > .nh2-nav-lien,
.nh2-nav-item:focus-within > .nh2-nav-lien,
.nh2-nav-lien[aria-current] { color: var(--nh-fuchsia) !important; }
.nh2-nav-item:hover > .nh2-nav-lien::after,
.nh2-nav-item:focus-within > .nh2-nav-lien::after { transform: scaleX(1); }
.nh2-nav-item:hover > .nh2-nav-lien svg,
.nh2-nav-item:focus-within > .nh2-nav-lien svg { transform: rotate(180deg); }

.nh2-deroulant,
.nh2-mega {
	visibility: hidden;
	opacity: 0;
	transform: translateY(-0.5rem);
	transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
	border-top: 2px solid var(--nh-fuchsia);
	background: #fff;
	box-shadow: 0 18px 40px rgb(0 0 0 / 0.13);
}
.nh2-nav-item:hover > .nh2-deroulant,
.nh2-nav-item:focus-within > .nh2-deroulant,
.nh2-nav-item:hover > .nh2-mega,
.nh2-nav-item:focus-within > .nh2-mega { visibility: visible; opacity: 1; transform: none; }
.nh2-deroulant { position: absolute; top: 100%; left: 0; width: 20.5rem; padding: 0.75rem 0; }
.nh2-deroulant a { display: block; padding: 0.6rem 1.25rem; border-left: 2px solid transparent; font-size: 0.875rem; color: var(--nh-green-dark) !important; text-decoration: none !important; transition: all 0.15s; }
.nh2-deroulant a:hover { border-color: var(--nh-fuchsia-light); background: var(--nh-gray); color: var(--nh-fuchsia) !important; }
/* Menus accrochés au bas exact de la barre (et non au haut de la fenêtre : la barre d'admin WP décalait le méga-menu) */
.nh2-mega { position: absolute; left: 0; right: 0; top: 100%; }
.nh2-nav-item--mega { position: static; }
.nh2-mega-grille { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 2.5rem; max-width: 72rem; margin: 0 auto; padding: 2.5rem 2rem; }
.nh2-mega-col { padding-right: 2rem; border-right: 1px solid var(--nh-line); }
.nh2-mega-col:last-child { border-right: 0; }
.nh2-mega-titre { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--nh-fuchsia) !important; text-decoration: none !important; }
.nh2-mega-col ul { margin: 1rem 0 0 !important; padding: 0 !important; list-style: none; }
.nh2-mega-col li { margin: 0 0 0.5rem; }
.nh2-mega-col li a { display: inline-block; font-size: 0.875rem; color: var(--nh-green-dark) !important; text-decoration: none !important; transition: transform 0.15s, color 0.15s; }
.nh2-mega-col li a:hover { transform: translateX(0.25rem); color: var(--nh-fuchsia) !important; }

.nh2-burger { display: flex; flex-direction: column; justify-content: center; gap: 0.35rem; padding: 0 1rem; border: 0; background: none; color: var(--nh-green-dark); cursor: pointer; }
.nh2-burger span { display: block; width: 1.75rem; height: 2px; border-radius: 2px; background: currentColor; transition: transform 0.25s, opacity 0.25s; }
.nh2-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(0.475rem) rotate(45deg); }
.nh2-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nh2-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-0.475rem) rotate(-45deg); }

@media (min-width: 1280px) {
	.nh2-nav { display: block; }
	.nh2-burger { display: none; }
	.nh2-header-barre { padding-left: 2rem; }
	.nh2-header-logo img { height: 3rem; }
	.nh2-header-contact { padding: 0 1.75rem; }
}
@media (max-width: 639px) {
	.nh2-header-contact span { display: none; }
}

/* Tiroir mobile */
.nh2-tiroir-fond { position: fixed; inset: 0; z-index: 998; background: rgb(0 0 0 / 0.4); }
.nh2-tiroir {
	position: fixed;
	top: var(--nh2-header-h, 4.25rem);
	right: 0;
	z-index: 999;
	display: flex;
	flex-direction: column;
	width: min(92vw, 26rem);
	height: calc(100dvh - var(--nh2-header-h, 4.25rem));
	padding: 1.5rem 1.5rem 3rem;
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--nh-green);
}
.nh2-tiroir > ul { margin: 0 !important; padding: 0 !important; list-style: none; }
.nh2-tiroir li { margin: 0; border-bottom: 1px solid rgb(255 255 255 / 0.25); }
.nh2-tiroir a { color: #fff !important; text-decoration: none !important; }
.nh2-tiroir-entree,
.nh2-tiroir summary > a { display: block; flex: 1; padding: 0.9rem 0; font-size: 1rem; line-height: 1.35; }
.nh2-tiroir summary { display: flex; align-items: center; gap: 0.5rem; list-style: none; cursor: pointer; }
.nh2-tiroir summary::-webkit-details-marker { display: none; }
.nh2-tiroir-chevron { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; }
.nh2-tiroir-chevron::before { content: ""; width: 0.55rem; height: 0.55rem; border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(45deg) translateY(-2px); transition: transform 0.2s; }
.nh2-tiroir details[open] .nh2-tiroir-chevron::before { transform: rotate(225deg); }
.nh2-tiroir-sous { margin: 0 0 0.75rem; padding-left: 1rem; border-left: 1px solid rgb(255 255 255 / 0.25); }
.nh2-tiroir-lien { display: block; padding: 0.45rem 0; font-size: 0.875rem; opacity: 0.9; }
.nh2-tiroir-lien--n3 { padding-left: 0.75rem; }
.nh2-tiroir-rubrique { margin: 0.75rem 0 0.25rem; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; opacity: 0.7; }
.nh2-tiroir-contact { margin-top: 2rem; color: #fff !important; }

/* Bouton « Prendre rendez-vous » flottant (remplace l'ancien bouton du header) */
.nh2-rdv {
	position: fixed;
	bottom: 1.5rem;
	left: 50%;
	z-index: 900;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.85rem 1.6rem;
	border-radius: 2px;
	background: var(--nh-orange);
	box-shadow: 0 6px 20px rgb(0 0 0 / 0.18);
	color: #fff !important;
	font-family: "montserrat", sans-serif;
	font-size: 0.875rem;
	font-weight: 600;
	text-decoration: none !important;
	transform: translateX(-50%);
	transition: background-color 0.2s;
}
.nh2-rdv:hover { background: var(--nh-red); }
.nh2-rdv svg { width: 1.4rem; height: 1.4rem; fill: none; stroke: currentColor; stroke-width: 1.5; }

/* =====================================================================
 * Gabarit d'article
 * ===================================================================== */
.nh2-article { padding: 3.5rem 1.5rem 5rem; }
.nh2-article-col { max-width: 48rem; margin: 0 auto; }
.nh2-retour { display: inline-flex; gap: 0.5rem; font-size: 0.75rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--nh-green-dark) !important; text-decoration: none !important; }
.nh2-retour:hover { color: var(--nh-fuchsia) !important; }
.nh2-article-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; margin-top: 2rem; font-size: 0.75rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--nh-texte-doux); }
.nh2-article-titre { margin-top: 1.25rem !important; font-size: clamp(1.75rem, 1.3rem + 1.8vw, 2.5rem); font-weight: 600; line-height: 1.2; color: var(--nh-fuchsia); }
.nh2 .nh2-article-une { margin: 2.5rem 0 0; aspect-ratio: 16 / 9; overflow: hidden; }
.nh2-article-une img { width: 100%; height: 100%; object-fit: cover; }
.nh2-article-corps { margin-top: 2.5rem; font-size: 1.0625rem; color: var(--nh-texte); }
.nh2 .nh2-article-corps > * + * { margin-top: 1.15rem; }
.nh2-article-corps a:not(.nh2-btn) { color: var(--nh-green-dark); font-weight: 500; text-decoration-color: color-mix(in oklab, var(--nh-green-dark) 40%, transparent); }
.nh2-article-corps a:not(.nh2-btn):hover { color: var(--nh-fuchsia); }
.nh2-article-corps img { max-width: 100%; height: auto; }
.nh2-article-bloc { display: grid; gap: 1.5rem; align-items: center; margin-top: 2rem; }
@media (min-width: 768px) { .nh2-article-bloc { grid-template-columns: 1fr 1fr; } .nh2-article-bloc--droite figure { order: 2; } }
.nh2-article-bloc figure { margin: 0; }
.nh2-article-faq { margin-top: 3.5rem; }
.nh2-article-faq h2 { font-size: 1.5rem; font-weight: 600; color: var(--nh-fuchsia-light); }
.nh2-article-faq .nh2-faq-liste { margin-top: 1.25rem; }
.nh2-lie { text-decoration: none !important; border: 1px solid var(--nh-line); transition: border-color 0.2s; }
.nh2-lie:hover { border-color: var(--nh-fuchsia-light); }
.nh2-lie .nh2-carte-titre { font-size: 1rem; }
.nh2-lire { margin-top: 1.25rem; font-size: 0.75rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--nh-green-dark); }

@media (max-width: 767px) {
	.nh2-hero { padding: 4rem 1rem; }
	.nh2-hero--aplat { padding-bottom: 7rem; }
	.nh2-hero-visuel { margin-top: -5rem; padding: 0 1rem; }
	.nh2-article { padding: 2.5rem 1rem 4rem; }
	.nh2-rdv { bottom: 1rem; padding: 0.75rem 1.25rem; }
}
.nh2-tiroir[hidden], .nh2-tiroir-fond[hidden] { display: none; }
.nh2-header-barre { position: relative; z-index: 1000; background: #fff; }
.nh2 .nh2-article-titre { margin-bottom: 2.5rem !important; } .nh2 .nh2-article-une { margin-top: 0; }

/* ---------------------------------------------------------------------
 * Pied de page de la refonte (templates/nh2/footer.php)
 * Pas de classe .bg-green ni de .box/.row/.nav propres : les règles
 * « footer … » de style.css sont neutralisées ci-dessous quand elles fuient.
 * ------------------------------------------------------------------- */
.nh2-footer {
	font-family: "montserrat", "Montserrat", sans-serif;
	font-weight: 300;
	font-size: 0.875rem;
	line-height: 1.6;
	color: #fff;
	background: var(--nh-green);
}
.nh2-footer *, .nh2-footer *::before, .nh2-footer *::after { box-sizing: border-box; }
footer.nh2-footer > div:not(:last-child) { border-bottom: 0; }
.nh2-footer a { color: #fff; text-decoration: none; transition: opacity 0.2s; }
.nh2-footer a:hover { color: #fff; opacity: 0.7; }
.nh2-footer p { display: block; width: auto; margin: 0; }
.nh2-footer ul { margin: 0; padding: 0; list-style: none; }

.nh2-footer-haut {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 3rem;
	max-width: 72rem;
	margin: 0 auto;
	padding: 4rem 1.5rem;
}
@media (min-width: 768px) {
	.nh2-footer-haut { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.nh2-footer-titre { font-size: 1.25rem; font-weight: 600; line-height: 1.3; }
.nh2-footer-logo { display: inline-block; }
.nh2-footer-logo img { display: block; width: auto; max-width: 100%; height: 2.25rem; }
.nh2-footer-logo + .nh2-footer-titre { margin-top: 2rem; }

.nh2-footer-menu { margin-top: 1rem !important; }
.nh2-footer-menu li + li { margin-top: 0.5rem; }

.nh2-footer-coord > div + div { margin-top: 1rem; }
.nh2-footer-coord .nh2-footer-titre { margin-bottom: 0.15rem; }

.nh2-footer-reseaux { display: flex; gap: 0.75rem; margin-top: 0.75rem !important; }
.nh2-footer-reseaux a {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	background: #fff;
	color: var(--nh-green);
	transition: background 0.2s, color 0.2s;
}
.nh2-footer-reseaux a:hover { opacity: 1; background: var(--nh-fuchsia-light); color: #fff; }
.nh2-footer-reseaux svg { width: 1.25rem; height: 1.25rem; fill: currentColor; }

/* Newsletter (CF7 #1383 : .col nom, .col prénom, .newsletter e-mail + bouton) */
.nh2-footer-newsletter { margin-top: 1rem; }
.nh2-footer-newsletter .wpcf7-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; }
.nh2-footer-newsletter .wpcf7-form > :is(.hidden-fields-container, .newsletter, .wpcf7-response-output) { grid-column: 1 / -1; }
.nh2-footer-newsletter .col { padding: 0; width: auto; max-width: none; }
.nh2-footer-newsletter .wpcf7-form-control-wrap { display: block; }
.nh2-footer .nh2-footer-newsletter input:is([type="text"], [type="email"]) {
	width: 100%;
	min-width: 0;
	height: auto;
	padding: 0.5rem 0 !important;
	border: 0 !important;
	border-bottom: 1px solid rgb(255 255 255 / 0.5) !important;
	border-radius: 0;
	background: transparent !important;
	box-shadow: none;
	font: inherit;
	font-size: 0.875rem;
	color: #fff !important;
	outline: none;
}
.nh2-footer .nh2-footer-newsletter input:is([type="text"], [type="email"]):focus { border-bottom-color: #fff !important; }
.nh2-footer .nh2-footer-newsletter input:is([type="text"], [type="email"])::placeholder { font-weight: 300; color: rgb(255 255 255 / 0.7) !important; }
.nh2-footer .nh2-footer-newsletter .newsletter { border-bottom: 0; }
.nh2-footer .nh2-footer-newsletter .newsletter > p { display: flex; align-items: center; gap: 0.75rem; }
.nh2-footer .nh2-footer-newsletter .newsletter .wpcf7-form-control-wrap { flex: 1; min-width: 0; }
.nh2-footer .nh2-footer-newsletter .arrow { display: block !important; margin: 0; padding: 0; background: none; }
.nh2-footer .nh2-footer-newsletter .arrow::before,
.nh2-footer .nh2-footer-newsletter .arrow::after { content: none; display: none; }
.nh2-footer .nh2-footer-newsletter .arrow > input[type="submit"] {
	position: static;
	visibility: visible;
	padding: 0.85rem 1.6rem;
	border: 1px solid var(--nh-orange);
	border-radius: 2px;
	background: var(--nh-orange);
	font: inherit;
	font-size: 0.875rem;
	font-weight: 600;
	color: #fff !important;
	cursor: pointer;
	transition: background 0.2s, border-color 0.2s;
}
.nh2-footer .nh2-footer-newsletter .arrow > input[type="submit"]:hover { background: var(--nh-red); border-color: var(--nh-red); }
.nh2-footer-newsletter .wpcf7-spinner { position: absolute; }
.nh2-footer-newsletter .wpcf7-not-valid-tip { font-size: 0.75rem; color: #fff; }
.nh2-footer-newsletter .wpcf7-response-output { margin: 0.5rem 0 0 !important; padding: 0.5rem 0.75rem !important; font-size: 0.8125rem; }

/* Programmes et liens légaux : listes HTML des options ACF (<ul class="nav">) */
.nh2-footer-programmes,
.nh2-footer-bas { max-width: 72rem; margin: 0 auto; padding: 0 1.5rem 3rem; text-align: center; }
.nh2-footer-programmes .nh2-footer-titre { font-size: 1.125rem; }
.nh2-footer .nh2-footer-programmes .nav,
.nh2-footer .nh2-footer-bas .nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.5rem 1.5rem;
	margin: 1rem 0 0;
	font-size: 0.75rem;
}
.nh2-footer .nav > li::before { content: none !important; }
.nh2-footer-bas { padding-top: 2rem; padding-bottom: 2rem; border-top: 1px solid rgb(255 255 255 / 0.2); }
.nh2-footer-bas .nav { margin-top: 0 !important; }

/* Le bouton « Prendre rendez-vous » flottant ne masque pas les liens du bas */
body.nh2-refonte .nh2-footer-bas { padding-bottom: 6rem; }
