Most people with an idea for a brand don't fail for lack of talent. They fail because nobody told them where to start.
Brand School sets the floor. It is the minimum every founder needs to have in place: a name that holds, a promise someone can repeat, a look that doesn't embarrass you, a first place to show up. We make that floor solid, so you never wonder whether you're standing on anything.
The dot is you. It stands on the floor, a little right of centre, leaning into what comes next. It is not on a podium and it is not falling. It is about to step up, and Brand School is the one saying: go on, it'll hold.
That is the whole identity. One heavy bar, one solid dot, and a voice that believes in you a bit more than you do.
| Canvas | viewBox 0 0 100 100 |
| Bar | x 8, y 70, w 84, h 14, rx 7 |
| Dot | cx 66, cy 59, r 11 |
| Tight crop | viewBox 4 44 92 44 |
The dot's lowest point (y 70) touches the top of the bar. It stands on it, it does not float.
| Clear space | One dot diameter on every side |
| Minimum, screen | 16 px wide |
| Minimum, print | 6 mm wide |
| Smaller than that | Use the favicon tile |
floor-mark.svgfloor-mark-ink.svgfloor-mark-white.svgfloor-mark-paper-tile.svgfloor-mark-ink-tile.svgLight background: colour. Dark background or photo: white. Single colour printing: ink. Anywhere a small square is needed: a tile. On ink, the bar turns paper and the dot stays sun.
The tile versions centre the mark by its own bounding box at 62% of the tile width, which keeps it inside the safe area on Android and iOS. The maskable icon uses 37% on a full-bleed square.
| Use | When |
|---|---|
| Horizontal | Anything wider than it is tall. Prefer it unless the space is square or portrait. |
| Stacked | Square or portrait formats. Never stack in a header bar. |
| Mark alone | Where the name is already clear: app icon, avatar, favicon, a watermark. |
| Colour on light | Default. White on ink for dark surfaces. Ink on paper for one-colour documents. |
Lockup files already include the clear space. Use .svg (wordmark in outlines) wherever possible; -live.svg needs Familjen Grotesk to be loadable.
Paper dominates. It is the page.
Ink is for text and the bar. Never grey text on paper below #6B6A63.
Sun is the dot, plus one highlight per screen. Not two.
White is for cards that sit on paper.
UI only, from the app. Never in the logo, never behind it.
Pick one customer and describe them in a sentence. Not a market, not a demographic: one person you could picture sitting across from you. Everything else in your brand gets easier once you can do that.
Semibold for emphasis and labels. Not bold-on-bold.
| Display | 48 to 72 pt Familjen 700, lh 0.95 |
| Heading | 24 to 32 pt Familjen 700, lh 1.05 |
| Subheading | 14 to 18 pt Familjen 700, lh 1.2 |
| Body | 10.5 to 11 pt (16 px) Jakarta 400, lh 1.6 |
| Label | 8 pt, caps, +14% Jakarta 600 |
Both families are on Google Fonts under the SIL Open Font License, so they are free to use anywhere, including in the app and in print. Fallbacks: Segoe UI, system-ui, sans-serif. Sentence case everywhere; no all-caps headings.
app-icon-1024.pngapp-icon-ink-1024.pngmaskable-1024.pngAt 16 and 32 px the mark is drawn larger inside its tile (78% wide instead of 62%) so the dot stays legible. favicon.ico holds 16, 32 and 48 px.
Icons always use a tile: paper or ink, never colour. The notification badge is the white mark on transparent. Never put the wordmark in an icon. Let the OS round the corners of the iOS touch icon; do not bake extra rounding into the square.




/media/share.png. One idea per post, plain words, the mark or lockup in a corner, never over a busy photo.Add a second dot or change the dot's size. Set the wordmark in another typeface. Rebuild the lockup by hand. Put the mark on a coloured tile inside the website header. Use the mark smaller than 16 px / 6 mm. Fill the clear space with other things.
Use the file from the kit as it is. The kit was built so that nobody needs to redraw anything. If a situation is not covered here, choose the version with the most paper around it.
All files are in site/media/brand/ and served from /media/brand/. They are generated by scripts/make-brand-kit.py; regenerate, don't hand-edit.
| Folder | What's inside |
|---|---|
logo/ | The mark. floor-mark.svg (colour), -ink, -white, -paper-tile, -ink-tile, -tight.svg. PNG at 256, 512, 1024, 2048. PDFs of colour and ink. floor-mark.png is the 512 colour mark at the fixed URL /media/brand/floor-mark.png that emails use. |
lockup/ | Horizontal and stacked, in colour-on-light, white-on-ink and ink-on-paper. SVG (outlines), -live.svg (Google Font), PNG at 1200 and 2400 wide, PDF. |
app/ | app-icon-1024.png, app-icon-ink-1024.png, maskable-1024.png, favicon.ico (16, 32, 48), favicon-32.png, favicon-16.png. |
social/ | Avatars (paper, ink), LinkedIn banner, X header, Open Graph share image, Instagram post. |
colours/ | palette.json: name, hex, rgb, cmyk, usage. |
| root | guidelines.html, brand-school-guidelines.pdf (this document), README.md. |
Familjen Grotesk (700 for wordmark and display) and Plus Jakarta Sans (body), from fonts.google.com. Both SIL Open Font License.
You bring the idea.
We'll walk you through the rest.