A responsive gird layout with varying columns depending on viewport width