@keyframes masthead-label-in {
  from { opacity: 0; transform: translateX(-20px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes masthead-title-in {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes masthead-copy-in {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes seal-in {
  from { opacity: 0; transform: scale(.86) rotate(-6deg); }
  to { opacity: 1; transform: scale(1) rotate(0); }
}

@keyframes seal-float {
  0%, 100% { transform: translate3d(var(--pointer-x, 0), var(--pointer-y, 0), 0); }
  50% { transform: translate3d(var(--pointer-x, 0), calc(var(--pointer-y, 0) - 7px), 0); }
}

@keyframes halo-pulse {
  0%, 100% { opacity: .72; transform: scale(1); }
  50% { opacity: .38; transform: scale(1.035); }
}

@keyframes ambient-drift {
  from { transform: translate3d(-1%, 0, 0) rotate(-5deg); }
  to { transform: translate3d(2%, -8px, 0) rotate(-3deg); }
}

@keyframes action-shine {
  0% { transform: translateX(-145%) skewX(-18deg); }
  45%, 100% { transform: translateX(260%) skewX(-18deg); }
}

.home-masthead::after {
  animation: ambient-drift 8s ease-in-out infinite alternate;
}

.masthead-label {
  animation: masthead-label-in .55s ease-out both;
}

.masthead-copy h1 {
  animation: masthead-title-in .7s .08s cubic-bezier(.2,.8,.2,1) both;
}

.masthead-copy > p:not(.masthead-label) {
  animation: masthead-copy-in .65s .2s ease-out both;
}

.masthead-actions {
  animation: masthead-copy-in .65s .3s ease-out both;
}

.masthead-identity img {
  animation: seal-in .75s .15s cubic-bezier(.2,.8,.2,1) both,
    seal-float 5s 1s ease-in-out infinite;
  transition: transform 220ms ease;
}

.seal-halo {
  animation: halo-pulse 4.5s ease-in-out infinite;
}

.primary-action {
  position: relative;
  overflow: hidden;
}

.primary-action::after {
  content: "";
  position: absolute;
  inset: -40% auto -40% -20%;
  width: 24px;
  background: rgba(255,255,255,.28);
  animation: action-shine 4.5s 1.4s ease-in-out infinite;
}

.primary-action svg,
.text-action svg,
.tracker-help svg,
.division-overview > a svg,
.section-heading > a svg {
  transition: transform 180ms ease;
}

.primary-action:hover svg,
.text-action:hover svg,
.tracker-help:hover svg,
.division-overview > a:hover svg,
.section-heading > a:hover svg {
  transform: translateX(4px);
}

.quicklink-grid > a {
  animation: masthead-copy-in .5s ease-out both;
}

.quicklink-grid > a:nth-child(1) { animation-delay: .33s; }
.quicklink-grid > a:nth-child(2) { animation-delay: .4s; }
.quicklink-grid > a:nth-child(3) { animation-delay: .47s; }
.quicklink-grid > a:nth-child(4) { animation-delay: .54s; }

.quicklink-grid > a svg {
  transition: color 170ms ease, transform 170ms ease;
}

.quicklink-grid > a:hover svg {
  transform: translateY(-3px) scale(1.06);
}

.editorial-image {
  position: relative;
}

.editorial-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,.18), transparent 70%);
  opacity: 0;
  transform: translateX(-60%);
  transition: opacity 250ms ease, transform 550ms ease;
}

.editorial-card:hover .editorial-image::after {
  opacity: 1;
  transform: translateX(60%);
}

.motion-ready .reveal-target {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .62s var(--reveal-delay, 0ms) ease,
    transform .62s var(--reveal-delay, 0ms) cubic-bezier(.2,.8,.2,1);
}

.motion-ready .reveal-target.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.nav-dropdown-menu {
  transform-origin: top left;
}

.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
  animation: dropdown-in 160ms ease-out both;
}

@keyframes dropdown-in {
  from { opacity: 0; transform: translateY(7px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 1000px) {
  .nav-dropdown:hover .nav-dropdown-menu,
  .nav-dropdown:focus-within .nav-dropdown-menu {
    animation: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-masthead::after,
  .masthead-label,
  .masthead-copy h1,
  .masthead-copy > p:not(.masthead-label),
  .masthead-actions,
  .masthead-identity img,
  .seal-halo,
  .primary-action::after,
  .quicklink-grid > a {
    animation: none !important;
  }

  .motion-ready .reveal-target {
    opacity: 1;
    transform: none;
  }
}
