The visual brand book for building electric, dark-first interfaces.
An electric-violet accent over deep near-black surfaces, a subtle grid texture, humanist sans for content and monospace for metadata. Everything below is built from the same tokens an agent should reference by name.
Color Palette
Every surface, border, accent, and shadow is driven by --spark-* tokens. Never use raw hex in components. Surfaces follow a strict elevation ladder from darkest to lightest.
--spark-bg-root#08090cPage background--spark-bg-input#0d0f16Input / textarea fields--spark-bg-panel#10121aPanels and shells--spark-bg-card#161926Cards, chips--spark-bg-elevated#1c2033Raised elements--spark-bg-hover#1f2340Hover state for raised elements--spark-accent#8b6effPrimary fills, buttons, active states--spark-accent-light#b8a4ffAccent text, links, gradient ends--spark-accent-dimrgba(139,110,255,0.18)Tinted backgrounds, focus rings--spark-accent-glowrgba(139,110,255,0.40)Glow shadows--spark-success#34d399Success / online--spark-warning#fbbf24Warning / in-progress--spark-danger#f87171Error / destructive--spark-text-1#ecedf4Primary text, titles--spark-text-2#9698adSecondary / body copy--spark-text-3#7e8099Muted: labels, captions, placeholders--spark-borderrgba(255,255,255,0.06)Default hairline border--spark-border-focusrgba(120,100,255,0.50)Focus / hover borderTypography
Plus Jakarta Sans for human-facing content (body, titles, buttons). JetBrains Mono for metadata — labels, badges, stats, status, and machine output.
800 · clamp(1.5rem, 4vw, 2.25rem) · -0.035em700 · 1.15rem · -0.02em500 · 0.82rem400 · 0.84–0.88rem · 1.55700 · 0.72rem · 0.06em600 · 0.62–0.7rem · 0.06–0.08em0.6remRadii, Shadows & Motion
Stay within the documented radii set. Pair the hover lift with the composed card + glow shadow, and reset the transform on :active.
--radius-sm8pxInputs, buttons, banners--radius-md14pxMessage bubbles, mid containers--radius-lg20pxCards, panels, shells--radius-xl28pxLargest containers--shadow-cardDefault elevation--shadow-glowAccent glow--shadow-inputRecessed inputshovercard + glow on hoverLayout, Breakpoints & Usage Rules
Fluid-capped containers, an auto-wrapping card grid, and a two-column workspace that collapses on mobile. The page shell is a centered vertical flex column.
min(92vw, 680px)min(92vw, 960px)min(96vw, 1120px)min(94vw, 760px)max-width: 860pxTwo-column layouts collapse to a single columnmax-width: 640pxTighter padding/gap; input rows stack; buttons go full-width and 44px tall; status bars stack; page title shrinks to 1.3rem- Drive every surface, border, accent, and shadow from --spark-* tokens — no raw hex in components.
- Mono for metadata (labels, badges, stats, status, machine output); sans for everything human-facing.
- Follow the elevation ladder: root → input → panel → card → elevated → hover.
- Pair hover lift with the composed card + glow shadow; reset transform on :active.
- Stay within the documented radii set, container max-widths, and breakpoints.
- Keep the optional grid texture near-invisible — it reads as texture, not pattern.
Component Patterns
Live recipes composed entirely from Spark tokens. Reuse these patterns rather than inventing new values. Hover the cards and focus the inputs to feel the motion conventions.
Hover Card
Lifts -3px with a composed card + glow shadow and an accent focus border on hover.
Learn more →Elevation
Cards sit on bg-card above the panel surface, one rung up the elevation ladder.
Learn more →Anatomy
Badge → title → description (flex:1) → call-to-action in accent-light at weight 600.
Learn more →