hero.product-screenshot-tilt · Tilted app screenshot

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

Rule
A two-zone intro (eyebrow + headline in 1–7, subhead + CTA in 9–12, bottom-aligned) over a large app screenshot in 3–12 that tilts back in perspective and bleeds past the right edge; a logo row closes the hero.
Slots
eyebrow, headline, subhead, cta, caption, meta, pages, stats[3..3], items[3..4], logos[4..6]
Grid areas
intro 1-7 · aside 9-12 · screenshot 3-12 · logos full (12-column grid, 1-based inclusive spans)
Notes
Tilt: transform: perspective(1600px) rotateX(10deg) rotateY(-8deg), translate the window ~6% past the right edge (overflow hidden on the section). Use a real UI screenshot when the product has one; otherwise build the window as laid out here (title bar with path, sidebar nav, KPI row, a ruled table). Under reduced motion it may still be tilted — the tilt is static.
Tokens
bg #F6FBFF · text #192028 · heading #091018 · accent #5E65E8 · accent2 #9256C9 · Geist / Geist · radius 20px · space unit 4px (full list in design/tokens.json)

Do

  • Split the intro: headline 1–7, subhead + CTA 9–12, both bottom-aligned.
  • Show the product window in columns 3–12 (a real screenshot, or the app window built from the slots: title bar, sidebar, KPI row, table), tilted back in perspective and cropped by the right edge.
  • Give the screenshot a hairline border and the style's radius.
  • Close with a single row of 4–6 customer logos in muted tone.

Don't

  • Don't centre the screenshot or the headline.
  • Don't animate the tilt on scroll or mouse move.
  • Don't put a glow or gradient behind the screenshot.

Phone width

  • Headline, subhead, CTA, then the screenshot flat (no tilt) at full width; logos scroll horizontally.

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

Corvid Robotics — identity

140+

launches shipped

12

years independent

9 of 10

clients return

Discovery sprint

2 weeks

Positioning workshop

1 day

Identity design

8 weeks

Corvid Robotics

Fieldstack

Tidewater Labs

Arklow Valves

Mosswood Bio

Layout tree (as in design/layout.json)
{
  "pattern": "hero.product-screenshot-tilt",
  "kind": "hero",
  "grid": {
    "intro": "1-7",
    "aside": "9-12",
    "screenshot": "3-12",
    "logos": "full"
  },
  "slots": [
    "eyebrow",
    "headline",
    "subhead",
    "cta",
    "caption",
    "meta",
    "pages",
    "stats[3..3]",
    "items[3..4]",
    "logos[4..6]"
  ],
  "notes": "Tilt: transform: perspective(1600px) rotateX(10deg) rotateY(-8deg), translate the window ~6% past the right edge (overflow hidden on the section). Use a real UI screenshot when the product has one; otherwise build the window as laid out here (title bar with path, sidebar nav, KPI row, a ruled table). Under reduced motion it may still be tilted — the tilt is static.",
  "tree": {
    "el": "box",
    "gap": 6,
    "children": [
      {
        "el": "grid",
        "gap": 3,
        "align": "end",
        "children": [
          {
            "el": "box",
            "span": "1-7",
            "gap": 3,
            "children": [
              {
                "el": "text",
                "color": "textMuted",
                "slot": "eyebrow",
                "role": "eyebrow"
              },
              {
                "el": "text",
                "slot": "headline",
                "role": "h1",
                "step": 6,
                "leading": "tight",
                "maxCh": 16
              }
            ]
          },
          {
            "el": "box",
            "span": "9-12",
            "gap": 3,
            "children": [
              {
                "el": "text",
                "slot": "subhead",
                "role": "body",
                "maxCh": 36
              },
              {
                "el": "button",
                "slot": "cta",
                "variant": "primary",
                "arrow": true
              }
            ]
          }
        ]
      },
      {
        "el": "grid",
        "gap": 3,
        "children": [
          {
            "el": "box",
            "span": "3-12",
            "bg": "surface",
            "gap": 0,
            "border": "all",
            "children": [
              {
                "el": "box",
                "mobile": "keep",
                "dir": "row",
                "gap": 3,
                "pad": [
                  2,
                  3
                ],
                "align": "center",
                "justify": "between",
                "border": "bottom",
                "children": [
                  {
                    "el": "text",
                    "color": "textMuted",
                    "slot": "caption",
                    "role": "small",
                    "font": "mono"
                  },
                  {
                    "el": "text",
                    "mobile": "hide",
                    "color": "textMuted",
                    "slot": "meta",
                    "role": "small"
                  }
                ]
              },
              {
                "el": "grid",
                "gap": 0,
                "children": [
                  {
                    "el": "box",
                    "span": "1-3",
                    "mobile": "hide",
                    "gap": 2,
                    "pad": [
                      4,
                      3
                    ],
                    "children": [
                      {
                        "el": "nav-links",
                        "slot": "pages",
                        "dir": "col",
                        "style": "plain"
                      }
                    ]
                  },
                  {
                    "el": "box",
                    "span": "4-12",
                    "gap": 4,
                    "pad": [
                      4,
                      4
                    ],
                    "border": "left",
                    "children": [
                      {
                        "el": "repeat",
                        "mobile": "keep",
                        "slot": "stats",
                        "min": 3,
                        "max": 3,
                        "layout": "row",
                        "gap": 5,
                        "of": {
                          "el": "box",
                          "gap": 1,
                          "children": [
                            {
                              "el": "text",
                              "slot": "number",
                              "role": "number",
                              "step": 2
                            },
                            {
                              "el": "text",
                              "color": "textMuted",
                              "slot": "label",
                              "role": "small"
                            }
                          ]
                        }
                      },
                      {
                        "el": "repeat",
                        "slot": "items",
                        "min": 3,
                        "max": 4,
                        "layout": "list",
                        "gap": 2,
                        "divider": true,
                        "of": {
                          "el": "box",
                          "mobile": "keep",
                          "dir": "row",
                          "gap": 3,
                          "align": "baseline",
                          "justify": "between",
                          "children": [
                            {
                              "el": "text",
                              "slot": "title",
                              "role": "body"
                            },
                            {
                              "el": "text",
                              "color": "textMuted",
                              "slot": "meta",
                              "role": "small",
                              "font": "mono"
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "el": "repeat",
        "mobile": "scroll-x",
        "slot": "logos",
        "min": 4,
        "max": 6,
        "layout": "row",
        "gap": 6,
        "of": {
          "el": "text",
          "color": "textMuted",
          "slot": "title",
          "role": "label"
        }
      }
    ]
  }
}

Other patterns in this design

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