hero.bento-sidebar-stack · Sidebar stack

A hero pattern from Bento Tech, drawn alone below with this design's tokens and sample copy. Not used in this design: shown with its tokens for comparison. Give the section root data-pattern="hero.bento-sidebar-stack". A guide only: DESIGN.md and tokens.json are the source of truth.

Rule
Three stacked fact tiles fill columns 1–4 at full hero height; columns 5–12 hold a message tile on top and a product image tile filling the two rows below.
Slots
facts[3..3], eyebrow, headline, subhead, cta, heroImage
Grid areas
facts 1-4 · message 5-12 · product 5-12 (12-column grid, 1-based inclusive spans)
Tokens
bg #F6FBFF · text #192028 · heading #091018 · accent #5E65E8 · accent2 #9256C9 · Geist / Geist · radius 20px · space unit 4px (full list in design/tokens.json)
Section
vertical padding step 4

Pattern notes

  • At least 85 vh. Columns 1–4: three fact tiles stacked to fill the full height (number at step 6, label, short line). Columns 5–12: a message tile on row 1 (mono eyebrow, h1 at step 7, subhead and a primary button on one row) and a product image tile filling rows 2–3 edge to edge with 12 px inset. Each fact tile pins its number to the top and its label and line to the bottom. Phone: message tile first, then the facts, then the product.

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

140+

launches shipped

Counted since we opened, updated every quarter.

12

years independent

Measured across every project, not our best ones.

9 of 10

clients return

From our own records, checked each year.

Layout tree (as in design/layout.json)
{
  "pattern": "hero.bento-sidebar-stack",
  "kind": "hero",
  "grid": {
    "facts": "1-4",
    "message": "5-12",
    "product": "5-12"
  },
  "slots": [
    "facts[3..3]",
    "eyebrow",
    "headline",
    "subhead",
    "cta",
    "heroImage"
  ],
  "tree": {
    "el": "grid",
    "gap": 3,
    "rowGap": 3,
    "align": "stretch",
    "minVh": 0.85,
    "children": [
      {
        "el": "box",
        "span": "5-12",
        "rowSpan": "1-1",
        "bg": "surface",
        "gap": 3,
        "pad": [
          8,
          8
        ],
        "border": "all",
        "children": [
          {
            "el": "text",
            "color": "link",
            "slot": "eyebrow",
            "role": "label",
            "font": "mono"
          },
          {
            "el": "text",
            "slot": "headline",
            "role": "h1",
            "step": 7,
            "weight": 600,
            "tracking": "tight",
            "leading": "tight",
            "maxCh": 18
          },
          {
            "el": "box",
            "dir": "row",
            "gap": 4,
            "align": "center",
            "justify": "between",
            "wrap": true,
            "children": [
              {
                "el": "text",
                "slot": "subhead",
                "role": "body",
                "maxCh": 44
              },
              {
                "el": "button",
                "slot": "cta",
                "variant": "primary",
                "arrow": true
              }
            ]
          }
        ]
      },
      {
        "el": "repeat",
        "span": "1-4",
        "rowSpan": "1-3",
        "slot": "facts",
        "min": 3,
        "max": 3,
        "layout": "grid",
        "cols": 1,
        "gap": 3,
        "of": {
          "el": "box",
          "bg": "surface",
          "gap": 1,
          "pad": [
            6,
            6
          ],
          "justify": "between",
          "border": "all",
          "children": [
            {
              "el": "text",
              "slot": "number",
              "role": "number",
              "step": 6,
              "weight": 600,
              "tracking": "tight"
            },
            {
              "el": "box",
              "gap": 1,
              "children": [
                {
                  "el": "text",
                  "slot": "title",
                  "role": "label",
                  "weight": 600
                },
                {
                  "el": "text",
                  "slot": "body",
                  "role": "small",
                  "maxCh": 30
                }
              ]
            }
          ]
        }
      },
      {
        "el": "box",
        "span": "5-12",
        "rowSpan": "2-3",
        "bg": "surface",
        "gap": 2,
        "pad": [
          3,
          3
        ],
        "border": "all",
        "children": [
          {
            "el": "media",
            "slot": "heroImage",
            "treatment": "product",
            "fill": true,
            "frame": "rounded"
          }
        ]
      }
    ]
  }
}

Other patterns in this design

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