/* Neva LED waveform (lane 4). The renderer reads its palette from these
   custom properties once per resize, so the shell can retheme without JS.
   R4 (owner): the person's voice is blue; Neva keeps the multicolour a/b/c. */
.neva-led-wave {
  --led-wave-a: #718bff;
  --led-wave-b: #f28cc9;
  --led-wave-c: #73d9ed;
  --led-wave-listen: #4f8dff;
  --led-wave-user-a: #2f6bff;
  --led-wave-user-b: #5cc8ff;
  --led-wave-think: #c3cad8;
  --led-wave-dim: rgba(236, 239, 244, .34);
  --led-wave-error: #e4aa57;
  --led-wave-off: rgba(236, 239, 244, .07);
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  pointer-events: none;
  contain: layout paint style;
  opacity: 1;
  transition: opacity .24s ease, filter .24s ease;
}
.neva-led-wave__canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}
/* Only still states get opacity/filter; animated states stay unfiltered so
   per-frame canvas updates never re-run a filter pass. */
.neva-led-wave[data-state="idle"] { opacity: .62; }
.neva-led-wave[data-state="paused"] { opacity: .5; filter: saturate(.45); }
.neva-led-wave[data-state="muted"] { opacity: .55; filter: saturate(0); }
@media (prefers-reduced-motion: reduce) {
  .neva-led-wave { transition: none; }
}

/* R3: the LED display embedded as the original notch's visualizer. It takes
   the Siri wave's own 108x80 box inside the 144px resident slot (the same box
   as the owner's static fallback), so the notch, its pages and controls are
   unchanged; presses fall through to the wave button. */
.neva-visualizer-led {
  position: absolute;
  left: 12.5%;
  top: 22.2%;
  width: 75%;
  height: 55.6%;
  pointer-events: none;
}
.neva-visualizer-led > .neva-led-wave { border-radius: 18px; }
