How Clear looks, sounds and is built.
The reference for anything with the Clear name on it: a site, an app, a flyer or a post. Every value here is the one the website is built from, and the product notes are the ones the apps are built from.
A C that opens, and a link that passes through it.
One drawing in two weights. The wordmark is Bricolage Grotesque set tight, with no separately drawn lettering.
- Recolour it outside ink or paper
- Stretch, rotate or add effects
- Put it on a busy photo without a ground
- Redraw or retype the wordmark
A mineral page, green-black ink, and one cobalt.
The page is a cool grey-green, not white and not cream. Every swatch is graded against both grounds it sits on.
Cobalt goes on the one figure that is moving. Everything else stays ink.
Three cobalts and nothing is current. It reads as a link style, not a signal.
Three faces, each with one job.
Display for what we are saying, text for everything a reader works through, and mono only for labels.
Headlines, statements, the wordmark. 800 for headlines, 600 for sub-heads. Tracking −3.5% to −4.5%, line height 0.92–1.05.
Body, figures, buttons, forms. Body 17px on 1.6. Figures 600 with tabular numerals.
Section labels, tags, chips and axis notes. 10.5–11.5px, uppercase, +8–10% tracking. Never a figure, never a sentence.
Six steps of space, and corners that mean something.
Every gap comes from one scale. A corner tells you what a thing is: drawn, touched, or a device.
Anything drawn or documented: cells, tables, fields, drawings.
Anything you interact with: buttons, toggles, range handles, chips. Updated
The one exception: the thin outline around an app screen.
A bento is one grid of shared seams. Every rule runs wall to wall and nothing floats.
Rounded, padded, shadowed cards. Each one is its own object, and the page turns into a dashboard.
- Cell header and footer56px
- Column header row38px
- Section band in a list32px
- Input34px
- Small button30px
Every section is built the same four ways.
A head that answers itself, a bento of cells, columns that line up, and paper broken by ink.
A full-width label rule with the number in cobalt, the headline, and one aside line. Hero headlines sit on two set lines from tablet up.
Name left, a quiet tag right. The footer is optional and always full width.
One vote each.
Headlines of different lengths.
Residents govern their own place.
The figures still start on one line.
One third.
Because the rows are shared.
Cells in a row share their row tracks (grid-template-rows: subgrid), so a two-line headline pushes every figure in the row down together.
Ink bands redefine the tokens rather than adding colours, so every component works on both. Two paper sections in a row drop the second one’s top padding.
- Desktop1280 max, 1440 tested
- Tablet900
- Phone390, nothing scrolls sideways at 360
- Apps NewBreaks at 1180, 1024, 760
Visitors split evenly across the three, so each is designed on its own terms, not squeezed. Apps are designed desktop first.
A mono context line with the live dot, one sentence written from the data with links inside it, four vitals that open the tab they describe, then tabs kept in the address.
Column headers over their columns, a tinted band per day, status last on the row, and the hatch where the list runs out.
- Rows keep their natural height. Space under a short list takes the hatch; a sliver under 12px takes nothing.
- The last row has no line before the footer, and nothing draws a line under a header that already has one.
- Column headers sit exactly over their columns. Numbers and status align right, and so do their headers.
- Section bands group rows, such as days in a log or months in documents. Never one band for a single item.
- Cells in one band are the same height, and their 56px headers and footers line up.
- Details open in a side panel: the label and close at the top, actions at the bottom, the main one on the right.
The pieces every page is built from.
These are working components, not pictures of them. Try them.
One primary per view, with the live dot. The ghost is the second choice.
Two forms. The pill, on the site and for a page’s own status. In product lists, a square and a word, always at the end of the row. Say exactly where a thing is: “Invite-only” over “beta”. Updated
Two to four views of the same thing. The page changes; the layout does not.
A listbox, never the system menu. Arrows move, Enter chooses, Escape closes.
For a number a reader feels rather than types. Two handles when the honest answer is a spread.
Progress along a bento’s top edge, scrubbed by scroll. Knobs sit centred in their columns.
- Tax when you contributeNone, §721
- What you receiveShares, 1:1
- Tenants and repairsNot yours
Weekday, day, month, at the left of a dated row. Items on the same day share one leaf, joined by a tie line.
Details open on the right without leaving the page. The header stays put, the body scrolls, and the main action sits bottom right.
Confirms what happened, says what happens next, and says where it was logged.
Hidden for everyone by default. Each reveal asks why, and logs who, whose, which fields and the reason.
Money, on-chain, access and settings changes need a second person. Nobody approves their own.
Set per group for each page, never per person. Totals shows co-op numbers with no names, emails or accounts.
- Read-only views hide actions entirely. Opening and reading still work.
- Hiding a button is not security. The server checks the level on every request.
- Locked settings cannot be edited. They link to where they are decided: a vote, the bylaws, a policy or the law.
- The log only grows. A correction is a new entry that points back to the old one.
Motion shows what changed. It never hides what is there.
Four moves, used everywhere. With reduced motion, each one shows its end state instead.
Each word lifts out of a padded mask, and the mask comes off when it lands, so no descender or edge is ever clipped.
Fills, rails and month strips follow the scroll, so the reader controls the pace and can go back.
A short lit segment runs once around an outline, then rests. It follows the thing it outlines when the layout wraps.
A figure counts to its new value with tabular numerals, so the width never jumps.
- Nothing animates that a reader needs before it finishes. Content is complete with scripts off.
- One ease for everything: a fast start that settles (cubic-bezier(0.16, 1, 0.3, 1)).
- Loops pause when they scroll out of view, and run only on things that are actually live.
- With reduced motion, show every end state: the final figure, the drawn line, the result of the vote.
A line means one thing, everywhere it appears.
Plans, plats, org charts and the product’s charts share one drafting language, so a reader learns it once.
An ownership line. Every coordinate derived, never typed.
A relationship that is not ownership. Always labelled.
Means ownerless and nothing else. One per drawing at most.
A legal boundary: the parcel, a lot line, the title.
Land the members hold together, in drawings. Never “ours” against “yours”. Updated
The one home, seat or figure the reader should find first.
Land and property when a drawing splits money from housing.
Any made-up number says so right beside it, not in a footnote.
In the product: pending, estimated, or nothing to show yet. A different thing from the land hatch. New
A payment, a payout, a handoff. The head is two drawn lines, never a filled triangle. New
Something that ends: a lease term, a contract, a retired version. New
Charts may colour by category, always with a legend. List rows never do. New
One dot, two jobs.
It says something is open now, or it tags a status. Only the first job moves.
On Join, on each page’s main button, and on something open now. The ping runs.
In build, signing, not yet. The core and the glow, and no ping. Updated
--color-signal-deep · 5.0:1 on light--color-signal-light · 8.4:1 on dark.live-dot {
position: relative;
display: inline-block;
width: 7px;
height: 7px;
border-radius: 50%;
background: #0E6B4E;
box-shadow: 0 0 6px 1px rgb(14 107 78 / .55);
}
.live-dot::after {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
background: inherit;
animation: live-ping 2s cubic-bezier(0, 0, 0.2, 1) infinite;
}
@keyframes live-ping {
0% { transform: scale(1); opacity: .6; }
75%, 100% { transform: scale(3.4); opacity: 0; }
}
/* On a dark ground, use #6FCB9F. */
@media (prefers-reduced-motion: reduce) {
.live-dot::after { animation: none; opacity: 0; }
}- Pulse only what is actually open.
- Never on every button, never as a bullet.
- Always beside a word that says the same thing. The dot is never the only signal.
- With reduced motion, keep the dot and stop the ping.
- In the product, the dot means live only: a sync running, a payment going through. New
- A status in a product list is a square, so a dot never reads as a bullet. New
Say it the way a person would.
Plain words, short paragraphs, and never a promise we cannot keep.
The same system, off the screen.
One statement in Bricolage, one line in Instrument, and paper and ink do the rest.
- A margin of 8% of the short edge on every side.
- On stories, keep text out of the top and bottom 14%.
- Body no smaller than 28px on a 1080px canvas.
- One statement per graphic.
- Flood the paper colour, or choose an uncoated stock close to it.
- Outline mark from 15mm, solid below.
- Use the CMYK values as a start and proof before a full run.
Files, ready to use.
Vector for anything that scales, PNG wherever an upload is all you get.