Yes that’s exactly what I was thinking.
That’s a great idea, I think in practice the logic around pushing a vehicle through a ramp is going to be interesting, but I can’t think of a reason it won’t work.
For stairs specifically, it should be restricted to vehices you can lift. As long as you can lift the vehicle by a step and then balance it there as you take a step, you can move it up and down stairs, but if it’s so heavy you can’t lift it the necessary 6" or so off the ground at all, it’s not happening.
On the other hand, you may be able to “transform” stairs into a ramp by placing planks or similar over them. A bit bulky but possibly worth pursuing.
This is the kind of thing I was thinking of originally, but as you can see, it has issues. I think treating ramps as special zones where occupants (monsters, vehicle tiles, items, players, everything) occupy both levels simultaneously is a great way to resolve the issues.
To restrict things a bit more, you could break it down into several elevations (the “<->” thing means, “player can traverse between these”):
floor on level x <-> low ramp on level x <-> high ramp on level x <-> floor on level x + 1
this could include any number of intermediate ramp levels, and the height difference between adjacent squares would indicate the slope. Some vehicles/monsters/players might tolerate different degrees of slope. There could also be some ramp levels where occupants count as being on the lower level, some where they count as being on both levels, and some where they count as being on the upper level.
IIRC df for example does something like this, and has two levels of ramp hard-coded. I don’t clearly recollect how it handles sharing occupants across levels.