@charset "utf-8";
/* ============================================================
   DESIGN V5 — JETONS
   ------------------------------------------------------------
   Source : design_handoff_work_station_v5, « 00-Charte UI complete ».
   Les valeurs sont reprises telles quelles du bloc <style> des prototypes :
   c'est la seule vraie CSS du lot, tout le reste est en styles en ligne sur un
   runtime de maquette.

   CETTE FEUILLE EST CHARGÉE POUR TOUS LES ESPACES, ET C'EST VOULU.

   La charte V5 n'est appliquée qu'à la Station (iso 1) — le pont vers les
   variables historiques, la typographie, la coquille et le thème sombre par
   défaut vivent dans v5-station.css, qui reste scopé. Mais les ~1 400 littéraux
   de couleur remplacés par des jetons l'ont été dans des feuilles PARTAGÉES :
   common.css, components/*, objects-js/*, pages/*. Le Client Center, l'espace
   partenaire et le hub servent ces mêmes fichiers.

   Sans définition, `background: var(--surface)` est invalide à la valeur
   calculée : le fond retombe à `transparent`, et le raccourci
   `border: 1px solid var(--line)` disparaît entièrement. Chaque carte, chaque
   tableau et chaque popup de ces espaces y perdrait sa surface.

   Hors iso 1, `data-zt` n'est jamais posé : ce sont donc les valeurs CLAIRES
   ci-dessous qui s'appliquent — et elles sont à un ou deux points des littéraux
   qu'elles remplacent (#fff → #FFFFFF, #e8ecee → #E6EAF3). Ces espaces ne
   changent pas d'apparence.

   DEUX THÈMES, pilotés par `data-zt` sur <html>. Le sombre est le défaut sur
   iso 1 : l'attribut est posé par un script inline du <head> AVANT les
   feuilles (template.php), sinon la première peinture se fait en clair et la
   page clignote.
   ============================================================ */

/* ---------- 1. Jetons ---------- */

:root {
    --bg: #F4F6FB;
    --surface: #FFFFFF;
    --surface2: #F7F9FD;
    --line: #E6EAF3;
    --line-soft: #EFF2F9;
    --text: #0B1533;
    --text-mid: #4A5578;
    /* #8A93AF dans la charte. Mesuré : 3,06:1 sur `--surface`, 2,78:1 sur
       `--chip` — sous le seuil que la charte se donne elle-même
       (« contraste minimum 4,5:1 pour le texte courant »). Et ce n'est pas un
       jeton décoratif : c'est la couleur des libellés de métrique, des en-têtes
       de colonne et de toutes les métadonnées.
       Assombri dans la MÊME teinte jusqu'à 4,95:1 sur la surface et 4,70:1 sur
       `--surface2`. Même correction en sombre, plus bas. */
    --text-dim: #697085;
    /* #0066FF dans la charte, et il manque le seuil DE PEU là où il sert le plus.
       Mesuré au navigateur sur de vraies pages : 4,83:1 sur `--surface`, mais
       4,47:1 sur `--bg` — or `--bg` est le fond de la zone de contenu, donc
       celui du fil d'Ariane, des onglets actifs, des dates et de tous les liens
       de tableau. Une trentaine d'éléments par écran, à 0,03 du seuil.
       Assombri dans la MÊME teinte (l'écart ne se voit pas) jusqu'à 5,13:1 sur
       `--bg` et 5,54:1 sur la surface. En fond de bouton, le blanc dessus y
       gagne aussi. Le thème sombre garde la valeur de la charte, qui y passe
       largement (5,40:1 sur `--surface`). */
    --accent: #005CF0;
    --accent-soft: #E5EFFF;
    --aqua: #009900;
    --aqua-soft: #E3F6E1;
    --neutral: #7E88A3;
    --neutral-soft: #EDEFF5;
    --violet: #7B45FF;
    --violet-soft: #EFE8FF;
    /* L'AMBRE DE LA PRIORITÉ. La charte n'a pas cette couleur : la maquette 05 la
       pose en dur (#F5B300) pour l'étoile des mots-clés prioritaires, et c'est la
       seule chose de l'écran qui ne soit ni un état de position ni une action.
       Elle NE PEUT PAS être un des quatre jetons sémantiques : le vert dirait « ça
       progresse », le bleu « c'est sélectionné », le violet « c'est du payant ».
       En thème CLAIR elle est assombrie — #F5B300 sur blanc ne rend que 1,86:1,
       sous le 3:1 qu'exige une icône porteuse de sens ; #B07800 en rend 3,80:1. */
    --prio: #B07800;
    --prio-soft: #FDF3DC;
    --grid: #EDF0F7;
    --chip: #F1F4FB;
    --rail: #0B1533;
    --glow: transparent;
    --glow2: transparent;

    /* Dérivés — pas dans la charte, mais nécessaires dès qu'on quitte les
       styles en ligne d'une maquette : un « blanc sur accent » ne peut pas
       s'écrire #fff en dur si le thème sombre doit tenir. */
    --on-accent: #FFFFFF;
    --on-rail: #FFFFFF;
    --on-rail-mid: #A9B3D6;

    /* LES ENCRES DE PASTILLE — et c'est une CONTRADICTION DE LA CHARTE qu'elles
       résolvent, pas un embellissement.

       La recette « fond `--x-soft`, texte `--x` » est celle que la charte montre
       sur ses pastilles d'état, et c'est la forme qui remplace ici une
       cinquantaine de paires héritées de Tailwind (#166534 sur #dcfce7, etc.).
       Mesurées, les quatre paires de la charte donnent en thème CLAIR :

           aqua    #009900 sur #E3F6E1   3,34:1
           neutral #7E88A3 sur #EDEFF5   3,08:1
           accent  #0066FF sur #E5EFFF   4,17:1
           violet  #7B45FF sur #EFE8FF   4,27:1

       soit les quatre sous le 4,5:1 que la charte s'impose elle-même — alors
       que les paires Tailwind remplacées tenaient ~6:1. Appliquer la charte au
       pied de la lettre aurait donc DÉGRADÉ la lisibilité de chaque pastille de
       l'application, et d'abord pour les espaces client, partenaire et hub, où
       `data-zt` n'est jamais posé : ils sont toujours en thème clair.

       Même geste que pour `--text-dim` plus haut : on garde la teinte, on
       descend la clarté jusqu'au seuil, et on le note. En sombre les paires
       passent déjà (5,19 à 6,77:1) SAUF l'accent (4,21:1) — celui-là prend
       `#7FB2FF`, qui est l'accent clair de la charte elle-même, à 6,45:1.

       ET LE LAVIS N'EST PAS LE SEUL FOND EN CAUSE. Mesuré ensuite : en thème
       clair `--aqua` ne pèse que 3,78:1 sur `--surface` et 3,50:1 sur `--bg`,
       `--neutral` 3,54 et 3,27:1. Une évolution positive écrite en vert sur du
       blanc — quarante par page sur le rapport de positions — était donc sous le
       seuil elle aussi. LA RÈGLE EST DONC : dès qu'une teinte de la charte porte
       du TEXTE, c'est son `-ink` ; la teinte nue reste pour ce qui est peint —
       fond, filet, pastille de série, barre de graphe.

       En sombre les quatre `-ink` valent exactement la teinte (sauf l'accent) :
       basculer une encre ne change donc RIEN au thème sombre, par construction.

       Une exception subsiste et elle est explicite : sur `--rail`, sombre dans
       les DEUX thèmes, aucun de ces jetons ne convient — voir
       `#monitorank-api-info-*`, qui prend des valeurs de série fixes. */
    --accent-ink: #005CF0;   /* 4,78:1 sur --accent-soft  */
    --aqua-ink: #007A00;     /* 4,90:1 sur --aqua-soft    */
    --violet-ink: #6E36FF;   /* 4,86:1 sur --violet-soft  */
    --neutral-ink: #616B86;  /* 4,62:1 sur --neutral-soft */

    /* LA PALETTE DE SÉRIES — et elle n'est PAS inventée : c'est celle de la
       maquette 03, qui donne un `dot` explicite pour chacun de ses quatorze
       canaux d'acquisition. Le dépôt en portait deux versions concurrentes, une
       par écran (six teintes Material pour `.pv2_c_*`, six autres pour les types
       de la base de connaissance), et aucune ne ressemblait à la charte.

       Ce qu'elle apprend est important : la charte n'a que QUATRE teintes
       d'interface, mais son auteur emploie sans hésiter de l'orange, du jaune et
       du rose DÈS QU'IL S'AGIT DE DONNÉES. « Pas de rouge, pas d'orange » vaut
       pour ce qui habille l'application, pas pour ce qui l'encode : quatorze
       séries ne se distinguent pas avec quatre jetons.

       Elles ne suivent donc pas le thème — une série change de sens si elle
       change de couleur, et la légende qui la nomme est ailleurs sur l'écran.
       Les six premières recouvrent les canaux réellement servis par la Station ;
       les autres sont là pour que le prochain écran n'en réinvente pas.

         1 Direct · 2 Organic Search · 3 Organic Social · 4 Email
         5 Referral · 6 Unassigned · 7 Paid Other · 8 Paid Search
         9 AI Assistant · 10 Cross-network · 11 Organic Video
         12 Paid Social · 13 Display · 14 Affiliates */
    --serie-1: #3D8BFF;
    --serie-2: #35D435;
    --serie-3: #A98CFF;
    --serie-4: #FFB020;
    --serie-5: #00C2E8;
    --serie-6: #93A0C4;
    --serie-7: #FF7A45;
    --serie-8: #7B45FF;
    --serie-9: #22D3AA;
    --serie-10: #F472B6;
    --serie-11: #FACC15;
    --serie-12: #818CF8;
    --serie-13: #2DD4BF;
    --serie-14: #C084FC;
    /* Ambre et rose de la maquette 05 (onglet Concurrents : séries 3 et 4 de la
       palette de la maquette d'écran, #F5B300 et #FF6B8A). Ce ne sont PAS les
       --serie-4 / --serie-10 de la maquette 03 (#FFB020, #F472B6), qui restent
       les canaux Email et Cross-network : deux jetons dédiés, un par teinte. */
    --serie-15: #F5B300;
    --serie-16: #FF6B8A;
    /* Cyan fixe de la maquette Modules (4e série des barres, mois « Social Ads ») :
       elle l'écrit `var(--teal,#2FD0E0)` SANS jamais définir --teal, donc la valeur
       de repli est la seule qui s'applique — et elle ne change pas avec le thème. */
    --serie-17: #2FD0E0;

    /* LOT « MODULES · LINK BUILDING · ZANALYTICS » (KIT §2.0, décision D11).

       --amber / --teal : valeurs des maquettes Link building et zAnalytics (qui les
       définissent, en clair et en sombre). L'ambre des PASTILLES de la maquette
       Modules est un autre jeton : --prio (sombre identique au pixel, clair à un cran
       près pour tenir le contraste). Deux feuilles posent déjà --amber dans leur
       portée propre (.pcommission, espace hub) : elles gardent le dernier mot. */
    --amber: #C77A12;
    --amber-soft: #FBF0DD;
    --teal: #0E9BAA;
    --teal-soft: #E0F5F7;

    /* Ombres de SURVOL du lot — marine rgba(11,21,51,…), jamais du noir (la
       maquette zAnalytics écrit rgba(6,10,27,.14) : on garde la règle du socle).
       -lift : KPI et fichiers · -lift-2 : cartes de la base de connaissance. */
    --shadow-lift: 0 12px 28px rgba(11, 21, 51, .14);
    --shadow-lift-2: 0 14px 30px rgba(11, 21, 51, .16);

    /* Le blanc FIXE : bouton des bascules, compteur sur fond de série. Un jeton pour
       ne pas écrire #fff dans une feuille (0 littéral de couleur). */
    --knob: #FFFFFF;

    /* La NUIT fixe : le #060A1B du rail sombre, la même dans les deux thèmes (le `--rail` clair
       est #0B1533). Pour ce qui se pose sur une IMAGE ou sur un panneau et doit rester sombre
       quel que soit le thème : l'étiquette de type d'une couverture de carte
       (`.v5_cartec_tag`, maquette : rgba(6,10,27,.55) des deux côtés). Un jeton pour ne pas
       écrire de littéral dans une feuille. (Le voile du loader de zDataTable, lui, suit le thème :
       marine `--rail`.) */
    --nuit: #060A1B;

    /* L'encre FIXE posée sur un fond `--aqua` plein : le chiffre d'une case « jour validé » du détail
       zBot (maquette Link building, lb.dc.html l.902 : `ok ? "#04321F"`), la même dans les deux
       thèmes alors que `--aqua` change (#35D435 en sombre, #009900 en clair). Ce n'est NI `--on-accent`
       (qui change avec le thème) NI un mélange de jetons (`--aqua` 18 % sur `--rail` donnait
       rgb(14,46,32) en sombre et rgb(9,45,42) en clair). Un jeton pour ne pas écrire de littéral
       dans une feuille de page. */
    --on-aqua: #04321F;

    /* Les six DÉPARTS des couvertures en dégradé à 135° de la base de connaissance (maquette Modules,
       modules.dc.html l.1649 : `covers[i % 6]`, bleu, violet, vert, turquoise, ambre, neutre). Les
       mêmes dans les deux thèmes ; l'ARRIVÉE de chaque dégradé est un jeton de série déjà fixe
       (`--serie-1` · `--serie-3` · `--serie-2` · `--serie-17` · `--serie-15` · `--serie-6`, valeurs
       exactes de la maquette). Le sixième vaut #1F2A54 comme `--line` en sombre, mais il ne doit
       PAS en dépendre : `--line` change avec le thème, la couverture non. Lus par
       `knowledge-overview.css` (`.kb_cov_N`) et `knowledges_case_studies.css` (repli sans miniature). */
    --couv-0: #0B3A8C;
    --couv-1: #3A1F8C;
    --couv-2: #0F5A2A;
    --couv-3: #0A4E5A;
    --couv-4: #5A3A08;
    --couv-5: #1F2A54;

    /* Les quatre formes de la charte (§10) : carte 16, contrôle 10-11, chip 8.
       `--radius-card` RESTE À 18, et c'est un écart assumé : ce jeton est
       consommé par des écrans MAQUETTÉS qui ont été mesurés — les cartes KPI des
       leads sont à 18 dans leur prototype, le grand panneau de graphique du 05 à
       20. Le descendre à 16 pour la règle générale déplacerait des écrans dont la
       maquette dit autre chose. Voir `docs/design-v5/CHARTE-00-CONFORMITE.md`.
       `--radius-soft` n'est pas de la charte : c'est la forme intermédiaire des
       panneaux internes du dépôt. */
    --radius-card: 18px;
    --radius-soft: 12px;
    --radius-field: 11px;
    --radius-pill: 8px;

    --shadow-card: 0 12px 28px rgba(11, 21, 51, .12);
    /* .24 dans les DEUX thèmes : valeur des menus des maquettes 03, 05, 06, 07 et
       09 (7 occurrences sur 13 ; 02 = .26, 05/06 = .28 sur un 2e menu, 08/10 = .3).
       Le .30 de la charte n'est suivi que par 08 et 10, qui le posent en local. */
    --shadow-menu: 0 18px 44px rgba(11, 21, 51, .24);

    --ease: cubic-bezier(.2, .8, .25, 1);

    --font: Poppins, system-ui, -apple-system, 'Segoe UI', sans-serif;
}

:root[data-zt="dark"] {
    --bg: #080D22;
    --surface: #0E1533;
    --surface2: #131B3D;
    --line: #1F2A54;
    --line-soft: #18214A;
    --text: #FFFFFF;
    --text-mid: #A9B3D6;
    /* LA VALEUR DE LA MAQUETTE (#6E7AA6), rétablie le 2026-10-08 à la demande du
       patron (« les couleurs des écritures ne sont pas celles de la maquette »).
       Elle avait été éclaircie en #7784B3 pour passer le seuil AA (4,26:1 sur
       `--surface`, 3,99:1 sur `--surface2`) : la fidélité à la maquette l'emporte. */
    --text-dim: #6E7AA6;
    --accent: #3D8BFF;
    --accent-soft: rgba(61, 139, 255, .18);
    --aqua: #35D435;
    --aqua-soft: rgba(53, 212, 53, .16);
    --neutral: #93A0C4;
    --neutral-soft: rgba(147, 160, 196, .14);
    --violet: #A98CFF;
    --violet-soft: rgba(169, 140, 255, .16);
    /* En sombre, la valeur de la maquette telle quelle : 8,4:1 sur `--surface`. */
    --prio: #F5B300;
    --prio-soft: rgba(245, 179, 0, .16);
    --amber: #F2B457;
    --amber-soft: rgba(242, 180, 87, .16);
    --teal: #2FD0E0;
    --teal-soft: rgba(47, 208, 224, .16);
    --grid: #1B2450;
    --chip: rgba(255, 255, 255, .06);
    --rail: #060A1B;
    --glow: rgba(0, 102, 255, .22);
    --glow2: rgba(255, 255, 255, .05);

    /* Blanc sur l'accent, comme la maquette (« Exporter le rapport », boutons principaux) —
       rétabli le 2026-10-08 ; l'encre sombre #071026 posée pour le contraste est abandonnée. */
    --on-accent: #FFFFFF;

    /* Trois des quatre encres de pastille valent la teinte nue en sombre (la teinte
       sur son propre lavis : 6,77 · 5,19 · 5,53:1). L'accent y tombait à 4,21:1 et
       avait pris #7FB2FF ; il revient à la teinte nue de la maquette (2026-10-08). */
    --accent-ink: #3D8BFF; /* l'accent nu, comme la maquette (était #7FB2FF) — 2026-10-08 */
    --aqua-ink: #35D435;
    --violet-ink: #A98CFF;
    --neutral-ink: #93A0C4;

    /* LES OMBRES RESTENT MARINE EN SOMBRE. Les prototypes ne les font pas changer
       de teinte d'un thème à l'autre : toutes sont `rgba(11,21,51,…)`, jamais du
       noir (`rgba(0,0,0,.45/.55)` d'avant). Sur #080D22 elles se voient peu —
       c'est aussi le cas de la maquette. Le menu est le même qu'en clair (.24). */
    --shadow-card: 0 12px 28px rgba(11, 21, 51, .12);
    --shadow-menu: 0 18px 44px rgba(11, 21, 51, .24);
}

/* Le navigateur doit connaître le thème : sans ça, les ascenseurs, les
   `input` natifs et les `select` restent peints en clair sur fond #080D22. */
:root { color-scheme: light; }
:root[data-zt="dark"] { color-scheme: dark; }

/* ---------- 2. Animations de la charte ---------- */

@keyframes zPopIn  { from { opacity: 0; transform: translateY(-8px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes zItemIn { from { opacity: 0; transform: translateX(-10px); }            to { opacity: 1; transform: none; } }
@keyframes zMenuIn { from { opacity: 0; transform: translateX(-16px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes zRise   { from { opacity: 0; transform: translateY(14px); }              to { opacity: 1; transform: none; } }

/* ---------- 3. Impression ---------- */
/* Les jetons sombres survivraient à `@media print` : une page imprimée depuis le
   thème sombre sortirait en blanc sur #080D22, soit une cartouche d'encre pour
   un rapport client. On repasse la racine en jetons CLAIRS à l'impression, quel
   que soit `data-zt`.

   Les valeurs sont recopiées plutôt que référencées : `:root` porte déjà les
   valeurs claires, mais `:root[data-zt="dark"]` les a écrasées avec une
   spécificité supérieure (0,1,1 contre 0,0,1). Une redéclaration de même
   spécificité, plus loin dans le fichier, ne suffirait donc pas — d'où le
   sélecteur d'attribut ici aussi. */
@media print {
    :root,
    :root[data-zt="dark"] {
        --bg: #FFFFFF;
        --surface: #FFFFFF;
        --surface2: #F7F9FD;
        --line: #E6EAF3;
        --line-soft: #EFF2F9;
        --text: #0B1533;
        --text-mid: #4A5578;
        --text-dim: #697085;
        --accent: #005CF0;
        --accent-soft: #E5EFFF;
        --aqua: #009900;
        --aqua-soft: #E3F6E1;
        --neutral: #7E88A3;
        --neutral-soft: #EDEFF5;
        --violet: #7B45FF;
        --violet-soft: #EFE8FF;
        --prio: #B07800;
        --prio-soft: #FDF3DC;
        --amber: #C77A12;
        --amber-soft: #FBF0DD;
        --teal: #0E9BAA;
        --teal-soft: #E0F5F7;
        --grid: #EDF0F7;
        --chip: #F1F4FB;
        --rail: #0B1533;
        --glow: transparent;
        --glow2: transparent;
        --on-accent: #FFFFFF;
        --accent-ink: #005CF0;
        --aqua-ink: #007A00;
        --violet-ink: #6E36FF;
        --neutral-ink: #616B86;
        --shadow-card: none;
        --shadow-menu: none;
        --shadow-lift: none;
        --shadow-lift-2: none;
        color-scheme: light;
    }
}

/* ============================================================================
   THÈME CLAIR DE LA STATION : LES VALEURS DE LA MAQUETTE (2026-10-08)

   Les encres claires ci-dessus ont été assombries pour le seuil AA (text-dim
   #697085, accent #005CF0, -ink plus foncés). La Station revient aux valeurs
   exactes des maquettes, à la demande du patron. Scopé à la Station (`chrome_v2`,
   iso 1) : les espaces client / partner / hub, toujours en clair, gardent les
   valeurs lisibles. Posé sur :root (via :has) pour que les scripts qui lisent
   les jetons sur documentElement (v5-charts.js) voient les mêmes. Hors impression.
   ============================================================================ */
@media screen {
    :root:not([data-zt="dark"]):has(> body.chrome_v2) {
        --text-dim: #8A93AF;
        --accent: #0066FF;
        --accent-ink: #0066FF;
        --aqua-ink: #009900;
        --violet-ink: #7B45FF;
        --neutral-ink: #7E88A3;
    }
}
