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