/* Tokens de design du socle skeleton.
   Un projet dérivé se rehabille en surchargeant ce seul fichier.
   N'ajoute jamais de couleur ni de rayon en dur dans les autres feuilles.

   Chargement : les gabarits déclarent cette feuille en <link> AVANT les autres
   (chargement parallèle, pas d'aller-retour sérialisé sur le chemin de rendu),
   et les autres feuilles gardent un @import pour rester autonomes si elles sont
   chargées seules. Aucune étape de build, le CSS est servi tel quel. */

:root {
  --primary: #2563eb;
  --primary-dark: #1d4ed8;
  --danger: #dc2626;
  --text: #1f2937;
  --text-light: #6b7280;
  --border: #e5e7eb;
  --bg: #f9fafb;
  /* Surface : fond des cartes, champs, menus et barres. */
  --surface: #fff;
  /* Texte, remplissage et tracé posés SUR un aplat coloré (bouton primaire,
     pastille de danger, avatar). Distinct de la surface, même si les deux
     valent du blanc aujourd'hui : un projet dérivé qui assombrit ses surfaces
     doit pouvoir garder ce contraste, et inversement. */
  --on-accent: #fff;
}

/* Jeux d'état : chaque état se décline en fond, bordure et teinte forte
   (texte du message, et aplat plein des pastilles). Le fort du danger est
   --danger ci-dessus, qui sert aussi de couleur d'accent. */
:root {
  --success-bg: #f0fdf4;
  --success-border: #bbf7d0;
  --success-strong: #15803d;

  --danger-bg: #fef2f2;
  --danger-border: #fecaca;

  --warning-bg: #fef3c7;
  --warning-border: #fde68a;
  --warning-strong: #b45309;

  --info-bg: #eff6ff;
  --info-border: #bfdbfe;
  --info-strong: #1e40af;
}

/* ── Palette secondaire : catégorisation et nuances ─────────────────────────
   La palette de base ci-dessus habille le châssis : elle dit ce qu'est une
   surface, un cadre, un accent, un état. Celle-ci répond à une autre question :
   « de quoi s'agit-il ? ». Une teinte par TYPE de contenu (puces de la
   recherche globale), par RÔLE d'utilisateur, par ACTION de tableau, plus les
   quelques nuances que la palette de base ne couvre pas (surlignage de
   l'éditeur, damier de transparence, aperçu Google...). C'est ici, et nulle
   part ailleurs dans les feuilles, qu'un projet dérivé la surcharge.

   Deux règles pour qui reprend ce bloc :
   - Deux tokens de MÊME valeur ne sont pas un doublon à fusionner. Le fond du
     bandeau de maintenance et celui de la puce « cookie » valent tous deux
     #fff7ed aujourd'hui ; ils décrivent des choses sans rapport et un dérivé
     doit pouvoir les séparer. Seuls les tokens qui citent explicitement la
     palette de base (var(--success-bg)...) sont volontairement liés à elle.
   - Deux teintes VOISINES restent deux tokens. Les rapprocher est une décision
     de design, pas un nettoyage. */

/* Puces de type de la recherche globale du back office : une teinte par
   entité, pour reconnaître la nature d'un résultat sans lire son libellé. */
:root {
  --chip-user-bg: var(--info-bg);
  --chip-user-fg: var(--primary);

  --chip-message-bg: var(--danger-bg);
  --chip-message-fg: var(--danger);

  --chip-social-bg: var(--success-bg);
  --chip-social-fg: var(--success-accent);

  --chip-legal-bg: #fefce8;
  --chip-legal-fg: #a16207;

  --chip-seo-bg: #f5f3ff;
  --chip-seo-fg: #7c3aed;

  --chip-cookie-bg: #fff7ed;
  --chip-cookie-fg: #c2410c;
}

/* Rôles d'utilisateur : teinte du badge et du sélecteur de rôle. Les deux
   rôles courants empruntent à la palette de base (ROLE_USER sur l'info,
   ROLE_ADMIN sur l'avertissement) ; seuls les deux rôles à part ont leur
   propre teinte, pour sauter aux yeux dans une liste. */
:root {
  --role-super-admin-bg: #fce7f3;
  --role-super-admin-fg: #be185d;
  --role-super-admin-border: #fbcfe8;

  --role-intern-bg: #ecfeff;
  --role-intern-fg: #0e7490;
  --role-intern-border: #a5f3fc;
}

/* Boutons d'action des tableaux du back office qui ne relèvent d'aucun état :
   activer/désactiver (neutre ardoise) et réinitialiser le mot de passe
   (violet). Les autres actions - éditer, archiver, restaurer - reprennent la
   palette de base et n'ont donc pas de token ici. */
:root {
  --action-power-fg: #475569;
  --action-power-border: #cbd5e1;
  --action-power-bg: #f1f5f9;

  --action-key-fg: #7c3aed;
  --action-key-border: #ddd6fe;
  --action-key-bg: #f5f3ff;
}

/* Mode maintenance : un orange qui n'appartient à aucun état, pour que le
   bandeau et son bouton de sortie ne se confondent ni avec un avertissement
   ni avec une erreur. */
:root {
  --maintenance-bg: #fff7ed;
  --maintenance-border: #fdba74;
  --maintenance-fg: #9a3412;
  /* Liseré gauche du bandeau et aplat du bouton « désactiver ». */
  --maintenance-accent: #ea580c;
  --maintenance-accent-dark: #c2410c;
}

/* Nuances d'état absentes de la palette de base, chacune volontairement
   décalée de son état d'origine. */
:root {
  /* Vert plein d'accent : trait et jauge des toasts de succès, ligne validée
     de la checklist de mot de passe. Plus clair que --success-strong, qui
     reste réservé au texte. */
  --success-accent: #16a34a;
  /* Texte des alertes d'erreur : plus sombre que --danger, qui sert d'aplat. */
  --alert-error-fg: #b91c1c;
  /* Ambre plus pâle que --warning-bg, pour un fond qui ne doit qu'effleurer :
     badge d'avertissement, compte à rebours de la fenêtre de modification. */
  --warning-bg-soft: #fffbeb;
}

/* Surfaces et chrome particulières : des fonds qui ne sont ni --surface ni
   --bg parce qu'ils remplissent un autre office. */
:root {
  /* Encart posé DANS une carte (checklist de mot de passe, demande en
     attente) : un cran sous la surface qui le porte. */
  --surface-inset: #f8fafc;
  /* Ligne de tableau non lue (messages de contact). */
  --row-unread-bg: #f8faff;
  /* Interrupteur au repos ; à l'état actif il passe sur --primary. */
  --toggle-off-bg: #d1d5db;
  /* Damier qui révèle les zones transparentes d'un logo ou d'un favicon :
     deux cases alternées, à garder franchement contrastées entre elles. */
  --checkerboard-a: #f3f4f6;
  --checkerboard-b: #ffffff;
  /* Fond du plan de travail de recadrage, derrière l'image de l'utilisateur :
     sombre à dessein, quelle que soit la clarté du reste du thème. */
  --crop-stage-bg: #111;
  /* Trace d'erreur du journal (back office) : bloc sombre assumé, lu comme du
     terminal et non comme du texte de page. */
  --stacktrace-bg: #0f172a;
  --stacktrace-fg: #e2e8f0;
}

/* Éditeur riche et aperçu de résultat Google (fiche SEO). L'aperçu imite les
   couleurs de Google : un projet dérivé n'a normalement pas à y toucher, mais
   elles restent ici plutôt qu'enfouies dans la feuille. */
:root {
  --rte-mark-bg: #fef08a;
  --seo-preview-url-fg: #0f7a3d;
  --seo-preview-title-fg: #1a0dab;
}

/* Rayons, nommés par le rôle de l'élément arrondi et non par leur valeur. */
:root {
  --radius-control: 8px;
  --radius-card: 12px;
  --radius-pill: 999px;
}

:root {
  --nav-h: 62px;
  --sidebar-w: 260px;
  --sidebar-w-collapsed: 74px;
}

/* Alias de compatibilite : noms historiques encore consommes par error-page.css.
   Ce ne sont que des renvois vers les tokens ci-dessus, aucune couleur nouvelle.
   Le nom « glass » est un reliquat de glassmorphism, aujourd'hui interdit par
   la charte : a supprimer le jour ou error-page.css sera renomme sur les
   tokens de base (--primary, --primary-dark, --border, --text-light). */
:root {
  --accent: var(--primary);
  --accent2: var(--primary-dark);
  --glass-border: var(--border);
  --muted: var(--text-light);
}
