DEV NOTES
Ball is integrated in sub-steps of ≤ radius per frame, so it can never tunnel through a 20 px brick. Exactly one brick is resolved per frame (closest along the path), velocity is re-normalized after every bounce to hold constant magnitude, and delta-time keeps speed identical on 60 / 120 Hz displays.