/* ============================================================
   SCROLL ANIMATIONS - GSAP ScrollTrigger based
   ============================================================ */

/* Initial hidden states (GSAP will reveal) */
.reveal-up    { opacity: 0; transform: translateY(60px); }
.reveal-left  { opacity: 0; transform: translateX(-60px); }
.reveal-right { opacity: 0; transform: translateX(60px); }
.reveal-scale { opacity: 0; transform: scale(0.85); }
.reveal-fade  { opacity: 0; }

/* Stagger children */
.stagger-children > * { opacity: 0; transform: translateY(40px); }

/* Pinned scroll story */
.scroll-story { position: relative; }
.scroll-panel {
    position: sticky; top: 0; height: 100vh;
    display: flex; align-items: center; overflow: hidden;
}
.story-text { max-width: 520px; }
.story-num {
    font-family: var(--font-head); font-size: 8rem; font-weight: 900;
    color: rgba(31,45,92,0.05); line-height: 1; margin-bottom: -20px;
    display: block;
}

/* Horizontal scroll filmstrip trigger */
.pin-filmstrip { overflow: hidden; }

/* Counter animation */
.count-up { display: inline-block; }

/* Chalk draw line */
.chalk-draw {
    position: relative;
    overflow: hidden;
}
.chalk-draw::after {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 100%;
    background: #1a3a2a;
    transform: scaleX(1);
    transform-origin: right;
    transition: transform 0s;
}
.chalk-draw.drawn::after {
    transform: scaleX(0);
    transition: transform 1.5s cubic-bezier(0.77, 0, 0.175, 1);
}

/* Image parallax containers */
.parallax-img { overflow: hidden; border-radius: var(--radius-lg); }
.parallax-img img { transform-origin: center; will-change: transform; }

/* Marquee (autoplay testimonials) */
.marquee-wrap { overflow: hidden; }
.marquee-track {
    display: flex; gap: 30px;
    animation: marquee 30s linear infinite;
    width: max-content;
}
.marquee-track:hover { animation-play-state: paused; }
@keyframes marquee {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}
.marquee-item { width: 380px; flex-shrink: 0; }

/* Page transition */
.page-transition {
    position: fixed; inset: 0;
    background: var(--indigo); z-index: 9999;
    transform: scaleY(0); transform-origin: bottom;
    pointer-events: none;
}

/* Hover underline */
.hover-line {
    position: relative; display: inline-block;
}
.hover-line::after {
    content: ''; position: absolute; left: 0; bottom: -2px;
    width: 0; height: 2px; background: var(--marigold);
    transition: width 0.3s ease;
}
.hover-line:hover::after { width: 100%; }

/* Floating elements */
@keyframes float {
    0%, 100% { transform: translateY(0); }
    50%       { transform: translateY(-12px); }
}
.float-slow { animation: float 4s ease-in-out infinite; }
.float-fast { animation: float 2.5s ease-in-out infinite; }

/* Pulse ring (for CTA badge) */
@keyframes pulse-ring {
    0%   { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.5); opacity: 0; }
}
.pulse-ring::before {
    content: ''; position: absolute; inset: -6px;
    border-radius: inherit; border: 2px solid var(--marigold);
    animation: pulse-ring 2s ease-out infinite;
}