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
#A52E24
Shu 500 — accent / seal
--shu-500
#C43A2D
Shu 400 — hover
--shu-400
#D6584B
Shu wash — selected
--shu-wash
#F5E1DC
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.