@keyframes pulse-dot {
    0%,100% { opacity: 1; transform: scale(1); }
    50% { opacity: .6; transform: scale(1.35); }
}

@keyframes fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slide-down {
    from { opacity: 0; transform: translateY(-16px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes slide-up {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes glow-pulse {
    0%,100% { box-shadow: 0 0 0 0 rgba(213,129,45,.3); }
    50% { box-shadow: 0 0 0 8px rgba(213,129,45,0); }
}

@keyframes shimmer {
    0% { background-position: -200% center; }
    100% { background-position: 200% center; }
}

@keyframes float-y {
    0%,100% { transform: translateY(0); }
    50% { transform: translateY(-6px); }
}

.anim-fade-in { animation: fade-in .5s ease both; }
.anim-slide-down { animation: slide-down .4s ease both; }
.anim-slide-up { animation: slide-up .45s ease both; }
.anim-glow { animation: glow-pulse 2.5s ease-in-out infinite; }
.anim-float { animation: float-y 3.5s ease-in-out infinite; }

.btn-register,
.btn-primary,
.widget-btn { animation: glow-pulse 2.8s ease-in-out infinite; }

.hero-title { animation: slide-up .55s ease .1s both; }
.hero-sub { animation: slide-up .55s ease .22s both; }
.hero-actions { animation: slide-up .55s ease .34s both; }
.hero-badge { animation: fade-in .45s ease both; }

.hdr { animation: slide-down .4s ease both; }

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