@jaimevalasek/aioson 1.5.1 → 1.6.0

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 (131) hide show
  1. package/README.md +6 -0
  2. package/docs/design-previews/aurora-command-ui-website.html +884 -0
  3. package/docs/design-previews/aurora-command-ui.html +682 -0
  4. package/docs/design-previews/bold-editorial-ui-website.html +658 -0
  5. package/docs/design-previews/bold-editorial-ui.html +717 -0
  6. package/docs/design-previews/clean-saas-ui-website.html +1202 -0
  7. package/docs/design-previews/clean-saas-ui.html +549 -0
  8. package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
  9. package/docs/design-previews/cognitive-core-ui.html +463 -0
  10. package/docs/design-previews/glassmorphism-ui-website.html +572 -0
  11. package/docs/design-previews/glassmorphism-ui.html +886 -0
  12. package/docs/design-previews/index.html +699 -0
  13. package/docs/design-previews/interface-design-website.html +1187 -0
  14. package/docs/design-previews/interface-design.html +513 -0
  15. package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
  16. package/docs/design-previews/neo-brutalist-ui.html +797 -0
  17. package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
  18. package/docs/design-previews/premium-command-center-ui.html +552 -0
  19. package/docs/design-previews/warm-craft-ui-website.html +684 -0
  20. package/docs/design-previews/warm-craft-ui.html +739 -0
  21. package/docs/en/cli-reference.md +20 -9
  22. package/docs/pt/README.md +7 -0
  23. package/docs/pt/agent-sharding.md +132 -0
  24. package/docs/pt/agentes.md +8 -2
  25. package/docs/pt/busca-de-contexto.md +129 -0
  26. package/docs/pt/cache-de-contexto.md +156 -0
  27. package/docs/pt/comandos-cli.md +28 -0
  28. package/docs/pt/design-hybrid-forge.md +107 -0
  29. package/docs/pt/inicio-rapido.md +54 -3
  30. package/docs/pt/inteligencia-adaptativa.md +324 -0
  31. package/docs/pt/monitor-de-contexto.md +104 -0
  32. package/docs/pt/recuperacao-de-sessao.md +125 -0
  33. package/docs/pt/sandbox.md +125 -0
  34. package/docs/pt/skills.md +98 -6
  35. package/package.json +1 -1
  36. package/src/agent-loader.js +280 -0
  37. package/src/cli.js +94 -0
  38. package/src/commands/agent-loader.js +85 -0
  39. package/src/commands/context-cache.js +90 -0
  40. package/src/commands/context-monitor.js +92 -0
  41. package/src/commands/context-search.js +66 -0
  42. package/src/commands/design-hybrid-options.js +385 -0
  43. package/src/commands/health.js +214 -0
  44. package/src/commands/init.js +54 -13
  45. package/src/commands/install.js +52 -13
  46. package/src/commands/learning-evolve.js +355 -0
  47. package/src/commands/live.js +34 -0
  48. package/src/commands/recovery.js +43 -0
  49. package/src/commands/sandbox.js +37 -0
  50. package/src/commands/setup-context.js +22 -2
  51. package/src/commands/setup.js +178 -0
  52. package/src/commands/skill.js +79 -32
  53. package/src/commands/tool-registry-cmd.js +232 -0
  54. package/src/commands/update.js +7 -0
  55. package/src/constants.js +9 -0
  56. package/src/context-cache.js +159 -0
  57. package/src/context-search.js +326 -0
  58. package/src/design-variation-catalog.js +503 -0
  59. package/src/i18n/messages/en.js +32 -2
  60. package/src/i18n/messages/es.js +30 -2
  61. package/src/i18n/messages/fr.js +30 -2
  62. package/src/i18n/messages/pt-BR.js +32 -2
  63. package/src/install-animation.js +260 -0
  64. package/src/install-profile.js +143 -0
  65. package/src/install-wizard.js +474 -0
  66. package/src/installer.js +38 -10
  67. package/src/parser.js +7 -1
  68. package/src/recovery-context-session.js +154 -0
  69. package/src/runtime-store.js +97 -1
  70. package/src/sandbox.js +177 -0
  71. package/src/tool-executor.js +94 -0
  72. package/src/updater.js +11 -3
  73. package/template/.aioson/agents/analyst.md +58 -3
  74. package/template/.aioson/agents/architect.md +38 -0
  75. package/template/.aioson/agents/design-hybrid-forge.md +127 -0
  76. package/template/.aioson/agents/dev.md +103 -0
  77. package/template/.aioson/agents/deyvin.md +57 -0
  78. package/template/.aioson/agents/pm.md +58 -0
  79. package/template/.aioson/agents/product.md +28 -0
  80. package/template/.aioson/agents/qa.md +79 -0
  81. package/template/.aioson/agents/setup.md +65 -3
  82. package/template/.aioson/agents/sheldon.md +107 -6
  83. package/template/.aioson/agents/tester.md +156 -0
  84. package/template/.aioson/config.md +15 -0
  85. package/template/.aioson/context/forensics/.gitkeep +0 -0
  86. package/template/.aioson/context/seeds/seed-example.md +27 -0
  87. package/template/.aioson/context/user-profile.md +42 -0
  88. package/template/.aioson/locales/en/agents/setup.md +33 -1
  89. package/template/.aioson/locales/es/agents/setup.md +33 -1
  90. package/template/.aioson/locales/fr/agents/setup.md +33 -1
  91. package/template/.aioson/locales/pt-BR/agents/setup.md +33 -1
  92. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
  93. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
  94. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
  95. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
  96. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
  97. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
  98. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
  99. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
  100. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
  101. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
  102. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
  103. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
  104. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
  105. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
  106. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
  107. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
  108. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
  109. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
  110. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
  111. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
  112. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
  113. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
  114. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
  115. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
  116. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +45 -0
  117. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
  118. package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
  119. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
  120. package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
  121. package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +66 -0
  122. package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
  123. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +144 -0
  124. package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
  125. package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
  126. package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +291 -0
  127. package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +117 -0
  128. package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +188 -0
  129. package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
  130. package/template/AGENTS.md +23 -1
  131. package/template/CLAUDE.md +1 -0
@@ -0,0 +1,334 @@
1
+ # Dashboards — Neo-Brutalist UI
2
+
3
+ Rules and presets for data-heavy interfaces. The dashboard punk expression mode applied in practice.
4
+
5
+ ---
6
+
7
+ ## General Rules
8
+
9
+ ### Stat numbers
10
+ - Always `font-family: var(--font-mono)` — the primary differentiator is mono, not serif or display
11
+ - Large: `var(--text-3xl)` minimum for hero stats, `var(--text-xl)` for secondary
12
+ - No decoration — the number is the visual
13
+
14
+ ### Charts
15
+ - No gradient fills — flat colors at fixed opacity (`opacity: 0.3` for area fills)
16
+ - Bar charts: `border: var(--border-subtle)` on each bar, `border-radius: var(--radius-none)`
17
+ - Line charts: `stroke-width: 2.5px` minimum, solid dots (not hollow)
18
+ - Grid lines: `var(--border-subtle)`, full grid visible
19
+ - Axis labels: `font-family: var(--font-mono)`, `font-size: var(--text-xs)`
20
+ - No fancy tooltips — simple border box, mono text
21
+
22
+ ### Tables
23
+ - Full grid borders (every cell) — not minimal. This is non-negotiable for brutalist dashboards
24
+ - Header: `bg-elevated`, font-mono uppercase
25
+ - Data cells: mono font for numbers, dates, IDs, statuses
26
+
27
+ ### General
28
+ - Background: `bg-base` (cream off-white in light) — dashboards are "printed", not dark by default
29
+ - All cards: `border-thicker`, `shadow-md`, hover → `shadow-lg`
30
+ - Empty states: `[NO DATA]` in mono — no illustrations, no cheerful messages
31
+ - Status indicators: saturated green/amber/red at full strength — never muted
32
+
33
+ ---
34
+
35
+ ## Chart Color Palette
36
+
37
+ ```css
38
+ --chart-1: var(--accent); /* #FACC15 — yellow — primary series */
39
+ --chart-2: var(--accent-red); /* red — negative / error series */
40
+ --chart-3: var(--accent-blue); /* blue — secondary series */
41
+ --chart-4: var(--accent-green); /* green — positive / success */
42
+ --chart-5: var(--accent-orange); /* orange — warning / tertiary */
43
+ --chart-6: var(--border-color); /* black/white — neutral baseline */
44
+ ```
45
+
46
+ Usage:
47
+ - Single series: `--chart-1` (yellow)
48
+ - Two series: `--chart-1` + `--chart-3` (yellow + blue)
49
+ - Success/failure: `--chart-4` + `--chart-2` (green + red)
50
+ - Do not use more than 4 colors in a single chart
51
+
52
+ ---
53
+
54
+ ## Preset 1 — DevOps Dashboard
55
+
56
+ For: CI/CD pipelines, deployment tracking, service health, infrastructure monitoring.
57
+ Expression mode: Dashboard Punk.
58
+
59
+ ### Layout
60
+ ```
61
+ [STATUS GRID: colored cells (green/amber/red), border-thick each, 4-8 cols]
62
+
63
+ [DEPLOY TIMELINE: horizontal, mono timestamps, status badges]
64
+
65
+ ┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
66
+ │ ERROR RATE │ │ P95 LATENCY │ │ DEPLOY FREQUENCY │
67
+ │ [line chart, red] │ │ [line chart, blue] │ │ [bar chart, green] │
68
+ │ border-thicker │ │ │ │ │
69
+ └────────────────────┘ └────────────────────┘ └────────────────────┘
70
+
71
+ [SERVICE HEALTH TABLE: full grid, service name | status badge | uptime mono | p99 mono | last incident mono]
72
+
73
+ [UPTIME COUNTERS: 3-4 stats in a strip — mono text-3xl, "99.97%"]
74
+ ```
75
+
76
+ ### Status grid pattern
77
+ ```css
78
+ .status-grid {
79
+ display: grid;
80
+ grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
81
+ gap: 0;
82
+ }
83
+
84
+ .status-cell {
85
+ border: var(--border-subtle);
86
+ padding: var(--space-3);
87
+ text-align: center;
88
+ font-family: var(--font-mono);
89
+ font-size: var(--text-xs);
90
+ font-weight: var(--weight-bold);
91
+ }
92
+
93
+ .status-cell--healthy { background: var(--semantic-green-dim); color: var(--semantic-green); }
94
+ .status-cell--warning { background: var(--semantic-amber-dim); color: var(--semantic-amber); }
95
+ .status-cell--down { background: var(--semantic-red-dim); color: var(--semantic-red); }
96
+ ```
97
+
98
+ ### CLI-style status badges
99
+ ```
100
+ [PASS] → bg: semantic-green-dim, text: semantic-green, border: semantic-green
101
+ [FAIL] → bg: semantic-red-dim, text: semantic-red, border: semantic-red
102
+ [RUNNING] → bg: semantic-amber-dim, text: semantic-amber, border: semantic-amber
103
+ [SKIP] → bg: bg-elevated, text: text-muted
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Preset 2 — Indie SaaS Dashboard
109
+
110
+ For: bootstrapped SaaS, side projects, small products. Revenue and growth metrics.
111
+ Expression mode: Indie Product.
112
+
113
+ ### Layout
114
+ ```
115
+ [MRR HERO CARD: text-4xl mono bold, hard shadow-lg, sticker badge "[THIS MONTH]"]
116
+
117
+ ┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
118
+ │ NEW SIGNUPS │ │ CHURN RATE │ │ TRIAL → PAID │
119
+ │ mono text-2xl │ │ mono text-2xl │ │ mono text-2xl │
120
+ │ trend badge │ │ trend badge │ │ progress bar thick │
121
+ └────────────────────┘ └────────────────────┘ └────────────────────┘
122
+
123
+ ┌───────────────────────────────────────────────────┐
124
+ │ SUBSCRIBER CHART │
125
+ │ Area chart, accent fill 0.3 opacity, no gradient │
126
+ │ brutalist card, border-thicker │
127
+ └───────────────────────────────────────────────────┘
128
+
129
+ [RECENT SIGNUPS TABLE: full grid | avatar (square) | name | email mono | plan badge | date mono]
130
+
131
+ [FUNNEL: horizontal bar chart — trial/active/churned with thick bars]
132
+ ```
133
+
134
+ ### MRR hero card
135
+ ```css
136
+ .mrr-hero {
137
+ background: var(--bg-surface);
138
+ border: var(--border-thickest);
139
+ box-shadow: var(--shadow-lg);
140
+ padding: var(--space-8) var(--space-10);
141
+ position: relative;
142
+ }
143
+
144
+ .mrr-hero__label {
145
+ font-family: var(--font-mono);
146
+ font-size: var(--text-xs);
147
+ text-transform: uppercase;
148
+ letter-spacing: var(--tracking-wider);
149
+ color: var(--text-secondary);
150
+ margin-bottom: var(--space-2);
151
+ }
152
+
153
+ .mrr-hero__value {
154
+ font-family: var(--font-mono);
155
+ font-size: var(--text-4xl);
156
+ font-weight: var(--weight-extrabold);
157
+ color: var(--text-heading);
158
+ letter-spacing: var(--tracking-tight);
159
+ }
160
+
161
+ /* Position sticker badge top-right */
162
+ .mrr-hero__sticker {
163
+ position: absolute;
164
+ top: var(--space-4);
165
+ right: var(--space-4);
166
+ }
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Preset 3 — Project Tracker Dashboard
172
+
173
+ For: task management, sprint tracking, team workload, project status.
174
+ Expression mode: Indie Product or Dashboard Punk.
175
+
176
+ ### Layout
177
+ ```
178
+ [STATUS BADGES STRIP: "[12 TODO]" "[5 IN PROGRESS]" "[28 DONE]" — mono, bordered, full saturation]
179
+
180
+ ┌──────────────────────────┐ ┌────────────────────────────────┐
181
+ │ BURNDOWN CHART │ │ TEAM WORKLOAD │
182
+ │ line chart │ │ horizontal bar per member │
183
+ │ ideal vs actual │ │ thick bars, mono name labels │
184
+ └──────────────────────────┘ └────────────────────────────────┘
185
+
186
+ [TASK TABLE: full grid | priority dot | title | assignee avatar square | due date mono | status badge]
187
+
188
+ [DEADLINE COUNTDOWN: mono bold text-xl "3 DAYS REMAINING" in accent card]
189
+ ```
190
+
191
+ ### Status count strip
192
+ ```css
193
+ .status-strip {
194
+ display: flex;
195
+ gap: 0;
196
+ border: var(--border-thick);
197
+ overflow: hidden;
198
+ }
199
+
200
+ .status-strip__item {
201
+ flex: 1;
202
+ padding: var(--space-3) var(--space-4);
203
+ border-right: var(--border-thick);
204
+ font-family: var(--font-mono);
205
+ font-size: var(--text-sm);
206
+ font-weight: var(--weight-bold);
207
+ display: flex;
208
+ align-items: center;
209
+ gap: var(--space-2);
210
+ }
211
+
212
+ .status-strip__item:last-child { border-right: none; }
213
+ .status-strip__item--todo { background: var(--bg-elevated); }
214
+ .status-strip__item--progress { background: var(--semantic-amber-dim); }
215
+ .status-strip__item--done { background: var(--semantic-green-dim); }
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Preset 4 — Content Dashboard
221
+
222
+ For: blogs, newsletters, media products, content teams tracking performance.
223
+ Expression mode: Indie Product.
224
+
225
+ ### Layout
226
+ ```
227
+ [CONTENT STATUS STRIP: sticker badges — "[12 PUBLISHED]" "[4 DRAFT]" "[2 SCHEDULED]"]
228
+
229
+ ┌───────────────────────────────────────────────────────────────┐
230
+ │ CONTENT CALENDAR │
231
+ │ Grid: 7 cols (days), multiple rows (weeks), border all cells │
232
+ │ Status: colored bg fills (published=green, draft=amber, etc.) │
233
+ └───────────────────────────────────────────────────────────────┘
234
+
235
+ ┌────────────────────┐ ┌───────────────────────────────────────┐
236
+ │ TOP POSTS (7d) │ │ PERFORMANCE TABLE │
237
+ │ rank | title | │ │ full grid | title mono | views | CTR │
238
+ │ views mono │ │ mono numbers throughout │
239
+ └────────────────────┘ └───────────────────────────────────────┘
240
+ ```
241
+
242
+ ### Content calendar cell
243
+ ```css
244
+ .cal-cell {
245
+ border: var(--border-subtle);
246
+ min-height: 80px;
247
+ padding: var(--space-2);
248
+ vertical-align: top;
249
+ font-family: var(--font-mono);
250
+ font-size: var(--text-xs);
251
+ }
252
+
253
+ .cal-cell__date {
254
+ font-weight: var(--weight-bold);
255
+ color: var(--text-muted);
256
+ margin-bottom: var(--space-1);
257
+ }
258
+
259
+ .cal-item {
260
+ background: var(--accent-dim);
261
+ border: var(--border-subtle);
262
+ padding: 2px var(--space-2);
263
+ font-size: 11px;
264
+ overflow: hidden;
265
+ text-overflow: ellipsis;
266
+ white-space: nowrap;
267
+ }
268
+
269
+ .cal-item--published { background: var(--semantic-green-dim); }
270
+ .cal-item--draft { background: var(--semantic-amber-dim); }
271
+ .cal-item--scheduled { background: var(--semantic-blue-dim); }
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Preset 5 — Monitoring Dashboard
277
+
278
+ For: system uptime, infrastructure health, alert management, ops tooling.
279
+ Expression mode: Dashboard Punk.
280
+
281
+ ### Layout
282
+ ```
283
+ [TOP BAR: last updated "UPDATED 2m AGO" mono | incident count badge | ack button]
284
+
285
+ [HEALTH BOARD: NxM grid of colored status squares — one per service]
286
+ → green = healthy, yellow = degraded, red = down
287
+ → each cell: service name mono text-xs, status dot, p99 mono
288
+
289
+ ┌────────────────────┐ ┌────────────────────┐
290
+ │ LATENCY CHART │ │ ERROR RATE CHART │
291
+ │ line, blue │ │ line, red │
292
+ │ threshold line: │ │ thick bars, border │
293
+ │ dashed, red │ │ │
294
+ └────────────────────┘ └────────────────────┘
295
+
296
+ [RESOURCE USAGE: thick progress bars per service — cpu / memory / disk]
297
+
298
+ [ALERT LOG: mono, timestamped, severity badge, scrollable with border]
299
+ ```
300
+
301
+ ### Alert log
302
+ ```css
303
+ .alert-log {
304
+ background: var(--bg-surface);
305
+ border: var(--border-thicker);
306
+ max-height: 320px;
307
+ overflow-y: auto;
308
+ }
309
+
310
+ .alert-item {
311
+ display: grid;
312
+ grid-template-columns: auto 1fr auto;
313
+ gap: var(--space-3);
314
+ padding: var(--space-3) var(--space-4);
315
+ border-bottom: var(--border-subtle);
316
+ align-items: start;
317
+ font-family: var(--font-mono);
318
+ font-size: var(--text-xs);
319
+ }
320
+
321
+ .alert-item__time {
322
+ color: var(--text-muted);
323
+ white-space: nowrap;
324
+ }
325
+
326
+ .alert-item__message {
327
+ color: var(--text-primary);
328
+ line-height: 1.4;
329
+ }
330
+
331
+ .alert-item--critical { border-left: 4px solid var(--semantic-red); }
332
+ .alert-item--warning { border-left: 4px solid var(--semantic-amber); }
333
+ .alert-item--info { border-left: 4px solid var(--semantic-blue); }
334
+ ```
@@ -0,0 +1,342 @@
1
+ # Design Tokens — Neo-Brutalist UI
2
+
3
+ Single source of truth for all CSS variables. Apply via `data-theme="light"` / `data-theme="dark"` on the root container.
4
+
5
+ ---
6
+
7
+ ## Font imports
8
+
9
+ ```css
10
+ /* Google Fonts */
11
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap');
12
+ ```
13
+
14
+ System fallbacks (no external fonts):
15
+ ```css
16
+ --font-display: "Arial Black", Impact, system-ui, sans-serif;
17
+ --font-body: -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
18
+ --font-mono: "Courier New", Courier, monospace;
19
+ ```
20
+
21
+ ---
22
+
23
+ ## Typography
24
+
25
+ ```css
26
+ --font-display: 'Space Grotesk', system-ui, sans-serif;
27
+ /* Geometric with personality. Not as neutral as Inter, not as dramatic as Clash Display. */
28
+ /* Alternatives: 'DM Sans', 'Outfit', 'Plus Jakarta Sans' */
29
+
30
+ --font-body: 'Inter', system-ui, sans-serif;
31
+
32
+ --font-mono: 'JetBrains Mono', 'Space Mono', ui-monospace, monospace;
33
+ /* FIRST-CLASS CITIZEN: labels, metadata, badges, status, code, numbers, dates, IDs */
34
+ ```
35
+
36
+ ### Font sizes
37
+
38
+ ```css
39
+ --text-xs: 0.75rem; /* 12px — mono metadata, badges */
40
+ --text-sm: 0.875rem; /* 14px */
41
+ --text-base: 1rem; /* 16px */
42
+ --text-lg: 1.25rem; /* 20px */
43
+ --text-xl: 1.5rem; /* 24px */
44
+ --text-2xl: 2rem; /* 32px */
45
+ --text-3xl: 2.5rem; /* 40px */
46
+ --text-4xl: 3.5rem; /* 56px — hero headlines */
47
+ --text-5xl: 5rem; /* 80px — manifesto/zine statements */
48
+ ```
49
+
50
+ ### Font weights
51
+
52
+ ```css
53
+ --weight-regular: 400;
54
+ --weight-medium: 500;
55
+ --weight-semibold: 600;
56
+ --weight-bold: 700;
57
+ --weight-extrabold: 800; /* headings in indie/zine modes */
58
+ ```
59
+
60
+ ### Letter spacing
61
+
62
+ ```css
63
+ --tracking-tight: -0.03em; /* large headings */
64
+ --tracking-normal: 0em;
65
+ --tracking-wide: 0.05em; /* mono labels, uppercase badges */
66
+ --tracking-wider: 0.1em; /* uppercase section titles */
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Colors — Light Theme (default)
72
+
73
+ ```css
74
+ [data-theme="light"] {
75
+ /* Backgrounds */
76
+ --bg-void: #F5F0E8; /* warm off-white — newspaper feel, page background */
77
+ --bg-base: #FFFDF5; /* cream white — main content area */
78
+ --bg-surface: #FFFFFF; /* pure white — cards, panels */
79
+ --bg-elevated: #F5F0E8; /* off-white — hover state, nested sections */
80
+ --bg-overlay: #E8E0D0; /* deeper off-white — modals overlay, popovers */
81
+
82
+ /* Text */
83
+ --text-heading: #1A1A1A;
84
+ --text-primary: #2A2A2A;
85
+ --text-secondary: #666666;
86
+ --text-muted: #999999;
87
+ --text-disabled: #BBBBBB;
88
+
89
+ /* Primary accent — yellow is THE brutalist accent */
90
+ --accent: #FACC15; /* yellow-400 */
91
+ --accent-strong: #EAB308; /* yellow-500 — pressed state */
92
+ --accent-dim: rgba(250,204,21,.20);
93
+ --accent-hover: #EAB308;
94
+ --accent-contrast: #1A1A1A; /* black text on yellow bg */
95
+
96
+ /* Secondary accents — for Creative Playground mode */
97
+ --accent-red: #EF4444;
98
+ --accent-blue: #3B82F6;
99
+ --accent-green: #22C55E;
100
+ --accent-pink: #EC4899;
101
+ --accent-orange: #F97316;
102
+
103
+ /* Borders — THE most important token in this skill */
104
+ --border-subtle: 1px solid #1A1A1A; /* dividers, table cell borders */
105
+ --border-thick: 2px solid #1A1A1A; /* default interactive border */
106
+ --border-thicker: 3px solid #1A1A1A; /* cards, buttons, feature elements */
107
+ --border-thickest: 4px solid #1A1A1A; /* hero cards, main CTAs */
108
+
109
+ /* Border color only (for custom uses) */
110
+ --border-color: #1A1A1A;
111
+ --border-color-subtle: #CCCCCC;
112
+
113
+ /* Semantic */
114
+ --semantic-green: #22C55E;
115
+ --semantic-green-dim: rgba(34,197,94,.15);
116
+ --semantic-amber: #F59E0B;
117
+ --semantic-amber-dim: rgba(245,158,11,.15);
118
+ --semantic-red: #EF4444;
119
+ --semantic-red-dim: rgba(239,68,68,.15);
120
+ --semantic-blue: #3B82F6;
121
+ --semantic-blue-dim: rgba(59,130,246,.15);
122
+ }
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Colors — Dark Theme
128
+
129
+ ```css
130
+ [data-theme="dark"] {
131
+ /* Backgrounds */
132
+ --bg-void: #111111;
133
+ --bg-base: #1A1A1A;
134
+ --bg-surface: #242424;
135
+ --bg-elevated: #2E2E2E;
136
+ --bg-overlay: #383838;
137
+
138
+ /* Text */
139
+ --text-heading: #FFFFFF;
140
+ --text-primary: #E0E0E0;
141
+ --text-secondary: #999999;
142
+ --text-muted: #666666;
143
+ --text-disabled: #444444;
144
+
145
+ /* Primary accent — yellow stays strong in dark */
146
+ --accent: #FACC15;
147
+ --accent-strong: #EAB308;
148
+ --accent-dim: rgba(250,204,21,.20);
149
+ --accent-hover: #EAB308;
150
+ --accent-contrast: #1A1A1A;
151
+
152
+ /* Secondary accents — brighter in dark (but NOT neon — saturated and grounded) */
153
+ --accent-red: #F87171;
154
+ --accent-blue: #60A5FA;
155
+ --accent-green: #4ADE80;
156
+ --accent-pink: #F472B6;
157
+ --accent-orange: #FB923C;
158
+
159
+ /* Borders — inverted: light on dark */
160
+ --border-subtle: 1px solid #444444;
161
+ --border-thick: 2px solid #E0E0E0;
162
+ --border-thicker: 3px solid #E0E0E0;
163
+ --border-thickest: 4px solid #E0E0E0;
164
+
165
+ --border-color: #E0E0E0;
166
+ --border-color-subtle: #444444;
167
+
168
+ /* Semantic */
169
+ --semantic-green: #4ADE80;
170
+ --semantic-green-dim: rgba(74,222,128,.15);
171
+ --semantic-amber: #FCD34D;
172
+ --semantic-amber-dim: rgba(252,211,77,.15);
173
+ --semantic-red: #F87171;
174
+ --semantic-red-dim: rgba(248,113,113,.15);
175
+ --semantic-blue: #60A5FA;
176
+ --semantic-blue-dim: rgba(96,165,250,.15);
177
+ }
178
+ ```
179
+
180
+ ---
181
+
182
+ ## Shadows — Hard Offset (the most distinctive token)
183
+
184
+ ```css
185
+ /* ZERO BLUR. Solid offset. Non-negotiable. */
186
+
187
+ /* Light theme shadows — black offset */
188
+ --shadow-sm: 2px 2px 0 var(--border-color); /* small elements */
189
+ --shadow-md: 4px 4px 0 var(--border-color); /* cards, buttons */
190
+ --shadow-lg: 6px 6px 0 var(--border-color); /* featured cards, hover state */
191
+ --shadow-xl: 8px 8px 0 var(--border-color); /* hero CTA, main action */
192
+
193
+ /* Colored shadows — for Creative Playground mode */
194
+ --shadow-accent: 4px 4px 0 var(--accent);
195
+ --shadow-red: 4px 4px 0 var(--accent-red);
196
+ --shadow-blue: 4px 4px 0 var(--accent-blue);
197
+ --shadow-green: 4px 4px 0 var(--accent-green);
198
+ ```
199
+
200
+ Direction rule: **all hard shadows go bottom-right** (positive x, positive y). Never mix directions on the same page.
201
+
202
+ In dark theme, `--border-color` resolves to `#E0E0E0`, so shadows automatically invert to light-on-dark.
203
+
204
+ ---
205
+
206
+ ## Border Radius — Extremes Only
207
+
208
+ ```css
209
+ --radius-none: 0; /* DEFAULT — cards, inputs, buttons, most elements */
210
+ --radius-sm: 0.25rem; /* 4px — used rarely, only for very small inner elements */
211
+ --radius-md: 0.375rem; /* 6px — inputs optionally, max allowed before "too normal" */
212
+ --radius-full: 9999px; /* pills — badges, tags, status dots, pill buttons */
213
+ ```
214
+
215
+ **Rule:** use `--radius-none` (0) or `--radius-full` (9999px). Nothing between 6px and 9998px. The extreme contrast between square and pill is part of the aesthetic. `8–12px` radius is "clean-saas territory" — forbidden here.
216
+
217
+ ---
218
+
219
+ ## Spacing
220
+
221
+ 4px base rhythm. 8px standard unit.
222
+
223
+ ```css
224
+ --space-0: 0;
225
+ --space-1: 0.25rem; /* 4px */
226
+ --space-2: 0.5rem; /* 8px */
227
+ --space-3: 0.75rem; /* 12px */
228
+ --space-4: 1rem; /* 16px */
229
+ --space-5: 1.25rem; /* 20px */
230
+ --space-6: 1.5rem; /* 24px */
231
+ --space-8: 2rem; /* 32px */
232
+ --space-10: 2.5rem; /* 40px */
233
+ --space-12: 3rem; /* 48px */
234
+ --space-16: 4rem; /* 64px */
235
+ --space-20: 5rem; /* 80px — section gap minimum */
236
+ --space-24: 6rem; /* 96px */
237
+ --space-28: 7rem; /* 112px */
238
+ --space-32: 8rem; /* 128px */
239
+ ```
240
+
241
+ Section gaps: `--space-20` to `--space-28` between major page sections. Generous whitespace makes the thick borders breathe.
242
+
243
+ ---
244
+
245
+ ## Control Heights — Chunky (larger than other skills)
246
+
247
+ ```css
248
+ --control-xs: 2rem; /* 32px */
249
+ --control-sm: 2.25rem; /* 36px */
250
+ --control-md: 2.75rem; /* 44px — DEFAULT input/button */
251
+ --control-lg: 3.25rem; /* 52px — primary CTA button */
252
+ ```
253
+
254
+ Brutalist buttons are **chunky, not elegant**. The extra height reinforces the physical, constructed feel.
255
+
256
+ ---
257
+
258
+ ## Decorative Patterns
259
+
260
+ One pattern maximum per page. Applied to the background of ONE section only — never the whole page.
261
+
262
+ ```css
263
+ /* Dots */
264
+ .pattern-dots {
265
+ background-image: radial-gradient(var(--border-color) 1px, transparent 1px);
266
+ background-size: 20px 20px;
267
+ opacity: 0.15;
268
+ }
269
+
270
+ /* Horizontal lines */
271
+ .pattern-lines {
272
+ background-image: repeating-linear-gradient(
273
+ 0deg,
274
+ transparent,
275
+ transparent 19px,
276
+ var(--border-color) 19px,
277
+ var(--border-color) 20px
278
+ );
279
+ opacity: 0.12;
280
+ }
281
+
282
+ /* Full grid */
283
+ .pattern-grid {
284
+ background-image:
285
+ linear-gradient(var(--border-color) 1px, transparent 1px),
286
+ linear-gradient(90deg, var(--border-color) 1px, transparent 1px);
287
+ background-size: 20px 20px;
288
+ opacity: 0.10;
289
+ }
290
+
291
+ /* Checkerboard */
292
+ .pattern-checks {
293
+ background-image: repeating-conic-gradient(var(--bg-elevated) 0% 25%, transparent 0% 50%);
294
+ background-size: 20px 20px;
295
+ }
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Z-index layers
301
+
302
+ ```css
303
+ --z-base: 0;
304
+ --z-raised: 1;
305
+ --z-dropdown: 100;
306
+ --z-sticky: 200;
307
+ --z-overlay: 300;
308
+ --z-modal: 400;
309
+ --z-toast: 500;
310
+ ```
311
+
312
+ ---
313
+
314
+ ## Breakpoints
315
+
316
+ ```css
317
+ --breakpoint-sm: 640px;
318
+ --breakpoint-md: 768px;
319
+ --breakpoint-lg: 1024px; /* sidebar collapses to hamburger below this */
320
+ --breakpoint-xl: 1280px;
321
+ --breakpoint-2xl: 1536px;
322
+ ```
323
+
324
+ ---
325
+
326
+ ## Chart Color Palette
327
+
328
+ ```css
329
+ --chart-1: var(--accent); /* #FACC15 — yellow — primary series */
330
+ --chart-2: var(--accent-red); /* red — negative / error */
331
+ --chart-3: var(--accent-blue); /* blue — secondary series */
332
+ --chart-4: var(--accent-green); /* green — positive / success */
333
+ --chart-5: var(--accent-orange); /* orange — warning / tertiary */
334
+ --chart-6: var(--border-color); /* black/white — neutral baseline */
335
+ ```
336
+
337
+ Chart rules:
338
+ - Bar charts: `border: var(--border-subtle)` on each bar, flat fill (no gradient), `--radius-none`
339
+ - Line charts: `stroke-width: 2.5px` minimum (thicker than other skills), solid dot markers (not hollow)
340
+ - Area charts: flat fill at `opacity: 0.3` (no gradient)
341
+ - Grid lines: `--border-subtle`, full grid visible
342
+ - Axis labels: `font-family: var(--font-mono)`, `font-size: var(--text-xs)`