Через grid-template-columns
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(12, minmax(0, 1fr));
}
.responsive {
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
Число колонок = число треков в шаблоне (или результат repeat/auto-fit). Меняйте в @media или через контейнерные запросы.
Итог
grid-template-columns определяет колонки. repeat и auto-fit/minmax — идиомы адаптивных сеток.