.slide-indicator {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 6px;
}

.indicator-dot {
  position: relative;
  display: block;
  flex: 0 0 auto;
  width: 6px;
  height: 6px;
  overflow: hidden;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: rgb(246 246 248 / 40%);
  cursor: pointer;
  transition: width 300ms ease-in-out;
}

.indicator-dot.is-active { width: 28px; }
.indicator-dot::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 6px;
  height: 6px;
  border-radius: inherit;
  background: #f6f6f8;
  opacity: 0;
}
.indicator-dot.is-active::after {
  opacity: 1;
  animation: indicator-fill 5s linear forwards;
}
.slide-indicator.is-pending .indicator-dot.is-active::after { animation-play-state: paused; }
.indicator-dot:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }

@keyframes indicator-fill {
  from { width: 6px; }
  to { width: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  .indicator-dot { transition: none; }
  .indicator-dot.is-active::after { width: 28px; animation: none; }
}
