# Design système frontend Ce que toute nouvelle page ou tout nouveau composant Angular doit réutiliser, plutôt que redéfinir ses propres couleurs, rayons ou espacements en dur. Contexte : issue [#91](https://github.com/ineszang/ProjetPiscine_EnerVision/issues/91), née d'une incohérence visuelle accumulée page après page (aucun jeton partagé n'existait avant ce chantier). ## Tokens Déclarés en CSS custom properties dans `apps/frontend/src/styles/_tokens.scss`, importés une seule fois dans `src/styles.scss`. Disponibles partout sans import supplémentaire. | Variable | Rôle | |---|---| | `--color-primary`, `--color-primary-hover`, `--color-primary-light` | Couleur de marque (vert, dérivé du logo), actions principales | | `--color-text`, `--color-text-muted`, `--color-label` | Hiérarchie de texte (titres, texte secondaire, labels de formulaire) | | `--color-border`, `--color-border-light` | Bordures d'inputs et de cartes | | `--color-bg`, `--color-surface` | Fond de page vs fond des cartes/panneaux | | `--color-disabled` | Éléments désactivés | | `--color-success` / `-bg`, `--color-warning` / `-bg` / `-text`, `--color-danger` / `-hover` / `-bg` / `-border`, `--color-critical` | États sémantiques (alertes, badges) | | `--color-text-inverse` | Texte sur fond coloré plein (boutons/badges) | | `--font-family` | Police unique de l'application | | `--radius-sm`, `--radius-md`, `--radius-pill` | Rayons de bordure (input/bouton, carte, pastille) | | `--shadow-card` | Ombre portée des cartes | | `--space-1` à `--space-5` | Échelle d'espacement (0.35rem à 2.5rem) | Les classes de formulaire partagées (`.form-label`, `.form-input`, `.form-hint`) sont dans `apps/frontend/src/styles/_forms.scss`, importées globalement de la même façon. Elles s'appliquent directement à des `