Вроде бы все двигаются по прямой, перекрывают друг друга во время движения.
Наверное просто линейный переход между состояниями: "никто не выбран", "выбран А", выбран Б, ... выбран Ы.
Может, просто заморочились вручную расставить все эти N+1 состояние, а переходы тупо стилями.
может, сакральный замысел был бросать ошибки, и такая запись показалась разработчику идеально лаконичной?
Следующий вопрос «зачем бросать ошибки?» — за гранью понимания и за рамками этого вопроса
Гуглите, какие есть фремворки, гуглите их сравнение между собой, смотрите минимальные примеры кода на каждом.
Сами решайте, что подойдёт лучше под вашу задачу.
Веб-разработка понятие растяжимое. Может, тяжёлый проект и понадобится поднять Docker с кучей сервисов: MongoDB, ElasticSearch, несколько рабочих процессов воркеров. Билдить постоянно тяжеленный фронтенд на React без горячей замены модулей, с десятками тысяч файлов. И одновременно висеть на видеовстрече с коллегами.
А может, сверстать одну статичную страничку.
У Air нет пропеллеров, и когда он греется, то замедляет процессор.
Ну и объём оперативки критически важен.
Наверное просто линейный переход между состояниями: "никто не выбран", "выбран А", выбран Б, ... выбран Ы.
Может, просто заморочились вручную расставить все эти N+1 состояние, а переходы тупо стилями.