taste-skill / Style guides / Notion style
How to build a UI in the Notion style
Notion (notion.so) reads as Warm Workspace Canvas & Monumental NotionInter Display — Crisp #FFFFFF & warm stone #F6F5F4 workspace surfaces with rgba(0,0,0,0.1) hairlines, monumental 96px NotionInter headlines (-0.048em tracking), and #0075DE cobalt + #FFB110 amber 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://www.notion.so on 2026-10-26 by the taste-skill extractor. Brand fonts may be proprietary; previews fall back to Inter / system fonts. Notion is a trademark of its owner; this page documents publicly visible styling for reference and is not affiliated with Notion.Live preview with Notion tokens
Notion style · light
Ship the product, not the pixels.
Preview text rendered with the extracted Notion canvas, text, muted and accent tokens.
Card on extracted card recipe
Accent link: #0075DE · border
rgba(0, 0, 0, 0.1)Color palette (light mode)
| Role | Value | Tailwind | Usage |
|---|---|---|---|
| canvasBg | #FFFFFF | bg-white | Primary Notion page canvas |
| surfaceElevated | #F6F5F4 | bg-[#F6F5F4] | Primary elevated card & bento surface |
| surfaceSecondary | #F9F9F8 | bg-[#F9F9F8] | Secondary interactive container / hover fill |
| borderPrimary | rgba(0, 0, 0, 0.1) | border-black/[0.1] | Primary structural divider (1px rgba(0,0,0,0.1)) |
| borderSecondary | rgba(0, 0, 0, 0.1) | border-black/[0.1] | Secondary nested module or pill border |
| textPrimary | #000000 | text-black | Hero H1, section H2 & high-contrast foreground |
| textMuted | #615D59 | text-[#615D59] | Lead paragraphs, descriptions & muted labels |
| accentPrimary | #0075DE | bg-[#0075DE] | Primary interactive CTA & brand highlight (8px) |
| accentSecondary | #005BAB | text-[#005BAB] | Secondary badge, syntax or telemetry highlight |
Typography
Heading NotionInter · body NotionInter · mono SFMono-Regular
| Level | Computed spec |
|---|---|
| Hero H1 | 96px | line-height 100px (leading-[1.04]) | letter-spacing -4.6px (tracking-[-0.048em]) | weight 600 (font-[600]) | color rgba(0, 0, 0, 0.95) (text-[rgba(0,0,0,0.95)]) | font NotionInter |
| Section H2 (Primary) | 54px | line-height 56px (leading-[1.04]) | letter-spacing -1.88px (tracking-[-0.035em]) | weight 700 (font-[700]) | color rgba(0, 0, 0, 0.95) (text-[rgba(0,0,0,0.95)]) | font NotionInter |
| Card / Feature H3 | 16px | line-height 24px (leading-[1.5]) | letter-spacing 0px (tracking-[0em]) | weight 700 (font-[700]) | color #000000 (text-black) | font NotionInter |
| Body Copy (Paragraph) | 20px | line-height 28px (leading-[1.4]) | letter-spacing -0.12px (tracking-[-0.006em]) | weight 400 (font-[400]) | color rgba(0, 0, 0, 0.9) (text-[rgba(0,0,0,0.9)]) | font NotionInter |
| Monospace / Code Block | 13px–14px | line-height 1.5 (leading-relaxed) | font monospace |
Spacing, radius, depth and motion
| Token family | Most frequent values (count on page) |
|---|---|
| Border radius | 8px ×52 · 4px ×20 · 12px ×17 · 12px 12px 0px 0px ×2 · 12px 0px 0px ×2 |
| Box shadow | rgba(0, 0, 0, 0.01) 0px 0.175px 1.041px 0px, rgba(0, 0, 0, 0.02) 0px 0.8px 2.925px 0px, rgba(0, 0, 0, 0.027) 0px 2.025px 7.847px 0px, rgba(0, 0, 0, 0.04) 0px 4px 18px 0px ×4 · rgba(0, 0, 0, 0.1) 0px 1px 0px 0px ×1 · rgba(0, 0, 0, 0.008) 0px 0.667px 3.502px 0px, rgba(0, 0, 0, 0.016) 0px 2.933px 7.252px 0px, rgba(0, 0, 0, 0.02) 0px 7.2px 14.462px 0px, rgba(0, 0, 0, 0.024) 0px 13.867px 28.348px 0px, rgba(0, 0, 0, 0.03) 0px 23.333px 52.123px 0px, rgba(0, 0, 0, 0.04) 0px 36px 89px 0px ×1 |
| Grid / flex gap | 8px ×44 · 0px 8px ×23 · 12px ×22 · 16px ×12 · 24px ×4 · 8px normal ×3 |
| Container max-width | 1184px ×2 · 1252px ×2 · 891.925px ×2 · 1380px ×1 |
| Section vertical padding | 96px / 96px ×2 · 64px / 64px ×1 |
| Easing | cubic-bezier(0.42, 0, 1, 1) ×65 · ease ×7 · cubic-bezier(0.645, 0.045, 0.355, 1) ×6 |
| Duration | 0.2s ×72 · 0.15s ×5 · 0.3s ×3 |
Component recipes
Buttons (5 distinct)
| Rendered | Height | Padding | Radius | Background / Text | Border | Font |
|---|---|---|---|---|---|---|
| Get Notion free | 36px | 4px 14px | 8px | #0075DE#FFFFFF | none | 16px / 500 |
| Get Notion free | 38px | 6px 15px | 8px | #0075DE#FFFFFF | none | 16px / 500 |
| Request a demo | 38px | 6px 15px | 8px | #E6F3FE#005BAB | none | 16px / 500 |
| Request a demo | 38px | 6px 15px | 8px | #FFFFFF#097FE8 | none | 16px / 500 |
| English (US) | 38px | 8px 16px | 9999px | #FFFFFFrgba(0, 0, 0, 0.95) | 1px solid rgba(0, 0, 0, 0.1) | 14px / 500 |
Cards (4 distinct)
| # | Background | Border | Radius | Padding | Shadow |
|---|---|---|---|---|---|
| 1 | transparent | 1px solid rgba(0, 0, 0, 0.1) | 8px | 0px 0px | rgba(0, 0, 0, 0.008) 0px 0.667px 3.502px 0px, rgba(0, 0, 0, 0.016) 0px 2.933px 7.252px 0px, rgba(0, 0, 0, 0.02) 0px 7.2px 14.462px 0px, rgba(0, 0, 0, 0.024) 0px 13.867px 28.348px 0px, rgba(0, 0, 0, 0.03) 0px 23.333px 52.123px 0px, rgba(0, 0, 0, 0.04) 0px 36px 89px 0px |
| 2 | transparent | none | 12px 12px 0px 0px | 0px 0px | rgba(0, 0, 0, 0.01) 0px 0.175px 1.041px 0px, rgba(0, 0, 0, 0.02) 0px 0.8px 2.925px 0px, rgba(0, 0, 0, 0.027) 0px 2.025px 7.847px 0px, rgba(0, 0, 0, 0.04) 0px 4px 18px 0px |
| 3 | transparent | none | 12px 0px 0px | 0px 0px | rgba(0, 0, 0, 0.01) 0px 0.175px 1.041px 0px, rgba(0, 0, 0, 0.02) 0px 0.8px 2.925px 0px, rgba(0, 0, 0, 0.027) 0px 2.025px 7.847px 0px, rgba(0, 0, 0, 0.04) 0px 4px 18px 0px |
| 4 | #FFFFFF | 1px solid rgba(0, 0, 0, 0.1) | 12px | 24px 24px | none |
Rules: what never to do in the Notion style
- NEVER substitute generic uncalibrated gray backgrounds for Notion’s exact
#FFFFFFcanvas and#F6F5F4surface pairing. - NEVER replace
NotionInterdisplay typography or ignore its signature scale (96px / -0.048em (w600)). - NEVER use thick opaque borders that clash with
rgba(0, 0, 0, 0.1)(1px rgba(0,0,0,0.1)). - NEVER deviate from the signature button geometry (
8px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with
SFMono-Regular.
Copy-paste kit
CSS variables
:root {
/* Notion style — extracted from notion.so by taste-skill */
--canvas: #FFFFFF;
--surface: #F6F5F4;
--text: #000000;
--text-muted: #615D59;
--accent: #0075DE;
--border: rgba(0, 0, 0, 0.1);
--font-heading: NotionInter, Inter, system-ui, -apple-system, sans-serif;
--font-body: NotionInter, Inter, system-ui, -apple-system, sans-serif;
--font-mono: 'SFMono-Regular', 'JetBrains Mono', ui-monospace, monospace;
--h1-size: 96px;
--h1-tracking: -0.048em;
--h1-weight: 600;
--radius-button: 8px;
--radius-common: 8px;
--shadow-common: rgba(0, 0, 0, 0.01) 0px 0.175px 1.041px 0px, rgba(0, 0, 0, 0.02) 0px 0.8px 2.925px 0px, rgba(0, 0, 0, 0.027) 0px 2.025px 7.847px 0px, rgba(0, 0, 0, 0.04) 0px 4px 18px 0px;
--ease: cubic-bezier(0.42, 0, 1, 1);
--duration: 0.2s;
}tailwind.config.js
// tailwind.config.js — Notion style tokens (taste-skill)
module.exports = {
theme: {
extend: {
colors: {
canvas: "#FFFFFF",
surface: "#F6F5F4",
ink: "#000000",
muted: "#615D59",
accent: "#0075DE",
line: "rgba(0, 0, 0, 0.1)",
},
fontFamily: {
heading: ["NotionInter", 'Inter', 'system-ui', 'sans-serif'],
sans: ["NotionInter", 'Inter', 'system-ui', 'sans-serif'],
mono: ["SFMono-Regular", 'ui-monospace', 'monospace'],
},
fontSize: { display: ["96px", { letterSpacing: "-0.048em", fontWeight: "600" }] },
borderRadius: { button: "8px", card: "8px" },
boxShadow: { brand: "rgba(0, 0, 0, 0.01) 0px 0.175px 1.041px 0px, rgba(0, 0, 0, 0.02) 0px 0.8px 2.925px 0px, rgba(0, 0, 0, 0.027) 0px 2.025px 7.847px 0px, rgba(0, 0, 0, 0.04) 0px 4px 18px 0px" },
transitionTimingFunction: { brand: "cubic-bezier(0.42, 0, 1, 1)" },
},
},
};.cursor/skills/notion-style/SKILL.md
--- name: notion-style description: Build UI in the Notion visual style (Warm Workspace Canvas & Monumental NotionInter Display). Use when the user asks for a Notion-like look. --- # Notion Style — Quick Rules (source: notion.so, extracted by taste-skill) ## Tokens - canvasBg: #FFFFFF — Primary Notion page canvas - surfaceElevated: #F6F5F4 — Primary elevated card & bento surface - surfaceSecondary: #F9F9F8 — Secondary interactive container / hover fill - borderPrimary: rgba(0, 0, 0, 0.1) — Primary structural divider (1px rgba(0,0,0,0.1)) - borderSecondary: rgba(0, 0, 0, 0.1) — Secondary nested module or pill border - textPrimary: #000000 — Hero H1, section H2 & high-contrast foreground - textMuted: #615D59 — Lead paragraphs, descriptions & muted labels - accentPrimary: #0075DE — Primary interactive CTA & brand highlight (8px) - accentSecondary: #005BAB — Secondary badge, syntax or telemetry highlight ## Typography - Heading font: NotionInter; body: NotionInter; mono: SFMono-Regular - Hero H1: 96px | line-height 100px (leading-[1.04]) | letter-spacing -4.6px (tracking-[-0.048em]) | weight 600 (font-[600]) | color rgba(0, 0, 0, 0.95) (text-[rgba(0,0,0,0.95)]) | font NotionInter - Section H2 (Primary): 54px | line-height 56px (leading-[1.04]) | letter-spacing -1.88px (tracking-[-0.035em]) | weight 700 (font-[700]) | color rgba(0, 0, 0, 0.95) (text-[rgba(0,0,0,0.95)]) | font NotionInter - Card / Feature H3: 16px | line-height 24px (leading-[1.5]) | letter-spacing 0px (tracking-[0em]) | weight 700 (font-[700]) | color #000000 (text-black) | font NotionInter - Body Copy (Paragraph): 20px | line-height 28px (leading-[1.4]) | letter-spacing -0.12px (tracking-[-0.006em]) | weight 400 (font-[400]) | color rgba(0, 0, 0, 0.9) (text-[rgba(0,0,0,0.9)]) | font NotionInter ## Components - Primary button: height 36px, padding 4px 14px, radius 8px, bg #0075DE, text #FFFFFF, 16px / 500 - Card: bg transparent, border 1px solid rgba(0, 0, 0, 0.1), radius 8px, padding 0px 0px ## Never - NEVER substitute generic uncalibrated gray backgrounds for Notion’s exact #FFFFFF canvas and #F6F5F4 surface pairing. - NEVER replace NotionInter display typography or ignore its signature scale (96px / -0.048em (w600)). - NEVER use thick opaque borders that clash with rgba(0, 0, 0, 0.1) (1px rgba(0,0,0,0.1)). - NEVER deviate from the signature button geometry (8px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with SFMono-Regular. Full 120-line spec: https://taste-skill.pages.dev/taste/notion/
Or install the full spec
npx taste-skill add notion
Related
Notion full token specNotion ButtonsNotion CardsNotion Pricing TableAttio vs NotionCal.com vs NotionRaycast vs NotionCursor vs Notion
Similar styles
Get all 30 full SKILL.md specs (Cursor / Claude Code / Codex ready) plus the Pro growth skills.
See taste-skill Pro →