/* Motion layer. Animates paint-only properties so scrolling stays light. */

a {
  transition: color 200ms cubic-bezier(0.22, 1, 0.36, 1);
}
.btn-primary,
.btn-outline,
.nav-cta,
.apply-btn,
.theme-toggle {
  transition: transform 200ms cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 200ms cubic-bezier(0.22, 1, 0.36, 1),
              background-color 200ms ease,
              border-color 200ms ease,
              color 200ms ease,
              opacity 200ms ease;
}
.btn-primary:hover,
.nav-cta:hover,
.apply-btn:hover {
  transform: translateY(-2px);
}
.btn-outline:hover {
  transform: translateY(-1px);
}

.main-nav > li > a {
  transition: color 180ms ease, background-color 180ms ease;
}
.dropdown-menu {
  transition: opacity 140ms ease, visibility 0s linear 180ms;
}
.main-nav > li:hover .dropdown-menu,
.main-nav > li:focus-within .dropdown-menu {
  transition: opacity 120ms ease, visibility 0s;
}
.dropdown-menu li a {
  transition: color 180ms ease, background-color 180ms ease;
}

.service-card,
.info-card,
.job-card,
.leader-card,
.team-card,
.quality-card,
.achievement-card,
.training-card,
.branch-card,
.gallery-item,
.caps-card,
.related-links a,
.stat-item,
.marquee-item {
  transition: transform 240ms cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 240ms cubic-bezier(0.22, 1, 0.36, 1),
              background-color 220ms ease,
              border-color 220ms ease;
}
.service-card:hover,
.info-card:hover,
.team-card:hover,
.quality-card:hover,
.achievement-card:hover,
.training-card:hover,
.branch-card:hover,
.caps-card:hover,
.related-links a:hover {
  transform: translateY(-3px);
}

.gallery-item img,
.service-card img,
.training-card img,
.achievement-card img {
  transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
}
.gallery-item:hover img:not(.gallery-crest),
.training-card:hover img,
.achievement-card:hover img {
  transform: scale(1.03);
}
.info-crest,
.gallery-crest,
.crest-img,
.portrait-img {
  transform: none;
}

.form-group input,
.form-group select,
.form-group textarea {
  transition: border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease;
}

.hero-btn,
.hero-dot {
  transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1),
              background-color 180ms ease,
              border-color 180ms ease,
              color 180ms ease;
}
.hero-dot:hover { transform: scale(1.25); }

.site-header,
.header-main,
.header-topbar {
  transition: background-color 750ms ease, color 750ms ease, box-shadow 750ms ease, border-color 750ms ease;
}

.stat-number {
  transition: color 200ms ease;
}

.fade-up {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 420ms cubic-bezier(0.22, 1, 0.36, 1),
              transform 420ms cubic-bezier(0.22, 1, 0.36, 1);
}
.fade-up.visible {
  opacity: 1;
  transform: none;
}

.inner-hero,
.section-pad {
  animation: page-in 360ms ease both;
}
@keyframes page-in {
  from { opacity: 0.01; }
  to { opacity: 1; }
}

/* Visitors who ask the OS for less motion get the content immediately. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .fade-up {
    opacity: 1;
    transform: none;
  }
  .pre-ring {
    animation: spin 0.8s linear infinite !important;
  }
  .marquee-track {
    animation: marquee 32s linear infinite !important;
  }
}
