/* Cielo — fondo permanente. No desaparece al entrar en la carta: queda detrás. Las estrellas las genera js/cielo.js y las escribe en --estrellas-lejanas / --estrellas-cercanas. */ .cielo { position: fixed; inset: 0; overflow: hidden; z-index: 0; background: var(--fondo-velo-bajo), var(--fondo-velo-alto), var(--fondo-velo-rosa), var(--fondo-umbral); } .cielo__capa { position: absolute; top: 0; left: 0; border-radius: var(--r-circulo); transition: filter var(--t-lento) var(--curva-calma); } .cielo__capa--lejana { width: var(--cielo-estrella-lejana); height: var(--cielo-estrella-lejana); box-shadow: var(--estrellas-lejanas, none); animation: gira-fondo var(--cielo-deriva) linear infinite alternate; } .cielo__capa--cercana { width: var(--cielo-estrella-cercana); height: var(--cielo-estrella-cercana); box-shadow: var(--estrellas-cercanas, none); animation: parpadeo var(--t-parpadeo) var(--curva-calma) infinite, gira-cerca var(--cielo-deriva-cercanas) linear infinite alternate; } @keyframes parpadeo { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } } /* El giro de la bóveda. El eje está fuera de la pantalla, por debajo, así que lo que se ve es un arco lento y no un desplazamiento recto. Va en `alternate` (ida y vuelta) para que no haya salto al reiniciar el ciclo. */ .cielo__capa { transform-origin: var(--cielo-eje-x) var(--cielo-eje-y); } @keyframes gira-fondo { from { transform: rotate(calc(var(--cielo-giro) * -1)); } to { transform: rotate(var(--cielo-giro)); } } @keyframes gira-cerca { from { transform: rotate(var(--cielo-giro-cercanas)); } to { transform: rotate(calc(var(--cielo-giro-cercanas) * -1)); } } .cielo__horizonte { position: absolute; left: 0; right: 0; bottom: 0; height: var(--cielo-horizonte-alto); background: var(--cielo-horizonte); } /* Durante el aplicar el cielo se aviva un poco. Sutil, no espectacular. */ .app[data-fase="aplicando"] .cielo__capa { filter: brightness(var(--aplicando-cielo-intensidad)); }