<!--
ROLE: You are a senior product designer + frontend engineer pair.
TASK: Treat the DESIGN.md below as the SINGLE SOURCE OF TRUTH for visual style.
Every component you produce in this codebase must:
  • Reuse the color tokens declared in YAML frontmatter (no ad-hoc hex values)
  • Use the typography scale (display / h1 / h2 / body / label / mono) verbatim
  • Match the radius scale (button / card / pill) to the named tier
  • Honor the elevation table for shadows
  • Respect the motion section (durations, easings, reduced-motion)
  • Pass the contrast pairs in the accessibility section
INPUT: Project files at ${CWD}.
OUTPUT: Code, not paragraphs. Quote the relevant section number when you cite a token (e.g. "per §3 Typography Rules").
PRINCIPLE: A token used once is a one-off; a token used three times is a system. Prefer system fidelity over local cleverness.
-->

---
name: Anytype
tagline: Pure-black canvas, white ink, and a multi-color 'any' palette — a local-first, encrypted knowledge base that turns privacy into a colorful object.
updated_at: 2026-05-29T21:45:12.977Z
published_at: 2026-05-29T21:45:12.977Z
author: webdesignhot
source_url: https://anytype.io
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [saas]
tags: [dark, sans, minimal, colorful, local-first, privacy, notes, encrypted]
preview_swatch: ['#000000', '#3cd9b3', '#18a3f1']
related: [obsidian, notion, omnivore]
description: 'Anytype''s site is a pure-black `#000000` canvas with white `#ffffff` ink and a signature multi-color "any" palette that makes encryption look playful instead of paranoid — a teal `#3cd9b3` "Download" CTA accent backed by a four-color object spectrum (teal `#3cd9b3`, blue `#18a3f1`, green `#4cad00`, amber `#ffb522`). Display copy sets large in a quirky display face (live-probed at 88px) while the body runs clean in `ui-sans-serif` / Inter — a contrast of warm personality up top and calm legibility in the running text. Where most privacy tools dress in cold grayscale and lock icons, Anytype goes the opposite way: a true-black workspace lit by bright, friendly object colors, the way colored blocks light up the app''s own canvas. The result is "local-first, end-to-end-encrypted, no-account-required" rendered not as a security warning but as a colorful, human, safe-haven aesthetic — a knowledge base you''d actually want to live inside.'


# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.

colors:
  bg: '#000000'                  # pure-black page canvas — the app's own dark workspace
  bg-deep: '#000000'            # there is no deeper well — black is the floor
  surface: '#0d0d0d'            # raised card / panel surface, one hair off pure black
  surface-elev: '#1a1a1a'       # nested card / hovered surface
  surface-hover: '#242424'      # interactive hover fill (ghost button, list row)
  text: '#ffffff'               # primary body + display copy — pure white on pure black
  text-strong: '#ffffff'        # peak display — same white, no brighter step exists
  text-secondary: '#b8b8b8'     # secondary running-text, deck copy
  text-muted: '#8a8a8a'         # captions, metadata, footer links
  text-faint: '#5c5c5c'         # disabled / placeholder / fine print
  brand: '#3cd9b3'              # signature teal — the "Download" CTA accent (live-probed)
  brand-hover: '#2fc4a0'        # pressed / hover state — one stop deeper teal
  brand-active: '#27a98a'       # active / depressed CTA teal
  brand-text: '#3cd9b3'         # teal as text on black — passes AAA, no lightening needed
  brand-soft: '#0e2b25'         # teal-tinted soft fill for badges / highlights
  on-brand: '#000000'           # black text on the bright teal CTA (the bright fill demands dark ink)
  any-teal: '#3cd9b3'           # the 'any' palette — object color 1 (primary / brand)
  any-blue: '#18a3f1'           # the 'any' palette — object color 2
  any-green: '#4cad00'          # the 'any' palette — object color 3
  any-amber: '#ffb522'          # the 'any' palette — object color 4
  border: '#262626'             # default hairline divider on black
  border-soft: '#1a1a1a'        # near-invisible structural divider
  border-strong: '#3a3a3a'      # focused input / emphasized edge
  border-brand: '#3cd9b3'       # focus ring + active-input edge (teal)
  shadow-ambient: 'rgba(0,0,0,0.50)'   # subtle lift on black
  shadow-card: 'rgba(0,0,0,0.65)'      # raised card / dropdown
  shadow-modal: 'rgba(0,0,0,0.80)'     # heavy lift for modals / popovers
  scrim: 'rgba(0,0,0,0.70)'            # modal backdrop over canvas
  success: '#4cad00'            # confirmation green — reuses the 'any' green
  success-soft: '#0f2200'
  warning: '#ffb522'            # advisory amber — reuses the 'any' amber
  warning-soft: '#2a1d00'
  danger: '#ff6a7b'             # error red on dark (matches the media-player accent var)
  danger-soft: '#2e1115'
  info: '#18a3f1'               # informational accent — the 'any' blue

typography:
  display:
    family: '"Riccione", "Riccionets", Inter, system-ui, -apple-system, sans-serif'
    weights: [400, 500, 700]
    opentype-features: ['kern', 'liga']
  body:
    family: 'Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'
    weights: [400, 500, 600]
  mono:
    family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace'
    weights: [400, 500]
  scale:
    display-hero:    { size: 88, weight: 400, lineHeight: 1.0,  tracking: '-0.02em',  family: display, opentype: ['kern'] }
    display-lg:      { size: 64, weight: 400, lineHeight: 1.05, tracking: '-0.018em', family: display }
    h1:              { size: 48, weight: 500, lineHeight: 1.1,  tracking: '-0.015em', family: display }
    h2:              { size: 36, weight: 500, lineHeight: 1.15, tracking: '-0.012em', family: display }
    h3:              { size: 26, weight: 600, lineHeight: 1.25, tracking: '-0.005em', family: body }
    h4:              { size: 20, weight: 600, lineHeight: 1.3,  tracking: '0',        family: body }
    title-lg:        { size: 18, weight: 600, lineHeight: 1.4,  tracking: '0',        family: body }
    body-lg:         { size: 18, weight: 400, lineHeight: 1.6,  tracking: '0',        family: body }
    body:            { size: 16, weight: 400, lineHeight: 1.55, tracking: '0',        family: body }
    body-sm:         { size: 14, weight: 400, lineHeight: 1.5,  tracking: '0',        family: body }
    label:           { size: 13, weight: 500, lineHeight: 1.4,  tracking: '0',        family: body }
    button:          { size: 15, weight: 600, lineHeight: 1.2,  tracking: '0',        family: body }
    nav-link:        { size: 15, weight: 500, lineHeight: 1.4,  tracking: '0',        family: body }
    caption:         { size: 12, weight: 500, lineHeight: 1.4,  tracking: '0.02em',   family: body }
    overline:        { size: 11, weight: 600, lineHeight: 1.3,  tracking: '0.08em',   family: body, transform: uppercase }
    code:            { size: 14, weight: 400, lineHeight: 1.55, tracking: '0',        family: mono }
    code-micro:      { size: 12, weight: 400, lineHeight: 1.5,  tracking: '0',        family: mono }

radius:
  micro: 2
  sm: 4
  md: 8         # buttons + inputs — the workhorse rounding
  lg: 12        # cards / panels
  xl: 16        # large feature shells / app screenshots
  pill: 9999

spacing:
  base: 4
  scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]

layout:
  page-width: 1280
  prose-width: 720
  header-height: 64
  hero-height: 640

components:
  cta-primary:
    bg: '#3cd9b3'
    color: '#000000'
    radius: 8
    padding: '12px 20px'
    height: 44
    font: button
    use: 'The signature "Download" CTA — bright teal fill, black text, 8px radius. The brightest single object on the black canvas.'
  cta-primary-hover:
    bg: '#2fc4a0'
    color: '#000000'
    radius: 8
    use: 'Hover — one stop deeper teal. Subtle, color-only; the bright teal is loud enough at rest.'
  button-ghost:
    bg: 'transparent'
    color: '#ffffff'
    border: '1px solid #262626'
    radius: 8
    padding: '12px 20px'
    height: 44
    font: button
    use: 'Secondary action — outlined ghost on black. Fill warms to #242424 on hover. "Read the docs", "Join community".'
  button-quiet:
    bg: 'transparent'
    color: '#b8b8b8'
    radius: 8
    padding: '10px 14px'
    use: 'Tertiary / nav-adjacent text button. Text brightens to #ffffff on hover, no border.'
  card:
    bg: '#0d0d0d'
    color: '#ffffff'
    border: '1px solid #262626'
    radius: 12
    padding: '24px'
    use: 'Feature panel — raised a hair off pure black via surface tone + hairline. An object color often tints the icon or top accent.'
  card-elev:
    bg: '#1a1a1a'
    color: '#ffffff'
    border: '1px solid #3a3a3a'
    radius: 12
    use: 'Nested / hovered card — a second tonal step up off black.'
  card-object:
    bg: '#0d0d0d'
    color: '#ffffff'
    border: '1px solid #262626'
    radius: 12
    accent: 'one of any-teal / any-blue / any-green / any-amber'
    use: 'Object card — mirrors the app, where each object (page, set, space) carries its own color. The accent appears as the icon tint or a left/top color bar.'
  input:
    bg: '#0d0d0d'
    color: '#ffffff'
    border: '1px solid #262626'
    radius: 8
    height: 44
    padding: '10px 14px'
    placeholder: '#5c5c5c'
    focus: 'border becomes #3cd9b3 (1px) + faint teal ring'
    use: 'Text input — sits one tone off canvas, teal focus edge.'
  badge-soft:
    bg: '#0e2b25'
    color: '#3cd9b3'
    radius: 9999
    padding: '3px 10px'
    font: caption
    use: 'Inline tag / status chip — teal-tinted soft fill, teal text. "New", "Open-source", version tags.'
  badge-neutral:
    bg: '#1a1a1a'
    color: '#8a8a8a'
    border: '1px solid #262626'
    radius: 9999
    padding: '3px 10px'
    font: caption
    use: 'Neutral metadata chip — platform / category tags.'
  badge-object:
    bg: 'transparent'
    color: 'one of #3cd9b3 / #18a3f1 / #4cad00 / #ffb522'
    radius: 9999
    padding: '3px 10px'
    border: '1px solid currentColor'
    font: caption
    use: 'Object chip — the multi-color register. A row of these in different object colors is the brand signature.'
  nav-top:
    bg: '#000000cc'
    color: '#ffffff'
    height: 64
    border: '0 0 1px 0 solid #262626'
    use: 'Sticky top nav — translucent pure-black with backdrop blur, hairline bottom border. Anytype wordmark left, links centre, teal "Download" CTA right.'
  link-inline:
    color: '#3cd9b3'
    use: 'Inline body link — teal (AAA-safe on black). Underline appears on hover.'

motion:
  ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
  ease-out: 'cubic-bezier(0.0, 0, 0.2, 1)'
  ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
  duration-fast: 150
  duration-standard: 240
  duration-slow: 320
  button-hover: 'background 150ms standard — colour only, no transform'
  link-underline: 'underline fades in over 150ms on hover'
  scroll-reveal: 'sections fade + 8px rise over 320ms ease-out on viewport entry'
  object-color-cycle: 'optional — object accents / illustrations may gently cycle through the any-palette; decorative only'
  reduced-motion: 'respects prefers-reduced-motion: reduce — scroll-reveal becomes static render, colour-cycle pauses, transforms suppressed'

breakpoints:
  mobile: 640
  tablet: 1024
  desktop: 1280
  wide: 1536

shadows:
  ambient: 'rgba(0,0,0,0.50) 0 1px 2px 0'
  card: 'rgba(0,0,0,0.65) 0 8px 24px -8px'
  modal: 'rgba(0,0,0,0.80) 0 24px 64px -16px'
  ring: '0 0 0 3px rgba(60,217,179,0.40)'

accessibility:
  contrast-text-on-bg: 21.0          # #ffffff on #000000 — AAA (the maximum possible ratio)
  contrast-text-on-surface: 19.7     # #ffffff on #0d0d0d — AAA
  contrast-on-brand: 13.7            # #000000 on #3cd9b3 — AAA (black label on bright teal CTA)
  contrast-brand-on-bg: 11.2         # #3cd9b3 on #000000 — AAA (teal is safe as text on black)
  contrast-blue-on-bg: 6.8           # #18a3f1 on #000000 — AA (object blue as text)
  contrast-green-on-bg: 5.1          # #4cad00 on #000000 — AA large / UI; thin text needs care
  contrast-amber-on-bg: 11.5         # #ffb522 on #000000 — AAA (object amber)
  contrast-secondary-on-bg: 11.0     # #b8b8b8 on #000000 — AAA
  contrast-muted-on-bg: 6.4          # #8a8a8a on #000000 — AA
  focus-ring: '3px rgba(60,217,179,0.40) ring + 1px solid #3cd9b3 border on focusable controls'
  reduced-motion-honored: true
  touch-target-min: 44

dark-mode: 'dark-only'   # The marketing site is dark-only — pure black canvas mirroring the app's dark workspace. The Anytype app itself ships light + dark themes plus per-object colors; the public site commits to black as a brand-identity choice.
---

## 1. Visual Theme & Atmosphere

Anytype's site opens onto a **pure-black `#000000` canvas** — not the near-black `#0f0f0f` that most dark sites use as a polite softening, but the true, absolute zero of the screen. White `#ffffff` ink sits on top at full strength, and the page's display copy lands large and characterful in a quirky display face (live-probed at 88px). The first impression is of stepping into the app's own dark workspace lifted onto the web: a void you fill with your own thoughts, lit from within.

What separates Anytype from every other privacy and local-first tool is the **color**. Most encryption-forward products dress in cold grayscale, padlock icons, and shield motifs — the visual language of paranoia. Anytype does the opposite. Against the black, it deploys a signature **multi-color "any" palette**: a teal `#3cd9b3` that powers the "Download" CTA, plus a friendly spectrum of object colors — blue `#18a3f1`, green `#4cad00`, amber `#ffb522`. These are the same colors the app uses to tint individual objects (pages, sets, spaces), so the marketing surface literally previews the product's own chroma. The effect is that "end-to-end encrypted, no account required, your data on your device" reads not as a warning label but as a warm, human, *colorful* invitation.

The atmosphere is therefore a deliberate paradox: **maximum-contrast seriousness on the canvas, maximum playfulness in the accents.** The black is uncompromising — a statement that this workspace is yours, undistracted, private. But the moment color appears, it appears generously and brightly, a constellation of friendly object hues against the dark. Where Obsidian rations itself to a single purple voltage, Anytype embraces a *palette* — its restraint is in the canvas, not the accents. The teal CTA is the brightest single object on the page; the other object colors orbit it as supporting voices.

Typography reinforces the split personality. The display face is warm and a little quirky — it gives headlines a human, almost hand-set feeling — while the body settles into clean, calm `ui-sans-serif` / Inter for total legibility. Large, friendly headlines up top; trustworthy, neutral running text below. The page never lets the personality of the display type compromise the readability of the prose.

The result is a page that signals Anytype's whole thesis before you read a word: **black because your workspace is yours and undistracted; bright multi-color because privacy can be joyful, not joyless; clean body sans because the words must always stay legible.** It is a safe haven that happens to be the most colorful room in the privacy-software house.

**Key Characteristics:**
- Pure-black canvas (`#000000`) — the absolute floor, the app's own dark workspace lifted to marketing
- Pure-white ink (`#ffffff`) — full-strength contrast, the maximum-possible 21:1 ratio
- A signature **multi-color "any" palette** — teal `#3cd9b3`, blue `#18a3f1`, green `#4cad00`, amber `#ffb522`
- Teal `#3cd9b3` is the brand voltage — the "Download" CTA accent and the brightest single element
- Object colors mirror the app, where each object (page, set, space) carries its own hue
- Quirky display face for headlines (live-probed at 88px) + clean `ui-sans-serif` / Inter body
- Privacy rendered as warmth, not paranoia — no padlocks, shields, or cold grayscale
- Bright accents demand *black* CTA text (`#000000` on teal), not white — the inverse of dark-mode habit
- Hairline `#262626` borders on black define structure; depth comes from tone, not heavy shadow
- 8px radius on buttons / inputs, 12px on cards — friendly-but-engineered, never pill-everything
- Color is rationed by *canvas discipline* (black does the spacing work) but spent *generously* in accents

## 2. Color Palette & Roles

### Primary
- **Canvas** (`#000000`) [→ `bg`]: pure-black page floor — the absolute zero of the screen; the default of everything.
- **Deep Well** (`#000000`) [→ `bg-deep`]: there is no darker tone; black is already the floor. Elevation goes *up* from here.
- **Ink** (`#ffffff`) [→ `text`]: primary body and display copy — pure white at full strength, hitting 21:1.
- **Ink Strong** (`#ffffff`) [→ `text-strong`]: identical to ink — there is no brighter step beyond pure white.

### Brand
- **Brand Teal** (`#3cd9b3`) [→ `brand`]: the signature accent — the "Download" CTA fill, focus edge, and the lead voice of the "any" palette.
- **Brand Hover** (`#2fc4a0`) [→ `brand-hover`]: CTA hover — one stop deeper teal.
- **Brand Active** (`#27a98a`) [→ `brand-active`]: pressed CTA — two stops deeper.
- **Brand Soft** (`#0e2b25`) [→ `brand-soft`]: teal-tinted soft fill for badges and inline highlights.

### Accent — the "any" palette
This is the brand's defining feature: a **four-color object spectrum**, not a single accent. Each maps to how the Anytype app colors individual objects.
- **Any Teal** (`#3cd9b3`) [→ `any-teal`]: object color 1 — also the brand / CTA. The lead.
- **Any Blue** (`#18a3f1`) [→ `any-blue`]: object color 2 — links, info, the second voice.
- **Any Green** (`#4cad00`) [→ `any-green`]: object color 3 — success, growth, a "live" tone.
- **Any Amber** (`#ffb522`) [→ `any-amber`]: object color 4 — warmth, highlight, advisory.

A horizontal row of these four — as object chips, icon tints, or illustration fills — is the single most recognizable Anytype move. Use them *together* when invoking the palette; pick *one* (usually teal) when a surface needs a single accent.

### Interactive
- **Brand Text** (`#3cd9b3`) [→ `brand-text`]: inline links and teal text *on black* — and crucially, **the saturated brand needs no lightening here**, because on pure black `#3cd9b3` already reaches 11.2:1 (AAA). This is the inverse of Obsidian's dark-purple problem: bright teal on absolute black is one of the most readable accent-as-text combinations possible.
- **On-Brand** (`#000000`) [→ `on-brand`]: **black** label on the bright teal CTA. Because the teal fill is so light, the contrast-correct label is dark, not white — `#000000` on `#3cd9b3` is 13.7:1 (AAA), while white on teal would fail.
- **Focus Ring** (`rgba(60,217,179,0.40)`) [→ `border-brand`]: 3px teal ring + 1px solid teal border on focused controls.
- **Disabled** (`#5c5c5c` text on `#0d0d0d` fill): drained grey, no color.

### Neutral Scale
- **Ink** (`#ffffff`) — body, primary display, the dominant text colour (21:1)
- **Secondary** (`#b8b8b8`) — deck copy, secondary running-text (11.0:1 AAA)
- **Muted** (`#8a8a8a`) — captions, metadata, footer links (6.4:1 AA)
- **Faint** (`#5c5c5c`) — disabled, placeholder, fine print

### Surface & Borders
- **Canvas** (`#000000`) — page floor
- **Surface** (`#0d0d0d`) — raised card / panel, a hair off pure black
- **Surface Elev** (`#1a1a1a`) — nested / hovered card, second step
- **Surface Hover** (`#242424`) — interactive hover fill (ghost button, list row)
- **Border** (`#262626`) — default hairline divider
- **Border Soft** (`#1a1a1a`) — near-invisible structural divider
- **Border Strong** (`#3a3a3a`) — focused input / emphasized edge

### Shadow Colors
Anytype uses **pure-black** shadows (`rgba(0,0,0,…)`) at *high* opacities (0.50–0.80). On a true-black canvas a shadow is the weakest possible signal — it is nearly invisible against the floor it sits on — so most surfaces use **no shadow at all**. Elevation is communicated by stepping the surface tone *up* (`#000000` → `#0d0d0d` → `#1a1a1a`) plus a `#262626` hairline. Shadow is reserved for genuinely floating chrome (dropdowns, modals, the sticky nav at scroll), and is pushed to high opacity purely so it registers.

- `rgba(0,0,0,0.50) 0 1px 2px 0` — ambient lift (sticky nav at scroll)
- `rgba(0,0,0,0.65) 0 8px 24px -8px` — raised card / dropdown
- `rgba(0,0,0,0.80) 0 24px 64px -16px` — modal / popover

### Semantic
- **Success** (`#4cad00` on `#0f2200`) — confirmation green — *reuses* the "any" green, so the success state is on-brand.
- **Warning** (`#ffb522` on `#2a1d00`) — advisory amber — *reuses* the "any" amber.
- **Danger** (`#ff6a7b` on `#2e1115`) — form-error red on dark (this is the one accent imported from the media-player chrome — `--plyr-color-main: #ff6a7b` — and it doubles as the error tone; softened so it doesn't vibrate on black).
- **Info** (`#18a3f1` on `#0d2233`) — informational accent — the "any" blue. Anytype's semantic palette is mostly *the brand palette reused*, which is what keeps the whole system feeling unified.

## 3. Typography Rules

### Font Family

**Display**: `"Riccione", Inter, system-ui, -apple-system, sans-serif`. Anytype's headlines use a warm, slightly quirky display face (the live probe captured a face resolving to `riccionets` at 88px). It gives headlines a human, almost hand-set personality that softens the severity of the black canvas. Where a build cannot license the display face, **Inter at weight 400–500** is the closest neutral substitute — keep it large and let size, not weight, carry the impact.

**Body**: `Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`. The running text is clean, calm, and maximally legible — Inter on platforms that have it, otherwise the system UI sans. The contrast is intentional: characterful display, neutral body. Personality up top, trust in the prose.

**Mono**: `ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace` — used for code samples, the CLI, and any moment demonstrating Anytype's open-format, local-files pitch.

**OpenType features**: `kern` and `liga` on. No custom stylistic sets in body; the display face brings its own character.

The two-family decision is the typographic fingerprint. Anytype is a privacy tool that refuses to *look* austere — the quirky display face is the typographic equivalent of the multi-color palette: warmth applied deliberately to a serious subject. The body's neutrality is what keeps long-form reading effortless. Never invert this (a quirky body font would fatigue; a flat display font would lose the brand's warmth).

### Hierarchy

| Role | Font | Size | Weight | Line Height | Letter Spacing | OT Features | Notes |
|------|------|------|--------|-------------|----------------|-------------|-------|
| display-hero | display | 88 | 400 | 1.0 | -0.02em | kern | Hero headline — peak moment (live-probed at 88px) |
| display-lg | display | 64 | 400 | 1.05 | -0.018em | — | Large section opener |
| h1 | display | 48 | 500 | 1.10 | -0.015em | — | Page / section heading |
| h2 | display | 36 | 500 | 1.15 | -0.012em | — | Sub-section opener |
| h3 | body (Inter) | 26 | 600 | 1.25 | -0.005em | — | Feature title — switches to body sans for clarity |
| h4 | body (Inter) | 20 | 600 | 1.30 | 0 | — | Card title |
| title-lg | body (Inter) | 18 | 600 | 1.40 | 0 | — | Inline emphasis title |
| body-lg | body (Inter) | 18 | 400 | 1.60 | 0 | — | Hero deck — slightly larger body |
| body | body (Inter) | 16 | 400 | 1.55 | 0 | — | Default running-text |
| body-sm | body (Inter) | 14 | 400 | 1.50 | 0 | — | Card meta, secondary copy |
| label | body (Inter) | 13 | 500 | 1.40 | 0 | — | Form label, small UI label |
| button | body (Inter) | 15 | 600 | 1.20 | 0 | — | CTA / button label |
| nav-link | body (Inter) | 15 | 500 | 1.40 | 0 | — | Top-nav item |
| caption | body (Inter) | 12 | 500 | 1.40 | 0.02em | — | Timestamp, fine metadata |
| overline | body (Inter) | 11 | 600 | 1.30 | 0.08em | uppercase | Section eyebrow |
| code | mono | 14 | 400 | 1.55 | 0 | — | Code / open-format sample |
| code-micro | mono | 12 | 400 | 1.50 | 0 | — | Inline shortcut bubble |

### Principles

- **Two families, by job.** Quirky display face for headlines (h1–h2 and the hero); clean Inter / `ui-sans-serif` for everything from h3 down. The switch at h3 is deliberate — feature titles must read as crisp UI, not personality.
- **Display rides on size, not weight.** The hero sets at 88px / 400 — its impact comes from scale and the face's character, not from bold. Pushing the display to 700 would coarsen its warmth.
- **Pure white ink.** Unlike near-black sites that soften ink to `#eeeeee`, Anytype runs `#ffffff` on `#000000` — full 21:1 contrast. The canvas is so dark that pure white reads as crisp, not vibrating.
- **Negative tracking on display only.** Hero `-0.02em` tapering to `0` by h4. Body and below stay at `0`; only caption/overline get positive tracking.
- **16px body at 1.55 line-height.** Comfortable web body with generous leading — the app's own reading rhythm.
- **Mono for open formats.** Code, the CLI, file paths render in `ui-monospace` — making Anytype's "your data in open formats" promise typographic.
- **Color the type sparingly.** Body text is white; the "any" palette colors *headlines, accents, and object labels*, never long runs of prose. A colored word is an emphasis, not a default.

## 4. Component Stylings

### Buttons

**`cta-primary`** — The signature "Download" CTA. Bright teal `#3cd9b3` fill, **black** text at 15px / 600 (the fill is too light for white text — `#000000` on teal is the contrast-correct pairing), **8px radius**, 12×20px padding, 44px height. This is the brightest single object on the black canvas — everything funnels here.

**`cta-primary-hover`** — Pointer hover. Fill deepens to `#2fc4a0` over 150ms standard. **No transform, no scale, no glow** — color only; the bright teal is loud enough at rest. Active → `#27a98a`.

**`button-ghost`** — Secondary action. Transparent fill, `#ffffff` text, 1px `#262626` border, 8px radius. On hover the fill warms to `#242424`. Used for "Read the docs", "Join the community", "See the roadmap".

**`button-quiet`** — Tertiary / nav-adjacent text button. No border, no fill; `#b8b8b8` text that brightens to `#ffffff` on hover. Used for utility links ("Sign in", "Pricing", "Blog").

### Cards

**`card`** — Feature panel. `#0d0d0d` fill (a hair off pure black), `#ffffff` text, 1px `#262626` hairline border, **12px radius**, 24px padding. **No shadow** — the surface step plus hairline is the elevation language. Inside: h4 title in white, body in `#b8b8b8`. An object color frequently tints the card's icon or a top accent bar.

**`card-elev`** — Nested or hovered card. `#1a1a1a` fill, `#3a3a3a` border — a second tonal step up off black. Used for cards-within-cards or as the hover state of `card`.

**`card-object`** — The brand-signature card. Same chassis as `card`, but it carries **one of the four "any" colors** as its icon tint and a left or top color bar — mirroring how the app colors each object. A grid of these in alternating teal / blue / green / amber is the most recognizable Anytype layout.

**`feature-screenshot`** — App screenshot of the Anytype workspace (showing the black canvas with colored objects — the page literally pictures itself). 16px radius, optional `rgba(0,0,0,0.65) 0 8px 24px -8px` shadow to float it off the canvas.

### Badges, Tags, Pills

**`badge-soft`** — Teal-tinted chip. `#0e2b25` fill, `#3cd9b3` text, 9999px radius, 3×10px padding, 12px caption. "New", "Open-source", version tags.

**`badge-neutral`** — Neutral metadata chip. `#1a1a1a` fill, `#8a8a8a` text, 1px `#262626` border, pill radius. Platform tags (macOS / Windows / Linux / iOS / Android), category labels.

**`badge-object`** — The multi-color register. Transparent fill, an outline + text in **one of the four "any" colors**, pill radius. A row of these in different object colors (teal / blue / green / amber) is the brand-signature chip cluster — used to label object types, spaces, or feature categories.

### Inputs / Forms

**`input`** — Text input. `#0d0d0d` fill (one tone off canvas), `#ffffff` text, 1px `#262626` border, 8px radius, 44px height, 10×14px padding. Placeholder in `#5c5c5c`. On focus, the border becomes `#3cd9b3` (1px) with a faint `rgba(60,217,179,0.40)` 3px ring. Newsletter / search / space-name fields.

**`select` / `dropdown`** — Same chassis as input; chevron in `#8a8a8a`. Open panel uses `card` surface (`#0d0d0d`) with `shadow-card`.

### Navigation

**`nav-top`** — Sticky top nav, 64px height. Translucent pure-black (`#000000cc`) with backdrop blur so content blurs behind it on scroll, and a 1px `#262626` bottom hairline. **Anytype wordmark** flush left in `#ffffff`. Centre: nav links (Product, Use cases, Pricing, Community, Docs) in 15px / 500 white. Right: a `button-quiet` link + the teal `cta-primary` ("Download").

**`nav-link`** — `#ffffff` at rest, no underline. Hover brings a subtle teal `#3cd9b3` underline / color lift. Active page link stays full white with a teal underline.

**`footer`** — `#000000` background (the canvas continues; there is no deeper well), column heads in 13px / 600 white, links in 14px / 400 `#8a8a8a`. The wordmark reappears, muted. Multi-column: Product / Community / Resources / Company. Open-source / GitHub link is prominent — it is part of the trust pitch.

### Decorative

**`object-constellation`** — An optional cluster of colored object cards / icons floating on the black canvas, each in a different "any" color (teal, blue, green, amber). Edges may gently cycle color or drift on viewport entry. Purely decorative — `aria-hidden="true"`. This is the visual that distinguishes Anytype from grayscale privacy tools.

## 5. Layout Principles

### Spacing System

- Base unit: **4px**
- Scale: `0 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 · 128`
- Section padding (vertical): 96–128px between major bands — generous, lets the black canvas breathe
- Card internal padding: 24px on feature cards; 16px on compact list rows
- Inter-card gutters: 24px in feature grids
- The black canvas does a lot of the spacing work — empty pure-black space reads as deliberate calm, the room your thoughts go in

### Grid & Container

- Max content width: **1280px** — standard modern marketing width
- Prose / reading column: 720px for long-form (docs, blog)
- Hero: single-column, centred — H1 + deck + the teal CTA + an app screenshot beneath (optional object-constellation behind)
- Feature grid: 3-up at desktop → 2-up at tablet → 1-up at mobile, often as `card-object` tiles in alternating "any" colors
- 24px gutters; the grid sits inside the 1280px container with generous side margins on wide screens

### Whitespace Philosophy

On a pure-black canvas, **negative space is the primary compositional tool** — and Anytype's black is darker and more total than most. Where a light site fills space with subtle tints, Anytype leaves the canvas pure black and empty; the void reads as focus and calm, the room you fill with your own knowledge. Surfaces (cards) appear only where there is content to hold; between them is `#000000`. The colored objects pop *because* the space around them is so dark and so empty.

### Section Cadence

A typical Anytype page runs:

1. **Hero** — large display H1 (88px / 400 in the quirky display face), 18px deck in `#b8b8b8`, teal `cta-primary` "Download", app screenshot floating beneath (optional object-constellation behind)
2. **Value spread** — 3-up `card-object` tiles in alternating "any" colors (Local-first · Encrypted · Open formats)
3. **Workspace showcase** — the signature black-canvas-with-colored-objects screenshot, large, with a short caption — the product's most recognizable surface
4. **Privacy / trust band** — end-to-end encryption, no account required, open-source — presented warmly with colored icons, not lock motifs
5. **Community / open-source band** — GitHub, contributors, the self-host story
6. **Closing CTA band** — a centred restatement of the teal "Download" CTA over empty black canvas
7. **Footer** — pure-black, muted multi-column links, prominent open-source link

The page does not alternate light/dark — it is black throughout. The "alternation" is canvas (`#000000`) vs. card surface (`#0d0d0d`) tonal contrast, punctuated by the bright object colors.

## 6. Shapes & Radius Scale

| Tier | Value | Use |
|------|-------|-----|
| Micro | 2px | Inline code chips, tiny indicators |
| Small | 4px | Nested elements, fine controls |
| Standard | 8px | Buttons, inputs — the workhorse rounding |
| Comfortable | 12px | Cards, panels, object tiles |
| Large | 16px | Feature shells, app screenshots |
| Pill | 9999px | Badges, object chips, neutral tags |

Anytype's radius hierarchy is **friendly-but-engineered** — the dominant 8px on buttons and inputs is the modern-app sweet spot: rounded enough to feel approachable, crisp enough to feel like a real tool. Cards step to 12px (a touch softer than Obsidian's, in keeping with the warmer register); the largest shells and screenshots to 16px. Pill radius is reserved for badges and object chips — the page never makes a pill *button*, because the CTA should read as a crisp, serious action while the chips stay soft and labelly.

## 7. Depth & Elevation

| Level | Treatment | Use |
|-------|-----------|-----|
| 0 — Canvas | no shadow, `#000000` | The page floor, hero, empty space (~70% of surface) |
| 1 — Surface | tonal step to `#0d0d0d` + 1px `#262626` hairline, no shadow | Feature cards, object tiles, panels |
| 2 — Elevated surface | tonal step to `#1a1a1a` + `#3a3a3a` border | Nested / hovered cards |
| 3 — Floating | `rgba(0,0,0,0.50) 0 1px 2px 0` | Sticky nav at scroll, subtle inputs |
| 4 — Raised | `rgba(0,0,0,0.65) 0 8px 24px -8px` | Dropdowns, popovers, screenshots |
| 5 — Modal | scrim `rgba(0,0,0,0.70)` + `rgba(0,0,0,0.80) 0 24px 64px -16px` | Sign-in / space-setup dialog |

### Shadow Philosophy

On a **pure-black** canvas, shadow is the weakest signal possible — a `rgba(0,0,0,…)` shadow against `#000000` is *identical to the floor* until you reach high opacity, and even then it only registers around a lighter surface. So Anytype, like every well-built dark interface, inverts the usual elevation strategy: **depth is communicated by stepping the surface *lighter*, not by casting a darker shadow.** A raised card is `#0d0d0d` (lighter than canvas) with a hairline border; a more-raised card is `#1a1a1a`. The `#262626` hairline, not the shadow, draws the eye to a surface edge. Shadow is reserved for chrome that genuinely floats over content (dropdowns, modals, the sticky nav), used at high opacity (0.50–0.80) purely so it registers at all. This is the dark-mode elevation discipline Linear, Vercel, and Obsidian share — Anytype simply pushes it to the limit by starting from absolute black.

## 8. Interaction & Motion

### Easing

- **Standard**: `cubic-bezier(0.4, 0, 0.2, 1)` — default for hover color swaps, border transitions
- **Out**: `cubic-bezier(0.0, 0, 0.2, 1)` — scroll-reveal entrances
- **Emphasized**: `cubic-bezier(0.2, 0, 0, 1)` — modal entry, dropdown open

### Durations

| Bucket | Value | Use |
|--------|-------|-----|
| Fast | 150ms | Button hover, link underline, focus-ring fade |
| Standard | 240ms | Card hover, dropdown open, border transitions |
| Slow | 320ms | Scroll-reveal, modal entry, object-color cycle |

### Per-Component Recipes

- **CTA hover**: fill `#3cd9b3` → `#2fc4a0` over 150ms standard. **No transform, no scale.** Active → `#27a98a`. Black label stays put.
- **Ghost button hover**: transparent → `#242424` fill over 150ms; border unchanged.
- **Card hover**: surface lifts a tonal step (`#0d0d0d` → `#1a1a1a`) and border brightens (`#262626` → `#3a3a3a`) over 240ms. Object cards may also brighten their accent. No translate.
- **Link hover**: teal `#3cd9b3` underline fades in over 150ms; color holds.
- **Focus**: 3px `rgba(60,217,179,0.40)` ring + 1px teal border appears over 150ms on keyboard focus.
- **Scroll-reveal**: sections fade in + rise 8px over 320ms ease-out on first viewport entry. One-shot.
- **Object-color cycle**: the optional object-constellation may gently cycle accents through the "any" palette — decorative, low-amplitude, never demands attention.

### Page Transitions

Navigation is a quiet 240ms cross-fade; the sticky nav stays fixed. Anchored links smooth-scroll over 320ms emphasized. Motion exists to soften state changes, not to perform — the personality lives in the color and type, not in flashy animation.

### Reduced Motion

Respects `prefers-reduced-motion: reduce`. Scroll-reveal becomes static render-on-mount (no fade, no rise). The object-color cycle freezes to a static multi-color frame. All translate/scale are suppressed. Color-only transitions (button hover, link color) may remain since they don't induce motion.

## 9. Accessibility & A11y

### Contrast Pairs

| Pair | Ratio | Level |
|------|-------|-------|
| #ffffff ink on #000000 canvas | 21.0 | AAA (the maximum possible) |
| #ffffff ink on #0d0d0d surface | 19.7 | AAA |
| #000000 label on #3cd9b3 CTA | 13.7 | AAA (black on bright teal — the correct CTA pairing) |
| #3cd9b3 brand-text on #000000 | 11.2 | AAA — teal is safe as text/links on black |
| #18a3f1 any-blue on #000000 | 6.8 | AA — object blue as text |
| #4cad00 any-green on #000000 | 5.1 | AA — large / UI; thin small text needs care |
| #ffb522 any-amber on #000000 | 11.5 | AAA — object amber, very legible |
| #b8b8b8 secondary on #000000 | 11.0 | AAA |
| #8a8a8a muted on #000000 | 6.4 | AA |

The critical accessibility nuance is the **inverse of the usual dark-mode trap**: because the canvas is *pure black*, the bright accents read extremely well as text — teal hits 11.2:1 and amber 11.5:1, both AAA. There is **no need to lighten the brand for text** the way a near-black site must. The one thing to watch is the **CTA label**: the teal fill is so light that white text would fail — the correct, contrast-passing label is **black** (`#000000`, 13.7:1). The green `#4cad00` is the weakest object color (5.1:1) — fine for large UI and icons, but avoid thin small green text on black.

### Focus Indicators

Focus is a 3px `rgba(60,217,179,0.40)` ring plus a 1px solid `#3cd9b3` border on the focused control. On the black canvas the teal ring is vivid and unmistakable. Focus is never removed; keyboard and pointer users get the same target.

### ARIA Patterns

- **Top nav**: `<nav>` landmark with `aria-label="Primary"`. The wordmark is an `<a>` linking home with an accessible name.
- **Download CTA**: if it carries an OS-selector, the selector is a `<button aria-haspopup="menu" aria-expanded>`; the dropdown is `role="menu"` with `role="menuitem"` per platform.
- **Object cards / chips**: the color is decorative — the accessible name comes from the text label, never from color alone. Each object color also carries a text label so meaning never depends on hue.
- **Object-constellation**: `aria-hidden="true"` — purely visual.
- **Modal** (sign-in / space-setup): focus trap, Esc closes, click-outside closes, focus returns to trigger.

### Keyboard Navigation

- Top nav: Tab wordmark → Product → Use cases → Pricing → Community → Docs → Sign in → Download
- Download CTA: Tab to the button; Enter downloads default OS; any caret button opens the platform menu, arrow keys navigate
- Cards: Tab moves card → card; Enter activates the link
- Modal: Tab cycles within the dialog only

### Screen Reader Hints

The wordmark carries an accessible name ("Anytype, home"). App screenshots carry descriptive alt text ("Anytype workspace on a black canvas with colored object pages in the sidebar"). The object-constellation is `aria-hidden`. Color labels are paired with text so the four "any" colors are never the sole carrier of meaning.

### Reduced Motion

All entrance animations degrade to static render. The object-color cycle freezes. Color-only hover transitions may remain. No essential information is conveyed by motion alone.

## 10. Responsive Behavior

### Breakpoints

| Name | Width | Key Changes |
|------|-------|-------------|
| Mobile | <640px | Nav collapses to wordmark + hamburger; hero display drops 88 → 40px; CTA goes full-width; cards 1-up; object-constellation simplified |
| Tablet | 640–1024px | Inline nav links may persist; hero display at ~60px; cards 2-up; screenshot at 90% width |
| Desktop | 1024–1280px | Full nav; hero display at 88px; cards 3-up; screenshot up to 1100px |
| Wide | >1280px | Content caps at 1280px; canvas absorbs the extra width as empty pure-black margin |

### Touch Targets

- Teal CTA: 44px height; on mobile it goes full-width for an easy thumb target
- Nav links: minimum 44×44px hit area in the mobile sheet
- Object / feature cards: the whole card is the tap target
- Inputs: 44px height, comfortably above the 44px minimum

### Collapsing Strategy

- Top nav links collapse into a hamburger sheet below 640px; the teal CTA stays visible in the collapsed bar
- Feature grids: 3 → 2 → 1 columns; object cards keep their individual colors as they stack
- The workspace showcase scales down; on mobile it may switch to a simpler static screenshot to keep payload light
- App screenshots scale by viewport, never crop; 16px radius scales proportionally

### Image Behavior

Workspace screenshots render at 2x as PNG/WebP with 16px radius and optional `rgba(0,0,0,0.65)` shadow. They scale `width: 100%; height: auto`. Because the canvas is black and the screenshots *are* of the black workspace, screenshots blend seamlessly into the page — the colored objects inside them are the brightest things on screen, which is exactly the intended hierarchy.

### Container Queries

Used on the download CTA: when the available width is too narrow for the full label + OS caret, the label shortens to "Download" and the OS name moves into the dropdown.

## 11. Content & Voice

### Tone

Warm, plainspoken, and quietly principled. Anytype's voice treats privacy as a human value, not a technical scare — it talks about a "safe haven", a "space for your thoughts", "everything you need", rather than leading with threat models and lock icons. It is confident about the hard things (end-to-end encryption, local-first, open-source) but frames them as care, not caution. Headlines are short and human ("A safe haven for digital collaboration", "Everything is an object", "Your data, your rules").

### Microcopy Patterns

- **Button verbs**: "Download", "Get started", "Read the docs", "Join the community", "See it on GitHub" — direct, outcome-named, often community-oriented
- **Error message recipe**: `[What went wrong] + [What to try]` — e.g., "Couldn't open that space. Check the folder still exists, then try again."
- **Success confirmations**: short, factual — "Synced." / "Space created."
- **Field labels**: minimal and friendly — "Email", "Space name"

### Empty States

The empty-space state in screenshots: "Create your first object." — single declarative, on-brand line (everything in Anytype is an "object"). The privacy framing: "Your data is encrypted and stored on your device. No account required." — names the value plainly, no fear, no pressure.

### CTA Verb Conventions

- Primary action: **"Download"** (with OS selector)
- Secondary action: **"Read the docs"**, **"See it on GitHub"**, **"Learn more"**
- Tertiary text: **"Sign in"**, **"Pricing"**, **"Join the community"**
- Avoided: "Sign up now!", "Click here", urgency framing, and security-fear language ("Protect yourself!", "Don't get hacked!") — Anytype sells a safe haven, not a threat.

## 12. Dark Mode & Theming

**Dark-only marketing surface.** The public site renders exclusively on the pure-black `#000000` canvas — it mirrors the Anytype app's dark workspace as a deliberate brand-identity choice. This is the inverse of most sites (light site, dark app): here the *site* is black because the *brand* is black, and the black-canvas-with-colored-objects is the product's most recognizable face.

The app itself ships a full theming system — light and dark base themes, *plus* the defining feature: **per-object colors.** Every object (page, set, space) can carry its own color from the "any" palette, so a user's workspace is a personal constellation of teal / blue / green / amber objects on black. The marketing site previews exactly this — it does not expose a light toggle; it commits to black to *show* the default, most-Anytype experience.

If a light variant were ever shipped, the token swap would be: canvas `#ffffff`, surface `#f7f7f7`, ink `#0a0a0a`, border `#e5e5e5`. The "any" palette would need **slight darkening** to pass contrast on white — teal `#3cd9b3` reaches only ~1.7:1 on white and would have to deepen toward `#1f9d80` for text — which is precisely why the brand keeps the canvas black: the bright "any" colors are at their most legible *and* most joyful against pure black.

## 13. Lineage & Influences

Anytype's design sits at the intersection of three traditions, then breaks the most important convention of one of them. First, the **local-first / own-your-data software movement** — the lineage of Obsidian, Roam, TiddlyWiki, and the broader ethos where your knowledge lives in open formats on your own device, no cloud lock-in. Second, the **block-based / "everything is an object" knowledge tool** — the paradigm Notion popularized (a workspace built from typed, composable blocks and databases), which Anytype rebuilds on a local-first, encrypted, peer-to-peer foundation. Third, the **dark-canvas developer-tool aesthetic** — the near-black-or-black canvas, hairline-bordered surfaces, and system-sans neutrality that Linear and Vercel share.

The decisive break is **color.** Where the privacy / encryption category almost universally signals trust through cold grayscale, padlocks, and shields, Anytype renders security as *warmth*: a pure-black canvas lit by a friendly multi-color "any" palette and a quirky, human display face. This is the brand's single most distinctive decision and the thing that separates it from Obsidian (one restrained purple), Notion (light, neutral, grayscale-on-white), and every "secure messenger" aesthetic. Anytype's claim — local-first, end-to-end-encrypted, no account required, open-source — is real and serious, but the page refuses to *look* serious in the austere way; it looks like a colorful, inviting place to think. Privacy, made joyful.

What Anytype rejects: cold grayscale privacy visuals, lock-and-shield iconography, fear-based microcopy, a single-accent monochrome scheme, near-black softening (it commits to true black), and the closed-cloud lock-in its block-tool predecessors are built on.

**Influences:**
- Notion — block-based "everything is an object" workspace paradigm, [notion.so](https://www.notion.so)
- Obsidian — local-first, own-your-data knowledge base on a dark canvas, [obsidian.md](https://obsidian.md)
- Roam Research — networked-thought / linked-objects lineage, [roamresearch.com](https://roamresearch.com)
- TiddlyWiki — single-file, local-first, own-your-data personal-wiki heritage, [tiddlywiki.com](https://tiddlywiki.com)
- Linear — dark-canvas developer-tool aesthetic; hairline surfaces, crisp 8px-radius chrome, [linear.app](https://linear.app)

## 14. Do's and Don'ts

**Do**
- Keep the canvas pure black at `#000000` — it is the app's workspace and the brand floor; commit to true black, not near-black
- Use pure white `#ffffff` for body text — on absolute black it reads crisp at 21:1, not vibrating
- Let the bright teal `#3cd9b3` "Download" CTA be the brightest single object on the page
- Use **black** (`#000000`) for the CTA label, not white — the teal fill is too light for white text
- Deploy the multi-color "any" palette (teal / blue / green / amber) generously as object colors — it is the brand signature
- Pair the quirky display face for headlines with clean Inter / `ui-sans-serif` body for legibility
- Use teal as text/links on black freely — it hits 11.2:1 AAA; no lightening needed (unlike near-black sites)
- Step surfaces lighter (`#000000` → `#0d0d0d` → `#1a1a1a`) for elevation, not darker shadows
- Define structure with `#262626` hairline borders, not drop shadows
- Frame privacy as warmth and care — a "safe haven" — with colored icons, not locks
- Ration the black canvas generously — empty pure-black space reads as calm focus

**Don't**
- Don't soften the canvas to near-black `#0f0f0f` — Anytype's identity is *absolute* black
- Don't use white text on the teal CTA — it fails contrast; the bright fill demands a black label
- Don't collapse the palette to a single accent — the four-color "any" spectrum is the whole point
- Don't dress privacy in cold grayscale, padlocks, or shields — that is exactly the register Anytype rejects
- Don't use fear-based microcopy ("Protect yourself!", "Don't get hacked!") — sell the haven, not the threat
- Don't set the body in the quirky display face — keep the display for headlines, body stays clean and legible
- Don't use thin small green `#4cad00` text on black — it is the weakest object color (5.1:1); size it up or use teal/amber
- Don't pile up drop shadows for depth — on pure black, lighter surface tone is the only elevation signal that registers
- Don't make a pill-shaped CTA — the download button should read as a crisp, serious action; keep pills for chips
- Don't let color be the sole carrier of meaning — pair every object color with a text label
- Don't add gradient washes or hero video — the personality lives in the object colors and display type, not effects

## 15. Agent Prompt Guide

### Quick Color Reference

```
Canvas:       #000000   (pure-black page floor — the app workspace)
Surface:      #0d0d0d   (raised card, a hair off black)
Surface-elev: #1a1a1a   (nested / hovered card)
Ink:          #ffffff   (body + display — pure white, 21:1)
Secondary:    #b8b8b8   (deck copy, secondary text)
Muted:        #8a8a8a   (captions, footer links)
Brand teal:   #3cd9b3   (the "Download" CTA accent + any-palette lead)
Any blue:     #18a3f1   (object color 2 — links, info)
Any green:    #4cad00   (object color 3 — success, growth)
Any amber:    #ffb522   (object color 4 — warmth, highlight)
On-brand:     #000000   (BLACK label on the bright teal CTA — not white)
Border:       #262626   (hairline divider)
```

### Example Component Prompts

- "Create an Anytype-style hero: pure-black canvas (#000000), an 88px display headline 'A safe haven for digital collaboration' in a warm/quirky display face (fallback Inter 400) in pure white #ffffff with -0.02em tracking and 1.0 line-height. Below: an 18px / 400 deck in #b8b8b8 at 1.6 line-height. Below that: a single bright-teal (#3cd9b3) 'Download' CTA button with BLACK text (#000000, not white — the teal is too light for white), 15px/600, 8px radius, 12×20px padding. Optionally a constellation of colored object cards (teal / blue #18a3f1 / green #4cad00 / amber #ffb522) floating behind on the black."
- "Design an Anytype object card: #0d0d0d fill (a hair off the #000000 canvas), 1px #262626 hairline border, 12px radius, 24px padding, NO shadow. Give it ONE 'any' color as the icon tint and a top accent bar — choose from teal #3cd9b3, blue #18a3f1, green #4cad00, amber #ffb522. Inside: a 20px/600 white title, then 16px/400 #b8b8b8 body at 1.55 line-height. On hover, lift the surface to #1a1a1a and brighten the border to #3a3a3a over 240ms — no translate."
- "Build the Anytype top nav: 64px tall, translucent pure-black (#000000cc) with backdrop-blur and a 1px #262626 bottom hairline. Left: the 'Anytype' wordmark in #ffffff. Centre: nav links (Product, Use cases, Pricing, Community, Docs) in 15px/500 white with a teal #3cd9b3 underline on hover. Right: a quiet text 'Sign in' link in #b8b8b8, then the teal (#3cd9b3) 'Download' CTA with BLACK text at 8px radius."
- "Create an Anytype text input: #0d0d0d fill (one tone off the #000000 canvas), #ffffff text, 1px #262626 border, 8px radius, 44px height, placeholder in #5c5c5c. On focus, set the border to #3cd9b3 (1px) plus a 3px rgba(60,217,179,0.40) teal ring."
- "Design an Anytype object-chip row: four pill-radius (9999px) chips on a black background, each transparent with a 1px outline and text in a different 'any' color — teal #3cd9b3, blue #18a3f1, green #4cad00, amber #ffb522 — 12px caption, 3×10px padding. Each chip pairs its color with a text label (color is never the only signal). This four-color row is the Anytype signature."
- "Build an Anytype privacy band: centred on the bare #000000 canvas with generous vertical padding (96–128px), a 36px/500 white headline 'Your data, your rules', three colored icons (teal/blue/green) for 'local-first', 'end-to-end encrypted', 'open-source' — warm and friendly, NO padlock or shield motifs — and the teal #3cd9b3 'Download' CTA with black text below."

### Iteration Guide

1. **True black, always.** Anytype is `#000000`, not near-black `#0f0f0f`. If you soften the canvas, you've left the brand — commit to absolute black and let the bright colors pop against it.
2. **The CTA label is BLACK.** The teal `#3cd9b3` fill is bright; white text on it fails contrast. Black text (`#000000`, 13.7:1) is the only correct, accessible label. This is the #1 mistake to catch.
3. **Embrace the palette, don't ration it.** Unlike single-accent dark sites, Anytype *wants* the four "any" colors visible together — teal, blue, green, amber as object colors. A row of all four is on-brand.
4. **Two type jobs.** Quirky display face for headlines (h1–h2, hero); clean Inter / `ui-sans-serif` for h3 down and all body. Never set body in the display face.
5. **Teal is safe as text on black.** It hits 11.2:1 AAA — use it for links and accents directly, no lightening (the opposite of what near-black sites must do for their accent).
6. **Privacy is warm, not scary.** Frame it as a safe haven with colored icons. The moment a padlock, shield, or "protect yourself" copy appears, it stops being Anytype and starts being a generic security tool.
7. **Elevation goes lighter, not darker.** Lift a surface by stepping its tone up (`#000000` → `#0d0d0d` → `#1a1a1a`) and adding a hairline — shadows are invisible against pure black until they border a lighter surface.
8. **Let the black breathe.** Pure-black negative space is the primary compositional tool, and the colored objects pop precisely because the void around them is so dark and so empty. Resist filling it.

---

*Theme-toggle audit: score=0, signals=[none]*
