Organism
Rail foot
The line that closes a record. 5 instances across 5 screens, at the bottom of frame.
Zero zones, and that is why it is not a variant of rail. The head rail has three: the marking, its qualifier and the way out. This has one text node and no way out, because there is nothing below a record to leave to. A zone that disappeared means a different component, which is the splitting criterion the whole register runs on, and this is the clearest instance of it in the system.
It closes the frame rather than opening it. Static, not sticky. Quiet, not inverted. Sentence case at weight 400 in mono, on the raised plane, under a 2px line. It says what the record is and stops.
Anatomy
What the bench is standing in. A frame, whole, in the column z4 gives it on the entry route. This bench does not scroll, and that is deliberate: a closing line put below the fold of its own page is a component the reader has to go looking for. Static is still a decision, and it is drawn where the argument is, on the rail page, where the marking stays put while everything under it moves.
.rail-footthe line, and the whole component. A wrapping flex row aligned on the baseline, three steps of gap between items it does not have
position:staticdeclared rather than left out. Written down because its neighbour is sticky, and a property that carries an argument is a property that is said out loud
border-top2px of --line-record, the same ink as the frame around it, so the record closes on the line it was drawn in
- the sentencemono at
--size-sm, weight 400, sentence case, no tracking, secondary ink. Every one of those five is the opposite of the head rail, and together they are the reason a reader never mistakes one for the other
The file’s own header names --text-primary for that 2px line and the declaration reads --line-record. The readout at the bottom of this page is computed off the declaration by the browser, so what is on this page is what is painted. The header is recorded as a contradiction rather than corrected here.
Variants
| Axis | Value | Uses | The rule |
| none | no values | 5 | All five are the same line with the same sentence, and the timestamp inside it is content |
| position | no values | – | Prohibited. A sticky closing line would be a bar that says the record has ended, floating over the part of it you are still reading |
| emphasis | no values | – | Prohibited, and this is the axis somebody will reach for. An inverted foot would match the head and read as a second opening. The record is marked once, at the top, and closed once, quietly |
| content | no values | – | It has no way out and it never gets one. Adding a link here is what would make it a variant of rail, and the whole reason this file exists is that it is not |
It was .rail.rail--foot on the screens, which is to say one name in the markup standing for two components. Step 2 ruled the split on the zone count and step 6 executed it: the five records carry rail-foot now, and not one pixel moved. The reconciliation table in docs/inventory.md carries the row.
When to use it
As the last child of a frame, once, and never anywhere else. If a surface wants a closing line and is not a record, it does not want this: nothing else in the product is marked on all four sides.
Where she meets it. Almost never, and that is the point. This line is for the person who was not in the room: a client reading a summary, an auditor reading an exported entry months later. It answers the one question that reader has at the bottom of a page they did not ask for, which is whether there is more below and whether any of it can be changed. Nothing on this page can be edited is a compliance sentence, and the append only log behind it is the requirement that shaped the whole design.
Rule and anti-rule
Do
One sentence, quiet, under the record’s own line. It says where the record ends and what it is, and offers nothing, because there is nothing below a record to go to.
Do not
END OF THE RECORD
2026-08-22T04:14:05ZNothing below this line can be edited.Open the log
Never the inverted form at the bottom. That is rail, and it opens a record rather than closing one: a second full width inversion reads as a second document starting, and the way out at the end is a control offered after the reader has already left.
States
None, and there is nothing on it that could take one. No link, no control, no hover, and no child that has any. The head rail at least has a way out to point at; this has one text node.
The two above are the same component with two sentences. Which sentence a record gets is decided by what the record is, and four of the five screens carry a qualified one.
The 2px is the fourth line width in the product with no token, alongside the focus ring, the alert toast and the current navigation item. Whether that is a fourth line token or four component decisions is the open row on the geometry page, and it is answered with the count in front of it rather than by adding a token here.
At 360 nothing changes. The row wraps, which for a component with one item means the sentence simply runs to more lines, and --width-frame gives way to the screen.
What it reads, and where it stands
| Role | Surface | Where on the component | Dark | Light |
--bg-surface | fill | the ground of the line, one step off the record’s page | | |
--text-secondary | ink 4.5:1 | the sentence | | |
--line-record | line 3:1 | the 2px above it, the same ink the frame is drawn in | | |
--size-sm | geometry | the type size, mono at weight 400. The head rail runs one step smaller at 600 | | |
Copy this
<article class="frame">
<p class="rail">…</p>
<div class="doc">…</div>
<p class="rail-foot">End of the record as it stood 2026-08-22T04:14:05Z.
Nothing below this line, and nothing on this page, can be edited.</p>
</article>
Where it stands