@layer base {
  html,
  body {
    margin: 0;
    padding: 0;
  }

  body {
    overscroll-behavior: none;
  }

  main > :first-child {
    margin-top: 0 !important;
  }

  main > :last-child {
    margin-bottom: 0 !important;
  }
}

::-webkit-scrollbar {
  display: none;
}

/* Keep anchor targets clear of the fixed navigation bar. */
section[id] {
  scroll-margin-top: 5rem;
}

@media (min-width: 1024px) {
  section[id] {
    scroll-margin-top: 7rem;
  }
}

/* Give the desktop navigation enough room for every label on one line. */
#desktop-navigation {
  display: none;
}

#mobile-nav-toggle {
  display: flex;
}

@media (min-width: 1400px) {
  #desktop-navigation {
    display: flex;
    flex-wrap: nowrap;
  }

  #mobile-nav-toggle,
  #mobile-menu {
    display: none !important;
  }
}

/* The fixed header settles in quickly at page load. */
header {
  animation: header-enter 460ms cubic-bezier(0.22, 0.68, 0, 1) both;
}

@keyframes header-enter {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Scroll reveals enter once, with a short sibling stagger. */
html.motion-enabled [data-reveal="pending"] {
  opacity: 0;
  translate: 0 1.125rem;
  transition:
    opacity 620ms cubic-bezier(0.22, 0.68, 0, 1) var(--motion-delay, 0ms),
    translate 620ms cubic-bezier(0.22, 0.68, 0, 1) var(--motion-delay, 0ms);
}

html.motion-enabled [data-reveal="visible"] {
  opacity: 1;
  translate: 0 0;
}

/* Cards lift gently, while their existing colors and shadows show hover state. */
[data-hover-lift] {
  transition:
    translate 240ms cubic-bezier(0.22, 0.68, 0, 1),
    box-shadow 240ms cubic-bezier(0.22, 0.68, 0, 1);
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  [data-hover-lift]:hover {
    translate: 0 -4px;
    box-shadow: 0 16px 34px rgb(0 21 45 / 12%);
  }

  [data-motion-press]:hover {
    filter: brightness(1.035);
  }

  [data-motion-visual]:hover img {
    transform: scale(1.035);
  }
}

[data-motion-press] {
  transition: scale 160ms ease-out;
}

[data-motion-press]:active {
  scale: 0.985;
}

[data-motion-visual] {
  animation: visual-float 8s ease-in-out infinite;
  animation-delay: var(--motion-float-delay, 0s);
  will-change: transform;
}

[data-motion-visual] img {
  transition: transform 650ms cubic-bezier(0.22, 0.68, 0, 1);
}

@keyframes visual-float {
  0%,
  100% {
    transform: translate3d(0, 0, 0);
  }

  50% {
    transform: translate3d(0, -5px, 0);
  }
}

/* The roadmap's amber trace grows with page scroll, beneath its milestone cards. */
#future-timeline::after {
  background: linear-gradient(to bottom, #e3a92b, #0b2a4a 88%);
  content: "";
  inset-block: 0.5rem;
  left: 0.75rem;
  pointer-events: none;
  position: absolute;
  transform: scaleY(var(--timeline-progress, 0));
  transform-origin: top center;
  width: 2px;
  z-index: 0;
}

#future-timeline > .group {
  position: relative;
  z-index: 1;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }

  html {
    scroll-behavior: auto !important;
  }

  [data-hover-lift],
  [data-motion-press],
  [data-motion-visual],
  [data-motion-visual] img {
    animation: none !important;
    scale: none !important;
    transition: none !important;
    translate: none !important;
    will-change: auto;
  }

  #future-timeline::after {
    display: none;
  }
}
