/* ============================================================
   Couleurs, typographie, variables
   ============================================================
   Refonte d'août 2026 — registre « outil de gestion ».
   Ce qui a changé et pourquoi :
     · le papier crème (#F2EFE9) cède la place à un neutre à peine
       tiède : dans un outil qu'on regarde huit heures par jour,
       le fond doit s'effacer pour que les données ressortent ;
     · le prune de la charte ne bouge pas — seul son
       EMPLOI change : accent ponctuel (sélection, action
       principale, entrée de menu active) au lieu de teinte de
       fond généralisée ;
     · les statuts sont désaturés d'un cran. Ce sont des SIGNAUX ;
       sur un écran qui en montre vingt, une couleur pleinement
       saturée devient du bruit ;
     · rayon 14px → 8px, et l'ombre disparaît presque : au-delà de
       ~10px un rectangle cesse de lire comme une zone de données
       et lit comme une bulle. Les panneaux se délimitent par un
       TRAIT ; seuls les éléments qui flottent vraiment (fenêtres,
       menus) gardent une ombre, et elle est alors franche.
   Les composants correspondants vivent dans `peau.css`.
   ============================================================ */
/* ============ TOKENS ============ */
:root{
  /* Fonds */
  --paper:#F5F4F2; --surface:#FFFFFF; --surface-2:#FAF9F8;
  --sidebar:#F0EFEC;          /* la colonne se distingue du contenu */
  /* Encre — trois niveaux, tous lisibles sur --surface */
  --ink:#1B1A18; --ink-soft:#575651; --ink-faint:#87857F;
  /* Traits — ils remplacent les ombres comme séparateur */
  --line:#E2E0DC; --line-soft:#EEEDEA;
  /* ---------- LA COULEUR DE LA MAISON ----------
     ⚠️ CES VALEURS SONT DES VALEURS D'USINE, PAS DES CONSTANTES. Elles sont
     ici pour que la page soit juste AVANT que le moindre script tourne — pas
     de clignotement au chargement — et `core/charte.js` les remplace ensuite
     par celles de l'instance. Les retirer d'ici ferait apparaître une page
     sans couleur le temps d'un battement de cil.
     ⚠️ LES QUATRE SUIVANTES ÉTAIENT RÉÉCRITES À LA MAIN dans `print.css` et
     `espace-client.css` : le jeton existait, deux feuilles l'ignoraient. Même
     défaut que le nom de la société, écrit vingt fois alors que le paramètre
     existait. */
  --accent:#8C405D;
  --accent-ink:#6B2E45;       /* assez sombre pour du texte sur blanc */
  --accent-wash:#F7EFF3;      /* voile prune : fonds sélectionnés */
  --accent-clair:#C67094;     /* le haut des dégradés */
  --accent-fonce:#5F2B40;     /* texte sur voile, chiffres d'un total */
  --accent-voile:#F3E8ED;     /* en-tête d'un tableau de document */
  --sand:#A8763F;             /* ocre / pigment micro-béton */
  --sand-soft:#F4EDE3;
  /* Statuts — désaturés : ce sont des signaux, pas de la décoration */
  --ok:#2E6B4C; --ok-bg:#EBF3EE;
  --warn:#8A6318; --warn-bg:#F7F0E1;
  --bad:#9C3A31; --bad-bg:#F9EAE7;
  --info:#2F5679; --info-bg:#E9F0F6;
  --sms:#57458A; --sms-bg:#EFEBF7;        /* violet — SMS (distinct du prune) */
  --portal:#1F6A6E; --portal-bg:#E3F0F0;  /* turquoise — espace client */
  --radius:8px; --radius-s:6px;
  --shadow:0 1px 2px rgba(24,22,20,.05);
  --shadow-pop:0 16px 40px rgba(24,22,20,.14), 0 2px 6px rgba(24,22,20,.06);
  /* Segoe UI n'existe ni sur Mac ni sur iPhone : l'ancienne pile y
     retombait sur system-ui sans le dire. On demande d'abord la police
     système de la plateforme, sans aucune ressource réseau — l'app doit
     rester servie depuis un dossier statique. */
  --sans:-apple-system,BlinkMacSystemFont,'SF Pro Text','Segoe UI Variable Text',
         'Segoe UI',Inter,Roboto,ui-sans-serif,system-ui,sans-serif;
  --mono:ui-monospace,'SF Mono',SFMono-Regular,'JetBrains Mono',Menlo,Consolas,monospace;
}
[data-theme="dark"]{
  --paper:#141413; --surface:#1B1B19; --surface-2:#222220; --sidebar:#100F0F;
  --ink:#EAE8E3; --ink-soft:#A5A39C; --ink-faint:#77746D;
  --line:#302F2B; --line-soft:#282723;
  --accent:#C97D9B; --accent-ink:#E4B0C3; --accent-wash:#2C1E24;
  --sand:#C79A62; --sand-soft:#332C22;
  --ok:#78B394; --ok-bg:#1E2C25; --warn:#CBA05F; --warn-bg:#2E2718;
  --bad:#D08578; --bad-bg:#2F211D; --info:#8AACCB; --info-bg:#1E2A35;
  --sms:#A997D8; --sms-bg:#25223A; --portal:#7CB9B7; --portal-bg:#1A2E2E;
  --shadow:0 1px 2px rgba(0,0,0,.4);
  --shadow-pop:0 16px 40px rgba(0,0,0,.55), 0 2px 6px rgba(0,0,0,.35);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--sans);background:var(--paper);color:var(--ink);font-size:13.5px;line-height:1.45;font-weight:400;-webkit-font-smoothing:antialiased;touch-action:manipulation}
a{color:inherit}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:14px}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
/* ⚠️ UN CHAMP N'EST JAMAIS NU — sinon le navigateur l'habille lui-même, EN BLANC.
   L'application dressait ses champs conteneur par conteneur : `.toolbar`,
   `.field`, `.tache-form`, `.linecard`, `.viewas`… Chaque nouveau formulaire
   était une occasion d'en oublier un, et un champ oublié gardait le rendu
   natif : fond blanc. Tant que le thème était clair, personne ne le voyait.
   En sombre, la règle ci-dessus écrit de l'encre claire par-dessus ce fond
   blanc : LE CHAMP DEVIENT ILLISIBLE. Signalé le 20/09/2026 sur le choix du
   canal, dans le journal des échanges d'un prospect — un champ blanc, vide
   en apparence, alors qu'il portait bien une valeur.

   ⚠️ `:where()` NE PÈSE RIEN. La règle doit céder à toutes les autres :
   `.toolbar select` et `.field input` continuent de décider de leur taille et
   de leurs coins. Sans `:where()`, les cinq `:not()` feraient de ce sélecteur
   le plus fort de la feuille et écraseraient tout le reste.

   Cases à cocher, boutons radio, curseurs, sélecteurs de couleur et champs de
   fichier gardent leur rendu natif : un cadre et du remplissage les
   déformeraient. */
:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),
       select, textarea){
  background:var(--surface); border:1px solid var(--line); border-radius:6px; padding:6px 9px;
}
:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),
       select, textarea):focus{
  outline:none; border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-wash);
}
/* Les chiffres s'alignent PARTOUT, pas seulement sur les totaux : dans une
   liste de montants, des chiffres de largeurs différentes empêchent de
   comparer deux lignes d'un coup d'œil. */
td,th,.kpi .val,.tag,.mc-rows,.sumrow,.ti-tag,.ai-tag{font-variant-numeric:tabular-nums}
/* Barre de défilement discrète — la précédente faisait 10px et se voyait
   plus que le contenu qu'elle accompagnait. */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ink-faint) 32%,transparent);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ink-faint) 52%,transparent)}
::-webkit-scrollbar-track{background:transparent}
