@keyframes pulse-soft {
  0%, 100% {
    opacity: 0.82;
    transform: scale(1);
  }
  50% {
    opacity: 1;
    transform: scale(1.12);
  }
}

@keyframes flow-line {
  0% {
    stroke-dashoffset: 420;
  }
  100% {
    stroke-dashoffset: 0;
  }
}

@keyframes bar-shift {
  0%, 100% {
    transform: scaleY(0.82);
  }
  50% {
    transform: scaleY(1);
  }
}

.status-dot,
.live-badge span,
.sync-dot,
.map-pin,
.timeline-card li span {
  animation: pulse-soft 2.8s ease-in-out infinite;
}

.chart-line {
  stroke-dasharray: 420;
  animation: flow-line 5.8s linear infinite;
}

.mini-bars span {
  transform-origin: bottom;
  animation: bar-shift 3.2s ease-in-out infinite;
}

.mini-bars span:nth-child(2) { animation-delay: 0.25s; }
.mini-bars span:nth-child(3) { animation-delay: 0.5s; }
.mini-bars span:nth-child(4) { animation-delay: 0.75s; }
.mini-bars span:nth-child(5) { animation-delay: 1s; }
.mini-bars span:nth-child(6) { animation-delay: 1.25s; }

.progress-list i,
.alert-stack span {
  transform-origin: left;
  animation: bar-shift 3.8s ease-in-out infinite;
}

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