Brandkit
The Drawing Set. Every page is a numbered sheet in an architect’s archive: drafting paper, drawing ink, 1px hairlines, one grotesk and bracket notation. One red, and it means “write to Luis”.
The same kit as files, for agents and tools:
brand.md brand.json llms.txt[B.00] The idea
A portfolio as a drawing set: numbered sheets from an architect’s archive, drawn in ink on drafting paper. It says precise, considered and built, without saying it.
[01] The sheet
Every page is a sheet
Numbered (Sheet 01 to 04), ruled into bands with 1px hairlines, closed by a title block. Projects are a register, references sit in brackets.
[02] The ink
Two colours and a pen
Paper and ink do everything; graphite for the quiet parts. One red, rationed to “write to Luis”. No shadows, no radius: nothing floats on a drawing.
[03] The line
Things get drawn, not animated
A pen plotter draws a building, contours drift across a survey, hairlines draw themselves across the page and the wordmark is assembled from blocks.
[B.01] Wordmark
- Built fromInk rectangles on a 9 × 10 grid per letter, 51 × 10 overall. R carries the one diagonal.
- Proportion5.1 : 1 (51 × 10 units). Letter 9 wide, gap 1.5, bar 2, stem 3.
- Clear space10 units (the full height) on every side. Nothing enters it.
- Minimum48px wide on screen (1 unit ≈ 0.94px), 12mm in print. Below that, use the square mark.
- Mark32 × 32: the S as five paper bars on ink (x 6 → 26, rows 7·11·14·18·21·25).
- NeverRecolour, outline, stretch, add effects or set it in type.
- Wordmark, ink On paper or any light ground.
- Wordmark, paper On an ink fill.
- Mark Square icon / favicon: the S in paper on ink.
- Mark, PNG 512 For places that need a bitmap.
[B.02] Colour
Drafting Paper
RGB 231 228 223 · --paper
Night #141414
The ground: every background, the header, reversed text on ink fills. On the night sheet the ground is ink.
Drawing Ink
RGB 20 20 20 · --ink
Night #e7e4df
All text, every hairline, the wordmark, every graphic and chart mark, hover fills. On the night sheet the ink is sand.
Graphite
RGB 74 71 68 · --ink-2
Night #a8a49e
Secondary text: labels, field names, axis ticks, separators. 7:1 on paper; night graphite 7.4:1 on ink.
Contact Red
RGB 179 38 27 · --red
Night #f0695f
Only the way to write to Luis (mailto), the focus ring and the text caret. Nothing else. On the night sheet the same red, lifted for contrast on ink (6:1, 4.8:1 for protanopes).
[B.03] Type
Typeface Clash Grotesk, 200–700 (variable). In use: 420, 460, 500, 560, 600. · Fontshare Free Font Licence (FFL). Free for commercial use; get it from Fontshare rather than redistributing the file. Fontshare
Drawing set
[Display] Page H1, stacked lines · clamp(3rem, 8vw, 6rem) · 600 · 0.9 · -0.03em
Websites, apps and automations
[Headline] Statements, big numbers · clamp(1.75rem, 3.9vw, 3.75rem) · 500 · 1.02 · -0.025em
Office hours
[Title] Section heads, list items · clamp(1.5rem, 2.4vw, 2.25rem) · 560 · 1 · -0.02em
One grotesk does every job. Hierarchy comes from size and fine weights.
[Body] Running text, max 38em · 1.0625rem · 420 · 1.4 · 0
[01] 2026 · Sheet 02 — Analytics
[Label] Meta, numbers, title blocks. Tabular figures, sentence case. · 0.8125rem · 460 · 1.2 · 0.005em
[B.04] Elements
Hairline
1px ink, edge to edge. The only structural device.
Brackets
[01] [Sheet 02 — Analytics] [Denmark]
Numbering and annotation, label size.
Arrow
One authored arrow (12 × 12, 1.3 stroke, square caps), rotated.
Ink fill
Hover / selected
Emphasis is a full ink fill with paper text, never a shadow.
Title block
[B.05] Drawings
All drawings are ink and graphite on canvas, read their colour from the tokens, pause off-screen and show a still frame under reduced motion.
[B.06] Motion
Motion is drafting, not decoration.
- HairlinesDraw in edge to edgescaleX · 1.4 s · expo.out
- HeadingsLines rise out of masks, one by one1.2 s · expo.out · 0.07 s stagger
- WordmarkFive flat blocks rise into squares, then carve into SEJERexpo.inOut · scroll-scrubbed at the close
- Register rowsInvert to ink with paper text0.35 s · ease
- ArrowTurns on hover45° · 0.4 s
- LinksUnderline retracts to the right1px · 0.5 s · expo
- PreviewsBottom-up clip-path wipe0.6 s in · 0.4 s out
- NeverIdle loops, glow, bounce, parallax for its own sakereduced motion = final state
[B.07] Applied
- ChartsOne series = ink bars or lines on paper; square marks with a 2px paper gap; hairline grid at ink 12%; graphite tick labels in label type. Several categories: ink, graphite and hatched/outlined fills, always with a legend or direct labels — never extra hues. Heatmaps: one ink ramp by opacity. Tooltips: paper box, 1px ink border, value first.
- DiagramsPaper ground, ink text and 1px ink strokes, square nodes, the key node as an ink fill with paper text. Framed as a sheet: a header bar "[D01] Title" and a title block underneath.
- MapsPaper land, water and parks as faint ink fills, roads as ink lines by importance, labels in graphite. The data on top in solid ink: tracks as lines, places as ink squares with [nn] labels.
- Graphs / networksInk dots sized by degree, graphite hairline links, the core as the one ink square. Clusters labelled in brackets. Still: no glow, no idle animation.
[B.08] Rules
- [01]
The One Red Rule
Red marks the way to write to Luis (mailto) plus the focus ring and caret. If it is not the contact action or a focus indicator, it is ink.
- [02]
The Ink Only Rule
Every graphic is ink on paper: blocks, dots, hairlines. No greys of their own outside graphite (or night graphite), no second accent, no gradients.
- [03]
The Flat Sheet Rule
Nothing floats. No shadows, no glow, no blur, no radius. Structure is 1px ink hairlines; emphasis is a full ink fill. The only texture is the paper grain: static ink specks at 12% (sand specks at 11% on the night sheet), on the ground only, never on fills, type or images.
- [04]
The Night Sheet
An inverted sheet, sand ink on ink paper, opt-in only through the header switch ([■] Nat / Night / Noche) and remembered per browser. Paper is the brand default and never follows the OS dark-mode setting. Print is always the paper sheet. The grain is off in print and under reduced transparency, more contrast and forced colours.
- [05]
The One Family Rule
Clash Grotesk is the only face, from 13px labels to full-bleed display. Weight and size carry hierarchy.
- [06]
The Bracket Rule
References, numbers and status read in square brackets: [01], [Sheet 02 — Analytics], [Denmark]. Brackets are notation, not decoration.
- [07]
The Title Block
A sheet closes on ruled cells: Project · Sheet · Drawn by · Rev. Graphite field names over ink values.
Do
- Separate bands with full-width 1px ink hairlines.
- Number and annotate in square brackets, label size, tabular figures.
- Use ink fills (ink background, paper text) for hover and selected states; the night switch swatch fills with ink when on.
- Keep corners square and the page flat.
- Let motion draw: hairlines drawing in, type rising from masks. Respect reduced motion.
Don’t
- Round a corner, cast a shadow, add glow or blur.
- Add a second typeface, a second accent colour, or greys outside graphite and night graphite.
- Add texture beyond the paper grain, or put grain on ink fills, type or images.
- Use red for anything but the contact action, focus and caret.
- Use the night sheet as the default, or switch it on from the OS dark-mode setting.
- Use stock imagery, illustration or generated faces.
- Use glyph or icon-font arrows; use the authored arrow.
[B.09] For builders & agents
:root {
--paper: #e7e4df;
--ink: #141414;
--ink-2: #4a4744;
--red: #b3261b; /* contact action, focus ring, caret only */
--m: clamp(12px, 1.1vw, 20px); /* margin and gutter */
--font: 'Clash Grotesk', 'Helvetica Neue', Arial, sans-serif;
--grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .078 0 0 0 0 .078 0 0 0 0 .078 1.7 0 0 0 -.6'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E"); /* body and header: background: var(--grain) var(--paper) */
}
/* The night sheet: opt-in via <html data-theme="dark">, screen only, so print stays paper */
@media screen {
:root[data-theme='dark'] {
--paper: #141414;
--ink: #e7e4df;
--ink-2: #a8a49e;
--red: #f0695f;
--grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .906 0 0 0 0 .894 0 0 0 0 .875 2 0 0 0 -1'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.11'/%3E%3C/svg%3E");
}
}
@media print, (prefers-reduced-transparency: reduce), (prefers-contrast: more), (forced-colors: active) {
:root { --grain: none !important; }
}%%{init: {"theme": "base", "themeVariables": {
"background": "#e7e4df", "primaryColor": "#e7e4df", "primaryTextColor": "#141414",
"primaryBorderColor": "#141414", "lineColor": "#141414", "secondaryColor": "#e7e4df",
"tertiaryColor": "#e7e4df", "clusterBkg": "#e7e4df", "clusterBorder": "#4a4744",
"fontFamily": "Clash Grotesk, Helvetica Neue, Arial, sans-serif"}}}%%
classDef ink fill:#141414,color:#e7e4df,stroke:#141414Point an agent at luissejer.dk/brand.md: the whole kit and the full design system in one file. Tokens as JSON: /brand.json.