decklight 0.1.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 (82) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +257 -0
  3. package/SPEC.md +372 -0
  4. package/cli/bundle.mjs +388 -0
  5. package/cli/decklight.mjs +95 -0
  6. package/cli/edit.mjs +142 -0
  7. package/cli/init.mjs +215 -0
  8. package/cli/rec.mjs +538 -0
  9. package/dist/decklight.css +1068 -0
  10. package/dist/decklight.js +239 -0
  11. package/dist/decklight.js.map +7 -0
  12. package/docs/architecture.svg +94 -0
  13. package/docs/demo.svg +124 -0
  14. package/package.json +54 -0
  15. package/themes/README.md +61 -0
  16. package/themes/aliens.css +84 -0
  17. package/themes/apple2.css +126 -0
  18. package/themes/aurora.css +84 -0
  19. package/themes/berry.css +80 -0
  20. package/themes/blade-runner.css +83 -0
  21. package/themes/c64.css +85 -0
  22. package/themes/carbon.css +82 -0
  23. package/themes/citrus.css +80 -0
  24. package/themes/coastal.css +80 -0
  25. package/themes/cosmos.css +86 -0
  26. package/themes/dune.css +80 -0
  27. package/themes/eclipse.css +82 -0
  28. package/themes/ember.css +80 -0
  29. package/themes/fjord.css +80 -0
  30. package/themes/friends.css +82 -0
  31. package/themes/gallery.html +203 -0
  32. package/themes/gameboy.css +118 -0
  33. package/themes/genesis.css +84 -0
  34. package/themes/glacier.css +82 -0
  35. package/themes/godfather.css +82 -0
  36. package/themes/graphite.css +80 -0
  37. package/themes/harvest.css +80 -0
  38. package/themes/ibm-modern.css +83 -0
  39. package/themes/ibm-oldschool.css +84 -0
  40. package/themes/ink.css +82 -0
  41. package/themes/latte.css +80 -0
  42. package/themes/linen.css +80 -0
  43. package/themes/meadow.css +80 -0
  44. package/themes/metropolis.css +85 -0
  45. package/themes/miami-vice.css +84 -0
  46. package/themes/midnight.css +80 -0
  47. package/themes/mint.css +82 -0
  48. package/themes/moss.css +82 -0
  49. package/themes/obsidian.css +82 -0
  50. package/themes/orchid.css +82 -0
  51. package/themes/packs.json +89 -0
  52. package/themes/paper.css +83 -0
  53. package/themes/peony.css +84 -0
  54. package/themes/porcelain.css +82 -0
  55. package/themes/pulp-fiction.css +84 -0
  56. package/themes/reveal-beige.css +87 -0
  57. package/themes/reveal-black.css +83 -0
  58. package/themes/reveal-blood.css +84 -0
  59. package/themes/reveal-dracula.css +83 -0
  60. package/themes/reveal-league.css +88 -0
  61. package/themes/reveal-moon.css +83 -0
  62. package/themes/reveal-night.css +86 -0
  63. package/themes/reveal-serif.css +82 -0
  64. package/themes/reveal-simple.css +84 -0
  65. package/themes/reveal-sky.css +85 -0
  66. package/themes/reveal-solarized.css +83 -0
  67. package/themes/reveal-white.css +82 -0
  68. package/themes/sepia.css +81 -0
  69. package/themes/seriph.css +82 -0
  70. package/themes/severance.css +82 -0
  71. package/themes/slate.css +80 -0
  72. package/themes/snes.css +82 -0
  73. package/themes/star-wars.css +85 -0
  74. package/themes/storm.css +80 -0
  75. package/themes/stranger-things.css +84 -0
  76. package/themes/synthwave.css +90 -0
  77. package/themes/terminator.css +84 -0
  78. package/themes/velvet.css +80 -0
  79. package/tools/gemini-tts.mjs +140 -0
  80. package/tools/publish-site-voices.mjs +71 -0
  81. package/tools/voiceover-server.mjs +0 -0
  82. package/tools/voiceover.mjs +155 -0
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · berry
3
+ light · Raspberry on white — energetic, pink-tinted blocks
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #fffbfd;
10
+ --bg-accent: #fceef5;
11
+ --fg: #3d2436;
12
+ --muted: #75596a;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
16
+ --font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #a8175c;
19
+ --heading-weight: 800;
20
+ --link: #b3216a;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #c2296a;
24
+ --accent-contrast: #fff4f9;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #fdf1f6;
28
+ --block-border: 1px solid #f2d5e3;
29
+ --block-radius: 14px;
30
+ --shadow: 0 6px 20px rgba(180, 40, 100, 0.09);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #f8e9f0;
34
+ --code-fg: #3f2838;
35
+ --hl-keyword: #b3216a;
36
+ --hl-string: #276b46;
37
+ --hl-number: #8a4a10;
38
+ --hl-comment: #755d6a;
39
+ --hl-function: #1e5aa8;
40
+ --hl-type: #7038d8;
41
+ --hl-punct: #5c4252;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #96607e;
45
+ --d-text: #3d2436;
46
+ --d-muted: #84687a;
47
+ --d-accent: #d23b77;
48
+ --d-fill-1: #fadce9;
49
+ --d-fill-2: #f5e0f0;
50
+ --d-fill-3: #fce5dc;
51
+ --d-fill-4: #efdcf5;
52
+ --d-fill-5: #fde0e2;
53
+ --d-fill-6: #f8ecda;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #2b1a24;
57
+ --term-fg: #eddfe8;
58
+ --term-prompt: #ff8ab8;
59
+ --term-cursor: #ff8ab8;
60
+ --term-selection: rgba(255, 138, 184, 0.26);
61
+ --ansi-black: #a08795;
62
+ --ansi-red: #ff8095;
63
+ --ansi-green: #93d0a0;
64
+ --ansi-yellow: #e8c072;
65
+ --ansi-blue: #90b0ec;
66
+ --ansi-magenta: #e096d5;
67
+ --ansi-cyan: #88cfc5;
68
+ --ansi-white: #ecdfe7;
69
+ --ansi-bright-black: #b29ca9;
70
+ --ansi-bright-red: #ffa5b5;
71
+ --ansi-bright-green: #b0e2bc;
72
+ --ansi-bright-yellow: #f2d49a;
73
+ --ansi-bright-blue: #b0c8f5;
74
+ --ansi-bright-magenta: #eab5e5;
75
+ --ansi-bright-cyan: #a8e0da;
76
+ --ansi-bright-white: #fdf5fa;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
@@ -0,0 +1,83 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · blade-runner
3
+ dark · off-world night, neon cyan + magenta, spinner amber
4
+ Inspired by Blade Runner — neon noir over the rain — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ rule-exception: R2 the neon-noir duotone canvas is the identity
7
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
8
+ ═══════════════════════════════════════════════════════════════ */
9
+
10
+ .decklight {
11
+ /* ── canvas ─────────────────────────────── */
12
+ --bg: linear-gradient(200deg, #0b0e18 0%, #140b1a 100%);
13
+ --bg-accent: none;
14
+ --fg: #e2e6f0;
15
+ --muted: #8f95ac;
16
+
17
+ /* ── type ───────────────────────────────── */
18
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
19
+ --font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
20
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
21
+ --heading-color: #4fd8e8;
22
+ --heading-weight: 600;
23
+ --link: #e884c8;
24
+
25
+ /* ── accent ─────────────────────────────── */
26
+ --accent: #c957aa;
27
+ --accent-contrast: #171712;
28
+
29
+ /* ── blocks ─────────────────────────────── */
30
+ --block-bg: #141823;
31
+ --block-border: 1px solid #2a2d36;
32
+ --block-radius: 8px;
33
+ --shadow: 0 8px 26px rgba(0, 0, 0, 0.5);
34
+
35
+ /* ── code ───────────────────────────────── */
36
+ --code-bg: #10131f;
37
+ --code-fg: #e0e4f0;
38
+ --hl-keyword: #e884c8;
39
+ --hl-string: #6fd8e8;
40
+ --hl-number: #e8b860;
41
+ --hl-comment: #6a708a;
42
+ --hl-function: #8fa8f0;
43
+ --hl-type: #c8a0e8;
44
+ --hl-punct: #a8aec4;
45
+
46
+ /* ── diagram ────────────────────────────── */
47
+ --d-stroke: #8f95ac;
48
+ --d-text: #e2e6f0;
49
+ --d-muted: #8f95ac;
50
+ --d-accent: #c957aa;
51
+ --d-fill-1: #1c2426;
52
+ --d-fill-2: #2e1e29;
53
+ --d-fill-3: #1f2337;
54
+ --d-fill-4: #26231c;
55
+ --d-fill-5: #261e2e;
56
+ --d-fill-6: #1f372f;
57
+
58
+ /* ── terminal ───────────────────────────── */
59
+ --term-bg: #0a0d16;
60
+ --term-fg: #e6e6e2;
61
+ --term-prompt: #c957aa;
62
+ --term-cursor: #c957aa;
63
+ --term-selection: rgba(201, 87, 170, 0.28);
64
+ --ansi-black: #8a90a8;
65
+ --ansi-red: #e88a90;
66
+ --ansi-green: #7fd0a8;
67
+ --ansi-yellow: #e8c070;
68
+ --ansi-blue: #8fa8f0;
69
+ --ansi-magenta: #e884c8;
70
+ --ansi-cyan: #6fd8e8;
71
+ --ansi-white: #eceef6;
72
+ --ansi-bright-black: #adb1c2;
73
+ --ansi-bright-red: #f2bdc1;
74
+ --ansi-bright-green: #ace0c6;
75
+ --ansi-bright-yellow: #f0d7a5;
76
+ --ansi-bright-blue: #c5d2f7;
77
+ --ansi-bright-magenta: #f2b8df;
78
+ --ansi-bright-cyan: #a4e6f0;
79
+ --ansi-bright-white: #f1f3f8;
80
+
81
+ /* ── builds ─────────────────────────────── */
82
+ --dim-opacity: 0.25;
83
+ }
package/themes/c64.css ADDED
@@ -0,0 +1,85 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · c64
3
+ dark · blue on blue, light-blue border type, PETSCII spirit
4
+ Inspired by the Commodore 64 boot screen — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ rule-exception: R2 the canonical C64 blue screen is the identity
7
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
8
+ ═══════════════════════════════════════════════════════════════ */
9
+
10
+ .decklight {
11
+ /* ── canvas ─────────────────────────────── */
12
+ --bg: #40318d;
13
+ --bg-accent: none;
14
+ --fg: #b3a8ec;
15
+ --muted: #9186d3;
16
+
17
+ /* ── type ───────────────────────────────── */
18
+ --font-body: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
19
+ --font-heading: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
21
+ --heading-color: #8d82e0;
22
+ --heading-weight: 600;
23
+ --link: #9fd0ff;
24
+
25
+ /* ── accent ─────────────────────────────── */
26
+ --accent: #867ade;
27
+ --accent-contrast: #1f1f19;
28
+
29
+ /* ── blocks ─────────────────────────────── */
30
+ --block-bg: #574e85;
31
+ --block-border: 1px solid #736f8d;
32
+ --block-radius: 0px;
33
+ --shadow: 0 8px 26px rgba(0, 0, 0, 0.5);
34
+
35
+ /* ── code ───────────────────────────────── */
36
+ --code-bg: #352a75;
37
+ --code-fg: #c8c0f0;
38
+ --hl-keyword: #a2d0fc;
39
+ --hl-string: #8bdc9e;
40
+ --hl-number: #e8d878;
41
+ --hl-comment: #847ac5;
42
+ --hl-function: #d0a8e8;
43
+ --hl-type: #8fe0e0;
44
+ --hl-punct: #b0a8e8;
45
+
46
+ /* ── diagram ────────────────────────────── */
47
+ --d-stroke: #8a7fd0;
48
+ --d-text: #a597e8;
49
+ --d-muted: #8a7fd0;
50
+ --d-accent: #867ade;
51
+ --d-fill-1: #322f41;
52
+ --d-fill-2: #2c3044;
53
+ --d-fill-3: #352848;
54
+ --d-fill-4: #2f3841;
55
+ --d-fill-5: #3c2c44;
56
+ --d-fill-6: #284048;
57
+
58
+ /* ── terminal ───────────────────────────── */
59
+ --term-bg: #352a75;
60
+ --term-fg: #e6e6e2;
61
+ --term-prompt: #867ade;
62
+ --term-cursor: #867ade;
63
+ --term-selection: rgba(134, 122, 222, 0.28);
64
+ --ansi-black: #8a7fd0;
65
+ --ansi-red: #e08a80;
66
+ --ansi-green: #8fd8a0;
67
+ --ansi-yellow: #e8d878;
68
+ --ansi-blue: #9fd0ff;
69
+ --ansi-magenta: #d0a8e8;
70
+ --ansi-cyan: #8fe0e0;
71
+ --ansi-white: #e8e5f8;
72
+ --ansi-bright-black: #b3ace0;
73
+ --ansi-bright-red: #ecb7b1;
74
+ --ansi-bright-green: #bce8c7;
75
+ --ansi-bright-yellow: #f1e7ac;
76
+ --ansi-bright-blue: #dceeff;
77
+ --ansi-bright-magenta: #ead8f5;
78
+ --ansi-bright-cyan: #bfeded;
79
+ --ansi-bright-white: #f1effb;
80
+
81
+ /* ── builds ─────────────────────────────── */
82
+ --dim-opacity: 0.3;
83
+ }
84
+
85
+ .decklight h1, .decklight h2 { text-transform: uppercase; letter-spacing: 0.05em; }
@@ -0,0 +1,82 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · carbon
5
+ dark · IDE-native — cool graphite, blue/violet duotone syntax
6
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #121417;
12
+ --bg-accent: #191c21;
13
+ --fg: #e4e7eb;
14
+ --muted: #9da5b0;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: "JetBrains Mono", "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
19
+ --font-mono: "JetBrains Mono", "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #9db8ff;
21
+ --heading-weight: 700;
22
+ --link: #82aaff;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #81a5ea;
26
+ --accent-contrast: #001536;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #191d22;
30
+ --block-border: 1px solid #262b33;
31
+ --block-radius: 8px;
32
+ --shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #0d0f12;
36
+ --code-fg: #dfe3e8;
37
+ --hl-keyword: #8badf6;
38
+ --hl-string: #8dd3a4;
39
+ --hl-number: #c0a8f5;
40
+ --hl-comment: #7e8794;
41
+ --hl-function: #b0baf5;
42
+ --hl-type: #7cc7e8;
43
+ --hl-punct: #a2aab5;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #5c6b85;
47
+ --d-text: #e4e7eb;
48
+ --d-muted: #8d95a3;
49
+ --d-accent: #6c9fff;
50
+ --d-fill-1: #1c2230;
51
+ --d-fill-2: #202940;
52
+ --d-fill-3: #232030;
53
+ --d-fill-4: #1a2a3d;
54
+ --d-fill-5: #252b3a;
55
+ --d-fill-6: #1e2536;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #0a0c0f;
59
+ --term-fg: #d9dde2;
60
+ --term-prompt: #6c9fff;
61
+ --term-cursor: #6c9fff;
62
+ --term-selection: rgba(108, 159, 255, 0.28);
63
+ --ansi-black: #89919f;
64
+ --ansi-red: #d2726a;
65
+ --ansi-green: #6ad26d;
66
+ --ansi-yellow: #d2b76a;
67
+ --ansi-blue: #6a9bd2;
68
+ --ansi-magenta: #bb6ad2;
69
+ --ansi-cyan: #6ad2c4;
70
+ --ansi-white: #dee0e3;
71
+ --ansi-bright-black: #a7abb4;
72
+ --ansi-bright-red: #e69a94;
73
+ --ansi-bright-green: #94e696;
74
+ --ansi-bright-yellow: #e6d194;
75
+ --ansi-bright-blue: #94bae6;
76
+ --ansi-bright-magenta: #d394e6;
77
+ --ansi-bright-cyan: #94e6da;
78
+ --ansi-bright-white: #f2f2f3;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.28;
82
+ }
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · citrus
3
+ light · Lime and tangerine zest — playful, rounded, bright
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #fafafa;
10
+ --bg-accent: linear-gradient(135deg, #f8fce8 0%, #fff4e2 100%);
11
+ --fg: #33322d;
12
+ --muted: #6d6c62;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: ui-rounded, "SF Pro Rounded", "Nunito", "Comfortaa", "Segoe UI", sans-serif;
16
+ --font-heading: ui-rounded, "SF Pro Rounded", "Nunito", "Comfortaa", "Segoe UI", sans-serif;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #4f7d00;
19
+ --heading-weight: 800;
20
+ --link: #b45309;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #638916;
24
+ --accent-contrast: #0b1100;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #fafce8;
28
+ --block-border: 2px solid #e2ecc0;
29
+ --block-radius: 18px;
30
+ --shadow: 0 6px 22px rgba(120, 140, 20, 0.1);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #f5f7ea;
34
+ --code-fg: #37362f;
35
+ --hl-keyword: #466b03;
36
+ --hl-string: #9e4d04;
37
+ --hl-number: #1d5f8a;
38
+ --hl-comment: #6d6c60;
39
+ --hl-function: #8d35ae;
40
+ --hl-type: #0f6e73;
41
+ --hl-punct: #565549;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #7d8a52;
45
+ --d-text: #33322d;
46
+ --d-muted: #787766;
47
+ --d-accent: #6a9f00;
48
+ --d-fill-1: #f0f6cf;
49
+ --d-fill-2: #ffedd0;
50
+ --d-fill-3: #e5f2d8;
51
+ --d-fill-4: #fff3c2;
52
+ --d-fill-5: #eaf5df;
53
+ --d-fill-6: #ffe9dc;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #23261c;
57
+ --term-fg: #e6e8dd;
58
+ --term-prompt: #c2e858;
59
+ --term-cursor: #c2e858;
60
+ --term-selection: rgba(194, 232, 88, 0.26);
61
+ --ansi-black: #93958a;
62
+ --ansi-red: #f2917e;
63
+ --ansi-green: #a5d848;
64
+ --ansi-yellow: #f2c552;
65
+ --ansi-blue: #8db5e2;
66
+ --ansi-magenta: #cba3d8;
67
+ --ansi-cyan: #8ecfba;
68
+ --ansi-white: #e8eae0;
69
+ --ansi-bright-black: #a8aa9e;
70
+ --ansi-bright-red: #f7b2a3;
71
+ --ansi-bright-green: #c0ea75;
72
+ --ansi-bright-yellow: #f8d67e;
73
+ --ansi-bright-blue: #adcbec;
74
+ --ansi-bright-magenta: #dcbfe8;
75
+ --ansi-bright-cyan: #abe0d0;
76
+ --ansi-bright-white: #fcfdf8;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · coastal
3
+ light · Sea-sky gradient, navy depth, coral buoy accent
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: linear-gradient(180deg, #eff8fd 0%, #e4f0f9 60%, #deebf3 100%);
10
+ --bg-accent: linear-gradient(180deg, #d5e9f5 0%, #c5ddef 100%);
11
+ --fg: #16324f;
12
+ --muted: #4e6478;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
16
+ --font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #0e2a45;
19
+ --heading-weight: 800;
20
+ --link: #0e5e8a;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #e37155;
24
+ --accent-contrast: #38100a;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: rgba(255, 255, 255, 0.85);
28
+ --block-border: 1px solid #cadeed;
29
+ --block-radius: 14px;
30
+ --shadow: 0 6px 22px rgba(20, 60, 100, 0.1);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #e2eef7;
34
+ --code-fg: #1d3650;
35
+ --hl-keyword: #0e5e8a;
36
+ --hl-string: #276b46;
37
+ --hl-number: #a83a20;
38
+ --hl-comment: #5b6d80;
39
+ --hl-function: #7a3f92;
40
+ --hl-type: #0f6e73;
41
+ --hl-punct: #3e5468;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #4a7292;
45
+ --d-text: #16324f;
46
+ --d-muted: #607890;
47
+ --d-accent: #e2512d;
48
+ --d-fill-1: #d2e8f5;
49
+ --d-fill-2: #c8e2f2;
50
+ --d-fill-3: #dceef8;
51
+ --d-fill-4: #bfdcee;
52
+ --d-fill-5: #d5ecf8;
53
+ --d-fill-6: #e2f2fa;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #132535;
57
+ --term-fg: #dae6f0;
58
+ --term-prompt: #ffa088;
59
+ --term-cursor: #ffa088;
60
+ --term-selection: rgba(255, 160, 136, 0.25);
61
+ --ansi-black: #8095a8;
62
+ --ansi-red: #f58e7c;
63
+ --ansi-green: #8bd2a5;
64
+ --ansi-yellow: #e5c478;
65
+ --ansi-blue: #7cb8e8;
66
+ --ansi-magenta: #c2a2dd;
67
+ --ansi-cyan: #7ed2d5;
68
+ --ansi-white: #dfe9f0;
69
+ --ansi-bright-black: #98abbc;
70
+ --ansi-bright-red: #f8ae9e;
71
+ --ansi-bright-green: #abe4c0;
72
+ --ansi-bright-yellow: #f0d69e;
73
+ --ansi-bright-blue: #a5cef2;
74
+ --ansi-bright-magenta: #d6bfec;
75
+ --ansi-bright-cyan: #a3e4e6;
76
+ --ansi-bright-white: #f6fafc;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
@@ -0,0 +1,86 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · cosmos
3
+ dark · Nebula purples on space black — stargazer magenta
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ /* palette-rule exceptions (test/palette-rules.mjs):
8
+ rule-exception: R2 the nebula duotone canvas is the identity
9
+ ═══════════════════════════════════════════════════════════════ */
10
+
11
+ .decklight {
12
+ /* ── canvas ─────────────────────────────── */
13
+ --bg: linear-gradient(200deg, #0e0619 0%, #1c0f3d 55%, #2a1152 100%);
14
+ --bg-accent: radial-gradient(ellipse at 30% 20%, #3b1a6e 0%, #14082b 70%);
15
+ --fg: #ece5fb;
16
+ --muted: #b3a5d6;
17
+
18
+ /* ── type ───────────────────────────────── */
19
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
20
+ --font-heading: "Avenir Next", Avenir, Futura, "Century Gothic", "Segoe UI", sans-serif;
21
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
22
+ --heading-color: #fafafa;
23
+ --heading-weight: 800;
24
+ --link: #a88fff;
25
+
26
+ /* ── accent ─────────────────────────────── */
27
+ --accent: #eb82c2;
28
+ --accent-contrast: #33001d;
29
+
30
+ /* ── blocks ─────────────────────────────── */
31
+ --block-bg: rgba(40, 20, 78, 0.5);
32
+ --block-border: 1px solid rgba(168, 143, 255, 0.28);
33
+ --block-radius: 16px;
34
+ --shadow: 0 14px 44px rgba(8, 2, 24, 0.6);
35
+
36
+ /* ── code ───────────────────────────────── */
37
+ --code-bg: #150b2e;
38
+ --code-fg: #e6defa;
39
+ --hl-keyword: #c79bff;
40
+ --hl-string: #8be8c8;
41
+ --hl-number: #ffb2d9;
42
+ --hl-comment: #8f82b8;
43
+ --hl-function: #8fb5ff;
44
+ --hl-type: #6fd7e8;
45
+ --hl-punct: #b2a6d4;
46
+
47
+ /* ── diagram ────────────────────────────── */
48
+ --d-stroke: #8f6fdc;
49
+ --d-text: #ece5fb;
50
+ --d-muted: #a394cc;
51
+ --d-accent: #ff6ec7;
52
+ --d-fill-1: #241348;
53
+ --d-fill-2: #31175c;
54
+ --d-fill-3: #1e1f52;
55
+ --d-fill-4: #3a1550;
56
+ --d-fill-5: #291c5e;
57
+ --d-fill-6: #351d68;
58
+
59
+ /* ── terminal ───────────────────────────── */
60
+ --term-bg: #100822;
61
+ --term-fg: #e0d8f5;
62
+ --term-prompt: #ff6ec7;
63
+ --term-cursor: #ff6ec7;
64
+ --term-selection: rgba(255, 110, 199, 0.26);
65
+ --ansi-black: #8d81b0;
66
+ --ansi-red: #ff7e9e;
67
+ --ansi-green: #7ce8b8;
68
+ --ansi-yellow: #ffd082;
69
+ --ansi-blue: #8fa3ff;
70
+ --ansi-magenta: #d79bff;
71
+ --ansi-cyan: #7edcf0;
72
+ --ansi-white: #e8e2f8;
73
+ --ansi-bright-black: #a89cc8;
74
+ --ansi-bright-red: #ffa5bc;
75
+ --ansi-bright-green: #a5f2ce;
76
+ --ansi-bright-yellow: #ffdfa5;
77
+ --ansi-bright-blue: #b0bcff;
78
+ --ansi-bright-magenta: #e5bcff;
79
+ --ansi-bright-cyan: #a8e9f5;
80
+ --ansi-bright-white: #fafafa;
81
+
82
+ /* ── builds ─────────────────────────────── */
83
+ --dim-opacity: 0.3;
84
+ }
85
+
86
+ .decklight h1, .decklight h2 { letter-spacing: 0.04em; }
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · dune
3
+ light · Desert noon — sandstone, terracotta, wide serif display
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #f1e9db;
10
+ --bg-accent: #ecdfc6;
11
+ --fg: #453322;
12
+ --muted: #78644d;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
16
+ --font-heading: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #8a4519;
19
+ --heading-weight: 700;
20
+ --link: #9c4a12;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #aa4c1c;
24
+ --accent-contrast: #fff6ee;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #faf4e8;
28
+ --block-border: 1px solid #ddceb2;
29
+ --block-radius: 10px;
30
+ --shadow: 0 5px 18px rgba(120, 80, 30, 0.1);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #ecdfc6;
34
+ --code-fg: #42342a;
35
+ --hl-keyword: #9c4a12;
36
+ --hl-string: #276238;
37
+ --hl-number: #8a2e42;
38
+ --hl-comment: #6f5f4a;
39
+ --hl-function: #1d558a;
40
+ --hl-type: #7a4092;
41
+ --hl-punct: #5c4c38;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #8a6f4e;
45
+ --d-text: #453322;
46
+ --d-muted: #7d6a52;
47
+ --d-accent: #c05621;
48
+ --d-fill-1: #ecdcbb;
49
+ --d-fill-2: #f0e2cd;
50
+ --d-fill-3: #e6d4b0;
51
+ --d-fill-4: #f4e6c2;
52
+ --d-fill-5: #e9dabd;
53
+ --d-fill-6: #efe0b6;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #2a2015;
57
+ --term-fg: #eee3d0;
58
+ --term-prompt: #f0a868;
59
+ --term-cursor: #f0a868;
60
+ --term-selection: rgba(240, 168, 104, 0.26);
61
+ --ansi-black: #9a8a74;
62
+ --ansi-red: #f08a72;
63
+ --ansi-green: #adc576;
64
+ --ansi-yellow: #eec063;
65
+ --ansi-blue: #96b3d8;
66
+ --ansi-magenta: #cfa0c0;
67
+ --ansi-cyan: #93ccb0;
68
+ --ansi-white: #ece0cc;
69
+ --ansi-bright-black: #ab9c86;
70
+ --ansi-bright-red: #f5a992;
71
+ --ansi-bright-green: #c5d898;
72
+ --ansi-bright-yellow: #f5d38a;
73
+ --ansi-bright-blue: #b3c8e5;
74
+ --ansi-bright-magenta: #dfbad5;
75
+ --ansi-bright-cyan: #b0dfc6;
76
+ --ansi-bright-white: #faf3e6;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }