Foundations

Spacing & Layout

A base-4 spacing scale with fine 2px steps, four semantic spacing roles, and a responsive grid that adapts from mobile to desktop XL — keeping visual rhythm predictable across every government service interface.

Base spacing scale

The primitive ramp every spacing token aliases. Built on a 4px rhythm with 2px fine steps for tight adjustments.

--ux4g-space-none
0px
0rem
--ux4g-space-1
2px
0.125rem
--ux4g-space-2
4px
0.25rem
--ux4g-space-3
6px
0.375rem
--ux4g-space-4
8px
0.5rem
--ux4g-space-5
12px
0.75rem
--ux4g-space-6
16px
1rem
--ux4g-space-7
20px
1.25rem
--ux4g-space-8
24px
1.5rem
--ux4g-space-9
32px
2rem
--ux4g-space-10
40px
2.5rem
--ux4g-space-11
48px
3rem
--ux4g-space-12
56px
3.5rem
--ux4g-space-13
64px
4rem
--ux4g-space-14
80px
5rem
--ux4g-space-15
120px
7.5rem

Semantic spacing

Role-based tokens that alias the base scale. Reach for these first — they describe intent (Column Gap, Row Gap, Padding, Gap) rather than a raw number.

Column Gap

Horizontal gaps between elements on the same line (column-gap).

None (--ux4g-gap-column-none)
0px
2XS (--ux4g-gap-column-2xs)
2px
XS (--ux4g-gap-column-xs)
4px
S (--ux4g-gap-column-s)
8px
M (--ux4g-gap-column-m)
12px
L (--ux4g-gap-column-l)
16px
XL (--ux4g-gap-column-xl)
24px

Row Gap

Vertical gaps between stacked elements (row-gap).

None (--ux4g-gap-row-none)
0px
2XS (--ux4g-gap-row-2xs)
4px
XS (--ux4g-gap-row-xs)
8px
S (--ux4g-gap-row-s)
12px
M (--ux4g-gap-row-m)
16px
L (--ux4g-gap-row-l)
24px
XL (--ux4g-gap-row-xl)
28px

Padding

Inner padding for components and containers.

None (--ux4g-padding-none)
0px
3XS (--ux4g-padding-3xs)
2px
2XS (--ux4g-padding-2xs)
4px
XS (--ux4g-padding-xs)
8px
S (--ux4g-padding-s)
12px
M (--ux4g-padding-m)
16px
L (--ux4g-padding-l)
20px
XL (--ux4g-padding-xl)
24px
2XL (--ux4g-padding-2xl)
32px
3XL (--ux4g-padding-3xl)
40px
4XL (--ux4g-padding-4xl)
48px

Gap

Layout and section gaps between elements.

None (--ux4g-section-none)
0px
2XS (--ux4g-section-2xs)
4px
3XS (--ux4g-section-3xs)
6px
4XS (--ux4g-section-4xs)
8px
5XS (--ux4g-section-5xs)
12px
6XS (--ux4g-section-6xs)
16px
7XS (--ux4g-section-7xs)
20px
XS (--ux4g-section-xs)
24px
S (--ux4g-section-s)
28px
M (--ux4g-section-m)
36px
L (--ux4g-section-l)
40px
XL (--ux4g-section-xl)
48px
2XL (--ux4g-section-2xl)
56px

Corner radius

Eight radius tokens keep rounding consistent across components.

(--ux4g-radius-none)

0px

(--ux4g-radius-xs)

2px

(--ux4g-radius-sm)

4px

(--ux4g-radius-md)

8px

(--ux4g-radius-lg)

12px

(--ux4g-radius-xl)

16px

(--ux4g-radius-2xl)

24px

(--ux4g-radius-full)

Full (Circular)

Grid visualization

The 12-column grid at desktop, and common column spans.

1
2
3
4
5
6
7
8
9
10
11
12
4 cols
8 cols
3
6 cols
3

Layout principles

Guidelines for consistent page structure across government services.

Content width

Max content width caps at 1200px on desktop and 1320px on desktop XL. Body text should not exceed ~720px (65–75 characters per line) for readability.

Vertical rhythm

Use Gap tokens between major sections, Row Gap between related blocks, and Column Gap for on-line gaps — never raw pixel guesses.

Touch targets

Minimum 44×44px touch targets on mobile, with at least 8px (Inline S) spacing between interactive elements.

Density

Default density is optimized for citizen-facing services to ensure readability and accessibility.