Design System · Bells & Pixels
墨と和紙 · Fudemoji design system

Sumi & Washi

A quiet, paper-first system - warm washi grounds, warm sumi ink (never pure black), and a single vermilion seal accent (朱) used sparingly. Calligraphic mincho for display, clean gothic for UI, mono for data. Shared between the Fudemoji app and this site, under the Bells & Pixels umbrella.

Living document · tokens are source-of-truth
01

Palette

Every color is a CSS variable that responds to light/dark. Components reference semantic tokens (--accent, --surface), never raw hex. The accent is a single “mark” - roughly one vermilion moment per screen.

Washi 0 - app ground
--washi-0
#F7F3EA
Washi 1 - card
--washi-1
#FCFAF4
Washi 2 - canvas
--washi-2
#FFFFFF
Washi sunken
--washi-sunken
#EFEADD
Sumi 900 - text / ink
--sumi-900
#1B1813
Sumi 700 - secondary
--sumi-700
#423D34
Sumi 500 - muted
--sumi-500
#8A8273
Sumi 300 - hairline
--sumi-300
#C7BFAF
Shu 600 - press
--shu-600
#7E1D14
Shu 500 - accent / seal
--shu-500
#9B251B
Shu 400 - hover
--shu-400
#B23A2C
Shu wash - selected
--shu-wash
#EEDAD4
Grade · Again
--grade-again
#BE3A2E
Grade · Hard
--grade-hard
#B5832C
Grade · Good
--grade-good
#5E7E52
Grade · Easy
--grade-easy
#3E5C78
02

Typography

Three families: Zen Old Mincho (display + native script - its brush-derived strokes carry the concept), Zen Kaku Gothic New (UI & body), and JetBrains Mono (counts, intervals, tokens, IDs).

Prompt · Mincho 132
学校
Display · Mincho 700
Learn by writing
Heading · Mincho 500
Production over recognition
Body · Gothic 400
The quick brown fox writes 漢字 by hand. あいうえお。
Label · Gothic 500
Reveal · I don't know · Trace
Data · JetBrains Mono
24 due · 12 new · +3d · N5 0123456789
03

Buttons

Pill-shaped, generous hit targets (≥48px). Primary uses the vermilion fill; secondary is a hairline ghost; destructive is outlined, never loud. Press state scales to 0.97 and deepens the accent.

04

Form controls

Inputs sit on the highest surface with a strong hairline. A custom chevron on selects; the toggle uses the accent when on.

05

Badges & pills

Status and metadata read as calm tints, never hard fills. The four FSRS grade hues double as the badge palette.

24 due12 newAll doneTracedimported .apkgN5
06

Spacing, radii & elevation

A 4px base unit (4 · 8 · 12 · 16 · 20 · 24 · 32 · 40 · 48 · 64). Screens are sparse and centered - breathing room is intentional. Radii: 12 buttons/cards, 18 flashcards/sheets, 26 bottom sheets, pill for chips. Shadows are low, warm, and sumi-tinted - paper lifting off paper, never harsh.

07

Icon set

Phosphor, in the duotoneweight - the shared Bells & Pixels icon language. The two-tone fill (a solid figure over a faint ground) suits the paper-and-ink feel; icons inherit currentColor, so they sit in sumi by default and take the vermilion accent only where one is intended. Core review-loop glyphs below.

PenNibwrite
Scribbletrace
Eraserclear
ArrowsLeftRightflip direction
Checkreveal
Xclose
FileArrowUpimport .apkg
Cardsdeck
FunnelSimplefilter
Firestreak
GearSixsettings
Plusadd
CaretRightnavigate

Note: the Phase-0 Android build still ships Material Symbols Rounded (from brand-kit/); migrating the app to Phosphor duotone is tracked separately.