/* ============================================================
   AURA — Animations: Scroll-in, Keyframes, Transitions
   ============================================================ */

/* ── Scroll Animations ── */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.animate-on-scroll.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger children */
.stagger > .animate-on-scroll:nth-child(1) { transition-delay: 0s; }
.stagger > .animate-on-scroll:nth-child(2) { transition-delay: 0.1s; }
.stagger > .animate-on-scroll:nth-child(3) { transition-delay: 0.2s; }
.stagger > .animate-on-scroll:nth-child(4) { transition-delay: 0.3s; }
.stagger > .animate-on-scroll:nth-child(5) { transition-delay: 0.4s; }
.stagger > .animate-on-scroll:nth-child(6) { transition-delay: 0.5s; }

/* ── Fade variants ── */
.fade-in-left {
    opacity: 0;
    transform: translateX(-30px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.fade-in-right {
    opacity: 0;
    transform: translateX(30px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.fade-in-left.visible,
.fade-in-right.visible {
    opacity: 1;
    transform: translateX(0);
}

.fade-in-scale {
    opacity: 0;
    transform: scale(0.95);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.fade-in-scale.visible {
    opacity: 1;
    transform: scale(1);
}

/* ── Pulse ── */
@keyframes pulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.5; }
}

.pulse {
    animation: pulse 2s ease-in-out infinite;
}

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

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

/* ── Gradient shift for hero blobs ── */
@keyframes gradient-shift {
    0%   { transform: translate(0, 0) scale(1); }
    33%  { transform: translate(30px, -20px) scale(1.05); }
    66%  { transform: translate(-20px, 10px) scale(0.95); }
    100% { transform: translate(0, 0) scale(1); }
}

/* ── Spin (for loading) ── */
@keyframes spin {
    to { transform: rotate(360deg); }
}

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

/* ── Check mark draw ── */
@keyframes draw-check {
    to { stroke-dashoffset: 0; }
}

/* ── Counter animation handled via JS ── */
