best way to approach sequential tail lights

Hi, I am new to Arduino, although I have done a little programming in machine language. I have an Uno, and would like to build a sequential tail light controller like the old Cougars or new mustangs have. I want to use 3 buttons to call three routines. 1 for each turn signal, and one for brake lights. If I use call routines, do I need to stay away from delays. The turn signals input needs to over ride the brake light on that side. Can someone give me guidance on the best way to approach this. I have modified the code below to work for brakes, but ran into a snag trying to implement a button read as it left me with two if statements. I don't know if this code is the best way to go.
Thanks, adown

PS: I know they are set up to keep sequencing, and will remove that if I get the buttons to work

const int brakesPin = 2; //pin number of brake wire input
int brakesState = 0;
long sequenceDelay = 125; //time it takes between led's
long sequenceDelay2 = 250;
long flashDelay = 250;
long flashDelay2 = 250; //time LED is on
long flashDelay3 = 250;
 
boolean LED10state = false;     // the LED will turn ON in the first iteration of loop()
boolean LED11state = false;     // need to seed the light to be OFF
boolean LED12state = false;

boolean LED5state = false;     // the LED will turn ON in the first iteration of loop()
boolean LED6state = false;     // need to seed the light to be OFF
boolean LED7state = false;

long waitUntil10 = 0;
long waitUntil11 = sequenceDelay;         // the seed will determine time between LEDs
long waitUntil12 = sequenceDelay2;
void setup() {
   pinMode(10, OUTPUT);
   pinMode(11, OUTPUT);
   pinMode(12, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(6, OUTPUT);
   pinMode(7, OUTPUT);
   pinMode(brakesPin, INPUT);
}
void loop() {
   digitalWrite(10, LED10state);     // each iteration of loop() will set the IO pins,
   digitalWrite(11, LED11state);
   digitalWrite(12, LED12state);
   digitalWrite(5, LED5state);     // each iteration of loop() will set the IO pins,
   digitalWrite(6, LED6state);
   digitalWrite(7, LED7state);
   brakesState = digitalRead(brakesPin);
   
   if (brakesState == HIGH);
   // checking to see if enough time has elapsed
   if (millis() >= waitUntil10) {
      LED10state = !(LED10state);
      waitUntil10 += flashDelay;
      LED7state = !(LED7state);
      waitUntil10 += flashDelay;
      // this if-statement will not execute for another 1000 milliseconds
   }
   // checking to see if enough time has elapsed
   if (millis() >= waitUntil11) {
      LED11state = !(LED11state);
      waitUntil11 += flashDelay2;
      LED6state = !(LED6state);
      waitUntil11 += flashDelay2;
      // this if-statement will not execute for another 1000 milliseconds
   }
  // keep in mind, waitUntil12 was already seeded with a value of 500
   if (millis() >= waitUntil12) {
      LED12state = !(LED12state);
      waitUntil12 += flashDelay3;
      LED5state = !(LED5state);
      waitUntil12 += flashDelay3;
   }
  
}