I would rewrite the animation functions so that they only do "one step" of whatever animation is on-going and manage them as small independent state machine and handle the button in the loop
(you have a lot of EEPROM.write(), you should probably use update() instead of write() )
using the OneButton library would probably make your button handling easier to Read / implement
What is your Arduino ? why do you possibly include <avr/power.h>?