/*
 * Composants des écrans du plugin, limités à .bio-platform ; variables dans tokens.css.
 * .bio-platform enveloppe le contenu affiché dans le thème ; .bio-standalone est le document autonome
 * de secours (page.php), qui fournit lui-même fond, police et en-tête.
 */
.bio-platform,
.bio-standalone {
  color: var(--bio-color-text);
  font-family: var(--bio-font-body);
  font-size: var(--bio-font-size);
  line-height: var(--bio-line-height);
}

.bio-standalone {
  margin: 0;
  background: var(--bio-color-background);
  font-family: var(--bio-font-standalone);
}

.bio-standalone .bio-header {
  padding: var(--bio-space-m);
  background: var(--bio-color-surface);
  border-bottom: 1px solid var(--bio-color-border);
}

.bio-standalone .bio-main {
  max-width: var(--bio-reading-width);
  margin: 0 auto;
  padding: var(--bio-space-l) var(--bio-space-m);
}

.bio-platform a { color: var(--bio-color-accent); }
/* Survol des liens : bleu survol du kit (link_hover_color), comme sur le reste du site. */
.bio-platform a:hover { color: var(--bio-color-accent-hover); }

.bio-platform :focus-visible {
  outline: 3px solid var(--bio-color-focus);
  outline-offset: 3px;
}

/* Titres en police de titre du site (Gloock, qui n'a pas de gras : poids normal). */
.bio-platform :is(h1, h2, h3),
.bio-standalone h1 { font-family: var(--bio-font-heading); font-weight: 400; }
/* Deux tailles de titre seulement (DA04 A, choix de François du 25/10/2026 ; cinq tailles avant, de 20,8 à 28 px) : titre de
   section (un h2 posé sur la page) de 24 à 28 px, titre de carte (h2 ou h3 dans une carte, et tout h3) de 22 px ; espacement
   des lettres proportionnel. « body » devant : le kit (« .elementor-kit-N h2 », -0,5 px) a la même force que « .bio-platform h2 ».
   Les questions du questionnaire (.bio-question__title) gardent leur taille : elles sont le titre de leur écran. */
body .bio-platform :is(h2, h3) { letter-spacing: var(--bio-heading-tracking); line-height: 1.2; }
body .bio-platform h2 { font-size: var(--bio-heading-section); }
body .bio-platform h3,
.bio-platform :where(.bio-card, .bio-pay-summary, .bio-rail, .bio-filter-form, .bio-feedback) :where(h2, h3):not(.bio-question__title) { font-size: var(--bio-heading-card); }

.bio-platform .bio-card {
  margin: var(--bio-space-m) 0;
  padding: var(--bio-space-l);
  background: var(--bio-color-surface);
  border: 1px solid var(--bio-color-border);
  border-radius: var(--bio-radius);
}

/* Titres d'une carte : sans marge au-dessus. Taille : titre de carte (DA04 A, plus haut ; M21 donnait 22,5 et 19,8 px). */
.bio-platform .bio-card :is(h2, h3) { margin-top: 0; }
.bio-platform .bio-card--quiet { background: transparent; }
/* Largeur de lecture : 60 à 70 caractères par ligne (charte), même dans une carte large. */
.bio-platform :is(.bio-card, .bio-notice) :is(p, li, dd) { max-width: var(--bio-reading-width); }
/* Carte qui porte l'action attendue de la page : bordure d'accent. */
.bio-platform .bio-card--action { border: 2px solid var(--bio-color-accent); }
.bio-platform .bio-summary { font-weight: 600; }
.bio-platform .bio-people { padding-left: 0; list-style: none; }
.bio-platform .bio-people li + li { margin-top: var(--bio-space-l); padding-top: var(--bio-space-l); border-top: 1px solid var(--bio-color-border); }

.bio-platform .bio-facts {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: var(--bio-space-s) var(--bio-space-m);
  /* Intitulé sur la ligne du texte même quand la valeur est un lien de 48 px. */
  align-items: baseline;
}

.bio-platform .bio-facts dt { color: var(--bio-color-muted); }
.bio-platform .bio-facts dd { margin: 0; }
/* Liens seuls (adresse et téléphone du dossier, « Site de … » du profil, « Tout effacer » des filtres) : 48 px de haut, comme la
   charte (« lien seul dans une liste » ; A2-5 de la recette du 26/10/2026, 22 à 31 px avant). */
.bio-platform :is(.bio-facts dd > a, .bio-profile__site > a, .bio-actions > a:not([class])) { display: inline-flex; align-items: center; min-height: 48px; overflow-wrap: anywhere; }
.bio-platform .bio-help { color: var(--bio-color-muted); }
.bio-platform .bio-status { font-weight: 600; }

.bio-platform .bio-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--bio-space-m);
}

.bio-platform .bio-actions form { margin: 0; }

.bio-platform .bio-button {
  /* Même rendu pour <button> et <a> : le thème donne aux liens un interligne et un soulignement propres. */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 3rem;
  line-height: var(--bio-line-height-control);
  padding: var(--bio-space-s) 1.75rem;
  border: 2px solid var(--bio-color-accent);
  /* Pilule en gras, comme les boutons du site (kit Elementor). */
  border-radius: var(--bio-radius-button);
  background: var(--bio-color-accent);
  color: var(--bio-color-accent-text);
  font: inherit;
  font-family: var(--bio-font-button);
  font-weight: var(--bio-font-weight-button);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}

.bio-platform .bio-button--secondary {
  background: var(--bio-color-surface);
  color: var(--bio-color-accent);
}

/* États déclarés : sous le kit Elementor du site, « .elementor-kit-N a:hover » et « button:hover, button:focus »
   (plus spécifiques que .bio-platform .bio-button) repeignaient les boutons du plugin : lien principal bleu sur bleu
   (contraste 1,09:1), bouton secondaire devenu plein. La couleur de focus visible reste celle de :focus-visible. */
.bio-platform .bio-button:is(:hover, :focus) {
  background: var(--bio-color-accent);
  color: var(--bio-color-accent-text);
}
.bio-platform .bio-button--secondary:is(:hover, :focus) {
  background: var(--bio-color-surface);
  color: var(--bio-color-accent);
}
/* Survol : bleu clair du kit (bouton plein), fond bleu pâle (bouton secondaire). */
.bio-platform .bio-button:not(.bio-button--secondary):not(:disabled):hover {
  border-color: var(--bio-color-accent-hover);
  background: var(--bio-color-accent-hover);
}
.bio-platform .bio-button--secondary:not(:disabled):hover { background: var(--bio-color-selected); }

/* Bouton principal : la forme du site (DA01 A, arbitrage de François du 25/10/2026 ; charte, « Bouton principal »). Le bouton qui fait
   avancer (envoyer, enregistrer, présenter, se connecter) prend la pastille cerclée de jaune et sa flèche, 58 px de haut et l'ombre
   de « Trouver mon biographe » ; texte de 18 px aligné à gauche s'il passe sur deux lignes, pastille à droite. La pastille est un
   ::after (les gabarits n'ont pas d'élément pour elle) ; .bio-cta, qui l'écrit dans le balisage, a la même forme. Survol : le
   bouton monte de 2 px, la pastille se remplit de jaune, la flèche pivote (kit.css, .lbb-cta). Les boutons secondaires (contour
   bleu) et les liens-boutons restent sans pastille. Avant : pilule de 50 à 52 px sans pastille ni ombre. */
.bio-platform .bio-button:not(.bio-button--secondary):not(.bio-link-button),
.bio-platform .bio-cta {
  gap: 0.875rem;
  min-height: var(--bio-cta-height);
  padding: var(--bio-cta-padding);
  justify-content: space-between;
  font-size: var(--bio-font-size);
  line-height: 1.25;
  text-align: left;
  box-shadow: var(--bio-shadow-button);
  transition: transform 0.2s ease, background-color 0.2s ease;
}
.bio-platform .bio-button:not(.bio-button--secondary):not(.bio-link-button)::after,
.bio-platform .bio-cta__pastille {
  display: inline-grid;
  flex: none;
  place-items: center;
  width: var(--bio-cta-pastille);
  height: var(--bio-cta-pastille);
  border-radius: 50%;
  box-shadow: inset 0 0 0 2px var(--bio-color-pastille);
  font-size: 1.25rem;
  line-height: 1;
  transition: background-color 0.2s ease, color 0.2s ease, transform 0.25s ease;
}
/* Symboles décoratifs ajoutés par la feuille de style (→, ▸, ▾, ▴) : texte de remplacement vide (« / "" »), pour qu'un lecteur d'écran ne
   les lise pas dans le nom du bouton ou du titre (AC10 A, grand audit, rendez-vous 3, DEC-H054) ; la première déclaration reste pour
   les navigateurs qui ne connaissent pas cette forme. Même règle plus bas, à chaque symbole. */
.bio-platform .bio-button:not(.bio-button--secondary):not(.bio-link-button)::after { content: "→"; content: "→" / ""; }
/* Le bouton du plugin a un contour de 2 px (couleur du fond ; gris quand « Continuer » est éteint) : rembourrage réduit d'autant,
   58 px de haut comme celui du site. */
.bio-platform .bio-button:not(.bio-button--secondary):not(.bio-link-button) { padding: 5px 5px 5px 24px; }
.bio-platform .bio-button:not(.bio-button--secondary):not(.bio-link-button):not(:disabled):hover::after,
.bio-platform .bio-cta:hover .bio-cta__pastille { background: var(--bio-color-pastille); color: var(--bio-color-accent); transform: rotate(-45deg); }
@media (prefers-reduced-motion: no-preference) {
  .bio-platform :is(.bio-button:not(.bio-button--secondary):not(.bio-link-button), .bio-cta):not(:disabled):hover { transform: translateY(-2px); }
}
@media (prefers-reduced-motion: reduce) {
  .bio-platform :is(.bio-button, .bio-cta, .bio-cta__pastille), .bio-platform .bio-button::after { transition: none; }
}

/* Messages (DA03 A, choix de François du 25/10/2026) : un message neutre ou d'information prend la forme de l'encadré « Bon à
   savoir » des pages du site (kit.css : fond bleu pâle, trait d'encre bleue de 4 px, coins arrondis à droite, 16 / 20 px) ; avant,
   trait gris presque invisible sur fond blanc, à angles droits. Réussite, erreur et avertissement gardent leur trait de couleur sur
   la feuille, avec les mêmes coins. Largeur : 780 px au plus, comme les encadrés du site (DA08 A ; jusqu'à 130 signes par ligne
   avant sur « Mon projet »). */
.bio-platform .bio-notice {
  box-sizing: border-box;
  max-width: 48.75rem;
  padding: var(--bio-space-m) 1.25rem;
  background: var(--bio-color-selected);
  border-left: 4px solid var(--bio-color-accent);
  border-radius: 0 var(--bio-radius) var(--bio-radius) 0;
}

.bio-platform :is(.bio-notice--success, .bio-notice--error, .bio-notice--warning) { background: var(--bio-color-surface); }
.bio-platform .bio-notice--success { border-left-color: var(--bio-color-success); }
.bio-platform .bio-notice--error { border-left-color: var(--bio-color-error); }
.bio-platform .bio-notice--warning { border-left-color: var(--bio-color-warning); }
.bio-platform .bio-notice > p:first-child { margin-top: 0; }
.bio-platform .bio-notice > p:last-child { margin-bottom: 0; }
/* Pages de message (« Lien non valide », « Lien expiré », « Lien envoyé ») : titre à la taille de ceux des cartes (22,5 px, M21)
   et message à la largeur de lecture (RLP09 A, choix de François du 23/10/2026 ; avant : titre de 40 px, ligne de 150 signes) ;
   22 px depuis DA04 A (titre de carte). */
.bio-platform > h2:has(+ .bio-notice) { font-size: var(--bio-heading-card); }
.bio-platform > h2 + .bio-notice { max-width: var(--bio-reading-width); }
/* « Mon projet », lien envoyé : le formulaire est replié derrière « Renvoyer à une autre adresse » (RLP09 A). */
.bio-platform .bio-access-again > summary { display: inline-flex; align-items: center; min-height: 48px; color: var(--bio-color-accent); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

@media (max-width: 30rem) {
  .bio-platform .bio-facts { grid-template-columns: 1fr; }
  .bio-platform .bio-facts dd { margin-bottom: var(--bio-space-s); }
  .bio-platform .bio-button { width: 100%; }
}

.bio-platform .bio-button:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.bio-platform input:not([type="hidden"]),
.bio-platform textarea {
  width: 100%;
  max-width: var(--bio-reading-width);
  box-sizing: border-box;
  padding: var(--bio-space-s);
  /* Contour lisible d'un champ (texte doux du kit, 7,9:1 ; WCAG 1.4.11). */
  border: var(--bio-border-control) solid var(--bio-color-control);
  border-radius: var(--bio-radius);
  font: inherit;
}
/* Listes déroulantes : même contour et même fond que les champs, sur tous les écrans. */
.bio-platform select {
  box-sizing: border-box;
  padding: 0 var(--bio-space-m);
  border: var(--bio-border-control) solid var(--bio-color-control);
  border-radius: var(--bio-radius);
  background: var(--bio-color-surface);
  color: var(--bio-color-text);
  font: inherit;
}

.bio-platform input[type="number"] { max-width: 8rem; }
/* Champ en erreur (correctif de l'audit du 19/10/2026) : bordure rouge doublée, visible sans compter sur la couleur seule
   (message dessous, marqué d'un « ! »). */
.bio-platform [aria-invalid="true"] { border-color: var(--bio-color-error); box-shadow: inset 0 0 0 1px var(--bio-color-error); }
.bio-platform .bio-field-error { display: flex; align-items: flex-start; gap: var(--bio-space-s); margin-top: 0; color: var(--bio-color-error-text); font-weight: 700; }
.bio-platform .bio-field-error::before { content: "!"; content: "!" / ""; display: inline-grid; flex: none; place-items: center; width: 1.4rem; height: 1.4rem; margin-top: 0.15em; border-radius: 50%; background: var(--bio-color-error); color: var(--bio-color-accent-text); font-size: 0.9rem; line-height: 1; }

/* --- Questionnaire du porteur de projet (NEXT01) ------------------------------------------------------- */
/* Avancement : étapes sur une ligne, puis « Étape 2 sur 5 · Le récit — question 9 sur 31 » et une barre. */
.bio-platform .bio-progress { margin: 0 0 var(--bio-space-l); }
.bio-platform .bio-stages {
  display: flex;
  justify-content: space-between;
  gap: var(--bio-space-s);
  margin: 0 0 var(--bio-space-s);
  padding: 0;
  list-style: none;
  color: var(--bio-color-muted);
  font-size: var(--bio-font-size);
}
.bio-platform .bio-stages__item { display: flex; align-items: center; gap: 0.4rem; min-width: 0; }
.bio-platform .bio-stages__number {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: 2px solid var(--bio-color-control);
  border-radius: 50%;
  background: var(--bio-color-surface);
  font-weight: 700;
}
/* Étape en cours : contour seul, à l'encre bleue ; étape terminée : coche blanche sur encre bleue (arbitrage E du 17/10/2026). */
.bio-platform .bio-stages__item--current { color: var(--bio-color-text); font-weight: 700; }
.bio-platform .bio-stages__item--current .bio-stages__number { border-color: var(--bio-color-accent); box-shadow: inset 0 0 0 1px var(--bio-color-accent); color: var(--bio-color-accent); }
.bio-platform .bio-stages__item--done { color: var(--bio-color-text); }
.bio-platform .bio-stages__item--done .bio-stages__number { border-color: var(--bio-color-accent); background: var(--bio-color-accent); color: var(--bio-color-accent-text); }
.bio-platform .bio-stages__then { margin: 0 0 var(--bio-space-s); color: var(--bio-color-muted); }
/* Petit repère des écrans qui suivent les thèmes : « Coordonnées · Nombre de biographes · Estimation » (série 4). */
.bio-platform .bio-substeps { display: flex; flex-wrap: wrap; gap: 0.25rem 0.75rem; margin: 0 0 var(--bio-space-s); padding: 0; list-style: none; color: var(--bio-color-muted); font-size: var(--bio-font-size); }
.bio-platform .bio-substeps__item + .bio-substeps__item::before { content: "·"; content: "·" / ""; margin-right: 0.75rem; color: var(--bio-color-muted); }
.bio-platform .bio-substeps__item--current { color: var(--bio-color-text); font-weight: 700; }
.bio-platform .bio-progress__text { margin: 0 0 0.35rem; color: var(--bio-color-text); font-size: var(--bio-font-size); }
/* Après les thèmes (coordonnées, estimation) : « 4 thèmes terminés », sur téléphone seulement. */
.bio-platform .bio-stages__done { display: none; align-items: center; gap: 0.4rem; margin: 0 0 var(--bio-space-s); color: var(--bio-color-text); font-size: var(--bio-font-size); font-weight: 700; }
.bio-platform .bio-stages__done .bio-stages__number { border-color: var(--bio-color-accent); background: var(--bio-color-accent); color: var(--bio-color-accent-text); }
@media (max-width: 48rem) {
  /* Petit écran : noms complets toujours visibles, sans survol (décision du 17/10/2026), en liste verticale compacte. */
  .bio-platform .bio-stages { flex-direction: column; gap: 0.25rem; }
  .bio-platform .bio-stages__number { width: 1.6rem; height: 1.6rem; }
  .bio-platform .bio-stages__label { overflow-wrap: anywhere; }
  .bio-platform .bio-stages--finished { display: none; }
  .bio-platform .bio-stages__done { display: flex; }
}

.bio-platform .bio-question fieldset,
.bio-platform .bio-finish fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
/* La question, titre de l'écran : police de titre du site. */
.bio-platform .bio-question__title {
  margin-bottom: var(--bio-space-s);
  padding: 0;
  font-family: var(--bio-font-heading);
  font-size: clamp(1.75rem, 1.5rem + 1vw, 2.25rem);
  font-weight: 400;
  line-height: 1.15;
}
.bio-platform .bio-question__title:focus { outline: none; }
/* Question ou champ facultatif : pastille lisible à côté de l'intitulé (porteur 13/10 ; remarques du 18/10/2026 : contraste et
   taille). Police du texte, pas celle du titre (Gloock n'a pas de gras) ; contour des champs (3:1 au moins), texte foncé. */
.bio-platform span:is(.bio-question__optional, .bio-field__optional) { display: inline-block; margin: 0 0 0 var(--bio-space-s); padding: 0.1rem 0.65rem; border: var(--bio-border-control) solid var(--bio-color-control); border-radius: 999px; background: var(--bio-color-selected); color: var(--bio-color-text); font-family: var(--bio-font-body); font-size: var(--bio-font-size); font-weight: 700; line-height: 1.5; letter-spacing: 0; vertical-align: middle; }
.bio-platform .bio-question__help { margin: 0 0 var(--bio-space-m); color: var(--bio-color-text); font-weight: 400; max-width: var(--bio-reading-width); }
/* Consignes secondaires sans gras (décision Q3 du 20/10/2026) : le gras rivalisait avec l'intitulé. */
.bio-platform .bio-question__hint { margin: 0; color: var(--bio-color-text); font-weight: 400; }
/* Mention sur les données à l'étape de l'adresse (RGPD art. 13) : en petit, sous le champ, lisible (contraste du texte secondaire). */
.bio-platform .bio-question__legal { margin: var(--bio-space-s) 0 0; color: var(--bio-color-muted); font-size: var(--bio-font-size); font-weight: 400; max-width: var(--bio-reading-width); }
.bio-platform .bio-question__legal a { color: inherit; text-decoration: underline; }
/* Choix unique : « La question suivante s'affiche après votre choix », seulement quand le script fait avancer seul. */
.bio-platform .bio-question__auto { display: none; }
.bio-platform .bio-q--js .bio-question__auto { display: block; }
/* « ← Question précédente » : lien à toucher de 48 px, avant les boutons d'action. */
.bio-platform .bio-question__back { display: inline-flex; align-items: center; min-height: 48px; min-width: 48px; text-decoration: none; }
/* Sans soulignement, la flèche suffit (décision de François du 21/10/2026) ; survol : soulignement qui revient ; focus clavier :
   le contour de focus du site, plus le soulignement. */
.bio-platform .bio-question__back:is(:hover, :focus-visible) { text-decoration: underline; text-underline-offset: 3px; }
.bio-platform .bio-question__back:focus-visible { outline: 3px solid var(--bio-color-focus); outline-offset: 3px; }
/* Questions déjà répondues : le lien n'apparaît que sur celle qu'on vient de rouvrir (la page ne se couvre pas de liens). */
.bio-platform .bio-qblock--answered:not(.bio-qblock--focus) .bio-question__back { display: none; }
/* Question rouverte (décision du 17/10/2026, série 4) : « Enregistrer la modification » n'apparaît qu'après un changement
   (le script ajoute bio-question--changed) ; sans script, le bouton reste visible. Sans lien ni bouton, la barre disparaît. */
.bio-platform .bio-q--js .bio-qblock--answered form:not(.bio-question--changed) .bio-question__save { display: none; }
.bio-platform .bio-q--js .bio-qblock--answered:not(.bio-qblock--focus) form:not(.bio-question--changed) .bio-question__nav { display: none; }
/* « Passer cette question » : simple lien ; « Continuer » reste le seul bouton (série 4). Version A du test A/C (décision Q4
   du 20/10/2026, DEC-H045) : le lien est dans la rangée du bouton, juste à sa droite (sous lui sur téléphone), écrit en gras ;
   depuis le 21/10/2026, « Passer : votre biographe en parlera avec vous », et la pastille « Facultatif » au bout de l'intitulé. */
.bio-platform .bio-question__skip { margin: 0; }
.bio-platform .bio-question__skip .bio-link-button { min-height: 48px; font-weight: 700; text-align: center; text-wrap: balance; }
/* Pastille « Facultatif » au bout de l'intitulé d'une question (choix A de François du 21/10/2026) : sans fond, filet gris, texte
   gris foncé, petite et en gras ; elle remplace la phrase sur surligneur sous l'intitulé. */
.bio-platform .bio-question__title span.bio-question__optional { padding: 0.05rem 0.55rem; border: 1px solid var(--bio-color-control); background: none; color: var(--bio-color-muted); font-size: 0.78rem; line-height: 1.5; vertical-align: 0.35em; white-space: nowrap; }
.bio-platform .bio-question__nav { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bio-space-m); margin-top: var(--bio-space-l); max-width: var(--bio-reading-width); }
.bio-platform .bio-question__next { margin-left: auto; min-width: 12rem; min-height: var(--bio-control-height); }
/* Téléphone : « Continuer » en haut, pleine largeur, « Passer cette question » centré dessous, « Question précédente » en bas. */
@media (max-width: 30rem) {
  .bio-platform .bio-question__nav { flex-direction: column; align-items: stretch; }
  .bio-platform .bio-question__next { margin-left: 0; }
  .bio-platform .bio-question__skip { align-self: center; }
  .bio-platform .bio-question__back { order: 1; }
}

.bio-platform .bio-choices { display: grid; gap: var(--bio-space-s); margin: var(--bio-space-m) 0; max-width: var(--bio-reading-width); }
.bio-platform .bio-choices--grid { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); margin-bottom: 0; }
.bio-platform .bio-choices--grid .bio-choice span { white-space: nowrap; }
.bio-platform .bio-choice {
  display: flex;
  align-items: center;
  gap: var(--bio-space-m);
  box-sizing: border-box;
  min-height: var(--bio-choice-height);
  padding: var(--bio-space-s) var(--bio-space-m);
  border: var(--bio-border-control) solid var(--bio-color-control);
  border-radius: var(--bio-radius);
  background: var(--bio-color-surface);
  line-height: var(--bio-line-height-choice);
  cursor: pointer;
}
.bio-platform .bio-choice input { flex: none; width: 1.4rem; height: 1.4rem; margin: 0; accent-color: var(--bio-color-accent); }
/* Survol : la bordure fonce sans prendre la couleur du choix ; le bleu est réservé à la réponse cochée. */
.bio-platform .bio-choice:hover { border-color: var(--bio-color-text); }
.bio-platform .bio-choice:has(input:checked),
.bio-platform .bio-choice--chosen { border-color: var(--bio-color-accent); box-shadow: inset 0 0 0 var(--bio-border-control) var(--bio-color-accent); background: var(--bio-color-selected); font-weight: 600; }
.bio-platform .bio-choice:has(input:focus-visible) { outline: 3px solid var(--bio-color-focus); outline-offset: 3px; }
.bio-platform .bio-choice__detail { display: block; margin: 0 0 var(--bio-space-s) var(--bio-space-l); }
.bio-platform .bio-choice__detail[hidden] { display: none; }
.bio-platform .bio-choice__detail label { display: block; margin-bottom: 0.25rem; }
.bio-platform .bio-choice__detail input { max-width: 20rem; }

.bio-platform .bio-mix p { display: grid; grid-template-columns: minmax(12rem, 1fr) 7rem; align-items: center; gap: var(--bio-space-m); max-width: 28rem; }
/* Accueil du questionnaire (remarques de François du 18/10/2026) : trois repères cochés au-dessus du bouton, le bouton
   visible sans défiler sur téléphone (390 × 844), les précisions en petit dessous. Ordinateur : carte centrée de lecture. */
.bio-platform .bio-welcome { max-width: 40rem; }
.bio-platform .bio-card .bio-welcome__title { margin-bottom: var(--bio-space-m); font-size: var(--bio-heading-section); line-height: 1.2; }
.bio-platform .bio-welcome__list { margin: 0 0 var(--bio-space-l); padding: 0; list-style: none; }
.bio-platform .bio-welcome__list li { position: relative; margin: 0 0 var(--bio-space-s); padding-left: 2rem; font-weight: 700; line-height: 1.4; }
.bio-platform .bio-welcome__list li::before { content: "✓"; content: "✓" / ""; position: absolute; left: 0; top: 0; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: var(--bio-color-selected); color: var(--bio-color-success); font-weight: 700; line-height: 1.4rem; text-align: center; }
.bio-platform .bio-welcome__action { margin: 0 0 var(--bio-space-m); }
.bio-platform .bio-welcome__note { margin: 0 0 var(--bio-space-s); color: var(--bio-color-muted); font-size: var(--bio-font-size); line-height: 1.5; }
.bio-platform .bio-welcome__note:last-child { margin-bottom: 0; }
@media (max-width: 30rem) {
  .bio-platform .bio-welcome { padding: var(--bio-space-m) var(--bio-space-m) var(--bio-space-l); }
}
.bio-platform .bio-button--large { min-height: var(--bio-control-height); font-size: 1.1em; padding-inline: calc(var(--bio-space-l) * 1.5); }
.bio-platform .bio-link-button,
.bio-platform .bio-link-button:is(:hover, :focus) { padding: 0; border: 0; border-radius: 0; background: none; color: var(--bio-color-accent); font: inherit; text-decoration: underline; cursor: pointer; }
/* Liens d'action seuls sur leur ligne : zone de 48 px à toucher (public de 50 à 90 ans) ; aussi « Revenir à mes coordonnées »,
   à côté du bouton (MO05 A, 25/10/2026 : 30 px avant ; rien ne bouge à l'œil). */
.bio-platform :is(.bio-stage-back, .bio-estimate__note, .bio-finish p, .bio-estimate-details > p, .bio-stage-close__review) > a:only-child,
.bio-platform .bio-question__nav > a:not(.bio-button),
.bio-platform .bio-link-button { display: inline-flex; align-items: center; min-height: 48px; }

.bio-platform .bio-recap dl { margin: 0; }
.bio-platform .bio-recap__row { display: grid; grid-template-columns: 1fr auto; gap: 0.25rem var(--bio-space-m); padding: var(--bio-space-s) 0; border-bottom: 1px solid var(--bio-color-border); }
.bio-platform .bio-recap__row dt { grid-column: 1 / -1; color: var(--bio-color-muted); font-size: var(--bio-font-size); }
.bio-platform .bio-recap__row dd { margin: 0; }
.bio-platform .bio-recap__edit { text-align: right; }

/* Estimation : prix mis en avant ; sur grand écran, prix et action restent visibles à droite. */
/* Titre de la carte et montants dans la police des titres, comme le grand prix (DA04 et PR04 A, 25/10/2026 : police du texte en gras
   et zéro barré avant, « 2 4Ø0 € » ; le zéro barré reste pour les numéros de téléphone). */
.bio-platform .bio-estimate__label { margin: 0; font-family: var(--bio-font-heading); font-size: var(--bio-heading-card); font-weight: 400; color: var(--bio-color-text); }
/* Prix en police de titre : chiffres sans zéro barré (Atkinson barre le zéro). */
.bio-platform .bio-estimate__price { margin: 0.25rem 0 var(--bio-space-m); font-family: var(--bio-font-heading); font-size: 3rem; font-weight: 400; letter-spacing: -0.01em; line-height: 1.1; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bio-platform .bio-estimate__note { color: var(--bio-color-text); }
.bio-platform .bio-estimate .bio-button--large { width: 100%; }
/* Deux colonnes seulement si la place réelle le permet (le thème peut limiter la largeur du contenu). */
.bio-platform .bio-estimate-wrap { container-type: inline-size; }
@container (min-width: 56rem) {
  .bio-platform .bio-estimate-layout { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: var(--bio-space-l); align-items: start; }
  .bio-platform .bio-estimate-layout > .bio-estimate { order: 2; position: sticky; top: calc(var(--bio-header-offset) + var(--bio-space-l)); }
}
.bio-platform .bio-lines { margin: 0; }
.bio-platform .bio-lines__row { display: grid; grid-template-columns: 1fr auto; gap: 0 var(--bio-space-m); padding: var(--bio-space-s) 0; border-bottom: 1px solid var(--bio-color-border); }
.bio-platform .bio-lines dt { font-weight: 600; }
.bio-platform .bio-lines dd { margin: 0; }
.bio-platform .bio-lines__amount { text-align: right; font-family: var(--bio-font-heading); font-weight: 400; white-space: nowrap; font-variant-numeric: tabular-nums; }
.bio-platform .bio-lines__detail { grid-column: 1 / -1; color: var(--bio-color-text); }
.bio-platform .bio-lines__row--total { border-top: 2px solid var(--bio-color-text); border-bottom: 0; font-size: 1.1em; }
/* Cartes d'ajustement = interrupteurs (remarques de François du 18/10/2026) : cartes fixes, état appliqué visible (bordure,
   fond, case cochée), effet sur le prix à droite, un seul bouton qui applique puis retire (aria-pressed). */
.bio-platform .bio-levers { display: grid; gap: var(--bio-space-s); margin: 0 0 var(--bio-space-m); padding: 0; list-style: none; }
.bio-platform .bio-levers__group { margin: var(--bio-space-m) 0 var(--bio-space-s); }
.bio-platform .bio-levers__total { margin: 0 0 var(--bio-space-s); font-weight: 700; }
.bio-platform .bio-lever { display: grid; grid-template-columns: 1fr auto; gap: 0.25rem var(--bio-space-m); padding: var(--bio-space-m); border: 2px solid var(--bio-color-border); border-radius: var(--bio-radius); background: var(--bio-color-surface); }
.bio-platform .bio-lever p { margin: 0; }
.bio-platform .bio-lever__title { margin-bottom: 0.25rem; }
.bio-platform .bio-lever__effect { color: var(--bio-color-muted); }
.bio-platform .bio-lever__priority { margin: .3rem 0 0; font-weight: 600; color: var(--bio-color-text); }
.bio-platform .bio-lever__amount { font-family: var(--bio-font-heading); font-weight: 400; white-space: nowrap; text-align: right; }
/* Montant « de moins » à l'encre bleue (RC03 A, DEC-H057 : le vert reste réservé aux réussites ; vert foncé avant) : 10,4:1 sur la
   feuille, 9,2:1 sur le bleu pâle d'une carte appliquée. */
.bio-platform .bio-lever__amount--less { color: var(--bio-color-accent); }
.bio-platform .bio-lever__form { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: var(--bio-space-s); margin-top: var(--bio-space-s); }
.bio-platform .bio-lever__done { grid-column: 1 / -1; margin: var(--bio-space-s) 0 0; }
.bio-platform .bio-lever__toggle { display: inline-flex; align-items: center; gap: 0.5rem; min-height: var(--bio-control-height); padding: 0 var(--bio-space-m); border: 2px solid var(--bio-color-accent); border-radius: var(--bio-radius-button); background: var(--bio-color-surface); color: var(--bio-color-accent); font-family: var(--bio-font-button); font-weight: var(--bio-font-weight-button); cursor: pointer; }
/* Couleurs redites au survol et au focus : le thème donne aux boutons survolés un texte blanc. */
.bio-platform .bio-lever__toggle:is(:hover, :focus) { background: var(--bio-color-selected); color: var(--bio-color-accent); }
.bio-platform .bio-lever__toggle:focus-visible { outline: 3px solid var(--bio-color-focus); outline-offset: 3px; }
.bio-platform .bio-lever__box { flex: none; box-sizing: border-box; width: 1.25rem; height: 1.25rem; border: 2px solid currentColor; border-radius: 0.25rem; line-height: 1; text-align: center; font-size: 0.9rem; }
.bio-platform .bio-lever__toggle[aria-pressed="true"], .bio-platform .bio-lever__toggle[aria-pressed="true"]:is(:hover, :focus) { background: var(--bio-color-accent); color: var(--bio-color-accent-text); }
.bio-platform .bio-lever__toggle[aria-pressed="true"]:hover { background: var(--bio-color-accent-hover); }
.bio-platform .bio-lever__toggle[aria-pressed="true"] .bio-lever__box::before { content: "✓"; content: "✓" / ""; }
.bio-platform .bio-lever--on { border-color: var(--bio-color-accent); background: var(--bio-color-selected); }
.bio-platform .bio-lever__on { font-size: var(--bio-font-size); }
@media (max-width: 30rem) { .bio-platform .bio-lever { grid-template-columns: 1fr; } .bio-platform .bio-lever__amount { text-align: left; } }

/* Pages par thème. Seule une ligne et la barre restent collées, juste sous l'en-tête du site (DEC-H033) ; thèmes et fourchette défilent.
   Fond opaque étendu à toute la largeur de l'écran (ombres larges, rognées en hauteur) et filet dessous. */
.bio-platform .bio-q__header { margin: 0 0 var(--bio-space-l); }
.bio-platform .bio-q__sticky {
  position: sticky;
  top: var(--bio-header-offset);
  z-index: 5;
  margin: 0 0 var(--bio-space-s);
  padding: 12px 0;
  background: var(--bio-color-page);
  box-shadow: 0 0 0 100vmax var(--bio-color-page), 0 1px 0 100vmax var(--bio-color-border);
  clip-path: inset(0 -100vmax -1px);
}
.bio-platform .bio-q__sticky .bio-progress__text { margin: 0; font-weight: 700; }
/* Ligne collée en quatre segments nommés (décision Q7 du 20/10/2026, audit premium) : trait et nom de chaque thème ; fini à
   l'encre avec sa coche sur surligneur, en cours surligné (son trait se remplit avec ses réponses), à venir en gris. Noms
   courts sur téléphone, les noms complets restent lus par les lecteurs d'écran. */
.bio-platform .bio-progress__line { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--bio-space-s); }
.bio-platform .bio-seg { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin: 0.35rem 0 0; padding: 0; list-style: none; }
.bio-platform .bio-seg__item { min-width: 0; }
.bio-platform .bio-seg__bar { display: block; height: 0.4rem; overflow: hidden; border-radius: 0.2rem; background: var(--bio-color-border); }
.bio-platform .bio-seg__bar > span { display: block; height: 100%; background: var(--bio-color-accent); }
.bio-platform .bio-seg__name { display: block; padding-top: 0.35rem; color: var(--bio-color-muted); font-size: var(--bio-font-size); font-weight: 700; line-height: 1.3; }
.bio-platform .bio-seg__item--done .bio-seg__name { color: var(--bio-color-accent); }
/* Thème en cours : nom à l'encre, en gras, sans surligneur (choix B de François du 21/10/2026 : le trait bleu rempli suffit ; le
   surligneur reste sur la question en cours du sommaire « Votre projet »). */
.bio-platform .bio-seg__item--current .bio-seg__name { color: var(--bio-color-text); }
.bio-platform .bio-seg__check { display: inline-grid; place-items: center; width: 1.45rem; height: 1.45rem; margin-right: 0.3rem; border-radius: 50%; background: var(--bio-color-highlight); color: var(--bio-color-accent); font-size: 0.95rem; line-height: 1; vertical-align: 0.08em; }
.bio-platform .bio-seg__short { display: none; }
@media (prefers-reduced-motion: no-preference) {
  /* Thème qu'on vient de finir (questionnaire.js, au passage au thème suivant) : sa coche apparaît en 0,4 s. */
  .bio-platform .bio-seg__item--passed .bio-seg__check { animation: bio-check 0.4s ease-out; }
}
@keyframes bio-check { from { transform: scale(0.4); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-width: 40rem) {
  /* Chaque colonne au moins aussi large que son nom : « ✓ Ensemble » ne touche plus « Le livre » (21/10/2026). */
  .bio-platform .bio-seg { grid-template-columns: repeat(4, minmax(max-content, 1fr)); column-gap: 10px; }
  .bio-platform .bio-seg__name { font-size: 1rem; white-space: nowrap; }
  .bio-platform .bio-seg__long { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .bio-platform .bio-seg__short { display: inline; }
  .bio-platform .bio-seg__check { width: 1.05rem; height: 1.05rem; margin-right: 0.2rem; font-size: 0.75rem; }
}
/* Très petit téléphone (360 px) : noms des thèmes en 15 px et coche sans pastille, pour que les quatre tiennent au thème 4. */
@media (max-width: 23.5rem) {
  .bio-platform .bio-seg { column-gap: 8px; }
  .bio-platform .bio-seg__name { font-size: 0.9375rem; }
  .bio-platform .bio-seg__check { width: auto; height: auto; margin-right: 0.1rem; background: none; font-size: 0.9375rem; }
}
/* Fourchette provisoire dans la ligne collée (série 4) : « · À partir de 2 400 € », gardée d'un seul tenant. */
.bio-platform .bio-progress__range { font-weight: 400; white-space: nowrap; }
.bio-platform .bio-q__header .bio-stages { margin: var(--bio-space-s) 0; }
.bio-platform .bio-range { margin: var(--bio-space-s) 0 0; min-height: 1.6em; }
.bio-platform .bio-range__label, .bio-platform .bio-range__hint { color: var(--bio-color-muted); }
.bio-platform .bio-range__hint { font-size: var(--bio-font-size); }
.bio-platform .bio-range strong { white-space: nowrap; }
/* Encadré « Votre projet » (M29, DEC-H037) : 6 réponses clés qui se remplissent ; replié sur téléphone (script). */
.bio-platform .bio-qsummary { margin: var(--bio-space-m) 0 0; padding: var(--bio-space-s) var(--bio-space-m); border: var(--bio-border-control) solid var(--bio-color-border); border-radius: var(--bio-radius); background: var(--bio-color-surface); }
.bio-platform .bio-qsummary > summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bio-space-s); min-height: var(--bio-control-height); cursor: pointer; }
.bio-platform .bio-qsummary__title { font-family: var(--bio-font-heading); color: var(--bio-color-text); }
.bio-platform .bio-qsummary__count { color: var(--bio-color-muted); }
.bio-platform .bio-qsummary__list { margin: 0; }
.bio-platform .bio-qsummary__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: var(--bio-space-m); padding: var(--bio-space-s) 0; border-top: 1px solid var(--bio-color-border); }
.bio-platform .bio-qsummary__row dt { color: var(--bio-color-muted); }
.bio-platform .bio-qsummary__row dd { margin: 0; overflow-wrap: anywhere; }
.bio-platform .bio-qsummary__row--pending dd { color: var(--bio-color-muted); font-style: italic; }
.bio-platform .bio-qsummary__note { margin: var(--bio-space-s) 0; color: var(--bio-color-muted); }
/* Phrase d'ouverture d'un thème (M29). */
.bio-platform .bio-stage-open { margin: 0 0 var(--bio-space-l); font-weight: 600; }
/* Fin du thème précédent, en tête du thème suivant (plus d'écran de fin, série 4). Palier (décision Q1 du 20/10/2026, audit
   premium, proposition B) : cadre à l'encre, coche sur surligneur, phrase à l'encre en 20 px, liens discrets sur une ligne ;
   le défilement s'y arrête (questionnaire.js). Ni pastilles ni note manuscrite. */
.bio-platform .bio-stage-close { position: relative; box-sizing: border-box; margin: 0 0 var(--bio-space-m); padding: var(--bio-space-m) 1.25rem var(--bio-space-s) 4rem; border: 2px solid var(--bio-color-accent); border-radius: var(--bio-radius); background: var(--bio-color-surface); box-shadow: var(--bio-shadow-card); max-width: var(--bio-reading-width); }
.bio-platform .bio-stage-close::before { content: "✓"; content: "✓" / ""; position: absolute; left: 1rem; top: var(--bio-space-m); display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--bio-color-highlight); color: var(--bio-color-accent); font-size: 1.2rem; font-weight: 700; }
.bio-platform .bio-stage-close:focus { outline: none; }
.bio-platform .bio-stage-close__text { margin: 0; color: var(--bio-color-accent); font-size: 1.25rem; font-weight: 700; line-height: 1.4; }
.bio-platform .bio-stage-close__review,
.bio-platform .bio-stage-close__device { display: inline-flex; margin: 0 1.5rem 0 0; vertical-align: top; }
.bio-platform .bio-stage-close__device[hidden] { display: none; }
/* « Continuer sur un autre appareil » (décision du 17/10/2026) : simple lien sous « Revoir ou modifier », puis le message
   « Lien envoyé à m•••@… » à sa place (zone annoncée, vide et sans hauteur tant que rien n'est envoyé). */
.bio-platform .bio-stage-close__sent { margin: 0; }
.bio-platform .bio-stage-close__sent:not(:empty) { padding: var(--bio-space-s) 0; }
.bio-platform .bio-stage-close__sent:focus { outline: none; }
@media (max-width: 48rem) {
  /* Téléphone : intermède resserré au changement de thème, pour que la question reste dans le haut de l'écran
     (au-dessus de 45 % de sa hauteur ; questionnaire.js, show). */
  .bio-platform .bio-stage-close { margin-bottom: var(--bio-space-s); padding: var(--bio-space-s) var(--bio-space-m) 0.25rem 3.5rem; }
  .bio-platform .bio-stage-close::before { left: 0.75rem; top: 0.6rem; width: 2rem; height: 2rem; }
  .bio-platform .bio-stage-close__review, .bio-platform .bio-stage-close__device { display: flex; margin-right: 0; }
  .bio-platform .bio-stage-open { margin-bottom: var(--bio-space-m); }
  .bio-platform .bio-stage-open + .bio-qblock--current { margin-top: 0; padding-top: 0; border-top: 0; }
}
/* Première question d'un thème, sous le palier et la phrase d'ouverture : pas d'écart réglé au-dessus (aucune question
   d'avant à cacher), pour que la question reste près du palier où s'arrête le défilement (décision Q1). */
.bio-platform .bio-stage-close ~ .bio-stage-open + .bio-qblock--current { margin-top: var(--bio-space-l); }
@media (max-width: 30rem) {
  .bio-platform .bio-qsummary__row { grid-template-columns: minmax(0, 1fr); gap: 0; }
}

/* Ancres des écrans (menu de « Mon projet », erreurs) : arrêtées sous l'en-tête du site. */
.bio-platform [id] { scroll-margin-top: calc(var(--bio-header-offset) + var(--bio-space-m)); }
/* Bilan des erreurs des coordonnées (sans identifiant) : amené par le script juste sous l'en-tête collé (AC02 A, DEC-H054). */
.bio-platform .bio-errors { scroll-margin-top: calc(var(--bio-header-offset) + var(--bio-space-m)); }
/* Ordinateur : le questionnaire prend au moins la hauteur de l'écran sous l'en-tête, pour que le pied de page ne paraisse pas sous la
   première question puis ne soit pas repoussé quand la suivante arrive (PF05 A, grand audit, rendez-vous 3, DEC-H054 ; saut de mise
   en page mesuré 0,14, 0,002 en simulation). Téléphone inchangé. */
@media (min-width: 48.01rem) {
  .bio-platform .bio-q { min-height: calc(100vh - var(--bio-header-offset)); }
}
/* Questions bien séparées ; place sous la dernière pour que la nouvelle se cale sous la ligne collée. */
.bio-platform .bio-qblock { margin: 0 0 var(--bio-space-l); scroll-margin-top: calc(var(--bio-header-offset) + 4.5rem); }
/* La question en cours est montrée par le script sous la ligne collée, à l'écart réglé (--bio-q-gap : réglage d'affichage en
   pixels, ordinateur et téléphone, décision du 17/10/2026, série 4 ; questionnaire.js, show) : l'écart qui la précède est
   plus grand, pour qu'aucun bout de la question d'avant ne reste visible au-dessus. En remontant, elle se lit en entier. */
.bio-platform .bio-q { --bio-q-gap: var(--bio-q-gap-desktop, 40px); }
@media (max-width: 48rem) {
  .bio-platform .bio-q { --bio-q-gap: var(--bio-q-gap-mobile, 16px); }
}
.bio-platform .bio-qblock--current { margin-top: calc(var(--bio-q-gap) + var(--bio-space-s)); padding-top: var(--bio-space-l); border-top: 2px solid var(--bio-color-border); }
.bio-platform .bio-q--js .bio-q__body { padding-bottom: 45vh; }
.bio-platform .bio-qblock:first-child.bio-qblock--current { margin-top: 0; padding-top: 0; border-top: 0; }
.bio-platform .bio-answered { border: 1px solid var(--bio-color-border); border-radius: var(--bio-radius); background: var(--bio-color-surface); }
.bio-platform .bio-answered > summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.15rem var(--bio-space-m); padding: 0.6rem var(--bio-space-m); cursor: pointer; list-style: none; }
.bio-platform .bio-answered > summary::-webkit-details-marker { display: none; }
.bio-platform .bio-answered__question { color: var(--bio-color-muted); font-size: var(--bio-font-size); }
.bio-platform .bio-answered__edit { align-self: start; color: var(--bio-color-accent); text-decoration: underline; }
.bio-platform .bio-answered__answer { grid-column: 1 / -1; font-weight: 600; overflow-wrap: anywhere; min-width: 0; }
/* Question répondue dépliée (décision du 11/10) : la question et la réponse cochée une seule fois, sans la ligne de résumé
   qui les répétait (décision du 17/10/2026). Repliée (réglage « Replier ») : le résumé et « Modifier » restent. */
.bio-platform .bio-answered[open] > summary { display: none; }
.bio-platform .bio-answered .bio-question { padding: var(--bio-space-m); }
/* Question déjà répondue, dépliée : en retrait (cadre gris, titre plus petit) ; la question en cours reste seule mise en avant
   (décision du 17/10/2026, série 4). */
.bio-platform .bio-answered { border-color: var(--bio-color-border); background: var(--bio-color-quiet); }
.bio-platform .bio-answered .bio-question__title { font-size: 1.25rem; }
.bio-platform .bio-answered .bio-choice { background: var(--bio-color-surface); }
/* Choix unique envoyé seul : sans bouton visible, la barre d'actions vide ne laisse pas de marge en bas du cadre. */
.bio-platform .bio-q--js form[data-auto] .bio-question__nav:not(:has(> :not(.bio-question__next))) { display: none; }
/* Deux formes de réponses (décision Q10 du 20/10/2026, audit premium) : choix unique (et nombre) en bulles rondes côte à côte,
   sans case visible, qui avancent seules ; la bulle choisie à l'encre, liseré de surligneur. Le bouton radio reste dans la
   page pour le clavier et les lecteurs d'écran. Choix multiples : voir .bio-choice--box. */
.bio-platform .bio-choices--pills { display: flex; flex-wrap: wrap; gap: var(--bio-space-s); }
/* Une réponse de la question est longue (décision du 21/10/2026, Questionnaire::stacked) : ses bulles passent une par ligne. */
.bio-platform .bio-choices--pills.bio-choices--stacked { flex-direction: column; align-items: flex-start; }
.bio-platform .bio-choice--pill { position: relative; min-height: var(--bio-choice-height); max-width: 100%; padding: 0.5rem 1.1rem; border-radius: 1.75rem; }
.bio-platform .bio-choice--pill input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.bio-platform .bio-choice--pill:has(input:checked),
.bio-platform .bio-choice--pill.bio-choice--chosen { border-color: var(--bio-color-accent); background: var(--bio-color-accent); box-shadow: 0 0 0 3px var(--bio-color-highlight); color: var(--bio-color-accent-text); }
.bio-platform .bio-choice--pill:has(input:checked)::before { content: "✓"; content: "✓" / ""; color: var(--bio-color-highlight); font-weight: 700; }
.bio-platform .bio-choice__value { display: block; color: var(--bio-color-muted); font-weight: 400; }
.bio-platform .bio-choice--pill:has(input:checked) .bio-choice__value { color: inherit; }
/* Choix multiples : rectangle peu arrondi, une réponse par ligne toujours, case carrée visible, cochée à l'encre. */
/* Sélecteur renforcé : les champs des coordonnées (.bio-field input) ont une hauteur et une marge de saisie. */
.bio-platform .bio-choice.bio-choice--box input { -webkit-appearance: none; appearance: none; display: inline-grid; place-items: center; box-sizing: border-box; width: 1.5rem; height: 1.5rem; min-height: 0; max-width: none; padding: 0; border: 2px solid var(--bio-color-accent); border-radius: 3px; background: var(--bio-color-surface); }
.bio-platform .bio-choice.bio-choice--box input:checked { background: var(--bio-color-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 90% no-repeat; }
/* Pastilles à cocher (filtres, réglages du biographe) exclues : texte blanc sur fond d'encre (contraste 1:1 corrigé le 21/10/2026, audit de l'espace biographe, constat P08). */
.bio-platform .bio-choice--box:not(.bio-choice--pill):has(input:checked) { color: var(--bio-color-accent); font-weight: 700; }
/* « Plusieurs réponses possibles » en gras sur surligneur. */
.bio-platform .bio-question__multiple mark { padding: 0.05em 0.3em; background: var(--bio-color-highlight); color: var(--bio-color-text); font-weight: 700; }
/* Choix unique avec le script : un seul geste, choisir ; une précision à saisir a son bouton « Valider ». */
.bio-platform .bio-q--js form[data-auto] .bio-question__next { display: none; }
.bio-platform .bio-detail__ok { display: none; }
.bio-platform .bio-q--js .bio-detail__ok { display: inline-flex; margin-top: var(--bio-space-s); }
/* Avec le script : « Continuer » éteint tant qu'aucune réponse n'est donnée, puis allumé (halo bref). Il reste cliquable. */
.bio-platform .bio-q--js form.bio-question:not(.bio-question--ready) .bio-question__next { border-color: var(--bio-color-control); background: var(--bio-color-surface); color: var(--bio-color-muted); box-shadow: none; }
/* Éteint, la pastille est cerclée de gris (le jaune ne se verrait pas sur la feuille) ; allumé, le halo s'ajoute à l'ombre (DA01 A). */
.bio-platform .bio-q--js form.bio-question:not(.bio-question--ready) .bio-question__next::after { box-shadow: inset 0 0 0 2px currentColor; }
.bio-platform .bio-q--js form.bio-question--ready .bio-question__next { box-shadow: 0 0 0 4px var(--bio-color-selected), var(--bio-shadow-button); }
@media (prefers-reduced-motion: no-preference) {
  .bio-platform .bio-q--js form.bio-question--ready .bio-question__next { animation: bio-light-up 0.6s ease-out; }
}
@keyframes bio-light-up { from { box-shadow: 0 0 0 0 var(--bio-color-accent), var(--bio-shadow-button); } to { box-shadow: 0 0 0 4px var(--bio-color-selected), var(--bio-shadow-button); } }
.bio-platform .bio-question__next { margin-left: 0; }
.bio-platform .bio-stage-end { margin: 0 0 var(--bio-space-l); padding: var(--bio-space-l); border: 2px solid var(--bio-color-accent); border-radius: var(--bio-radius); background: var(--bio-color-surface); }
.bio-platform .bio-stage-end:focus { outline: none; }
.bio-platform .bio-stage-end__text { margin-top: 0; font-weight: 600; }
.bio-platform .bio-stage-end .bio-button { text-align: center; }
.bio-platform .bio-stage-back { margin-top: var(--bio-space-l); }
.bio-platform [aria-busy="true"] { opacity: 0.7; }
.bio-platform .bio-pending { margin: var(--bio-space-s) 0 0; font-weight: 600; }

/* Aides réécrites (décision du 21/10/2026, Flow::AIDS) : aide courte visible sous l'intitulé, puis un exemple écrit à la main
   (police manuscrite du site, à l'encre), sa fin sur un trait de surligneur, comme la maquette de l'audit (aide-longue-C). */
.bio-platform .bio-question__aid { margin: 0 0 0.25rem; max-width: var(--bio-reading-width); }
.bio-platform .bio-example { margin: 0 0 var(--bio-space-s); max-width: var(--bio-reading-width); color: var(--bio-color-accent); font-family: var(--bio-font-hand); font-size: 1.6rem; line-height: 1.2; }
.bio-platform .bio-example mark { padding: 0 0.15em; background: linear-gradient(transparent 55%, var(--bio-color-highlight) 55%); color: inherit; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
/* Aide repliée (décision Q3 du 20/10/2026) : <details>, ouverte au clic ou au clavier, jamais au survol seul ; lien de 48 px.
   Style de « Ce que nous faisons avec votre adresse » (Q5, libellé du 21/10/2026) ; l'aide des questions est réglée dessous. */
.bio-platform .bio-why { margin: 0 0 var(--bio-space-s); max-width: var(--bio-reading-width); }
.bio-platform .bio-why > summary { display: inline-flex; align-items: center; gap: var(--bio-space-s); min-height: 48px; color: var(--bio-color-accent); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; list-style: none; cursor: pointer; }
.bio-platform .bio-why > summary::-webkit-details-marker { display: none; }
.bio-platform .bio-why > summary::before { content: "?"; content: "?" / ""; display: inline-grid; flex: none; place-items: center; width: 1.6rem; height: 1.6rem; border: 1.5px solid var(--bio-color-accent); border-radius: 50%; background: var(--bio-color-selected); font-weight: 700; text-decoration: none; }
.bio-platform .bio-why[open] > summary::before { content: "–"; content: "–" / ""; }
/* Aide d'une question (choix A de François du 24/10/2026, PQP01, audit projet/audits/2026-10-23-pourquoi-question) : après les
   réponses, « Besoin d'aide pour répondre ? » en graisse normale, sans pastille « ? », précédé du « i » de la proposition B
   (rond à l'encre, « i » blanc, contraste 10,9:1 ; décoratif, aria-hidden) et suivi d'un petit chevron qui se retourne à
   l'ouverture ; rangée de 48 px gardée. L'aide de l'adresse garde le style ci-dessus. */
.bio-platform .bio-why.bio-why--aide { margin: 0.25rem 0 0; }
.bio-platform .bio-why.bio-why--aide > summary { gap: 0.5rem; font-weight: 400; text-decoration-thickness: 1px; }
.bio-platform .bio-why.bio-why--aide > summary::before, .bio-platform .bio-why.bio-why--aide[open] > summary::before { content: none; }
.bio-platform .bio-why__icon { display: inline-grid; flex: none; place-items: center; width: 1.3rem; height: 1.3rem; border-radius: 50%; background: var(--bio-color-accent); color: var(--bio-color-accent-text); font-family: Georgia, "Times New Roman", serif; font-size: 0.9rem; font-style: italic; font-weight: 700; line-height: 1; }
.bio-platform .bio-why.bio-why--aide > summary::after { content: ""; flex: none; width: 0.5em; height: 0.5em; margin-top: -0.25em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); }
.bio-platform .bio-why.bio-why--aide[open] > summary::after { margin-top: 0.25em; transform: rotate(225deg); }
.bio-platform .bio-why.bio-why--aide > .bio-question__help { margin: 0 0 var(--bio-space-s); }
/* « Corriger mon adresse » ouvert sur place, écran « Plus qu'une étape » (remarque de François du 23/10/2026). */
.bio-platform .bio-fix-email { margin-top: var(--bio-space-s); }
.bio-platform .bio-fix-email > summary { display: inline-flex; align-items: center; min-height: 48px; color: var(--bio-color-accent); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; list-style: none; }
.bio-platform .bio-fix-email > summary::-webkit-details-marker { display: none; }
.bio-platform .bio-fix-email__form { display: grid; gap: var(--bio-space-s); max-width: var(--bio-reading-width); margin-top: var(--bio-space-s); }
.bio-platform .bio-why > .bio-question__help { margin: 0.25rem 0 var(--bio-space-s); padding: 0.75rem var(--bio-space-m); border-left: 4px solid var(--bio-color-accent); background: var(--bio-color-selected); }
/* Étape de l'adresse (décision Q5 du 20/10/2026, proposition C) : champ juste sous le titre, puis une phrase, trois bénéfices
   cochés, le proche qui remplit ; le texte d'origine replié ; vérification anti-robot sans rien d'affiché (RobotGuard « quiet »). */
.bio-platform .bio-question__field-label { display: block; margin: var(--bio-space-s) 0 0.25rem; font-weight: 700; }
.bio-platform .bio-question--email input[type="email"] { max-width: 32rem; min-height: var(--bio-control-height); }
.bio-platform .bio-question--email .bio-field-error { margin: 0.4rem 0 0; }
/* Contenu replié de l'adresse (21/10/2026) : le texte d'origine, puis la ligne sur la confidentialité. */
.bio-platform .bio-why > div.bio-question__help p { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-why > div.bio-question__help p:last-child { margin-bottom: 0; }
.bio-platform .bio-benefits { margin: var(--bio-space-s) 0; padding: 0; list-style: none; max-width: var(--bio-reading-width); }
.bio-platform .bio-benefits li { position: relative; margin: 0.3rem 0; padding-left: 2.1rem; line-height: 1.5; }
.bio-platform .bio-benefits li::before { content: "✓"; content: "✓" / ""; position: absolute; left: 0; top: 0.1rem; display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: var(--bio-color-highlight); color: var(--bio-color-accent); font-size: 0.95rem; font-weight: 700; }
.bio-platform .bio-relative { margin: var(--bio-space-s) 0; padding: 0.6rem 0.9rem; border-left: 4px solid var(--bio-color-accent); background: var(--bio-color-selected); max-width: 32rem; }
/* Sommaire « Votre projet prend forme » (décision Q7 du 20/10/2026, audit premium, proposition C) : à droite des questions
   sur ordinateur, collé sous la ligne d'avancement ; sur téléphone, panneau ouvert par le bouton de la ligne collée si le
   réglage d'affichage le permet (questionnaire-rail.php, questionnaire.js). */
.bio-platform .bio-rail { display: none; box-sizing: border-box; padding: 1.1rem 1.25rem; border: var(--bio-border-control) solid var(--bio-color-border); border-radius: var(--bio-radius); background: var(--bio-color-surface); box-shadow: var(--bio-shadow-card); line-height: 1.35; }
.bio-platform .bio-rail__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--bio-space-s); }
.bio-platform .bio-card .bio-rail__title,
.bio-platform .bio-rail__title { margin: 0; font-size: var(--bio-heading-card); line-height: 1.1; }
.bio-platform .bio-rail__note { color: var(--bio-color-accent); font-family: var(--bio-font-hand); font-size: 1.5rem; }
.bio-platform .bio-rail__close { font-weight: 700; }
.bio-platform .bio-rail__theme { margin: 0.55rem 0 0; padding-top: 0.5rem; border-top: var(--bio-border-control) solid var(--bio-color-border); }
.bio-platform .bio-rail__head + .bio-rail__theme { border-top: 0; }
.bio-platform .bio-rail__theme > summary { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0 var(--bio-space-s); min-height: 48px; font-weight: 700; list-style: none; cursor: pointer; }
.bio-platform .bio-rail__theme > summary::-webkit-details-marker { display: none; }
/* Compte en 16 px, comme un repère de la ligne collée : il tient sur la ligne du thème dans la colonne. */
.bio-platform .bio-rail__count { color: var(--bio-color-muted); font-size: 1rem; font-weight: 400; white-space: nowrap; }
.bio-platform .bio-rail__count::after { content: "▸"; content: "▸" / ""; margin-left: 0.3rem; color: var(--bio-color-accent); }
.bio-platform .bio-rail__theme[open] > summary .bio-rail__count::after { content: "▾"; content: "▾" / ""; }
.bio-platform .bio-rail__theme--done > summary,
.bio-platform .bio-rail__theme--done .bio-rail__count { color: var(--bio-color-accent); font-weight: 700; }
.bio-platform .bio-rail__theme--done .bio-rail__name::before { content: "✓"; content: "✓" / ""; display: inline-grid; place-items: center; width: 1.35rem; height: 1.35rem; margin-right: 0.35rem; border-radius: 50%; background: var(--bio-color-highlight); color: var(--bio-color-accent); font-size: 0.9rem; vertical-align: 0.08em; }
.bio-platform .bio-rail__theme--next > summary { color: var(--bio-color-muted); }
.bio-platform .bio-rail__list { margin: 0.25rem 0 var(--bio-space-s); padding: 0; list-style: none; }
.bio-platform .bio-rail__item { display: grid; grid-template-columns: 1.6rem minmax(0, 1fr); align-items: center; min-height: 2rem; }
.bio-platform .bio-rail__item::before { font-weight: 700; text-align: center; }
.bio-platform .bio-rail__item--done::before { content: "✓"; content: "✓" / ""; color: var(--bio-color-accent); }
.bio-platform .bio-rail__item--current::before { content: "→"; content: "→" / ""; color: var(--bio-color-accent); }
.bio-platform .bio-rail__item--next::before { content: "○"; content: "○" / ""; color: var(--bio-color-muted); font-weight: 400; }
.bio-platform .bio-rail__item--next { color: var(--bio-color-muted); }
.bio-platform .bio-rail__item a { color: var(--bio-color-text); text-decoration: underline; text-decoration-color: var(--bio-color-border); text-underline-offset: 3px; }
.bio-platform .bio-rail__item a:hover { color: var(--bio-color-accent); text-decoration-color: currentColor; }
.bio-platform .bio-rail__item--current > span:first-of-type { justify-self: start; padding: 0 0.25em; background: var(--bio-color-highlight); font-weight: 700; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.bio-platform .bio-rail-toggle { display: none; }
@media (min-width: 64rem) {
  .bio-platform .bio-q__layout { display: grid; grid-template-columns: minmax(0, 1fr) 23rem; gap: 2.5rem; align-items: start; }
  .bio-platform .bio-rail { display: block; position: sticky; top: calc(var(--bio-header-offset) + 7rem); max-height: calc(100vh - var(--bio-header-offset) - 8rem); overflow: auto; }
  .bio-platform .bio-rail__close { display: none; }
}
@media (max-width: 63.99rem) {
  /* Pilule « Votre projet » plus petite (remarque de François du 21/10/2026) : 36 px de haut en 16 px, elle tient sur la ligne
     « Thème N sur 4 · À partir de … » sans la faire passer sur deux lignes ; la zone à toucher reste de 48 px (::after). */
  .bio-platform .bio-q--js .bio-rail-toggle { position: relative; display: inline-flex; align-items: center; gap: 0.25rem; min-height: 2.25rem; margin-left: auto; padding: 0 0.7rem; border: var(--bio-border-control) solid var(--bio-color-accent); border-radius: 999px; background: var(--bio-color-surface); color: var(--bio-color-accent); font: inherit; font-size: 1rem; font-weight: 700; line-height: 1.2; white-space: nowrap; cursor: pointer; }
  .bio-platform .bio-q--js .bio-rail-toggle::after { content: ""; position: absolute; inset: -6px 0; }
  /* Avec la pilule, la ligne ne passe pas à la ligne : « Thème N sur 4 » à gauche, la fourchette dessous (sans le point), la
     pilule à droite ; la ligne des quatre thèmes ne change pas. */
  .bio-platform .bio-q--js .bio-progress__line:has(> .bio-rail-toggle) { flex-wrap: nowrap; }
  .bio-platform .bio-q--js .bio-progress__line:has(> .bio-rail-toggle) .bio-progress__text { flex: 1 1 auto; min-width: 0; }
  .bio-platform .bio-rail-toggle__arrow::after { content: "▾"; content: "▾" / ""; }
  /* États redits au survol et au focus : le thème donne aux boutons survolés ou focalisés ses propres couleurs. */
  .bio-platform .bio-q--js .bio-rail-toggle:is(:hover, :focus) { background: var(--bio-color-selected); color: var(--bio-color-accent); }
  .bio-platform .bio-q--js .bio-rail-toggle[aria-expanded="true"],
  .bio-platform .bio-q--js .bio-rail-toggle[aria-expanded="true"]:is(:hover, :focus) { background: var(--bio-color-accent); color: var(--bio-color-accent-text); }
  .bio-platform .bio-rail-toggle[aria-expanded="true"] .bio-rail-toggle__arrow::after { content: "▴"; content: "▴" / ""; }
  .bio-platform .bio-q--rail-open .bio-q__layout--rail-phone .bio-rail { display: block; position: fixed; z-index: 30; left: 0; right: 0; bottom: 0; overflow: auto; padding: var(--bio-space-m) var(--bio-space-m) var(--bio-space-l); border: 0; border-top: 2px solid var(--bio-color-accent); border-radius: 0; box-shadow: 0 12px 24px color-mix(in srgb, var(--bio-color-text) 18%, transparent); }
}
@media (max-width: 40rem) {
  .bio-platform .bio-q--js .bio-progress__line:has(> .bio-rail-toggle) .bio-progress__range { display: block; }
  .bio-platform .bio-q--js .bio-progress__line:has(> .bio-rail-toggle) .bio-progress__sep { display: none; }
}
/* Étapes qui suivent l'envoi du projet (estimation, projet présenté ; décision Q8 du 20/10/2026) : chiffre manuscrit sur
   pastille de surligneur, comme les étapes des pages du site ; étape faite : coche blanche sur l'encre. */
.bio-platform ol.bio-next { counter-reset: bio-next; margin: var(--bio-space-m) 0; padding: 0; list-style: none; }
/* display: block : la liste porte aussi la classe bio-steps, dont la grille (« Mes demandes », 21/10) cassait le texte (audit du 23/10, RL01). */
.bio-platform ol.bio-next li { display: block; position: relative; min-height: 2.6rem; margin: 0; padding: 0.2rem 0 var(--bio-space-m) 3.2rem; counter-increment: bio-next; }
.bio-platform ol.bio-next li::before { content: counter(bio-next); position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 2.3rem; height: 2.3rem; border-radius: 50%; background: var(--bio-color-highlight); color: var(--bio-color-accent); font-family: var(--bio-font-hand); font-size: 1.6rem; font-weight: 700; line-height: 1; }
.bio-platform ol.bio-next li.bio-next__done::before { content: "✓"; content: "✓" / ""; background: var(--bio-color-accent); color: var(--bio-color-accent-text); font-family: var(--bio-font-body); font-size: 1.1rem; }
.bio-platform .bio-card .bio-next__title { margin: var(--bio-space-m) 0 var(--bio-space-s); }

/* Questions facultatives après l'estimation (version C du test A/C, décision Q4 du 20/10/2026, DEC-H045) : sous l'écran du
   courriel, ou seules depuis « Mon projet » ; un groupe replié par thème, sa ligne de 56 px, le nombre de questions à droite. */
.bio-platform .bio-optional { max-width: var(--bio-reading-width); margin: var(--bio-space-l) 0; overflow-wrap: anywhere; }
.bio-platform .bio-optional__kicker { margin: 0; color: var(--bio-color-accent); font-family: var(--bio-font-hand); font-size: 1.6rem; line-height: 1.1; }
.bio-platform .bio-optional__title { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-optional__group { margin: var(--bio-space-s) 0; border: var(--bio-border-control) solid var(--bio-color-control); border-radius: var(--bio-radius); background: var(--bio-color-surface); }
.bio-platform .bio-optional__group > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--bio-space-m); min-height: 56px; padding: 0.5rem var(--bio-space-m); font-weight: 700; list-style: none; cursor: pointer; }
.bio-platform .bio-optional__group > summary::-webkit-details-marker { display: none; }
.bio-platform .bio-optional__group > summary::after { content: "▾"; content: "▾" / ""; flex: none; color: var(--bio-color-accent); }
.bio-platform .bio-optional__group[open] > summary { border-bottom: 1px solid var(--bio-color-border); }
.bio-platform .bio-optional__group[open] > summary::after { content: "▴"; content: "▴" / ""; }
.bio-platform .bio-optional__group > summary:focus-visible { outline: 3px solid var(--bio-color-accent); outline-offset: 2px; }
.bio-platform .bio-optional__count { margin-left: auto; color: var(--bio-color-muted); font-weight: 400; white-space: nowrap; }
.bio-platform .bio-optional__body { padding: var(--bio-space-s) var(--bio-space-m) var(--bio-space-m); }
/* Dans un groupe replié, l'intitulé d'une question est plus petit que sur la page d'un thème : le groupe reste un sous-ensemble. */
.bio-platform .bio-optional__body .bio-question__title { font-size: 1.5rem; line-height: 1.2; }

/* Fin du questionnaire (NEXT01 étape 3) : coordonnées, nombre de biographes, validation. */
.bio-platform .bio-finish { max-width: var(--bio-reading-width); overflow-wrap: anywhere; }
.bio-platform .bio-field { margin: 0 0 var(--bio-space-m); }
.bio-platform .bio-field > label { display: block; font-weight: 600; }
/* Bilan des erreurs en tête du formulaire : chaque ligne renvoie au champ (zone de 48 px). */
.bio-platform .bio-errors__title { margin: 0; font-weight: 700; }
.bio-platform .bio-errors__list { margin: var(--bio-space-s) 0 0; padding-left: 1.2em; }
.bio-platform .bio-errors__list a { display: inline-flex; align-items: center; min-height: 48px; color: var(--bio-color-error-text); }
.bio-platform .bio-errors:focus { outline: 3px solid var(--bio-color-error); outline-offset: 2px; }
.bio-platform .bio-field .bio-question__help,
.bio-platform .bio-field .bio-field-error { display: block; margin: 0.25rem 0; }
.bio-platform .bio-field input { min-height: var(--bio-control-height); box-sizing: border-box; }
/* Code postal et ville en une saisie (porteur 13/10) : liste des communes sous le champ. */
.bio-platform .bio-combobox { position: relative; }
.bio-platform .bio-combobox input { width: 100%; }
.bio-platform .bio-combobox__list { position: absolute; z-index: 10; left: 0; right: 0; max-height: 16rem; overflow-y: auto; margin: 0.25rem 0 0; padding: 0; list-style: none; background: var(--bio-color-surface); border: 1px solid var(--bio-color-border); border-radius: var(--bio-radius); }
.bio-platform .bio-combobox__list li { padding: var(--bio-space-s) var(--bio-space-m); cursor: pointer; }
.bio-platform .bio-combobox__list li[aria-selected="true"], .bio-platform .bio-combobox__list li:hover { background: var(--bio-color-selected); }
/* Nombre de biographes (remarques de François du 18/10/2026) : trois cartes côte à côte, aussi sur téléphone, un grand
   chiffre ; la carte entière se choisit. Le bouton radio reste dans la page, masqué à l'œil, pour le clavier et les lecteurs
   d'écran ; survol, focus clavier et carte choisie bien visibles. */
.bio-platform .bio-quota { display: grid; grid-template-columns: repeat(auto-fit, minmax(5rem, 1fr)); gap: var(--bio-space-s); margin: var(--bio-space-m) 0; max-width: var(--bio-reading-width); }
.bio-platform .bio-quota__card { position: relative; display: flex; flex-direction: column; align-items: center; gap: 0.25rem; box-sizing: border-box; padding: var(--bio-space-m) var(--bio-space-s); border: 2px solid var(--bio-color-control); border-radius: var(--bio-radius); background: var(--bio-color-surface); box-shadow: var(--bio-shadow-card); text-align: center; line-height: 1.3; cursor: pointer; transition: box-shadow 0.15s, transform 0.15s; }
.bio-platform .bio-quota__input { position: absolute; width: 1px; height: 1px; margin: 0; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; opacity: 0; }
.bio-platform .bio-quota__number { font-family: var(--bio-font-heading); font-size: clamp(2.5rem, 2rem + 2vw, 3.25rem); line-height: 1; color: var(--bio-color-accent); }
.bio-platform .bio-quota__label { font-weight: 700; white-space: nowrap; }
.bio-platform .bio-quota__help { color: var(--bio-color-muted); font-size: var(--bio-font-size); }
/* Téléphone (décision Q9 du 20/10/2026) : cartes empilées, le chiffre à gauche, le texte à droite, textes à 18 px. */
@media (max-width: 30rem) {
  .bio-platform .bio-quota { grid-template-columns: minmax(0, 1fr); }
  .bio-platform .bio-quota__card { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr); column-gap: 0.75rem; align-items: center; padding: 0.9rem var(--bio-space-m); text-align: left; }
  .bio-platform .bio-quota__number { grid-row: 1 / span 2; text-align: center; }
  .bio-platform .bio-quota__label, .bio-platform .bio-quota__help { grid-column: 2; }
}
.bio-platform .bio-quota__card:hover { border-color: var(--bio-color-accent); box-shadow: var(--bio-shadow-card-hover); transform: translateY(-2px); }
.bio-platform .bio-quota__card:has(.bio-quota__input:focus-visible) { outline: 3px solid var(--bio-color-focus); outline-offset: 3px; }
.bio-platform .bio-quota__card:has(.bio-quota__input:checked) { border-color: var(--bio-color-accent); background: var(--bio-color-selected); box-shadow: inset 0 0 0 2px var(--bio-color-accent); }
.bio-platform .bio-quota__card:has(.bio-quota__input:checked)::after { content: "✓"; content: "✓" / ""; position: absolute; top: 0.4rem; right: 0.5rem; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: var(--bio-color-accent); color: var(--bio-color-accent-text); font-weight: 700; line-height: 1.5rem; text-align: center; }
@media (prefers-reduced-motion: reduce) { .bio-platform .bio-quota__card { transition: none; } .bio-platform .bio-quota__card:hover { transform: none; } }
.bio-platform .bio-steps { padding-left: 1.4em; }
.bio-platform .bio-steps li { margin-bottom: var(--bio-space-s); }
.bio-platform .bio-q40 { margin-top: var(--bio-space-l); }
.bio-platform .bio-help-details,
.bio-platform .bio-brief__more { margin-top: var(--bio-space-l); }
.bio-platform .bio-help-details > summary,
.bio-platform .bio-brief__more > summary { cursor: pointer; color: var(--bio-color-accent); text-decoration: underline; min-height: 3rem; display: flex; align-items: center; }
.bio-platform .bio-faq dt { font-weight: 600; margin-top: var(--bio-space-m); }
.bio-platform .bio-faq dd { margin: 0.25rem 0 0; }

/* Projet tel que présenté aux biographes (aperçu du porteur de projet et liste des projets). */
.bio-platform .bio-brief__lead { font-size: 1.1em; font-weight: 600; }
.bio-platform .bio-brief__strengths { padding-left: 1.2em; }
.bio-platform .bio-brief__budget { margin-bottom: var(--bio-space-l); }
.bio-platform .bio-brief__section h3 { margin: var(--bio-space-l) 0 var(--bio-space-s); }
.bio-platform .bio-brief__quote { margin: 0 0 var(--bio-space-m); }
.bio-platform .bio-brief__quote figcaption { color: var(--bio-color-muted); font-size: var(--bio-font-size); }
.bio-platform .bio-brief__quote blockquote { margin: 0.25rem 0 0; padding-left: var(--bio-space-m); border-left: 4px solid var(--bio-color-border); }
.bio-platform .bio-brief__quote blockquote p { margin: 0; }
.bio-platform .bio-finish .bio-field--boxes { margin: 0 0 var(--bio-space-l); padding: 0; border: 0; }
.bio-platform .bio-field--boxes legend { font-weight: 600; padding: 0; }
.bio-platform .bio-field--boxes .bio-choices { margin: var(--bio-space-s) 0 0; }
.bio-platform .bio-steps--short { margin: var(--bio-space-m) 0; }

.bio-platform .bio-field--boxes .bio-choices + .bio-choices { margin-top: var(--bio-space-s); }
.bio-platform .bio-finish select { width: 100%; max-width: var(--bio-reading-width); min-height: var(--bio-control-height); }
.bio-platform .bio-email { overflow-wrap: anywhere; }
.bio-platform .bio-estimate__free { margin: var(--bio-space-s) 0 0; font-weight: 600; text-align: center; }
/* Estimation (série 4) : « Que préserver en priorité ? », réponses clés repliées près du bouton, « Remettre à plus tard » en bas. */
.bio-platform .bio-priority fieldset { margin: 0 0 var(--bio-space-m); padding: 0; border: 0; min-width: 0; }
.bio-platform .bio-priority legend { padding: 0; }
.bio-platform .bio-priority legend h2 { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-qsummary--estimate { margin: var(--bio-space-m) 0; }
.bio-platform .bio-later { margin: var(--bio-space-m) 0 0; text-align: center; }
/* Page de l'estimation (porteur 13/10) : bouton toujours à portée sur mobile, collé en bas de l'écran. */
.bio-platform .bio-sticky-cta { position: fixed; z-index: 20; left: 0; right: 0; bottom: 0; padding: var(--bio-space-s) var(--bio-space-m); background: var(--bio-color-surface); border-top: 1px solid var(--bio-color-border); }
.bio-platform .bio-sticky-cta form { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--bio-space-s) var(--bio-space-m); max-width: 40rem; margin: 0 auto; }
/* CV01 A (25/10/2026) : la barre ne répète plus le prix ; le bouton prend la largeur. */
.bio-platform .bio-sticky-cta form .bio-button { flex: 1 1 auto; }
.bio-has-sticky-cta .bio-platform { padding-bottom: calc(var(--bio-cta-height) + 2 * var(--bio-space-l) + var(--bio-space-m)); }
/* Acceptation des conditions attachée à un bouton (M1, DEC-H035) : discrète, lien souligné, lisible (16 px au moins). */
.bio-platform .bio-terms { margin: var(--bio-space-s) 0; color: var(--bio-color-muted); max-width: var(--bio-reading-width); }
.bio-platform .bio-terms a { color: inherit; text-decoration: underline; }
.bio-platform .bio-estimate .bio-terms { text-align: center; margin-left: auto; margin-right: auto; }
.bio-platform .bio-sticky-cta .bio-sticky-cta__terms { flex-basis: 100%; margin: 0; font-size: 1rem; text-align: center; }
/* Questionnaire sur téléphone (série 4) : « Continuer » collé en bas quand une réponse est cochée et que le bouton est hors de l'écran. */
.bio-platform .bio-sticky-next__wrap { display: flex; max-width: 40rem; margin: 0 auto; }
.bio-platform .bio-sticky-next .bio-button { flex: 1; min-height: var(--bio-control-height); }
@media (min-width: 48.01rem) {
  .bio-platform .bio-sticky-next { display: none; }
}

/* Projets disponibles (ALR01) : filtres, compatibilité, alertes. */
.bio-platform .bio-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--bio-space-m); margin: 0 0 var(--bio-space-l); }
.bio-platform .bio-filters .bio-field { margin: 0; }
.bio-platform .bio-filters input[type="text"] { width: 6rem; }
.bio-platform .bio-filters input[type="text"],
.bio-platform .bio-filters select { box-sizing: border-box; min-height: 3rem; font: inherit; }
.bio-platform .bio-filters__actions { margin: 0; }
.bio-platform #alertes fieldset { border: 0; padding: 0; margin: 0 0 var(--bio-space-m); }
.bio-platform #alertes legend { font-weight: 600; padding: 0; }
.bio-platform .bio-badge { display: inline-block; margin: 0 0 var(--bio-space-s); padding: 0.15rem 0.6rem; border-radius: 999px; background: var(--bio-color-selected); color: var(--bio-color-accent); font-weight: 700; font-size: 1rem; }
.bio-platform .bio-badge--new { background: var(--bio-color-accent); color: var(--bio-color-accent-text); }
.bio-platform #alertes select { min-height: 3rem; font: inherit; }

/* Espace biographe : menu, résultats, filtres, réglages. */
.bio-platform .bio-space-nav ul { display: flex; flex-wrap: wrap; gap: var(--bio-space-s); margin: 0 0 var(--bio-space-l); padding: 0; list-style: none; }
.bio-platform .bio-space-nav a { display: inline-flex; align-items: center; min-height: 3rem; padding: 0 var(--bio-space-m); border: var(--bio-border-control) solid var(--bio-color-control); border-radius: 999px; color: var(--bio-color-text); text-decoration: none; }
.bio-platform .bio-space-nav__logout { margin-inline-start: auto; }
.bio-platform .bio-space-nav a[aria-current="page"] { border-color: var(--bio-color-accent); box-shadow: inset 0 0 0 var(--bio-border-control) var(--bio-color-accent); background: var(--bio-color-selected); color: var(--bio-color-accent); font-weight: 700; }
.bio-platform .bio-results { margin: 0 0 var(--bio-space-m); }
.bio-platform .bio-results__count { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bio-space-s); margin: 0; padding: 0; list-style: none; }
.bio-platform .bio-chip { display: inline-flex; align-items: center; gap: 0.4rem; min-height: 3rem; padding: 0 var(--bio-space-m); border-radius: 999px; background: var(--bio-color-selected); color: var(--bio-color-accent); font-weight: 600; text-decoration: none; }
.bio-platform .bio-filter-panel > summary { list-style: none; cursor: pointer; }
.bio-platform .bio-filter-panel > summary::-webkit-details-marker { display: none; }
.bio-platform .bio-filter-form { margin-top: var(--bio-space-m); padding: var(--bio-space-m); border: 1px solid var(--bio-color-border); border-radius: var(--bio-radius); background: var(--bio-color-surface); }
.bio-platform .bio-filter { margin: 0 0 var(--bio-space-m); padding: 0; border: 0; }
.bio-platform .bio-filter legend { font-weight: 600; padding: 0; }
.bio-platform .bio-filter .bio-choices { margin: var(--bio-space-s) 0 0; }
.bio-platform .bio-sort { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bio-space-s); }
.bio-platform .bio-sort select { min-height: 3rem; font: inherit; }
.bio-platform .bio-how { margin: 0 0 var(--bio-space-l); }
.bio-platform .bio-how > summary { cursor: pointer; color: var(--bio-color-accent); text-decoration: underline; min-height: 3rem; display: flex; align-items: center; }
.bio-platform .bio-links { padding-left: 1.2em; }
.bio-platform .bio-links li { margin-bottom: var(--bio-space-s); }
.bio-platform .bio-sort__go[hidden] { display: none; }
/* « Pas d'alerte » : les critères n'ont pas d'objet, ils s'effacent (sans script). */
.bio-platform #alertes form:has(input[name="frequence"][value="none"]:checked) .bio-alert-criteria { display: none; }

/* Paiement en un clic (carte du projet) et absence de résultat. */
.bio-platform .bio-oneclick { margin: 0 0 var(--bio-space-m); padding: var(--bio-space-m); border: 2px solid var(--bio-color-accent); border-radius: var(--bio-radius); background: var(--bio-color-selected); }
.bio-platform .bio-oneclick p { margin: 0; }
.bio-platform .bio-oneclick p + p { margin-top: 0.25rem; }
.bio-platform .bio-empty h2 { margin-top: 0; }
.bio-platform .bio-empty .bio-chips { margin: 0 0 var(--bio-space-m); }
/* Carte de projet orientée décision (revue experte du 12/10). */
.bio-platform .bio-project__badges { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-project h2 { margin-bottom: var(--bio-space-s); }
.bio-platform .bio-project__meta { margin: 0 0 var(--bio-space-s); color: var(--bio-color-muted); }
.bio-platform .bio-project__gap { display: flex; align-items: baseline; gap: var(--bio-space-s); margin: 0 0 var(--bio-space-s); color: var(--bio-color-warning-text); font-weight: 600; overflow-wrap: anywhere; }
.bio-platform .bio-project__gap-icon { display: inline-grid; flex: none; place-items: center; width: 1.2rem; height: 1.2rem; border: 2px solid var(--bio-color-warning); border-radius: 50%; font-size: 0.8rem; line-height: 1; transform: translateY(0.1em); }
.bio-platform .bio-project__figure { margin: 0 0 var(--bio-space-m); font-size: 1.1em; }
.bio-platform .bio-project__places { margin: var(--bio-space-m) 0; font-weight: 600; }
.bio-platform .bio-badge--quiet { background: var(--bio-color-surface); color: var(--bio-color-text); border: 1px solid var(--bio-color-border); }
.bio-platform .bio-brief__estimate { margin-top: var(--bio-space-m); }
.bio-platform .bio-brief__estimate > summary { cursor: pointer; color: var(--bio-color-accent); text-decoration: underline; min-height: 3rem; display: flex; align-items: center; }
.bio-platform .bio-brief__section p { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-project__value { margin: 0 0 var(--bio-space-m); }
.bio-platform .bio-dossier { margin: var(--bio-space-m) 0; }
.bio-platform .bio-dossier > summary { cursor: pointer; font-weight: 600; color: var(--bio-color-accent); text-decoration: underline; min-height: 3rem; display: flex; align-items: center; }
/* Intertitres de « Toutes ses réponses » : h3 à la taille commune (22 px, DA04 A ; 18 px avant, A2-3 de la recette du 26/10/2026). */
.bio-platform .bio-brief__answers-title { margin: var(--bio-space-m) 0 var(--bio-space-s); }

/* Retour sur l'estimation (L10) : une question à la fois, réponses en pastilles-boutons. */
.bio-platform .bio-feedback { margin: var(--bio-space-m) 0; padding: var(--bio-space-m); border: 1px solid var(--bio-color-border); border-radius: var(--bio-radius); background: var(--bio-color-surface); }
.bio-platform .bio-feedback fieldset { margin: 0; padding: 0; border: 0; }
.bio-platform .bio-feedback legend { font-weight: 600; padding: 0; }
.bio-platform .bio-feedback__option { font: inherit; color: var(--bio-color-text); }
.bio-platform .bio-feedback__option:hover { border-color: var(--bio-color-accent); }
.bio-platform .bio-feedback__done p { margin: 0; }
.bio-platform .bio-people__practice { color: var(--bio-color-muted); }
.bio-platform #compte form + h3, .bio-platform #compte h3 { margin-top: var(--bio-space-l); }

/* Profil du biographe (B02) : photo à gauche sur grand écran, au-dessus sur mobile. */
.bio-platform .bio-profile { display: flex; flex-wrap: wrap; gap: var(--bio-space-m); align-items: flex-start; }
.bio-platform .bio-profile__photo { width: 96px; height: 96px; object-fit: cover; border-radius: 50%; border: 1px solid var(--bio-color-border); }
.bio-platform .bio-profile__body { flex: 1 1 16rem; min-width: 0; }
/* « Mes réglages » : photo actuelle sur sa ligne, sous l'aide, légende à droite (recette du 26/10/2026). */
.bio-platform .bio-photo-actuelle { display: flex; align-items: center; gap: var(--bio-space-m); margin: var(--bio-space-s) 0; }
/* Recadrage de la nouvelle photo (photo-crop.js, choix A de François du 26/10/2026) : rond de 192 px, photo déplaçable, curseur de zoom. */
.bio-platform .bio-recadrage[hidden] { display: none; }
.bio-platform .bio-recadrage { display: grid; gap: var(--bio-space-s); justify-items: start; margin: var(--bio-space-m) 0 0; }
.bio-platform .bio-recadrage__aide { margin: 0; color: var(--bio-color-muted); }
.bio-platform .bio-recadrage__rond { position: relative; width: 192px; height: 192px; border-radius: 50%; overflow: hidden; border: 1px solid var(--bio-color-border);
	background: var(--bio-color-border); cursor: grab; touch-action: none; user-select: none; }
.bio-platform .bio-recadrage__rond:active { cursor: grabbing; }
.bio-platform .bio-recadrage__rond:focus-visible { outline: 3px solid var(--bio-color-focus); outline-offset: 3px; }
.bio-platform .bio-recadrage__rond img { position: absolute; top: 0; left: 0; max-width: none; transform-origin: 0 0; pointer-events: none; }
.bio-platform .bio-recadrage__zoom { display: flex; align-items: center; gap: var(--bio-space-s); margin: 0; }
.bio-platform .bio-recadrage__zoom input { flex: 0 0 12rem; width: 12rem; min-height: 44px; accent-color: var(--bio-color-accent); }
.bio-platform .bio-profile__name { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-profile__name strong { font-size: 1.2em; font-weight: 700; }
@media (max-width: 600px) { .bio-platform .bio-profile__books { display: block; } .bio-platform .bio-profile__sep { display: none; } }
.bio-platform .bio-profile__excerpt { margin: var(--bio-space-s) 0; padding-left: var(--bio-space-m); border-left: 3px solid var(--bio-color-border); font-style: italic; }

/* ------------------------------------------------------------------------------------------------------------------------
   Espace biographe : audit du 21/10/2026, choix de François (projet/audits/2026-10-21-biographe/propositions.json).
   ------------------------------------------------------------------------------------------------------------------------ */

/* « Projets disponibles » (P02 hybride, P04 A) : nombre de projets et tri en tête, la règle du débit dite une fois ; sur
   ordinateur, les filtres ouverts dans une colonne à gauche (projects.js), la liste à droite ; sur téléphone, « Filtrer » et
   le tri côte à côte, le panneau se déplie sur toute la largeur. */
.bio-platform .bio-projects { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "count count" "filtres tri" "repere repere" "liste liste"; align-items: center; column-gap: var(--bio-space-s); }
.bio-platform .bio-projects:not(.bio-projects--filtres) { grid-template-areas: "count count" "tri tri" "repere repere" "liste liste"; }
.bio-platform .bio-projects > .bio-results__count { grid-area: count; margin: 0 0 var(--bio-space-m); }
.bio-platform .bio-projects > .bio-results__count strong { font-family: var(--bio-font-heading); font-weight: 400; font-size: 1.5rem; }
.bio-platform .bio-projects > .bio-sort { grid-area: tri; flex-wrap: nowrap; margin: 0; min-width: 0; }
.bio-platform .bio-projects > .bio-sort select { min-width: 0; flex: 1 1 auto; border-radius: 999px; padding: 0 2.5rem 0 1.1rem; border: var(--bio-border-control) solid var(--bio-color-control); background-color: var(--bio-color-surface); }
.bio-platform .bio-projects > .bio-filter-panel { grid-area: filtres; flex: none; align-self: start; }
.bio-platform .bio-projects > .bio-filter-panel[open] { grid-column: 1 / -1; grid-row: 2; }
.bio-platform .bio-projects > .bio-filter-panel[open] ~ .bio-sort { grid-row: 3; grid-column: 1 / -1; margin-top: var(--bio-space-m); }
.bio-platform .bio-projects > .bio-repere { grid-area: repere; margin: var(--bio-space-m) 0 0; padding-top: var(--bio-space-m); border-top: 1px dashed var(--bio-color-border); }
.bio-platform .bio-projects > .bio-filter-panel[open] ~ .bio-repere { grid-row: 4; }
.bio-platform .bio-repere mark { padding: 0; color: inherit; background: no-repeat left 88% / 100% .45em linear-gradient(var(--bio-color-highlight-soft), var(--bio-color-highlight-soft)); }
.bio-platform .bio-projects__list { grid-area: liste; min-width: 0; }
.bio-platform .bio-projects > .bio-filter-panel[open] ~ .bio-projects__list { grid-row: 5; }
.bio-platform .bio-filter-form__title { display: none; }
.bio-platform .bio-projects__list > .bio-chips { margin: var(--bio-space-m) 0 0; }
@media (max-width: 30rem) {
  .bio-platform .bio-projects > .bio-sort label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
@media (min-width: 64rem) {
  .bio-platform .bio-projects { grid-template-columns: 18.75rem minmax(0, 1fr); grid-template-areas: "count tri" "repere repere" "filtres liste"; column-gap: 2rem; align-items: start; }
  .bio-platform .bio-projects:not(.bio-projects--filtres) { grid-template-areas: "count tri" "repere repere" "liste liste"; }
  .bio-platform .bio-projects > .bio-sort { justify-self: end; align-self: center; }
  .bio-platform .bio-projects > .bio-results__count { align-self: center; margin: 0; }
  .bio-platform .bio-projects > .bio-repere { margin: var(--bio-space-m) 0 var(--bio-space-l); }
  .bio-platform .bio-projects > .bio-filter-panel,
  .bio-platform .bio-projects > .bio-filter-panel[open] { grid-area: filtres; position: sticky; top: calc(var(--bio-header-offset) + var(--bio-space-m)); max-height: calc(100vh - var(--bio-header-offset) - 2rem); overflow: auto; }
  .bio-platform .bio-projects > .bio-filter-panel[open] ~ :is(.bio-sort, .bio-repere, .bio-projects__list) { grid-row: auto; grid-column: auto; margin-top: 0; }
  .bio-platform .bio-projects > .bio-filter-panel[open] ~ .bio-sort { grid-area: tri; }
  .bio-platform .bio-projects > .bio-filter-panel[open] ~ .bio-repere { grid-area: repere; margin: var(--bio-space-m) 0 var(--bio-space-l); }
  .bio-platform .bio-projects > .bio-filter-panel[open] ~ .bio-projects__list { grid-area: liste; }
  .bio-platform .bio-projects > .bio-filter-panel[open] > summary { display: none; }
  .bio-platform .bio-filter-panel[open] .bio-filter-form { margin-top: 0; border-radius: var(--bio-radius); }
  .bio-platform .bio-filter-panel[open] .bio-filter-form__title { display: block; margin: 0 0 var(--bio-space-s); font-size: var(--bio-heading-card); }
  .bio-platform .bio-filter-panel .bio-choice--pill { padding: 0.35rem 0.9rem; }
  .bio-platform .bio-projects__list > .bio-project:first-child,
  .bio-platform .bio-projects__list > .bio-chips + .bio-project { margin-top: 0; }
}

/* Carte d'un projet (P03 A) : le projet à gauche, l'encadré de décision à droite sur ordinateur ; sur téléphone, l'encadré
   juste sous le titre et le lieu (ordre du balisage). Montants insécables (gabarit). */
.bio-platform .bio-project { scroll-margin-top: calc(var(--bio-header-offset) + var(--bio-space-m)); }
.bio-platform .bio-project__decision { margin: var(--bio-space-m) 0 var(--bio-space-l); padding: 1.25rem; border-radius: var(--bio-radius); background: var(--bio-color-selected); }
.bio-platform .bio-project__decision > :last-child { margin-bottom: 0; }
.bio-platform .bio-project__decision .bio-project__figure { margin: 0 0 var(--bio-space-s); font-size: 1em; }
.bio-platform .bio-project__decision .bio-project__figure strong { display: block; font-family: var(--bio-font-heading); font-weight: 400; font-size: 1.45rem; line-height: 1.25; }
.bio-platform .bio-project__hours { display: block; }
.bio-platform .bio-project__decision .bio-project__places { margin: var(--bio-space-s) 0; }
.bio-platform .bio-project__decision .bio-project__value { margin: 0 0 var(--bio-space-s); }
.bio-platform .bio-project__buttons { flex-direction: column; align-items: stretch; gap: 0.75rem; }
.bio-platform .bio-project__decision .bio-button { width: 100%; min-height: 3.5rem; box-sizing: border-box; }
.bio-platform .bio-project__decision .bio-how { margin: var(--bio-space-s) 0 0; }
.bio-platform .bio-brief__lead { font-weight: 400; line-height: 1.5; font-size: 1.15em; }
.bio-platform .bio-project .bio-brief__strengths { list-style: none; padding-left: 0; }
.bio-platform .bio-project .bio-brief__strengths li { position: relative; margin: 0.35rem 0; padding-left: 1.85rem; }
.bio-platform .bio-project .bio-brief__strengths li::before { content: "✓"; content: "✓" / ""; position: absolute; left: 0.25rem; top: 0; color: var(--bio-color-accent); font-weight: 700; }
@media (max-width: 30rem) {
  .bio-platform .bio-project__decision { padding: var(--bio-space-m); }
  .bio-platform .bio-project__decision .bio-button { padding-left: var(--bio-space-m); padding-right: var(--bio-space-m); }
}
@media (min-width: 64rem) {
  .bio-platform .bio-project { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; grid-template-rows: auto auto auto 1fr; column-gap: 2.5rem; align-items: start;
    border-radius: var(--bio-radius); box-shadow: 0 1px 2px color-mix(in srgb, var(--bio-color-text) 6%, transparent), 0 2px 6px color-mix(in srgb, var(--bio-color-text) 8%, transparent); }
  .bio-platform .bio-project > * { grid-column: 1; }
  .bio-platform .bio-project > .bio-project__decision { grid-column: 2; grid-row: 1 / -1; margin: 0; }
}

/* Liste par paquets de 10 (P04 A). */
.bio-platform .bio-more { display: flex; flex-direction: column; align-items: center; gap: var(--bio-space-s); margin: 2rem 0; }
.bio-platform .bio-more p { margin: 0; color: var(--bio-color-muted); }

/* « Mes demandes » sans demande (P05 B) : trois temps en chiffres manuscrits sur une bulle de surligneur, bouton à pastille. */
.bio-platform .bio-requests-empty { max-width: 48.75rem; padding: 2rem; border-radius: var(--bio-radius); box-shadow: 0 14px 30px -20px color-mix(in srgb, var(--bio-color-text) 35%, transparent); }
.bio-platform .bio-requests-empty h2 { margin-bottom: var(--bio-space-m); font-size: var(--bio-heading-section); }
.bio-platform .bio-steps { display: grid; gap: 0.875rem; margin: var(--bio-space-m) 0 var(--bio-space-l); padding: 0; list-style: none; }
.bio-platform .bio-steps li { display: grid; grid-template-columns: 2.75rem 1fr; gap: 0.75rem; align-items: start; }
.bio-platform .bio-steps__number { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: var(--bio-color-highlight); color: var(--bio-color-accent);
  font-family: var(--bio-font-hand); font-weight: 700; font-size: 1.75rem; line-height: 1; transform: rotate(-4deg); }
/* Bouton à pastille de la charte (lbb-cta du kit) pour un lien du plugin : pastille écrite dans le balisage (.bio-cta__pastille) ;
   hauteur, rembourrage, ombre et survol communs avec le bouton principal (DA01 A, plus haut). */
.bio-platform .bio-cta { display: inline-flex; align-items: center; box-sizing: border-box; border-radius: 999px;
  background: var(--bio-color-accent); color: var(--bio-color-accent-text); font-family: var(--bio-font-button); font-weight: var(--bio-font-weight-button, 700); text-decoration: none; }
.bio-platform .bio-cta:is(:hover, :focus) { color: var(--bio-color-accent-text); background: var(--bio-color-accent-hover); }

/* Carte d'une demande (P06 A) : étiquette d'état (signe et libellé, jamais la couleur seule), échéance en gras, action d'abord. */
.bio-platform .bio-request { max-width: 48.75rem; border-radius: var(--bio-radius); box-shadow: 0 1px 2px color-mix(in srgb, var(--bio-color-text) 6%, transparent), 0 2px 6px color-mix(in srgb, var(--bio-color-text) 8%, transparent); }
.bio-platform .bio-state { --bio-state: var(--bio-color-accent); display: inline-flex; align-items: center; gap: 0.5rem; margin: 0 0 var(--bio-space-s); padding: 0.125rem 0.875rem 0.125rem 0.375rem;
  border-left: 4px solid var(--bio-state); border-radius: 0.375rem; background: var(--bio-color-surface); font-weight: 700; color: var(--bio-state); }
.bio-platform .bio-state__sign { display: inline-grid; place-items: center; width: 1.625rem; height: 1.625rem; border-radius: 50%; background: var(--bio-state); color: var(--bio-color-accent-text); font-size: 0.95rem; }
/* Teintes d'état assombries pour un texte de 18 px (règle de l'audit premium : 7:1 visé). */
.bio-platform .bio-state--alerte { --bio-state: color-mix(in srgb, var(--bio-color-warning) 85%, var(--bio-color-text)); }
.bio-platform .bio-state--reussite { --bio-state: color-mix(in srgb, var(--bio-color-success) 85%, var(--bio-color-text)); }
.bio-platform .bio-state--neutre { --bio-state: var(--bio-color-muted); }
.bio-platform .bio-request .bio-status { font-weight: 400; }
.bio-platform .bio-request__pay { margin: 0 0 var(--bio-space-m); }

/* « Mes réglages » (P07 A) : sommaire « Dans cette page » en pastilles sur téléphone, en marge collante à gauche sur ordinateur
   (partie lue : settings.js) ; liens de « Mes coordonnées » à 48 px. */
.bio-platform .bio-toc ul { display: flex; flex-wrap: wrap; gap: var(--bio-space-s); margin: 0 0 var(--bio-space-l); padding: 0; list-style: none; }
.bio-platform .bio-toc a { display: inline-flex; align-items: center; min-height: 3rem; padding: 0 1.125rem; box-sizing: border-box; border: var(--bio-border-control) solid var(--bio-color-control);
  border-radius: 999px; background: var(--bio-color-surface); color: var(--bio-color-accent); font-weight: 700; text-decoration: none; }
.bio-platform .bio-toc a[aria-current] { border-color: var(--bio-color-accent); background: var(--bio-color-selected); }
.bio-platform .bio-settings section[id] { scroll-margin-top: calc(var(--bio-header-offset) + var(--bio-space-m)); }
.bio-platform .bio-links { padding-left: 0; list-style: none; }
.bio-platform .bio-links li { margin-bottom: 0; }
.bio-platform .bio-links a { display: inline-flex; align-items: center; min-height: 3rem; }
@media (min-width: 64rem) {
  .bio-platform .bio-settings { display: grid; grid-template-columns: 16.25rem minmax(0, 1fr); column-gap: 2.5rem; align-items: start; }
  .bio-platform .bio-toc { position: sticky; top: calc(var(--bio-header-offset) + 1.5rem); margin-top: var(--bio-space-m); }
  .bio-platform .bio-toc ul { flex-direction: column; flex-wrap: nowrap; gap: 0; border-left: 2px solid var(--bio-color-border); }
  .bio-platform .bio-toc a { margin-left: -2px; padding: 0 var(--bio-space-m); border: 0; border-left: 2px solid transparent; border-radius: 0; background: none; color: var(--bio-color-text); font-weight: 400; }
  .bio-platform .bio-toc a[aria-current] { border-left: 4px solid var(--bio-color-accent); background: none; color: var(--bio-color-accent); font-weight: 700; }
  .bio-platform .bio-toc a[aria-current] span, .bio-platform .bio-toc a[aria-current] { text-decoration: underline; text-decoration-color: var(--bio-color-highlight-soft); text-decoration-thickness: .4em; text-underline-offset: -.15em; text-decoration-skip-ink: none; }
  .bio-platform .bio-settings__parts > .bio-card:first-child { margin-top: 0; }
}

/* Parcours du candidat biographe (choix de François du 21/10/2026, audit du candidat ; termine P11 A de l'espace biographe). */
/* Texte d'ouverture et message du SIRET déjà inscrit à la largeur de lecture ; repère « Étape 1 sur 2 » (P03 A, P06 A). */
.bio-platform > :is(p, .bio-notice).bio-reading { max-width: 31em; }
.bio-platform > .bio-step-mark { margin: 0 0 1rem; }
/* Bouton à pastille sur un <button> (.bio-cta vise d'abord un lien) ; pleine largeur sur téléphone (P03 A, P04 A, P09 A). */
.bio-platform button.bio-cta { border: 0; font-size: inherit; line-height: 1.2; cursor: pointer; }
.bio-platform button.bio-cta:disabled { opacity: 0.55; cursor: not-allowed; }
@media (max-width: 599px) { .bio-platform .bio-cta--wide { width: 100%; justify-content: space-between; } }
/* Formulaire (P04 A) : établissement en un encadré, « (facultatif) » en texte doux, champs courts à leur taille. */
.bio-platform .bio-company { max-width: 42rem; }
.bio-platform .bio-company p { margin: 0 0 .25rem; }
.bio-platform .bio-company a { display: inline-flex; min-height: 3rem; align-items: center; }
.bio-platform .bio-optional-mark { font-weight: 400; color: var(--bio-color-muted); }
.bio-platform input.bio-input--short { max-width: 10rem; }
/* Résumé des erreurs (P05 A) : chaque message renvoie à son champ. Liens laissés en ligne (pas d'inline-block) : la puce reste
   sur la première ligne d'un message qui passe sur deux lignes. */
.bio-platform .bio-errors__links { margin: .25rem 0 .5rem; padding-left: 1.25rem; }
.bio-platform .bio-errors__links li { padding: .3rem 0; }
.bio-platform .bio-errors__links a { color: inherit; font-weight: 700; }
/* « Ma candidature » (P01 A) : « Ce qui va se passer » en trois temps ; issues (« Nous contacter », « Se connecter »,
   « Compléter ma candidature ») à 48 px (P06 A, P09 A, P10 A). */
.bio-platform section.bio-candidature { border-radius: var(--bio-radius); }
.bio-platform .bio-card .bio-candidature__next { margin: 2rem 0 .5rem; font-family: var(--bio-font-heading); font-weight: 400; font-size: var(--bio-heading-card); }
.bio-platform .bio-exits { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem; margin-top: 1.5rem; }
.bio-platform .bio-exits a:not(.bio-cta) { display: inline-flex; min-height: 3rem; align-items: center; }
/* ------------------------------------------------------------------------------------------------------------------------
   Page de paiement d'une demande (P12 A, choix de François du 21/10/2026 ; projet/audits/2026-10-21-biographe/paiement/) :
   récapitulatif « Votre demande » (gabarit professional-pay.php, dans .bio-platform) et formulaire natif de WooCommerce aux
   couleurs de l'espace, par la classe bio-pay du corps de page (Front\PayPage). Les boutons Apple Pay et Google Pay de Stripe
   (#wc-stripe-express-checkout-element, cadres de Stripe) ne sont ni masqués ni restylés : ils s'affichent si Stripe les propose.
   Sélecteurs body.bio-pay #… : plus précis que ceux de WooCommerce (.woocommerce #payment #place_order,
   .woocommerce button.button.alt), sans !important.
   ------------------------------------------------------------------------------------------------------------------------ */
/* Carte refusée (EF05 A, DEC-H052) : message au-dessus du formulaire de la carte, caché tant qu'il n'y a pas de refus. */
.bio-platform.bio-pay-declined { margin: 0 0 var(--bio-space-m); scroll-margin-top: var(--bio-space-l); }
.bio-platform.bio-pay-declined[hidden] { display: none; }
.bio-platform.bio-pay-declined .bio-notice { margin: 0; }
.bio-platform.bio-pay-summary { margin: 0 0 var(--bio-space-l); padding: var(--bio-space-l); border: 1px solid var(--bio-color-border); border-radius: var(--bio-radius);
  background: var(--bio-color-surface); box-shadow: 0 1px 2px color-mix(in srgb, var(--bio-color-text) 6%, transparent), 0 2px 6px color-mix(in srgb, var(--bio-color-text) 8%, transparent); }
.bio-platform .bio-pay-summary__label { margin: 0; color: var(--bio-color-accent); font-weight: 700; }
.bio-platform.bio-pay-summary h2 { margin: 0.1em 0 0.3em; font-size: var(--bio-heading-card); line-height: 1.25; }
.bio-platform .bio-pay-summary__offer { margin: 0 0 0.8em; }
.bio-platform .bio-pay-summary__points { margin: 0; padding: 0; list-style: none; }
.bio-platform .bio-pay-summary__points li { display: flex; gap: 0.6em; margin: 0.4em 0; line-height: 1.5; }
.bio-platform .bio-pay-summary__sign { display: inline-grid; flex: 0 0 1.6em; place-items: center; height: 1.6em; border-radius: 50%; background: var(--bio-color-selected); color: var(--bio-color-accent); font-weight: 700; }
/* Le récapitulatif remplace le tableau « Produit / Qté / Totaux » de WooCommerce (même projet, même prix). */
body.bio-pay #order_review > table.shop_table { display: none; }
body.bio-pay #payment { border: 1px solid var(--bio-color-border); border-radius: var(--bio-radius); background: var(--bio-color-surface);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--bio-color-text) 6%, transparent), 0 2px 6px color-mix(in srgb, var(--bio-color-text) 8%, transparent); }
body.bio-pay #payment div.payment_box { background: var(--bio-color-selected); color: var(--bio-color-text); }
body.bio-pay #payment div.payment_box::before { display: none; }
/* « Valider mon paiement » : le bouton principal à pastille de l'espace (DA01 A, 25/10/2026), pastille en ::after. */
body.bio-pay #payment #place_order { float: none; display: inline-flex; align-items: center; justify-content: space-between; gap: 0.875rem; width: auto; box-sizing: border-box;
  min-height: var(--bio-cta-height); padding: 5px 5px 5px 24px; border: 2px solid var(--bio-color-accent); border-radius: var(--bio-radius-button);
  background: var(--bio-color-accent); color: var(--bio-color-accent-text); font-family: var(--bio-font-button); font-weight: var(--bio-font-weight-button); font-size: var(--bio-font-size);
  line-height: 1.25; text-align: left; box-shadow: var(--bio-shadow-button); transition: transform 0.2s ease, background-color 0.2s ease; }
body.bio-pay #payment #place_order::after { content: "→"; content: "→" / ""; display: inline-grid; flex: none; place-items: center; width: var(--bio-cta-pastille); height: var(--bio-cta-pastille);
  border-radius: 50%; box-shadow: inset 0 0 0 2px var(--bio-color-pastille); font-size: 1.25rem; line-height: 1; transition: background-color 0.2s ease, color 0.2s ease, transform 0.25s ease; }
body.bio-pay #payment #place_order:is(:hover, :focus) { border-color: var(--bio-color-accent-hover); background: var(--bio-color-accent-hover); color: var(--bio-color-accent-text); }
/* Survol : comme les autres boutons principaux (DA01 A) : pastille remplie de jaune, flèche vers le haut, bouton monté de 2 px
   (A3-1 et A5a-3 de la recette du 26/10/2026 : ni montée ni rotation avant). */
body.bio-pay #payment #place_order:not(:disabled):hover::after { background: var(--bio-color-pastille); color: var(--bio-color-accent); transform: rotate(-45deg); }
@media (prefers-reduced-motion: no-preference) {
  body.bio-pay #payment #place_order:not(:disabled):hover { transform: translateY(-2px); }
}
@media (prefers-reduced-motion: reduce) {
  body.bio-pay #payment #place_order, body.bio-pay #payment #place_order::after { transition: none; }
}
body.bio-pay #payment #place_order:focus-visible { outline: 3px solid var(--bio-color-focus); outline-offset: 3px; }
body.bio-pay .bio-pay__below { margin: 0.6em 0 0; }
body.bio-pay .bio-pay__below a { color: var(--bio-color-accent); }
@media (max-width: 699px) {
  body.bio-pay #payment #place_order { width: 100%; }
}

/* ------------------------------------------------------------------------------------------------------------------------
   Accueil du questionnaire : « Le carnet qu'on ouvre » (P01 A, choix de François du 21/10/2026 ;
   projet/audits/2026-10-21-accueil-questionnaire/, css/A.css). Page de cahier (lignes Seyès pâles, marge rouge du kit),
   annotation manuscrite au-dessus du titre, bouton à pastille de la charte (.bio-cta) entouré de plus d'air que dans la
   maquette (demande de François : 40 px au-dessus au lieu de 24, 36 px au-dessous au lieu de 16 sur ordinateur), une seule
   phrase dessous, dessin de la case cochée à droite sur ordinateur, sous la phrase sur téléphone. Complète le bloc
   « Accueil du questionnaire » plus haut (repères cochés).
   ------------------------------------------------------------------------------------------------------------------------ */
.bio-platform .bio-card.bio-welcome { position: relative; isolation: isolate; max-width: 62rem; padding: 1.875rem 2.5rem 1.875rem 4rem; border: 0; border-radius: var(--bio-radius);
  background: var(--bio-color-surface) repeating-linear-gradient(0deg, transparent 0 35px, color-mix(in srgb, var(--bio-color-accent) 7%, transparent) 35px 36px);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--bio-color-text) 6%, transparent), 0 14px 34px -18px color-mix(in srgb, var(--bio-color-text) 35%, transparent); }
.bio-platform .bio-card.bio-welcome::before { content: ""; position: absolute; top: 0; bottom: 0; left: 2.5rem; width: 1.5px; background: var(--bio-color-margin); opacity: 0.7; pointer-events: none; }
.bio-platform .bio-welcome__annot { margin: 0 0 2px; font-family: var(--bio-font-hand); font-weight: 700; font-size: 1.75rem; line-height: 1.1; color: var(--bio-color-accent); transform: rotate(-2deg); transform-origin: left; }
/* Trois traits de lumière au bout de l'annotation, décoratifs (dessin de la maquette A). */
.bio-platform .bio-welcome__annot::after { content: ""; display: inline-block; width: 18px; height: 16px; margin-left: 6px;
  background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 16'%3E%3Cpath d='M3 10 L1 13 M8 7 V2 M13 10 L16 8' stroke='%23F2C200' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.bio-platform .bio-welcome .bio-welcome__list { margin-bottom: 0; }
.bio-platform .bio-welcome .bio-welcome__action { margin: 2.5rem 0 2.25rem; }
.bio-platform .bio-welcome .bio-welcome__note { max-width: 31em; margin: 0; color: var(--bio-color-text); line-height: 1.5; }
.bio-platform .bio-welcome__col img { display: block; width: 100%; height: auto; mix-blend-mode: multiply; transform: rotate(1.5deg);
  -webkit-mask-image: radial-gradient(ellipse at center, #000 52%, transparent 74%); mask-image: radial-gradient(ellipse at center, #000 52%, transparent 74%); }
@media (min-width: 48rem) {
  .bio-platform .bio-card.bio-welcome:has(> .bio-welcome__col) { display: grid; grid-template-columns: minmax(0, 1fr) 16.25rem; gap: 2.5rem; align-items: center; }
}
@media (max-width: 47.99rem) {
  .bio-platform .bio-card.bio-welcome { padding: 1.375rem 1.125rem 1.5rem 2.125rem; }
  .bio-platform .bio-card.bio-welcome::before { left: 1.25rem; }
  .bio-platform .bio-welcome__annot { font-size: 1.5rem; }
  .bio-platform .bio-welcome .bio-welcome__action { margin: 2rem 0 1.75rem; }
  .bio-platform .bio-welcome .bio-cta { display: flex; width: 100%; justify-content: center; padding-left: 1.5rem; }
  .bio-platform .bio-welcome__col { max-width: 12.5rem; margin: 1.125rem auto 0; }
}
/* Frise des quatre étapes et durée sur l'accueil du questionnaire (DEC-H064, choix de François du 04/11/2026,
   projet/audits/2026-11-04-lancement/, proposition C) : un seul repère (coche d'encre : le vert est réservé aux messages de réussite) ;
   à côté du bouton, une vignette « montre » et la durée à la main ; phrase de François dessous. Ordinateur : frise intégrale sous la
   carte, sur toute sa largeur (geste du hero de l'accueil, mêmes mesures) ; téléphone : liste des titres avant le repère, aérée, bande
   « gratuit » à gauche des étapes 1 à 3. Pictogrammes : images de kit.css (lbb-vignette--…). */
.bio-platform .bio-welcome--frise .bio-welcome__list li::before { color: var(--bio-color-accent); }
.bio-platform .bio-welcome__depart { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bio-space-m) 1.125rem; margin: 2.5rem 0 0; }
.bio-platform .bio-welcome__depart .bio-welcome__action { margin: 0; }
.bio-platform .bio-welcome__duree { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-family: var(--bio-font-hand); font-weight: 700; font-size: 1.4375rem;
  line-height: 1.05; color: var(--bio-color-accent); rotate: -2deg; }
.bio-platform .bio-welcome__montre { flex: none; width: 46px; height: 46px; border-radius: 50%; background: var(--bio-color-surface) no-repeat center / 28px 28px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231D3A8A' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.2 1.8h3.6M12 1.8v2.6'/%3E%3Ccircle cx='12' cy='13.4' r='8.7' fill='%23fff'/%3E%3Cpath d='M12 13.4V5.6a7.8 7.8 0 0 1 6.75 3.9Z' fill='%23FFF3A0' stroke='none'/%3E%3Ccircle cx='12' cy='13.4' r='8.7'/%3E%3Cpath d='M12 13.4V7.4M12 13.4l3.4 1.9'/%3E%3Ccircle cx='12' cy='13.4' r='.9' fill='%231D3A8A' stroke='none'/%3E%3C/svg%3E");
  box-shadow: inset 0 0 0 1.6px var(--bio-color-accent); }
.bio-platform .bio-welcome--frise .bio-welcome__note { margin-top: 1.375rem; }
.bio-platform .bio-frise { position: relative; isolation: isolate; margin: 0; padding: 0; list-style: none; }
.bio-platform .bio-frise__etape { position: relative; min-width: 0; margin: 0; }
.bio-platform .bio-frise__q, .bio-platform .bio-frise__t, .bio-platform .bio-frise__d, .bio-platform .bio-frise__paie { margin: 0; }
.bio-platform .bio-frise__q, .bio-platform .bio-frise__gratuit, .bio-platform .bio-frise__paie, .bio-platform .bio-frise__num { font-family: var(--bio-font-hand); font-weight: 700; color: var(--bio-color-accent); }
.bio-platform .bio-frise__vig { position: relative; flex: none; display: block; border-radius: 50%; background-color: var(--bio-color-surface); background-repeat: no-repeat; background-position: center;
  box-shadow: inset 0 0 0 1.6px var(--bio-color-accent); }
.bio-platform .bio-frise__num { position: absolute; border-radius: 50%; display: grid; place-items: center; background: var(--bio-color-surface); box-shadow: inset 0 0 0 1.4px var(--bio-color-accent); line-height: 1; }
.bio-platform .bio-frise__etape--1 .bio-frise__vig { background-color: var(--bio-color-highlight); box-shadow: inset 0 0 0 2.4px var(--bio-color-accent), 0 0 0 4px var(--bio-color-surface), 0 0 0 5.5px var(--bio-color-accent); }
.bio-platform .bio-frise__etape--1 .bio-frise__num { background: var(--bio-color-accent); color: var(--bio-color-accent-text); box-shadow: none; }
.bio-platform .bio-frise__etape--1 .bio-frise__q { transform: rotate(-3deg); transform-origin: left bottom; }
.bio-platform .bio-frise__t { font-family: var(--bio-font-heading); font-weight: 400; color: var(--bio-color-text); }
.bio-platform .bio-frise__d { color: var(--bio-color-muted); font-size: var(--bio-font-size); line-height: 1.4; }
.bio-platform .bio-frise__paie { justify-self: start; font-size: 1.1875rem; line-height: 1.15; rotate: -1.5deg; transform-origin: left top; text-wrap: balance; max-width: 13em; }
@media (min-width: 48rem) {
  .bio-platform .bio-card.bio-welcome--frise:has(> .bio-welcome__col) { align-items: start; row-gap: 0; }
  .bio-platform .bio-welcome--frise .bio-welcome__col { align-self: center; }
  .bio-platform .bio-frise { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(5, auto); column-gap: 18px;
    margin-top: 1.875rem; padding-top: 26px; border-top: 1.5px dashed color-mix(in srgb, var(--bio-color-accent) 25%, transparent); }
  /* Bande jaune de l'étape 1 jusque sous la vignette 4, centrée 6 px au-dessus des vignettes (comme l'accueil). */
  .bio-platform .bio-frise::before { content: ""; position: absolute; z-index: -1; left: -7px; top: 77px; width: calc(75% + 13.5px + 17px); height: 30px;
    background: var(--bio-color-highlight-soft); border-radius: 16px 14px 15px 13px / 15px 16px 14px 15px; }
  /* Rangées partagées : titres et phrases alignés d'une colonne à l'autre. */
  .bio-platform .bio-frise__etape { display: grid; grid-row: span 5; grid-template-rows: subgrid; grid-template-columns: 60px minmax(0, 1fr); align-content: start; }
  .bio-platform .bio-frise__q { grid-column: 1 / -1; position: relative; height: 26px; display: flex; align-items: flex-end; white-space: nowrap; font-size: 1.25rem; }
  .bio-platform .bio-frise__q::after { content: ""; position: absolute; left: 30px; bottom: -14px; z-index: 2; width: 14px; height: 17px; background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 26'%3E%3Cpath d='M6 2 C 4 10, 8 16, 13 21 M7 20 L13.5 21.5 L13 15' fill='none' stroke='%231D3A8A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
  .bio-platform .bio-frise__etape--1 .bio-frise__q { font-size: 1.375rem; }
  .bio-platform .bio-frise__etape--1 .bio-frise__q::after { left: 40px; bottom: -16px; }
  .bio-platform .bio-frise__vig { grid-column: 1; grid-row: 2; margin-top: 10px; width: 60px; height: 60px; background-size: 45px 45px; }
  .bio-platform .bio-frise__num { left: -5px; top: -5px; width: 26px; height: 26px; font-size: 1.125rem; }
  .bio-platform .bio-frise__gratuit { grid-column: 2; grid-row: 2; align-self: center; margin-top: 4px; text-align: center; font-size: 1.125rem; }
  .bio-platform .bio-frise__t { grid-column: 1 / -1; grid-row: 3; margin-top: 12px; font-size: 1.25rem; line-height: 1.15; }
  .bio-platform .bio-frise__d { grid-column: 1 / -1; grid-row: 4; margin-top: 4px; }
  .bio-platform .bio-frise__paie { grid-column: 1 / -1; grid-row: 5; margin-top: 12px; }
}
@media (max-width: 47.99rem) {
  /* Ordre du téléphone : annotation, titre, bouton et durée, frise, repère, phrase, dessin (« bouton d'abord » : choix A de François du
     04/11/2026 pour l'iPhone SE, étendu à tous les téléphones le même jour après l'audit de non-régression : la frise avant le bouton le
     faisait passer sous le premier écran sur la plupart des téléphones, et aucune barre du bas ne le montre sur cette page). */
  .bio-platform .bio-card.bio-welcome--frise { display: flex; flex-direction: column; }
  .bio-platform .bio-welcome--frise .bio-welcome__texte { display: contents; }
  .bio-platform .bio-welcome--frise .bio-welcome__annot { order: 1; }
  .bio-platform .bio-welcome--frise .bio-welcome__title { order: 2; }
  .bio-platform .bio-welcome--frise .bio-welcome__depart { order: 3; display: block; margin-top: 1.25rem; }
  .bio-platform .bio-welcome--frise .bio-frise { order: 4; margin-top: 1.75rem; }
  .bio-platform .bio-welcome--frise .bio-welcome__list { order: 5; margin-top: 1.5rem; }
  .bio-platform .bio-welcome--frise .bio-welcome__note { order: 6; margin-top: 1rem; }
  .bio-platform .bio-welcome--frise .bio-welcome__col { order: 7; }
  .bio-platform .bio-welcome__duree { display: flex; margin-top: 1rem; }
  .bio-platform .bio-frise { display: grid; gap: 14px; margin-top: 0.75rem; padding-left: 34px; }
  .bio-platform .bio-frise__etape { display: grid; grid-template-columns: 48px minmax(0, 1fr); column-gap: 14px; align-items: center; min-height: 48px; }
  /* Bande « gratuit » continue à gauche des étapes 1 à 3. */
  .bio-platform .bio-frise__etape--1::before, .bio-platform .bio-frise__etape--2::before, .bio-platform .bio-frise__etape--3::before { content: ""; position: absolute; z-index: -1;
    left: -34px; width: 24px; top: 0; bottom: -14px; background: var(--bio-color-highlight-soft); }
  .bio-platform .bio-frise__etape--1::before { border-radius: 13px 11px 0 0; top: -4px; }
  .bio-platform .bio-frise__etape--3::before { bottom: -4px; border-radius: 0 0 12px 14px; }
  .bio-platform .bio-frise__gratuit { display: none; }
  .bio-platform .bio-frise__etape--2 .bio-frise__gratuit { display: flex; position: absolute; left: -34px; width: 24px; top: -14px; bottom: -14px; align-items: center; justify-content: center;
    writing-mode: vertical-rl; transform: rotate(180deg); letter-spacing: .02em; font-size: 1.125rem; }
  .bio-platform .bio-frise__q { display: none; }
  .bio-platform .bio-frise__etape--1 .bio-frise__q { display: block; grid-column: 2; grid-row: 1; align-self: end; font-size: 1.25rem; }
  .bio-platform .bio-frise__etape--1 .bio-frise__q::after { content: ""; display: inline-block; width: 14px; height: 17px; margin-left: 4px; vertical-align: -7px; background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 26'%3E%3Cpath d='M6 2 C 4 10, 8 16, 13 21 M7 20 L13.5 21.5 L13 15' fill='none' stroke='%231D3A8A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
  .bio-platform .bio-frise__vig { grid-column: 1; grid-row: 1; width: 48px; height: 48px; background-size: 36px 36px; }
  .bio-platform .bio-frise__etape--1 .bio-frise__vig { grid-row: 1 / span 2; }
  .bio-platform .bio-frise__num { left: -7px; top: -7px; width: 22px; height: 22px; font-size: 1rem; }
  .bio-platform .bio-frise__t { grid-column: 2; grid-row: 1; font-size: 1.125rem; line-height: 1.25; text-wrap: balance; }
  .bio-platform .bio-frise__etape--1 .bio-frise__t { grid-row: 2; }
  .bio-platform .bio-frise__d { display: none; }
  .bio-platform .bio-frise__paie { grid-column: 2; grid-row: 2; margin-top: 2px; }
  .bio-platform .bio-frise__etape--4 .bio-frise__vig { grid-row: 1 / span 2; }
  .bio-platform .bio-frise__etape--4 .bio-frise__t { align-self: end; }
  .bio-platform .bio-frise__etape--4 .bio-frise__paie { align-self: start; }
}
/* « J'ai trouvé, pause, abandon » (grand audit du 23/10/2026, choix de François). */
/* TPP02 A : « Votre recherche a changé ? », chaque issue avec son bouton et ce qu'elle change. */
.bio-platform .bio-outcomes { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--bio-space-m); }
.bio-platform .bio-outcomes li { display: flex; flex-wrap: wrap; align-items: center; gap: var(--bio-space-s) var(--bio-space-m); margin: 0; }
.bio-platform .bio-outcomes .bio-button { min-width: min(18rem, 100%); }
.bio-platform .bio-outcomes .bio-help { flex: 1 1 16rem; margin: 0; }
/* TPP04 A : « Son nom » seulement si « Un biographe trouvé par un autre moyen » est coché (sans :has(), le champ reste visible). */
.bio-platform form:has(input[name="biographe"]):not(:has(input[name="biographe"][value="autre"]:checked)) .bio-field--other { display: none; }
/* TPP13 A : pastille « En pause depuis le … » sur la carte d'un projet, dans « Projets disponibles ». */
.bio-platform .bio-badge--warning { background: var(--bio-color-surface); color: var(--bio-color-text); border: 2px solid var(--bio-color-warning); }

/* ------------------------------------------------------------------------------------------------------------------------
   Grand audit, rendez-vous 2, côté porteur de projet (DEC-H051, 25/10/2026).
   ------------------------------------------------------------------------------------------------------------------------ */
/* MO01 + MO02 A : fenêtre basse (moins de 560 px de haut : zoom fort, tablette en paysage avec le clavier) : rien ne reste collé
   en haut, la bande d'avancement et l'en-tête du site défilent avec la page ; la barre du bas de l'estimation attend que le
   premier bouton soit sorti de l'écran (questionnaire.js). Écran normal et téléphone en portrait : inchangés (CV01 A gardé).
   L'en-tête collant vient du réglage « sticky » d'Elementor Pro, posé en style en ligne (position: fixed) sur l'en-tête et
   doublé d'un espace réservé : seul !important le remet dans le flux (contournement d'un tiers, limité aux pages du plugin ;
   à retirer si le réglage de l'en-tête prend un jour une condition de hauteur). */
@media (max-height: 559.98px) {
  .bio-platform { --bio-header-offset: var(--bio-admin-bar, var(--wp-admin--admin-bar--height, 0px)); }
  .bio-platform .bio-q__sticky { position: static; }
  body[class*="bio-page-"] .lbb-header.elementor-sticky--active:not(.elementor-sticky__spacer) { position: relative !important; top: auto !important; }
  body[class*="bio-page-"] .lbb-header.elementor-sticky__spacer { display: none !important; }
}
/* MO03 A : « Mon projet », la première phrase en gras, le compteur dessous en texte courant. */
.bio-platform .bio-summary--count { margin-top: calc(-1 * var(--bio-space-s)); font-weight: 400; }
/* MO03 A : « Votre recherche a changé ? Pause, biographe trouvé, abandon » : une ligne qui déplie les trois issues. */
.bio-platform .bio-outcomes-fold > summary { display: flex; align-items: center; min-height: 48px; color: var(--bio-color-accent); list-style: none; cursor: pointer; }
.bio-platform .bio-outcomes-fold > summary::-webkit-details-marker { display: none; }
/* RC03 A (DEC-H057, A1-6 de la recette du 26/10) : le titre est un titre de carte comme les autres (Gloock 22 px, encre ; il était
   en Atkinson 18 px gras) ; la ligne des issues dessous, en texte courant à l'encre bleue, porte la flèche et le souligné du survol. */
.bio-platform .bio-outcomes-fold > summary h2 { margin: 0; color: var(--bio-color-text); }
.bio-platform .bio-outcomes-fold__list { display: block; margin-top: var(--bio-space-s); font-family: var(--bio-font-body); font-size: var(--bio-font-size); letter-spacing: normal; line-height: var(--bio-line-height-choice); color: var(--bio-color-accent); }
.bio-platform .bio-outcomes-fold__list::after { content: "\00a0▾"; content: "\00a0▾" / ""; }
.bio-platform .bio-outcomes-fold[open] .bio-outcomes-fold__list::after { content: "\00a0▴"; content: "\00a0▴" / ""; }
.bio-platform .bio-outcomes-fold > summary:hover .bio-outcomes-fold__list { text-decoration: underline; text-underline-offset: 3px; }
.bio-platform .bio-outcomes-fold[open] > summary { margin-bottom: var(--bio-space-s); }
/* MO05 A : liens du questionnaire et de « Vos réponses » à toucher sur 48 px de haut, sans changer leur aspect (zone invisible). */
.bio-platform :is(.bio-question__nav > a:not(.bio-question__back), .bio-recap__edit > a) { position: relative; display: inline-block; }
.bio-platform :is(.bio-question__nav > a:not(.bio-question__back), .bio-recap__edit > a)::after { content: ""; position: absolute; inset: min(0px, calc((100% - 48px) / 2)) 0; }
/* MO09 A : bouton lisible pendant l'attente de la protection contre les robots (« Un instant… ») : ni grisé ni pâli. */
.bio-platform .bio-button[aria-busy="true"],
.bio-platform .bio-button[data-label]:disabled { opacity: 1; cursor: progress; }
/* EF02 B : « Vos réponses », chaque thème replié sous son nom ; s'ouvre celui d'une question qu'on vient de modifier. */
.bio-platform .bio-recap > summary { list-style: none; cursor: pointer; }
.bio-platform .bio-recap > summary::-webkit-details-marker { display: none; }
.bio-platform .bio-recap > summary h3 { margin: 0; }
.bio-platform .bio-recap__open { display: inline-flex; align-items: center; min-height: 48px; color: var(--bio-color-accent); text-decoration: underline; text-underline-offset: 3px; }
.bio-platform .bio-recap__open::after { content: "\00a0▾"; content: "\00a0▾" / ""; }
.bio-platform .bio-recap[open] .bio-recap__open::after { content: "\00a0▴"; content: "\00a0▴" / ""; }
/* EF09 A : « Vouliez-vous dire … ? » sous le champ de l'adresse, au début du questionnaire. Corrections au rendu (DEC-H051) :
   encadré de la largeur du champ (32rem, règle .bio-question--email), « Oui, corriger » en bouton secondaire à la largeur de son
   texte : le seul bouton principal de l'écran reste « Enregistrer et continuer ». */
.bio-platform .bio-notice.bio-email-suggestion { margin: var(--bio-space-s) 0 var(--bio-space-m); max-width: 32rem; }
.bio-platform .bio-email-suggestion .bio-actions { flex-direction: column; align-items: flex-start; }
.bio-platform .bio-email-suggestion .bio-button { width: auto; }
/* PR02 A : page finale, annotation manuscrite au-dessus du titre (classe de l'accueil du questionnaire) et dessin de la case
   cochée : sous le titre sur téléphone et tablette, à droite de l'encadré sur grand écran. */
.bio-platform .bio-done .bio-welcome__annot { margin: var(--bio-space-m) 0 var(--bio-space-s); } /* air au-dessus, comme les autres annotations (corrections au rendu) */
.bio-platform .bio-done__col { max-width: 12.5rem; margin: var(--bio-space-m) auto; }
@media (min-width: 72rem) {
  .bio-platform .bio-card.bio-done { position: relative; }
  .bio-platform .bio-done__col { position: absolute; top: 2.5rem; left: calc(100% + 3.75rem); width: 16.25rem; max-width: none; margin: 0; }
}
/* DA08 A : messages et paragraphes des cartes à la largeur des encadrés du site (780 px), plus de lignes de 130 signes. */
.bio-platform .bio-notice,
.bio-platform .bio-card > p { max-width: var(--bio-box-width); }
/* PR09 A : « Mes biographes », biographe sans photo : médaillon à l'initiale de son prénom, à l'encre bleue. */
.bio-platform .bio-profile__initial { display: grid; place-items: center; box-sizing: border-box; background: var(--bio-color-selected); color: var(--bio-color-accent); font-family: var(--bio-font-heading); font-size: 2.5rem; line-height: 1; }

/* DEC-H059 (choix de François du 28/10/2026), fin du parcours. */
/* ATT2 : encadré « En attendant » de la carte du courriel, bleu pâle, avec le seul bouton plein de la page. */
.bio-platform .bio-sent-more { max-width: var(--bio-reading-width); margin: var(--bio-space-m) 0 var(--bio-space-l); padding: var(--bio-space-m) 1.25rem; border-radius: var(--bio-radius); background: var(--bio-color-selected); }
.bio-platform .bio-sent-more p { margin: 0 0 var(--bio-space-m); }
.bio-platform .bio-sent-more p:last-child { margin: 0; }
/* ATT1 et ATT3 : pastille « Facultatif » après le titre ; question ouverte en grand, carte bordée de bleu. */
.bio-platform .bio-optional__badge { margin: 0 0 0 0.25rem; vertical-align: middle; font-family: var(--bio-font-body); font-size: 1rem; }
.bio-platform .bio-optional__title:focus { outline: none; }
.bio-platform .bio-optional__featured { margin: var(--bio-space-m) 0 var(--bio-space-l); padding: var(--bio-space-m) 1.25rem; border: 2px solid var(--bio-color-accent); border-radius: var(--bio-radius); background: var(--bio-color-surface); box-shadow: var(--bio-shadow-card); }
.bio-platform .bio-optional__featured .bio-question__title { font-size: 1.5rem; line-height: 1.2; }
.bio-platform .bio-optional__position { margin: 0 0 var(--bio-space-s); color: var(--bio-color-muted); font-weight: 700; }
.bio-platform .bio-optional__other { margin: var(--bio-space-m) 0 0; }
.bio-platform .bio-optional__other a { display: inline-flex; align-items: center; min-height: 48px; color: var(--bio-color-accent); font-weight: 700; }
.bio-platform .bio-optional__others { margin: var(--bio-space-l) 0 var(--bio-space-s); font-size: 1.25rem; }
/* FIN2 : page finale bordée de vert (plus aucune action attendue) et grand sceau « Terminé ». Vert de réussite de la charte (6,5:1
   sur blanc), halo vert pâle ; le mot reste écrit, la couleur n'est jamais seule. */
.bio-platform .bio-card--success { border: 2px solid var(--bio-color-success); }
.bio-platform .bio-done__seal { display: flex; flex-direction: column; align-items: center; gap: var(--bio-space-s); margin: var(--bio-space-m) auto var(--bio-space-l); text-align: center; }
.bio-platform .bio-done__mark { position: relative; display: block; width: 88px; height: 88px; border-radius: 50%; background: var(--bio-color-success); box-shadow: 0 0 0 10px color-mix(in srgb, var(--bio-color-success) 12%, var(--bio-color-surface)); }
.bio-platform .bio-done__mark::after { content: ""; position: absolute; left: 31px; top: 18px; width: 22px; height: 40px; border: solid var(--bio-color-accent-text); border-width: 0 7px 7px 0; border-radius: 2px; transform: rotate(45deg); }
.bio-platform .bio-done__word { color: var(--bio-color-success); font-size: 1.25rem; font-weight: 700; }
/* FIN3 : étapes faites, coche verte et pastille « Fait » ; les étapes à venir gardent leur numéro jaune. */
.bio-platform ol.bio-next li.bio-next__done::before { background: var(--bio-color-success); color: var(--bio-color-accent-text); }
.bio-platform .bio-badge--success { margin: 0 0 0 0.35rem; padding: 0.05rem 0.6rem; background: color-mix(in srgb, var(--bio-color-success) 12%, var(--bio-color-surface)); color: var(--bio-color-success); font-size: 1.125rem; vertical-align: baseline; }
/* LIEN1 : fenêtre des pages légales par-dessus le questionnaire (assets/questionnaire.js). L'annonce « s'ouvre par-dessus la
   page » n'existe que si le script peut ouvrir la fenêtre ; elle est lue, pas montrée. */
.bio-platform .bio-dialog-hint { display: none; }
.bio-dialog-ready .bio-platform .bio-dialog-hint { display: inline; position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.bio-dialog-open { overflow: hidden; }
.bio-platform .bio-dialog { box-sizing: border-box; width: min(48rem, calc(100% - 2rem)); max-height: calc(100% - 3rem); margin: auto; padding: 0; border: 2px solid var(--bio-color-accent); border-radius: var(--bio-radius); background: var(--bio-color-surface); color: var(--bio-color-text); font-size: var(--bio-font-size); line-height: 1.55; }
.bio-platform .bio-dialog[open] { display: flex; flex-direction: column; }
.bio-platform .bio-dialog::backdrop { background: color-mix(in srgb, var(--bio-color-text) 55%, transparent); }
.bio-platform .bio-dialog__head { display: flex; align-items: center; justify-content: space-between; gap: var(--bio-space-m); padding: var(--bio-space-m) 1.25rem; border-bottom: 1px solid var(--bio-color-border); }
.bio-platform .bio-dialog__title { margin: 0; font-size: 1.5rem; line-height: 1.2; }
.bio-platform .bio-dialog__title:focus-visible { outline: 3px solid var(--bio-color-focus); outline-offset: 3px; }
.bio-platform .bio-dialog__title { flex: 1 1 auto; min-width: 0; }
.bio-platform .bio-dialog__close { flex: none; width: auto; min-height: 48px; }
.bio-platform .bio-dialog__body { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; padding: var(--bio-space-m) 1.25rem; }
.bio-platform .bio-dialog__body :is(h2, h3, h4) { margin: var(--bio-space-l) 0 var(--bio-space-s); font-size: 1.25rem; line-height: 1.25; }
.bio-platform .bio-dialog__body > :first-child { margin-top: 0; }
.bio-platform .bio-dialog__body :is(p, li) { max-width: var(--bio-reading-width); }
.bio-platform .bio-dialog__foot { padding: var(--bio-space-m) 1.25rem; border-top: 1px solid var(--bio-color-border); }
@media (max-width: 48rem) {
  .bio-platform .bio-dialog { width: 100%; max-width: none; height: 100%; max-height: none; border: 0; border-radius: 0; }
  .bio-platform .bio-dialog__head, .bio-platform .bio-dialog__body, .bio-platform .bio-dialog__foot { padding-left: var(--bio-space-m); padding-right: var(--bio-space-m); }
  .bio-platform .bio-dialog__foot .bio-button { width: 100%; justify-content: center; }
  .bio-platform .bio-dialog__title { font-size: 1.375rem; }
  .bio-platform .bio-dialog__close { padding-left: var(--bio-space-m); padding-right: var(--bio-space-m); }
}
