/*
 * Copyright (c) 2025-2026.
 * kwargs SRL – Ingénierie logicielle, Bruxelles
 * Tous droits réservés.
 */

/* ── FUTILITY : PALETTE ───────────────────────────────────────────── */
/*                                                                      */
/*  Cette feuille ne porte QUE des jetons. Les composants vivent dans    */
/*  `style.css`, chargée juste après.                                    */
/*                                                                      */
/*  ELLE NE SURCHARGE PLUS RIEN : le produit ne charge ni Bootstrap ni   */
/*  la palette du socle (décision du gérant du 13/09/2026, `SPEC.md`     */
/*  §5). Tout ce que la feuille lit se déclare donc ici, et un canari du */
/*  produit l'exige : un jeton lu sans être déclaré ne fait aucun bruit, */
/*  il rend une déclaration vide et le rendu casse en silence.           */
/*                                                                      */
/*  LES COULEURS DU COMMODORE 64 (1982). Les couleurs du produit sont    */
/*  celles d'une machine de 1983 au plus tard, et le C64 est celle-là.   */
/*  Valeurs de référence : palette Pepto, ratios mesurés contre le noir. */
/*                                                                      */
/*  SEPT SEULEMENT, et pas les seize : un canari du produit refuse un    */
/*  jeton déclaré que personne ne lit. Une palette qui porte des lignes  */
/*  mortes finit par ne plus dire ce que le produit affiche. Les autres  */
/*  couleurs du C64 s'ajouteront le jour où un écran les emploiera.      */
/*                                                                      */
/*  UN SEUL THÈME, le sombre : l'écran du produit est un terminal. Il    */
/*  n'y a donc pas de bascule, pas de préférence à lire, pas de script   */
/*  anti-flash. Le contraste se mesure sur ce thème-là, et le canari ne  */
/*  juge que lui (`themes=("sombre",)`).                                 */
/*                                                                      */
/* ─────────────────────────────────────────────────────────────────── */

:root {

    /* ── 1. Les couleurs (Commodore 64, palette Pepto) ───────────── */

    --ks-c64-black:       #000000;   /*        le fond du terminal          */
    --ks-c64-white:       #ffffff;   /* 21,0:1 l'intensité maximale         */
    --ks-c64-lightgreen:  #9ae29b;   /* 13,7:1 le texte, comme un phosphore */
    --ks-c64-yellow:      #c9d487;   /* 13,3:1 ce qui alerte                */
    --ks-c64-green:       #5cab5e;   /*  7,4:1 les traits et les bordures   */
    --ks-c64-grey:        #898989;   /*  6,0:1 l'invite, et le secondaire   */
    --ks-c64-red:         #cb7e75;   /*  6,8:1 les diodes du panneau        */

    /* ── 2. Ce que chaque couleur porte ──────────────────────────── */
    /*                                                                */
    /*  Les rôles du socle (`--ks-primary`, `--ks-warning`…) sont le   */
    /*  vocabulaire que `colors.css` consomme, et il n'est plus        */
    /*  chargé : les déclarer ici ferait écrire des jetons que rien    */
    /*  n'affiche. Les noms ci-dessous disent ce que la feuille fait.  */

    --ks-fond:        var(--ks-c64-black);
    --ks-texte:       var(--ks-c64-lightgreen);
    --ks-intense:     var(--ks-c64-white);
    --ks-invite:      var(--ks-c64-grey);
    --ks-attenue:     var(--ks-c64-grey);
    --ks-trait:       var(--ks-c64-green);
    --ks-alerte:      var(--ks-c64-yellow);
    --ks-diode:       var(--ks-c64-red);

    /* ── 3. L'échelle de texte ───────────────────────────────────── */
    /*                                                                */
    /*  Glass TTY VT220 paraît plus petite que la police du socle à    */
    /*  taille égale, et ce n'est pas une affaire de métrique : sa      */
    /*  hauteur d'x vaut 0,500 em contre 0,493 pour Hanken Grotesk,     */
    /*  mesuré dans les fontes. C'est la finesse du trait, cette fonte  */
    /*  étant une matrice de pixels vectorisée : à corps égal, elle     */
    /*  pose moins d'encre.                                            */

    --ks-font-main: "Glass TTY VT220", ui-monospace, SFMono-Regular, Menlo, monospace;

    --ks-font-size-base: 1.5rem;
    --ks-font-size-sm:   1.25rem;
    --ks-font-size-lg:   1.8rem;

    --ks-titre-1: 3.5rem;
    --ks-titre-2: 2.4rem;
    --ks-titre-3: 1.9rem;

    /* ── 4. L'espacement ─────────────────────────────────────────── */
    /*                                                                */
    /*  Un terminal compte en lignes et en colonnes. L'échelle est     */
    /*  donc un rythme simple, en multiples d'une demi-ligne.          */

    --ks-espace-1: 0.5rem;
    --ks-espace-2: 1rem;
    --ks-espace-3: 1.5rem;
    --ks-espace-4: 2rem;
    --ks-espace-5: 3rem;
    --ks-espace-6: 4rem;

    --ks-largeur-texte: 46rem;
    --ks-largeur-page:  72rem;

    /*  Un seul plan au-dessus du flux : le lien d'évitement, quand il  */
    /*  prend le focus. Le produit n'a ni menu déroulant, ni boîte      */
    /*  modale, ni panneau flottant, donc pas d'échelle de plans.       */
    --ks-plan-evitement: 10;

    /*  Les filets. Celui du dehors est discontinu, et ses trois        */
    /*  mesures sont indépendantes : l'épaisseur du trait, la longueur   */
    /*  du tiret, l'écart entre deux tirets.                             */
    /*                                                                   */
    /*  `border-style: dashed` ne le permet pas : il dérive tiret et     */
    /*  écart de l'épaisseur, trois fois pour l'un, autant pour l'autre. */
    /*  Le filet est donc peint en dégradés répétés (`style.css`), seule */
    /*  façon de dire « tiret, espace, tiret » et de le régler.          */
    --ks-filet:        1px;
    /*  Même épaisseur des deux côtés, et c'est une DÉCISION et non une   */
    /*  coïncidence : la seule différence entre les deux cadres doit      */
    /*  être la discontinuité, le trait disant la distance. Le jeton      */
    /*  garde son nom, de sorte qu'on puisse les séparer d'une ligne si   */
    /*  un jour cela se décide.                                           */
    /*                                                                    */
    /*  Il valait 4px puis 2px, reste du temps où le filet était bordé et */
    /*  où l'épaisseur du trait commandait la taille de la marque. Peint, */
    /*  il ne la commande plus.                                           */
    --ks-filet-tirets: var(--ks-filet);
    --ks-tiret:        12px;
    --ks-tiret-ecart:  8px;

    /* ── 5. Les diodes du panneau ────────────────────────────────── */
    /*                                                                */
    /*  Une machine sous tension ne montre pas un état figé : ses      */
    /*  diodes changent. Le panneau du hero les fait battre, chacune   */
    /*  à son rythme, ce qui donne le grain d'un calcul en cours       */
    /*  plutôt qu'un clignotement d'ensemble.                          */

    --ks-diode-periode: 2.4s;
    --ks-diode-pas:     0.31s;

    /* ── 6. La partie qui se joue seule ──────────────────────────── */
    /*                                                                */
    /*  Le morpion de la page d'enregistrement : neuf coups qui        */
    /*  paraissent l'un après l'autre, un temps d'arrêt sur la grille  */
    /*  pleine, puis tout s'efface et la partie recommence. Une seule  */
    /*  durée gouverne le tout, les coups se répartissant dessus par   */
    /*  pourcentages. Elle est répétée dans la vue, et un canari       */
    /*  exige que les deux s'accordent.                                */

    --ks-morpion-cycle: 6s;

    /*  La frappe : cinq secondes, pas une de plus. Le serveur en tire le
        même nombre pour sa télémétrie, et un canari garde l'accord.  */
    --ks-lancement-cycle: 5s;

    /*  La pose d'une case : instantanée. Un caractère de terminal ne
        fond pas, il est là ou il n'y est pas. La valeur n'est pas nulle
        parce qu'une animation de durée nulle ne tient pas son état
        final ; c'est le plus court qui le tienne.  */
    --ks-lancement-pose: 1ms;
}
