Generate code for use in the Arduino environment for a ESP32 web server application to control a single NeoPixel which is connected to the ESP32 microcontroller on GPIO pin 5.

The ESP32 webserver should provide a single, lighter themed, web page to control the NeoPixel.

The web page should be as follows:

Page title "NeoPixel Controller Page"

It should have a header of the same title with the text centered.

It should have a footer with the following centered text "Craig A. Lindley"

Page content consists of three high level named groups labeled "Power", "Colors" and "Dynamics".

The "Power" group consist of 8 named buttons which control the NeoPixel. 

The 1st button should be labeled "On" and when selected turns the NeoPixel on with the color specified in the "Colors" group. 
The 2nd button should be labeled "Off" and when selected turns the NeoPixel off.

The remaining buttons in the "Power" group when selected cause the NeoPixel to come on with the selected color, stay on for the specified time and then go off for the specified time. This process then repeats until the NeoPixel is turned off.

The 3rd button should be labeled "1 min" and have the specified time of 1 minute.
The 4th button should be labeled "2 mins" and have the specified time of 2 minutes.
The 5th button should be labeled "5 mins" and have the specified time of 5 minutes.
The 6th button should be labeled "10 mins" and have the specified time of 10 minutes.
The 7th button should be labeled "15 mins" and have the specified time of 15 minutes.
The 8th button should be labeled "30 mins" and have the specified time of 30 minutes.

The "Colors" group consist of 7 named buttons which control the colors of the NeoPixel. 
The buttons in this group when selected cause the NeoPixel to display the specified button's color.

The 1st button should be labeled "Red".
The 2nd button should be labeled "Green".
The 3rd button should be labeled "Blue".
The 4th button should be labeled "White".
The 5th button should be labeled "Orange".
The 6th button should be labeled "Gold".
The 7th button should be labeled "Rainbow".

The Rainbow button is unique in this group as it causes the NeoPixel to repeatedly cycle through the colors of the rainbow.

The "Dynamics" group consists of 4 named buttons which control the speed at which the dynamics of the NeoPixel change. 

If "None" is selected only the Rainbow color selection has the dynamics mentioned above and is affected by the selected speed.   

If slow, medium or fast is selected all of the selected colors have dynamics. The 1st through 6th color buttons have the brightness of the selected color smoothly change from off to full on and then back to off. For the 7th button the speed is how fast the NeoPixel cycles through the colors of the rainbow.

The 1st button should be labeled "None".
The 2nd button should be labeled "Slow".
The 3rd button should be labeled "Medium".
The 4th button should be labeled "Fast".
