Foundations

Page Layout

How to structure page sections, apply alternating backgrounds, maintain vertical rhythm, and create visual separation without break bands or stacked separators.

Overview

Every CAAT page is composed of full-width sections stacked vertically. Each section gets a background colour, consistent vertical padding, and contains a .container to constrain content width. This pattern replaces the legacy approach of using thick coloured bars, horizontal rules, or empty spacer components between page blocks.

The system provides three background tiers — white, grey, and blue — that alternate to create natural visual separation. No additional dividers or break elements are needed between sections.

Section Rhythm

Alternate between white and grey backgrounds to create a clear reading rhythm. Use blue sparingly for emphasis sections (stats, CTAs, or key messaging).

Recommended Pattern

Hero Hero Section Full-bleed hero with card overlay or resource preview
Stat Strip Stat Strip Key metrics bar — always dark blue
White Section A — White Default content section
Grey Section B — Grey Alternating background for contrast
White Section C — White Back to default
Grey Section D — Grey Alternating continues…
Blue Emphasis Section — Blue Used sparingly: stats, strength metrics, final CTA
White CTA / Footer Transition Final content before footer
Key principle: The background colour change is the section divider. No horizontal rules, break bands, or spacer components are needed between sections.

Background Tiers

TierTokenValueText ColourPurpose
White
#ffffff (default) --caat-ink / --caat-blue-900 Default section background. Primary content, forms, articles.
Grey
--caat-grey #eff2f7 --caat-ink / --caat-blue-900 Alternating sections. Card grids, feature lists, testimonials, logo walls.
Blue
--caat-blue-900 #003750 #fff (headings), rgba(255,255,255,.75) (body) Emphasis sections. Stat strips, strength metrics, primary CTAs, "join" blocks. Use sparingly — 1–2 per page max.

Colour Inversion Rules

When a section uses the blue background, all child components must invert their colours:

ElementOn white/greyOn blue
Section title--caat-blue-900#fff
Section subtitle--caat-mutedrgba(255,255,255,.75)
Body text--caat-inkrgba(255,255,255,.88)
Eyebrow labels--caat-green-700--caat-lime
Stat values--caat-blue-900#fff
Stat labels--caat-mutedrgba(255,255,255,.7)
Dividers / borders--caat-grey-200rgba(255,255,255,.2)

Decision Tree: Which Background?

Use this guide when laying out a page to decide each section's background:

QuestionAnswerBackground
Is this the first content section after the hero?YesWhite
Is the previous section white?YesGrey (alternate)
Is the previous section grey?YesWhite (alternate)
Is this a stat strip or strength metrics bar?YesBlue
Is this a primary CTA / "Join" / "Talk to us" block?YesWhite (or blue for a single high-impact CTA)
Is this the page's most important takeaway?YesBlue (max 1–2 per page)
Does this section contain a card grid or feature list?YesGrey (cards pop better on grey)
Does this section have a video embed?YesWhite (video needs clean frame)

Section Spacing

All sections use consistent vertical padding to maintain rhythm. Content is always constrained within a Bootstrap .container.

ContextPaddingNotes
Standard section4rem 0 (64px top/bottom)Default for all page sections. Mobile (<768px): compresses one step to 3rem 0 automatically via layout.css — see the Responsive foundation
Compact section (stat strip)1.25rem 2remTighter for data-dense horizontal bars
Hero section4rem 0 minimumMay be larger depending on hero variant
CTA section4rem 0Same as standard — consistency is key
Footer3rem 0Slightly tighter, dark blue background
Never add extra spacing between sections. The consistent 4rem padding on each section creates 8rem of total visual space between content blocks (4rem bottom of Section A + 4rem top of Section B). This is sufficient — do not add margin, spacer components, or empty containers between sections.

Section Anatomy

Every page section follows the same structural pattern:

<section class="caat-section caat-section--grey"
         aria-labelledby="section-heading">
  <div class="container">
    <h2 class="caat-section__title" id="section-heading">
      Section heading
    </h2>
    <p class="caat-section__subtitle">
      Supporting description text
    </p>

    <!-- Components go here -->
  </div>
</section>

Anatomy Breakdown

ElementRequiredPurpose
<section>YesFull-width semantic wrapper with background colour class
aria-labelledbyYesLinks to the section heading for screen readers
.containerYesConstrains content to max-width (1320px) with horizontal padding
.caat-section__titleRecommendedCentred section heading, weight 900, uses --caat-blue-900 (or white on blue)
.caat-section__subtitleOptionalCentred sub-heading, max-width 44rem, muted colour
Component contentYesAny combination of DS components (cards, forms, charts, etc.)

Anti-Patterns

These are common patterns found on the current site that should not be replicated in the new design system.

Full-width break bands

Don't use thick coloured bars spanning the full viewport width to separate page sections. These create a jarring, segmented "stacked boxes" appearance.

Section content
Next section content
Another section

Instead: Use alternating white/grey backgrounds. The colour change is the divider.

Separators as spacers

Don't use <hr> or separator components between page sections to add vertical space. The separator is for within-content use only.

Section A


Section B (two HRs + empty space ✗)

Instead: Sections have built-in 4rem padding. No spacers needed.

Same background on adjacent sections

Don't use the same background colour for two adjacent sections — they will merge visually and lose their distinct identity.

Section A — Grey
Section B — Also Grey ✗

Instead: Always alternate. Grey → White → Grey.

Overusing blue sections

Don't use blue backgrounds for more than 1–2 sections per page. When overused, the emphasis is lost and the page feels heavy.

Blue section 1
White section
Blue section 2
White section
Blue section 3 ✗

Instead: Reserve blue for 1–2 high-impact moments (stats, CTA).

Grid System

CAAT uses Bootstrap 5's 12-column fluid grid inside every .container. The grid provides responsive breakpoints, gutters, and alignment utilities.

Container widths

BreakpointClassMax-widthTypical use
xs.container100%Mobile — full-width with padding
sm (≥576px).container540pxLarge phones landscape
md (≥768px).container720pxTablets
lg (≥992px).container960pxSmall laptops
xl (≥1200px).container1140pxDesktops
xxl (≥1400px).container1320pxWide screens — CAAT default max

Grid rules

  • Always nest content in .container → .row → .col-* — never place content directly inside a section without a container.
  • Gutter: Default gutter is 1.5rem (24px). Use .g-4 (1.5rem) for card grids, .g-3 (1rem) for tighter layouts.
  • No offset hacks: Use .justify-content-center on the row to centre fewer than 12 columns, not empty offset columns.
  • Responsive: Always define at least col-12 (mobile) + one larger breakpoint (e.g. col-md-6).

Gutter reference

ClassValueUse case
.g-00Edge-to-edge image grids, flush cards
.g-31remTight layouts — badge groups, stat pills
.g-41.5remStandard card grids, icon cards
.g-53remSpacious feature layouts, hero + sidebar

Column Layouts

Common column patterns used across CAAT pages. Each pattern is responsive — stacking to single-column on mobile.

Standard patterns

Single column (narrow)

For article body text, forms, legal content. Max-width constrained for readability.

.col-lg-8.mx-auto or max-width: 44rem 680px content width — optimal reading line length

Two column — equal (6 + 6)

Side-by-side comparisons, image + text, two feature blocks.

.col-md-6
.col-md-6

Two column — weighted (8 + 4)

Article with sidebar, main content + CTA panel, video + description.

.col-lg-8Main content
.col-lg-4Sidebar / aside

Three column (4 + 4 + 4)

Card grids, feature trios, icon cards, stat blocks.

.col-md-4
.col-md-4
.col-md-4

Four column (3 + 3 + 3 + 3)

Logo walls, stats strips, small feature cards.

.col-lg-3
.col-lg-3
.col-lg-3
.col-lg-3

Responsive stacking rules

Desktop layoutTablet (md)Mobile (xs–sm)
4 columns2 × 2 gridSingle stack
3 columns2 + 1 or full stackSingle stack
2 columns (equal)Stays 2-columnSingle stack
2 columns (8+4)Stays weighted or stacksSingle stack, sidebar below
Single narrowSameFull-width with padding

Page Templates

Six standard page templates define the section structure, grid layout, and component slots for different content types at CAAT. Each template specifies which sections are required vs. optional and what column patterns to use.

Homepage

The primary entry point. Bold hero, key messages, trust signals, and clear CTAs.

requiredComposable Hero (full-width, gradient or image bg)Title, subtitle, CTA button, optional stat strip
requiredValue proposition (3-col icon cards).col-md-4 × 3 — key benefits
optionalSocial proof (logo wall + testimonial)Full-width logo grid + blockquote
optionalFeatured content (2-col: video + text).col-lg-7 + .col-lg-5
optionalNews / blog cards (3-col card grid).col-md-4 × 3 — latest articles
requiredCTA band (centred text + button)Single column, max-width 40rem

Grid: Full-width hero → container sections. Mix of 3-col card grids and 2-col feature splits. Max 1 blue emphasis section.

Landing Page

Campaign or product-focused. Persuasion-driven, top-to-bottom narrative flow. Example: Pensions Matter.

requiredFeature Resource Hero (fullbleed, card overlay)Title, subtitle, download CTA, preview image
Stat strip (4 metrics)
Demand section (stats + copy)2-col stat layout
Pain point (contrast cards)2-col .col-md-5 centered
Solution (icon card grid)3-col .col-md-4
Benefits (4-card grid + testimonial)auto-fit grid, minmax(14rem, 1fr)
Product details (centred prose)
Why choose (6-card grid)auto-fit, narrower container
Video (2-col: embed + sidebar).col-lg-7 + .col-lg-5
emphasisStrength metrics (4-col stats)
Final CTA + footnotesCentred, narrow column

Grid: Alternating white/grey. Heavy use of auto-fit grids for icon cards. Single blue emphasis band. 10–12 sections typical.

Sub Page (Interior)

Standard interior content page. Sidebar navigation for deep content structures (e.g. About, Plan details, Employer resources).

requiredPage header (breadcrumb + title + subtitle)No hero image — clean typographic header
Sidebar nav.col-lg-3
Main content.col-lg-9 — rich text, accordions, tables
optionalRelated content (3-col card grid)
optionalCTA band

Grid: 3 + 9 sidebar layout inside container. Sidebar collapses to top nav or off-canvas on mobile. Main content area uses narrow prose width (max 44rem).

Article / Blog Post

Long-form editorial content. Optimised for reading with constrained width, clear typography, and minimal distractions.

requiredArticle headerCategory badge, title (h1), author, date, read time, hero image
Article body — .col-lg-8.mx-autoRich text: headings, paragraphs, lists, blockquotes, images, separators
Author bio card (full-width within narrow column)
optionalRelated articles (3-col card grid).col-md-4 × 3

Grid: Single centred column (.col-lg-8.mx-auto) for body content. Full-width grey section at bottom for related cards. No sidebar — focused reading experience.

News / Listing Page

Index page for articles, news, resources, or publications. Filterable grid with pagination.

requiredPage header (title + description)Centred, no hero image
Filter bar (pill badges, category filters)Horizontal flex-wrap row
Card
Card
Card
Card
Card
Card
3-col card grid: .col-md-6.col-lg-4 — 6–9 per page
PaginationCentred, using .caat-pagination component

Grid: 3-column card grid (.col-md-6.col-lg-4). Filter bar spans full container width. Cards stack to 2-col on tablet, 1-col on mobile.

Events

Webinars, conferences, employer info sessions. Combines listing with detail view.

Listing view

requiredPage header (title + upcoming/past toggle)
Filter bar (date range, type, audience)Horizontal flex-wrap
Event cardDate badge, title, type, CTA
Event card
Event card
Event card
2-col grid: .col-md-6 — events are wider cards with more metadata

Detail view

Event detailsDate, time, location, description, speakers
Registration panelForm or CTA button
optionalRelated events (2-col card grid)

Grid: Listing uses 2-col (.col-md-6). Detail uses 8+4 weighted layout. Registration panel is sticky on desktop.

Template comparison

TemplateHero stylePrimary gridSidebarTypical sectionsBlue band
HomepageComposable (gradient/image)3-col cardsNo5–71 (CTA)
Landing pageFeature Resource (fullbleed)Auto-fit gridsNo10–121 (metrics)
Sub pageTypographic header9-col mainYes (3-col)3–50
ArticleNone (inline header)8-col centredNo3–40
News listingTypographic header3-col cardsNo30
EventsTypographic header2-col cards / 8+4 detailNo3–40–1
AEM Template Policies: Each template type maps to an AEM editable template with locked structure (required sections) and open parsys zones (optional sections). Authors cannot change the grid layout of locked sections but can add/remove optional sections and populate component slots within them.

AEM Implementation

In AEM, each page section is a Layout Container with a style policy that controls the background colour. Authors select the background when configuring the container — they don't need to add any CSS classes manually.

Layout Container Policy

Policy fieldTypeOptions
Section backgroundSelect (Style System)default (white) · grey · blue
Section IDTextAuto-generated or author-defined anchor ID for deep linking
Full widthCheckboxIf checked, section background spans viewport; content stays in container

Style System Mapping

Style optionCSS class appliedResult
Default (White)noneWhite background, dark text
Greycaat-section--greybackground: var(--caat-grey)
Bluecaat-section--bluebackground: var(--caat-blue-900); color: #fff

HTL Template

<section class="caat-section ${section.styleClasses}"
         aria-labelledby="${section.id}-heading"
         data-sly-use.section="com.caat.models.SectionModel">
  <div class="container">
    <sly data-sly-resource="${'content' @ resourceType='wcm/foundation/components/responsivegrid'}"/>
  </div>
</section>

Author Guidance

For authors: When building a page, drop Layout Containers onto the page in sequence. For each container, open the Style System panel and select the background colour. Alternate between "Default" and "Grey" for most sections. Only use "Blue" for 1–2 emphasis sections per page. The padding is automatic — never add empty components or spacers between containers.

CSS Contract

These classes are available for page-level section styling. They should live in a shared page-layout stylesheet, not in individual component CSS.

ClassPurpose
.caat-sectionBase section wrapper: padding: 4rem 0
.caat-section--greyGrey background: background: var(--caat-grey)
.caat-section--blueBlue background: background: var(--caat-blue-900); color: #fff
.caat-section__titleCentred section heading: weight 900, clamp(1.5rem, 3vw, 2.2rem)
.caat-section__subtitleCentred sub-heading: max-width 44rem, muted colour
/* ── Page section rhythm ── */
.caat-section {
  padding: 4rem 0;
}
.caat-section--grey {
  background: var(--caat-grey);
}
.caat-section--blue {
  background: var(--caat-blue-900);
  color: #fff;
}
.caat-section__title {
  font-family: var(--caat-font-primary);
  font-weight: 900;
  font-size: clamp(1.5rem, 3vw, 2.2rem);
  color: var(--caat-blue-900);
  letter-spacing: -.02em;
  text-align: center;
  margin-bottom: .5rem;
}
.caat-section--blue .caat-section__title {
  color: #fff;
}
.caat-section__subtitle {
  text-align: center;
  color: var(--caat-muted);
  max-width: 44rem;
  margin: 0 auto 2.5rem;
  font-size: 1.05rem;
}
.caat-section--blue .caat-section__subtitle {
  color: rgba(255,255,255,.75);
}

Real Examples

The Pensions Matter template demonstrates the alternating pattern in practice:

fullbleed Hero — Feature Resource Hero
Stat Strip (77% · 89% · 125,000+ · 97%)
white The demand for employers… (stats + copy)
grey What leaders need to know (contrast cards)
white Employees want better pensions (icon grid)
grey Power of workplace pensions (cards + testimonial)
white DBplus by CAAT (feature description)
grey Why employers choose DBplus (card grid)
white Video section
grey Logo wall + testimonial
white Value comparison (data viz)
blue Strength metrics (emphasis)
white CTA + footnotes

Notice the strict alternation: white → grey → white → grey, with a single blue emphasis section near the end.