/* motion.css — keyframes, reduced-motion strategy, print strategy.
   (Print lives here because it must sit late in the cascade.)
   Reveal states are JS-applied only (assets/js/home/motion.js): nothing in
   this file hides content, so the page reads fully without JavaScript. */

/* The fixed header shell is a legibility surface: its glass scrim (nav.css
   + texture.css) must keep full strength while pixel headlines pass
   beneath. Round 1 shipped with a killed intro tween's inline stamp
   freezing the shell at 72% opacity, shifted up 14px — every section
   headline ghosted through the nav. The shell is never animated (the intro
   settles .header-inner instead), so lock it against any stray inline
   style, whatever module it comes from. */
.site-header {
  transform: none !important;
  opacity: 1 !important;
}

@keyframes lattice-drift {
  to {
    background-position: 64px 64px, 64px 64px, 16px 16px, 16px 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  .site-lattice,
  .proof-track {
    animation: none !important;
  }
}

@media print {
  .site-header,
  .site-substrate,
  .site-lattice,
  .principle-controls {
    display: none !important;
  }

  body,
  .systems,
  .contact,
  .site-footer {
    background: #fff !important;
    color: #111 !important;
  }

  main,
  .site-footer {
    color: #111;
  }

  .hero,
  .section-space {
    padding-block: 2rem;
  }
}
