Millis() / Unsigned long subtraction not working

I entirely agree, hence my suggestion to use a state machine based on switch/case based on sensibly named states

In my view that is simple code. Simple to read, simple to understand, simple to debug, simple to maintain, simple to extend.

A single if/else is certainly simple but once you introduce the need for if/else if/else and particularly when if/else etc is nested inside another one then code readability falls off drastically