/* Base común de las tres alternativas de motion (loader + línea del proceso). Ver comun.js.
   Todas las duraciones se multiplican por --vel (1 = real; la vitrina lo sube para verlas en cámara lenta). */

/* ---------- loader ---------- */
:root { --vel: 1; }
.ll { position: fixed; inset: 0; z-index: 100; background: #ffffff; overflow: hidden; }
.ll.en-escena { position: absolute; }                 /* en la vitrina vive dentro de un marco */
.ll.fuera { display: none; }
.ll.sin-trans, .ll.sin-trans * { transition: none !important; }
html.sin-loader .ll { display: none; }                /* ya se vio en esta sesión */
html.con-loader:not(.loader-fuera) body { overflow: hidden; }
/* Si el JS no llega, el loader se va solo: nunca tapa la página más de 6 s */
@keyframes ll-emergencia { to { visibility: hidden; } }
html.con-loader .ll:not(.entra) { animation: ll-emergencia 0s 6s forwards; }
@media (prefers-reduced-motion: reduce) { .ll:not(.en-escena) { display: none; } }

/* ---------- línea del proceso ---------- */
.ml-marco { position: relative; }
.semana[data-motion] .ml-d { display: inline-block; vertical-align: top; }
.semana[data-motion] .ml-d > span { display: inline-block; }
.semana.sin-trans, .semana.sin-trans *, .semana.sin-trans::before, .semana.sin-trans::after,
.semana.sin-trans li::before, .semana.sin-trans li::after, .semana.sin-trans .ml-d > span { transition: none !important; }
.sin-trans ~ .ml-trazo path { transition: none !important; }
