/* =============================================================================================
   VITADOMICILE — Feuille de style · v3
   ---------------------------------------------------------------------------------------------
   La charte graphique v1 fait foi. Elle fixe onze couleurs, deux familles typographiques, deux
   rayons, l'interdiction des ombres portées sur les cartes et un dosage 60/30/10. Elle ne dit
   rien de la composition, du rythme vertical ni de la hiérarchie — c'est là que se joue tout ce
   qui suit.

   PARTI PRIS DE LA v3 · LE GROS CARACTÈRE ASSUMÉ
   Le plancher de 18 px imposé au §6 n'est pas une contrainte à contourner : c'est le brief. Cette
   page est lue le soir, sur un téléphone, par quelqu'un de fatigué, pour un parent qui a une
   cataracte. On assume donc l'échelle : peu d'éléments par écran, beaucoup d'air, un rythme
   vertical lent. L'élégance vient de l'espace et du trait — ce que la charte impose déjà en
   interdisant les ombres.

   CE QUE LA v2 RATAIT, ET QUI EST MESURABLE
   Les deux fonds alternés, --fond et --sable, ont un contraste de 1,028. L'alternance de sections
   était invisible : la page défilait comme un seul long bloc, sans respiration ni point d'appui.
   La v3 la remplace par une bande pleine largeur en --turquoise-encre (6,97 contre le fond), qui
   donne enfin une colonne vertébrale à la page, et réserve --sable au seul bloc portrait, où le
   changement de température se voit parce qu'il est isolé.

   CORRECTIONS D'ACCESSIBILITÉ HÉRITÉES DE LA REVUE — à ne pas défaire
     A1  le dégradé signature ne porte jamais de texte (contraste tombant à 1,81 côté vert)
     A3  dans un bloc au fond turquoise voile, les liens passent en turquoise encre
     A4  voile sous un texte posé sur photo : 55 %, et non 40 %
     +   `.vita a:not(.vita-bouton)` — voir le commentaire à cet endroit, c'est ce qui empêche
         le bouton d'appel de redevenir invisible
   ============================================================================================= */

:root {
	/* ---- Couleurs de marque — charte p.08-09, à ne jamais compléter ------------------------ */
	--turquoise:         #0E9FB0;  /* aplats, bandeaux, pictogrammes — jamais du texte courant */
	--turquoise-profond: #0A7D8B;  /* boutons et liens sur fond clair */
	--turquoise-encre:   #08606C;  /* titres, liens sur voile, et la bande sombre de la page */
	--vert:              #7AD65F;  /* accents uniquement — jamais de texte blanc dessus */
	--vert-soin:         #2A8049;  /* bouton secondaire, confirmations */
	--fond:              #F9FBFB;  /* fond de toutes les pages */
	--sable:             #FBF7F1;  /* un seul bloc : le portrait */
	--texte:             #333333;  /* texte courant, jamais de noir pur */
	--texte-2:           #5A6B6E;  /* légendes, mentions, intertitres */
	--turquoise-voile:   #E8F7F9;  /* encadrés, cartes, panneau tarif */
	--vert-voile:        #EDF9E6;  /* messages positifs */

	/* Dégradé signature — deux apparitions par page au maximum, et jamais sous du texte. */
	--degrade: linear-gradient(135deg, #0E9FB0 0%, #7AD65F 100%);
	/* Dégradé porteur de texte blanc : 7,24 → 4,86 sur toute sa longueur (correction A1). */
	--degrade-texte: linear-gradient(135deg, #08606C 0%, #0A7D8B 100%);

	/* ---- Typographie ----------------------------------------------------------------------
	   Lora ne sert qu'aux titres, aux citations et aux montants — jamais à un paragraphe, jamais
	   tout en capitales. Inter porte tout le reste. */
	--police-titre: 'Lora', Georgia, 'Times New Roman', serif;
	--police-texte: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

	/* Échelle fluide. Les bornes basses sont les tailles mobiles, les hautes les tailles de la
	   charte. Le corps de texte, lui, ne varie pas : 19 px partout. */
	--t-display:  clamp(34px, 6.2vw, 60px);
	--t-titre:    clamp(27px, 3.6vw, 38px);
	--t-sous:     clamp(21px, 2.2vw, 24px);
	--t-corps:    19px;
	--t-intro:    clamp(20px, 2.1vw, 23px);
	--t-montant:  clamp(46px, 8.5vw, 82px);

	/* ---- Formes — jamais d'angle vif ------------------------------------------------------- */
	--rayon-bouton: 8px;
	--rayon-carte:  12px;

	/* ---- Rythme vertical — une seule échelle, utilisée partout ------------------------------ */
	--e1: .5rem;
	--e2: 1rem;
	--e3: 1.75rem;
	--e4: 3rem;
	--e5: clamp(4rem, 9vw, 7rem);

	/* ---- Largeurs -------------------------------------------------------------------------- */
	--largeur:  70rem;   /* le conteneur */
	--mesure:   62ch;    /* la longueur de ligne du texte courant, quelle que soit la largeur */

	/* Hauteur de la barre d'appel fixe : bouton 60 + rappel 44 + écarts et marges. Valeur de
	   repli ; le script la remplace par la hauteur MESURÉE, qui varie avec la largeur d'écran —
	   à 320 px le libellé du bouton passe sur deux lignes et la barre grandit. */
	--hauteur-barre-appel: 124px;
}

/* ---------------------------------------------------------------------------------------------
   BASE
   --------------------------------------------------------------------------------------------- */

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

body.vita {
	margin: 0;
	background: var(--fond);
	color: var(--texte);
	font-family: var(--police-texte);
	font-size: var(--t-corps);
	line-height: 1.75;
	-webkit-font-smoothing: antialiased;
	/* La barre d'appel est fixe : sans cette réserve, elle recouvrirait le pied de page, et sur
	   iOS elle passerait sous la barre système. */
	padding-bottom: calc(var(--hauteur-barre-appel) + env(safe-area-inset-bottom, 0px));
}

/* THÈME UNIQUE, ET DIT AU NAVIGATEUR — défaut trouvé sur la page publiée, ne pas retirer.
   La charte est contractuelle : ses couleurs ne s'inversent pas selon le réglage du visiteur.
   Mais un visualiseur ou un système en mode sombre pose `color-scheme: dark` sur le document, et
   les contrôles de formulaire — boutons, curseur, champs — prennent alors les couleurs SOMBRES
   du navigateur pour tout ce que la feuille ne fixe pas. Résultat observé : les boutons de choix
   du parcours, fond blanc fixé, texte laissé au navigateur → texte blanc sur fond blanc, tunnel
   illisible ; curseur du simulateur à la couleur du thème sombre.
   Deux parades, cumulées : le bloc déclare son propre schéma clair, et chaque contrôle fixe
   TOUTES ses couleurs. Le second point protège aussi d'un thème WordPress qui peint ses
   boutons (Kadence peint les <button> en blanc sur sa couleur d'accent). */
.vita,
body.vita {
	color-scheme: light;
	color: var(--texte);
}

/* Sur un petit écran, rien ne doit déborder : un mot plus long que la colonne se coupe plutôt
   que de pousser la page en largeur, et une image ne dépasse jamais son conteneur. */
.vita { overflow-wrap: break-word; }

/* CE QUE LE THÈME NE DOIT PAS TOUCHER — mesuré sur le site, sous Kadence.
   Un thème WordPress écrit `.entry-content ul { padding-left }`, `.entry-content h2 { margin }`,
   `button { color: #fff; background }`, `input { border; -webkit-appearance }`, `blockquote {
   border-left; font-style }`… tous à 0-1-1. Vu sur le site : cartes décalées à droite (retrait
   de liste), curseur du simulateur dans une boîte bordée sans piste, texte blanc dès qu'un
   bouton de choix est touché. Deux réponses : chaque règle de composant est remontée à 0-2-0 par
   le préfixe `.vita ` ; et les éléments nus reçoivent ici une remise à zéro à 0-1-2.
   `:is(body.vita, .vita)` : en production c'est le body qui porte la classe, dans la page de
   démonstration c'est un <div> — les deux doivent matcher. */
:is(body.vita, .vita) ul, :is(body.vita, .vita) ol { margin: 0; padding: 0; list-style: none; }
:is(body.vita, .vita) li { margin: 0; padding: 0; font-size: inherit; line-height: inherit; }
:is(body.vita, .vita) p { margin: 0; padding: 0; font-size: inherit; line-height: inherit; }
:is(body.vita, .vita) h1, :is(body.vita, .vita) h2, :is(body.vita, .vita) h3 { margin: 0; padding: 0; }
:is(body.vita, .vita) figure { margin: 0; padding: 0; }
:is(body.vita, .vita) img { max-width: 100%; height: auto; border: 0; box-shadow: none; }
:is(body.vita, .vita) blockquote { margin: 0; padding: 0; border: 0; background: none; quotes: none; }
:is(body.vita, .vita) details, :is(body.vita, .vita) summary { margin: 0; padding: 0; border: 0; background: none; }

/* Un numéro de téléphone ne se coupe jamais en fin de ligne : « +33 6 35 » sur une ligne et
   « 35 86 07 » sur la suivante, c'est un numéro qu'on recopie faux. */
.vita .vita-nobr { white-space: nowrap; }

.vita h1, .vita h2, .vita .vita-titre {
	font-family: var(--police-titre);
	color: var(--turquoise-encre);
	line-height: 1.14;
	letter-spacing: -.015em;
	text-wrap: balance;
	margin: 0;
}

.vita h1 { font-weight: 600; font-size: var(--t-display); }
.vita h2 { font-weight: 500; font-size: var(--t-titre); }

/* Niveau 3 : Inter, pas Lora. La graisse et l'interlignage font la différence, pas la taille —
   à 21 px contre 19 px de corps, l'écart serait trop faible sans elles. */
.vita h3 {
	font-family: var(--police-texte);
	font-weight: 600;
	font-size: var(--t-sous);
	line-height: 1.3;
	color: var(--turquoise-encre);
	margin: 0;
}

.vita p { margin: 0; }

/* Toute grappe d'éléments frères est espacée par `gap`, jamais par des marges individuelles qui
   se dédoublent ou s'effondrent selon le voisinage. */
.vita .vita-pile { display: flex; flex-direction: column; gap: var(--e2); }
.vita .vita-pile--large { gap: var(--e3); }

/* Longueur de ligne : le conteneur peut être large, le texte courant ne l'est jamais. */
.vita .vita-mesure { max-width: var(--mesure); }

/* Un lien est aussi souligné : aucune information n'est portée par la seule couleur
   (critère A11Y-05).

   ⚠ LE `:not(.vita-bouton)` N'EST PAS COSMÉTIQUE — NE PAS LE RETIRER.
   Sans lui, `.vita a` (une classe + un type, spécificité 0-1-1) l'emporte sur
   `.vita-bouton--principal` (une classe, 0-1-0). Résultat : tout bouton principal écrit avec une
   balise <a> — le bouton d'appel du hero, celui de la barre fixe, celui du bandeau final —
   recevait la couleur de texte turquoise profond SUR un fond turquoise profond. Contraste 1,00 :
   le bouton le plus important de la page était littéralement invisible. */
.vita a:not(.vita-bouton) {
	color: var(--turquoise-profond);
	text-decoration: underline;
	text-underline-offset: 4px;
	text-decoration-thickness: 1px;
}
.vita a:not(.vita-bouton):hover { color: var(--turquoise-encre); text-decoration-thickness: 2px; }

/* Cibles tactiles des liens autonomes (critère A11Y-02). WCAG 2.2 exempte les liens au fil d'une
   phrase, mais pas les liens autonomes — or c'était le cas du numéro du pied de page et des liens
   légaux, qui ne faisaient que 20 px. Un lien téléphonique est traité partout comme une cible
   pleine : pour un public de plus de 70 ans, un numéro trop petit à toucher est un numéro qu'on
   n'appelle pas. */
.vita a[href^="tel:"]:not(.vita-bouton),
.vita nav a {
	display: inline-flex;
	align-items: center;
	min-height: 48px;
	padding-inline: 2px;
}

.vita :focus-visible {
	outline: 3px solid var(--turquoise-encre);
	outline-offset: 3px;
	border-radius: 4px;
}

/* ---------------------------------------------------------------------------------------------
   SECTIONS ET CONTENEUR
   Une seule bande sombre dans toute la page. C'est elle qui donne le rythme : avant elle on
   présente, après elle on chiffre.
   --------------------------------------------------------------------------------------------- */

.vita .vita__section { padding: var(--e5) var(--e3); }
.vita .vita__section--sable { background: var(--sable); }

.vita .vita__section--sombre {
	background: var(--turquoise-encre);
	color: #fff;
}
.vita .vita__section--sombre h2,
.vita .vita__section--sombre h3 { color: #fff; }
.vita .vita__section--sombre .vita-oeil { color: var(--turquoise-voile); }     /* 6,59 sur l'encre */
.vita .vita__section--sombre .vita-oeil::after { background: var(--vert); }   /* filet décoratif, 4,00 */
.vita .vita__section--sombre .vita-mention { color: var(--turquoise-voile); }  /* 6,59 */

.vita .vita__contenu { max-width: var(--largeur); margin-inline: auto; }

/* Grille asymétrique : le texte à gauche, l'appui à droite. Une seule colonne sous 62rem. */
.vita .vita-duo {
	display: grid;
	gap: var(--e4);
	align-items: center;
}
@media (min-width: 62rem) {
	.vita .vita-duo { grid-template-columns: 1.15fr .85fr; gap: var(--e5); }
	.vita .vita-duo--inverse > :first-child { order: 2; }
	.vita .vita-portrait { max-width: 26rem; }
}

/* ---- Intertitre : œil-de-bœuf + filet vert -------------------------------------------------
   Le filet est l'un des rares emplois du vert, et il n'est jamais une surface. L'œil reste à
   18 px : rien ne descend sous ce plancher, mentions comprises.

   POURQUOI DEUX COULEURS DE TEXTE ET DEUX VERTS — mesuré, pas supposé.
   Le texte de l'œil est à 18 px en graisse 600, soit 13,5 pt : juste SOUS le seuil du « grand
   texte » de WCAG, fixé à 14 pt. Il relève donc du seuil AA de 4,5, que le vert Domicile
   n'atteint ni sur le fond clair (1,74) ni sur la bande sombre (4,00). Le texte de l'œil n'est
   donc jamais vert : --texte-2 sur fond clair (5,37), --turquoise-voile sur la bande (6,59).
   Le FILET, lui, est décoratif et échappe au seuil 1.4.11 — mais un filet invisible ne sert à
   rien : --vert-soin sur fond clair (4,72), --vert sur la bande sombre (4,00). */
.vita .vita-oeil {
	display: block;
	font-size: 18px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--texte-2);
	margin-bottom: var(--e2);
}
.vita .vita-oeil::after {
	content: '';
	display: block;
	width: 44px;
	height: 3px;
	margin-top: var(--e1);
	background: var(--vert-soin);
	border-radius: 2px;
}

.vita .vita-intro { font-size: var(--t-intro); line-height: 1.6; color: var(--texte); }
.vita .vita__section--sombre .vita-intro { color: #fff; }

/* Mentions et légendes : 19 px comme le reste. Le §13 interdit tout texte sous 18 px, mentions
   comprises — la mention change de couleur, pas de taille. */
.vita .vita-mention { color: var(--texte-2); font-size: 18px; line-height: 1.6; }

/* ---------------------------------------------------------------------------------------------
   BOUTONS
   Un seul bouton principal par écran. Toute zone cliquable fait 48 × 48 px au minimum.
   --------------------------------------------------------------------------------------------- */

.vita .vita-bouton {
	display: inline-flex;
	/* Le libellé peut passer sur deux lignes — « Appeler le » puis le numéro, insécable, sur la
	   ligne suivante. Sans `wrap`, le numéro insécable est un élément flexible de plus sur la
	   même ligne, et le bouton déborde de l'écran à 320 px. */
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--e1);
	row-gap: 0;
	min-height: 60px;
	padding: 0 var(--e3);
	border: 2px solid transparent;
	border-radius: var(--rayon-bouton);
	font: inherit;
	font-size: 19px;
	font-weight: 600;
	line-height: 1.25;
	text-align: center;
	text-decoration: none;
	text-transform: none;
	letter-spacing: normal;
	box-shadow: none;
	cursor: pointer;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.vita .vita-bouton--principal { background: var(--turquoise-profond); color: #fff; }   /* 4,86 */
.vita .vita-bouton--principal:hover { background: var(--turquoise-encre); color: #fff; }

.vita .vita-bouton--secondaire {
	background: transparent;
	color: var(--turquoise-encre);
	border-color: var(--turquoise-profond);
}
.vita .vita-bouton--secondaire:hover { background: var(--turquoise-voile); color: var(--turquoise-encre); }

.vita .vita-bouton--discret {
	background: transparent;
	color: var(--texte-2);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.vita .vita-bouton[disabled] { opacity: .45; cursor: not-allowed; }

.vita .vita-actions { display: flex; flex-wrap: wrap; gap: var(--e2); }
.vita .vita-actions .vita-bouton { flex: 1 1 16rem; }

/* L'attribut `hidden` doit l'emporter sur toute règle de display.
   La feuille de l'agent utilisateur le pose avec `[hidden] { display: none }`, une spécificité
   (0,1,0) que la moindre classe écrase — `.vita .vita-bouton { display: inline-flex }` compte
   (0,2,0). Résultat sans cette règle : le bouton « Retour » du parcours, marqué `hidden` par le
   script tant qu'on est à la première étape, restait visible et proposait de revenir là d'où
   l'on ne venait pas. Le `!important` est ici à sa place : `hidden` est une déclaration d'état,
   pas une suggestion de mise en forme. */
.vita [hidden] { display: none !important; }

/* ---------------------------------------------------------------------------------------------
   BARRE D'APPEL PERSISTANTE (§7.0)
   L'élément le plus visible de la page, avant même la liste des services.
   --------------------------------------------------------------------------------------------- */

.vita .vita-barre-appel {
	position: fixed;
	inset: auto 0 0 0;
	z-index: 40;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: var(--e1) var(--e2) calc(var(--e1) + env(safe-area-inset-bottom, 0px));
	background: var(--fond);
	border-top: 1px solid rgba(8, 96, 108, .14);
}
.vita .vita-barre-appel[hidden] { display: none; }
.vita .vita-barre-appel__reserver { width: 100%; }

/* Repliée : glissée sous le bord de l'écran, sans disparaître du flux — la réserve du corps
   reste juste, et la barre remonte d'un mouvement dès qu'on dépasse le premier écran. */
.vita .vita-barre-appel { transition: transform .25s ease; }
.vita .vita-barre-appel--repliee { transform: translateY(110%); }

@media (min-width: 48rem) {
	/* Au-delà du mobile, le numéro est déjà dans l'en-tête : la barre fixe n'a plus de raison
	   d'être et rend sa hauteur d'écran. */
	.vita .vita-barre-appel { display: none; }
	body.vita { padding-bottom: 0; }
}

/* ---------------------------------------------------------------------------------------------
   EN-TÊTE
   Deux rangées sur mobile, une seule dès que la largeur le permet. Sur 390 px, tout mettre sur
   une ligne coinçait les ancres dans une colonne de six caractères, qui se cassait sur trois
   lignes et écrasait le logo.
   --------------------------------------------------------------------------------------------- */

.vita .vita-entete {
	display: grid;
	grid-template-columns: auto auto;
	justify-content: space-between;
	align-items: center;
	gap: var(--e1) var(--e2);
	max-width: var(--largeur);
	margin-inline: auto;
	padding: var(--e2) var(--e3);
}

.vita .vita-entete nav {
	grid-column: 1 / -1;
	order: 3;
	display: flex;
	align-items: center;
	gap: var(--e2);
}

@media (min-width: 46rem) {
	.vita .vita-entete { grid-template-columns: auto 1fr auto; }
	.vita .vita-entete nav { grid-column: auto; order: 0; justify-content: center; }
}


.vita .vita-entete__logo {
	font-family: var(--police-titre);
	font-size: 26px;
	font-weight: 600;
	letter-spacing: -.01em;
	color: var(--turquoise-encre);
}
.vita .vita-entete__logo span { color: var(--vert-soin); }
.vita .vita-entete a.vita-entete__tel[href^="tel:"] {
	display: inline-grid;
	place-items: center;
	width: 52px;
	height: 52px;
	min-height: 0;
	padding: 0;
	border-radius: 50%;
	background: var(--turquoise-profond);
	color: #fff;
	text-decoration: none;
}
.vita .vita-entete a.vita-entete__tel[href^="tel:"]:hover { background: var(--turquoise-encre); color: #fff; }
.vita .vita-entete__tel .vita-picto { width: 28px; height: 28px; background: none; color: #fff; }
.vita .vita-entete__tel .vita-picto::before { width: 28px; height: 28px; }

/* ---------------------------------------------------------------------------------------------
   HERO
   Le titre d'abord. La v2 ouvrait sur un cercle vide de 260 px posé au-dessus du titre : le
   premier écran ne disait rien, et la promesse arrivait après un trou.
   --------------------------------------------------------------------------------------------- */

.vita .vita-hero {
	max-width: var(--largeur);
	margin-inline: auto;
	padding: var(--e4) var(--e3) var(--e5);
}

.vita .vita-hero__texte { display: flex; flex-direction: column; gap: var(--e3); }
.vita .vita-hero__sous-titre { font-size: var(--t-intro); line-height: 1.55; max-width: 34ch; }

/* Photo d'accueil, dans le hero. C'EST LE LCP DE LA PAGE : fetchpriority="high", decoding="sync",
   jamais loading="lazy". Cadre aux proportions du fichier reçu (512 × 217) : on ne l'agrandit pas
   au-delà de sa taille native, une photo floue sur le premier écran coûterait plus de confiance
   qu'elle n'en apporte. En colonne, la grille la borne à sa largeur ; sur un téléphone, elle
   prend la largeur de l'écran, toujours inférieure à 512 px. */
.vita .vita-photo {
	width: 100%;
	max-width: 32rem;
	margin: 0 auto;
	aspect-ratio: 512 / 217;
	border-radius: 1rem;
	overflow: hidden;
	background: var(--turquoise-voile);
	border: 1px solid rgba(8, 96, 108, .16);
}
.vita .vita-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* Portrait en cercle, dans le bloc « portrait et citation ». Le fichier est détouré : le fond du
   cercle est le turquoise voilé de la charte, qu'on voit à travers la transparence. Le cercle est
   bordé d'un filet turquoise plutôt que d'un blanc épais, qui donnait un air d'autocollant. */
.vita .vita-portrait {
	width: 100%;
	/* Sur un téléphone, un cercle de 26 rem occupe presque toute la largeur et pousse le reste
	   sous la ligne de flottaison. On le borne à 68 % de la largeur du viewport tant qu'on est
	   étroit, et on le laisse prendre sa taille pleine dès que la grille passe à deux colonnes. */
	max-width: min(26rem, 68vw);
	margin-inline: auto;
	aspect-ratio: 1;
	border-radius: 50%;
	overflow: hidden;
	background: var(--turquoise-voile);
	border: 1px solid rgba(8, 96, 108, .16);
}
.vita .vita-portrait img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* Voile sous un texte posé sur photo : 55 %, et non 40 % (correction A4). Sur une photo claire,
   blanc sur voile 40 % ne donne que 4,29 — sous le seuil AA. */
.vita .vita-sur-photo { position: relative; isolation: isolate; }
.vita .vita-sur-photo::before {
	content: '';
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .55);
	z-index: -1;
}

/* ---------------------------------------------------------------------------------------------
   BANDEAU DE RÉASSURANCE (§7.3)
   Quatre promesses, séparées par un filet vertical plutôt que par un fond : la charte demande que
   la séparation se fasse « par le trait et l'espace ».
   --------------------------------------------------------------------------------------------- */

.vita .vita-reassurance {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--e3);
}
@media (min-width: 40rem) { .vita .vita-reassurance { grid-template-columns: repeat(2, 1fr); gap: var(--e4); } }
@media (min-width: 64rem) { .vita .vita-reassurance { grid-template-columns: repeat(4, 1fr); } }

.vita .vita-reassurance li { display: flex; flex-direction: column; gap: var(--e2); }
.vita .vita-reassurance h3 { font-size: var(--t-sous); }
.vita .vita-reassurance p { color: var(--texte-2); font-size: 18px; line-height: 1.6; }

@media (min-width: 64rem) {
	.vita .vita-reassurance li + li {
		padding-left: var(--e4);
		border-left: 1px solid rgba(8, 96, 108, .14);
	}
}

/* ---------------------------------------------------------------------------------------------
   PICTOGRAMMES
   Trait de 1,8 px, extrémités arrondies, dans un rond turquoise voile. Aucun aplat.
   --------------------------------------------------------------------------------------------- */

.vita .vita-picto {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: var(--turquoise-voile);
	color: var(--turquoise-encre);
}
.vita .vita-picto::before {
	content: '';
	width: 28px;
	height: 28px;
	background: currentColor;
	-webkit-mask: var(--trace) center / contain no-repeat;
	mask: var(--trace) center / contain no-repeat;
}

/* Dans un bouton, le pictogramme n'a pas de rond : il est déjà posé sur un aplat. */
.vita .vita-bouton .vita-picto { width: 24px; height: 24px; background: none; color: inherit; }
.vita .vita-bouton .vita-picto::before { width: 24px; height: 24px; }

/* Sur la bande sombre, le rond s'inverse. */
.vita .vita__section--sombre .vita-picto { background: rgba(255, 255, 255, .12); color: #fff; }

/* ---------------------------------------------------------------------------------------------
   CARTES DE PRESTATIONS (§7.4)
   Deux colonnes, pas quatre. Huit cartes d'une phrase réparties sur quatre colonnes donnaient des
   boîtes étroites, au texte haché et aux hauteurs en dents de scie.
   Contour très fin, AUCUNE ombre portée : la charte les interdit.
   --------------------------------------------------------------------------------------------- */

.vita .vita-cartes {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--e2);
}
@media (min-width: 44rem) { .vita .vita-cartes { grid-template-columns: repeat(2, 1fr); gap: var(--e3); } }

.vita .vita-carte {
	display: flex;
	flex-direction: column;
	gap: var(--e2);
	background: #fff;
	border: 1px solid rgba(8, 96, 108, .14);
	border-radius: var(--rayon-carte);
	padding: var(--e3);
	box-shadow: none;                       /* explicite : la charte l'interdit sur les cartes */
	transition: border-color .15s ease, background-color .15s ease;
}
.vita .vita-carte:hover { border-color: var(--turquoise-profond); background: var(--turquoise-voile); }

.vita .vita-carte__titre { font-size: var(--t-sous); }
.vita .vita-carte__texte { color: var(--texte-2); font-size: 18px; line-height: 1.6; }

/* Encadré au fond turquoise voile : les liens y passent en encre (correction A3) — un lien
   turquoise profond sur ce fond ne donne que 4,42, sous le seuil AA. */
.vita .vita-encadre {
	background: var(--turquoise-voile);
	border-radius: var(--rayon-carte);
	padding: var(--e3);
}
.vita .vita-encadre a:not(.vita-bouton) { color: var(--turquoise-encre); }
.vita .vita-encadre--positif { background: var(--vert-voile); }

/* Sur la bande sombre, l'encadré s'inverse en filet plutôt qu'en aplat : deux aplats sombres
   superposés se lisent comme une erreur d'impression. */
.vita .vita__section--sombre .vita-encadre {
	background: transparent;
	border-left: 3px solid var(--vert);
	border-radius: 0;
	padding: var(--e1) 0 var(--e1) var(--e3);
}
.vita .vita__section--sombre .vita-encadre p { color: #fff; }

/* ---------------------------------------------------------------------------------------------
   TARIF ET SIMULATEUR (§7.6)
   Le montant réellement à la charge du foyer est l'information la plus utile de la page : c'est
   lui qui porte l'échelle, pas le tarif brut.
   --------------------------------------------------------------------------------------------- */

.vita .vita-tarif {
	background: var(--turquoise-voile);
	border-radius: var(--rayon-carte);
	padding: var(--e4) var(--e3);
}
.vita .vita-tarif a:not(.vita-bouton) { color: var(--turquoise-encre); }

.vita .vita-tarif__brut {
	font-size: var(--t-sous);
	color: var(--texte-2);
	font-variant-numeric: tabular-nums;
}
.vita .vita-tarif__brut strong { color: var(--texte); font-weight: 600; }

.vita .vita-tarif__net {
	font-family: var(--police-titre);
	font-size: var(--t-montant);
	font-weight: 600;
	color: var(--turquoise-encre);
	line-height: 1.02;
	letter-spacing: -.03em;
	font-variant-numeric: tabular-nums;
	text-wrap: balance;
}
.vita .vita-tarif__net span {
	display: block;
	margin-top: var(--e1);
	font-family: var(--police-texte);
	font-size: var(--t-sous);
	font-weight: 400;
	letter-spacing: 0;
	color: var(--texte);
}

.vita .vita-simulateur {
	background: #fff;
	border: 1px solid rgba(8, 96, 108, .14);
	border-radius: var(--rayon-carte);
	padding: var(--e3);
	display: flex;
	flex-direction: column;
	gap: var(--e2);
}

/* Dessiné de bout en bout, sans rien laisser au navigateur ni au thème. Sur le site, Kadence
   posait `-webkit-appearance: none` et une bordure sur tous les <input> : le curseur devenait
   une boîte vide, sans piste. La partie parcourue est peinte à partir de --vita-pct, que le
   script met à jour à chaque déplacement. */
.vita .vita-simulateur__curseur {
	-webkit-appearance: none;
	appearance: none;
	display: block;
	width: 100%;
	height: 48px;
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	color-scheme: light;
	cursor: pointer;
	--vita-pct: 17%;
}
.vita .vita-simulateur__curseur:focus { outline: none; }
.vita .vita-simulateur__curseur:focus-visible { outline: 3px solid var(--turquoise-encre); outline-offset: 4px; border-radius: 999px; }
.vita .vita-simulateur__curseur::-webkit-slider-runnable-track {
	height: 10px;
	border-radius: 999px;
	background: linear-gradient(to right, var(--turquoise-profond) var(--vita-pct), rgba(8, 96, 108, .18) var(--vita-pct));
}
.vita .vita-simulateur__curseur::-webkit-slider-thumb {
	-webkit-appearance: none;
	appearance: none;
	width: 32px;
	height: 32px;
	margin-top: -11px;
	border-radius: 50%;
	background: var(--turquoise-profond);
	border: 3px solid #fff;
	box-shadow: 0 0 0 1px rgba(8, 96, 108, .3);
}
.vita .vita-simulateur__curseur::-moz-range-track {
	height: 10px;
	border-radius: 999px;
	background: rgba(8, 96, 108, .18);
}
.vita .vita-simulateur__curseur::-moz-range-progress { height: 10px; border-radius: 999px; background: var(--turquoise-profond); }
.vita .vita-simulateur__curseur::-moz-range-thumb {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--turquoise-profond);
	border: 3px solid #fff;
}
.vita .vita-simulateur__valeur { font-weight: 600; font-variant-numeric: tabular-nums; }
.vita .vita-simulateur__resultat {
	font-size: var(--t-sous);
	line-height: 1.5;
	color: var(--turquoise-encre);
	font-variant-numeric: tabular-nums;
}
.vita .vita-simulateur__resultat strong { font-weight: 600; }

/* ---------------------------------------------------------------------------------------------
   MOYENS DE RÈGLEMENT
   Sur la page d'accueil : une ANNONCE, pas une boutique. Le §13 interdit le panier et le bouton
   « Commander », et cet interdit reste juste — personne ne règle 280 € par carte à quelqu'un
   qu'il n'a pas rencontré. Ce bloc évite seulement le coup de fil « est-ce que vous prenez les
   CESU ? ».
   Même traitement que les cartes de prestations : contour d'un pixel, aucune ombre.
   --------------------------------------------------------------------------------------------- */

.vita .vita-moyens {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--e2);
}
@media (min-width: 44rem) { .vita .vita-moyens { grid-template-columns: repeat(2, 1fr); gap: var(--e3); } }

.vita .vita-moyen {
	display: flex;
	flex-direction: column;
	gap: var(--e2);
	background: #fff;
	border: 1px solid rgba(8, 96, 108, .14);
	border-radius: var(--rayon-carte);
	padding: var(--e3);
	box-shadow: none;
}
.vita .vita-moyen__titre { font-size: var(--t-sous); }
.vita .vita-moyen__texte { color: var(--texte-2); font-size: 18px; line-height: 1.6; }

/* ---------------------------------------------------------------------------------------------
   PAGE DE RÈGLEMENT
   C'est ici que le choix se fait réellement, après le devis et la visite. Le montant restant
   porte l'échelle : c'est la seule chose que le lecteur cherche en ouvrant la page.
   --------------------------------------------------------------------------------------------- */

.vita .vita-reglement {
	display: flex;
	flex-direction: column;
	gap: var(--e4);
	max-width: 44rem;
	margin-inline: auto;
}

.vita .vita-reglement__somme {
	display: flex;
	flex-direction: column;
	gap: var(--e1);
	background: var(--turquoise-voile);
	border-radius: var(--rayon-carte);
	padding: var(--e4) var(--e3);
}
.vita .vita-reglement__somme a:not(.vita-bouton) { color: var(--turquoise-encre); }

.vita .vita-reglement__choix { display: flex; flex-direction: column; gap: var(--e3); }

/* Le bouton radio reste visible et cliquable : le masquer au profit d'une pastille dessinée
   marche mal avec les lecteurs d'écran anciens, et le public de ce site en utilise. */
.vita .vita-reglement__choix .vita-choix__option { align-items: flex-start; }
.vita .vita-reglement__choix .vita-choix__option input[type="radio"] {
	width: 26px;
	height: 26px;
	margin-top: 3px;
	flex: 0 0 auto;
	accent-color: var(--turquoise-profond);
}
.vita .vita-reglement__choix .vita-choix__option > span { display: flex; flex-direction: column; gap: 2px; }
.vita .vita-reglement__choix .vita-choix__option:focus-within { border-color: var(--turquoise-encre); }

/* ---------------------------------------------------------------------------------------------
   ÉTAPES (§7.7)
   Le numéro encode une séquence réelle — l'ordre des quatre moments compte pour le lecteur.
   C'est ce qui le distingue d'un numérotage décoratif.
   --------------------------------------------------------------------------------------------- */

.vita .vita-etapes {
	list-style: none;
	counter-reset: etape;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0;
}

.vita .vita-etapes li {
	counter-increment: etape;
	display: flex;
	gap: var(--e3);
	align-items: baseline;
	padding: var(--e3) 0;
	font-size: var(--t-intro);
	border-top: 1px solid rgba(8, 96, 108, .14);
}
.vita .vita-etapes li:last-child { border-bottom: 1px solid rgba(8, 96, 108, .14); }

.vita .vita-etapes li::before {
	content: counter(etape);
	flex: 0 0 auto;
	font-family: var(--police-titre);
	font-size: var(--t-sous);
	font-weight: 600;
	color: var(--vert-soin);
	font-variant-numeric: tabular-nums;
	min-width: 1.5em;
}

/* ---------------------------------------------------------------------------------------------
   CITATION (§7.8) — l'un des deux seuls emplois de Lora hors titres.
   --------------------------------------------------------------------------------------------- */

.vita .vita-citation {
	font-family: var(--police-titre);
	font-style: italic;
	font-weight: 400;
	font-size: var(--t-titre);
	line-height: 1.3;
	color: var(--turquoise-encre);
	margin: 0;
	text-wrap: balance;
}
.vita .vita__section--sombre .vita-citation { color: #fff; }

/* ---------------------------------------------------------------------------------------------
   ZONE D'INTERVENTION (§7.9)
   Du texte, pas une carte : une carte interactive coûte plusieurs centaines de kilo-octets et
   n'apprend rien de plus à quelqu'un qui cherche le nom de sa commune.
   --------------------------------------------------------------------------------------------- */

.vita .vita-communes {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--e1) var(--e2);
}
.vita .vita-communes__titre { margin-top: var(--e2); }
.vita .vita-communes li {
	font-size: 19px;
	padding: var(--e1) var(--e2);
	border: 1px solid rgba(8, 96, 108, .14);
	border-radius: var(--rayon-bouton);
	background: #fff;
}

/* ---------------------------------------------------------------------------------------------
   QUESTIONS FRÉQUENTES (§7.10)
   Accordéon natif : accessible au clavier sans une ligne de JavaScript, et fonctionnel même si le
   script ne se charge pas.
   --------------------------------------------------------------------------------------------- */

.vita .vita-faq { display: grid; gap: 0; }

.vita .vita-faq details { border-top: 1px solid rgba(8, 96, 108, .14); }
.vita .vita-faq details:last-of-type { border-bottom: 1px solid rgba(8, 96, 108, .14); }

.vita .vita-faq summary {
	min-height: 64px;
	display: flex;
	align-items: center;
	gap: var(--e2);
	padding: var(--e2) 0;
	cursor: pointer;
	font-weight: 600;
	font-size: var(--t-sous);
	line-height: 1.35;
	color: var(--turquoise-encre);
	list-style: none;
}
.vita .vita-faq summary::-webkit-details-marker { display: none; }
.vita .vita-faq summary::after {
	content: '';
	margin-left: auto;
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	background: currentColor;
	-webkit-mask: var(--trace-plus) center / contain no-repeat;
	mask: var(--trace-plus) center / contain no-repeat;
	transition: transform .15s ease;
}
.vita .vita-faq details[open] summary::after { transform: rotate(45deg); }
.vita .vita-faq details > *:not(summary) { color: var(--texte); max-width: var(--mesure); }
.vita .vita-faq details > p { padding-bottom: var(--e2); }
.vita .vita-faq details > p + p { padding-top: var(--e2); }

/* ---------------------------------------------------------------------------------------------
   BANDEAU D'APPEL FINAL (§7.11) — correction A1
   Le dégradé signature ne porte AUCUN texte : il est réduit à un filet de 4 px en bordure haute.
   Le fond du bandeau est un dégradé encre → profond, qui donne 7,24 → 4,86 au texte blanc.
   Repeindre ce bandeau avec `var(--degrade)` ferait tomber le contraste à 1,81.
   --------------------------------------------------------------------------------------------- */

.vita .vita-appel-final {
	background: var(--degrade-texte);
	border-top: 4px solid transparent;
	border-image: var(--degrade) 1;
	color: #fff;
	padding: var(--e5) var(--e3);
}
.vita .vita-appel-final .vita__contenu {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--e3);
	text-align: center;
}
.vita .vita-appel-final h2 { color: #fff; }
.vita .vita-appel-final p { font-size: var(--t-intro); max-width: 38ch; }

/* Sur ce fond foncé, le bouton s'inverse : fond blanc, texte encre — 7,24. */
.vita .vita-appel-final .vita-bouton--principal { background: #fff; color: var(--turquoise-encre); }
.vita .vita-appel-final .vita-bouton--principal:hover { background: var(--turquoise-voile); color: var(--turquoise-encre); }

/* ---------------------------------------------------------------------------------------------
   PIED DE PAGE
   --------------------------------------------------------------------------------------------- */

.vita .vita-pied { background: var(--sable); padding: var(--e5) var(--e3) var(--e4); }
.vita .vita-pied .vita__contenu { display: flex; flex-direction: column; gap: var(--e3); }
.vita .vita-pied .vita-titre { font-family: var(--police-titre); font-size: var(--t-sous); font-weight: 600; color: var(--turquoise-encre); }

.vita .vita-mentions { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--e1); color: var(--texte-2); font-size: 18px; }
.vita .vita-mentions__label { font-weight: 600; color: var(--texte); }

/* ---------------------------------------------------------------------------------------------
   PARCOURS — MODALE (§8)
   Plein écran sur mobile, une question par écran.
   --------------------------------------------------------------------------------------------- */

/* ATTENTION AU CENTRAGE — piège corrigé, ne pas revenir en arrière.
   Un conteneur défilant qui centre ou aligne son contenu en fin d'axe rend le débordement
   INACCESSIBLE : ce qui dépasse part au-dessus du haut du conteneur, et aucune barre de
   défilement ne permet d'y revenir. Sur l'écran des prestations, les deux dernières cartes
   devenaient impossibles à cocher sur un téléphone.
   Sur mobile, le contenu fait au moins toute la hauteur : aucun centrage n'est nécessaire.
   Au-delà, on centre avec `safe center`, qui bascule en alignement au début quand le contenu
   déborde. Un navigateur qui ne connaît pas `safe` ignore la déclaration et retombe sur
   `stretch` — lui aussi défilable. */
.vita .vita-modale {
	position: fixed;
	inset: 0;
	z-index: 50;
	background: rgba(8, 96, 108, .6);
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}
.vita .vita-modale[hidden] { display: none; }

.vita .vita-modale__contenu {
	background: var(--fond);
	color: var(--texte);
	width: 100%;
	max-width: 44rem;
	min-height: 100%;
	margin: 0 auto;
	padding: var(--e3) var(--e3) calc(var(--e4) + env(safe-area-inset-bottom, 0px));
	display: flex;
	flex-direction: column;
	gap: var(--e3);
}

@media (min-width: 48rem) {
	.vita .vita-modale { display: flex; align-items: safe center; justify-content: center; padding: var(--e3); }
	.vita .vita-modale__contenu { min-height: auto; border-radius: var(--rayon-carte); }
}

.vita .vita-modale__entete { display: flex; align-items: center; gap: var(--e2); }
.vita .vita-modale__progression { color: var(--texte-2); white-space: nowrap; font-size: 18px; font-variant-numeric: tabular-nums; }

.vita .vita-progression { flex: 1; height: 6px; background: rgba(8, 96, 108, .14); border-radius: 999px; overflow: hidden; }
.vita .vita-progression__barre { height: 100%; background: var(--turquoise-profond); width: 20%; transition: width .25s ease; }

.vita .vita-modale__fermer {
	min-width: 48px;
	min-height: 48px;
	padding: 0;
	background: none;
	border: 0;
	box-shadow: none;
	font-size: 32px;
	line-height: 1;
	color: var(--turquoise-encre);
	cursor: pointer;
}

.vita .vita-modale__titre { font-family: var(--police-titre); font-weight: 500; font-size: var(--t-titre); color: var(--turquoise-encre); line-height: 1.18; text-wrap: balance; margin: 0; }
.vita .vita-modale__corps { flex: 1; display: flex; flex-direction: column; gap: var(--e2); }
.vita .vita-modale__pied { display: flex; gap: var(--e2); align-items: center; margin-top: var(--e2); }
.vita .vita-modale__pied [data-vita-suivant] { margin-left: auto; }
.vita .vita-modale__note { font-size: 18px; }

/* ---- Choix du parcours : grandes cibles ----------------------------------------------------- */

/* `minmax(0, 1fr)` et non `1fr` : une piste `1fr` ne descend pas sous la largeur minimale de son
   contenu, et un bouton dont le libellé porte un mot long (« Accompagnement ») faisait déborder
   la grille de 35 px sur un écran de 320 px — la coche sortait de l'écran. */
.vita .vita-choix { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--e2); }

.vita .vita-choix__option {
	display: flex;
	align-items: center;
	gap: var(--e2);
	min-height: 68px;
	padding: var(--e2) var(--e3);
	background: #fff;
	/* La couleur du texte est FIXÉE, pas héritée : un <button> ne l'hérite pas, et laissée au
	   navigateur elle devient blanche en schéma sombre — sur ce fond blanc. */
	color: var(--texte);
	border: 2px solid rgba(8, 96, 108, .14);
	border-radius: var(--rayon-carte);
	box-shadow: none;
	text-transform: none;
	letter-spacing: normal;
	cursor: pointer;
	font: inherit;
	font-size: 19px;
	line-height: 1.35;
	text-align: left;
	width: 100%;
	min-width: 0;
	transition: border-color .15s ease, background-color .15s ease;
}
.vita .vita-choix__option > span { min-width: 0; }

/* Sous 384 px, la colonne de texte d'une option sélectionnée — entre le pictogramme et la
   coche — descend sous 150 px, et « Accompagnement » (148 px à 19 px) se coupe au milieu du
   mot. On resserre : marges, pictogramme et coche plus petits, corps à 18 px — le plancher du
   §6, jamais en dessous. */
@media (max-width: 23.99rem) {
	.vita .vita-choix__option { padding: var(--e2) 14px; gap: 12px; font-size: 18px; }
	.vita .vita-choix__option .vita-picto { width: 44px; height: 44px; }
	.vita .vita-choix__option .vita-picto::before { width: 22px; height: 22px; }
	.vita .vita-choix__option[aria-pressed="true"]::after,
	.vita .vita-choix__option[aria-checked="true"]::after { width: 22px; height: 22px; }
}

/* Sous 360 px, même resserrée, la colonne de texte d'une option sélectionnée fait 146 px : deux
   de moins que le mot. La coche sort alors du flux et se pose dans la marge droite, réservée
   par le remplissage — le texte retrouve 154 px, et le mot passe entier. */
@media (max-width: 22.49rem) {
	.vita .vita-choix__option { position: relative; padding-right: 40px; }
	.vita .vita-choix__option[aria-pressed="true"]::after,
	.vita .vita-choix__option[aria-checked="true"]::after {
		position: absolute;
		right: 10px;
		top: 50%;
		margin: -11px 0 0;
	}
}
.vita .vita-choix__option:hover { border-color: var(--turquoise-profond); }

/* L'état sélectionné n'est PAS porté par la seule couleur : la bordure s'épaissit, une coche
   apparaît, et aria-pressed / aria-checked l'annoncent (critère A11Y-05). */
.vita .vita-choix__option[aria-pressed="true"],
.vita .vita-choix__option[aria-checked="true"] {
	border-color: var(--turquoise-encre);
	background: var(--turquoise-voile);
	color: var(--turquoise-encre);
	font-weight: 600;
}
/* Kadence peint `button:hover, :focus, :active` en blanc. Toucher une option ne doit jamais
   faire disparaître son texte : chaque état fixe sa couleur. */
.vita .vita-choix__option:hover,
.vita .vita-choix__option:focus,
.vita .vita-choix__option:focus-visible,
.vita .vita-choix__option:active { color: var(--texte); background: #fff; }
.vita .vita-choix__option[aria-pressed="true"]:hover,
.vita .vita-choix__option[aria-pressed="true"]:focus,
.vita .vita-choix__option[aria-pressed="true"]:active,
.vita .vita-choix__option[aria-checked="true"]:hover,
.vita .vita-choix__option[aria-checked="true"]:focus,
.vita .vita-choix__option[aria-checked="true"]:active { color: var(--turquoise-encre); background: var(--turquoise-voile); }
.vita .vita-choix__option[aria-pressed="true"]::after,
.vita .vita-choix__option[aria-checked="true"]::after {
	content: '';
	margin-left: auto;
	flex: 0 0 auto;
	width: 26px;
	height: 26px;
	background: var(--vert-soin);
	-webkit-mask: var(--trace-coche) center / contain no-repeat;
	mask: var(--trace-coche) center / contain no-repeat;
}

/* ---- Champs de formulaire -------------------------------------------------------------------- */

/* Étiquette TOUJOURS visible : jamais de placeholder en guise d'étiquette (critère A11Y-08). */
.vita .vita-champ { display: flex; flex-direction: column; gap: var(--e1); }
.vita .vita-champ__label { font-weight: 600; font-size: 19px; }
.vita .vita-champ__aide { display: block; color: var(--texte-2); font-weight: 400; font-size: 18px; line-height: 1.5; }

.vita .vita-champ input[type="text"],
.vita .vita-champ input[type="tel"],
.vita .vita-champ input[type="email"],
.vita .vita-champ textarea,
.vita .vita-champ select {
	width: 100%;
	min-height: 60px;
	padding: var(--e1) var(--e2);
	font: inherit;
	font-size: 19px;
	color: var(--texte);
	background: #fff;
	border: 2px solid var(--texte-2);
	border-radius: var(--rayon-bouton);
	box-shadow: none;
}
.vita .vita-champ textarea { min-height: 140px; resize: vertical; line-height: 1.6; }
.vita .vita-champ input:focus, .vita .vita-champ textarea:focus { border-color: var(--turquoise-encre); }

/* Une erreur est aussi ÉCRITE, pas seulement colorée (critère A11Y-05). */
.vita .vita-erreur {
	background: #fff;
	border: 2px solid #B32D2E;
	border-radius: var(--rayon-bouton);
	color: #8A2224;
	padding: var(--e2);
}
.vita .vita-erreur ul { margin: var(--e1) 0 0; padding-left: 1.2em; }

.vita .vita-case {
	display: flex;
	gap: var(--e2);
	align-items: flex-start;
	min-height: 48px;
	padding: var(--e1) 0;
	cursor: pointer;
	line-height: 1.55;
}
.vita .vita-case input { width: 28px; height: 28px; margin-top: 5px; flex: 0 0 auto; accent-color: var(--turquoise-profond); }

/* Pot de miel : masqué visuellement ET retiré de l'ordre de tabulation côté HTML. */
.vita .vita-pot-de-miel {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* ---- Écran de confirmation --------------------------------------------------------------------- */

.vita .vita-confirmation { display: flex; flex-direction: column; gap: var(--e3); align-items: center; text-align: center; }
.vita .vita-confirmation__reference {
	font-family: var(--police-titre);
	font-size: clamp(30px, 6vw, 40px);
	font-weight: 600;
	color: var(--turquoise-encre);
	letter-spacing: .04em;
	font-variant-numeric: tabular-nums;
}

/* ---------------------------------------------------------------------------------------------
   MOUVEMENT
   Aucun carrousel, aucune lecture automatique : le §13 les interdit, et ils desservent ce public.
   --------------------------------------------------------------------------------------------- */

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

.vita .vita-lecteur-ecran {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ---------------------------------------------------------------------------------------------
   TRACÉS DES PICTOGRAMMES
   Trait de 1,8 px, extrémités et jonctions arrondies, aucun aplat — charte §5.
   Chaque tracé est posé en MASQUE CSS et non en image : le pictogramme hérite de la couleur du
   texte, ce qui le rend lisible dans un bouton comme dans un rond turquoise voile, et sur la
   bande sombre comme sur le fond clair, sans maintenir deux fichiers par icône.
   --------------------------------------------------------------------------------------------- */

:root {
	--trace-plus: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%205v14%22%2F%3E%3Cpath%20d%3D%22M5%2012h14%22%2F%3E%3C%2Fsvg%3E");
	--trace-coche: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m4.5%2012.5%205%205%2010-11%22%2F%3E%3C%2Fsvg%3E");
}

.vita .vita-picto--goutte { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203.5c3.2%203.6%205.2%206.2%205.2%208.7A5.2%205.2%200%200%201%2012%2017.4a5.2%205.2%200%200%201-5.2-5.2c0-2.5%202-5.1%205.2-8.7Z%22%2F%3E%3Cpath%20d%3D%22M9.4%2012.3a2.6%202.6%200%200%200%202.6%202.6%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--vetement { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M9%203.5%206%205.2a2%202%200%200%200-1%201.7v3.4h2.4v9.2h9.2v-9.2H19V6.9a2%202%200%200%200-1-1.7L15%203.5%22%2F%3E%3Cpath%20d%3D%22M9%203.5a3%203%200%200%200%206%200%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--assiette { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%227.5%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223.8%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--chemin { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6.5%2020c0-4%203-4.5%205.5-5.5S17.5%2012%2017.5%208%22%2F%3E%3Ccircle%20cx%3D%226.5%22%20cy%3D%2220%22%20r%3D%221.6%22%2F%3E%3Ccircle%20cx%3D%2217.5%22%20cy%3D%225.2%22%20r%3D%222.6%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--maison { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2011%2012%204.5%2020%2011%22%2F%3E%3Cpath%20d%3D%22M6%2010.2V19a.8.8%200%200%200%20.8.8h10.4a.8.8%200%200%200%20.8-.8v-8.8%22%2F%3E%3Cpath%20d%3D%22M10%2019.8v-5h4v5%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--coeur { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2019.5s-6.8-4.2-6.8-8.6A3.7%203.7%200%200%201%2012%208.4a3.7%203.7%200%200%201%206.8%202.5c0%204.4-6.8%208.6-6.8%208.6Z%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--boussole { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228%22%2F%3E%3Cpath%20d%3D%22m14.8%209.2-1.6%204-4%201.6%201.6-4Z%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--mains { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3.5%2013.5%207%2010a2%202%200%200%201%202.8%200l2.2%202.2%22%2F%3E%3Cpath%20d%3D%22M20.5%2013.5%2017%2010a2%202%200%200%200-2.8%200L12%2012.2%22%2F%3E%3Cpath%20d%3D%22M12%2012.2V20%22%2F%3E%3Cpath%20d%3D%22M8.6%2020h6.8%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--telephone { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6.2%203.8h3l1.5%203.7-1.9%201.2a11%2011%200%200%200%204.5%204.5l1.2-1.9%203.7%201.5v3a1.8%201.8%200%200%201-2%201.8A14.6%2014.6%200%200%201%204.4%205.8a1.8%201.8%200%200%201%201.8-2Z%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--personne { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228%22%20r%3D%223.4%22%2F%3E%3Cpath%20d%3D%22M5.5%2020a6.5%206.5%200%200%201%2013%200%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--experience { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%204.2a4.4%204.4%200%200%200-4.4%204.4c0%201.6.7%202.6%201.4%203.5.6.8%201%201.4%201%202.5h4a4%204%200%200%201%201-2.5c.7-.9%201.4-1.9%201.4-3.5A4.4%204.4%200%200%200%2012%204.2Z%22%2F%3E%3Cpath%20d%3D%22M10%2017.2h4%22%2F%3E%3Cpath%20d%3D%22M10.6%2019.6h2.8%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--carte { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2020.5s6-5.3%206-9.4a6%206%200%200%200-12%200c0%204.1%206%209.4%206%209.4Z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2211%22%20r%3D%222.3%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--document { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M13.5%203.5H7.2a1.2%201.2%200%200%200-1.2%201.2v14.6a1.2%201.2%200%200%200%201.2%201.2h9.6a1.2%201.2%200%200%200%201.2-1.2V8Z%22%2F%3E%3Cpath%20d%3D%22M13.5%203.5V8H18%22%2F%3E%3Cpath%20d%3D%22M9%2012.5h6%22%2F%3E%3Cpath%20d%3D%22M9%2016h4%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--horloge { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228%22%2F%3E%3Cpath%20d%3D%22M12%207.6V12l2.8%201.8%22%2F%3E%3C%2Fsvg%3E"); }

/* Pictogrammes des moyens de règlement — même facture que les précédents. */
.vita .vita-picto--titre { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3.5%208.6a1.6%201.6%200%200%200%200%206.8v2.4a1.2%201.2%200%200%200%201.2%201.2h14.6a1.2%201.2%200%200%200%201.2-1.2v-2.4a1.6%201.6%200%200%201%200-6.8V6.2A1.2%201.2%200%200%200%2019.3%205H4.7a1.2%201.2%200%200%200-1.2%201.2Z%22%2F%3E%3Cpath%20d%3D%22M8.6%2010.4h6.8%22%2F%3E%3Cpath%20d%3D%22M8.6%2013.6h4.2%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--virement { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%207.5h9.5%22%2F%3E%3Cpath%20d%3D%22m10.8%204.8%202.7%202.7-2.7%202.7%22%2F%3E%3Cpath%20d%3D%22M20%2016.5h-9.5%22%2F%3E%3Cpath%20d%3D%22m13.2%2013.8-2.7%202.7%202.7%202.7%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--carte-bancaire { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225.5%22%20width%3D%2218%22%20height%3D%2213%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%2010h18%22%2F%3E%3Cpath%20d%3D%22M6.5%2014.6h3.2%22%2F%3E%3C%2Fsvg%3E"); }
.vita .vita-picto--especes { --trace: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%222.8%22%20y%3D%227%22%20width%3D%2214%22%20height%3D%228.4%22%20rx%3D%221.4%22%2F%3E%3Ccircle%20cx%3D%229.8%22%20cy%3D%2211.2%22%20r%3D%222%22%2F%3E%3Cpath%20d%3D%22M19.6%209.4v7.2a1.4%201.4%200%200%201-1.4%201.4H6.6%22%2F%3E%3C%2Fsvg%3E"); }
