requestAnimationFrame(callback) lên lịch callback trước repaint tiếp theo (~60fps).
Tự pause khi tab ẩn (tiết kiệm CPU/battery), sync với display refresh rate, smooth hơn setTimeout. Trả về ID để cancelAnimationFrame. Callback nhận timestamp để tính delta time.