@keyframes ringRotateSlow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes ringRotateReverse {
  from { transform: rotate(360deg); }
  to { transform: rotate(0deg); }
}

@keyframes pulseRing {
  0%, 100% { opacity: .48; transform: scale(1); }
  50% { opacity: .74; transform: scale(1.011); }
}

@keyframes activeSectorBreath {
  0%, 100% { opacity: .46; }
  50% { opacity: .78; }
}

@keyframes glassReflection {
  0%, 100% {
    opacity: .04;
    transform: translateX(-22%) rotate(0deg);
  }

  45% {
    opacity: .16;
  }

  72% {
    opacity: .055;
    transform: translateX(22%) rotate(12deg);
  }
}

@keyframes emblemFloat {
  0%, 100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-3px);
  }
}

@keyframes signalScan {
  0%, 18% { left: -35%; opacity: 0; }
  40% { opacity: .82; }
  70%, 100% { left: 105%; opacity: 0; }
}

/* Фонові анімації */
@keyframes cameraBreath {
  0%, 100% {
    transform: scale(1.035);
    filter: saturate(1.16) contrast(1.08) brightness(1.08);
  }

  50% {
    transform: scale(1.048);
    filter: saturate(1.19) contrast(1.09) brightness(1.10);
  }
}

@keyframes noiseDrift {
  0% { transform: translate(0, 0); }
  100% { transform: translate(-80px, 40px); }
}

@keyframes fogLowDrift {
  0%, 100% {
    transform: translate3d(-4%, 1%, 0) scaleX(1.05);
    opacity: .13;
  }

  50% {
    transform: translate3d(5%, -2%, 0) scaleX(1.18);
    opacity: .20;
  }
}

@keyframes fogHorizonDrift {
  0%, 100% {
    transform: translate3d(3%, 0, 0) scaleX(1.04);
    opacity: .08;
  }

  50% {
    transform: translate3d(-4%, -1%, 0) scaleX(1.16);
    opacity: .14;
  }
}

@keyframes fieldLightSweep {
  0%, 62%, 100% {
    opacity: 0;
    transform: translateX(-65vw) skewX(-8deg);
  }

  70% {
    opacity: .30;
  }

  86% {
    opacity: .08;
    transform: translateX(125vw) skewX(-8deg);
  }
}

.ember {
  position: absolute;
  width: 2px;
  height: 2px;
  border-radius: 999px;
  background: rgba(255, 46, 77, .56);
  box-shadow: 0 0 8px rgba(255, 46, 77, .56);
  animation: emberFloat linear infinite;
}

@keyframes emberFloat {
  from { transform: translateY(25vh) translateX(0); opacity: 0; }
  15% { opacity: .46; }
  85% { opacity: .32; }
  to { transform: translateY(-105vh) translateX(24px); opacity: 0; }
}

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