@keyframes gridDrift {
  from { background-position: 0 0, 0 0; }
  to { background-position: 64px 64px, 64px 64px; }
}
@keyframes scanSweep {
  0%, 100% { background-position: 0% 20%, 100% 60%; opacity: .54; }
  50% { background-position: 100% 56%, 0% 40%; opacity: .88; }
}
@keyframes logoPulse {
  0%, 100% { filter: drop-shadow(0 0 0 rgba(105,210,255,0)); transform: translateY(0); }
  50% { filter: drop-shadow(0 0 12px rgba(105,210,255,.45)); transform: translateY(-1px); }
}
@keyframes borderFlow {
  0%, 100% { opacity: .48; filter: hue-rotate(0deg); }
  50% { opacity: .9; filter: hue-rotate(22deg); }
}
@keyframes panelSweep {
  0%, 28% { transform: translateX(-55%) rotate(2deg); opacity: 0; }
  48% { opacity: .9; }
  72%, 100% { transform: translateX(55%) rotate(2deg); opacity: 0; }
}
@keyframes buttonSheen {
  to { transform: translateX(130%); }
}
@keyframes sendGlow {
  0%, 100% { filter: hue-rotate(0deg); opacity: .75; }
  50% { filter: hue-rotate(18deg); opacity: 1; }
}
@keyframes cardRise {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .001ms !important;
  }
}
