One flat image, floated above its own card in CSS 3D. On desktop it follows the pointer; on a phone it follows the gyroscope, so the render leans as you tilt the device. No WebGL, no model — just a transform and a moving highlight.
iOS will not give a page the gyroscope without an explicit tap —
DeviceOrientationEvent.requestPermission() must be called from a real user
gesture, or it silently never fires. That is why the button appears only on devices that
need it. Android and desktop need no prompt.