@media (prefers-reduced-motion: no-preference) {
    .screen,
    .form-page,
    .auth-flow,
    .auth-screen {
        animation: page-enter var(--motion-base) var(--ease-standard) both;
    }

    @keyframes page-enter {
        from {
            opacity: 0;
            transform: translateY(8px) scale(0.994);
        }

        to {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
    }

    /* Progressive disclosure: content rises into place in sequence,
       lowering perceived load and signalling responsiveness. */
    @keyframes rise-in {
        from {
            opacity: 0;
            transform: translateY(12px);
        }

        to {
            opacity: 1;
            transform: translateY(0);
        }
    }

    /* "Live" feedback ring for active states (availability, presence). */
    @keyframes live-ring {
        0% {
            box-shadow: 0 0 0 0 rgba(22, 138, 91, 0.42);
        }

        70% {
            box-shadow: 0 0 0 14px rgba(22, 138, 91, 0);
        }

        100% {
            box-shadow: 0 0 0 0 rgba(22, 138, 91, 0);
        }
    }

    @keyframes dot-pulse {
        0% {
            box-shadow: 0 0 0 0 rgba(214, 69, 69, 0.5);
        }

        70% {
            box-shadow: 0 0 0 6px rgba(214, 69, 69, 0);
        }

        100% {
            box-shadow: 0 0 0 0 rgba(214, 69, 69, 0);
        }
    }

    /* Skeleton shimmer sweep. */
    @keyframes shimmer {
        from {
            background-position: -160% 0;
        }

        to {
            background-position: 160% 0;
        }
    }

    @keyframes toast-in {
        from {
            opacity: 0;
            transform: translateY(-10px) scale(0.96);
        }

        to {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
    }

    @keyframes bubble-in {
        from {
            opacity: 0;
            transform: translateY(6px) scale(0.98);
        }

        to {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
    }
}
