Проблема в том, что вы применяете height: 100%
к каждому отдельному элементу в вашем коде.
* {
height: 100%;
width: 100%;
margin: 0;
}
Это заставляет все элементы брать 100% родительского элемента, а блочные элементы располагаются вертикально.
Тебе не нужно это делать.Это излишне.
Удалите приведенный выше код и просто добавьте:
body {
margin: 0;
}
.grid {
height: 100vh;
}