/* ==========================================================================
 * 6XPOS — SOCLE NEO — V5
 *
 * Une seule feuille, chargee EN BLOQUANT, versionnee par la date du fichier.
 * Elle vise les selecteurs Divi generiques : aucune section du site ne porte
 * de classe personnalisee, il n'y a pas d'autre point d'accroche.
 *
 * Contrat de specificite : toutes les regles qui ecrasent l'existant sont
 * ecrites pour gagner PAR SPECIFICITE, jamais par ordre de chargement —
 * la position de cette feuille dans le <head> ne doit avoir aucune importance.
 *   - variables :          :root:root            (0,2,0) bat :root (0,1,0)
 *   - elements :           body x                (0,0,2) bat x (0,0,1)
 *   - boutons :            body #page-container .et_pb_section .et_pb_button.et_pb_button
 *                                                 (1,3,1) bat les regles par
 *                          numero du theme enfant (1,2,1)
 *
 * V1 = reparation anti-CLS de l'en-tete + jetons + debranchement des valeurs
 *      d'usine (bleu #2EA3F2, gris #666/#333) + regle de famille des boutons
 *      + contours -> degrade plein.
 * V2 = complement anti-CLS (pied de page jumeau + en-tete mobile, section 6)
 *      + echelle typographique fluide et colonnes etroites (section 7)
 *      + rythme de section 96/70 (section 8)
 *      + regle de charte du trait : titres NEO en plein, chiffres-decor
 *      conserves (section 9).
 * V3 = reservation de la hauteur de l'en-tete mobile (section 10, la vraie
 *      cause du CLS residuel) ; retrait des duplications inutiles de V2
 *      (6b supprimee, width:auto retires des sections 0 et 6a).
 * V4 = RECALIBRAGE sur la preproduction au cache RESTAURE (le cache Divi
 *      degenere avait fausse toutes les mesures V1-V3 de l'en-tete) :
 *      section 0 recopiee depuis la feuille differee reelle, section 10
 *      reduite au burger + plancher 59 px, references = production.
 * V5 = le DESSIN de l'en-tete (section 11) : barre-pilule raffinee,
 *      panneaux ancres en cartes NEO, panneau mobile sombre a accordeons.
 *      Markup neuf dans les modules et_pb_code (entete-v5-desktop.html /
 *      entete-v5-mobile.html). EPURE INCHANGEE : 130 bureau, 89/92/112
 *      mobile — sections 0 et 10 et sentinelle toujours vraies.
 * Prerequis deploye separement : corrections-base.css (polices, pointer-events,
 * interlignes mobiles). RIEN de ce fichier-la n'est duplique ici.
 * ========================================================================== */


/* --------------------------------------------------------------------------
 * 0. EN-TETE : HAUTEUR DETERMINISTE AU PREMIER RENDU (anti-CLS)
 *
 * REPARATION, pas un choix esthetique — candidate a migrer dans
 * corrections-base.css si on veut la sortir en production seule.
 *
 * Mesure : decalage de mise en page de 0,644 a 0,927 selon les pages, pour un
 * seuil Google de 0,1. Cause unique, identifiee dans
 * et-core-unified-tb-253183-tb-530-deferred-*.min.css (feuille DIFFEREE) :
 * les DEUX sections d'en-tete du Theme Builder (bureau et mobile) peignent
 * empilees au premier rendu, puis la feuille arrive (~1,4 s) et masque l'une
 * des deux -> toute la page remonte.
 *
 * Correctif : dupliquer ici, EN BLOQUANT, les regles de visibilite et de
 * dimension de l'en-tete — valeurs STRICTEMENT identiques a la feuille
 * differee (aucune divergence possible : quand elle arrive, elle re-applique
 * les memes valeurs). A la refonte de l'en-tete (V4), ce bloc sera remplace
 * par les regles du nouvel en-tete, toujours en bloquant.
 * ------------------------------------------------------------------------ */

/* Visibilite responsive — le coeur du correctif */
@media only screen and (min-width: 981px) {
  .et_pb_section_1_tb_header { display: none !important; }
}
@media only screen and (min-width: 768px) and (max-width: 980px) {
  .et_pb_section_0_tb_header { display: none !important; }
}
@media only screen and (max-width: 767px) {
  .et_pb_section_0_tb_header { display: none !important; }
}
/* V3 : les regles width:auto sur les images de l'en-tete mobile, copiees ici
   par fidelite au differe, sont RETIREES du socle. Mesure : un width:auto
   d'auteur ANNULE la reservation des attributs width/height des images —
   c'etait une cause du decalage, pas une protection. La reservation correcte
   est en section 10 ; elle bat aussi le width:auto que la feuille differee
   re-appliquera a son arrivee. */

/* Dimensions et gabarit de l'en-tete au premier rendu */
div.et_pb_section.et_pb_section_0_tb_header,
div.et_pb_section.et_pb_section_1_tb_header {
  background-size: initial;
  background-repeat: repeat;
  background-image: url(/wp-content/uploads/2024/04/6xpos-bg-grain.jpg) !important;
  /* racine-relative VOLONTAIREMENT : la feuille differee de Divi ecrit le domaine
     en dur, ce qui ferait pointer un environnement vers un autre lors d une
     remontee. Racine-relative = valable partout. */
}
.et_pb_section_0_tb_header.et_pb_section { padding: 0; margin: 0; }
.et_pb_row_0_tb_header.et_pb_row { padding: 0 !important; margin: 0 !important; }
.et_pb_row_1_tb_header.et_pb_row {
  padding-top: 0 !important; padding-bottom: 0 !important;
  margin-top: 0 !important; margin-bottom: 0 !important;
}
.et_pb_row_0_tb_header,
.et_pb_row_1_tb_header { width: 100% !important; max-width: 100% !important; }
.et_pb_row_1_tb_header { display: flex; align-items: center; }
.et_pb_column_1_tb_header { width: 40% !important; }
.et_pb_column_2_tb_header {
  background-color: #FFFFFF;
  border-radius: 60px;
  overflow: hidden;
  padding: 8px 10px;
  width: 60% !important;
}
/* V4 — regles recopiees depuis la feuille differee RESTAUREE (celle de la
   production). Le fichier ampute sur lequel V1-V3 etaient calibrees avait
   perdu exactement ces contraintes de dimension : padding de section 20/10,
   logo a 90 % de sa colonne, pastilles plafonnees a 44 px. Ce sont elles qui
   font l'en-tete mobile de 89-112 px de la production. */
.et_pb_section_1_tb_header.et_pb_section {
  padding-top: 20px; padding-right: 5%;
  padding-bottom: 10px; padding-left: 5%;
  margin-top: 0; margin-bottom: 0;
}
.et_pb_section_1_tb_header { max-width: 100%; }
.et_pb_image_0_tb_header {
  padding: 0;
  margin-top: 0 !important; margin-right: 0 !important;
  margin-bottom: 0 !important; margin-left: 0 !important;
  width: 100%; max-width: 90%;
  text-align: left;
}
.et_pb_image_1_tb_header { width: 100%; max-width: 44px; float: left; text-align: left; margin-left: 0; }
.et_pb_image_2_tb_header { max-width: 44px; float: left; text-align: left; margin-left: 0; }
.et_pb_code_1_tb_header { max-height: 43px; float: right; }


/* --------------------------------------------------------------------------
 * 1. JETONS
 *
 * Deux jeux, deliberement : --neo-* (vitrine, palette chaude) et --bo-*
 * (produit, palette froide du back-office NEO). Regle d'usage : les --bo-*
 * n'apparaissent QUE dans .neo-frame, les tableaux d'article et les schemas
 * qui imitent l'application. Un --bo-* ailleurs dans la vitrine est une faute.
 * ------------------------------------------------------------------------ */
:root {

  /* -- Marque (vitrine) -- */
  --neo-framboise:        #CB214A;   /* accent primaire, liens, pastilles — l'ex #CA214A est unifie ici */
  --neo-framboise-haut:   #E0224E;   /* borne haute du degrade de bouton */
  --neo-framboise-bas:    #A9265E;   /* borne basse du degrade de bouton */
  --neo-prune:            #812B70;   /* deuxieme couleur de marque, bandeaux */
  --neo-prune-fonce:      #6E2361;   /* borne haute du CTA */
  --neo-prune-noir:       #1D0C21;   /* fond de section sombre */
  --neo-encre:            #181019;   /* titres */
  --neo-texte:            #5B5560;   /* paragraphes */
  --neo-texte-doux:       #77707D;   /* legendes */
  --neo-texte-tres-doux:  #8A8390;   /* meta, sous-libelles */

  /* -- Roses et surfaces (nomenclature TAILLEE : une valeur par role) -- */
  --neo-rose-vif:         #FF9FB4;
  --neo-rose:             #FFD9E2;   /* texte sur fond sombre */
  --neo-rose-moyen:       #E88AA0;   /* points du cadre, chiffres au contour */
  --neo-rose-bordure:     #F1E3E8;   /* LA bordure rose (les ex #F0D4DC / #E0BECB sont depreciees) */
  --neo-rose-fond:        #FBE7EC;   /* pastille de coche */
  --neo-blanc:            #FFFFFF;
  --neo-surface-rose:     #FBF0F3;
  --neo-surface-grain:    #F3F1EE;   /* + 6xpos-bg-grain.jpg en repeat */
  --neo-surface-tres-clair: #FBF7F8;
  --neo-fond-sombre:      #1D0C21;
  --neo-fond-cadre-sombre:#190A1D;
  --neo-fond-coffre:      #241028;
  --neo-chrome-haut:      linear-gradient(180deg, #FBF7F8, #F3EAEE);
  --neo-chrome-bordure:   #EFE2E7;
  --neo-chrome-sombre:    linear-gradient(180deg, #261227, #190A1D);

  /* -- Produit (BO NEO) : captures, schemas, tableaux — JAMAIS dans la vitrine -- */
  --bo-encre:             #0B1733;
  --bo-texte:             #667088;
  --bo-bordure:           #E6EAF3;
  --bo-bordure-forte:     #C1CADA;
  --bo-fond:              #F7F8FB;
  --bo-entete-clair:      #F8FAFC;
  --bo-lateral:           #32404F;
  --bo-lateral-actif:     #404D5B;
  --bo-action:            #A5334C;
  --bo-accent:            #B72B49;
  --bo-succes:            #35746E;
  --bo-succes-fond:       #DFF4EF;
  --bo-attention:         #CC7C2E;
  --bo-inactif:           #CCD3E0;
  --bo-rayon:             6px;

  /* -- Degrades : un angle par role, jamais improvise -- */
  --deg-bouton:        linear-gradient(100deg, #E0224E 0%, #A9265E 100%);
  --deg-bouton-survol: linear-gradient(100deg, #E0224E 0%, #812B70 100%);
  --deg-bandeau:       linear-gradient(115deg, #812B70 0%, #CB214A 100%);
  --deg-cta:           radial-gradient(700px 380px at 50% -20%, rgba(255,159,180,.25), transparent 60%),
                       linear-gradient(150deg, #6E2361 0%, #CB214A 100%);
  --deg-sombre:        radial-gradient(900px 500px at 80% -10%, rgba(203,33,74,.30), transparent 60%),
                       radial-gradient(760px 460px at 6% 110%, rgba(129,43,112,.38), transparent 62%);
                       /* toujours pose sur background-color: var(--neo-fond-sombre) */
  --deg-point:         linear-gradient(130deg, #CB214A, #812B70);
  --deg-filet:         linear-gradient(90deg, #CB214A, #FF9FB4);
  --deg-titre:         linear-gradient(110deg, #CB214A 15%, #812B70 100%); /* remplace le lettrage en contour */
  --deg-bordure-iris:  linear-gradient(120deg, #CB214A, #FF9FB4 45%, #812B70);

  /* -- Ombres : toujours a etalement negatif, teintees prune ou framboise,
        jamais noires. Sur fond sombre : pas d'ombre, une bordure claire. -- */
  --ombre-douce:          0 12px 28px -18px rgba(46,9,38,.2);
  --ombre-carte:          0 16px 36px -24px rgba(46,9,38,.28);
  --ombre-encart:         0 14px 30px -20px rgba(46,9,38,.25);
  --ombre-bouton:         0 14px 30px -10px rgba(203,33,74,.5);
  --ombre-bouton-survol:  0 20px 40px -12px rgba(203,33,74,.55);
  --ombre-bouton-fantome: 0 12px 26px -14px rgba(203,33,74,.35);
  --ombre-bouton-blanc:   0 18px 40px -14px rgba(26,4,20,.55);
  --ombre-cadre:          0 40px 90px -30px rgba(46,9,38,.4), 0 12px 30px -18px rgba(46,9,38,.22);
  --ombre-cadre-sombre:   0 50px 110px -30px rgba(0,0,0,.75), 0 0 90px -12px rgba(203,33,74,.38);
  --ombre-coffre:         0 30px 70px -30px rgba(203,33,74,.45);
  --ombre-surtitre:       0 6px 18px -8px rgba(203,33,74,.25);

  /* -- Typographie : familles et echelle fluide (12 crans, consommes en V2) -- */
  --police-titres:  'mark_problack', 'Mark Pro', Helvetica, Arial, sans-serif;
  --police-corps:   'Mark Pro', 'mark_proregular', Helvetica, Arial, sans-serif;
  --police-medium:  'mark_promedium', 'Mark Pro', Helvetica, Arial, sans-serif;

  --taille-d1:          clamp(38px, 4.6vw, 54px);   /* h1 */
  --taille-d2:          clamp(29px, 3.6vw, 44px);   /* h2 */
  --taille-d2r:         clamp(27px, 3vw, 38px);     /* h2 en colonne 1/2 ou 1/3 */
  --taille-d3:          clamp(20px, 2.4vw, 27px);   /* phrase-morale, citation */
  --taille-t1:          24px;     /* titre d'etape */
  --taille-t2:          19px;     /* h3 courant */
  --taille-t3:          16.5px;   /* h3 de carte */
  --taille-lead:        17px;     /* chapo */
  --taille-corps:       15px;     /* paragraphe vitrine */
  --taille-corps-carte: 14.5px;
  --taille-legende:     13.5px;
  --taille-legende-fine:12.5px;

  /* -- Espacements : grille de 4, 11 crans + affectations -- */
  --esp-4: 4px;  --esp-8: 8px;   --esp-12: 12px; --esp-16: 16px;
  --esp-24: 24px; --esp-32: 32px; --esp-48: 48px; --esp-64: 64px;
  --esp-80: 80px; --esp-96: 96px; --esp-128: 128px;
  --esp-section:        96px;   /* 70px sous 980px */
  --esp-section-mobile: 70px;
  --esp-bandeau:        80px;
  --esp-cta:            104px;

  /* -- Largeurs -- */
  --largeur-contenu: 1200px;  /* .neo-wide : 94% de la fenetre, 1200 max */
  --largeur-lecture: 720px;   /* colonne d'article */

  /* -- Rayons (vitrine). Interdits : 3px, 30px, 50px -- */
  --rayon-encart: 12px;
  --rayon-tuile:  16px;
  --rayon-cadre:  18px;
  --rayon-carte:  20px;
  --rayon-coffre: 22px;
  --rayon-pilule: 60px;

  /* -- Animation : UNE duree, UNE courbe, des proprietes nommees -- */
  --duree: .25s;
}


/* --------------------------------------------------------------------------
 * 2. VARIABLES D'USINE DIVI
 *
 * Constat mesure sur les pages servies : var(--gcid-*) n'est CONSOMME NULLE
 * PART dans le CSS genere — les 155 occurrences de #2EA3F2 par page sont des
 * litteraux en dur. On rebranche quand meme les variables (hygiene, builder,
 * sorties futures de Divi), mais le debranchement EFFECTIF du bleu se fait en
 * section 3, sur les regles consommatrices reelles, inventoriees une a une.
 *
 * :root:root (0,2,0) bat le :root (0,1,0) du bloc critique inline de Divi,
 * quel que soit l'ordre de chargement.
 * ------------------------------------------------------------------------ */
:root:root {
  --gcid-primary-color:   var(--neo-framboise);
  --gcid-secondary-color: var(--neo-prune);
  --gcid-heading-color:   var(--neo-encre);
  --gcid-body-color:      var(--neo-texte);
  --gcid-link-color:      var(--neo-framboise);

  --et_global_heading_font: 'mark_problack', 'Mark Pro', Helvetica, Arial, sans-serif;
  --et_global_body_font:    'Mark Pro', Helvetica, Arial, sans-serif;
  /* Ces deux-ci SONT consommees (1 usage chacune dans le CSS servi) :
     15px = cran corps de l'echelle NEO ; 1.7 SANS unite pour que l'interligne
     se propage en ratio, pas en longueur figee de 23,8px. */
  --et_global_body_font_size:   15px;
  --et_global_body_font_height: 1.7em;   /* RETABLI a la valeur d origine.
     Divi applique cette variable sur .et_pb_text, dont la taille vient du
     module : en « em » l interligne se calcule sur CETTE taille (20px x 1,7
     = 34px). En valeur sans unite, il retombe a 1,7 x la taille heritee et
     TOUT le site se resserre — constate sur /restaurant/ : 34px -> 27px.
     Changer le rythme typographique est une decision de dessin, page par
     page, pas un effet de bord d une variable. */
}


/* --------------------------------------------------------------------------
 * 3. DEBRANCHEMENT DU BLEU D'USINE ET DES GRIS D'USINE
 *
 * Cible : les regles du CSS servi qui peignent reellement du #2EA3F2 ou des
 * gris #666666/#333333. Inventaire mesure sur l'accueil servi (les memes
 * regles se retrouvent sur les 11 pages capturees).
 * ------------------------------------------------------------------------ */

/* Les liens. #CA214A (theme enfant) et #2EA3F2 (Divi) sont unifies sur LA
   framboise. Les liens a couleur specifique (menu noir, pieds de page blancs,
   reglages par module) gardent la leur : leur specificite est superieure. */
body a { color: var(--neo-framboise); }
body .posted_in a,
body .nav-single a { color: var(--neo-framboise); }

/* La selection de texte — signature NEO deja en prod sur 3 pages. */
::selection { background: var(--neo-framboise); color: #fff; }

/* Les citations : le filet bleu Divi devient framboise. (Le vrai gabarit de
   citation arrive avec le gabarit d'article ; ici on eteint juste le bleu.) */
body blockquote { border-color: var(--neo-framboise); }

/* Le lien « lire la suite » des cartes de blog. */
body #page-container .et_pb_more_button { color: var(--neo-framboise); }

/* L'icone de survol des images/portfolios Divi. */
body .et_overlay:before { color: var(--neo-framboise); }

/* Le spinner AJAX de Divi portait la derniere ombre bleue du site
   (0 0 60px rgba(0,139,219,.247)) — element masque, mais on assainit. */
body #et-ajax-saving { box-shadow: var(--ombre-carte); }

/* Les titres : l'encre prune remplace le #333333 du theme enfant et le
   #000000 de sa media query mobile. (0,0,2) bat (0,0,1) quel que soit
   l'ordre. Les reglages nominatifs par module (!important) survivent —
   ils seront purges page par page, pas combattus a l'aveugle. */
body h1, body h2, body h3, body h4, body h5, body h6 { color: var(--neo-encre); }

/* Le texte courant : gris chaud NEO au lieu du #666666 d'usine. */
html body { color: var(--neo-texte); }

/* La pastille « remonter en haut » : degrade de marque au lieu du 60deg.
   html body ... (0,2,2) bat la regle du theme enfant (0,2,1) sans dependre
   de l'ordre de chargement. */
html body .et_pb_scroll_top.et-pb-icon { background: var(--deg-bouton); }


/* --------------------------------------------------------------------------
 * 4. LE BOUTON — regle de famille
 *
 * 68 occurrences sur 10 pages, dont 12 hors charte (jamais atteintes par les
 * regles par numero du theme enfant). La recette est celle de a.neo-btn,
 * DEJA en production sur /backoffice/, /statistiques/ et /qr-code-a-table/.
 *
 * Specificite (1,3,1) : bat les regles par numero du theme enfant (1,2,1)
 * et les variantes Divi a !important (0,3,0), quel que soit l'ordre.
 * Le glyphe-fleche ETmodules et le padding qui gigote au survol sont eteints.
 * ------------------------------------------------------------------------ */
body #page-container .et_pb_section .et_pb_button.et_pb_button {
  display: inline-block;
  font-family: var(--police-corps);
  font-size: 15px !important;
  font-weight: 700 !important;         /* resout sur la graisse Black de « Mark Pro » */
  line-height: 1 !important;
  color: #fff !important;
  background: var(--deg-bouton) !important;
  border: none !important;
  border-radius: var(--rayon-pilule) !important;
  padding: 17px 38px !important;
  box-shadow: var(--ombre-bouton);
  transition: transform var(--duree) ease,
              box-shadow var(--duree) ease,
              background var(--duree) ease !important; /* bat le transition:all impose par Divi */
}
body #page-container .et_pb_section .et_pb_button.et_pb_button:hover {
  padding: 17px 38px !important;        /* fin du texte qui glisse au survol */
  color: #fff !important;
  background: var(--deg-bouton-survol) !important;
  transform: translateY(-2px);
  box-shadow: var(--ombre-bouton-survol);
}
body #page-container .et_pb_section .et_pb_button.et_pb_button:after,
body #page-container .et_pb_section .et_pb_button.et_pb_button:before {
  display: none !important;
  content: none !important;
}


/* --------------------------------------------------------------------------
 * 5. LE LETTRAGE EN CONTOUR DEVIENT UN DEGRADE PLEIN
 *
 * 51 spans .contour-rose / .contour-noir / .contour-blanc dans les contenus :
 * on ne touche a aucun contenu, on change ce que les classes rendent.
 * Valide par Emmanuel sur le principe — a juger sur piece en preproduction.
 *
 * Garde-fou : sans prise en charge de background-clip:text, on rend une
 * framboise pleine (jamais un texte invisible).
 * ------------------------------------------------------------------------ */
body .contour-rose,
body .contour-noir {
  color: var(--neo-framboise);
  -webkit-text-stroke: 0;
  text-shadow: none;
}
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  body .contour-rose,
  body .contour-noir {
    background-image: var(--deg-titre);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}
/* Sur fond sombre ou en bandeau, le contour blanc devient un blanc plein. */
body .contour-blanc {
  color: #fff;
  -webkit-text-stroke: 0;
  -webkit-text-fill-color: #fff;
  text-shadow: none;
}


/* --------------------------------------------------------------------------
 * 6. COMPLEMENT ANTI-CLS : LE PIED DE PAGE JUMEAU ET L'EN-TETE MOBILE
 *
 * REPARATIONS, memes principes que la section 0. Diagnostic V2, mesure par
 * bascule des feuilles differees sur /caisse-enregistreuse/ :
 *
 * (a) Le pied de page a DEUX sections Theme Builder, comme l'en-tete. Au
 *     premier rendu elles peignent EMPILEES (+4160 px de page a 375 px,
 *     +1072 px a 1280 px), puis la feuille differee en masque une (~1,4 s).
 *     La V1 avait rate ces regles a cause d'un bug de mon script
 *     d'extraction. Duplication verbatim des regles de visibilite.
 *
 * (b) [diagnostic V2 invalide par la mesure du coordinateur — voir la note
 *     de suppression plus bas et la section 10, qui traite la vraie cause]
 *
 * Le pied de page ne pese pas dans le CLS de laboratoire (fenetre haute de
 * page seulement) ; ses regles de visibilite restent pour l'utilisateur
 * REEL : sans elles, 4160 px de pied de page fantome (a 375 px) existent
 * sous la page pendant ~3 s — ascenseur faux, ancres fausses, decalage venu
 * d'en bas pour qui fait defiler pendant le chargement. 12 lignes. A
 * retirer si le coordinateur en juge autrement.
 *
 * Reste une source NON corrigeable d'ici : les tailles nominatives par
 * module (.et_pb_text_N{font-size}) du bundle differe de CHAQUE page (texte
 * mesure passant de 15 a 54 px a l'arrivee de la feuille). La solution est
 * un reglage Divi (desactiver le differe), pas une regle de socle.
 * ------------------------------------------------------------------------ */

/* (a) Pied de page : BLOC RETIRE le 31/08/2026, apres INCIDENT EN PRODUCTION.
 *
 * Ces trois regles recopiaient les numeros de section generes par Divi
 * (.et_pb_section_0_tb_footer / _1_tb_footer). Or ces numeros ne sont PAS
 * stables : une modification du gabarit dans le Theme Builder les
 * RENUMEROTE. C'est arrive : apres une retouche, Divi masquait la section 0
 * sur ordinateur pendant que ce bloc masquait la section 1 — les deux
 * sections cachees, PLUS DE PIED DE PAGE, a toutes les largeurs.
 *
 * Le gain etait par ailleurs nul en mesure (le pied est hors de la zone
 * visible au chargement, il ne pesait sur aucun decalage mesure).
 *
 * LECON GENERALE : ne jamais recopier dans une feuille maintenue a la main
 * un numero de section genere par le constructeur. Ce qui vaut ici vaut pour
 * l'en-tete (section 0 de ce fichier), qui garde cette dependance parce que
 * son gain, lui, est mesure — mais qui doit etre RE-VERIFIE apres toute
 * modification du Theme Builder. Le controle le verifie desormais. */
/* (b) SUPPRIME en V3. La V2 dupliquait ici les dimensions de l'en-tete
   mobile depuis et-core-unified. Correction du coordinateur, verifiee : cette
   feuille N'EST PAS differee (link rel=stylesheet ordinaire). Ces regles
   s'appliquaient donc deja au premier rendu ; les dupliquer n'apportait rien.
   La cause reelle du decalage est traitee en section 10. */


/* --------------------------------------------------------------------------
 * 7. ECHELLE TYPOGRAPHIQUE FLUIDE
 *
 * Les 12 crans du jeton (section 1) prennent le pouvoir sur les pixels figes
 * du theme enfant (h1 55/80, h2 50/65, h3 45/45) et sur la media query
 * min-device-width (h1 50/40 !), qui se retrouve entierement recouverte :
 * (0,0,2) bat ses (0,0,1) a toutes les largeurs, avec des interlignes SANS
 * unite. Les reglages nominatifs par module (!important) survivent. Leur
 * purge se fera page par page, plus tard.
 *
 * Le poids 500 sur mark_problack est voulu : la famille n'a qu'une graisse,
 * 500 evite tout faux-gras synthetique (meme methode que le CSS NEO en prod).
 * ------------------------------------------------------------------------ */
body h1, body h2, body h3 {
  font-family: var(--police-titres);
  font-weight: 500;
  line-height: 1.12;
}
body h1 { font-size: var(--taille-d1); }
body h2 { font-size: var(--taille-d2); }
body h3 { font-size: var(--taille-t2); line-height: 1.35; }
body h4 { font-family: var(--police-titres); font-weight: 500; font-size: 17px;   line-height: 1.4; }
body h5 { font-family: var(--police-titres); font-weight: 500; font-size: 15px;   line-height: 1.4; }
body h6 { font-family: var(--police-medium); font-weight: 500; font-size: 13.5px; line-height: 1.4; }
/* PAS de font-size ni de line-height sur « p » — c'est deliberе et c'est
   important. Divi pose la taille SUR LE MODULE (.et_pb_text_0{font-size:20px})
   et le paragraphe en HERITE. Or une declaration directe sur « p », meme a
   specificite nulle, bat toujours un heritage : la regle ecrasait donc en
   silence la typographie propre a chaque module sur les 226 contenus.
   Constate sur /restaurant/ : 16px/34px devenus 15px/27px.
   Le cran de corps est porte par html body (section 2) ; les modules qui
   declarent leur propre taille la gardent, ceux qui n'en declarent pas
   heritent du cran NEO. */

/* Tailles en colonne etroite, reposees explicitement. Sinon les regles Divi
   (.et_pb_column_1_3 h2{23px}, specificite 0,1,1) regagnent en silence. */
body .et_pb_column_1_2 h2,
body .et_pb_column_1_3 h2,
body .et_pb_column_1_4 h2 { font-size: var(--taille-d2r); }
body .et_pb_column_1_3 h1,
body .et_pb_column_1_4 h1 { font-size: var(--taille-t1); }
body .et_pb_column_1_3 h3,
body .et_pb_column_1_4 h3 { font-size: var(--taille-t3); }

/* Les titres des cartes d'article (55px/55px via le CSS Theme Options !)
   redescendent au cran t2. Cartes seules. Le titre du single-post releve du
   gabarit d'article, pas de cette regle. */
body .et_pb_post .entry-title { font-size: var(--taille-t2); line-height: 1.35; }


/* --------------------------------------------------------------------------
 * 8. RYTHME DE SECTION
 *
 * 96 px debout, 70 px sous 980 px : le souffle NEO au lieu des 54 px Divi.
 * Les sections a padding nominatif (0,2,0 dans les bundles par page) gardent
 * leur reglage : (0,1,1) ne les combat pas, c'est voulu. L'en-tete et le
 * pied de page Theme Builder sont exclus par :where() a specificite nulle.
 * ------------------------------------------------------------------------ */
body .et_pb_section:where(:not([class*="tb_header"]):not([class*="tb_footer"])) {
  padding: 96px 0;
}
@media (max-width: 980px) {
  body .et_pb_section:where(:not([class*="tb_header"]):not([class*="tb_footer"])) {
    padding: 70px 0;
  }
}


/* --------------------------------------------------------------------------
 * 9. LE TRAIT : REGLE DE CHARTE, TRANCHEE
 *
 * « Le trait ne s'applique qu'a ce qui ne se lit pas. »
 *
 * - Les TITRES en creux (.neo-o sur clair, .neo-ow sur sombre) passent en
 *   plein : degrade framboise vers prune sur clair, blanc sur sombre. La
 *   hierarchie ligne pleine / seconde ligne demeure, portee desormais par
 *   le degrade, comme sur les pages historiques depuis la V1. Un titre se
 *   lit ; le creux se paie en lisibilite (trait de 2 px sur fond graine,
 *   amenuise aux tailles mobiles).
 *
 * - Les CHIFFRES-DECOR (01 a 06 des .neo-check/.neo-act, .st-num, .qr-time,
 *   .st-big, .drv-big) GARDENT leur trait : ce sont des compteurs en
 *   filigrane, pas du texte a lire. Pleins, a 36-54 px, ils crieraient plus
 *   fort que le contenu qu'ils accompagnent. AUCUNE regle ici : on ne
 *   touche pas a ce qui est juste.
 *
 * Specificite (1,1,1) : bat les .page-id-NNN .neo-o (0,2,0) des blocs
 * <style> embarques sans les rouvrir, quel que soit l'ordre du document.
 * ------------------------------------------------------------------------ */
body #page-container .neo-o {
  -webkit-text-stroke: 0;
  color: var(--neo-framboise);
  -webkit-text-fill-color: var(--neo-framboise);
}
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  body #page-container .neo-o {
    background-image: var(--deg-titre);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}
body #page-container .neo-ow {
  -webkit-text-stroke: 0;
  color: #fff;
  -webkit-text-fill-color: #fff;
}

/* PARTI B, « tout plein », y compris les chiffres. Je ne le recommande PAS ;
   bloc fourni uniquement pour la capture comparative d'Emmanuel. L'activer =
   decommenter, capturer, recommenter. S'il etait retenu, il faudrait ensuite
   affiner par contexte (les chiffres sur sombre exigent le blanc).
body #page-container .neo-check b,
body #page-container .neo-act b,
body #page-container .st-num,
body #page-container .qr-time,
body #page-container .st-big {
  -webkit-text-stroke: 0;
  color: var(--neo-framboise);
  -webkit-text-fill-color: var(--neo-framboise);
}
body #page-container .neo-dark .neo-check b,
body #page-container .neo-dark .neo-act b,
body #page-container .neo-ia .st-num,
body #page-container .drv-big {
  color: #fff;
  -webkit-text-fill-color: #fff;
}
*/

/* --------------------------------------------------------------------------
 * 10. EN-TETE MOBILE : RESERVATION DE LA HAUTEUR AU PREMIER RENDU
 *
 * RECALIBREE EN V4. Les valeurs V3 (188/145/102, images a 87 px) etaient
 * mesurees sur la preproduction au cache Divi degenere : le fichier differe
 * ampute avait perdu les contraintes de dimension de l'en-tete. Reference
 * desormais : LA PRODUCTION, mesuree a trois largeurs :
 *      section 89,2 px @375 - 91,6 px @390 - 112 px @768
 *      (rangee = hauteur du logo : 59,2 / 61,6 / 82 px)
 *
 * Avec les contraintes reelles recopiees en bloquant (section 0 ci-dessus)
 * et les attributs width/height presents sur le logo et les pastilles, le
 * premier rendu reserve correctement par lui-meme : largeur presentational
 * plafonnee par le module, hauteur par le ratio d'attributs. Deux filets
 * seulement :
 *
 * 1. Le burger : SEULE image du bloc sans attributs dans le HTML servi par
 *    la preproduction (naturel 86x85, rendu 44x43,5). Sans reservation, il
 *    rend 0 avant l'arrivee de son fichier. En production il porte des
 *    attributs (placeholder du lazy-load) : la regle y est neutre, elle
 *    impose les memes valeurs.
 * 2. Le plancher : minimum des hauteurs de rangee stabilisees mesurees en
 *    production (59,2 / 61,6 / 82) -> 59 px. Toujours inferieur ou egal a
 *    la hauteur stabilisee : aucun trou blanc possible.
 *
 * L'overlay du menu mobile (#myNav) est position:fixed, dimensionne sur la
 * fenetre, hors des sections d'en-tete : aucune de ces regles ne le touche.
 * ------------------------------------------------------------------------ */
@media (max-width: 980px) {
  body #page-container .et_pb_code_1_tb_header img {
    width: 44px;
    height: auto;
    aspect-ratio: 86 / 85;
  }
  body #page-container .et_pb_row_1_tb_header {
    min-height: 59px;
  }
}
/* Sur le palier tablette, la rangee stabilisee est CONSTANTE : le logo est a
   sa taille naturelle (204x82) des 768 px, donc rangee = 82 px sur tout
   768-980. Un plancher exact y est sur : jamais superieur au stabilise. */
@media (min-width: 768px) and (max-width: 980px) {
  body #page-container .et_pb_row_1_tb_header {
    min-height: 82px;
  }
}


/* --------------------------------------------------------------------------
 * 11. EN-TETE V5 — LE DESSIN
 *
 * Nouveau markup dans les modules et_pb_code du Theme Builder :
 *   - bureau  : entete-v5-desktop.html  -> et_pb_code_0_tb_header
 *   - mobile  : entete-v5-mobile.html   -> et_pb_code_1_tb_header
 *
 * DECISION D'EPURE : le nouvel en-tete garde EXACTEMENT la geometrie de
 * l'actuel — 130 px bureau (20 + barre 90 + 20), 89/92/112 px mobile (barre
 * mobile inchangee : memes modules image, meme burger 44 px). La section 10
 * et la sentinelle de controle-socle.js restent donc vraies par
 * construction. Ce qui change : la peau et la mecanique.
 *
 * Les regles de l'ancien en-tete (child-style.css : .wrapper, .nav-links,
 * .mega-box, .overlay ; Theme Options : #primary-nav, .sub-menu) deviennent
 * INERTES — aucun selecteur ne correspond plus au nouveau markup. Seul
 * `nav { margin:20px auto; z-index:99 }` (selecteur d'element) atteindrait
 * .neo-nav : ses valeurs sont reposees explicitement ici.
 *
 * Panneaux : ancres sous leur declencheur, cartes NEO (rayon 18, bordure
 * rose, ombre teintee), ouverture :hover / :focus-within (clavier), pont de
 * survol = padding-top transparent du panneau. Pas de photo, pas de bouton
 * concurrent du CTA.
 * ------------------------------------------------------------------------ */

/* -- la barre ------------------------------------------------------------ */
.neo-nav {
  position: relative;
  z-index: 95;
  width: 100%;
  margin: 20px auto;          /* repose la regle nav{} du theme enfant */
  background: transparent;
}
.neo-nav-barre {
  max-width: 1080px;
  height: 90px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 24px;
}
.neo-nav-logo { flex: 0 0 auto; line-height: 0; }
.neo-nav-logo img { width: 168px; height: auto; }

.neo-nav-menu {
  display: flex;
  align-items: center;
  gap: 2px;
  margin: 0 0 0 auto;
  padding: 7px 10px;
  list-style: none;
  background: #fff;
  border: 1px solid var(--neo-rose-bordure);
  border-radius: var(--rayon-pilule);
  box-shadow: var(--ombre-douce);
}
.neo-nav-item { position: relative; list-style: none; }

.neo-nav-lien {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 11px 16px;
  border: none;
  border-radius: var(--rayon-pilule);
  background: transparent;
  font-family: 'Mark Pro', 'mark_promedium', Helvetica, Arial, sans-serif;
  font-size: 15px;
  font-weight: 500;
  line-height: 1;
  color: var(--neo-encre);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--duree) ease, color var(--duree) ease;
}
.neo-nav-item:hover > .neo-nav-lien,
.neo-nav-item:focus-within > .neo-nav-lien {
  background: var(--neo-surface-rose);
  color: var(--neo-framboise);
}
.neo-nav-lien:focus-visible { outline: 2px solid var(--neo-framboise); outline-offset: 2px; }

.neo-nav-chev { flex: 0 0 auto; transition: transform var(--duree) ease; }
.neo-nav-item:hover .neo-nav-chev,
.neo-nav-item:focus-within .neo-nav-chev { transform: rotate(180deg); }

.neo-nav-cta {
  flex: 0 0 auto;
  display: inline-block;
  padding: 15px 28px;
  border-radius: var(--rayon-pilule);
  background: var(--deg-bouton);
  color: #fff;
  font-family: 'Mark Pro', 'mark_promedium', Helvetica, Arial, sans-serif;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  box-shadow: var(--ombre-bouton);
  transition: transform var(--duree) ease, box-shadow var(--duree) ease, background var(--duree) ease;
}
.neo-nav-cta:hover {
  background: var(--deg-bouton-survol);
  transform: translateY(-2px);
  box-shadow: var(--ombre-bouton-survol);
  color: #fff;
}

/* -- les panneaux ancres --------------------------------------------------- */
.neo-pan {
  position: absolute;
  top: 100%;
  left: 50%;
  z-index: 60;
  padding-top: 14px;          /* pont de survol transparent */
  opacity: 0;
  visibility: hidden;
  transform: translateX(-50%) translateY(6px);
  transition: opacity var(--duree) ease, transform var(--duree) ease,
              visibility 0s linear var(--duree);
}
.neo-nav-item:hover > .neo-pan,
.neo-nav-item:focus-within > .neo-pan {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
  transition: opacity var(--duree) ease, transform var(--duree) ease;
}
.neo-pan-carte {
  background: #fff;
  border: 1px solid var(--neo-rose-bordure);
  border-radius: var(--rayon-cadre);
  box-shadow: var(--ombre-carte);
  padding: 18px;
}

.neo-pan-solutions { width: min(660px, 92vw); }
.neo-pan-solutions .neo-pan-carte {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: min-content;
  column-gap: 22px;
}
.neo-pan-commander { grid-row: 1 / span 2; }
.neo-pan-solutions .neo-pan-pied { grid-column: 1 / -1; }

.neo-pan-metiers { width: min(400px, 92vw); }
.neo-pan-petit   { width: min(360px, 92vw); }

.neo-pan-titre {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 8px 12px 4px;
  font-family: 'Mark Pro', 'mark_promedium', Helvetica, Arial, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--neo-framboise);
}
.neo-pan-titre::before {
  content: '';
  flex: 0 0 8px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--deg-point);
}

.neo-pan-lien {
  display: block;
  padding: 9px 12px;
  border-radius: var(--rayon-encart);
  text-decoration: none;
  transition: background var(--duree) ease;
}
.neo-pan-lien:hover { background: var(--neo-surface-rose); }
.neo-pan-lien > span,
.neo-pan-texte > span {
  display: block;
  font-family: 'Mark Pro', 'mark_promedium', Helvetica, Arial, sans-serif;
  font-size: 14.5px;
  font-weight: 700;
  line-height: 1.3;
  color: var(--neo-encre);
}
.neo-pan-lien:hover > span,
.neo-pan-lien:hover .neo-pan-texte > span { color: var(--neo-framboise); }
.neo-pan-lien small,
.neo-pan-texte small {
  display: block;
  margin-top: 2px;
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--neo-texte-doux);
}

.neo-pan-picto { display: flex; align-items: center; gap: 12px; }
.neo-pan-picto img { flex: 0 0 36px; width: 36px; height: 36px; }

.neo-pan-pied {
  margin: 10px 0 0;
  padding: 12px 12px 2px;
  border-top: 1px solid var(--neo-rose-bordure);
  text-align: right;
}
.neo-pan-pied a {
  font-size: 13px;
  font-weight: 700;
  color: var(--neo-framboise);
  text-decoration: none;
}
.neo-pan-pied a:hover { text-decoration: underline; }

/* Sous 981 px la section bureau est masquee (section 0) : rien a faire ici. */

/* -- le panneau mobile #myNav --------------------------------------------- */
#myNav.neo-mob {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  padding: 16px 22px 22px;
  overflow-y: auto;
  background-color: var(--neo-fond-sombre);
  background-image: radial-gradient(900px 500px at 80% -10%, rgba(203,33,74,.30), transparent 60%),
                    radial-gradient(760px 460px at 6% 110%, rgba(129,43,112,.38), transparent 62%);
  transform: translateX(102%);
  visibility: hidden;
  transition: transform .3s ease, visibility 0s linear .3s;
}
#myNav.neo-mob.ouvert {
  transform: none;
  visibility: visible;
  transition: transform .3s ease;
}

.neo-mob-haut {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 14px;
}
.neo-mob-marque {
  font-family: 'mark_problack', 'Mark Pro', Helvetica, Arial, sans-serif;
  font-size: 27px;
  color: #fff;
  text-decoration: none;
  line-height: 1;
}
.neo-mob-marque span { color: var(--neo-rose-vif); }
.neo-mob-fermer {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 50%;
  background: rgba(255,255,255,.07);
  color: #fff;
  cursor: pointer;
}

.neo-mob-nav { flex: 1 1 auto; }
.neo-mob-groupe { border-bottom: 1px solid rgba(255,255,255,.14); }
.neo-mob-groupe summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 15px 2px;
  list-style: none;
  cursor: pointer;
  font-family: 'Mark Pro', 'mark_promedium', Helvetica, Arial, sans-serif;
  font-size: 18px;
  font-weight: 500;
  color: #fff;
}
.neo-mob-groupe summary::-webkit-details-marker { display: none; }
.neo-mob-chev { transition: transform var(--duree) ease; color: var(--neo-rose); }
.neo-mob-groupe[open] .neo-mob-chev { transform: rotate(180deg); }
.neo-mob-liens { padding: 2px 0 12px; }
.neo-mob-liens a {
  display: block;
  padding: 8px 2px 8px 16px;
  font-size: 15.5px;
  line-height: 1.4;
  color: var(--neo-rose);
  text-decoration: none;
}
.neo-mob-direct {
  display: flex;
  align-items: center;
  padding: 15px 2px;
  border-bottom: 1px solid rgba(255,255,255,.14);
  font-family: 'Mark Pro', 'mark_promedium', Helvetica, Arial, sans-serif;
  font-size: 18px;
  font-weight: 500;
  color: #fff;
  text-decoration: none;
}

.neo-mob-bas { padding-top: 18px; text-align: center; }
.neo-mob-cta {
  display: block;
  padding: 16px 28px;
  border-radius: var(--rayon-pilule);
  background: var(--deg-bouton);
  color: #fff;
  font-family: 'Mark Pro', 'mark_promedium', Helvetica, Arial, sans-serif;
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  box-shadow: var(--ombre-bouton);
}
.neo-mob-tel {
  display: block;
  margin-top: 14px;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  text-decoration: none;
}
.neo-mob-tel small {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  font-weight: 400;
  color: var(--neo-rose);
}
.neo-mob-social {
  display: flex;
  justify-content: center;
  gap: 14px;
  margin-top: 16px;
}
.neo-mob-social img { width: 34px; height: 34px; }

/* Le burger conserve sa geometrie (regle de reservation en section 10). */
.burger { cursor: pointer; }

/* --------------------------------------------------------------------------
 * 12. LISIBILITE DES TEXTES SECONDAIRES
 *
 * MESURE (30/08/2026, sur les 5 pages NEO servies) : trois teintes passaient
 * sous le seuil de contraste AA (4,5:1 pour du corps de texte).
 *
 *   #8A8390 sur blanc  = 3,66:1   legendes, sous-libelles   -> #726B78 (4,55)
 *   #8A8390 sur grain  = 3,25:1                             -> idem
 *   #C46A85 sur rose   = 3,28:1   sur-titres en capitales   -> #AC526D (4,51)
 *   #77707D sur #FBF7F8 = 4,49:1  descriptions de carte     -> #766F7C (4,56)
 *
 * Les valeurs de remplacement sont LES PLUS CLAIRES qui passent partout —
 * calculees, pas choisies a l'oeil : on corrige la lisibilite sans assombrir
 * l'ensemble ni changer le caractere des pages.
 *
 * Ces teintes sont ecrites EN DUR dans les blocs <style> des pages (avec
 * !important pour certaines). On les reprend donc ici a specificite
 * superieure : body[class] ajoute un cran de classe qui bat le .page-id-NNN
 * des regles d'origine. A supprimer le jour ou ces blocs seront repris.
 * ------------------------------------------------------------------------ */
html body[class] #page-container .qr-sub,
html body[class] #page-container .st-kpisub,
html body[class] #page-container .st-anon,
html body[class] #page-container .fid-quote-sub,
html body[class] #page-container .neo-mod span {
  color: #726B78 !important;
  -webkit-text-fill-color: #726B78;
}
html body[class] #page-container .neo-cap-l p,
html body[class] #page-container .st-kpi span {
  color: #AC526D !important;
  -webkit-text-fill-color: #AC526D;
}
html body[class] #page-container .neo-check p,
html body[class] #page-container .neo-kpis span,
html body[class] #page-container .neo-kpi-soon span {
  color: #766F7C !important;
  -webkit-text-fill-color: #766F7C;
}
