Почему так работает before в nth-child(1)?
Потому что первым элементом в потоке является H1, и по факту ваш первый bro, является вторым элементом. Оберните, например, ваши p.bro в div, и всё будет работать корректно.
используйте nth-of-type вместо nth-child