/* Shared entrance motion; layout containers and fixed navigation stay untouched. */
.page-motion-pending .site-main, .page-motion-pending footer { opacity: 0; }
.page-entering .site-main { animation: page-arrival 650ms cubic-bezier(.2,.7,.25,1) both; }
@keyframes page-arrival { from { opacity: 0; } to { opacity: 1; } }
.site-main :is(.anim-top, .anim-top-delay-500ms, .anim-top-delay-1000ms) { opacity: 1; animation: none !important; }
.reveal-ready .page-reveal {
    --reveal-y: 24px;
    --reveal-scale: 1;
    --reveal-duration: 950ms;
    opacity: 0;
    transform: translate3d(0, var(--reveal-y), 0) scale(var(--reveal-scale));
    transition: none;
}
.reveal-ready.reveal-running .page-reveal {
    transition: opacity 700ms ease-out,
        transform var(--reveal-duration) cubic-bezier(.16,1,.3,1);
    transition-delay: var(--reveal-delay, 0ms);
}
.reveal-ready .page-reveal.motion-heading { --reveal-y: 30px; --reveal-duration: 1100ms; }
.reveal-ready .page-reveal.motion-card { --reveal-y: 32px; --reveal-scale: .975; }
.reveal-ready .page-reveal.motion-media { --reveal-y: 18px; --reveal-scale: .985; --reveal-duration: 1200ms; }
.reveal-ready .page-reveal.motion-action { --reveal-y: 16px; --reveal-scale: .96; }
.reveal-ready footer > .page-reveal { --reveal-y: 10px; }
.reveal-ready .page-reveal.is-visible { opacity: 1; transform: none; }
.reveal-ready .page-reveal:focus-within { opacity: 1; transform: none; transition-delay: 0ms; }
.site-main img.image-fade { opacity: 0; }
.site-main img.image-fade.image-loaded { opacity: 1; transition: opacity 900ms ease-out; }
.main-welcome.hero-image-pending::before { opacity: 0; }
.main-welcome.hero-image-pending.hero-image-ready::before { opacity: 1; transition: opacity 1100ms ease-out; }
.reveal-ready .motion-heading.is-visible .title-dot { animation: title-accent 750ms ease-out 200ms both; display: inline-block; }
@keyframes title-accent {
    from { opacity: 0; transform: scale(.5); }
    to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
    .page-motion-pending .site-main { opacity: 1; }
    .page-entering .site-main { animation-duration: 180ms; }
    .reveal-ready .page-reveal, .reveal-ready.reveal-running .page-reveal { opacity: 1; transform: none; transition: none; }
    .site-main img.image-fade, .site-main img.image-fade.image-loaded { opacity: 1; transition: none; }
    .main-welcome.hero-image-pending::before, .main-welcome.hero-image-pending.hero-image-ready::before { opacity: 1; transition: none; }
    .reveal-ready .motion-heading.is-visible .title-dot { animation: none; }
}
