/* Motion & micro-interactions — respects prefers-reduced-motion */

/* ── Scroll progress bar (always visible, no animation) ── */
.nt-scroll-progress {
    position: fixed;
    top: 0;
    left: 0;
    width: 0%;
    height: var(--nt-progress-h, 3px);
    background: linear-gradient(90deg, var(--nt-brand-bar) 0%, var(--nt-accent-warm) 60%, var(--nt-orange) 100%);
    z-index: 9999;
    pointer-events: none;
    border-radius: 0 2px 2px 0;
    transition: width 0.08s linear;
    transform-origin: left center;
}

@media (prefers-reduced-motion: no-preference) {
    /* ── Hero entrance ── */
    .nt-hero-bg {
        animation: nt-hero-kenburns 22s ease-out forwards;
        will-change: transform;
    }

    @keyframes nt-hero-kenburns {
        from { transform: scale(1.08); }
        to { transform: scale(1); }
    }

    .nt-hero-inner > * {
        opacity: 0;
        transform: translateY(22px);
        animation: nt-hero-rise 0.75s var(--nt-ease) forwards;
    }

    .nt-hero-inner > *:nth-child(1) { animation-delay: 0.12s; }
    .nt-hero-inner > *:nth-child(2) { animation-delay: 0.22s; }
    .nt-hero-inner > *:nth-child(3) { animation-delay: 0.32s; }

    @keyframes nt-hero-rise {
        to { opacity: 1; transform: translateY(0); }
    }

    .nt-hero-stats-band {
        animation: nt-hero-rise 0.6s var(--nt-ease) 0.45s forwards;
        opacity: 0;
    }

    /* ── Reveal variants (gated on html.nt-has-js so content stays visible without JS) ── */
    html.nt-has-js .nt-reveal-left {
        opacity: 0;
        transform: translateX(-28px);
        transition: opacity 0.65s var(--nt-ease), transform 0.65s var(--nt-ease);
    }

    html.nt-has-js .nt-reveal-right {
        opacity: 0;
        transform: translateX(28px);
        transition: opacity 0.65s var(--nt-ease), transform 0.65s var(--nt-ease);
    }

    html.nt-has-js .nt-reveal-scale {
        opacity: 0;
        transform: scale(0.96);
        transition: opacity 0.6s var(--nt-ease), transform 0.6s var(--nt-ease);
    }

    html.nt-has-js .nt-reveal-left.is-visible,
    html.nt-has-js .nt-reveal-right.is-visible,
    html.nt-has-js .nt-reveal-scale.is-visible {
        opacity: 1;
        transform: none;
    }

    /* Section eyebrow + title line draw */
    .nt-section-head.is-visible .nt-title-line {
        animation: nt-line-grow 0.55s var(--nt-ease) 0.15s forwards;
        transform: scaleX(0);
        transform-origin: left center;
    }

    .nt-section-head--center.is-visible .nt-title-line {
        transform-origin: center center;
    }

    @keyframes nt-line-grow {
        to { transform: scaleX(1); }
    }

    /* Grid stagger (cards, events, news, team, etc.) */
    html.nt-has-js .nt-animate-grid > *,
    html.nt-has-js .nt-reveal-stagger > * {
        opacity: 0;
        transform: translateY(22px);
        transition:
            opacity 0.55s var(--nt-ease),
            transform 0.55s var(--nt-ease),
            box-shadow 0.3s var(--nt-ease);
    }

    html.nt-has-js .nt-animate-grid.is-visible > *,
    html.nt-has-js .nt-reveal-stagger.is-visible > * {
        opacity: 1;
        transform: translateY(0);
    }

    .nt-animate-grid.is-visible > *:nth-child(1),
    .nt-reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0.04s; }
    .nt-animate-grid.is-visible > *:nth-child(2),
    .nt-reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 0.09s; }
    .nt-animate-grid.is-visible > *:nth-child(3),
    .nt-reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 0.14s; }
    .nt-animate-grid.is-visible > *:nth-child(4),
    .nt-reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 0.19s; }
    .nt-animate-grid.is-visible > *:nth-child(5),
    .nt-reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 0.24s; }
    .nt-animate-grid.is-visible > *:nth-child(6),
    .nt-reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 0.29s; }
    .nt-animate-grid.is-visible > *:nth-child(7),
    .nt-reveal-stagger.is-visible > *:nth-child(7) { transition-delay: 0.34s; }
    .nt-animate-grid.is-visible > *:nth-child(8),
    .nt-reveal-stagger.is-visible > *:nth-child(8) { transition-delay: 0.39s; }
    .nt-animate-grid.is-visible > *:nth-child(9),
    .nt-reveal-stagger.is-visible > *:nth-child(9) { transition-delay: 0.44s; }
    .nt-animate-grid.is-visible > *:nth-child(10),
    .nt-reveal-stagger.is-visible > *:nth-child(10) { transition-delay: 0.49s; }
    .nt-animate-grid.is-visible > *:nth-child(11),
    .nt-reveal-stagger.is-visible > *:nth-child(11) { transition-delay: 0.54s; }
    .nt-animate-grid.is-visible > *:nth-child(12),
    .nt-reveal-stagger.is-visible > *:nth-child(12) { transition-delay: 0.59s; }

    /* Card hover lift */
    .nt-event-card,
    .nt-news-card,
    .nt-pub-card,
    .nt-album-card,
    .nt-team-card,
    .nt-award-card,
    .nt-vmw-col {
        transition:
            transform 0.35s var(--nt-ease),
            box-shadow 0.35s var(--nt-ease),
            border-color 0.25s;
    }

    .nt-event-card:hover,
    .nt-news-card:hover,
    .nt-pub-card:hover,
    .nt-album-card:hover,
    .nt-team-card:hover,
    .nt-award-card:hover,
    .nt-vmw-col:hover {
        transform: translateY(-6px);
    }

    /* Buttons */
    .nt-btn,
    .c-btn {
        transition:
            transform 0.2s var(--nt-ease),
            box-shadow 0.25s var(--nt-ease),
            background 0.2s,
            border-color 0.2s;
    }

    .nt-btn:hover,
    .c-btn:hover {
        transform: translateY(-2px);
    }

    .nt-btn:active,
    .c-btn:active {
        transform: translateY(0) scale(0.98);
    }

    /* Link arrow nudge */
    .nt-link-arrow i {
        transition: transform 0.25s var(--nt-ease);
    }

    .nt-link-arrow:hover i {
        transform: translateX(4px);
    }

    /* Partner marquee — defined in home.css */

    /* Stat cards pop */
    .nt-stat-card {
        transition: background 0.3s;
    }

    .nt-hero-stats-grid.is-visible .nt-stat-card:hover {
        background: var(--nt-sage-soft);
    }

    .nt-stat-value {
        transition: color 0.3s;
    }

    /* Reach map gentle float */
    .nt-reach-map {
        transition: transform 0.5s var(--nt-ease);
    }

    .nt-reach-wrap:hover .nt-reach-map {
        transform: scale(1.01);
    }

    /* Testimonial slide transition */
    .nt-testimonial-slide {
        animation: nt-fade-in 0.45s var(--nt-ease);
    }

    @keyframes nt-fade-in {
        from { opacity: 0; transform: translateY(8px); }
        to { opacity: 1; transform: translateY(0); }
    }

    .nt-coalition-logo {
        transition: transform 0.35s var(--nt-ease), box-shadow 0.35s var(--nt-ease);
    }

    .nt-coalition-logo:hover {
        transform: translateY(-4px);
    }

    /* Page banner subtle fade */
    .nt-page-banner-inner {
        animation: nt-banner-in 0.7s var(--nt-ease) forwards;
        opacity: 0;
        transform: translateY(12px);
    }

    @keyframes nt-banner-in {
        to { opacity: 1; transform: translateY(0); }
    }

    /* Image hover in split sections */
    .nt-split-media img,
    .nt-about-photo img {
        transition: transform 0.6s var(--nt-ease);
    }

    .nt-split-media:hover img,
    .nt-about-photo:hover img {
        transform: scale(1.03);
    }

    .nt-about-photo,
    .nt-split-media {
        overflow: hidden;
    }
}

@media (prefers-reduced-motion: reduce) {
    .nt-hero-bg,
    .nt-hero-inner > *,
    .nt-hero-stats-band,
    .nt-page-banner-inner,
    .nt-lp-hero-glass,
    .nt-about-hero-card {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}
