taste-skill / Style guides / Clerk style
How to build a UI in the Clerk style
Clerk (clerk.com) reads as Tactile Micro-Shadow Auth Components & Electric Violet — Cool alabaster #F7F7F8 canvas with floating #FFFFFF auth cards, multi-layered ring micro-shadows, tight -0.035em Geist headings, SoehneMono snippets, and #6C47FF electric violet accents. This guide turns its extracted computed styles into an implementation kit: a live preview, the exact palette and type scale, real button and card recipes, the rules to avoid, and drop-in CSS variables, Tailwind config and a Cursor / Claude Code SKILL.md snippet.
Source: computed styles extracted from
https://clerk.com on 2026-10-26 by the taste-skill extractor. Brand fonts may be proprietary; previews fall back to Inter / system fonts. Clerk is a trademark of its owner; this page documents publicly visible styling for reference and is not affiliated with Clerk.Live preview with Clerk tokens
Clerk style · light
Ship the product, not the pixels.
Preview text rendered with the extracted Clerk canvas, text, muted and accent tokens.
Card on extracted card recipe
Accent link: #6C47FF · border
rgba(0, 0, 0, 0.06)Color palette (light mode)
| Role | Value | Tailwind | Usage |
|---|---|---|---|
| canvasBg | #F7F7F8 | bg-[#F7F7F8] | Primary Clerk page canvas |
| surfaceElevated | #FFFFFF | bg-white | Primary elevated card & bento surface |
| surfaceSecondary | #F7F7F8 | bg-[#F7F7F8] | Secondary interactive container / hover fill |
| borderPrimary | rgba(0, 0, 0, 0.06) | border-black/[0.06] | Primary structural divider (1px rgba(0,0,0,0.06)) |
| borderSecondary | #EEEEF0 | border-[#EEEEF0] | Secondary nested module or pill border |
| textPrimary | #131316 | text-[#131316] | Hero H1, section H2 & high-contrast foreground |
| textMuted | #747686 | text-[#747686] | Lead paragraphs, descriptions & muted labels |
| accentPrimary | #6C47FF | bg-[#6C47FF] | Primary interactive CTA & brand highlight (9999px / 6px) |
| accentSecondary | #6C47FF | text-[#6C47FF] | Secondary badge, syntax or telemetry highlight |
Typography
Heading Geist / geistNumbers · body Inter / Geist · mono soehneMono
| Level | Computed spec |
|---|---|
| Hero H1 | 56px | line-height 64px (leading-[1.14]) | letter-spacing -1.96px (tracking-[-0.035em]) | weight 700 (font-[700]) | color #131316 (text-[#131316]) | font geistNumbers |
| Section H2 (Primary) | 20px | line-height 26.7px (leading-[1.33]) | letter-spacing 0px (tracking-[0em]) | weight 700 (font-[700]) | color #212126 (text-[#212126]) | font ui-sans-serif |
| Card / Feature H3 | Subheading with crisp line-height |
| Body Copy (Paragraph) | 18px | line-height 27.9px (leading-[1.55]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color #5E5F6E (text-[#5E5F6E]) | font geistNumbers |
| Monospace / Code Block | 13px | line-height 20px (leading-[1.54]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color #131316 (text-[#131316]) | font soehneMono |
Spacing, radius, depth and motion
| Token family | Most frequent values (count on page) |
|---|---|
| Border radius | 6px ×77 · 8px ×36 · 4px ×16 · 12px ×6 · 16.5px ×6 · 12.5px ×5 |
| Box shadow | rgba(19, 19, 22, 0.024) 0px 0px 0px 1px, rgba(19, 19, 22, 0.024) 0px 1px 1px -0.5px, rgba(19, 19, 22, 0.024) 0px 3px 3px -1.5px, rgba(19, 19, 22, 0.024) 0px 6px 6px -3px, rgba(19, 19, 22, 0.024) 0px 12px 12px -6px, rgba(19, 19, 22, 0.024) 0px 24px 24px -12px ×60 · rgb(217, 217, 222) 0px 0px 0px 0.5px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px, rgba(0, 0, 0, 0.08) 0px 0px 2px 0px ×16 · rgba(19, 19, 22, 0.05) 0px 0px 0px 1px, rgba(19, 19, 22, 0.05) 0px 1px 1px -0.5px, rgba(19, 19, 22, 0.05) 0px 3px 3px -1.5px, rgba(19, 19, 22, 0.05) 0px 6px 6px -3px, rgba(19, 19, 22, 0.05) 0px 12px 12px -6px, rgba(19, 19, 22, 0.05) 0px 24px 24px -12px ×15 |
| Grid / flex gap | 8px ×55 · 6px ×29 · 12px ×28 · 4px ×15 · 16px ×13 · 20px ×13 |
| Container max-width | 720px ×2 · 1408px ×1 · 1264px ×1 |
| Section vertical padding | 0px / 32px ×1 · 164px / 0px ×1 |
| Easing | cubic-bezier(0.4, 0, 0.2, 1) ×29 · cubic-bezier(0.33, 1, 0.68, 1) ×26 · cubic-bezier(0, 0, 0.2, 1) ×17 |
| Duration | 0.45s ×24 · 0.5s ×17 · 0.2s ×17 · 0.15s ×12 |
Component recipes
Buttons (1 distinct)
| Rendered | Height | Padding | Radius | Background / Text | Border | Font |
|---|---|---|---|---|---|---|
| Button | 30px | 0px 12px | 9999px | rgba(20, 20, 20, 0.05)#131316 | none | 13px / 500 |
Cards (7 distinct)
| # | Background | Border | Radius | Padding | Shadow |
|---|---|---|---|---|---|
| 1 | transparent | none | 16.5px | 0px 0px | rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, oklab(0.188081 0.0016512 -0.00579907 / 0.06) 0px 0px 0px 1px inset, rgba(0, 0, 0, 0) 0px 0px 0px 0px |
| 2 | #FFFFFF | none | 8px | 0px 0px | rgb(217, 217, 222) 0px 0px 0px 0.5px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px, rgba(0, 0, 0, 0.08) 0px 0px 2px 0px, rgba(19, 19, 22, 0.05) 0px 0px 0px 1px, rgba(19, 19, 22, 0.05) 0px 1px 1px -0.5px, rgba(19, 19, 22, 0.05) 0px 3px 3px -1.5px, rgba(19, 19, 22, 0.05) 0px 6px 6px -3px, rgba(19, 19, 22, 0.05) 0px 12px 12px -6px, rgba(19, 19, 22, 0.05) 0px 24px 24px -12px |
| 3 | #F7F7F8 | none | 8px | 0px 0px | rgba(19, 19, 22, 0.05) 0px 0px 0px 1px, rgba(19, 19, 22, 0.05) 0px 1px 1px -0.5px, rgba(19, 19, 22, 0.05) 0px 3px 3px -1.5px, rgba(19, 19, 22, 0.05) 0px 6px 6px -3px, rgba(19, 19, 22, 0.05) 0px 12px 12px -6px, rgba(19, 19, 22, 0.05) 0px 24px 24px -12px |
| 4 | transparent | none | 6px | 0px 0px | rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, oklab(0 0 0 / 0.09) 0px 0px 0px 1px, rgba(0, 0, 0, 0) 0px 0px 0px 0px |
Rules: what never to do in the Clerk style
- NEVER substitute generic uncalibrated gray backgrounds for Clerk’s exact
#F7F7F8canvas and#FFFFFFsurface pairing. - NEVER replace
Geist / geistNumbersdisplay typography or ignore its signature scale (56px / -0.035em (w700)). - NEVER use thick opaque borders that clash with
rgba(0, 0, 0, 0.06)(1px rgba(0,0,0,0.06)). - NEVER deviate from the signature button geometry (
9999px / 6px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with
soehneMono.
Copy-paste kit
CSS variables
:root {
/* Clerk style — extracted from clerk.com by taste-skill */
--canvas: #F7F7F8;
--surface: #FFFFFF;
--text: #131316;
--text-muted: #747686;
--accent: #6C47FF;
--border: rgba(0, 0, 0, 0.06);
--font-heading: 'Geist / geistNumbers', Inter, system-ui, -apple-system, sans-serif;
--font-body: 'Inter / Geist', Inter, system-ui, -apple-system, sans-serif;
--font-mono: 'soehneMono', 'JetBrains Mono', ui-monospace, monospace;
--h1-size: 56px;
--h1-tracking: -0.035em;
--h1-weight: 700;
--radius-button: 9999px;
--radius-common: 6px;
--shadow-common: rgba(19, 19, 22, 0.024) 0px 0px 0px 1px, rgba(19, 19, 22, 0.024) 0px 1px 1px -0.5px, rgba(19, 19, 22, 0.024) 0px 3px 3px -1.5px, rgba(19, 19, 22, 0.024) 0px 6px 6px -3px, rgba(19, 19, 22, 0.024) 0px 12px 12px -6px, rgba(19, 19, 22, 0.024) 0px 24px 24px -12px;
--ease: cubic-bezier(0.4, 0, 0.2, 1);
--duration: 0.45s;
}tailwind.config.js
// tailwind.config.js — Clerk style tokens (taste-skill)
module.exports = {
theme: {
extend: {
colors: {
canvas: "#F7F7F8",
surface: "#FFFFFF",
ink: "#131316",
muted: "#747686",
accent: "#6C47FF",
line: "rgba(0, 0, 0, 0.06)",
},
fontFamily: {
heading: ["Geist / geistNumbers", 'Inter', 'system-ui', 'sans-serif'],
sans: ["Inter / Geist", 'Inter', 'system-ui', 'sans-serif'],
mono: ["soehneMono", 'ui-monospace', 'monospace'],
},
fontSize: { display: ["56px", { letterSpacing: "-0.035em", fontWeight: "700" }] },
borderRadius: { button: "9999px", card: "6px" },
boxShadow: { brand: "rgba(19, 19, 22, 0.024) 0px 0px 0px 1px, rgba(19, 19, 22, 0.024) 0px 1px 1px -0.5px, rgba(19, 19, 22, 0.024) 0px 3px 3px -1.5px, rgba(19, 19, 22, 0.024) 0px 6px 6px -3px, rgba(19, 19, 22, 0.024) 0px 12px 12px -6px, rgba(19, 19, 22, 0.024) 0px 24px 24px -12px" },
transitionTimingFunction: { brand: "cubic-bezier(0.4, 0, 0.2, 1)" },
},
},
};.cursor/skills/clerk-style/SKILL.md
--- name: clerk-style description: Build UI in the Clerk visual style (Tactile Micro-Shadow Auth Components & Electric Violet). Use when the user asks for a Clerk-like look. --- # Clerk Style — Quick Rules (source: clerk.com, extracted by taste-skill) ## Tokens - canvasBg: #F7F7F8 — Primary Clerk page canvas - surfaceElevated: #FFFFFF — Primary elevated card & bento surface - surfaceSecondary: #F7F7F8 — Secondary interactive container / hover fill - borderPrimary: rgba(0, 0, 0, 0.06) — Primary structural divider (1px rgba(0,0,0,0.06)) - borderSecondary: #EEEEF0 — Secondary nested module or pill border - textPrimary: #131316 — Hero H1, section H2 & high-contrast foreground - textMuted: #747686 — Lead paragraphs, descriptions & muted labels - accentPrimary: #6C47FF — Primary interactive CTA & brand highlight (9999px / 6px) - accentSecondary: #6C47FF — Secondary badge, syntax or telemetry highlight ## Typography - Heading font: Geist / geistNumbers; body: Inter / Geist; mono: soehneMono - Hero H1: 56px | line-height 64px (leading-[1.14]) | letter-spacing -1.96px (tracking-[-0.035em]) | weight 700 (font-[700]) | color #131316 (text-[#131316]) | font geistNumbers - Section H2 (Primary): 20px | line-height 26.7px (leading-[1.33]) | letter-spacing 0px (tracking-[0em]) | weight 700 (font-[700]) | color #212126 (text-[#212126]) | font ui-sans-serif - Card / Feature H3: Subheading with crisp line-height - Body Copy (Paragraph): 18px | line-height 27.9px (leading-[1.55]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color #5E5F6E (text-[#5E5F6E]) | font geistNumbers ## Components - Primary button: height 30px, padding 0px 12px, radius 9999px, bg rgba(20, 20, 20, 0.05), text #131316, 13px / 500 - Card: bg transparent, border none, radius 16.5px, padding 0px 0px ## Never - NEVER substitute generic uncalibrated gray backgrounds for Clerk’s exact #F7F7F8 canvas and #FFFFFF surface pairing. - NEVER replace Geist / geistNumbers display typography or ignore its signature scale (56px / -0.035em (w700)). - NEVER use thick opaque borders that clash with rgba(0, 0, 0, 0.06) (1px rgba(0,0,0,0.06)). - NEVER deviate from the signature button geometry (9999px / 6px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with soehneMono. Full 120-line spec: https://taste-skill.pages.dev/taste/clerk/
Or install the full spec
npx taste-skill add clerk
Related
Clerk full token specClerk CardsClerk Pricing TableClerk vs WorkOSVercel vs ClerkSupabase vs ClerkClerk vs Upstash
Similar styles
Get all 30 full SKILL.md specs (Cursor / Claude Code / Codex ready) plus the Pro growth skills.
See taste-skill Pro →