Schema uses a grid-min variable system to control column layouts - the same concept as ACSS's variable grid, adapted for Figma.
https://www.figma.com/design/NJkfgz1fYHXZDdJt8OiqFw/Schema?node-id=8721-6465&t=5nkqA3gwdIcAWV1r-1
Grid layouts in Schema are built with auto layout frames set to wrap. The cards (or other items) inside have their width set to a grid-min variable. This minimum width, combined with the available space in the parent frame, determines how many columns fit on a row. When the frame gets narrower, items that no longer fit wrap to the next row automatically.
You don't set a column count directly - you set a minimum item width, and the number of visible columns is a result of the available space.
Schema provides three grid-min presets in the Layout collection:
These values work with the default content width. If you change your content width significantly, you may need to adjust the grid-min values slightly - but in most cases they'll work as-is.
On mobile, the grid-min values are set intentionally below the mobile viewport width. This gives you control over whether a grid stacks to a single column or stays as two columns on smaller screens.
The space between grid items is controlled by grid-gap. This value stays consistent across Desktop and Mobile modes - only the gutter and section padding scale down on smaller screens.
You can also create custom min values for layouts that don't fit these presets. Define a new variable in the Layout collection and apply it to your items.