WebGL on low-end devices: graceful degradation playbook

Detecting Swiftshader, throttled GPUs, and battery-saver mode — and falling back to a static gradient that still feels intentional.