The player should see the pull: a grey spring under the ball moves down as charge grows, and the waiting ball moves
down with it. A line of text says how to launch.
```js
// The launcher's spring shortens as it is pulled back.
ctx.fillStyle = '#78716c'
ctx.fillRect(LANE_X - 8, 580 + charge * 12, 16, 20)
ctx.arc(ball.x, ball.y + (state === 'ready' ? charge * 12 : 0), R, 0, Math.PI * 2)
if (state === 'ready') ctx.fillText('Hold Space, let go to launch', 200, 580)
```
What it means
The spring is a 16×20 rectangle under the ball, charge × 12 pixels lower when pulled.
The ball is drawn lower by the same amount, but only while it waits in the lane; its real y does not change.
The hint text is shown only while a ball is ready.
Your turn
In draw, above the ball's ctx.fillStyle = '#e7e5e4', write the comment and the two spring lines.