Skip to content

Now in the official shadcn registry directory.

Start free
Back to gallery
developer tools · saas

Clerk

Authentication infrastructure carried by hairline-grid structural confidence — a #d9d9de soft border lattice as the primary structural element, Geist Variable + Suisse Intl premium typography, Söhne Mono at code grade, custom 450ms cubic-bezier signature easings. Beautifully constructed legal-document precision.

clerk.comAdded 2026-05-16
Clerk - Desktop

Editorial disclaimer

Editorial note

This entry documents observable design-language patterns for educational transfer and AI-agent briefing. Screenshots and trademarks are property of their respective owners. AI2 Design is not affiliated with or endorsed by the featured brand. Inspiration here is about language and rhythm - do not reproduce brand identity, logo, product copy, or proprietary features.

Fair Use & Gallery Policy
FreePrompt kit

Copy the full design language into your agent

A typed, paste-ready design system brief - philosophy, tokens, rules, techniques, and fitness checks. Drop it into Claude, Cursor, v0 or any coding agent and it builds in Clerk’s language, not just a screenshot.

Paste into your agent. No signup, no cost.
Clerk's design language is hairline-grid structural confidence. Soft hairline borders (#d9d9de) thread the entire page as the primary layout device; Geist Variable and Suisse Intl carry the typography; Sōehne Mono handles code; and a single saturated cyan accent (#5de3ff) provides scarce chromatic punctuation. The page reads like a beautifully constructed legal document — every cell is framed, every number is tabular, every transition is deliberately long.
Main prompt
Use this capture as a design language transfer brief for my project. Adopt the palette (#ffffff ground for primary surface, #131316 dark surface for inversion zones, #d9d9de hairline border as primary structural element, #000000 primary text, #ffffff text on inversion, #747686 muted grey for secondary text, #5e5f6e tertiary text, #2f3037 elevated dark surface, #9394a1 metadata grey, #42434d background for dark cards, single saturated #5de3ff cyan accent), typography stack (Geist Variable for numerals and emphasis at sizes 10/13/16px, Suisse Intl for body and display, Sōehne Mono at 12-14px for inline code, with letter-spacing -0.12px on tight UI labels), incremental 4px spacing scale 1/4/6/8/10/12/14/16/20/24, container ladder 672/1280 (one tight reading + one wide hero), Tailwind-standard 640/768/1024/1280/1536 breakpoints, Framer Motion with custom signature easings cubic-bezier(0.33, 1, 0.68, 1) at 450ms + cubic-bezier(0.4, 0.36, 0, 1) at 300ms, 12 catalogued gradients used as atmospheric depth. Treat hairline borders as the primary brand asset — every section, card, and table cell uses them. Apply the language, not the source brand's copy.
Layout
Hairline-grid plate layout — every section bordered, every card framed; tight 672px reading width with 1280px hero canvas breakouts.
Content width
672px reading rail, 1280px hero/wide canvas.
Framing
Legal-document precision — hairline plates organise content; chromatic restraint; long-duration motion gives weight.
Grid strength
Explicit hairline grid — borders are not decoration, they are layout.

Light primary canvas with #d9d9de hairline borders threading the entire layout; dark inversion zones for inverted plates; single cyan accent #5de3ff as scarce signal.

Mode strategyLight-first canvas with dark inversion zones used for hero anchors and code-emphasised callouts. Implicit dark-variant compatibility via the inversion zone language.
  • #ffffff primary canvas — clean and bright
  • #d9d9de hairline border colour — primary structural brand element
  • #000000 primary ink text (~2,361 refs — high text density)
  • #131316 dark inversion zone background
  • #747686 muted grey for secondary text
  • #5e5f6e tertiary text
  • #2f3037 elevated dark surface for inverted cards
  • #9394a1 metadata grey for tabular figures and timestamps
  • #42434d background for dark cards on dark surfaces
  • #5de3ff cyan accent — scarce signal, scarce paint

Gradients (paste-ready)

12 gradients catalogued — atmospheric depth around hero, subtle cyan-tinted glow around key callouts, never decorative chromatic surfaces
  • Geist Variable for numerals, tabular figures, and emphasis — especially on rate cards and stats
  • Suisse Intl for body and display moments
  • Sōehne Mono at 12-14px for inline code and metadata
  • Display 32-72px in Suisse Intl 500-600; body 13-16px
  • Letter-spacing -0.12px on tight UI labels (small caps and metadata)
  • Weight ladder: 400 body, 500 emphasis, 600 display
  • Line-height 1.5 body, 1.05-1.15 display
  • 4px base unit, incremental scale 1/4/6/8/10/12/14/16/20/24
  • Section vertical rhythm: 80-120px between major sections
  • Card padding: 24-32px
  • CTA padding: 12-14px vertical, 16-24px horizontal
  • Hairline border padding: borders sit at 0 from container edges — no inset
Surface styleHairline-bordered plates. Every card and section has a #d9d9de 1px border; depth comes from inversion zones (dark plates on light pages) and atmospheric gradient.
  • 0 drop shadow on marketing chrome
  • 1px hairline border #d9d9de on every card, table cell, and section divider
  • Inversion zones (dark #131316 surfaces) sit flush — no separate border
  • Hover bumps border colour to slightly darker #c4c4c8, no lift

Techniques

Hairline-bordered plate

bg #ffffff, 1px #d9d9de border, 8-12px radius, padding 24-32px.

Inversion plate

bg #131316, no border, white text, 8-12px radius, padding 24-32px.

Cyan accent badge

bg #5de3ff at 10% opacity, text #5de3ff at full, 4-6px radius, padding 2-4px vertical, 6-10px horizontal.

Radii4 / 6 / 8 / 10 / 12 / 16Icon treatmentStroke 1.5px monoline, optical-aligned to Geist/Suisse. Cyan stroke icons for accent.Icon setsCustom monoline set, Lucide-adjacent geometry
  • Buttons: 8-10px radius
  • Cards and plates: 8-12px radius
  • Inline code: 4-6px radius
  • Inversion plates: 8-12px radius
  • Primary CTA (sign up free / book a demo)
    background
    #000000
    textColor
    #ffffff
    fontFamily
    Suisse Intl, sans-serif
    fontWeight
    500
    fontSize
    14px
    padding
    12px 20px
    borderRadius
    10px
    shadow
    none
    hover
    background subtly shifts to #1a1a1a with 450ms ease

    Tailwind

    inline-flex items-center gap-2 rounded-[10px] bg-black px-5 py-3 text-sm font-medium text-white transition-colors duration-[450ms] ease-[cubic-bezier(0.33,1,0.68,1)] hover:bg-neutral-900
  • Hairline-bordered plate
    background
    #ffffff
    border
    1px solid #d9d9de
    borderRadius
    12px
    padding
    24px
    textColor
    #000000

    Tailwind

    rounded-xl border border-[#d9d9de] bg-white p-6 text-black
  • Display headline (Suisse Intl 500)
    fontFamily
    Suisse Intl, sans-serif
    fontSize
    clamp(40px, 6vw, 72px)
    fontWeight
    500
    letterSpacing
    -0.02em
    lineHeight
    1.05
    color
    #000000

    Tailwind

    text-4xl font-medium leading-tight tracking-tight text-black md:text-6xl lg:text-7xl
  • Tabular figure / stat (Geist numerals)
    fontFamily
    Geist Variable, sans-serif
    fontSize
    32px
    fontWeight
    500
    fontFeatureSettings
    'tnum'
    letterSpacing
    -0.02em
    color
    #000000

    Tailwind

    font-[Geist] text-3xl font-medium tabular-nums tracking-tight text-black
  • Inline code (Sōehne Mono)
    fontFamily
    Sōehne Mono, ui-monospace, monospace
    fontSize
    13px
    background
    #d9d9de
    color
    #000000
    padding
    2px 6px
    borderRadius
    4px

    Tailwind

    rounded bg-[#d9d9de] px-1.5 py-0.5 font-mono text-[13px] text-black
LevelmoderateDurations150ms / 300ms / 450ms / 500ms

Easings

cubic-bezier(0.33, 1, 0.68, 1)cubic-bezier(0.4, 0.36, 0, 1)cubic-bezier(0.4, 0, 0.2, 1)
HoverCTA colour shift with 450ms cubic-bezier(0.33, 1, 0.68, 1) — signature slow ease, Card border colour bump on hover (300ms), Link underline draw-in (150ms)

Scroll patterns

  • Framer Motion section reveals — fade + 16px translate with custom 500ms ease
  • Inversion zones may animate in with stronger emphasis
  • Sticky nav fades in after 120px scroll
  • Motion has signature long duration — never use 200ms quick eases for primary interactions
  • Respect prefers-reduced-motion
  • Custom cubic-beziers are brand assets — preserve them
  • Hover shifts colour with long-duration ease, never position
  • Focus rings: 2px cyan #5de3ff ring with 2px offset
  • Active state: 95% opacity
  • Hairline border colour shifts as a hover signal
Approachmobile-first

Tailwind defaults (640/768/1024/1280/1536) — no custom ladder.

  • <768: 16px gutter, single column, hairline plates stack
  • 768-1024: 672px reading rail, plates side-by-side at 2-column
  • ≥1024: full 1280px hero canvas with multi-plate grid layouts
  • Body text #000000 on #ffffff passes WCAG AAA (21:1)
  • Hairline border #d9d9de visible but soft — passes 1.4 contrast (UI element, not text)
  • Inversion zone white on #131316 passes AAA
  • Cyan #5de3ff used carefully — passes AA on dark surfaces only, never on white at small sizes
  • Focus visible always present
  • Respect prefers-reduced-motion
Next.js (assumed from font preload patterns)Geist Variable for numerals preloaded as woff2Suisse Intl Bold + BoldItalic preloaded as woff2Sōehne Mono for inline codeFramer Motion for orchestrated section reveals

Typography + hairline-grid plates + atmospheric gradient depth are the entire visual identity. Cyan accent appears as illustration spot.

  • Geist Variable Numbers preloaded — tabular figures as brand asset
  • Suisse Intl loaded with selected weights
  • Sōehne Mono subsetted for ASCII + common operators
  • Framer Motion scoped to section reveals with custom long-duration easings
  • Use #d9d9de hairline borders as the primary structural device
  • Pair Geist Variable (numerals) with Suisse Intl (body/display)
  • Apply custom 450ms cubic-bezier(0.33, 1, 0.68, 1) easing to primary interactions
  • Reserve #5de3ff cyan for scarce accent text and badges
  • Don't remove hairline borders — they are the brand's structural identity
  • Don't paint surfaces in cyan — the accent is voice, not paint
  • Don't shorten motion durations below 300ms for primary hovers
  • Don't introduce a third type family beyond Geist + Suisse Intl + Sōehne Mono
  • Light-first canvas with dark inversion zones — implicit dark variant compatible
  • Type stack: Geist Variable + Suisse Intl + Sōehne Mono
  • Hairline border #d9d9de coverage threading every layout cell
  • Hairline border #d9d9de presence: high frequency across cards, tables, sections
  • Font-family grep: Geist + Suisse Intl + Sōehne Mono present
  • Tabular numerals: Geist Variable with font-feature-settings 'tnum' enabled
  • Motion duration: 450ms+ used for primary CTA hovers
  • Cyan #5de3ff usage: badges and accent text only, never as fill background on primary buttons

Design tokens

Observed token system

Color, type, spacing, gradients, and stacking order captured from the live page and rendered here as living, paste-ready previews.

Inspector

Observable layers

Structure, breakpoints, motion, fonts, and images captured from the live page and kept paste-ready alongside the tokens.

Depth-first walk of the meaningful sections. 9 nodes across 7 levels, shallow to deep by color.

  • body1
    • div (×2)3
      • Header1
        • div1
          • div1
            • div1
              • Nav
      • Main
      • Footer

Accessibility

Contrast matrix

192 combinations - 64 pass AA - 32 pass AAA. Each pair is previewed with its real foreground on background; APCA Lc sits alongside the WCAG 2.1 ratio for draft WCAG 3 awareness.

Normal text passes AAALarge text passes AAA
fg
#000000
bg
#FFFFFF
APCA Lc
+106
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FFFFFF
bg
#000000
APCA Lc
-108
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#131316
bg
#FFFFFF
APCA Lc
+105
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FFFFFF
bg
#131316
APCA Lc
-107
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#D9D9DE
APCA Lc
+84
Use
foreground on neutral
Normal text passes AAALarge text passes AAA
fg
#D9D9DE
bg
#000000
APCA Lc
-84
Use
neutral on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#5DE3FF
APCA Lc
+80
Use
foreground on accent
Normal text passes AAALarge text passes AAA
fg
#5DE3FF
bg
#000000
APCA Lc
-80
Use
accent on foreground
Normal text passes AAALarge text passes AAA
fg
#D9D9DE
bg
#131316
APCA Lc
-83
Use
neutral on foreground

Images

Image strategy

Observable image posture - total count, lazy-loading ratio, and format mix. The hero image is measured above the fold.

Total images
30
Lazy loaded
94%
Format mix
  • unknown48 · 60%
  • svg25 · 31%
  • webp6 · 8%
  • avif1 · 1%

Hero image

https://clerk.com/_next/static/media/circuit-lines@2xl.0~0tt7bohu08~.webp?dpl=dpl_FVH57DgvDYyCACPQozPWRkBrYvyY
Format
WEBP
Dimensions
1938x1774
Loading
auto
srcset
no
Industry
developer-tools
Industry
saas
Theme
Light
Added
2026-05-16

FAQ

Questions people ask about Clerk

3questions

Answers are pulled from the curator verdict and design brief - the same text your AI agent sees when it paste-reads this page.

Compare this with