The Marble Button System — Specimen

FlowState Logix · Anton's rule, rendered: inside the app, anything that clicks is a shiny marble button — never a naked text link. Every variant from MARBLE-BUTTON-SYSTEM.md, shown in the contexts it will live in. House chrome (Aurora violet working shade #6D54C9 — white label measured 5.58:1) unless a block says otherwise. Font slot is open: this page sets labels in the system font until the font pick binds --btn-font.

1 · Primary marble — the one action per view

Full marble body, 10:30 glint, conic swirl set by the owning number's rotation. Below: every state, side by side. Hover and press the live one.

Try the live cycle — this button fires, works, and confirms on itself (no toast):

Secondary glass — important, not primary

Destructive / sentinel — Argent red, reserved semantics

Sentinel red #C51F32 needs no deepening: white label measures 5.81:1 at full strength. Red as a button body means danger, system-wide — never emphasis, never a brand tint.

2 · Workspace module grid — the launcher tiles

Login spec §8.3 module set. The whole tile is the button — icon-system mark in colour form, name, caption, honest state badge. My Agent is not a tile: it is the docked orb button (bottom right of this block, 56px), one tap from every screen.

The gold orb is My Agent — the four-point star from the icon system — docked, persistent, an orb button before it is anything else.

Toolbar orb icon buttons

3 · Profile header — one primary, glass peers, the number is never a button

Entity-tinted block (sample brand green, working shade #00795C = 5.40:1). The visibility control is a segmented button group — Public / Masked / Private — try it.

Example Surfaces Co · P-4•••••
Partner Line · Active · Number visibility:

4 · Lists act with chips — surfaces & the Number Directory

Rows never carry naked links. A surface row's action is a chip labeled with the destination in language; the shortened URL is caption text, not the label. Directory rows: the masked number is text, Resolve is a chip, and below-tier access is a Locked button that explains itself when tapped.

Sites & surfaces (profile list)

Live siteexamplesurfaces.com
Open site
Booking pagebook.examplesurfaces.com
Open booking
Virtual cardcard.examplesurfaces.com
Open card

Number Directory (Tier-gated)

P-4•••••Partner Line · Masked by owner
P-3•••••Direct · Private — no record shown below Tier 1
Locked — Tier 1 and above. Full records open to house operations and above. Your tier resolves exact numbers and sees your own family in full. Every lookup is written to the audit log. (This explanation is the locked button's job — a locked button that doesn't explain itself is a dead link in costume.)

5 · Forms — one primary, cancel in glass, danger banished

Submit is the form's only Primary, rightmost. Field-level acts are chips. The destructive act lives in its own separated zone, in sentinel.

End this record entirely:

Status finish on buttons — an inactive workspace, lights off

Inactive (not paying) renders matte/dimmed — glint dead, saturation halved — but every button still works. Book a Call stays lit: it is the way back in.

6 · The same buttons on light surfaces

Light panels (print views, embedded cards, the local-models mirror) keep the law: marble bodies, white labels on working shades, and the focus ring flips to void navy so it survives.

Contrast, measured: house primary working shade #6D54C9 + white = 5.58:1 · entity green working shade #00795C + white = 5.40:1 · sentinel #C51F32 + white = 5.81:1 — all WCAG AA for normal text. Raw brand tints (violet 3.79:1, green 2.16:1) never carry a label; the button deepens to the working shade, the orb keeps the true color.

Marble Button System · specimen for MARBLE-BUTTON-SYSTEM.md · FlowState Logix.
QA per spec §8: rendered and read at 1280px and 390px · states shown side by side in block 1 · every hit area ≥ 44px (chips pad to 44) · focus ring chrome on dark, void navy on light · reduced-motion freezes lift, settle, and sweep (loading/success still speak by label). Nothing on this page is a naked link: prose is the only exception class, and this footer is prose.