@citron-systems/citron-ds 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +218 -149
  2. package/cli/citron-mascot.mjs +117 -0
  3. package/dist/ai/inkblot-ai-reference.json +582 -570
  4. package/dist/ai/inkblot-tokens-resolved.json +25 -0
  5. package/dist/ai/inkblot-tokens-schema.json +54 -54
  6. package/dist/brand/citron-mascot-mono.svg +17 -0
  7. package/dist/brand/citron-mascot.svg +21 -0
  8. package/dist/brand/readme-hero.svg +61 -0
  9. package/dist/bundle/README.md +28 -0
  10. package/dist/bundle/ai-reference.json +582 -0
  11. package/dist/bundle/brand/citron-mascot-mono.svg +17 -0
  12. package/dist/bundle/brand/citron-mascot.svg +21 -0
  13. package/dist/bundle/brand/readme-hero.svg +61 -0
  14. package/dist/bundle/preview/mascot.html +72 -0
  15. package/dist/bundle/system/ai.json +168 -0
  16. package/dist/bundle/system/cli.json +340 -0
  17. package/dist/bundle/system/components.json +304 -0
  18. package/dist/bundle/system/content.json +168 -0
  19. package/dist/bundle/system/devtools.json +95 -0
  20. package/dist/bundle/system/foundations.json +121 -0
  21. package/dist/bundle/system/grid.json +101 -0
  22. package/dist/bundle/system/icons.json +507 -0
  23. package/dist/bundle/system/index.json +57 -0
  24. package/dist/bundle/system/inkblot-ai-reference.json +582 -0
  25. package/dist/bundle/system/motion.json +159 -0
  26. package/dist/bundle/tokens/primitive/breakpoint.tokens.json +14 -0
  27. package/dist/bundle/tokens/primitive/color.tokens.json +71 -0
  28. package/dist/bundle/tokens/primitive/devtools.palette.tokens.json +55 -0
  29. package/dist/bundle/tokens/primitive/duration.tokens.json +38 -0
  30. package/dist/bundle/tokens/primitive/grid.tokens.json +34 -0
  31. package/dist/bundle/tokens/primitive/radius.tokens.json +26 -0
  32. package/dist/bundle/tokens/primitive/shadow.tokens.json +41 -0
  33. package/dist/bundle/tokens/primitive/spacing.tokens.json +38 -0
  34. package/dist/bundle/tokens/primitive/typography.tokens.json +60 -0
  35. package/dist/bundle/tokens/primitive/zindex.tokens.json +19 -0
  36. package/dist/bundle/tokens/semantic/dark.tokens.json +43 -0
  37. package/dist/bundle/tokens/semantic/devtools.semantic.tokens.json +79 -0
  38. package/dist/bundle/tokens/semantic/inkblot.semantic.tokens.json +140 -0
  39. package/dist/bundle/tokens-schema.json +54 -0
  40. package/dist/bundle/tokens.flat.json +224 -0
  41. package/dist/bundle/tokens.resolved.json +224 -0
  42. package/dist/bundle/variables.css +228 -0
  43. package/dist/bundle/variables.scss +225 -0
  44. package/dist/css/inkblot-variables.css +25 -0
  45. package/dist/index.html +956 -0
  46. package/dist/js/inkblot-tokens.js +25 -0
  47. package/dist/js/inkblot-tokens.json +25 -0
  48. package/dist/preview/mascot.html +72 -0
  49. package/dist/scss/_inkblot-variables.scss +25 -0
  50. package/package.json +73 -61
  51. package/tokens/primitive/breakpoint.tokens.json +14 -14
  52. package/tokens/primitive/color.tokens.json +71 -71
  53. package/tokens/primitive/devtools.palette.tokens.json +55 -0
  54. package/tokens/primitive/duration.tokens.json +38 -38
  55. package/tokens/primitive/grid.tokens.json +34 -34
  56. package/tokens/primitive/radius.tokens.json +26 -26
  57. package/tokens/primitive/shadow.tokens.json +41 -41
  58. package/tokens/primitive/spacing.tokens.json +38 -38
  59. package/tokens/primitive/typography.tokens.json +60 -60
  60. package/tokens/primitive/zindex.tokens.json +19 -19
  61. package/tokens/semantic/dark.tokens.json +43 -43
  62. package/tokens/semantic/devtools.semantic.tokens.json +79 -0
  63. package/tokens/semantic/inkblot.semantic.tokens.json +140 -140
@@ -0,0 +1,225 @@
1
+
2
+ // Do not edit directly, this file was auto-generated.
3
+
4
+ $inkblot-breakpoint-sm: 640px; // Small devices
5
+ $inkblot-breakpoint-md: 768px; // Tablets
6
+ $inkblot-breakpoint-lg: 1024px; // Laptops
7
+ $inkblot-breakpoint-xl: 1280px; // Desktops
8
+ $inkblot-breakpoint-2xl: 1536px; // Large screens
9
+ $inkblot-color-neutral-white: #ffffff; // Pure white, floating surfaces
10
+ $inkblot-color-neutral-gray-50: #fafaf7; // Warm off-white, body background
11
+ $inkblot-color-neutral-gray-100: #f5f4f0; // Warm surface, secondary bg
12
+ $inkblot-color-neutral-gray-200: #eae9e3; // Subtle warm border, dividers
13
+ $inkblot-color-neutral-gray-300: #d4d3cb; // Medium warm border
14
+ $inkblot-color-neutral-gray-400: #93928a; // Placeholder text, muted
15
+ $inkblot-color-neutral-gray-500: #6b6a63; // Secondary text
16
+ $inkblot-color-neutral-gray-600: #4d4c47; // Emphasized secondary
17
+ $inkblot-color-neutral-gray-700: #3a3935; // Strong text
18
+ $inkblot-color-neutral-gray-800: #2d2c28; // Deep warm dark
19
+ $inkblot-color-neutral-gray-900: #1d1c19; // Primary text — deep slate, never pure black
20
+ $inkblot-color-neutral-gray-950: #0f0e0c; // Deepest warm black
21
+ $inkblot-color-accent-citron-50: #fdfbf3; // Barely there citron wash
22
+ $inkblot-color-accent-citron-100: #faf4df; // Soft cream tint
23
+ $inkblot-color-accent-citron-200: #f3e6b8; // Warm wheat
24
+ $inkblot-color-accent-citron-300: #e8d38a; // Light honey
25
+ $inkblot-color-accent-citron-400: #d9bc58; // Citrus glow
26
+ $inkblot-color-accent-citron-500: #c4a030; // Citron primary — the brand tone
27
+ $inkblot-color-accent-citron-600: #a38427; // Deep citron, hover state
28
+ $inkblot-color-accent-citron-700: #7f671f; // Rich amber
29
+ $inkblot-color-accent-citron-800: #5c4a18; // Dark citron
30
+ $inkblot-color-accent-citron-900: #3d3111; // Deepest citron
31
+ $inkblot-color-semantic-success-light: #3d9e50; // Warm success green
32
+ $inkblot-color-semantic-success-main: #358c46; // Primary success
33
+ $inkblot-color-semantic-success-dark: #2a7538; // Success hover
34
+ $inkblot-color-semantic-warning-light: #e0a020; // Warm amber warning
35
+ $inkblot-color-semantic-warning-main: #c48c1a; // Primary warning — distinct from citron by saturation
36
+ $inkblot-color-semantic-warning-dark: #a67515; // Warning hover
37
+ $inkblot-color-semantic-error-light: #d14940; // Warm red
38
+ $inkblot-color-semantic-error-main: #be3e35; // Primary error
39
+ $inkblot-color-semantic-error-dark: #a3352d; // Error hover
40
+ $inkblot-color-semantic-info-light: #6ba3c2; // Muted warm blue
41
+ $inkblot-color-semantic-info-main: #5790ad; // Primary info — desaturated, warm
42
+ $inkblot-color-semantic-info-dark: #497a94; // Info hover
43
+ $inkblot-color-devtools-dominant: #2563eb; // Dominant blue — headers, key metrics, active nav in dev shell
44
+ $inkblot-color-devtools-support: #60a5fa; // Support blue — secondary emphasis, icons, dividers tint, hover text
45
+ $inkblot-color-devtools-accent: #10b981; // Emerald accent — success in dev context, pass states, OK badges (not product brand citron)
46
+ $inkblot-color-devtools-primary: #2563eb; // Primary action — same as dominant; use semantic interactive.primary in components
47
+ $inkblot-color-devtools-primary-hover: #60a5fa; // Primary hover — lighter blue lift on dark ground
48
+ $inkblot-color-devtools-background: #020617; // App background — near-slate-950, OLED-friendly
49
+ $inkblot-color-devtools-surface: #0b1220; // Raised panels, cards, drawers — one step above background
50
+ $inkblot-color-devtools-text-primary: #f8fafc; // Primary text on dev dark UI
51
+ $inkblot-color-devtools-text-muted: #cbd5e1; // Secondary labels, timestamps, hints
52
+ $inkblot-color-devtools-border: #1e293b; // Default borders and hairlines — slate-800
53
+ $inkblot-color-devtools-focus: #60a5fa; // Focus ring on dev controls — matches support for visibility
54
+ $inkblot-duration-instant: 0ms; // No animation
55
+ $inkblot-duration-fast: 120ms; // Micro-interactions, hovers — fast enough to feel physical
56
+ $inkblot-duration-normal: 200ms; // Standard transitions
57
+ $inkblot-duration-slow: 320ms; // Complex transitions, enter/exit
58
+ $inkblot-duration-slower: 500ms; // Page-level transitions, long reveals
59
+ $inkblot-easing-default: cubic-bezier(0.25, 0.1, 0.25, 1); // Standard ease — natural deceleration
60
+ $inkblot-easing-in: cubic-bezier(0.32, 0, 0.67, 0); // Ease in — for exits, things leaving
61
+ $inkblot-easing-out: cubic-bezier(0.33, 1, 0.68, 1); // Ease out — for entrances, things arriving
62
+ $inkblot-easing-in-out: cubic-bezier(0.65, 0, 0.35, 1); // Ease in-out — for position changes, transforms
63
+ $inkblot-easing-expressive: cubic-bezier(0.22, 1, 0.36, 1); // Expressive ease-out — smooth, confident arrival. Replaces bounce.
64
+ $inkblot-grid-columns-mobile: 4rem; // 4-column grid for < 640px
65
+ $inkblot-grid-columns-tablet: 8rem; // 8-column grid for 640–1023px
66
+ $inkblot-grid-columns-desktop: 12rem; // 12-column grid for 1024–1535px
67
+ $inkblot-grid-columns-wide: 16rem; // 16-column grid for 1536px+
68
+ $inkblot-grid-columns-max: 24rem; // 24-column grid for complex dashboards
69
+ $inkblot-grid-gutter-sm: 0.5rem; // 8px - compact mobile gutter
70
+ $inkblot-grid-gutter-md: 1rem; // 16px - standard gutter
71
+ $inkblot-grid-gutter-lg: 1.5rem; // 24px - spacious desktop gutter
72
+ $inkblot-grid-gutter-xl: 2rem; // 32px - wide layout gutter
73
+ $inkblot-grid-margin-mobile: 1rem; // 16px page margin on mobile
74
+ $inkblot-grid-margin-tablet: 2rem; // 32px page margin on tablet
75
+ $inkblot-grid-margin-desktop: 4rem; // 64px page margin on desktop
76
+ $inkblot-grid-margin-wide: auto; // Auto-center on wide screens
77
+ $inkblot-grid-max-width-content: 768px; // Max width for readable content
78
+ $inkblot-grid-max-width-container: 1200px; // Max width for standard layouts
79
+ $inkblot-grid-max-width-wide: 1440px; // Max width for wide layouts
80
+ $inkblot-grid-max-width-full: 1920px; // Max width for full-bleed
81
+ $inkblot-radius-none: 0; // No rounding
82
+ $inkblot-radius-sm: 6px; // Subtle rounding, chips
83
+ $inkblot-radius-md: 10px; // Inputs, small cards
84
+ $inkblot-radius-lg: 14px; // Buttons, interactive elements
85
+ $inkblot-radius-xl: 18px; // Cards, modals
86
+ $inkblot-radius-2xl: 24px; // Large surfaces, hero cards
87
+ $inkblot-radius-full: 9999px; // Pills, avatars, toggles
88
+ $inkblot-border-width-none: 0; // No border
89
+ $inkblot-border-width-thin: 1px; // Subtle dividers, the default
90
+ $inkblot-border-width-medium: 2px; // Focus rings
91
+ $inkblot-border-width-thick: 3px; // Strong emphasis, rarely used
92
+ $inkblot-shadow-none: none; // No shadow
93
+ $inkblot-shadow-xs: 0 1px 2px 0 rgba(29, 28, 25, 0.04); // Barely there lift
94
+ $inkblot-shadow-sm: 0 2px 8px -1px rgba(29, 28, 25, 0.06), 0 1px 3px -1px rgba(29, 28, 25, 0.04); // Cards — soft, warm, diffused
95
+ $inkblot-shadow-md: 0 4px 16px -2px rgba(29, 28, 25, 0.08), 0 2px 6px -2px rgba(29, 28, 25, 0.04); // Elevated cards, dropdowns
96
+ $inkblot-shadow-lg: 0 8px 24px -4px rgba(29, 28, 25, 0.10), 0 4px 10px -4px rgba(29, 28, 25, 0.04); // Modals, popovers
97
+ $inkblot-shadow-xl: 0 16px 40px -8px rgba(29, 28, 25, 0.12), 0 8px 16px -8px rgba(29, 28, 25, 0.04); // Maximum elevation — ambient, not harsh
98
+ $inkblot-opacity-disabled: 0.4; // Disabled elements
99
+ $inkblot-opacity-overlay: 0.45; // Modal backdrops — not too heavy
100
+ $inkblot-opacity-subtle: 0.6; // Secondary content
101
+ $inkblot-opacity-default: 1; // Full opacity
102
+ $inkblot-spacing-0: 0; // No spacing
103
+ $inkblot-spacing-1: 0.25rem; // 4px
104
+ $inkblot-spacing-2: 0.5rem; // 8px
105
+ $inkblot-spacing-3: 0.75rem; // 12px
106
+ $inkblot-spacing-4: 1rem; // 16px
107
+ $inkblot-spacing-5: 1.25rem; // 20px
108
+ $inkblot-spacing-6: 1.5rem; // 24px
109
+ $inkblot-spacing-8: 2rem; // 32px
110
+ $inkblot-spacing-10: 2.5rem; // 40px
111
+ $inkblot-spacing-12: 3rem; // 48px
112
+ $inkblot-spacing-16: 4rem; // 64px
113
+ $inkblot-spacing-20: 5rem; // 80px
114
+ $inkblot-spacing-24: 6rem; // 96px
115
+ $inkblot-spacing-32: 8rem; // 128px
116
+ $inkblot-size-icon-xs: 1rem; // 16px icon
117
+ $inkblot-size-icon-sm: 1.25rem; // 20px icon
118
+ $inkblot-size-icon-md: 1.5rem; // 24px icon
119
+ $inkblot-size-icon-lg: 2rem; // 32px icon
120
+ $inkblot-size-icon-xl: 2.5rem; // 40px icon
121
+ $inkblot-size-touch-target-min: 44px; // Minimum touch target (WCAG)
122
+ $inkblot-size-touch-target-comfortable: 48px; // Comfortable touch target
123
+ $inkblot-typography-font-family-sans: 'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; // Primary UI font — humanist, modern, highly legible
124
+ $inkblot-typography-font-family-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace; // Code and data
125
+ $inkblot-typography-font-family-display: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; // Headlines — same family, optical size variant
126
+ $inkblot-typography-font-size-xs: 0.75rem; // 12px — captions, meta
127
+ $inkblot-typography-font-size-sm: 0.8125rem; // 13px — secondary text
128
+ $inkblot-typography-font-size-base: 0.9375rem; // 15px — body text, slightly refined from 16
129
+ $inkblot-typography-font-size-md: 1.0625rem; // 17px — emphasized body
130
+ $inkblot-typography-font-size-lg: 1.25rem; // 20px — card titles, subheadings
131
+ $inkblot-typography-font-size-xl: 1.5rem; // 24px — section titles
132
+ $inkblot-typography-font-size-2xl: 1.75rem; // 28px — page titles
133
+ $inkblot-typography-font-size-3xl: 2.125rem; // 34px — hero — composed, not shouting
134
+ $inkblot-typography-font-size-4xl: 2.75rem; // 44px — display, rarely used
135
+ $inkblot-typography-font-size-5xl: 3.25rem; // 52px — maximum display
136
+ $inkblot-typography-font-weight-regular: 400; // Body text
137
+ $inkblot-typography-font-weight-medium: 500; // Emphasis, labels, card titles
138
+ $inkblot-typography-font-weight-semibold: 600; // Headings, buttons
139
+ $inkblot-typography-font-weight-bold: 700; // Strong emphasis, sparingly
140
+ $inkblot-typography-line-height-tight: 1.2; // Headlines
141
+ $inkblot-typography-line-height-snug: 1.375; // Subheadings
142
+ $inkblot-typography-line-height-normal: 1.5; // Body text
143
+ $inkblot-typography-line-height-relaxed: 1.65; // Long-form, generous breathing room
144
+ $inkblot-typography-line-height-loose: 1.8; // Very spacious
145
+ $inkblot-typography-letter-spacing-tighter: -0.04em; // Large headlines
146
+ $inkblot-typography-letter-spacing-tight: -0.02em; // Headings
147
+ $inkblot-typography-letter-spacing-normal: 0; // Body
148
+ $inkblot-typography-letter-spacing-wide: 0.02em; // Labels
149
+ $inkblot-typography-letter-spacing-wider: 0.06em; // Uppercase meta
150
+ $inkblot-z-index-hide: -1; // Hidden below base layer
151
+ $inkblot-z-index-base: 0; // Default document flow
152
+ $inkblot-z-index-raised: 1; // Slightly above base (cards on hover)
153
+ $inkblot-z-index-dropdown: 10; // Dropdowns, select menus
154
+ $inkblot-z-index-sticky: 20; // Sticky headers, nav bars
155
+ $inkblot-z-index-overlay: 30; // Backdrop overlays
156
+ $inkblot-z-index-modal: 40; // Modals, dialogs, sheets
157
+ $inkblot-z-index-popover: 50; // Popovers, tooltips
158
+ $inkblot-z-index-toast: 60; // Toast notifications
159
+ $inkblot-z-index-max: 9999; // Emergency override (avoid)
160
+ $inkblot-dark-color-background-primary: #12110e; // Deep warm black, not pure black
161
+ $inkblot-dark-color-background-secondary: #1d1c18; // Elevated warm surface
162
+ $inkblot-dark-color-background-tertiary: #2a2924; // Grouped content, inset
163
+ $inkblot-dark-color-background-inverse: #fafaf7; // Inverted to warm off-white
164
+ $inkblot-dark-color-text-primary: #f5f4f0; // Warm off-white text
165
+ $inkblot-dark-color-text-secondary: #93928a; // Warm muted text
166
+ $inkblot-dark-color-text-tertiary: #6b6a63; // Placeholder, hints
167
+ $inkblot-dark-color-text-inverse: #1d1c19; // Dark text on light
168
+ $inkblot-dark-color-text-link: #d9bc58; // Citron 400 — bright enough for dark bg
169
+ $inkblot-dark-color-text-link-hover: #e8d38a; // Citron 300 — lighter on hover
170
+ $inkblot-dark-color-border-default: #38372f; // Warm subtle border
171
+ $inkblot-dark-color-border-strong: #4d4c44; // Emphasized warm border
172
+ $inkblot-dark-color-border-focus: #d9bc58; // Focus ring — bright citron
173
+ $inkblot-dark-color-interactive-primary: #d9bc58; // Citron 400 — lighter for dark mode contrast
174
+ $inkblot-dark-color-interactive-primary-hover: #e8d38a; // Citron 300 — warm glow on hover
175
+ $inkblot-dark-color-interactive-primary-active: #c4a030; // Citron 500 — anchor on press
176
+ $inkblot-dark-color-interactive-secondary: #2a2924; // Warm dark secondary
177
+ $inkblot-dark-color-interactive-secondary-hover: #38372f; // Warm dark hover
178
+ $inkblot-dark-color-status-success: #4cb864; // Bright warm green on dark
179
+ $inkblot-dark-color-status-warning: #e0a020; // Warm amber on dark
180
+ $inkblot-dark-color-status-error: #e05a52; // Warm red on dark
181
+ $inkblot-dark-color-status-info: #7ab8d6; // Soft warm blue on dark
182
+ $inkblot-semantic-devtools-color-background-app: $inkblot-color-devtools-background; // Full dev shell background
183
+ $inkblot-semantic-devtools-color-background-surface: $inkblot-color-devtools-surface; // Panels, modals, dropdowns
184
+ $inkblot-semantic-devtools-color-background-surface-elevated: $inkblot-color-devtools-surface; // Optional second elevation — same token until a lighter step is needed
185
+ $inkblot-semantic-devtools-color-text-primary: $inkblot-color-devtools-text-primary; // Body and titles in dev UI
186
+ $inkblot-semantic-devtools-color-text-muted: $inkblot-color-devtools-text-muted; // Meta, captions, disabled-adjacent copy
187
+ $inkblot-semantic-devtools-color-text-on-primary: $inkblot-color-devtools-text-primary; // Text on primary/dominant buttons
188
+ $inkblot-semantic-devtools-color-border-default: $inkblot-color-devtools-border; // Dividers and field outlines
189
+ $inkblot-semantic-devtools-color-border-strong: $inkblot-color-devtools-support; // Drag handles, resize accents — use at low opacity if needed
190
+ $inkblot-semantic-devtools-color-accent-brand: $inkblot-color-devtools-dominant; // Dev chrome brand strip — blue, not citron
191
+ $inkblot-semantic-devtools-color-accent-positive: $inkblot-color-devtools-accent; // Build passed, tests green, healthy status
192
+ $inkblot-semantic-devtools-color-interactive-primary: $inkblot-color-devtools-primary; // Primary buttons, submit, run
193
+ $inkblot-semantic-devtools-color-interactive-primary-hover: $inkblot-color-devtools-primary-hover; // Hover state for primary
194
+ $inkblot-semantic-devtools-color-interactive-ghost: $inkblot-color-devtools-text-muted; // Low-emphasis controls — pair with transparent or surface bg
195
+ $inkblot-semantic-devtools-color-interactive-focus: $inkblot-color-devtools-focus; // Focus ring color
196
+ $inkblot-semantic-color-background-primary: $inkblot-color-neutral-gray-50; // Body background — warm off-white with barely perceptible beige
197
+ $inkblot-semantic-color-background-secondary: $inkblot-color-neutral-white; // Elevated surfaces — clean white floating above base
198
+ $inkblot-semantic-color-background-tertiary: $inkblot-color-neutral-gray-100; // Grouped content, inset areas
199
+ $inkblot-semantic-color-background-inverse: $inkblot-color-neutral-gray-900; // Inverted surfaces
200
+ $inkblot-semantic-color-text-primary: $inkblot-color-neutral-gray-900; // Primary text — deep warm slate, never pure black
201
+ $inkblot-semantic-color-text-secondary: $inkblot-color-neutral-gray-500; // Secondary text
202
+ $inkblot-semantic-color-text-tertiary: $inkblot-color-neutral-gray-400; // Placeholder, hints, captions
203
+ $inkblot-semantic-color-text-inverse: $inkblot-color-neutral-white; // Text on dark surfaces
204
+ $inkblot-semantic-color-text-link: $inkblot-color-accent-citron-600; // Links — deep citron for readability
205
+ $inkblot-semantic-color-text-link-hover: $inkblot-color-accent-citron-700; // Link hover
206
+ $inkblot-semantic-color-border-default: $inkblot-color-neutral-gray-200; // Subtle warm dividers
207
+ $inkblot-semantic-color-border-strong: $inkblot-color-neutral-gray-300; // Emphasized borders
208
+ $inkblot-semantic-color-border-focus: $inkblot-color-accent-citron-500; // Focus ring — citron accent
209
+ $inkblot-semantic-color-interactive-primary: $inkblot-color-accent-citron-500; // Primary CTA — confident citron
210
+ $inkblot-semantic-color-interactive-primary-hover: $inkblot-color-accent-citron-600; // Primary hover — deeper, subtle shift
211
+ $inkblot-semantic-color-interactive-primary-active: $inkblot-color-accent-citron-700; // Primary pressed
212
+ $inkblot-semantic-color-interactive-secondary: $inkblot-color-neutral-gray-100; // Secondary surfaces with subtle depth
213
+ $inkblot-semantic-color-interactive-secondary-hover: $inkblot-color-neutral-gray-200; // Secondary hover
214
+ $inkblot-semantic-color-status-success: $inkblot-color-semantic-success-main; // Success state
215
+ $inkblot-semantic-color-status-warning: $inkblot-color-semantic-warning-main; // Warning state
216
+ $inkblot-semantic-color-status-error: $inkblot-color-semantic-error-main; // Error state
217
+ $inkblot-semantic-color-status-info: $inkblot-color-semantic-info-main; // Info state
218
+ $inkblot-semantic-typography-heading-1: $inkblot-typography-font-weight-semibold $inkblot-typography-font-size-3xl/$inkblot-typography-line-height-tight $inkblot-typography-font-family-display; // Page title — composed, not dramatic
219
+ $inkblot-semantic-typography-heading-2: $inkblot-typography-font-weight-semibold $inkblot-typography-font-size-2xl/$inkblot-typography-line-height-tight $inkblot-typography-font-family-display; // Section title
220
+ $inkblot-semantic-typography-heading-3: $inkblot-typography-font-weight-medium $inkblot-typography-font-size-xl/$inkblot-typography-line-height-snug $inkblot-typography-font-family-sans; // Subsection title
221
+ $inkblot-semantic-typography-heading-4: $inkblot-typography-font-weight-medium $inkblot-typography-font-size-lg/$inkblot-typography-line-height-snug $inkblot-typography-font-family-sans; // Card title
222
+ $inkblot-semantic-typography-body-default: $inkblot-typography-font-weight-regular $inkblot-typography-font-size-base/$inkblot-typography-line-height-normal $inkblot-typography-font-family-sans; // Body text
223
+ $inkblot-semantic-typography-body-small: $inkblot-typography-font-weight-regular $inkblot-typography-font-size-sm/$inkblot-typography-line-height-normal $inkblot-typography-font-family-sans; // Small body, captions
224
+ $inkblot-semantic-typography-body-large: $inkblot-typography-font-weight-regular $inkblot-typography-font-size-md/$inkblot-typography-line-height-relaxed $inkblot-typography-font-family-sans; // Emphasized body
225
+ $inkblot-semantic-typography-label-default: $inkblot-typography-font-weight-medium $inkblot-typography-font-size-xs/$inkblot-typography-line-height-normal $inkblot-typography-font-family-sans; // Form labels, badges
@@ -42,6 +42,17 @@
42
42
  --inkblot-color-semantic-info-light: #6ba3c2; /** Muted warm blue */
43
43
  --inkblot-color-semantic-info-main: #5790ad; /** Primary info — desaturated, warm */
44
44
  --inkblot-color-semantic-info-dark: #497a94; /** Info hover */
45
+ --inkblot-color-devtools-dominant: #2563eb; /** Dominant blue — headers, key metrics, active nav in dev shell */
46
+ --inkblot-color-devtools-support: #60a5fa; /** Support blue — secondary emphasis, icons, dividers tint, hover text */
47
+ --inkblot-color-devtools-accent: #10b981; /** Emerald accent — success in dev context, pass states, OK badges (not product brand citron) */
48
+ --inkblot-color-devtools-primary: #2563eb; /** Primary action — same as dominant; use semantic interactive.primary in components */
49
+ --inkblot-color-devtools-primary-hover: #60a5fa; /** Primary hover — lighter blue lift on dark ground */
50
+ --inkblot-color-devtools-background: #020617; /** App background — near-slate-950, OLED-friendly */
51
+ --inkblot-color-devtools-surface: #0b1220; /** Raised panels, cards, drawers — one step above background */
52
+ --inkblot-color-devtools-text-primary: #f8fafc; /** Primary text on dev dark UI */
53
+ --inkblot-color-devtools-text-muted: #cbd5e1; /** Secondary labels, timestamps, hints */
54
+ --inkblot-color-devtools-border: #1e293b; /** Default borders and hairlines — slate-800 */
55
+ --inkblot-color-devtools-focus: #60a5fa; /** Focus ring on dev controls — matches support for visibility */
45
56
  --inkblot-duration-instant: 0ms; /** No animation */
46
57
  --inkblot-duration-fast: 120ms; /** Micro-interactions, hovers — fast enough to feel physical */
47
58
  --inkblot-duration-normal: 200ms; /** Standard transitions */
@@ -170,6 +181,20 @@
170
181
  --inkblot-dark-color-status-warning: #e0a020; /** Warm amber on dark */
171
182
  --inkblot-dark-color-status-error: #e05a52; /** Warm red on dark */
172
183
  --inkblot-dark-color-status-info: #7ab8d6; /** Soft warm blue on dark */
184
+ --inkblot-semantic-devtools-color-background-app: var(--inkblot-color-devtools-background); /** Full dev shell background */
185
+ --inkblot-semantic-devtools-color-background-surface: var(--inkblot-color-devtools-surface); /** Panels, modals, dropdowns */
186
+ --inkblot-semantic-devtools-color-background-surface-elevated: var(--inkblot-color-devtools-surface); /** Optional second elevation — same token until a lighter step is needed */
187
+ --inkblot-semantic-devtools-color-text-primary: var(--inkblot-color-devtools-text-primary); /** Body and titles in dev UI */
188
+ --inkblot-semantic-devtools-color-text-muted: var(--inkblot-color-devtools-text-muted); /** Meta, captions, disabled-adjacent copy */
189
+ --inkblot-semantic-devtools-color-text-on-primary: var(--inkblot-color-devtools-text-primary); /** Text on primary/dominant buttons */
190
+ --inkblot-semantic-devtools-color-border-default: var(--inkblot-color-devtools-border); /** Dividers and field outlines */
191
+ --inkblot-semantic-devtools-color-border-strong: var(--inkblot-color-devtools-support); /** Drag handles, resize accents — use at low opacity if needed */
192
+ --inkblot-semantic-devtools-color-accent-brand: var(--inkblot-color-devtools-dominant); /** Dev chrome brand strip — blue, not citron */
193
+ --inkblot-semantic-devtools-color-accent-positive: var(--inkblot-color-devtools-accent); /** Build passed, tests green, healthy status */
194
+ --inkblot-semantic-devtools-color-interactive-primary: var(--inkblot-color-devtools-primary); /** Primary buttons, submit, run */
195
+ --inkblot-semantic-devtools-color-interactive-primary-hover: var(--inkblot-color-devtools-primary-hover); /** Hover state for primary */
196
+ --inkblot-semantic-devtools-color-interactive-ghost: var(--inkblot-color-devtools-text-muted); /** Low-emphasis controls — pair with transparent or surface bg */
197
+ --inkblot-semantic-devtools-color-interactive-focus: var(--inkblot-color-devtools-focus); /** Focus ring color */
173
198
  --inkblot-semantic-color-background-primary: var(--inkblot-color-neutral-gray-50); /** Body background — warm off-white with barely perceptible beige */
174
199
  --inkblot-semantic-color-background-secondary: var(--inkblot-color-neutral-white); /** Elevated surfaces — clean white floating above base */
175
200
  --inkblot-semantic-color-background-tertiary: var(--inkblot-color-neutral-gray-100); /** Grouped content, inset areas */