@jaimevalasek/aioson 1.30.0 → 1.30.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 (93) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/docs/design-previews/cognitive-core-ui-auth.html +95 -0
  3. package/docs/design-previews/cognitive-core-ui-kanban.html +231 -0
  4. package/docs/design-previews/cognitive-core-ui-list-detail.html +174 -0
  5. package/docs/design-previews/cognitive-core-ui-preview.css +1315 -0
  6. package/docs/design-previews/cognitive-core-ui-settings.html +142 -0
  7. package/docs/design-previews/cognitive-core-ui-website.html +190 -1009
  8. package/docs/design-previews/cognitive-core-ui.html +281 -463
  9. package/docs/design-previews/index.html +83 -31
  10. package/package.json +1 -1
  11. package/src/constants.js +578 -514
  12. package/template/.aioson/docs/integrations/dashboard-app-form-publish-mapping.md +183 -0
  13. package/template/.aioson/docs/play/README.md +74 -0
  14. package/template/.aioson/docs/play/agent-usage-guide.md +112 -0
  15. package/template/.aioson/docs/play/app-compatibility-guide.md +117 -0
  16. package/template/.aioson/docs/play/auth-services-and-testing.md +235 -0
  17. package/template/.aioson/docs/play/llm-data-and-bindings.md +238 -0
  18. package/template/.aioson/docs/play/manifest-and-runtime.md +267 -0
  19. package/template/.aioson/docs/play/source-map.md +104 -0
  20. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +266 -243
  21. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
  22. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
  23. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
  24. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
  25. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
  26. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +485 -482
  27. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +386 -387
  28. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +228 -205
  29. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
  30. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
  31. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
  32. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
  33. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
  34. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
  35. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
  36. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +233 -210
  37. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
  38. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
  39. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
  40. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
  41. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
  42. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
  43. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
  44. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +239 -203
  45. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
  46. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +417 -407
  47. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +289 -272
  48. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +525 -524
  49. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
  50. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +355 -289
  51. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +443 -437
  52. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +245 -222
  53. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
  54. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
  55. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
  56. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
  57. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
  58. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
  59. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
  60. package/template/.aioson/skills/design/interface-design/SKILL.md +68 -47
  61. package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
  62. package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
  63. package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +92 -71
  64. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
  65. package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
  66. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +236 -213
  67. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
  68. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
  69. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
  70. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
  71. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
  72. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
  73. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
  74. package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +83 -62
  75. package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
  76. package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
  77. package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
  78. package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
  79. package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
  80. package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +94 -66
  81. package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +366 -366
  82. package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
  83. package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
  84. package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
  85. package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +161 -161
  86. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +232 -209
  87. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
  88. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
  89. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
  90. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
  91. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
  92. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
  93. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
@@ -1,244 +1,244 @@
1
- # Design Tokens — Clean SaaS UI
2
-
3
- This file is the source of truth for all CSS variables. Always apply tokens from this file — never hardcode values.
4
-
5
- ---
6
-
7
- ## Token application scope
8
-
9
- Place root tokens on the page root or theme container:
10
-
11
- ```html
12
- <html data-theme="light">
13
- <!-- or -->
14
- <div data-theme="dark">
15
- ```
16
-
17
- All token overrides for dark theme go inside `[data-theme="dark"] { ... }`.
18
-
19
- ---
20
-
21
- ## Typography
22
-
23
- ```css
24
- :root {
25
- --font-display: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
26
- --font-body: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
27
- --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, monospace;
28
- }
29
- ```
30
-
31
- **Both display and body are sans-serif (Inter).** The differentiator is weight and tracking, not font family.
32
-
33
- - Headings: `font-weight: 600–700`, `letter-spacing: -0.02em`
34
- - Body: `font-weight: 400`, `letter-spacing: normal`
35
- - Mono: used ONLY for code, IDs, technical metadata — never for paragraphs or navigation
36
-
37
- ### Font sizes
38
-
39
- ```css
40
- :root {
41
- --text-xs: 0.75rem; /* 12px — helper text, captions, mono labels */
42
- --text-sm: 0.875rem; /* 14px — table data, form labels, nav items */
43
- --text-base: 1rem; /* 16px — body text */
44
- --text-lg: 1.125rem; /* 18px — section titles, card headings */
45
- --text-xl: 1.25rem; /* 20px */
46
- --text-2xl: 1.5rem; /* 24px — page titles */
47
- --text-3xl: 1.875rem; /* 30px — stat numbers */
48
- --text-4xl: 2.25rem; /* 36px — hero stat numbers */
49
- --text-5xl: 3rem; /* 48px — hero headings (marketing pages only) */
50
- }
51
- ```
52
-
53
- ---
54
-
55
- ## Colors — Light theme (default)
56
-
57
- ```css
58
- :root,
59
- [data-theme="light"] {
60
- /* Backgrounds */
61
- --bg-void: #F3F4F6; /* gray-100 — page background */
62
- --bg-base: #F9FAFB; /* gray-50 — app shell background */
63
- --bg-surface: #FFFFFF; /* cards, panels, sidebar */
64
- --bg-elevated: #F3F4F6; /* gray-100 — hover states, nested areas */
65
- --bg-overlay: #E5E7EB; /* gray-200 — overlays, dividers */
66
-
67
- /* Text */
68
- --text-heading: #111827; /* gray-900 — page titles, card headings */
69
- --text-primary: #374151; /* gray-700 — body, table data */
70
- --text-secondary: #6B7280; /* gray-500 — helper text, labels */
71
- --text-muted: #9CA3AF; /* gray-400 — placeholders, timestamps */
72
-
73
- /* Accent — professional blue */
74
- --accent: #2563EB; /* blue-600 */
75
- --accent-strong: #1D4ED8; /* blue-700 — hover on primary buttons */
76
- --accent-dim: rgba(37, 99, 235, 0.10); /* bg for accent highlights */
77
- --accent-hover: #1D4ED8;
78
- --accent-contrast: #FFFFFF; /* text on accent bg */
79
-
80
- /* Borders */
81
- --border-subtle: #F3F4F6; /* gray-100 — very subtle dividers */
82
- --border-default: #E5E7EB; /* gray-200 — standard borders */
83
- --border-medium: #D1D5DB; /* gray-300 — input borders, card borders */
84
- --border-strong: #9CA3AF; /* gray-400 — strong dividers */
85
- --border-accent: #2563EB; /* accent border — active states */
86
-
87
- /* Semantic */
88
- --semantic-success: #16A34A; /* green-600 */
89
- --semantic-success-dim: rgba(22, 163, 74, 0.10);
90
- --semantic-warning: #D97706; /* amber-600 */
91
- --semantic-warning-dim: rgba(217, 119, 6, 0.10);
92
- --semantic-danger: #DC2626; /* red-600 */
93
- --semantic-danger-dim: rgba(220, 38, 38, 0.10);
94
- --semantic-info: #2563EB; /* blue-600 — same as accent */
95
- --semantic-info-dim: rgba(37, 99, 235, 0.10);
96
- --semantic-neutral: #6B7280; /* gray-500 */
97
- --semantic-neutral-dim: rgba(107, 114, 128, 0.10);
98
- }
99
- ```
100
-
101
- ---
102
-
103
- ## Colors — Dark theme
104
-
105
- ```css
106
- [data-theme="dark"] {
107
- /* Backgrounds */
108
- --bg-void: #111827; /* gray-900 */
109
- --bg-base: #1F2937; /* gray-800 */
110
- --bg-surface: #374151; /* gray-700 */
111
- --bg-elevated: #4B5563; /* gray-600 */
112
- --bg-overlay: #6B7280; /* gray-500 */
113
-
114
- /* Text */
115
- --text-heading: #F9FAFB; /* gray-50 */
116
- --text-primary: #E5E7EB; /* gray-200 */
117
- --text-secondary: #9CA3AF; /* gray-400 */
118
- --text-muted: #6B7280; /* gray-500 */
119
-
120
- /* Accent — slightly brighter blue for dark bg */
121
- --accent: #3B82F6; /* blue-500 */
122
- --accent-strong: #2563EB; /* blue-600 */
123
- --accent-dim: rgba(59, 130, 246, 0.15);
124
- --accent-hover: #2563EB;
125
- --accent-contrast: #FFFFFF;
126
-
127
- /* Borders */
128
- --border-subtle: #1F2937;
129
- --border-default: #374151;
130
- --border-medium: #4B5563;
131
- --border-strong: #6B7280;
132
- --border-accent: #3B82F6;
133
-
134
- /* Semantic */
135
- --semantic-success: #22C55E; /* green-500 */
136
- --semantic-success-dim: rgba(34, 197, 94, 0.15);
137
- --semantic-warning: #F59E0B; /* amber-500 */
138
- --semantic-warning-dim: rgba(245, 158, 11, 0.15);
139
- --semantic-danger: #EF4444; /* red-500 */
140
- --semantic-danger-dim: rgba(239, 68, 68, 0.15);
141
- --semantic-info: #3B82F6;
142
- --semantic-info-dim: rgba(59, 130, 246, 0.15);
143
- --semantic-neutral: #9CA3AF;
144
- --semantic-neutral-dim: rgba(156, 163, 175, 0.15);
145
- }
146
- ```
147
-
148
- ---
149
-
150
- ## Shadows — Subtle (more subtle than other skills)
151
-
152
- ```css
153
- :root {
154
- --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
155
- --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
156
- --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
157
- --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.08);
158
- }
159
- ```
160
-
161
- **Note:** Shadows in Clean SaaS are nearly imperceptible. Separation comes primarily from borders and background differences, not from elevation shadows. Never use dramatic shadows.
162
-
163
- ---
164
-
165
- ## Border radius — Moderate
166
-
167
- ```css
168
- :root {
169
- --radius-sm: 0.25rem; /* 4px — badges, chips, tags */
170
- --radius-md: 0.375rem; /* 6px — inputs, buttons */
171
- --radius-lg: 0.5rem; /* 8px — cards, panels */
172
- --radius-xl: 0.75rem; /* 12px — modals, larger cards */
173
- --radius-2xl: 1rem; /* 16px — hero sections (marketing only) */
174
- --radius-full: 9999px; /* pills, avatars, toggle switches */
175
- }
176
- ```
177
-
178
- ---
179
-
180
- ## Spacing — 8px base grid
181
-
182
- ```css
183
- :root {
184
- --space-1: 0.25rem; /* 4px */
185
- --space-2: 0.5rem; /* 8px */
186
- --space-3: 0.75rem; /* 12px */
187
- --space-4: 1rem; /* 16px */
188
- --space-5: 1.25rem; /* 20px */
189
- --space-6: 1.5rem; /* 24px — standard content padding */
190
- --space-8: 2rem; /* 32px */
191
- --space-10: 2.5rem; /* 40px */
192
- --space-12: 3rem; /* 48px */
193
- --space-16: 4rem; /* 64px */
194
- --space-20: 5rem; /* 80px */
195
- }
196
- ```
197
-
198
- ---
199
-
200
- ## Control heights — Strict
201
-
202
- ```css
203
- :root {
204
- --control-xs: 1.75rem; /* 28px — compact table actions, icon buttons */
205
- --control-sm: 2rem; /* 32px — small buttons, compact selects */
206
- --control-md: 2.25rem; /* 36px — DEFAULT for all inputs and buttons */
207
- --control-lg: 2.5rem; /* 40px — prominent inputs, search bars */
208
- }
209
- ```
210
-
211
- **Note:** `control-md` is 36px (not 40px like warm-craft). Clean SaaS is more compact.
212
-
213
- Every button and input **must** use a `--control-*` height. Never freehand a control height.
214
-
215
- ---
216
-
217
- ## Z-index scale
218
-
219
- ```css
220
- :root {
221
- --z-base: 0;
222
- --z-raised: 10;
223
- --z-sticky: 100; /* sticky headers, filter bars */
224
- --z-overlay: 200; /* overlays, backdrops */
225
- --z-modal: 300; /* modals, dialogs */
226
- --z-toast: 400; /* toast notifications */
227
- --z-tooltip: 500; /* tooltips */
228
- }
229
- ```
230
-
231
- ---
232
-
233
- ## Token scope guardrails
234
-
235
- | Token | Allowed on | Never on |
236
- |-------|-----------|---------|
237
- | `--bg-void` | page root, app shell | cards, modals |
238
- | `--bg-surface` | cards, sidebar, modals | page background |
239
- | `--bg-elevated` | hover states, nested panels | main surfaces |
240
- | `--accent` | buttons, links, active states, borders | body text |
241
- | `--accent-dim` | bg of highlighted rows, selected states | interactive elements |
242
- | `--text-muted` | timestamps, metadata, placeholders | headings, primary body |
243
- | `--font-mono` | code, IDs, technical metadata | navigation, headings, paragraphs |
244
- | `--shadow-lg` | modals, popovers | cards (use shadow-sm or shadow-md) |
1
+ # Design Tokens — Clean SaaS UI
2
+
3
+ This file is the source of truth for all CSS variables. Always apply tokens from this file — never hardcode values.
4
+
5
+ ---
6
+
7
+ ## Token application scope
8
+
9
+ Place root tokens on the page root or theme container:
10
+
11
+ ```html
12
+ <html data-theme="light">
13
+ <!-- or -->
14
+ <div data-theme="dark">
15
+ ```
16
+
17
+ All token overrides for dark theme go inside `[data-theme="dark"] { ... }`.
18
+
19
+ ---
20
+
21
+ ## Typography
22
+
23
+ ```css
24
+ :root {
25
+ --font-display: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
26
+ --font-body: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
27
+ --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, monospace;
28
+ }
29
+ ```
30
+
31
+ **Both display and body are sans-serif (Inter).** The differentiator is weight and tracking, not font family.
32
+
33
+ - Headings: `font-weight: 600–700`, `letter-spacing: 0`
34
+ - Body: `font-weight: 400`, `letter-spacing: normal`
35
+ - Mono: used ONLY for code, IDs, technical metadata — never for paragraphs or navigation
36
+
37
+ ### Font sizes
38
+
39
+ ```css
40
+ :root {
41
+ --text-xs: 0.75rem; /* 12px — helper text, captions, mono labels */
42
+ --text-sm: 0.875rem; /* 14px — table data, form labels, nav items */
43
+ --text-base: 1rem; /* 16px — body text */
44
+ --text-lg: 1.125rem; /* 18px — section titles, card headings */
45
+ --text-xl: 1.25rem; /* 20px */
46
+ --text-2xl: 1.5rem; /* 24px — page titles */
47
+ --text-3xl: 1.875rem; /* 30px — stat numbers */
48
+ --text-4xl: 2.25rem; /* 36px — hero stat numbers */
49
+ --text-5xl: 3rem; /* 48px — hero headings (marketing pages only) */
50
+ }
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Colors — Light theme (default)
56
+
57
+ ```css
58
+ :root,
59
+ [data-theme="light"] {
60
+ /* Backgrounds */
61
+ --bg-void: #F3F4F6; /* gray-100 — page background */
62
+ --bg-base: #F9FAFB; /* gray-50 — app shell background */
63
+ --bg-surface: #FFFFFF; /* cards, panels, sidebar */
64
+ --bg-elevated: #F3F4F6; /* gray-100 — hover states, nested areas */
65
+ --bg-overlay: #E5E7EB; /* gray-200 — overlays, dividers */
66
+
67
+ /* Text */
68
+ --text-heading: #111827; /* gray-900 — page titles, card headings */
69
+ --text-primary: #374151; /* gray-700 — body, table data */
70
+ --text-secondary: #6B7280; /* gray-500 — helper text, labels */
71
+ --text-muted: #9CA3AF; /* gray-400 — placeholders, timestamps */
72
+
73
+ /* Accent — professional blue */
74
+ --accent: #2563EB; /* blue-600 */
75
+ --accent-strong: #1D4ED8; /* blue-700 — hover on primary buttons */
76
+ --accent-dim: rgba(37, 99, 235, 0.10); /* bg for accent highlights */
77
+ --accent-hover: #1D4ED8;
78
+ --accent-contrast: #FFFFFF; /* text on accent bg */
79
+
80
+ /* Borders */
81
+ --border-subtle: #F3F4F6; /* gray-100 — very subtle dividers */
82
+ --border-default: #E5E7EB; /* gray-200 — standard borders */
83
+ --border-medium: #D1D5DB; /* gray-300 — input borders, card borders */
84
+ --border-strong: #9CA3AF; /* gray-400 — strong dividers */
85
+ --border-accent: #2563EB; /* accent border — active states */
86
+
87
+ /* Semantic */
88
+ --semantic-success: #16A34A; /* green-600 */
89
+ --semantic-success-dim: rgba(22, 163, 74, 0.10);
90
+ --semantic-warning: #D97706; /* amber-600 */
91
+ --semantic-warning-dim: rgba(217, 119, 6, 0.10);
92
+ --semantic-danger: #DC2626; /* red-600 */
93
+ --semantic-danger-dim: rgba(220, 38, 38, 0.10);
94
+ --semantic-info: #2563EB; /* blue-600 — same as accent */
95
+ --semantic-info-dim: rgba(37, 99, 235, 0.10);
96
+ --semantic-neutral: #6B7280; /* gray-500 */
97
+ --semantic-neutral-dim: rgba(107, 114, 128, 0.10);
98
+ }
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Colors — Dark theme
104
+
105
+ ```css
106
+ [data-theme="dark"] {
107
+ /* Backgrounds */
108
+ --bg-void: #111827; /* gray-900 */
109
+ --bg-base: #1F2937; /* gray-800 */
110
+ --bg-surface: #374151; /* gray-700 */
111
+ --bg-elevated: #4B5563; /* gray-600 */
112
+ --bg-overlay: #6B7280; /* gray-500 */
113
+
114
+ /* Text */
115
+ --text-heading: #F9FAFB; /* gray-50 */
116
+ --text-primary: #E5E7EB; /* gray-200 */
117
+ --text-secondary: #9CA3AF; /* gray-400 */
118
+ --text-muted: #6B7280; /* gray-500 */
119
+
120
+ /* Accent — slightly brighter blue for dark bg */
121
+ --accent: #3B82F6; /* blue-500 */
122
+ --accent-strong: #2563EB; /* blue-600 */
123
+ --accent-dim: rgba(59, 130, 246, 0.15);
124
+ --accent-hover: #2563EB;
125
+ --accent-contrast: #FFFFFF;
126
+
127
+ /* Borders */
128
+ --border-subtle: #1F2937;
129
+ --border-default: #374151;
130
+ --border-medium: #4B5563;
131
+ --border-strong: #6B7280;
132
+ --border-accent: #3B82F6;
133
+
134
+ /* Semantic */
135
+ --semantic-success: #22C55E; /* green-500 */
136
+ --semantic-success-dim: rgba(34, 197, 94, 0.15);
137
+ --semantic-warning: #F59E0B; /* amber-500 */
138
+ --semantic-warning-dim: rgba(245, 158, 11, 0.15);
139
+ --semantic-danger: #EF4444; /* red-500 */
140
+ --semantic-danger-dim: rgba(239, 68, 68, 0.15);
141
+ --semantic-info: #3B82F6;
142
+ --semantic-info-dim: rgba(59, 130, 246, 0.15);
143
+ --semantic-neutral: #9CA3AF;
144
+ --semantic-neutral-dim: rgba(156, 163, 175, 0.15);
145
+ }
146
+ ```
147
+
148
+ ---
149
+
150
+ ## Shadows — Subtle (more subtle than other skills)
151
+
152
+ ```css
153
+ :root {
154
+ --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
155
+ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
156
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
157
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.08);
158
+ }
159
+ ```
160
+
161
+ **Note:** Shadows in Clean SaaS are nearly imperceptible. Separation comes primarily from borders and background differences, not from elevation shadows. Never use dramatic shadows.
162
+
163
+ ---
164
+
165
+ ## Border radius — Moderate
166
+
167
+ ```css
168
+ :root {
169
+ --radius-sm: 0.25rem; /* 4px — badges, chips, tags */
170
+ --radius-md: 0.375rem; /* 6px — inputs, buttons */
171
+ --radius-lg: 0.5rem; /* 8px — cards, panels */
172
+ --radius-xl: 0.75rem; /* 12px — modals, larger cards */
173
+ --radius-2xl: 1rem; /* 16px — hero sections (marketing only) */
174
+ --radius-full: 9999px; /* pills, avatars, toggle switches */
175
+ }
176
+ ```
177
+
178
+ ---
179
+
180
+ ## Spacing — 8px base grid
181
+
182
+ ```css
183
+ :root {
184
+ --space-1: 0.25rem; /* 4px */
185
+ --space-2: 0.5rem; /* 8px */
186
+ --space-3: 0.75rem; /* 12px */
187
+ --space-4: 1rem; /* 16px */
188
+ --space-5: 1.25rem; /* 20px */
189
+ --space-6: 1.5rem; /* 24px — standard content padding */
190
+ --space-8: 2rem; /* 32px */
191
+ --space-10: 2.5rem; /* 40px */
192
+ --space-12: 3rem; /* 48px */
193
+ --space-16: 4rem; /* 64px */
194
+ --space-20: 5rem; /* 80px */
195
+ }
196
+ ```
197
+
198
+ ---
199
+
200
+ ## Control heights — Strict
201
+
202
+ ```css
203
+ :root {
204
+ --control-xs: 1.75rem; /* 28px — compact table actions, icon buttons */
205
+ --control-sm: 2rem; /* 32px — small buttons, compact selects */
206
+ --control-md: 2.25rem; /* 36px — DEFAULT for all inputs and buttons */
207
+ --control-lg: 2.5rem; /* 40px — prominent inputs, search bars */
208
+ }
209
+ ```
210
+
211
+ **Note:** `control-md` is 36px (not 40px like warm-craft). Clean SaaS is more compact.
212
+
213
+ Every button and input **must** use a `--control-*` height. Never freehand a control height.
214
+
215
+ ---
216
+
217
+ ## Z-index scale
218
+
219
+ ```css
220
+ :root {
221
+ --z-base: 0;
222
+ --z-raised: 10;
223
+ --z-sticky: 100; /* sticky headers, filter bars */
224
+ --z-overlay: 200; /* overlays, backdrops */
225
+ --z-modal: 300; /* modals, dialogs */
226
+ --z-toast: 400; /* toast notifications */
227
+ --z-tooltip: 500; /* tooltips */
228
+ }
229
+ ```
230
+
231
+ ---
232
+
233
+ ## Token scope guardrails
234
+
235
+ | Token | Allowed on | Never on |
236
+ |-------|-----------|---------|
237
+ | `--bg-void` | page root, app shell | cards, modals |
238
+ | `--bg-surface` | cards, sidebar, modals | page background |
239
+ | `--bg-elevated` | hover states, nested panels | main surfaces |
240
+ | `--accent` | buttons, links, active states, borders | body text |
241
+ | `--accent-dim` | bg of highlighted rows, selected states | interactive elements |
242
+ | `--text-muted` | timestamps, metadata, placeholders | headings, primary body |
243
+ | `--font-mono` | code, IDs, technical metadata | navigation, headings, paragraphs |
244
+ | `--shadow-lg` | modals, popovers | cards (use shadow-sm or shadow-md) |