/* ─── Animations ──────────────────────────────────────────────────── */

/* Scroll-reveal base state */
.reveal {
    opacity: 0;
    transform: translateY(30px);
}

.reveal.is-visible {
    /* anime.js overrides these inline; fallback state */
    opacity: 1;
    transform: translateY(0);
}

/* ── Gentle float ────────────────────────────────────────────────── */
@keyframes float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-14px); }
}

.float {
    animation: float 5s ease-in-out infinite;
}

/* ── Pulse glow ──────────────────────────────────────────────────── */
@keyframes pulse-glow {
    0%, 100% { box-shadow: 0 0 0 0 rgba(77, 166, 255, 0.5); }
    50% { box-shadow: 0 0 0 12px rgba(77, 166, 255, 0); }
}

.pulse-glow {
    animation: pulse-glow 2.4s ease-out infinite;
}

/* ── Shimmer skeleton ────────────────────────────────────────────── */
@keyframes shimmer {
    0% { background-position: -400px 0; }
    100% { background-position: 400px 0; }
}

.skeleton {
    background: linear-gradient(90deg, #1a2c45 0%, #25446b 50%, #1a2c45 100%);
    background-size: 800px 100%;
    animation: shimmer 1.6s linear infinite;
}