/* ==========================================================================
   ANIMATIONS
   Premium = restrained. Motion here is limited to hover/focus micro-
   interactions, dropdown/menu transitions, and the achievement counter.
   Nothing on this page hides content behind an animation trigger, so the
   site works identically with JavaScript on or off — animation only adds
   polish, never gates visibility.
   ========================================================================== */

@keyframes fade-in-up {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes gentle-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}

/* Card lift on hover — shared by notice/event/highlight/testimonial cards */
.notice-card,
.event-card,
.highlight-card,
.testimonial-card,
.quick-link-tile,
.gallery-preview__item {
  transition: transform var(--duration-base) var(--ease-premium),
              box-shadow var(--duration-base) var(--ease-premium);
}

.highlight-card:hover,
.testimonial-card:hover {
  transform: translateY(-4px);
}

.quick-link-tile:hover {
  transform: translateY(-3px);
}

.gallery-preview__item img {
  transition: transform var(--duration-slow) var(--ease-premium);
}

.gallery-preview__item:hover img {
  transform: scale(1.06);
}

/* Achievement laurel — a quiet breathing motion, not a distraction */
.achievement-card__laurel {
  transition: opacity var(--duration-slow) var(--ease-premium);
}

/* Dropdown + mobile menu transitions */
.navbar__dropdown {
  transition: opacity var(--duration-base) var(--ease-premium),
              transform var(--duration-base) var(--ease-premium),
              visibility var(--duration-base) var(--ease-premium);
}

.navbar__caret {
  transition: transform var(--duration-fast) var(--ease-premium);
}

.navbar__menu {
  transition: transform var(--duration-base) var(--ease-premium),
              opacity var(--duration-base) var(--ease-premium);
}

.navbar__toggle-bar {
  transition: transform var(--duration-fast) var(--ease-premium),
              opacity var(--duration-fast) var(--ease-premium);
}

/* Reduced motion: honor the OS-level preference site-wide */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}