CSS got it wrong and we’re now suffering the consequences. The HTML feature that was ignored in CSS 1 was the thing they should’ve focused on: tables, which were directives that generated layout. It set us on a path of trying to fake them by piggybacking on supposedly semantic elements, like lipstick on a div.

Stephen Witten