Locked list

The subscriptions a free bank scan found and did not name, said once. D-Gate: a free person's first bank scan returns the count, the total and three names, and everything else is counted in the total and unnamed until Tendd Pro. Since P31 the unnamed ones are not drawn as rows at all: one block under the named list says how many, what they add up to, and two ways on.

Molecule2 screensadded 2026-09-02, rebuilt 2026-09-29 (P31, P33, P34)1 role token of its ownone slow float, stopped by reduced motion

Anatomy

Synced from the product, 2026-09-30 (P31, P34). Two objects in one file, and since 2026-09-29 only one of them stands on a screen. The block, .locked-note, is the one place the withheld rows appear: a free scan keeps no name it does not show (P31), so a row would be a placeholder for nothing, and the figures at the top of the screen already count them. The row, .row.is-locked with its slot, is still in the css and is shown further down as what it is: a form the file draws and no screen wears.

The block speaks the public page's language (P34, the founder: "как на хоумпейдж, там более визуально красиво"): the dotted eyebrow, the count as the stat card's figure, the row of squares, the hero's floating tiles as a small stage, the landing's shadows and 24px radius, and its pill buttons with the travelling arrow. Past the desktop point on a wide screen the words stand left and the stage right; on a phone, and on the reveal at every width, the stage comes first.

Home, the wide form

Tendd Pro

You have 11 more subscriptions

$138.93 a month, already counted in your total.

Tendd found them in your bank. Tendd Pro shows every name, or you can add the ones you know yourself.

Choose Tendd Pro before Sep 6 and Tendd names them straight away, without asking your bank again.

The stage is 926px wide past a 1280 window, so the block's 900 query fires and it takes its two columns; at a phone width the same markup stacks, stage first. Switch the theme in the panel: every paint is a role, and the shadows are shares of --tone-shade and petrol through color-mix, so the dark half costs nothing of its own.

The reveal, the flow form

Tendd Pro

You have 11 more subscriptions

Tendd found them in your bank. Tendd Pro shows every name, or you can add the ones you know yourself.

Choose Tendd Pro before Sep 6 and Tendd names them straight away, without asking your bank again.

The same block with two things left out, both by D1: no sum line, and no amount in the glass chips, because on the reveal the number comes third and step 2 carries none. The flow form is one reading column at every width, so .app:not(.flow) keeps the two-column arrangement off it even on this wide stage.

Behaviour at width

Synced from the product, 2026-09-30 (P33, P34). This said "none of its own", which was true while the component was a row modifier and a sentence. The block has one point now, the desktop one: past container 56.25rem (900px), and outside .app.flow, the words and the stage stand side by side with the stage second. app-shell.css gives it order: 3 on a screen whose layout is the groups column set (P31), the groups' own slot and later in the DOM, so it follows the list it completes; it had no order and printed above the summary at 1280 until that line was written.

Variants and sizes

One block, two contents. On Free it sells the plan. On Pro, for somebody who paid before their bank was read again, the rows are still nameless and what names them is a read of the bank, not a plan, so the same block says that and offers the bank door. The words are microcopy's rows home-pro-unnamed.

Tendd Pro

You have 11 more subscriptions

$138.93 a month, already counted in your total.

They came from your free bank scan, which keeps no names. Connect your bank again and Tendd names every one.

ScreenWhere it standsWhat is free above it
Guided reveal, step 2Under the named rows, the end of the step. No sum line and no amounts in the chips (D1)The count, the categories and three of the names
HomeAfter the named groups, before the trust line; order: 3 past 900The count, the monthly total, every category subtotal, which all include the unnamed rows

Two screens is a component and three would be a pattern. Rule 7, and it is the reason this is one css file in components/ rather than something in patterns/. If a third screen ever wears it, the composition moves and this file stays where it is.

When to use it

Only where the rows are really there and really counted. That is the whole honesty of the object: the total above it includes every unnamed row, the category counts include them, and the sum line says so in so many words. A block over rows that were excluded from the total would be the product inventing a number to sell the answer to, which is the frame voice.md forbids by name.

It is never the first thing on a screen. D-Gate put the gate inside step 2 of the reveal and on a populated Home, both times after the count and the total have already been given away. A lock at the door is a paywall pretending to be a product, and the founder chose this shape over marking the door Pro precisely so that a person sees something true before they are asked for anything.

And it is a state and never a screen. D3 as amended on 2026-08-20 says the plans are one product, not two, with no Pro twin of a screen. There is no locked Home; there is Home, ending in this block. The moment the rows are named, the block is simply not drawn, and no route changes.

The row form, drawn by the css and worn by no screen

Synced from the product, 2026-09-30 (P31). Until 2026-09-29 a withheld row stood in its category as a .row.is-locked with a grey bar for a name, carrying "Shown with Tendd Pro" as its accessible label. P31 removed it from both screens (microcopy's rewrite log: "a row with no name and no logo is a hole in a list whose promise is names"). The rules are still in locked-list.css, so the form is shown here as what the file draws, and the anti-rule under it still holds for any future row.

  • Netflixin 2 days · Aug 3$17.99
  • in 11 days · Aug 12$13.99
  • in 19 days · Aug 20$14.99
  • in 24 days · Aug 25$7.99

One form, three widths, no other axis. There is no small locked row and no loud one. The three width classes are not sizes, they are a way of not looking like a redaction, and which one a row gets is arbitrary by design: nothing about the withheld name may be inferable from the bar, including its length.

The rule, and the anti-rule

Keep no name you do not show
  • in 11 days · Aug 12$13.99

The server sends no name, and since P31 it stores none: a free scan clears the name of every row it withholds straight after the read. The amount and the date are true, and there is nothing behind the bar to uncover.

Never blur the real name
  • Spotify Premiumin 4 days · Aug 5$11.99

This is what "hidden but visible" usually means, and it was the first sketch. A blur is paint. The text stays in the document, an inspector reads all eleven names in a second, and the gate becomes a decoration that a right-click defeats. The one blur this component owns is on the out-of-focus tile t3, which carries no text at all.

One block, after the list

Tendd Pro

You have 11 more subscriptions

Tendd found them in your bank. Tendd Pro shows every name, or you can add the ones you know yourself.

The words say what IS on the list and two ways on, and the free one is real, which is what keeps the offer from being a wall. "You have", not "There are": they are the person's.

Never a skeleton

A skeleton pulses, and a bar that breathes says "wait" to a person who has nothing to wait for. Loading and locked must not look the same: one resolves by itself in a second and the other never resolves without a decision. That is why --bg-withheld exists beside --bg-placeholder at the same value.

Limits

Lives in system/components/locked-list.css. Its row in the system is in kit/docs/inventory.md, and the decisions under it are D-Gate (2026-09-02), P31, P32, P33 and P34 (2026-09-29) in docs/decisions.md.

<section class="locked-note"> <div class="stage" aria-hidden="true"> <span class="tile t1"></span><span class="tile t2"></span><span class="tile t3"></span> <span class="float f1"><strong>$13.99</strong>in 11 days &middot; Aug 12</span> <span class="float f2"><strong>$14.99</strong>in 19 days &middot; Aug 20</span> <span class="float f3"><strong>$7.99</strong>in 24 days &middot; Aug 25</span> </div> <div class="copy"> <p class="eyebrow">Tendd Pro</p> <h3><span class="pre">You have</span> <span class="fig">11</span> <span class="unit">more subscriptions</span></h3> <p class="sum"><strong>$138.93 a month</strong>, already counted in your total.</p> <span class="squares" aria-hidden="true"><i class="on"></i>...<i></i></span> <p>Tendd found them in your bank. Tendd Pro shows every name, or you can add the ones you know yourself.</p> <div class="actions"> <a class="btn primary pill go" href="upgrade.html">Get Tendd Pro</a> <a class="btn pill" href="add-subscription.html">Add them yourself</a> </div> </div> </section>