# AFFiNE design system

> AFFiNE design system measured from affine.pro: Inter font, #1E96EB primary on #F8F8F7, 12 color hex codes, type scale, spacing and a free DESIGN.md.

Canonical page: https://sitepeel.dev/design-md/affine.pro/

AFFiNE’s website (affine.pro) uses the Inter font and #1E96EB as its main color on a #F8F8F7 background. Measured by Sitepeel on November 5, 2026.

## What font does AFFiNE use?

AFFiNE uses Inter (weights 400, 500 and 600) on affine.pro. Page titles are 90px at weight 500 (40px on phones) and body text is 16px. Measured on November 5, 2026.

- Inter (weights 400, 500, 600)

## AFFiNE colors: palette and hex codes

AFFiNE’s main colors are #F8F8F7 (snow) for the background, #424149 (cool graphite) for text and #1E96EB (vivid blue) as the main accent. Measured on November 5, 2026.

- #F8F8F7: snow
- #424149: cool graphite
- #000000: near black
- #505050: slate
- #5E5E5E: slate
- #FFFFFF: white
- #1E96EB: vivid blue

## What is AFFiNE built with?

AFFiNE’s website (affine.pro) is built with Nuxt, Vue.js, Element Plus, Cloudflare and Google Fonts. Measured on November 5, 2026.

- JavaScript framework: Nuxt 3.13.2, Vue.js 3.5.12
- Hosting & CDN: Cloudflare
- Analytics: Cloudflare Web Analytics, Google Analytics, Google Tag Manager
- Marketing & support: Cal.com
- UI & CSS: Element Plus
- Fonts & icons: Google Fonts

## Questions and answers

### What font does AFFiNE use?

AFFiNE’s website uses Inter (weights 400, 500 and 600). Page titles are 90px at weight 500 (40px on phones) and body text is 16px. Measured on November 5, 2026.

### What are the AFFiNE colors and hex codes?

On affine.pro: #F8F8F7 (snow) for the background, #424149 (cool graphite) for text and #1E96EB (vivid blue) as the main accent. The color palette above lists all 12 colors with their hex codes and where each one is used.

### What is the AFFiNE design system?

The design system on this page is affine.pro’s, as measured on November 5, 2026: Inter type, #1E96EB as the main color and 16px corners, written down as a DESIGN.md. It is not AFFiNE’s own documentation.

### What is AFFiNE built with?

AFFiNE’s website (affine.pro) is built with Nuxt, Vue.js, Element Plus, Cloudflare and Google Fonts. The full tech stack Sitepeel found: Nuxt, Vue.js, Cloudflare, Cloudflare Web Analytics, Cal.com, Element Plus, Google Fonts, Google Analytics and Google Tag Manager. Measured on November 5, 2026.

### What is the AFFiNE DESIGN.md?

A plain-text file with AFFiNE’s measured colors, type, spacing, corners and components as tokens, plus short rules, in the DESIGN.md format Google published with Stitch. Your AI coding agent reads it and builds in this style. More about DESIGN.md.

### How do I use it with Claude Code or Cursor?

Download the file and put it in your project’s root folder, then ask your agent to follow DESIGN.md. Step-by-step guides: Claude Code, Cursor, Codex, GitHub Copilot.

### Is this AFFiNE’s official design system?

No. Sitepeel measured it from affine.pro’s public page on November 5, 2026. It is an independent analysis, not made or approved by AFFiNE.

### Can I use AFFiNE’s style in my own product?

Use it to learn, prototype and compare. For a real product, make the style your own, and never copy AFFiNE’s logo, name, pictures or text.

### How accurate are the values?

Each value was measured on the rendered page after it fully loaded, on desktop and mobile: colors where they appear, type with tracking, spacing, corners, shadows and hover states. Sites change, so check the date at the top.

## Files

- [DESIGN.md](https://sitepeel.dev/design-md/affine.pro/DESIGN.md): the plain file to put in your project.
- [All brand DESIGN.md files](https://sitepeel.dev/design-md/examples/index.md)

Independent analysis by Sitepeel (sitepeel.dev), not affiliated with AFFiNE.

## The DESIGN.md file

```markdown
---
version: alpha
name: AFFiNE
description: "Light interface measured from affine.pro: Inter type, vivid blue accents, tonal surfaces and 16px corners."
colors:
  background: "#F8F8F7"
  surface: "#F8F8F7"
  on-surface: "#424149"
  on-background: "#424149"
  on-surface-strong: "#000000"
  on-surface-variant: "#505050"
  on-surface-muted: "#5E5E5E"
  surface-container-low: "#FFFFFF"
  overlay: "#FFFFFF24"
  overlay-strong: "#FFFFFFDB"
  outline: "#0000001A"
  outline-variant: "#FFFFFF66"
  primary: "#1E96EB"
  on-primary: "#FFFFFF"
typography:
  headline-display:
    fontFamily: Inter
    fontSize: 90px
    fontWeight: 500
    lineHeight: 1
    letterSpacing: -0.07em
  headline-lg:
    fontFamily: Inter
    fontSize: 60px
    fontWeight: 500
    lineHeight: 1.08
    letterSpacing: -0.05em
  headline-md:
    fontFamily: Inter
    fontSize: 48px
    fontWeight: 500
    lineHeight: 1.18
    letterSpacing: -0.04em
  headline-sm:
    fontFamily: Inter
    fontSize: 36px
    fontWeight: 500
    lineHeight: 1.19
    letterSpacing: -0.04em
  title-lg:
    fontFamily: Inter
    fontSize: 32px
    fontWeight: 500
    lineHeight: 1.25
    letterSpacing: -0.04em
  body-md:
    fontFamily: Inter
    fontSize: 16px
    fontWeight: 400
    lineHeight: 1.5
  body-lg:
    fontFamily: Inter
    fontSize: 18px
    fontWeight: 600
    lineHeight: 1.35
    letterSpacing: -0.01em
  body-sm:
    fontFamily: Inter
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.35
  caption:
    fontFamily: Inter
    fontSize: 13px
    fontWeight: 400
  label-lg:
    fontFamily: Inter
    fontSize: 16px
    fontWeight: 500
    lineHeight: 1
    letterSpacing: -0.02em
  label-md:
    fontFamily: Inter
    fontSize: 14px
    fontWeight: 500
    lineHeight: 1.43
    letterSpacing: -0.02em
  label-sm:
    fontFamily: Inter
    fontSize: 13px
    fontWeight: 600
    lineHeight: 1.2
  headline-display-mobile:
    fontFamily: Inter
    fontSize: 40px
    fontWeight: 500
    lineHeight: 1
    letterSpacing: -0.07em
  headline-md-mobile:
    fontFamily: Inter
    fontSize: 18px
    fontWeight: 500
    lineHeight: 1.33
    letterSpacing: -0.02em
rounded:
  xs: 4px
  sm: 10px
  md: 12px
  lg: 16px
  xl: 34px
  full: 9999px
spacing:
  xs: 4px
  sm: 8px
  md: 16px
  lg: 24px
  xl: 36px
  gutter: 8px
  section: 96px
  margin: 32px
components:
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
    typography: "{typography.body-md}"
    rounded: "{rounded.xl}"
    padding: 0px
    height: 30px
  button-primary-hover:
    backgroundColor: "#1E96EBCC"
  button-outline:
    textColor: "{colors.primary}"
    typography: "{typography.label-lg}"
    rounded: "{rounded.xl}"
    padding: 10px 20px
    height: 44px
  button-outline-hover:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
  button-ghost:
    textColor: "{colors.on-surface-strong}"
    typography: "{typography.label-md}"
    rounded: "{rounded.xs}"
    padding: 8px 12px
  input-field:
    textColor: "{colors.on-primary}"
    rounded: 0px
    padding: 0px
  card:
    backgroundColor: "{colors.surface-container-low}"
    textColor: "{colors.on-surface}"
    rounded: "{rounded.lg}"
    padding: 0px 24px 24px 24px
  link:
    textColor: "{colors.on-primary}"
---

# AFFiNE Design System

## Overview

AFFiNE describes itself as: “AFFiNE combines docs, whiteboards, databases, and optional AI in one local-first workspace. MIT-licensed editor; self-host free for up to 10 seats per workspace.” The interface is light, built on **Snow (#F8F8F7)** with **Cool Graphite (#424149)** text, and **Vivid Blue (#1E96EB)** as the main accent.

Type is set in **Inter**. Headlines run large with tight negative tracking; body text is 16px. Depth comes from soft drop shadows. Corners are mostly 16px.

Measured from [affine.pro](https://affine.pro/) on November 5, 2026 at 1440×900 and 390×844 from 414 rendered elements. Values are computed styles from the live page, not the original source files.

## Colors

The palette has 12 roles, plus gradient stops #1E96EB.

- **Snow (#F8F8F7):** Page background, seen 1 time. Token `background`.
- **Cool Graphite (#424149):** Primary text and headings, seen 32 times. Token `on-surface`, CSS `--el-text-color-regular`.
- **Near Black (#000000):** Headings and emphasis, seen 22 times. Token `on-surface-strong`, CSS `--cc-btn-primary-hover-border-color`.
- **Slate (#505050):** Secondary text, seen 4 times. Token `on-surface-variant`.
- **Slate (#5E5E5E):** Muted text and metadata, seen 5 times. Token `on-surface-muted`.
- **White (#FFFFFF):** Raised areas one step from the page, seen 30 times. Token `surface-container-low`, CSS `--el-bg-color`.
- **White 14% (#FFFFFF24):** Translucent fill for cards and controls, seen 5 times. Token `overlay`.
- **White 86% (#FFFFFFDB):** Stronger translucent fill, seen 3 times. Token `overlay-strong`.
- **Near Black 10% (#0000001A):** Borders and dividers, seen 24 times. Token `outline`.
- **White 40% (#FFFFFF66):** Secondary dividers, seen 5 times. Token `outline-variant`.
- **Vivid Blue (#1E96EB):** Primary buttons and calls to action, seen 26 times. Token `primary`, CSS `--brand`.
- **White (#FFFFFF):** Text and icons on primary. Token `on-primary`.

## Typography

**Inter** carries the whole interface. Fallback stack: `Inter, Inter Fallback, Roboto, Helvetica`.

- **headline-display:** Inter 90px at weight 500, line height 1, tracking -0.07em (40px on mobile). Page title (h1).
- **headline-lg:** Inter 60px at weight 500, line height 1.08, tracking -0.05em. Section headings (h2).
- **headline-md:** Inter 48px at weight 500, line height 1.18, tracking -0.04em (18px on mobile). Sub-section headings.
- **headline-sm:** Inter 36px at weight 500, line height 1.19, tracking -0.04em. Card and feature titles.
- **title-lg:** Inter 32px at weight 500, line height 1.25, tracking -0.04em. Small titles.
- **body-md:** Inter 16px at weight 400, line height 1.5. Body text.
- **body-lg:** Inter 18px at weight 600, line height 1.35, tracking -0.01em. Lead paragraphs.
- **body-sm:** Inter 14px at weight 400, line height 1.35. Secondary and small text.
- **caption:** Inter 13px at weight 400. Captions and fine print.
- **label-lg:** Inter 16px at weight 500, line height 1, tracking -0.02em. Large buttons and tabs.
- **label-md:** Inter 14px at weight 500, line height 1.43, tracking -0.02em. Buttons, navigation and labels.
- **label-sm:** Inter 13px at weight 600, line height 1.2. Small labels and badges.

## Layout

Spacing is mostly on a 4px grid (85% of measured values), with some off-grid steps. Match the measured scale rather than rounding everything.

- **Scale:** xs 4px, sm 8px, md 16px, lg 24px, xl 36px.
- **Sections:** 96px vertical padding between major sections.
- **Gaps:** 8px is the most common gap in flex and grid layouts.
- **Page margin:** 32px on each side of full-width sections.
- **Breakpoints:** 0px, 390px, 480px, 520px, 560px, 569px, 599px, 744px, 768px, 900px, 1000px, 1023px, 1024px, 1025px, 1180px, 1440px.

## Elevation & Depth

Raised elements use soft drop shadows. The most used recipes:

- `rgba(0, 0, 0, 0.15) 0px 1px 4px 0px`
- `rgba(0, 0, 0, 0.06) 0px 2px 4px 0px`

## Shapes

Most elements use 16px corners. Measured radii, most used first:

- **lg (16px):** 92 elements.
- **sm (10px):** 72 elements.
- **xs (4px):** 36 elements.
- **xl (34px):** 36 elements.
- **full (9999px):** 24 elements.
- **md (12px):** 16 elements.

## Components

Measured from the rendered page. Token values reference the tokens above.

- **button-primary (“Get Started”):** #1E96EB fill, #FFFFFF text, 16px/400, 34px radius, padding 0px.
- **button-primary-hover:** background #1E96EBCC, text #FFFFFF on hover.
- **button-outline (“Book a Demo”):** transparent fill, #1E96EB text, 16px/500, 34px radius, padding 10px 20px, border 1px solid #1E96EB.
- **button-outline-hover:** background #1E96EB, text #FFFFFF on hover.
- **button-ghost (“Product”):** transparent fill, #000000 text, 14px/500, 4px radius, padding 8px 12px.
- **input-field (“name@example.com”):** transparent fill, #FFFFFF text, 15px/400, padding 0px.
- **card:** #FFFFFF fill, #424149 text, 24px/400, 16px radius, padding 0px 24px 24px 24px, shadow `rgba(0, 0, 0, 0.15) 0px 1px 4px 0px`.
- **link:** transparent fill, #FFFFFF text, padding 0px.

## Do's and Don'ts

- Do use #F8F8F7 for the page and lift surfaces in small steps: #FFFFFF.
- Do keep text in 4 levels: #424149, #000000, #505050, #5E5E5E.
- Do reserve #1E96EB for primary actions and key highlights.
- Do set headlines in Inter with tight tracking (-0.07em).
- Do reuse the measured spacing steps (8px, 16px, 24px).
- Do use 16px corners on most elements; larger surfaces also use 10px, 4px and 34px.
- Don't introduce new font families beyond Inter.
- Don't use #1E96EB for large backgrounds or body text.
- Don't make interface transitions slower than 0.32s.

## Motion

Interface transitions are quick: 0.2s, 0.268s, 0.218s, 0.32s.

- **Easing:** `cubic-bezier(0.16, 1, 0.3, 1)`, `ease`, `cubic-bezier(0.22, 0.61, 0.36, 1)`.
- **Reduced motion:** the page responds to `prefers-reduced-motion`.

Generated by [Sitepeel](https://sitepeel.dev/design-md/affine.pro/), the free DESIGN.md generator (engine 2026.10.29+b828a475ee10).

```
