2. Способов выравнивания по вертикальному центру туча, погуглите.
Например, флексы или line-height равный высоте кнопки, раз уж она у вас фиксированной высоты.
Георгий Городенко, Я вас, кстати, понимаю. Когда первый раз делала адаптив, то тоже наделала плавных анимаций и потом сидела и двигала туда сюда окно. И довольно долго этим занималась.
Наверное, это как со шрифтом comic sans или звездочками/снегом по экрану (кого с чего распирает).
Просто надо тихонько в уголке это пережить, но не нести в продакшн.
На js тогда уж не элементы добавлять, а ширину считать.
Но лично я бы для этой задачи пользовалась media условиями и меняла бы ширину 33.3333%, потом 50%, потом 100%. При justify-content: flex-start (значение по умолчанию)
Хак с дополнительными блоками нужен для space-between и space-around. У вас space-around хоть и написан, только не понятно зачем он написан при flex-grow:1.
https://blog.union.io/code/2017/08/10/img-svg-fill/