Design System
Design Tokens
Every :root design token from tokens.css — colors, spacing, radii, typography, shadows, z-index and semantic aliases — with resolved values.
All 165 design tokens defined on :root in styles/tokens.css, grouped by category in source order. Tokens marked alias reference another token; their Resolved column shows the final literal value after following the var() chain.
SourceBuilderStudio-mainCommit6fd4036fcDate2026-05-29Branchmain
14 categories · 38 aliases · 127 literal values.
Base (2)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --color-background | #ffffff | ||
| --color-foreground | #111827 |
Typography (16)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --font-sans | -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif | ||
| --font-mono | ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace | ||
| --ui-text-xs | 0.6875rem | 11px | |
| --ui-text-sm | 0.75rem | 12px | |
| --ui-text-md | 0.8125rem | 13px | |
| --ui-text-lg | 0.875rem | 14px | |
| --text-captionalias | var(--ui-text-xs) | 0.6875rem | |
| --text-micro | 0.625rem | 10px | |
| --text-node-label | 0.5625rem | 9px — canvas node labels, status text | |
| --text-labelalias | var(--ui-text-md) | 0.8125rem | |
| --status-dot-size | 0.3125rem | 5px | |
| --node-header-icon-size | 1.25rem | 20px | |
| --node-drag-header-height | 0.5rem | 8px — thin strip for minimal node chrome | |
| --node-label-letter-spacing | 0.04em | ||
| --node-select-content-max-height | 14rem | ||
| --node-select-trigger-height | 1.625rem |
Radii (8)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --ui-radius-2xs | 0.125rem | 2px — media-track / micro chrome | |
| --ui-radius-xxs | 0.25rem | 4px | |
| --ui-radius-xs | 0.375rem | 6px | |
| --ui-radius-sm | 0.5rem | 8px | |
| --ui-radius-md | 0.75rem | 12px | |
| --ui-radius-lg | 1rem | 16px | |
| --ui-radius-xl | 1.25rem | 20px | |
| --ui-radius-full | 9999px | pill / stadium / full circle |
Spacing (12)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --ui-space-1 | 0.25rem | 4px | |
| --ui-space-2 | 0.5rem | 8px | |
| --ui-space-3 | 0.75rem | 12px | |
| --ui-space-4 | 1rem | 16px | |
| --ui-space-5 | 1.25rem | 20px | |
| --ui-space-6 | 1.5rem | 24px | |
| --ui-space-7 | 1.75rem | 28px | |
| --ui-space-8 | 2rem | 32px | |
| --ui-space-10 | 2.5rem | 40px | |
| --ui-space-12 | 3rem | 48px | |
| --ui-space-14 | 3.5rem | 56px | |
| --ui-space-16 | 4rem | 64px |
Surfaces (21)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --ui-surface-0 | rgba(255, 255, 255, 1) | ||
| --ui-surface-1 | rgba(249, 250, 251, 1) | ||
| --ui-surface-2 | rgba(243, 244, 246, 1) | ||
| --ui-surface-node | rgba(255, 255, 255, 1) | ||
| --canvas-grid-opacity-scale | 0.7 | ||
| --canvas-grid-dot-size | 0.9px | ||
| --ui-surface-subtle | rgba(249, 250, 251, 1) | ||
| --ui-surface-subtle-hover | rgba(243, 244, 246, 1) | ||
| --ui-surface-tab-active | rgba(255, 255, 255, 1) | ||
| --ui-blur-panel | 24px | ||
| --ui-blur-popover | 20px | ||
| --ui-blur-toast | 12px | ||
| --ui-blur-canvas-preserve | 0.5px | ||
| --ui-shadow-panel | 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) | ||
| --ui-shadow-popover | 0 6px 14px rgba(15, 23, 42, 0.06) | ||
| --ui-shadow-tooltip | 0 4px 6px -1px rgba(0, 0, 0, 0.05) | ||
| --auth-accent | #5150F7 | ||
| --auth-textalias | var(--color-foreground) | #111827 | |
| --auth-text-mutedalias | var(--public-text-muted) | rgba(82, 82, 82, 0.9) | |
| --auth-control-height | 52px | ||
| --task-control-height | 3rem |
Canvas layout (2)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --canvas-sidebar-primary-width | 260px | ||
| --canvas-sidebar-secondary-width | 260px |
Canvas chrome (15)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --canvas-chrome-surfacealias | var(--color-background) | #ffffff | |
| --canvas-chrome-surface-subtle | #f3f3f3 | ||
| --canvas-chrome-surface-raisedalias | var(--canvas-chrome-surface) | #ffffff | |
| --canvas-chrome-border | #eeeeee | ||
| --canvas-chrome-border-strong | #dddddd | ||
| --canvas-chrome-row-active | #f3f3f3 | ||
| --canvas-chrome-row-hover | #f3f3f3 | ||
| --canvas-chrome-text-strong | #1f1f1f | ||
| --canvas-chrome-text-primary | #2f2f2f | ||
| --canvas-chrome-text-secondary | #525252 | ||
| --canvas-chrome-text-heading | #737373 | ||
| --canvas-chrome-text-muted | #808080 | ||
| --canvas-chrome-icon-muted | #bbbbbb | ||
| --canvas-chrome-accent | #0099ff | ||
| --canvas-chrome-focus-ringalias | var(--ui-focus-ring) | rgba(0, 0, 0, 0.2) |
Borders (4)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --ui-border-soft | rgba(229, 231, 235, 1) | ||
| --ui-border-strong | rgba(209, 213, 219, 1) | ||
| --ui-border-subtle | rgba(243, 244, 246, 1) | ||
| --ui-border-subtle-hover | rgba(229, 231, 235, 1) |
Elevation / z-index (6)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --ui-z-overlay | 1000 | ||
| --ui-z-tooltipalias | var(--ui-z-overlay) | 1000 | |
| --ui-z-toast | 1100 | ||
| --ui-shadow-toast | 0 10px 15px -3px rgba(0, 0, 0, 0.05) | ||
| --ui-shadow-soft | 0 1px 2px 0 rgba(0, 0, 0, 0.05) | ||
| --ui-overlay-backdrop | rgb(15 23 42 / 0.45) |
Status (18)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --ui-status-success | rgba(22, 163, 74, 0.9) | ||
| --ui-status-success-bg | rgba(22, 163, 74, 0.1) | ||
| --ui-status-success-border | rgba(22, 163, 74, 0.2) | ||
| --ui-status-error | rgb(220, 38, 38) | ||
| --ui-status-error-bg | rgba(220, 38, 38, 0.08) | ||
| --ui-status-error-border | rgba(220, 38, 38, 0.2) | ||
| --ui-status-warning | rgba(217, 119, 6, 0.9) | ||
| --ui-status-warning-bg | rgba(245, 158, 11, 0.08) | ||
| --ui-status-warning-border | rgba(245, 158, 11, 0.25) | ||
| --ui-status-muted | rgba(0, 0, 0, 0.5) | ||
| --ui-status-error-shell-bgalias | var(--ui-status-error-bg) | rgba(220, 38, 38, 0.08) | |
| --ui-status-error-shell-borderalias | var(--ui-status-error-border) | rgba(220, 38, 38, 0.2) | |
| --ui-status-error-shell-text | rgba(185, 28, 28, 1) | ||
| --ui-focus-ring | rgba(0, 0, 0, 0.2) | ||
| --ui-focus-ring-light | rgba(0, 0, 0, 0.35) | ||
| --ui-selection-bg | rgba(0, 0, 0, 0.18) | ||
| --ui-text-mutedalias | color-mix(in srgb, var(--color-foreground) 45%, transparent) | color-mix(in srgb, #111827 45%, transparent) | |
| --ui-text-muted-strongalias | color-mix(in srgb, var(--color-foreground) 55%, transparent) | color-mix(in srgb, #111827 55%, transparent) |
Canvas overlay (39)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --canvas-overlay-blur | 8px | ||
| --canvas-overlay-bgalias | var(--canvas-chrome-surface) | #ffffff | |
| --canvas-overlay-field-bgalias | var(--canvas-chrome-surface-subtle) | #f3f3f3 | |
| --canvas-overlay-hover-bgalias | var(--canvas-chrome-row-hover) | #f3f3f3 | |
| --canvas-overlay-active-bgalias | var(--canvas-chrome-row-active) | #f3f3f3 | |
| --canvas-overlay-borderalias | var(--canvas-chrome-border) | #eeeeee | |
| --canvas-overlay-border-strongalias | var(--canvas-chrome-border-strong) | #dddddd | |
| --canvas-overlay-textalias | var(--canvas-chrome-text-strong) | #1f1f1f | |
| --canvas-overlay-text-secondaryalias | var(--canvas-chrome-text-secondary) | #525252 | |
| --canvas-overlay-text-mutedalias | var(--canvas-chrome-text-muted) | #808080 | |
| --canvas-overlay-text-placeholderalias | var(--canvas-chrome-text-muted) | #808080 | |
| --canvas-overlay-section-label-textalias | var(--canvas-chrome-text-heading) | #737373 | |
| --canvas-overlay-focus-ringalias | var(--canvas-chrome-focus-ring) | rgba(0, 0, 0, 0.2) | |
| --canvas-overlay-shadow | 0 8px 18px rgba(17, 24, 39, 0.08) | ||
| --canvas-overlay-trigger-bgalias | var(--canvas-chrome-surface) | #ffffff | |
| --canvas-overlay-trigger-active-bgalias | var(--canvas-overlay-field-bg) | #f3f3f3 | |
| --canvas-overlay-trigger-shadow | 0 2px 6px rgba(17, 24, 39, 0.06) | ||
| --canvas-overlay-successalias | var(--ui-status-success) | rgba(22, 163, 74, 0.9) | |
| --canvas-overlay-success-strong | rgb(5, 150, 105) | ||
| --canvas-overlay-danger | rgba(185, 28, 28, 0.9) | ||
| --canvas-overlay-danger-muted | rgba(185, 28, 28, 0.8) | ||
| --canvas-overlay-danger-bg | rgba(220, 38, 38, 0.06) | ||
| --canvas-overlay-danger-bg-hover | rgba(220, 38, 38, 0.12) | ||
| --canvas-overlay-toggle-track | rgba(0, 0, 0, 0.12) | ||
| --canvas-overlay-toggle-track-on | rgba(22, 163, 74, 0.35) | ||
| --canvas-overlay-action-bgalias | var(--canvas-chrome-surface-subtle) | #f3f3f3 | |
| --canvas-overlay-action-bg-hoveralias | var(--canvas-chrome-row-hover) | #f3f3f3 | |
| --canvas-overlay-action-padding | 0.4375rem 0.625rem | ||
| --canvas-overlay-radiusalias | var(--ui-radius-sm) | 0.5rem | |
| --canvas-floating-toolbar-height | 3.125rem | 50px | |
| --canvas-floating-toolbar-control-size | 1.875rem | 30px | |
| --canvas-floating-toolbar-viewport-gapalias | var(--ui-space-3) | 0.75rem | |
| --canvas-floating-toolbar-popover-gapalias | var(--canvas-floating-toolbar-viewport-gap) | 0.75rem | |
| --canvas-floating-toolbar-popover-bottomalias | calc( var(--canvas-floating-toolbar-viewport-gap) + var(--canvas-floating-toolbar-height) + var(--canvas-floating-toolbar-popover-gap) ) | calc( 0.75rem + 3.125rem + 0.75rem ) | |
| --icon-shimmer-highlight | rgba(23, 23, 23, 0.9) | ||
| --node-exec-running | rgba(234, 179, 8, 0.8) | ||
| --node-exec-streaming | rgba(168, 85, 247, 0.8) | ||
| --node-exec-completed | rgba(34, 197, 94, 0.8) | ||
| --node-exec-error | rgba(239, 68, 68, 0.8) |
Public shell (13)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --public-surfacealias | var(--color-background) | #ffffff | |
| --public-surface-muted | #f7f7f7 | ||
| --public-surface-hover | rgba(0, 0, 0, 0.04) | ||
| --public-border | #e5e7eb | ||
| --public-border-hover | #d1d5db | ||
| --public-textalias | var(--color-foreground) | #111827 | |
| --public-text-muted | rgba(82, 82, 82, 0.9) | ||
| --public-light-bg | #FCFBF8 | ||
| --public-light-text | rgb(15, 53, 71) | ||
| --public-light-text-muted | rgb(71, 74, 84) | ||
| --public-light-border | rgb(231, 231, 231) | ||
| --public-light-accent-subtle | rgba(107, 95, 237, 0.08) | ||
| --public-navbar-height | 68px |
Canvas node (6)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --canvas-node-label | rgba(38, 38, 38, 0.95) | ||
| --node-header-icon-coloralias | var(--node-header-label-color) | rgba(64, 64, 64, 1) | |
| --node-header-label-color | rgba(64, 64, 64, 1) | ||
| --asset-badge-fg | rgba(64, 64, 64, 0.95) | ||
| --asset-pill-fg | rgba(64, 64, 64, 0.9) | ||
| --asset-pill-active-fg | rgba(23, 23, 23, 0.96) |
Dashboard (3)
| Preview | Token | Value | Resolved / note |
|---|---|---|---|
| --dashboard-sidebar-width | 13rem | ||
| --dashboard-shell-bgalias | var(--color-background) | #ffffff | |
| --dashboard-main-bgalias | var(--color-background) | #ffffff |
Was this page helpful?