/* ==========================================================================
   Variables — Charte graphique Morgane DEL MEDICO
   ========================================================================== */

:root {
	--color-sage: #A8B8A5;
	--color-sage-dark: #7F927C;
	--color-sage-title: #6E816C;
	--color-sage-action: #546551;
	--color-sage-action-hover: #485945;
	--color-linen: #EDE7DF;
	--color-light-gray: #D9D9D9;
	--color-text: #4A4A4A;
	--color-sand: #DCCDBF;
	--color-offwhite: #FAF8F5;

	--font-heading: "Playfair Display", Georgia, serif;
	--font-body: "Lato", Arial, sans-serif;

	--container-max: 1340px;
	--text-max: 43.75rem;
	--section-spacing: 4rem;
	--header-height: 78px;
	--header-height-scrolled: 72px;
	--header-transition: 300ms ease;
	--admin-bar-height: 0px;

	--radius-sm: 12px;
	--radius-md: 20px;
	--radius-lg: 28px;
	--radius-xl: 40px;
	--radius-organic: 60% 40% 55% 45% / 45% 55% 45% 55%;
	--radius-btn: 999px;

	/* Boutons — tokens VISUEL-001 */
	--btn-font-family: var(--font-body);
	--btn-font-size: 1rem;
	--btn-font-weight: 400;
	--btn-line-height: 1.2;
	--btn-letter-spacing: 0.02em;
	--btn-min-height: 3rem;
	--btn-padding-y: 0.75rem;
	--btn-padding-x: 1.75rem;
	--btn-radius: 2rem;
	--btn-border-width: 1.5px;
	--btn-primary-bg: var(--color-sage-action);
	--btn-primary-color: var(--color-offwhite);
	--btn-primary-border: var(--color-sage-action);
	--btn-primary-shadow: 0 4px 18px rgba(127, 146, 124, 0.22);
	--btn-primary-hover-bg: var(--color-sage-action-hover);
	--btn-primary-hover-border: var(--color-sage-action-hover);
	--btn-primary-hover-shadow: 0 6px 24px rgba(127, 146, 124, 0.28);
	--btn-secondary-bg: transparent;
	--btn-secondary-color: var(--color-sage-action);
	--btn-secondary-border: var(--color-sage-action);
	--btn-secondary-shadow: 0 2px 10px rgba(127, 146, 124, 0.06);
	--btn-secondary-hover-bg: var(--color-sage-action);
	--btn-secondary-hover-color: var(--color-offwhite);
	--btn-secondary-hover-border: var(--color-sage-action);
	--btn-secondary-hover-shadow: 0 6px 22px rgba(127, 146, 124, 0.22);
	--btn-hover-transform: translateY(-1px);
	--btn-focus-outline: 2px solid var(--color-text);
	--btn-focus-outline-offset: 3px;
	--btn-disabled-opacity: 0.55;
	--btn-header-font-size: 0.9375rem;
	--btn-header-padding-y: 0.625rem;
	--btn-header-padding-x: 1.375rem;

	/* Formulaires — tokens VISUEL-002 */
	--form-msg-font-size: 0.9375rem;
	--form-msg-line-height: 1.55;
	--form-msg-padding: 0.875rem 1.125rem;
	--form-msg-radius: var(--radius-sm);
	--form-msg-margin-top: 1.25rem;
	--form-error-text: #8b5a52;
	--form-error-bg: rgba(237, 220, 220, 0.48);
	--form-error-border: rgba(139, 90, 82, 0.22);
	--form-success-text: #4a5f47;
	--form-success-bg: rgba(168, 184, 165, 0.2);
	--form-success-border: rgba(127, 146, 124, 0.28);
	--form-info-text: var(--color-sage-action);
	--form-info-bg: rgba(168, 184, 165, 0.12);
	--form-info-border: rgba(127, 146, 124, 0.18);
	--form-warning-text: #7a6a4a;
	--form-warning-bg: rgba(237, 231, 223, 0.65);
	--form-warning-border: rgba(220, 205, 191, 0.55);
	--form-field-error-size: 0.8125rem;
	--form-field-error-line: 1.5;
	--form-field-error-color: var(--form-error-text);
	--form-field-error-margin: 0.375rem 0 0;
	--form-field-invalid-border: rgba(139, 90, 82, 0.38);
	--form-field-invalid-bg: rgba(237, 231, 223, 0.4);
	--form-field-invalid-focus-border: rgba(139, 90, 82, 0.48);
	--form-field-invalid-focus-shadow: 0 0 0 3px rgba(237, 220, 220, 0.35);
	--form-field-border: #6e816c;
	--form-hint-color: rgba(74, 74, 74, 0.72);

	--shadow-soft: 0 2px 24px rgba(74, 74, 74, 0.04);
	--shadow-card: 0 8px 48px rgba(74, 74, 74, 0.06);
	--shadow-card-hover: 0 16px 56px rgba(127, 146, 124, 0.1);
	--shadow-header: 0 1px 20px rgba(74, 74, 74, 0.03);
	--shadow-photo: 0 24px 64px rgba(127, 146, 124, 0.12);

	--transition: 250ms ease;
	--deco-opacity: 0.08;

	--svg-leaf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 280' fill='none'%3E%3Cpath d='M80 8 C72 90 88 170 78 272' stroke='%237F927C' stroke-width='1.8'/%3E%3Cellipse cx='58' cy='55' rx='32' ry='13' transform='rotate(-32 58 55)' fill='%237F927C'/%3E%3Cellipse cx='92' cy='105' rx='36' ry='14' transform='rotate(-12 92 105)' fill='%237F927C'/%3E%3Cellipse cx='62' cy='155' rx='34' ry='13' transform='rotate(-38 62 155)' fill='%237F927C'/%3E%3Cellipse cx='88' cy='210' rx='30' ry='12' transform='rotate(-18 88 210)' fill='%237F927C'/%3E%3C/svg%3E");
	--svg-branch: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 120' fill='none'%3E%3Cpath d='M10 80 Q80 20 160 60 Q200 80 230 40' stroke='%237F927C' stroke-width='1.5'/%3E%3Cellipse cx='70' cy='48' rx='18' ry='8' transform='rotate(-20 70 48)' fill='%237F927C'/%3E%3Cellipse cx='130' cy='52' rx='20' ry='9' transform='rotate(10 130 52)' fill='%237F927C'/%3E%3Cellipse cx='185' cy='38' rx='16' ry='7' transform='rotate(25 185 38)' fill='%237F927C'/%3E%3C/svg%3E");
	--svg-circle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Ccircle cx='100' cy='100' r='90' fill='none' stroke='%237F927C' stroke-width='1.2'/%3E%3C/svg%3E");
	--svg-grain: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.35'/%3E%3C/svg%3E");

	--mdm-title-bar-width: 2.5px;
	--mdm-title-bar-height: clamp(3.25rem, 4.5vw, 4.375rem);
	--mdm-title-bar-height-lg: clamp(3.5rem, 5.5vw, 4.625rem);
	--mdm-title-bar-gap: clamp(1rem, 2vw, 1.375rem);
	--mdm-title-bar-radius: 3px;
}

/* ==========================================================================
   Trait vertical — titres principaux (pages publiques)
   ========================================================================== */

.mdm-section-title {
	display: flex;
	align-items: center;
	gap: var(--mdm-title-bar-gap);
}

.mdm-section-title::before {
	content: "";
	flex-shrink: 0;
	align-self: center;
	width: var(--mdm-title-bar-width);
	height: var(--mdm-title-bar-height);
	background-color: var(--color-sage-dark);
	border-radius: var(--mdm-title-bar-radius);
}

.mdm-section-title--lg::before {
	height: var(--mdm-title-bar-height-lg);
}

.mdm-section-title--center {
	width: fit-content;
	max-width: 100%;
	margin-inline: auto;
	justify-content: center;
}

body:not(.mdm-gc-body) .site-main .section__title,
body:not(.mdm-gc-body) .site-main .section-hero__title,
body:not(.mdm-gc-body) .site-main .eap-section__title,
body:not(.mdm-gc-body) .site-main .eap-cta__title,
body:not(.mdm-gc-body) .site-main .scn-hero__kicker,
body:not(.mdm-gc-body) .site-main .scn-section-head__title,
body:not(.mdm-gc-body) .site-main .booking-hero__title,
body:not(.mdm-gc-body) .site-main .page-shell__title,
body:not(.mdm-gc-body) .site-main .espace-auth__title,
body:not(.mdm-gc-body) .site-main .entry-title {
	display: flex;
	align-items: center;
	gap: var(--mdm-title-bar-gap);
}

body:not(.mdm-gc-body) .site-main .section__title::before,
body:not(.mdm-gc-body) .site-main .section-hero__title::before,
body:not(.mdm-gc-body) .site-main .eap-section__title::before,
body:not(.mdm-gc-body) .site-main .eap-cta__title::before,
body:not(.mdm-gc-body) .site-main .scn-hero__kicker::before,
body:not(.mdm-gc-body) .site-main .scn-section-head__title::before,
body:not(.mdm-gc-body) .site-main .booking-hero__title::before,
body:not(.mdm-gc-body) .site-main .page-shell__title::before,
body:not(.mdm-gc-body) .site-main .espace-auth__title::before,
body:not(.mdm-gc-body) .site-main .entry-title::before {
	content: "";
	flex-shrink: 0;
	align-self: center;
	width: var(--mdm-title-bar-width);
	height: var(--mdm-title-bar-height);
	background-color: var(--color-sage-dark);
	border-radius: var(--mdm-title-bar-radius);
}

body:not(.mdm-gc-body) .site-main .section-hero__title::before,
body:not(.mdm-gc-body) .site-main .eap-section__title--h1::before,
body:not(.mdm-gc-body) .site-main .scn-hero__kicker::before,
body:not(.mdm-gc-body) .site-main .booking-hero__title::before,
body:not(.mdm-gc-body) .site-main .page-shell__title::before,
body:not(.mdm-gc-body) .site-main .entry-title::before {
	height: var(--mdm-title-bar-height-lg);
}

body:not(.mdm-gc-body) .home-contact-teaser .section__title,
body:not(.mdm-gc-body) .scn-section-head--center .scn-section-head__title,
body:not(.mdm-gc-body) .scn-hero__editorial .scn-hero__kicker,
body:not(.mdm-gc-body) .eap-cta__title {
	width: fit-content;
	max-width: 100%;
	margin-inline: auto;
	justify-content: center;
}

body:not(.mdm-gc-body) .espace-shell--auth .espace-auth__title {
	display: block;
	width: auto;
	max-width: none;
	margin-inline: 0;
	justify-content: flex-start;
	text-align: left;
}

body:not(.mdm-gc-body) .espace-shell--auth .espace-auth__title::before {
	display: none;
}

body:not(.mdm-gc-body) .site-main .section__title::after,
body:not(.mdm-gc-body) .site-main .section-hero__title::after,
body:not(.mdm-gc-body) .site-main .eap-section__title::after,
body:not(.mdm-gc-body) .site-main .booking-hero__title::after,
body:not(.mdm-gc-body) .site-main .page-shell__title::after,
body:not(.mdm-gc-body) .site-main .about-grid__content .section__title::after,
body:not(.mdm-gc-body) .site-main .section__header--left .section__title::after,
body:not(.mdm-gc-body) .site-main .seances-layout__aside .section__title::after,
body:not(.mdm-gc-body) .site-main .pourquoi-layout__header .section__title::after,
body:not(.mdm-gc-body) .site-main .disponibilites-layout__header .section__title::after {
	content: none;
	display: none;
}

@media (max-width: 640px) {
	:root {
		--mdm-title-bar-height: clamp(2.75rem, 7vw, 3.25rem);
		--mdm-title-bar-height-lg: clamp(3rem, 8vw, 3.5rem);
	}
}

/* Exceptions locales — sans trait vertical */
body:not(.mdm-gc-body) .eap-section--cta .eap-cta__title {
	display: block;
	width: auto;
	max-width: none;
	margin-inline: 0;
}

body:not(.mdm-gc-body) .eap-section--cta .eap-cta__title::before {
	content: none;
	display: none;
}

/* ==========================================================================
   Reset & base
   ========================================================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	font-family: var(--font-body);
	font-size: 1.0625rem;
	line-height: 1.75;
	color: var(--color-text);
	background-color: var(--color-linen);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

img {
	max-width: 100%;
	height: auto;
	display: block;
}

a {
	color: var(--color-sage-action);
	text-decoration: none;
	transition: color var(--transition);
}

a:hover,
a:focus {
	color: var(--color-sage-action);
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--font-heading);
	font-weight: 400;
	line-height: 1.2;
	color: var(--color-text);
}

/* ==========================================================================
   Direction artistique — Décorations & textures
   ========================================================================== */

.deco {
	position: absolute;
	pointer-events: none;
	user-select: none;
	z-index: 0;
	background-repeat: no-repeat;
	background-size: contain;
	opacity: var(--deco-opacity);
}

.deco--hero-leaf {
	width: clamp(140px, 18vw, 220px);
	height: clamp(240px, 30vw, 380px);
	background-image: var(--svg-leaf);
}

.deco--hero-branch {
	width: clamp(200px, 28vw, 340px);
	height: clamp(100px, 14vw, 170px);
	background-image: var(--svg-branch);
}

.deco--hero-circle {
	width: clamp(180px, 22vw, 280px);
	height: clamp(180px, 22vw, 280px);
	background-image: var(--svg-circle);
	border-radius: 50%;
}

.deco--pos-top-right {
	top: -40px;
	right: -80px;
	transform: rotate(15deg);
}

.deco--pos-bottom-left {
	bottom: -60px;
	left: -100px;
	transform: rotate(-8deg);
}

.deco--pos-photo {
	bottom: -12%;
	left: -18%;
	z-index: 0;
	transform: rotate(-25deg) scale(1.1);
}

.section-texture::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--svg-grain);
	background-size: 180px 180px;
	opacity: 0.035;
	pointer-events: none;
	z-index: 0;
}

.section-texture > .container {
	position: relative;
	z-index: 1;
}

.section-deco::after {
	content: "";
	position: absolute;
	pointer-events: none;
	z-index: 0;
	background-repeat: no-repeat;
	background-size: contain;
	opacity: var(--deco-opacity);
}

/* Animations d'entrée
   -------------------------------------------------------------------------- */

@keyframes fade-up {
	from {
		opacity: 0;
		transform: translateY(20px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.anim-fade-up {
	animation: fade-up 0.9s ease forwards;
}

.anim-delay-2 {
	animation-delay: 0.15s;
	opacity: 0;
}

@media (prefers-reduced-motion: reduce) {
	.anim-fade-up,
	.anim-delay-2 {
		animation: none;
		opacity: 1;
		transform: none;
	}
}

/* Micro-détails
   -------------------------------------------------------------------------- */

.title-accent {
	display: block;
	width: 1px;
	height: 3rem;
	background: linear-gradient(to bottom, var(--color-sage-dark), transparent);
	margin-bottom: 1.5rem;
	opacity: 0.5;
}

.card__title::before {
	content: "";
	display: inline-block;
	width: 20px;
	height: 1px;
	background-color: var(--color-sage-dark);
	margin-right: 0.625rem;
	vertical-align: middle;
	opacity: 0.6;
}

/* ==========================================================================
   Layout
   ========================================================================== */

.container {
	width: 100%;
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 4vw, 2.5rem);
}

.content-section {
	padding-block: var(--section-spacing);
}

.content-section--empty {
	text-align: center;
}

.site-main {
	padding-top: var(--header-height);
}

/* Barre d’admin WordPress — évite que le header soit masqué en haut */
body.admin-bar {
	--admin-bar-height: 32px;
}

@media screen and (max-width: 782px) {
	body.admin-bar {
		--admin-bar-height: 46px;
	}
}

/* ==========================================================================
   Header — Premium cabinet
   ========================================================================== */

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.site-header {
	position: fixed;
	top: var(--admin-bar-height);
	left: 0;
	right: 0;
	width: 100%;
	z-index: 200;
	display: flex;
	justify-content: center;
	align-items: stretch;
	height: var(--header-height);
	margin: 0;
	padding: 0;
	transform: none;
	box-sizing: border-box;
	background-color: rgba(250, 248, 245, 0.8);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	border-bottom: 1px solid rgba(127, 146, 124, 0.12);
	box-shadow: 0 1px 16px rgba(74, 74, 74, 0.04);
	overflow: visible;
	transition:
		height var(--header-transition),
		background-color var(--header-transition),
		box-shadow var(--header-transition),
		border-color var(--header-transition);
}

.site-header.is-scrolled {
	height: var(--header-height-scrolled);
	background-color: rgba(250, 248, 245, 0.94);
	border-bottom-color: rgba(127, 146, 124, 0.16);
	box-shadow: 0 4px 28px rgba(74, 74, 74, 0.07);
}

.site-header__container {
	width: min(var(--container-max), calc(100% - 3rem));
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 4vw, 2.5rem);
	height: 100%;
	box-sizing: border-box;
}

.site-header__inner {
	display: grid;
	grid-template-columns: minmax(0, auto) 1fr minmax(0, auto);
	align-items: center;
	gap: clamp(1rem, 2.5vw, 2.5rem);
	width: 100%;
	height: 100%;
	margin: 0;
	padding-top: 0.6875rem;
	padding-bottom: 1.0625rem;
	box-sizing: border-box;
}

.site-header.is-scrolled .site-header__inner {
	padding-top: 0.5rem;
	padding-bottom: 0.875rem;
}

.site-branding {
	display: flex;
	align-items: center;
	align-self: center;
	min-width: 0;
	height: auto;
}

.site-branding__link {
	display: inline-flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.125rem;
	text-decoration: none;
	color: inherit;
	line-height: 1.3;
	transition: opacity var(--header-transition);
}

.site-branding__link:hover,
.site-branding__link:focus {
	text-decoration: none;
	color: inherit;
	opacity: 0.88;
}

.site-branding__link:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 4px;
	border-radius: 4px;
}

.site-branding__logo .custom-logo-link {
	display: inline-block;
	line-height: 0;
}

.site-branding__logo .custom-logo {
	max-height: 2.5rem;
	width: auto;
}

.site-branding__name {
	font-family: var(--font-heading);
	font-size: clamp(1rem, 1.6vw, 1.1875rem);
	line-height: 1.25;
	color: var(--color-text);
	letter-spacing: 0.01em;
	transition: font-size var(--header-transition);
}

.site-header.is-scrolled .site-branding__name {
	font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
}

.site-branding__tagline {
	font-family: var(--font-body);
	font-size: 0.6875rem;
	font-weight: 400;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--color-sage-action);
	opacity: 1;
	line-height: 1.35;
	transition: font-size var(--header-transition), opacity var(--header-transition);
}

.site-header.is-scrolled .site-branding__tagline {
	font-size: 0.625rem;
	opacity: 1;
}

.site-header__toggle {
	display: none;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid rgba(127, 146, 124, 0.18);
	border-radius: 50%;
	background: rgba(250, 248, 245, 0.65);
	color: var(--color-sage-dark);
	cursor: pointer;
	justify-self: end;
	transition:
		background-color var(--header-transition),
		border-color var(--header-transition),
		box-shadow var(--header-transition);
}

.site-header__toggle:hover {
	background: rgba(168, 184, 165, 0.18);
	border-color: rgba(127, 146, 124, 0.28);
}

.site-header__toggle:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 3px;
}

.site-header__toggle-box {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 5px;
	width: 1.125rem;
	height: 1.125rem;
}

.site-header__toggle-line {
	display: block;
	width: 100%;
	height: 1.5px;
	background-color: var(--color-sage-dark);
	border-radius: 1px;
	transition:
		transform var(--header-transition),
		opacity var(--header-transition),
		width var(--header-transition);
	transform-origin: center;
}

.site-header.is-nav-open .site-header__toggle-line:nth-child(1) {
	transform: translateY(6.5px) rotate(45deg);
}

.site-header.is-nav-open .site-header__toggle-line:nth-child(2) {
	opacity: 0;
	width: 0;
}

.site-header.is-nav-open .site-header__toggle-line:nth-child(3) {
	transform: translateY(-6.5px) rotate(-45deg);
}

.site-header__panel {
	display: flex;
	align-items: center;
	justify-content: center;
	align-self: center;
	min-width: 0;
	height: auto;
}

.site-nav {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	height: auto;
}

.site-nav__list {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: center;
	gap: clamp(1rem, 2vw, 2rem);
	list-style: none;
	margin: 0;
	padding: 0;
}

.site-nav__list li {
	margin: 0;
}

.site-nav__list a {
	position: relative;
	display: inline-flex;
	align-items: center;
	padding-block: 0;
	font-size: 0.875rem;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0.03em;
	color: var(--color-text);
	text-decoration: none;
	white-space: nowrap;
	transition: color var(--header-transition);
}

.site-nav__list a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 0;
	height: 2px;
	background-color: var(--color-sage-dark);
	border-radius: 1px;
	transition: width var(--header-transition);
}

.site-nav__list a:hover,
.site-nav__list a:focus {
	color: #3a3a3a;
	text-decoration: none;
}

.site-nav__list a:hover::after,
.site-nav__list a:focus-visible::after,
.site-nav__list a.is-active::after,
.site-nav__list .current-menu-item > a::after {
	width: 100%;
}

.site-nav__list a.is-active,
.site-nav__list .current-menu-item > a {
	color: var(--color-sage-action);
	font-weight: 500;
}

.site-nav__list a:focus-visible {
	outline: none;
}

.site-header__cta {
	display: flex;
	align-items: center;
	align-self: center;
	flex-shrink: 0;
	height: auto;
}

.site-header__actions {
	display: flex;
	align-items: center;
	align-self: center;
	gap: clamp(0.875rem, 1.5vw, 1.25rem);
	flex-shrink: 0;
	height: auto;
}

.site-header__account {
	font-size: 0.8125rem;
	font-weight: 400;
	letter-spacing: 0.03em;
	color: var(--color-sage-action);
	text-decoration: none;
	white-space: nowrap;
	opacity: 0.88;
	transition: color var(--header-transition), opacity var(--header-transition);
}

.site-header__account:hover,
.site-header__account:focus {
	color: var(--color-text);
	text-decoration: none;
	opacity: 1;
}

.site-header__account:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 3px;
	border-radius: 4px;
}

.site-header__account--mobile {
	display: none;
}

.site-header__panel-actions {
	display: none;
}

.site-header__cta-btn {
	margin: 0;
	padding: var(--btn-header-padding-y) var(--btn-header-padding-x);
	min-height: auto;
	font-size: var(--btn-header-font-size);
	letter-spacing: var(--btn-letter-spacing);
	white-space: nowrap;
	flex-shrink: 0;
}

.site-header__cta--mobile {
	display: none;
}

@media (max-width: 1100px) {
	.site-nav__list {
		gap: clamp(0.75rem, 1.5vw, 1.25rem);
	}

	.site-nav__list a {
		font-size: 0.8125rem;
		letter-spacing: 0.02em;
	}

	.site-header__cta-btn {
		padding: 0.5625rem 1.125rem;
		font-size: 0.875rem;
	}
}

@media (max-width: 960px) {
	.site-header.is-nav-open {
		height: auto;
		align-items: stretch;
		background-color: rgba(250, 248, 245, 0.97);
		box-shadow: 0 8px 32px rgba(74, 74, 74, 0.08);
	}

	.site-header__inner {
		grid-template-columns: minmax(0, 1fr) auto;
		grid-template-areas:
			"brand toggle"
			"panel panel";
		grid-template-rows: 1fr auto;
		align-items: center;
		gap: 0;
		height: 100%;
		padding-top: 0.625rem;
		padding-bottom: 0.9375rem;
	}

	.site-header.is-scrolled .site-header__inner {
		padding-top: 0.4375rem;
		padding-bottom: 0.8125rem;
	}

	.site-branding {
		grid-area: brand;
		height: auto;
	}

	.site-header__toggle {
		display: inline-flex;
		grid-area: toggle;
		align-self: center;
		margin: 0;
	}

	.site-header__panel {
		grid-area: panel;
		display: block;
		height: auto;
		align-self: stretch;
		max-height: 0;
		overflow: hidden;
		opacity: 0;
		visibility: hidden;
		transition:
			max-height var(--header-transition),
			opacity var(--header-transition),
			visibility var(--header-transition);
	}

	.site-header.is-nav-open .site-header__panel {
		max-height: 85vh;
		opacity: 1;
		visibility: visible;
	}

	.site-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: 0.5rem 0 1rem;
		border-top: 1px solid rgba(127, 146, 124, 0.1);
	}

	.site-nav__list a {
		display: block;
		padding: 0.875rem 0;
		font-size: 0.9375rem;
		white-space: normal;
		border-bottom: 1px solid rgba(127, 146, 124, 0.08);
	}

	.site-nav__list li:last-child a {
		border-bottom: none;
	}

	.site-nav__list a::after {
		bottom: 0.65rem;
		height: 1.5px;
	}

	.site-header__cta--desktop {
		display: none;
	}

	.site-header__actions--desktop {
		display: none;
	}

	.site-header__account--mobile {
		display: inline-block;
	}

	.site-header__panel-actions {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 0.875rem;
		padding-bottom: 1.25rem;
	}

	.site-header__panel-actions .site-header__account {
		text-align: center;
		padding: 0.5rem 0;
	}

	.site-header__cta--mobile {
		display: block;
		padding-bottom: 1.25rem;
	}

	.site-header__cta--mobile .site-header__cta-btn {
		width: 100%;
		max-width: none;
		text-align: center;
	}
}

@media (prefers-reduced-motion: reduce) {
	.site-header,
	.site-header__inner,
	.site-header__toggle-line,
	.site-header__panel,
	.site-branding__name,
	.site-branding__tagline,
	.site-nav__list a,
	.site-nav__list a::after {
		transition: none;
	}
}

body.is-nav-open {
	overflow: hidden;
}

/* ==========================================================================
   Pages intérieures
   ========================================================================== */

.page-section {
	padding-block: clamp(3.5rem, 8vw, 5.5rem);
	min-height: calc(100vh - var(--header-height));
}

.page-shell {
	max-width: var(--text-max);
}

.page-shell--wide {
	max-width: 52rem;
}

.page-shell__header {
	margin-bottom: 2rem;
}

.page-shell__title {
	font-size: clamp(2rem, 4.5vw, 2.75rem);
	margin-bottom: 1.25rem;
	line-height: 1.15;
}

.page-shell__intro {
	font-size: 1.125rem;
	line-height: 1.85;
	color: var(--color-text);
	max-width: 38rem;
}

.page-shell__actions {
	margin-top: 2.5rem;
}

.page-disponibilites__calendar {
	margin-top: 2.5rem;
}

.calendar-preview--page-wide {
	max-width: none;
}

.encart--coming-soon {
	text-align: center;
	padding: 2.5rem 2rem;
}

.encart__badge {
	display: inline-block;
	margin: 0;
	padding: 0.625rem 1.25rem;
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-sage-action);
	background: rgba(168, 184, 165, 0.18);
	border: 1px solid rgba(127, 146, 124, 0.2);
	border-radius: var(--radius-btn);
}

.booking-form-preview {
	margin-top: 2.5rem;
	padding: clamp(2rem, 4vw, 2.75rem);
	background: rgba(250, 248, 245, 0.78);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-soft);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
}

.booking-form-preview__note {
	margin: 0 0 1.75rem;
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--color-sage-action);
	opacity: 0.85;
}

.booking-form-preview__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.25rem;
}

.booking-form-preview__field {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.booking-form-preview__field--full {
	grid-column: 1 / -1;
}

.booking-form-preview__field label {
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--color-text);
}

.booking-form-preview__field input,
.booking-form-preview__field textarea {
	width: 100%;
	padding: 0.75rem 1rem;
	font-family: inherit;
	font-size: 0.9375rem;
	color: var(--color-text);
	background: rgba(255, 255, 255, 0.45);
	border: 1px solid rgba(127, 146, 124, 0.18);
	border-radius: var(--radius-sm);
	opacity: 0.72;
	cursor: not-allowed;
}

.booking-form-preview__field textarea {
	resize: vertical;
	min-height: 7rem;
}

@media (max-width: 768px) {
	.booking-form-preview__grid {
		grid-template-columns: 1fr;
	}

	.page-shell__actions .btn {
		width: 100%;
		max-width: none;
		text-align: center;
	}
}

/* Mon accompagnement — page premium
   -------------------------------------------------------------------------- */

.accomp-page {
	overflow-x: clip;
}

.accomp-page [id] {
	scroll-margin-top: calc(var(--header-height) + var(--admin-bar-height));
}

.accomp-hero {
	position: relative;
	padding-block: clamp(4rem, 10vw, 6.5rem);
	overflow: hidden;
}

.accomp-hero__deco {
	position: absolute;
	inset: 0;
	pointer-events: none;
	overflow: hidden;
}

.accomp-hero__leaf--1 {
	top: -8%;
	right: -6%;
	width: clamp(14rem, 28vw, 22rem);
	opacity: 0.35;
	transform: rotate(-18deg);
}

.accomp-hero__orb {
	top: 18%;
	left: -4%;
	width: clamp(10rem, 18vw, 16rem);
	opacity: 0.45;
}

.accomp-hero__inner {
	position: relative;
	z-index: 1;
	max-width: 42rem;
}

.accomp-hero__title {
	margin: 0 0 1.25rem;
	font-family: var(--font-heading);
	font-size: clamp(2.25rem, 5vw, 3.25rem);
	font-weight: 400;
	line-height: 1.12;
	color: var(--color-text);
}

.accomp-hero__title::after {
	content: "";
	display: block;
	width: 52px;
	height: 2px;
	margin-top: 1.25rem;
	background-color: var(--color-sage-dark);
	border-radius: 2px;
}

.accomp-hero__intro {
	margin: 0 0 2rem;
	max-width: 36rem;
	font-size: clamp(1.0625rem, 2vw, 1.1875rem);
	line-height: 1.85;
	color: var(--color-text);
	opacity: 0.92;
}

.accomp-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
}

.accomp-intro {
	padding-block: clamp(3rem, 7vw, 4.5rem);
}

.accomp-intro__inner {
	max-width: 40rem;
	margin-inline: auto;
	text-align: center;
}

.accomp-intro__text {
	margin: 0;
	font-size: clamp(1.125rem, 2.2vw, 1.3125rem);
	line-height: 1.9;
	color: var(--color-text);
	opacity: 0.9;
}

.accomp-section__header {
	margin-bottom: clamp(2rem, 4vw, 3rem);
}

.accomp-section__header--center {
	text-align: center;
}

.accomp-section__header--center .accomp-section__lead {
	margin-inline: auto;
}

.accomp-section__title {
	margin: 0 0 1rem;
	font-family: var(--font-heading);
	font-size: clamp(1.75rem, 3.5vw, 2.25rem);
	font-weight: 400;
	line-height: 1.2;
	color: var(--color-text);
}

.accomp-section__title::after {
	content: "";
	display: block;
	width: 44px;
	height: 2px;
	margin-top: 1rem;
	background-color: var(--color-sage-dark);
	border-radius: 2px;
}

.accomp-section__header--center .accomp-section__title::after {
	margin-inline: auto;
}

.accomp-section__lead {
	margin: 0;
	max-width: 34rem;
	font-size: 1.0625rem;
	line-height: 1.8;
	color: var(--color-text);
	opacity: 0.85;
}

.accomp-audience {
	padding-block: clamp(3.5rem, 8vw, 5.5rem);
}

.accomp-audience__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
	grid-template-areas:
		"enfants ados"
		"enfants parents";
	gap: clamp(1rem, 2vw, 1.5rem);
	align-items: stretch;
}

.accomp-card {
	padding: clamp(1.75rem, 3.5vw, 2.5rem);
	background: rgba(252, 250, 247, 0.92);
	border: 1px solid rgba(127, 146, 124, 0.12);
	border-radius: var(--radius-lg);
	box-shadow: 0 10px 36px rgba(74, 74, 74, 0.04);
	transition:
		border-color var(--transition),
		box-shadow var(--transition),
		transform var(--transition);
}

.accomp-card:hover {
	border-color: rgba(127, 146, 124, 0.24);
	box-shadow: 0 14px 42px rgba(74, 74, 74, 0.06);
	transform: translateY(-3px);
}

.accomp-card--enfants {
	grid-area: enfants;
}

.accomp-card--ados {
	grid-area: ados;
}

.accomp-card--parents {
	grid-area: parents;
}

.accomp-card__title {
	margin: 0 0 1rem;
	font-family: var(--font-heading);
	font-size: clamp(1.25rem, 2.5vw, 1.5rem);
	font-weight: 400;
	line-height: 1.25;
	color: var(--color-sage-action);
}

.accomp-card__text {
	margin: 0;
	font-size: 1.0625rem;
	line-height: 1.8;
	color: var(--color-text);
	opacity: 0.9;
}

.accomp-steps {
	padding-block: clamp(3.5rem, 8vw, 5.5rem);
}

.accomp-steps__timeline {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: clamp(0.875rem, 2vw, 1.25rem);
	counter-reset: accomp-step;
}

.accomp-steps__item {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 1rem;
	padding: clamp(1.5rem, 3vw, 2rem);
	background: rgba(252, 250, 247, 0.88);
	border: 1px solid rgba(127, 146, 124, 0.12);
	border-radius: var(--radius-lg);
	box-shadow: 0 8px 28px rgba(74, 74, 74, 0.04);
}

.accomp-steps__number {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	font-family: var(--font-heading);
	font-size: 1rem;
	color: var(--color-sage-action);
	background: rgba(168, 184, 165, 0.2);
	border: 1px solid rgba(127, 146, 124, 0.2);
	border-radius: 50%;
}

.accomp-steps__label {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--color-text);
}

.accomp-approach {
	padding-block: clamp(3.5rem, 8vw, 5rem);
}

.accomp-approach__inner {
	max-width: 40rem;
	margin-inline: auto;
	text-align: center;
}

.accomp-approach__inner .accomp-section__title::after {
	margin-inline: auto;
}

.accomp-approach__text {
	margin: 0;
	font-size: 1.125rem;
	line-height: 1.9;
	color: var(--color-text);
	opacity: 0.9;
}

.accomp-faq {
	padding-block: clamp(3.5rem, 8vw, 5rem);
}

.accomp-faq__list {
	max-width: 44rem;
	margin-inline: auto;
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
}

.accomp-faq__item {
	background: rgba(252, 250, 247, 0.94);
	border: 1px solid rgba(127, 146, 124, 0.12);
	border-radius: var(--radius-md);
	box-shadow: 0 6px 24px rgba(74, 74, 74, 0.035);
	overflow: hidden;
	transition: border-color var(--transition), box-shadow var(--transition);
}

.accomp-faq__item.is-open {
	border-color: rgba(127, 146, 124, 0.22);
	box-shadow: 0 10px 32px rgba(74, 74, 74, 0.05);
}

.accomp-faq__question {
	margin: 0;
}

.accomp-faq__trigger {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	width: 100%;
	padding: 1.125rem 1.375rem;
	border: 0;
	background: transparent;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 500;
	line-height: 1.45;
	text-align: left;
	color: var(--color-text);
	cursor: pointer;
	transition: color var(--transition);
}

.accomp-faq__trigger:hover,
.accomp-faq__trigger:focus-visible {
	color: var(--color-sage-action);
}

.accomp-faq__trigger:focus-visible {
	outline: none;
	box-shadow: inset 0 0 0 2px var(--color-text);
}

.accomp-faq__icon {
	position: relative;
	flex-shrink: 0;
	width: 1.125rem;
	height: 1.125rem;
}

.accomp-faq__icon::before,
.accomp-faq__icon::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	background: var(--color-sage-dark);
	border-radius: 1px;
	transition: transform var(--transition);
}

.accomp-faq__icon::before {
	width: 0.75rem;
	height: 2px;
	transform: translate(-50%, -50%);
}

.accomp-faq__icon::after {
	width: 2px;
	height: 0.75rem;
	transform: translate(-50%, -50%);
}

.accomp-faq__item.is-open .accomp-faq__icon::after {
	transform: translate(-50%, -50%) rotate(90deg);
	opacity: 0;
}

.accomp-faq__answer {
	padding: 0 1.375rem 1.25rem;
}

.accomp-faq__answer[hidden] {
	display: none;
}

.accomp-faq__answer p {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.8;
	color: var(--color-text);
	opacity: 0.88;
}

.accomp-cta {
	padding-block: clamp(3.5rem, 8vw, 5.5rem);
}

.accomp-cta__card {
	max-width: 40rem;
	margin-inline: auto;
	padding: clamp(2.25rem, 5vw, 3.25rem);
	text-align: center;
	background: rgba(252, 250, 247, 0.94);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-lg);
	box-shadow: 0 12px 40px rgba(74, 74, 74, 0.05);
}

.accomp-cta__title {
	margin: 0 0 1rem;
	font-family: var(--font-heading);
	font-size: clamp(1.5rem, 3vw, 1.875rem);
	font-weight: 400;
	line-height: 1.25;
	color: var(--color-text);
}

.accomp-cta__text {
	margin: 0 0 1.75rem;
	font-size: 1.0625rem;
	line-height: 1.8;
	color: var(--color-text);
	opacity: 0.88;
}

.accomp-cta__btn {
	min-width: 14rem;
}

@media (max-width: 1024px) {
	.accomp-audience__grid {
		grid-template-columns: 1fr;
		grid-template-areas:
			"enfants"
			"ados"
			"parents";
	}

	.accomp-steps__timeline {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 640px) {
	.accomp-hero__actions .btn {
		width: 100%;
	}

	.accomp-steps__timeline {
		grid-template-columns: 1fr;
	}

	.accomp-cta__btn {
		width: 100%;
		max-width: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.accomp-card,
	.accomp-faq__item,
	.accomp-faq__icon::before,
	.accomp-faq__icon::after {
		transition: none;
	}

	.accomp-card:hover {
		transform: none;
	}
}

/* Prendre rendez-vous — parcours premium
   -------------------------------------------------------------------------- */

.booking-page {
	overflow-x: clip;
}

.booking-hero {
	padding-block: clamp(3.5rem, 8vw, 5rem);
}

.booking-hero--compact {
	padding-block: clamp(2rem, 5vw, 3rem);
}

.booking-hero--compact .booking-hero__intro {
	max-width: 36rem;
	font-size: 1.0625rem;
	line-height: 1.75;
}

.booking-hero__header {
	max-width: 40rem;
}

.booking-hero__title {
	margin: 0 0 1rem;
	font-family: var(--font-heading);
	font-size: clamp(2rem, 4.5vw, 2.75rem);
	font-weight: 400;
	line-height: 1.15;
	color: var(--color-text);
}

.booking-hero__intro {
	margin: 0;
	font-size: 1.125rem;
	line-height: 1.85;
	color: var(--color-text);
	opacity: 0.9;
}

.booking-flow {
	padding-block: clamp(2.5rem, 6vw, 4rem) clamp(4rem, 9vw, 6rem);
}

.booking-flow > .container {
	max-width: min(var(--container-max), 52rem);
}

.booking-flow__steps,
.booking-flow__progress,
.booking-flow__panels {
	width: 100%;
}

.booking-flow__progress {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	margin: -0.5rem 0 clamp(1.75rem, 3.5vw, 2.5rem);
	padding: 0;
}

.booking-flow__progress-step {
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--color-sage-action);
	opacity: 1;
}

.booking-flow__progress-label {
	margin: 0;
	font-family: var(--font-heading);
	font-size: clamp(1.125rem, 2.2vw, 1.375rem);
	font-weight: 400;
	line-height: 1.35;
	color: var(--color-text);
}

.booking-flow__steps {
	display: flex;
	flex-wrap: wrap;
	gap: 0.625rem;
	margin: 0 0 1rem;
	padding: 0;
	list-style: none;
}

.booking-flow__step {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.625rem 1rem;
	background: rgba(252, 250, 247, 0.65);
	border: 1px solid rgba(127, 146, 124, 0.1);
	border-radius: var(--radius-btn);
	color: var(--color-text);
	opacity: 0.85;
	transition:
		border-color var(--transition),
		background-color var(--transition),
		opacity var(--transition);
}

.booking-flow__step.is-active {
	opacity: 1;
	background: rgba(168, 184, 165, 0.14);
	border-color: rgba(127, 146, 124, 0.24);
	box-shadow: none;
}

.booking-flow__step.is-complete {
	opacity: 0.82;
}

.booking-flow__step.is-complete .booking-flow__step-num {
	background: rgba(168, 184, 165, 0.28);
	border-color: rgba(127, 146, 124, 0.22);
	color: var(--color-sage-action);
}

.booking-flow__step-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	font-family: var(--font-heading);
	font-size: 0.875rem;
	color: var(--color-sage-action);
	background: rgba(168, 184, 165, 0.2);
	border: 1px solid rgba(127, 146, 124, 0.18);
	border-radius: 50%;
	flex-shrink: 0;
}

.booking-flow__step.is-active .booking-flow__step-num {
	background: var(--color-sage-action);
	border-color: var(--color-sage-action);
	color: #fff;
}

.booking-flow__step-label {
	font-size: 0.875rem;
	font-weight: 500;
	line-height: 1.35;
}

.booking-flow__panels {
	display: flex;
	flex-direction: column;
	gap: clamp(1.5rem, 3vw, 2.25rem);
}

.booking-panel {
	padding: clamp(1.5rem, 3vw, 2.25rem);
	background: rgba(252, 250, 247, 0.88);
	border: 1px solid rgba(127, 146, 124, 0.1);
	border-radius: var(--radius-lg);
	box-shadow: 0 8px 28px rgba(74, 74, 74, 0.035);
	transition:
		border-color var(--transition),
		box-shadow var(--transition);
}

.booking-panel.is-active {
	border-color: rgba(127, 146, 124, 0.18);
	box-shadow: 0 10px 32px rgba(74, 74, 74, 0.045);
}

.booking-panel[hidden] {
	display: none;
}

.booking-panel__header {
	margin-bottom: 1.5rem;
}

.booking-panel__title {
	margin: 0 0 0.625rem;
	font-family: var(--font-heading);
	font-size: clamp(1.25rem, 2.5vw, 1.5rem);
	font-weight: 400;
	line-height: 1.25;
	color: var(--color-text);
}

.booking-panel__lead {
	margin: 0;
	font-size: 1rem;
	line-height: 1.75;
	color: var(--color-text);
	opacity: 0.85;
}

.booking-panel__selected-date {
	font-weight: 500;
	color: var(--color-sage-action);
	opacity: 1;
}

.booking-panel__hint {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.7;
	color: var(--color-text);
	opacity: 0.85;
}

.booking-panel__hint--empty {
	padding: 1rem 1.125rem;
	background: var(--form-info-bg);
	border: 1px solid var(--form-info-border);
	border-radius: var(--radius-sm);
	color: var(--color-text);
	opacity: 1;
}

.booking-panel__body--calendar .calendar-preview {
	margin: 0;
	--calendar-day-size: clamp(2.15rem, 7vw, 2.75rem);
	--calendar-grid-gap: clamp(0.2rem, 1.2vw, 0.375rem);
}

.booking-panel__body--calendar .calendar-preview__nav {
	width: 2.75rem;
	height: 2.75rem;
}

.booking-panel__body--calendar .calendar-preview__legend {
	margin-top: 1.25rem;
	padding-top: 1rem;
	gap: 0.5rem 1.125rem;
}

.booking-panel__body--calendar .calendar-preview__legend-label {
	font-size: 0.6875rem;
}

.booking-choice-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem;
	margin-top: 0.5rem;
}

.booking-choice-grid--session,
.booking-choice-grid--inline {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.booking-choice-card {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 0.35rem;
	min-height: 4.75rem;
	padding: 1.125rem 1.375rem;
	font-family: var(--font-body);
	font-size: 1rem;
	font-weight: 500;
	line-height: 1.45;
	text-align: left;
	color: #4a4a4a;
	background: rgba(252, 250, 247, 0.92);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-md);
	cursor: pointer;
	transition:
		border-color var(--transition),
		background-color var(--transition),
		box-shadow var(--transition),
		transform var(--transition);
}

.booking-choice-card:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 2px;
}

.booking-choice-card:hover {
	border-color: rgba(127, 146, 124, 0.28);
	background: rgba(168, 184, 165, 0.1);
}

.booking-choice-card.is-selected,
.booking-choice-card[aria-pressed="true"] {
	border-color: rgba(127, 146, 124, 0.42);
	background: rgba(168, 184, 165, 0.2);
	box-shadow: 0 6px 18px rgba(127, 146, 124, 0.08);
}

.booking-choice-card.is-selected::after,
.booking-choice-card[aria-pressed="true"]::after {
	content: "";
	position: absolute;
	top: 0.75rem;
	right: 0.75rem;
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: var(--color-sage-dark);
	box-shadow: 0 0 0 3px rgba(168, 184, 165, 0.35);
}

.booking-choice-card__label {
	display: block;
}

.booking-choice-card__meta {
	display: block;
	font-size: 0.875rem;
	font-weight: 400;
	opacity: 0.78;
}

.booking-choice-card--compact {
	min-height: 3.75rem;
}

.booking-info-block {
	margin-top: 1.5rem;
	padding: 1.25rem 1.375rem;
	background: rgba(252, 250, 247, 0.88);
	border: 1px solid rgba(127, 146, 124, 0.12);
	border-radius: var(--radius-md);
	opacity: 0;
	transform: translateY(0.35rem);
	animation: booking-info-in 280ms ease forwards;
}

@keyframes booking-info-in {
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.booking-info-block {
		animation: none;
		opacity: 1;
		transform: none;
	}

	.booking-choice-card,
	.booking-slot-btn,
	.booking-flow__step,
	.calendar-preview__day,
	.calendar-preview__nav {
		transition: none;
	}

	button.calendar-preview__day--available:hover:not(.calendar-preview__day--selected),
	button.calendar-preview__day--limited:hover:not(.calendar-preview__day--selected) {
		transform: none;
	}
}

.booking-info-block__list {
	display: grid;
	gap: 0.875rem;
	margin: 0;
}

.booking-info-block__row {
	display: grid;
	grid-template-columns: minmax(8rem, 11rem) 1fr;
	gap: 0.75rem 1rem;
}

.booking-info-block__row dt {
	margin: 0;
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--color-sage-action);
}

.booking-info-block__row dd {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.65;
	color: #4a4a4a;
}

.booking-exchange {
	margin-top: 2rem;
	padding-top: 1.75rem;
	border-top: 1px solid rgba(127, 146, 124, 0.12);
}

.booking-exchange__title {
	margin: 0 0 1rem;
	font-family: var(--font-heading);
	font-size: 1.25rem;
	font-weight: 400;
	line-height: 1.35;
	color: #4a4a4a;
}

.booking-exchange-card {
	max-width: 36rem;
	margin-top: 1.25rem;
	padding: 1.5rem;
	background: rgba(252, 250, 247, 0.9);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-md);
}

.booking-exchange-card > .btn {
	display: flex;
	width: fit-content;
	max-width: 100%;
	margin-inline: auto;
	white-space: normal;
}

.booking-exchange-card__title {
	margin: 0 0 0.75rem;
	font-family: var(--font-heading);
	font-size: 1.125rem;
	font-weight: 400;
	color: #4a4a4a;
}

.booking-exchange-card__text {
	margin: 0 0 1.25rem;
	font-size: 0.975rem;
	line-height: 1.75;
	color: #4a4a4a;
	opacity: 0.9;
}

.booking-exchange__book {
	margin-top: 1.25rem;
}

.booking-exchange__book-title {
	margin: 0 0 1rem;
	font-family: var(--font-heading);
	font-size: 1.125rem;
	font-weight: 400;
	color: #4a4a4a;
}

.booking-schedule {
	display: grid;
	gap: clamp(1.25rem, 3vw, 1.75rem);
	padding-top: 0.25rem;
	border-top: 1px solid rgba(127, 146, 124, 0.1);
}

.booking-schedule__recap {
	margin: 0;
	padding: 0.875rem 1.125rem;
	background: var(--form-info-bg);
	border: 1px solid var(--form-info-border);
	border-radius: var(--radius-sm);
}

.booking-schedule__recap[hidden] {
	display: none;
}

.booking-schedule__recap-text {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.65;
	color: var(--color-text);
}

.booking-schedule .booking-panel {
	padding: 0;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
}

.booking-schedule .booking-panel.is-active {
	border: 0;
	box-shadow: none;
}

.booking-schedule .booking-panel--slot {
	padding-top: clamp(1.25rem, 2.5vw, 1.75rem);
	border-top: 1px solid rgba(127, 146, 124, 0.08);
}

.booking-schedule .booking-panel__header {
	margin-bottom: 1.125rem;
}

.booking-schedule .booking-panel__title {
	font-size: clamp(1.125rem, 2.2vw, 1.375rem);
}

.mdm-gc-rdv-qualification {
	display: grid;
	gap: 0.2rem;
	font-size: 0.8125rem;
	line-height: 1.45;
}

.mdm-gc-rdv-qualification__blocked {
	color: var(--color-sage-action);
	font-size: 0.75rem;
}

.booking-slots {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.75rem;
}

.booking-slot-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 3.125rem;
	padding: 0.8125rem 1rem;
	font-family: inherit;
	font-size: 1rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	color: var(--color-text);
	background: rgba(250, 248, 245, 0.9);
	border: 1px solid rgba(127, 146, 124, 0.16);
	border-radius: var(--radius-md);
	cursor: pointer;
	transition:
		border-color var(--transition),
		background-color var(--transition),
		box-shadow var(--transition),
		color var(--transition);
}

.booking-slot-btn:hover:not(:disabled) {
	border-color: rgba(127, 146, 124, 0.28);
	background: rgba(168, 184, 165, 0.12);
}

.booking-slot-btn:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 2px;
}

.booking-slot-btn:disabled {
	opacity: 0.45;
	cursor: not-allowed;
}

.booking-slot-btn--selected,
.booking-slot-btn[aria-pressed="true"] {
	color: #fff;
	background: var(--color-sage-action);
	border-color: var(--color-sage-action);
	box-shadow: 0 4px 16px rgba(127, 146, 124, 0.22);
}

.booking-slot-btn--selected:hover:not(:disabled),
.booking-slot-btn[aria-pressed="true"]:hover:not(:disabled) {
	color: var(--color-offwhite);
	background: var(--color-sage-action-hover);
	border-color: var(--color-sage-action-hover);
}

.booking-slot-btn--unavailable {
	opacity: 0.38;
	text-decoration: line-through;
	cursor: not-allowed;
	pointer-events: none;
}

.booking-auth-card {
	max-width: 38rem;
	margin-inline: auto;
	padding: clamp(1.75rem, 3vw, 2.25rem);
	text-align: center;
	background: rgba(255, 253, 250, 0.98);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-md);
	box-shadow: none;
}

.booking-auth-card__text {
	margin: 0 0 1.5rem;
	font-size: 1.0625rem;
	line-height: 1.8;
	color: var(--color-text);
}

.booking-auth-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.875rem;
	justify-content: center;
}

.booking-summary-card {
	max-width: 40rem;
	padding-top: 0.25rem;
}

.booking-summary__list {
	margin: 0 0 1.75rem;
	padding: 0.25rem 0;
	border-top: 1px solid rgba(127, 146, 124, 0.1);
	border-bottom: 1px solid rgba(127, 146, 124, 0.1);
}

.booking-summary__row {
	display: grid;
	grid-template-columns: 8rem 1fr;
	gap: 0.75rem 1rem;
	padding: 0.875rem 0;
	border-bottom: 1px solid rgba(127, 146, 124, 0.1);
}

.booking-summary__row:last-child {
	border-bottom: 0;
}

.booking-summary__row dt {
	margin: 0;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--color-sage-action);
}

.booking-summary__row dd {
	margin: 0;
	font-size: 1rem;
	line-height: 1.5;
	color: var(--color-text);
}

.booking-summary__message {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	margin-bottom: 1.75rem;
}

.booking-summary__message label {
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--color-text);
}

.booking-summary__message textarea {
	width: 100%;
	padding: 0.875rem 1rem;
	font-family: inherit;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--color-text);
	background: rgba(255, 255, 255, 0.65);
	border: 1px solid var(--form-field-border);
	border-radius: var(--radius-sm);
	resize: vertical;
	min-height: 7rem;
	transition: border-color var(--transition), box-shadow var(--transition);
}

.booking-summary__message textarea:focus {
	outline: none;
	border-color: rgba(127, 146, 124, 0.35);
	box-shadow: 0 0 0 2px var(--color-text);
}

.booking-summary__actions .btn {
	min-width: 14rem;
}

.booking-summary__notice[hidden] {
	display: none;
}

.booking-confirm[hidden],
[data-booking-form][hidden] {
	display: none;
}

.booking-confirm__card {
	max-width: 40rem;
	margin-inline: auto;
	padding: clamp(2rem, 4vw, 3rem);
	background: rgba(252, 250, 247, 0.94);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-lg);
	box-shadow: 0 12px 40px rgba(74, 74, 74, 0.05);
	text-align: center;
}

.booking-confirm__title {
	margin: 0 0 1rem;
	font-family: var(--font-heading);
	font-size: clamp(1.5rem, 3vw, 2rem);
	font-weight: 400;
	line-height: 1.2;
	color: var(--color-text);
}

.booking-confirm__intro {
	margin: 0 0 2rem;
	font-size: 1.0625rem;
	line-height: 1.8;
	color: var(--color-text);
	opacity: 0.9;
}

.booking-confirm__details {
	margin: 0 0 2rem;
	padding: 0;
	text-align: left;
}

.booking-confirm__row {
	display: grid;
	grid-template-columns: 9rem 1fr;
	gap: 0.75rem 1rem;
	padding: 0.875rem 0;
	border-bottom: 1px solid rgba(127, 146, 124, 0.1);
}

.booking-confirm__row:last-child {
	border-bottom: 0;
}

.booking-confirm__row dt {
	margin: 0;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--color-sage-action);
}

.booking-confirm__row dd {
	margin: 0;
	font-size: 1rem;
	line-height: 1.5;
	color: var(--color-text);
}

.booking-confirm__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.875rem;
	justify-content: center;
}

.booking-confirm__secondary {
	font-size: 0.9375rem;
	opacity: 0.88;
}

.espace-rdv-badge {
	display: inline-flex;
	align-items: center;
	padding: 0.3125rem 0.75rem;
	font-size: 0.75rem;
	font-weight: 500;
	line-height: 1.2;
	border-radius: var(--radius-btn);
}

.espace-rdv-badge--pending {
	color: #6b5348;
	background: rgba(237, 231, 223, 0.9);
}

.espace-rdv-badge--confirmed {
	color: #4a5f47;
	background: rgba(168, 184, 165, 0.24);
}

.espace-rdv-badge--refused,
.espace-rdv-badge--cancelled {
	color: #6b6363;
	background: rgba(237, 231, 223, 0.65);
}

.espace-dashboard__tile--demandes {
	min-height: auto;
}

.espace-dashboard__tile--priority {
	border-color: rgba(127, 146, 124, 0.18);
	background: rgba(255, 253, 250, 0.98);
}

a.espace-dashboard__tile--clickable {
	text-decoration: none;
	color: inherit;
}

.espace-card__text--empty {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.7;
	color: var(--color-text);
	opacity: 0.8;
}

.espace-rdv-list {
	margin: 0.5rem 0 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
}

.espace-rdv-list__item {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem 1.125rem;
	background: rgba(250, 248, 245, 0.88);
	border: 1px solid rgba(127, 146, 124, 0.12);
	border-radius: var(--radius-sm);
}

.espace-rdv-list__main {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 0;
	flex: 1;
}

.espace-rdv-list__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.75rem 1rem;
}

.espace-rdv-list__datetime {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.35rem 0.75rem;
	margin: 0;
}

.espace-rdv-list__date-value {
	font-family: var(--font-heading);
	font-size: 1.0625rem;
	font-weight: 400;
	line-height: 1.3;
	color: var(--color-text);
}

.espace-rdv-list__slot-value {
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.4;
	color: var(--color-sage-action);
}

.espace-rdv-list__slot-value::before {
	content: "·";
	margin-right: 0.75rem;
	color: rgba(74, 74, 74, 0.35);
}

.espace-rdv-list__type {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--color-text);
	opacity: 0.88;
}

.espace-rdv-list__date,
.espace-rdv-list__slot,
.espace-rdv-list__message {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--color-text);
}

.espace-rdv-list__label {
	display: inline-block;
	min-width: 4.5rem;
	margin-right: 0.5rem;
	font-weight: 500;
	color: var(--color-sage-action);
}

.espace-rdv-list__message .espace-rdv-list__value {
	display: block;
	margin-top: 0.25rem;
	opacity: 0.88;
}

@media (max-width: 768px) {
	.booking-confirm__row {
		grid-template-columns: 1fr;
		gap: 0.25rem;
	}

	.booking-confirm__actions .btn {
		width: 100%;
		max-width: none;
	}

	.booking-flow__steps {
		position: relative;
		flex-direction: row;
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		padding-bottom: 0.25rem;
	}

	.booking-flow__steps::after {
		content: "";
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0.25rem;
		width: 1.75rem;
		background: linear-gradient(to right, rgba(252, 250, 247, 0), rgba(252, 250, 247, 0.9));
		pointer-events: none;
		z-index: 1;
	}

	.booking-flow__steps::-webkit-scrollbar {
		display: none;
	}

	.booking-flow__step {
		flex: 0 0 auto;
		min-width: min(100%, 14rem);
	}

	.booking-choice-grid,
	.booking-choice-grid--session,
	.booking-choice-grid--inline {
		grid-template-columns: 1fr;
	}

	.booking-info-block__row {
		grid-template-columns: 1fr;
	}

	.booking-slots {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.booking-summary__row {
		grid-template-columns: 1fr;
		gap: 0.25rem;
	}

	.booking-auth-card__actions .btn,
	.booking-summary__actions .btn {
		width: 100%;
		max-width: none;
	}

	.booking-summary__message textarea {
		font-size: 1rem;
	}
}

@media (max-width: 480px) {
	.booking-slots {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.booking-panel__body--calendar .calendar-preview {
		--calendar-day-size: clamp(2.35rem, 12vw, 2.75rem);
		--calendar-grid-gap: 0.2rem;
	}

	.booking-panel__body--calendar .calendar-preview__weekdays,
	.booking-panel__body--calendar .calendar-preview__grid {
		gap: var(--calendar-grid-gap);
	}

	.booking-panel__body--calendar .calendar-preview__weekday {
		font-size: 0.625rem;
		letter-spacing: 0.04em;
	}

	.booking-panel__body--calendar .calendar-preview__month {
		font-size: 1.125rem;
	}

	.booking-choice-card {
		min-height: 4.25rem;
		padding: 1rem 1.125rem;
	}

	.booking-flow__progress-label {
		font-size: 1.0625rem;
	}
}

@media (max-width: 360px) {
	.booking-panel__body--calendar .calendar-preview__nav {
		width: 2.75rem;
		height: 2.75rem;
		min-width: 2.75rem;
		min-height: 2.75rem;
	}
}

/* Mon espace — patient
   -------------------------------------------------------------------------- */

.page-section--espace {
	padding-block: clamp(4rem, 9vw, 6.5rem);
}

.espace-shell {
	max-width: 58rem;
}

.espace-dashboard__header {
	margin-bottom: 2.5rem;
}

.espace-greeting {
	margin: 1.25rem 0 0;
	font-family: var(--font-heading);
	font-size: clamp(1.375rem, 3vw, 1.75rem);
	font-weight: 400;
	line-height: 1.3;
	color: var(--color-sage-action);
}

.espace-shell--dashboard {
	max-width: min(100%, 68rem);
}

.espace-shell--auth {
	max-width: min(100%, 38rem);
	margin-inline: auto;
}

.page-section--espace:has(.espace-shell--auth) {
	padding-block: clamp(1.75rem, 4vw, 2.75rem);
}

.espace-auth {
	display: flex;
	justify-content: center;
	width: 100%;
	padding-block: 0;
}

.espace-auth__card {
	width: 100%;
	padding: clamp(1.75rem, 4vw, 2.5rem);
	background: rgba(255, 253, 250, 0.98);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-md);
	box-shadow: none;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

.espace-auth__card.espace-card {
	box-shadow: none;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

.espace-auth__viewport {
	position: relative;
	display: block;
	transition: min-height 350ms ease;
}

.espace-auth__panel {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	opacity: 0;
	visibility: hidden;
	transform: translateY(0.625rem);
	transition:
		opacity 350ms ease,
		transform 350ms ease,
		visibility 350ms ease;
	pointer-events: none;
}

.espace-auth__panel.is-active {
	position: relative;
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
	pointer-events: auto;
}

.espace-auth__panel.is-leaving {
	position: relative;
	opacity: 0;
	transform: translateY(-0.625rem);
	pointer-events: none;
}

.espace-auth__panel.is-entering {
	transform: translateY(0.625rem);
}

.espace-auth__title {
	margin: 0 0 0.625rem;
	font-family: var(--font-heading);
	font-size: clamp(1.375rem, 2.8vw, 1.625rem);
	font-weight: 400;
	line-height: 1.25;
	text-align: left;
	color: var(--color-sage-action);
}

.espace-shell--auth .espace-auth__title {
	display: block;
	width: auto;
	max-width: none;
	margin-inline: 0;
}

.espace-shell--auth .espace-auth__title::before {
	display: none;
}

.espace-auth__intro {
	max-width: none;
	margin: 0 0 1.5rem;
	font-family: var(--font-body);
	font-size: 0.9375rem;
	line-height: 1.6;
	text-align: left;
	color: rgba(74, 74, 74, 0.88);
	opacity: 1;
}

.espace-auth__benefits {
	display: grid;
	gap: 0.45rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
	font-family: var(--font-body);
	font-size: 0.875rem;
	line-height: 1.55;
	color: rgba(74, 74, 74, 0.85);
}

.espace-auth__benefits li {
	position: relative;
	padding-left: 1.1rem;
}

.espace-auth__benefits li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 0.35rem;
	height: 0.35rem;
	border-radius: 50%;
	background: var(--color-sage);
}

.espace-auth__divider {
	margin: 1.5rem 0 1.25rem;
	border: 0;
	border-top: 1px solid rgba(127, 146, 124, 0.18);
}

.espace-auth__switch {
	margin: 0 0 0.75rem;
	font-size: 0.875rem;
	line-height: 1.5;
	text-align: center;
	color: rgba(74, 74, 74, 0.78);
	opacity: 1;
}

.espace-auth__switch-btn {
	width: 100%;
}

.espace-auth__switch-link {
	display: inline;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	font-size: inherit;
	font-weight: 500;
	color: var(--color-sage-action);
	cursor: pointer;
	text-decoration: underline;
	text-decoration-color: currentColor;
	text-underline-offset: 0.25em;
	transition:
		color 350ms ease,
		text-decoration-color 350ms ease;
}

.espace-auth__panel--register .espace-auth__switch {
	margin-top: 1.25rem;
}

.espace-auth__switch-link:focus-visible {
	color: var(--color-sage-action);
	text-decoration-color: rgba(127, 146, 124, 0.65);
}

.espace-auth__switch-link:hover {
	color: var(--color-sage-action);
	text-decoration-color: currentColor;
}

.espace-auth__switch-link:focus-visible {
	outline: var(--btn-focus-outline);
	outline-offset: var(--btn-focus-outline-offset);
	border-radius: 2px;
}

.espace-notice {
	margin-bottom: 1.5rem;
}

.espace-layout {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
	gap: clamp(1.5rem, 3vw, 2rem);
	align-items: start;
}

.espace-layout--dual {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.espace-card {
	padding: clamp(2rem, 4vw, 2.75rem);
	background: rgba(250, 248, 245, 0.82);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-soft);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
}

.espace-card__title {
	font-family: var(--font-heading);
	font-size: clamp(1.25rem, 2.5vw, 1.5rem);
	font-weight: 400;
	line-height: 1.25;
	color: var(--color-text);
	margin: 0 0 0.75rem;
}

.espace-card .espace-card__text {
	margin: 0 0 1.75rem;
	font-size: 1.0625rem;
	line-height: 1.75;
	color: var(--color-text);
	opacity: 0.9;
}

.espace-card__text {
	margin: 0;
	font-size: 1.0625rem;
	line-height: 1.75;
	color: var(--color-text);
	opacity: 0.9;
}

.espace-card__text--soon {
	font-size: 0.875rem;
	color: var(--color-sage-action);
	opacity: 0.85;
}

.espace-form {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.espace-form__field {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}

.espace-form__field label {
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--color-text);
}

.espace-form__field input {
	width: 100%;
	padding: 0.8125rem 1rem;
	font-family: inherit;
	font-size: 0.9375rem;
	color: var(--color-text);
	background: rgba(255, 255, 255, 0.65);
	border: 1px solid var(--form-field-border);
	border-radius: var(--radius-sm);
	transition:
		border-color var(--transition),
		box-shadow var(--transition),
		background-color var(--transition);
}

.espace-form__field input:focus {
	outline: none;
	border-color: rgba(127, 146, 124, 0.55);
	box-shadow: 0 0 0 2px var(--color-text);
	background: rgba(255, 255, 255, 0.85);
}

.espace-form__field.is-invalid input:not([type="checkbox"]),
.espace-form__field.is-invalid textarea,
.cnt-form__field--error input,
.cnt-form__field--error textarea {
	border-color: var(--form-field-invalid-border);
	background: var(--form-field-invalid-bg);
}

.espace-form__field.is-invalid input:not([type="checkbox"]):focus,
.espace-form__field.is-invalid textarea:focus,
.cnt-form__field--error input:focus,
.cnt-form__field--error textarea:focus {
	outline: none;
	border-color: var(--form-field-invalid-focus-border);
	box-shadow: 0 0 0 2px var(--form-error-text);
}

.espace-form__field--checkbox.is-invalid .espace-form__checkbox {
	color: var(--form-error-text);
}

.espace-form__error[hidden] {
	display: none;
}

.espace-form__submit {
	width: 100%;
	margin-top: 0.25rem;
}

.espace-form__options {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 1rem;
	margin-top: -0.25rem;
}

.espace-form__checkbox {
	display: inline-flex;
	align-items: flex-start;
	gap: 0.625rem;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--color-text);
}

.espace-form__checkbox-label {
	flex: 1;
	min-width: 0;
	cursor: pointer;
}

.espace-form__legal-link {
	color: var(--color-sage-action);
	text-decoration: underline;
	text-decoration-color: currentColor;
	text-underline-offset: 0.12em;
	transition:
		color var(--transition),
		text-decoration-color var(--transition);
}

.espace-form__legal-link:focus-visible {
	color: #4a4a4a;
	text-decoration-color: rgba(127, 146, 124, 0.55);
}

.espace-form__legal-link:hover {
	color: #4a4a4a;
	text-decoration-color: currentColor;
}

.espace-form__checkbox input[type="checkbox"] {
	width: 1rem;
	height: 1rem;
	margin: 0.125rem 0 0;
	flex-shrink: 0;
	accent-color: var(--color-sage-dark);
	cursor: pointer;
}

.espace-form__checkbox input[type="checkbox"]:focus-visible {
	outline: var(--btn-focus-outline);
	outline-offset: var(--btn-focus-outline-offset);
}

.espace-form__checkbox--terms {
	margin-top: 0.25rem;
}

.espace-form__forgot-link {
	font-size: 0.8125rem;
	white-space: nowrap;
}

.espace-form__forgot {
	margin: 0;
	text-align: center;
}

.espace-form__forgot a {
	font-size: 0.8125rem;
	color: var(--color-sage-action);
	opacity: 0.85;
	text-decoration: underline;
	text-decoration-color: rgba(127, 146, 124, 0.35);
	text-underline-offset: 0.2em;
}

.espace-form__forgot a:hover,
.espace-form__forgot a:focus {
	opacity: 1;
	color: var(--color-text);
}

.espace-verify-email-masked {
	margin: 0 0 1rem;
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--color-text);
	text-align: center;
}

.espace-verify-actions {
	display: grid;
	gap: 0.75rem;
	justify-items: center;
	margin-top: 1rem;
}

.espace-verify-actions__btn {
	min-width: 14rem;
}

.espace-verify-mailbox-hint {
	margin: 0;
	max-width: 22rem;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--color-text-muted, #6b6560);
	text-align: center;
}

.espace-verify-code {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 0.35rem;
}

.espace-verify-code input {
	width: 2.75rem;
	height: 3rem;
	padding: 0;
	border: 1px solid var(--form-field-border);
	border-radius: 10px;
	background: #fff;
	font-size: 1.25rem;
	font-weight: 700;
	text-align: center;
	color: var(--color-text);
	box-shadow: 0 2px 8px rgba(60, 55, 50, 0.04);
}

.espace-verify-code input:focus {
	outline: none;
	border-color: rgba(127, 146, 124, 0.55);
	box-shadow: 0 0 0 2px var(--color-text);
}

.espace-dashboard__tile--clickable {
	cursor: pointer;
	text-align: left;
	width: 100%;
	border: none;
	font: inherit;
}

.espace-dashboard__tile--clickable:focus-visible {
	outline: var(--btn-focus-outline);
	outline-offset: var(--btn-focus-outline-offset);
}

.espace-dashboard-app {
	display: grid;
	gap: clamp(1.25rem, 2.5vw, 2rem);
}

.espace-dashboard-secondary {
	display: flex;
	flex-direction: column;
	gap: clamp(1.5rem, 3vw, 2.5rem);
	margin-top: clamp(1.5rem, 3vw, 2.5rem);
	padding-top: clamp(1.5rem, 3vw, 2.5rem);
	border-top: 1px solid rgba(127, 146, 124, 0.12);
}

.espace-dashboard-view[hidden],
.espace-panel[hidden] {
	display: none !important;
}

.espace-panel__header {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: 1rem;
}

.espace-panel__back {
	border: none;
	background: transparent;
	color: var(--color-sage-action);
	font-size: 0.875rem;
	font-weight: 600;
	cursor: pointer;
	padding: 0.35rem 0;
}

.espace-panel__title {
	margin: 0;
	font-family: var(--font-heading);
	font-size: clamp(1.375rem, 2.5vw, 1.625rem);
	font-weight: 400;
	line-height: 1.25;
	color: var(--color-text);
}

.espace-profile__list {
	display: grid;
	gap: 0.85rem;
	margin: 0 0 1.25rem;
}

.espace-profile__row {
	display: grid;
	grid-template-columns: minmax(8rem, 11rem) 1fr;
	gap: 0.75rem;
	align-items: start;
}

.espace-profile__row dt {
	margin: 0;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--color-text-muted, #6b6560);
}

.espace-profile__row dd {
	margin: 0;
	font-size: 0.9375rem;
	color: var(--color-text);
	word-break: break-word;
}

.espace-profile__actions,
.espace-form__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 1rem;
}

.form-field__hint,
.espace-form__hint {
	margin: var(--form-field-error-margin);
	font-size: var(--form-field-error-size);
	line-height: var(--form-field-error-line);
	color: var(--form-hint-color);
}

.espace-form__password-wrap {
	position: relative;
	display: flex;
	align-items: stretch;
}

.espace-form__password-wrap input {
	padding-right: 5.75rem;
}

.espace-form__password-toggle {
	position: absolute;
	top: 50%;
	right: 0.5rem;
	transform: translateY(-50%);
	padding: 0.35rem 0.55rem;
	font-family: inherit;
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1.2;
	color: #6E806C;
	background: transparent;
	border: 1px solid transparent;
	border-radius: var(--radius-sm);
	cursor: pointer;
	transition:
		color var(--transition),
		background-color var(--transition),
		border-color var(--transition);
}

.espace-form__password-toggle:hover,
.espace-form__password-toggle:focus-visible {
	color: #4A4A4A;
	background: rgba(168, 184, 165, 0.14);
	border-color: rgba(127, 146, 124, 0.28);
}

.espace-form__password-toggle:focus-visible {
	outline: var(--btn-focus-outline);
	outline-offset: var(--btn-focus-outline-offset);
}

.espace-card--profile {
	padding: 1.5rem;
}

.espace-sensitive-zone {
	border: 1px solid rgba(181, 108, 108, 0.22);
	background: rgba(181, 108, 108, 0.05);
}

.espace-sensitive-zone__title {
	color: #9a5555;
}

.espace-btn--danger {
	border-color: rgba(181, 108, 108, 0.35);
	color: #9a5555;
}

.espace-btn--danger:hover,
.espace-btn--danger:focus {
	background: rgba(181, 108, 108, 0.08);
}

@media (max-width: 430px) {
	.espace-form--password-reset .espace-form__submit,
	.espace-sensitive-zone .espace-btn--danger {
		white-space: normal;
		max-width: 100%;
		height: auto;
	}
}

.espace-modal {
	position: fixed;
	inset: 0;
	z-index: 1200;
	display: grid;
	place-items: center;
	padding: 1rem;
}

.espace-modal[hidden] {
	display: none !important;
}

.espace-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(45, 40, 36, 0.35);
}

.espace-modal__dialog {
	position: relative;
	width: min(100%, 28rem);
	min-height: 0;
	max-height: calc(100vh - 2rem);
	max-height: calc(100dvh - 2rem);
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	scroll-padding-block: 0.75rem;
	padding: 1.5rem;
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 18px 48px rgba(45, 40, 36, 0.16);
}

body.mdm-espace-modal-open {
	overflow: hidden;
}

.espace-modal__title {
	margin: 0 0 0.75rem;
	font-size: 1.2rem;
}

.espace-modal__body {
	font-size: 0.9375rem;
	line-height: 1.55;
	color: var(--color-text);
}

.espace-modal__list {
	margin: 0.75rem 0 0;
	padding-left: 1.1rem;
}

.espace-modal__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 1.25rem;
}

@media (max-width: 640px) {
	.espace-profile__row {
		grid-template-columns: 1fr;
		gap: 0.25rem;
	}
}

@media (max-width: 480px) {
	.espace-verify-code {
		gap: 0.35rem;
	}

	.espace-verify-code input {
		width: 2.35rem;
		height: 2.75rem;
		font-size: 1.1rem;
	}
}

.espace-dashboard-premium {
	display: flex;
	flex-direction: column;
	gap: clamp(1rem, 2vw, 1.5rem);
	margin-bottom: 0;
}

.espace-dashboard__sections {
	display: grid;
	grid-template-columns: 1fr;
	gap: clamp(1rem, 2vw, 1.25rem);
}

.espace-card--section {
	padding: clamp(1.25rem, 2.5vw, 1.75rem);
}

.espace-card--section .espace-card__title {
	margin: 0 0 0.875rem;
	font-family: var(--font-heading);
	font-size: clamp(1.0625rem, 1.8vw, 1.25rem);
	font-weight: 400;
	color: var(--color-text);
}

.espace-dashboard__nav {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(0.875rem, 1.5vw, 1rem);
	margin-bottom: clamp(1rem, 2vw, 1.25rem);
}

.espace-dashboard__tile {
	padding: clamp(1rem, 2vw, 1.375rem);
	min-height: 6.75rem;
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	transition:
		border-color var(--transition),
		box-shadow var(--transition),
		transform var(--transition);
}

.espace-dashboard__tile:hover,
.espace-dashboard__tile:focus-visible {
	border-color: rgba(127, 146, 124, 0.28);
	box-shadow: 0 8px 28px rgba(74, 74, 74, 0.06);
	transform: translateY(-1px);
}

.espace-dashboard__tile-title {
	margin: 0 0 0.375rem;
	font-family: var(--font-heading);
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.3;
	color: var(--color-text);
}

.espace-dashboard__tile--priority .espace-dashboard__tile-title {
	color: var(--color-sage-action);
}

.espace-card--featured {
	padding: clamp(1.5rem, 3vw, 2rem);
	border-color: rgba(127, 146, 124, 0.16);
}

.espace-card--featured .espace-card__title {
	font-size: clamp(1.125rem, 2vw, 1.375rem);
	margin-bottom: 0.875rem;
}

.espace-card--notifications {
	padding: clamp(1.125rem, 2vw, 1.375rem);
	background: rgba(250, 248, 245, 0.72);
	border-style: dashed;
}

.espace-card--notifications .espace-card__title {
	font-size: 0.9375rem;
	margin-bottom: 0.75rem;
	color: var(--color-sage-action);
}

.espace-notifications__list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
}

.espace-notifications__item {
	position: relative;
	padding-left: 1rem;
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--color-text);
	opacity: 0.82;
}

.espace-notifications__item::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background-color: var(--color-sage-dark);
	opacity: 0.45;
}

.espace-logout {
	margin-top: clamp(1.25rem, 2.5vw, 1.75rem);
	padding-top: clamp(1rem, 2vw, 1.25rem);
	border-top: 1px solid rgba(127, 146, 124, 0.1);
	text-align: center;
}

.espace-logout__btn {
	min-width: 12rem;
}

@media (max-width: 1100px) {
	.espace-dashboard__nav {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 900px) {
	.espace-layout,
	.espace-layout--dual {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 768px) {
	.espace-auth__card {
		padding: 1.5rem 1.25rem;
		border-radius: var(--radius-md);
	}

	.espace-auth__intro {
		margin-bottom: 1.25rem;
		font-size: 0.875rem;
	}

	.espace-auth__benefits {
		margin-bottom: 1.25rem;
		font-size: 0.8125rem;
	}

	.espace-card {
		padding: 1.75rem 1.5rem;
		border-radius: var(--radius-md);
	}

	.espace-logout__btn {
		width: 100%;
		max-width: none;
	}

	.espace-dashboard__nav {
		grid-template-columns: 1fr;
	}

	.espace-form__options {
		flex-direction: column;
		align-items: flex-start;
	}
}

@media (prefers-reduced-motion: reduce) {
	.espace-auth__panel,
	.espace-auth__viewport,
	.espace-auth__switch-link,
	.espace-dashboard__tile {
		transition: none;
	}

	.espace-auth__panel.is-leaving,
	.espace-auth__panel.is-entering {
		transform: none;
	}

	.espace-dashboard__tile:hover {
		transform: none;
	}
}

/* ==========================================================================
   Content (pages internes)
   ========================================================================== */

.entry-header {
	margin-bottom: 1.5rem;
}

.entry-title {
	font-size: 2rem;
}

.entry-thumbnail {
	margin-bottom: 1.5rem;
	border-radius: var(--radius-md);
	overflow: hidden;
}

.entry-content > * + * {
	margin-top: 1rem;
}

/* ==========================================================================
   Buttons — système unifié (.btn + alias éditoriaux)
   ========================================================================== */

.btn,
.aen-btn-cta,
.home-btn-rdv,
.qsm-btn-cta,
.mai-btn-cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--btn-min-height);
	padding: var(--btn-padding-y) var(--btn-padding-x);
	font-family: var(--btn-font-family);
	font-size: var(--btn-font-size);
	font-weight: var(--btn-font-weight);
	letter-spacing: var(--btn-letter-spacing);
	line-height: var(--btn-line-height);
	text-align: center;
	text-decoration: none;
	border: var(--btn-border-width) solid transparent;
	border-radius: var(--btn-radius);
	cursor: pointer;
	white-space: nowrap;
	transition:
		background-color var(--transition),
		color var(--transition),
		border-color var(--transition),
		box-shadow var(--transition),
		transform var(--transition),
		opacity var(--transition);
}

.btn-primary,
.aen-btn-cta,
.home-btn-rdv,
.qsm-btn-cta,
.mai-btn-cta {
	background-color: var(--btn-primary-bg);
	color: var(--btn-primary-color);
	border-color: var(--btn-primary-border);
	box-shadow: var(--btn-primary-shadow);
}

.btn-primary:hover,
.btn-primary:focus-visible,
.aen-btn-cta:hover,
.aen-btn-cta:focus-visible,
.home-btn-rdv:hover,
.home-btn-rdv:focus-visible,
.qsm-btn-cta:hover,
.qsm-btn-cta:focus-visible,
.mai-btn-cta:hover,
.mai-btn-cta:focus-visible {
	background-color: var(--btn-primary-hover-bg);
	border-color: var(--btn-primary-hover-border);
	color: var(--btn-primary-color);
	text-decoration: none;
	box-shadow: var(--btn-primary-hover-shadow);
	transform: var(--btn-hover-transform);
}

.btn-secondary {
	background-color: var(--btn-secondary-bg);
	color: var(--btn-secondary-color);
	border-color: var(--btn-secondary-border);
	box-shadow: var(--btn-secondary-shadow);
}

.btn-secondary:hover,
.btn-secondary:focus-visible {
	background-color: var(--btn-secondary-hover-bg);
	border-color: var(--btn-secondary-hover-border);
	color: var(--btn-secondary-hover-color);
	text-decoration: none;
	box-shadow: var(--btn-secondary-hover-shadow);
	transform: var(--btn-hover-transform);
}

.btn:focus-visible,
.btn-primary:focus-visible,
.btn-secondary:focus-visible,
.aen-btn-cta:focus-visible,
.home-btn-rdv:focus-visible,
.qsm-btn-cta:focus-visible,
.mai-btn-cta:focus-visible {
	outline: var(--btn-focus-outline);
	outline-offset: var(--btn-focus-outline-offset);
}

.btn:disabled,
.btn[disabled],
.btn[aria-disabled="true"],
.btn-primary:disabled,
.btn-primary[disabled],
.btn-primary[aria-disabled="true"],
.btn-secondary:disabled,
.btn-secondary[disabled],
.btn-secondary[aria-disabled="true"] {
	opacity: var(--btn-disabled-opacity);
	cursor: not-allowed;
	transform: none;
	box-shadow: none;
}

.btn-primary:disabled,
.btn-primary[disabled],
.btn-primary[aria-disabled="true"],
.btn-primary:disabled:hover,
.btn-primary[disabled]:hover {
	background-color: var(--btn-primary-bg);
	border-color: var(--btn-primary-border);
	color: var(--btn-primary-color);
}

.btn-secondary:disabled,
.btn-secondary[disabled],
.btn-secondary[aria-disabled="true"],
.btn-secondary:disabled:hover,
.btn-secondary[disabled]:hover {
	background-color: var(--btn-secondary-bg);
	border-color: var(--btn-secondary-border);
	color: var(--btn-secondary-color);
}

.btn--large {
	min-width: 16rem;
	min-height: 3.125rem;
	padding: 0.875rem 2.25rem;
	font-size: 1.0625rem;
}

.link-arrow {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	font-size: 0.9375rem;
	color: var(--color-sage-action);
	text-decoration: none;
	transition: color var(--transition), gap var(--transition);
}

.link-arrow:hover,
.link-arrow:focus {
	color: var(--color-text);
	text-decoration: none;
	gap: 0.55rem;
}

.link-arrow::after {
	content: "→";
	font-size: 0.875rem;
	transition: transform var(--transition);
}

.link-arrow:hover::after {
	transform: translateX(3px);
}

/* ==========================================================================
   Formulaires — messages et états (VISUEL-002)
   ========================================================================== */

.form-message,
.espace-notice,
.booking-summary__notice,
.cnt-form__notice {
	margin: var(--form-msg-margin-top) 0 0;
	padding: var(--form-msg-padding);
	font-size: var(--form-msg-font-size);
	line-height: var(--form-msg-line-height);
	border: 1px solid transparent;
	border-radius: var(--form-msg-radius);
}

.form-message p,
.espace-notice p {
	margin: 0;
}

.form-message[hidden],
.espace-notice[hidden],
.booking-summary__notice[hidden],
.cnt-form__notice[hidden] {
	display: none;
}

.form-message--error,
.espace-notice--error,
.booking-summary__notice--error,
.cnt-form__notice--error {
	color: var(--form-error-text);
	background: var(--form-error-bg);
	border-color: var(--form-error-border);
}

.form-message--success,
.espace-notice--success,
.booking-summary__notice--success,
.cnt-form__notice--success {
	color: var(--form-success-text);
	background: var(--form-success-bg);
	border-color: var(--form-success-border);
}

.form-message--info,
.booking-summary__notice:not(.booking-summary__notice--error):not(.booking-summary__notice--success) {
	color: var(--form-info-text);
	background: var(--form-info-bg);
	border-color: var(--form-info-border);
}

.form-message--warning {
	color: var(--form-warning-text);
	background: var(--form-warning-bg);
	border-color: var(--form-warning-border);
}

.form-field__error,
.espace-form__error,
.cnt-form__field-error,
.espace-message-detail__reply-error {
	margin: var(--form-field-error-margin);
	font-size: var(--form-field-error-size);
	line-height: var(--form-field-error-line);
	color: var(--form-field-error-color);
}

.form-field__error[hidden],
.cnt-form__field-error[hidden],
.espace-message-detail__reply-error[hidden] {
	display: none;
}

.espace-message-detail__reply-error {
	margin: 0 0 0.75rem;
}

.cnt-form__submit.is-loading {
	pointer-events: none;
}

.form-loader,
.cnt-form__loader {
	display: none;
	flex-shrink: 0;
	width: 1rem;
	height: 1rem;
	border: 2px solid rgba(255, 255, 255, 0.35);
	border-top-color: #fff;
	border-radius: 50%;
	animation: form-loader-spin 0.75s linear infinite;
}

.form-loader[hidden],
.cnt-form__loader[hidden] {
	display: none !important;
}

.cnt-form__submit.is-loading .cnt-form__loader {
	display: inline-block;
}

@keyframes form-loader-spin {
	to {
		transform: rotate(360deg);
	}
}

/* ==========================================================================
   Page d'accueil — Base sections
   ========================================================================== */

.section {
	position: relative;
	scroll-margin-top: calc(var(--header-height) + var(--admin-bar-height));
	overflow: hidden;
}

.section > .container {
	position: relative;
	z-index: 1;
}

.section--alt {
	background-color: var(--color-offwhite);
}

.section__header--left .section__title,
.section__header--left .section__intro {
	text-align: left;
	margin-inline: 0;
}

.section__title {
	position: relative;
	font-size: clamp(2.125rem, 4.8vw, 3rem);
	line-height: 1.18;
	margin-bottom: 1.75rem;
	color: var(--color-text);
	letter-spacing: -0.015em;
}

.section__intro {
	max-width: var(--text-max);
	margin-bottom: 3.25rem;
	font-size: 1.125rem;
	line-height: 1.9;
	color: var(--color-text);
}

.section__content {
	max-width: var(--text-max);
}

.section__content > * + * {
	margin-top: 1.125rem;
}

.section__content p {
	font-size: 1.0625rem;
	line-height: 1.85;
}

.section__cta {
	margin-top: 2.75rem;
}

.section__cta--left {
	text-align: left;
}

.section__cta-link {
	margin-top: 3rem;
}

.section__cta-link--left {
	text-align: left;
}

/* Espacements variés par section
   -------------------------------------------------------------------------- */

.section-hero {
	padding-block: clamp(5.5rem, 10vw, 8.5rem);
	min-height: 88vh;
	display: flex;
	align-items: center;
	background-color: var(--color-offwhite);
}

.section-hero.section-texture::before {
	opacity: 0.04;
}

.section-accompagnement {
	padding-block: 5rem;
	background-color: var(--color-linen);
}

.section-pourquoi {
	padding-block: 8.75rem;
	background-color: var(--color-offwhite);
}

.section-pourquoi::after,
.section-seances::after,
.section-about::after,
.section-blog::after,
.section-contact::after,
.section-accompagnement::after {
	content: "";
	position: absolute;
	pointer-events: none;
	z-index: 0;
	background-repeat: no-repeat;
	background-size: contain;
	opacity: var(--deco-opacity);
}

.section-pourquoi::after {
	top: 8%;
	right: -6%;
	width: clamp(160px, 20vw, 260px);
	height: clamp(280px, 35vw, 420px);
	background-image: var(--svg-leaf);
	transform: rotate(20deg);
}

.section-seances {
	padding-block: 5.625rem;
	background-color: var(--color-linen);
}

.section-seances::after {
	bottom: 10%;
	left: -5%;
	width: clamp(200px, 24vw, 300px);
	height: clamp(200px, 24vw, 300px);
	background-image: var(--svg-circle);
	transform: rotate(-12deg);
}

.section-about {
	padding-block: 7.5rem;
	background-color: var(--color-offwhite);
}

.section-about::after {
	top: 15%;
	left: -8%;
	width: clamp(220px, 26vw, 320px);
	height: clamp(110px, 13vw, 160px);
	background-image: var(--svg-branch);
	transform: rotate(-5deg);
}

.section-disponibilites {
	padding-block: 5rem;
	background-color: var(--color-linen);
}

.section-blog {
	padding-block: 8.75rem;
	background-color: var(--color-offwhite);
}

.section-blog::after {
	bottom: 5%;
	right: -4%;
	width: clamp(180px, 22vw, 280px);
	height: clamp(180px, 22vw, 280px);
	background-image: var(--svg-circle);
	transform: rotate(8deg);
}

.section-contact {
	padding-block: 6.25rem;
	background-color: var(--color-linen);
}

.section-contact::after {
	top: 20%;
	right: -6%;
	width: clamp(140px, 16vw, 200px);
	height: clamp(240px, 28vw, 340px);
	background-image: var(--svg-leaf);
	transform: rotate(35deg);
}

.section-accompagnement::after {
	bottom: 8%;
	right: -4%;
	width: clamp(120px, 14vw, 180px);
	height: clamp(210px, 24vw, 310px);
	background-image: var(--svg-leaf);
	transform: rotate(40deg);
}

/* Hero
   -------------------------------------------------------------------------- */

.section-hero > .container {
	position: relative;
	z-index: 1;
}

.section-hero__grid {
	display: grid;
	grid-template-columns: 0.95fr 1.05fr;
	gap: clamp(3rem, 7vw, 6rem);
	align-items: center;
}

.section-hero__content {
	max-width: 36rem;
}

.section-hero__title {
	font-size: clamp(2.75rem, 6.5vw, 4.25rem);
	line-height: 1.08;
	margin-bottom: 1.25rem;
	letter-spacing: -0.02em;
	color: var(--color-text);
}

.section-hero__subtitle {
	font-family: var(--font-heading);
	font-size: clamp(1.25rem, 2.8vw, 1.625rem);
	line-height: 1.4;
	color: var(--color-sage-action);
	margin-bottom: 2rem;
}

.section-hero__text {
	max-width: 32rem;
	font-size: 1.125rem;
	line-height: 1.9;
	margin-bottom: 3rem;
	color: var(--color-text);
}

.section-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem 1.25rem;
}

.section-hero__media {
	display: flex;
	justify-content: flex-end;
}

.section-hero__photo-wrap {
	position: relative;
	width: 100%;
	max-width: 32rem;
}

.section-hero__photo {
	position: relative;
	width: 100%;
	aspect-ratio: 4 / 5;
	background:
		linear-gradient(160deg, rgba(250, 248, 245, 0.3) 0%, transparent 50%),
		linear-gradient(200deg, #e8ddd4 0%, #d4cfc4 35%, rgba(168, 184, 165, 0.45) 100%);
	border-radius: var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-xl);
	box-shadow: var(--shadow-photo);
	display: flex;
	align-items: flex-end;
	justify-content: center;
	overflow: hidden;
	transition: box-shadow var(--transition), transform var(--transition);
}

.section-hero__photo:hover {
	box-shadow: var(--shadow-card-hover);
	transform: translateY(-4px);
}

.section-hero__photo-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(
		135deg,
		rgba(250, 248, 245, 0.55) 0%,
		rgba(250, 248, 245, 0.15) 45%,
		rgba(250, 248, 245, 0.05) 100%
	);
	pointer-events: none;
	z-index: 1;
}

.section-hero__photo-light {
	position: absolute;
	top: 8%;
	right: 12%;
	width: 45%;
	height: 35%;
	background: radial-gradient(ellipse, rgba(255, 255, 255, 0.5) 0%, transparent 70%);
	pointer-events: none;
	z-index: 1;
}

.section-hero__photo-placeholder {
	position: relative;
	z-index: 2;
	padding-bottom: 2rem;
	font-size: 0.75rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-sage-action);
	opacity: 0.55;
}

/* Accompagnement
   -------------------------------------------------------------------------- */

.section-accompagnement > .container {
	position: relative;
	z-index: 1;
}

.section-accompagnement .section__header--left {
	position: relative;
}

.section-accompagnement .section__header--left::before {
	content: "";
	position: absolute;
	left: -2rem;
	top: 0.5rem;
	width: 1px;
	height: 4rem;
	background: linear-gradient(to bottom, var(--color-sage-dark), transparent);
	opacity: 0.35;
}

/* Cartes
   -------------------------------------------------------------------------- */

.cards-grid {
	display: grid;
	gap: 2rem;
}

.cards-grid--2 {
	grid-template-columns: repeat(2, 1fr);
}

.cards-grid--3 {
	grid-template-columns: repeat(3, 1fr);
}

.card {
	background-color: var(--color-offwhite);
	border: 1px solid rgba(127, 146, 124, 0.12);
	border-radius: var(--radius-lg);
	padding: 2.75rem;
	box-shadow: var(--shadow-soft);
	transition:
		border-color var(--transition),
		box-shadow var(--transition),
		transform var(--transition);
}

.section--alt .card,
.section-accompagnement .card,
.section-seances .card,
.section-contact .card {
	background-color: var(--color-offwhite);
}

.section-pourquoi .signes-grid__item,
.section-blog .card {
	background-color: var(--color-linen);
}

.card:hover {
	border-color: rgba(127, 146, 124, 0.28);
	box-shadow: var(--shadow-card-hover);
	transform: translateY(-4px);
}

.card__title {
	font-size: 1.375rem;
	margin-bottom: 1.375rem;
	color: var(--color-sage-action);
}

.card__content > * + * {
	margin-top: 1rem;
}

.card__content p {
	font-size: 1rem;
	line-height: 1.8;
}

.card--blog {
	padding: 0;
	overflow: hidden;
}

.card--blog .card__body {
	padding: 1.75rem 2rem 2rem;
}

.card__image {
	aspect-ratio: 16 / 10;
	background:
		linear-gradient(180deg, rgba(250, 248, 245, 0.4) 0%, transparent 40%),
		linear-gradient(135deg, #e5dcd2 0%, rgba(168, 184, 165, 0.35) 100%);
}

.card__image--placeholder {
	opacity: 0.7;
}

.card__badge {
	display: inline-block;
	margin-top: 0.75rem;
	padding: 0.375rem 1rem;
	font-size: 0.6875rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-sage-action);
	background-color: rgba(127, 146, 124, 0.1);
	border: 1px solid rgba(127, 146, 124, 0.15);
	border-radius: var(--radius-btn);
}

/* Pourquoi consulter
   -------------------------------------------------------------------------- */

.pourquoi-layout {
	display: grid;
	grid-template-columns: 0.9fr 1.1fr;
	gap: clamp(2.5rem, 5vw, 4.5rem);
	align-items: start;
}

.pourquoi-layout__header .section__title {
	text-align: left;
}

.pourquoi-layout__header .section__intro {
	text-align: left;
	margin-inline: 0;
	margin-bottom: 0;
}

.signes-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1rem;
	list-style: none;
}

.signes-grid__item {
	position: relative;
	padding: 1.5rem 1.75rem 1.5rem 2.25rem;
	font-size: 0.9375rem;
	line-height: 1.6;
	background-color: var(--color-linen);
	border: 1px solid rgba(127, 146, 124, 0.12);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-soft);
	transition:
		border-color var(--transition),
		background-color var(--transition),
		box-shadow var(--transition),
		transform var(--transition);
}

.signes-grid__item::before {
	content: "";
	position: absolute;
	left: 1rem;
	top: 50%;
	transform: translateY(-50%);
	width: 6px;
	height: 6px;
	background-color: var(--color-sage-dark);
	border-radius: 50%;
	opacity: 0.6;
	transition: opacity var(--transition);
}

.signes-grid__item:hover {
	border-color: rgba(127, 146, 124, 0.3);
	background-color: var(--color-offwhite);
	box-shadow: var(--shadow-card);
	transform: translateY(-2px);
}

.signes-grid__item:hover::before {
	opacity: 1;
}

/* Séances — layout asymétrique
   -------------------------------------------------------------------------- */

.seances-layout {
	display: grid;
	grid-template-columns: 0.75fr 1.25fr;
	gap: clamp(2.5rem, 6vw, 5rem);
	align-items: start;
}

.seances-layout__aside {
	position: sticky;
	top: calc(var(--header-height) + 2rem);
}

.seances-layout__aside .section__title {
	text-align: left;
	font-size: clamp(2rem, 4.5vw, 2.75rem);
}

.seances-layout__main .section__content {
	max-width: var(--text-max);
}

/* Qui suis-je
   -------------------------------------------------------------------------- */

.about-grid {
	display: grid;
	grid-template-columns: 0.95fr 1.05fr;
	gap: clamp(3rem, 6vw, 5.5rem);
	align-items: center;
}

.about-grid__photo {
	position: relative;
	aspect-ratio: 4 / 5;
	background:
		linear-gradient(160deg, rgba(250, 248, 245, 0.35) 0%, transparent 45%),
		linear-gradient(200deg, #e8ddd4 0%, #d9d2c8 40%, rgba(168, 184, 165, 0.4) 100%);
	border-radius: var(--radius-sm) var(--radius-xl) var(--radius-xl) var(--radius-xl);
	box-shadow: var(--shadow-photo);
	display: flex;
	align-items: flex-end;
	justify-content: center;
	overflow: hidden;
	transition: box-shadow var(--transition), transform var(--transition);
}

.about-grid__photo::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(120deg, rgba(250, 248, 245, 0.5) 0%, transparent 55%);
	pointer-events: none;
}

.about-grid__photo:hover {
	box-shadow: var(--shadow-card-hover);
	transform: translateY(-3px);
}

.about-grid__photo-placeholder {
	position: relative;
	z-index: 1;
	padding-bottom: 2rem;
	font-size: 0.75rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-sage-action);
	opacity: 0.55;
}

.about-grid__content .section__title,
.about-grid__content .section__intro {
	text-align: left;
	margin-inline: 0;
}

.valeurs {
	margin-top: 2.5rem;
	padding-top: 2rem;
	border-top: 1px solid rgba(127, 146, 124, 0.15);
}

.valeurs__title {
	font-family: var(--font-body);
	font-size: 0.75rem;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--color-sage-action);
	margin-bottom: 1rem;
}

.valeurs__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	list-style: none;
}

.valeurs__item {
	padding: 0.625rem 1.375rem;
	font-size: 0.9375rem;
	background-color: var(--color-linen);
	border: 1px solid rgba(127, 146, 124, 0.2);
	border-radius: var(--radius-btn);
	transition:
		background-color var(--transition),
		border-color var(--transition);
}

.valeurs__item:hover {
	background-color: rgba(168, 184, 165, 0.15);
	border-color: rgba(127, 146, 124, 0.35);
}

/* Disponibilités
   -------------------------------------------------------------------------- */

.disponibilites-layout {
	display: grid;
	grid-template-columns: 1fr 1.05fr;
	gap: clamp(2.5rem, 5vw, 5rem);
	align-items: center;
}

.disponibilites-layout__header .section__title,
.disponibilites-layout__header .section__intro {
	text-align: left;
	margin-inline: 0;
}

.disponibilites-layout__header .section__intro {
	margin-bottom: 1.25rem;
}

.disponibilites-layout__header .section__intro--reassurance {
	margin-bottom: 0;
	color: var(--color-sage-action);
	font-size: 1.0625rem;
	line-height: 1.85;
}

.disponibilites-layout__body {
	width: 100%;
}

/* Calendrier · interactif premium
   -------------------------------------------------------------------------- */

.calendar-preview {
	padding: clamp(2rem, 4vw, 2.75rem);
	background: rgba(250, 248, 245, 0.78);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: 32px;
	box-shadow: 0 8px 48px rgba(127, 146, 124, 0.08);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	transition: box-shadow var(--transition), border-color var(--transition);
	--calendar-day-size: 2.75rem;
	--calendar-grid-gap: 0.375rem;
}

.calendar-preview--booking-mode,
.calendar-preview--booking {
	box-shadow: none;
	background: transparent;
	border: 0;
	padding: 0;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

.calendar-preview--booking-mode:hover,
.calendar-preview--booking:hover {
	box-shadow: none;
	border-color: transparent;
}

.calendar-preview:hover {
	border-color: rgba(127, 146, 124, 0.22);
	box-shadow: 0 12px 56px rgba(127, 146, 124, 0.1);
}

.calendar-preview__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1.75rem;
	gap: 1rem;
}

.calendar-preview__month {
	font-family: var(--font-heading);
	font-size: clamp(1.25rem, 2.5vw, 1.5rem);
	color: var(--color-text);
	text-align: center;
	flex: 1;
	margin: 0;
}

.calendar-preview__nav {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 50%;
	color: var(--color-sage-action);
	background: rgba(127, 146, 124, 0.08);
	border: 1px solid rgba(127, 146, 124, 0.12);
	flex-shrink: 0;
	cursor: pointer;
	padding: 0;
	font-family: inherit;
	transition:
		background-color var(--transition),
		border-color var(--transition),
		transform var(--transition),
		box-shadow var(--transition);
}

.calendar-preview__nav:hover {
	background: rgba(127, 146, 124, 0.14);
	border-color: rgba(127, 146, 124, 0.22);
}

.calendar-preview__nav:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 2px;
}

.calendar-preview__nav-icon {
	font-size: 1.25rem;
	line-height: 1;
	opacity: 0.7;
}

.calendar-preview__weekdays {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 0.375rem;
	margin-bottom: 0.75rem;
}

.calendar-preview__weekday {
	font-size: 0.6875rem;
	font-weight: 400;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-align: center;
	color: var(--color-sage-dark);
	opacity: 0.75;
	padding-bottom: 0.25rem;
}

.calendar-preview__grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	grid-template-rows: repeat(6, minmax(var(--calendar-day-size), 1fr));
	gap: var(--calendar-grid-gap);
	min-height: calc((var(--calendar-day-size) * 6) + (var(--calendar-grid-gap) * 5));
}

.calendar-preview__day {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.2rem;
	min-height: 2.75rem;
	border-radius: 12px;
	font-size: 0.875rem;
	color: #4a4a4a;
	background: transparent;
	border: 1px solid transparent;
	transition:
		background-color var(--transition),
		border-color var(--transition),
		color var(--transition),
		transform var(--transition),
		box-shadow var(--transition);
}

button.calendar-preview__day {
	font-family: inherit;
	cursor: pointer;
	padding: 0;
	appearance: none;
	-webkit-appearance: none;
}

button.calendar-preview__day:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 2px;
	z-index: 1;
}

.calendar-preview__day--empty {
	visibility: hidden;
	pointer-events: none;
	border-color: transparent;
	background: transparent;
}

.calendar-preview__day--available {
	background: rgba(168, 184, 165, 0.28);
	border-color: rgba(168, 184, 165, 0.85);
	color: #3d4f3a;
}

button.calendar-preview__day--available:hover:not(.calendar-preview__day--selected) {
	background: rgba(168, 184, 165, 0.4);
	border-color: rgba(127, 146, 124, 0.65);
	transform: translateY(-1px);
	box-shadow: 0 4px 16px rgba(127, 146, 124, 0.12);
}

.calendar-preview__day--limited {
	background: rgba(237, 231, 223, 0.85);
	border-color: rgba(220, 205, 191, 0.95);
	color: #6b5a48;
}

button.calendar-preview__day--limited:hover:not(.calendar-preview__day--selected) {
	background: rgba(237, 231, 223, 1);
	border-color: rgba(220, 205, 191, 1);
	transform: translateY(-1px);
	box-shadow: 0 4px 16px rgba(220, 205, 191, 0.35);
}

.calendar-preview__day--full {
	background: rgba(225, 222, 217, 0.55);
	border-color: rgba(200, 196, 190, 0.45);
	color: #9a9590;
	cursor: default;
	pointer-events: none;
}

.calendar-preview__day--full .calendar-preview__day-num {
	text-decoration: line-through;
	text-decoration-color: rgba(154, 149, 144, 0.45);
}

.calendar-preview__day--unavailable {
	background: transparent;
	border-color: transparent;
	color: rgba(90, 85, 80, 0.72);
	cursor: default;
	pointer-events: none;
}

.calendar-preview__day--selected,
.calendar-preview__day--selected.calendar-preview__day--available,
.calendar-preview__day--selected.calendar-preview__day--limited {
	background: var(--color-sage-action);
	border-color: var(--color-sage-action);
	color: #fff;
	box-shadow: 0 4px 20px rgba(127, 146, 124, 0.25);
	transform: none;
}

.calendar-preview__day--selected .calendar-preview__day-num {
	text-decoration: none;
	color: #fff;
	font-weight: 700;
}

.calendar-preview__day--selected .calendar-preview__day-icon {
	background: #fff;
	opacity: 0.9;
}

.calendar-preview__day--today:not(.calendar-preview__day--selected) {
	box-shadow: inset 0 0 0 1.5px rgba(127, 146, 124, 0.45);
}

.calendar-preview__day--today:not(.calendar-preview__day--selected) .calendar-preview__day-num {
	font-weight: 700;
}

.calendar-preview__day-num {
	line-height: 1;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	color: inherit;
}

.calendar-preview__day--available .calendar-preview__day-num {
	color: #3d4f3a;
	font-weight: 700;
}

.calendar-preview__day--limited .calendar-preview__day-num {
	color: #6b5a48;
}

.calendar-preview__day--selected .calendar-preview__day-num {
	color: #fff;
}

.calendar-preview__day--unavailable .calendar-preview__day-num {
	color: rgba(90, 85, 80, 0.72);
	font-weight: 500;
}

.calendar-preview__day--vacation,
.calendar-preview__day--vacation.calendar-preview__day--unavailable {
	background: rgba(237, 231, 223, 0.55);
	border-color: rgba(200, 185, 170, 0.45);
	color: #6b5f55;
	cursor: default;
}

button.calendar-preview__day--vacation {
	cursor: pointer;
	pointer-events: auto;
}

.calendar-preview__day--vacation .calendar-preview__day-num {
	color: #6b5f55;
	font-weight: 700;
}

.calendar-preview__day-icon--vacation {
	width: 8px;
	height: 8px;
	border-radius: 2px;
	background: rgba(180, 160, 140, 0.75);
	opacity: 0.85;
}

.calendar-preview.is-loading-month .calendar-preview__grid {
	opacity: 0.55;
	pointer-events: none;
	transition: opacity 0.2s ease;
}

.calendar-preview__day--full .calendar-preview__day-num {
	color: #8a8580;
}

.booking-panel__body--calendar .calendar-preview__weekday {
	color: #6b6560;
	opacity: 1;
}

.booking-panel__body--calendar .calendar-preview__day--unavailable,
.booking-panel__body--calendar .calendar-preview__day--unavailable .calendar-preview__day-num {
	color: #6b6560;
}

.booking-panel__body--calendar .calendar-preview__day--full,
.booking-panel__body--calendar .calendar-preview__day--full .calendar-preview__day-num {
	color: #6b6560;
}

.booking-panel__body--calendar .calendar-preview__nav-icon {
	opacity: 1;
}

.calendar-preview__day-icon {
	display: block;
	width: 5px;
	height: 5px;
	border-radius: 50%;
	flex-shrink: 0;
}

.calendar-preview__day-icon--available {
	background: #5a6f57;
	opacity: 0.75;
}

.calendar-preview__day-icon--limited {
	width: 7px;
	height: 3px;
	border-radius: 2px;
	background: #9a8575;
	opacity: 0.85;
}

.calendar-preview__day-icon--full {
	width: 8px;
	height: 2px;
	border-radius: 1px;
	background: #b0aaa4;
	opacity: 0.7;
}

.calendar-preview__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1.5rem;
	list-style: none;
	margin: 1.75rem 0 0;
	padding: 1.5rem 0 0;
	border-top: 1px solid rgba(127, 146, 124, 0.1);
}

.calendar-preview__legend-item {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.calendar-preview__legend-swatch {
	width: 0.75rem;
	height: 0.75rem;
	border-radius: 4px;
	flex-shrink: 0;
	border: 1px solid transparent;
}

.calendar-preview__legend-swatch--available {
	background: rgba(168, 184, 165, 0.35);
	border-color: rgba(168, 184, 165, 0.85);
}

.calendar-preview__legend-swatch--limited {
	background: rgba(237, 231, 223, 0.9);
	border-color: rgba(220, 205, 191, 0.95);
}

.calendar-preview__legend-swatch--full {
	background: rgba(225, 222, 217, 0.65);
	border-color: rgba(200, 196, 190, 0.5);
}

.calendar-preview__legend-swatch--unavailable {
	background: transparent;
	border-color: rgba(154, 149, 144, 0.35);
	border-style: dashed;
}

.calendar-preview__legend-swatch--vacation {
	background: rgba(237, 231, 223, 0.85);
	border-color: rgba(200, 185, 170, 0.65);
}

.calendar-preview__legend-swatch--pending {
	background: rgba(212, 168, 83, 0.35);
	border-color: rgba(180, 130, 40, 0.45);
}

.calendar-preview__legend-swatch--confirmed {
	background: rgba(127, 146, 124, 0.55);
	border-color: rgba(95, 115, 92, 0.65);
}

.calendar-preview__slot-status {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
	width: 100%;
	padding: 0.75rem 1rem;
	background: rgba(250, 248, 245, 0.9);
	border: 1px solid rgba(127, 146, 124, 0.14);
	border-radius: var(--radius-sm);
}

.calendar-preview__slot-status-time {
	font-size: 0.875rem;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	color: var(--color-text);
	min-width: 3.5rem;
}

.calendar-preview__slot-status-label {
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	padding: 0.2rem 0.625rem;
	border-radius: 999px;
}

.calendar-preview__slot-status-name {
	font-size: 0.8125rem;
	color: var(--color-text);
	opacity: 0.78;
}

.calendar-preview__slot-status--available .calendar-preview__slot-status-label {
	color: #4a5f47;
	background: rgba(168, 184, 165, 0.22);
}

.calendar-preview__slot-status--pending .calendar-preview__slot-status-label {
	color: #7a5a12;
	background: rgba(212, 168, 83, 0.28);
}

.calendar-preview__slot-status--confirmed .calendar-preview__slot-status-label {
	color: #fff;
	background: var(--color-sage-action);
}

.calendar-preview__slots-list:has(.calendar-preview__slot-status) {
	flex-direction: column;
	align-items: stretch;
	gap: 0.5rem;
}

.calendar-preview__legend-label {
	font-size: 0.75rem;
	color: var(--color-text);
	opacity: 0.85;
	line-height: 1.3;
}

.calendar-preview__slots {
	margin-top: 1.75rem;
	padding-top: 1.5rem;
	border-top: 1px solid rgba(127, 146, 124, 0.1);
	min-height: 12.5rem;
}

.calendar-preview__slots-title {
	font-family: var(--font-heading);
	font-size: 1.0625rem;
	font-weight: 400;
	color: var(--color-text);
	margin: 0 0 0.5rem;
}

.calendar-preview__slots-hint,
.calendar-preview__slots-empty {
	font-size: 0.875rem;
	color: var(--color-text);
	opacity: 0.85;
	margin: 0 0 1rem;
	line-height: 1.5;
}

.calendar-preview__slots-list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.625rem;
	margin-bottom: 0.25rem;
	min-height: 2.875rem;
}

.calendar-preview__slot {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 4.5rem;
	padding: 0.625rem 1rem;
	font-family: inherit;
	font-size: 0.875rem;
	font-variant-numeric: tabular-nums;
	color: #4a5f47;
	background: rgba(168, 184, 165, 0.18);
	border: 1px solid rgba(168, 184, 165, 0.65);
	border-radius: 999px;
	cursor: pointer;
	transition:
		background-color var(--transition),
		border-color var(--transition),
		color var(--transition),
		box-shadow var(--transition);
}

.calendar-preview__slot:hover {
	background: rgba(168, 184, 165, 0.3);
	border-color: rgba(127, 146, 124, 0.55);
}

.calendar-preview__slot:focus-visible {
	outline: 2px solid var(--color-sage-dark);
	outline-offset: 2px;
}

.calendar-preview__slot--selected {
	background: var(--color-sage-action);
	border-color: var(--color-sage-action);
	color: #fff;
	box-shadow: 0 4px 16px rgba(127, 146, 124, 0.2);
}

.calendar-preview__slot--selected:hover {
	color: var(--color-offwhite);
	background: var(--color-sage-action-hover);
	border-color: var(--color-sage-action-hover);
}

.calendar-preview__cta {
	margin-top: 1.25rem;
	text-align: center;
	min-height: 3.25rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.calendar-preview__cta--inactive {
	visibility: hidden;
	pointer-events: none;
}

.calendar-preview__cta .btn {
	width: 100%;
	max-width: 20rem;
}

.encart {
	padding: 3.25rem 2.75rem;
	background-color: var(--color-offwhite);
	border: 1px solid rgba(127, 146, 124, 0.15);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-soft);
	transition: box-shadow var(--transition), border-color var(--transition), transform var(--transition);
}

.encart:hover {
	border-color: rgba(127, 146, 124, 0.3);
	box-shadow: var(--shadow-card);
}

.encart__list {
	list-style: none;
}

.encart__item {
	padding: 1rem 0;
	font-size: 1.0625rem;
	line-height: 1.6;
	color: var(--color-text);
}

.encart__item + .encart__item {
	border-top: 1px solid rgba(127, 146, 124, 0.12);
}

/* Contact
   -------------------------------------------------------------------------- */

.contact-grid {
	display: grid;
	grid-template-columns: 1fr 1.1fr;
	gap: clamp(2.5rem, 5vw, 4rem);
	align-items: start;
}

.contact-list {
	list-style: none;
	margin-bottom: 2rem;
}

.contact-list__item {
	padding-block: 1.125rem;
	border-bottom: 1px solid rgba(127, 146, 124, 0.12);
	transition: border-color var(--transition);
}

.contact-list__item:first-child {
	border-top: 1px solid rgba(127, 146, 124, 0.12);
}

.contact-list__item:hover {
	border-color: rgba(127, 146, 124, 0.25);
}

.contact-list__label {
	display: block;
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--color-sage-action);
	margin-bottom: 0.375rem;
}

.contact-list__value {
	font-size: 1.0625rem;
}

.contact-grid__note {
	max-width: var(--text-max);
	font-size: 1rem;
	line-height: 1.85;
}

.contact-grid__note + .contact-grid__note {
	margin-top: 0.875rem;
}

.map-placeholder {
	aspect-ratio: 4 / 3;
	background:
		linear-gradient(145deg, rgba(250, 248, 245, 0.3) 0%, transparent 50%),
		linear-gradient(160deg, #e5dcd2 0%, rgba(168, 184, 165, 0.3) 100%);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-soft);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 2rem;
	transition: box-shadow var(--transition);
}

.map-placeholder:hover {
	box-shadow: var(--shadow-card);
}

.map-placeholder__text {
	font-size: 0.875rem;
	text-align: center;
	color: var(--color-sage-action);
	opacity: 0.7;
}

/* Front page — Footer
   -------------------------------------------------------------------------- */

.home .site-footer {
	margin-top: 0;
}

/* ==========================================================================
   Footer
   ========================================================================== */

.site-footer {
	background-color: var(--color-offwhite);
	border-top: 1px solid rgba(217, 217, 217, 0.6);
	padding-block: 2.5rem;
	margin-top: var(--section-spacing);
}

.site-footer__inner {
	text-align: center;
}

.site-footer__nav {
	margin-bottom: clamp(1.25rem, 2.5vw, 1.75rem);
}

.site-footer__nav-list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.625rem clamp(0.875rem, 2vw, 1.375rem);
	list-style: none;
	margin: 0;
	padding: 0;
}

.site-footer__nav-item {
	margin: 0;
}

.site-footer__nav-link {
	display: inline-flex;
	align-items: center;
	padding: 0.25rem 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--color-text);
	text-decoration: none;
	opacity: 0.82;
	transition: color var(--transition), opacity var(--transition);
}

.site-footer__nav-link:hover,
.site-footer__nav-link:focus {
	color: var(--color-sage-action);
	opacity: 1;
	text-decoration: none;
}

.site-footer__nav-link:focus-visible {
	outline: var(--btn-focus-outline);
	outline-offset: var(--btn-focus-outline-offset);
	border-radius: 2px;
}

.site-footer__nav-link[aria-current="page"] {
	color: var(--color-sage-action);
	opacity: 1;
}

.site-footer__legal {
	margin-bottom: clamp(0.875rem, 2vw, 1.125rem);
}

.site-footer__legal-list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.375rem clamp(0.625rem, 1.5vw, 0.875rem);
	list-style: none;
	margin: 0;
	padding: 0;
}

.site-footer__legal-item {
	display: inline-flex;
	align-items: center;
	margin: 0;
}

.site-footer__legal-item + .site-footer__legal-item::before {
	content: "|";
	margin-right: clamp(0.625rem, 1.5vw, 0.875rem);
	font-family: var(--font-body);
	font-size: 0.8125rem;
	line-height: 1;
	color: var(--color-text);
	opacity: 0.45;
	pointer-events: none;
	user-select: none;
}

.site-footer__legal-link {
	display: inline-flex;
	align-items: center;
	padding: 0.25rem 0;
	font-family: var(--font-body);
	font-size: clamp(0.875rem, 1.2vw, 1rem);
	line-height: 1.5;
	color: var(--color-text);
	text-decoration: none;
	opacity: 0.78;
	transition: color var(--transition), opacity var(--transition);
}

.site-footer__legal-link:hover,
.site-footer__legal-link:focus {
	color: var(--color-sage-action);
	opacity: 1;
	text-decoration: none;
}

.site-footer__legal-link:focus-visible {
	outline: var(--btn-focus-outline);
	outline-offset: var(--btn-focus-outline-offset);
	border-radius: 2px;
}

.site-footer__legal-link[aria-current="page"] {
	color: var(--color-sage-action);
	opacity: 1;
}

.site-footer__copyright {
	font-size: 0.875rem;
	color: var(--color-text);
	opacity: 0.85;
}

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 1024px) {
	.section-hero__grid {
		grid-template-columns: 1fr;
		gap: 3.5rem;
	}

	.section-hero__content {
		max-width: none;
	}

	.section-hero__media {
		justify-content: flex-start;
	}

	.section-hero__photo-wrap {
		max-width: 100%;
	}

	.section-hero__photo {
		aspect-ratio: 16 / 10;
		border-radius: var(--radius-lg);
	}

	.deco--pos-top-right,
	.deco--pos-bottom-left {
		opacity: 0.05;
	}

	.deco--pos-photo {
		left: -8%;
		bottom: -8%;
	}

	.pourquoi-layout,
	.seances-layout,
	.disponibilites-layout {
		grid-template-columns: 1fr;
		gap: 2.5rem;
	}

	.seances-layout__aside {
		position: static;
	}

	.about-grid,
	.contact-grid {
		grid-template-columns: 1fr;
		gap: 2.5rem;
	}

	.about-grid__content .section__title,
	.about-grid__content .section__intro {
		text-align: left;
	}
}

@media (max-width: 768px) {
	:root {
		--header-height: 76px;
		--header-height-scrolled: 64px;
		--deco-opacity: 0.05;
	}

	.site-footer__nav-list,
	.site-footer__legal-list {
		flex-direction: row;
		flex-wrap: wrap;
		justify-content: center;
		gap: 0.75rem 1rem;
	}

	.site-footer__nav-link {
		padding: 0.375rem 0;
		font-size: 0.9375rem;
	}

	.site-footer__legal-item + .site-footer__legal-item::before {
		display: none;
	}

	.site-footer__legal-link {
		padding: 0.375rem 0;
	}

	.deco--hero-branch,
	.deco--hero-circle {
		display: none;
	}

	.section-pourquoi::after,
	.section-seances::after,
	.section-about::after,
	.section-blog::after,
	.section-contact::after,
	.section-accompagnement::after {
		opacity: 0.05;
	}

	.section-accompagnement .section__header--left::before {
		display: none;
	}

	.site-nav__list {
		gap: 1.25rem;
	}

	.site-header__inner {
		gap: 0;
	}

	.section-hero {
		min-height: auto;
		padding-block: 4rem;
	}

	.section-accompagnement,
	.section-seances,
	.section-disponibilites {
		padding-block: 4rem;
	}

	.section-pourquoi,
	.section-blog {
		padding-block: 5rem;
	}

	.section-about {
		padding-block: 5rem;
	}

	.section-contact {
		padding-block: 4.5rem;
	}

	.cards-grid--2,
	.cards-grid--3 {
		grid-template-columns: 1fr;
	}

	.signes-grid {
		grid-template-columns: 1fr;
	}

	.card {
		padding: 2rem;
	}

	.calendar-preview {
		border-radius: 24px;
		--calendar-day-size: 2.35rem;
	}

	.calendar-preview:not(.calendar-preview--booking):not(.calendar-preview--booking-mode) {
		padding: 1.5rem 1.25rem;
	}

	.calendar-preview__day {
		min-height: 2.35rem;
		font-size: 0.8125rem;
		border-radius: 10px;
	}

	.booking-panel__body--calendar .calendar-preview__day {
		min-height: 2.75rem;
	}

	.calendar-preview__legend {
		flex-direction: column;
		gap: 0.625rem;
	}

	.calendar-preview__slots {
		min-height: 11.5rem;
	}

	.calendar-preview__slots-list {
		gap: 0.5rem;
	}

	.calendar-preview__slot {
		min-width: 4rem;
		padding: 0.5rem 0.875rem;
		font-size: 0.8125rem;
	}

	.calendar-preview__cta .btn {
		max-width: none;
	}

	.section-hero__actions {
		flex-direction: column;
		align-items: stretch;
		gap: 0.875rem;
	}

	.section-hero__actions .btn {
		width: 100%;
		max-width: 22rem;
	}
}

@media (max-width: 480px) {
	.container {
		padding-inline: 1.25rem;
	}

	.section__intro {
		font-size: 1.0625rem;
	}

	.encart {
		padding: 2rem 1.5rem;
	}

	.calendar-preview:not(.calendar-preview--booking):not(.calendar-preview--booking-mode) {
		--calendar-day-size: 2.1rem;
		--calendar-grid-gap: 0.25rem;
	}

	.calendar-preview:not(.calendar-preview--booking):not(.calendar-preview--booking-mode) .calendar-preview__grid {
		gap: var(--calendar-grid-gap);
	}

	.calendar-preview:not(.calendar-preview--booking):not(.calendar-preview--booking-mode) .calendar-preview__weekdays {
		gap: 0.25rem;
	}

	.calendar-preview:not(.calendar-preview--booking):not(.calendar-preview--booking-mode) .calendar-preview__day {
		min-height: 2.1rem;
		font-size: 0.75rem;
	}

	.calendar-preview__slots {
		min-height: 11rem;
	}
}
