/* Shared motion follows the campaign's existing ease and interface geometry. */
:root { --nf-motion-ease: var(--ease, cubic-bezier(.16,1,.3,1)); }
/* Enabled by the tiny head bootstrap only. Native/no-JS content remains visible. */
html[data-nf-motion] .nf-main :is(
  .campaign-intro,.hero-fact,.audience,.abuse,.evidence,.story,.week-panel,
  .resource-panel,.closing,.route-card,.nf-case-card,.nf-case-participation,
  .nf-case-campaign,.nf-case-single-photo,.nf-event-facts,.nf-event-resources,
  .nf-events-participation,.nf-event-feature,.nf-event-card,
  .nf-reveal-surface,.nf-reveal-card,.nf-reveal-heading,.hero-message h1,.section-heading h2,
  .nf-case-archive-hero h1,.nf-case-single-heading h1,
  .nf-case-collection-heading h2,.nf-event-single-hero h1
):not(.nf-motion-done):not(:focus-within) { opacity: 0; }
.nf-main .nf-motion-running { will-change: transform, opacity; }
.nf-main .nf-motion-phrase { display: inline-block; max-width: 100%; vertical-align: top; }
.nf-main :is(.story .wp-block-image,.nf-case-card-photo) { overflow: hidden; }
.nf-main :is(.audience-photo img,.story .wp-block-image img,.nf-case-card-photo img) {
  transition: transform 320ms var(--nf-motion-ease);
}
.nf-main :is(.audience:focus-within .audience-photo img,.story:focus-within .wp-block-image img,.nf-case-card:focus-within .nf-case-card-photo img) {
  transform: scale(1.045);
}
.nf-main :is(.nf-btn .wp-block-button__link,.resource-link a)::after,
.nf-main :is(.nf-event-button,.nf-event-link) > .nf-icon {
  transition: transform 280ms var(--nf-motion-ease);
}
.nf-main :is(.nf-btn .wp-block-button__link,.resource-link a):focus-visible::after,
.nf-main :is(.nf-event-button,.nf-event-link):focus-visible > .nf-icon { transform: translateX(8px); }
.nf-main .nf-btn.is-light .wp-block-button__link:focus-visible::after { transform: translate(3px,-3px); }
.nf-main .nf-btn.is-down .wp-block-button__link:focus-visible::after { transform: translateY(4px); }
@media (hover: hover) and (pointer: fine) {
  .nf-main :is(.audience:hover .audience-photo img,.story:hover .wp-block-image img,.nf-case-card:hover .nf-case-card-photo img) { transform: scale(1.045); }
  .nf-main :is(.nf-btn .wp-block-button__link,.resource-link a):hover::after,
  .nf-main :is(.nf-event-button,.nf-event-link):hover > .nf-icon { transform: translateX(8px); }
  .nf-main .nf-btn.is-light .wp-block-button__link:hover::after { transform: translate(3px,-3px); }
  .nf-main .nf-btn.is-down .wp-block-button__link:hover::after { transform: translateY(4px); }
}
.nf-main .text-link a { min-height: 44px; }
.nf-main :is(.audience,.campaign-copy,.evidence-title) .text-link a:focus-visible {
  color: #ffdde4;
  outline-color: #fff;
}
@media (hover: hover) and (pointer: fine) {
  .nf-main :is(.audience,.campaign-copy,.evidence-title) .text-link a:hover { color: #ffdde4; }
}
@media (prefers-reduced-motion: reduce) {
  html[data-nf-motion] .nf-main :is(section,aside,article,header,div,h1,h2) { opacity: 1 !important; }
  .nf-main .nf-motion-running { will-change: auto; }
  .nf-main .nf-motion-phrase { transform: none !important; opacity: 1 !important; }
  .nf-main :is(.audience-photo img,.story .wp-block-image img,.nf-case-card-photo img),
  .nf-main :is(.nf-btn .wp-block-button__link,.resource-link a)::after,
  .nf-main .text-link a::after,
  .nf-main :is(.nf-event-button,.nf-event-link) > .nf-icon { transition: none !important; transform: none !important; }
}

/* Match the existing reduced-motion poster when data saving or playback failure applies. */
.hero-backdrop.nf-video-static video { display:none; }
.hero-backdrop.nf-video-static { background:#fff url('/wp-content/uploads/2026/10/NEFRA-light-trails-poster-webp.webp') center/cover; }
