Level 2, and seven faces that share one job: a bordered box that EXPLAINS rather than acts. Reassurance in a sheet and the same sentence in a page, a slot for something that has not arrived, an error in place, a figure to check, a wait, and a permission ask. 250 placements on 105 painted screens. Measured 2026-08-08 in a browser, dialogs forced open, at 390 and 1280.
The mark, the message and the action. 4 elements against 6.
The level and its reason stay on the molecules page, which gives this component one specimen. One specimen of a seven-face component is a seventh of it, and the seven do not look alike: the only thing they have in common is the sentence at the top of this page. Two of the seven only became visible here on 2026-08-08, and section 5 is why.
| face | worn | what it is | the box |
|---|---|---|---|
.protect | 131 on 114 | reassurance under a form: what happens to your money and who holds it | a TRUST tint inside a trust edge |
.protect.protect-page | 9 on 6 | the same sentence standing in a page rather than a sheet | a brass tint inside a brass edge, and no measure of its own inside a reading column since 2026-08-19 |
.widget-box | 110 | the slot a third-party payment widget will load into | a DASHED hairline on the control ground at a 10 corner, 160 tall, centred |
.inline-error | 8 | a failure said where it happened | the NOTICE edge, the danger triangle and semibold ink on the control ground, since 2026-08-16 |
.reconcile-box | 7 | the figure to check, in three faces | a stronger brass edge when it is plain |
.reconcile-box.rec-won | 4 | the payout on a win | a WON tint inside a won edge, centred, the figure at 24 |
.reconcile-box.rec-lost | 1 | the figure on a loss | the control ground inside a hairline, centred, the figure at 20 |
.reading | 10 on 10 | how a market was decided: the outcome, the instant, the condition in the rules' own words, and the source as a link | the NEUTRAL box, a hairline on the control ground at a 10 corner, and the record line in mono. It is not tinted, and that is the argument: .protect makes a promise and this reports a reading, so tinting it with trust would borrow the authority the sentence exists to avoid needing |
.quiet-box | 7 | a wait | dashed, 100 tall, loose leading |
.push-banner | 2 | the one that ASKS: turn on notifications | a trust tint, and the only face with controls in it |
The two protection rows were read from the rendered DOM on 2026-08-19 and
the other seven are the reading of 2026-08-10, which is what a dated count looks like when only
part of it has been walked again. .protect said 113 and measures 131
elements on 114 documents; .protect.protect-page said 3 and measures
9 elements on 6. One event moved both: terms.html arrived 2026-08-15 and
about, privacy, cookies and responsible-betting on 2026-08-18, five document pages that each
stand the page face, with wallet.html the sixth and the only one of the six that is
not a document. The page face is a subset of the class, so the 9 stand inside the 131 and
the two rows are not added together.
The error tone was never missing from the system. It was missing from the
one surface where money fails. Red is NO and brass is the brand, so this product has no hue
left for a failure, and tokens.css settled that before any of these boxes existed:
--border-notice is --bone-700 and its comment reads "the neutralised
error toast, warm grey, never red". What follows is the whole tone: a MARK, an EDGE and
a WEIGHT, and no colour at all.
Two of the three surfaces already wore it and the third did not. Measured on the live screens before 2026-08-16:
| face | edge | marks | message weight |
|---|---|---|---|
.state-block.state-problem | rgb(90,84,74) | 1 | 600 |
.toast.toast-error | rgb(90,84,74) | 1 | 600 |
.inline-error, before | rgb(43,47,56) | 0 | 400 |
Same ground on all three. So the quietest of the three was the one that says
"Your bet did not register on-chain", and it was quieter than .reconcile-box two
lines above it in the same panel, which frames a price CHANGE in brass at
--tint-brass-45. The product was drawing more attention to the odds moving than to
the money not arriving. It is the family's third member now, not a new face: same edge, same
mark, same weight, and the mark scales with the surface, 28 for a whole screen, 22 for a toast
and 22 for this, which is the same species as a toast.
No wrapper was added for the sentence, and that is the system's own rule working: a text node beside an element becomes an anonymous flex item, so a box with one text child has two children the moment the mark arrives.
the three that stand on almost every screen, and the record that arrived with the resolver
Funds are held with a regulated custodian. We never hold your keys.
The same sentence in a page rather than a sheet, on six documents in each tree since 2026-08-20.
Resolved YES on Jun 27, 2026 at 09:14 ET. A federal funding gap began before the Jul 1 deadline the rules named.
Source: OMB notice of Jun 26, 2026. Read by the Yonder team at 09:14 ET.
Funds are held with a regulated custodian. We never hold your keys.
The same sentence in a page rather than a sheet, on six documents in each tree since 2026-08-20.
Resolved YES on Jun 27, 2026 at 09:14 ET. A federal funding gap began before the Jul 1 deadline the rules named.
Source: OMB notice of Jun 26, 2026. Read by the Yonder team at 09:14 ET.
the two that carry a figure, the reconcile box in all three of its faces, and the one that asks
Six blocks, one job, which is what backlog 16d asked. Measured across
the painted tree on 2026-08-10, when it was 106 screens: 113 .protect, 110
.widget-box, 8 .inline-error, 7 .reconcile-box, 7
.quiet-box and 2 .push-banner, and 0 of them hold a control except
the permission banner, which holds two of button's. Six faces that all explain
and none that act is one component with six faces, and the table above is the only arrangement in
which that can be seen rather than argued.
The denominator in that sentence is 115 documents now, and the one row
of the six that has been walked again reads 131 .protect on 114 of them,
2026-08-19: five long documents arrived after 2026-08-10 and every one of them carries the
sentence. The other five figures are left standing as the 2026-08-10 reading rather than
turned by arithmetic, because a count is computed or it is dated, and a number nobody
measured today is a number this page may not print as a live one.
DESIGN.md decides it once for the system: green and red are
outcome semantics, YES and NO. A declined card is not a NO. So
.inline-error is a hairline on the control ground with the primary ink, and the
whole error signal is where it stands: in place, beside the thing that failed.
The reconcile box is the exception that proves the rule, and it is not an
exception. It DOES take colour, green on a win and neutral on a loss, and the colour is the
OUTCOME of a bet rather than the severity of a message. That is the same token doing the same job
it does everywhere else in the product. Since 2026-08-08 it says so in its own class,
.rec-won and .rec-lost, rather than being told by the dialog around
it.
The widget slot and the wait are the only dashed boxes in the system. Both are saying the same thing: something will be here and it is not here now. Everything else in the product that is absent is a skeleton, which draws the SHAPE of what is coming; a dashed box is for the case where the shape is somebody else's to decide.
110 widget slots on 105 screens, read 2026-08-10 and not walked again since, because the deposit dialog is in the markup of every screen and its payment widget belongs to a provider this product does not draw. That is the honest way to hold a hole.
The kit found them, on 2026-08-08, by rendering them.
.widget-box had its box unscoped and its FACE under
dialog.app-dialog, so the specimen on this page rendered transparent at a 0px
corner with the wrong ink against the product's control ground at 10px with the muted one.
All 110 stand in a dialog, so no screen was wrong and this page was the only place it
showed.
.protect had two real faces and no class for either: a TRUST tint
inside a dialog and a BRASS tint in a page, kept apart by nothing but the fact that a
<dialog> sits outside the .app-case wrapper. Measured on
2026-08-08: 113 of the 116 stood in a dialog and 3 in a page. So the trust face is the default and the page face is
.protect-page, and neither depends on where the element happens to land. This
page had been showing the minority face while its own table described the majority one.
It is the same correction the money field took an hour earlier and the sixth time this repository has made it: a face is a class, and a container may only say where the control sits. Measured after: the kit's specimen and the product's field are the same colour, the same edge and the same corner, in both faces.
The box carries no heading, no mark and no control. It is a sentence with a box around it, and it stands on 114 of the 115 painted documents, read 2026-08-19 and 105 when this line was written, because the sentence is the same one every time.
AND THE PAGE FACE LOST ITS OWN MEASURE ON FIVE OF ITS SIX PLACEMENTS,
2026-08-19. .protect.protect-page still declares
max-width:var(--measure) in notice.css, and on wallet.html
that cap is the whole reason the box reads as a notice: there the sentence is dropped into
.cat-main, a column sized for cards and 150ch wide, and it ran 117 characters on
one line without it. On the five document pages the column IS the measure now, so
patterns/browse-shell.css takes the cap off with
.read-col .protect.protect-page{max-width:none} and three more declarations that
hand the box the document's own type. A second measure inside a reading column is not a
narrower notice, it is a second left edge: measured at 1440 before it came off, one document
drew a 600px column, a 346px box and 409px of prose inside its sections, three widths on a page
whose grey twin has one. The role did not change and the placement did, which is why the
declaration survives on the majority rather than being deleted by one.
THE LAST CONTAINER SCOPE LEFT ON 2026-08-08, AND THE STAND IS WHAT DECIDED
IT. Until that day the win and loss overlays recoloured this box from outside, through
.win-dialog and .loss-dialog, and there was a real argument for it: a
dialog's OUTCOME reaching its content is a state flowing the right way, not a face lent by a
container. Two readings ended the argument. The grey tree carried six of these boxes with
no outcome variant at all, so a state that existed in one tree only was not a state, it was
a paint job. And a specimen on this page cannot be put inside a win dialog, so two of the
component's three faces could not be stood by anybody: they are above, side by side, for the first
time. A face that cannot be stood cannot be checked.
It is .reconcile-box.rec-won and .reconcile-box.rec-lost
now, in both trees, grey first, which is the habit position.css already had with
.pos-side.pos-won. The centred arrangement came with them and that is a reading
rather than a guess: .outcome-dialog .reconcile-box centred every box in an
outcome sheet, and every box in an outcome sheet has an outcome, so the two sets matched exactly,
5 and 5. The two plain boxes, on the reconcile sheet and on terms, are not centred and never
were. Compound selectors rather than a bare .rec-won, because a single-word modifier
in the global namespace is what .flat was, and .flat is the other thing
this day deleted.
ONE CONTAINER SCOPE SURVIVED THE DAY AND IT HAD NO SPECIMEN EITHER.
.outcome-dialog .protect is the last rule in this file written against a container,
5 placements on the win and loss cluster, and it is kept on purpose: the outcome overlay
is one figure and a sentence, so it sizes the box it holds rather than lending it a face. The
argument was in the file and the thing it argues about was nowhere. It is here now, next to the
default, which is the only way to check whether "sizes" is what it does.
Funds are held with a regulated custodian. We never hold your keys.
Funds are held with a regulated custodian. We never hold your keys.
It is not only a size, and that is what the specimen says and the sentence
did not. Measured against the default above: muted ink instead of primary, 12px instead of
11, 1.5 leading instead of none, and the paragraph margin removed. Two of those four are the
box's VOICE rather than its measurements, so the reassurance sentence reads quieter in an outcome
sheet than it does in a deposit sheet, and nothing on this page said so. The sheet is
truncated to its body, which is the second thing that differs from the product here after
.tk-dlg's position: the head and the close belong to
dialog and stand there.
A comment that says the stand shows a thing is a pointer, and nothing
checks a pointer. This file said the kit "shows both of those rather than describing
them", and until today it showed neither: one of the two stopped being a container scope on
2026-08-08 and became .rec-won, and the other had no specimen at all. The
sentence should read one box, not both.
A notice explains and does not act. Five of the six carry no control at all. The sixth, the permission banner, is an ASK, and its two buttons come from button rather than from here.
Severity is the edge and the place, never a new colour. Solid means it happened, dashed means it has not arrived, and a failure is said where it failed.
Never make the error red. Red is NO in this product, and a declined card is not an outcome.
Never draw a control inside a notice's file. The permission banner's buttons are the button family's; this file owns the row they sit in and nothing else.
Never use a dashed box for content this product owns. A shape we can draw is a skeleton. A dash is an admission that somebody else fills the hole.
The level and its reason: the molecules
page. The stylesheet: components/notice.css. The colour decision:
DESIGN.md. The sentences: voice/docs/microcopy.md. The other way of
saying "not here yet": skeleton.