S

Substack

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

.cursorrules
# 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

STYLE.mdAI Agent File
---
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

How to use these files

  1. 1.Copy .cursorrules and paste it as a new file named .cursorrules in your project root.
  2. 2.Copy STYLE.md as STYLE.md in your repo root for Claude, Bolt.new, or any agent that reads Markdown context.
  3. 3.All subsequent AI-generated components will automatically match the Substack design system.

Need a custom brand?

Extract any live website in 30 seconds.

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 →