paper and ink carry 95% of every page, and the one cobalt accent marks what matters. the earth hues are for charts and illustration. swatches follow the theme toggle. click one to copy its token.
paper & ink · follows the theme
earth hues · light step / dark step
stickers · illustration fills
semantic roles
components only ever use these. they switch for dark mode.
data & contrast
chart colours are checked with a colour-vision-deficiency validator in both modes. data-1…3 (lake, terracotta, pine) stay distinct in any combination, so scatter plots are safe. pos / neg (ochre, dusk) form a diverging pair with a neutral middle.
data-1data-2data-3posneg
text contrast on bg, light: text 15.2:1 · text-2 7.1:1 · text-3 5.1:1 · accent-text 5.1:1. dark: text 16.1:1 · text-2 10.1:1 · text-3 6.3:1 · accent-text 8.8:1. text-3 and accent-text also clear 4.5:1 on surface-sunk. ink-500 is for rules and axes only; it fails as text.
2
type
Bricolage Grotesque for headlines, semibold and tracked tight. Instrument Serif for the italics inside them, pull quotes and the sign-off. Source Serif 4 for reading. Instrument Sans for interface. IBM Plex Mono for dates, numbers and labels. all open-licensed and self-hosted.
m-hero · step-6
at the margin
m-display · step-5
what's your utility function?
h1 · step-4
the price of one more
h2 · step-3
everything has an opportunity cost
h3 · step-2
the future version of yourself
m-lead · step-1
hanni works because working makes her happy. nanni works because not working makes her unhappy.
m-prose · step-1 · reading
the first slice when you're starving is wonderful. the second is still pretty good. the third is enjoyable. by the sixth, you're probably starting to question your decisions. the marginal utility of another slice decreases as you consume more.
m-body · step-0 · ui
interface text, buttons, forms and captions use instrument sans. it stays quiet so the serif can speak.
m-caption · step--1
figure 2 — marginal utility of one more achievement (schematic)
m-eyebrow / m-meta
essay · 12 min read09.10.2026 · berlin
m-italic
perhaps life isn't an optimization problem.
3
space, shape, motion
a 4px base and generous steps. round corners are soft but not bubbly. motion eases out and settles; one spring curve for playful moments, in pure css.
hand-drawn marks, drawn when they scroll into view. use one per screen, at most. the characters come from the utility-function essay: hanni chases, nanni escapes.
a word worth underlining
one circled idea
a highlighted phrase
* * *
hanni
nanni
star
5
components
everything starts with m-. states start with is-. no framework needed.
fig. 1a plain figure with a numbered caption.a printed photo, taped in. it straightens on hover.
placeholders
stats
ten hours a week
2,600
hours over five years. time that could have gone somewhere else.
discount factor
δ 0.9
100 units in ten years are worth 35 today.
quotes
something can have been the right decision in the past and no longer be the right decision today.what's your utility function? · §6
hanni works because working makes her happy. nanni works because not working makes her unhappy.
fields
small things
6
reading
essays get a 34em measure, old-style numerals and notes in the margin. poems get more air, hanging lines and stanza breaks.
economics has another concept that more people should internalize: opportunity cost.the value of the best alternative you give up by making a decision. when you choose one thing, you're simultaneously choosing not to do something else.
MRSL,M = βM / αL
ten additional hours a week. 520 hours a year. over five years, 2,600 hours.