А так же при очень сужении панели они бы выстраивались в один ряд.
Примените к селектору меню - "menu" - стили:
flex-direction: row;
flex-wrap: nowrap;
/* или */
flex-flow: row nowrap;
Таким образом, вы запретите перенос элементов на новую строку. И при "ужимании" блока, элементы будут пытаться ужаться в одной строке. Разумеется, до определённой степени, после которой они начнут просто выходить за границы блока.
По поводу высоты — для меня сложный вопрос. На данном этапе с помощью CSS такое решить нельзя. Только используя JS. Хотя, честно говоря, хотелось бы, чтобы в следующих версиях CSS был реализован механизм пропорций.