nav.neo-grotesk-hairline · Hairline

A nav pattern from Neo-grotesk Minimal, drawn alone below with this design's tokens and sample copy. Used in this design on: every page, as the nav. Give the section root data-pattern="nav.neo-grotesk-hairline". A guide only: DESIGN.md and tokens.json are the source of truth.

Rule
Small wordmark on 1–2, a muted one-line descriptor on 4–6, small links on 9–12; one hairline beneath. Everything at body size or smaller.
Slots
siteName, tagline, pages
Grid areas
logo 1-2 · descriptor 4-6 · links 9-12 (12-column grid, 1-based inclusive spans)
Tokens
bg #FAFAFA · text #1F1F1F · heading #0F0F0F · accent #F95620 · accent2 #9E2C00 · Geist / Geist · radius 2px · space unit 8px (full list in design/tokens.json)
Section
vertical padding step 2

Pattern notes

  • A small wordmark (body size, weight 500) on 1–2, a muted descriptor at step −1 on 4–6 (hidden at phone width), page links at small size on 9–12 with 24 px gaps and the current page in the text colour (others muted). One 1 px hairline closes the bar. No buttons.
Northfold

Strategy and design for companies that make things

  • Services
  • Work
  • About
  • Contact
Layout tree (as in design/layout.json)
{
  "pattern": "nav.neo-grotesk-hairline",
  "kind": "nav",
  "grid": {
    "logo": "1-2",
    "descriptor": "4-6",
    "links": "9-12"
  },
  "slots": [
    "siteName",
    "tagline",
    "pages"
  ],
  "tree": {
    "el": "box",
    "gap": 2,
    "children": [
      {
        "el": "grid",
        "gap": 3,
        "align": "baseline",
        "children": [
          {
            "el": "logo",
            "span": "1-2",
            "slot": "siteName",
            "style": "wordmark"
          },
          {
            "el": "text",
            "span": "4-6",
            "mobile": "hide",
            "color": "textMuted",
            "slot": "tagline",
            "role": "small",
            "step": -1
          },
          {
            "el": "nav-links",
            "span": "9-12",
            "mobile": "scroll-x",
            "slot": "pages",
            "dir": "row",
            "style": "plain"
          }
        ]
      },
      {
        "el": "divider",
        "weight": 1
      }
    ]
  }
}
Component example: reference/nav.neo-grotesk-hairline.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>nav.neo-grotesk-hairline — Neo-grotesk Minimal</title>
<link rel="stylesheet" href="base.css">
<style>
  header .grid { padding: 16px 0; align-items: baseline; border-bottom: 1px solid var(--hairline); }
  .logo { grid-column: 1 / 3; font-weight: 500; text-decoration: none; }
  .desc { grid-column: 4 / 7; font-size: var(--step--1); }
  nav { grid-column: 9 / 13; display: flex; gap: 24px; font-size: calc(var(--base) * 0.9); }
  nav a { color: var(--muted); text-decoration: none; } nav a[aria-current="page"] { color: var(--text); }
  @media (max-width: 640px) { .desc { display: none; } nav { overflow-x: auto; white-space: nowrap; padding-top: 8px; } }
</style>
</head>
<body>
<header class="wrap">
  <div class="grid">
    <a class="logo" href="/">Halden</a>
    <p class="desc muted">Deployment infrastructure</p>
    <nav aria-label="Main"><a href="/product" aria-current="page">Product</a><a href="/pricing">Pricing</a><a href="/docs">Docs</a><a href="/journal">Journal</a></nav>
  </div>
</header>
</body>
</html>

Other patterns in this design

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