.badge {
  border-radius: 999px;
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  padding: 0.2em 0.65em;
  text-transform: lowercase;
}

.badge--active,
.badge--success,
.badge--idle,
.badge--accepted,
.badge--test {
  background-color: oklch(var(--lch-green) / 0.15);
  color: oklch(var(--lch-green));
}

.badge--pending,
.badge--queued,
.badge--branch_mismatch {
  background-color: oklch(var(--lch-orange) / 0.15);
  color: oklch(var(--lch-orange));
}

.badge--provisioning,
.badge--bootstrapping,
.badge--deploying,
.badge--running {
  background-color: oklch(var(--lch-blue-light));
  color: oklch(var(--lch-blue));
}

.badge--pulse {
  animation: badge-pulse 1.5s ease-in-out infinite;
}

@keyframes badge-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.55; }
}

.badge--failed,
.badge--error,
.badge--unhealthy,
.badge--conflict {
  background-color: oklch(var(--lch-red) / 0.15);
  color: oklch(var(--lch-red));
}

.badge--healthy {
  background-color: oklch(var(--lch-green) / 0.15);
  color: oklch(var(--lch-green));
}

.badge--maintenance {
  background-color: oklch(var(--lch-orange) / 0.15);
  color: oklch(var(--lch-orange));
}

.badge--unknown,
.badge--disabled,
.badge--ignored,
.badge--sleeping {
  background-color: oklch(var(--lch-gray-dark) / 0.35);
  color: var(--color-text-muted);
}
