Grid
A grid arranges children into cells. Three layout modes:
- Grid — strict columns × rows; each child fills its cell
- Masonry — fixed columns, variable cell heights (Pinterest-style)
- Auto-fit — flex layout that reflows based on cell minimums
Each cell has its own settings (background, padding, alignment, rotation, scale, border) — Click a cell in the canvas to edit just that cell's settings.
The grid also supports two grid-level 3D effects: Depth (mouse parallax + breathing motion across all cells) and Cell tilt (per- cell 3D rotation toward the cursor).
When to use it
- A row of equal-width feature cards
- Image gallery (use Fill from Library to bulk-populate)
- Pricing card row (per-cell backgrounds + alignment)
- Masonry layout for variable-height content
- Editorial layouts with rotated / scaled cells
When not to use it
- Free-form / overlapping layouts — use Columns
- Single-row horizontal stack with arbitrary widths — use a
Section with Direction →
Top of panel
Fill from Library — button
Bulk-populates the grid with image cells. Useful when starting a gallery from existing media.
Layout
Layout mode — button group: Grid · Masonry · Auto-fit (default: Grid)
Switches the grid engine.
Columns — button group: 1–6 (default: 2)
Number of columns. (Hidden in Auto-fit mode — columns are auto-derived there.)
Rows — button group: 1–6 (default: 2)
Number of rows. Hidden in Masonry (column-flow doesn't have a row count) and Auto-fit.
Auto-fit only — Direction · Justify · Align · Wrap
When Layout mode is Auto-fit, the column/row pickers disappear and four flex controls appear:
- Direction — Horizontal (row) / Vertical (column)
- Justify — Start / Center / End / Between
- Align — Stretch / Start / Center / End
- Wrap — No Wrap / Wrap
Mobile Layout — Stack · 2 Columns · Keep (mobile tab only, default: Stack)
Visible only when the device tab is on Mobile. Forces the grid into a single-column stack, two-column collapse, or "keep desktop layout" on mobile.
Grid-level sliders
- Gap H — horizontal gap between cells, 0–300px (default: 20)
- Gap V — vertical gap, 0–300px (default: 20)
- Min Height — 0–900px (default: 0)
- Content Gap — vertical spacing between blocks stacked inside each cell, 0–100px (default: 0). Per-cell override available (the cell's own Content Gap slider in per-cell settings).
- Width preset — selects the grid's width inside the parent
- Margin Top / Bottom — 0–500px (default: 0)
- Depth — 0–100% (default: 0). Per-cell 3D depth wave with
- Cell tilt — 0–100% (default: 100). Per-cell 3D rotation
mouse parallax + breathing motion. Hover a cell to fly it forward.
toward the cursor. Independent of Depth — keeps content sharp / readable while cells follow the cursor. Set to 0 to disable.
Entrance animation
Shared widget — preset, duration, delay for scroll-into-view.
Per-cell settings (click a cell to edit)
When a cell is selected in the canvas, the panel shows CELL Rr Cc as a header, then the cell's own settings.
Cell Background
- bg colour swatch (
cell_bg_X) - gradient end swatch (
cell_bg_gradient_to_X) — when set, the - BG Angle — 0–360° (default: 135). Gradient angle.
- BG Mouse — 0–100% (default: 0). Mouse-driven rotation of the
cell renders as a gradient from bg → end
gradient angle.
Cell layout sliders
- Rotate — −10 to 10° (default: 0). Subtle editorial rotation.
- Scale — 70–130% (default: 100). Subtle editorial scale.
- Padding H — 0–100px (default: 0). Inner horizontal padding.
- Padding V — 0–100px (default: 0). Inner vertical padding.
- Content Gap — 0–100px (default: 0). Vertical spacing between this cell's child blocks. Overrides the grid-level Content Gap default.
Content Align — 4-arrow cluster
Two button groups (horizontal align: ← / centre / → and vertical align: ↑ / centre / ↓). Click an arrow to set; click the active arrow again to clear back to centre.
Cell border
A separate sub-section below the alignment cluster. Border width, colour, and per-side toggles (top, right, bottom, left).
Per-device overrides
Most settings (Gap H/V, Min Height, Margins, Depth, Tilt) have separate Tablet and Mobile values. Per-cell alignment also has device-specific keys (cell_halign_X_tablet, etc.).
The dedicated Mobile Layout control is a quick path to a single- column stack on mobile without overriding individual cells.
Common patterns
3-card feature row
Layout mode Grid · Columns 3 · Rows 1 · Gap H 24 · Mobile Layout Stack.
4-up logo grid
Layout mode Grid · Columns 4 · Rows 1 · Gap H 32 · Min Height 80 · Mobile Layout 2 Columns.
Image masonry
Layout mode Masonry · Columns 3 · Gap H/V 16 · use Fill from Library to populate.
Depth wave
Layout mode Grid · Columns 4 · Rows 2 · Depth 60% · Cell tilt 80% — cells respond to cursor as a wave.
Editorial card row with rotation
Layout mode Grid · per cell: Rotate ±5° (alternating) · Scale 95–105 · per-cell BG colours.
Don't
- Don't use Auto-fit when you need exact column counts at specific
- Don't pile Depth + Cell tilt at 100% on text-heavy cells —
- Don't use Masonry for content that should align across rows —
breakpoints — Auto-fit reflows by content width, not your design intent.
readability suffers.
it can't (Masonry is column-flow, not grid-aligned rows).
Related
blocks/rows— alternative grid block (audit pending — untilblocks/columns— for absolute-positioned childrenblocks/section— wrapper for gridsconcepts/responsive-overrides— per-device columns, gaps, mobilerecipes/feature-grid— 10-card responsive feature deck
audited, prefer Grid for most use cases since per-cell styling lives here)
layout
Gotchas
- **The Grid panel's "Content width" slider writes to
width_pct, not - **Setting
section_max_widthon inner flip-boxes caps the card on
content_width.** That's because two different block panels share the same visible label: the Section panel's "Content Width" slider writes to content_width, while the Grid / Cell grid / Freeform panels' "Content width" slider writes to width_pct (legacy key name). They look identical in the UI but the underlying keys differ. When generating settings for a grid, write width_pct. Clear any stale content_width value found on a grid — the resolver ignores it and stale values left on copied data confuse future maintenance.
every device.** Leave at 0 / leave unset, let the grid's columns drive width per device.