# Charte graphique — SIOP V2 > **Rôle de ce document (playbook)** : fixer l'identité visuelle AVANT le code. Toute > valeur visuelle vit dans [`tokens.css`](tokens.css) (source de vérité, importée telle > quelle par l'application) ; ce document explique les **choix** et leurs raisons. > Règle absolue : aucun style codé en dur hors tokens — c'est ce qui a rendu la v1 « flottante ». ## 1. Positionnement SIOP est un **outil de travail professionnel** pour ascensoristes : sobre, dense sans être étouffant, lisible en plein soleil sur un chantier comme au bureau. Le monde visuel est celui du métier — acier, cabine, signalisation de sécurité — pas celui d'une app grand public. Deux thèmes (clair/sombre) au même niveau de soin. ## 2. Couleur | Token | Valeur (clair) | Rôle & justification | | --- | --- | --- | | `--encre` | `#1B2534` | Texte principal — un « noir acier » à biais bleu, jamais de noir pur | | `--bleu-treuil` | `#1F4FB8` | **Primaire** (actions, liens, focus) — bleu de vêtement de travail, profond et désaturé, volontairement distinct du bleu néon par défaut des frameworks | | `--safran` | `#DD8A0B` | **Accent de marque** — safran marocain / gilet haute visibilité. Parcimonieux : logo, rail actif de navigation, moments de marque. Jamais pour un statut | | Fonds | `#F5F7FA` / surfaces `#FFFFFF` | Acier clair, biais froid assumé | | Sombre | fond `#0F1622`, surface `#182234` | « Machinerie de nuit » — pas une simple inversion | **Statuts (réservés, jamais réutilisés ailleurs)** : Ouvert `bleu`, En cours `indigo`, En attente `ambre`, Terminé `vert`, Annulé `gris`. Priorités : **Personne bloquée** (rouge vif + pastille animée — la seule animation d'alerte de l'app), Haute `rouge`, Moyenne `ambre`, Basse `verte`. Toujours pastille/pictogramme + libellé, jamais la couleur seule. **Palettes graphiques (analytics) — validées par script (CVD, contraste, bande de luminosité)** : - Clair : `#3B69D6 · #DD8A0B · #1F9E8E · #8A63D2` (ordre fixe, jamais recyclé ; étiquettes directes obligatoires — le safran passe sous 3:1 sur blanc). - Sombre : `#5580E4 · #C7820A · #26A896 · #9673DE` (repas dédiés, pas d'inversion automatique). ## 3. Typographie - **UI & titres : Manrope** (géométrique-humaniste, OFL, auto-hébergée — jamais de CDN). Titres en 600/700, `text-wrap: balance`. Les maquettes HTML approximent avec Avenir Next (présent sur macOS) en attendant l'app. - **Données : chiffres tabulaires** (`font-variant-numeric: tabular-nums`) partout où des nombres s'alignent (tables, KPI, coûts). - Échelle : 12 / 13 / 14 (base) / 16 / 20 / 24 / 32. Libellés en capitales : 11 px, `letter-spacing: 0.06em`. ## 4. Forme & espace - Grille d'espacement **4 px** ; densité « bureau » (tables 40 px/ligne) mais cibles tactiles ≥ 44 px sur mobile. - Rayons : 10 px (cartes), 8 px (contrôles), 999 px (pastilles). - Élévation discrète : bordures d'abord (`--bordure`), ombre légère seulement au survol/menus. - **Motif signature « rail »** : l'élément actif de la navigation porte un rail vertical safran de 3 px (la cage d'ascenseur) — c'est LE geste identitaire, utilisé nulle part ailleurs. ## 5. Iconographie & logo - **Lucide**, trait 1,75 px, 16–20 px dans l'UI. - Logotype : « SIOP » en Manrope 700 + marque **▲▼** (montée/descente cabine) safran sur encre. Favicon = la marque seule. ## 6. Mouvement Fonctionnel uniquement : transitions 120–160 ms (`ease-out`) sur survol/ouverture ; `prefers-reduced-motion` respecté ; **une seule** animation continue autorisée — la pastille « personne bloquée ». ## 7. Ton rédactionnel Français métier, direct, sans jargon système : « Clôturer l'intervention », pas « Soumettre le formulaire ». Les erreurs disent quoi faire (« La checklist est incomplète : traitez chaque tâche »), jamais « Erreur 400 ». Vocabulaire du carnet : OT, bilan, organe, grille du mois. ## 8. Application `tokens.css` est copié tel quel dans `apps/web` (et mappé vers la config Tailwind/shadcn). La page `/design` de l'app (R0) expose tous les tokens et composants — c'est la référence vivante des revues pixel.