Signal (iOS)
Identity
Mobile Apps
Privacy-first messaging. Single Signal Blue #3A76F0 accent, disappearing-message timer chips, sealed-sender glyphs, zero-vanity minimalism, light + #1B1B1B dark
Typography
Ag
Ag
Ag
--text-4xl · 36pxThe quick brown fox--text-3xl · 28pxThe quick brown fox--text-2xl · 28pxThe quick brown fox--text-xl · 28pxThe quick brown fox--text-lg · 28pxThe quick brown fox--text-base · 17pxThe quick brown fox--text-sm · 16pxThe quick brown fox--text-xs · 10pxThe quick brown foxPalette
#FFFFFFPage background — defines the brand canvas.#F5F5F5Card / lifted container background.color-mix(in oklab, var(--surface), var(--fg) 6%)Tertiary surface tier (kami warm-sand).#000000Primary text color.color-mix(in oklab, var(--fg), var(--bg) 15%)Secondary text tier (kami dark-warm).#6B6B6BSubtext / captions.color-mix(in oklab, var(--muted), var(--bg) 25%)Tertiary FG / metadata tier (kami stone).#E5E5E5Default border / card edge.color-mix(in oklab, var(--border), var(--bg) 50%)Inner row separator that should not visually compete.#3A76F0Brand accent. ≤2 visible uses per screen (lint enforced).#FFFFFFFG when --accent is the bg.#3AB54ASuccess state.#FF9500Warning state.#D7263DDanger state.Also named in DESIGN.md
#2f5fccPressed/active state for blue buttons and the send circle.#e7eefdLight-mode selected row, blue-wash backgrounds (link previews on outgoing).#e9e9ebLeft-aligned received message bubble.#9a9a9aPlaceholders, disabled labels.#1b1b1bConversation list, chat background.#2a2a2aGrouped sections, search field, incoming bubble (dark).Imagery & layout
Radius
10px18px18px9999pxSpacing
--space-1 · 4px--space-2 · 8px--space-3 · 12px--space-4 · 16px--space-5 · 20px--space-6 · 24px--space-8 · 32px--space-12 · 48pxElevation
--elev-raisedLayout
Layout rules
- Base unit: 4pt
- Scale: 4, 8, 12, 16, 20, 24, 32, 44, 56
- Bubble inner padding: 9pt vertical, 13pt horizontal
- Inter-bubble gap: 2pt within a same-sender run, 8pt between senders/groups
- Row inset: avatar leading 16pt, text origin 76pt (divider starts here)
- Single column everywhere — list, thread, settings