/* ============================================================================
   theme.css — thème clair partagé
   ----------------------------------------------------------------------------
   Le thème sombre reste défini page par page (bloc :root de chaque fichier).
   Ce fichier n'ajoute QUE les surcharges du mode clair, sélectionnées par
   :root[data-theme="light"] — spécificité (0,2,0), donc elles l'emportent sur
   le :root local (0,1,0) même si celui-ci est déclaré plus loin dans la page.

   L'attribut data-theme est posé sur <html> par theme.js, avant le premier
   rendu, pour éviter le flash.

   Trois familles de tokens cohabitent dans l'app :
     · dark V2  --bg/--panel/--panel-2/--line/--txt/--blue/--teal/…
     · dark V1  --bg/--panel/--panel-2/--line/--txt/--accent/--accent-2/…
     · claire   --surface/--surface2/--border/--text/--accent/…  (pages script-*)
   Les deux premières sont surchargées ici. La troisième est déjà claire : les
   pages script-closer et script-setter reçoivent à la place une variante
   sombre, plus bas dans ce fichier.
   ========================================================================= */

:root { color-scheme: dark; }

/* ==========================================================================
   1. Mode clair — familles de tokens sombres (V1 + V2)
   ========================================================================== */

:root[data-theme="light"] {
  color-scheme: light;

  /* Fonds et surfaces */
  --bg: #f5f7fb;
  --bg-2: #eef2f8;
  --panel: #ffffff;
  --panel-2: #f7f9fd;
  --line: #e3e9f2;
  --line-2: #cbd5e4;
  --bg-glow: #e8edf7;

  /* Texte */
  --txt: #1e293b;
  --muted: #5c6a7d;   /* 5,0:1 sur le fond de page, 4,6:1 sur la pastille de nav */
  --muted-2: #67717f;   /* 4,7:1 sur blanc — AA pour le texte secondaire */

  /* Accents — assombris pour tenir le contraste AA sur fond blanc */
  --blue: #2563eb;
  --accent: #2563eb;
  --accent-2: #1d4ed8;
  --teal: #0f766e;
  --green: #047857;
  --amber: #b45309;
  --red: #dc2626;
  --violet: #7c3aed;
  --pink: #db2777;
  --gold: #a16207;
  --silver: #64748b;
  --bronze: #b45309;

  /* Encres sur pastilles teintées : en sombre c'était une teinte pâle du même
     accent, en clair il faut au contraire une teinte foncée. */
  --blue-ink: #1e40af;
  --green-ink: #065f46;
  --amber-ink: #92400e;
  --red-ink: #991b1b;
  --violet-ink: #5b21b6;

  /* Famille script-* : même correction de contraste que --green */
  --pos: #047857;

  /* Voiles de survol : blanc translucide en sombre, ardoise en clair */
  --ov-1: rgba(15, 23, 42, .025);
  --ov-2: rgba(15, 23, 42, .045);
  --ov-3: rgba(15, 23, 42, .07);
  --ov-4: rgba(15, 23, 42, .14);

  --shadow: 0 1px 2px rgba(30, 41, 59, .06), 0 8px 24px rgba(30, 41, 59, .07);
  --glow-teal: 0 2px 10px rgba(13, 148, 136, .22);
}

/* ==========================================================================
   2. Valeurs sombres des tokens introduits par ce chantier
   --------------------------------------------------------------------------
   Ces tokens n'existaient pas dans les blocs :root des pages (les couleurs
   correspondantes y étaient écrites en dur). On leur donne ici leur valeur
   sombre, pour que le rendu actuel soit strictement préservé.
   ========================================================================== */

:root {
  --line-2: #39414f;
  --bg-glow: #1a2030;

  --blue-ink: #9db9ff;
  --green-ink: #c8ffe3;
  --amber-ink: #ffd9a8;
  --red-ink: #ffd3da;
  --violet-ink: #d7c6ff;

  --ov-1: rgba(255, 255, 255, .025);
  --ov-2: rgba(255, 255, 255, .045);
  --ov-3: rgba(255, 255, 255, .065);
  --ov-4: rgba(255, 255, 255, .14);
}

/* Filet de sécurité : la barre de navigation a été copiée-collée entre pages
   avec les couleurs de la palette V2, si bien que certaines pages V1 ou
   script-* consomment des tokens que leur propre :root ne déclare pas
   (--teal sur index et extraction, --amber/--red sur settings…). Ce bloc leur
   donne la valeur sombre canonique.

   Il est volontairement placé AVANT le :root de chaque page dans l'ordre de
   cascade (le <link> précède le <style> local) : à spécificité égale, la
   déclaration de la page l'emporte. Ce sont donc des valeurs par défaut, pas
   des surcharges — aucune page ne voit sa palette changer. */
:root {
  --blue: #5b8cff;
  --accent: #5b8cff;
  --accent-2: #3b6ef0;
  --teal: #14e0c0;
  --green: #37e08c;
  --amber: #ffb454;
  --red: #ff6b81;
  --violet: #b18bff;
  --pink: #ff7ac6;
  --gold: #ffd54a;
  --silver: #cfd6e2;
  --bronze: #e0995a;
  --glow-teal: 0 0 30px rgba(20, 224, 192, .25);
}

/* ==========================================================================
   3. Barre d'application — retouches spécifiques au mode clair
   --------------------------------------------------------------------------
   L'appbar est dupliquée dans chaque page avec des couleurs en dur. Les
   sélecteurs préfixés par [data-theme="light"] gagnent en spécificité et
   l'emportent donc sur les règles locales, déclarées plus loin.
   ========================================================================== */

[data-theme="light"] .appbar .brand h1 { color: var(--txt); }
[data-theme="light"] .appbar .brand .sub { color: var(--muted); }

[data-theme="light"] .appbar .nav {
  background: #eaeff7;
  border-color: var(--line);
}
[data-theme="light"] .appbar .nav a { color: var(--muted); }
[data-theme="light"] .appbar .nav a:not(.active):hover {
  color: var(--txt);
  background: rgba(255, 255, 255, .9);
}

[data-theme="light"] .appbar .gear,
[data-theme="light"] .appbar .themetoggle {
  background: #eaeff7;
  border-color: var(--line);
  color: var(--muted);
}
[data-theme="light"] .appbar .gear:hover,
[data-theme="light"] .appbar .themetoggle:hover {
  color: var(--txt);
  border-color: var(--line-2);
}
[data-theme="light"] .appbar .gear.active { color: var(--teal); }

/* Pastilles remplies par un accent : en sombre le fond était vif et l'encre
   sombre (#04121a) ; en clair l'accent est assombri, il faut donc inverser
   et passer l'encre en blanc. Ne concerne pas le dégradé de marque, qui
   reste vif dans les deux thèmes. */
[data-theme="light"] .preset.active,
[data-theme="light"] .m-first,
[data-theme="light"] .m-fu,
[data-theme="light"] .m-resched { color: #fff; }

/* Le logo et la pastille de nav active gardent leur dégradé de marque :
   texte foncé sur fond vif, lisible dans les deux thèmes. Seule la lueur,
   pensée pour le fond noir, est atténuée. */
[data-theme="light"] .appbar .brand .logo,
[data-theme="light"] .appbar .nav a.active {
  box-shadow: 0 2px 10px rgba(20, 224, 192, .28);
}

/* ==========================================================================
   4. Bouton de bascule — injecté par theme.js dans .navwrap
   ========================================================================== */

.appbar .themetoggle {
  width: 40px;
  height: 40px;
  border-radius: 11px;
  display: grid;
  place-items: center;
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  flex-shrink: 0;
  padding: 0;
  color: #9aa3b2;
  background: #14181f;
  border: 1px solid #262c38;
  transition: .15s;
}
.appbar .themetoggle:hover {
  color: #f1f4fa;
  border-color: var(--line-2);
}
/* L'icône annonce la destination : soleil en sombre (« passer au clair »),
   lune en clair. */
.appbar .themetoggle .i-to-dark { display: none; }
.appbar .themetoggle .i-to-light { display: block; }
[data-theme="light"] .appbar .themetoggle .i-to-dark { display: block; }
[data-theme="light"] .appbar .themetoggle .i-to-light { display: none; }

/* ==========================================================================
   5. Pages script-* — nativement claires, on leur fournit la variante sombre
   --------------------------------------------------------------------------
   Ces deux pages utilisent la famille --surface/--border/--text et leur :root
   local est DÉJÀ clair. C'est donc l'inverse des autres pages : il faut leur
   écrire un mode sombre, pas un mode clair.

   Le bloc est verrouillé par data-palette="script" (posé sur <html> dans ces
   deux pages seulement) parce que --bg, --muted et --accent sont des noms
   partagés avec les familles sombres : les surcharger sans garde casserait les
   quatorze autres pages.
   ========================================================================== */

:root[data-palette="script"][data-theme="dark"] {
  --bg: #0a0c10;
  --surface: #14181f;
  --surface2: #1a1f29;
  --border: #262c38;
  --text: #f1f4fa;
  --muted: #9aa3b2;
  --accent: #5b8cff;
  --hero: #ff6b81;
  --pos: #37e08c;
  --warn: #ffb454;
  --err: #ff6b81;
  --shadow: 0 1px 0 rgba(255, 255, 255, .04), 0 12px 36px rgba(0, 0, 0, .5);
}

/* ==========================================================================
   6. Impression — toujours sur fond blanc
   ========================================================================== */

@media print {
  :root {
    color-scheme: light;
    --bg: #ffffff;
    --bg-2: #ffffff;
    --panel: #ffffff;
    --panel-2: #ffffff;
    --line: #d7dee9;
    --txt: #10151f;
    --muted: #4a5566;
    --muted-2: #6b7688;
    --shadow: none;
  }
  body { background: #ffffff !important; }
}
