@media (prefers-reduced-motion: no-preference) {
    /* "Live" feedback ring for active states (availability, presence). */
    @keyframes live-ring {
        0% {
            box-shadow: 0 0 0 0 var(--color-success-ring);
        }

        70% {
            box-shadow: 0 0 0 14px var(--color-success-ring-clear);
        }

        100% {
            box-shadow: 0 0 0 0 var(--color-success-ring-clear);
        }
    }

    @keyframes dot-pulse {
        0% {
            box-shadow: 0 0 0 0 var(--color-danger-ring);
        }

        70% {
            box-shadow: 0 0 0 6px var(--color-danger-ring-clear);
        }

        100% {
            box-shadow: 0 0 0 0 var(--color-danger-ring-clear);
        }
    }

    /* 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(3px);
        }

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

@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;
    }
}
