/* Shared presentation only. State announcements belong outside the decorative canvas. */
.visualizer {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  aspect-ratio: 1;
  isolation: isolate;
}
.visualizer canvas {
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.visualizer-fallback {
  position: absolute;
  width: 88%;
  height: 88%;
  object-fit: contain;
  visibility: hidden;
}
.visualizer.is-static canvas { visibility: hidden; }
.visualizer.is-static .visualizer-fallback { visibility: visible; }
.signal-source {
  font: 10px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #a8bbce;
}
@media (prefers-reduced-motion: reduce) {
  .visualizer, .visualizer * { animation: none !important; transition: none !important; }
}
