Confirmed via grep: KeyboardCanvas.css:543 has animation: record-pulse 0.9s ease-in-out infinite. Likely the class controlling the pulse isn't being removed when the key fills. The fix is to gate the animation class on !isRecording && !hasKey ? pulse : '' or similar.
