.fade-in {
    animation: fade-in var(--transition) ease forwards;
}

@keyframes fade-in {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.scale-in {
    animation: scale-in var(--transition) ease forwards;
}

@keyframes scale-in {
    from {
        opacity: 0;
        transform: scale(0.98);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

.hover-lift:hover,
.hover-lift:focus-within {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.button,
.button-primary,
.button-secondary,
.button-outline,
.button-ghost,
.button-icon {
    transition: transform var(--transition), background var(--transition), box-shadow var(--transition);
}

@keyframes atlas-download-btn-pulse {
    0%,
    100% {
        box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.42), var(--ds-shadow-button, 0 10px 24px rgba(34, 197, 94, 0.24));
        transform: translateY(0) scale(1);
    }

    50% {
        box-shadow: 0 0 0 12px rgba(34, 197, 94, 0), var(--ds-shadow-button, 0 14px 30px rgba(34, 197, 94, 0.34));
        transform: translateY(-1px) scale(1.03);
    }
}

@keyframes atlas-download-btn-shine {
    0% {
        transform: translateX(-140%) skewX(-18deg);
    }

    45%,
    100% {
        transform: translateX(220%) skewX(-18deg);
    }
}

.atlas-ds-btn--download-pulse {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    animation: atlas-download-btn-pulse 1.8s ease-in-out infinite;
}

.atlas-ds-btn--download-pulse::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, 0.42) 50%, transparent 70%);
    transform: translateX(-140%) skewX(-18deg);
    animation: atlas-download-btn-shine 2.6s ease-in-out infinite;
    pointer-events: none;
}

.atlas-ds-btn--download-pulse:hover,
.atlas-ds-btn--download-pulse:focus-visible {
    animation-play-state: paused;
}

@media (prefers-reduced-motion: reduce) {
    .atlas-ds-btn--download-pulse {
        animation: none;
    }

    .atlas-ds-btn--download-pulse::after {
        display: none;
    }
}
