/* ============================================================
   Ajustes de tema que no pertenecen a ningún componente
   ------------------------------------------------------------
   Capa: base

   HASTA LA FASE 7 ESTE ARCHIVO ERA EL BLOQUE DE ALIAS DE MARCA.

   Los apuntes escribían `var(--gold)`, `var(--navy)`,
   `var(--color-gray)`… dentro de atributos `style=""`, y acá vivían
   los alias que los traducían al contrato. Eran 251 usos repartidos
   en 21 apuntes.

   La Fase 7 los reemplazó uno por uno en el contenido, así que los
   alias dejaron de tener a quién servir y se borraron. Si alguna vez
   volvés a ver `var(--gold)` en un apunte nuevo, **no es que falte
   el alias: es que ese apunte está escrito con el vocabulario
   viejo.** El mapeo, por si hace falta:

       --gold → --accent          --navy       → --accent-2
       --gold-dark → --accent-strong           --navy-light → --accent-2-strong
       --gold-glow → --accent-glow             --navy-dim   → --accent-2-dim
       --gold-dim  → --accent-dim              --cream      → --bg
       --color-gray / --text-muted / --text-light → --gray
       --white → --card                        --shadow-gold → --shadow-accent

   ⚠️ OJO: los nombres viejos SIGUEN VIVOS fuera de los apuntes —en
   `biblioteca-insight/login.php`, en los `index.php` de sección y en
   los 13 `.html` legacy—, pero ahí cada página declara su propio
   `:root`. No dependen de este archivo y no hay que tocarlos.

   Lo único que queda acá es la regla del logo: invertirlo en modo
   oscuro no es "compatibilidad" ni forma de un componente, es un
   ajuste de tema, y este es su lugar histórico. Moverlo a navbar.css
   reordenaría la cascada sin ganar nada.
   ============================================================ */

/* El logo es un SVG/PNG oscuro sobre fondo claro. En modo oscuro se
   invierte a blanco en vez de mantener dos archivos de imagen. */
body.dark-mode .logo-light img,
body.dark-mode .logo-light svg { filter: brightness(0) invert(1); }


/* ═══════════════════════════════════════════════════
   RED DE SEGURIDAD DE LOS TOKENS --svg-*
   ───────────────────────────────────────────────────
   POR QUE EXISTE
   Los graficos escriben el color en un ATRIBUTO del SVG:

       <path stroke="var(--svg-curva)" fill="var(--svg-fondo)"/>

   Si el layout servido no define esos nombres, la var() queda
   *invalid at computed-value time* y la propiedad NO hereda ni se
   ignora: cae a su valor INICIAL. Para `fill` el inicial es NEGRO y
   para `stroke` es `none`. Resultado: rectangulo negro, texto negro
   y curvas que directamente no se dibujan, en los dos modos.

   Pasó de verdad. Praxis se sumó sin este bloque de tokens —el
   contrato los lista como firma, no como obligatorios— y todo lo que
   verifica el sistema pasó en verde: el layout no tiene SVG propio,
   así que el defecto solo se ve al abrir un apunte CON grafico. El
   primer examen resuelto con gráficos salió en negro.

   COMO FUNCIONA
   Valores derivados del contrato, que todo layout sí define. Van
   dentro de `:where()`, que tiene especificidad CERO: cualquier
   declaración de un layout —`:root` en claro, `html.dark-mode` /
   `body.dark-mode` en oscuro— le gana siempre. Para los cuatro
   layouts que ya traen los suyos, esto no cambia ni un color.

   POR QUE SOLO SOBRE `html` Y NO TAMBIEN SOBRE body.dark-mode
   La primera version llevaba los tres selectores, copiando el patron
   de la «trampa del alias» de CONTRATO-TOKENS §4. Estaba mal, y se
   vio al medir: **le cambiaba el fondo de los SVG a Premium en modo
   oscuro**. Premium declara sus --svg-* SOLO en `:root`, y en oscuro
   los hereda de `html`; al declarar el respaldo sobre `body.dark-mode`
   se interponia una declaracion nueva en el medio de esa herencia y
   el fondo pasaba de crema a #1f1f38.

   Sobre `html` a secas no hay riesgo y la trampa del alias no aplica:
   los cinco layouts redefinen los tokens del contrato en
   `html.dark-mode` ademas de en `body.dark-mode`, asi que `--bg3` y
   compania YA valen lo que corresponde sobre el propio `html`, y el
   alias resuelve bien en los dos modos. Body no declara nada y hereda.

   ⚠️ ESTO NO REEMPLAZA A LOS TOKENS DEL LAYOUT. Da colores legibles,
   no los de la marca. Un layout nuevo tiene que definir los ocho
   —ver REFERENCIA-tecnica.md §7—; esto solo evita que olvidarlos
   sea catastrofico y silencioso.
═══════════════════════════════════════════════════ */
:where(html) {
  --svg-fondo:         var(--bg3);
  --svg-curva:         var(--accent-2);
  --svg-ejes:          var(--border);
  --svg-labels:        var(--gray);
  --svg-punto-gold:    var(--accent);
  --svg-punto-naranja: var(--accent-strong);
  --svg-asintota-v:    var(--estado-aviso);
  --svg-asintota-h:    var(--gray-light);
  /* Relleno opaco de las caras de una malla 3D. Cae a --bg2 porque
     tiene que TAPAR lo que hay detras: si esta var() no resolviera,
     `fill` se iria a su inicial —negro— y la superficie entera saldria
     como una mancha. Ver apuntes/docs/REFERENCIA-graficos-3d.md §4. */
  --svg-superficie:    var(--bg2);
}
