Zero-Shot Sim-to-Real Visual Quadrotor Control with Hard Constraints