.caprings {
  display: grid;
  gap: var(--gap);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--capring-col-min)), 1fr));
}

.capring {
  display: grid;
  gap: var(--space-3);
  justify-items: center;
  min-width: 0;
  margin: 0;
}

.capring__dial {
  position: relative;
  width: var(--capring-size);
  aspect-ratio: 1;
}

.capring__svg {
  width: 100%;
  height: 100%;
  rotate: -90deg;
}

.capring__track,
.capring__arc {
  fill: none;
  stroke-width: 4;
}

.capring__track {
  stroke: var(--chart-muted);
}

.capring__track--inner,
.capring__arc--inuse {
  stroke-width: 2;
}

.capring__arc {
  transition: stroke-dasharray var(--duration-base) var(--ease-out);
}

.capring__arc--held {
  stroke: var(--text-faint);
}

.capring__arc--given {
  stroke: var(--chart-accent);
}

.capring__arc--adding {
  stroke: var(--status-warn);
}

.capring--over .capring__arc--adding {
  stroke: var(--status-error);
}

.capring__arc--inuse {
  stroke: var(--status-ok);
}

@media (prefers-reduced-motion: reduce) {
  .capring__arc {
    transition: none;
  }
}

.capring__centre {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  text-align: center;
}

.capring__free {
  font-size: var(--text-2xl);
  font-weight: var(--weight-heading);
  font-variant-numeric: tabular-nums;
}

.capring__unit {
  color: var(--text-muted);
  font-size: var(--text-sm);
}

.capring--over .capring__free {
  color: var(--status-error);
}

.capring__caption {
  display: grid;
  gap: var(--space-2);
  justify-self: stretch;
  width: min(100%, var(--capring-caption-w));
  min-width: 0;
  margin-inline: auto;
}

.capring__label {
  font-weight: var(--weight-medium);
  text-align: center;
}

.capring__legend {
  display: grid;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  color: var(--text-muted);
  font-size: var(--text-sm);
  list-style: none;
}

.capring__legend li {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: baseline;
  gap: var(--space-2);
}

.capring__legend strong {
  color: var(--text);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.capring__swatch {
  flex: none;
  width: var(--swatch-dot);
  height: var(--swatch-dot);
  border-radius: var(--radius-pill);
}

.capring__swatch--held {
  background: var(--text-faint);
}

.capring__swatch--given {
  background: var(--chart-accent);
}

.capring__swatch--adding {
  background: var(--status-warn);
}

.capring__swatch--free {
  background: var(--chart-muted);
}

.capring__swatch--inuse {
  background: var(--status-ok);
}

.capring__note {
  color: var(--text-muted);
  font-size: var(--text-sm);
}

.amount__row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.amount__range {
  flex: 1 1 auto;
  min-width: 0;
  accent-color: var(--accent);
  cursor: pointer;
}

.amount__box {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex: 0 0 var(--amount-box-w);
}

.amount__input {
  min-width: 0;
  font-variant-numeric: tabular-nums;
}

.amount__unit {
  color: var(--text-muted);
  font-size: var(--text-sm);
}

.choice {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border);
  border-radius: var(--field-radius);
  cursor: pointer;
}

.choice:has(:checked) {
  border-color: var(--accent);
}

.choice:has(:focus-visible) {
  box-shadow: var(--focus-ring);
}

.choice__body {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2) var(--space-4);
  min-width: 0;
}

.choice__title {
  font-weight: var(--weight-medium);
  overflow-wrap: anywhere;
}

.choice__rings {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}
