У вас есть 2 состояния меню, плавный переход осуществляется за счет анимации во время смены состояний.
Вопрос в том как затригерить смену состояния в зависимости от позиции viewport'a на css...
Похоже на поведение
position: sticky; в "отлипшем" состоянии (в "залипшем" - 1 состояние, в "отлипшем" - 2).
Вот только его
полностью не завезли еще.
И с
отслеживанием состояния траблы.