/* Loader oczekiwania na dane (`dotsLoader()` w loader.js) — kolor idzie za motywem gminy.
   Tempo i proporcje odtwarzają dawny loading.gif: cykl 3 s, kolejne kropki co 0,5 s, powiększenie o ~22%. */
.dots-loader {
  align-items: center;
  display: flex;
  gap: 4px;
  height: 60px;
  justify-content: center;
}

.dots-loader span {
  animation: dots-loader-pulse 3s ease-in-out infinite;
  background-color: var(--theme-icon-color);
  border-radius: 50%;
  height: 16px;
  transform: scale(0.82);
  width: 16px;
}

.dots-loader span:nth-child(2) {
  animation-delay: 500ms;
}

.dots-loader span:nth-child(3) {
  animation-delay: 1s;
}

@keyframes dots-loader-pulse {
  0%, 63%, 100% {
    transform: scale(0.82);
  }
  30% {
    transform: scale(1);
  }
}

@keyframes dots-loader-fade {
  0%, 63%, 100% {
    opacity: 0.5;
  }
  30% {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .dots-loader span {
    animation-name: dots-loader-fade;
    transform: none;
  }
}
