Level 2: a component that holds atoms, or its own named parts, and nothing else.
Fourteen of them stand on the five anchor screens; the three that do not were walked on their
own screens on 2026-08-08 and are here too. Each is the markup the screens ship, painted by
components/index.css, in Vault and Daylight side by side, with what it holds, its
rule and its anti-rule.
A level is one plus the highest level of what a component contains, and
that arithmetic has a blind spot: a component built entirely out of its own class names reads as
containing nothing and answers 1. So each level below is declared with a reason, in
docs/inventory.md, and this page shows the declaration next to the thing it is
about. HOLDS names what is inside, poinwise, even where the arithmetic could not see it.
Two of the fourteen were filed as atoms and are not. The trust strip holds three items, each a mark and a line; the market block holds a question, a rule and a source. Both are made of their own names, which is exactly the case the declaration exists for.
Every specimen stands inside body.app-case, and it has to.
A large part of this system is scoped to that class, and the consolidation found the cost: 28
amount chips sit in a dialog outside it and would render as raw User Agent buttons if that dialog
opened. It is the dependency the system requires and never declares.
Three claims, each a mark, a bold line and a quiet one. It is the block the whole product's second principle rests on: trust is stated, not implied, so every line here is a fact a person can go and check rather than a reassurance.
Rule. Every claim is checkable and says how. Anti-rule. Never a borrowed authority: no "as seen in", no logo wall, no number without a way to verify it. A trust strip that has to be believed is an advert.
How the odds are set, opened rather than explained away. A disclosure, five stats and a depth table, and every figure in it is mono because mono is the promise that the number is exact.
Rule. The bar widths are a datum, so they are on the element, which is one of the three things the system allows there. Anti-rule. The depth table never hides the worse price. A market that shows only the small bet's rate is telling half of what it knows.
Four amounts and one of them is chosen. The row exists so a person never has to type to place a small bet, which is the difference between a product for traders and a product for people.
Rule. One amount is always preselected, and it is not the largest. Anti-rule. Never an amount a person has not got. A quick row that offers $100 to a $12 balance is an error message wearing a chip.
This is the component the consolidation found sitting outside its own
scope. chip.css writes .app-case .chip-amount, and 28 of the 40
amount chips in the product are inside a dialog that is not in .app-case. All 28 are
in closed dialogs so none renders today. The day one opens, they are raw User Agent
buttons.
A multi-outcome market: one row per candidate, each with its own price and its own pair. None of these is a YES or a NO of the market, which is why the row's colour is neutral until a side is picked.
Rule. Every option carries a full pair, because betting against a candidate is a position and not an absence of one. Anti-rule. The list never sorts itself while a person is reading it. A row that moves under a pointer takes a bet nobody placed.
One bet, as a row: the question, the side, four figures and a status. It is a row in a list and not a shell, which is why it left the organism group. The arithmetic cycled it with the detail screen at 54 readings to 2; the screen holds the row.
Loading, the same row as a skeleton
Rule. The price paid and the price now are always both shown, and the payout beside them. One without the other is either a boast or a threat. Anti-rule. Never a green or a red on an open position. Those two colours mean the market resolved, and a position that is merely up is not a position that won.
Everything the product says to a person in place, rather than in a toast or a dialog. Six shapes and one file, and they are one component because they answer one question: what is true right now that you did not ask about.
Your USDC is held 1:1 - we do not lend or invest your funds.
Your USDC is held 1:1 - we do not lend or invest your funds.
Rule. A notice says what happened, what it cost and what to do next, in that order, and "no funds were taken" comes before the advice. Anti-rule. Never red on an inline error. Red is the NO outcome in this product, and an error that borrows it says the market resolved against you.
The empty and the error, which are two situations and one block. A mark, a title, a sentence that explains rather than apologises, and one or two ways out.
No events match your filters
There are no events for this category and filters right now. Clear the filters, or get notified when a new event shows up here.
No events match your filters
There are no events for this category and filters right now. Clear the filters, or get notified when a new event shows up here.
Rule. An empty always offers a way out of the emptiness, and the first button undoes whatever caused it. Anti-rule. Never an empty with no action. A screen that says "nothing here" and stops has handed the problem back.
The backlog holds an open item against this component: the error state and the empty state are not visually differentiated, so two different situations read as one block. It is carried, not fixed, because deciding how loud an error should be is a voice question as much as a visual one.
A disclosure, a panel and a list of options. The option is the census's
sharpest finding: 304 readings of a bare <label> at 33px with a 10px
radius and 8px of padding, which is a chip by every value the browser reports and is not in
chip.css.
Rule. A filter shows how many results it will leave before it is applied, or it is a guess. Anti-rule. Never a filter that clears itself on navigation. A person who set three filters and came back to none will set none again.
Open, and named rather than taken: adopting .chip on the
option moves the padding from 8/8 to 8/12 and the height from 33 to 38 on 304 readings.
That is a consolidation decision with a measured cost, and the cost is why it is written down
instead of swept.
The count, the sort and the compose row. The sort is three
.chip-rail chips, which is the same control the chart's range uses, because sorting
a list and ranging a chart are the same job.
Rule. "Bettors" is a sort and not a badge: whether someone has a position is a fact about the comment, and it belongs where a person can sort by it. Anti-rule. Never a comment count that includes deleted ones. A number beside a list has to be the length of the list.
The reading column at the foot of a category feed: what the category is, and the questions a person new to it actually asks. It is the one place in the product with a measure, because it is the one place a person reads rather than scans.
Follow crypto events and back your opinion with a real stake. These events cover token prices, launches, network upgrades, and protocol milestones. You see the odds in plain language and how each event resolves before you bet, from one dollar, with no wallet to start.
Follow crypto events and back your opinion with a real stake. These events cover token prices, launches, network upgrades, and protocol milestones. You see the odds in plain language and how each event resolves before you bet, from one dollar, with no wallet to start.
Rule. Every sentence here is true for a person who has never bet, and the questions are the ones support actually receives. Anti-rule. Never keyword prose. A plate written for a crawler is read by a person first and costs the trust the strip above it just bought.
What is left of the component is the centred row at the foot of a
feed. Its control used to be a category chip drawn in a second file; now the control is a
.chip and this file places it. One use, and it is kept because a feed without an end
is a feed a person cannot leave.
Rule. A button, never an infinite scroll: a person has to be able to reach the footer. Anti-rule. Never a page number. The feed has no stable order, so page two is not the same page two a minute later.
account, cookie-consent and toc stand
on no screen in the five anchor families, so this shelf carried them as unmeasured rather
than guessing a level: nobody had read them on a rendered page. They were walked on the six
screens that do carry them, and each one's containment was read from the DOM rather than from
the class names. All three held something, and all three were level 2.
account was deleted later the same day, and the walk is what
deleted it. Its whole stylesheet was two rules and both were one thing: the action bar's
stone, and the three declarations .flat took the stone away with. Reading it on the
screens is what showed that the stone stood once of three placements, and that the shape
of it, a top border and two top corners, is a surface for a bar that FLOATS over content
scrolling under it. Nothing in the product docks. So the face went, the file emptied, and the
bar is one thing again: the action-bar pattern, with its
page at action bar. A component with no face left is not a
component with a small stylesheet, it is a name. Backlog 63.
The two that stayed follow. The level 3 organisms are on their own page: header, footer, dialog, hiw, betpanel, tabs, bets-table, card, hero, chart, feed, event-detail and profile.
The consent banner: a sentence, three choices, and a panel of categories one of which is locked on. It is the one component in the product whose shape is decided by law rather than by design, and the only one where a control that could go dead would be a dark pattern.
Rule. Reject is as easy to reach as Accept, always: same face, same size, same row. Anti-rule. Never give any of the three a disabled state; consent is always available, and a Reject that could go dead is the dark pattern this banner exists to answer.
A document's own contents, beside it. Same geometry as the category rail and the opposite job: that one navigates BETWEEN pages with buttons, this one navigates INSIDE one page and its rows must be anchors, because a contents built out of buttons is not crawlable.
Rule. A rail declares its own width and its own sticky, and the shell declares only that there are two columns, so a third rail can arrive without either file learning about it. Anti-rule. Never pin a rail without capping it to the window: at 601px tall and pinned, three of its fourteen rows were off the bottom of a 768px laptop and stayed there.