/* Base Animation Classes */
.animate-gpu {
    transform: translateZ(0);
    backface-visibility: hidden;
    perspective: 1000px;
    will-change: transform;
}

.hover-scale {
    transition: transform var(--transition-speed), 
                box-shadow var(--transition-speed);
}

.hover-scale:hover {
    transform: translateY(-10px);
    box-shadow: var(--hover-shadow);
}

/* Keyframe Animations */
@keyframes bounce {
    0%, 100% { 
        transform: translateY(0); 
    }
    50% { 
        transform: translateY(-20px); 
    }
}

@keyframes spin {
    from { 
        transform: rotate(0deg); 
    }
    to { 
        transform: rotate(360deg); 
    }
}

@keyframes shine {
    0% { 
        transform: translateX(-100%) rotate(-45deg); 
    }
    100% { 
        transform: translateX(100%) rotate(-45deg); 
    }
}

@keyframes pulse {
    0% { 
        transform: scale(1); 
    }
    50% { 
        transform: scale(1.1); 
    }
    100% { 
        transform: scale(1); 
    }
}

@keyframes floatUpDown {
    0%, 100% { 
        transform: translateY(0); 
    }
    50% { 
        transform: translateY(-15px); 
    }
}

@keyframes fadeIn {
    from { 
        opacity: 0; 
        transform: translateY(20px);
    }
    to { 
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideIn {
    from {
        transform: translateX(-100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

@keyframes spinLoader {
    0% { 
        transform: rotate(0deg); 
    }
    100% { 
        transform: rotate(360deg); 
    }
}

/* Animation Classes */
.float-animation {
    animation: floatUpDown 3s ease-in-out infinite;
}

.spin-animation {
    animation: spin 4s linear infinite;
}

.pulse-animation {
    animation: pulse 2s infinite;
}

.bounce-animation {
    animation: bounce 2s infinite;
}

.fade-in {
    animation: fadeIn 1s ease-out;
}

.slide-in {
    animation: slideIn 0.5s ease-out;
}

/* Element-specific animations */
.hero-section::before {
    animation: shine 3s infinite linear;
}

.feature-icon {
    animation: pulse 2s infinite;
}

.achievement-icon {
    animation: bounce 2s infinite;
}

.ball-img {
    animation: spin 4s linear infinite;
}

.floating-ball {
    animation: floatUpDown 3s ease-in-out infinite;
}

/* Hover Animations */
.coach-card:hover .coach-overlay {
    transform: translateY(0);
}

.feature-item:hover {
    transform: translateY(-5px);
    box-shadow: var(--hover-shadow);
}

.testimonial-card:hover {
    transform: translateY(-5px);
    background: rgba(255, 255, 255, 0.15);
}

.download-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
    background: var(--accent-color);
    color: white;
}

/* Loading Animation */
.spinner {
    animation: spinLoader 1s linear infinite;
}

/* AOS Custom Animations */
[data-aos="custom-fade-up"] {
    transform: translateY(30px);
    opacity: 0;
    transition-property: transform, opacity;
}

[data-aos="custom-fade-up"].aos-animate {
    transform: translateY(0);
    opacity: 1;
}

/* Transition Classes */
.smooth-transition {
    transition: all var(--transition-speed) ease;
}

.scale-transition {
    transition: transform var(--transition-speed) ease;
}

.opacity-transition {
    transition: opacity var(--transition-speed) ease;
}
