/* Imagilire Studio — Palettes de syllabes (lot 4.4)
 *
 * Les six couleurs de syllabes vivaient dans le `:root` de
 * `imagilire-studio.css`, et cinq d'entre elles échouaient au critère AA sur le
 * fond blanc de l'éditeur — le vert à 2,10:1, l'orange à 2,19:1, la lettre
 * muette à 1,86:1 une fois son `opacity: .7` pris en compte. Le seuil du texte
 * courant est 4,5:1.
 *
 * Cette feuille les reprend, corrigées, et en ajoute une seconde série pour la
 * protanopie et la deutéranopie. Les valeurs sont celles de `PALETTES` dans
 * `js/imagilire-studio-contraste.js` ; c'est ce module qui les documente et
 * `tests/specs/contraste.spec.js` qui vérifie que les deux sources disent la
 * même chose — une palette recopiée à la main dans deux fichiers finit toujours
 * par diverger.
 *
 * ## Deux attributs, quatre combinaisons
 *
 *     html[data-theme]           "dark" ou absent
 *     html[data-palette-syllabes] "daltonisme" ou absent (classique)
 *
 * Les deux sont posés sur `<html>` par `settings.js`, et non sur `<body>` :
 * mis au même endroit, ils se combinent sans bataille de spécificité, et ils
 * s'appliquent avant que Quill n'ait construit quoi que ce soit.
 *
 * `body.theme-dark` continue d'exister en parallèle — quatorze règles de
 * `spell-tooltip.css` s'en servent déjà — mais ce n'est pas lui qu'on lit ici.
 *
 * ## Pourquoi les noms ne correspondent plus aux teintes
 *
 * `--syllabe-rouge` désigne le **premier rang du cycle**, pas la couleur rouge.
 * En palette daltonisme, c'est un brun. Les classes sont écrites par le worker
 * de syllabation et enregistrées dans les documents : les renommer aurait
 * demandé de migrer les documents existants, pour un gain nul — le panneau des
 * réglages les appelle déjà « Coul. 1 » à « Coul. 5 ».
 *
 * ## Aucun `!important` ici
 *
 * Ce ne sont que des définitions de variables : rien à gagner contre personne.
 * Les `!important` sont sur les règles `.syllabe-*` qui les consomment, dans
 * `imagilire-studio.css` et `imagilire-studio-editor.css`, et ils y étaient
 * déjà.
 */

/* ─────────────────────────────────────────────────────────────────────────
   Palette classique — les teintes des manuels français, amenées à AA
   ─────────────────────────────────────────────────────────────────────────

   Mesures sur les deux fonds clairs (#ffffff, puis #f5f7fa) :

     rouge   #c4321f   5,49:1   5,12:1        violet  #8c449f   6,10:1   5,68:1
     bleu    #0078b4   4,83:1   4,50:1        orange  #ab5e01   4,85:1   4,52:1
     vert    #03842e   4,83:1   4,50:1        muette  #637577   4,84:1   4,51:1

   Écart perceptuel minimal entre deux rangs du cycle : ΔE 32,2 (rouge/orange),
   en vision normale. Cette palette n'est pas sûre en protanopie ni en
   deutéranopie : c'est la raison d'être de la seconde. */

:root {
    --syllabe-rouge: #c4321f;
    --syllabe-bleu: #0078b4;
    --syllabe-vert: #03842e;
    --syllabe-violet: #8c449f;
    --syllabe-orange: #ab5e01;
    --lettre-muette: #637577;

    /* La même série, en double, et sous un nom que le thème sombre ne
       redéfinit jamais : c'est celle qu'imprime `imagilire-studio-print.css`.
       Le papier est blanc quel que soit le thème de l'écran ; y envoyer les
       couleurs claires du thème sombre donnerait une page illisible. */
    --syllabe-rouge-clair: #c4321f;
    --syllabe-bleu-clair: #0078b4;
    --syllabe-vert-clair: #03842e;
    --syllabe-violet-clair: #8c449f;
    --syllabe-orange-clair: #ab5e01;
    --lettre-muette-clair: #637577;
}

/* Sur fond sombre, les mêmes teintes éclaircies.
   Mesures sur #1d2228, puis #14181c :

     rouge   #f05142   4,54:1   5,06:1        violet  #b16cce   4,50:1   5,02:1
     bleu    #469ee2   5,53:1   6,16:1        orange  #f9a21f   7,79:1   8,68:1
     vert    #45d377   8,26:1   9,21:1        muette  #95a4a5   6,20:1   6,91:1

   Écart minimal du cycle : ΔE 39,9 (bleu/violet), en vision normale. */

html[data-theme="dark"] {
    --syllabe-rouge: #f05142;
    --syllabe-bleu: #469ee2;
    --syllabe-vert: #45d377;
    --syllabe-violet: #b16cce;
    --syllabe-orange: #f9a21f;
    --lettre-muette: #95a4a5;
}

/* ─────────────────────────────────────────────────────────────────────────
   Palette daltonisme — sans couple rouge/vert
   ─────────────────────────────────────────────────────────────────────────

   Construite sur l'axe bleu/jaune, que la protanopie et la deutéranopie
   préservent, et complétée par des écarts de clarté (L* de 26 à 48) qui ne
   dépendent d'aucune perception chromatique.

   Mesures sur #ffffff, puis #f5f7fa :

     brun      #5f3317  10,65:1  9,92:1       prune   #5e285d  10,84:1  10,10:1
     bleu      #0943c1   8,13:1  7,57:1       ocre    #8f6c04   4,87:1   4,54:1
     turquoise #027aa6   4,84:1  4,51:1       muette  #6a7070   5,04:1   4,70:1

   Écart minimal du cycle **une fois simulée**, pris sur vision normale,
   protanopie et deutéranopie : ΔE 26,1 (turquoise/prune, en deutéranopie).

   Limite connue et assumée : l'axe bleu/jaune est justement celui que la
   tritanopie altère. La tritanopie touche moins d'une personne sur dix mille,
   contre environ un garçon sur douze pour les deux autres ; une palette ne peut
   pas couvrir les deux axes à la fois en restant à 4,5:1 sur blanc. */

html[data-palette-syllabes="daltonisme"] {
    --syllabe-rouge: #5f3317;   /* brun */
    --syllabe-bleu: #0943c1;    /* bleu franc */
    --syllabe-vert: #027aa6;    /* turquoise */
    --syllabe-violet: #5e285d;  /* prune */
    --syllabe-orange: #8f6c04;  /* ocre */
    --lettre-muette: #6a7070;

    /* La série d'impression suit la palette, mais jamais le thème. */
    --syllabe-rouge-clair: #5f3317;
    --syllabe-bleu-clair: #0943c1;
    --syllabe-vert-clair: #027aa6;
    --syllabe-violet-clair: #5e285d;
    --syllabe-orange-clair: #8f6c04;
    --lettre-muette-clair: #6a7070;
}

/* Mesures sur #1d2228, puis #14181c :

     brun      #f94f20   4,70:1   5,24:1      prune   #c666b3   4,54:1   5,06:1
     bleu      #679bfb   5,84:1   6,51:1      ocre    #debf71   8,99:1  10,02:1
     turquoise #2cd3fd   9,03:1  10,06:1      muette  #adb4b4   7,60:1   8,46:1

   Écart minimal du cycle, toutes visions : ΔE 24,5 (prune/ocre, en
   protanopie). */

html[data-theme="dark"][data-palette-syllabes="daltonisme"] {
    --syllabe-rouge: #f94f20;
    --syllabe-bleu: #679bfb;
    --syllabe-vert: #2cd3fd;
    --syllabe-violet: #c666b3;
    --syllabe-orange: #debf71;
    --lettre-muette: #adb4b4;
}

/* ─────────────────────────────────────────────────────────────────────────
   La lettre muette
   ─────────────────────────────────────────────────────────────────────────

   Elle était grise **et** à `opacity: .7`, ce qui la faisait tomber de 2,56:1
   (déjà en échec) à 1,86:1 réels. L'opacité a été retirée à sa source, dans
   `imagilire-studio.css` et `imagilire-studio-editor.css` : le gris est
   désormais choisi pour passer AA à lui seul, et c'est l'italique qui dit
   « on ne la prononce pas ».

   L'italique et non un soulignement : le pointillé est déjà pris par
   `.digramme`. Deux signes identiques pour deux notions différentes auraient
   coûté plus que le contraste gagné. Ce second signal, non chromatique,
   compte double — il reste lisible en noir et blanc, sur une photocopie, et
   pour un élève daltonien quelle que soit la palette. */
