Landing hero
The first card: the promise on the left, the clear column beside it where the fourteen float, and the world's canvas over the whole card.
Since Light 2
Synced from the product, 2026-09-30 (P16). The hero is a box again, and a card. The round window of D-Hero, the orbit that held the promise in .osay, is gone with landing-orbit.css; the promise stands in the left column of the first card, and the right column is left clear for the fourteen marks, which the world's WebGL canvas floats there and later eats into the whirlpool of the story. The canvas is fixed and transparent, above the paper of every card and below every word.
Two lines wherever the hero has two columns (the founder, 2026-09-27, P17): "See what you're" over "paying for. Calmly.". The size follows the body container at 5% of its width, up to 4.4rem, so a scrollbar coming or going moves nothing.
Live below, rendered by the real css inside a .landing pinned to data-theme="light", white in the dark stand too, as node 1.1 is for a person who chose dark in Settings (P16).
For people who are not into finance
Tendd shows every subscription and recurring charge in one calm view, so you always know what is going out. No spreadsheets, no judgment, no surprises.
No bank connection needed to start. Read-only, we cannot move your money.
.lp-world-cardthe first card, with a petrol aura on its paper under the canvas.lp-hero-inthe grid: copy 1.12 to the clear column 1, the height of the window (the stand gives it its content's height, _page.css).lp-hero-copythe eyebrow, the heading.lp-hero-h(the page's h1; an h2 on this stand, which has its own), the lede,.lp-hero-btnswith the swap button and the ghost, and.lp-trustlinewith the petrol lock.lp-hfthe four lines that follow the heading in, at 0, 620, 760 and 880ms after the curtain lifts; hidden only under.lp-js.lp-unithe clear column the world floats the icons in..lp-nfinside it holds them as still images when there is no WebGL (.landing.lp-nogl).lp-worldthe fixed canvas (three.js),aria-hidden, no pointer events
The empty column is honest. What fills it on the landing is the WebGL world, and the still fallback is drawn by the page script at measured places. Neither runs on a stand, so the column stands clear, which is what it is for.
Behaviour on width
One registered point, 47.5rem: below it one column, the promise first and the icons under the buttons (round two, note 36), the heading at clamp(2.1rem, 9.3vw, 3rem), and the aura moves under the fold. Under 40rem the two buttons stack at full width.
--type-hero is no longer spent here. The heading sizes itself from the container (5cqi, capped by the window's height and by 4.4rem), because the page is the one fluid surface and its sizes are literals of that page (landing-shell.css). The measure is 8.6em on the heading and 34ch on the lede.
What it was, until 2026-09-26
Synced from the product, 2026-09-30 (P16). This section and every one after it, down to "Where it comes from", describe this component as it stood before Light 2 replaced the public page on 2026-09-26. Its classes then were .lp-h1 and .lp-lead, two type roles and no box, placed inside the orbit's .osay; the link it gave to the orbit's page is removed with that page. None of it is a present-tense claim about the product any more; what is true now is Since Light 2 above. It is kept as the record, because a stand amends its history and does not delete it.
It was two columns until 2026-08-14, and the founder took the second one away. The right column held a card with the example total and a field of fourteen drifting merchants: the proof, standing beside the claim. It read flat, and the reason is structural. A proof pinned in a box next to the promise is a screenshot of the argument. The same fourteen, given a stage of their own directly below and allowed to gather into the list while the reader scrolls, is the argument happening. So the hero makes the claim alone and hands the proof to the landing story. A structure change to a frozen file, written into wireframes/index.html at the block it changes and recorded as D-Hero.
It was centred until 2026-08-15, and then it stopped being a block at all. The argument for centring was real while it held: a centred headline, one paragraph and two buttons is what an opening looks like, and it puts the eye in the middle of the screen where the story that follows is going to happen. The founder chose the other hero - the landing orbit (its page was removed on 2026-09-30 with landing-orbit.css, P16), the round window - and there the promise is not centred and not a block: it holds the LEFT edge, inside .osay, as the first thing one pinned section says before it hands the screen to the window. Three rules were deleted, not moved: .lp-hero > .lp-wrap, .lp-hero .actions and .lp-hero > .lp-wrap > .muted matched a class no page writes in either corpus any more.
What is left is exactly what is still rendered. .lp-h1 and .lp-lead, both inside .osay on the landing and in the grey. That is the whole component now: two type roles and no box. The eyebrow, the actions and the reassurance line are still on the page, word for word, but they are placed by the orbit, which is the block that owns where they stand.
Anatomy, until 2026-09-26
.lp-h1the one place--type-herois spent. Tracked in, because at this size the default fitting opens up and a headline set loose reads as a poster rather than as a sentence somebody means.lp-leadthe promise in one sentence, at the reading measure
Behaviour on width
No point of its own, and no box to have one. The only thing that changes across the range is the headline, which is fluid in the token rather than stepped here. The 47.5rem rule that made it two columns went with the panel on 2026-08-14; the centred column itself went with the hero on 2026-08-15.
Limits, until 2026-09-26
The headline's measure is 14ch and not --container-text, and it is the one width this file sets. 52ch is a reading measure, for prose a person works through; a headline is read in one glance and wants to break where the sentence does. 14ch puts "See what you're paying for." on its own lines and "Calmly." alone underneath.
The headline is fluid, and it was not at first. The token was written as a flat 3.5rem with a comment refusing fluid on the ground that there was no content reason. There was: at a fixed 56px the headline ran to four lines at 390 and pushed the lead, both buttons and the whole proof panel below the fold. A headline that pushes its own call to action off the screen is not a headline. Measured after: 42px at 390, 52 at the tablet point, 56 from about 920 up.
Where it comes from
Drawn by design/system/components/landing-hero.css through ../system/index.css, the same entry point a product screen loads, and synced byte for byte from the product on 2026-09-30. It stands on the coloured landing, as its first card. The grey wireframes/index.html is frozen at the structure before Light 2 and does not carry it: a component that arrived with a founder's decision after the grey closed, like the brand mark before it. Registered in docs/inventory.md and in _nav.js, in the organism group.