/* Calm global motion system. Layout and content remain unchanged. */
:root {
    --motion-fast: 220ms;
    --motion-base: 420ms;
    --motion-slow: 720ms;
    --ease-premium: cubic-bezier(.22, .61, .36, 1);
}

html { scroll-behavior: smooth; }

/* The early bootstrap class prevents a paint-then-hide flash; its timer is a visibility fail-safe. */
.motion-pending:not(.page-ready) main { opacity: 0; transform: translateY(12px); }
.motion-ready main {
    opacity: 1; transform: translateY(0);
    transition: opacity 750ms ease, transform 750ms var(--ease-premium);
}

.motion-ready .reveal {
    opacity: 0; transform: translateY(18px); will-change: opacity, transform;
    transition: opacity 700ms ease, transform 700ms var(--ease-premium);
}
.motion-ready .reveal.is-visible { opacity: 1; transform: translateY(0); will-change: auto; }

.motion-ready .reveal .motion-stagger > * {
    transition: opacity var(--motion-base) ease, transform var(--motion-base) var(--ease-premium);
    transition-delay: calc(min(var(--motion-index, 0), 4) * 60ms);
}
.motion-ready .reveal:not(.is-visible) .motion-stagger > * { opacity: 0; transform: translateY(10px); }
.motion-ready .reveal.is-visible .motion-stagger > * { opacity: 1; transform: translateY(0); }

.service-card, .news-card, .partner-card, .mission-card, .action-card, .resource-card, .person-card {
    transition: transform var(--motion-base) var(--ease-premium), box-shadow var(--motion-base) var(--ease-premium), border-color var(--motion-fast) ease;
}
.service-card:hover, .news-card:hover, .partner-card:hover, .mission-card:hover, .action-card:hover, .resource-card:hover, .person-card:hover {
    transform: translateY(-6px);
}
.motion-ready .reveal.is-visible .motion-stagger > .service-card:hover,
.motion-ready .reveal.is-visible .motion-stagger > .news-card:hover,
.motion-ready .reveal.is-visible .motion-stagger > .partner-card:hover,
.motion-ready .reveal.is-visible .motion-stagger > .mission-card:hover,
.motion-ready .reveal.is-visible .motion-stagger > .action-card:hover,
.motion-ready .reveal.is-visible .motion-stagger > .resource-card:hover,
.motion-ready .reveal.is-visible .motion-stagger > .person-card:hover { transform: translateY(-6px); }

.button {
    transition: transform var(--motion-fast) var(--ease-premium), background-color var(--motion-fast) ease, color var(--motion-fast) ease, box-shadow var(--motion-fast) var(--ease-premium);
}
.button:hover { transform: translateY(-2px); }
.button:active { transform: translateY(0) scale(.98); }

.service-card .service-art, .news-image img, .person-photo img {
    transition: transform 500ms var(--ease-premium);
}
.service-card:hover .service-art, .news-card:hover .news-image img, .person-card:hover .person-photo img {
    transform: scale(1.025);
}
.news-image, .person-photo, .service-card-top { overflow: hidden; }

.site-header {
    transition: background-color 360ms var(--ease-premium), box-shadow 360ms var(--ease-premium), backdrop-filter 360ms var(--ease-premium), -webkit-backdrop-filter 360ms var(--ease-premium);
}

@media (min-width: 1024px) {
    .js .menu-item-has-children > .sub-menu {
        display: block; opacity: 0; visibility: hidden; pointer-events: none;
        transform: translateY(6px);
        transition: opacity 260ms ease, transform 260ms var(--ease-premium), visibility 0s linear 260ms;
    }
    .js .menu-item-has-children.is-open > .sub-menu {
        opacity: 1; visibility: visible; pointer-events: auto; transform: translateY(0);
        transition-delay: 0s;
    }
}

.partner-track { scroll-behavior: smooth; scroll-snap-stop: always; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
    .motion-pending main, .motion-ready main,
    .motion-ready .reveal, .motion-ready .reveal.is-visible,
    .motion-ready .reveal .motion-stagger > * {
        opacity: 1 !important; transform: none !important; transition-delay: 0ms !important; will-change: auto;
    }
}
