@keyframes theme-spin {
    to { transform: rotate(360deg); }
}

@keyframes theme-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@keyframes theme-fade-up {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes theme-scale-in {
    from {
        opacity: 0;
        transform: scale(0.96);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes theme-slide-toast {
    from {
        transform: translate(-50%, 100px);
        opacity: 0;
    }
    to {
        transform: translate(-50%, 0);
        opacity: 1;
    }
}

@keyframes theme-pulse-ring {
    0% {
        transform: scale(1);
        opacity: 0.65;
    }
    100% {
        transform: scale(1.55);
        opacity: 0;
    }
}

@keyframes theme-feed-enter {
    to { opacity: 1; }
}

@keyframes theme-page-enter {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes theme-skeleton-wave {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@keyframes theme-pulse-glow {
    0%, 100% {
        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), inset 0 0 20px rgba(244, 114, 182, 0.12), 0 0 20px rgba(34, 211, 238, 0.25);
    }
    50% {
        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), inset 0 0 20px rgba(244, 114, 182, 0.2), 0 0 36px rgba(168, 85, 247, 0.45);
    }
}

@keyframes theme-spin-outer {
    to { transform: rotate(360deg); }
}

@keyframes theme-spin-inner {
    to { transform: rotate(-360deg); }
}

@keyframes theme-title-shine {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

@keyframes theme-blob-float {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33% { transform: translate(24px, -18px) scale(1.04); }
    66% { transform: translate(-16px, 12px) scale(0.98); }
}

.theme-animate-fade-up {
    animation: theme-fade-up var(--theme-dur-3) var(--theme-ease-out) both;
}

.theme-animate-scale-in {
    animation: theme-scale-in var(--theme-dur-2) var(--theme-ease-out) both;
}

.theme-animate-page-enter {
    animation: theme-page-enter var(--theme-dur-3) var(--theme-ease-out) both;
}
