/* ── css/animations.css ─────────────────────────── */

/* ── Scroll Reveal ── */
/* animations.css - rich animation system */

/* PAGE OVERLAY TRANSITION */
.page-overlay {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background: var(--c-black);
    pointer-events: none;
    transform-origin: top;
    animation: anim-page-enter 0.85s var(--ease-sharp) forwards;
}

@keyframes anim-page-enter {
    0%   { transform: scaleY(1); }
    100% { transform: scaleY(0); }
}

.page-overlay.exit {
    animation: anim-page-exit 0.6s var(--ease-sharp) forwards;
    transform-origin: bottom;
    pointer-events: all;
}

@keyframes anim-page-exit {
    0%   { transform: scaleY(0); }
    100% { transform: scaleY(1); }
}

/* SCROLL REVEALS */
.reveal-up {
    opacity: 0;
    transform: translateY(44px);
    transition: opacity var(--dur-m) var(--ease-sharp),
                transform var(--dur-m) var(--ease-sharp);
}

.reveal-left {
    opacity: 0;
    transform: translateX(-44px);
    transition: opacity var(--dur-m) var(--ease-sharp),
                transform var(--dur-m) var(--ease-sharp);
}

.reveal-right {
    opacity: 0;
    transform: translateX(44px);
    transition: opacity var(--dur-m) var(--ease-sharp),
                transform var(--dur-m) var(--ease-sharp);
}

.reveal-scale {
    opacity: 0;
    transform: scale(0.94);
    transition: opacity var(--dur-m) var(--ease-sharp),
                transform var(--dur-m) var(--ease-sharp);
}

.reveal-clip {
    clip-path: inset(0 0 100% 0);
    transition: clip-path var(--dur-l) var(--ease-sharp);
}

.reveal-up.visible,
.reveal-left.visible,
.reveal-right.visible,
.reveal-scale.visible { opacity: 1; transform: none; }

.reveal-clip.visible { clip-path: inset(0 0 0% 0); }

/* HERO KEYFRAMES */
@keyframes anim-fade-up {
    from { opacity: 0; transform: translateY(32px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes anim-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* HERO BG ZOOM */
@keyframes anim-hero-zoom {
    from { transform: scale(1.06); }
    to   { transform: scale(1.0); }
}

/* GLOW PULSE */
@keyframes anim-glow-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: 0.6; transform: scale(1.08); }
}

/* CERT MARQUEE */
@keyframes anim-marquee {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* SCROLL BAR PULSE */
@keyframes anim-scroll-pulse {
    0%, 100% { width: 36px; opacity: 1; }
    50%       { width: 12px; opacity: 0.5; }
}

/* LINE DRAW (decorative) */
@keyframes anim-line-grow {
    from { scaleX: 0; }
    to   { scaleX: 1; }
}

/* STAGGER HELPERS */
.stagger-1 { transition-delay: 0.08s !important; }
.stagger-2 { transition-delay: 0.16s !important; }
.stagger-3 { transition-delay: 0.24s !important; }
.stagger-4 { transition-delay: 0.32s !important; }
