/* ═══════════════════════════════════════════════════════
   animations.css — Keyframes, Transitions, Entry Effects
═══════════════════════════════════════════════════════ */

/* ─── Keyframes ─── */
@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(12px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes slideInRight {
    from {
        opacity: 0;
        transform: translateX(16px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes popIn {
    from {
        opacity: 0;
        transform: scale(0.5);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes spinOnce {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@keyframes pulse {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0.5;
    }
}

/* ─── Page Entry ─── */
.anim-fade-up {
    animation: fadeUp 0.4s ease forwards;
}

.anim-fade-in {
    animation: fadeIn 0.35s ease forwards;
}

.anim-slide-right {
    animation: slideInRight 0.35s ease forwards;
}

.anim-pop-in {
    animation: popIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

/* ─── Staggered Grid Children ─── */
.stagger-children>* {
    opacity: 0;
    animation: fadeUp 0.4s ease forwards;
}

.stagger-children>*:nth-child(1) {
    animation-delay: 0.05s;
}

.stagger-children>*:nth-child(2) {
    animation-delay: 0.10s;
}

.stagger-children>*:nth-child(3) {
    animation-delay: 0.15s;
}

.stagger-children>*:nth-child(4) {
    animation-delay: 0.20s;
}

.stagger-children>*:nth-child(5) {
    animation-delay: 0.25s;
}

.stagger-children>*:nth-child(6) {
    animation-delay: 0.30s;
}

/* ─── Hover Lift ─── */
.hover-lift {
    transition: transform var(--ease), box-shadow var(--ease);
}

.hover-lift:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-lg);
}