/* 30-10-2026 (Alex): aviso de carga. Invisible los primeros 3 s; solo aparece si la carga tarda.
   Archivo aparte porque la CSP no permite estilos en línea. La app lo reemplaza al montar #app. */
.boot { min-height: 70vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
  padding: 24px; box-sizing: border-box; font-family: Inter, system-ui, -apple-system, "Segoe UI", sans-serif; color: #10203f;
  text-align: center; visibility: hidden; opacity: 0; animation: boot-in .3s ease 3s forwards; }
.boot img { width: 56px; height: auto; }
.boot p { margin: 0; font-size: 1.15rem; font-weight: 600; }
.boot button { min-height: 48px; padding: 12px 28px; border: 0; border-radius: 999px; background: #1460e6; color: #fff;
  font: inherit; font-size: 1rem; font-weight: 700; cursor: pointer; }
.boot button:focus-visible { outline: 3px solid #0d47b3; outline-offset: 3px; }
.boot button[hidden] { display: none; }
@keyframes boot-in { to { visibility: visible; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .boot { animation-duration: .01s; } }
/* Lento o con error: visible de inmediato (ya pasó el tiempo, o la falla es segura). */
.boot[data-state="slow"], .boot[data-state="failed"] { animation: none; visibility: visible; opacity: 1; }
