trellis
Version:
Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications
96 lines (82 loc) • 3.22 kB
CSS
/**
* Semantic tokens — intent-based aliases that map to foundation values.
* These change per theme (dark/light/high-contrast).
* @module @trellis.computer/tokens
*/
:root {
/* Surfaces */
--surface-bg: var(--color-gray-950);
--surface-raised: var(--color-gray-800);
--surface-inset: var(--color-gray-900);
--surface-overlay: var(--color-gray-700);
/* Text */
--text: var(--color-gray-50);
--text-secondary: var(--color-gray-300);
--text-tertiary: var(--color-gray-400);
--text-interactive: var(--color-blue-400);
/* Borders */
--border: rgba(255, 255, 255, 0.195);
--border-strong: rgba(255, 255, 255, 0.266);
--border-focus: var(--color-blue-500);
/* State */
--green: var(--color-green-500);
--yellow: var(--color-yellow-500);
--red: var(--color-red-500);
--blue: var(--color-purple-400);
/* Entity types */
--entity-file: #00ceb9;
--entity-milestone: #2090f5;
--entity-issue: #edb2f1;
--entity-branch: #fcd53a;
--entity-default: var(--text-secondary);
/* Glass / inset */
--glass-surface: rgba(22, 22, 22, 0.75);
--glass-border: rgba(255, 255, 255, 0.04);
--kanban-body-inset: rgba(255, 255, 255, 0.02);
/* Badge backgrounds */
--badge-success-bg: color-mix(in oklch, var(--green) 15%, transparent);
--badge-success-border: color-mix(in oklch, var(--green) 30%, transparent);
--badge-warning-bg: color-mix(in oklch, var(--yellow) 15%, transparent);
--badge-warning-border: color-mix(in oklch, var(--yellow) 25%, transparent);
--badge-critical-bg: color-mix(in oklch, var(--red) 15%, transparent);
--badge-neutral-bg: color-mix(in oklch, var(--text-tertiary) 15%, transparent);
--accent-glow: color-mix(in oklch, var(--text-interactive) 12%, transparent);
/* Inset ladder */
--surface-1: color-mix(in oklch, var(--surface-raised) 25%, var(--surface-bg));
--surface-2: color-mix(in oklch, var(--surface-raised) 50%, var(--surface-bg));
--surface-3: var(--surface-raised);
/* Shadows */
--shadow-sm: 0 1px 2px rgb(0 0 0 / 0.05);
--shadow-md: 0 4px 6px rgb(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px rgb(0 0 0 / 0.15);
/* Legacy aliases (deprecated — use canonical names above) */
--bg: var(--surface-bg);
--bg2: var(--color-gray-900);
--surface: var(--surface-raised);
--surface2: var(--surface-inset);
--accent: var(--text-interactive);
--accent2: color-mix(in oklch, var(--text-interactive) 85%, white);
--accent-glow: var(--accent-glow);
--blue: var(--color-purple-400);
--glass: var(--glass-surface);
--glass-border: var(--glass-border);
}
[data-theme="dark"] {
--surface-bg: var(--color-gray-950);
--surface-raised: var(--color-gray-800);
--surface-inset: var(--color-gray-900);
--surface-overlay: var(--color-gray-700);
--text: var(--color-gray-50);
--text-secondary: var(--color-gray-300);
--text-tertiary: var(--color-gray-400);
--text-interactive: var(--color-blue-400);
--border: rgba(255, 255, 255, 0.195);
--border-strong: rgba(255, 255, 255, 0.266);
}
[data-theme="high-contrast"] {
--surface-bg: oklch(1 0 0);
--surface-raised: oklch(0.97 0.005 260);
--text: oklch(0 0 0);
--text-secondary: oklch(0.2 0.01 260);
--border: oklch(0.4 0.02 260);
}