Issue with _delay_ms and PORT
why don't you use while loop ?
as I know the compiler work like that it run the while loop and then it set ports to default value and then run while loops again
you code will work like thus : it will first set PORTD = 0b11111110; then after your delay  PORTD = 0b11111101; and after that nothing will change.
I suggest you write same code inside while loop