/*
Theme Name: Nivessentielle
Theme URI: https://nivessentielle.fr/
Author: Unter Interface
Author URI: https://www.unterinterface.fr/
Description: Thème sur mesure pour Nivessentielle — Head Spa, massages bien-être et drainage lymphatique à Checy. Reprend fidèlement le design du site d'origine, avec slider d'accueil, palettes par page, formulaires de réservation et de carte cadeau, et import du contenu en un clic.
Version: 1.0.0
Requires at least: 6.6
Tested up to: 6.9
Requires PHP: 7.4
License: Propriétaire
Text Domain: nivessentielle
*/

/* ==========================================================================
   Polices (hébergées localement, sans appel à Google)
   ========================================================================== */
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("assets/fonts/montserrat-latin.woff2") format("woff2"); }
@font-face { font-family: "PT Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("assets/fonts/ptsans-400.woff2") format("woff2"); }
@font-face { font-family: "PT Sans"; font-style: italic; font-weight: 400; font-display: swap; src: url("assets/fonts/ptsans-400i.woff2") format("woff2"); }
@font-face { font-family: "PT Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("assets/fonts/ptsans-700.woff2") format("woff2"); }

/* ==========================================================================
   Couleurs — palette par défaut + palettes par page (classe sur <main>)
   ========================================================================== */
:root {
	--background: 48 33% 96%;
	--foreground: 20 14% 12%;
	--card: 0 0% 100%;
	--primary: 28 17% 61%;
	--primary-foreground: 0 0% 100%;
	--muted: 60 4.8% 95.9%;
	--muted-foreground: 240 3.8% 46.1%;
	--accent: 60 4.8% 95.9%;
	--accent-foreground: 240 5.9% 10%;
	--border: 0 0% 90%;
	--input: 0 0% 89.8%;
	--ring: 28 17% 61%;
	--radius: 0.5rem;

	--font-headline: "Montserrat", "Montserrat Fallback", Georgia, serif;
	--font-body: "PT Sans", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--container: 100%;
	--header-h: 5rem;
	--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);
	--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);
}
@media (min-width: 640px)  { :root { --container: 640px; } }
@media (min-width: 768px)  { :root { --container: 768px; } }
@media (min-width: 1024px) { :root { --container: 1024px; } }
@media (min-width: 1280px) { :root { --container: 1280px; } }
@media (min-width: 1536px) { :root { --container: 1536px; } }

.nv-theme-head-spa     { --background: 200 40% 96%; --foreground: 200 20% 15%; --primary: 195 53% 70%; --primary-foreground: 200 40% 98%; --border: 200 20% 88%; --ring: 195 53% 70%; --muted: 200 30% 94%; --muted-foreground: 200 15% 45%; --accent: 200 30% 94%; --accent-foreground: 200 20% 15%; }
.nv-theme-bien-etre    { --background: 35 50% 96%;  --foreground: 35 20% 15%;  --primary: 35 33% 61%;  --primary-foreground: 35 50% 98%;  --border: 35 30% 88%;  --ring: 35 33% 61%;  --muted: 35 40% 94%;  --muted-foreground: 35 15% 45%;  --accent: 35 40% 94%;  --accent-foreground: 35 20% 15%; }
.nv-theme-drainant     { --background: 80 40% 96%;  --foreground: 80 20% 15%;  --primary: 90 30% 60%;  --primary-foreground: 80 40% 98%;  --border: 80 25% 88%;  --ring: 90 30% 60%;  --muted: 80 30% 94%;  --muted-foreground: 80 15% 45%;  --accent: 80 30% 94%;  --accent-foreground: 80 20% 15%; }
.nv-theme-services     { --background: 210 40% 96%; --foreground: 210 20% 15%; --primary: 210 53% 70%; --primary-foreground: 210 40% 98%; --border: 210 20% 88%; --ring: 210 53% 70%; --muted: 210 30% 94%; --muted-foreground: 210 15% 45%; --accent: 210 30% 94%; --accent-foreground: 210 20% 15%; }
.nv-theme-a-propos     { --background: 48 40% 97%;  --foreground: 20 14% 15%;  --primary: 30 15% 55%;  --primary-foreground: 0 0% 100%;   --border: 30 10% 88%;  --ring: 30 15% 55%;  --muted: 48 30% 95%;  --muted-foreground: 20 10% 45%;  --accent: 48 30% 95%;  --accent-foreground: 20 14% 15%; }
.nv-theme-blog         { --background: 220 40% 97%; --foreground: 220 14% 15%; --primary: 220 35% 60%; --primary-foreground: 0 0% 100%;  --border: 220 10% 88%; --ring: 220 35% 60%; --muted: 220 30% 95%; --muted-foreground: 220 10% 45%; --accent: 220 30% 95%; --accent-foreground: 220 14% 15%; }
.nv-theme-carte-cadeau { --background: 340 50% 97%; --foreground: 340 20% 15%; --primary: 340 60% 65%; --primary-foreground: 340 50% 98%; --border: 340 30% 88%; --ring: 340 60% 65%; --muted: 340 40% 95%; --muted-foreground: 340 15% 45%; --accent: 340 40% 95%; --accent-foreground: 340 20% 15%; }
.nv-theme-contact      { --background: 25 40% 97%;  --foreground: 25 14% 15%;  --primary: 25 25% 55%;  --primary-foreground: 0 0% 100%;   --border: 25 10% 88%;  --ring: 25 15% 55%;  --muted: 25 30% 95%;  --muted-foreground: 25 10% 45%;  --accent: 25 30% 95%;  --accent-foreground: 25 14% 15%; }

/* ==========================================================================
   Base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	font-family: var(--font-body);
	font-size: 1rem;
	line-height: 1.5;
	color: hsl(var(--foreground));
	background: hsl(var(--background));
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
img, video, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-headline); margin: 0; line-height: 1.25; color: hsl(var(--foreground)); }
p { margin: 0; }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid hsl(var(--ring)); outline-offset: 2px; }
.screen-reader-text, .sr-only {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link:focus {
	clip: auto; width: auto; height: auto; margin: 0; z-index: 100; top: .5rem; left: .5rem;
	padding: .75rem 1rem; background: hsl(var(--foreground)); color: hsl(var(--background)); border-radius: var(--radius);
}

.nv-main { flex: 1; background: hsl(var(--background)); color: hsl(var(--foreground)); }
.nv-container {
	width: 100%;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: 1rem;
}

/* Icônes */
.nv-icon { width: 1.5rem; height: 1.5rem; flex-shrink: 0; }

/* ==========================================================================
   Boutons (templates + bloc Bouton de l'éditeur)
   ========================================================================== */
.nv-btn,
.nv-entry .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	min-height: 2.75rem;
	padding: .625rem 2rem;
	border: 1px solid transparent;
	border-radius: 9999px;
	background: hsl(var(--primary));
	color: hsl(var(--primary-foreground));
	font-family: var(--font-body);
	font-size: .875rem;
	font-weight: 400;
	line-height: 1.25rem;
	text-align: center;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color .2s, color .2s, opacity .2s;
}
.nv-btn:hover,
.nv-entry .wp-block-button__link:hover { background: hsl(var(--primary) / .9); color: hsl(var(--primary-foreground)); }
.nv-btn .nv-icon { width: 1.25rem; height: 1.25rem; }

.nv-btn--outline,
.nv-entry .is-style-outline > .wp-block-button__link {
	background: hsl(var(--background));
	border-color: hsl(var(--input));
	color: hsl(var(--foreground));
}
.nv-btn--outline:hover,
.nv-entry .is-style-outline > .wp-block-button__link:hover { background: hsl(var(--accent)); color: hsl(var(--accent-foreground)); }

.nv-btn--dark,
.nv-entry .is-style-sombre > .wp-block-button__link {
	background: hsl(var(--foreground));
	color: hsl(var(--background));
	font-weight: 700;
	min-height: 3.25rem;
	padding-block: 1rem;
}
.nv-btn--dark:hover,
.nv-entry .is-style-sombre > .wp-block-button__link:hover { background: hsl(var(--foreground) / .9); color: hsl(var(--background)); }

/* Boutons sur photo : blanc plein et « verre » */
.nv-btn--light { background: #fff; color: hsl(var(--foreground)); font-weight: 700; }
.nv-btn--light:hover { background: hsl(var(--primary)); color: #fff; }
.nv-btn--light .nv-icon { width: 1.1rem; height: 1.1rem; transition: transform .25s ease; }
.nv-btn--light:hover .nv-icon { transform: translateX(3px); }
.nv-btn--glass {
	background: rgb(255 255 255 / .12); color: #fff; border-color: rgb(255 255 255 / .45); font-weight: 700;
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.nv-btn--glass:hover { background: rgb(255 255 255 / .26); color: #fff; }

.nv-btn--sm { min-height: 2.5rem; padding: .5rem 1rem; }
.nv-btn--block { width: 100%; }
.nv-btn[disabled] { opacity: .5; pointer-events: none; }

.nv-entry .wp-block-buttons { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin: 0; }
.nv-entry .wp-block-buttons.nv-center, .nv-entry .wp-block-buttons.is-content-justification-center { justify-content: center; }
.nv-entry .wp-block-button { margin: 0; }

/* ==========================================================================
   En-tête : barre flottante translucide
   ========================================================================== */
.nv-header {
	position: sticky;
	top: 0;
	z-index: 50;
	width: 100%;
	padding-top: .625rem;
	pointer-events: none; /* les marges autour de la barre laissent passer les clics */
}
.admin-bar .nv-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .nv-header { top: 46px; } }
@media (max-width: 600px) { .admin-bar .nv-header { top: 0; } }
.nv-header__bar {
	position: relative;
	pointer-events: auto;
	display: flex; align-items: center; justify-content: space-between; gap: 1rem;
	height: 4rem;
	padding: 0 .5rem 0 1.1rem;
	border-radius: 9999px;
	background: hsl(0 0% 100% / .82);
	border: 1px solid hsl(0 0% 100% / .7);
	box-shadow: 0 1px 0 hsl(0 0% 100% / .8) inset, 0 12px 32px -18px hsl(20 30% 20% / .35), 0 2px 6px -3px hsl(20 30% 20% / .12);
	-webkit-backdrop-filter: saturate(1.6) blur(16px);
	backdrop-filter: saturate(1.6) blur(16px);
	transition: height .35s ease, background-color .35s ease, box-shadow .35s ease;
}
.nv-header.is-scrolled .nv-header__bar {
	height: 3.5rem;
	background: hsl(0 0% 100% / .86);
	box-shadow: 0 1px 0 hsl(0 0% 100% / .8) inset, 0 18px 40px -20px hsl(20 30% 20% / .45), 0 2px 8px -4px hsl(20 30% 20% / .15);
}
.nv-logo { display: inline-flex; align-items: center; flex-shrink: 0; }
.nv-logo img { height: 2.75rem; width: auto; transition: height .35s ease; }
.nv-header.is-scrolled .nv-logo img { height: 2.4rem; }

/* Liens (ordinateur) */
.nv-nav { display: none; position: static; }
.nv-nav__list { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: .15rem; } /* repère des positions : la barre */
.nv-nav__list > li { display: flex; align-items: center; }
.nv-nav__list > li > a {
	position: relative; z-index: 1;
	display: inline-flex; align-items: center;
	padding: .55rem .95rem; border-radius: 9999px;
	font-size: .875rem; font-weight: 700; letter-spacing: .01em; line-height: 1.25rem;
	color: hsl(var(--foreground) / .72);
	transition: color .2s ease, background-color .2s ease;
}
.nv-nav__list > li > a:hover, .nv-nav__list > li.has-mega:hover > a, .nv-nav__list > li.is-open > a { color: hsl(var(--foreground)); background: hsl(var(--primary) / .14); }
.nv-nav__list > .current-menu-item > a, .nv-nav__list > .current_page_item > a, .nv-nav__list > .current-menu-ancestor > a { color: hsl(var(--foreground)); }
.nv-nav__list > .current-menu-item > a::before, .nv-nav__list > .current_page_item > a::before {
	content: ""; position: absolute; left: 50%; bottom: .2rem; width: .3rem; height: .3rem; margin-left: -.15rem;
	border-radius: 9999px; background: hsl(var(--primary));
}
/* Pastille qui suit la souris (ajoutée en JS) */
.nv-nav__indicator {
	position: absolute; left: 0; top: 0; z-index: 0; height: 2.25rem; width: 0;
	border-radius: 9999px; background: hsl(var(--primary) / .16); opacity: 0; pointer-events: none;
	transition: transform .35s cubic-bezier(.3, .7, .2, 1), width .35s cubic-bezier(.3, .7, .2, 1), opacity .2s ease;
}
.nv-nav.has-indicator .nv-nav__list > li > a:hover, .nv-nav.has-indicator .nv-nav__list > li.has-mega:hover > a { background: transparent; }

/* Bouton « Réserver » */
.nv-header__actions { display: flex; align-items: center; gap: .5rem; }
.nv-header__cta {
	display: inline-flex; align-items: center; gap: .6rem;
	height: 2.75rem; padding: 0 .35rem 0 1.15rem; border-radius: 9999px;
	background: hsl(var(--foreground)); color: hsl(var(--background));
	font-size: .875rem; font-weight: 700; letter-spacing: .02em;
	transition: background-color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.nv-header__cta:hover { background: hsl(var(--primary)); color: #fff; box-shadow: 0 10px 24px -12px hsl(var(--primary)); }
.nv-header__cta-icon {
	display: inline-flex; align-items: center; justify-content: center;
	width: 2.05rem; height: 2.05rem; border-radius: 9999px;
	background: hsl(var(--background)); color: hsl(var(--foreground));
	transition: transform .3s ease;
}
.nv-header__cta-icon .nv-icon { width: 1rem; height: 1rem; }
.nv-header__cta:hover .nv-header__cta-icon { transform: rotate(-45deg); }
.nv-header.is-scrolled .nv-header__cta { height: 2.5rem; }
.nv-header.is-scrolled .nv-header__cta-icon { width: 1.85rem; height: 1.85rem; }
@media (max-width: 479px) { .nv-header__cta { display: none; } }

/* Burger (deux traits qui se croisent) */
.nv-burger {
	display: inline-flex; align-items: center; justify-content: center;
	width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: 9999px;
	background: hsl(var(--primary) / .16); color: hsl(var(--foreground)); cursor: pointer;
	transition: background-color .2s ease;
}
.nv-burger:hover { background: hsl(var(--primary) / .28); }
.nv-burger__lines { position: relative; display: block; width: 1.15rem; height: .7rem; }
.nv-burger__lines span { position: absolute; left: 0; right: 0; height: 2px; border-radius: 2px; background: currentColor; transition: transform .35s ease, top .35s ease, width .35s ease; }
.nv-burger__lines span:first-child { top: 0; }
.nv-burger__lines span:last-child { top: calc(100% - 2px); width: 70%; left: auto; }
.nv-burger:hover .nv-burger__lines span:last-child { width: 100%; }
.nv-burger[aria-expanded="true"] .nv-burger__lines span { top: calc(50% - 1px); width: 100%; }
.nv-burger[aria-expanded="true"] .nv-burger__lines span:first-child { transform: rotate(45deg); }
.nv-burger[aria-expanded="true"] .nv-burger__lines span:last-child { transform: rotate(-45deg); }

@media (min-width: 1024px) {
	.nv-header { padding-top: .875rem; }
	.nv-header__bar { height: 4.25rem; padding: 0 .5rem 0 1.4rem; }
	.nv-nav { display: flex; }
	.nv-burger { display: none; }
}

/* Les grandes photos d'en-tête de page remontent sous la barre flottante */
:root { --nv-hh: 4.625rem; }
@media (min-width: 1024px) { :root { --nv-hh: 5.125rem; } }
.nv-main > .nv-hero:first-child,
.nv-main > .nv-entry > .nv-slider:first-child { margin-top: calc(.5rem - var(--nv-hh)); }
@media (min-width: 768px) {
	.nv-main > .nv-hero:first-child,
	.nv-main > .nv-entry > .nv-slider:first-child { margin-top: calc(.75rem - var(--nv-hh)); }
}

/* Menu déroulant « Nos Soins » */
.nv-mega__toggle {
	display: inline-flex; align-items: center; justify-content: center;
	width: 1.6rem; height: 1.6rem; margin-left: -.55rem; padding: 0; border: 0; border-radius: 9999px;
	background: transparent; color: hsl(var(--foreground) / .6); cursor: pointer; position: relative; z-index: 1;
}
.nv-mega__toggle .nv-icon { width: .9rem; height: .9rem; transition: transform .3s ease; }
.has-mega:hover .nv-mega__toggle .nv-icon, .has-mega.is-open .nv-mega__toggle .nv-icon { transform: rotate(180deg); }
.nv-mega {
	position: absolute; left: 0; right: 0; top: calc(100% + .6rem);
	opacity: 0; visibility: hidden; transform: translateY(-8px) scale(.985); transform-origin: top center;
	transition: opacity .25s ease, transform .3s cubic-bezier(.3, .7, .2, 1), visibility 0s linear .3s;
}
.nv-mega::before { content: ""; position: absolute; left: 0; right: 0; top: -.75rem; height: .75rem; } /* pont de survol */
.has-mega:hover .nv-mega, .has-mega:focus-within .nv-mega, .has-mega.is-open .nv-mega {
	opacity: 1; visibility: visible; transform: none; transition-delay: 0s;
}
.has-mega.is-closed .nv-mega { opacity: 0; visibility: hidden; transform: translateY(-8px) scale(.985); }
.nv-mega__inner {
	display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 1fr); gap: 1rem;
	padding: 1rem; border-radius: 1.75rem;
	background: hsl(0 0% 100% / .97);
	border: 1px solid hsl(0 0% 100% / .8);
	box-shadow: 0 30px 60px -30px hsl(20 30% 20% / .45), 0 4px 14px -8px hsl(20 30% 20% / .2);
	-webkit-backdrop-filter: saturate(1.6) blur(18px);
	backdrop-filter: saturate(1.6) blur(18px);
}
.nv-mega__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.nv-mega__card { display: flex; flex-direction: column; gap: .2rem; padding: .5rem .5rem .85rem; border-radius: 1.25rem; color: hsl(var(--foreground)); transition: background-color .2s ease; }
.nv-mega__card:hover { background: hsl(var(--primary) / .1); }
.nv-mega__img { display: block; aspect-ratio: 3 / 2; margin-bottom: .55rem; overflow: hidden; border-radius: .9rem; background: hsl(var(--muted)); }
.nv-mega__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.3, .7, .2, 1); }
.nv-mega__card:hover .nv-mega__img img { transform: scale(1.06); }
.nv-mega__title { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding-inline: .25rem; font-family: var(--font-headline); font-size: .9rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.nv-mega__title .nv-icon { width: 1rem; height: 1rem; color: hsl(var(--primary)); transition: transform .25s ease; }
.nv-mega__card:hover .nv-mega__title .nv-icon { transform: translate(2px, -2px); }
.nv-mega__text { padding-inline: .25rem; font-size: .85rem; color: hsl(var(--muted-foreground)); }
.nv-mega__price { align-self: flex-start; margin: .35rem .25rem 0; padding: .1rem .6rem; border-radius: 9999px; background: hsl(var(--primary) / .14); font-size: .75rem; font-weight: 700; color: hsl(var(--foreground)); }
.nv-mega__side {
	display: flex; flex-direction: column; gap: .35rem; padding: 1.25rem; border-radius: 1.25rem;
	background: linear-gradient(160deg, hsl(var(--primary) / .22), hsl(var(--primary) / .06));
}
.nv-mega__eyebrow { font-family: var(--font-headline); font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: hsl(var(--foreground)); }
.nv-mega__lead { font-size: .875rem; line-height: 1.45; color: hsl(var(--muted-foreground)); margin-bottom: auto; padding-bottom: .75rem; }
.nv-mega__link { display: inline-flex; align-items: center; gap: .45rem; padding: .35rem 0; font-size: .875rem; font-weight: 700; color: hsl(var(--foreground)); }
.nv-mega__link .nv-icon { width: 1rem; height: 1rem; transition: transform .25s ease; }
.nv-mega__link:hover { color: hsl(var(--primary)); }
.nv-mega__link:hover .nv-icon { transform: translateX(3px); }

/* ==========================================================================
   Menu mobile : plein écran, ouverture en cercle depuis le bouton
   ========================================================================== */
.nv-drawer { position: fixed; inset: 0; z-index: 80; visibility: hidden; transition: visibility 0s linear .6s; }
.nv-drawer.is-open { visibility: visible; transition-delay: 0s; }
.admin-bar .nv-drawer { top: 32px; }
@media (max-width: 782px) { .admin-bar .nv-drawer { top: 46px; } }
.nv-drawer__panel {
	position: absolute; inset: 0; overflow-y: auto; overscroll-behavior: contain;
	display: flex; flex-direction: column; gap: 1.75rem;
	padding: .625rem 1rem calc(2rem + env(safe-area-inset-bottom));
	background:
		radial-gradient(120% 55% at 100% 0%, hsl(var(--primary) / .28), transparent 62%),
		radial-gradient(90% 45% at 0% 100%, hsl(var(--primary) / .16), transparent 60%),
		hsl(var(--background));
	clip-path: circle(0 at calc(100% - 2.4rem) 2.6rem);
	transition: clip-path .6s cubic-bezier(.7, 0, .2, 1);
}
.nv-drawer.is-open .nv-drawer__panel { clip-path: circle(160% at calc(100% - 2.4rem) 2.6rem); }
.nv-drawer__top {
	display: flex; align-items: center; justify-content: space-between; flex-shrink: 0;
	height: 4rem; padding: 0 .5rem 0 1.1rem;
}
.nv-drawer__logo img { height: 2.75rem; width: auto; }
.nv-drawer__close {
	display: inline-flex; align-items: center; justify-content: center;
	width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: 9999px; cursor: pointer;
	background: hsl(var(--foreground)); color: hsl(var(--background));
	transform: rotate(-90deg) scale(.6); opacity: 0; transition: transform .45s ease .15s, opacity .3s ease .15s;
}
.nv-drawer.is-open .nv-drawer__close { transform: none; opacity: 1; }
.nv-drawer__close .nv-icon { width: 1.25rem; height: 1.25rem; }

.nv-drawer__list { list-style: none; margin: 0; padding: 0 .25rem; counter-reset: nvm; }
.nv-drawer__list li { border-bottom: 1px solid hsl(var(--foreground) / .1); }
.nv-drawer__list a {
	display: flex; align-items: center; gap: .9rem; padding: .95rem .25rem;
	font-family: var(--font-headline); font-size: clamp(1.35rem, 6.5vw, 1.9rem); font-weight: 700; line-height: 1.15;
	letter-spacing: .01em; text-transform: uppercase; color: hsl(var(--foreground));
}
.nv-drawer__list a::before {
	counter-increment: nvm; content: counter(nvm, decimal-leading-zero);
	min-width: 1.6rem; font-family: var(--font-body); font-size: .75rem; font-weight: 700; letter-spacing: .08em; color: hsl(var(--primary));
}
.nv-drawer__list a::after {
	content: ""; width: 1.4rem; height: 1.4rem; margin-left: auto; flex-shrink: 0; background: currentColor; opacity: .3;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10'/%3E%3Cpath d='M7 17 17 7'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10'/%3E%3Cpath d='M7 17 17 7'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform .25s ease, opacity .25s ease;
}
.nv-drawer__list a:hover::after, .nv-drawer__list a:focus-visible::after { opacity: 1; transform: translate(2px, -2px); }
.nv-drawer__list .current-menu-item > a, .nv-drawer__list .current_page_item > a { color: hsl(var(--primary)); }
.nv-drawer__list .current-menu-item > a::after, .nv-drawer__list .current_page_item > a::after { opacity: 1; }

.nv-drawer__label { margin-bottom: .75rem; padding-inline: .5rem; font-family: var(--font-headline); font-size: .75rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: hsl(var(--muted-foreground)); }
.nv-drawer__tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem; }
.nv-tile { position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden; border-radius: 1.1rem; color: #fff; isolation: isolate; }
.nv-tile img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.nv-tile::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgb(0 0 0 / .72), rgb(0 0 0 / .05) 60%); }
.nv-tile:hover img { transform: scale(1.06); }
.nv-tile__title { position: absolute; left: .55rem; right: .45rem; bottom: 1.6rem; font-family: var(--font-headline); font-size: clamp(.6rem, 2.75vw, .8rem); font-weight: 700; line-height: 1.15; letter-spacing: 0; text-transform: uppercase; overflow-wrap: anywhere; }
.nv-tile__price { position: absolute; left: .6rem; bottom: .55rem; font-size: .72rem; opacity: .9; }

.nv-drawer__actions { display: grid; gap: .6rem; }
.nv-drawer__actions .nv-btn { width: 100%; }
.nv-drawer__foot { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-top: auto; padding: 0 .5rem; }
.nv-drawer__mail { display: inline-flex; align-items: center; gap: .5rem; font-size: .875rem; color: hsl(var(--muted-foreground)); }
.nv-drawer__mail .nv-icon { width: 1.1rem; height: 1.1rem; }
.nv-drawer__social { display: flex; gap: .5rem; }
.nv-drawer__social a {
	display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: 9999px;
	background: hsl(var(--foreground) / .07); color: hsl(var(--foreground)); transition: background-color .2s ease;
}
.nv-drawer__social a:hover { background: hsl(var(--primary) / .25); }
.nv-drawer__social .nv-icon { width: 1.15rem; height: 1.15rem; }

/* Apparition en cascade */
.nv-drawer__list li, .nv-drawer__soins, .nv-drawer__actions, .nv-drawer__foot {
	opacity: 0; transform: translateY(18px);
	transition: opacity .45s ease, transform .55s cubic-bezier(.3, .7, .2, 1);
}
.nv-drawer.is-open .nv-drawer__list li, .nv-drawer.is-open .nv-drawer__soins, .nv-drawer.is-open .nv-drawer__actions, .nv-drawer.is-open .nv-drawer__foot { opacity: 1; transform: none; }
.nv-drawer.is-open .nv-drawer__list li:nth-child(1) { transition-delay: .18s; }
.nv-drawer.is-open .nv-drawer__list li:nth-child(2) { transition-delay: .23s; }
.nv-drawer.is-open .nv-drawer__list li:nth-child(3) { transition-delay: .28s; }
.nv-drawer.is-open .nv-drawer__list li:nth-child(4) { transition-delay: .33s; }
.nv-drawer.is-open .nv-drawer__list li:nth-child(5) { transition-delay: .38s; }
.nv-drawer.is-open .nv-drawer__list li:nth-child(n+6) { transition-delay: .43s; }
.nv-drawer.is-open .nv-drawer__soins { transition-delay: .42s; }
.nv-drawer.is-open .nv-drawer__actions { transition-delay: .5s; }
.nv-drawer.is-open .nv-drawer__foot { transition-delay: .56s; }
body.nv-locked { overflow: hidden; }
@media (min-width: 640px) {
	.nv-drawer__panel { padding-inline: 2rem; }
	.nv-drawer__tiles { gap: 1rem; }
	.nv-tile { aspect-ratio: 4 / 3; }
	.nv-tile__title { font-size: .9rem; }
	.nv-drawer__actions { grid-template-columns: 1fr 1fr; }
}

/* ==========================================================================
   Bandeaux (hero) des pages : grande carte photo, texte en bas à gauche
   ========================================================================== */
.nv-hero {
	position: relative; isolation: isolate;
	display: flex; align-items: flex-end;
	min-height: clamp(30rem, 74svh, 46rem);
	margin-inline: .5rem;
	border-radius: 1.75rem;
	overflow: hidden;
	color: #fff;
	background: hsl(var(--foreground));
}
@media (min-width: 768px) { .nv-hero { margin-inline: .75rem; border-radius: 2.25rem; } }
.nv-hero__img {
	position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover;
	animation: nv-hero-in 1.6s cubic-bezier(.2, .7, .2, 1) both;
}
@keyframes nv-hero-in { from { transform: scale(1.12); opacity: .4; } to { transform: scale(1); opacity: 1; } }
.nv-hero::after {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background:
		linear-gradient(to top, rgb(18 12 9 / .82) 0%, rgb(18 12 9 / .45) 38%, rgb(18 12 9 / .08) 68%, rgb(18 12 9 / .3) 100%),
		linear-gradient(to right, rgb(18 12 9 / .35), transparent 60%);
}
.nv-hero__content {
	display: flex; flex-direction: column; align-items: flex-start; gap: .9rem;
	padding-top: calc(var(--nv-hh) + 3rem); padding-bottom: clamp(2rem, 5vw, 3.75rem);
	text-align: left;
}
.nv-hero__content > * { animation: nv-rise .9s cubic-bezier(.2, .7, .2, 1) both; }
.nv-hero__content > :nth-child(2) { animation-delay: .08s; }
.nv-hero__content > :nth-child(3) { animation-delay: .16s; }
.nv-hero__content > :nth-child(4) { animation-delay: .24s; }
.nv-hero__content > :nth-child(5) { animation-delay: .32s; }
@keyframes nv-rise { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
.nv-hero__crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: rgb(255 255 255 / .75); }
.nv-hero__crumbs a { transition: color .2s ease; }
.nv-hero__crumbs a:hover { color: #fff; }
.nv-hero__crumbs [aria-current] { color: #fff; }
.nv-hero__title {
	max-width: 16ch;
	color: #fff;
	font-size: clamp(2.6rem, 8.5vw, 6.25rem); line-height: .95; font-weight: 800;
	letter-spacing: -.015em; text-transform: uppercase; text-wrap: balance;
}
.nv-nowrap { white-space: nowrap; }
.nv-hero__subtitle { max-width: 36rem; font-size: clamp(1rem, 1.5vw, 1.2rem); line-height: 1.55; color: rgb(255 255 255 / .88); text-wrap: pretty; }
.nv-hero__chips { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem; margin: .15rem 0 0; padding: 0; }
.nv-hero__chips li {
	padding: .35rem .85rem; border-radius: 9999px; font-size: .8rem; font-weight: 700; letter-spacing: .02em;
	background: rgb(255 255 255 / .14); border: 1px solid rgb(255 255 255 / .28);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.nv-hero__actions { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: .5rem; }
.nv-hero__actions .nv-btn { min-height: 3rem; padding-inline: 1.5rem; }
@media (max-width: 479px) { .nv-hero__actions { width: 100%; } .nv-hero__actions .nv-btn { flex: 1 1 100%; } }

/* En-tête simple (pages légales) et centré (réservation) */
.nv-page-wrap { padding-block: 3.5rem; min-height: 60vh; }
.nv-page-wrap--flush { padding-bottom: 0; min-height: 0; }
.nv-page-head__title { font-size: clamp(2.25rem, 6vw, 4.5rem); line-height: 1; font-weight: 800; letter-spacing: -.01em; text-transform: uppercase; text-wrap: balance; margin-bottom: 3rem; }
.nv-page-head--center { text-align: center; }
.nv-page-head--center .nv-page-head__title { margin-inline: auto; margin-bottom: 0; }
@media (min-width: 768px) {
	.nv-page-wrap { padding-block: 5rem; }
	.nv-page-wrap--flush { padding-bottom: 0; }
}
.nv-icon--lg { width: 1.75rem; height: 1.75rem; }

/* ==========================================================================
   Slider d'accueil : plein cadre, grand titre en bas à gauche
   ========================================================================== */
.nv-slider { position: relative; isolation: isolate; margin-inline: .5rem; border-radius: 1.75rem; overflow: hidden; background: hsl(var(--foreground)); }
@media (min-width: 768px) { .nv-slider { margin-inline: .75rem; border-radius: 2.25rem; } }
.nv-slider__track { display: flex; transition: transform .9s cubic-bezier(.65, 0, .25, 1); will-change: transform; }
.nv-slide { position: relative; flex: 0 0 100%; height: clamp(34rem, 90svh, 58rem); overflow: hidden; }
.nv-slide__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.nv-slide::after {
	content: ""; position: absolute; inset: 0;
	background:
		linear-gradient(to top, rgb(18 12 9 / .85) 0%, rgb(18 12 9 / .45) 35%, rgb(18 12 9 / 0) 62%, rgb(18 12 9 / .3) 100%),
		linear-gradient(to right, rgb(18 12 9 / .4), transparent 65%);
}
.nv-slide__content {
	position: relative; z-index: 1; height: 100%;
	display: flex; align-items: flex-end; justify-content: flex-start;
	padding: calc(var(--nv-hh) + 2rem) max(1.25rem, calc((100% - var(--container)) / 2 + 1rem)) 6rem;
	text-align: left;
}
.nv-slide__inner { display: flex; flex-direction: column; align-items: flex-start; max-width: 48rem; }
.nv-slide__card { background: none; padding: 0; border-radius: 0; }
.nv-slider .nv-slide__eyebrow {
	display: inline-flex; align-items: center; gap: .5rem; margin-bottom: 1rem;
	padding: .35rem .85rem; border-radius: 9999px; font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #fff;
	background: rgb(255 255 255 / .14); border: 1px solid rgb(255 255 255 / .28);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.nv-slider .nv-slide__eyebrow::before { content: ""; width: .45rem; height: .45rem; border-radius: 9999px; background: hsl(var(--primary)); box-shadow: 0 0 0 3px hsl(var(--primary) / .35); }
.nv-slider .nv-slide__title { margin: 0; color: #fff; font-size: clamp(2.9rem, 6.6vw, 5.5rem); line-height: .9; font-weight: 800; letter-spacing: -.02em; text-transform: uppercase; }
.nv-slider .nv-slide__text { padding-top: 1.1rem; max-width: 30rem; font-size: clamp(1rem, 1.5vw, 1.2rem); line-height: 1.55; color: rgb(255 255 255 / .88); }
.nv-slide__inner .nv-btn { margin-top: 1.75rem; min-height: 3.1rem; padding-inline: 1.6rem; background: #fff; color: hsl(var(--foreground)); font-weight: 700; }
.nv-slide__inner .nv-btn:hover { background: hsl(var(--primary)); color: #fff; }

/* Commandes : points en bas à gauche, flèches en bas à droite */
.nv-slider__dots {
	position: absolute; z-index: 2; bottom: 2.25rem;
	left: max(1.25rem, calc((100% - var(--container)) / 2 + 1rem));
	display: flex; gap: .4rem;
}
.nv-slider__dots button { width: 2.25rem; height: .3rem; padding: 0; border: 0; border-radius: 9999px; background: rgb(255 255 255 / .35); cursor: pointer; transition: background-color .3s ease, width .3s ease; }
.nv-slider__dots button[aria-current="true"] { width: 3.5rem; background: #fff; }
.nv-slider__arrow {
	display: none;
	position: absolute; z-index: 2; bottom: 1.5rem;
	width: 3rem; height: 3rem; align-items: center; justify-content: center;
	border: 1px solid rgb(255 255 255 / .35); border-radius: 9999px;
	background: rgb(255 255 255 / .12); color: #fff; cursor: pointer;
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
	transition: background-color .2s ease, color .2s ease;
}
.nv-slider__arrow:hover { background: #fff; color: hsl(var(--foreground)); }
.nv-slider__arrow .nv-icon { width: 1.1rem; height: 1.1rem; }
.nv-slider__arrow--prev { right: calc(max(1.25rem, calc((100% - var(--container)) / 2 + 1rem)) + 3.6rem); }
.nv-slider__arrow--next { right: max(1.25rem, calc((100% - var(--container)) / 2 + 1rem)); }
@media (min-width: 768px) {
	.nv-slide__content { padding-bottom: 7rem; }
	.nv-slider__arrow { display: flex; }
	.nv-slider__dots { bottom: 2.85rem; }
}

/* ==========================================================================
   Contenu éditable (blocs Gutenberg)
   ========================================================================== */
.nv-entry > * { margin: 0; }
.nv-entry figure { margin: 0; }
.nv-entry h2 { font-size: 1.5rem; line-height: 2rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; margin-bottom: 1rem; }
.nv-entry p { color: hsl(var(--muted-foreground)); }
.nv-entry p + p, .nv-entry p + .wp-block-buttons, .nv-entry p + .wp-block-list, .nv-entry .wp-block-list + p { margin-top: 1rem; }
.nv-entry strong { color: hsl(var(--foreground)); }
.nv-entry :is(p, li) > a:not(.wp-block-button__link):not(.nv-btn) { color: hsl(var(--primary)); }
.nv-entry :is(p, li) > a:not(.wp-block-button__link):not(.nv-btn):hover { text-decoration: underline; }
.nv-entry .nv-post-card__title a { color: hsl(var(--foreground)); text-decoration: none; }
.nv-entry .nv-post-card__title a:hover { color: hsl(var(--primary)); }
.nv-entry .wp-block-image img { width: 100%; }

/* Sections pleine largeur */
.nv-section {
	padding-block: 4rem;
	padding-inline: max(1rem, calc((100% - var(--container)) / 2 + 1rem));
}
.nv-section--muted { background: hsl(var(--muted) / .5); }
@media (min-width: 768px) { .nv-section { padding-block: 6rem; } }

.nv-narrow { max-width: 48rem; margin-inline: auto; text-align: center; }
.nv-narrow > p, .nv-lead { font-size: 1.125rem; line-height: 1.75rem; }
.nv-maxw-2xl { max-width: 42rem; margin-inline: auto !important; }
.nv-maxw-4xl { max-width: 56rem; margin-inline: auto !important; }
.nv-maxw-6xl { max-width: 72rem; margin-inline: auto !important; }
.nv-center { text-align: center; }
.nv-entry .nv-center > .wp-block-buttons, .nv-entry .wp-block-buttons.nv-center { justify-content: center; }
.nv-entry .nv-mt-4 { margin-top: 1rem; }
.nv-entry .nv-mt-6 { margin-top: 1.5rem; }
.nv-entry .nv-mt-8 { margin-top: 2rem; }
.nv-entry .nv-mt-12 { margin-top: 3rem; }
.nv-entry .nv-mt-16 { margin-top: 4rem; }
.nv-entry .nv-mb-6 { margin-bottom: 1.5rem; }
.nv-entry .nv-mb-8 { margin-bottom: 2rem; }
.nv-entry .nv-mb-12 { margin-bottom: 3rem; }
.nv-entry .nv-mb-16 { margin-bottom: 4rem; }
.nv-entry .nv-note { font-size: .875rem; line-height: 1.25rem; margin-top: 1rem; }

/* En-tête de section (titre + sous-titre centrés) */
.nv-section-header { text-align: center; margin-bottom: 3rem !important; }
.nv-section-header h2 { margin-bottom: 0; }
.nv-section-header p { font-size: 1.125rem; line-height: 1.75rem; margin-top: .5rem; }
.nv-entry h2.nv-title-center { text-align: center; margin-bottom: 3rem; }

/* Ligne d'intro "Carte des soins" */
.nv-intro-row { display: flex; flex-direction: column; align-items: center; justify-content: space-between; gap: 2rem; }
.nv-entry .nv-intro-row h2 { margin: 0; text-align: center; }
.nv-intro-row__aside { display: flex; flex-direction: column; align-items: center; gap: 1rem; }
.nv-entry .nv-intro-row__aside p { text-align: center; margin: 0; }
.nv-entry .nv-intro-row__aside .wp-block-buttons { margin: 0; }
@media (min-width: 768px) {
	.nv-intro-row { flex-direction: row; }
	.nv-entry .nv-intro-row h2 { text-align: left; }
	.nv-intro-row__aside { flex-direction: row; gap: 2rem; }
	.nv-entry .nv-intro-row__aside p { text-align: left; }
}

/* Grilles */
.nv-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; }
.nv-entry .nv-intro-row + .nv-grid { margin-top: 4rem; }
@media (min-width: 640px) { .nv-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 768px) {
	.nv-grid-2, .nv-grid-3-lg { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.nv-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.nv-grid-3-lg { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.nv-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Image + texte */
.nv-split { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; align-items: center; }
.nv-split--reverse > :last-child { order: -1; }
@media (min-width: 768px) {
	.nv-split { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4rem; }
	.nv-split--reverse > :last-child { order: 0; }
}
.nv-split p + .wp-block-buttons { margin-top: 1.5rem; }
.nv-split .nv-check-list { margin-top: 1.5rem; }
.nv-split h2 + .nv-check-list { margin-top: 0; }
.nv-split h2:has(+ .nv-check-list) { margin-bottom: 1.5rem; }

/* Médias arrondis */
.nv-media-square, .nv-media-portrait {
	position: relative;
	width: 100%;
	border-radius: 1rem;
	overflow: hidden;
	box-shadow: var(--shadow-lg);
	aspect-ratio: 1 / 1;
}
.nv-media-portrait { aspect-ratio: 4 / 5; }
.nv-media-square img, .nv-media-square video,
.nv-media-portrait img, .nv-media-portrait video { width: 100%; height: 100%; object-fit: cover; }
.nv-entry .nv-media-square a, .nv-entry .nv-media-portrait a { display: block; height: 100%; }

/* Cartes de soins */
.nv-soin-card { display: block; }
.nv-soin-card .wp-block-image {
	aspect-ratio: 1 / 1; border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow-lg);
	transition: transform .3s; margin-bottom: 1rem;
}
.nv-soin-card .wp-block-image a { display: block; height: 100%; }
.nv-soin-card .wp-block-image img { width: 100%; height: 100%; object-fit: cover; }
.nv-soin-card:hover .wp-block-image { transform: scale(1.05); }
.nv-entry .nv-soin-card h3 { font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; text-align: center; }
.nv-entry .nv-soin-card h3 a { color: hsl(var(--foreground)); text-decoration: none; }

/* Liste à puces "validées" */
.nv-entry .nv-check-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.nv-entry .nv-check-list li { display: flex; align-items: flex-start; gap: .75rem; color: hsl(var(--muted-foreground)); }
.nv-entry .nv-check-list li::before {
	content: ""; flex-shrink: 0; width: 1.5rem; height: 1.5rem; margin-top: .125rem;
	background: hsl(var(--primary));
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11 3 3L22 4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11 3 3L22 4'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Formules / tarifs */
.nv-entry h3.nv-subhead { font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: hsl(var(--primary)); margin-bottom: 2rem; }
.nv-entry .nv-grid + h3.nv-subhead { margin-top: 4rem; }
.nv-price-card {
	display: flex; flex-direction: column;
	padding: 1.5rem;
	text-align: left;
	background: hsl(var(--background));
	border: 1px solid hsl(var(--border));
	border-radius: 1rem;
	box-shadow: var(--shadow-sm);
}
.nv-entry .nv-price-card h4 { font-size: 1.125rem; line-height: 1.75rem; font-weight: 700; text-transform: uppercase; }
.nv-entry .nv-price-card p.nv-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: .5rem; margin-top: .5rem; }
.nv-entry .nv-price strong { font-size: 1.875rem; line-height: 2.25rem; font-weight: 700; color: hsl(var(--primary)); }
.nv-entry .nv-price s { color: hsl(var(--muted-foreground)); }
.nv-entry .nv-price-card p:not(.nv-price) { margin-top: 1rem; flex-grow: 1; }

/* Avis clientes */
.nv-testimonial {
	display: flex; flex-direction: column; align-items: center; text-align: center;
	padding: 2rem; border-radius: 1rem; background: hsl(var(--muted) / .5);
}
.nv-testimonial::before {
	content: ""; width: 2.5rem; height: 2.5rem; margin-bottom: 1.5rem; background: hsl(var(--primary));
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3Cpath d='M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3Cpath d='M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.nv-entry .nv-testimonial p { font-style: italic; margin: 0 0 1.5rem; }
.nv-entry .nv-testimonial p.nv-testimonial__author { font-style: normal; font-weight: 700; font-family: var(--font-headline); letter-spacing: .05em; color: hsl(var(--foreground)); margin: 0; }

/* Texte légal / politique */
.nv-legal { max-width: 56rem; }
.nv-entry.nv-legal > * + * { margin-top: 1rem; }
.nv-entry.nv-legal h2 { margin-top: 2.5rem; margin-bottom: 0; }
.nv-entry.nv-legal h2:first-child { margin-top: 0; }
.nv-entry.nv-legal h3 { font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; margin-top: 2rem; }
.nv-entry.nv-legal p + p { margin-top: .25rem; }
.nv-entry.nv-legal ul { color: hsl(var(--muted-foreground)); padding-left: 1.5rem; margin-bottom: 0; }
.nv-entry.nv-legal li + li { margin-top: .25rem; }

/* Intro centrée (page Réserver) */
.nv-page-intro { max-width: 42rem; margin-inline: auto !important; text-align: center; margin-top: 1rem !important; margin-bottom: 3rem !important; }
.nv-entry .nv-page-intro p { font-size: 1.125rem; line-height: 1.75rem; }
.nv-entry .nv-page-intro p.nv-text-foreground { color: hsl(var(--foreground)); font-size: 1rem; line-height: 1.5rem; }

/* Contenu "classique" (pages créées par la cliente sans mise en forme) */
.nv-entry--plain { max-width: 48rem; margin-inline: auto; padding: 4rem 1rem; }
.nv-entry--plain > * + * { margin-top: 1.25rem; }
.nv-entry--plain h2, .nv-entry--plain h3 { margin-top: 2.5rem; }

/* ==========================================================================
   Blog
   ========================================================================== */
.nv-post-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 3rem 2rem; }
.nv-post-grid--home { gap: 2rem; max-width: 72rem; margin-inline: auto; }
@media (min-width: 768px) { .nv-post-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .nv-post-grid--home { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .nv-post-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.nv-post-card { display: flex; flex-direction: column; }
.nv-post-card__media { display: block; position: relative; aspect-ratio: 4 / 3; border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow-lg); margin-bottom: 1rem; background: hsl(var(--muted)); }
.nv-post-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.nv-post-card:hover .nv-post-card__media img { transform: scale(1.05); }
.nv-post-card__body { display: flex; flex-direction: column; flex-grow: 1; }
.nv-post-card__date { font-size: .875rem; line-height: 1.25rem; color: hsl(var(--muted-foreground)); margin-bottom: .5rem; }
.nv-post-card__title { font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; letter-spacing: .05em; margin-bottom: .75rem; }
.nv-post-card__title a { transition: color .2s; }
.nv-post-card__title a:hover { color: hsl(var(--primary)); }
.nv-post-card__excerpt { color: hsl(var(--muted-foreground)); flex-grow: 1; }
.nv-post-card__more { display: inline-flex; align-items: center; gap: .5rem; margin-top: 1rem; font-weight: 700; color: hsl(var(--primary)); }
.nv-post-card:hover .nv-post-card__more { text-decoration: underline; }
.nv-post-card__more .nv-icon { width: 1rem; height: 1rem; }
.nv-blog-list { padding-block: 4rem; }
@media (min-width: 768px) { .nv-blog-list { padding-block: 6rem; } }
.nv-pagination { margin-top: 4rem; display: flex; justify-content: center; gap: .5rem; flex-wrap: wrap; }
.nv-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 2.5rem; height: 2.5rem; padding: 0 .75rem; border-radius: 9999px; border: 1px solid hsl(var(--border)); color: hsl(var(--foreground)); }
.nv-pagination .page-numbers.current, .nv-pagination .page-numbers:hover { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); border-color: transparent; }
.nv-empty { text-align: center; color: hsl(var(--muted-foreground)); }

/* Article */
.nv-article { padding-block: 4rem; }
@media (min-width: 768px) { .nv-article { padding-block: 6rem; } }
.nv-article__header { max-width: 48rem; margin: 0 auto 3rem; text-align: center; }
.nv-article__date { font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: hsl(var(--primary)); }
.nv-article__title { font-size: 2.25rem; line-height: 2.5rem; font-weight: 900; text-transform: uppercase; margin-block: 1rem; overflow-wrap: anywhere; }
@media (min-width: 768px) { .nv-article__title { font-size: 3.75rem; line-height: 1; } }
.nv-article__media { position: relative; aspect-ratio: 16 / 9; max-width: 64rem; margin: 0 auto 3rem; border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow-lg); }
.nv-article__media img { width: 100%; height: 100%; object-fit: cover; }
.nv-article__back { text-align: center; margin-top: 4rem; }

.nv-prose { max-width: 48rem; margin-inline: auto; font-size: 1.125rem; line-height: 1.78; color: hsl(var(--muted-foreground)); }
@media (min-width: 1024px) { .nv-prose { font-size: 1.25rem; line-height: 1.8; } }
.nv-prose > * + * { margin-top: 1.33em; }
.nv-prose h2, .nv-prose h3, .nv-prose h4 { color: hsl(var(--foreground)); text-transform: uppercase; letter-spacing: .1em; font-weight: 700; margin-top: 1.6em; margin-bottom: -.6em; }
.nv-prose h2 { font-size: 1.5em; line-height: 1.33; }
.nv-prose h3 { font-size: 1.2em; line-height: 1.5; }
.nv-prose > :first-child { margin-top: 0; }
.nv-prose p { color: inherit; }
.nv-prose ul { list-style: disc; padding-left: 1.6em; }
.nv-prose ol { list-style: decimal; padding-left: 1.6em; }
.nv-prose li { margin-block: .6em; padding-left: .3em; }
.nv-prose li::marker { color: hsl(var(--border)); }
.nv-prose ol > li::marker { color: hsl(var(--muted-foreground)); }
.nv-prose strong { color: hsl(var(--foreground)); }
.nv-prose a { color: hsl(var(--primary)); text-decoration: underline; }
.nv-prose img { border-radius: 1rem; }
.nv-prose blockquote { border-left: .25rem solid hsl(var(--border)); padding-left: 1em; font-style: italic; color: hsl(var(--foreground)); margin-inline: 0; }

/* ==========================================================================
   Formulaires (réservation, carte cadeau)
   ========================================================================== */
.nv-card-muted { background: hsl(var(--muted) / .5); padding: 2rem; border-radius: 1rem; }
.nv-form { display: grid; gap: 1.5rem; }
.nv-form__row { display: grid; gap: 1.5rem; }
@media (min-width: 640px) { .nv-form__row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nv-field { display: grid; gap: .5rem; }
.nv-field label { font-size: .875rem; line-height: 1; font-weight: 500; }
.nv-field input, .nv-field select, .nv-field textarea {
	width: 100%;
	min-height: 2.5rem;
	padding: .5rem .75rem;
	border: 1px solid hsl(var(--input));
	border-radius: calc(var(--radius) - 2px);
	background: hsl(var(--background));
	font-size: 1rem;
	line-height: 1.5rem;
	transition: box-shadow .15s;
}
@media (min-width: 768px) { .nv-field input, .nv-field select, .nv-field textarea { font-size: .875rem; } }
.nv-field textarea { min-height: 5rem; resize: vertical; }
.nv-field textarea.nv-tall { min-height: 6.25rem; }
.nv-field select {
	appearance: none; -webkit-appearance: none; padding-right: 2.25rem; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23777' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right .75rem center; background-size: 1rem;
}
.nv-field input::placeholder, .nv-field textarea::placeholder { color: hsl(var(--muted-foreground)); }
.nv-field input:focus, .nv-field select:focus, .nv-field textarea:focus { outline: none; box-shadow: 0 0 0 2px hsl(var(--background)), 0 0 0 4px hsl(var(--ring)); }
.nv-field.has-error input, .nv-field.has-error select, .nv-field.has-error textarea { border-color: #dc2626; }
.nv-field__error { font-size: .8125rem; color: #dc2626; }
.nv-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.nv-consent { font-size: .8125rem; line-height: 1.4; color: hsl(var(--muted-foreground)); }
.nv-consent a { text-decoration: underline; }
.nv-alert { padding: 1rem 1.25rem; border-radius: .75rem; margin-bottom: 1.5rem; font-size: .95rem; }
.nv-alert--success { background: hsl(142 60% 94%); color: hsl(142 50% 22%); border: 1px solid hsl(142 45% 80%); }
.nv-alert--error { background: hsl(0 85% 96%); color: hsl(0 60% 35%); border: 1px solid hsl(0 70% 88%); }
.nv-form-note { font-size: .875rem; line-height: 1.25rem; color: hsl(var(--muted-foreground)); text-align: center; margin-top: 2rem; }

/* Carte cadeau */
.nv-giftcard { display: grid; gap: 3rem; align-items: start; }
@media (min-width: 1024px) { .nv-giftcard { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4rem; } }
.nv-giftcard h2 { font-size: 1.5rem; line-height: 2rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; margin-bottom: 1.5rem; }
.nv-giftcard__preview-title { text-align: center; }
@media (min-width: 1024px) { .nv-giftcard__preview-title { text-align: left; } }
.nv-gc {
	position: relative; overflow: hidden;
	display: flex; flex-direction: column;
	width: 100%; max-width: 42rem; margin-inline: auto;
	padding: 1.5rem;
	background: hsl(var(--background));
	border: 2px solid hsl(var(--primary) / .2);
	border-radius: 1rem;
	box-shadow: var(--shadow-lg);
	text-align: center;
}
.nv-gc::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom right, hsl(var(--primary) / .05), transparent, hsl(var(--primary) / .1)); }
.nv-gc__bubble1 { position: absolute; top: 0; right: 0; width: 9rem; height: 9rem; margin: -3rem -3rem 0 0; border-radius: 9999px; background: hsl(var(--primary) / .1); }
.nv-gc__bubble2 { position: absolute; bottom: 0; left: 0; width: 12rem; height: 12rem; margin: 0 0 -5rem -5rem; border-radius: 9999px; background: hsl(var(--primary) / .05); }
.nv-gc__inner { position: relative; z-index: 1; display: flex; flex-direction: column; }
.nv-gc__logo { height: 3rem; width: auto; margin-inline: auto; }
.nv-gc__title { font-family: var(--font-headline); font-size: 1.25rem !important; font-weight: 900 !important; letter-spacing: .05em; text-transform: uppercase; color: hsl(var(--primary)) !important; margin: .5rem 0 0 !important; }
.nv-gc__fields { display: grid; gap: .75rem; padding-block: 1.5rem; }
.nv-gc__label { font-size: .625rem; letter-spacing: .1em; text-transform: uppercase; color: hsl(var(--muted-foreground)); }
.nv-gc__value { font-weight: 700; font-size: 1rem; color: hsl(var(--foreground)); margin-top: .125rem; min-height: 1.5em; overflow-wrap: anywhere; }
.nv-gc__message { font-style: italic; color: hsl(var(--muted-foreground)); font-size: .875rem; overflow-wrap: anywhere; }
.nv-gc__footer { padding-top: 1rem; border-top: 1px solid hsl(var(--primary) / .1); font-size: .625rem; color: hsl(var(--muted-foreground)); display: grid; gap: .25rem; }
.nv-gc__footer p:first-child { font-weight: 700; letter-spacing: .025em; }
.nv-gc__small { font-size: .5rem; }
@media (min-width: 640px) {
	.nv-gc { padding: 2rem; }
	.nv-gc__bubble1 { width: 12rem; height: 12rem; margin: -4rem -4rem 0 0; }
	.nv-gc__bubble2 { width: 16rem; height: 16rem; margin: 0 0 -6rem -6rem; }
	.nv-gc__logo { height: 4rem; }
	.nv-gc__title { font-size: 1.5rem !important; margin-top: 1rem !important; }
	.nv-gc__fields { gap: 1rem; padding-block: 2rem; }
	.nv-gc__label { font-size: .75rem; }
	.nv-gc__value { font-size: 1.25rem; }
	.nv-gc__value--sm { font-size: 1.125rem; }
	.nv-gc__footer { font-size: .75rem; }
	.nv-gc__small { font-size: .625rem; }
}

/* Contact */
.nv-contact-list { display: grid; gap: 1.5rem; }
.nv-contact-item { display: flex; align-items: flex-start; gap: 1rem; }
.nv-contact-item > .nv-icon { color: hsl(var(--primary)); margin-top: .25rem; }
.nv-contact-item h3 { font-family: var(--font-body); font-size: 1rem; font-weight: 700; }
.nv-contact-item p, .nv-contact-item a { color: hsl(var(--muted-foreground)); }
.nv-contact-item a:hover { color: hsl(var(--primary)); }
.nv-contact-item small { display: block; font-size: .875rem; margin-top: .25rem; color: hsl(var(--muted-foreground)); }
.nv-socials { display: flex; align-items: center; gap: 1rem; margin-top: .5rem; }
.nv-socials a { color: hsl(var(--muted-foreground)); transition: color .2s; }
.nv-contact-card .nv-entry-note, .nv-contact-card > p:last-child { font-size: .875rem; color: hsl(var(--muted-foreground)); margin-top: 2rem; padding-top: 1rem; border-top: 1px solid hsl(var(--border)); }

/* ==========================================================================
   Pied de page
   ========================================================================== */
.nv-footer {
	margin: 1rem .5rem .5rem; border-radius: 1.75rem; overflow: hidden;
	background: radial-gradient(90% 70% at 100% 0%, hsl(28 30% 35% / .45), transparent 60%), #17120f;
	color: #fff;
}
@media (min-width: 768px) { .nv-footer { margin: 1.5rem .75rem .75rem; border-radius: 2.25rem; } }
.nv-footer__cta { border-bottom: 1px solid rgb(255 255 255 / .1); }
.nv-footer__cta-inner { display: flex; flex-direction: column; gap: 2rem; padding-block: 3.5rem; }
.nv-footer p.nv-footer__eyebrow { font-family: var(--font-headline); font-size: .75rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: hsl(var(--primary)); }
.nv-footer p.nv-footer__headline { margin-top: .75rem; max-width: 14ch; font-family: var(--font-headline); font-size: clamp(2.25rem, 6vw, 4.75rem); line-height: .98; font-weight: 800; letter-spacing: -.015em; text-transform: uppercase; color: #fff; }
.nv-footer__cta-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
@media (min-width: 1024px) { .nv-footer__cta-inner { flex-direction: row; align-items: flex-end; justify-content: space-between; padding-block: 5rem; } }
.nv-footer__grid { display: grid; gap: 2.5rem; padding-block: 3.5rem; }
@media (min-width: 768px) { .nv-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.nv-footer__logo img { height: 5.5rem; width: auto; }
.nv-footer p, .nv-footer li a, .nv-footer__contact span, .nv-footer__contact a { font-size: .9rem; line-height: 1.5; color: rgb(255 255 255 / .64); }
.nv-footer__brand p { margin-top: 1rem; max-width: 20rem; }
.nv-footer h3 { color: #fff; font-size: .8rem; line-height: 1.5rem; font-weight: 700; text-transform: uppercase; letter-spacing: .16em; }
.nv-footer ul { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; gap: .55rem; }
.nv-footer a { transition: color .2s ease; }
.nv-footer a:hover { color: #fff !important; }
.nv-footer__contact { gap: .75rem !important; }
.nv-footer__contact li { display: flex; align-items: flex-start; gap: .75rem; }
.nv-footer__contact .nv-icon { width: 1.15rem; height: 1.15rem; color: hsl(var(--primary)); margin-top: .15rem; }
.nv-footer__social { display: flex; gap: .6rem; margin-top: 1rem; }
.nv-footer__social a { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: 9999px; background: rgb(255 255 255 / .08); color: #fff; transition: background-color .2s ease; }
.nv-footer__social a:hover { background: hsl(var(--primary)); }
.nv-footer__social .nv-icon { width: 1.2rem; height: 1.2rem; }
.nv-footer__bottom { border-top: 1px solid rgb(255 255 255 / .1); }
.nv-footer__bottom-inner { display: flex; flex-direction: column; justify-content: space-between; align-items: center; gap: 1rem; padding-block: 1.5rem; text-align: center; }
.nv-footer__bottom p, .nv-footer__bottom li a { font-size: .8rem; color: rgb(255 255 255 / .5); }
.nv-footer__bottom ul { margin: 0; display: flex; gap: 1rem; flex-wrap: wrap; justify-content: center; }
@media (min-width: 768px) { .nv-footer__bottom-inner { flex-direction: row; } }

/* ==========================================================================
   Fenêtre "Informations importantes"
   ========================================================================== */
.nv-modal { position: fixed; inset: 0; z-index: 100; display: none; align-items: center; justify-content: center; padding: 1rem; }
.nv-modal.is-open { display: flex; }
.nv-modal__overlay { position: absolute; inset: 0; background: rgb(0 0 0 / .8); animation: nv-fade .2s ease; }
.nv-modal__dialog {
	position: relative; width: 100%; max-width: 32rem;
	padding: 1.5rem; border-radius: var(--radius);
	background: hsl(var(--background)); box-shadow: var(--shadow-lg);
	animation: nv-pop .2s ease;
}
.nv-modal__title { font-family: var(--font-body); font-size: 1.125rem; line-height: 1.75rem; font-weight: 700; }
.nv-modal__body { margin-top: .5rem; font-size: .875rem; line-height: 1.25rem; color: hsl(var(--muted-foreground)); display: grid; gap: 1rem; }
.nv-modal__actions { display: flex; justify-content: flex-end; margin-top: 1rem; }
.nv-modal__actions .nv-btn { border-radius: calc(var(--radius) - 2px); min-height: 2.5rem; padding: .5rem 1rem; font-weight: 700; }
@keyframes nv-fade { from { opacity: 0; } }
@keyframes nv-pop { from { opacity: 0; transform: scale(.96); } }

/* 404 */
.nv-404 { padding: 6rem 1rem; text-align: center; }
.nv-404 h1 { font-size: 3rem; font-weight: 900; text-transform: uppercase; }
.nv-404 p { margin: 1rem auto 2rem; color: hsl(var(--muted-foreground)); max-width: 32rem; }

/* Apparition douce au défilement */
.js .nv-reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.js .nv-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.js .nv-reveal { opacity: 1; transform: none; transition: none; }
	.nv-slider__track, .nv-drawer__panel, .nv-mega, .nv-nav__indicator { transition: none; }
	.nv-drawer.is-open .nv-drawer__panel { clip-path: none; }
	.nv-drawer__panel { clip-path: none; opacity: 0; }
	.nv-drawer.is-open .nv-drawer__panel { opacity: 1; }
	.nv-drawer__list li, .nv-drawer__soins, .nv-drawer__actions, .nv-drawer__foot, .nv-drawer__close { transition: none; transform: none; opacity: 1; }
}

/* Alignements WordPress */
.alignleft { float: left; margin: 0 1.5rem 1rem 0; }
.alignright { float: right; margin: 0 0 1rem 1.5rem; }
.aligncenter { margin-inline: auto; }
.wp-caption-text, figcaption { font-size: .875rem; color: hsl(var(--muted-foreground)); text-align: center; margin-top: .5rem; }

/* ==========================================================================
   Réservation en ligne
   ========================================================================== */
.nv-booking { --nv-r: 1.25rem; max-width: 76rem; margin-inline: auto; text-align: left; }
.nv-booking__layout { display: grid; gap: 1.5rem; align-items: start; }
.nv-booking__main { display: grid; gap: 1.25rem; min-width: 0; }
@media (min-width: 1024px) {
	.nv-booking__layout { grid-template-columns: minmax(0, 1fr) 22rem; gap: 2rem; }
	.nv-booking__summary { position: sticky; top: calc(var(--header-h) + 1.5rem); }
}
.nv-bstep {
	background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--nv-r);
	padding: 1.25rem; box-shadow: var(--shadow-sm); transition: opacity .35s ease, filter .35s ease;
}
@media (min-width: 640px) { .nv-bstep { padding: 1.75rem; } }
.nv-bstep.is-locked { opacity: .45; filter: grayscale(.4); }
.nv-bstep__head { display: flex; align-items: center; gap: .75rem; margin-bottom: 1.25rem; }
.nv-entry .nv-bstep__head h2, .nv-bstep__head h2 { font-size: 1.05rem; line-height: 1.4; letter-spacing: .08em; text-transform: uppercase; margin: 0; }
.nv-bstep__num {
	flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
	width: 2rem; height: 2rem; border-radius: 9999px;
	background: hsl(var(--primary)); color: hsl(var(--primary-foreground));
	font-family: var(--font-headline); font-weight: 700; font-size: .9rem; transition: background .3s;
}
.nv-bstep.is-done .nv-bstep__num { font-size: 0; background: hsl(142 40% 42%); }
.nv-bstep.is-done .nv-bstep__num::after { content: "✓"; font-size: 1rem; }

/* Soins */
.nv-svc-group { border: 0; margin: 0 0 1.5rem; padding: 0; min-width: 0; }
.nv-svc-group:last-child { margin-bottom: 0; }
.nv-svc-group legend { padding: 0; margin-bottom: .75rem; font-family: var(--font-headline); font-size: .75rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: hsl(var(--primary)); }
.nv-svc-grid { display: grid; gap: .75rem; }
@media (min-width: 640px) { .nv-svc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nv-svc { position: relative; display: block; cursor: pointer; }
.nv-svc input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.nv-svc__body {
	display: flex; flex-direction: column; gap: .4rem; height: 100%;
	padding: 1rem 3rem 1rem 1.1rem; border: 1.5px solid hsl(var(--border)); border-radius: 1rem;
	background: hsl(var(--background)); transition: border-color .2s, box-shadow .2s, transform .2s, background .2s;
}
.nv-svc__body::after {
	content: ""; position: absolute; top: 1rem; right: 1rem; width: 1.3rem; height: 1.3rem; border-radius: 9999px;
	border: 1.5px solid hsl(var(--border)); background: hsl(var(--background)) center / 70% no-repeat; transition: all .2s;
}
.nv-svc:hover .nv-svc__body { border-color: hsl(var(--primary) / .6); transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.nv-svc input:checked + .nv-svc__body { border-color: hsl(var(--primary)); background: hsl(var(--primary) / .07); box-shadow: 0 0 0 3px hsl(var(--primary) / .16); }
.nv-svc input:checked + .nv-svc__body::after {
	border-color: hsl(var(--primary));
	background-color: hsl(var(--primary));
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}
.nv-svc input:focus-visible + .nv-svc__body { outline: 2px solid hsl(var(--ring)); outline-offset: 2px; }
.nv-svc__name { font-weight: 700; color: hsl(var(--foreground)); line-height: 1.3; }
.nv-svc__meta { display: flex; align-items: center; gap: .6rem; }
.nv-svc__price { font-weight: 700; color: hsl(var(--primary)); }
.nv-svc__desc { font-size: .85rem; line-height: 1.4; color: hsl(var(--muted-foreground)); }
.nv-chip { display: inline-flex; align-items: center; padding: .1rem .6rem; border-radius: 9999px; background: hsl(var(--muted)); color: hsl(var(--muted-foreground)); font-size: .8rem; }

/* Calendrier */
.nv-when { display: grid; gap: 1.5rem; }
@media (min-width: 768px) { .nv-when { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 2rem; } }
.nv-cal { position: relative; min-height: 18rem; }
.nv-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.nv-cal__title { font-family: var(--font-headline); font-weight: 700; text-transform: capitalize; color: hsl(var(--foreground)); }
.nv-entry .nv-cal p { color: hsl(var(--foreground)); }
.nv-cal__nav {
	display: inline-flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem;
	border: 1px solid hsl(var(--border)); border-radius: 9999px; background: hsl(var(--background)); cursor: pointer; transition: background .2s;
}
.nv-cal__nav:hover:not(:disabled) { background: hsl(var(--accent)); }
.nv-cal__nav:disabled { opacity: .3; cursor: default; }
.nv-cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .3rem; text-align: center; transition: opacity .2s; }
.nv-cal__dow { padding: .25rem 0; font-size: .75rem; font-weight: 700; color: hsl(var(--muted-foreground)); }
.nv-cal__day {
	position: relative; aspect-ratio: 1; max-height: 3rem; width: 100%;
	border: 0; border-radius: 9999px; background: transparent;
	font-size: .9rem; color: hsl(var(--muted-foreground) / .55); cursor: default; transition: background .15s, color .15s, transform .15s;
}
.nv-cal__day.is-available { background: hsl(var(--primary) / .12); color: hsl(var(--foreground)); font-weight: 700; cursor: pointer; }
.nv-cal__day.is-available:hover { background: hsl(var(--primary) / .25); transform: scale(1.06); }
.nv-cal__day.is-selected, .nv-cal__day.is-selected:hover { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.nv-cal__day.is-today::after { content: ""; position: absolute; left: 50%; bottom: 12%; width: 4px; height: 4px; margin-left: -2px; border-radius: 9999px; background: currentColor; }
.nv-cal__legend { display: flex; align-items: center; gap: .5rem; margin-top: .75rem; font-size: .8rem; }
.nv-entry .nv-cal .nv-cal__legend { color: hsl(var(--muted-foreground)); }
.nv-cal__legend span { width: .85rem; height: .85rem; border-radius: 9999px; background: hsl(var(--primary) / .25); }
.nv-cal.is-loading .nv-cal__grid { opacity: .35; pointer-events: none; }
.nv-cal.is-loading::after {
	content: ""; position: absolute; left: 50%; top: 55%; width: 2rem; height: 2rem; margin: -1rem;
	border: 3px solid hsl(var(--border)); border-top-color: hsl(var(--primary)); border-radius: 9999px; animation: nv-spin .8s linear infinite;
}

/* Horaires */
.nv-slots { min-width: 0; }
.nv-entry .nv-slots__date, .nv-slots__date { font-family: var(--font-headline); font-weight: 700; color: hsl(var(--foreground)); margin-bottom: 1rem; }
.nv-slots__group + .nv-slots__group { margin-top: 1rem; }
.nv-entry .nv-slots__label, .nv-slots__label { margin-bottom: .5rem; font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: hsl(var(--muted-foreground)); }
.nv-slots__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(4.5rem, 1fr)); gap: .5rem; }
.nv-slot {
	padding: .6rem .25rem; border: 1.5px solid hsl(var(--border)); border-radius: .75rem; background: hsl(var(--background));
	font-weight: 700; font-variant-numeric: tabular-nums; color: hsl(var(--foreground)); cursor: pointer; transition: all .15s;
}
.nv-slot:hover { border-color: hsl(var(--primary)); transform: translateY(-1px); }
.nv-slot[aria-pressed="true"] { background: hsl(var(--primary)); border-color: hsl(var(--primary)); color: hsl(var(--primary-foreground)); box-shadow: 0 6px 16px -8px hsl(var(--primary)); }
.nv-slots__hint { padding: 1.5rem 1rem; border: 1.5px dashed hsl(var(--border)); border-radius: 1rem; text-align: center; font-size: .95rem; }
.nv-link { border: 0; background: none; padding: 0; color: hsl(var(--primary)); font-weight: 700; cursor: pointer; text-decoration: underline; }

/* Formulaire + récapitulatif */
.nv-field label small { font-weight: 400; color: hsl(var(--muted-foreground)); }
.nv-check { display: flex; align-items: flex-start; gap: .75rem; font-size: .875rem; line-height: 1.45; color: hsl(var(--muted-foreground)); cursor: pointer; }
.nv-check input { flex-shrink: 0; width: 1.15rem; height: 1.15rem; margin-top: .15rem; accent-color: hsl(var(--primary)); }
.nv-btn--lg { min-height: 3.25rem; font-size: 1rem; font-weight: 700; }
.nv-btn.is-busy { position: relative; color: transparent !important; }
.nv-btn.is-busy::after { content: ""; position: absolute; width: 1.25rem; height: 1.25rem; border: 2px solid rgb(255 255 255 / .5); border-top-color: #fff; border-radius: 9999px; animation: nv-spin .7s linear infinite; }
.nv-secure { display: flex; align-items: flex-start; gap: .5rem; font-size: .8125rem; line-height: 1.4; color: hsl(var(--muted-foreground)); }
.nv-secure .nv-icon { width: 1rem; height: 1rem; margin-top: .1rem; }
.nv-alert--info { background: hsl(210 80% 96%); color: hsl(210 50% 28%); border: 1px solid hsl(210 60% 86%); }

.nv-summary { background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--nv-r); padding: 1.5rem; box-shadow: var(--shadow-lg); }
.nv-entry .nv-summary__title, .nv-summary__title { font-family: var(--font-headline); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: hsl(var(--foreground)); margin-bottom: 1rem; }
.nv-summary__empty { font-size: .95rem; }
.nv-summary__list { display: grid; gap: .65rem; margin: 0; }
.nv-summary__list > div { display: flex; justify-content: space-between; gap: 1rem; font-size: .95rem; }
.nv-summary__list dt { color: hsl(var(--muted-foreground)); }
.nv-summary__list dd { margin: 0; text-align: right; font-weight: 700; color: hsl(var(--foreground)); }
.nv-summary__total { margin-top: .35rem; padding-top: .85rem; border-top: 1px solid hsl(var(--border)); }
.nv-summary__deposit dd { color: hsl(var(--primary)); font-size: 1.15rem; }
.nv-entry .nv-summary__note, .nv-summary__note { margin-top: 1rem; font-size: .8rem; text-align: center; }

/* Confirmation */
.nv-confirm {
	max-width: 40rem; margin-inline: auto; padding: 2.5rem 1.5rem; text-align: center;
	background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: 1.5rem; box-shadow: var(--shadow-lg);
}
@media (min-width: 640px) { .nv-confirm { padding: 3rem 2.5rem; } }
.nv-confirm__icon svg { display: block; width: 4.5rem; height: 4.5rem; margin: 0 auto 1.25rem; stroke: hsl(142 40% 42%); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.nv-confirm__icon circle { stroke-dasharray: 151; stroke-dashoffset: 151; animation: nv-draw .7s ease-out forwards; }
.nv-confirm__icon path { stroke-dasharray: 40; stroke-dashoffset: 40; animation: nv-draw .4s ease-out .6s forwards; }
.nv-entry .nv-confirm h2, .nv-confirm h2 { font-size: 1.5rem; line-height: 1.3; letter-spacing: .05em; text-transform: uppercase; margin-bottom: .75rem; }
.nv-confirm__lead { font-size: 1.05rem; }
.nv-confirm__list { display: grid; gap: .6rem; margin: 1.5rem 0; padding: 1.25rem; text-align: left; background: hsl(var(--muted) / .6); border-radius: 1rem; }
.nv-confirm__list > div { display: flex; justify-content: space-between; gap: 1rem; }
.nv-confirm__list dt { color: hsl(var(--muted-foreground)); }
.nv-confirm__list dd { margin: 0; font-weight: 700; text-align: right; }
.nv-entry .nv-confirm__note { font-size: .9rem; }
.nv-confirm__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .75rem; margin-top: 1.75rem; }
.nv-spinner { width: 2.5rem; height: 2.5rem; margin: 0 auto 1rem; border: 3px solid hsl(var(--border)); border-top-color: hsl(var(--primary)); border-radius: 9999px; animation: nv-spin .8s linear infinite; }
@keyframes nv-spin { to { transform: rotate(360deg); } }
@keyframes nv-draw { to { stroke-dashoffset: 0; } }

/* ==========================================================================
   Carte cadeau en ligne
   ========================================================================== */
.nv-gift { --nv-r: 1.25rem; max-width: 76rem; margin-inline: auto; text-align: left; }
.nv-gift > .nv-alert { margin-bottom: 1.5rem; }
.nv-gift__layout { display: grid; gap: 1.5rem; align-items: start; }
.nv-gift__form { display: grid; gap: 1.25rem; min-width: 0; }
.nv-gift__aside { display: grid; gap: 1rem; }
@media (min-width: 1024px) {
	.nv-gift__layout { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 2rem; }
	.nv-gift__aside { order: 2; position: sticky; top: calc(var(--header-h) + 1.5rem); }
}
.nv-gift__preview { margin: 0; }
.nv-gift__canvas {
	display: block; width: 100%; height: auto; aspect-ratio: 2000 / 921;
	border-radius: 1rem; box-shadow: var(--shadow-lg); background: #FCE9DD;
}
.nv-gift__preview noscript img { width: 100%; height: auto; border-radius: 1rem; }
.nv-entry .nv-gift__preview figcaption, .nv-gift__preview figcaption { margin-top: .75rem; font-size: .85rem; line-height: 1.4; text-align: center; color: hsl(var(--muted-foreground)); }
.nv-gift__total {
	display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
	padding: 1rem 1.25rem; border-radius: var(--nv-r);
	background: hsl(var(--card)); border: 1px solid hsl(var(--border)); box-shadow: var(--shadow-sm);
}
.nv-gift__total span { font-family: var(--font-headline); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.nv-gift__total strong { font-size: 1.5rem; color: hsl(var(--primary)); transition: transform .25s ease; }
.nv-gift.has-total .nv-gift__total strong { transform: scale(1.04); }
.nv-entry .nv-gift__help, .nv-gift__help { margin: -.5rem 0 1rem; font-size: .9rem; color: hsl(var(--muted-foreground)); }
.nv-gift .nv-svc__body { padding-block: .85rem; }
.nv-gift__dest-toggle { margin-top: 1.25rem; }
.nv-gift [data-gift-dest] { margin-top: 1rem; }
.nv-gift [data-gift-dest][hidden] { display: none; }
.nv-gift .nv-check:last-of-type { margin-top: 1.25rem; }
.nv-gift [data-gift-error] { margin-top: 1rem; }
.nv-gift [data-gift-submit] { margin-top: 1.25rem; }
.nv-gift__secure { display: flex; align-items: center; justify-content: center; gap: .4rem; margin-top: 1rem; }
.nv-gift__secure svg { flex-shrink: 0; }

/* ==========================================================================
   Touches modernes
   ========================================================================== */

/* Slider : zoom lent + apparition du texte + barre de progression */
.nv-slide__img { transform: scale(1); transition: transform 7.5s ease-out; }
.nv-slide.is-active .nv-slide__img { transform: scale(1.08); }
.nv-slide__card, .nv-slide__inner .nv-btn { transition: opacity .8s ease .25s, transform .8s ease .25s; }
.nv-slider.is-ready .nv-slide:not(.is-active) .nv-slide__card,
.nv-slider.is-ready .nv-slide:not(.is-active) .nv-slide__inner .nv-btn { opacity: 0; transform: translateY(18px); }
.nv-slider__progress { position: absolute; left: 0; bottom: 0; z-index: 2; height: 2px; width: 0; background: rgb(255 255 255 / .6); }
.nv-slider__progress.is-running { animation: nv-progress var(--nv-slide-ms, 6000ms) linear forwards; }
.nv-slider:hover .nv-slider__progress, .nv-slider:focus-within .nv-slider__progress { animation-play-state: paused; }
@keyframes nv-progress { to { width: 100%; } }

/* Cartes : légère élévation au survol */
.nv-price-card { transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.nv-price-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: hsl(var(--primary) / .45); }
.nv-entry .nv-price-card .wp-block-buttons { margin-top: 1.25rem; }
.nv-entry .nv-price-card .wp-block-button, .nv-entry .nv-price-card .wp-block-button__link { width: 100%; }
.nv-entry .nv-price-card .wp-block-button__link { min-height: 2.5rem; padding-block: .5rem; }
.nv-testimonial { transition: transform .25s ease, box-shadow .25s ease; }
.nv-section--muted .nv-testimonial { background: hsl(var(--card)); box-shadow: var(--shadow-sm); }
.nv-testimonial:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.nv-entry .nv-testimonial p.nv-stars { margin: -.75rem 0 1rem; font-style: normal; letter-spacing: .25em; font-size: 1.1rem; color: hsl(38 75% 52%); }

/* Sur-titre de section */
.nv-entry .nv-eyebrow { margin-bottom: .5rem; font-family: var(--font-headline); font-size: .75rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: hsl(var(--primary)); }
.nv-section-header .nv-eyebrow + h2 { margin-top: 0; }

/* « Comment ça marche » */
.nv-steps-grid { counter-reset: nvstep; }
.nv-step {
	position: relative; padding: 2rem 1.5rem 1.75rem; text-align: center;
	background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: 1.25rem; box-shadow: var(--shadow-sm);
	transition: transform .25s ease, box-shadow .25s ease;
}
.nv-step:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.nv-step::before {
	counter-increment: nvstep; content: counter(nvstep);
	display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; margin: 0 auto 1rem;
	border-radius: 9999px; background: hsl(var(--primary) / .14); color: hsl(var(--primary));
	font-family: var(--font-headline); font-size: 1.25rem; font-weight: 900;
}
.nv-entry .nv-step h3 { margin-bottom: .5rem; font-size: 1.05rem; line-height: 1.4; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }

/* Questions fréquentes */
.nv-faq { display: grid; gap: .75rem; max-width: 48rem; margin-inline: auto; }
.nv-entry .wp-block-details { padding: 0 1.25rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: 1rem; transition: box-shadow .2s ease, border-color .2s ease; }
.nv-entry .wp-block-details[open] { box-shadow: var(--shadow-sm); border-color: hsl(var(--primary) / .4); }
.nv-entry .wp-block-details summary { position: relative; padding: 1.1rem 2.25rem 1.1rem 0; font-weight: 700; color: hsl(var(--foreground)); list-style: none; cursor: pointer; }
.nv-entry .wp-block-details summary::-webkit-details-marker { display: none; }
.nv-entry .wp-block-details summary::after { content: "+"; position: absolute; right: 0; top: 50%; transform: translateY(-50%); font-size: 1.5rem; font-weight: 400; color: hsl(var(--primary)); transition: transform .2s ease; }
.nv-entry .wp-block-details[open] summary::after { transform: translateY(-50%) rotate(45deg); }
.nv-entry .wp-block-details > p { margin: 0; padding-bottom: 1.1rem; }

/* Bouton « Réserver » fixe sur mobile */
.nv-mobile-cta {
	position: fixed; left: 1rem; right: 1rem; bottom: calc(1rem + env(safe-area-inset-bottom)); z-index: 60;
	display: flex; transform: translateY(160%); transition: transform .35s ease;
}
.nv-mobile-cta.is-visible { transform: none; }
.nv-mobile-cta .nv-btn { width: 100%; min-height: 3.25rem; font-size: 1rem; font-weight: 700; box-shadow: 0 12px 30px -10px rgb(0 0 0 / .45); }
@media (min-width: 768px) { .nv-mobile-cta { display: none; } }
@media (max-width: 767px) { .has-mobile-cta .nv-footer__bottom-inner { padding-bottom: 6rem; } }

/* --------------------------------------------------------------------------
   Modernisation 2026 : typographie, sections en panneaux, cartes, avis, étapes
   -------------------------------------------------------------------------- */
[id] { scroll-margin-top: calc(var(--nv-hh, 5rem) + 1rem); }
.nv-entry > .nv-slider { margin-inline: .5rem; }
@media (min-width: 768px) { .nv-entry > .nv-slider { margin-inline: .75rem; } }

/* Titres plus grands et mieux équilibrés */
.nv-entry h2 { font-size: clamp(1.75rem, 3.4vw, 2.75rem); line-height: 1.08; font-weight: 800; letter-spacing: .01em; text-wrap: balance; }
.nv-entry p, .nv-prose p { text-wrap: pretty; }
.nv-entry .nv-giftcard h2 { font-size: 1.5rem; line-height: 2rem; }
.nv-entry .nv-eyebrow {
	display: inline-flex; align-items: center; gap: .5rem; margin-bottom: 1rem;
	padding: .3rem .85rem; border-radius: 9999px; background: hsl(var(--primary) / .13);
	letter-spacing: .16em; color: hsl(var(--foreground));
}
.nv-entry .nv-eyebrow::before { content: ""; width: .4rem; height: .4rem; border-radius: 9999px; background: hsl(var(--primary)); }
.nv-section-header { margin-bottom: 3.5rem !important; }
.nv-section-header p:not(.nv-eyebrow) { margin-top: .9rem; }

/* Boutons : plus affirmés, légère élévation */
.nv-btn, .nv-entry .wp-block-button__link { min-height: 3rem; padding: .7rem 1.6rem; font-weight: 700; letter-spacing: .03em; transition: background-color .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.nv-btn:hover, .nv-entry .wp-block-button__link:hover { transform: translateY(-2px); box-shadow: 0 14px 28px -16px hsl(var(--foreground) / .55); }
.nv-btn[disabled] { transform: none; box-shadow: none; }
.nv-btn--block, .nv-btn--lg { white-space: normal; }
.nv-entry .is-style-outline > .wp-block-button__link, .nv-btn--outline { background: transparent; border-color: hsl(var(--foreground) / .22); }
.nv-entry .is-style-outline > .wp-block-button__link:hover, .nv-btn--outline:hover { background: hsl(var(--foreground)); color: hsl(var(--background)); border-color: transparent; }

/* Sections alternées : grands panneaux arrondis */
@media (min-width: 768px) { .nv-section { padding-block: 6.5rem; } }
.nv-section--muted {
	margin-inline: .5rem; border-radius: 1.75rem;
	background: hsl(var(--card));
	box-shadow: 0 1px 0 hsl(var(--border) / .6), 0 30px 60px -50px hsl(var(--foreground) / .35);
}
@media (min-width: 768px) { .nv-section--muted { margin-inline: .75rem; border-radius: 2.25rem; } }

/* Médias arrondis */
.nv-media-square, .nv-media-portrait { border-radius: 1.75rem; box-shadow: 0 34px 60px -38px hsl(var(--foreground) / .55); }
.nv-split { gap: 2.5rem; }
@media (min-width: 768px) { .nv-split { gap: 5rem; } }

/* Cartes de soins : photo + titre posé dessus */
.nv-soin-card { position: relative; }
.nv-soin-card .wp-block-image {
	position: relative; aspect-ratio: 4 / 3; margin-bottom: 0; border-radius: 1.75rem;
	box-shadow: 0 30px 60px -38px hsl(var(--foreground) / .6); transition: box-shadow .35s ease;
}
@media (min-width: 768px) { .nv-soin-card .wp-block-image { aspect-ratio: 4 / 5; } }
.nv-soin-card .wp-block-image::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgb(18 12 9 / .72), rgb(18 12 9 / 0) 55%); pointer-events: none; }
.nv-soin-card .wp-block-image img { transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.nv-soin-card:hover .wp-block-image { transform: none; box-shadow: 0 40px 70px -36px hsl(var(--foreground) / .7); }
.nv-soin-card:hover .wp-block-image img { transform: scale(1.06); }
.nv-entry .nv-soin-card h3 {
	position: absolute; left: 1.25rem; right: 1.25rem; bottom: 1.25rem; z-index: 1;
	display: flex; align-items: center; justify-content: space-between; gap: 1rem;
	margin: 0; text-align: left; font-size: 1.3rem; line-height: 1.15; letter-spacing: .03em; color: #fff;
	pointer-events: none;
}
.nv-entry .nv-soin-card h3 a { min-width: 0; color: #fff; pointer-events: auto; overflow-wrap: anywhere; }
@media (max-width: 767px) {
	.nv-entry .nv-soin-card h3 { left: 1rem; right: 1rem; bottom: 1rem; gap: .6rem; font-size: 1.05rem; }
	.nv-entry .nv-soin-card h3::after { width: 2.25rem; height: 2.25rem; }
}
.nv-entry .nv-soin-card h3::after {
	content: ""; flex-shrink: 0; width: 2.75rem; height: 2.75rem; border-radius: 9999px;
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23231D1A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10'/%3E%3Cpath d='M7 17 17 7'/%3E%3C/svg%3E") center / 1.1rem no-repeat;
	transition: transform .35s ease;
}
.nv-soin-card:hover h3::after { transform: rotate(45deg); }

/* Tarifs */
.nv-price-card { padding: 1.75rem; background: hsl(var(--card)); border-color: hsl(var(--border) / .8); border-radius: 1.5rem; }
.nv-section--muted .nv-price-card { background: hsl(var(--background)); }
.nv-entry .nv-price-card h4 { font-size: 1.05rem; letter-spacing: .06em; }
.nv-entry .nv-price strong { font-size: 2.25rem; font-weight: 800; letter-spacing: -.01em; color: hsl(var(--foreground)); }
.nv-price-card:hover { border-color: hsl(var(--primary) / .55); box-shadow: 0 28px 50px -34px hsl(var(--foreground) / .55); }

/* Étapes « Comment ça marche » : grands numéros au trait */
.nv-step { padding: 2rem 1.75rem; text-align: left; border-radius: 1.5rem; background: hsl(var(--card)); }
.nv-section--muted .nv-step { background: hsl(var(--background)); border-color: transparent; }
.nv-step::before {
	content: counter(nvstep, decimal-leading-zero); width: auto; height: auto; margin: 0 0 1.25rem; justify-content: flex-start;
	border-radius: 0; background: none; color: transparent; -webkit-text-stroke: 1.5px hsl(var(--primary));
	font-size: 3rem; line-height: 1; font-weight: 800;
}

/* Avis */
.nv-testimonial { align-items: flex-start; text-align: left; padding: 2rem; border-radius: 1.5rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border) / .7); }
.nv-section--muted .nv-testimonial { background: hsl(var(--background)); border-color: transparent; box-shadow: none; }
.nv-testimonial::before { width: 2rem; height: 2rem; margin-bottom: 1.25rem; opacity: .8; }
.nv-entry .nv-testimonial p { font-style: normal; font-size: 1.05rem; line-height: 1.65; color: hsl(var(--foreground) / .82); }
.nv-entry .nv-testimonial p.nv-stars { margin: 0 0 .75rem; }
.nv-entry .nv-testimonial p.nv-testimonial__author { display: flex; align-items: center; gap: .6rem; margin-top: auto; padding-top: .5rem; font-size: .95rem; }

/* Questions fréquentes */
.nv-entry .wp-block-details { border-radius: 1.25rem; padding-inline: 1.5rem; }
.nv-section--muted .wp-block-details { background: hsl(var(--background)); border-color: transparent; }

/* Blog */
.nv-post-card__media { border-radius: 1.5rem; box-shadow: 0 30px 55px -38px hsl(var(--foreground) / .55); }
.nv-post-card__media img { transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.nv-post-card__date { display: inline-flex; align-self: flex-start; padding: .2rem .7rem; border-radius: 9999px; background: hsl(var(--primary) / .13); color: hsl(var(--foreground)); font-size: .8rem; font-weight: 700; }
.nv-post-card__title { letter-spacing: .01em; line-height: 1.35; }
.nv-article__title { font-size: clamp(2.25rem, 5.5vw, 4.25rem); line-height: 1.02; font-weight: 800; letter-spacing: -.01em; text-wrap: balance; }
.nv-article__media { border-radius: 1.75rem; }

@media (prefers-reduced-motion: reduce) {
	.nv-slide__img, .nv-slide.is-active .nv-slide__img { transform: none; transition: none; }
	.nv-slider__progress { display: none; }
	.nv-confirm__icon circle, .nv-confirm__icon path { animation: none; stroke-dashoffset: 0; }
	.nv-hero__img, .nv-hero__content > * { animation: none; }
	.nv-btn:hover, .nv-entry .wp-block-button__link:hover { transform: none; }
}
