Landing facts
The "Trusted with your money" block: four claims about what this product can and cannot do with a person's money, and beside three of them the piece of the product that proves it.
What it is
Four claims in a column with a grey bar beside them is the shape of small print, and small print is the exact thing this audience has learned not to believe. The block was the promise list - four sentences down the left edge of a band 1200 wide - so at desktop the block that decides this product occupied the left third of it and the rest was empty. The founder, 2026-08-15: "хочется реально что то красивое".
The block's own lead promises a ledger and the block delivered a paragraph. "Here is exactly what Tendd can and cannot do" is a promise of specifics, and nothing under it was specific: four more sentences. So the repair is not a prettier list. Each claim now stands beside the object that settles it, taken from the screen where that object really lives: Read-only, always beside the access ledger as data-privacy.html draws it ("Bank connection / read-only transaction history, through Plaid", "Added by you / only what you type"); You are in control beside the disconnect as connections.html draws it, by name; We never sell your data beside the one preference that could have sold it, in the resting position data-privacy.html gives it ("Use my activity to improve Tendd - Off by default. We never sell your data either way.").
A claim beside its own control is not the same object as a claim beside a bar. The bar decorates the sentence. The control lets a person check it, which is what the heading of the block claims is happening.
No new strings. Every word in every proof is already in voice/docs/microcopy.md under the screen it comes from, and the four claims themselves did not move a comma.
Anatomy
.lp-factsits own grid and not.grid, for the reason landing steps and landing paths each give for theirs:.gridfits as many equal columns as it can, and these four are not equal. Three bands past the tablet point - the claim with the ledger, the two short claims paired, the claim with the control - and one column below it.lp-factone claim. Not a card: a hollow in the band, no border and no shadow, because the fill change is the edge and a well is below the surface rather than above it..anchorand.wideare the two that take the whole measure.fmarkthe shield, on the anchor and nowhere else. 28px, the geometry of a mark, which is neither a margin nor a gap and so is not on the spacing scale - the same reading the trust block's own 15px takes.fdemothe proof: paper inside the hollow, the real object at the real size on the ground it has everywhere else in the product.margin-top: autoputs it on the floor of a panel a grid row has stretched
Limits
The panel is recessed and the proof inside it is paper, which is the ground inverted on purpose. This section is one of the two bands standing on --bg-surface, so a white card here would be a white card on white and the hairline would be doing all the work. Sunk into the band, the panel is a held space and the real object rises back out of it. It is the one place in this system where the inner box is lighter than the outer one, and the band is the reason. In the dark theme the pair swaps by itself, because --bg-recessed is lighter than --bg-surface there; the proof still reads as its own object, on its hairline.
One petrol mark, and it is the third of petrol's jobs rather than a new one. D-Concept spends the accent on the primary action, the current selection, the trust line and, since D-Plot on 2026-08-18, the plotted line, and this is the trust line's own block: the trust block paints exactly this shield in exactly this role on eleven grey pages and ten coloured ones. It stands on the anchor, the read-only claim, because that is the claim the other three rest on. Nothing else here is petrol.
The Plaid claim carries no proof and that is the decision, not an omission. What would prove it is the bank's own sign-in, and connect-bank.html has said since it was drawn that we do not design that screen and would be lying to draw it. A block about honesty does not open with an invented screenshot of somebody else's product. So the claim stands on its sentence, one step larger - and the rule that does it is :not(:has(.fdemo)), which states the thought rather than a class: a claim with nothing to show says it louder.
It was also centred in its panel until 2026-08-16, and the founder's pass over the page took the centring off. The argument for it was real: beside a claim that has a control under it, a claim made only of words is the shorter box, a grid row stretches it to match, and left at the top it would read as a panel someone forgot to finish. What that does not price is the row. Centring one panel puts its heading below its neighbour's: measured at 1440, this claim's heading started 60px into its panel and "You are in control" 24px into its own, a 36px stagger between two headings on one line, 24px at 1000 and 8px at 760. Two headings in a row landing on two different lines is a first order signal and reads as a mistake; trailing air inside one panel is a second order one and reads as room. The panel bottoms align either way.
Nothing in a proof is a target, and it takes two attributes and a declaration to mean it. aria-hidden keeps the proof out of the reading order, because every word in it is already said by the claim above it or belongs to another screen. inert is the half aria-hidden cannot do: the preference is a real input, and an aria-hidden subtree with something focusable in it is a defect in the accessible tree rather than a decoration. pointer-events: none answers the pointer for the whole box at once instead of repainting the button and the row that live in it. Measured at 20 widths in both themes: zero focusable elements inside any proof.
Measured and rejected: the anchor standing the full height of the two claims beside it. It is the more interesting shape and it does not survive the content - at 1440 the two short claims came to 520px against the anchor's 345, so the ledger, pinned to the floor of a stretched panel, sat under 175px of nothing. A hole is not air. Filling it would have meant inventing a third source for the ledger or padding the claim with a sentence the product does not say, and both are worse than a calmer grid.
The gap between the sentence and its proof was 24px in the file and 0 on the screen, at every width, for as long as the rule existed. Founder, on a phone: the distances from the text to the block are flush. .fdemo declared margin-top: var(--space-24) and the very next rule gave :last-child an auto top margin - the proof is the last child in all three cards that carry one, so the 24 was overwritten every time. An auto margin in a flex column is whatever free space is left, and a card exactly as tall as its contents has none, so the used value was 0. Read at nine widths from 320 to 1920: 0px on all three cards at every one of them. It survived because at the desk the two full-measure cards put their proof BESIDE the text, where there is no seam to look at, and the third card is short enough that nobody reads its bottom edge as tight.
An auto margin cannot carry a minimum, so the minimum comes from the other side of the seam. The sentence pays it - .lp-fact:has(.fdemo) > p - and the proof keeps the auto that pushes it to the floor of a card stretched by its neighbour: whichever is larger wins, which is what the two rules together were always meant to say. Scoped with :has() because the one claim with nothing to show ends on its sentence, and a bottom margin on the last thing in that card is 24px of nothing; and given back inside the desktop block, where the proof is beside the text rather than under it. Measured after: 24px on all three cards from 320 to 760, and the two-column arrangement identical to the pixel.
The grey changed structure and the decision is written where the rule demands. The wireframe is frozen; the founder's decision of 2026-08-15 is a comment on the section in wireframes/index.html, and _wf.css draws the same four panels and the same three proofs in the grey's own boxes-and-bars vocabulary. Its two-column point is 1000 and not 760, because the grey landing renders inside the review stage: a 900px window leaves the pane 650, measured on the page. Not one word of the block's copy moved.
Where it comes from
Drawn by design/system/components/landing-facts.css through ../system/index.css. It stands on the landing and its grey twin. Ground: docs/decisions.md, D-Concept and the entry of 2026-08-15. Registered in docs/inventory.md and in _nav.js, in the organism group. It hosts the pair list, the button and the switch row with its checkbox, each at the size its own file gives it.