/* ===== SITE-WIDE MOTION POLISH ===== */
:root {
  --motion-ease: cubic-bezier(.22,.61,.36,1);
  --motion-fast: .26s;
  --motion-med: .58s;
}
/* Page entrance/exit remains subtle and consistent. */
.motion-ready body {
  transition: opacity .38s ease;
}
/* Current page sections: no layout shift, only soft rise/fade. */
.ex-showcase-hero.fade-reveal, .research-hero.fade-reveal, .news-hero.fade-reveal, .site-footer.fade-reveal, .footer-shell.fade-reveal {
  transform: translateY(0);
}
/* Hero media gets a gentle visual settle without changing its crop. */
.ex-showcase-hero-image img, .research-hero-art img, .hero {
  transition: filter .7s var(--motion-ease), transform .8s var(--motion-ease);
}
/* Cards across the whole site share the same restrained hover language. */
.quick-card, .feature-card, .news-grid article, .archive-card, .ex-showcase-card, .research-feature-card, .research-card {
  transition: transform var(--motion-fast) var(--motion-ease),              box-shadow var(--motion-fast) ease,              border-color var(--motion-fast) ease!important;
}
@media (hover:hover) and (pointer:fine) {
  .quick-card:hover,   .feature-card:hover,   .news-grid article:hover,   .archive-card:hover,   .ex-showcase-card:hover,   .research-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 16px 34px rgba(9,35,50,.13);
  }
  .research-feature-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 40px rgba(9,35,50,.13);
  }
  .quick-card img,   .feature-card img,   .news-grid article img,   .archive-card img,   .ex-card-media img,   .research-poster img,   .research-card-media img {
    transition: transform .65s var(--motion-ease), filter .45s ease;
  }
  .quick-card:hover img,   .feature-card:hover img,   .news-grid article:hover img,   .archive-card:hover img,   .ex-showcase-card:hover .ex-card-media img,   .research-feature-card:hover .research-poster img,   .research-card:hover .research-card-media img {
    transform: scale(1.025);
  }
  .btn,   .gallery-more,   .ex-photo-more,   .research-open,   .newsletter button {
    transition: transform .22s var(--motion-ease), box-shadow .22s ease, background-color .22s ease, color .22s ease;
  }
  .btn:hover,   .gallery-more:hover,   .ex-photo-more:hover,   .newsletter button:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 18px rgba(9,35,50,.12);
  }
}
/* Keep scroll reveal smooth but avoid expensive long-lived will-change. */
.fade-reveal, .fade-child {
  backface-visibility: hidden;
}
.fade-reveal.is-visible, .fade-child.is-visible {
  will-change: auto;
}
/* Mobile gets fade motion without hover-like movement. */
@media (max-width:850px) {
  .fade-reveal {
    transform: translateY(12px);
  }
  .fade-child {
    transform: translateY(8px);
  }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    scroll-behavior: auto!important;
    animation-duration: .001ms!important;
    animation-iteration-count: 1!important;
    transition-duration: .001ms!important;
  }
}
.awards-hero.fade-reveal,.awards-intro.fade-reveal,.awards-grid.fade-reveal {
  transform: translateY(0);
}
.award-card {
  transition: transform var(--motion-fast) var(--motion-ease),box-shadow var(--motion-fast) ease,border-color var(--motion-fast) ease;
}
@media (hover:hover) and (pointer:fine) {
  .award-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 16px 34px rgba(9,35,50,.13);
  }
}
