Numbered card
Used in the "How it works" three-up. Italic numeral in terracotta, Newsreader title.
design system
A studio-ghibli-inspired palette of paper, sky, forest, and lantern. Newsreader for headings, Schibsted Grotesk for prose, IBM Plex Mono for code.
Six families: paper, ink, sky, forest, lantern, surface.
Paper & ink
#f7f1e3#fbf6e8#ece3cc#2d2a24#524c3f#8a826fSky
#e6eef3#c8dde9#88b1cdForest
#b8c79a#6e8b5b#4d6a3eLantern
#e6c073#e3a47a#c87b5dThree families. Each has one job.
Every participant is a URL.
A fresh humanist grotesque, picked for its warmth and the way its terminals don't read as cold or technical. Reads well at 16–18px for long-form prose.
POST /inbox HTTP/1.1
Content-Type: application/msg+json
Msg-Signature: ed25519 base64...
Display drops sharply; body floats around 17px.
A url is identity.
How it works
POST to send
subsection label
Genuine origin authentication, no central infrastructure.
Receivers return 2xx only after durably storing the verified message.
a messaging protocol
The handful of building blocks the site repeats.
Buttons
Cards
Used in the "How it works" three-up. Italic numeral in terracotta, Newsreader title.
The same shell with any leading mark — useful when steps aren't ordinal.
Code blocks
// goldmark + chroma render this server-side
res, err := msg.Attempt(ctx, msg.AttemptInputs{
Sender: "https://alice.example/inbox",
Recipient: "https://bob.example/inbox",
KeyID: "k1",
MsgID: msg.NewRandomID(),
Payload: payload,
})
Pull quote / why-block
If you want to receive a message at alice.example/inbox and know it really came from bob.example/inbox, this is the simplest thing that works.
Link list
Prose elements (as used in /spec)
A paragraph of body text with an inline link, some inline code, and an italic emphasis.
monospace tokenA blockquote sits in moss with a small ornament.
Tables follow:
| Field | Type | Notes |
|---|---|---|
v | integer | protocol version |
sender | string | canonical URL |
id | string | ≤ 256 bytes |
Every visible decision lives in a custom property in style.css.
/* paper + ink */
--paper: #f7f1e3;
--paper-warm: #fbf6e8;
--paper-deep: #ece3cc;
--ink: #2d2a24;
--ink-soft: #524c3f;
--ink-faint: #8a826f;
/* sky */
--sky-haze: #e6eef3;
--sky: #c8dde9;
--sky-deep: #88b1cd;
/* forest */
--moss: #b8c79a;
--forest: #6e8b5b;
--forest-deep: #4d6a3e;
/* lantern */
--gold: #e6c073;
--sunset: #e3a47a;
--terracotta: #c87b5d;
/* surface */
--line: rgba(45, 42, 36, 0.10);
--line-soft: rgba(45, 42, 36, 0.06);
--radius: 14px;
--radius-lg: 22px;