/* ============================================================================
   op-tokens.css — SOURCE DE VÉRITÉ UNIQUE des tokens de design OneProspect
   ----------------------------------------------------------------------------
   STAGING 2026-06-17. Additif et NON destructif : tant qu'aucun composant ne
   lit ces variables, poser ce fichier = 0 changement de pixel (juste la
   fondation). À inclure EN PREMIER dans map.html, AVANT map.css et tous les CSS
   scopés (menu-v8.css, semaine.css, mandats.css...). Voir NOTE_MIGRATION.md.

   Convention : préfixe --op-. Déclaré une seule fois sur :root. Aucun hex de
   mission, taille, ombre ou z-index ne doit plus apparaître ailleurs : tout
   pointe ici. Les anciens noms --op8-* (menu) et --ops-* (planning) deviennent
   des MIROIRS de ces tokens (étape 1), jamais édités indépendamment.

   Valeurs RÉELLES extraites du vrai live (_live_front_ref_20260617/) :
     semaine.css:11-17, menu-v8.css:11-36, mandats.css:5-39,
     semaine.ui.js:4348 (OPSEM_MISSION_COLORS).
   Décisions Nicolas appliquées (00_DECISIONS_NICOLAS.md) :
     N1 vert PRO #15803d unique · N2 émeraude #059669 libre · N3 mandats or #b8860b
     N8 rues chaudes (bandeau) — voir note ci-dessous · N19 Signaux QR violet.
   ============================================================================ */

:root {
  /* =========================================================================
     1. COULEURS DE MISSION — 1 SEULE définition par mission, jamais dupliquée
     ========================================================================= */
  --op-mission-annonce:   #d946ef;  /* rose fuchsia — annonces / Veille concurrentielle / biens en vente */
  --op-mission-relance:   #f59e0b;  /* orange — À revoir / relances */
  --op-mission-rue:       #ef4444;  /* rouge — rues chaudes (mission + pulse parcelle/rue + dock) */
  --op-mission-boitage:   #7c3aed;  /* violet — boîtage / flyers QR / Signaux QR (N19) */
  --op-mission-pro:       #15803d;  /* vert PRO — biens sociétés / mission PM (N1 : #15803d partout) */
  --op-mission-mandat:    #b8860b;  /* OR/bronze accent — mandats (N3) ; palette complète §1bis */
  --op-mission-recherche: #2563eb;  /* saphir — recherche / prospection ciblée (vivo) */
  --op-mission-emeraude:  #059669;  /* émeraude — LIBRE / réserve (N2, non attribuée) */

  /* fonds pastel de mission (remplacent les *-bg recopiés à la main) */
  --op-mission-annonce-bg: #fdf4ff;
  --op-mission-relance-bg: #fff7ed;
  --op-mission-rue-bg:     #fef2f2;
  --op-mission-boitage-bg: #f5f3ff;
  --op-mission-annonce-d:  #a21caf;  /* rose profond (chevron/texte sombre, ex --op8-rose-d) */

  /* couleurs de SOURCE de données (PAS des missions — interrupteurs de filtres) */
  --op-data-dvf:   #06b6d4;  /* cyan — DVF + biens en location */
  --op-data-pro:   #15803d;  /* = vert PRO (même teinte que la mission PM) */
  --op-data-ademe: #ef4444;  /* = rouge canonique (DPE / ADEME) */

  /* couleur de FILTRE / bandeau seul (jamais une mission) */
  /* N8 : Nicolas a décidé bandeau « Rues chaudes » = bordeaux #BE123C, « à valider
     à l'œil ». Le VRAI LIVE est aujourd'hui #5b0e14 (écarlate sombre, retour Nicolas
     13-06 pour DISTINGUER du rouge vif). On tokenise la valeur LIVE (zéro changement
     de pixel). Bascule vers #BE123C = simple édition de CE token, sous porte verte. */
  --op-band-hotstreets: #5b0e14;

  /* =========================================================================
     1bis. OR / BRONZE — palette mandats complète (remplace les hex bruts mandats.css)
     ========================================================================= */
  --op-gold:         #b8860b;  /* bronze plein (= --op-mission-mandat, accent) */
  --op-gold-deep:    #94700d;  /* bronze profond (chevron) */
  --op-gold-edge:    #d4a017;  /* filet doré (bordures) */
  --op-gold-pastel-1:#fef3c7;  /* dégradé pastel clair (départ tuile) */
  --op-gold-pastel-2:#fde68a;  /* dégradé pastel (fin tuile) */
  --op-gold-ink:     #78350f;  /* brun titre sur or */
  --op-gold-ink-2:   #92400e;  /* brun secondaire sur or */
  --op-gold-glow:    rgba(120,53,15,.14); /* halo hover tuile mandat */

  /* =========================================================================
     2. NEUTRES / SURFACES / TEXTES / LIGNES
     ========================================================================= */
  /* SURFACES */
  --op-bg:            #f1f5f9;  /* fond d'écran (corps) — ex --ops-bg / --op8-slate-bg */
  --op-surface:       #ffffff;  /* cartes / barres — ex --ops-card */
  --op-surface-2:     #f8fafc;  /* sous-surface (stat, zones internes) */
  --op-surface-glass: rgba(255,255,255,0.92);

  /* TEXTE (encre slate) */
  --op-ink:       #0f172a;  /* texte/fond neutre principal — ex --ops-slate / --op8-ink */
  --op-ink-2:     #334155;  /* texte secondaire — ex --ops-slate-2 / --op8-ink-soft */
  --op-ink-3:     #64748b;  /* texte tertiaire / labels — ex --ops-slate-3 / --op8-muted */
  --op-ink-faint: #94a3b8;  /* texte très faible / repère — ex --op8-ink-faint */
  --op-ink-soft2: #cbd5e1;  /* texte clair sur fond sombre (sous-titre chip retour) */
  --op-on-color:  #ffffff;  /* texte sur aplat de couleur de mission */

  /* LIGNES / BORDURES */
  --op-line:      #e2e8f0;             /* bordure carte — ex --ops-line */
  --op-line-soft: rgba(15,23,42,0.06); /* séparateur léger — ex --op8-line-soft */
  --op-line-ink:  rgba(15,23,42,0.10); /* bordure encre — ex --op8-line */

  /* SCRIM / OVERLAYS */
  --op-scrim:      rgba(15,23,42,0.45); /* scrim bottom-sheet */
  --op-scrim-deep: rgba(11,18,32,0.55); /* scrim plein écran (planning #opsem-root) */

  /* FOND NEUTRE NOBLE (hero cockpit — neutre, jamais une couleur de mission) */
  --op-ink-grad: linear-gradient(135deg,#0f172a,#1e293b,#243246,#0b1120);

  /* =========================================================================
     3. TYPOGRAPHIE
     ========================================================================= */
  /* FAMILLE — une seule partout (résout la divergence Inter[menu] vs system-ui[planning] :
     Inter n'est pas chargée en web font → retombe déjà sur system-ui ; on aligne). */
  --op-font:       system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --op-font-serif: Georgia,'Times New Roman',serif; /* réservé au glyphe ⓘ italique existant */

  /* TAILLES (rationalisées sur les valeurs réellement observées) */
  --op-fs-display:  27px;   /* grand chiffre cockpit (anneau %) */
  --op-fs-h1-cossu: 22px;   /* titre hero cossu (mandat/planning) */
  --op-fs-h1:       21px;   /* titre d'écran */
  --op-fs-stat:     18px;   /* chiffre stat */
  --op-fs-title:    16.5px; /* titre de carte */
  --op-fs-nav:      16px;   /* titre barre nav */
  --op-fs-cta:      14.5px; /* texte CTA principal */
  --op-fs-body:     13px;   /* corps lisible plein soleil (PLANCHER critique) */
  --op-fs-sub:      12.5px; /* sous-texte carte */
  --op-fs-label:    12px;   /* labels secondaires */
  --op-fs-micro:    11px;   /* micro-note / CAP uppercase (non critique) */
  --op-fs-badge:    10.5px; /* badge / pastille uppercase */

  /* GRAISSES */
  --op-fw-regular: 400;
  --op-fw-medium:  600;
  --op-fw-bold:    700;
  --op-fw-black:   800;

  /* INTERLIGNE */
  --op-lh-tight: 1.2;   /* titres */
  --op-lh-snug:  1.4;   /* sous-texte */
  --op-lh-body:  1.55;  /* corps (plage 1.45–1.62 actuelle) */

  /* INTERLETTRAGE */
  --op-ls-title:   -0.3px; /* titres serrés */
  --op-ls-display: -0.5px; /* grands chiffres */
  --op-ls-cap:      0.6px; /* labels uppercase (jusqu'à 0.9px pour CAP) */

  /* =========================================================================
     4. ESPACEMENT — grille 4/8
     ========================================================================= */
  --op-sp-1:  4px;
  --op-sp-2:  8px;
  --op-sp-3:  12px;
  --op-sp-4:  16px;  /* padding horizontal scroll standard */
  --op-sp-5:  20px;
  --op-sp-6:  24px;
  --op-sp-8:  32px;
  --op-sp-10: 40px;
  /* demi-pas tolérés pour fines retouches existantes */
  --op-sp-half-1: 2px;
  --op-sp-half-3: 6px;
  --op-sp-half-5: 10px;
  --op-sp-half-7: 14px;

  /* =========================================================================
     5. RAYONS
     ========================================================================= */
  --op-r-xs:    7px;   /* logo, micro-éléments */
  --op-r-sm:    10px;  /* chip jour, watermark */
  --op-r-btn-2: 11px;  /* boutons barre nav */
  --op-r-btn:   12px;  /* boutons (primaire/stat) — canonique */
  --op-r-icon:  13px;  /* médaillon icône mission */
  --op-r-card-2:14px;  /* carte secondaire (série/semaine/consigne) */
  --op-r-dock:  16px;  /* dock de tournée (#opsem-bt-dock) */
  --op-r-card:  18px;  /* carte principale — ex --ops-r — canonique */
  --op-r-sheet: 22px;  /* bottom-sheet (haut) / device desktop */
  --op-r-pill:  999px; /* chips, pills, barres de progression */

  /* =========================================================================
     6. OMBRES / ÉLÉVATION
     ========================================================================= */
  --op-elev-0:     none;
  --op-elev-1:     0 1px 2px rgba(15,23,42,.06), 0 8px 24px rgba(15,23,42,.08); /* carte — ex --ops-shadow */
  --op-elev-2:     0 2px 6px rgba(15,23,42,.12);   /* icône / médaillon */
  --op-elev-toast: 0 8px 24px rgba(0,0,0,.25);     /* toast */
  --op-elev-dock:  0 10px 30px rgba(0,0,0,.35);    /* dock / chip retour flottant */
  --op-elev-modal: 0 30px 80px rgba(0,0,0,.5);     /* device / overlay plein écran desktop */
  --op-elev-gold:  0 4px 14px rgba(212,160,23,.30);/* hero or */

  /* =========================================================================
     7. ÉTATS (hover / press / focus / disabled / done)
     ========================================================================= */
  --op-state-press: brightness(.93);                  /* :active bouton de mission */
  --op-state-hover: brightness(.97);                  /* :hover desktop */
  --op-focus-ring:  0 0 0 3px rgba(37,99,235,.45);    /* anneau focus clavier (saphir, a11y E40) */
  --op-disabled-op: .5;                               /* opacité élément désactivé */
  --op-done-op:     .62;                              /* carte mission "done" (.ops-card.done) */

  /* =========================================================================
     8. ÉCHELLE Z-INDEX — déclarée (fin du « au feeling »)
     ========================================================================= */
  --op-z-base:      1;       /* contenu normal */
  --op-z-raised:    2;       /* élément surélevé intra-carte */
  --op-z-overlay:   20;      /* écran de mission intra-module */
  --op-z-dock:      29;      /* dock retour bas (rel-go / pm-tour) */
  --op-z-scrim:     30;      /* scrim bottom-sheet */
  --op-z-sheet:     31;      /* bottom-sheet */
  --op-z-toast:     40;      /* toast */
  --op-z-map-hud:   9000;    /* HUD carte (boutons géoloc/satellite) */
  --op-z-map-ctrl:  9999;    /* contrôles carte au-dessus du HUD */
  --op-z-mapdock:   10400;   /* dock retour carte (#opsem-mapret / #opsem-bt-dock) */
  --op-z-module:    10500;   /* module plein écran (planning #opsem-root) */
  --op-z-modal:     100000;  /* mini-feuille / modale (mandats #opm-root) */
  --op-z-sheet-top: 100050;  /* sheets template / courrier / valo (au-dessus du module) */
}
