y - r.len);
            ctx.lineTo(r.x, r.y);
          }
          ctx.stroke();
        }

        function drawWords() {
          ctx.textBaseline = 'middle';
          for (const w of state.words) {
            const text = w.text;
            // Make words larger overall and compute bubble size dynamically
            const fsize = Math.max(26, Math.min(42, 20 + text.length * 0.6));
            ctx.font = `700 ${fsize}px ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial`;
   