This system provides a predictable layout structure that keeps spacing, alignment, and width consistent across all pages.


Page Structure

All pages follow the same hierarchy:

body
└─ page-wrapper
└─ page-content
└─ section
└─ padding-global
└─ container / max-width
└─ block

Why this matters

  • Clear separation of concerns
  • Consistent spacing and widths
  • Easy to scan and reason about layouts
<section>
  <div class="padding-global">
    <div class="container-medium">
      <div class="block">
        <!-- Content -->
      </div>
    </div>
  </div>
</section>

Sections

Sections group major content areas and control vertical spacing.

When to use

  • Every major page section
  • Any time you need vertical rhythm between content groups

Rules

  • Sections own vertical spacing
  • Use .top-* and .bottom-* classes
  • Do not apply margins inside sections
<section class="top-large bottom-large">
  <div class="padding-global">
    <!-- Content -->
  </div>
</section>

Padding Global

provides consistent horizontal padding.

When to use

  • Inside every section
  • Whenever content needs safe spacing from screen edges
<div class="padding-global">
  <div class="container-medium">
    <!-- Content -->
  </div>
</div>

Padding comes from , never from containers.


Containers

Containers constrain width and centre content in the viewport.

When to use

  • Most page content
  • Any readable text or structured layout

Key rules

  • Containers centre content
  • Containers do not add padding
  • Use one container per section (in most cases)
<div class="container-medium">
  <div class="block">
    <h2>Heading</h2>
    <p>Content</p>
  </div>
</div>

Variants

.container-small
.container-medium
.container-large
Class Use
Narrow layouts
Default readable width
Wider layouts

Max-Width

Max-width utilities apply width limits only.

When to use

  • Special cases
  • Content that should not be centred
  • Breaking out of container behaviour
Class Use
Narrow constraint
Default readable
Wide constraint
No constraint

Rule of thumb

  • Centre content → use a container
  • Only limit width → use max-width (exception, not default)

Blocks

Blocks group related content and manage internal spacing.

When to use

  • Heading + text
  • Text + buttons
  • Image + caption
  • Any content that belongs together

Default behaviour

  • Vertical flex layout
  • Uses gap for spacing
  • No margins on children
<div class="block">
  <h2>Heading</h2>
  <p>Body text</p>
</div>

Gap modifiers

.gap-xs
Item
Item
.gap-s
Item
Item
.gap-m
Item
Item
.gap-l
Item
Item
.gap-xl
Item
Item
Class Effect
Very tight
Small
Default
Large
Extra large
<div class="block gap-l">
  <h2>Heading</h2>
  <p>More space between elements</p>
</div>

Block Layout Modifiers

Blocks can change layout or alignment.

Class Effect
Horizontal layout
Reversed horizontal
Align items start
Centre items
Align items end
<div class="block row gap-m align-center">
  <p>Text</p>
  <button>Action</button>
</div>

Grid

Grids create column-based layouts.
They are not spacing utilities.

Base grid

  • Two equal columns
  • Default gap applied
Column 1
Column 2
<div class="grid">
  <div>Item</div>
  <div>Item</div>
</div>

Column modifiers

1
2
3
1
2
3
4
Class Columns
Three columns
Four columns
<div class="grid cols-3">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
</div>

Item width

Class Effect
Item sizes to content
<div class="grid">
  <div>Flexible column</div>
  <div class="fit-content">Fixed</div>
</div>

Rules

  • Use grids for layout, not spacing
  • Use gap-* to adjust spacing
  • Combine column + gap modifiers as needed

Was this page helpful?

We use this feedback to improve our documentation.

Thanks for your feedback