Nineteen platform · the platform claim, made checkable

One codebase,
two golf courses

Every pair below is the same component, the same content and the same markup rendered twice. The only difference between the left column and the right is a list of CSS custom-property values — printed in full further down, because its shortness is the argument. Nothing is forked, nothing is re-authored, and no screen knows which course it is running as.

Anyone can recolour a header. The reason this is a platform rather than an agency project is the third pair: the golf course itself re-skins. The hole art is drawn from 40 --map-* tokens rather than shipped as fixed artwork, so the turf, the sand, the water and the tree canopy all move with the brand. A vendor whose course graphics are flat images cannot follow a tenant anywhere.

Saguaro Wash Golf Club is fictional. It exists to be as far from Palm Beach National as a golf course plausibly gets — high desert instead of south Florida, so the greens, the sand and the water all had to change rather than just the buttons. Any resemblance to a real club is unintended, and no real second course is named anywhere in this document.

1 · The hole view — G-22

Night register · the hero screen · where the map tokens land

Palm Beach Nationalsouth Florida parkland · navy and red
Saguaro Washfictional high-desert course · clay and teal

2 · Booking — G-12

Day register · the commercial screen

Palm Beach Nationalday register
Saguaro Washday register

3 · The operator's console — C-01

Day register · the screen a shop lives in

Palm Beach National1440 × 900
Saguaro Wash1440 × 900

The whole diff

Brand aliases, two night surfaces, and the map palette. That is the file a second course fills in — no component, no screen and no layout is touched. Every hex below is read out of the live cascade rather than typed, so this table cannot drift from tokens/colors.css the way its first draft did.

Palm Beach National

Saguaro Wash

TokenPalm Beach NationalSaguaro WashReaches
--brand-primaryNav rails, headers, the member card
--brand-secondaryLinks, icons, --map-you
--brand-accentEvery CTA, --map-target
--brand-tintDay tinted surfaces, chips
--brand-muted-interactiveDisabled and low-emphasis interactive
--night-surfaceEvery night card — see the finding below
--night-raisedNight raised surfaces — same finding
--map-fairwayThe turf, and 39 more --map-* values with it
--map-sandBunkers, in both hole space and the green
--map-water-midThe lakes down the right of 7

Deliberately unchanged

Brand expression stops where legibility starts. These stay platform-owned in both columns, which is the promise the second course's owner needs to see kept:

--ok --warn --danger --marker-100 --marker-150 --map-label-solid --map-oob

A tenant cannot re-tint a failure state to its own red, cannot move the US yardage-marker convention, and cannot weaken the opaque capsule that holds carry labels at 18.9:1 over turf, sand and water. The in-round 7:1 floor is a platform guarantee, not a brand preference.

Finding — the swap is not seven tokens, and the comment in colors.css says it is

Building this artifact tested the theming end to end for the first time, and it found a real gap. tokens/colors.css declares the night register as literals under a platform-owned heading:

--night-surface:#0A1428 and --night-raised:#0A2350 are Palm Beach National navy. They are not aliased to --brand-primary, so on the seven-token swap the comment promises, a desert tenant's night screens stay PBN navy — and night is 13 of the 57 built screens, including G-22, the hero.

This artifact repoints them, which is why the right-hand hole view reads as one course rather than two. But that means the tenant contract is nine values plus the map, not seven, and the header comment in colors.css"Swapping a course means re-pointing these seven, nothing else" — is wrong for any tenant whose brand is not navy.

Two ways to close it, and this is a decision rather than a fix: alias the night surfaces to the brand (a course with a pale brand then needs its own dark value anyway, since the 7:1 in-round floor is non-negotiable), or keep them literal and move them out of the night-register block into a named tenant section so the next reader is not misled. Not changed here — it edits the token file every screen depends on, and that is not a change to make inside an argument artifact.

Second finding — content is not theming, and pair 2 shows it

The Saguaro Wash booking screen still says “Joe Lee · 18 holes”, and the console still names PBN's staff and its Bar & Grill. That is correct — those are tenant content, held as data, not colour tokens, and a real second course would supply its own on day one. It is worth stating out loud anyway: this artifact proves the theming reaches everything, not that the copy does. A live second-course build needs a content inventory too, and that work is real even though none of it is design work.

Concept proposal — not an official Palm Beach National product. Saguaro Wash Golf Club is a fictional course invented for this page to illustrate tenant theming; it is not a real club and no real second course is named. Both columns are the live components from ui_kits/, mounted on this page and scaled down — not screenshots, and not re-drawn. Handlers are inert: this is an argument, not a prototype. Screen IDs and tier labels from 02-SCREEN-INVENTORY.md. Every figure visible inside the screens is the sample content already built into those kits; nothing was invented for this page.