/* Extra extent is capped at 24% of the avatar on each side (about 12px at 52px). */
[data-voiceprint] { position: relative; overflow: visible; }
[data-voiceprint] > canvas.vo-print { position: absolute; inset: -24%; width: 148%; height: 148%; max-width: none; pointer-events: none; z-index: 2; border: 0; border-radius: 0; }
.vm .vm-avatar[data-voiceprint]::before { opacity: 0 !important; animation: none !important; }
.vm.talking .vm-avatar[data-voiceprint] { animation: none; transform: none; }
#bpModal .bp-mini-ava[data-voiceprint] { border: 0; animation: none !important; }
#bpModal .bp-stage-card[data-preview-kind="vo"] .bp-stage-avatar[data-voiceprint] { width: 64px; height: 64px; flex: 0 0 64px; font-size: 24px; border: 0; animation: none !important; }
#bpModal .bp-voice-controls { display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; color: var(--muted); font-size: 11px; }
/* Legacy voiceprints also remain identifiable while silent; their original
   animations still run only while talking. Keyboard focus keeps its own ring. */
.vm.vo-wave { --vo-rest: #39b9dc; } .vm.vo-pulse { --vo-rest: #d5a03e; }
.vm.vo-fire { --vo-rest: #dc882e; } .vm.vo-eq { --vo-rest: #53b787; }
.vm.vo-spin { --vo-rest: #cbb24b; } .vm.vo-heart { --vo-rest: #d76b91; }
.vm.vo-rainbow { --vo-rest: #c783c1; } .vm.vo-liquid { --vo-rest: #9d8cda; }
.vm:not(.talking):is(.vo-wave, .vo-pulse, .vo-fire, .vo-eq, .vo-spin, .vo-heart, .vo-rainbow, .vo-liquid) .vm-avatar:not(:focus-visible) {
  outline: 1.5px solid var(--vo-rest); outline-offset: 3px;
}
