function pickTypoChar(ch: string): string {
  const lower = ch.toLowerCase();
  const neighbours = QWERTY_NEIGHBOURS[lower];
  if (!neighbours || neighbours.length === 0) return ch;
  const wrong = neighbours[Math.floor(Math.random() * neighbours.length)];
  return ch === ch.toUpperCase() ? wrong.toUpperCase() : wrong;
}