Every canvas below is drawn by lib/share/flex-card.ts, the same module the app runs,
transpiled straight into this page. This is not a picture of the poster — it is the
poster, at its real 1080 × 1350 and scaled down by CSS. Right-click and save one; that file
is byte-for-byte what Download the image produces.
Ink — the default. The licensed neon spent as light rather than as a line, in the half of the frame the type leaves open.
Noir — the plainest ground. Nothing but a slight lift top to bottom, so the type does all of the work.
Clay — the brand’s own terracotta deepened until it is a ground rather than an accent.
Slate — a hairline grid, so the open half has a texture at thumbnail size instead of reading as a void.
The widest figure and the longest name — $104,182.60 is the number the in-page card’s type was measured against, and the name is the full 22-character cap. Both are shrunk to fit; neither wraps.
Story, 1080 × 1920 — the same stack, 12% larger type, and a much bigger window. On a story that space is not dead: a story IS an image with a caption at the foot, and this is the shape that idiom has.
Wide, 1600 × 900 — the founder’s Terminal reference, and what embeds in an X post. Type scales down to 0.72 because 900px of height is the binding constraint; the 1376px column is why the widest figure is the one figure here that never has to shrink.
Zero, and no name — reachable only for a reseller every commission of whose a dispute reversed. No plus sign: +$0.00 would claim a gain that did not happen. The name line is absent rather than a placeholder, and the money does not move, because the layout is anchored to the foot.
The in-page share card is warm paper with a #00853a figure. This is near-black with
#2bff88. That is one design in two skins, not two designs: the same hue at 146°, at
whichever lightness its ground can carry. #2bff88 measures 1.33:1 on white
and 14.17:1 on #111, so on paper the neon the founder licensed is not dim, it is
invisible — and this poster is the surface that can finally spend it.
The larger reason is the background. The poster sits on a picture the reseller chose and nobody
at Kudaro looks at, so legibility cannot be a property of the picture — it has to be a property of
the generator. Two scrim alphas do that: over a pure white upload, the worst case there is,
the type still lands on #202020 — 12.2:1 for the neon and 15.4:1
for the warm white. Both numbers are recomputed from the module's own constants in
__tests__/reseller.flex-card.test.ts, so the comment and the code cannot drift apart.
1080 × 1350, 4:5. The tallest frame a feed shows uncropped. A 9:16 poster is centre-cropped to 4:5 in an Instagram feed, and the two things a centre crop eats here are the wordmark at the top and the stats row at the bottom — the brand and the proof. The reverse does not happen: a 4:5 image dropped into a story is letterboxed, not cropped. 4:5 survives both destinations; 9:16 survives one.
The controls. In the app the poster is wrapped by a name field, the four-swatch background strip, an upload slot and Download / Copy buttons — React, and not what is under review here. The uploaded-image case is also absent for an honest reason: there is no file to upload in a static page, and inventing a stock photograph to stand in for the reseller's meme would be showing a composition nobody will ever post.