css-is-awesome 1.19.0 → 1.19.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 (55) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +1 -1
  4. package/dist/tokens.d.ts +1 -1
  5. package/llm.txt +1 -1
  6. package/mcp/server.cjs +5 -4
  7. package/package.json +5 -1
  8. package/public/theme.css +61 -61
  9. package/public/themes/boilerplate/theme.css +6 -6
  10. package/public/themes/boilerplate-dark/theme.css +2 -2
  11. package/public/themes/boilerplate-light/theme.css +6 -6
  12. package/public/themes/cupertino/theme.css +3 -3
  13. package/public/themes/cupertino-dark/theme.css +2 -2
  14. package/public/themes/cupertino-light/theme.css +1 -1
  15. package/public/themes/glass/theme.css +4 -4
  16. package/public/themes/glass-dark/theme.css +1 -1
  17. package/public/themes/glass-light/theme.css +3 -3
  18. package/public/themes/graphite/theme.css +5 -5
  19. package/public/themes/graphite-dark/theme.css +2 -2
  20. package/public/themes/graphite-light/theme.css +3 -3
  21. package/public/themes/press/theme.css +2 -2
  22. package/public/themes/press-dark/theme.css +1 -1
  23. package/public/themes/press-light/theme.css +2 -2
  24. package/public/themes/prism/theme.css +2 -2
  25. package/public/themes/prism-light/theme.css +4 -4
  26. package/public/themes/sketchbook/theme.css +2 -2
  27. package/public/themes/sketchbook-dark/theme.css +1 -1
  28. package/public/themes/sketchbook-light/theme.css +2 -2
  29. package/public/themes/terminal/theme.css +1 -1
  30. package/public/themes/terminal-dark/theme.css +2 -2
  31. package/public/themes/terminal-light/theme.css +4 -4
  32. package/scripts/tokens-to-theme.cjs +59 -6
  33. package/scss/themes/boilerplate-dark.scss +2 -2
  34. package/scss/themes/boilerplate-light.scss +6 -6
  35. package/scss/themes/boilerplate.scss +6 -6
  36. package/scss/themes/cupertino-dark.scss +2 -2
  37. package/scss/themes/cupertino-light.scss +1 -1
  38. package/scss/themes/cupertino.scss +3 -3
  39. package/scss/themes/glass-dark.scss +1 -1
  40. package/scss/themes/glass-light.scss +3 -3
  41. package/scss/themes/glass.scss +4 -4
  42. package/scss/themes/graphite-dark.scss +2 -2
  43. package/scss/themes/graphite-light.scss +3 -3
  44. package/scss/themes/graphite.scss +5 -5
  45. package/scss/themes/press-dark.scss +1 -1
  46. package/scss/themes/press-light.scss +2 -2
  47. package/scss/themes/press.scss +2 -2
  48. package/scss/themes/prism-light.scss +4 -4
  49. package/scss/themes/prism.scss +2 -2
  50. package/scss/themes/sketchbook-dark.scss +1 -1
  51. package/scss/themes/sketchbook-light.scss +2 -2
  52. package/scss/themes/sketchbook.scss +2 -2
  53. package/scss/themes/terminal-dark.scss +2 -2
  54. package/scss/themes/terminal-light.scss +4 -4
  55. package/scss/themes/terminal.scss +1 -1
package/AGENTS.md CHANGED
@@ -365,7 +365,7 @@ Either way it exposes **33 tools** across 8 families:
365
365
  into a complete theme.css — every required token the file lacks inherits from a shipped base theme (`--base`,
366
366
  default boilerplate), unmapped paths pass through verbatim and are reported, a `--dark` file or paired
367
367
  `color-light`/`color-dark` groups become `light-dark()`, and the validator + WCAG audit run before anything is
368
- written. Same function as the MCP `theme_from_tokens` tool. Run any verb with `--help`. (`cia init` remains
368
+ written. Same function as the MCP `theme_from_tokens` tool; `npx cia theme map [--json] [--path <token.path>]` prints the design-token → cia-token mapping that verb applies (same data as the MCP `get_token_map` tool), for anyone who needs to map one token name the way the converter would. Run any verb with `--help`. (`cia init` remains
369
369
  planned.)
370
370
  - **JSON token export** — Tokens Studio-format sample in `figma-tokens/tokens.json`; it round-trips through `cia theme from-tokens` (paired light/dark groups → one `light-dark()` theme).
371
371
  - **`llm.txt`** — at the repo root and served from the docs site; single-fetch
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.19.2](https://github.com/Jerry2d3d/css-is-awesome/compare/v1.19.1...v1.19.2) (2026-09-23)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **themes:** clear 56 of 88 contrast warnings, none of them visible ([b756dcb](https://github.com/Jerry2d3d/css-is-awesome/commit/b756dcbb6e959868299095f009b4227104406c00))
9
+
10
+ ## [1.19.1](https://github.com/Jerry2d3d/css-is-awesome/compare/v1.19.0...v1.19.1) (2026-09-23)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **cli:** paired light/dark modes carried only colours; export the in-process entry point ([f1fe71f](https://github.com/Jerry2d3d/css-is-awesome/commit/f1fe71f8a91a8e7bf59e0b9e830585701beb9160))
16
+
17
+
18
+ ### Features
19
+
20
+ * **site:** cross-link the posts that explain a browser-support row (B6.4) ([44f40d8](https://github.com/Jerry2d3d/css-is-awesome/commit/44f40d8bf278113a81f7f2b643ad52390fb1af25))
21
+
3
22
  # [1.19.0](https://github.com/Jerry2d3d/css-is-awesome/compare/v1.18.0...v1.19.0) (2026-09-19)
4
23
 
5
24
 
package/README.md CHANGED
@@ -417,7 +417,7 @@ Full detail: [`/docs/testing`](https://cssisawesome.com/docs/testing/).
417
417
 
418
418
  **Stable, [published on npm](https://www.npmjs.com/package/css-is-awesome)** (first published 2026-09-01). The mixin API, functions, token contract, and theme architecture are stable and under strict SemVer — breaking changes require a major bump. See [`VERSIONING.md`](./VERSIONING.md) for the policy.
419
419
 
420
- The 1.0 surface is the v0.8 mixin-first reframe — twelve mixin renames, theme system collapsed to 8 single-file theme families, six zero-JS components, intrinsic-layout vocabulary, opt-in utilities — plus the recipes book, the Tailwind/Bootstrap migration on-ramp, print/PDF support, and the 33-tool MCP server (now also available zero-install via the companion [`css-is-awesome-mcp`](https://www.npmjs.com/package/css-is-awesome-mcp) package). The npm package ships ZERO runtime JavaScript by hard rule — nothing in it is loaded by a page; its Node tooling (CLI, MCP server, validators) never reaches the browser.
420
+ The 1.0 surface is the v0.8 mixin-first reframe — twelve mixin renames, theme system collapsed to 8 single-file theme families, six zero-JS components, intrinsic-layout vocabulary, opt-in utilities — plus the recipes book, the Tailwind/Bootstrap migration on-ramp, print/PDF support, the in-browser [Playground](https://cssisawesome.com/playground/), the design-tokens on-ramp (`npx cia theme from-tokens` / `theme map`), and the 33-tool MCP server (now also available zero-install via the companion [`css-is-awesome-mcp`](https://www.npmjs.com/package/css-is-awesome-mcp) package). The npm package ships ZERO runtime JavaScript by hard rule — nothing in it is loaded by a page; its Node tooling (CLI, MCP server, validators) never reaches the browser.
421
421
 
422
422
  See [CHANGELOG.md](./CHANGELOG.md) for the full history and [MIGRATION.md](./MIGRATION.md) for the v0.7 → v0.8 and v0.8 → v1.0 upgrade paths.
423
423
 
package/dist/tokens.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Generated from scripts/theme-contract.json on 2026-09-19.
1
+ // Generated from scripts/theme-contract.json on 2026-09-23.
2
2
  // Do not edit by hand. Run `npm run build:token-types` to regenerate.
3
3
 
4
4
  /** Every CSS custom property cia themes are required to declare. */
package/llm.txt CHANGED
@@ -198,4 +198,4 @@ Humans first. AI's role is to compose, not to lead the pitch.
198
198
 
199
199
  ---
200
200
 
201
- *Generated 2026-05-21 for cia v0.8. Updated 2026-05-23 for the v1.0 architecture lock, 2026-08-30 for the theme single-source rework (24 themes, 127+36 contract, themeable spacing, `:root, :root[data-theme]` selector), and 2026-09-04 for the shipped recipes count (5), the mobile-nav mixin family, and the dropdown popover guard. Update when the API surface changes.*
201
+ *Generated 2026-05-21 for cia v0.8. Updated 2026-05-23 for the v1.0 architecture lock, 2026-08-30 for the theme single-source rework (24 themes, 127+36 contract, themeable spacing, `:root, :root[data-theme]` selector), 2026-09-04 for the shipped recipes count (5), the mobile-nav mixin family, and the dropdown popover guard, and 2026-09-19 for the 32-recipe book, 33-tool MCP, contract 1.2 (127 + 41 in 10 features), the playground and the design-tokens on-ramp. Update when the API surface changes.*
package/mcp/server.cjs CHANGED
@@ -34,13 +34,13 @@
34
34
  * "mcpServers": {
35
35
  * "css-is-awesome": {
36
36
  * "command": "node",
37
- * "args": ["K:/Repo/css-is-awesome/mcp/server.cjs"]
37
+ * "args": ["node_modules/css-is-awesome/mcp/server.cjs"]
38
38
  * }
39
39
  * }
40
40
  * }
41
41
  *
42
- * Aligned with the canonical sibling MCP shape: ui-ux-builder, ideas-master,
43
- * video-maker. Response envelope is `{ total, items }` for list/search;
42
+ * Aligned with the canonical sibling MCP shape used across our other servers.
43
+ * Response envelope is `{ total, items }` for list/search;
44
44
  * get_* tools return the full record.
45
45
  */
46
46
 
@@ -1402,7 +1402,8 @@ async function startServer() {
1402
1402
  '{ "--token": value } map. Format is auto-detected. Every REQUIRED contract token the file does not supply ' +
1403
1403
  'is inherited from a shipped base theme (default boilerplate) and listed in report.inherited, so the output ' +
1404
1404
  'is always contract-complete; unmapped paths are emitted verbatim and listed in report.unmapped, never ' +
1405
- 'dropped. Pass `dark` (same format) or a single file with paired color-light/color-dark groups to get ' +
1405
+ 'dropped. Pass `dark` (same format), or one file with paired top-level groups — `light`/`dark` (each a full '
1406
+ + 'token set) or `color-light`/`color-dark` (each a colour set) — to get ' +
1406
1407
  'light-dark() values. Returns { css, report, validation } — validation is the same result validate_theme ' +
1407
1408
  'gives, run on the CSS before you write it anywhere.',
1408
1409
  inputSchema: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "css-is-awesome",
3
- "version": "1.19.0",
3
+ "version": "1.19.2",
4
4
  "description": "A token-driven SCSS design system with light/dark theming, semantic color tokens, and a 800+ LOC mixin API.",
5
5
  "homepage": "https://github.com/Jerry2d3d/css-is-awesome#readme",
6
6
  "bugs": {
@@ -41,6 +41,10 @@
41
41
  "./scss/main": "./scss/main.scss",
42
42
  "./scss/tokens": "./scss/tokens.scss",
43
43
  "./scss/mixins": "./scss/_mixins.scss",
44
+ "./scripts/tokens-to-theme.cjs": "./scripts/tokens-to-theme.cjs",
45
+ "./scripts/tokens-to-theme": "./scripts/tokens-to-theme.cjs",
46
+ "./scripts/theme-validator.js": "./scripts/theme-validator.js",
47
+ "./mcp/server.cjs": "./mcp/server.cjs",
44
48
  "./scss/generator": "./scss/_generator.scss",
45
49
  "./scss/utilities": "./scss/_utilities.scss",
46
50
  "./scss/animations": "./scss/_animations.scss",
package/public/theme.css CHANGED
@@ -38,14 +38,14 @@
38
38
  --ink-soft: light-dark(#1e293b, #e2e8f0);
39
39
  --ink-faint: light-dark(#475569, #94a3b8);
40
40
  --graphite: light-dark(#0f172a, #f1f5f9);
41
- --muted: light-dark(#64748b, #64748b);
41
+ --muted: light-dark(#718299, #64748b);
42
42
  /* Lines */
43
43
  --guide: light-dark(#cbd5e1, #334155);
44
44
  --guide-soft: light-dark(#e2e8f0, #1e293b);
45
45
  --hair: light-dark(#e2e8f0, #1e293b);
46
46
  --hair-soft: light-dark(#f1f5f9, #0f172a);
47
47
  /* Primary accent */
48
- --ai: light-dark(#2563eb, #3b82f6);
48
+ --ai: light-dark(#2563eb, #3d85f9);
49
49
  --ai-ink: light-dark(#1d4ed8, #60a5fa);
50
50
  --ai-wash: light-dark(#eff6ff, #1e3a8a);
51
51
  /* Seal — red */
@@ -58,9 +58,9 @@
58
58
  --code-bg: light-dark(#f8fafc, #020617);
59
59
  --code-ink: light-dark(#0f172a, #e2e8f0);
60
60
  --code-muted: light-dark(#5E6D83, #6F8098);
61
- --code-accent: light-dark(#C1410C, #fb923c);
61
+ --code-accent: light-dark(#c0400b, #fb923c);
62
62
  --code-green: light-dark(#147C3B, #4ade80);
63
- --code-blue: light-dark(#2362EB, #60a5fa);
63
+ --code-blue: light-dark(#2361ea, #60a5fa);
64
64
  /* Typography — system stacks, no @import, identical */
65
65
  --font-display: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
66
66
  --font-script: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
@@ -139,10 +139,10 @@
139
139
  --info-text: light-dark(var(--ai-ink), #85BFFF);
140
140
  --success-default: light-dark(#16a34a, #22c55e);
141
141
  --success-subtle: light-dark(#f0fdf4, #14532d);
142
- --success-text: light-dark(#15803d, #4ade80);
142
+ --success-text: light-dark(#0e7c3a, #4ade80);
143
143
  --warning-default: var(--ochre);
144
144
  --warning-subtle: var(--ochre-wash);
145
- --warning-text: light-dark(#b45309, #fbbf24);
145
+ --warning-text: light-dark(#b15003, #fbbf24);
146
146
  --error-default: var(--shu);
147
147
  --error-subtle: var(--shu-wash);
148
148
  --error-text: light-dark(#b91c1c, #fca5a5);
@@ -202,14 +202,14 @@
202
202
  --ink-soft: #e2e8f0;
203
203
  --ink-faint: #94a3b8;
204
204
  --graphite: #f1f5f9;
205
- --muted: #64748b;
205
+ --muted: #718299;
206
206
  /* Lines — dark slate borders */
207
207
  --guide: #334155;
208
208
  --guide-soft: #1e293b;
209
209
  --hair: #1e293b;
210
210
  --hair-soft: #0f172a;
211
211
  /* Primary accent — brighter blue for dark surfaces */
212
- --ai: #3b82f6;
212
+ --ai: #3d85f9;
213
213
  --ai-ink: #60a5fa;
214
214
  --ai-wash: #1e3a8a;
215
215
  /* Seal — red */
@@ -395,10 +395,10 @@
395
395
  /* Code — neutral light syntax surface */
396
396
  --code-bg: #f8fafc;
397
397
  --code-ink: #0f172a;
398
- --code-muted: #64748b;
399
- --code-accent: #c2410c;
400
- --code-green: #15803d;
401
- --code-blue: #2563eb;
398
+ --code-muted: #5e6d84;
399
+ --code-accent: #c04009;
400
+ --code-green: #0e7c3a;
401
+ --code-blue: #2461e9;
402
402
  /* Typography — system stacks only (no @import) */
403
403
  --font-display: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
404
404
  --font-script: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
@@ -484,11 +484,11 @@
484
484
  /* Status — success */
485
485
  --success-default: #16a34a;
486
486
  --success-subtle: #f0fdf4;
487
- --success-text: #15803d;
487
+ --success-text: #0e7c3a;
488
488
  /* Status — warning */
489
489
  --warning-default: var(--ochre);
490
490
  --warning-subtle: var(--ochre-wash);
491
- --warning-text: #b45309;
491
+ --warning-text: #b15003;
492
492
  /* Status — error */
493
493
  --error-default: var(--shu);
494
494
  --error-subtle: var(--shu-wash);
@@ -550,18 +550,18 @@
550
550
  --ink-soft: light-dark(#3A3A3C, #C7C7CC);
551
551
  --ink-faint: light-dark(#66666B, #98989D);
552
552
  --graphite: light-dark(#2C2C2E, #AEAEB2);
553
- --muted: light-dark(#6E6E73, #6E6E73);
553
+ --muted: light-dark(#84858a, #6E6E73);
554
554
  /* Hairlines — solid in light, translucent white in dark */
555
555
  --guide: light-dark(#D2D2D7, rgba(255, 255, 255, 0.16));
556
556
  --guide-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.08));
557
557
  --hair: light-dark(#D2D2D7, rgba(255, 255, 255, 0.12));
558
558
  --hair-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.06));
559
559
  /* Primary accent — Apple system blue (dark variant brighter) */
560
- --ai: light-dark(#005EBB, #0A84FF);
560
+ --ai: light-dark(#005EBB, #1e8eff);
561
561
  --ai-ink: light-dark(#0058B0, #409CFF);
562
562
  --ai-wash: light-dark(#E5F0FB, rgba(10, 132, 255, 0.16));
563
563
  /* Seal — Apple system red */
564
- --shu: light-dark(#FF3B30, #FF453A);
564
+ --shu: light-dark(#f73229, #FF453A);
565
565
  --shu-wash: light-dark(#FFEAE8, rgba(255, 69, 58, 0.16));
566
566
  /* Accent — Apple system orange */
567
567
  --ochre: light-dark(#FF9F0A, #FF9F0A);
@@ -724,14 +724,14 @@
724
724
  --ink-soft: #C7C7CC;
725
725
  --ink-faint: #98989D;
726
726
  --graphite: #AEAEB2;
727
- --muted: #6E6E73;
727
+ --muted: #84858a;
728
728
  /* Hairlines / guides — translucent white */
729
729
  --guide: rgba(255, 255, 255, 0.16);
730
730
  --guide-soft: rgba(255, 255, 255, 0.08);
731
731
  --hair: rgba(255, 255, 255, 0.12);
732
732
  --hair-soft: rgba(255, 255, 255, 0.06);
733
733
  /* Primary accent — Apple system blue (dark variant) */
734
- --ai: #0A84FF;
734
+ --ai: #1e8eff;
735
735
  --ai-ink: #409CFF;
736
736
  --ai-wash: rgba(10, 132, 255, 0.16);
737
737
  /* Seal — Apple system red (dark variant) */
@@ -926,7 +926,7 @@
926
926
  --ai-ink: #0058B0;
927
927
  --ai-wash: #E5F0FB;
928
928
  /* Seal — system red */
929
- --shu: #FF3B30;
929
+ --shu: #f73229;
930
930
  --shu-wash: #FFEAE8;
931
931
  /* Accent — system orange / amber */
932
932
  --ochre: #FF9F0A;
@@ -1122,18 +1122,18 @@
1122
1122
  --ink-soft: light-dark(#3A3A3C, #C8CFE0);
1123
1123
  --ink-faint: light-dark(#65656A, #8A92A8);
1124
1124
  --graphite: light-dark(#2C2C2E, #DCE2F0);
1125
- --muted: light-dark(#6E6E73, #5A627A);
1125
+ --muted: light-dark(#6E6E73, #727b93);
1126
1126
  /* Construction lines — translucent */
1127
1127
  --guide: light-dark(rgba(29, 29, 31, 0.14), rgba(240, 244, 255, 0.16));
1128
1128
  --guide-soft: light-dark(rgba(29, 29, 31, 0.10), rgba(240, 244, 255, 0.08));
1129
1129
  --hair: light-dark(rgba(29, 29, 31, 0.08), rgba(240, 244, 255, 0.12));
1130
1130
  --hair-soft: light-dark(rgba(29, 29, 31, 0.04), rgba(240, 244, 255, 0.06));
1131
1131
  /* Primary accent — iOS indigo / vibrant dark blue */
1132
- --ai: light-dark(#5957E2, #6FA9FF);
1132
+ --ai: light-dark(#5653de, #6FA9FF);
1133
1133
  --ai-ink: light-dark(#3634A3, #93C2FF);
1134
1134
  --ai-wash: light-dark(rgba(89, 87, 226, 0.12), rgba(111, 169, 255, 0.16));
1135
1135
  /* Seal — iOS system pink */
1136
- --shu: light-dark(#FF375F, #FF6B8A);
1136
+ --shu: light-dark(#f32856, #FF6B8A);
1137
1137
  --shu-wash: light-dark(rgba(255, 55, 95, 0.12), rgba(255, 107, 138, 0.16));
1138
1138
  /* Draft / marginalia — iOS orange */
1139
1139
  --ochre: light-dark(#FF9500, #FFC56B);
@@ -1143,7 +1143,7 @@
1143
1143
  --code-ink: light-dark(#F5F5F7, #F0F4FF);
1144
1144
  --code-muted: light-dark(#BCBCC0, #8A92A8);
1145
1145
  --code-accent: #FFD60A;
1146
- --code-green: light-dark(#30D158, #5FE37F);
1146
+ --code-green: light-dark(#3ad85e, #5FE37F);
1147
1147
  --code-blue: light-dark(#64D2FF, #93C2FF);
1148
1148
  /* Typography — SF stack, identical */
1149
1149
  --font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', system-ui, sans-serif;
@@ -1321,7 +1321,7 @@
1321
1321
  --ink-soft: #C8CFE0;
1322
1322
  --ink-faint: #8A92A8;
1323
1323
  --graphite: #DCE2F0;
1324
- --muted: #5A627A;
1324
+ --muted: #727b93;
1325
1325
  /* Construction lines — translucent white hairlines */
1326
1326
  --guide: rgba(240, 244, 255, 0.16);
1327
1327
  --guide-soft: rgba(240, 244, 255, 0.08);
@@ -1519,11 +1519,11 @@
1519
1519
  --hair: rgba(29, 29, 31, 0.08);
1520
1520
  --hair-soft: rgba(29, 29, 31, 0.04);
1521
1521
  /* Primary accent — iOS indigo */
1522
- --ai: #5957E2;
1522
+ --ai: #5653de;
1523
1523
  --ai-ink: #3634A3;
1524
1524
  --ai-wash: rgba(89, 87, 226, 0.12);
1525
1525
  /* Seal — iOS system pink (draft / emphasis) */
1526
- --shu: #FF375F;
1526
+ --shu: #f32856;
1527
1527
  --shu-wash: rgba(255, 55, 95, 0.12);
1528
1528
  /* Draft / marginalia — iOS orange */
1529
1529
  --ochre: #FF9500;
@@ -1533,7 +1533,7 @@
1533
1533
  --code-ink: #F5F5F7;
1534
1534
  --code-muted: #BABABE;
1535
1535
  --code-accent: #FFD60A;
1536
- --code-green: #30D158;
1536
+ --code-green: #3ad85e;
1537
1537
  --code-blue: #64D2FF;
1538
1538
  /* Typography — SF system stack */
1539
1539
  --font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', system-ui, sans-serif;
@@ -1714,14 +1714,14 @@
1714
1714
  --ink-soft: light-dark(#3A4048, #C7C7CC);
1715
1715
  --ink-faint: light-dark(#5E646D, #98989D);
1716
1716
  --graphite: light-dark(#2A2F36, #AEAEB2);
1717
- --muted: light-dark(#878D95, #6A6A6E);
1717
+ --muted: light-dark(#6a7078, #6A6A6E);
1718
1718
  /* Construction lines — translucent ink (light) / translucent white (dark) */
1719
1719
  --guide: light-dark(rgba(26, 31, 38, 0.16), rgba(255, 255, 255, 0.16));
1720
1720
  --guide-soft: light-dark(rgba(26, 31, 38, 0.08), rgba(255, 255, 255, 0.08));
1721
1721
  --hair: light-dark(rgba(26, 31, 38, 0.12), rgba(255, 255, 255, 0.12));
1722
1722
  --hair-soft: light-dark(rgba(26, 31, 38, 0.06), rgba(255, 255, 255, 0.06));
1723
1723
  /* Primary accent — cool blue-gray (light) / Apple dark blue (dark) */
1724
- --ai: light-dark(#4A6585, #0A84FF);
1724
+ --ai: light-dark(#4A6585, #178aff);
1725
1725
  --ai-ink: light-dark(#2F4866, #409CFF);
1726
1726
  --ai-wash: light-dark(rgba(74, 101, 133, 0.10), rgba(10, 132, 255, 0.14));
1727
1727
  /* Seal */
@@ -1734,8 +1734,8 @@
1734
1734
  --code-bg: light-dark(#F6F7F9, #0D0D0F);
1735
1735
  --code-ink: light-dark(#1A1F26, #E8E8ED);
1736
1736
  --code-muted: light-dark(#666B73, #818186);
1737
- --code-accent: light-dark(#87652B, #FFB86C);
1738
- --code-green: light-dark(#3D7746, #A8E6A1);
1737
+ --code-accent: light-dark(#86642a, #FFB86C);
1738
+ --code-green: light-dark(#3d7646, #A8E6A1);
1739
1739
  --code-blue: light-dark(#4A6585, #9AD4F7);
1740
1740
  /* Typography — SF stack, identical */
1741
1741
  --font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
@@ -1815,7 +1815,7 @@
1815
1815
  --info-text: light-dark(var(--ai-ink), #409CFF);
1816
1816
  --success-default: light-dark(#28A745, #30D158);
1817
1817
  --success-subtle: light-dark(rgba(40, 167, 69, 0.10), rgba(48, 209, 88, 0.14));
1818
- --success-text: light-dark(#1B7530, #5FE37F);
1818
+ --success-text: light-dark(#1b7530, #5FE37F);
1819
1819
  --warning-default: var(--ochre);
1820
1820
  --warning-subtle: light-dark(rgba(181, 135, 58, 0.10), rgba(255, 159, 10, 0.14));
1821
1821
  --warning-text: light-dark(#7A5A22, #FFB340);
@@ -1878,14 +1878,14 @@
1878
1878
  --ink-soft: #C7C7CC;
1879
1879
  --ink-faint: #98989D;
1880
1880
  --graphite: #AEAEB2;
1881
- --muted: #6A6A6E;
1881
+ --muted: #818286;
1882
1882
  /* Construction lines — translucent white hairlines */
1883
1883
  --guide: rgba(255, 255, 255, 0.16);
1884
1884
  --guide-soft: rgba(255, 255, 255, 0.08);
1885
1885
  --hair: rgba(255, 255, 255, 0.12);
1886
1886
  --hair-soft: rgba(255, 255, 255, 0.06);
1887
1887
  /* Primary accent — Apple dark-mode system blue */
1888
- --ai: #0A84FF;
1888
+ --ai: #178aff;
1889
1889
  --ai-ink: #409CFF;
1890
1890
  --ai-wash: rgba(10, 132, 255, 0.14);
1891
1891
  /* Seal — Apple dark-mode red (reserve for emphasis) */
@@ -2070,7 +2070,7 @@
2070
2070
  --ink-soft: #3A4048;
2071
2071
  --ink-faint: #5E646D;
2072
2072
  --graphite: #2A2F36;
2073
- --muted: #878D95;
2073
+ --muted: #6a7078;
2074
2074
  /* Construction lines — translucent ink hairlines */
2075
2075
  --guide: rgba(26, 31, 38, 0.16);
2076
2076
  --guide-soft: rgba(26, 31, 38, 0.08);
@@ -2091,7 +2091,7 @@
2091
2091
  --code-ink: #1A1F26;
2092
2092
  --code-muted: #656A72;
2093
2093
  --code-accent: #86642B;
2094
- --code-green: #3F7A48;
2094
+ --code-green: #3c7645;
2095
2095
  --code-blue: #4A6585;
2096
2096
  /* Typography — match Graphite (SF system stack) */
2097
2097
  --font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
@@ -2181,7 +2181,7 @@
2181
2181
  /* Status — success (Apple light-mode green) */
2182
2182
  --success-default: #28A745;
2183
2183
  --success-subtle: rgba(40, 167, 69, 0.10);
2184
- --success-text: #1B7530;
2184
+ --success-text: #1b7530;
2185
2185
  /* Status — warning */
2186
2186
  --warning-default: var(--ochre);
2187
2187
  --warning-subtle: rgba(181, 135, 58, 0.10);
@@ -2254,9 +2254,9 @@
2254
2254
  ---------------------------------------------------------------- */
2255
2255
  --ink: light-dark(#0A0A0A, #FAFAF7);
2256
2256
  --ink-soft: light-dark(#555, #C8C6C0);
2257
- --ink-faint: light-dark(#727069, #8A8A86);
2257
+ --ink-faint: light-dark(#6e6c66, #8A8A86);
2258
2258
  --graphite: light-dark(#1A1A1A, #ECEAE4);
2259
- --muted: light-dark(#8E8C86, #6B6963);
2259
+ --muted: light-dark(#75736e, #6B6963);
2260
2260
  /* Rules / hairlines */
2261
2261
  --guide: light-dark(#1A1A1A, #ECEAE4);
2262
2262
  --guide-soft: light-dark(#D9D7D1, #2A2A2A);
@@ -2471,7 +2471,7 @@
2471
2471
  --ink-soft: #C8C6C0;
2472
2472
  --ink-faint: #8A8A86;
2473
2473
  --graphite: #ECEAE4;
2474
- --muted: #6B6963;
2474
+ --muted: #7d7b74;
2475
2475
  /* Rules / hairlines — thin editorial rules on dark */
2476
2476
  --guide: #ECEAE4;
2477
2477
  --guide-soft: #2A2A2A;
@@ -2660,9 +2660,9 @@
2660
2660
  /* Ink — warm near-black */
2661
2661
  --ink: #0A0A0A;
2662
2662
  --ink-soft: #555;
2663
- --ink-faint: #727069;
2663
+ --ink-faint: #6e6c66;
2664
2664
  --graphite: #1A1A1A;
2665
- --muted: #8E8C86;
2665
+ --muted: #75736e;
2666
2666
  /* Rules / hairlines — thin editorial rules */
2667
2667
  --guide: #1A1A1A;
2668
2668
  --guide-soft: #D9D7D1;
@@ -2892,7 +2892,7 @@
2892
2892
  --code-bg: light-dark(#fafafa, #0a0a0a);
2893
2893
  --code-ink: light-dark(#18181b, #e4e4e7);
2894
2894
  --code-muted: light-dark(#6B6B73, #808089);
2895
- --code-accent: light-dark(#C1410C, #fb923c);
2895
+ --code-accent: light-dark(#c0410b, #fb923c);
2896
2896
  --code-green: light-dark(#117D39, #4ade80);
2897
2897
  --code-blue: light-dark(#2462EB, #60a5fa);
2898
2898
  /* Typography — identical across modes */
@@ -2970,7 +2970,7 @@
2970
2970
  --info-text: light-dark(var(--ai-ink), #85BFFF);
2971
2971
  --success-default: light-dark(#16a34a, #22c55e);
2972
2972
  --success-subtle: light-dark(#f0fdf4, #14532d);
2973
- --success-text: light-dark(#15803d, #4ade80);
2973
+ --success-text: light-dark(#0e7c3a, #4ade80);
2974
2974
  --warning-default: light-dark(#ca8a04, #eab308);
2975
2975
  --warning-subtle: light-dark(#fefce8, #422006);
2976
2976
  --warning-text: light-dark(#854d0e, #fde047);
@@ -3242,10 +3242,10 @@
3242
3242
  /* Code — light syntax surface */
3243
3243
  --code-bg: #fafafa;
3244
3244
  --code-ink: #18181b;
3245
- --code-muted: #71717a;
3246
- --code-accent: #c2410c;
3245
+ --code-muted: #6c6b74;
3246
+ --code-accent: #c1400b;
3247
3247
  --code-green: #117C38;
3248
- --code-blue: #2563eb;
3248
+ --code-blue: #2462e9;
3249
3249
  /* Typography */
3250
3250
  --font-display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
3251
3251
  --font-script: 'Inter', cursive;
@@ -3331,7 +3331,7 @@
3331
3331
  /* Status — success */
3332
3332
  --success-default: #16a34a;
3333
3333
  --success-subtle: #f0fdf4;
3334
- --success-text: #15803d;
3334
+ --success-text: #0e7c3a;
3335
3335
  /* Status — warning */
3336
3336
  --warning-default: #ca8a04;
3337
3337
  --warning-subtle: #fefce8;
@@ -3404,9 +3404,9 @@
3404
3404
  /* Ink — warm pencil + sumi / warm cream */
3405
3405
  --ink: light-dark(#2A241E, #F4EFE2);
3406
3406
  --ink-soft: light-dark(#4A4037, #D8D0BE);
3407
- --ink-faint: light-dark(#726858, #A89E89);
3407
+ --ink-faint: light-dark(#706757, #A89E89);
3408
3408
  --graphite: light-dark(#3A332B, #E8E0CE);
3409
- --muted: light-dark(#948977, #7A715F);
3409
+ --muted: light-dark(#786e5d, #89806d);
3410
3410
  /* Construction lines */
3411
3411
  --guide: light-dark(#C9BDA5, #4A4239);
3412
3412
  --guide-soft: light-dark(#DDD4C0, #382F27);
@@ -3567,7 +3567,7 @@
3567
3567
  --ink-soft: #D8D0BE;
3568
3568
  --ink-faint: #A89E89;
3569
3569
  --graphite: #E8E0CE;
3570
- --muted: #7A715F;
3570
+ --muted: #89806d;
3571
3571
  /* Construction lines — warm dark hairlines */
3572
3572
  --guide: #4A4239;
3573
3573
  --guide-soft: #382F27;
@@ -3747,9 +3747,9 @@
3747
3747
  /* Ink — warm pencil + sumi */
3748
3748
  --ink: #2A241E;
3749
3749
  --ink-soft: #4A4037;
3750
- --ink-faint: #726858;
3750
+ --ink-faint: #706757;
3751
3751
  --graphite: #3A332B;
3752
- --muted: #948977;
3752
+ --muted: #786e5d;
3753
3753
  /* Construction lines */
3754
3754
  --guide: #C9BDA5;
3755
3755
  --guide-soft: #DDD4C0;
@@ -3937,7 +3937,7 @@
3937
3937
  --paper-glass: rgba(79, 224, 120, 0.06);
3938
3938
  /* Ink — phosphor green on the tube */
3939
3939
  --ink: #4FE078;
3940
- --ink-soft: #2A8B42;
3940
+ --ink-soft: #34944a;
3941
3941
  --ink-faint: #3DAF4F;
3942
3942
  --graphite: #1A3D22;
3943
3943
  --muted: #2A8B42;
@@ -4105,7 +4105,7 @@
4105
4105
  --paper-glass: rgba(79, 224, 120, 0.06);
4106
4106
  /* Ink — phosphor green on the tube */
4107
4107
  --ink: #4FE078;
4108
- --ink-soft: #2A8B42;
4108
+ --ink-soft: #34944a;
4109
4109
  --ink-faint: #3DAF4F;
4110
4110
  --graphite: #1A3D22;
4111
4111
  --muted: #2A8B42;
@@ -4127,7 +4127,7 @@
4127
4127
  /* Code surface */
4128
4128
  --code-bg: #070A07;
4129
4129
  --code-ink: #4FE078;
4130
- --code-muted: #2A8B42;
4130
+ --code-muted: #329248;
4131
4131
  --code-accent: #F0A030;
4132
4132
  --code-green: #8FFCA8;
4133
4133
  --code-blue: #7FDBFF;
@@ -4309,9 +4309,9 @@
4309
4309
  /* Ink — near-black mono */
4310
4310
  --ink: #1A1A1A;
4311
4311
  --ink-soft: #404040;
4312
- --ink-faint: #666;
4312
+ --ink-faint: #626161;
4313
4313
  --graphite: #0A0A0A;
4314
- --muted: #7C7C7C;
4314
+ --muted: #696868;
4315
4315
  /* Hairlines — medium gray */
4316
4316
  --guide: #B8B8B8;
4317
4317
  --guide-soft: #C8C8C8;
@@ -4330,9 +4330,9 @@
4330
4330
  /* Code surface */
4331
4331
  --code-bg: #DDD;
4332
4332
  --code-ink: #1A1A1A;
4333
- --code-muted: #5B5B5B;
4333
+ --code-muted: #5b5a5a;
4334
4334
  --code-accent: #934407;
4335
- --code-green: #006A28;
4335
+ --code-green: #006928;
4336
4336
  --code-blue: #0451A5;
4337
4337
  /* Typography — mono everywhere */
4338
4338
  --font-mono: 'JetBrains Mono', 'IBM Plex Mono', 'Fira Code', ui-monospace, Consolas, Menlo, 'Courier New', monospace;
@@ -11,14 +11,14 @@
11
11
  --ink-soft: light-dark(#1e293b, #e2e8f0);
12
12
  --ink-faint: light-dark(#475569, #94a3b8);
13
13
  --graphite: light-dark(#0f172a, #f1f5f9);
14
- --muted: light-dark(#64748b, #64748b);
14
+ --muted: light-dark(#718299, #64748b);
15
15
  /* Lines */
16
16
  --guide: light-dark(#cbd5e1, #334155);
17
17
  --guide-soft: light-dark(#e2e8f0, #1e293b);
18
18
  --hair: light-dark(#e2e8f0, #1e293b);
19
19
  --hair-soft: light-dark(#f1f5f9, #0f172a);
20
20
  /* Primary accent */
21
- --ai: light-dark(#2563eb, #3b82f6);
21
+ --ai: light-dark(#2563eb, #3d85f9);
22
22
  --ai-ink: light-dark(#1d4ed8, #60a5fa);
23
23
  --ai-wash: light-dark(#eff6ff, #1e3a8a);
24
24
  /* Seal — red */
@@ -31,9 +31,9 @@
31
31
  --code-bg: light-dark(#f8fafc, #020617);
32
32
  --code-ink: light-dark(#0f172a, #e2e8f0);
33
33
  --code-muted: light-dark(#5E6D83, #6F8098);
34
- --code-accent: light-dark(#C1410C, #fb923c);
34
+ --code-accent: light-dark(#c0400b, #fb923c);
35
35
  --code-green: light-dark(#147C3B, #4ade80);
36
- --code-blue: light-dark(#2362EB, #60a5fa);
36
+ --code-blue: light-dark(#2361ea, #60a5fa);
37
37
  /* Typography — system stacks, no @import, identical */
38
38
  --font-display: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
39
39
  --font-script: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
@@ -112,10 +112,10 @@
112
112
  --info-text: light-dark(var(--ai-ink), #85BFFF);
113
113
  --success-default: light-dark(#16a34a, #22c55e);
114
114
  --success-subtle: light-dark(#f0fdf4, #14532d);
115
- --success-text: light-dark(#15803d, #4ade80);
115
+ --success-text: light-dark(#0e7c3a, #4ade80);
116
116
  --warning-default: var(--ochre);
117
117
  --warning-subtle: var(--ochre-wash);
118
- --warning-text: light-dark(#b45309, #fbbf24);
118
+ --warning-text: light-dark(#b15003, #fbbf24);
119
119
  --error-default: var(--shu);
120
120
  --error-subtle: var(--shu-wash);
121
121
  --error-text: light-dark(#b91c1c, #fca5a5);
@@ -11,14 +11,14 @@
11
11
  --ink-soft: #e2e8f0;
12
12
  --ink-faint: #94a3b8;
13
13
  --graphite: #f1f5f9;
14
- --muted: #64748b;
14
+ --muted: #718299;
15
15
  /* Lines — dark slate borders */
16
16
  --guide: #334155;
17
17
  --guide-soft: #1e293b;
18
18
  --hair: #1e293b;
19
19
  --hair-soft: #0f172a;
20
20
  /* Primary accent — brighter blue for dark surfaces */
21
- --ai: #3b82f6;
21
+ --ai: #3d85f9;
22
22
  --ai-ink: #60a5fa;
23
23
  --ai-wash: #1e3a8a;
24
24
  /* Seal — red */
@@ -30,10 +30,10 @@
30
30
  /* Code — neutral light syntax surface */
31
31
  --code-bg: #f8fafc;
32
32
  --code-ink: #0f172a;
33
- --code-muted: #64748b;
34
- --code-accent: #c2410c;
35
- --code-green: #15803d;
36
- --code-blue: #2563eb;
33
+ --code-muted: #5e6d84;
34
+ --code-accent: #c04009;
35
+ --code-green: #0e7c3a;
36
+ --code-blue: #2461e9;
37
37
  /* Typography — system stacks only (no @import) */
38
38
  --font-display: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
39
39
  --font-script: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
@@ -119,11 +119,11 @@
119
119
  /* Status — success */
120
120
  --success-default: #16a34a;
121
121
  --success-subtle: #f0fdf4;
122
- --success-text: #15803d;
122
+ --success-text: #0e7c3a;
123
123
  /* Status — warning */
124
124
  --warning-default: var(--ochre);
125
125
  --warning-subtle: var(--ochre-wash);
126
- --warning-text: #b45309;
126
+ --warning-text: #b15003;
127
127
  /* Status — error */
128
128
  --error-default: var(--shu);
129
129
  --error-subtle: var(--shu-wash);
@@ -12,18 +12,18 @@
12
12
  --ink-soft: light-dark(#3A3A3C, #C7C7CC);
13
13
  --ink-faint: light-dark(#66666B, #98989D);
14
14
  --graphite: light-dark(#2C2C2E, #AEAEB2);
15
- --muted: light-dark(#6E6E73, #6E6E73);
15
+ --muted: light-dark(#84858a, #6E6E73);
16
16
  /* Hairlines — solid in light, translucent white in dark */
17
17
  --guide: light-dark(#D2D2D7, rgba(255, 255, 255, 0.16));
18
18
  --guide-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.08));
19
19
  --hair: light-dark(#D2D2D7, rgba(255, 255, 255, 0.12));
20
20
  --hair-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.06));
21
21
  /* Primary accent — Apple system blue (dark variant brighter) */
22
- --ai: light-dark(#005EBB, #0A84FF);
22
+ --ai: light-dark(#005EBB, #1e8eff);
23
23
  --ai-ink: light-dark(#0058B0, #409CFF);
24
24
  --ai-wash: light-dark(#E5F0FB, rgba(10, 132, 255, 0.16));
25
25
  /* Seal — Apple system red */
26
- --shu: light-dark(#FF3B30, #FF453A);
26
+ --shu: light-dark(#f73229, #FF453A);
27
27
  --shu-wash: light-dark(#FFEAE8, rgba(255, 69, 58, 0.16));
28
28
  /* Accent — Apple system orange */
29
29
  --ochre: light-dark(#FF9F0A, #FF9F0A);
@@ -30,14 +30,14 @@
30
30
  --ink-soft: #C7C7CC;
31
31
  --ink-faint: #98989D;
32
32
  --graphite: #AEAEB2;
33
- --muted: #6E6E73;
33
+ --muted: #84858a;
34
34
  /* Hairlines / guides — translucent white */
35
35
  --guide: rgba(255, 255, 255, 0.16);
36
36
  --guide-soft: rgba(255, 255, 255, 0.08);
37
37
  --hair: rgba(255, 255, 255, 0.12);
38
38
  --hair-soft: rgba(255, 255, 255, 0.06);
39
39
  /* Primary accent — Apple system blue (dark variant) */
40
- --ai: #0A84FF;
40
+ --ai: #1e8eff;
41
41
  --ai-ink: #409CFF;
42
42
  --ai-wash: rgba(10, 132, 255, 0.16);
43
43
  /* Seal — Apple system red (dark variant) */