hero.product-floating-specs · Product with flanking specs

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.product-floating-specs". A guide only: DESIGN.md and tokens.json are the source of truth.

Rule
A square product shot in 4–9 is flanked by spec callouts: 2–3 feature labels in 1–3 and 2–3 numbers in 10–12, each with a top rule; the headline runs 1–8 underneath, price and CTA in 10–12.
Slots
heroImage, facts[2..3], stats[2..3], headline, meta, cta
Grid areas
features 1-3 · product 4-9 · numbers 10-12 · headline 1-8 · buy 10-12 (12-column grid, 1-based inclusive spans)
Notes
In the real build, each callout can draw a thin leader line to the part of the product it describes (SVG, hidden on phones). Callouts are text, not cards.
Tokens
bg #FAFAFA · text #1F1F1F · heading #0F0F0F · accent #F95620 · accent2 #9E2C00 · Geist / Geist · radius 2px · space unit 8px (full list in design/tokens.json)

Do

  • Place a square product shot in columns 4–9 of the first row.
  • Flank it with 2–3 feature callouts (1–3) and 2–3 big numbers (10–12), each under a top rule.
  • Put the headline below the product across 1–8, with price and CTA bottom-right.
  • Optionally draw hairline leader lines from callouts to the product (desktop only).

Don't

  • Don't put callouts in cards, pills or glass panels.
  • Don't place the headline above the product.
  • Don't use more than six callouts in total.

Phone width

  • Product first at 1:1, then features and numbers as two short ruled lists, then headline and CTA.
  • Hide leader lines.

Hours

Studio open Mon–Thu, 9:30–18:00

Where

Rua da Boavista 72, 1200-066 Lisboa

140+

launches shipped

12

years independent

We make complicated companies simple to choose

Booking projects from June 2026

Start a project
Layout tree (as in design/layout.json)
{
  "pattern": "hero.product-floating-specs",
  "kind": "hero",
  "grid": {
    "features": "1-3",
    "product": "4-9",
    "numbers": "10-12",
    "headline": "1-8",
    "buy": "10-12"
  },
  "slots": [
    "heroImage",
    "facts[2..3]",
    "stats[2..3]",
    "headline",
    "meta",
    "cta"
  ],
  "notes": "In the real build, each callout can draw a thin leader line to the part of the product it describes (SVG, hidden on phones). Callouts are text, not cards.",
  "tree": {
    "el": "grid",
    "gap": 3,
    "rowGap": 6,
    "align": "center",
    "minVh": 0.9,
    "children": [
      {
        "el": "media",
        "span": "4-9",
        "rowSpan": "1-1",
        "slot": "heroImage",
        "aspect": "1/1",
        "treatment": "product"
      },
      {
        "el": "repeat",
        "span": "1-3",
        "rowSpan": "1-1",
        "slot": "facts",
        "min": 2,
        "max": 3,
        "layout": "list",
        "gap": 6,
        "of": {
          "el": "box",
          "gap": 1,
          "pad": [
            2,
            0
          ],
          "border": "top",
          "children": [
            {
              "el": "text",
              "color": "textMuted",
              "slot": "label",
              "role": "eyebrow"
            },
            {
              "el": "text",
              "slot": "title",
              "role": "h4"
            }
          ]
        }
      },
      {
        "el": "repeat",
        "span": "10-12",
        "rowSpan": "1-1",
        "slot": "stats",
        "min": 2,
        "max": 3,
        "layout": "list",
        "gap": 6,
        "of": {
          "el": "box",
          "gap": 1,
          "pad": [
            2,
            0
          ],
          "border": "top",
          "children": [
            {
              "el": "text",
              "slot": "number",
              "role": "number",
              "step": 3
            },
            {
              "el": "text",
              "color": "textMuted",
              "slot": "label",
              "role": "small"
            }
          ]
        }
      },
      {
        "el": "text",
        "span": "1-8",
        "rowSpan": "2-2",
        "slot": "headline",
        "role": "display",
        "step": 5,
        "leading": "tight",
        "maxCh": 20
      },
      {
        "el": "box",
        "span": "10-12",
        "rowSpan": "2-2",
        "alignSelf": "end",
        "gap": 2,
        "children": [
          {
            "el": "text",
            "slot": "meta",
            "role": "label"
          },
          {
            "el": "button",
            "slot": "cta",
            "variant": "primary",
            "arrow": true
          }
        ]
      }
    ]
  }
}

Other patterns in this design

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