Everything on this page is the Demo Builder's own system, taken from its shared stylesheet
(turbo-it-generate/src/ui-css.js) rather than re-invented: the same palette, the same 40px controls,
the same radii, the same 60px topbar with the gradient rule at half opacity. Copy a block from here into a product
and it will match generate.turboit.uk, because it is the same values.
As shipped: the bare gradient bolt. The builder inlines it as a data URI and uses it for the favicon and the login lockup. No tile, no outline, no shadow.
Two patterns, both the builder's. Login: bolt 38px, "Turbo IT" 15px/600, product name 12px muted underneath. Topbar: bolt 24px, name, 1px divider, product name in muted.
Clear space: a quarter of the mark's height on every side. Minimum 12px for the mono marks, 14px for the gradient. The tile is optional and is not what the builder uses; keep it for a favicon that needs an opaque square, an app icon or an avatar, never as the mark inside a product's own topbar.
ui-css.js, ":root". Two families: neutrals, and four status hues with a fill AND a text variant each.
| Pair | Ratio | Verdict |
|---|---|---|
| foreground on background | 14.80 | AAA |
| muted-foreground on background | 6.15 | AA |
| muted-foreground on card | 6.65 | AA |
| primary-foreground on primary | 4.66 | AA |
| info-fg on its tint over card | 6.10 | AA |
| success-fg on its tint over card | 6.20 | AA |
| destructive-fg on its tint over card | 6.10 | AA |
| warning-fg on its tint over card | 6.60 | AA |
| #f99c00 style warning as text on its own tint | 1.94 | the trap the -fg variants exist for |
| white on the gradient's teal end | 3.50 | never put white text on the gradient |
ui-css.js: the topbar's 2px accent line at 50% opacity, the wordmark lockups, and the progress fill. Nowhere else.
ui-css.js sections 1-2. The system spans 11px to 24px and stops there: there is no 28px or 40px step in the builder, so there is none here.
ui-css.js section 4. 13px/600 labels, 40px fields, 8px radius, and a focus ring of the primary at 18%.
ui-css.js sections 6, 12 and 13. Cards are 12px radius with the warm card shadow; the topbar is 60px with the gradient at 50%.
Body copy inside a card sits at 13px in muted, with 15px/600 for the head.
ui-css.js sections 7 and 8. Every status hue has a fill for the pill and a darker text variant for the words inside it, because the bright fill as 12px text measures 1.94-4.40:1.
ui-css.js sections 9 and 11. 48px rows, 12px heads on the surface colour, hover to muted.
Not in the Demo Builder: this is the hub's destination row, built out of the components above (card row, pill, btn-sm). Section 7 of BRAND.md gives the metrics.
Hover a row: the background goes to muted (the builder's table hover) and the action becomes the primary button with its glow. The action is a fixed 32px .btn-sm, minimum 78px wide, 12px from the row edge, always visible, with a reserved 22px slot before it for a delete button, so a column of rows lines up exactly.
-fg colour for status words, the plain hue for the fill.