/* ============================================================================
   FIELDWORK — animations
   Reveal-on-scroll · page enter · stagger · reduced-motion safety
   ========================================================================== */

.page-enter { animation: pageIn 0.7s var(--ease) both; }
@keyframes pageIn {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
}

.reveal, .stagger > * { opacity: 1; transform: none; }
html.js .reveal, html.js .stagger > * {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity 0.7s var(--ease), transform 0.7s var(--ease);
    transition-delay: var(--d, 0s);
}
html.js .reveal.is-revealed, html.js .stagger > .is-revealed {
    opacity: 1;
    transform: translateY(0);
}

.stagger > *:nth-child(2) { --d: 0.07s; }
.stagger > *:nth-child(3) { --d: 0.14s; }
.stagger > *:nth-child(4) { --d: 0.21s; }
.stagger > *:nth-child(5) { --d: 0.28s; }
.stagger > *:nth-child(6) { --d: 0.35s; }
.stagger > *:nth-child(7) { --d: 0.42s; }
.stagger > *:nth-child(8) { --d: 0.49s; }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    html.js .reveal, html.js .stagger > * { opacity: 1; transform: none; }
}
