@keyframes particleFloat {
    0% { transform: translateY(100vh) scale(0); opacity: 0; }
    10% { opacity: 1; }
    90% { opacity: 1; }
    100% { transform: translateY(-10vh) scale(1); opacity: 0; }
}

@keyframes blurFadeIn {
    0% { opacity: 0; filter: blur(12px); transform: scale(0.97); }
    100% { opacity: 1; filter: blur(0); transform: scale(1); }
}

@keyframes fadeInBlur {
    0% { opacity: 0; filter: blur(8px); transform: translateY(20px); }
    100% { opacity: 1; filter: blur(0); transform: translateY(0); }
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-6px); }
    75% { transform: translateX(6px); }
}

@keyframes slideInUp {
    0% { opacity: 0; transform: translateY(30px); }
    100% { opacity: 1; transform: translateY(0); }
}

@keyframes slideInDown {
    0% { opacity: 0; transform: translateY(-20px); }
    100% { opacity: 1; transform: translateY(0); }
}

@keyframes slideInLeft {
    0% { opacity: 0; transform: translateX(-30px); }
    100% { opacity: 1; transform: translateX(0); }
}

@keyframes slideInRight {
    0% { opacity: 0; transform: translateX(30px); }
    100% { opacity: 1; transform: translateX(0); }
}

@keyframes scaleIn {
    0% { opacity: 0; transform: scale(0.9); }
    100% { opacity: 1; transform: scale(1); }
}

@keyframes springScale {
    0% { transform: scale(0.8); opacity: 0; }
    50% { transform: scale(1.05); }
    75% { transform: scale(0.98); }
    100% { transform: scale(1); opacity: 1; }
}

@keyframes pulseGlow {
    0%, 100% { box-shadow: 0 0 20px rgba(59,130,246,0.15); }
    50% { box-shadow: 0 0 40px rgba(59,130,246,0.3); }
}

@keyframes shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

@keyframes gradientShift {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

@keyframes bgShift {
    0% { transform: translate(0, 0) rotate(0deg); }
    100% { transform: translate(2%, 2%) rotate(1deg); }
}

@keyframes float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

@keyframes borderGlow {
    0%, 100% { border-color: rgba(59,130,246,0.15); }
    50% { border-color: rgba(59,130,246,0.4); }
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

@keyframes fadeIn {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

.animate-blur-fade-in { animation: blurFadeIn 0.6s var(--ease-smooth, ease-out) forwards; }
.animate-fade-in-blur { animation: fadeInBlur 0.8s var(--ease-smooth, ease-out) forwards; }
.animate-slide-up { animation: slideInUp 0.5s var(--ease-smooth, ease-out) forwards; }
.animate-slide-down { animation: slideInDown 0.4s var(--ease-smooth, ease-out) forwards; }
.animate-slide-left { animation: slideInLeft 0.5s var(--ease-smooth, ease-out) forwards; }
.animate-slide-right { animation: slideInRight 0.5s var(--ease-smooth, ease-out) forwards; }
.animate-scale-in { animation: scaleIn 0.4s var(--ease-smooth, ease-out) forwards; }
.animate-spring { animation: springScale 0.6s var(--ease-spring, ease) forwards; }
.animate-pulse-glow { animation: pulseGlow 3s ease-in-out infinite; }
.animate-float { animation: float 4s ease-in-out infinite; }
.animate-shimmer {
    background: linear-gradient(90deg, transparent, rgba(59,130,246,0.08), transparent);
    background-size: 200% 100%;
    animation: shimmer 2s linear infinite;
}

.stagger-1 { animation-delay: 0.05s; }
.stagger-2 { animation-delay: 0.1s; }
.stagger-3 { animation-delay: 0.15s; }
.stagger-4 { animation-delay: 0.2s; }
.stagger-5 { animation-delay: 0.25s; }
.stagger-6 { animation-delay: 0.3s; }
.stagger-7 { animation-delay: 0.35s; }
.stagger-8 { animation-delay: 0.4s; }

@keyframes ping {
    75%, 100% { transform: scale(2); opacity: 0; }
}

.animate-ping {
    animation: ping 1s cubic-bezier(0,0,0.2,1) infinite;
}

.particle:nth-child(1) { left: 10%; animation-duration: 15s; }
.particle:nth-child(2) { width: 3px; height: 3px; background: rgba(var(--primary-rgb, 59,130,246), 0.2); left: 20%; animation-duration: 18s; animation-delay: 2s; }
.particle:nth-child(3) { left: 40%; animation-duration: 22s; animation-delay: 4s; }
.particle:nth-child(4) { width: 2px; height: 2px; background: rgba(var(--primary-rgb, 59,130,246), 0.15); left: 60%; animation-duration: 16s; animation-delay: 1s; }
.particle:nth-child(5) { left: 80%; animation-duration: 20s; animation-delay: 3s; }

.bg-glow {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
}

.bg-glow .orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(150px);
    mix-blend-mode: screen;
}

.bg-glow .orb1 {
    width: 50%;
    height: 50%;
    top: -20%;
    left: -10%;
    background: rgba(var(--primary-rgb), 0.06);
}

.bg-glow .orb2 {
    width: 40%;
    height: 40%;
    bottom: 10%;
    right: -10%;
    background: rgba(14,165,233, 0.04);
}

.bg-glow .orb3 {
    width: 30%;
    height: 30%;
    top: 40%;
    left: 50%;
    background: rgba(var(--primary-rgb), 0.03);
}

.bg-glow .grid-overlay {
    position: absolute;
    inset: 0;
    opacity: 0.015;
    background-image: linear-gradient(to right, rgba(59,130,246,0.3) 1px, transparent 1px), linear-gradient(rgba(59,130,246,0.3) 1px, transparent 1px);
    background-size: 80px 80px;
}

.bg-animated-gradient::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background:
        radial-gradient(ellipse at 30% 20%, rgba(var(--primary-rgb),0.1), transparent 50%),
        radial-gradient(ellipse at 70% 80%, rgba(14,165,233,0.06), transparent 50%),
        radial-gradient(ellipse at 50% 50%, rgba(var(--primary-rgb),0.04), transparent 60%);
    animation: bgShift 20s ease-in-out infinite alternate;
}

.hover-lift {
    transition: transform var(--duration-normal, 0.25s) var(--ease-smooth, ease), box-shadow var(--duration-normal, 0.25s) var(--ease-smooth, ease);
}

.hover-lift:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-glow);
}

.hover-scale {
    transition: transform var(--duration-fast, 0.15s) var(--ease-spring, ease);
}

.hover-scale:hover {
    transform: scale(1.03);
}

.hover-glow {
    transition: box-shadow var(--duration-normal, 0.25s) ease;
}

.hover-glow:hover {
    box-shadow: 0 0 30px rgba(59,130,246,0.2);
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
