Magnetic gear solenoid clock.

You've got to do it something like this to light the leds ( say leds[0] through to led[5] ) in sequence where the trailing and leading leds are less bright than the current led.
You have a clock which runs from 0 to 5, and depending on the number on the clock, you light 3 leds. The outer 2 at 50% and the middle at 100%.
If it is all too fast, experiment first with interleaving delay() between the analogWrite() statements, then work out a better way using millis().

byte clock = 0 ;
byte led[6] = { 2,3,4,5,6,7 } ;  // led[0] on pin 2 , led[1] on pin through to led[5] on pin 7
...
...

loop() {

    analogWrite(  led[ ( clock + 0 ) % 6 ] , 127  )  ; // trailing led half brightness.
    analogWrite(  led[ ( clock + 1 ) % 6 ] , 256  )  ; // central led full brightness 
    analogWrite(  led[ ( clock + 2 ) % 6 ] , 127  )  ; // leading led half brightness 
    analogWrite(  led[ ( clock + 3 ) % 6 ] , 0      )  ; // off 
    analogWrite(  led[ ( clock + 4 ) % 6 ] , 0      )  ; // off 
    analogWrite(  led[ ( clock + 5 ) % 6 ] , 0      )  ; // off 

    clock ++ ;
    if ( clock > 5 ) clock = 0 ;
    
}

I'm not sure what you intend with the solenoids. That is not clearly explained.