GrammarlyBrand
DESIGN.md · measured October 26, 2026
Cult UI design system
Light monochrome interface measured from cult-ui.com: GeistSans type with GeistPixelSquare, tonal surfaces and 8px corners.
- Background
- #FAFAFA
- Primary
- #171717
- Type
- GeistSans
- Corners
- 8px
From cult-ui.com ↗ · 369 elements at 1440×900 and 390×844 · Independent analysis, not affiliated with Cult UI
Cult UI colors
15 roles measured on the page, grouped by where each color is used.
Surfaces
#FAFAFAbackgroundPage background#FFFFFFsurface-container-lowRaised areas one step from the page · 47×#FFFFFFF2surface-containerCards and panels · 5×#F5F5F5surface-container-highHover and pressed fills · 3×#FFFFFF26overlayTranslucent fill for cards and controls · 1×#F5F5F58Coverlay-strongStronger translucent fill · 1×Text
#666666on-surfacePrimary text and headings · 84×#171717on-surface-strongHeadings and emphasis · 28×#A1A1A1on-surface-variantSecondary text · 6×#FFFFFFon-primaryText and icons on primaryAccents
#171717primaryPrimary buttons and calls to action · 37×#E17100secondaryMost used accent color · 14×Borders
#EBEBEBCCoutlineBorders and dividers · 18×#0000001Aoutline-variantSecondary dividers · 2×Status
#00C98DsuccessSuccess and positive states · 9×Cult UI fonts
3 families.
mobile 36px
mobile 24px
Contrast
Text on #FAFAFA
5.5:117.2:12.5:1Spacing
No strict grid · 74% are multiples of 4px
xs4pxsm8pxmd16pxlg24pxxl64pxgutter8pxsection96pxcontainer1152pxBreakpoints: 600px 640px
Shapes
Corner radii, most used first.
Depth
Components
Rebuilt from the measured CSS.
Motion
Interface transitions
0.15s0.3scubic-bezier(0.4, 0, 0.2, 1)ease
Do’s and don’ts
Rules written from the measurements, so a coding agent stays on style.
- Use #FAFAFA for the page and lift surfaces in small steps: #FFFFFF, #FFFFFFF2, #F5F5F5.
- Keep text in 3 levels: #666666, #171717, #A1A1A1.
- Let contrast carry emphasis; primary actions use #171717 on #FAFAFA.
- Set headlines in GeistSans with tight tracking (-0.06em).
- Reuse the measured spacing steps (8px, 16px, 24px).
- Use 8px corners on most elements; larger surfaces also use 24px and 16px.
- Use #A1A1A1 for body text; it reaches 2.5:1 on #FAFAFA. Keep it for large text or metadata.
- Introduce new font families beyond GeistSans, GeistPixelSquare and GeistMono.
- Add saturated accent colors; the measured palette is almost entirely neutral.
- Make interface transitions slower than 0.3s.
---
version: alpha
name: Cult UI
description: "Light monochrome interface measured from cult-ui.com: GeistSans type with GeistPixelSquare, tonal surfaces and 8px corners."
colors:
background: "#FAFAFA"
surface: "#FAFAFA"
on-surface: "#666666"
on-background: "#666666"
on-surface-strong: "#171717"
on-surface-variant: "#A1A1A1"
surface-container-low: "#FFFFFF"
surface-container: "#FFFFFFF2"
surface-container-high: "#F5F5F5"
overlay: "#FFFFFF26"
overlay-strong: "#F5F5F58C"
outline: "#EBEBEBCC"
outline-variant: "#0000001A"
primary: "#171717"
on-primary: "#FFFFFF"
secondary: "#E17100"
success: "#00C98D"
typography:
headline-display:
fontFamily: GeistSans
fontSize: 64px
fontWeight: 450
lineHeight: 1.11
letterSpacing: -0.06em
headline-lg:
fontFamily: GeistSans
fontSize: 48px
fontWeight: 450
lineHeight: 1
letterSpacing: -0.06em
body-md:
fontFamily: GeistSans
fontSize: 16px
fontWeight: 400
lineHeight: 1.5
body-lg:
fontFamily: GeistSans
fontSize: 18px
fontWeight: 400
lineHeight: 1.56
letterSpacing: -0.025em
body-sm:
fontFamily: GeistPixelSquare
fontSize: 10px
fontWeight: 400
lineHeight: 1.5
label-md:
fontFamily: GeistSans
fontSize: 16px
fontWeight: 500
lineHeight: 1.5
label-sm:
fontFamily: GeistSans
fontSize: 14px
fontWeight: 400
lineHeight: 1.43
code:
fontFamily: GeistMono
fontSize: 10px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0.05em
headline-display-mobile:
fontFamily: GeistSans
fontSize: 36px
fontWeight: 450
lineHeight: 1.11
letterSpacing: -0.06em
headline-lg-mobile:
fontFamily: GeistSans
fontSize: 24px
fontWeight: 450
lineHeight: 1.33
letterSpacing: -0.06em
rounded:
sm: 8px
md: 16px
lg: 24px
spacing:
xs: 4px
sm: 8px
md: 16px
lg: 24px
xl: 64px
gutter: 8px
section: 96px
container: 1152px
components:
button-primary:
backgroundColor: "{colors.primary}"
textColor: "{colors.on-primary}"
typography: "{typography.label-md}"
padding: 0px 22px 0px 24px
height: 48px
button-outline:
backgroundColor: "{colors.surface-container-low}"
textColor: "{colors.on-surface-strong}"
typography: "{typography.label-md}"
padding: 0px 24px
height: 48px
button-ghost:
typography: "{typography.label-md}"
padding: 0px 24px
card:
typography: "{typography.body-md}"
rounded: 32px
padding: 0px
link:
textColor: "{colors.on-surface}"
---
# Cult UI Design System
## Overview
Cult UI describes itself as: “Open-source Shadcn UI components, animated blocks, and full templates you can copy-paste into any TypeScript/Next.js project.” The interface is light, built on **Snow (#FAFAFA)** with **Slate (#666666)** text and almost no color: actions are carried by contrast, not hue.
Type is set in **GeistSans** and **GeistPixelSquare**, with **GeistMono** for code. Headlines run large with tight negative tracking; body text is 16px. Depth comes from soft drop shadows. Corners are mostly 8px.
Measured from [cult-ui.com](https://www.cult-ui.com/) on October 26, 2026 at 1440×900 and 390×844 from 369 rendered elements. Values are computed styles from the live page, not the original source files.
## Colors
The palette has 15 roles.
- **Snow (#FAFAFA):** Page background. Token `background`.
- **Slate (#666666):** Primary text and headings, seen 84 times. Token `on-surface`.
- **Charcoal (#171717):** Headings and emphasis, seen 28 times. Token `on-surface-strong`.
- **Gray (#A1A1A1):** Secondary text, seen 6 times. Token `on-surface-variant`.
- **White (#FFFFFF):** Raised areas one step from the page, seen 47 times. Token `surface-container-low`.
- **White 95% (#FFFFFFF2):** Cards and panels, seen 5 times. Token `surface-container`.
- **Snow (#F5F5F5):** Hover and pressed fills, seen 3 times. Token `surface-container-high`.
- **White 15% (#FFFFFF26):** Translucent fill for cards and controls, seen 1 time. Token `overlay`.
- **Snow 55% (#F5F5F58C):** Stronger translucent fill, seen 1 time. Token `overlay-strong`.
- **Mist 80% (#EBEBEBCC):** Borders and dividers, seen 18 times. Token `outline`.
- **Near Black 10% (#0000001A):** Secondary dividers, seen 2 times. Token `outline-variant`.
- **Charcoal (#171717):** Primary buttons and calls to action, seen 37 times. Token `primary`.
- **White (#FFFFFF):** Text and icons on primary. Token `on-primary`.
- **Vivid Orange (#E17100):** Most used accent color, seen 14 times. Token `secondary`.
- **Teal (#00C98D):** Success and positive states, seen 9 times. Token `success`.
## Typography
**GeistSans**, **GeistPixelSquare** and **GeistMono** (monospace) share the interface. Fallback stack: `GeistSans, GeistSans Fallback`.
- **headline-display:** GeistSans 64px at weight 450, line height 1.11, tracking -0.06em (36px on mobile). Page title (h1).
- **headline-lg:** GeistSans 48px at weight 450, line height 1, tracking -0.06em (24px on mobile). Section headings (h2).
- **body-md:** GeistSans 16px at weight 400, line height 1.5. Body text.
- **body-lg:** GeistSans 18px at weight 400, line height 1.56, tracking -0.025em. Lead paragraphs.
- **body-sm:** GeistPixelSquare 10px at weight 400, line height 1.5. Secondary and small text.
- **label-md:** GeistSans 16px at weight 500, line height 1.5. Buttons, navigation and labels.
- **label-sm:** GeistSans 14px at weight 400, line height 1.43. Small labels and badges.
- **code:** GeistMono 10px at weight 400, line height 1.5, tracking 0.05em. Code and technical values.
## Layout
Spacing is mostly on a 4px grid (74% 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 64px.
- **Sections:** 96px vertical padding between major sections.
- **Gaps:** 8px is the most common gap in flex and grid layouts.
- **Container:** content is capped at 1152px.
- **Breakpoints:** 600px, 640px.
## Elevation & Depth
Raised elements use soft drop shadows. The most used recipes:
- `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, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px, rgba(0, 0, 0, 0.06) 0px 1px 2px -1px, rgba(0, 0, 0, 0.04) 0px 2px 4px 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, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px, rgba(0, 0, 0, 0.04) 0px 1px 2px 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, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 1px 1px 0px, rgba(255, 252, 240, 0.5) 0px 1px 1px 0px inset, rgba(255, 255, 255, 0.1) 0px 0px 0px 1px inset, rgba(28, 27, 26, 0.5) 0px 0px 1px 0px`
## Shapes
Most elements use 8px corners. Measured radii, most used first:
- **sm (8px):** 181 elements.
- **lg (24px):** 108 elements.
- **md (16px):** 72 elements.
## Components
Measured from the rendered page. Token values reference the tokens above.
- **button-primary (“Browse 154 components”):** #171717 fill, #FFFFFF text, 16px/500, 3.35544e+07px radius, padding 0px 22px 0px 24px.
- **button-outline (“Show 28 more components”):** #FFFFFF fill, #171717 text, 16px/500, 3.35544e+07px radius, padding 0px 24px, shadow `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, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px, rgba(0, 0, 0, 0.06) 0px 1px 2px -1px, rgba(0, 0, 0, 0.04) 0px 2px 4px 0px`.
- **button-ghost (“Show 28 more components”):** transparent fill, 16px/500, 3.35544e+07px radius, padding 0px 24px, shadow `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, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px, rgba(0, 0, 0, 0.06) 0px 1px 2px -1px, rgba(0, 0, 0, 0.04) 0px 2px 4px 0px`.
- **card:** transparent fill, 16px/400, 32px radius, padding 0px, shadow `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, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px, rgba(0, 0, 0, 0.06) 0px 1px 2px -1px, rgba(0, 0, 0, 0.04) 0px 2px 4px 0px`.
- **link:** transparent fill, #666666 text, padding 0px.
## Do's and Don'ts
- Do use #FAFAFA for the page and lift surfaces in small steps: #FFFFFF, #FFFFFFF2, #F5F5F5.
- Do keep text in 3 levels: #666666, #171717, #A1A1A1.
- Do let contrast carry emphasis; primary actions use #171717 on #FAFAFA.
- Do set headlines in GeistSans with tight tracking (-0.06em).
- Do reuse the measured spacing steps (8px, 16px, 24px).
- Do use 8px corners on most elements; larger surfaces also use 24px and 16px.
- Don't use #A1A1A1 for body text; it reaches 2.5:1 on #FAFAFA. Keep it for large text or metadata.
- Don't introduce new font families beyond GeistSans, GeistPixelSquare and GeistMono.
- Don't add saturated accent colors; the measured palette is almost entirely neutral.
- Don't make interface transitions slower than 0.3s.
## Motion
Interface transitions are quick: 0.15s, 0.3s.
- **Easing:** `cubic-bezier(0.4, 0, 0.2, 1)`, `ease`, `cubic-bezier(0, 0, 0.2, 1)`.
- **Reduced motion:** the page responds to `prefers-reduced-motion`.
Generated by [Sitepeel](https://sitepeel.dev/design-md/cult-ui.com/), the free DESIGN.md generator.
What you can build with it
Landing pages, pricing tables, dashboards: your AI coding agent builds them in this style, with these colors, fonts, spacing and buttons instead of its defaults.
Download DESIGN.md, put it in your project’s root folder, then ask your agent for a page.
Build a landing page for my product. Follow for every color, font, spacing value, corner and button.
Need more than one page?
Design MD in the Sitepeel tools for Chrome measures pages behind a login, combines several pages into one file and works on any site you open.
More designs
See all →FAQ
Questions
What can I build with the Cult UI DESIGN.md?
Any page or component in this style: a landing page, pricing table, dashboard or sign-up form. Your AI coding agent uses the measured colors, GeistSans type, spacing, corners and buttons instead of its own defaults.
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 Cult UI’s official design system?
No. Sitepeel measured it from cult-ui.com’s public page on October 26, 2026. It is an independent analysis, not made or approved by Cult UI.
Can I use Cult UI’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 Cult UI’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.




