@keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
@keyframes skeletonShimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }
@keyframes packetTravel { from { left: 0; } to { left: calc(100% - 12px); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes popIn { 0% { transform: scale(0.9); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }

.page-enter { animation: fadeIn var(--transition-base); }
.skeleton { animation: skeletonShimmer 1.4s ease-in-out infinite; }
.flight-track.is-active .packet { animation: packetTravel 900ms linear; }
.spin { animation: spin 900ms linear infinite; }
.pop-in { animation: popIn var(--transition-base); }

@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;
  }
}
