/* Capa mínima de primer renderizado.
   Se carga antes de las hojas principales. El JavaScript añade `page-ready` al
   arrancar la app (script.js -> initializeApp), y esa clase revela el <body>.
   Como el revelado depende de JS, un `@keyframes` de RESPALDO lo muestra igual
   tras 4 s si el JS fallara (módulo que no carga, import roto, excepción antes
   de añadir la clase): así una "pantalla en blanco" nunca queda PERMANENTE.
   Failsafe puro-CSS, sin <script> inline, para respetar la CSP estricta
   (`script-src 'self'`). Ver documentacion/frontend.md. */
html,
body {
  background: #f6f8fa;
}

body {
  margin: 0;
  visibility: hidden;
  /* Red de seguridad: si `page-ready` nunca llega, el body se revela a los 4 s
     en vez de quedarse oculto para siempre. `0s` de duración + `4s` de retardo
     = un salto discreto a `visible` en el segundo 4; `forwards` lo mantiene. */
  animation: dais-reveal 0s linear 4s forwards;
}

@keyframes dais-reveal {
  to { visibility: visible; }
}

/* Camino normal: el JS añade `page-ready` en cuanto arranca -> revelado
   inmediato, y se anula la animación de respaldo (ya no hace falta). */
html.page-ready body {
  visibility: visible;
  animation: none;
}
