Minimalism DLS Download Markdown

Less, but better.

A design language for web and mobile products where content is the interface. Version 1.0, with tokens for CSS, Tailwind and Figma.

Design philosophy

Every pixel must earn its place. If removing an element does not reduce comprehension or capability, remove it.

Essentialism

Ship only what the task needs. Can it be deleted without loss?

Functional hierarchy

Size, weight and opacity show importance, not decoration.

Deliberate negative space

Space is a material. Spacing is systematic, never accidental.

Radical simplicity

One primary action, one accent, one idea per section.

Noise reduction

No gradients, heavy shadows or ornaments. Borders only where space fails.

Decision order

  1. Remove it.
  2. Express it with space.
  3. Express it with type weight or opacity.
  4. Express it with a hairline.
  5. Only last, use color or elevation.

Spatial engine and layout

A 4pt base with an 8pt rhythm. Gaps communicate relationship: related items sit close, groups sit 4x apart, sections 8x or more.

Spacing scale

Breakpoints and dynamic padding

BreakpointMin widthGutterSection paddingColumns
base016px64px4
sm640px24px64px4
md768px32px96px8
lg1024px48px96px12
xl1280px64px128px12
--gutter: clamp(1rem, 4vw, 4rem);
--section-y: clamp(4rem, 10vw, 8rem);
--measure: 65ch;  --container: 72rem;  --container-narrow: 40rem;

Layout rules

  1. Default to a single column; reading and forms use 40rem.
  2. Use a 12-column grid on desktop, collapse to one column below 768px. Never more than 4 content columns.
  3. Pair a narrow label column with a wide content column for editorial calm.
  4. Use a 1px hairline only where spacing fails. Never stack border, fill and shadow.
  5. Keep a strong left edge. Touch targets are at least 44 by 44px.

Typography and hierarchy

Inter for interface and body, with Newsreader as an optional editorial accent. Hierarchy comes from size, weight and opacity.

RolePrimaryAlternatives
SansInterSF Pro, Neue Haas Grotesk, Roboto, Geist
Serif accentNewsreaderSource Serif 4, Fraunces
MonoJetBrains MonoSF Mono, IBM Plex Mono

Scale

display 40 to 72, 400 serif, 1.05

Quiet confidence

h1 32 to 48, 500, 1.1

Page title

h2 24 to 32, 500, 1.2

Section title

h3 20 to 24, 500, 1.3

Subsection title

body-lg 18 to 20, 1.65

Lead paragraphs sit slightly larger and calmer than body.

body 16, 1.6

Default text. Keep measure between 55 and 75 characters.

body-sm 14, 1.5

Secondary text uses the secondary tone.

caption 12, 1.4

Meta and helper text never drop below AA contrast.

Weight and opacity

Use weights 400 and 500; allow 600 for one emphasis tier; never 700 or above. Three tones create depth: primary, secondary (about 70%) and tertiary (about 55%, never below AA). Large type tightens tracking, small type loosens it.

Color and surface

A warm monochrome foundation and exactly one accent. Surfaces are flat: no gradients, glass or textures, and never more than two levels visible at once.

Neutral foundation (light, with dark values)

neutral-0
#FFFFFF / #0B0B0A
neutral-25 page
#FAFAF8 / #0F0F0E
neutral-50 tint
#F4F4F1 / #171716
neutral-100 hairline
#EAEAE6 / #1F1F1E
neutral-200 strong
#D9D8D3 / #2B2B29
neutral-400 decorative
#9A9892 / #6F6E69
neutral-500 tertiary
#6B6A66 / #9E9D98
neutral-600 secondary
#52514D / #B8B7B2
neutral-900 ink
#141413 / #EDEDEA

Single accent

Reserved for the primary call to action, selected state, links, focus ring and progress. Pick one per product.

Cobalt (default)
#2B4EFF, hover #1F3BD9
tint #EEF1FF, dark #7C93FF
Muted sage
#3E6B55, hover #2F5742
tint #EEF4F0, dark #8FBFA4
Electric amber
fill #F59E0B, text #B45309
tint #FFF7E6, dark #FBBF24
Error (functional)
#C62828, dark #FF8A80
Always with icon or text

Tokens

:root {
  --bg:#FAFAF8; --surface:#FFFFFF; --surface-tint:#F4F4F1;
  --border-subtle:#EAEAE6; --border-strong:#D9D8D3;
  --text-primary:#141413; --text-secondary:#52514D; --text-tertiary:#6B6A66;
  --accent:#2B4EFF; --accent-hover:#1F3BD9; --accent-tint:#EEF1FF; --on-accent:#FFFFFF;
}

Surface rules

  1. Flat planes only.
  2. At most two surface levels visible at once.
  3. Separate with space, then a hairline, then a tint. Elevation last.
  4. Images carry color; chrome stays neutral.

Interactive components

Radius is 6px for controls and 10px for containers, with one 1px border weight. Shadows appear only on overlays.

Buttons

Sizes are 32, 40 and 48px high. One primary per view. Labels use sentence case and weight 500.

Cards

Borderless by default

Hover shifts the hairline. Nothing lifts or scales.

Flat variant

Separated by space alone, with no border or fill.

Form controls

We only use it for receipts.
Error: use at least 8 characters.

Modal, tooltip and overlays

Shown after a 150ms delay
modal: 0 8px 32px rgba(20,20,19,.08), 0 1px 2px rgba(20,20,19,.04)   radius 10px   scrim rgba(20,20,19,.4), no blur
dark mode: replace shadow with a 1px --border-strong hairline

Motion

Motion explains cause and effect; it never entertains. Animate only opacity, transform and color. No bounce, parallax or looping decoration.

TokenValueUse
duration-instant100msOpacity shifts, press feedback
duration-base150msColor, border, background
duration-slow200msOverlay enter, accordion
ease-outcubic-bezier(0.2, 0, 0, 1)Enter and most transitions
ease-incubic-bezier(0.4, 0, 1, 1)Exit, 100 to 150ms
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

Accessibility

Light, quiet typography is minimalism's biggest accessibility risk. These minimums are mandatory in both themes.

ContentAAAAAToken
Body and UI text4.5:17:1text-primary, text-secondary
Tertiary and helper text4.5:1n/atext-tertiary, never lighter
Large text (24px+ or 18.66px bold)3:14.5:1any text token
Input borders, focus ring, icons3:1n/aborder-strong, accent
Decorative hairlinesexemptn/aborder-subtle

Rules

  1. Never use weight below 400; 300 or lighter is prohibited below 24px.
  2. Text below 14px must meet 4.5:1.
  3. Do not dim text with opacity; use the tertiary token.
  4. Never convey state by color alone.
  5. Keep focus always visible: 2px accent ring with 2px offset.
  6. Support 200% zoom, reflow at 320px, keyboard order and focus trapping in modals.
  7. Honor reduced motion and avoid flashing above 3 times per second.

Figma tokens

Three tiers: primitive, semantic, component. Light and dark modes swap the semantic layer. Name tokens category/role/variant/state, for example color/text/secondary or motion/duration/base. Bind auto-layout spacing to variables so the grid is enforced by construction.

The Minimalism audit

Before shipping a screen, answer yes to all of these. A no is a defect, not a preference.

  1. Is there a single, obvious primary action?
  2. Is the accent used only for action, selection, links and focus?
  3. Could any border, fill, shadow or icon go without loss of meaning?
  4. Does every spacing value come from the scale?
  5. Do all text and UI elements meet the contrast table?
  6. Are there at most two weights and one serif accent?
  7. Do transitions stay within 100 to 200ms and respect reduced motion?