/* Animations CSS - Loading effects and transitions */

/* Skeleton Loading Animation */
@keyframes skeleton-loading {
    0% {
        background-color: hsl(0, 0%, 90%);
    }
    50% {
        background-color: hsl(0, 0%, 95%);
    }
    100% {
        background-color: hsl(0, 0%, 90%);
    }
}

.skeleton {
    animation: skeleton-loading 1.5s ease-in-out infinite;
    background-color: hsl(0, 0%, 90%);
}

/* Image container with skeleton */
.image-loading {
    position: relative;
    overflow: hidden;
}

.image-loading::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        90deg,
        hsl(0, 0%, 90%) 0%,
        hsl(0, 0%, 95%) 50%,
        hsl(0, 0%, 90%) 100%
    );
    background-size: 200% 100%;
    animation: skeleton-shimmer 1.5s ease-in-out infinite;
    z-index: 1;
}

.image-loading img {
    opacity: 0;
    transition: opacity 0.3s ease-in-out;
}

.image-loading.loaded::before {
    display: none;
}

.image-loading.loaded img {
    opacity: 1;
}

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

/* Section title animation */
@keyframes title-reveal {
    0% {
        opacity: 0;
        transform: translateY(30px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Image reveal animation */
@keyframes imageReveal {
    0% {
        opacity: 0;
        transform: scale(0.95);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

/* Subtle zoom animation for artist images */
@keyframes subtleZoom {
    0%, 100% { 
        transform: scale(1); 
    }
    50% { 
        transform: scale(1.05); 
    }
}

/* Tooltip animation */
@keyframes tooltipFadeIn {
    from {
        opacity: 0;
        transform: translateX(-50%) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateX(-50%) scale(1);
    }
}

