Files
design/guidelines/color-surfaces.card.html
zeekayandHanzo Dev 29b214ae90 feat: no gold in Lux — monochrome, and four numbers more severe than hanzo.ai
The CTO reversed the accent: "no gold in lux, only monochrome white and
black, more severe and minimal than hanzo.ai". 0.1.0's archaeology was
real but historical — every live Lux surface had already flattened that
slot to white, and lux.network's repo carries an e2e asserting the page
paints zero pixels in hue band 20-60. 0.1.0 climbed that fence.

--lux-gold is deleted rather than parked. An unused brand-colour token is
exactly what gets re-wired by accident. The light-theme bronze (#7E5A16)
dissolves with it: monochrome has no hue to darken.

Severity is not an adjective here, it is four measured values, each from
@luxfi/[email protected] or from a headless render of the live surfaces:

  ground    #000000  (Hanzo #0a0a0a)   brand surface1, both product configs
  accent    #ffffff  (Hanzo #e4e4e7)   brand accent1 — above the ink, not below
  lift      one      (Hanzo two)       73 cards measured at #0a0a0a
  hairline  .08      (Hanzo .10)       286 of 331 painted edges

Nothing is invented; every value is a rung of the inherited ladder. Only
the decorative boundary was quieted — control, focus, selected and ring
are untouched, because they tell a keyboard user where they are.

Lux also withdraws the fourth permitted hue. --chrome-dot-yellow is hue
45.6, inside the fenced band, so a Lux window mock would have failed
lux.network's e2e having never gone near the gold.

Four things the gate could not see before, each found by adding the check:

  --lux-black was #0A0A0B — Hanzo's press-kit black wearing a Lux name
  after the hanzo- -> lux- rename, and not even grey. It paints the mark.
  assets/brand/hero-visualization.png was a full-spectrum rainbow, 39%
  saturated, in a card captioned "no warm gradients, no illustration
  style". The specimen cards captioned --border as #1f1f1f and --ring as
  #333 beside chips correctly painting the current tokens — fossils of
  the fork. And prompts/system.md still quoted the Hanzo brand hex.

Gate: 26 checks. New — every token resolves achromatic in both themes
except three named signals, each proven outside band 20-60; unreadable
colour syntax fails rather than passes; specimen captions match the
sheet; brand imagery is achromatic (PNG decoded in ~40 lines on
node:zlib, no dependency). The .light rule is now value-shaped — exempt
only if the value is a bare var() onto something that inverts — replacing
a name-shaped --lux-* exemption that existed for a token now deleted.

Verified: build green; the packed tarball rendered headless in both
themes paints 0 saturated pixels of 8,780,800; eight mutations each fail
the build and restore byte-identically.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-05 16:45:11 -07:00

19 lines
1.9 KiB
HTML

<!-- @dsCard group="Colors" viewport="700x150" name="Surfaces" subtitle="Page, card fills and overlay — the whole brand lives here" -->
<!doctype html><html class="dark"><head><meta charset="utf-8"><title>Surfaces</title><link rel="stylesheet" href="../styles.css">
<style>body{margin:0;padding:16px 20px;background:#000;font-family:var(--font-sans);color:var(--foreground)}
.g{display:flex;gap:10px;flex-wrap:wrap}.sw{flex:1;min-width:64px}.chip{height:56px;border-radius:8px;border:1px solid var(--white-10)}
.n{margin-top:6px;font-size:10px;font-weight:600;letter-spacing:.06em;color:var(--neutral-300);font-family:var(--font-mono)}
.v{font-size:9px;color:var(--neutral-600);font-family:var(--font-mono)}
.row{display:flex;align-items:baseline;gap:14px}.mono{font-family:var(--font-mono)}
.meta{font-size:10px;color:var(--neutral-600);font-family:var(--font-mono);white-space:nowrap}
</style></head><body>
<div class="g">
<div class="sw"><div class="chip" style="background:var(--background)"></div><div class="n">--background</div><div class="v">#000000</div></div>
<div class="sw"><div class="chip" style="background:var(--card)"></div><div class="n">--card</div><div class="v">#0a0a0a</div></div>
<div class="sw"><div class="chip" style="background:var(--surface-card)"></div><div class="n">--surface-card</div><div class="v">n-800 / 50%</div></div>
<div class="sw"><div class="chip" style="background:var(--surface-card-emphasis)"></div><div class="n">--surface-card-emphasis</div><div class="v">n-800 / 75%</div></div>
<div class="sw"><div class="chip" style="background:var(--muted)"></div><div class="n">--muted</div><div class="v">#0a0a0a</div></div>
<div class="sw"><div class="chip" style="background:var(--secondary)"></div><div class="n">--secondary</div><div class="v">#262626</div></div>
</div>
<div class="meta" style="margin-top:10px">three rungs, not four — --card, --muted and --popover are the same lift</div>
</body></html>