проблема была в том, что фон для App.js перекрывает :before, я сделал для root фон, и все заработало\
понял, просто со спаном это железобетонный вариант и его не перекроет никакой фон, так как там кнопка создаёт свой контекст наложения и дочерние элементы уже позиционируются по оси Z локально внутри неё (они никогда не будут ниже чем button, но могут внутри неё быть выше или ниже по оси Z), поэтому написал его