/* ===================================================
   CODEARKS - Animations
   =================================================== */

/* ===== PARTICLE CANVAS ===== */
#particles { position: absolute; inset: 0; pointer-events: none; z-index: 0; }

/* ===== MAGNETIC BUTTON ===== */
.magnetic { display: inline-flex; }

/* ===== TILT CARD ===== */
.tilt-card { transform-style: preserve-3d; }

/* ===== GLOW EFFECT ===== */
@keyframes glow-pulse {
    0%, 100% { box-shadow: 0 0 20px rgba(220,38,38,0.2); }
    50% { box-shadow: 0 0 40px rgba(220,38,38,0.4), 0 0 80px rgba(220,38,38,0.15); }
}

/* ===== GRADIENT BORDER ===== */
@keyframes gradient-rotate {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

/* ===== PULSE ===== */
@keyframes pulse-ring {
    0% { transform: scale(0.9); opacity: 1; }
    100% { transform: scale(1.4); opacity: 0; }
}

/* ===== SHAKE ===== */
@keyframes shake {
    0%,100% { transform: translateX(0); }
    25% { transform: translateX(-4px); }
    75% { transform: translateX(4px); }
}

/* ===== BOUNCE IN ===== */
@keyframes bounceIn {
    0% { opacity: 0; transform: scale(0.3); }
    50% { opacity: 1; transform: scale(1.05); }
    70% { transform: scale(0.9); }
    100% { transform: scale(1); }
}

/* ===== SLIDE FROM LEFT ===== */
@keyframes slideFromLeft {
    from { opacity: 0; transform: translateX(-40px); }
    to { opacity: 1; transform: translateX(0); }
}

/* ===== SLIDE FROM RIGHT ===== */
@keyframes slideFromRight {
    from { opacity: 0; transform: translateX(40px); }
    to { opacity: 1; transform: translateX(0); }
}

/* ===== FADE SCALE ===== */
@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.9); }
    to { opacity: 1; transform: scale(1); }
}

/* ===== NUMBER COUNT ===== */
.stat-number, .portfolio-stat-number {
    display: inline-block;
    transition: transform 0.3s ease;
}
.stat-number.counting { animation: countPulse 0.1s ease; }
@keyframes countPulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); }
}

/* ===== PAGE LOADER ===== */
.page-loaded .preloader { opacity: 0; visibility: hidden; }

/* ===== HERO ENTRANCE ===== */
.hero-text .hero-title { animation: slideFromLeft 0.9s cubic-bezier(0.4,0,0.2,1) 0.1s both; }
.hero-text .hero-subtitle { animation: slideFromLeft 0.9s cubic-bezier(0.4,0,0.2,1) 0.25s both; }
.hero-text .hero-buttons { animation: slideFromLeft 0.9s cubic-bezier(0.4,0,0.2,1) 0.4s both; }
.hero-text .hero-stats { animation: slideFromLeft 0.9s cubic-bezier(0.4,0,0.2,1) 0.55s both; }
.hero-image { animation: slideFromRight 0.9s cubic-bezier(0.4,0,0.2,1) 0.3s both; }

/* ===== SHIMMER LOADING ===== */
.shimmer {
    background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.05) 50%, transparent 100%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
}
@keyframes shimmer {
    0% { background-position: -200% center; }
    100% { background-position: 200% center; }
}

/* ===== STAGGER ===== */
.stagger-children > *:nth-child(1) { transition-delay: 0.05s; }
.stagger-children > *:nth-child(2) { transition-delay: 0.1s; }
.stagger-children > *:nth-child(3) { transition-delay: 0.15s; }
.stagger-children > *:nth-child(4) { transition-delay: 0.2s; }
.stagger-children > *:nth-child(5) { transition-delay: 0.25s; }
.stagger-children > *:nth-child(6) { transition-delay: 0.3s; }

/* ===== REDUCED MOTION ===== */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
