/* Le socle de la charte — un seul fichier pour toutes les pages.
   Jusqu'ici chaque page redéclarait ses jetons, et les deux copies avaient
   divergé : --v-100 valait #E1DDFD dans le parcours et #E4E0FD sur l'accueil.
   Deux violets pour un seul nom, c'est une charte qui ne tient plus.

   Le principe du système est celui d'une page sans zones : un seul fond, du
   haut de l'écran au pied, et toute la hiérarchie portée par une encre unique
   déclinée en opacités. La couleur ne découpe pas la page — elle ne fait que
   la teinter. */

:root{
  /* ---------------------------------------------------------------- */
  /* Le fond — un seul, partout                                        */
  /* ---------------------------------------------------------------- */
  /* Pas #FFFFFF : sur un grand écran le blanc pur est clinique, et il
     transforme le moindre halo en tache aux bords visibles. Deux points de
     luminosité en dessous suffisent à ce que les voiles s'y fondent, sans
     qu'on distingue la différence à l'œil nu. */
  --paper:#FDFDFC;
  /* Le second papier n'est plus un gris : c'est l'encre à 4 %. Il sert à
     poser un champ ou une ligne survolée, jamais à fonder une section. */
  --paper-2:rgba(23,21,34,.04);

  /* ---------------------------------------------------------------- */
  /* L'encre — une seule teinte, cinq opacités                         */
  /* ---------------------------------------------------------------- */
  /* Un noir violacé plutôt qu'un gris froid : il s'accorde aux voiles sans
     jamais paraître coloré. Toute la page tient sur ces cinq valeurs. */
  --ink:#171522;
  --ink-2:#241F35;                 /* survol des surfaces d'encre */
  --ink-soft:rgba(23,21,34,.70);   /* texte secondaire   — 6,6:1 */
  /* Le ton le plus pâle admis sur du texte. L'échelle d'ode.com descend à
     0,40, mais sur ce papier-ci cela ne donne que 2,6:1 : illisible au sens
     du §14. 0,62 est la première valeur qui passe confortablement les 4,5:1
     exigés. En dessous, le ton n'a plus le droit de porter des mots — il ne
     sert plus qu'à des filets. */
  --ink-62:rgba(23,21,34,.62);     /* méta, numéros      — 5,0:1 */
  --line:rgba(23,21,34,.14);       /* filets et bordures */
  --ink-05:rgba(23,21,34,.05);     /* pilules, fonds de repos */

  /* ---------------------------------------------------------------- */
  /* Le violet — atmosphère et marque, jamais un fond de section       */
  /* ---------------------------------------------------------------- */
  /* Composantes du voile, en RGB nues : les halos les reprennent dans des
     rgba() dont ils règlent eux-mêmes l'opacité. */
  --halo:139,110,214;
  /* Les deux tons pâles admis en aplat, sur de petites surfaces seulement :
     une pilule, un champ coché, un filet. 4 % de saturation, comme les
     voiles — un aplat plus soutenu redeviendrait une zone. */
  --wash:#F4F1FC;
  --wash-line:#E8E2F8;
  /* Le seul violet lisible : liens, focus, et deux ou trois marques
     typographiques. 7,4:1 sur le papier. */
  --accent:#4A3A9E;
  --accent-fort:#3B2E82;           /* survol */
  --accent-d:#B9AAF2;              /* sur fond d'encre */

  /* Anciens noms de l'échelle violette. Ils survivent le temps que les
     dernières règles qui les nomment soient réécrites ; ils ne pointent plus
     vers des tons saturés mais vers le nouveau système. À supprimer. */
  --v-50:var(--wash);
  --v-100:var(--wash-line);
  --v-200:#D8D2EE;
  --v-300:#C7B9F0;
  --v-400:#9E8CDE;
  --v-500:var(--accent);
  --v-600:var(--accent-fort);
  --v-700:var(--accent-fort);
  --v-800:#2E2465;
  --v-900:#221B4C;

  /* ---------------------------------------------------------------- */
  /* Fond d'encre — ce qu'il en reste                                  */
  /* ---------------------------------------------------------------- */
  --d-text:#F4F3F8; --d-muted:rgba(244,243,248,.62); --line-d:rgba(255,255,255,.12);

  /* ---------------------------------------------------------------- */
  /* États                                                             */
  /* ---------------------------------------------------------------- */
  /* Les quatre états passent le contraste 4,5:1 exigé au §14, sur chacun des
     fonds de la charte — papier, blanc, lavis, et leur propre fond pâle.

     L'avertissement : la charte se contredit — §7 le donne à #B86A00, mais ce
     ton échoue (4,1:1 sur blanc). On retient le #8A4F00 du prompt de marque
     §24, qui passe à 6,6:1.

     Le succès et l'information ont été assombris pour la même raison : #1E9E6A
     rendait 3,0:1 et #3B76F6 3,6:1 dans leur pire emploi. Ils ne servaient
     encore nulle part — une couleur qui échoue avant d'être employée est la
     plus facile à corriger, et la plus sûre d'être oubliée si on attend. La
     teinte est conservée, seule la clarté baisse.

     Ratios minimaux mesurés : succès 5,7 · erreur 4,8 · avertissement 5,8 ·
     information 5,5. Une épreuve les recalcule à chaque exécution. */
  --success:#146B48; --success-bg:#ECF6F1;
  --error:#C4342B;   --error-bg:#FAEEED;
  --warning:#8A4F00; --warning-bg:#FAF2E6;
  --info:#2B5BC4;    --info-bg:#EDF1FD;

  /* ---------------------------------------------------------------- */
  /* Formes, ombres, courbes                                           */
  /* ---------------------------------------------------------------- */
  --r-sm:8px; --r-md:14px; --r-lg:20px; --r-pill:999px;
  /* Une page sans zones n'a pas d'ombres : ce qui doit se détacher se détache
     par un filet. Seul ce qui flotte réellement au-dessus du texte — une
     liste de suggestions, un panneau collant — garde une élévation. */
  --e1:none;
  --e2:0 10px 28px rgba(23,21,34,.10);
  --e3:0 24px 56px rgba(23,21,34,.14);
  --e-accent:none;
  /* Deux courbes, et deux seulement : entrée/survol, puis aller-retour. */
  --ease:cubic-bezier(.22,1,.36,1); --ease-in-out:cubic-bezier(.65,.05,.36,1);
  --t-micro:150ms; --t-state:300ms; --t-reveal:640ms;
}
