Button
Every verb on a page. One primary per screen; secondary, outline, ghost and quiet for the rest; danger only for a verb that destroys something; tint for a soft call.
The style of every product built from this kit is decided in its design tokens and its shared parts. This page puts both in one place, in plain words, for a person designing a new screen: what each colour, size and part is for, the patterns the screens follow, and the decisions that stand. Everything shown is drawn from the tokens and the real parts, so it changes when they do.
Colour is chosen by its role, never by its value. Each colour has a name that says what it is for, a screen uses that name, and the value follows the theme. Every colour is shown here in light and in dark, read from the design tokens themselves, so this page cannot show a value the product does not paint.
Three grounds stack: the page, a card on it, and a well inside a card. Lines are hairlines; they separate things and never decorate.
--page-bg#ffffff#000000--canvas#ffffff#161618--hairlinergba(0,0,0,.07)rgba(255,255,255,.08)--hairline-softrgba(0,0,0,.05)rgba(255,255,255,.06)--nested-bg#f5f5f7#161618--nested-border#e8e8ed#2c2c2e--snippet-bg#f5f5f7#161618--fillsame as nested-bgsame as nested-bg--fill-2same as nested-bordersame as nested-border--raised#ffffff#1c1c1e--card#ffffff#232326--glassrgba(255,255,255,.78)rgba(0,0,0,.7)--scrimrgba(0,0,0,.24)rgba(0,0,0,.24)--canvas-aurora-hues330 205 160 265 40330 205 160 265 40--knob#ffffff#ffffffTwo inks for reading and two for quiet text such as dates, hints and counts. All four read at 4.5 to 1 or better on each of the three grounds, in both themes.
--ink#1d1d1f#f5f5f7--ink-2#424245#d1d1d6--muted#6e6e73#98989f--muted-2#6e6e73#98989fOne colour for what a person can do and where they are: a link, the primary button, the current page, the focus ring. It is used sparingly so it keeps its meaning.
--accent#1d1d1f#f5f5f7--accent-hover#000000#ffffff--accent-tintrgba(29,29,31,.06)rgba(245,245,247,.08)--accent-tint-2rgba(29,29,31,.10)rgba(245,245,247,.14)--accent-disabled#e8e8ed#2c2c2e--accent-wash#f5f5f7#1c1c1e--accent-deep#1d1d1f#f5f5f7--on-accent#ffffff#1d1d1f--on-accent-quiet#bbbbbc#626263--highlight#f2b036#f2b036--on-highlight#1d1d1f#1d1d1fWhat a person or a source says about something, never the product’s judgement of the person. Each has a fill, a ground and a text colour; resting is the state with no stance.
--colour-agree#1d1d1f#f5f5f7--colour-agree-bgink at 8%ink at 8%--on-colour-agree#ffffff#1d1d1f--colour-questionsame as highlightsame as highlight--colour-question-bgink at 8%ink at 8%--colour-disagree#424245#d1d1d6--colour-disagree-bgink at 8%ink at 8%--on-colour-disagree#ffffff#1d1d1f--colour-agree-ink#1d1d1f#f5f5f7--colour-question-ink#424245#d1d1d6--colour-disagree-ink#424245#d1d1d6--colour-resting#7c7c7f#919194--colour-resting-ink#47474a#c9c9ccSomething to know before acting. Not an error, and never a warning about the person.
--notice-bg#f5f5f7#161618--notice-borderrgba(0,0,0,.07)rgba(255,255,255,.08)--notice-ink#424245#d1d1d6Only for an action that destroys something, or is armed to. It is not disagree: danger is about what the product is about to do, disagree about an opinion.
--danger-soft-bgink at 8%ink at 8%--danger-border#424245#d1d1d6The edges and fills of fields and quiet controls, from the faintest border to a chosen option.
--border-subtlergba(0,0,0,.07)rgba(255,255,255,.08)--border-inputrgba(0,0,0,.16)rgba(255,255,255,.2)--border-hoverrgba(0,0,0,.16)rgba(255,255,255,.2)--border-quietrgba(0,0,0,.16)rgba(255,255,255,.2)--swatch-fallback#c4c4c4#4f5854--control-disabled-bg#e8e8ed#2c2c2e--control-selected-bg#ffffff#2c2c2e--ink-soft#424245#d1d1d6--label-quiet#6e6e73#98989fGrounds for a person’s own message in a conversation, and for inline information or approval.
--bubble-user-bg#f5f5f7#161618--callout-info-bg#f5f5f7#1c1c1e--callout-approve-bg#f5f5f7#1c1c1e--callout-approve-ink#1d1d1f#f5f5f7Quiet grounds for a suggestion of what to read or do next.
--steer-bg#f5f5f7#161618--steer-borderrgba(0,0,0,.16)rgba(255,255,255,.2)--steer-eyebrow#6e6e73#98989f--panel-warm-bg#f5f5f7#161618--panel-warm-hover#e8e8ed#2c2c2e--cta-dark-hover#303033#404043Series start from the accent and step away from it; a range band is the accent at low strength.
--chart-band-lineink at 18% over canvasink at 18% over canvas--chart-series-1#1d1d1f#f5f5f7--chart-series-2#424245#d1d1d6--chart-series-3#aeaeb2#636366--chart-series-4#c7c7cc#48484aThe state of a record over time, the level of a source, and what a change added or removed.
--hairline-inkrgba(0,0,0,.16)rgba(255,255,255,.2)--status-current#1d1d1f#f5f5f7--status-draftsame as highlightsame as highlight--status-historical#6e6e71#9f9fa2--status-obsolete#424245#d1d1d6--tier-canonicalsame as accentsame as accent--tier-countrysame as ink-2same as ink-2--tier-raw#9a9a9dsame as muted-2--diff-add-bgink at 8%ink at 8%--diff-add-ink#1d1d1f#f5f5f7--diff-del-bgink at 8%ink at 8%--diff-del-ink#424245#d1d1d6The library’s colours for the kind of a document.
--lib-science#1d1d1f#f5f5f7--lib-transcript#5b5b5e#a5a5a8One family for every line, titles to labels: the system’s own sans, with Onest where a system has none. No serif. Sizes come from one scale; there is no size between two steps. Titles are bold and set tighter as they grow, and reading text stops at about 70 characters a line.
--sans--sansOne step of 4 pixels, and every space a whole or half number of steps, so changing the step moves every space at once. Space inside a card is smaller than the space between cards, so what belongs together reads as one thing; the sections of a page stand 64 to 80 pixels apart.
--measure--shell-read--shellWhat you press is a pill. A box is rounded, more as it grows: 16 pixels for a row or a field, 24 for a card, 28 for a dialog, 32 for a big panel. Shadows are soft and few: a card barely lifts, and whatever floats lifts more. In dark the shadows are deeper, because a pale edge would not show.
Every shared part a screen is built from, with a picture and when to reach for it. Start a new screen from these. If a screen needs something none of them does, that is worth raising as a new block, not drawing a local copy: two versions of one part drift apart. Each picture is the real part with sample words; to try one, open the Design elements tab.
What a person presses or picks. One primary action per screen; everything else steps back.
Every verb on a page. One primary per screen; secondary, outline, ghost and quiet for the rest; danger only for a verb that destroys something; tint for a soft call.
Turns one setting on or off at once, with no save button after it.
An independent yes or no in a list or a form; the mixed state for a parent whose children are partly chosen.
Picks one of two to five fixed options, such as which list a page shows.
Switches between the views of one page, with a count or a dot where something waits.
Shows where a person is in a short, fixed sequence of steps.
An option a person picks when a label alone cannot describe it.
One-press answers inside a conversation.
A question with a few answers inside a conversation, one or several, or a live poll.
Several answers from a list of described options, then one press to commit.
A person puts a short list in their own order and commits it.
Asks for a yes inside a flow, before a step with consequences.
Where a person types or chooses. A label is always visible; a hint and an error sit under the field, in words.
The default one-line field: a visible label, a hint, and an error a screen reader announces.
The same for more than a line: a note, a reason, a message.
The bare box, for a surface that owns its own label and layout, such as a chat composer.
Picks one value from a list the product knows: a field on a form, or a filter over a list.
Compact forms: the label sits in the box and moves up once there is a value. Text, a longer text, one choice or several.
One short answer in a conversation, such as a code or a name.
A longer answer in a conversation, with save and discard.
Adds one or more files, and says why a file was refused.
Links a record to events, and asks before unlinking one.
Links a record to organisations with a role, or adds a new one without leaving the form.
What holds content on the page, and what comes over it. Prefer the page; open something over it only when the task is short.
Groups one record or one block of content. A card says these things belong together; it is not decoration.
Takes the whole focus for a short task. Use it rarely; a page or a side sheet is usually kinder.
The extra warning before an important, destructive or hard-to-reverse action: what will happen, and what cannot be undone.
A record’s detail or an edit panel from the right, beside the work.
Details, a form or filters beside the page, while the page stays in view.
A short note that something happened, which leaves by itself. Never the only place a failure is said.
A note in the flow, next to what it is about: information, success, a warning or an error.
At the head of a filtered view, saying what the reader sees and what is left out.
Says a page works better on a bigger screen, instead of leaving a person to wonder whether something is missing.
Small marks that say what something is. A colour never speaks alone: every mark carries a word or a glyph too.
A record’s state at a glance, readable without colour.
A short category, stance or tier on a record or a heading.
Tags and short labels inside a row. The assistant’s tone marks work an assistant did, so it never passes for a person’s.
How many things wait behind a menu entry, a tab or a row.
An assessed certainty, and visibly “not assessed” where there is none.
Which area a row comes from, as a small coloured mark with its name.
A person or an assistant. An assistant is always marked as one.
Which language versions of a text exist, and whether each is current.
Ties a claim to the source it came from. A person’s own documents are numbered apart.
For text a person reads, checks and answers. What the material says is kept apart from what anyone thinks of it.
Lays a statement beside the material and says whether the material supports it, points elsewhere, or says nothing.
A person’s words attached to a quoted passage of a document that may change under them.
A person’s own response to an item: interesting, a question, or not interesting.
What changed between two versions, inline or side by side.
The chapters of a long document a person works through over time, with how far they are in each.
Beside a conversation: what it has gathered so far. Read-only, never a form.
A searchable list of records, where a row opens its detail.
An editorial register: quiet rows with a title and an arrow, each opening its record.
Lets a reviewer look at a page as another role would see it.
Numbers a person can trust: every chart has its exact figures beside or under it, and a reading nobody measured is never drawn as a line.
A named quantity over regular periods, where the exact figures matter as much as the shape.
A balance running down: what was measured, solid, and what each rate would make of it, dashed.
What was used each day against an allowance, split over a few named destinations.
Two or more readings of the same quantity: the shape of the series, and every reading in a table under it.
Exactly one reading, beside the range it was measured against. One reading is never a chart.
Figures from several sources read together as one set, each able to say how it was worked out.
A wait is drawn as the product’s own mark, and always with words: what is happening, and that there is nothing to do.
Every wait, drawn as the mark itself rather than beside it.
A first load that takes a moment, with a short line of words.
Records opening in the background, so a person knows the list is on its way.
The mark on its own at a small size: the top of the menu, an app icon.
Wherever the product signs its name, from 12 to 64 px; the dot becomes the loader while something loads.
What every signed-in page shares: the menu on the left, the area’s own pages beside it, the page header with Capture, and the quick menu in the corner.
The layout of every signed-in page: the menu, the area’s pages, the page itself and its foot.
The main menu: a few standing sections, each with a second level; pins; and the account, theme and language at its foot. On a phone it folds behind one Menu button.
An area’s own pages, in a column beside the page. A page not open yet is drawn with its reason, never left out.
The top of every page: the title, the page’s own controls, and Capture on the right, so the black button means the same thing everywhere.
The round button in the bottom corner: the few things a person reaches for from anywhere. Notepad and Capture by default.
One place to put a passing thought, from the header’s button, the quick menu or the C key. Only a yes from the host empties it.
The assistant, called from anywhere by a key, without a chat panel taking space on every page.
The person’s name, their settings and sign-out, at the foot of the menu.
Light or dark, at the foot of the menu. The choice holds on every page from the first paint.
The language, wherever a person can change it.
In a list’s header: the way up to the rituals that review it. A ritual not open yet says so.
Two pages dropped on each other become one panel with tabs.
The landing page of a section that gathers several parts: its rituals, a vision, the last reflection, and its rooms.
The one settings screen: the account’s own rows, and the rows each part of the product adds.
The sign-in of a product nobody joins from outside. A member and a stranger see the same words.
A product without the side menu: the mark, its sections along the top, and its actions on the right.
The page’s foot; the shell footer carries one standing statement under everything a product shows.
What leaves the screen. Mail and printed documents share one frame and one standing statement, and compute nothing of their own.
The outside of every mail, and the one pressable link a mail carries.
The periodic invitation to a person with something running, in their own language.
A one-off request to an author for a full text, saying what happens and what does not.
Once a day to the administrator, every figure worked out by the same code the screens use, even on a quiet day.
One event the team acts on, as it happens: the event, what is true now, and the next move.
The outside of every document a person saves, prints or hands to someone who will never sign in.
They draw nothing themselves, and every product needs them.
How the blocks go together. These were settled screen by screen while the products were being designed; a new screen follows them unless it has a reason that is written down.
A title keeps at least 160 pixels beside Capture, and a title with a subtitle at least 240, so the subtitle reads as a line rather than a narrow column. Where it needs more, Capture moves under it. In practice, on a phone, most headers put Capture under the title, and no title takes more than two lines in any of the three languages. Short titles stay on one line everywhere.
Design these before the full screen is polished: a person meets them more often than the happy path. Each is honest first and short second, and none of them apologises for the product.
A wait is drawn with the product’s own mark and a sentence, never a bare spinner. A cell with no value says so in a word, never with a dash or a blank.
Settled by the owner. They are not reopened by a new screen, and a drawing that disagrees with one of them loses.
Laife is the showcase product built from these parts. It takes everything on this page as it is, and sets only what is its own: