Во всех браузерах кроме этой песочницы(почему-то, может потому что окно маленькое) одна и та же проблема - при очередном наведении(не каждый раз) остается промежуток в 1px между before и after. Заметил что это меняется при изменении слов в меню, т.е. на этот баг(?) влияет ширина меню или положение слова. Собственно вопрос - это баг браузеров или ошибка в коде? Замечал похожий баг: когда ставлю нижний border через псевдоэлемент(как в примере) в 1px, на некоторых высотах он отображается как 1px, а на некоторых(например если сделать отступ на 1px ниже) 2px.
https://jsfiddle.net/a6r3dgp9/13/