The long table at the old print works
8 min from Harbor Station, north exit
Every component below is built by the skill's patterns.md, rendered live. Steal them.
Neutral tokens on purpose: ground #F2F3F0, ink #22261F, one accent #31564A, Spectral over Archivo. The point is the system, not a brand.
The evidence row: counted facts with hairline separators, no adjectives anywhere near it.
Specificity is the luxury signal. Replace one adjective with one number and the page gets more premium with zero CSS changes.
Provenance chips say where a fact came from. Availability chips say what is left, in numbers.
Only the real thing gets the accent border. The live dot may mount only on genuinely live data, one halo per screen, never on hover.
Category, availability, title, one metadata line, then the transit fact. Mostly information, which is why it survives being seen fifty times.
8 min from Harbor Station, north exit
Every field is a real fact. If a card needs a paragraph, the card is a page.
Real figures at display size over tracked micro labels, tabular numerals throughout. They count up once, and hold still under reduced motion.
Counted from the database as the page is built, not written by hand.
Depth does the sorting: the active tile lifts, its neighbours settle back and desaturate. A peeking card, an edge fade, and a swipe cue announce the scroll.
Disclosure beats rendering seventeen.
The fade shows only while content is genuinely off screen. A rail of one never gets dressed up as a scrollable list.
Three to five destinations, icon plus label, safe-area padded. The single change that makes a web page feel like an app.
In a real build the bar is position fixed, --tabbar-h is a token, and every scroll container clears it. Here it sits inside the frame so this page keeps one interaction model.
The spotlight cutout: a dimmed scrim with a hole punched over the thing being explained. Shown once, and the copy teaches trust, not buttons.
The dates and the places left are counted out of the database as the page is built, not written by hand. When a table fills, this number drops.
The dates and the places left are counted out of the database as the page is built, not written by hand. When a table fills, this number drops. (Static preview: the live overlay needs JavaScript.)
Exactly three steps in a real build. Store the dismissal in localStorage and check it before navigating, so every screenshot run can skip it.
Detail stays in place: a sheet instead of a navigation round trip. Esc or the backdrop closes it, and focus comes straight back.
Nothing is charged until the host confirms, usually within the hour.
One commit action, full width, 48px tall, and one line of reassurance under it. Never two action bars.
A tracked label, a 48px input, and one line that says why we ask. Fields that explain themselves get filled in.
Why we ask: your table host texts you only if the venue or the time changes. Never marketing.
The same job, twice. One button begs, the other states.
The gradient pill is guessable from the category name, which is the definition of slop. The block button is the maximum-contrast object on the page, states the action, and appears once per screen.
Nothing is charged until the host confirms, usually within the hour.