RampBrand
Fintech and payments · DESIGN.md · measured November 4, 2026
Polar design system
Polar’s website (polar.sh) uses the PP Neue Montreal font on a #090909 background. Measured by Sitepeel on November 4, 2026.
- #090909
- #212121
- #FFFFFF
From polar.sh ↗ · 359 elements at 1440×900 and 390×844 Independent analysis, not affiliated with Polar
Polar color palette
8 colors with hex codes, grouped by where each one is used on the page.
Surfaces
#090909background · --xaxq9roPage background · 1×#212121surface-container-low · --borderRaised areas one step from the page · 1×Text
#FFFFFFon-surface · --color-whitePrimary text and headings · 77×#858585on-surface-variantSecondary text · 61×#000000on-primaryText and icons on primaryAccents
#FFFFFFprimary · --color-whitePrimary buttons and calls to action · 107×Borders
#212121outline · --borderBorders and dividers · 12×#2A2A2Aoutline-variantSecondary dividers · 10×Polar fonts and type scale
2 families.
mobile 30px
mobile 24px
Contrast
Text on #090909
19.9:15.4:1Spacing
4px grid · 94% of values fit
xs2pxsm8pxmd12pxlg20pxxl38.23pxgutter8pxsection96pxBreakpoints: 480px 640px 768px 1024px 1280px
Shapes
Corner radii, most used first.
Depth
Flat: no shadows measured.
Polar UI components
Rebuilt from the measured CSS.
Motion
Interface transitions
0.15s0.12s0.1s0.2scubic-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 #090909 for the page and lift surfaces in small steps: #212121.
- Keep text in 2 levels: #FFFFFF, #858585.
- Let contrast carry emphasis; primary actions use #FFFFFF on #090909.
- Keep spacing on the 4px grid.
- Add drop shadows for depth; use tonal surfaces.
- Introduce new font families beyond PP Neue Montreal and GeistMono.
- Add saturated accent colors; the measured palette is almost entirely neutral.
- Make interface transitions slower than 0.2s.
---
version: alpha
name: Polar
description: "Dark monochrome interface measured from polar.sh: PP Neue Montreal type, tonal surfaces and square corners."
colors:
background: "#090909"
surface: "#090909"
on-surface: "#FFFFFF"
on-background: "#FFFFFF"
on-surface-variant: "#858585"
surface-container-low: "#212121"
outline: "#212121"
outline-variant: "#2A2A2A"
primary: "#FFFFFF"
on-primary: "#000000"
typography:
display-hero:
fontFamily: PP Neue Montreal
fontSize: 48px
fontWeight: 400
lineHeight: 1.25
headline-display:
fontFamily: PP Neue Montreal
fontSize: 36px
fontWeight: 400
lineHeight: 1.25
headline-lg:
fontFamily: PP Neue Montreal
fontSize: 30px
fontWeight: 400
lineHeight: 1.38
body-md:
fontFamily: PP Neue Montreal
fontSize: 16px
fontWeight: 450
lineHeight: 1.5
letterSpacing: 0.015em
body-lg:
fontFamily: PP Neue Montreal
fontSize: 24px
fontWeight: 400
lineHeight: 1.38
letterSpacing: 0.01em
body-sm:
fontFamily: PP Neue Montreal
fontSize: 14px
fontWeight: 450
lineHeight: 1.5
letterSpacing: 0.017em
caption:
fontFamily: PP Neue Montreal
fontSize: 12px
fontWeight: 450
lineHeight: 1.38
letterSpacing: 0.02em
label-md:
fontFamily: PP Neue Montreal
fontSize: 14px
fontWeight: 550
lineHeight: 1.43
letterSpacing: 0.01em
code:
fontFamily: GeistMono
fontSize: 12px
fontWeight: 450
lineHeight: 1.38
letterSpacing: 0.02em
headline-display-mobile:
fontFamily: PP Neue Montreal
fontSize: 30px
fontWeight: 400
lineHeight: 1.25
headline-lg-mobile:
fontFamily: PP Neue Montreal
fontSize: 24px
fontWeight: 400
lineHeight: 1.38
rounded:
none: 0px
spacing:
base: 4px
xs: 2px
sm: 8px
md: 12px
lg: 20px
xl: 38.23px
gutter: 8px
section: 96px
components:
button-primary:
backgroundColor: "{colors.primary}"
textColor: "{colors.on-primary}"
typography: "{typography.label-md}"
padding: 12px 20px
height: 40px
button-ghost:
textColor: "{colors.on-surface}"
typography: "{typography.label-md}"
padding: 12px 20px
link:
textColor: "{colors.primary}"
---
# Polar Design System
## Overview
Polar describes itself as: “Polar is the Merchant of Record for developers building AI-era software: payments, subscriptions, and usage-based billing, with global tax handled for you.” The interface is dark, built on **Near Black (#090909)** with **White (#FFFFFF)** text and almost no color: actions are carried by contrast, not hue.
Type is set in **PP Neue Montreal**, with **GeistMono** for code. Headlines run large; body text is 16px. The surface language is flat. Corners are square.
Measured from [polar.sh](https://polar.sh/) on November 4, 2026 at 1440×900 and 390×844 from 359 rendered elements. Values are computed styles from the live page, not the original source files.
## Colors
The palette has 8 roles.
- **Near Black (#090909):** Page background, seen 1 time. Token `background`, CSS `--xaxq9ro`.
- **White (#FFFFFF):** Primary text and headings, seen 77 times. Token `on-surface`, CSS `--color-white`.
- **Gray (#858585):** Secondary text, seen 61 times. Token `on-surface-variant`.
- **Charcoal (#212121):** Raised areas one step from the page, seen 1 time. Token `surface-container-low`, CSS `--border`.
- **Charcoal (#212121):** Borders and dividers, seen 12 times. Token `outline`, CSS `--border`.
- **Graphite (#2A2A2A):** Secondary dividers, seen 10 times. Token `outline-variant`.
- **White (#FFFFFF):** Primary buttons and calls to action, seen 107 times. Token `primary`, CSS `--color-white`.
- **Near Black (#000000):** Text and icons on primary. Token `on-primary`.
## Typography
**PP Neue Montreal** and **GeistMono** (monospace) share the interface. Fallback stack: `PP Neue Montreal, InterDisplay, sans-serif`.
- **display-hero:** PP Neue Montreal 48px at weight 400, line height 1.25. Oversized hero statements.
- **headline-display:** PP Neue Montreal 36px at weight 400, line height 1.25 (30px on mobile). Page title (h1).
- **headline-lg:** PP Neue Montreal 30px at weight 400, line height 1.38 (24px on mobile). Section headings (h2).
- **body-md:** PP Neue Montreal 16px at weight 450, line height 1.5, tracking 0.015em. Body text.
- **body-lg:** PP Neue Montreal 24px at weight 400, line height 1.38, tracking 0.01em. Lead paragraphs.
- **body-sm:** PP Neue Montreal 14px at weight 450, line height 1.5, tracking 0.017em. Secondary and small text.
- **caption:** PP Neue Montreal 12px at weight 450, line height 1.38, tracking 0.02em. Captions and fine print.
- **label-md:** PP Neue Montreal 14px at weight 550, line height 1.43, tracking 0.01em. Buttons, navigation and labels.
- **code:** GeistMono 12px at weight 450, line height 1.38, tracking 0.02em. Code and technical values.
## Layout
Spacing follows a 4px grid: 94% of measured gaps and paddings are multiples of 4px.
- **Scale:** xs 2px, sm 8px, md 12px, lg 20px, xl 38.23px.
- **Sections:** 96px vertical padding between major sections.
- **Gaps:** 8px is the most common gap in flex and grid layouts.
- **Breakpoints:** 480px, 640px, 768px, 1024px, 1280px.
## Elevation & Depth
The design is flat: no shadows were measured. Hierarchy comes from tonal surface steps (#212121) and #212121 borders.
## Shapes
Corners are square. Measured radii, most used first:
- **none (0px):** measured.
## Components
Measured from the rendered page. Token values reference the tokens above.
- **button-primary (“Get Started”):** #FFFFFF fill, #000000 text, 14px/550, 3.35544e+07px radius, padding 12px 20px.
- **button-ghost (“Sign in”):** transparent fill, #FFFFFF text, 14px/550, 3.35544e+07px radius, padding 12px 20px.
- **link:** transparent fill, #FFFFFF text, padding 0px.
## Do's and Don'ts
- Do use #090909 for the page and lift surfaces in small steps: #212121.
- Do keep text in 2 levels: #FFFFFF, #858585.
- Do let contrast carry emphasis; primary actions use #FFFFFF on #090909.
- Do keep spacing on the 4px grid.
- Don't add drop shadows for depth; use tonal surfaces.
- Don't introduce new font families beyond PP Neue Montreal and GeistMono.
- Don't add saturated accent colors; the measured palette is almost entirely neutral.
- Don't make interface transitions slower than 0.2s.
## Motion
Interface transitions are quick: 0.15s, 0.12s, 0.1s, 0.2s. Longer ambient animations run 1s.
- **Easing:** `cubic-bezier(0.4, 0, 0.2, 1)`, `ease`, `linear`.
- **Reduced motion:** the page responds to `prefers-reduced-motion`.
Generated by [Sitepeel](https://sitepeel.dev/design-md/polar.sh/), the free DESIGN.md generator (engine 2026.10.29+b828a475ee10).
Fonts
What font does Polar use?
Polar uses PP Neue Montreal (weights 400, 450 and 550), with GeistMono for code on polar.sh. Page titles are 36px at weight 400 (30px on phones) and body text is 16px. Measured on November 4, 2026.
- AaPP Neue Montreal · 400, 450, 550
- AaGeistMono · 450
Colors
Polar colors: palette and hex codes
Polar’s main colors are #090909 (near black) for the background and #FFFFFF (white) for text. Measured on November 4, 2026.
- #090909 · near black
- #FFFFFF · white
- #858585 · gray
- #212121 · charcoal
- #2A2A2A · graphite
- #000000 · near black
Tech stack
What is Polar built with?
Polar’s website (polar.sh) is built with Next.js, React, Emotion, Radix UI and Tailwind CSS. Measured on November 4, 2026.
- JavaScript framework
- Next.js 16.4.4, React 19.3.0-canary-278794d7-2
- Hosting & CDN
- Cloudflare, Vercel
- Animation & 3D
- GSAP 3.15.0
- Analytics
- PostHog, Sentry 10.76.0, Google Analytics
- UI & CSS
- Emotion, Radix UI, Tailwind CSS 4.x
- Fonts & icons
- Lucide
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 a page behind a login?
The DESIGN.md generator Chrome extension makes one from any page you have open, including dashboards and pages behind a login.
More in Fintech and payments
All DESIGN.md examples →Not in the library? Make a DESIGN.md from any site.
FAQ
Polar design system questions
What font does Polar use?
Polar’s website uses PP Neue Montreal (weights 400, 450 and 550), with GeistMono for code. Page titles are 36px at weight 400 (30px on phones) and body text is 16px. Measured on November 4, 2026.
What are the Polar colors and hex codes?
On polar.sh: #090909 (near black) for the background and #FFFFFF (white) for text. The color palette above lists all 8 colors with their hex codes and where each one is used.
What is the Polar design system?
The design system on this page is polar.sh’s, as measured on November 4, 2026: PP Neue Montreal type, square corners and a 4px spacing grid, written down as a DESIGN.md. It is not Polar’s own documentation.
What is Polar built with?
Polar’s website (polar.sh) is built with Next.js, React, Emotion, Radix UI and Tailwind CSS. The full tech stack Sitepeel found: Next.js, Cloudflare, React, GSAP, PostHog, Sentry, Vercel, Emotion, Radix UI and Tailwind CSS. Measured on November 4, 2026.
What is the Polar DESIGN.md?
A plain-text file with Polar’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 Polar’s official design system?
No. Sitepeel measured it from polar.sh’s public page on November 4, 2026. It is an independent analysis, not made or approved by Polar.
Can I use Polar’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 Polar’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.




