/* ============================================================
   GigWriteOff — Shared Animation System
   Elegant, slow reveals with spring easing
   ============================================================ */

/* Hero / page-load entrance */
@keyframes heroFadeUp {
    from { opacity: 0; transform: translateY(36px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes heroFadeScale {
    from { opacity: 0; transform: translateY(24px) scale(0.97); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes navSlideDown {
    from { opacity: 0; transform: translateY(-16px); }
    to { opacity: 1; transform: translateY(0); }
}

.anim-fade-up {
    opacity: 0;
    animation: heroFadeUp 1.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
.anim-fade-scale {
    opacity: 0;
    animation: heroFadeScale 1.4s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
.anim-nav {
    opacity: 0;
    animation: navSlideDown 1s cubic-bezier(0.22, 1, 0.36, 1) 0.2s forwards;
}
.anim-delay-1 { animation-delay: 0.15s; }
.anim-delay-2 { animation-delay: 0.3s; }
.anim-delay-3 { animation-delay: 0.5s; }
.anim-delay-4 { animation-delay: 0.7s; }
.anim-delay-5 { animation-delay: 0.9s; }

/* Scroll reveal — fade up */
.reveal {
    opacity: 0;
    transform: translateY(44px);
    transition: opacity 1.2s cubic-bezier(0.22, 1, 0.36, 1),
                transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.reveal.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Scroll reveal — fade up with scale (cards) */
.reveal-scale {
    opacity: 0;
    transform: translateY(36px) scale(0.96);
    transition: opacity 1.2s cubic-bezier(0.22, 1, 0.36, 1),
                transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.reveal-scale.revealed {
    opacity: 1;
    transform: translateY(0) scale(1);
}

/* Stagger children inside a reveal container */
.reveal-stagger > * {
    opacity: 0;
    transform: translateY(32px);
    transition: opacity 1s cubic-bezier(0.22, 1, 0.36, 1),
                transform 1s cubic-bezier(0.22, 1, 0.36, 1);
}
.reveal-stagger.revealed > *:nth-child(1) { transition-delay: 0s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(2) { transition-delay: 0.12s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(3) { transition-delay: 0.24s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(4) { transition-delay: 0.36s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(5) { transition-delay: 0.48s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(6) { transition-delay: 0.6s; opacity: 1; transform: translateY(0); }

/* ---- Global: force light text on dark green backgrounds ---- */
.bg-forest-600, .bg-forest-700, .bg-forest-800 { color: #F9F6F1; }
.bg-forest-600 h1,.bg-forest-600 h2,.bg-forest-600 h3,.bg-forest-600 h4,
.bg-forest-700 h1,.bg-forest-700 h2,.bg-forest-700 h3,.bg-forest-700 h4,
.bg-forest-800 h1,.bg-forest-800 h2,.bg-forest-800 h3,.bg-forest-800 h4 { color: #F9F6F1; }
