/* Movimiento de bienvenida para autenticación NEXO.
 * Solo modifica la presentación de las pantallas de acceso. */
@media (prefers-reduced-motion:no-preference) {
    body.nexo-app.nexo-auth .login-page::before {
        animation:nexo-login-grid-drift 20s ease-in-out infinite alternate;
        will-change:transform;
    }

    body.nexo-app.nexo-auth .login-page::after {
        animation:nexo-login-orbit 14s ease-in-out infinite alternate;
        will-change:transform;
    }

    body.nexo-app.nexo-auth .login-card {
        animation:nexo-login-card-in .52s cubic-bezier(.2,.78,.24,1) both;
        will-change:transform,opacity;
    }

    body.nexo-app.nexo-auth .login-logo-wrap,
    body.nexo-app.nexo-auth .login-empresa,
    body.nexo-app.nexo-auth .login-modo,
    body.nexo-app.nexo-auth .login-alert,
    body.nexo-app.nexo-auth .login-field,
    body.nexo-app.nexo-auth .login-context-note,
    body.nexo-app.nexo-auth .login-submit {
        animation:nexo-login-rise .42s cubic-bezier(.2,.78,.24,1) both;
    }

    body.nexo-app.nexo-auth .login-logo-wrap { animation-delay:.12s; }
    body.nexo-app.nexo-auth .login-empresa { animation-delay:.18s; }
    body.nexo-app.nexo-auth .login-modo { animation-delay:.23s; }
    body.nexo-app.nexo-auth .login-alert { animation-delay:.27s; }
    body.nexo-app.nexo-auth .login-field:nth-child(1) { animation-delay:.29s; }
    body.nexo-app.nexo-auth .login-field:nth-child(2) { animation-delay:.35s; }
    body.nexo-app.nexo-auth .login-context-note { animation-delay:.41s; }
    body.nexo-app.nexo-auth .login-submit { animation-delay:.47s; }

    body.nexo-app.nexo-auth .login-input-wrap {
        transition:transform .16s ease;
    }

    body.nexo-app.nexo-auth .login-input-wrap:focus-within {
        transform:translateX(2px);
    }

    body.nexo-app.nexo-auth .login-logo-wrap {
        transition:transform .2s ease;
    }

    body.nexo-app.nexo-auth .login-logo-wrap:hover {
        transform:translateY(-2px) scale(1.02);
    }
}

@keyframes nexo-login-card-in {
    from { opacity:0; transform:translateY(16px) scale(.985); }
    to { opacity:1; transform:translateY(0) scale(1); }
}

@keyframes nexo-login-rise {
    from { opacity:0; transform:translateY(9px); }
    to { opacity:1; transform:translateY(0); }
}

@keyframes nexo-login-grid-drift {
    from { transform:translate3d(-8px,-6px,0); }
    to { transform:translate3d(9px,7px,0); }
}

@keyframes nexo-login-orbit {
    from { transform:rotate(-22deg) translate3d(-7px,5px,0) scale(.99); }
    to { transform:rotate(-17deg) translate3d(8px,-6px,0) scale(1.02); }
}

@media (prefers-reduced-motion:reduce) {
    body.nexo-app.nexo-auth .login-page *,
    body.nexo-app.nexo-auth .login-page *::before,
    body.nexo-app.nexo-auth .login-page *::after {
        animation-duration:.01ms !important;
        animation-iteration-count:1 !important;
        transition-duration:.01ms !important;
    }
}