/* JETONS DU SITE — la seule feuille que TOUTES les pages ont le droit de
   partager, /smsi/ comprise.

   POURQUOI CE FICHIER EXISTE
   /smsi/ ne voulait de public/style.css que les jetons — les couleurs, les
   deux familles de police, le rayon, les couleurs de categorie — et payait ce
   service en heritant des ~1360 lignes restantes, ecrites pour le portfolio et
   pour /admin. Trois pannes en une semaine, toutes de la meme forme : une
   regle sans selecteur de contexte, ecrite pour une partie du site, qui
   atteignait des pages de documentation que son auteur n'avait pas en tete.

     - `th, td { white-space: nowrap }` (ecrit pour /admin) : plus aucune
       cellule ne revenait a la ligne, largeur minimale de tableau jusqu'a
       3238 px pour une colonne de 355. Corrige par la PR #53.
     - `body { display: flex }` (pied de page collant du portfolio) : `.doc`
       devenait un flex item et sa largeur retombait sur son contenu,
       scrollWidth 638 sur un ecran de 390. Corrige par la PR #53.
     - `table { background: var(--surface) }` : un aplat opaque peignait
       par-dessus l'indice de defilement. Corrige par les PR #62 puis #63.

   Et l'audit du fichier en tenait d'autres en reserve : `button, .button`
   sortirait un <button> de /smsi/ en pastille ambre pleine dont le survol
   tombe a 4,30:1 en theme clair, et `h1, h2, h3 { font-family }` decidait la
   typographie des documents depuis la feuille du portfolio.

   Aucune discipline de selecteur ne ferme ca durablement : elle demande que
   chaque auteur, a chaque regle, a chaque PR, se souvienne qu'un dossier de
   documentation lit la meme feuille. Ce souvenir a echoue trois fois en une
   semaine. Ici, la separation est structurelle : /smsi/ charge tokens.css puis
   public/smsi/doc.css, et plus jamais style.css. Une regle de composant ecrite
   dans style.css ne peut plus l'atteindre, quel que soit son selecteur.

   CE QUI A LE DROIT D'ENTRER ICI, ET RIEN D'AUTRE
     - les @font-face
     - :root (palette sombre, defaut de ce fichier)
     - @media (prefers-color-scheme: light) { :root }
     - * { box-sizing: border-box }
     - html { scroll-behavior: smooth }
     - le bloc @media (prefers-reduced-motion: reduce)

   Autrement dit : des VALEURS, et les trois reglages de document qui n'ont
   aucun composant pour proprietaire. Pas un seul selecteur qui designe un
   morceau de page. Une regle qui vise une classe, un attribut de markup ou un
   element de contenu (a, h1, table, button) est une regle de composant : sa
   place est dans la feuille du composant, pas ici. Le test est simple — si la
   regle suppose quelque chose du HTML, elle ne rentre pas.

   Aucune ressource externe, CSP intacte. */

/* Police d'affichage auto-hebergee (aucune requete externe, CSP intacte).
   Space Grotesk variable, sous-ensemble latin — couvre les accents FR. */
@font-face {
  font-family: "Space Grotesk";
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url("/fonts/space-grotesk.woff2") format("woff2");
}

/* Identite : encre chaude, accent ambre (signal), une couleur par domaine.
   Tout passe par ces jetons ; les deux themes les redefinissent en bloc. */
:root {
  --bg: #0f1115;
  --surface: #171a21;
  --surface-hover: #1d212a;
  --border: #2a2f3a;
  --text: #ece9e2;
  --text-muted: #9c9ba6;
  --accent: #e6b450;
  --accent-soft: rgba(230, 180, 80, 0.14);
  --accent-ink: #1a1405;
  --ok: #4ccf8a;
  --danger: #ff6b6b;
  --radius: 12px;
  --max-width: 1080px;
  --cat-soc: #ff6b6b;
  --cat-infra: #4ccf8a;
  --cat-dev: #a78bfa;
  --cat-conformite: #5aa9ff;
  --cat-perso: #f5a3c7;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
  --display: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --rail-w: 264px;
  /* Refonte du 04/10/2026 (public/css/site.css) : largeur de lecture du site,
     grand rayon des cartes, etoiles et second halo (violet) du ciel. */
  --wrap: 1120px;
  --radius-lg: 18px;
  --star: rgba(255, 248, 235, .75);
  --halo-2: rgba(124, 92, 255, .16);
}

@media (prefers-color-scheme: light) {
  :root {
    --bg: #faf8f3;
    --surface: #ffffff;
    --surface-hover: #f3f0e8;
    --border: #e2ddd2;
    --text: #1b1a17;
    --text-muted: #6a6972;
    /* #a56f0b tombait a 4,06:1 sur --bg : sous le seuil AA (4,5) de la
       WCAG 2.1, donc tous les liens du theme clair echouaient. #96650a
       remonte a 4,75:1 pour un ecart de teinte imperceptible.
       Verifier apres toute retouche : node outils/contraste.mjs */
    --accent: #96650a;
    --accent-soft: rgba(150, 101, 10, 0.10);
    --accent-ink: #ffffff;
    --ok: #17874d;
    --danger: #d9483b;
    --cat-soc: #d9483b;
    --cat-infra: #17874d;
    --cat-dev: #6f4fd1;
    --cat-conformite: #1f6fd0;
    --cat-perso: #c23f82;
    --star: rgba(27, 26, 23, .32);
    --halo-2: rgba(111, 79, 209, .10);
  }
}

/* LE PIEGE DE CETTE SEPARATION, ET LA RAISON POUR LAQUELLE CETTE LIGNE EST ICI.
   Si `box-sizing: border-box` etait reste dans style.css, `.doc` — que /smsi/
   ne charge plus — repasserait en content-box : ses 1.5 rem de padding
   horizontal s'ajouteraient a sa largeur au lieu d'y etre compris, et les sept
   pages deborderaient de 3 rem. La panne serait visuellement identique a celle
   de la PR #53 (scrollWidth 425 mesure au controle negatif du harnais, contre
   390 attendu), pour une cause differente. Mesure faite : en retirant cette
   seule ligne, les captures de /smsi/ passent de 0 a plusieurs millions de
   pixels d'ecart. Ne pas la deplacer. */
* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
