/* ============================================================
   ADVICEBIZ — ANIMATIONS
   ============================================================ */

/* Hero word reveal */
@keyframes wordReveal {
    0%   { opacity: 0; transform: translateY(40px) rotate(.8deg); }
    100% { opacity: 1; transform: translateY(0) rotate(0); }
}

/* Generic fade up */
@keyframes fadeUp {
    from { opacity: 0; transform: translateY(24px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Fade in */
@keyframes fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* Scroll indicator pulse */
@keyframes scrollPulse {
    0%   { opacity: 0; transform: scaleY(0); transform-origin: top; }
    40%  { opacity: 1; transform: scaleY(1); transform-origin: top; }
    80%  { opacity: 0; transform: scaleY(1) translateY(10px); transform-origin: top; }
    100% { opacity: 0; transform: scaleY(0); }
}

/* Gold shimmer on CTA button */
@keyframes shimmer {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(200%); }
}

/* Counter easing handled in JS; this adds a subtle scale pop on completion */
@keyframes counterPop {
    0%   { transform: scale(1); }
    50%  { transform: scale(1.06); }
    100% { transform: scale(1); }
}
.counter-done { animation: counterPop .4s var(--ease-spring, cubic-bezier(.34,1.56,.64,1)); }

/* Service item body reveal */
.service-item__body {
    transition: max-height .5s cubic-bezier(.4,0,.2,1),
                opacity    .4s cubic-bezier(.4,0,.2,1),
                padding    .4s cubic-bezier(.4,0,.2,1);
}

/* Process step stagger (assigned via JS) */
.process-step { transition: none; }
.process-step.in-view .process-step__circle {
    animation: fadeUp .5s var(--ease-out, cubic-bezier(0,0,.2,1)) forwards;
}
.process-step[data-step="1"].in-view .process-step__circle { animation-delay: .0s; }
.process-step[data-step="2"].in-view .process-step__circle { animation-delay: .15s; }
.process-step[data-step="3"].in-view .process-step__circle { animation-delay: .30s; }
.process-step[data-step="4"].in-view .process-step__circle { animation-delay: .45s; }

/* Card hover shimmer */
.case-card::after,
.post-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, transparent 40%, rgba(196,154,42,.04) 50%, transparent 60%);
    opacity: 0;
    transition: opacity .4s;
    pointer-events: none;
}
.case-card { position: relative; }
.post-card { position: relative; }
.case-card:hover::after,
.post-card:hover::after { opacity: 1; }

/* Form input focus ring animation */
.form-input, .form-textarea {
    transition: border-color .25s cubic-bezier(.4,0,.2,1),
                box-shadow   .25s cubic-bezier(.4,0,.2,1);
}

/* Nav link underline animation */
.nav-menu a {
    position: relative;
}
.nav-menu a::after {
    content: '';
    position: absolute;
    bottom: 4px;
    left: 14px;
    right: 14px;
    height: 1px;
    background: var(--gold);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .28s cubic-bezier(.4,0,.2,1);
}
.nav-menu a:hover::after,
.nav-menu .current-menu-item > a::after { transform: scaleX(1); }

/* Footer link hover */
.footer-links a {
    position: relative;
    display: inline-block;
}

/* Stat bar entry */
.stat-block__bar {
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .6s .2s cubic-bezier(.4,0,.2,1);
}
.reveal.revealed .stat-block__bar { transform: scaleX(1); }

/* Hero scroll hint animation (defined here, referenced in style.css) */
.scroll-line {
    animation: scrollPulse 2.2s 1.8s infinite;
}

/* Noise overlay subtle drift */
@media (prefers-reduced-motion: no-preference) {
    .noise-overlay {
        animation: noiseDrift 8s steps(1) infinite;
    }
    @keyframes noiseDrift {
        0%   { background-position: 0 0; }
        25%  { background-position: -4px -4px; }
        50%  { background-position: 4px 2px; }
        75%  { background-position: -2px 4px; }
        100% { background-position: 0 0; }
    }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
    .hero__headline .word {
        opacity: 1;
        transform: none;
    }
    .hero__label, .hero__sub, .hero__actions, .hero__stats {
        opacity: 1;
        animation: none;
    }
}
