All designs

Dropbox

File storage. Flat blue on white, generous space, illustration-driven calm.

extracted from https://www.dropbox.com/ on 2026-07-03

Dropbox: Secure cloud storage, file sharing, and more

dark-leaning · 12 stylesheets · 120 native variables

fonts SharpGrotesk · AtlasGrotesk · SharpGroteskSuperCondensed · SharpGroteskCondensed · SharpGroteskWide · Atlas Grotesk Web · Sharp Grotesk · Sharp Grotesk 23
---
name: dropbox-com-design-system
source: https://www.dropbox.com/
extracted: 2026-07-03
theme: dark  # measured from neutral usage weight
colors:  # roles inferred from usage frequency + luminance; names verified against values
  canvas: "#1e1919"
  ink: "#ebe9e6"
  text-muted: "#736c64"
  surface: "#2d2b29"
  hairline: "#44403d"
  accent: "#f7f5f2"  # pale-orange
  accent-2: "#3984ff"  # blue
  accent-3: "#0061fe"  # blue
fonts:
  primary: "SharpGrotesk"  # low-confidence: usage counts are low and close
---

# Dropbox: Secure cloud storage, file sharing, and more — Design System

Extracted from **https://www.dropbox.com/** on 2026-07-03.

Every value below is mined from the site's live CSS (120 native custom properties, ranked usage counts). Role assignments are inferred from usage and luminance and marked as such — treat them as a strong starting point, not gospel.

## Overview

The system reads as dark: measured neutral usage weighs 131 dark against 31 light. The palette is chromatic: 12 saturated values against 9 neutrals, led by pale-orange (`#f7f5f2`). Font usage counts are low and close together (SharpGrotesk: 12, AtlasGrotesk: 12, SharpGroteskSuperCondensed: 6) — the extractor can't confidently call a primary face from CSS alone. Geometry mixes sharp corners (4px) with full pills. No box-shadows were found — depth comes from color contrast, not elevation.

## Usage rules

Derived from the measured usage below — each rule cites its evidence.

- Chromatic color carries 63% of measured usage — this palette uses color structurally. Saturated values can hold large surfaces here; timidity would misrepresent the source.
- The theme is dark (measured neutral weight 131:31). Don't flip individual sections to the opposite mode.
- `4px` is the workhorse radius (x4); treat the other radii as exceptions, not options.
- No elevation shadows were found — build depth with tonal contrast between surfaces, not box-shadows.

## Colors

### Neutrals (light → dark)

| Token | Value | Usage | Inferred role |
| --- | --- | --- | --- |
| `neutral-100` | `#ebe9e6` | 16 | **ink** — lightest neutral, highest contrast against canvas |
| `neutral-200` | `#d3cec9` | 15 | — |
| `neutral-300` | `#bbb5ae` | 12 | — |
| `neutral-500` | `#8e8b87` | 17 | — |
| `neutral-600` | `#736c64` | 19 | **text-muted** — most-used mid-luminance neutral |
| `neutral-700` | `#5b5650` | 11 | — |
| `neutral-800` | `#44403d` | 21 | **hairline** — next neutral near canvas, hairline-border weight |
| `neutral-900` | `#2d2b29` | 10 | **surface** — neutral closest to canvas luminance |
| `neutral-950` | `#1e1919` | 51 | **canvas** — darkest neutral, matches the measured dark-leaning theme |

### Accents

| Token | Value | Usage | Inferred role |
| --- | --- | --- | --- |
| `pale-orange` | `#f7f5f2` | 88 | **accent** — most-used chromatic color |
| `blue` | `#3984ff` | 30 | **accent-2** — supporting chromatic color |
| `blue-2` | `#0061fe` | 27 | **accent-3** — supporting chromatic color |
| `yellow` | `#fad24b` | 25 | — |
| `lime` | `#b4dc19` | 25 | — |
| `orange` | `#fa551e` | 17 | — |
| `pale-blue` | `#b4d1ff` | 16 | — |
| `pink` | `#9b0032` | 16 | — |
| `deep-teal` | `#0f503c` | 14 | — |
| `orange-2` | `#9b6400` | 13 | — |
| `deep-orange` | `#684505` | 12 | — |
| `indigo` | `#c8aff0` | 11 | — |

## Typography

Usage counts here are low and close together, so no family can be confidently called primary from CSS declarations alone — sites that set fonts via shorthand or JS under-count. Verify visually. Full list by usage:

| Family | Usage |
| --- | --- |
| SharpGrotesk | 12 |
| AtlasGrotesk | 12 |
| SharpGroteskSuperCondensed | 6 |
| SharpGroteskCondensed | 6 |
| SharpGroteskWide | 6 |
| Atlas Grotesk Web | 4 |
| Sharp Grotesk | 4 |
| Sharp Grotesk 23 | 3 |

**Size scale (px):** `10`, `12`, `14`, `16`, `18`, `20`, `24`, `32`, `40`, `48`, `72`

**Weights in use:** `100` (x2), `300` (x2), `400` (x25), `500` (x21), `600` (x5), `700` (x9)

## Spacing

Most-used values (px): `1`, `2`, `3`, `5`, `6`, `8`, `10`, `12`, `14`, `16`, `24`, `28`

## Border radius

| Token | Value | Usage |
| --- | --- | --- |
| `radius-sm` | `4px` | 4 |
| `radius-md` | `8px` | 1 |
| `radius-lg` | `40px` | 1 |
| `radius-full` | `50%` | 2 |

### Focus rings (spread-only box-shadows, kept out of the elevation scale)

- `0 0 0 2px #a0d1fa` (x2)

## Breakpoints

`480px`, `768px`, `1024px`, `1280px`, `1440px`, `1920px`

## Starter recipes

Tokens composed into components. The source site's real components were **not** inspected — these are starting points built from the extracted values, with contrast ratios computed rather than assumed.

```css
.button-primary {
  background: var(--color-accent); /* #f7f5f2 */
  color: var(--color-canvas); /* #1e1919 — contrast 16.0:1 */
  border-radius: 9999px; /* pill — mined as 50% */
  font-weight: 500;
}

.card {
  background: var(--color-surface); /* #2d2b29 */
  border: 1px solid var(--color-hairline); /* #44403d */
  border-radius: 4px; /* most-used finite radius */
  /* no shadow — this system builds depth with tonal contrast */
}

.input {
  background: var(--color-canvas); /* #1e1919 */
  color: var(--color-ink); /* #ebe9e6 — contrast 14.3:1 */
  border: 1px solid var(--color-hairline); /* #44403d */
  border-radius: 4px;
  /* placeholder color: var(--color-text-muted) #736c64 */
}

.nav {
  background: var(--color-canvas); /* #1e1919 */
  border-bottom: 1px solid var(--color-hairline); /* #44403d */
  color: var(--color-ink); /* #ebe9e6 */
  /* inactive links: var(--color-text-muted) #736c64 */
  /* active link: var(--color-accent) #f7f5f2 — contrast vs canvas 16.0:1 */
}

.modal {
  background: var(--color-surface); /* #2d2b29 */
  border-radius: 4px;
  border: 1px solid var(--color-hairline); /* no shadows mined — hairline instead */
}

.modal-backdrop {
  background: color-mix(in srgb, var(--color-ink) 55%, transparent); /* scrim from #ebe9e6 */
}

.input-error {
  border-color: #fa551e; /* mined token: orange */
  /* error text: #fa551e on canvas — contrast 5.3:1 */
}

.input-success {
  border-color: #0f503c; /* mined token: deep-teal */
}
```

## Observations

- 9 of 21 extracted colors are neutrals.
- 6 breakpoints, from 480px to 1920px.
- The site ships a large native token system (120+ custom properties) — prefer those names when extending it.

## Native CSS custom properties

First 40 of 120:

```css
:root {
  --scheme__color: light;
  --scheme__inverse__color: dark;
  --spacing__base_unit: 8px;
  --spacing__unit--0_5: 4px;
  --spacing__unit--1: 8px;
  --spacing__unit--1_5: 12px;
  --spacing__unit--2: 16px;
  --spacing__unit--2_5: 20px;
  --spacing__unit--3: 24px;
  --spacing__unit--4: 32px;
  --spacing__unit--5: 40px;
  --boxshadow__elevation1: 0px 8px 32px #1e191908, 0px 8px 16px #1e191908, 0px 4px 8px #1e191908, 0px 2px 4px #1e191908, 0px 1px 2px #1e191908;
  --__desktopMacBodyFontStack: Atlas Grotesk Web, Atlas Grotesk, system-ui;
  --__titleFontStack: Sharp Grotesk, SharpGrotesk, Sharp Grotesk KR, Sharp Grotesk Thai, var(--__bodyFontStack);
  --type__body__monospace--fontweight__strong: 600;
  --color__core__primary: #1e1919;
  --color__core__secondary: #f7f5f2;
  --color__core__accent: #0061fe;
  --color__button__primary__hover: #0057e5;
  --color__button__primary__active: #0050d0;
  --color__standard__text: #1e1919;
  --color__standard__border: #a69e9299;
  --color__standard__background: #fff;
  --color__faint__text: #524a3ed1;
  --color__faint__border: #a6917133;
  --color__faint__background: #f7f5f2;
  --color__disabled__text: #524a3e66;
  --color__disabled__border: #c0bbb4;
  --color__disabled__background: #c0bbb4;
  --color__elevated__background: #fbfaf9;
  --color__attention__text: #0061fe;
  --color__attention__border: #0061fe;
  --color__attention__border--faint: #0061fe52;
  --color__attention__background: #0061fe29;
  --color__attention__background--faint: #0061fe14;
  --color__success__text: #2d7a02;
  --color__success__border: #2d7a02;
  --color__success__border--faint: #2d7a0252;
  --color__success__background: #2d7a021f;
  --color__warning__text: #9b6400;
}
```

## Files

- `tailwind.css` — Tailwind v4 `@theme` block; tokens become utilities (e.g. `bg-neutral-900`, `text-pale-orange`).
- `variables.css` — framework-agnostic `:root` variables, same values.
- `tokens.json` — W3C Design Tokens format for Figma plugins, Style Dictionary, etc.