Foundations

Playbook 4.2 §4’s hard numbers as visible rulers — spacing / type scale / grays / shadows & radii / contrast / touch targets / interaction feedback.

Spacing rhythm (4/8px grid)every gap snaps to the 4/8px grid

Intra-group gap < inter-group gap (proximity is hierarchy); add 50% more whitespace than feels natural.

4px
8px
12px
16px
24px
32px
48px
64px

8px within groups < 24px between groups

Uniform 6px everywhere — cramped = the #1 amateur tell

Type scale 1.25one fixed ratio, 5-6 steps, no off-scale sizes

Body ≥16px; line-height 1.5-1.75; measure 45-75 characters.

12.8px · captionCaption / metadata
16px · bodyBody text — the baseline, never smaller
20px · h4Card title or H4
25px · h3Section heading H3
31.25px · h2Page section H2
39px · h1Page title H1
48.8px · displayHero display

A comfortable measure keeps each line between 45 and 75 characters. This paragraph is capped at 65ch with line-height 1.6 — read it and feel how your eye returns to the next line without effort.

Neutral gray, 9 stepsone brand color + 9 grays + 3 semantic colors — stop there

Never pure #000; a hint of brand tint in the grays reads more refined.

Pure gray

#fafafa
#f5f5f5
#e5e5e5
#d4d4d4
#a3a3a3
#737373
#525252
#262626
#171717 ≠ #000

Brand-tinted (slate — reads more refined)

#f8fafc
#f1f5f9
#e2e8f0
#cbd5e1
#94a3b8
#64748b
#475569
#1e293b
#0f172a

3-tier shadows + radius familysame level, same shadow; don't mix radius tiers at one level

Fixed sm/md/lg shadow tiers; one radius family site-wide (4/8/12).

shadow-sm
shadow-md
shadow-lg
radius 4
radius 8
radius 12

Contrastbody text ≥4.5:1

Readable body text on the panel.

✓ 4.8:1 (light) / 5.0:1 (dark)

This text fails — squint and it vanishes.

✗ 2.0:1 (both themes)

Each theme hard-codes its own color pair (no single pair fails in both themes); ratios are computed against each theme's panel background.

Touch targets ≥44×44pxvisible focus ring (keyboard users)

✓ 44×44
✗ 28×28 — dashed ring = 44px fingertip
focus ring (always on for demo)

Hover feedbacktransition 150-300ms

Hover changes color/shadow, never position/scale — that jitters the layout. Real buttons: try hovering.

✓ color + shadow
✗ scale/translate — layout jitter, anti-pattern