I had the same problem yesterday. I solved it with a little work. As you said, when you want to center the icon using text-align: center; it ends to the right. If you put it to the left, it aligns the left as intended. Thus, I made the speudo element exactly the same width as the icon, and centered the speudo element with the field: 0 auto; In this case, you can leave the text alignment to the left.
I know that this is not an ideal solution, but so far it works for me, and maybe for you.
Hammen84
source share