/* Surface de jeu — jetons communs à TOUS les moteurs
 *
 * Ce fichier est chargé après le tokens.css du thème actif et n'est JAMAIS
 * surchargé par un thème. C'est l'application de la règle 11 : un thème
 * habille le site, il ne touche pas à la surface de jeu.
 *
 * Pourquoi c'est un fichier séparé plutôt qu'une section de tokens.css :
 * si ces valeurs vivaient dans le thème, un thème de Noël pourrait rendre
 * une grille de sudoku rouge sur vert, ou teinter les pièces d'un
 * casse-tête. Les sortir du thème rend la faute impossible plutôt
 * qu'interdite.
 *
 * Tout nouveau moteur — taquin, sudoku, mots mêlés — utilise ces jetons et
 * n'en définit pas d'autres. C'est ce qui garantit qu'un deuxième type de
 * jeu ne demande aucun travail de thème.
 */

:root {
  /* ---- Le plateau ---- */
  --jeu-fond:        #0f3a34;  /* le feutre, invariable                     */
  --jeu-plateau:     #10423b;  /* zone de dépôt, légèrement détachée du fond */
  --jeu-bord:        rgba(233, 216, 189, 0.18);

  /* ---- Grilles : taquin, sudoku, mots mêlés ---- */
  --jeu-case:        #efe9dc;  /* fond de case                              */
  --jeu-case-fixe:   #ded5c4;  /* indice imposé, non modifiable             */
  --jeu-case-active: #fff4e6;  /* case sélectionnée                         */
  --jeu-case-pair:   #e6dfd0;  /* damier de région, sudoku                  */
  --jeu-trait:       #9d9384;  /* trait fin entre cases                     */
  --jeu-trait-fort:  #4a4438;  /* séparation de région 3×3                  */
  --jeu-chiffre:     #171a17;
  --jeu-chiffre-fixe:#4a4438;

  /* ---- États, identiques pour tous les moteurs ---- */
  --jeu-resolu:      #006600;  /* pièce verrouillée, grille terminée        */
  --jeu-erreur:      #b4463c;  /* conflit détecté, sudoku                   */
  --jeu-indice:      #ff6b04;  /* aide ponctuelle, case révélée             */
  --jeu-survol:      rgba(255, 107, 4, 0.14);

  /* ---- Accrochage et retour visuel ---- */
  --jeu-ombre-piece: 0 4px 10px rgba(0, 0, 0, 0.35);
  --jeu-duree-snap:  140ms;
  --jeu-courbe:      cubic-bezier(0.2, 0.9, 0.3, 1.2);  /* léger rebond     */

  /* ---- Lisibilité ----
   * Les chiffres d'une grille montent bien au-dessus du corps de texte :
   * une case de sudoku se lit à bout de bras sur une tablette posée.
   */
  --jeu-taille-chiffre: clamp(20px, 4.5vmin, 34px);
  --jeu-case-min:       clamp(34px, 9vmin, 62px);
}

/* Le mode contraste renforcé est un réglage de la personne, pas du thème.
   Il s'applique donc ici, où aucun thème ne peut le contredire. */
[data-contraste="fort"] {
  --jeu-case:        #ffffff;
  --jeu-case-fixe:   #d0cabb;
  --jeu-trait:       #6b6558;
  --jeu-trait-fort:  #000000;
  --jeu-chiffre:     #000000;
  --jeu-chiffre-fixe:#000000;
  --jeu-erreur:      #8f2f26;
}

/* Le réglage « grosses pièces » réduit d'un cran la densité sans changer
   le niveau annoncé, donc sans invalider les records. */
[data-pieces="grosses"] {
  --jeu-case-min:       clamp(46px, 12vmin, 78px);
  --jeu-taille-chiffre: clamp(24px, 5.5vmin, 40px);
}

@media (prefers-reduced-motion: reduce) {
  :root { --jeu-duree-snap: 0.01ms; --jeu-courbe: linear; }
}
