hero.asymmetric-blocks · Asymmetric colour blocks

A hero pattern from the hero library, drawn alone below with this design's tokens and sample copy. Used in this design on: home page, section 1. Give the section root data-pattern="hero.asymmetric-blocks". A guide only: DESIGN.md and tokens.json are the source of truth.

Rule
The hero is cut into unequal colour blocks with no gaps: a big accent headline block (1–7, rows 1–2), a surface subhead block (8–12), a photo (8–10, rows 2–3), an accent2 CTA block (11–12), a surfaceAlt note (1–4) and an outlined caption block (5–7).
Slots
eyebrow, headline, subhead, heroImage, cta, meta, caption
Grid areas
headline 1-7 · subhead 8-12 · photo 8-10 · cta 11-12 · note 1-4 · caption 5-7 (12-column grid, 1-based inclusive spans)
Notes
Like a Mondrian or a Bauhaus poster: blocks touch (gap 0) and differ in size and colour. Text on accent uses onAccent, on accent2 uses onAccent2.
Tokens
bg #FDF9F4 · text #241E16 · heading #150E06 · accent #0050CC · accent2 #AF0029 · Jost / Jost · radius 0px · space unit 8px (full list in design/tokens.json)

Do

  • Divide the hero into six touching blocks of different sizes; no gaps between them.
  • Give the headline the largest block, in the accent colour with onAccent text.
  • Use surface, surfaceAlt and accent2 for the other blocks and one photo block.
  • Put the CTA as a link alone in the small accent2 block.

Don't

  • Don't round the blocks' corners or add shadows.
  • Don't make two blocks the same size and colour.
  • Don't put text over the photo block.

Phone width

  • Stack blocks in source order at full width: headline, subhead, photo (4:3), CTA, note, caption.

Brand & product studio

We make complicated companies simple to choose

Northfold is a 14-person studio helping manufacturers, labs and B2B teams explain what they do — and look like they mean it.

Start a project

Booking projects from June 2026

Corvid Robotics — identity

Layout tree (as in design/layout.json)
{
  "pattern": "hero.asymmetric-blocks",
  "kind": "hero",
  "grid": {
    "headline": "1-7",
    "subhead": "8-12",
    "photo": "8-10",
    "cta": "11-12",
    "note": "1-4",
    "caption": "5-7"
  },
  "slots": [
    "eyebrow",
    "headline",
    "subhead",
    "heroImage",
    "cta",
    "meta",
    "caption"
  ],
  "notes": "Like a Mondrian or a Bauhaus poster: blocks touch (gap 0) and differ in size and colour. Text on accent uses onAccent, on accent2 uses onAccent2.",
  "tree": {
    "el": "grid",
    "gap": 0,
    "minVh": 0.95,
    "children": [
      {
        "el": "box",
        "span": "1-7",
        "rowSpan": "1-2",
        "bg": "accent",
        "gap": 4,
        "pad": [
          8,
          5
        ],
        "justify": "end",
        "children": [
          {
            "el": "text",
            "color": "onAccent",
            "slot": "eyebrow",
            "role": "eyebrow"
          },
          {
            "el": "text",
            "color": "onAccent",
            "slot": "headline",
            "role": "display",
            "step": 7,
            "leading": "tight",
            "maxCh": 12
          }
        ]
      },
      {
        "el": "box",
        "span": "8-12",
        "rowSpan": "1-1",
        "bg": "surface",
        "gap": 3,
        "pad": [
          5,
          4
        ],
        "children": [
          {
            "el": "text",
            "slot": "subhead",
            "role": "lead",
            "maxCh": 30
          }
        ]
      },
      {
        "el": "media",
        "span": "8-10",
        "rowSpan": "2-3",
        "slot": "heroImage",
        "treatment": "photo",
        "fill": true
      },
      {
        "el": "box",
        "span": "11-12",
        "rowSpan": "2-2",
        "bg": "accent2",
        "pad": [
          4,
          3
        ],
        "justify": "end",
        "children": [
          {
            "el": "button",
            "color": "onAccent2",
            "slot": "cta",
            "variant": "link",
            "arrow": true
          }
        ]
      },
      {
        "el": "box",
        "span": "1-4",
        "rowSpan": "3-3",
        "bg": "surfaceAlt",
        "pad": [
          4,
          4
        ],
        "children": [
          {
            "el": "text",
            "color": "text",
            "slot": "meta",
            "role": "small"
          }
        ]
      },
      {
        "el": "box",
        "span": "5-7",
        "rowSpan": "3-3",
        "pad": [
          4,
          4
        ],
        "border": "all",
        "children": [
          {
            "el": "text",
            "color": "textMuted",
            "slot": "caption",
            "role": "small"
          }
        ]
      }
    ]
  }
}

Other patterns in this design

Whole design · Spec bundle (JSON) · Hero library page