I don't see any obvious fault in your program. But all those long delays may give the impression that it is not working because there will be a total of 11 seconds of inactivity in every iteration of loop(). If you press a button before that period has expired it won't be detected. And there are probably only a few microseconds in which it will be detected. If this seems to be the problem try holding a button down for longer than 11 seconds.
Have a look at how millis() is used to manage timing without blocking in several things at a time
...R