        function spawnWord() {
          const text = WORDS[randint(0, WORDS.length - 1)];
          const margin = 40;
          const W = canvas.clientWidth;
          let x = rand(margin, Math.max(margin + 60, W - margin - 60));
          const y = -rand(20, 120);
          let width = 0;
          const speed = baseFallSpeed() * rand(0.9, 1.2);
          const id = cryptoRandomId();
          state.words.push({ id, text, x, y, speed, typed: 0, width });
        }

        function cryptoRandomId() { ret