[data-c42-progress] {
  --c42-progress-percent: 0%;
  display: flex;
  gap: 0.5rem;
  align-items: center;
  color: var(--c42-color-fg, #111827);
}

[data-c42-progress-track] {
  position: relative;
  flex: 1 1 auto;
  block-size: 0.5rem;
  overflow: hidden;
  background: var(--c42-color-border, #e5e7eb);
  border-radius: 9999px;
}

[data-c42-progress-indicator] {
  block-size: 100%;
  inline-size: var(--c42-progress-percent, 0%);
  background: var(--c42-color-accent, #4f46e5);
  border-radius: inherit;
  transition: inline-size var(--c42-transition, 200ms ease);
}

[data-c42-progress][data-state='complete'] [data-c42-progress-indicator] {
  background: var(--c42-color-success, #16a34a);
}

[data-c42-progress-label] {
  flex: none;
  min-inline-size: 2.75rem;
  font-size: 0.875rem;
  font-variant-numeric: tabular-nums;
  text-align: end;
  color: var(--c42-color-muted, #6b7280);
}

/* Indeterminate: detach the indicator from its width and slide it. */
[data-c42-progress][data-state='indeterminate'] [data-c42-progress-indicator] {
  inline-size: 40%;
  transition: none;
  animation: c42-progress-indeterminate 1.2s ease-in-out infinite;
}

@keyframes c42-progress-indeterminate {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(350%);
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-c42-progress][data-state='indeterminate'] [data-c42-progress-indicator] {
    animation-duration: 2.4s;
  }
}
