/design-system

Design system

The visual rules for ilovethatfish.com. Field-guide clarity with a warm, hobbyist tone. Two fonts, one accent, one warm counter-accent, light and dark themes.

Color

Background--bgPage
Surface--surfaceCards, header
Ink--inkText
Muted--mutedSecondary text
Line--lineBorders
Accent--accentLinks, buttons, tags
Accent soft--accent-softTag fills
Warm--warmLabels, cautions

Type

Sora for headings (500–700). Public Sans for everything else (400–600). Scientific names always italic, muted.

Sora 700 · 56/1.05Every aquarium fish, identified.
Sora 700 · 36/1.1Page title
Sora 600 · 22/1.2Section heading
Sora 600 · 15/1.3Card title
Public Sans 400 · 17/1.65Long-form body copy for entries and posts.
Public Sans 400 · 15/1.55Interface body text.
Public Sans 600 · 11 capsFACT LABEL · 0.08EM

Spacing & shape

4px
8px
12px
16px
24px
40px
64px

Page gutter 40px desktop, 20px mobile. Cards 6px radius, images 4px, chips and buttons full pill. Borders 1px var(--line); no drop shadows inside the page.

Light and dark

Dark is a separate palette, not an inversion. Accent lightens to keep 4.5:1 on dark surfaces; the accent-ink flips to near-black so buttons stay legible.

TokenLightDark
--bg#F7F5EF#0F1716
--surface#FFFFFF#172120
--ink#16211F#ECEAE3
--muted#5F6B69#98A6A3
--line#E1DCD0#263230
--accent#1F6F78#63B7BC
--accent-ink#FFFFFF#0B1F21
--accent-soft#E2EEEF#153433
--warm#C4653A#E28D62
--warm-soft#F6E7DC#3A2419

Mobile

One breakpoint at 700px. Below it every template becomes a single column. The type scale is unchanged except the hero heading; touch targets are 44px; the page gutter is 20px.

ElementDesktopMobile
Gutter40px20px
Hero h156px38px
NavInline linksMenu button + list
Theme toggleHeader pillMenu row + footer
Sidebar300px rightBelow article
Fact gridauto-fill 150px2 columns
Hit targets36–44px44px minimum