Button doesn't control 2812 strip correctly

FYI. Here is my standard way of processing a button at the beginning of loop(). I use this pattern frequently:

void loop() 
{
  static int lastButtonState = digitalRead(Button);
  int currButtonState = digitalRead(Button);

  if (currButtonState != lastButtonState)
  {
    delay(50); // debounce
    lastButtonState = currButtonState;
    if (currButtonState == LOW)
    {
      // do what you need to do
    }
  }
  
  // ........rest of loop processing
}