/* Lightweight animation utilities */

@keyframes fadeUp {
    from { opacity: 0; transform: translateY(30px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn { from{opacity:0;} to{opacity:1;} }
@keyframes zoomIn { from{opacity:0;transform:scale(.9);} to{opacity:1;transform:scale(1);} }
@keyframes slideRight { from{opacity:0;transform:translateX(-30px);} to{opacity:1;transform:translateX(0);} }
@keyframes slideLeft  { from{opacity:0;transform:translateX(30px);}  to{opacity:1;transform:translateX(0);} }

.anim-fade-up { animation: fadeUp .7s ease forwards; }
.anim-fade    { animation: fadeIn .7s ease forwards; }
.anim-zoom-in { animation: zoomIn .7s ease forwards; }

@keyframes shine {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}
.shine {
    background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.35), rgba(255,255,255,0));
    background-size: 200% 100%;
    animation: shine 2.5s linear infinite;
}

/* Counter animation baseline */
.counter { display: inline-block; }

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