Consumer & Media · Bold orange — independent publishing with newsletter-native warmth.
Color Palette
Primary
#FF6719
Secondary
#F5F5F5
Accent 1
#1A1A1A
Typography
Spectral
The quick brown fox
jumps over the lazy dog
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Component Preview
Navigation Bar
Substack · Features · Pricing
#1A1A1A — accent
Spacing Scale (4px base)
4
8
16
24
32
48
# Substack Design System — .cursorrules
# Generated by StyleExtract · styleextract.com/vault/substack
You are a senior frontend developer building UI that matches the Substack design system exactly.
Read this entire file before writing any component.
## Brand Identity
Company : Substack
Primary : #FF6719
Secondary : #F5F5F5
Accent : #1A1A1A
Font : Spectral, Georgia, serif
Radius : 6px
Voice : Bold orange — independent publishing with newsletter-native warmth.
## CSS Custom Properties
```css
:root {
--color-primary: #FF6719;
--color-secondary: #F5F5F5;
--color-accent: #1A1A1A;
--color-text: #1D1D1F;
--color-surface: #FFFFFF;
--color-border: #E5E5E7;
--font-sans: "Spectral", system-ui, -apple-system, sans-serif;
--radius: 6px;
}
```
## Tailwind Config
```js
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
primary: "#FF6719",
secondary: "#F5F5F5",
accent: "#1A1A1A",
},
fontFamily: {
sans: ["Spectral", "system-ui", "sans-serif"],
},
borderRadius: {
brand: "6px",
},
},
},
};
```
## Typography
```
heading-font: Spectral, Georgia, serif
heading-weight: 700
heading-tracking: -0.02em
body-font: Spectral, Georgia, serif
body-size: 16px
body-line-height: 1.6
```
## Spacing Scale
Base: 4px | Scale: 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96px
Never use arbitrary values like 13px, 22px, or 50px.
## Component Rules
### Primary Button
background-color: #FF6719
color: #FFFFFF
border-radius: 6px
padding: 12px 24px
font-weight: 600
font-size: 14px
transition: opacity 0.15s
&:hover { opacity: 0.88 }
### Secondary Button
background-color: transparent
border: 1.5px solid #FF6719
color: #FF6719
border-radius: 6px
padding: 11px 23px
### Card
background: #FFFFFF
border: 1px solid #E5E5E7
border-radius: 16px
padding: 24px
box-shadow: 0 1px 3px rgba(0,0,0,0.08)
### Navigation
background: #F5F5F5
color: #1D1D1F
height: 60px
padding: 0 24px
```
## Rules
DO:
- Use the exact hex values defined in CSS Custom Properties
- Maintain Substack's aesthetic: Bold orange — independent publishing with newsletter-native warmth.
- Apply 4px base-unit spacing throughout
- Use Spectral for all text elements
- Meet WCAG AA contrast (4.5:1 minimum for body text)
DON'T:
- Invent colors outside the defined palette
- Use system-default blue (#0000EE) for links — use var(--color-primary)
- Apply border-radius values not on the brand scale
- Use font-weight below 400 or above 900
2,587 characters
--- brand: name: "Substack" category: "Consumer & Media" primary: "#FF6719" secondary: "#F5F5F5" accent: "#1A1A1A" typography: heading: "Spectral, Georgia, serif" headingWeight: 700 headingTracking: "-0.02em" body: "Spectral, Georgia, serif" bodySize: "16px" lineHeight: 1.6 spacing: base: 4 scale: [4, 8, 12, 16, 24, 32, 48, 64, 96] shape: radiusSm: "4px" radiusMd: "6px" radiusLg: "16px" radiusXl: "24px" --- # Substack Design System > AI Agent Context — read this entire file before generating any UI for Substack > Source: StyleExtract Vault · styleextract.com/vault/substack ## Brand Overview Bold orange — independent publishing with newsletter-native warmth. ## Color System | Role | Hex | Usage | |-----------|-----------|-------------------------------| | Primary | `#FF6719` | CTAs, links, key accents | | Secondary | `#F5F5F5` | Backgrounds, headings | | Accent | `#1A1A1A` | Highlights, badges, icons | | Surface | `#FFFFFF` | Card backgrounds | | Border | `#E5E5E7` | Dividers, outlines | ALWAYS use `#FF6719` for primary interactive elements and CTAs. NEVER invent colors outside the palette above. ## Typography - **Heading font**: Spectral, Georgia, serif - **Heading weight**: 700 / letter-spacing −0.02em - **Body font**: Spectral, Georgia, serif - **Body size**: 16px / line-height 1.6 ## Spacing System Base unit is **4px**. Allowed values: 4, 8, 12, 16, 24, 32, 48, 64, 96px. Never use arbitrary values. ## Component Patterns ### Buttons ``` Primary: bg #FF6719 · text #FFFFFF · rounded-[6px] · px-6 py-3 · font-semibold Secondary: transparent · border-[#FF6719] · text-[#FF6719] · px-6 py-3 ``` ### Cards ``` bg white (dark: #1C1C1E) · border #E5E5E7 (dark: #2C2C2E) · rounded-2xl · p-6 · shadow-sm ``` ### Navigation ``` bg #F5F5F5 · text #1D1D1F · h-[60px] · px-6 · logo-left · links-right ``` ## Accessibility - All text WCAG AA (4.5:1 minimum) - Interactive targets: 44×44px minimum - Never convey state via color alone ## Brand Voice Bold orange — independent publishing with newsletter-native warmth.
2,148 characters
.cursorrules and paste it as a new file named .cursorrules in your project root.STYLE.md as STYLE.md in your repo root for Claude, Bolt.new, or any agent that reads Markdown context.Need a custom brand?
Get a custom .cursorrules, STYLE.md, 17-page PDF brand book, CSS variables, Tailwind config, Figma tokens, and AI brand voice — all generated from the live site.
Extract a brand →