.dots-loader {
  --dot: 25px;
  --color: #0D1B3D;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  vertical-align: middle;
}
.dots-loader > span {
  width: var(--dot);
  height: var(--dot);
  flex: 0 0 var(--dot);
  border-radius: 50%;
  background: var(--color);
  opacity: 0;
  animation: dots-loader 3s ease-in-out infinite both;
}
.dots-loader > span:nth-child(2) { animation-delay: 0.15s; }
.dots-loader > span:nth-child(3) { animation-delay: 0.30s; }
.dots-loader > span:nth-child(4) { animation-delay: 0.45s; }
.dots-loader > span:nth-child(5) { animation-delay: 0.60s; }
@keyframes dots-loader {
  0% { opacity: 0; transform: scale(1); }
  45%, 65% { opacity: 1; transform: scale(0.7); }
  100% { opacity: 0; transform: scale(1); }
}
/* Same motion under reduced-motion, as explicitly requested. */
