/* ===================================================================
   Animations — Page-level motion choreography
   =================================================================== */

/* Loading exit */
body.is-loaded .loader-screen {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* Hero entrance (after loader) */
body.is-loaded .hero-tag,
body.is-loaded .hero-title,
body.is-loaded .hero-description,
body.is-loaded .hero-meta,
body.is-loaded .hero-actions,
body.is-loaded .hero-scroll {
    animation: heroEntry 1s var(--ease) forwards;
    opacity: 0;
}
body.is-loaded .hero-tag { animation-delay: 0.1s; }
body.is-loaded .hero-title { animation-delay: 0.3s; }
body.is-loaded .hero-description { animation-delay: 0.5s; }
body.is-loaded .hero-meta { animation-delay: 0.7s; }
body.is-loaded .hero-actions { animation-delay: 0.9s; }
body.is-loaded .hero-scroll { animation-delay: 1.1s; }

@keyframes heroEntry {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Stagger reveal for lists */
[data-reveal-stagger] > * {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
}
[data-reveal-stagger].is-visible > *:nth-child(1) { transition-delay: 0s; }
[data-reveal-stagger].is-visible > *:nth-child(2) { transition-delay: 0.1s; }
[data-reveal-stagger].is-visible > *:nth-child(3) { transition-delay: 0.2s; }
[data-reveal-stagger].is-visible > *:nth-child(4) { transition-delay: 0.3s; }
[data-reveal-stagger].is-visible > *:nth-child(5) { transition-delay: 0.4s; }
[data-reveal-stagger].is-visible > *:nth-child(6) { transition-delay: 0.5s; }
[data-reveal-stagger].is-visible > * {
    opacity: 1;
    transform: translateY(0);
}

/* Hover tilt for cards */
.project-card {
    transform-style: preserve-3d;
}

/* Marquee pause on hover */
.marquee:hover .marquee-track {
    animation-play-state: paused;
}

/* Smooth section borders on scroll */
.nav-header {
    will-change: background, backdrop-filter;
}

/* Image reveal */
.project-img img {
    clip-path: inset(0 0 100% 0);
    transition: clip-path 1s var(--ease);
}
.project-card.is-visible .project-img img {
    clip-path: inset(0);
}
