Docs/Theming

Theming

All visual decisions in nosible-ux are CSS custom properties — override any token to match your product without forking components.

Colour Palette

The brand palette is fixed — use Neo Green sparingly (≤ 10% of any surface).

SwatchTokenValueRoleTailwind class
--c-obsidian#0E0E10Primary dark backgroundbg-obsidian
--c-slate-core#1F1F23Elevated surfacebg-slatecore
--c-neo-green#26D07CBrand accent (≤ 10% surface)text-neogreen
--c-critical#FF3B3BCritical / error statetext-critical
--c-chromium-mist#C8C8CCSupporting / muted texttext-chromium
--c-ghost-white#EDEDEDPrimary text on darktext-ghost

Typography

Four fonts cover every role. All four are loaded from Google Fonts. Tailwind utilities map through the font-display, font-heading, font-body, and font-mono classes.

RoleFamilyWeightSizeUsage
Display (D1)Orbitron400, 600129pxHero only
Heading (H1)Space Grotesk400, 50064pxPage titles
Heading (H2)Space Grotesk40032pxSection headings
BodyInter400, 50016pxParagraphs, UI
Mono (M1)Space Mono40018pxLabels, data
Mono (M2)Space Mono40014pxMetadata, captions

Spacing Scale

Layout spacing uses a 20px base unit — all values are multiples of 20px. Component internals (button height, padding) use a separate 4px control grid.

--space-1
20px
--space-2
40px
--space-3
60px
--space-4
80px
--space-5
100px
--space-6
120px

Motion

All transitions use cubic-bezier(0.2, 0, 0, 1) — the assertive ease from the brand bible. Duration ranges 120–240ms for UI interactions.

TokenValueUsage
--dur-micro80msPress / active feedback
--dur-fast120msHover transitions
--dur-switch160msToggle / Switch animation
--dur-med240msUI panel transitions
--dur-slow400msScene transitions
--ease-assertivecubic-bezier(0.2, 0, 0, 1)All primary UI easing

Overriding Tokens

Override any token in your own CSS. Tokens cascade — overriding a root token affects every component that references it.

globals.css
:root {
  /* Change accent from Neo Green to Brand Orange */
  --c-neo-green: #FF8C00;
  --c-on-accent: #0E0E10;

  /* Sharpen durations (defaults are 120 / 240 ms) */
  --dur-fast: 80ms;
  --dur-med:  160ms;
}