WiFi does not equal internet. WiFi is a local network that need not be connected to internet at all. So, you could absolutely use a wifi, z-wave or ZigBee solution. Provided the switch and button you use support local control and do not rely on a cloud-based server, internet doesn’t come into it.
Second the suggestion of a Shelly 2. This will give you separate power controls for the fan and smart light. Set it up so the smart light relay is always on, and set up the physical switch as a “detached switch” that doesn’t operate the delay but just communicates an on/off state to your automation hub. You could, but don’t need to, get a second physical switch for your fan. Home assistant to create automations with whatever humidity sensor you want to use. This is the setup I did in my bathroom, and I appreciated it when the smart bulb died because then I just threw in a normal bulb and re-enabled the normal switch function, but still had on/off smart control of the light.