A ideia consiste em utilizar as propriedades: display: flex;
e flex-wrap: wrap;
em conjunto do height
para alinhar os elementos a esquerda, e depois de acordo com a height definida, criar os pontos de quebra para alinhar os elementos em uma lista horizontal.
Já adiantando que eu modifiquei os valores de width, height e cores que vieram no código inicial para ficar mais agradável aos olhos, mas , acho que essas alterações não prejudicam o a ideia de construção da grid no final.
.grid {
background: lightslategray;
width: 500px;
height: 120px;
padding: 5px;
display: flex;
flex-wrap: wrap;
text-align: center;
}
Após essa etapa, basta definir os valores de tamanho das div's, para que essa lista seja preenchida com a quantidade de elementos que desejarmos por linha, e também, definir uma margem, para que cada um dos elementos se distanciem entre si.
.box {
background-color: lightseagreen;
color: white;
height: 50px;
width: 18%;
margin: 1%;
}