/* ===== ANIMATIONS ===== */

@keyframes do-spin {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}
@keyframes do-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes do-slide-up {
    from { transform: translateY(8px); opacity: 0; }
    to   { transform: none; opacity: 1; }
}
@keyframes do-shimmer {
    0%   { left: -100%; }
    100% { left:  100%; }
}
@keyframes do-progress-slide {
    0%   { transform: translateX(-150%); }
    100% { transform: translateX(350%); }
}

/* Legacy compat */
@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes modalIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: none; }
}

/* Scroll-reveal */
.reveal {
    opacity: 0;
    transform: translateY(20px);
    transition: all 0.5s var(--ease-smooth);
}
.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}
