box-sizing: border-box на :root и расчёт ширины
Почему padding не раздувает 100% width.
Правило `*, *::before, *::after { box-sizing: border-box }` (или на `:root` с наследованием) включает padding и border в заявленную `width` — сетки на процентах не ломаются.
Исключения: сторонние виджеты, ожидающие `content-box` — изолируйте их обёрткой.
- box-sizing — MDN — content-box и border-box.
- Box model — web.dev Learn CSS — Размеры блока.
calc
С border-box реже нужен `width: calc(100% - 32px)` для учёта padding.