/* Ask Igi - Animations */
/* Converted from Framer Motion animations */

/* Mining Loader - SVG Color Animation */
@keyframes mining-color-cycle {
    0% { fill: #2C2D65; }
    33% { fill: #ED8B00; }
    66% { fill: #615E9B; }
    100% { fill: #2C2D65; }
}

.mining-loader-icon {
    animation: mining-color-cycle 3s ease-in-out infinite;
}

/* Loading dots animation */
@keyframes loading-dots {
    0% { content: '.'; }
    33% { content: '..'; }
    66% { content: '...'; }
    100% { content: '.'; }
}

.loading-dots::after {
    content: '.';
    animation: loading-dots 1.35s steps(3, end) infinite;
}

/* Fade in animation */
@keyframes fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

.animate-fade-in {
    animation: fade-in 0.3s ease-out;
}

/* Fade in up animation */
@keyframes fade-in-up {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-fade-in-up {
    animation: fade-in-up 0.3s ease-out;
}

/* Slide in from left (for sidebar) */
@keyframes slide-in-left {
    from {
        transform: translateX(-100%);
    }
    to {
        transform: translateX(0);
    }
}

.animate-slide-in-left {
    animation: slide-in-left 0.3s ease-out;
}

/* Slide out to left */
@keyframes slide-out-left {
    from {
        transform: translateX(0);
    }
    to {
        transform: translateX(-100%);
    }
}

.animate-slide-out-left {
    animation: slide-out-left 0.3s ease-out forwards;
}

/* Pulse animation for loading states */
@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

.animate-pulse {
    animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* Spin animation */
@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.animate-spin {
    animation: spin 1s linear infinite;
}

/* Bounce animation */
@keyframes bounce {
    0%, 100% {
        transform: translateY(-5%);
        animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
    }
    50% {
        transform: translateY(0);
        animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    }
}

.animate-bounce {
    animation: bounce 1s infinite;
}

/* Scale in animation for modals/dialogs */
@keyframes scale-in {
    from {
        opacity: 0;
        transform: scale(0.95);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

.animate-scale-in {
    animation: scale-in 0.2s ease-out;
}

/* Toast slide in from top */
@keyframes toast-slide-in {
    from {
        transform: translateY(-100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.animate-toast-in {
    animation: toast-slide-in 0.3s ease-out;
}

/* Toast slide out */
@keyframes toast-slide-out {
    from {
        transform: translateY(0);
        opacity: 1;
    }
    to {
        transform: translateY(-100%);
        opacity: 0;
    }
}

.animate-toast-out {
    animation: toast-slide-out 0.3s ease-out forwards;
}

/* Skeleton loading shimmer */
@keyframes shimmer {
    0% {
        background-position: -200% 0;
    }
    100% {
        background-position: 200% 0;
    }
}

.skeleton {
    background: linear-gradient(
        90deg,
        var(--border) 25%,
        #f0f0f0 50%,
        var(--border) 75%
    );
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
}

/* Message appear animation */
@keyframes message-appear {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-message-appear {
    animation: message-appear 0.4s ease-out;
}

/* Button press effect */
.btn-press:active {
    transform: scale(0.97);
}

/* Overlay fade */
@keyframes overlay-fade-in {
    from { opacity: 0; }
    to { opacity: 0.5; }
}

.overlay-fade {
    animation: overlay-fade-in 0.2s ease-out forwards;
}

/* Transition utilities */
.transition-fast { transition-duration: 0.15s; }
.transition-normal { transition-duration: 0.2s; }
.transition-slow { transition-duration: 0.3s; }
