.flow-viz {
  --flow-ink: var(--text-color-primary);
  --flow-muted: var(--text-color-tertiary);
  --flow-panel: var(--bg-color-primary);
  --flow-accent: #2563eb;
  margin: 2rem 0 2.25rem;
  overflow: hidden;
  border: 1px solid var(--border-color);
  border-radius: 12px;
  background: var(--flow-panel);
  color: var(--flow-ink);
}

.flow-viz__stage { position: relative; width: 100%; aspect-ratio: 16 / 8.6; }
.flow-viz__stage canvas { display: block; width: 100%; height: 100%; }

.flow-viz__controls {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr);
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 1.1rem 0.9rem;
}

.flow-viz__play {
  display: grid;
  width: 2.25rem;
  height: 2.25rem;
  margin: 0;
  padding: 0;
  place-items: center;
  border: 1px solid var(--border-color);
  border-radius: 50%;
  background: var(--bg-color-primary);
  color: var(--flow-accent);
  font: 700 0.76rem/1 sans-serif;
  cursor: pointer;
}

.flow-viz__play:hover { background: var(--bg-color-secondary); }
.flow-viz__controls label { display: block; min-width: 0; }
.flow-viz__controls input {
  width: 100%;
  height: 24px;
  margin: 0;
  appearance: none;
  background: transparent;
  cursor: ew-resize;
}

.flow-viz__controls input::-webkit-slider-runnable-track {
  height: 6px;
  border-radius: 999px;
  background: var(--border-color);
}

.flow-viz__controls input::-webkit-slider-thumb {
  width: 18px;
  height: 18px;
  margin-top: -6px;
  appearance: none;
  border: 2px solid var(--bg-color-primary);
  border-radius: 50%;
  background: var(--flow-accent);
  box-shadow: 0 0 0 1px var(--flow-accent);
}

.flow-viz__controls input::-moz-range-track {
  height: 6px;
  border: 0;
  border-radius: 999px;
  background: var(--border-color);
}

.flow-viz__controls input::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border: 2px solid var(--bg-color-primary);
  border-radius: 50%;
  background: var(--flow-accent);
  box-shadow: 0 0 0 1px var(--flow-accent);
}
.flow-viz .sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 600px) {
  .flow-viz { border-radius: 10px; margin-inline: -0.25rem; }
  .flow-viz__stage { aspect-ratio: 4 / 3; }
  .flow-viz__controls { padding-inline: 0.85rem; }
}

@media (prefers-color-scheme: dark) {
  .flow-viz { --flow-accent: #60a5fa; }
}
