Flexbox — это способ управлять расположением элементов внутри блока. Одним измерением: либо строка, либо столбец. Представь поднос с тарелками. Ты решаешь: расставить их вплотную или с промежутками, прижать к одному краю или по центру, выровнять по высоте. Flexbox — это именно такой инструмент. Берёшь родительский контейнер, включаешь display: flex — и его дочерние элементы начинают подчиняться твоим командам. Всё делится на два уровня: свойства контейнера (родителя) и свойства элементов (детей). Прежде чем смотреть на свойства — три понятия, без которых ничего не понятно: Флекс-контейнер — родительский блок с display: flex. Флекс-элемент — любой прямой потомок этого контейнера. Главная ось — основное направление, вдоль которого расставляются элементы. По умолчанию — горизонталь (слева направо). Поперечная ось — перпендикулярна главной. Если главная горизонтальная — поперечная вертикальная, и наоборот. Это важно, потому что justify-content всегда работает по главной оси, а align-items