Владислав Лысков, не стоит бросаться в крайность. Ты прекрасно понимаешь: наплевал бы я на семантику, код выглядел по-другому. Я не сторонник блочной вёрстки. Меня волнует следующее: почему это нарушение семантики, если оно не противоречит спецификации?
Не совсем так. Согласно действующей спецификации <header> и <footer> могут обозначать вводный раздел и нижний колонтитул разделов.
По классике их обычно используют для обёртки шапки и подвала всей веб-страницы (тогда они прямые потомки <body>). Но на этом их возможности не заканчиваются.
Ну здесь с футером я соглашусь. Забыл вынести его за рамки <main>. А вот с <header> всё ок. Первый - для шапки веб-страницы. Остальные - для вводной информации в каждом разделе.
Это я понимаю и могу поменять местами. Но на MDN написано о допустимости использования даже такой структуры. Да и в инструменте разработчика <tfoot> остаётся написанным над <tbody>. Странно, что программа корректировки синтаксиса (в браузере) пропускает такую штуку, а валидатор нет. Разве они не должны работать по общим правилам в живом стандарте?