Colors
Sqrl palette: warm paper, one brand green, stone neutrals, and named status/accent hues. Swatches below; when to use which → Rules.
Green
Brand scale. green-600 is Bootstrap primary; green-700 maps to success / default links.
Stone
Warm neutrals — all text and borders tint from stone-900. stone-100 is Bootstrap secondary (subtle fills), not terracotta.
Status
Semantic fills for badges, alerts, and banners (text-bg-*). Each tone has matching -subtle / border tokens in the theme. text-bg-neutral / alert-neutral are Sqrl custom — Bootstrap has no neutral color.
Accents
Named hues for charts and highlights — not status. Utilities: text-accent-*, bg-accent-*, text-bg-accent-*, border-accent-*. Azure is info, not an accent.
Surfaces
Layout backgrounds and elevation. Use bg-surface-* utilities (bg-surface-app, bg-surface-page, bg-surface-card, …) or var(--sq-surface-*). Inputs use surface-card (same family as cards). Cards use shadow, not border, unless the surface matches — then card-bordered.
Rules
Palette
- Warm, low-chroma paper UI with one saturated brand green. Stone is the secondary action colour — not terracotta.
- Colour never carries meaning alone — pair with a dot, icon, or word (Iconography, badges, alerts).
Bootstrap mapping
- Primary →
green-600(btn-primary,bg-primary, focus rings, selection). - Success / link hover →
green-700(text-success,text-bg-success, links). - Secondary →
stone-100(bg-secondary, subtle chips) — not terracotta. - Dark / strong UI →
stone-900(bg-dark, body text, scope bar, active pagination/pills). - Neutral →
stone-700— Sqrl custom utilities:text-neutral,bg-neutral,text-bg-neutral,bg-neutral-subtle(Bootstrap has noneutral). - Info →
azure-600(text-bg-info) — not an accent. - Warning / danger →
ochre-600/crimson-600. - Accents →
teal,terracotta,slate,taupe,violet— highlights and charts only; never primary actions orbtn-secondary.
Surfaces & text
- Surface utilities —
bg-surface-app,bg-surface-page,bg-surface-card,bg-surface-raised,bg-surface-code,bg-surface-sunken,bg-surface-paper,bg-surface-hover,bg-surface-active,bg-surface-selected,bg-surface-overlay(also--sq-surface-*on:root).surface-paper=stone-50. - App background (
surface-app) wraps the UI; work panel (surface-page) sits raised inside it — see Layout. - Cards on
surface-cardwith shadow;card-borderedwhen adjacent surfaces match. - Inputs use
surface-card($input-bg).stone-whiteis inverse text on dark UI only. - Body
stone-900, mutedstone-700, tertiarystone-600(text-body-tertiary).