It seems evident to me that semantics are more challenging to define than visuals; it's not the CSS that's the problem.

It's more challenging to encourage correct implementation of semantics than implemention of visuals; which is a great reason for using the element that was designed for this use case.