1, 'rgba(10, 22, 40, 0.9)');
            roundRect(ctx, x, y - boxH/2, w.width, boxH, r);
            ctx.fillStyle = grd; ctx.fill();
            ctx.strokeStyle = 'rgba(34,211,238,0.5)'; ctx.lineWidth = 1; ctx.stroke();
            ctx.beginPath(); ctx.arc(x + w.width - 18, y - 6, 4, 0, Math.PI*2); ctx.fillStyle = 'rgba(255,255,255,0.08)'; ctx.fill();
            ctx.restore();

            const typed = w.typed || 0;
            const full = text;
            const curIsTarget = w.id === state.targetId &