/* styles/gabarit-site.css — LE GABARIT DU BACK-OFFICE EST CELUI DU SITE. 22/09/2026.
 *
 * Christophe, après une soirée où j'ai repeint au lieu de recopier :
 *   « mais pourquoi tu reprends pas juste celui du site en fait…. » — « non, maintenant ».
 *
 * CE QUI EST FAIT ICI, ET RIEN D'AUTRE : les valeurs de l'aperçu du back-office qui
 * vit sur la page d'accueil (`.hv6-bo-*` dans index.html, le dessin qu'il a validé)
 * sont recopiées dans les briques du gabarit du back-office (`.gb-*`, happia-v5.css).
 * Brique pour brique :
 *     hv6-bo-mot      → gb-mot          (le mot de l'agent)
 *     hv6-bo-chiffre  → gb-chiffre      (les chiffres de tête)
 *     hv6-bo-jauge    → gb-barre        (une seule barre, au dégradé de la marque)
 *     hv6-bo-liste    → gb-liste        (la liste de ce que l'équipe dit)
 *     hv6-bo-ligne    → gb-ligne
 *     hv6-bo-etat     → gb-pastille / gb-etat
 *     hv6-bo-demande  → le champ « Demande quelque chose à ton équipe »
 *
 * ⚠️ AUCUN NOM DE CLASSE NE CHANGE, AUCUNE MÉCANIQUE N'EST TOUCHÉE. Les 33 écrans qui
 * portent le gabarit suivent tout seuls : c'était la promesse du système, on s'en sert.
 *
 * 🚨 ET ELLE DOIT ÊTRE SERVIE EN DERNIER. Le worker ajoute lui-même happia-v5.css à la
 * fin du <head> : une feuille posée avant se fait écraser. Elle est donc ajoutée par le
 * worker, juste après. (C'est l'erreur qui a coûté la soirée du 22.)
 */

/* ── 1 · LA PAGE ─────────────────────────────────────────────────────────── */
html body.hv5.clair{
  background-color:#fff !important;
  background-attachment:fixed !important;
  background-image:
    radial-gradient(900px 520px at 6% -8%, rgba(240,68,56,.30), rgba(240,68,56,0) 62%),
    radial-gradient(900px 520px at 94% -6%, rgba(49,85,217,.26), rgba(49,85,217,0) 64%),
    radial-gradient(900px 560px at 100% 104%, rgba(49,85,217,.18), rgba(49,85,217,0) 66%),
    radial-gradient(900px 560px at -4% 100%, rgba(240,68,56,.18), rgba(240,68,56,0) 66%) !important;
}
body.hv5.clair::before{ content:none !important }
body.hv5.clair .app, body.hv5.clair main, body.hv5.clair .main,
body.hv5.clair .gb-ecran{ background:transparent !important }

/* ── 2 · LE MOT DE L'AGENT (hv6-bo-mot) ──────────────────────────────────── */
body.hv5.clair .gb-mot{
  display:flex; gap:12px; align-items:flex-start;
  background:#fff !important; border:1px solid #E4E7EC !important;
  border-left:3px solid var(--ne-c,#2F5BEA) !important; border-radius:14px !important;
  padding:14px 16px !important; box-shadow:0 1px 2px rgba(23,23,23,.04) !important;
}
body.hv5.clair .gb-mot img{ width:40px; height:40px; border-radius:50%; object-fit:cover; flex:0 0 auto }
body.hv5.clair .gb-qui{
  font:700 11px Inter,"Inter Repli",Arial,sans-serif !important; letter-spacing:.08em !important;
  text-transform:uppercase !important; color:#5F5A53 !important;
}
body.hv5.clair .gb-qui span{ font-weight:500; letter-spacing:0; text-transform:none; color:#7A746C }
body.hv5.clair .gb-verdict{
  font:650 21px/1.35 Sora,"Sora Repli",Inter,"Inter Repli",Arial,sans-serif !important; letter-spacing:-.02em !important;
  color:#171717 !important; margin:4px 0 0 !important;
}
body.hv5.clair .gb-detail-mot{ font-size:13.5px !important; line-height:1.5 !important; color:#3F3B36 !important }

/* ── 3 · LES CHIFFRES DE TÊTE (hv6-bo-chiffre) ───────────────────────────── */
body.hv5.clair .gb-chiffres{ display:grid; grid-template-columns:repeat(auto-fit,minmax(0,1fr)); gap:8px; margin:12px 0 }
body.hv5.clair .gb-chiffre, body.hv5.clair .tb-cadran{
  background:#fff !important; border:1px solid #E4E7EC !important; border-radius:12px !important;
  padding:10px 12px !important; box-shadow:none !important;
}
body.hv5.clair .gb-chiffre small, body.hv5.clair .tb-cadran small{
  display:block; font-size:11px !important; color:#5F5A53 !important;
  letter-spacing:.08em; text-transform:uppercase; font-weight:600;
}
body.hv5.clair .gb-chiffre b, body.hv5.clair .tb-cadran b{
  display:block; font:650 20px/1.2 Sora,"Sora Repli",Inter,"Inter Repli",Arial,sans-serif !important;
  letter-spacing:-.02em !important; margin-top:2px !important; color:#171717 !important;
}
body.hv5.clair .gb-chiffre b span, body.hv5.clair .tb-cadran b span{ font-size:12px; color:#5F5A53; font-weight:500 }

/* ── 4 · LA BARRE (hv6-bo-jauge), au dégradé validé ──────────────────────── */
body.hv5.clair .gb-barre, body.hv5.clair .hv5-jauge, body.hv5.clair .gb-piste{
  height:5px !important; border-radius:999px !important; background:#EFEDE9 !important;
  margin-top:7px !important; overflow:hidden !important; display:block !important;
}
body.hv5.clair .gb-barre > i, body.hv5.clair .hv5-jauge > i, body.hv5.clair .gb-piste > i{
  display:block !important; height:100% !important; border-radius:999px !important;
  background:linear-gradient(90deg,#F04438,#3155D9) !important;
}

/* ── 5 · LA LISTE ET SES LIGNES (hv6-bo-liste / hv6-bo-ligne) ────────────── */
body.hv5.clair .gb-liste{
  background:#fff !important; border:1px solid #E4E7EC !important;
  border-radius:14px !important; overflow:hidden !important; box-shadow:0 1px 2px rgba(23,23,23,.04) !important;
}
/* CORRIGÉ le 23/09. J'avais recopié ici `display:grid` depuis la ligne du SITE, qui n'a
   qu'une colonne. Dans le back-office, `.gb-ligne` est un RANG à trois parties : le corps,
   la mesure (barre + compte) et le geste. En grid sans colonnes déclarées, les trois se
   sont empilés les uns sous les autres, sur tous les écrans qui s'en servent.
   C'est ce qui rendait « Tester dans les IA » illisible : huit marques sur trois étages
   chacune, un bouton pleine largeur sous chaque nom, et le « c'est toi » perdu au milieu.
   On revient au rang, comme happia-v5.css le prévoit. */
body.hv5.clair .gb-ligne{
  display:flex; align-items:center; gap:12px; padding:10px 14px !important;
  border-top:1px solid #EEF0F3 !important; background:transparent !important;
}
body.hv5.clair .gb-liste .gb-ligne:first-child{ border-top:0 !important }
body.hv5.clair .gb-ligne img{ width:26px; height:26px; border-radius:50%; object-fit:cover }
body.hv5.clair .gb-dit{ font-size:12.5px !important; color:#171717 !important }
body.hv5.clair .gb-dit b{ font-weight:600 }

/* ── 6 · LES PASTILLES D'ÉTAT ────────────────────────────────────────────
   CORRIGÉ le 22/09 au soir. J'avais recopié ici le traitement de `hv6-bo-etat`
   du site, qui est une ÉTIQUETTE DE TEXTE (un mot dans une gélule). Mais dans le
   back-office `.gb-pastille` est un POINT VIDE, posé avant un texte : lui donner
   un padding et un contour en faisait des gélules creuses de 18 px sur 12, et
   c'est ce qu'on voyait sur Mes réseaux devant « Bio complète ».
   Le point redevient un point ; seules les vraies étiquettes gardent la gélule. */
body.hv5 .gb-pastille{
  width:9px !important; height:9px !important; flex:none !important;
  padding:0 !important; border:0 !important; border-radius:999px !important;
  background:var(--etat, var(--v5-encre-3)) !important; display:inline-block;
}
body.hv5.clair .gb-etat-pastille, body.hv5.clair .hv5-etat{
  font-size:11px !important; font-weight:600 !important; border-radius:999px !important;
  padding:2px 9px !important; text-align:center; white-space:nowrap;
  background:transparent !important; border:1px solid currentColor !important;
}

/* ── 7 · LE BOUTON (hv6-bo-geste) ────────────────────────────────────────── */
body.hv5.clair .gb-geste{
  font-size:11.5px !important; font-weight:600 !important; color:#171717 !important;
  /* CORRIGÉ le 22/09 : le contour était corail, donc chaque bouton de l'écran
     tirait l'œil comme une alerte. Un geste se lit à l'encre ; le rouge reste
     réservé à ce qui ne va pas. */
  background:transparent !important; border:1px solid #171717 !important;
  border-radius:999px !important; padding:6px 14px !important; white-space:nowrap;
}
body.hv5.clair .gb-geste.doux{ border-color:#E4E7EC !important; color:#5F5A53 !important }

/* ── 8 · LE CHAMP « DEMANDE À TON ÉQUIPE » (hv6-bo-demande) ──────────────── */
body.hv5.clair .copilote-barre{
  background:#fff !important; border:1px solid #E4E7EC !important; border-radius:999px !important;
  padding:6px 6px 6px 16px !important;
}

/* ── 9 · LES TITRES ET SURTITRES ─────────────────────────────────────────── */
body.hv5.clair h1{ font:650 21px/1.2 Sora,"Sora Repli",Inter,"Inter Repli",Arial,sans-serif !important; letter-spacing:-.02em !important; color:#171717 !important }
body.hv5.clair .gb-titre, body.hv5.clair .tb-intitule{
  font:600 11px Inter,"Inter Repli",Arial,sans-serif !important; letter-spacing:.08em !important;
  text-transform:uppercase !important; color:#5F5A53 !important;
}

/* ── 10 · LA COULEUR D'AGENT NE REPEINT QUE SA SIGNATURE ─────────────────── */
body.hv5.clair.ne-teinte .app, body.hv5.clair.ne-teinte main, body.hv5.clair.ne-teinte .main{
  --v5-vert:#F04438; --v5-vert-2:#D93B30; --ne-texte:#171717; --ne-rgb-v:240,68,56; --ne-rgb:240,68,56;
}
body.hv5.clair .logo-marque, body.hv5.clair .logo-marque *{ filter:none !important; opacity:1 !important }

/* ── 11 · LES ONGLETS, COMME SUR LE SITE ─────────────────────────────────────
   L'onglet ouvert est un mot noir souligné, pas une pastille bleue pleine.
   (Le bleu venait de la couleur de l'agent posée sur un bouton plein.) */
body.hv5.clair .ne-pg{
  background:transparent !important; color:#5F5A53 !important; border:0 !important;
  border-radius:0 !important; padding:8px 14px !important; font-weight:500 !important;
}
body.hv5.clair .ne-pg.on, body.hv5.clair .ne-pg[aria-current="page"], body.hv5.clair .ne-pg.actif{
  color:#171717 !important; font-weight:600 !important; box-shadow:inset 0 -2px 0 #F04438 !important;
}
body.hv5.clair .ne-demander{ border:1px solid #F04438 !important; color:#171717 !important; background:transparent !important }
/* la pastille d'étape suit la même règle que les autres : un contour, pas un aplat */
body.hv5.clair .bc-etape{ background:transparent !important; color:#5F5A53 !important; border:1px solid #E4E7EC !important }
body.hv5.clair .bc-etape.on{ color:#171717 !important; border-color:#171717 !important; font-weight:600 !important }

/* ── 12 · LES TRACÉS, DANS LES DEUX THÈMES ───────────────────────────────────
   Christophe : « et les gros trucs oranges ? », puis « le blanc aussi ça part dans
   tous les sens ». Les anneaux étaient tracés à 14 px en corail plein et les barres
   prenaient la couleur de l'agent : à côté des filets d'un pixel du site, ça hurle.
   Ce n'est plus rattrapé ici à coups de !important sur un thème : les écrans posent
   eux-mêmes le dégradé de la marque (url(#gbDeg), déclaré par nav-equipe.js) sur ce
   qui est acquis, et de l'encre sur le reste. Il ne reste ici que les cases pleines,
   qui n'ont pas d'autre endroit où être dites. */
/* 04/10/2026 : ces deux règles visent les CASES (une case par réponse d'IA, vides de texte). Écrites
   sur la seule classe, elles repeignaient aussi tout ce qui porte « oui », « non » ou « vide » et
   contient un mot : les ronds des connecteurs du Profil devenaient des carrés noirs, les pastilles
   des IA de Mon blog aussi, et des « Chargement… » passaient sur fond gris. Une case est vide :
   `:empty` borne la règle à ce qu'elle visait. Cliquet : une-case-pleine-est-une-case-vide.test.mjs */
body.hv5 .main .oui:empty,
body.hv5 .app .main .oui:empty{ background:var(--v5-encre) !important; border-radius:4px !important }

body.hv5 .main .non:empty,
body.hv5 .main .vide:empty,
body.hv5 .app .main .non:empty,
body.hv5 .app .main .vide:empty{ background:var(--v5-filet-2) !important; border-radius:4px !important }

/* ── 13 · FIN DE LA FOIRE AUX COULEURS ───────────────────────────────────────
   Christophe, 22 h 28 : « je t'en supplie, comme le site ; là c'est la foire à la
   couleur dans tous les sens, c'est trop ».

   La cause n'était pas dans les écrans mais dans les JETONS : chaque état et chaque
   agent a un fond doux (`*-sol`) et un filet teinté (`*-fil`), et trois cents règles
   les posent en fond de carte. D'où des panneaux verts, roses, violets, ambrés, sur
   un même écran. Le site, lui, n'a qu'une seule surface : le blanc.

   On remet donc tous les fonds doux à blanc et tous les filets au gris du site, en un
   seul endroit. La couleur ne disparaît pas : elle se réfugie là où elle dit quelque
   chose — le TEXTE d'une pastille, son contour, les logos de marque, les visages. */
body.hv5.clair{
  --v5-vert-sol:#FFFFFF; --v5-ambre-sol:#FFFFFF; --v5-rouge-sol:#FFFFFF;
  --v5-succes-sol:#FFFFFF; --v5-neutre-sol:#FFFFFF; --v6-corail-sol:#FFFFFF;
  --v6-ag-direction-sol:#FFFFFF; --v6-ag-communication-sol:#FFFFFF; --v6-ag-seo-sol:#FFFFFF;
  --v6-ag-ia-sol:#FFFFFF; --v6-ag-site-sol:#FFFFFF; --v6-ag-analyse-sol:#FFFFFF;
  --v6-ag-veille-sol:#FFFFFF; --v6-ag-secretariat-sol:#FFFFFF;
  --v5-vert-fil:#E4E7EC; --v5-ambre-fil:#E4E7EC; --v5-rouge-fil:#E4E7EC;
  --v5-succes-fil:#E4E7EC; --v6-corail-fil:#E4E7EC;
}
/* les cartes ne portent plus de filet de couleur sur le côté : un seul filet gris,
   sauf le mot de l'agent, qui garde le sien — c'est sa signature. */
body.hv5.clair .gb-bloc, body.hv5.clair .gb-tuile, body.hv5.clair .card,
body.hv5.clair .gb-liste, body.hv5.clair .tb-cadran{
  border-color:#E4E7EC !important; border-left-color:#E4E7EC !important; background:#fff !important;
}
body.hv5.clair .gb-mot{ border-left-color:var(--ne-c,#2F5BEA) !important }
/* les onglets et filtres actifs : un mot noir sur un contour, jamais un aplat de la
   couleur de l'agent (c'est la dernière tache de couleur pleine du contenu). */
body.hv5.clair .main .tab.active, body.hv5.clair .main .tab.on,
body.hv5.clair .rvf-pill.on, body.hv5.clair .main .pill.on, body.hv5.clair .main .chip.on{
  background:#fff !important; color:#171717 !important;
  border:1px solid #171717 !important; font-weight:600 !important;
}

/* ── 14 · LE CLAIR REPREND LA RECETTE DU SOMBRE ──────────────────────────────
   Christophe, devant le back-office en sombre : « c'est canon », puis « on ne peut
   pas réussir à donner le même effet sur le clair ? ».

   POURQUOI LE SOMBRE MARCHE : le fond est une surface (#242321), la carte en est une
   autre (#302F2D), et l'écart entre les deux suffit à détacher chaque bloc sans un
   gramme de couleur. J'avais fait l'inverse en clair : fond blanc ET cartes blanches,
   donc plus rien ne se détachait, et la couleur revenait combler le vide.

   LE CLAIR APPLIQUE DONC LA MÊME RÈGLE, À L'ENDROIT : le fond devient crème, la carte
   reste blanc pur, et le dégradé de la marque passe par-dessus le crème. Même écart,
   mêmes filets, même discipline d'une seule couleur d'accent par écran. */
body.hv5.clair{
  --v5-fond:#F5F3EF;
  background-color:#F5F3EF !important;
  background-image:
    radial-gradient(900px 520px at 6% -8%, rgba(240,68,56,.22), rgba(240,68,56,0) 62%),
    radial-gradient(900px 520px at 94% -6%, rgba(49,85,217,.20), rgba(49,85,217,0) 64%),
    radial-gradient(900px 560px at 100% 104%, rgba(49,85,217,.14), rgba(49,85,217,0) 66%),
    radial-gradient(900px 560px at -4% 100%, rgba(240,68,56,.14), rgba(240,68,56,0) 66%) !important;
}
/* la carte se détache du fond, comme en sombre : blanc pur, filet fin, ombre douce */
body.hv5.clair .gb-bloc, body.hv5.clair .gb-liste, body.hv5.clair .gb-tuile,
body.hv5.clair .gb-mot, body.hv5.clair .card, body.hv5.clair .tb-cadran, body.hv5.clair .gb-chiffre{
  background:#FFFFFF !important;
  box-shadow:0 1px 2px rgba(23,23,23,.04), 0 1px 3px rgba(23,23,23,.05) !important;
}
/* CORRIGÉ le 23/09. Christophe, sur « Mon site » : « ça c'est illisible ».
   `.gb-detail` n'est pas une bulle secondaire, c'est le CONTENEUR d'une section :
   il porte le surtitre puis la carte. En lui donnant un fond, j'avais fabriqué un
   rectangle gris fantôme autour de chaque section, avec la carte blanche dedans et
   une bande grise qui dépassait à droite. Deux cadres imbriqués dont un qui ne veut
   rien dire. Un conteneur de section n'a pas de fond : le surtitre se pose sur la
   page, la carte porte le contenu.
   Le `:not(.gb-bloc)` compte : sur « Tester dans les IA », des sections portent
   les deux classes à la fois et sont, elles, de vraies cartes. */
body.hv5 .gb-detail:not(.gb-bloc):not(.card),
body.hv5.clair .gb-detail:not(.gb-bloc):not(.card){ background:transparent !important }
/* la bulle secondaire, elle, garde son fond légèrement en retrait */
body.hv5.clair .gb-bulle-2, body.hv5.clair .hv5-mini{ background:#FBFAF8 !important }

/* ── 15 · LE SOMBRE PREND LA MÊME DISCIPLINE ────────────────────────────────
   Christophe : « comment tu choisis les couleurs néon ??? c'est joli mais ça part
   dans tous les sens ». Elles ne sont pas choisies : deux systèmes se superposent.
   La teinte de l'agent (violet chez Neo, rose chez Yop…) peinte fort sur les
   cartes, PLUS les états éclaircis pour le fond foncé (#E8B656, #5FCB94, #F2877B).
   Quatre ou cinq couleurs vives par écran, sans hiérarchie.

   Même règle qu'en clair, donc : UNE seule couleur pleine par écran, celle de
   l'agent, et seulement sur sa signature. Les états redeviennent du texte et un
   contour fin. Le fond profond et les cartes qui s'en détachent, eux, ne bougent
   pas : c'est ce qui fait que le sombre est beau. */
body.hv5:not(.clair){
  --v5-ambre-sol:var(--v5-bulle); --v5-rouge-sol:var(--v5-bulle);
  --v5-vert-sol:var(--v5-bulle);  --v5-succes-sol:var(--v5-bulle);
  --v5-neutre-sol:var(--v5-bulle); --v6-corail-sol:var(--v5-bulle);
  --v6-ag-direction-sol:var(--v5-bulle); --v6-ag-communication-sol:var(--v5-bulle);
  --v6-ag-seo-sol:var(--v5-bulle); --v6-ag-ia-sol:var(--v5-bulle);
  --v6-ag-site-sol:var(--v5-bulle); --v6-ag-analyse-sol:var(--v5-bulle);
  --v6-ag-veille-sol:var(--v5-bulle); --v6-ag-secretariat-sol:var(--v5-bulle);
  --v5-ambre-fil:var(--v5-filet); --v5-rouge-fil:var(--v5-filet);
  --v5-vert-fil:var(--v5-filet); --v5-succes-fil:var(--v5-filet); --v6-corail-fil:var(--v5-filet);
}
/* les cartes reprennent le filet neutre et perdent leur halo de couleur */
body.hv5:not(.clair) .gb-bloc, body.hv5:not(.clair) .gb-liste, body.hv5:not(.clair) .gb-tuile,
body.hv5:not(.clair) .card, body.hv5:not(.clair) .tb-cadran, body.hv5:not(.clair) .gb-chiffre{
  background:var(--v5-bulle) !important;
  border-color:var(--v5-filet) !important; border-left-color:var(--v5-filet) !important;
  box-shadow:0 1px 2px rgba(0,0,0,.28) !important;
}
/* le mot de l'agent garde son filet : c'est sa signature, et la seule */
body.hv5:not(.clair) .gb-mot{
  background:var(--v5-bulle) !important; border-color:var(--v5-filet) !important;
  border-left:3px solid var(--ne-c,#8FB3FF) !important; box-shadow:0 1px 2px rgba(0,0,0,.28) !important;
}
/* les états : du texte et un contour, jamais un aplat */
body.hv5:not(.clair) .gb-pastille, body.hv5:not(.clair) .hv5-etat,
body.hv5:not(.clair) .gb-etat-pastille{
  background:transparent !important; border:1px solid currentColor !important; font-weight:600 !important;
}
/* une seule barre, au dégradé de la marque, comme en clair */
body.hv5:not(.clair) .gb-barre > i, body.hv5:not(.clair) .hv5-jauge > i,
body.hv5:not(.clair) .gb-piste > i{ background:linear-gradient(90deg,#F04438,#3155D9) !important }

/* ── 16 · LE THÈME NE SE COUPE PLUS EN DEUX ─────────────────────────────────
   Christophe : « quand on passe en mode sombre c'est pas tout en mode sombre,
   tu peux avoir une page sombre et la suivante blanche ».

   Vérifié : le serveur pose bien la même classe sur TOUS les écrans. Ce n'est donc
   pas le thème qui se perd, ce sont les écrans qui ne sont pas encore passés au
   gabarit : ils lisent les vieux jetons de espace-client.css et modern.css, où le
   fond et les cartes sont écrits en blanc DUR. Sur fond sombre, ils restent blancs.

   On remappe donc ces vieux jetons sur ceux du thème, une fois pour toutes. Un écran
   pas encore refait suit le thème quand même, au lieu de trouer la nuit. */
body.hv5:not(.clair){
  --bg:var(--v5-fond) !important;        --cream:var(--v5-fond) !important;
  --cream-2:var(--v5-bulle) !important;  --cream-3:var(--v5-bulle-2) !important;
  --surface:var(--v5-bulle) !important;  --surface-2:var(--v5-bulle-2) !important;
  --border:var(--v5-filet) !important;   --border-strong:var(--v5-filet) !important;
  --ink:var(--v5-encre) !important;      --ink-2:var(--v5-encre-2) !important;
  --ink-3:var(--v5-encre-3) !important;
  --m-cream:var(--v5-fond) !important;   --m-cream-2:var(--v5-bulle) !important;
  --m-cream-3:var(--v5-bulle-2) !important; --m-surface:var(--v5-bulle) !important;
  --m-border:var(--v5-filet) !important; --m-border-2:var(--v5-filet) !important;
  --m-ink:var(--v5-encre) !important;    --m-ink-2:var(--v5-encre-2) !important;
  --m-ink-3:var(--v5-encre-3) !important;
}
/* et l'inverse en clair : les vieux jetons suivent le crème du gabarit */
body.hv5.clair{
  --bg:#F5F3EF !important; --cream:#F5F3EF !important; --m-cream:#F5F3EF !important;
  --surface:#FFFFFF !important; --m-surface:#FFFFFF !important;
  --border:#E4E7EC !important; --m-border:#E4E7EC !important;
}

/* ── 17 · UNE DONNÉE N'A PAS DE COULEUR, ELLE A UNE VALEUR ──────────────────
   Christophe, en voyant « Qui porte ton plan » : « le blanc aussi ça part dans tous
   les sens ». Ce qui restait, ce sont les GRAPHIQUES : une barre par agent, chacune
   dans la couleur de l'agent (vert, bleu, turquoise, rose, violet), plus une légende
   vert / orange pour les citations. Cinq teintes dans un seul bloc, et aucune ne dit
   rien de plus que la longueur de la barre.

   Dans le CONTENU, les huit couleurs d'agent deviennent donc de l'encre. Elles
   restent intactes dans la bande du haut, là où elles servent à reconnaître
   quelqu'un. Deux niveaux de gris suffisent à séparer deux séries ; le rouge ne
   sert plus qu'à ce qui alerte. */
body.hv5 .main, body.hv5 main, body.hv5 .app > .main{
  --v6-ag-direction:var(--v5-encre);     --v6-ag-communication:var(--v5-encre);
  --v6-ag-seo:var(--v5-encre);           --v6-ag-ia:var(--v5-encre);
  --v6-ag-site:var(--v5-encre);          --v6-ag-analyse:var(--v5-encre);
  --v6-ag-veille:var(--v5-encre);        --v6-ag-secretariat:var(--v5-encre);
  --v5-succes:var(--v5-encre);           --v5-violet:var(--v5-encre-3);
  /* toute la famille, pas seulement la teinte de base : `.ok` lisait --v5-succes-txt,
     et le « 58 » d'un bloc « ok » restait vert. */
  --v5-succes-txt:var(--v5-encre);       --v5-succes-2:var(--v5-encre-2);
  --v5-succes-encre:var(--v5-fond);      --v5-succes-doux:var(--v5-filet-2);
  --v5-succes-fil:var(--v5-filet);
  --v5-ciel:var(--v5-encre-3);           --v5-rose:var(--v5-encre-3);
}
/* les barres de classement ne prennent plus la couleur de l'agent ; leur
   traitement définitif est en section 22. */
body.hv5 .main .bar-row .bar i,
body.hv5 .main [class*="qui-porte"] i,
body.hv5 .app .main .bar-row .bar i,
body.hv5 .app .main [class*="qui-porte"] i{ background:var(--v5-encre) !important }

/* Le verdict d'un bloc (« ok » / « problème ») était encore une couleur pleine :
   #12B76A et #F79009, écrits en dur pour le thème clair. Un bloc qui va bien n'a
   pas besoin d'être vert — il n'a rien à signaler. Seul ce qui alerte garde une
   couleur, et c'est le rouge de la marque. */
body.hv5 .main, body.hv5 main, body.hv5 .app > .main{ --gb-alerte:#F04438 }

body.hv5 .main .gb-bloc.ok,
body.hv5.clair .main .gb-bloc.ok,
body.hv5 .main .gb-tuile.bon,
body.hv5.clair .main .gb-tuile.bon,
body.hv5 .app .main .gb-bloc.ok,
body.hv5.clair .app .main .gb-bloc.ok,
body.hv5 .app .main .gb-tuile.bon,
body.hv5.clair .app .main .gb-tuile.bon{ --c:var(--v5-encre); --t:var(--v5-encre) }

body.hv5 .main .gb-bloc.probleme,
body.hv5.clair .main .gb-bloc.probleme,
body.hv5 .main .gb-tuile.surveiller,
body.hv5.clair .main .gb-tuile.surveiller,
body.hv5 .app .main .gb-bloc.probleme,
body.hv5.clair .app .main .gb-bloc.probleme,
body.hv5 .app .main .gb-tuile.surveiller,
body.hv5.clair .app .main .gb-tuile.surveiller{ --c:var(--gb-alerte); --t:var(--gb-alerte) }

body.hv5 .main .gb-bloc-ch.probleme b,
body.hv5 .app .main .gb-bloc-ch.probleme b{ color:var(--gb-alerte) }

/* ═══════════════════════════════════════════════════════════════════════════
   18 · LA TYPOGRAPHIE DU GABARIT
   Christophe, en montrant cinq tableaux de bord qu'il trouve beaux : ce qu'ils
   ont en commun, ce n'est pas « de la couleur », c'est une seule rampe et de
   grands mots. Le back-office avait la bonne grammaire mais pas la bonne voix :
   tout était en Inter,"Inter Repli",à la même taille, et rien ne se détachait.
   Le titre d'écran et la conclusion d'un bloc passent donc en Sora,"Sora Repli",comme les
   titres du site ; le surtitre reste un petit mot capitale, très espacé.
   Rien d'autre ne change : mêmes blocs, mêmes mots, même ordre.
   ═══════════════════════════════════════════════════════════════════════════ */
body.hv5 .main h1, body.hv5 .gb-titre h1, body.hv5 .dh-mots h1{
  font-family:var(--pf-head) !important; font-weight:600 !important;
  font-size:30px !important; line-height:1.15 !important; letter-spacing:-.025em !important;
}
body.hv5 .gb-sujet, body.hv5 .cop-sub{
  display:block; font-size:15px; line-height:1.55; color:var(--v5-encre-2); max-width:640px;
}
body.hv5 .gb-et, body.hv5 .tb-intitule{
  font-family:Inter,"Inter Repli",system-ui,sans-serif; font-size:10.5px; font-weight:600;
  letter-spacing:.11em; text-transform:uppercase; color:var(--v5-encre-3);
}
body.hv5 .gb-concl{
  font-family:var(--pf-head); font-weight:600; font-size:17px; line-height:1.4;
  letter-spacing:-.015em; color:var(--v5-encre);
}
body.hv5 .gb-bloc-l, body.hv5 .tb-pied, body.hv5 .gb-note{
  font-size:12.5px; line-height:1.55; color:var(--v5-encre-3);
}

/* ═══════════════════════════════════════════════════════════════════════════
   19 · LA CARTE RESPIRE
   Les références qu'il a choisies tiennent surtout à ça : des coins larges, une
   ombre qu'on ne voit pas mais qui décolle la carte, et de l'air dedans.
   ═══════════════════════════════════════════════════════════════════════════ */
body.hv5 .gb-bloc, body.hv5 .gb-liste, body.hv5 .gb-tuile, body.hv5 .gb-mot,
body.hv5 .tb-cadran, body.hv5 .tb-carte, body.hv5 .rs-panel, body.hv5 .bc{
  border-radius:20px !important;
}
body.hv5.clair .gb-bloc, body.hv5.clair .gb-mot, body.hv5.clair .tb-cadran,
body.hv5.clair .tb-carte, body.hv5.clair .rs-panel, body.hv5.clair .bc{
  box-shadow:var(--v5-verre-ombre) !important; /* 28/09 : l'ombre teintée de la page */
}
body.hv5 .rs-tuile, body.hv5 .gb-ligne, body.hv5 .champ{ border-radius:16px !important }

/* ═══════════════════════════════════════════════════════════════════════════
   20 · L'ACCENT DE L'AGENT
   Christophe : « LinkedIn, TikTok et Facebook restent noirs, par contre
   "choisis un réseau" peut passer rose », puis « pas toute la phrase, juste ce
   que je t'ai dit ».

   La règle qui en sort : le nom d'une marque est une donnée, il se lit à l'encre
   et son logo suffit à la reconnaître. La couleur de l'agent de l'écran ne prend
   QUE le groupe de mots qui porte le point, à l'intérieur d'une conclusion, et
   jamais plus d'un par bloc. C'est le seul endroit du contenu où une couleur
   d'agent a le droit d'apparaître.
   ═══════════════════════════════════════════════════════════════════════════ */
/* --ag est posée par nav-equipe.js, mesurée pour rester lisible sur une carte. */
body.hv5 .ag{ color:var(--gb-accent, var(--v5-encre)) }

/* ═══════════════════════════════════════════════════════════════════════════
   21 · UN TRACÉ NE PORTE JAMAIS DE COULEUR
   Christophe, devant l'anneau des bios : « pourquoi le donut est aussi gras ???
   et avec du orange ? ». Il était tracé à 12 px sur un rayon de 34, soit un
   tiers de trait, et le rouge de la marque étalé sur cette épaisseur vire à
   l'orange. Un aplat de couleur sur un tracé crie toujours plus fort que
   l'information qu'il porte.
   Les tracés du contenu sont donc fins et à l'encre ; seul un MOT peut alerter.
   ═══════════════════════════════════════════════════════════════════════════ */
body.hv5 .main svg circle[stroke-width],
body.hv5 .main svg path[stroke-width],
body.hv5 .app .main svg circle[stroke-width],
body.hv5 .app .main svg path[stroke-width]{
  stroke-width:6px !important; stroke-linecap:round !important;
}
body.hv5 .gb-anneau circle.fond{ stroke:var(--v5-filet-2) !important }
body.hv5 .gb-anneau circle.trait{ stroke:var(--v5-encre) !important }

/* ═══════════════════════════════════════════════════════════════════════════
   22 · LES BARRES DE DONNÉES, AU DÉGRADÉ DE LA MARQUE
   Le seul endroit où la rampe corail → bleu apparaît dans le contenu. Elle ne
   juge pas : elle dit « voilà ce qui est acquis ». La piste reste neutre.
   ═══════════════════════════════════════════════════════════════════════════ */
/* `:not([style*="background"])` : une barre à qui l'écran a déjà donné sa couleur
   en ligne garde la sienne. Sur « Où tu en es », la première barre dit ce qui est
   acquis (dégradé) et la seconde ce que les IA en font (encre) : les confondre
   effacerait justement l'écart que le bloc sert à montrer. */
body.hv5 .main .gb-barre > i:not([style*="background"]),
body.hv5 .main .tb-piste > i:not([style*="background"]),
body.hv5 .main .tb-charge span.b i:not([style*="background"]),
body.hv5 .main .gb-piste > i:not([style*="background"]),
body.hv5 .app .main .gb-barre > i:not([style*="background"]),
body.hv5 .app .main .tb-piste > i:not([style*="background"]),
body.hv5 .app .main .tb-charge span.b i:not([style*="background"]),
body.hv5 .app .main .gb-piste > i:not([style*="background"]){
  background:linear-gradient(90deg,#F04438,#3155D9) !important;
}

body.hv5 .main .gb-barre,
body.hv5 .main .tb-piste,
body.hv5 .main .tb-charge span.b,
body.hv5 .main .gb-piste,
body.hv5 .app .main .gb-barre,
body.hv5 .app .main .tb-piste,
body.hv5 .app .main .tb-charge span.b,
body.hv5 .app .main .gb-piste{
  background:var(--v5-filet-2) !important;
}

/* ═══════════════════════════════════════════════════════════════════════════
   23 · L'AMBRE SORT DU CONTENU
   Christophe, sur Mes réseaux déployé : « encore du orange ».

   Il restait quatre sources, et toutes les quatre venaient du même endroit :
   le jeton `--v5-ambre` (#DC6803) que la section 17 n'avait pas remappé, et la
   couleur d'agent que la section 10 ramène au corail.

     1. l'arc « à réécrire » de l'anneau des bios      → stroke="var(--v5-ambre)"
     2. la pastille de sa légende                       → --k:var(--v5-ambre)
     3. « il y a 21 j » sous une tuile                  → .rs-am
     4. les bandes de posts et la tuile choisie         → rgb(var(--ne-rgb-v))

   On applique la règle déjà tenue ailleurs : UN TRACÉ NE PORTE JAMAIS DE
   COULEUR, SEUL UN MOT PEUT ALERTER. L'ambre devient donc le rouge de la marque
   partout où c'est un mot, et de l'encre partout où c'est un trait. Les bandes
   de posts, elles, ne sont pas une alerte : elles comptent, donc encre.
   ═══════════════════════════════════════════════════════════════════════════ */
body.hv5 .main, body.hv5 main, body.hv5 .app > .main{
  --v5-ambre:#F04438;      --v5-ambre-txt:#F04438;   --v5-ambre-2:#D93B30;
  --v5-ambre-encre:#FFFFFF; --v5-ambre-doux:#F04438;
}
/* les traits : l'anneau se lit en trois valeurs d'encre, pas en trois couleurs */
body.hv5 .main svg circle[stroke*="ambre"],
body.hv5 .main svg path[stroke*="ambre"],
body.hv5 .app .main svg circle[stroke*="ambre"],
body.hv5 .app .main svg path[stroke*="ambre"]{
  stroke:var(--v5-encre-3) !important;
}

body.hv5 .main svg rect[fill*="ambre"],
body.hv5 .main svg polygon[fill*="ambre"],
body.hv5 .app .main svg rect[fill*="ambre"],
body.hv5 .app .main svg polygon[fill*="ambre"]{
  fill:var(--v5-encre-3) !important;
}

body.hv5 .main [style*="--v5-ambre"]::before,
body.hv5 .app .main [style*="--v5-ambre"]::before{ background:var(--v5-encre-3) !important }
/* les bandes de posts comptent, elles n'alertent pas */
body.hv5 .main .rs-pub i.on,
body.hv5 .main .mini-bar i,
body.hv5 .main .ia-row .bar i,
body.hv5 .app .main .rs-pub i.on,
body.hv5 .app .main .mini-bar i,
body.hv5 .app .main .ia-row .bar i{ background:var(--v5-encre) !important }
/* ce qui est choisi prend la couleur de l'agent de l'écran, pas le corail */
body.hv5 .main .rs-tuile.sel,
body.hv5 .main .rs-cartes .rs-tuile.sel,
body.hv5 .app .main .rs-tuile.sel,
body.hv5 .app .main .rs-cartes .rs-tuile.sel{
  border-color:var(--gb-accent) !important; box-shadow:0 0 0 1px var(--gb-accent) !important;
}
/* (le point d'état est traité en section 6) */
body.hv5 .rs-tous-points .gb-pastille{ width:9px !important; height:9px !important }

/* ═══════════════════════════════════════════════════════════════════════════
   24 · UNE SEULE PRÉSENTATION D'AGENT, SUR TOUS LES ÉCRANS
   Christophe : « pourquoi on n'a pas la même barre de présentation partout pour
   chaque agent, et pourquoi le texte s'arrête au milieu au lieu de continuer ? ».

   Les deux réponses sont dans le même endroit.

   D'ABORD, IL Y A DEUX COMPOSANTS, PAS UN. Les écrans déjà passés au gabarit V6
   portent `data-agent-parle` sur leur <main> et affichent `agent-parle.js` : le
   visage rond, le prénom, le métier, la phrase. Les autres reçoivent
   `bandeau-agent.js`, qui pose un `.ba-bandeau` — une bande sans visage, avec le
   prénom à gauche en colonne. Deux habillages pour la même chose, donc l'écran
   change de tête selon qu'il a été refait ou non.

   ENSUITE, LE TEXTE S'ARRÊTE PARCE QU'IL A UN PLAFOND : `.ba-mot` porte un
   `max-width:62ch`. Dans une carte en colonne c'est une bonne mesure de lecture ;
   dans cette bande en ligne, ça laisse cinq cents pixels de vide avant le bouton.

   On ne touche ni au script, ni aux mots, ni au bouton : on rhabille le bandeau
   comme le mot de l'agent, et on retire le plafond là où il ne sert plus.
   ═══════════════════════════════════════════════════════════════════════════ */
/* `.ba-bandeau.ba-calme` est plus spécifique dans happia-v5.css : on reprend la
   même spécificité pour le conteneur aussi, sinon le visage reste centré. */
body.hv5 .ba-bandeau, body.hv5 .ba-bandeau.ba-calme{
  display:flex !important; align-items:flex-start !important; gap:16px !important;
  background:var(--v5-bulle) !important; color:var(--v5-encre) !important;
  border:1px solid var(--v5-filet) !important;
  border-left:3px solid var(--ne-c, var(--v5-filet)) !important;
  border-radius:20px !important; padding:20px 24px !important;
  margin:0 0 20px !important; min-height:0 !important; overflow:visible !important;
}
/* le visage : l'image debout, cadrée en rond sur la tête, comme le mot de l'agent */
/* `.ba-calme img.ba-debout{display:none}` est plus spécifique dans happia-v5.css :
   on reprend la même spécificité, sinon le visage reste caché. */
body.hv5 .ba-bandeau img.ba-debout,
body.hv5 .ba-bandeau.ba-calme img.ba-debout{
  display:block !important; order:-1; flex:none !important;
  width:44px !important; height:44px !important; margin:0 !important;
  align-self:flex-start !important;
  border-radius:50% !important; border:0 !important;
  background:var(--v5-bulle-2) !important;
  object-fit:cover !important; object-position:50% 50% !important;
}
body.hv5 .ba-bandeau .ba-c, body.hv5 .ba-bandeau.ba-calme .ba-c{
  display:block !important; flex:1 1 auto !important; min-width:0; padding:0 !important;
}
body.hv5 .ba-qui, body.hv5 .ba-bandeau.ba-calme .ba-qui{
  font-family:Inter,"Inter Repli",system-ui,sans-serif !important; font-size:11px !important; font-weight:600 !important;
  letter-spacing:.09em !important; text-transform:uppercase !important;
  color:var(--v5-encre-3) !important; opacity:1 !important; margin:0 0 5px !important;
}
body.hv5 .ba-bandeau .ba-p{
  font-family:var(--pf-head) !important; font-weight:600 !important;
  font-size:17px !important; line-height:1.4 !important; letter-spacing:-.015em !important;
  color:var(--v5-encre) !important; margin:0 0 8px !important;
}
body.hv5 .ba-mot, body.hv5 .ba-bandeau.ba-calme .ba-mot{
  max-width:none !important; margin:0 !important; opacity:1 !important;
  font-size:14.5px !important; line-height:1.6 !important; color:var(--v5-encre) !important;
}
body.hv5 a.ba-parler, body.hv5 .ba-bandeau.ba-calme a.ba-parler{
  margin-top:14px !important; padding:6px 14px !important;
  background:transparent !important; color:var(--v5-encre) !important;
  border:1px solid var(--v5-encre) !important; border-radius:999px !important;
  font-size:12.5px !important; font-weight:600 !important;
}
body.hv5 a.ba-parler:hover{ background:var(--v5-encre) !important; color:var(--v5-fond) !important }

/* ── 25 · LA TOURNÉE DES ÉCRANS, 22/09 AU SOIR ───────────────────────────
   Relevé écran par écran dans Chrome, sur le site en direct.

   · « Demander à … » avait un contour corail sur tous les écrans. Le bouton vit
     dans la bande de l'agent : il prend sa couleur, comme son visage.
   · les cases « pas cité » de la matrice avaient un fond gris EN PLUS de leur
     contour pointillé : elles se lisaient comme une case pleine, donc comme une
     citation. Le vide doit rester vide. */
body.hv5 .ne-demander{ border-color:var(--ne-c, var(--v5-encre)) !important }

body.hv5 .main .tb-mat .c.non,
body.hv5 .app .main .tb-mat .c.non{ background:transparent !important }

/* ── 26 · CE QUI EST CHOISI EST UN MOT, PAS UN APLAT ─────────────────────
   Sur « À faire », le filtre retenu était un pavé orange plein — la couleur de
   Pim posée sur un bouton. Même chose sur d'autres écrans avec d'autres
   familles de boutons que la section 13 ne nommait pas : `.filter-btn.active`,
   `.diff-btn.active`, les bascules de période, les puces de métrique.
   Un choix se marque par un mot à l'encre dans un contour fin, partout. */
body.hv5 .main .filter-btn.active,
body.hv5 .main .diff-btn.active,
body.hv5 .main .period-toggle button.active,
body.hv5 .main .range-tabs button.on,
body.hv5 .main .metric-select button.on,
body.hv5 .main .sw-chip.on,
body.hv5 .main .cmt-per.on,
body.hv5 .main .rvf-pill.on,
body.hv5 .main .toggle-pill.on,
body.hv5 .main .seg.on,
body.hv5 .main .tab.active,
body.hv5 .main .tab.on,
body.hv5 .main .pill.on,
body.hv5 .main .chip.on,
body.hv5 .app .main .filter-btn.active,
body.hv5 .app .main .diff-btn.active,
body.hv5 .app .main .period-toggle button.active,
body.hv5 .app .main .range-tabs button.on,
body.hv5 .app .main .metric-select button.on,
body.hv5 .app .main .sw-chip.on,
body.hv5 .app .main .cmt-per.on,
body.hv5 .app .main .rvf-pill.on,
body.hv5 .app .main .toggle-pill.on,
body.hv5 .app .main .seg.on,
body.hv5 .app .main .tab.active,
body.hv5 .app .main .tab.on,
body.hv5 .app .main .pill.on,
body.hv5 .app .main .chip.on{
  background:transparent !important; color:var(--v5-encre) !important;
  border:1px solid var(--v5-encre) !important; font-weight:600 !important;
  box-shadow:none !important;
}

/* ── 27 · « À FAIRE » : TROIS DERNIERS FOYERS DE COULEUR ─────────────────
   Relevé sur l'écran des actions, où la couleur revenait par trois chemins que
   les sections précédentes ne couvraient pas :

   · `.hv5-btn` — le bouton « Choisir » était un aplat plein dans la couleur d'un
     agent. Un bouton principal se lit à l'encre, comme sur la maquette validée.
   · `.ne-ag` — chaque ligne « par agent » pose `--c:<couleur de l'agent>` en
     ligne, et cette variable teintait les compteurs. Le visage et le prénom
     disent déjà de qui il s'agit ; la teinte ne fait que répéter.
   · `.hv5-bulle` — un filet vertical de couleur par agent sur chaque action.
     Même raison : la ligne porte déjà le visage et le prénom.
   La couleur d'agent reste intacte dans la bande du haut, où elle sert. */
body.hv5 .main .hv5-btn,
body.hv5 .main a.hv5-btn,
body.hv5 .app .main .hv5-btn,
body.hv5 .app .main a.hv5-btn{
  background:var(--v5-encre) !important; color:var(--v5-fond) !important;
  border:1px solid var(--v5-encre) !important; border-radius:999px !important;
}

body.hv5 .main .hv5-btn:hover,
body.hv5 .app .main .hv5-btn:hover{ background:var(--v5-encre-2) !important }

body.hv5 .main .ne-ag,
body.hv5 .app .main .ne-ag{ --c:var(--v5-encre) !important; --c-rgb:23,23,23 !important }

body.hv5 .main .hv5-bulle,
body.hv5 .app .main .hv5-bulle{ border-left-color:var(--v5-filet) !important }

/* ── 28 · LE KANBAN DES ACTIONS ──────────────────────────────────────────
   `actions.html` peint ses lignes avec un sélecteur d'identifiant (`#kanban`),
   qui passe devant toute règle de classe : le bouton « Choisir » restait un
   aplat plein dans la couleur de l'agent, et chaque ligne portait un filet
   vertical de 4 px de la même couleur. On reprend la même spécificité.
   Le lavis à 4 % reste : c'est une nuance, pas un aplat, et il aide à séparer
   les lignes ouvertes. Le visage garde son cerne — c'est lui qui identifie. */
body.hv5 #kanban .voie-action .hv5-btn.petit{
  background:var(--v5-encre) !important; border-color:var(--v5-encre) !important;
  color:var(--v5-fond) !important; border-radius:999px !important;
}
body.hv5 #kanban .hv5-bulle[data-poste]{ border-left-color:var(--v5-filet) !important }

/* ── 29 · LE TITRE D'ÉCRAN SE LIT COMME UNE PHRASE ───────────────────────
   `.gb-titre h1` était en capitales, et son sous-titre aussi : « MA FICHE
   GOOGLE / TA FICHE TELLE QUE GOOGLE LA SERT, COMPARÉE AUX FICHES QUI SORTENT
   DEVANT TOI… ». Trois lignes de capitales ne se lisent pas, elles se déchiffrent,
   et le site n'en met nulle part. On revient à la casse normale, celle de la
   maquette validée : le titre en Sora,"Sora Repli",le sujet en une phrase grise. */
body.hv5 .main h1, body.hv5 .gb-titre h1, body.hv5 .dh-mots h1{ text-transform:none !important }
body.hv5 .gb-sujet{ text-transform:none !important; letter-spacing:normal !important; font-weight:400 !important }

/* ── 30 · LA COULEUR DE L'AGENT S'ARRÊTE À LA BANDE ──────────────────────
   Écran après écran, la même couleur revenait par un chemin différent : une
   barre de calendrier, un bouton de kanban, un compteur, un filet de ligne.
   À chaque fois la source était la même variable, `--ne-c`, la couleur brute
   de l'agent, posée sur :root par nav-equipe.js et lue par des dizaines de
   règles dans les écrans.

   La section 10 avait déjà neutralisé ses dérivées (--v5-vert, --ne-texte,
   --ne-rgb, --ne-rgb-v) mais pas la racine. On la ramène donc à l'encre DANS
   LE CONTENU. Elle reste intacte sur `.app`, donc dans la bande du haut, les
   visages et la navigation, là où elle sert à reconnaître quelqu'un.

   Deux exceptions, rendues explicitement : le filet vertical du mot de l'agent
   et celui de son bandeau. C'est sa signature, et la seule qu'il garde ici.
   Elles lisent `--gb-accent`, que nav-equipe.js mesure pour rester lisible. */
body.hv5 .main,
body.hv5 main,
body.hv5 .app .main,
body.hv5 .app main{ --ne-c:var(--v5-encre) }

body.hv5 .main .gb-mot,
body.hv5 .main .ba-bandeau,
body.hv5 main .gb-mot,
body.hv5 main .ba-bandeau,
body.hv5 .app .main .gb-mot,
body.hv5 .app .main .ba-bandeau,
body.hv5 .app main .gb-mot,
body.hv5 .app main .ba-bandeau{
  border-left-color:var(--gb-accent, var(--v5-encre)) !important;
}

/* ── 31 · LES SEGMENTS DE BARRE ÉCRITS EN LIGNE ──────────────────────────
   Dernier chemin relevé, sur le calendrier : les segments d'une barre empilée
   sont peints par un style EN LIGNE, `background:rgba(var(--ne-rgb-v),.45)`.
   Comme la section 10 ramène ce triplet au corail, « publiées » se dessinait
   en corail translucide juste à côté de « date passée » en corail plein : deux
   rouges côte à côte, dont un qui n'alerte pas.

   Dans tout le back-office, le remplissage d'une barre est un <i>. On les
   ramène donc à l'encre quand ils lisent la couleur d'agent ; ceux qui lisent
   `--v5-ambre` gardent le rouge, puisque eux alertent vraiment. */
body.hv5 .main i[style*="background"][style*="ne-rgb-v"],
body.hv5 .main i[style*="background"][style*="ne-c"],
body.hv5 .main i[style*="background"][style*="--ag"],
body.hv5 .app .main i[style*="background"][style*="ne-rgb-v"],
body.hv5 .app .main i[style*="background"][style*="ne-c"],
body.hv5 .app .main i[style*="background"][style*="--ag"]{
  background:var(--v5-encre) !important;
}

/* ── 32 · LE SOMBRE SUIT LES MÊMES RÈGLES QUE LE CLAIR ───────────────────
   Les sections 9, 10 et 11 avaient été écrites en pleine urgence pour le thème
   clair, et ne s'appliquaient qu'à lui : en sombre, l'onglet ouvert restait une
   pastille bleue pleine, la pastille d'étape un aplat, et la couleur d'agent
   n'était pas ramenée à l'encre dans le contenu. Deux thèmes, deux grammaires,
   c'est exactement ce qu'on cherche à finir. Mêmes règles, jetons du thème. */
body.hv5:not(.clair).ne-teinte .app, body.hv5:not(.clair).ne-teinte main,
body.hv5:not(.clair).ne-teinte .main{
  --v5-vert:#F04438; --v5-vert-2:#D93B30;
  --ne-texte:var(--v5-encre); --ne-rgb-v:240,68,56; --ne-rgb:240,68,56;
}
body.hv5:not(.clair) .ne-pg{
  background:transparent !important; color:var(--v5-encre-2) !important; border:0 !important;
  border-radius:0 !important; padding:8px 14px !important; font-weight:500 !important;
}
body.hv5:not(.clair) .ne-pg.on, body.hv5:not(.clair) .ne-pg[aria-current="page"],
body.hv5:not(.clair) .ne-pg.actif{
  color:var(--v5-encre) !important; font-weight:600 !important;
  box-shadow:inset 0 -2px 0 var(--gb-accent, #F04438) !important;
}
body.hv5:not(.clair) .ne-demander{
  border:1px solid var(--ne-c, var(--v5-encre)) !important;
  color:var(--v5-encre) !important; background:transparent !important;
}
body.hv5:not(.clair) .bc-etape{
  background:transparent !important; color:var(--v5-encre-3) !important;
  border:1px solid var(--v5-filet) !important;
}
body.hv5:not(.clair) .bc-etape.on{
  color:var(--v5-encre) !important; border-color:var(--v5-encre) !important; font-weight:600 !important;
}
/* et l'onglet ouvert du clair prend lui aussi l'accent de l'écran, pas un corail figé */
body.hv5.clair .ne-pg.on, body.hv5.clair .ne-pg[aria-current="page"], body.hv5.clair .ne-pg.actif{
  box-shadow:inset 0 -2px 0 var(--gb-accent, #F04438) !important;
}



/* ── 33 · UN BOUTON PLEIN SE LIT À L'ENCRE ───────────────────────────────
   Dernier foyer, et le plus gênant : DANS LE CONTENU, L'ACCENT ET L'ALERTE
   ÉTAIENT LA MÊME COULEUR. La section 10 avait ramené l'accent des écrans au
   corail de la marque ; depuis qu'on réserve le rouge à ce qui ne va pas, un
   bouton « Acheter » ou une barre d'abonnement en corail se lisent comme un
   problème. Sur « Mon abonnement », tout l'écran semblait en alerte alors que
   la formule est active.

   La liste ci-dessous n'est pas inventée : c'est celle que happia-v5.css
   énumère déjà pour poser l'encre SUR l'accent, autrement dit la liste des
   boutons pleins du produit, moins les bascules (section 26) et les barres
   (section 22). Ils passent à l'encre, comme le « Ouvrir » de la maquette.
   Le corail reste sur le site, le logo et la bande ; le rouge sur ce qui alerte. */
body.hv5 .main .a-card .a-btn.agent,
body.hv5 .main .b-pub,
body.hv5 .main .b-save,
body.hv5 .main .btn-add,
body.hv5 .main .btn-go,
body.hv5 .main .btn-ink,
body.hv5 .main .btn-mint,
body.hv5 .main .btn-pri,
body.hv5 .main .btn-pri:hover,
body.hv5 .main .btn-primary,
body.hv5 .main .btn-product,
body.hv5 .main .btn-send,
body.hv5 .main .btn.add,
body.hv5 .main .btn.btn-copy,
body.hv5 .main .btn.btn-mint,
body.hv5 .main .btn.mint,
body.hv5 .main .catalog-add-btn,
body.hv5 .main .check-meta .cm-actor.happia,
body.hv5 .main .cop-bar button,
body.hv5 .main .est-card .badge,
body.hv5 .main .f-cta-ink,
body.hv5 .main .f-cta-mint,
body.hv5 .main .freemium-banner .cta,
body.hv5 .main .freemium-banner .cta:hover,
body.hv5 .main .ha-btn,
body.hv5 .main .hag-drawer-head .ico,
body.hv5 .main .hag-fab,
body.hv5 .main .hag-form button.send-btn,
body.hv5 .main .hf-btn-primary,
body.hv5 .main .hf-midcta-card,
body.hv5 .main .hp-btn,
body.hv5 .main .hp-gate-head,
body.hv5 .main .md .copy-block .cb-copy.copied,
body.hv5 .main .notif-close-btn,
body.hv5 .main .partner-cta,
body.hv5 .main .quota-banner,
body.hv5 .main .rp-cta,
body.hv5 .main .section-paywall .lock-cta,
body.hv5 .main .section-paywall .lock-cta:hover,
body.hv5 .main .src-actions-cta a:hover,
body.hv5 .main .sw-btn-primary,
body.hv5 .main .sw-conn .conn-btn,
body.hv5 .main .upgrade a.cta,
body.hv5 .main .veille-paywall .btn-cta,
body.hv5 .main .wg-lock-cta,
body.hv5 .app .main .a-card .a-btn.agent,
body.hv5 .app .main .b-pub,
body.hv5 .app .main .b-save,
body.hv5 .app .main .btn-add,
body.hv5 .app .main .btn-go,
body.hv5 .app .main .btn-ink,
body.hv5 .app .main .btn-mint,
body.hv5 .app .main .btn-pri,
body.hv5 .app .main .btn-pri:hover,
body.hv5 .app .main .btn-primary,
body.hv5 .app .main .btn-product,
body.hv5 .app .main .btn-send,
body.hv5 .app .main .btn.add,
body.hv5 .app .main .btn.btn-copy,
body.hv5 .app .main .btn.btn-mint,
body.hv5 .app .main .btn.mint,
body.hv5 .app .main .catalog-add-btn,
body.hv5 .app .main .check-meta .cm-actor.happia,
body.hv5 .app .main .cop-bar button,
body.hv5 .app .main .est-card .badge,
body.hv5 .app .main .f-cta-ink,
body.hv5 .app .main .f-cta-mint,
body.hv5 .app .main .freemium-banner .cta,
body.hv5 .app .main .freemium-banner .cta:hover,
body.hv5 .app .main .ha-btn,
body.hv5 .app .main .hag-drawer-head .ico,
body.hv5 .app .main .hag-fab,
body.hv5 .app .main .hag-form button.send-btn,
body.hv5 .app .main .hf-btn-primary,
body.hv5 .app .main .hf-midcta-card,
body.hv5 .app .main .hp-btn,
body.hv5 .app .main .hp-gate-head,
body.hv5 .app .main .md .copy-block .cb-copy.copied,
body.hv5 .app .main .notif-close-btn,
body.hv5 .app .main .partner-cta,
body.hv5 .app .main .quota-banner,
body.hv5 .app .main .rp-cta,
body.hv5 .app .main .section-paywall .lock-cta,
body.hv5 .app .main .section-paywall .lock-cta:hover,
body.hv5 .app .main .src-actions-cta a:hover,
body.hv5 .app .main .sw-btn-primary,
body.hv5 .app .main .sw-conn .conn-btn,
body.hv5 .app .main .upgrade a.cta,
body.hv5 .app .main .veille-paywall .btn-cta,
body.hv5 .app .main .wg-lock-cta{
  background:var(--v5-encre) !important; border-color:var(--v5-encre) !important;
  color:var(--v5-fond) !important;
}

/* ── 34 · « MON ABONNEMENT » ─────────────────────────────────────────────
   Les trois derniers éléments de cet écran, nommés par des classes qui lui sont
   propres : la frise de la période et la jauge de crédits (du temps et des
   crédits consommés, donc le dégradé de la marque), et le segment choisi du
   sélecteur de formule (un contour, comme partout ailleurs). */
body.hv5 .main .fa-frise-barre > i,
body.hv5 .main .fa-obj-barre > i,
body.hv5 .app .main .fa-frise-barre > i,
body.hv5 .app .main .fa-obj-barre > i{
  background:linear-gradient(90deg,#F04438,#3155D9) !important;
}

body.hv5 .main .fseg-btn.on,
body.hv5 .app .main .fseg-btn.on{
  background:transparent !important; color:var(--v5-encre) !important;
  border:1px solid var(--v5-encre) !important; font-weight:600 !important;
}

body.hv5 .main .fa-rang .f-cta-ink,
body.hv5 .main button.f-cta-ink,
body.hv5 .app .main .fa-rang .f-cta-ink,
body.hv5 .app .main button.f-cta-ink{
  background:var(--v5-encre) !important; border-color:var(--v5-encre) !important;
  color:var(--v5-fond) !important;
}

/* ── 35 · « TESTER DANS LES IA » : LA MISE EN PAGE ───────────────────────
   Christophe : « ici la mise en page est difficilement lisible ». La cause
   principale est corrigée en section 5 (la ligne était passée en grid, donc
   empilée). Restent quatre choses propres à cet écran.

   · Les deux colonnes étaient à 50/50 : à gauche huit marques avec leur barre
     et leur geste, à droite un formulaire court. La liste n'avait pas la place
     de tenir sur un rang, le formulaire avait trop de place. On donne l'espace
     à celle qui en a besoin, et les deux blocs s'alignent en haut au lieu de
     s'étirer à la même hauteur.
   · Dans « Ce qu'il y a à faire », le mode d'emploi du chevron était collé au
     titre : « Aucune IA ne te cite sur X ouvre pour voir les façons d'y
     répondre » se lisait comme une seule phrase. Il passe sur sa propre ligne.
   · Une action à mener et un repli à lire se ressemblaient trait pour trait.
     L'action prend une carte, le repli reste une ligne fine.
   · Le surtitre de « Mon historique » n'était pas un surtitre. */
body.hv5 .vi-deux{ grid-template-columns:1.8fr 1fr !important; align-items:start !important }
body.hv5 #ia-cites .gb-mesure{ width:auto !important }
body.hv5 #ia-cites .gb-piste{ width:72px !important; flex:none !important }
body.hv5 #ia-cites .gb-geste, body.hv5 #ia-cites .gb-rien{ width:146px !important; padding-left:8px !important; padding-right:8px !important; box-sizing:border-box; text-align:center !important }
body.hv5 #ia-cites .gb-mesure b{ width:auto !important; min-width:72px }
body.hv5 #ia-cites .gb-ligne{ gap:16px }

/* 29/09 (capture de Christophe, « problème de mise en page ») :
   · « Le suivre à la place d'un autre » ne tenait pas dans sa colonne de 120 px et sortait
     de la carte, coupé. Le geste dit maintenant « Le suivre » ; la règle des trois
     concurrents reste écrite dans le pied de la liste. La colonne passe à 146 px, la
     largeur de « Me comparer à lui », pour que tous les gestes s'alignent.
   · En fond Blanc, `body.hv5.clair .gb-ligne{display:flex}` passait devant
     `details.gb-ligne{display:block}` : dans chaque carte « Ce qu'il y a à faire », le
     résumé devenait un élément flex qui rétrécissait à son texte. D'où des cartes dont
     le chevron n'est jamais au même endroit, et un pavé beige plus étroit que la carte
     au survol (collé sur iPad, où le survol reste après un toucher).
   · La carte d'action avait deux gouttières empilées (la carte et son résumé). Une seule. */
body.hv5.clair details.gb-ligne{ display:block !important }
body.hv5 #ia-actions details.gb-ligne.ouvrable, body.hv5.clair #ia-actions details.gb-ligne.ouvrable{ padding:0 !important; overflow:hidden }
body.hv5 #ia-actions details.gb-ligne.ouvrable > summary{ padding:16px 20px; border-radius:0 }
body.hv5 #ia-actions details.gb-ligne.ouvrable .gb-dedans{ padding:0 20px 18px }
@media (hover:none){ body.hv5 details.gb-ligne > summary:hover{ background:transparent } }

/* le mode d'emploi descend sous le titre de l'action */
body.hv5 #ia-actions .gb-ligne.ouvrable .gb-quoi{ align-items:baseline }
body.hv5 #ia-actions .gb-ligne.ouvrable .gb-precision{
  flex-basis:100%; order:3; font-size:11.5px; color:var(--v5-encre-3); margin-top:2px;
}
/* une action à mener est une carte, un repli reste une ligne */
body.hv5.clair #ia-actions .gb-ligne.ouvrable{
  background:#FFFFFF !important; border:1px solid #E4E7EC !important;
  border-radius:18px !important; padding:16px 18px !important; margin-bottom:12px;
  box-shadow:var(--v5-verre-ombre) !important; /* 28/09 : l'ombre teintée de la page */
}
body.hv5:not(.clair) #ia-actions .gb-ligne.ouvrable{
  background:var(--v5-bulle) !important; border:1px solid var(--v5-filet) !important;
  border-radius:18px !important; padding:16px 18px !important; margin-bottom:12px;
}
body.hv5 #ia-actions .gb-ligne.ouvrable .gb-quoi b{ font-family:var(--pf-head); font-size:15px }

/* le surtitre est le même partout, y compris hors d'un bloc « gb-detail » */
body.hv5 .gb-intitule{
  font-family:Inter,"Inter Repli",system-ui,sans-serif !important; font-size:10.5px !important; font-weight:600 !important;
  letter-spacing:.11em !important; text-transform:uppercase !important; color:var(--v5-encre-3) !important;
}

/* ── 36 · L'ACCENT DU CONTENU EST L'ENCRE, JUSQUE DANS LES STYLES EN LIGNE ──
   La bascule « 30 jours » était un pavé rouge plein. Son fond est écrit en ligne
   par l'écran : `background:var(--v5-vert)`, et la section 10 avait ramené ce
   jeton au corail de la marque. Or depuis qu'on réserve le rouge à ce qui
   alerte, un onglet choisi en corail se lit comme un problème.
   On ramène donc l'accent lui-même à l'encre dans le contenu : tout ce qui lit
   `--v5-vert` en ligne suit, sans qu'on ait à nommer chaque écran. Le texte posé
   dessus devient le fond de la page, pour rester lisible dans les deux thèmes. */
body.hv5 .main, body.hv5 main, body.hv5 .app .main, body.hv5 .app main{
  --v5-vert:var(--v5-encre); --v5-vert-2:var(--v5-encre-2); --v5-vert-encre:var(--v5-fond);
}
/* et cette bascule-ci reste une bascule : un mot dans un contour */
body.hv5 .app .main .hp-periode button{
  background:transparent !important; color:var(--v5-encre-2) !important;
  border:1px solid var(--v5-filet) !important; font-weight:500 !important;
}
body.hv5 .app .main .hp-periode button[style*="--v5-vert"]{
  color:var(--v5-encre) !important; border-color:var(--v5-encre) !important; font-weight:600 !important;
}
/* un dépliable ouvre par son chevron de droite : plus de triangle natif à gauche */
body.hv5 .main summary, body.hv5 .app .main summary{ list-style:none }
body.hv5 .main summary::-webkit-details-marker,
body.hv5 .app .main summary::-webkit-details-marker{ display:none }

/* ── 37 · DEUX NIVEAUX D'ALERTE, PAS UN SEUL ─────────────────────────────
   En ramenant l'ambre sur le rouge de la marque (section 23), j'ai mis au même
   niveau « à surveiller » et « bloqué ». Sur « Tester dans les IA », le chiffre
   « 42 autres marques citées » sortait donc en rouge vif à côté de deux chiffres
   à l'encre, alors que c'est un constat, pas un problème.
   On rend la distinction : ce qui bloque garde le rouge, ce qui est seulement à
   surveiller revient à l'encre. Le mot du libellé dit déjà de quoi il s'agit. */
body.hv5 .main .gb-chiffre.surveiller .gb-valeur,
body.hv5 .app .main .gb-chiffre.surveiller .gb-valeur{ color:var(--v5-encre) !important }

/* ── 38 · L'ACCENT DE L'AGENT DANS LES TITRES, SUR TOUS LES ÉCRANS ───────
   23/09/2026, Christophe : « j'avais demandé à avoir des titres avec des
   touches des couleurs des agents ». Le 22 au soir, seuls trois écrans
   avaient reçu leurs `<span class="ag">` ; les vingt-cinq autres sortaient
   tout à l'encre. Ils les ont tous, maintenant, posés à la main : un seul
   fragment par conclusion, jamais la phrase entière.

   La règle de la section 20 ne portait que `body.hv5 .ag`. Plusieurs écrans
   posent la couleur de leur conclusion dans un `<style>` injecté à
   l'exécution (`.gb-concl{color:…}`), qui gagne l'égalité de spécificité
   contre une classe seule. On redouble donc le sélecteur, comme pour les
   vingt-sept règles de la section 33.
   ═══════════════════════════════════════════════════════════════════════ */
body.hv5 .main .ag,
body.hv5 .app .main .ag,
body.hv5 .main .gb-concl .ag,
body.hv5 .app .main .gb-concl .ag{
  color:var(--gb-accent, var(--v5-encre));
  font-weight:inherit;
}

/* « Tester dans les IA », la matrice face à un concurrent : la pastille du
   concurrent était en ambre, donc rouge depuis la section 23. Elle ne dit
   pas une alerte, elle dit « lui » : un contour d'encre pâle suffit, et la
   phrase sous le tableau dit maintenant « en gris ». */
body.hv5 .main .vi-p.lui,
body.hv5 .app .main .vi-p.lui{
  border-color:var(--v5-encre-3) !important;
  color:var(--v5-encre-2) !important;
}

/* ── 39 · UNE COULEUR QUI VEUT DIRE QUELQUE CHOSE NE SE FAIT PAS REPEINDRE ──
   23/09/2026. Christophe, sur la salle de réunion : « un petit souci de design là ».
   La barre du tour de table affichait ses trois parts (à surveiller, rien à signaler, pas
   encore relevé) dans le MÊME dégradé rouge vers bleu, pendant que la légende juste dessous
   annonçait trois pastilles jaune, verte et grise. Une barre qui contredit sa propre légende
   ne se lit pas : on ne sait plus laquelle des deux dit vrai.

   D'où ça venait. Les règles du gabarit peignent les jauges au dégradé de la marque, et
   n'épargnent que les segments dont la couleur est écrite en ligne (`:not([style*="background"])`).
   Ici la couleur vient d'une CLASSE (`part-bon`, `part-faire`, `part-attente`) qui pose la
   variable `--part` : l'exception ne les voyait pas.

   LA RÈGLE, ET ELLE VAUT AU-DELÀ DE CET ÉCRAN. Le dégradé de la marque est décoratif : il dit
   « il y en a tant ». Une couleur sémantique porte une information, et une légende à côté
   l'explique au client. Le décoratif ne repeint jamais le sémantique. Tout segment qui porte
   une classe `part-*` garde donc sa couleur, dans les deux fonds. */
body.hv5 .gb-barre > i[class*="part-"],
body.hv5 .main .gb-barre > i[class*="part-"],
body.hv5 .app .main .gb-barre > i[class*="part-"],
body.hv5.clair .gb-barre > i[class*="part-"],
body.hv5.clair .main .gb-barre > i[class*="part-"],
body.hv5.clair .app .main .gb-barre > i[class*="part-"]{
  background:var(--part,var(--v5-encre-3)) !important;
}

/* ── 40 · UNE CARTE SOMBRE EST UNE CARTE, PAS UN APLAT ─────────────────────
   23/09/2026. Christophe, même capture : « les rectangles en haut avec les infos collées
   à gauche ». Les trois chiffres du tour de table (membres qui attendent, membres bloqués,
   relevés faits) avaient un fond de carte et rien d'autre : le texte touchait le bord, pas
   d'arrondi, pas de filet.

   La cause est une règle à moitié écrite. En fond clair (§ plus haut), ces cartes reçoivent
   leur padding, leur filet et leur rayon ; la règle du fond sombre, elle, ne repeignait que
   le FOND, la couleur du filet et l'ombre. Une couleur de filet sans épaisseur ne dessine
   rien, et un padding jamais posé vaut zéro : la carte existait en couleur mais pas en forme.

   On ne reprend ici que la géométrie, celle du fond clair, au pixel près. Les couleurs
   restent celles du sombre : ce sont deux fonds du même produit, pas deux mises en page. */
body.hv5:not(.clair) .gb-chiffre,
body.hv5:not(.clair) .tb-cadran{
  border:1px solid var(--v5-filet) !important;
  border-radius:12px !important;
  padding:10px 12px !important;
}

/* ── 41 · DU TEXTE BLANC SUR UN FOND BLANC ─────────────────────────────────
   23/09/2026. Christophe, sur la veille concurrentielle : « quelle horreur ». Les trois
   premiers concurrents affichaient une pastille rouge VIDE. Le texte y était pourtant :
   « Menace forte », écrit en blanc, sur un fond devenu blanc. Invisible.

   Encore une couleur sémantique repeinte par une règle décorative, et cette fois par un nom.
   happia-v5.css pose `body.hv5 .lab{ background:var(--v5-bulle) !important }` pour les
   étiquettes des cadrans. Or `.lab` est aussi le nom de l'étiquette DANS la pastille de
   menace : elle héritait donc d'un fond blanc par-dessus le dégradé rouge de sa pastille,
   pendant que sa couleur de texte, elle, restait celle prévue pour le rouge.
   « Menace sérieuse », écrite en encre sombre, survivait ; « Menace forte », en blanc,
   disparaissait. Le pire des cas : l'écran a l'air de marcher, et c'est l'alerte la plus
   grave qui ne se lit pas.

   Une étiquette posée SUR une pastille colorée ne porte jamais de fond à elle : c'est la
   pastille qui donne la couleur, et le texte qui s'y accorde. */
body.hv5 .heat .lab,
body.hv5 .heat .flame,
body.hv5.clair .heat .lab,
body.hv5.clair .heat .flame{
  background:transparent !important;
  color:inherit !important;
}

/* ═══════════════════════════════════════════════════════════════════════════
   30 · UN CHAMP À REMPLIR SE VOIT — 30/09/2026
   Christophe, sur Profil : « clairement on ne voit pas où on doit remplir des infos ».
   Mesuré : champ blanc (#FFFFFF) sur carte blanche, filet #E4E7EC. Rien ne sépare la
   case de la carte, le placeholder gris se lit comme une consigne et pas comme un vide.
   Un champ prend donc un fond à lui, un gris bleuté un cran sous la carte, avec un filet
   plus marqué ; au clic, il redevient blanc et prend le contour de l'encre. Tous les écrans
   du back-office en clair, pas seulement Profil. Les cases à cocher, boutons radio et
   curseurs ne sont pas des champs : ils ne changent pas.
   ═══════════════════════════════════════════════════════════════════════════ */
body.hv5.clair .main input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="color"]),
body.hv5.clair .main textarea,
body.hv5.clair .main select{
  background:#F2F4F7 !important;
  border:1px solid #D0D5DD !important;
  border-radius:10px !important;
}
body.hv5.clair .main input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="color"]):hover,
body.hv5.clair .main textarea:hover,
body.hv5.clair .main select:hover{ border-color:#98A2B3 !important }
body.hv5.clair .main input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="color"]):focus,
body.hv5.clair .main textarea:focus,
body.hv5.clair .main select:focus{
  background:#FFFFFF !important;
  border-color:var(--v5-encre,#171717) !important;
  box-shadow:0 0 0 3px rgba(23,23,23,.08) !important;
  outline:0 !important;
}
/* un champ en lecture seule (ton email de connexion) n'invite pas à écrire : pas de fond */
body.hv5.clair .main input[readonly]{ background:transparent !important; border-style:dashed !important }
