/*
Theme Name: Cœur de Soi
Author: Chamades
Description: Thème bloc (FSE) du réseau de cabinets partagés Cœur de Soi. Présentation uniquement : la charte vit dans theme.json, la logique métier dans le plugin coeur-de-soi-core.
Version: 0.7.1
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 8.1
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: coeur-de-soi
*/

/* Reset accessible : pas de suppression d'outline, respect des préférences utilisateur. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 1rem; }
/* Ancres : l'en-tête n'est collant qu'à partir de 40em (voir plus bas), on réserve sa hauteur seulement alors. */
@media (min-width: 40em) { html { scroll-padding-top: 6rem; } } /* en-tête collant avec logo : ~88 px */
body { margin: 0; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
img, svg, video { max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; color: inherit; }
:where(p, li, figcaption) { overflow-wrap: break-word; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

/* Focus visible : anneau 3 px bleu nuit (10:1 sur fond), décalé pour rester lisible sur fonds colorés. */
:focus-visible {
	outline: 3px solid var(--wp--preset--color--primaire);
	outline-offset: 3px;
	border-radius: 2px;
}
.wp-block-button__link:focus-visible {
	outline-color: var(--wp--preset--color--texte);
	box-shadow: 0 0 0 6px var(--wp--preset--color--fond);
}

/* Lien d'évitement : visible uniquement au focus. */
.cds-skip-link {
	position: absolute;
	left: 1rem;
	top: 0;
	z-index: 100000;
	padding: 0.75rem 1.25rem;
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
	font-weight: 600;
	border-radius: 0 0 10px 10px;
	transform: translateY(-120%);
}
.cds-skip-link:focus { transform: translateY(0); color: var(--wp--preset--color--fond); }

/* Texte réservé aux technologies d'assistance (WordPress ne charge pas toujours sa propre règle). */
.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* Cible du lien d'évitement : pas d'anneau parasite sur le conteneur principal. */
main:focus { outline: none; }

/* Éléments communs : arrondi doux constant, cibles tactiles >= 44 px. */
.wp-block-button__link { min-height: 44px; display: inline-flex; align-items: center; }
.wp-block-image img, .wp-block-post-featured-image img { border-radius: 10px; }

/* ===== Accueil et « Nous rejoindre » (patterns coeur-de-soi/accueil et coeur-de-soi/rejoindre) ===== */

/* Sections pleine largeur : gouttière latérale garantie même si WordPress n'ajoute pas le padding racine. */
.cds-section { padding-inline: var(--wp--preset--spacing--30); }

/* Hero : lisible sans image, dégradé doux gris clair -> blanc. */
.cds-hero { background-image: linear-gradient(160deg, var(--wp--preset--color--fond-alt) 0%, var(--wp--preset--color--fond) 100%); }
.cds-hero.has-fond-alt-background-color { background-color: var(--wp--preset--color--fond-alt); }
.cds-hero h1 { max-width: 22ch; text-wrap: balance; }
.cds-hero--page h1 { max-width: none; }
.cds-actions { gap: 0.75rem 1rem; }

/* Bouton secondaire (contour) : couleurs explicites, contrastes >= 4,5:1 sur fond et fond-alt. */
.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--primaire);
	border: 2px solid var(--wp--preset--color--primaire);
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}

/* Visuel décoratif : groupe vide, aplat doux tant qu'aucune image n'est fournie. */
.cds-visuel {
	min-height: 12rem;
	border-radius: 10px;
	background: linear-gradient(135deg, var(--wp--preset--color--bordure) 0%, var(--wp--preset--color--fond-alt) 60%, var(--wp--preset--color--fond) 100%);
}
@media (min-width: 782px) { .cds-visuel { min-height: 20rem; } }

/* Avantages : cartes simples sur fond gris clair. */
.cds-avantage {
	background: #fff;
	border: 1px solid var(--wp--preset--color--bordure);
	border-radius: 10px;
	padding: 1.5rem;
}
.cds-avantage h3 { margin-top: 0; }
.cds-avantage p:last-child { margin-bottom: 0; }

/* Bloc tarif. */
.cds-tarif {
	background: #fff;
	border: 2px solid var(--wp--preset--color--primaire);
	border-radius: 10px;
	padding: 2rem 1.5rem;
	max-width: 32rem;
	margin-inline: auto;
	box-shadow: var(--wp--preset--shadow--douce);
}
.cds-tarif__montant {
	margin-top: 0;
	font-family: var(--wp--preset--font-family--titres);
	font-weight: 600;
	font-size: var(--wp--preset--font-size--tres-grand);
	line-height: 1.1;
	color: var(--wp--preset--color--primaire);
}

/* Liste des salles (shortcode [cds_salles_statuts]). */
.cds-salles {
	list-style: none;
	margin: 0 0 var(--wp--preset--spacing--40);
	padding: 0;
	display: grid;
	gap: 1.5rem;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
}
.cds-salles-vide { color: var(--wp--preset--color--texte-secondaire); }
/* Carte de salle : image, titre, description, superficie, équipements, disponibilité. */
.cds-carte-salle {
	display: flex;
	flex-direction: column;
	margin: 0;
	overflow: hidden;
	background: #fff;
	color: var(--wp--preset--color--texte);
	border: 1px solid var(--wp--preset--color--bordure);
	border-radius: 12px;
	box-shadow: 0 2px 6px rgba(23, 37, 42, 0.06), 0 10px 24px rgba(23, 37, 42, 0.06);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.cds-carte-salle:hover { transform: translateY(-3px); box-shadow: 0 4px 10px rgba(23, 37, 42, 0.08), 0 16px 32px rgba(23, 37, 42, 0.1); }
.cds-carte-salle__media {
	aspect-ratio: 4 / 3;
	background: linear-gradient(135deg, var(--wp--preset--color--bleu-ciel) 0%, var(--wp--preset--color--fond-alt) 70%);
	border-bottom: 4px solid var(--cds-statut-couleur, var(--wp--preset--color--bordure));
}
.cds-carte-salle__image { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 0 !important; }
.cds-carte-salle__corps { display: flex; flex-direction: column; gap: 0.6rem; flex: 1; padding: 1.25rem 1.5rem 1.5rem; }
.cds-carte-salle__corps > * { margin: 0; }
.cds-carte-salle__titre { font-size: var(--wp--preset--font-size--moyen); color: var(--wp--preset--color--primaire); }
.cds-carte-salle__description { color: var(--wp--preset--color--texte); }
.cds-carte-salle__superficie,
.cds-carte-salle__libelle { font-size: var(--wp--preset--font-size--petit); color: var(--wp--preset--color--texte-secondaire); }
.cds-carte-salle__libelle { font-weight: 600; }
.cds-carte-salle__superficie .cds-carte-salle__libelle { font-size: inherit; }
.cds-carte-salle__equipements { display: flex; flex-wrap: wrap; gap: 0.4rem; padding: 0; list-style: none; }
.cds-carte-salle__equipements li {
	margin: 0;
	padding: 0.2rem 0.65rem;
	font-size: var(--wp--preset--font-size--petit);
	border-radius: 999px;
	background: var(--wp--preset--color--fond-alt);
	border: 1px solid var(--wp--preset--color--bordure);
}
.cds-carte-salle__statut { margin-top: auto !important; align-self: flex-start; }
.cds-carte-salle__note { font-size: var(--wp--preset--font-size--petit); color: var(--wp--preset--color--texte-secondaire); }
.cds-carte-salle--disponible { --cds-statut-couleur: #2F5A3E; }
.cds-carte-salle--quelques_jours,
.cds-carte-salle--un_jour { --cds-statut-couleur: #6E4A17; }
.cds-carte-salle--complete { --cds-statut-couleur: #4B4F49; }
.cds-carte-salle__titre a { color: inherit; text-decoration: none; }
.cds-carte-salle__titre a:hover, .cds-carte-salle__titre a:focus-visible { text-decoration: underline; text-underline-offset: 0.2em; }
.cds-carte-salle__visite a { display: inline-block; padding-block: 0.6rem; font-weight: 600; }

/* Page d'une salle (/nos-salles/<salle>/) */
.cds-salle-page__fil ol { display: flex; flex-wrap: wrap; gap: 0.25rem 0.5rem; margin: 0 0 1rem; padding: 0; list-style: none; font-size: var(--wp--preset--font-size--petit); color: var(--wp--preset--color--texte-secondaire); }
.cds-salle-page__fil li + li::before { content: "›" / ""; margin-right: 0.5rem; }
.cds-salle-page__titre { margin-bottom: 0.25rem; }
.cds-salle-page__lieu { margin-top: 0; font-size: var(--wp--preset--font-size--moyen); color: var(--wp--preset--color--texte-secondaire); }
.cds-salle-page__galerie { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; margin: 1.5rem 0; padding: 0; list-style: none; }
.cds-salle-page__galerie img { display: block; width: 100%; height: auto; border-radius: 12px; }
.cds-salle-page__caracteristiques { display: grid; gap: 0.75rem; margin: 0 0 1.5rem; }
.cds-salle-page__caracteristiques > div { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr; gap: 0.5rem 1rem; }
.cds-salle-page__caracteristiques dt { font-weight: 600; }
.cds-salle-page__caracteristiques dd { margin: 0; }
.cds-salle-page__equipements { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0; padding: 0; list-style: none; }
.cds-salle-page__equipements li { margin: 0; padding: 0.2rem 0.65rem; font-size: var(--wp--preset--font-size--petit); border-radius: 999px; background: var(--wp--preset--color--fond-alt); border: 1px solid var(--wp--preset--color--bordure); }
.cds-salle-page__note { font-size: var(--wp--preset--font-size--petit); color: var(--wp--preset--color--texte-secondaire); }
.cds-salle-page__action { margin: 2rem 0; }
.cds-salle-page__autres { padding-left: 1.25rem; }
@media (max-width: 600px) { .cds-salle-page__caracteristiques > div { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .cds-carte-salle, .cds-carte-salle:hover { transition: none; transform: none; } }
/* Statut : pictogramme + libellé texte + bordure (jamais la couleur seule). Paires texte/fond >= 4,5:1. */
.cds-statut {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	align-self: flex-start;
	min-height: 2.25rem;
	margin: 0;
	padding: 0.25rem 0.875rem;
	border: 1px solid currentColor;
	border-radius: 999px;
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.3;
}
.cds-statut--disponible { color: #2F5A3E; background: #E3EFE6; }
.cds-statut--quelques_jours,
.cds-statut--un_jour { color: #6E4A17; background: #F6E9D3; }
.cds-statut--complete { color: #4B4F49; background: #ECECE8; }
.cds-statut__icone { font-size: 1rem; line-height: 1; }

/* FAQ : blocs « Détails » natifs, en-tête cliquable >= 44 px et focus visible. */
.wp-block-details { border-bottom: 1px solid var(--wp--preset--color--bordure); padding: 0; }
.wp-block-details summary {
	min-height: 44px;
	padding: 0.75rem 0;
	font-weight: 600;
	cursor: pointer;
}
.wp-block-details[open] summary { padding-bottom: 0.25rem; }
.wp-block-details > :not(summary) { margin-block: 0 1rem; }

/* CTA final : séparé de la section précédente par un filet. */
.cds-cta-final { border-top: 1px solid var(--wp--preset--color--bordure); }

/* Étapes de la page « Nous rejoindre ». */
.cds-etapes { padding-left: 1.5rem; }
.cds-etapes li { margin-block: 0.5rem; padding-left: 0.25rem; }

/* Mobile : colonnes empilées avec un peu d'air ; desktop : formulaire visible à côté des étapes. */
.cds-demande__colonnes { gap: 2rem; }

@media (forced-colors: active) {
	.cds-statut, .cds-carte-salle, .cds-tarif, .cds-avantage { border: 1px solid CanvasText; }
}

/* ===== Navigation (menu principal et liens légaux) ===== */
.cds-menu__liste,
.cds-liens-legaux__liste,
.cds-lien-espace__liste {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.cds-liens-legaux__liste,
.cds-lien-espace__liste { justify-content: center; font-size: var(--wp--preset--font-size--petit, 0.9rem); }
/* Accès « Espace thérapeute » (DEV-131) : public précis, pas une information légale ; filet de séparation sous les liens légaux. */
.cds-lien-espace { margin-top: 0.75rem; padding-top: 0.5rem; border-top: 1px solid currentColor; }
.cds-menu a,
.cds-liens-legaux a,
.cds-lien-espace a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--wp--preset--color--primaire, #303E7A);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}
.cds-menu a:is([aria-current="page"], [aria-current="true"]),
.cds-lien-espace a[aria-current="page"] { font-weight: 600; text-decoration-thickness: 2px; }

/* ===== Bandeau d'annonce ===== */
.cds-bandeau {
	margin: 0;
	padding: 0.75rem 1rem;
	text-align: center;
	font-weight: 600;
	color: #FFFFFF;
	background: var(--wp--preset--color--primaire, #303E7A); /* blanc sur bleu nuit : 10:1 */
}

/* =====================================================================
   En-tête collant (toutes les pages) et transparent en haut de l'accueil
   ===================================================================== */
/* Sous 40em (zoom 400 % / petit écran) l'en-tête peut tenir sur 3 lignes : il reste dans le flux, non collant. */
header.wp-block-template-part {
	background: #FFFFFF;
	transition: background-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease;
}
@media (min-width: 40em) {
	header.wp-block-template-part {
		position: sticky;
		top: var(--wp-admin--admin-bar--height, 0px);
		z-index: 50;
	}
}
.cds-defile header.wp-block-template-part { box-shadow: 0 2px 14px rgba(23, 37, 42, 0.12); }
.cds-entete__barre { padding-inline: var(--wp--preset--spacing--30); align-items: center; }

/* Logo du cabinet (MS-06) : image choisie dans « Réglages > Identité du site » de chaque site (bloc Logo du site, absent
   si aucun logo n'est défini). Décoratif (le nom du cabinet est juste à côté) ; pastille blanche pour rester lisible
   sur l'en-tête transparent au-dessus de la photo. */
.cds-marque { gap: 0.75rem; align-items: center; }
.cds-marque .wp-block-site-logo { line-height: 0; }
.cds-marque .wp-block-site-logo img {
	max-height: 3.5rem;
	width: auto;
	padding: 0.25rem;
	border-radius: 10px;
	background: #FFFFFF;
}

/* Avec JS, à partir de 40em : l'en-tête flotte au-dessus de la bannière, transparent, texte blanc.
   Sous 40em il reste statique et opaque (sinon il recouvre le titre de la bannière). */
@media (min-width: 40em) {
	.cds-js body:has(.cds-hero--image) header.wp-block-template-part { position: fixed; left: 0; right: 0; }
	.cds-js:not(.cds-defile):not(.cds-entete-focus) body:has(.cds-hero--image) header.wp-block-template-part { background: transparent; }
	.cds-js:not(.cds-defile):not(.cds-entete-focus) body:has(.cds-hero--image) header.wp-block-template-part :is(a, .wp-block-site-title, .wp-block-site-title a) { color: #FFFFFF; }
	.cds-js:not(.cds-defile):not(.cds-entete-focus) body:has(.cds-hero--image) header.wp-block-template-part :focus-visible { outline-color: #FFFFFF; }
	.cds-js:not(.cds-defile):not(.cds-entete-focus) body:has(.cds-hero--image) header .wp-block-site-title a { text-shadow: 0 1px 8px rgba(0, 0, 0, 0.35); }
}

/* =====================================================================
   Bannière d'accueil : photo plein écran + voile sombre uniforme (contraste du texte blanc >= 5,3:1)
   Photo : pivoines en boutons, Townsend Walton, licence Unsplash (assets/images/CREDITS.md).
   ===================================================================== */
.cds-hero--image {
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 100vh;
	min-height: 100svh;
	padding-top: var(--wp--preset--spacing--60) !important;
	color: #FFFFFF;
	text-align: center;
	background-color: var(--wp--preset--color--primaire-fonce, #202A54);
	background-image: url("assets/images/hero-pivoines-1920.jpg");
	background-image: image-set(url("assets/images/hero-pivoines-1920.webp") type("image/webp"), url("assets/images/hero-pivoines-1920.jpg") type("image/jpeg"));
	background-size: cover;
	background-position: center 40%;
}
/* Compensation de l'en-tête flottant (uniquement quand il est superposé, voir plus haut). */
@media (min-width: 40em) {
	.cds-hero--image { padding-top: calc(var(--wp--preset--spacing--60) + 4rem) !important; }
}
@media (max-width: 800px) {
	.cds-hero--image { background-image: url("assets/images/hero-pivoines-768.webp"); }
}
@media (min-width: 801px) and (max-width: 1300px) {
	.cds-hero--image { background-image: url("assets/images/hero-pivoines-1280.webp"); }
}
.cds-hero--image::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: rgba(32, 42, 84, 0.68); /* repli */
	background: color-mix(in srgb, var(--wp--preset--color--primaire-fonce, #202A54) 68%, transparent); /* voile uniforme (opacité 0,68 testée dans tools/contrastes-lib.php) : aucune zone plus claire de la photo sous le texte */
}
.cds-hero--image h1 { margin-inline: auto; color: #FFFFFF; text-shadow: 0 2px 12px rgba(0, 0, 0, 0.3); }
.cds-hero--image p { margin-inline: auto; max-width: 40rem; color: #FFFFFF; }
.cds-hero--image .cds-actions { justify-content: center; }
.cds-hero--image .is-style-outline > .wp-block-button__link { color: #FFFFFF; border-color: #FFFFFF; }
.cds-hero--image .is-style-outline > .wp-block-button__link:hover { background: #FFFFFF; color: var(--wp--preset--color--primaire); }
.cds-hero--image :focus-visible { outline-color: #FFFFFF; }
.cds-hero--image .cds-bandeau {
	display: inline-block;
	margin: 0 auto 1.5rem;
	padding: 0.4rem 1rem;
	border-radius: 999px;
	font-size: var(--wp--preset--font-size--petit, 0.9rem);
	background: var(--wp--preset--color--primaire, #303E7A);
}
/* Contraste élevé (Windows) : les couleurs sont imposées, la photo et le voile calculé ne garantissent plus la lisibilité (RGAA 3.2). */
@media (forced-colors: active) {
	.cds-hero--image { background-image: none !important; color: CanvasText; }
	.cds-hero--image::before { background: Canvas; }
	.cds-hero--image h1, .cds-hero--image p, .cds-hero--image a { color: CanvasText; text-shadow: none; }
}
/* Accueil patients (DEV-231) : formulaire « Je recherche… » sur carte blanche, lien « tous nos thérapeutes » en blanc. */
.cds-hero--image .cds-recherche { width: 100%; margin-top: 1.5rem; }
.cds-hero--image .cds-recherche__formulaire :focus-visible { outline-color: var(--wp--preset--color--primaire, #303E7A); }
.cds-hero--image .cds-recherche__tous a { color: #FFFFFF; }

/* Bande de couleur (appel final) : blanc sur bleu nuit 10:1, bouton inversé. */
.cds-section--couleur { background: var(--wp--preset--color--primaire, #303E7A); color: #FFFFFF; }
.cds-section--couleur :is(h2, h3, p) { color: #FFFFFF; }
.cds-section--couleur .wp-block-button__link { background: var(--wp--preset--color--accent, #F66161); color: var(--wp--preset--color--texte, #17252A); }
.cds-section--couleur .wp-block-button__link:hover { background: var(--wp--preset--color--accent-clair, #FF8A8A); }
.cds-section--couleur :focus-visible { outline-color: #FFFFFF; }

@media (prefers-reduced-motion: reduce) {
	header.wp-block-template-part { transition: none; }
}

/* L'en-tête fixe de l'accueil sort du flux : pas d'espacement de bloc au-dessus de la bannière. */
.cds-js body:has(.cds-hero--image) .wp-site-blocks > main { margin-block-start: 0; }
header.wp-block-template-part .cds-entete__barre { padding-inline: clamp(1rem, 4vw, 3rem) !important; max-width: none; }
.cds-tarif-section h2 { text-align: center; }

/* Bannière basse des pages intérieures (seule l'accueil a la grande bannière). */
.cds-hero--image.cds-hero--court {
	min-height: clamp(16rem, 42vh, 26rem);
	padding-top: var(--wp--preset--spacing--50) !important;
	padding-bottom: var(--wp--preset--spacing--50) !important;
	background-position: center 45%;
}
@media (min-width: 40em) {
	.cds-hero--image.cds-hero--court { padding-top: calc(var(--wp--preset--spacing--50) + 4.5rem) !important; }
}
.cds-hero--image :is(h1, .wp-block-post-title) { color: #FFFFFF; margin-inline: auto; text-wrap: balance; }
.cds-hero--image .wp-block-post-date { color: #FFFFFF; }
.cds-hero--image.cds-hero--court .wp-block-buttons { justify-content: center; }
/* Bouton plein sur la bannière : corail, texte encre (5,1:1). */
.cds-hero--image .wp-block-button:not(.is-style-outline) > .wp-block-button__link { background: var(--wp--preset--color--accent, #F66161); color: var(--wp--preset--color--texte, #17252A); }

/* Pied de page bleu nuit : liens blancs (13,8:1). */
.cds-pied a, .cds-pied .wp-block-site-title a { color: #FFFFFF; }
.cds-pied :focus-visible { outline-color: #FFFFFF; }
/* Bannière : image mise en avant de la page si elle existe (variables posées par functions.php). */
.cds-hero--image.cds-hero--photo-page { background-image: var(--cds-banniere) !important; }
@media (max-width: 800px) {
	.cds-hero--image.cds-hero--photo-page { background-image: var(--cds-banniere-mobile, var(--cds-banniere)) !important; }
}

/* Tableaux du contenu (politiques) : pas de débordement horizontal à 320 px. */
.entry-content table, .wp-block-post-content table, .cds-corps table { width: 100%; border-collapse: collapse; }
.entry-content :is(td, th), .wp-block-post-content :is(td, th), .cds-corps :is(td, th) {
	overflow-wrap: anywhere;
	text-align: left;
	vertical-align: top;
	padding: 0.5rem 0.75rem;
	border: 1px solid var(--wp--preset--color--bordure);
}
.cds-corps caption, .wp-block-post-content caption { caption-side: top; text-align: left; font-weight: 600; padding-bottom: 0.5rem; }

/* Recherche du pied de page : champ clair sur fond bleu nuit, bouton inversé (contrastes >= 4,5:1). */
.cds-pied__recherche { margin-bottom: 1.5rem; max-width: 32rem; margin-inline: auto; }
.cds-pied__recherche .wp-block-search__label { font-weight: 600; }
.cds-pied__recherche .wp-block-search__input { background: #FFFFFF; color: var(--wp--preset--color--texte, #17252A); border: 2px solid #FFFFFF; min-height: 44px; padding: 0 0.75rem; }
.cds-pied__recherche .wp-block-search__button { background: #FFFFFF; color: var(--wp--preset--color--primaire, #303E7A); border: 2px solid #FFFFFF; min-height: 44px; padding: 0 1rem; font-weight: 600; cursor: pointer; }

/* =====================================================================
   Fiche thérapeute personnalisée (DEV-219) : gabarit templates/cds-fiche-therapeute.html
   Photo de pratique en fond du bandeau (liaison « fond », sous le voile), portrait rond qui chevauche le bas
   du bandeau, pratiques en pastilles, approche et tarifs côte à côte sur grand écran.
   ===================================================================== */
.cds-fiche-hero { overflow: hidden; }
/* !important : la mise en page contrainte du bandeau (60rem, centrée) s'applique sinon à la photo. */
.cds-fiche-hero .cds-hero__fond { position: absolute; inset: 0; z-index: -2; width: 100%; max-width: none !important; margin: 0 !important; }
/* Le portrait rond chevauche le bas du bandeau : le texte du bandeau remonte d'autant. */
.cds-hero--image.cds-fiche-hero { padding-bottom: var(--wp--preset--spacing--50) !important; }
.cds-hero--image.cds-fiche-hero:has(+ .cds-fiche-identite .cds-fiche-portrait) { padding-bottom: calc(var(--wp--preset--spacing--50) + 4.5rem) !important; }
/* Nom en un seul mot long : retour à la ligne plutôt que coupé par le bandeau (overflow: hidden). */
.cds-fiche-hero h1 { overflow-wrap: anywhere; hyphens: auto; }
.cds-fiche-hero .cds-hero__fond img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* Dégradé sur le bas de la photo : le texte blanc garde un contraste >= 4,5:1 quelle que soit la photo (voile du thème en plus). */
.cds-fiche-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(180deg, rgba(32, 42, 84, 0) 35%, rgba(32, 42, 84, 0.55) 100%); /* repli */
	background: linear-gradient(180deg, transparent 35%, color-mix(in srgb, var(--wp--preset--color--primaire-fonce, #202A54) 55%, transparent) 100%);
	pointer-events: none;
}
.cds-fiche-hero .cds-fiche-titre { font-size: 1.125rem; font-weight: 600; }

.cds-form.cds-fiche-identite { max-width: none; margin-top: 0; padding: 0 var(--wp--preset--spacing--30); text-align: center; position: relative; z-index: 1; }
.cds-fiche-identite > * { margin-inline: auto; }
/* Le chevauchement n'existe que si le portrait existe : sans lui, le texte sombre resterait sur le voile bleu nuit du bandeau. */
.cds-form.cds-fiche-identite:has(.cds-fiche-portrait) { margin-top: -4.5rem; }
.cds-fiche-portrait { margin-top: 0; margin-bottom: 1rem; }
.cds-fiche-portrait img { width: 9rem; height: 9rem; object-fit: cover; border-radius: 50%; border: 4px solid var(--wp--preset--color--fond, #FFFFFF); background: var(--wp--preset--color--fond-alt, #F6F8FA); }
.cds-fiche-identite .cds-page-therapeute__pratiques-liste { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin: 0 0 .75rem; padding: 0; list-style: none; }
.cds-fiche-identite .cds-page-therapeute__pratiques-liste li { padding: .25rem .875rem; border-radius: 999px; background: var(--wp--preset--color--fond-alt, #F6F8FA); color: var(--wp--preset--color--primaire, #303E7A); font-weight: 600; font-size: .9375rem; border: 1px solid var(--wp--preset--color--primaire, #303E7A); }
.cds-fiche-identite .cds-fiche-jours { margin-block: 0 1rem; color: var(--wp--preset--color--texte-secondaire, #4B5563); }
.cds-fiche-contacts { gap: .75rem; }

.cds-form.cds-fiche-corps { max-width: 60rem; }
.cds-fiche-colonnes { display: grid; gap: 1.5rem; }
.cds-fiche-colonnes .cds-page-therapeute__section { border-top: 0; }
.cds-fiche-colonnes .cds-page-therapeute__section:has(.cds-page-therapeute__tarifs) { padding: 1.25rem; border: 1px solid var(--cds-f-bord); border-radius: var(--cds-f-rayon); background: var(--wp--preset--color--fond-alt, #F6F8FA); }
@media (min-width: 52em) {
	.cds-fiche-colonnes { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); align-items: start; }
	.cds-fiche-colonnes > .wp-block-shortcode:only-child { grid-column: 1 / -1; }
}

/* Boutons de contact : en ligne sous l'identité sur grand écran ; sur mobile, une barre Appeler / Écrire reste collée en bas de l'écran.
   La barre est le dernier enfant de <main> (un `sticky` ne tient que dans son parent) ; une seule des deux est affichée à la fois. */
.cds-fiche-contacts.cds-fiche-contacts--barre { display: none; }
@media (max-width: 40em) {
	.cds-fiche-contacts.cds-fiche-contacts--page { display: none; }
	.cds-fiche-contacts.cds-fiche-contacts--barre { display: flex; position: sticky; bottom: 0; z-index: 5; margin-block-start: 0; padding: .75rem .75rem calc(.75rem + env(safe-area-inset-bottom)); background: var(--wp--preset--color--fond, #FFFFFF); box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15); }
	/* Un lien pris au clavier en bas d'écran ne doit pas rester sous la barre (WCAG 2.4.11). */
	html:has(.cds-fiche-contacts--barre) { scroll-padding-bottom: 5.5rem; }
	.cds-fiche-contacts--barre .wp-block-button { flex: 1 1 0; }
	.cds-fiche-contacts--barre .wp-block-button__link { width: 100%; text-align: center; }
}
@media (forced-colors: active) {
	.cds-fiche-contacts--barre { border-top: 1px solid CanvasText; }
	.cds-fiche-identite .cds-page-therapeute__pratiques-liste li, .cds-fiche-portrait img { border-color: CanvasText; }
}
