for column = 0; column < columns; ++column
for row = 0; row < rows; ++row
&:nth-child(column*row) {
order: хитрая формула;
}>: flex; flex-direction: column; разложит их как на рисунке (именно из-за колонок вам и нужно переопределить порядок блоков в стиле, чтобы они опять стали строками.