Substack vs Granola
54 token-level differences between these two design systems.
Background
#ffffff → #ffffff Text
#363737 → #292929 Brand
#ff6719 → #5b6f00 Border
rgba(0, 0, 0, 0.10) → #0000001a Display font
Cahuenga → Quadrant Body size
19px → 17px colors 45 changed
~
bg-soft #f6f6f3 → #faf8f3 ~
surface #ffffff → #f3f0e8 ~
text #363737 → #292929 ~
text-strong #1a1a1a → #0e0f0c ~
text-soft #666c70 → #a09e95 ~
text-muted #878787 → #72726e ~
brand #ff6719 → #5b6f00 ~
brand-hover #e85412 → #465800 ~
brand-deep #cc4a0e → #2f3a00 ~
border rgba(0, 0, 0, 0.10) → #0000001a ~
border-strong rgba(0, 0, 0, 0.20) → #00000028 ~
border-soft rgba(0, 0, 0, 0.06) → #00000010 ~
success #0d8050 → #3a7b3a ~
warning #d97706 → #a35e0a ~
danger #dc2626 → #a8362f ~
info #2563eb → #345897 +
surface-elev #e8e3d4 +
surface-paper #fdfbf5 +
text-body #3a3a37 +
text-italic #5b6f00 +
brand-soft #e5eacd +
brand-softer #f1f4e0 +
accent-olive-bg #e5eacd +
accent-cream #f4ebd9 +
accent-warm-paper #f7f1de +
shadow-card rgba(34,30,15,0.04) +
shadow-elev rgba(34,30,15,0.08) +
shadow-paper rgba(34,30,15,0.06) +
scrim rgba(20,18,10,0.50) +
success-soft #eaf3ea +
warning-soft #fbf1de +
danger-soft #f7e6e4 +
info-soft #e6ecf5 −
bg-elev #fafaf7 −
bg-cream #fbf9f4 −
surface-warm #fafaf7 −
text-faint #a8a8a8 −
text-link #363737 −
brand-tint rgba(255, 103, 25, 0.10) −
brand-tint-strong rgba(255, 103, 25, 0.18) −
border-warm rgba(0, 0, 0, 0.08) −
selection-bg rgba(255, 103, 25, 0.20) −
shadow-soft rgba(0, 0, 0, 0.06) −
shadow-medium rgba(0, 0, 0, 0.10) −
reading-rule rgba(0, 0, 0, 0.08) typography 5 changed
~
display {"family":"Cahuenga","size":56} → {"family":"Quadrant","size":68} ~
h1 {"family":"Cahuenga","size":40} → {"family":"Quadrant","size":40} ~
h2 {"family":"Cahuenga","size":32} → {"family":"Quadrant","size":32} ~
body {"family":"Spectral","size":19} → {"family":"Melange","size":17} ~
label {"family":"Monaco","size":13} → {"family":"SFMono-Regular","size":12} radius 2 changed
~
button 6px → 12px ~
card 12px → 16px spacing 2 changed
~
lg 32px → 48px ~
xl 48px → 96px