hero.organic-arch-window · Arch window

A hero pattern from Organic Earth, 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.organic-arch-window". A guide only: DESIGN.md and tokens.json are the source of truth.

Rule
A tall arch-framed photo on 1–5 with a moss blob peeking from behind its foot; the soft-serif headline, lead and actions sit mid-height on 7–12.
Slots
heroImage, eyebrow, headline, subhead, cta, cta2, meta
Grid areas
arch 1-5 · blob 4-6 · text 7-12 (12-column grid, 1-based inclusive spans)
Notes
The blob overlaps the arch's lower-right edge by one column. The arch is a full semicircle top on a rectangle, radius = half its width.
Tokens
bg #F3EBDD · text #2E2A22 · heading #2A1F14 · accent #BC572B · accent2 #A56B00 · Fraunces / Karla · radius 28px · space unit 8px (full list in design/tokens.json)
Section
vertical padding step 8

Pattern notes

  • Columns 1–5: a 3:4 photo in an arch frame spanning two rows. A moss blob (lg) sits on 4–6 in the second row, bottom-aligned, peeking out from behind the arch's lower-right edge (hidden on phone). Columns 7–12, vertically centred: italic muted eyebrow, headline at step 7 weight 400 (max ~12 ch), lead at step 2 (max 40 ch), a row with a pill primary button and an underline button, and a small muted meta line.

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 projectRead case studies

Booking projects from June 2026

Layout tree (as in design/layout.json)
{
  "pattern": "hero.organic-arch-window",
  "kind": "hero",
  "grid": {
    "arch": "1-5",
    "blob": "4-6",
    "text": "7-12"
  },
  "slots": [
    "heroImage",
    "eyebrow",
    "headline",
    "subhead",
    "cta",
    "cta2",
    "meta"
  ],
  "notes": "The blob overlaps the arch's lower-right edge by one column. The arch is a full semicircle top on a rectangle, radius = half its width.",
  "tree": {
    "el": "grid",
    "gap": 5,
    "rowGap": 0,
    "align": "center",
    "minVh": 0.85,
    "children": [
      {
        "el": "media",
        "span": "1-5",
        "rowSpan": "1-2",
        "slot": "heroImage",
        "aspect": "3/4",
        "treatment": "photo",
        "frame": "arch"
      },
      {
        "el": "shape",
        "span": "4-6",
        "rowSpan": "2-2",
        "mobile": "hide",
        "alignSelf": "end",
        "kind": "blob",
        "size": "lg",
        "fill": "accent2"
      },
      {
        "el": "box",
        "span": "7-12",
        "rowSpan": "1-2",
        "alignSelf": "center",
        "gap": 4,
        "children": [
          {
            "el": "text",
            "color": "textMuted",
            "slot": "eyebrow",
            "role": "eyebrow",
            "italic": true
          },
          {
            "el": "text",
            "slot": "headline",
            "role": "display",
            "step": 7,
            "weight": 400,
            "leading": "tight",
            "maxCh": 12
          },
          {
            "el": "text",
            "slot": "subhead",
            "role": "lead",
            "step": 2,
            "maxCh": 40
          },
          {
            "el": "box",
            "mobile": "keep",
            "dir": "row",
            "gap": 4,
            "align": "center",
            "wrap": true,
            "children": [
              {
                "el": "button",
                "slot": "cta",
                "variant": "primary",
                "arrow": true
              },
              {
                "el": "button",
                "slot": "cta2",
                "variant": "underline"
              }
            ]
          },
          {
            "el": "text",
            "color": "textMuted",
            "slot": "meta",
            "role": "small"
          }
        ]
      }
    ]
  }
}
Component example: reference/hero.organic-arch-window.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>hero.organic-arch-window — Organic Earth</title>
<link rel="stylesheet" href="base.css">
<style>
  .hero { min-height: 85vh; padding: calc(var(--unit) * 8) 0; align-items: center; grid-template-rows: 1fr auto; }
  .hero .arch { grid-column: 1 / 6; grid-row: 1 / 3; aspect-ratio: 3 / 4; position: relative; z-index: 1; }
  .hero .blob { grid-column: 4 / 7; grid-row: 2; align-self: end; width: 100%; height: auto; fill: var(--accent2); transform: translate(10%, 18%); }
  .hero .text { grid-column: 7 / 13; grid-row: 1 / 3; display: grid; gap: calc(var(--unit) * 4); }
  .hero h1 { font-size: var(--step-7); max-width: 12ch; }
  .hero .lead { font-size: var(--step-2); max-width: 40ch; }
  .actions { display: flex; gap: calc(var(--unit) * 4); align-items: center; flex-wrap: wrap; }
  @media (max-width: 640px) { .hero h1 { font-size: var(--step-4); } }
</style>
</head>
<body>
<section class="wrap">
  <div class="hero grid">
    <div class="arch"><img src="https://picsum.photos/seed/bakery/900/1200" alt="Sourdough loaves cooling on a wooden rack" width="900" height="1200"></div>
    <svg class="blob deco" viewBox="0 0 200 180" aria-hidden="true"><path d="M44 22c30-26 92-24 124 8s34 86 4 116-92 40-128 14S-6 108 4 74 14 48 44 22z"/></svg>
    <div class="text">
      <p class="eyebrow">Wood-fired since 2009 · Hebden Bridge</p>
      <h1>Bread with a slow start.</h1>
      <p class="lead">Long-fermented loaves, seasonal buns and stone-ground flour from farms within forty miles of the oven.</p>
      <div class="actions"><a class="btn" href="#order">Order for Saturday <span aria-hidden="true">→</span></a><a class="btn underline" href="#visit">Visit the bakery</a></div>
      <p class="small muted">Open Wednesday to Sunday, 7am until we sell out</p>
    </div>
  </div>
</section>
</body>
</html>

Other patterns in this design

Whole design · Spec bundle (JSON) · On the style page