/* NOVAFREE — CSS charte cocon · v4.9.4 (13.07.2026 matin — correctif du correctif : la règle cover
   redéclarait la taille du fil et écrasait le .52rem mobile ; doublon retiré, cascade saine.
   v4.9.3 (fil .52rem mobile · CORRECTIF carte
   formulaire : ré-encrage local (la v4.3 faisait fuir le texte clair des bandes dans la carte blanche).
   v4.9.2 (fil d'Ariane DANS la bande, TOUTES tailles
   (snippet v3.4 l'injecte 1er enfant) : fil transparent sans marge, bande pad-top 1.05rem (Patrice).
   v4.9 (HERO COVER v2 : UNE section, TOUTES tailles,
   iOS compris — le H1 vit DANS le hero (pack v2.6 + modèle « Page cocon NovaFree »), plus aucun
   background fixed, photo en défilement normal. Rythme : 5 écarts égaux sur --nf-hero-gap.
   Le fil d'Ariane devient une barre solide prune-noir centrée au-dessus de la photo.
   v4.8 (HERO COVER test v6 : photo
   duotone plein cadre + composition centrée. Mécanisme GÉNÉRIQUE activé PAR PAGE : classe
   nf-hero-cover sur la bande hero + variable --nf-hero-img fournie par le pack. Desktop ≥981px ;
   le mobile garde le hero empilé v4.7. Bloc complet en fin de fichier, molettes duotone incluses.
   v4.7 (2 retouches Patrice : H1 en césure naturelle
   (équilibrage forcé retiré) · accroche : padding-bottom:0 (le padding Divi des <p> doublait l'écart
   vers les boutons — le rythme --nf-hero-gap redevient exact).
   v4.6 (H1 : alignement RÉTABLI, 2 lignes équilibrées
   à la taille validée (la ligne unique à cette taille est physiquement impossible dans le cadre 1920 :
   1630px nécessaires, 1490 disponibles — option « ligne unique alignée » documentée dans la règle,
   taille ~2.05rem, à activer uniquement sur GO Patrice). Rythme hero unifié conservé (--nf-hero-gap).
   v4.5 (CORRECTIF : la taille du H1 est RÉTABLIE
   (le changement v4.4 n'était pas demandé) ; ligne unique obtenue par libération du padding droit,
   pas par la taille · rythme du hero UNIFIÉ : un seul écart --nf-hero-gap (1.4rem) entre badge,
   promesse, boutons (entre eux compris) et coches — la molette est dans :root.
   v4.4 (finitions hero, demandes Patrice sur rendu :
   H1 sur UNE ligne (balance retiré, clamp capé ~2.25rem — les titres > ~55 car. casseront naturellement) ·
   +air fil→titre (1.8rem) · badge, promesse (1.1rem/600) et boutons du hero aérés (gap .9rem) ·
   encart À-lire : blanc bordé comme les cartes-étapes (le voilé quitte cet encart).
   v4.3 (décisions Patrice : BANDES = PRUNE DU HERO
   (texte clair, titres blancs, liens blancs à trait rose, + FAQ rose ; titres de la bande CTA en
   encre car posés sur le haut rose du dégradé) · RAYURES fidèles au site : motif AU-DESSUS d'un
   dégradé OPAQUE #e1b5ce→#5c475e (l'exact de la section Contact du site). ⚠ à réévaluer au Lot 1 :
   la zone d'accent #413142, désormais proche du prune standard. v4.2 (CORRECTIF ciblage : par CONTENU
   (:has(.nf-zone-form)) et non plus par position (:last-of-type, qui visait la FAQ — preuve DOM :
   la bande formulaire est la 8e sur 10, la FAQ est la dernière). v4.1 :
   plus aucun balisage SVG en clair (le Customizer WP le refuse) ; règle du dégradé AUTONOME (motif
   en dur, zéro variable intermédiaire) ; bordures fines des cartes-étapes et de la capsule.
   COLLAGE : REMPLACEMENT TOTAL du CSS additionnel par ce fichier + purge WP Rocket.
   ══ DOCTRINE v4.0 (analyse du code réel : accueil, Ergonova, Econova) ══
   · HERO : bande PRUNE #5c475e (parenté directe avec les heros des pages services) — fil + titre + bande soudés.
   · ZONES du corps : blanc (lecture) ↔ prune-voilé #EFE9F1 (alternance douce, remplace le gris) ;
     UNE zone d'accent sombre #413142 max par page (preuve/autorité), JAMAIS adjacente à un autre foncé ;
     zone CTA finale : dégradé rose→prune + rayures du site (SVG Divi 11×11) + carte blanche.
   · RAYURES : UNIQUEMENT sur la zone CTA finale (décision 12.07) — jamais derrière du texte de lecture.
   · BOUTONS (valeurs exactes du site) : radius 3px (défaut Divi, aucune règle custom au code) ;
     liens-boutons (a) = libellé souligné rose (même trait que les liens : tout ce qui navigue porte le trait) ;
     action pleine (CTA, Envoyer) = prune plein, SANS trait. Sur bande sombre : plein rose/encre, outline blanc.
   · IMAGES & CARTES : angles droits (0 — le site n'a aucun radius), ombres réduites au voile.
   · TITRES : H1 hero remonté (clamp → ~3rem, le site titre à 40-52px) ; H2 en 700.
   · Interdits : deux foncés adjacents · rayures hors CTA · offset décoratif hero (supprimé v4.0).
   v3.6 (10.07.2026 — chevrons du carrousel cliquables (scrollBy), zéro /zéro PR, visibles en reduced-motion seulement)
   Intégration : Patrice Défago — PATDEF-webdesign · https://patricedefago.com · https://patdef-webdesign.ch
   Divi : si un style ne prend pas, préfixer le sélecteur par #main-content . Purger WP Rocket après collage.
   Coller dans Apparence → Personnaliser → CSS additionnel (ou child-theme).
   Palette : rose #e1b5ce (fonds/accents SEULEMENT — jamais en texte sur fond clair, contraste insuffisant)
             anthracite #31383d (texte) · prune #5c475e (liens/CTA) · gris clair #f5f5f7 (fonds). */
/* ---- RÔLES (Guide Maître Couleur, P4/7.2/P8 — v2.1) ----
   primaire (structure, zones foncées) = anthracite · accent (agir, attirer, ≤10 %) = rose ·
   interactif foncé (liens, focus — l'accent mi-ton s'assombrit pour le texte, 6.4) = prune ·
   surface = #fff · surface-1 (alternance claire) = fond · encre = anthracite (jamais #000).
   Paires on-color déclarées : sur primaire → on-dark (principal) / on-dark-2 (atténué, teinté
   prune — jamais de gris pur, 5.3) ; bordures = encre teintée ~14 % (P4). Un texte ne se pose
   que sur un fond dont il est l'on-color déclaré (7.2). */
:root{--nf-rose:#e1b5ce;--nf-anthracite:#31383d;--nf-fond:#EFE9F1;--nf-prune:#5c475e;--nf-prune-h:#4a3950;
  --nf-on-dark:#f5f5f7;--nf-on-dark-2:#cfc8d2;--nf-bordure:#d8d5da;
  --nf-accent-dark:#413142; /* v4.0 : la section sombre des pages principales — 1 max/page */}
.entry-content{color:var(--nf-anthracite);}
/* ---- Liens dans le contenu (ta note « design des liens ») ---- */
.entry-content a:not(.wp-block-button__link){color:var(--nf-prune);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;text-decoration-color:var(--nf-rose);transition:background .15s,color .15s;}
.entry-content a:not(.wp-block-button__link):hover{background:var(--nf-rose);color:var(--nf-anthracite);text-decoration-color:var(--nf-anthracite);border-radius:2px;}
.entry-content a:focus-visible{outline:3px solid var(--nf-prune);outline-offset:2px;border-radius:2px;}
.entry-content a[target="_blank"]::after{content:" \2197\FE0E";content:" \2197\FE0E" / " (nouvel onglet)";font-size:.8em;} /* v4.9.15 : syntaxe alt du generated content (CSS GC L3) — la flèche devient un avertissement ANNONCÉ aux lecteurs d'écran (H83/G201) ; 1re déclaration = fallback anciens navigateurs (une valeur invalide annule TOUTE la déclaration, la cascade protège) ; v4.9.14 conservée : \FE0E force la forme TEXTE (iOS rendait ↗ en emoji) */
/* ---- Boutons — v4.0 : radius 3px (valeur exacte du site, défaut Divi) · grammaire du trait ---- */
.wp-block-button__link{background:var(--nf-prune);color:#fff;border-radius:3px;padding:.8em 1.6em;font-weight:600;font-family:Montserrat,system-ui,sans-serif;text-decoration:none;min-height:44px;}
.wp-block-button__link:hover{background:var(--nf-rose);color:var(--nf-anthracite);}
.is-style-outline .wp-block-button__link{background:transparent;color:var(--nf-prune);border:2px solid var(--nf-prune);
  text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;text-decoration-color:var(--nf-rose);}
.is-style-outline .wp-block-button__link:hover{background:var(--nf-fond);text-decoration-color:var(--nf-prune);}
/* ---- Capsule (réponse 40-60 mots) — v4.0 : angles droits (le site n'a aucun radius) ---- */
.nf-capsule{background:#fff;border-left:5px solid var(--nf-prune);border-radius:0;padding:1rem 1.25rem;margin:1.25rem 0;box-shadow:0 1px 3px rgba(49,56,61,.06);}
.nf-capsule p{margin:0;font-size:1.02em;}
/* ---- Boîte CTA ---- */
.nf-cta-box{background:var(--nf-fond);border:1px solid var(--nf-rose);border-radius:0;padding:1.5rem;text-align:center;margin:2rem 0;}
.nf-cta-box h3{margin-top:0;font-family:Montserrat,sans-serif;}
.nf-cta-tel{display:inline-block;margin-top:.6rem;font-weight:600;}
/* ---- À lire aussi (sœurs) ---- */
.nf-alire{background:#fff;border:1px solid var(--nf-bordure);border-radius:0;padding:1.1rem 1.4rem;margin:2rem 0;}
.nf-alire ul{margin:.4rem 0 0;padding-left:1.1rem;}
.nf-alire li{margin:.35rem 0;}
/* ---- Plan 3 étapes ---- */
.nf-steps{counter-reset:nf;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));list-style:none;padding:0;margin:1.5rem 0;}
.nf-steps li{counter-increment:nf;background:#fff;border-radius:0;padding:1.25rem;box-shadow:0 1px 3px rgba(49,56,61,.06);}
.nf-steps li::before{content:counter(nf);display:block;font:700 2rem Montserrat,sans-serif;color:var(--nf-prune);margin-bottom:.35rem;}
/* ---- FAQ (details/summary) ---- */
.nf-faq details{border-bottom:1px solid var(--nf-rose);padding:.7rem 0;}
.nf-faq summary{cursor:pointer;font-weight:600;list-style:none;position:relative;padding-right:1.6rem;}
.nf-faq summary::after{content:"+";position:absolute;right:.2rem;color:var(--nf-prune);font-weight:700;}
.nf-faq details[open] summary::after{content:"–";}
/* ---- Badges & bandeau autorité ---- */
.nf-badges{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:.8rem 0;}
.nf-badges li{background:var(--nf-fond);border:1px solid var(--nf-rose);border-radius:3px;padding:.25rem .8rem;font-size:.85em;}
.nf-topbar{background:var(--nf-anthracite);color:#fff;font-size:.85em;padding:.45rem 1rem;text-align:center;}
.nf-topbar a{color:var(--nf-rose);}
/* ---- Tableaux, figures, sticky mobile ---- */
.entry-content .wp-block-table{overflow-x:auto;}
.entry-content table th{background:var(--nf-fond);}
figcaption{color:var(--nf-anthracite);opacity:.75;font-size:.85em;}
@media(max-width:781px){.nf-sticky{position:fixed;bottom:0;left:0;right:0;background:var(--nf-prune);padding:.5rem;display:flex;gap:.5rem;justify-content:center;z-index:99;}
.nf-sticky .wp-block-button__link{background:#fff;color:var(--nf-prune);}}


/* ===== v1.1 — correctifs constatés au pilote (09.07) ===== */
/* NF-TEL-STICKY : réellement fixé en bas sur mobile, MASQUÉ dès 782px (bug vu par Patrice : visible >781) */
.nf-sticky{position:fixed !important;left:0;right:0;bottom:0;z-index:99999;background:var(--nf-fond);box-shadow:0 -2px 10px rgba(49,56,61,.15);padding:.5rem .75rem;margin:0}
.nf-sticky .wp-block-buttons{justify-content:center;gap:.5rem;margin:0;flex-wrap:nowrap}
.nf-sticky .wp-block-button__link{padding:.55em 1em;font-size:.95rem}
/* v1.2 — ciblage par CAPACITÉ, pas par largeur (question tablettes, Patrice 09.07) :
   la barre suit le POUCE — visible sur tout écran TACTILE (téléphones ET toutes les tablettes,
   portrait comme paysage), masquée dès qu'une souris précise existe (desktop/laptop).
   Garde-fou : très grands écrans, même tactiles. */
@media (hover: hover) and (pointer: fine){.nf-sticky{display:none !important}}
@media (min-width:1280px){.nf-sticky{display:none !important}}
/* v1.3 — fond des boutons de la barre FORCÉ (bug vu par Patrice : >782 px, un style desktop
   Divi/Gutenberg blanchissait le fond) : la barre impose ses couleurs sur tous les écrans. */
.nf-sticky .wp-block-button__link{background:#5c475e !important;color:#f5f5f7 !important;border:none !important}
.nf-sticky .wp-block-button__link:hover{background:#31383d !important;color:#f5f5f7 !important}
/* Fil d'Ariane (injecté par le snippet v2.1) */
.nf-breadcrumb{font-size:.85rem;color:#5c475e;margin:0 0 1.25rem;line-height:1.5}
.nf-breadcrumb a{color:#5c475e;text-decoration:none;border-bottom:1px solid #e1b5ce}
.nf-breadcrumb a:hover{border-bottom-color:#5c475e}


/* ===== v1.4 — cadre de site (fourni par Patrice, 09.07) =====
   Site plafonné à 1920 px, centré au-delà avec un liseré. Notes de revue :
   - liseré en anthracite charte #31383d (acté 09.07) ;
   - overflow-x:hidden masque tout débordement horizontal du site (nos tableaux scrollent dans
     leur propre conteneur, non affectés ; la barre .nf-sticky est en position:fixed ET masquée
     ≥1280 px par le garde-fou v1.2 → jamais visible au-delà du cadre : cohérent). */
html {
    max-width: 1920px;
    overflow-x: hidden;
    min-width: 320px;
}
@media only screen and (min-width: 1920px) {
    html {
        border: 1px solid #31383d;
        margin: 0 auto;
    }
}


/* ===== v1.6 — barre sticky petits écrans, DURCIE (capture Patrice : le numéro se cassait
   en deux lignes, Divi écrasait la largeur) : nowrap partout + largeur forcée à l'empilement. */
.nf-sticky .wp-block-button__link{white-space:nowrap}
@media (max-width: 375px){
  .nf-sticky .wp-block-buttons{flex-direction:column;align-items:stretch;gap:.35rem}
  .nf-sticky .wp-block-button{width:100% !important;flex:1 1 100% !important;margin:0 !important}
  .nf-sticky .wp-block-button__link{display:block;width:100% !important;text-align:center;font-size:.9rem;padding:.5em .5em}
}


/* ===== v1.8 — bandeau cookies CookieYes aux couleurs de la charte (code Patrice, 09.07) =====
   Sélecteurs d'origine respectés tels quels. Correspondances demandées : #A08757 → prune #5c475e ·
   #A09C95 (case décochée) → rose #e1b5ce · cochée → prune. NB (informatif) : input[type="checkbox"]
   est global, comme dans l'original — il colore toutes les cases du site. */
.cky-btn-revisit-wrapper, .cky-btn-reject {
  background-color:#5c475e!important;
}
.cky-btn-reject, .cky-btn-preferences, .cky-btn-accept {
  background-color:#5c475e!important;
  border-color:#5c475e!important;
}
.cky-btn-customize {
  color:#5c475e!important;
  border-color:#5c475e!important;
}
input[type="checkbox"] {
  background: #e1b5ce!important;
}
input[type="checkbox"]:checked {
  background-color:#5c475e!important;
  border-color:#5c475e!important;
}

/* Variante Complianz (.cmplz-*) — inactive, simple référence si les deux plugins cohabitent :
.cmplz-cookiebanner .cmplz-btn{background-color:#5c475e!important;border-color:#5c475e!important;color:#f5f5f7!important}
.cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences{color:#5c475e!important;background:transparent!important}
*/


/* ===== v1.9 — Formulaires Forminator (F-CONTACT 31138 · F-ESSAI 31125), 10.07.2026 =====
   Source unique du style des DEUX formulaires : AUCUN réglage couleur dans le panneau
   Apparence de Forminator (y poser seulement le même preset de base sobre sur les deux).
   Si un élément reste au bleu du plugin : inspecteur → copier sa classe .forminator-… →
   l'ajouter au bloc « progression » ci-dessous (les noms varient selon versions).
   Purger WP Rocket après collage. */

/* Base : Montserrat + encre anthracite partout */
.forminator-custom-form,
.forminator-custom-form .forminator-label,
.forminator-custom-form .forminator-input,
.forminator-custom-form .forminator-textarea,
.forminator-custom-form select,
.forminator-custom-form .forminator-button{font-family:Montserrat,system-ui,sans-serif !important;}
.forminator-custom-form{color:var(--nf-anthracite);}
.forminator-custom-form .forminator-label{color:var(--nf-anthracite) !important;font-weight:600 !important;}

/* Champs : bordure sobre, rayon 8px (= boutons v1.0), focus PRUNE — jamais le bleu plugin */
.forminator-custom-form .forminator-input,
.forminator-custom-form .forminator-textarea,
.forminator-custom-form select.forminator-select,
.forminator-custom-form .forminator-select2 .select2-selection{
  background:#fff !important;border:1px solid var(--nf-bordure) !important;border-radius:3px !important;
  color:var(--nf-anthracite) !important;box-shadow:none;}
.forminator-custom-form .forminator-input:focus,
.forminator-custom-form .forminator-textarea:focus,
.forminator-custom-form select.forminator-select:focus{
  border-color:var(--nf-prune) !important;box-shadow:0 0 0 3px rgba(92,71,94,.18) !important;outline:none;}
.forminator-custom-form ::placeholder{color:var(--nf-anthracite);opacity:.45;}

/* Boutons (Envoyer / Suivant) : mêmes tokens que .wp-block-button__link */
.forminator-custom-form .forminator-button{
  background:var(--nf-prune) !important;color:#fff !important;border:none !important;
  border-radius:3px !important;padding:.8em 1.6em !important;font-weight:600 !important;min-height:44px;}
.forminator-custom-form .forminator-button:hover{background:var(--nf-rose) !important;color:var(--nf-anthracite) !important;}
/* Précédent + « Choisissez un fichier » : variante OUTLINE — un seul geste plein par écran,
   l'œil va au Suivant/Envoyer (hiérarchie CRO) */
.forminator-custom-form .forminator-button-back,
.forminator-custom-form .forminator-button-upload{
  background:transparent !important;color:var(--nf-prune) !important;border:2px solid var(--nf-prune) !important;}
.forminator-custom-form .forminator-button-back:hover,
.forminator-custom-form .forminator-button-upload:hover{background:var(--nf-fond) !important;color:var(--nf-prune) !important;}

/* Progression F-ESSAI (points d'étapes + barre) : prune, plus de bleu plugin.
   ← bloc « progression » : compléter ici avec la classe relevée à l'inspecteur si besoin. */
.forminator-custom-form .forminator-progress-bar span,
.forminator-custom-form .forminator-pagination-progress .forminator-progress,
.forminator-custom-form .forminator-nav-item.forminator-is_active .forminator-nav-dot,
.forminator-custom-form .forminator-step.forminator-is_active,
.forminator-custom-form .forminator-pagination--dots .forminator-is_active{
  background:var(--nf-prune) !important;border-color:var(--nf-prune) !important;color:var(--nf-prune) !important;}

/* Encart renvoi essai (F-CONTACT) : détaché du flux, liseré rose, lien charte bien visible */
.nf-renvoi-essai{background:var(--nf-fond);border-left:5px solid var(--nf-rose);border-radius:0;padding:1rem 1.25rem;margin:.25rem 0 .5rem;}
.nf-renvoi-essai p{margin:.35rem 0;}
.nf-renvoi-essai a{color:var(--nf-prune);font-weight:600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;text-decoration-color:var(--nf-rose);}
.nf-renvoi-essai a:hover{background:var(--nf-rose);color:var(--nf-anthracite);border-radius:2px;}

/* Notes discrètes (mention médicale des 2 formulaires) : entourer le texte du champ HTML
   d'un … — facultatif, 1 min par formulaire */
.forminator-custom-form .nf-note{font-size:.9em;opacity:.8;}

/* NB : la checkbox du consentement est déjà recolorée par la règle GLOBALE v1.8
   input[type="checkbox"] (rose décochée → prune cochée) — rien à ajouter. */


/* ===== v1.9 — Formulaires Forminator (F-CONTACT 31138 · F-ESSAI 31125), 10.07.2026 =====
   Écrite sur le DOM RÉEL des deux formulaires (page de test 1043) — sélecteurs prouvés.
   AUCUN réglage couleur dans le panneau Apparence Forminator (même preset sobre sur les deux).
   Purger WP Rocket après collage. */

/* Base : Montserrat + encre anthracite */
.forminator-ui.forminator-custom-form,
.forminator-ui.forminator-custom-form .forminator-label,
.forminator-ui.forminator-custom-form .forminator-input,
.forminator-ui.forminator-custom-form .forminator-textarea,
.forminator-ui.forminator-custom-form .forminator-button,
.forminator-ui.forminator-custom-form .select2-selection__rendered,
.forminator-ui.forminator-custom-form .forminator-step-label{font-family:Montserrat,system-ui,sans-serif !important;}
.forminator-ui.forminator-custom-form{color:var(--nf-anthracite);}
.forminator-ui.forminator-custom-form .forminator-label{color:var(--nf-anthracite) !important;font-weight:600 !important;}
.forminator-ui.forminator-custom-form .forminator-description{color:var(--nf-anthracite);opacity:.7;font-size:.88em;}

/* Blocs Personne/Poste : titre net + délimitation douce du groupe */
.forminator-ui.forminator-custom-form .forminator-repeater-label{font-size:1.05em;}
.forminator-ui.forminator-custom-form .forminator-grouped-fields{border-left:3px solid var(--nf-rose);padding-left:1rem;margin:.25rem 0 .85rem;}

/* Champs texte / nombre / zone : bordure sobre, rayon 8 (= boutons), focus PRUNE */
.forminator-ui.forminator-custom-form .forminator-input,
.forminator-ui.forminator-custom-form .forminator-textarea{
  background:#fff !important;border:1px solid var(--nf-bordure) !important;border-radius:3px !important;
  color:var(--nf-anthracite) !important;box-shadow:none;}
.forminator-ui.forminator-custom-form .forminator-input:focus,
.forminator-ui.forminator-custom-form .forminator-textarea:focus{
  border-color:var(--nf-prune) !important;box-shadow:0 0 0 3px rgba(92,71,94,.18) !important;outline:none;}
.forminator-ui.forminator-custom-form ::placeholder{color:var(--nf-anthracite);opacity:.45;}

/* Listes : rendues par select2 — le visible est .forminator-select > .select2-selection */
.forminator-ui.forminator-custom-form .forminator-select .select2-selection--single{
  background:#fff !important;border:1px solid var(--nf-bordure) !important;border-radius:3px !important;}
.forminator-ui.forminator-custom-form .forminator-select .select2-selection__rendered{color:var(--nf-anthracite) !important;}
.forminator-ui.forminator-custom-form .forminator-select .select2-selection__placeholder{color:var(--nf-anthracite);opacity:.45;}
.forminator-ui.forminator-custom-form .select2-container--open .select2-selection--single,
.forminator-ui.forminator-custom-form .select2-container--focus .select2-selection--single{
  border-color:var(--nf-prune) !important;box-shadow:0 0 0 3px rgba(92,71,94,.18) !important;}
.forminator-ui.forminator-custom-form .forminator-icon-chevron-down{color:var(--nf-prune);}
/* Menu déroulant select2 (peut se rendre HORS du ) : survol prune, choix courant gris —
   seul Forminator utilise select2 côté public, pas d'effet de bord */
.select2-results__option--highlighted{background:var(--nf-prune) !important;color:#fff !important;}
.select2-results__option[aria-selected="true"],
.select2-results__option--selected{background:var(--nf-fond) !important;color:var(--nf-anthracite) !important;}

/* Boutons Envoyer / Suivant : mêmes tokens que .wp-block-button__link */
.forminator-ui.forminator-custom-form .forminator-button{
  background:var(--nf-prune) !important;color:#fff !important;border:none !important;
  border-radius:3px !important;padding:.8em 1.6em !important;font-weight:600 !important;min-height:44px;}
.forminator-ui.forminator-custom-form .forminator-button:hover{background:var(--nf-rose) !important;color:var(--nf-anthracite) !important;}
/* Précédent + « Choisissez un fichier » + suppression de fichier : OUTLINE — un seul geste
   plein par écran, l'œil va au Suivant/Envoyer */
.forminator-ui.forminator-custom-form .forminator-button-back,
.forminator-ui.forminator-custom-form .forminator-button-upload,
.forminator-ui.forminator-custom-form .forminator-button-delete{
  background:transparent !important;color:var(--nf-prune) !important;border:2px solid var(--nf-prune) !important;}
.forminator-ui.forminator-custom-form .forminator-button-back:hover,
.forminator-ui.forminator-custom-form .forminator-button-upload:hover{background:var(--nf-fond) !important;color:var(--nf-prune) !important;}

/* Progression F-ESSAI — sélecteurs réels : .forminator-pagination-steps > button.forminator-step
   (actif = .forminator-current) > .forminator-step-label / .forminator-step-dot · traits = .forminator-break */
.forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step-dot{background:#fff !important;border:2px solid var(--nf-rose) !important;}
.forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step-label{color:var(--nf-anthracite);opacity:.65;}
.forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step.forminator-current .forminator-step-dot{background:var(--nf-prune) !important;border-color:var(--nf-prune) !important;}
.forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step.forminator-current .forminator-step-label{color:var(--nf-prune);opacity:1;font-weight:600;}
.forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-break{background:var(--nf-rose) !important;opacity:.6;}

/* Case de consentement : Forminator dessine un SPAN (.forminator-checkbox-box) — la règle
   GLOBALE v1.8 input[type=checkbox] ne l'atteint pas, on cible le span */
.forminator-ui.forminator-custom-form .forminator-checkbox .forminator-checkbox-box{background:var(--nf-rose) !important;border-color:var(--nf-rose) !important;}
.forminator-ui.forminator-custom-form .forminator-checkbox input:checked + .forminator-checkbox-box{background:var(--nf-prune) !important;border-color:var(--nf-prune) !important;color:#fff !important;}
.forminator-ui.forminator-custom-form .forminator-checkbox input:focus-visible + .forminator-checkbox-box{outline:3px solid var(--nf-prune);outline-offset:2px;}

/* Liens dans le formulaire (Politique de confidentialité, textes HTML) : style charte */
.forminator-ui.forminator-custom-form .forminator-field a:not(.forminator-button){color:var(--nf-prune);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;text-decoration-color:var(--nf-rose);}
.forminator-ui.forminator-custom-form .forminator-field a:not(.forminator-button):hover{background:var(--nf-rose);color:var(--nf-anthracite);border-radius:2px;}

/* Encart renvoi essai (F-CONTACT) : détaché du flux, liseré rose */
.nf-renvoi-essai{background:var(--nf-fond);border-left:5px solid var(--nf-rose);border-radius:0;padding:1rem 1.25rem;margin:.25rem 0 .5rem;}
.nf-renvoi-essai p{margin:.35rem 0;}
.nf-renvoi-essai a{font-weight:600;}

/* Notes discrètes (mention médicale…) : entourer le texte du champ HTML
   d'un  — facultatif, 1 min par formulaire */
.forminator-ui.forminator-custom-form .nf-note{font-size:.9em;opacity:.8;}


/* ===== v2.0 — Design 109 : zébrage pleine largeur · carte formulaire · fix steps (10.07) =====
   Décisions Patrice 10.07 : alternance blanc / fond sur TOUTE la largeur (réfs sandra-l /
   veutheypaysage), AUCUN arrondi sur les bandes ; carte bordée pour le formulaire ;
   respiration avant le footer. Le full-bleed est borné par le cadre 1920 (v1.4 :
   html overflow-x hidden coupe proprement au liseré). */
:root{--nf-content:1100px;}  /* largeur de contenu Divi — ajuster ici si le thème diffère */

/* Bande pleine largeur — v4.3 (décision Patrice 12.07 soir) : PRUNE DU HERO, texte clair.
   Le voilé #EFE9F1 ne survit que dans les ENCARTS (à-lire, cta-box, badges, th, sticky).
   Anti-carnaval inchangé : jamais deux bandes adjacentes, les zones blanches font l'entre-deux. */
.nf-band{background:var(--nf-prune);color:var(--nf-on-dark);width:100vw;margin-left:calc(50% - 50vw);
  padding:var(--nf-pad-zone) max(calc((100vw - var(--nf-content))/2),1.25rem);}
.nf-band h2,.nf-band h3{color:#fff;}
.nf-band .nf-atenue{color:var(--nf-on-dark-2);}
.nf-band a:not(.wp-block-button__link){color:#fff;text-decoration-color:var(--nf-rose);}
.nf-band a:not(.wp-block-button__link):hover{background:var(--nf-rose);color:var(--nf-anthracite);text-decoration-color:var(--nf-anthracite);}
.nf-band .wp-block-button__link{background:var(--nf-rose) !important;color:var(--nf-anthracite) !important;}
.nf-band .is-style-outline .wp-block-button__link{background:transparent !important;color:#fff !important;border-color:#fff;text-decoration-color:var(--nf-rose);}
.nf-band .nf-faq summary::after{color:var(--nf-rose);}
/* Bande CTA (dégradé) : le titre vit sur le haut ROSE du dégradé → encre foncée */
.entry-content .nf-band:has(.nf-zone-form) h2,
.entry-content .nf-band:has(.nf-zone-form) h3{color:var(--nf-anthracite);}
.nf-band > :first-child{margin-top:0}
.nf-band > :last-child{margin-bottom:0}
/* Variante sombre (hero) — v4.0 : PRUNE (parenté avec les heros des pages services), filet rose */
.nf-band--dark{background:var(--nf-prune);color:var(--nf-on-dark);border-bottom:4px solid var(--nf-rose);}
.nf-band--dark .nf-atenue{color:var(--nf-on-dark-2);}
.nf-band--dark h1,.nf-band--dark h2{color:#fff;}
/* v4.0 — ZONE D'ACCENT sombre (#413142, la section signature des pages principales).
   Doctrine : UNE par page maximum · réservée preuve/autorité (médias, chiffres, avant/après,
   témoignage) · jamais adjacente au hero ni à un autre foncé (une zone claire entre les deux). */
.nf-band--accent{background:var(--nf-accent-dark);color:var(--nf-on-dark);}
.nf-band--accent h2,.nf-band--accent h3{color:#fff;}
.nf-band--accent .nf-atenue{color:var(--nf-on-dark-2);}
.nf-band--accent a:not(.wp-block-button__link){color:#fff;text-decoration-color:var(--nf-rose);}
.nf-band--accent a:not(.wp-block-button__link):hover{background:var(--nf-rose);color:var(--nf-anthracite);}
.nf-band--accent .wp-block-button__link{background:var(--nf-rose) !important;color:var(--nf-anthracite) !important;}
.nf-band--accent .is-style-outline .wp-block-button__link{background:transparent !important;color:#fff !important;border-color:#fff;text-decoration-color:var(--nf-rose);}
/* v4.0 — ZONE CTA FINALE : dégradé signature rose→prune + rayures du site (SEUL emplacement
   autorisé pour le motif — le texte y vit dans la carte blanche .nf-zone-form, jamais nu).
   Classe propre à poser au prochain pack : nf-band--cta. Ciblage v4.2 PAR CONTENU :
   la bande qui CONTIENT la carte formulaire (.nf-zone-form) — exact quelle que soit la
   position dans la page (le :last-of-type v4.0-4.1 désignait en réalité la FAQ : corrigé). */
.nf-band--cta,
.entry-content .nf-band:has(.nf-zone-form){
  background-color:var(--nf-prune);
  background-image:url("data:image/svg+xml;base64,PHN2ZyAgZmlsbD0icmdiYSgwLDAsMCwwLjIpIiBoZWlnaHQ9IjExcHgiIHdpZHRoPSIxMXB4IiB2aWV3Qm94PSIwIDAgMTEgMTEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNDEsMCwwLDEuNDFWMFpNMTEsMEg5LjU5TDAsOS41OVYxMUgxLjQxTDExLDEuNDFabTAsOS41OUw5LjU5LDExSDExWiIvPjwvc3ZnPg=="),linear-gradient(180deg,#e1b5ce 0%,#5c475e 100%);
  background-size:14px 14px,auto;}
/* Respiration avant le footer : à poser sur la DERNIÈRE bande de la page */
.nf-band--last{margin-bottom:0;}  /* v2.7 : la respiration du matin est retirée, le rythme des zones suffit — la bande touche le footer */

/* Fix doublon de numéros des étapes (Divi impose son list-style au-dessus du ::before charte) */
.entry-content ol.nf-steps{list-style:none !important;padding-left:0 !important;}
.entry-content ol.nf-steps li{list-style:none !important;}
.entry-content ol.nf-steps li::marker{content:"";}

/* Carte formulaire (à poser en className "nf-zone-form" sur le Groupe contenant
   réassurance + shortcode) — vit DANS une bande grise : carte blanche, bordure rose */
.nf-zone-form{background:#fff;border:1px solid var(--nf-rose);border-radius:0;
  padding:1.75rem;box-shadow:0 2px 10px rgba(49,56,61,.07);max-width:860px;margin:1.5rem auto 0;}


/* ===== v2.8 — Fil d'Ariane des pages hero : injecté AVANT le titre par le snippet v3.3 =====
   (remplace la fusion in-content v2.1b et la bascule v2.6, retirées) — le div .nf-fil-hero vit
   HORS du container Divi : déjà pleine largeur, on aligne seulement son texte sur le contenu. */
.nf-fil-hero{background:var(--nf-prune);color:var(--nf-on-dark-2);font-size:.62rem;margin:0;
  padding:1.05rem max(calc((100vw - var(--nf-content))/2),1.25rem) 0;}
.nf-fil-hero a{color:var(--nf-on-dark-2);border-bottom:1px solid var(--nf-rose);}
.nf-fil-hero a:hover{color:#fff;border-bottom-color:#fff;}


/* ===== v2.2 — Hero en markup Gutenberg (pack 109 v1.1) =====
   Règle de ZONE (Guide Couleur, table P8 : « en-tête foncé : CTA = accent ») :
   tout bouton dans une bande sombre devient accent rose/encre, hover inversé blanc/prune. */
.nf-band--dark .wp-block-button__link{background:var(--nf-rose) !important;color:var(--nf-anthracite) !important;}
.nf-band--dark .wp-block-button__link:hover{background:#fff !important;color:var(--nf-prune) !important;}
/* Média du hero — v4.0 : offset décoratif SUPPRIMÉ (décision Patrice) · angles droits · ombre voile */
.nf-hero-media{position:relative;}
.nf-hero-media img{position:relative;display:block;width:100%;height:auto;border-radius:0;box-shadow:0 2px 8px rgba(0,0,0,.18);}
/* v4.4 · Promesse du hero : plus présente (demande Patrice) */
.nf-band--dark p.nf-atenue:not(.nf-mini){font-size:1.1rem;font-weight:600;line-height:1.65;margin-bottom:var(--nf-hero-gap);padding-bottom:0;}  /* v4.7 : le padding-bottom Divi des <p> doublait l'écart */
/* Réassurance compacte sous le CTA */
.nf-mini{font-size:.86rem;}
.nf-band--dark h1{margin-bottom:1rem;}


/* ===== v2.3 — UN SEUL H1 : le titre Divi natif DEVIENT le titre du hero (10.07) =====
   Remplace la v2.2b (rejetée : H1 dupliqué au DOM). En Gutenberg sous Divi le titre se rend
   avant .entry-content ; sur toute page portant une bande sombre, on le peint en bande
   primaire full-bleed — il fusionne avec le fil (dessous, comme sur les 108 autres pages)
   puis la bande hero. Aucun H1 dans le markup de ces pages (lint : META h1: theme). */
body:has(.entry-content .nf-band--dark) #main-content .container{padding-top:0 !important;}
body:has(.entry-content .nf-band--dark) #main-content h1.entry-title{
  background:var(--nf-prune);color:#fff;
  width:100vw;margin:0 0 0 calc(50% - 50vw);
  padding:2.5rem max(calc((100vw - var(--nf-content))/2),1.25rem) 0;
  font-size:clamp(1.7rem,3.2vw,2.6rem);font-weight:800;line-height:1.18;}


/* ===== v2.4 — Revue du rendu réel (5 points Patrice, 10.07) ===== */
:root{--nf-pad-zone:3.5rem;--nf-hero-gap:1.4rem;}  /* v4.5 : rythme des zones + rythme UNIQUE de la colonne hero */
/* 2 · Titre de hero : lignes équilibrées, plafond réduit — il s'étale moins.
   (le H1 porte le fond de bande : pas de max-width possible sans rétrécir l'anthracite ;
   pour décaler l'alignement gauche global : ajuster --nf-content) */
body:has(.entry-content .nf-band--dark) #main-content h1.entry-title{
  font-size:clamp(1.9rem,3.4vw,3rem);}  /* v4.7 : équilibrage forcé retiré (Patrice) — césure naturelle */
  /* v4.6 : ALIGNEMENT RÉTABLI (le padding droit libéré en v4.5 faisait déborder le titre sans
     obtenir la ligne unique : 55 car. à 3rem ≈ 1630px > 1490px disponibles dans le cadre 1920).
     À cette taille, ce titre tient sur 2 lignes équilibrées — c'est le rendu v4.3 validé.
     OPTION B documentée (ligne unique ALIGNÉE) : remplacer le font-size ci-dessus par
     clamp(1.5rem,2vw,2.05rem) — décision Patrice, ne pas activer sans son GO. */
/* 3 · CTA sur une ligne (relâché sous 480 px pour ne jamais déborder) */
.nf-band--dark .wp-block-button__link{white-space:nowrap;}
@media(max-width:480px){.nf-band--dark .wp-block-button__link{font-size:.9rem;padding:.7em 1.1em !important;}}
@media(max-width:360px){.nf-band--dark .wp-block-button__link{font-size:.8rem;padding:.65em .9em !important;}}
/* 4 · Zones blanches : même respiration que les bandes — rythme UNIQUE */
.nf-zone{background:#fff;width:100vw;margin-left:calc(50% - 50vw);
  padding:var(--nf-pad-zone) max(calc((100vw - var(--nf-content))/2),1.25rem);}
.nf-zone > :first-child{margin-top:0}
.nf-zone > :last-child{margin-bottom:0}


/* ===== v2.5 — Hero : la maquette (capture 15 h 57) SANS toucher au DOM (10.07) =====
   Le titre reste l'élément Divi natif (H1 unique) : on le CONFINE à gauche par un
   padding-droit calculé (largeur image + gouttière), et l'IMAGE REMONTE en marge négative
   pour chevaucher la zone titre → visuellement : bloc texte à gauche, image à droite
   centrée sur la hauteur totale. Desktop ≥981 px seulement ; mobile : empilement normal. */

/* v3.2 (option B) : le titre n'est plus confiné — pleine largeur, 2 lignes équilibrées
   (équilibrage retiré en v4.7 : césure naturelle) ; l'image se centre NATIVEMENT sur la grille (align center Gutenberg),
   face au bloc badge/promesse/CTA/coches : exact à tout viewport, aucune variable à régler. */
/* Moins d'espace : la couture titre → fil → bande se resserre */
body:has(.entry-content .nf-band--dark) #main-content h1.entry-title{padding-top:1.8rem;padding-bottom:.15rem;}
.entry-content > .nf-band--dark:first-child{padding-top:1.4rem;}
/* Preuve sociale : badge sur surface dérivée (blanc token à 8 % = container-on-dark),
   liseré accent, médias en blanc */
.nf-hero-preuve{display:inline-block;background:rgba(255,255,255,.08);border-left:3px solid var(--nf-rose);
  padding:.5rem 1rem;border-radius:0;margin-bottom:var(--nf-hero-gap);}
.nf-hero-preuve strong{color:#fff;font-weight:600;}
/* Coches de garantie en accent */
.nf-ok{color:var(--nf-rose);font-weight:800;}


/* ===== v2.6 — Retours rendu 16 h 12 (10.07) ===== */
/* 7 · Plus d'air sous le bouton du hero */
.nf-band--dark .wp-block-buttons{gap:var(--nf-hero-gap);margin-top:0;margin-bottom:var(--nf-hero-gap);}
/* 8 · (bascule v2.6 retirée — le fil des pages hero est visible au-dessus du titre, v2.8) */


/* ===== v2.7 — Retours 16 h 48 (10.07) ===== */
/* 2 · Footer : plus d'espace blanc sous la dernière bande (symétrique du padding-top v2.3) */
body:has(.entry-content .nf-band--dark) #main-content .container{padding-bottom:0 !important;}
body:has(.entry-content .nf-band--dark) .entry-content > :last-child{margin-bottom:0;}
/* 4 · Marquee logos (sous le hero) — CSS pur : boucle infinie (série ×2 dans le markup),
   pause au survol, reduced-motion = grille statique ; grayscale, couleur au survol */
.nf-logos{overflow:hidden;padding:1.7rem max(calc((100vw - var(--nf-content))/2),1.25rem) .3rem;}
.nf-logos__label{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--nf-anthracite);opacity:.55;margin:0 0 1rem;text-align:center;}
.nf-logos__track{display:flex;gap:3.5rem;align-items:center;width:max-content;animation:nf-defile 32s linear infinite;}
.nf-logos:hover .nf-logos__track{animation-play-state:paused;}
.nf-logos__track img{height:60px;width:auto;filter:grayscale(1);opacity:.7;transition:filter .2s,opacity .2s;}
.nf-logos__track img:hover{filter:none;opacity:1;}
@keyframes nf-defile{to{transform:translateX(-50%);}}
@media(prefers-reduced-motion:reduce){
  /* v3.1 : le SCROLLER est le track (le label reste fixe, la page ne bouge plus) ;
     la 2e série (boucle) est masquée : 9 logos à balayer, pas 18.
     v3.3 : affordance — fondu de bord + chevron accent + scrollbar fine : on VOIT
     qu'il y a une suite et qu'elle se balaie au doigt (le fondu laisse passer le drag). */
  .nf-logos{position:relative;}
  /* v3.6 : les chevrons deviennent de VRAIS  (markup du bloc logos) qui scrollent
     le track — un button n'est pas un lien : zéro PageRank dépensé. Visibles ici seulement
     (en mode animé, le défilement se fait tout seul). */
  .nf-logos .nf-logos__nav{display:flex;}
  .nf-logos__track{animation:none;width:auto;max-width:100%;overflow-x:auto;
    -webkit-overflow-scrolling:touch;padding-bottom:.5rem;
    scrollbar-color:var(--nf-rose) transparent;scrollbar-width:thin;}
  .nf-logos__track::-webkit-scrollbar{height:4px;}
  .nf-logos__track::-webkit-scrollbar-thumb{background:var(--nf-rose);border-radius:2px;}
  .nf-logos__track img[aria-hidden="true"]{display:none;}}


/* ===== v3.0 — Revue 14 points (10.07 soir) ===== */
/* 5-6 · sections centrées (classe posée par le pack) */
.nf-center{text-align:center;}
/* 10-11 · hiérarchie de titres unifiée — v4.0 : H2 en 700 (graisse des modules du site) */
.entry-content h2{font-weight:700;font-size:1.5rem;}
.entry-content h3{font-weight:600;font-size:1.2rem;}
.entry-content h4{font-weight:600;font-size:1.05rem;}
/* 13 · progression du formulaire : horizontale aussi en mobile */
@media(max-width:980px){
  .forminator-ui.forminator-custom-form .forminator-pagination-steps{display:flex !important;flex-direction:row;justify-content:space-between;align-items:flex-start;}
  .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step{display:flex;flex-direction:column;align-items:center;gap:.3rem;flex:1;min-width:0;}
  .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step-label{font-size:.6rem;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-break{display:none;}
}


/* ===== v3.1 — Retours 22 h 48 (10.07) ===== */
/* 13 · ≤560 px : seuls les points + le label de l'étape COURANTE (5 labels ne tiennent pas) */
@media(max-width:560px){
  .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step-label{display:none;}
  .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step.forminator-current .forminator-step-label{display:block;}
}
/* Filet anti-débordement horizontal : iOS ignore parfois le hidden posé sur html seul ;
   clip ne casse pas le sticky (position:fixed, hors flux) */
body{overflow-x:clip;}


/* ===== v3.6 — Boutons de défilement du carrousel (cachés en mode animé) ===== */
.nf-logos__nav{display:none;position:absolute;top:1.7rem;bottom:.9rem;width:2.8rem;
  align-items:center;border:0;cursor:pointer;color:var(--nf-rose);
  font-size:1.8rem;font-weight:800;font-family:Montserrat,system-ui,sans-serif;padding:0;}
.nf-logos__nav--prev{left:0;justify-content:flex-start;padding-left:.35rem;
  background:linear-gradient(to left,rgba(255,255,255,0),#fff 75%);}
.nf-logos__nav--next{right:0;justify-content:flex-end;padding-right:.35rem;
  background:linear-gradient(to right,rgba(255,255,255,0),#fff 75%);}
.nf-logos__nav:hover{color:var(--nf-prune);}

/* ===== v4.0 — Compléments : boutons outline sur bandes sombres + note de test 109 ===== */
.nf-band--dark .is-style-outline .wp-block-button__link{background:transparent !important;color:#fff !important;
  border:1px solid #fff;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;text-decoration-color:var(--nf-rose);}
.nf-band--dark .is-style-outline .wp-block-button__link:hover{background:rgba(255,255,255,.12) !important;color:#fff !important;}
/* NOTE (12.07 soir) : la bande CTA est ciblée PAR CONTENU (:has(.nf-zone-form), bloc zones plus
   haut). Au prochain pack (v2.5+), poser la classe nf-band--cta sur cette bande reste la voie
   propre ; le :has restera comme filet. ROLLBACK : re-coller la charte v3.6 + purge WP Rocket. */


/* ===== v4.1 — Finitions rendu réel (12.07 soir) ===== */
.nf-steps li{border:1px solid var(--nf-bordure);}
.nf-capsule{border-top:1px solid var(--nf-bordure);border-right:1px solid var(--nf-bordure);border-bottom:1px solid var(--nf-bordure);}



/* ═════ v4.9 — HERO COVER v2 : UNE SECTION, TOUTES TAILLES (validé test v6, structuré page-cocon) ═════
   Activation PAR PAGE : classe nf-hero-cover sur la bande + variable --nf-hero-img (pack) + H1 dans la
   bande (pack v2.6) + modèle « Page cocon NovaFree » actif (le thème n'imprime plus de titre).
   Duotone : photo N&B contrastée (::before) × rose + ombre prune-noir (::after) — molettes ci-dessous.
   RYTHME (exigence Patrice) : H1→badge · badge→accroche · accroche→CTA · CTA→CTA · CTA→garanties
   = le MÊME écart, --nf-hero-gap, à toutes les tailles. */
:root{--nf-duo-rose:#e1b5ce;--nf-duo-lum:.80;--nf-duo-contrast:1.18;--nf-duo-ombre:.22;
  --nf-photo-pos:center 35%;--nf-badge-op:.5;--nf-duo-noir:#2b1e2f;}
.entry-content .nf-hero-cover{position:relative;isolation:isolate;background:transparent !important;
  padding-top:1.05rem;padding-bottom:clamp(2.75rem,6vw,5.5rem);}  /* v4.9.2 : pad-top 1.05rem (Patrice) */
.entry-content .nf-hero-cover::before{content:"";position:absolute;inset:0;z-index:-2;
  background:var(--nf-hero-img) var(--nf-photo-pos)/cover no-repeat;
  filter:grayscale(1) contrast(var(--nf-duo-contrast)) brightness(var(--nf-duo-lum));}
.entry-content .nf-hero-cover::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(rgba(43,30,47,var(--nf-duo-ombre)),rgba(43,30,47,var(--nf-duo-ombre))),var(--nf-duo-rose);
  mix-blend-mode:multiply;}
.nf-hero-cover h1{color:#fff;text-align:center;font-weight:800;line-height:1.18;
  font-size:clamp(1.9rem,3.4vw,3rem);margin:0 auto var(--nf-hero-gap);max-width:900px;}
/* Fil d'Ariane — v4.9.2 : DANS la section (injecté 1er enfant de la bande par le snippet v3.4),
   photo derrière lui, TOUTES tailles. Réglages Patrice : fil sans marge basse, écart fil→titre
   laissé au flux ; le padding-top de la bande (1.05rem) place le fil au bord haut. */
.nf-hero-cover .nf-fil-hero{background:transparent;text-align:center;margin:0;padding:0;}  /* v4.9.4 : font-size dupliquée retirée — elle bloquait la règle mobile .52rem */
.nf-hero-cover .nf-hero-preuve{display:inline-block;border-left:0 !important;
  background:rgba(43,30,47,var(--nf-badge-op)) !important;margin-bottom:var(--nf-hero-gap);}
.nf-hero-cover p.nf-atenue{color:#fff !important;}
.nf-hero-cover .wp-block-columns{justify-content:center;margin-bottom:0;}
.nf-hero-cover .wp-block-column:first-child{flex-basis:100% !important;max-width:720px;margin:0 auto;text-align:center;}
.nf-hero-cover .wp-block-column:has(.nf-hero-media){display:none;}
.nf-hero-cover .wp-block-buttons{gap:var(--nf-hero-gap);margin-top:0;margin-bottom:var(--nf-hero-gap);justify-content:center;}


/* ═════ v4.9.3 — Deux correctifs (13.07 matin, retours Patrice) ═════ */
/* 1 · Fil d'Ariane : .52rem sur mobile (multi-lignes plus compact) */
@media (max-width:781px){
  .nf-fil-hero{font-size:.52rem;}
}
/* 2 · BUG v4.3 réparé : la carte blanche du formulaire héritait du texte CLAIR des bandes
   (blanc sur blanc — seul le trait rose du tél restait visible). La carte ré-encre son contenu. */
.nf-zone-form{color:var(--nf-anthracite);}
.nf-zone-form a:not(.wp-block-button__link){color:var(--nf-prune);text-decoration-color:var(--nf-rose);}
.nf-zone-form a:not(.wp-block-button__link):hover{background:var(--nf-rose);color:var(--nf-anthracite);text-decoration-color:var(--nf-anthracite);}


/* ═════ v4.9.6 — LE SEUIL, correction Patrice 13.07 (remplace v4.9.5) ═════
   « Retrouver le design d'avant, capsule et intro inversées. »
   → On retire l'aération ajoutée en v4.9.5 (.nf-logos padding-bottom 1.7rem) :
     le bloc logos reprend son padding v4.9.4 (.3rem) — l'écart logos→contenu
     redevient CELUI DE LA v2.6 au pixel.
   → On garde UNE règle : la capsule en tête de zone n'empile pas son margin-top
     sur le padding de zone (sinon +1.25rem vs avant).
   L'inversion seule fait le seuil ; l'encart bordé prune suffit.
   Grammaire inchangée : jamais de trait rose en séparateur (le rose navigue). */
.nf-zone > .nf-capsule:first-child{margin-top:0;}


/* ═════ v4.9.7 — LE PAQUET v2.8 (13.07.2026) : schéma, vidéos, voix, interlocuteur ═════ */
.nf-schema{max-width:860px;margin:2rem auto 1rem;}
.nf-schema figcaption,.nf-figure figcaption{font-size:.85rem;color:#31383d;opacity:.75;text-align:center;margin-top:.5rem;}
.nf-figure{margin:1.75rem 0;}
.nf-figure img{width:100%;height:auto;display:block;}
.nf-videos{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;margin:1.5rem 0 1.5rem;}
.nf-facade{position:relative;display:block;width:100%;padding:0;border:1px solid var(--nf-bordure,#e3e3e6);background:#fff;cursor:pointer;text-align:left;text-decoration:none;color:#31383d;font-family:inherit;}
.nf-facade img{width:100%;height:auto;display:block;}
.nf-facade__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);width:64px;height:64px;border-radius:50%;background:#5c475e;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.5rem;}
.nf-facade__label,.nf-facade__cta{display:block;padding:.6rem .9rem;font-size:.85rem;font-weight:600;}
.nf-facade--ext{display:flex;flex-direction:column;justify-content:center;gap:.4rem;padding:1.4rem 1.2rem;min-height:200px;}
.nf-facade--ext .nf-facade__brand{font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:.8rem;color:#5c475e;}
.nf-facade--ext .nf-facade__title{font-size:1rem;line-height:1.45;}
.nf-voix{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem;margin:1.5rem 0;}
.nf-voix__q{margin:0;background:#fff;border-left:5px solid #5c475e;box-shadow:0 1px 2px rgba(49,56,61,.07);padding:1.1rem 1.3rem;}
.nf-voix__q p{margin:0 0 .6rem;font-size:.98rem;line-height:1.55;}
.nf-voix__q cite{font-style:normal;font-size:.83rem;opacity:.8;}
.nf-interlocuteur{display:flex;gap:1.25rem;align-items:center;background:#fff;border:1px solid var(--nf-bordure,#e3e3e6);padding:1.1rem 1.3rem;margin:0 0 1.5rem;}
.nf-interlocuteur img{width:112px;height:112px;object-fit:cover;border-radius:50%;flex-shrink:0;}
.nf-interlocuteur__nom{margin:0 0 .25rem;}
@media(max-width:600px){.nf-interlocuteur{flex-direction:column;text-align:center;}}


/* ═════ v4.9.8 — RECETTE v2.8 (16.07.2026) : lisibilité des cartes, tailles des players ═════
   Leçons : ① le JS posait .nf-facade-frame ABSENTE de la charte → iframe 300×150 (la « petite vidéo RTS »).
   ② les cartes blanches (voix, interlocuteur) HÉRITAIENT le blanc des bandes sombres → texte invisible.
   ③ les figcaptions en anthracite fixe devenaient illisibles sur fonds sombres → héritage. */
.nf-facade-frame{width:100%;aspect-ratio:16/9;border:0;display:block;}
.nf-schema svg{width:100%;height:auto;display:block;}
.nf-schema figcaption,.nf-figure figcaption{color:inherit;opacity:.8;}
.nf-voix__q,.nf-interlocuteur{color:#31383d;}
.nf-voix__q a,.nf-voix__q cite,.nf-interlocuteur a{color:#31383d;}
.nf-videos__item{display:flex;flex-direction:column;}
.nf-videos__src{font-size:.85rem;margin:.5rem 0 0;}


/* ═════ v4.9.9 — RECETTE 4-5 (16.07.2026) : vignettes à hauteur égale + fond de chargement des players ═════ */
.nf-facade img{aspect-ratio:16/9;object-fit:cover;}
.nf-videos{align-items:stretch;}
.nf-videos__item .nf-facade{height:100%;display:flex;flex-direction:column;}
.nf-facade img{flex:0 0 auto;}
.nf-facade-frame{background:#31383d;}


/* ═════ v4.9.10 — RECETTE 6 (16.07.2026) : cartes lisibles sur tout fond, utilitaire centrage ═════
   Le lien LinkedIn de la carte interlocuteur était écrasé par une règle plus spécifique du site.
   Doctrine : un composant-carte force ses couleurs sur TOUT fond — cas d'usage légitime du !important. */
.nf-voix__q,.nf-voix__q p,.nf-voix__q cite{color:#31383d !important;}
.nf-voix__q a,.nf-interlocuteur a{color:#31383d !important;}
.nf-interlocuteur,.nf-interlocuteur p{color:#31383d !important;}
.nf-center{text-align:center;}





/* ═════ v4.9.13 — RECETTE 11 (16.07.2026) : DRY, question Patrice ═════
   La classe nf-zone--prune (v4.9.11/12) est SUPPRIMÉE : .nf-band standard porte déjà
   le fond prune #5c475e avec tout l'appareillage. « Où intervenons-nous » redevient une
   bande standard dans le pack (v2.8.11). Règle : avant tout nouveau modificateur,
   inventorier les classes existantes (nf-band · nf-band--dark · nf-band--accent). */

/* ═════ v4.9.14 (16.07.2026) : flèche des liens externes en forme texte — règle ligne 73 amendée in situ ═════ */

/* ═════ v4.9.15 (16.07.2026) : flèche des liens externes ANNONCÉE — règle ligne 73 amendée in situ.
   content: "\2197\FE0E" / " (nouvel onglet)" — les voyants ne voient AUCUNE différence, les lecteurs d’écran
   entendent « (nouvel onglet) » au lieu de « flèche nord-est » (ou de rien). Support alt-text : Chrome/Edge 2019+,
   Safari 17.4+, Firefox 128+ ; anciens moteurs = fallback 1re déclaration (comportement v4.9.14, rien ne casse).
   Fondement : rapport novafree_rapport_a11y_liens_externes_v1.md §2b. Convention amendée : externe = target + flèche
   annoncée · interne = sans. Jamais de flèche manuelle (règle O du 16.07) : la charte reste le point unique. ═════ */

/* ═══════════════════════════════════════════════════════════════════════
   ===== v4.9.17-18 — CONSOLIDATION (19.07.2026) =====
   REMPLACE les additifs v4.9.16/17 empilés (code mort supprimé).
   Chaque règle ci-dessous porte sa CAUSE (preuve de cascade, journal R26-R29).
   ═══════════════════════════════════════════════════════════════════════ */

/* R26 · DAMIER des sections critères (choisir + pages filles à venir)
   Image 1re du DOM = 1re au mobile ; flip une section sur deux au desktop ;
   centrage vertical (relayé par verticalAlignment posé sur chaque colonne). */
.nf-damier{align-items:center;}
.nf-damier>.wp-block-column{align-self:center;}
@media(min-width:782px){.nf-damier--flip{flex-direction:row-reverse;}}
h2+.nf-damier,.nf-center+.nf-damier{margin-top:1.75rem;}  /* v4.9.18 : l'image ne colle plus au titre (méthode) */

/* R27 · VIGNETTES : images DROITES (doctrine), légendes centrées, encre par fond.
   Le liseré (Divi/ordre de chargement) est tué par styles INLINE dans les packs :
   ces règles ne sont que le filet. */
.nf-vignette{background:transparent;padding:0;margin:0;}
.nf-vignette img{display:block;width:100%;height:auto;border-radius:0;}
.nf-vignette figcaption{font-size:.85rem;line-height:1.45;text-align:center;margin:.7em 0 0;}
.nf-band .nf-vignette figcaption{color:#f5f5f7;opacity:.85;}
.nf-zone .nf-vignette figcaption{color:var(--nf-anthracite);opacity:.8;}

/* R23rev · BOUTONS OBFUSQUÉS .nf-obf = CLONE des tokens du CTA secondaire
   (.is-style-outline l.75-79 : border 2px, radius 3px, padding .8/1.6)
   + soulignement des liens du site (l.70) + hover calqué (l.71/79). */
.nf-obf{display:inline-block;background:transparent;border:2px solid currentColor;
  border-radius:3px;padding:.8em 1.6em;font-weight:600;cursor:pointer;user-select:none;
  font-family:Montserrat,system-ui,sans-serif;min-height:44px;line-height:1.2;
  text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;
  text-decoration-color:var(--nf-rose);transition:background .15s,color .15s;}
.nf-zone .nf-obf{color:var(--nf-prune);}
.nf-band .nf-obf{color:#fff;}
.nf-obf:hover,.nf-obf:focus-visible{background:var(--nf-rose);color:var(--nf-anthracite);
  text-decoration-color:var(--nf-anthracite);}

/* R28 · CARTES nf-steps hors zone claire : encre lisible + 3 colonnes desktop. */
.nf-band .nf-steps li{color:var(--nf-anthracite);}
.nf-band .nf-steps li a{color:var(--nf-prune);}
@media(min-width:782px){.nf-steps{grid-template-columns:repeat(3,1fr);}}

/* R29 · COMPOSITIONS CTA (carte blanche .nf-zone-form) :
   titres/textes centrés ; carte Nicolas à GAUCHE ; ligne tél CENTRÉE
   (cause l.86 : inline-block ne se centre pas → display:block) ;
   schéma 3 étapes contenu. Bouton primaire : tokens par défaut (l.75), rien à surcharger. */
.nf-zone-form h3,.nf-zone-form>p{text-align:center;}
.nf-zone-form .nf-interlocuteur,.nf-zone-form .nf-interlocuteur p{text-align:left;}
.nf-zone-form .nf-cta-tel{display:block;text-align:center;margin-top:.6rem;}
.nf-zone-form .nf-schema{margin:0 auto 1.2rem;max-width:760px;}


/* v4.9.20 (19.07.2026) : marge basse de .nf-videos supprimée A LA SOURCE (margin:1.5rem 0 0). Cause du bug d'origine : les regles de section .nf-band/.nf-zone > :last-child existaient, mais le <script> du patron facade est le vrai dernier enfant et les court-circuite. */
h3.nf-center{margin-top:1.5rem;}                 /* intro vidéo : même respiration que la marge basse des nf-steps ; les marges s'effondrent, zéro double espace sur la page AI et la 109 */


/* v4.9.21 (23.08.2026, Patrice) : .nf-videos retrouve une MARGE BASSE (margin:1.5rem 0 1.5rem).
   Cause : le bouton/CTA qui suit le groupe de vidéos était COLLÉ à la derniere vignette — le
   <script> du patron facade est le vrai dernier enfant de la section, donc les regles
   .nf-band/.nf-zone > :last-child ne s'appliquent pas a .nf-videos (diagnostic v4.9.20).
   La v4.9.20 avait supprime la marge basse A LA SOURCE pour tuer un double espace ; le remede
   a produit l'inverse des qu'un bloc suit les videos. On rend donc la marge, symetrique du haut.
   PORTEE : pages 109 (/exosquelette/essai/), financement-AI, partenaires, choisir — toute page
   portant un groupe .nf-videos suivi d'un bouton, d'un paragraphe ou d'un titre.
   ROLLBACK : remettre margin:1.5rem 0 0 (= v4.9.20) et purger WP Rocket. */


/* ═══════════════════════════════════════════════════════════════════════════
   v4.9.24 (24.08.2026) — remplace v4.9.22 et v4.9.23, aucune des deux collee.
   Trois correctifs. Le defilement horizontal du fil d'Ariane propose en v4.9.23
   est RETIRE : cacher du contenu derriere un geste sans affordance est un
   anti-patron, et sur un fil d'Ariane ce qui se cache est justement la reponse
   a « ou suis-je ». La vraie cause etait ailleurs — voir ③.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ① Le label « A lire aussi : » / « A decouvrir : » sort du <strong>.
   CAUSE : gras-etiquette pur — lu dans la chaine du squelette il n'apporte rien
   et coupe le fil juste avant la FAQ. ARBITRAGE Patrice : « on peut jouer sur la
   graisse de la font ». MARKUP : <p><strong>A lire aussi :</strong></p> devient
   <p>A lire aussi :</p>. Le rendu ne bouge pas ; le decompte du lint redevient juste. */
.nf-alire > p:first-child{font-weight:700;margin:0 0 .2rem;}

/* ② Le CTA ne se fait plus couper sur mobile.
   CAUSE : la l.457 annoncait « relache sous 480 px », mais les deux media queries
   ne reduisaient QUE la police — white-space:nowrap n'etait jamais annule. Un
   libelle de 70 caracteres restait sur une ligne et se faisait TRONQUER par
   html{overflow-x:hidden} + body{overflow-x:clip}. Sur telephone, la page
   financement-AI affichait « Parlez-nous de votre situation : nous vous gui… ». */
@media (max-width:781px){
  .nf-band--dark .wp-block-button__link{
    white-space:normal;
    text-wrap:balance;
    line-height:1.3;
    max-width:100%;
  }
}

/* ③ Le fil d'Ariane : le CSS ne fait plus que le contraste. La longueur se regle
   dans le snippet, pas ici.
   MESURE : le fil de /exosquelette/financement/assurance-invalidite/ fait
   180 CARACTERES — dont 52 pour le seul premier maillon (« Ergonova - Analyse
   ergonomique des places de travail ») et 49 pour le dernier (le titre de page,
   repete verbatim dans le H1 vingt pixels plus bas). A 0.52 rem il occupait deja
   2,2 lignes : la police n'a jamais ete la cause, la LONGUEUR DES LIBELLES l'est.
   Reduire la police ne reglait rien et coutait la lisibilite ; la faire defiler
   cachait l'information. On corrige donc les libelles cote serveur
   (novafree_snippet_fil_v3-5) et on garde ici la seule chose qui releve du CSS :
   un fond opaque, pour que le contraste soit CALCULABLE (7,6:1) au lieu de
   dependre de la photo duotone de chaque page. Le fil revient a une taille lisible
   et se replie sur deux lignes au maximum une fois les libelles raccourcis. */
.nf-fil-hero{color:#f5f5f7;line-height:1.45;}
.nf-hero-cover .nf-fil-hero{
  background:rgba(43,30,47,.55);
  display:inline-block;
  max-width:100%;
  padding:.22rem .8rem;
  border-radius:0;
}
@media (max-width:781px){ .nf-fil-hero{font-size:.62rem;} }



/* ═══════════════════════════════════════════════════════════════════════════
   v4.9.25 (26.08.2026) — trois retouches du fil hero, sur mesures CC (lot 2).
   ① RE-CENTRAGE : le display:inline-block du v4.9.24 ③ alignait la boîte sur
   le text-align:left de la bande (mesure : bord gauche à 250px du viewport
   1600). width:fit-content + margin auto recentrent la boîte sans toucher au
   text-align de la bande.
   ② ESPACE SOUS LE TEXTE : le <ol class="breadcrumb"> subit le padding-bottom
   de 23px de la règle Divi « #left-area ol, .entry-content ol » (spécificité
   1-0-1) — invisible sur fond transparent, révélé par le fond opaque du
   v4.9.24 ③. Purge scopée au fil, sélecteur #left-area requis pour battre
   la règle Divi (1-1-1 > 1-0-1).
   ③ MOBILE : padding latéral .8rem → .45rem, le texte gagne ~13px par ligne.
   ROLLBACK : retirer ce bloc et purger WP Rocket.
   ═══════════════════════════════════════════════════════════════════════════ */
.nf-hero-cover .nf-fil-hero{display:block;width:fit-content;margin:0 auto;}
.nf-fil-hero .breadcrumb,#left-area .nf-fil-hero ol,.entry-content .nf-fil-hero ol{margin:0;padding:0;}
@media (max-width:781px){ .nf-hero-cover .nf-fil-hero{padding:.22rem .45rem;} }


/* ═══════════════════════════════════════════════════════════════════════════
   v4.9.26 (26.08.2026) — CARTE INTERLOCUTEUR À DEUX (demande Patrice, lot 4
   points 1-2). Nicolas et Nadja partagent UNE carte blanche, l'un SOUS l'autre,
   séparés d'un liseret — les deux cartes côte à côte du 26.08 matin étaient
   déséquilibrées. Markup : .nf-interlocuteur.nf-interlocuteur--duo contenant
   deux .nf-interlocuteur__personne. La carte SIMPLE (.nf-interlocuteur seule,
   sans --duo) reste strictement inchangée. Sous 600 px chaque personne passe
   en colonne (avatar au-dessus), comme la carte simple.
   ROLLBACK : retirer ce bloc + revenir au markup wp:columns des patrons. */
.nf-interlocuteur--duo{display:block;padding:0;}
.nf-interlocuteur--duo .nf-interlocuteur__personne{display:flex;gap:1.25rem;align-items:center;padding:1.1rem 1.3rem;}
.nf-interlocuteur--duo .nf-interlocuteur__personne + .nf-interlocuteur__personne{border-top:1px solid var(--nf-bordure,#e3e3e6);}
@media(max-width:600px){.nf-interlocuteur--duo .nf-interlocuteur__personne{flex-direction:column;text-align:center;}}
