Markos's hero creatives are deliberately message-agnostic: a premium product shot with a built-in dark negative-space zone and no baked-in text. This page proves the other half of the system — the programmatic overlay. Each of the four products (C80, F85, F80, E25) gets a Non-Promo and a Promo version — headlines written by a copy panel and fitted to brand by a UX panel, then rendered from a data object onto the same photo in SOLE's real tokens (Barlow Condensed, red #b21e2d, the production scrim). Promo slides run the SOLE Sale Event as a dated window (the live countdown only switches on in the final 72 hours). Copy here is v2 — revised through an adversarial copy/UX critique and a skeptic adjudication panel. Change the data → change the message. No re-shoot.
sole-2026/sections/hero.liquid — same left-band / bottom-band scrims, same pill buttons, same type scale — scaled with container-query units so what you see is what ships.Select a product to see all of Markos's style options for it (Style 1, 2, 3) — desktop + phone. Toggle the overlay between the evergreen version and a sample promo treatment (illustrative dates — the real ones come from the promotion metaobject). Click any preview to enlarge it.
The same message-agnostic system, recomposed for paid placements. Meta 1:1 and 4:5 double as PMax Square 1200×1200 and Vertical 960×1200 — identical aspect ratios, so one canvas serves both channels. Meta 9:16 and PMax Horizontal 1200×628 we derive ourselves from the heroes above. Production canvases carry no baked text; the demo frames show the type treatment we match programmatically. Click any canvas to enlarge.
In production each overlay is one content object. The creative (photo, focal point, safe-zone, scrim strength) comes from the planned hero_creative metaobject; the message comes from per-slide block settings. Same split you see in this demo.
{
"kind": "product", // product | promo
"eyebrow": "The Flagship",
"heading": "Hotel-Gym Power, Now At Home",
"headingMobile": "Hotel Power, At Home", // ≤5 words
"sub": "Our flagship treadmill — commercial-grade, yours to own.",
"subMobile": "The flagship, yours to own.", // ≤1 line
"badges": ["Lifetime Frame & Motor",
"No Monthly Subscription",
"Commercial-Grade Build"],
"ctas": [{ "label":"Explore the F85", "style":"primary" },
{ "label":"Why Commercial-Grade", "style":"outline" }],
"countdownTo": null // promo → July 19 deadline
}
hero_creative (metaobject) ├─ desktop_image / mobile_image ├─ focal_x / focal_y → object-position ├─ safe_zone left | bottom └─ scrim_strength light|med|heavy slide block (section settings) ├─ heading / subheading ├─ badge1..3 / show_badges ├─ cta1 / cta2 (text) └─ is_promo_slide → promotion SSOT
promotion metaobject (the weekly-promo single-source-of-truth that already drives the announcement bar) — a slide flagged is_promo_slide pulls its headline, countdown deadline and CTA from there. Nothing new to wire per promo.Every hero on this page is tagged with how its imagery was produced. AI is fine where we have strong source files to work from — this section makes it explicit which is which, so nothing gets shipped on an assumption.
| Tag | Meaning |
|---|---|
| Studio | Real studio photography, cropped to the hero ratio. No generative edit. |
| Studio + AI | A real photograph is the base. AI extended the canvas to build the copy-safe zone, or edited a detail inside the frame. The product itself is photographed. |
| AI Generated | Generated, with no source photograph referenced in the layer name. The product shown has not been verified against a real unit. |
| Model | S1 desk | S1 mob | S2 desk | S2 mob | S3 desk | S3 mob |
|---|---|---|---|---|---|---|
| C80 | Studio | Studio | Studio + AI | Studio + AI | AI Generated | AI Generated* |
| F85 | Studio | Studio | Studio | Studio | Studio | Studio |
| F80 | Studio | Studio | Studio + AI | Studio + AI | Studio + AI | Studio + AI |
| E25 | Studio | Studio | Studio | Studio + AI | Studio + AI | Studio |
| F89 | AI Generated | AI Generated* | AI Generated | Studio | AI Generated | Studio |
| E98 | AI Generated | Studio | AI Generated | Studio | AI Generated | AI Generated* |
| LCR | AI Generated | AI Generated* | AI Generated* | AI Generated | AI Generated* | Studio + AI* |
| F83 new | Studio + AI | Studio + AI* | Studio + AI | Studio + AI | Studio + AI | Studio + AI* |
| F63 new | Studio + AI | Studio + AI* | Studio + AI | Studio | Studio + AI | Studio + AI* |
| F65 new | Studio + AI | Studio + AI* | AI Generated* | Studio + AI | Studio + AI | Studio + AI |
| E20 new | Studio + AI | Studio + AI* | Studio + AI* | Studio + AI | Studio + AI* | Studio + AI* |
* the frame stacks more than one image layer, so which one renders can’t be read from the file metadata — treat the tag as provisional and confirm with the designer.
SOLE HOMEPAGE - HERO IMAGE, cross-checked against the 2026 marketing-asset
tracker. Where a layer records the generation prompt, it is quoted under the creative.
C80 Style 2 is tagged from the designer’s own confirmation that it is a real photo
expanded to 21:9.Pick any product above and switch the toggle to Free Shipping Week. Every hero re-dresses into the FSW treatment — accent eyebrow, product headline, the shipping value as a red badge, three vetted spec lines, a live countdown, and the expiry stated in words.
| Model | Shipping value | Live stock | Lead spec |
|---|---|---|---|
| F89 | $99.99 | in stock | 4.0 HP motor · 375 lb capacity |
| F85 | $99.99 | out of stock | 3.5 HP motor · 350 lb capacity |
| F83 | $99.99 | in stock | 3.5 HP motor · 350 lb capacity |
| F80 | $99.99 | out of stock | 3.25 HP motor · 350 lb capacity |
| F65 | $99.99 | out of stock | 3.25 HP motor · 350 lb capacity |
| F63 | $49.99 | in stock | 3.0 HP motor · 325 lb capacity |
| C80 | no SHIP tag on the live product | in stock | Self-powered curved deck |
| E98 | $99.99 | in stock | 20" stride · 400 lb capacity |
| E25 | no SHIP tag on the live product | in stock | 20" stride · 350 lb capacity |
| E20 | $49.99 | in stock | 18" stride · 300 lb capacity |
| LCR | $49.99 | in stock | 40 magnetic resistance levels · 31 lb flywheel |
SOLE Free Shipping Week – Designer Brief – July 2026: free-shipping framing only,
no product prices, no discounts, no strikethroughs, no “Save $” badges — the red badge shows the
shipping value that’s now free, never a product price. “HP” never “CHP”;
“heavy-duty frame” never “commercial-grade”; LCR is a recumbent bike, never a rower;
no competitor or comparison blocks. Specs are pulled from the canonical catalog data store
(all high-confidence), and shipping values plus stock status were read from the live storefront
on Aug 17 2026.SHIP tag, but their live curbside rates are
$99.99 and $49.99 and both ribbons now state them.)
2. F85, F80 and F65 are out of stock on the live storefront right now — they should
probably not hero a promo.
3. LCR ships $49.99 per the live tag, but the July 2026 FSW brief ran it at $99.99
after a QA correction. The live store is the tiebreaker here, so $49.99 is what’s shown — worth
confirming which is right.| Copy budget | Desktop | Mobile |
|---|---|---|
| H1 | ≤ 6 words / 2 lines | ≤ 5 words / 2 lines |
| Subhead | ≤ 2 lines | ≤ 1 line |
| Badges | ≤ 3 | wrap / optional |
| CTAs | ≤ 2 | 1 primary |
| Contract | Value |
|---|---|
| Copy-zone luminance | ≤ 0.175 (white text reads unaided) |
| Overlay copy color | White only |
Red #b21e2d | Accent / fills only — never a flat field |
| Safe zone | Desktop = left band · Mobile = bottom band |