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 · latte
3
+ light · Steamed milk and espresso — soft, warm café tones
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #f6efe7;
10
+ --bg-accent: #eee2d4;
11
+ --fg: #3b2f2a;
12
+ --muted: #6f5f55;
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: #6b4226;
19
+ --heading-weight: 700;
20
+ --link: #8a5022;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #a15b2e;
24
+ --accent-contrast: #fff5ec;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #fcf7f0;
28
+ --block-border: 1px solid #e5d5c2;
29
+ --block-radius: 16px;
30
+ --shadow: 0 8px 26px rgba(110, 70, 40, 0.1);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #eee2d4;
34
+ --code-fg: #3a2f28;
35
+ --hl-keyword: #8a5022;
36
+ --hl-string: #276238;
37
+ --hl-number: #8a2e42;
38
+ --hl-comment: #6d5f52;
39
+ --hl-function: #1d558a;
40
+ --hl-type: #7a3f92;
41
+ --hl-punct: #584a40;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #8a705c;
45
+ --d-text: #3b2f2a;
46
+ --d-muted: #7c6a5e;
47
+ --d-accent: #a15b2e;
48
+ --d-fill-1: #f0dfc8;
49
+ --d-fill-2: #ead8c8;
50
+ --d-fill-3: #f5e5cd;
51
+ --d-fill-4: #e5d2bc;
52
+ --d-fill-5: #f0dcd0;
53
+ --d-fill-6: #ecdabf;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #291f18;
57
+ --term-fg: #ece2d6;
58
+ --term-prompt: #e8a878;
59
+ --term-cursor: #e8a878;
60
+ --term-selection: rgba(232, 168, 120, 0.26);
61
+ --ansi-black: #9c8a7c;
62
+ --ansi-red: #ef8a76;
63
+ --ansi-green: #aac882;
64
+ --ansi-yellow: #e8c06e;
65
+ --ansi-blue: #9cb2d8;
66
+ --ansi-magenta: #cfa2c0;
67
+ --ansi-cyan: #95cab5;
68
+ --ansi-white: #ebe0d4;
69
+ --ansi-bright-black: #ad9c8e;
70
+ --ansi-bright-red: #f4ab97;
71
+ --ansi-bright-green: #c2daa2;
72
+ --ansi-bright-yellow: #f2d295;
73
+ --ansi-bright-blue: #b8c9e8;
74
+ --ansi-bright-magenta: #dfbad2;
75
+ --ansi-bright-cyan: #b2ddcb;
76
+ --ansi-bright-white: #faf4ec;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · linen
3
+ light · Natural fiber — unbleached warm white, olive and clay
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #f8f6f1;
10
+ --bg-accent: #efece2;
11
+ --fg: #3c3a33;
12
+ --muted: #6e6b60;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: Seravek, "Gill Sans", "Segoe UI", Verdana, sans-serif;
16
+ --font-heading: Seravek, "Gill Sans", "Segoe UI", Verdana, sans-serif;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #55601e;
19
+ --heading-weight: 600;
20
+ --link: #5c6e14;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #5f7d1f;
24
+ --accent-contrast: #f7ffe2;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #fdfcf8;
28
+ --block-border: 1px solid #e0dccc;
29
+ --block-radius: 6px;
30
+ --shadow: 0 3px 12px rgba(80, 75, 50, 0.07);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #efece2;
34
+ --code-fg: #3a3830;
35
+ --hl-keyword: #55601e;
36
+ --hl-string: #8a4a10;
37
+ --hl-number: #1d5f8a;
38
+ --hl-comment: #6b685c;
39
+ --hl-function: #256e60;
40
+ --hl-type: #7a3f92;
41
+ --hl-punct: #565348;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #7c7a5e;
45
+ --d-text: #3c3a33;
46
+ --d-muted: #787564;
47
+ --d-accent: #5f7d1f;
48
+ --d-fill-1: #ebe8d2;
49
+ --d-fill-2: #f0ecda;
50
+ --d-fill-3: #e4e4cc;
51
+ --d-fill-4: #f4eed8;
52
+ --d-fill-5: #e8e8d8;
53
+ --d-fill-6: #eee9cd;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #26251d;
57
+ --term-fg: #e8e6da;
58
+ --term-prompt: #c2d078;
59
+ --term-cursor: #c2d078;
60
+ --term-selection: rgba(194, 208, 120, 0.26);
61
+ --ansi-black: #959282;
62
+ --ansi-red: #f08d7c;
63
+ --ansi-green: #b0cc72;
64
+ --ansi-yellow: #e2c368;
65
+ --ansi-blue: #92b2d8;
66
+ --ansi-magenta: #c8a5c8;
67
+ --ansi-cyan: #92ccb2;
68
+ --ansi-white: #e8e5da;
69
+ --ansi-bright-black: #a8a494;
70
+ --ansi-bright-red: #f5ae9e;
71
+ --ansi-bright-green: #c8de95;
72
+ --ansi-bright-yellow: #eed592;
73
+ --ansi-bright-blue: #b0c8e8;
74
+ --ansi-bright-magenta: #dabfda;
75
+ --ansi-bright-cyan: #afdfc8;
76
+ --ansi-bright-white: #fbfaf5;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · meadow
3
+ light · Spring grass and clover — green-tinted daylight
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #f6faf2;
10
+ --bg-accent: #eaf4e2;
11
+ --fg: #26352a;
12
+ --muted: #5c6e60;
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: #2f6b33;
19
+ --heading-weight: 700;
20
+ --link: #2b6a4f;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #357a38;
24
+ --accent-contrast: #f2fff3;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #fafafa;
28
+ --block-border: 1px solid #d8e6d0;
29
+ --block-radius: 14px;
30
+ --shadow: 0 6px 20px rgba(46, 90, 50, 0.08);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #e9f2e0;
34
+ --code-fg: #2b3a2e;
35
+ --hl-keyword: #256e28;
36
+ --hl-string: #8a4a10;
37
+ --hl-number: #1d5f8a;
38
+ --hl-comment: #5f6f62;
39
+ --hl-function: #1e5aa8;
40
+ --hl-type: #7a3f92;
41
+ --hl-punct: #4a5a4e;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #5a7560;
45
+ --d-text: #26352a;
46
+ --d-muted: #6b7d6f;
47
+ --d-accent: #3e8e41;
48
+ --d-fill-1: #ddefd2;
49
+ --d-fill-2: #e6f2dc;
50
+ --d-fill-3: #d2ead8;
51
+ --d-fill-4: #eef5d8;
52
+ --d-fill-5: #daedde;
53
+ --d-fill-6: #e2f0ca;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #1c2a1e;
57
+ --term-fg: #dfe9dc;
58
+ --term-prompt: #8fd694;
59
+ --term-cursor: #8fd694;
60
+ --term-selection: rgba(143, 214, 148, 0.26);
61
+ --ansi-black: #87988a;
62
+ --ansi-red: #eb8b80;
63
+ --ansi-green: #8fd694;
64
+ --ansi-yellow: #dcc270;
65
+ --ansi-blue: #88b5e0;
66
+ --ansi-magenta: #c0a0d5;
67
+ --ansi-cyan: #82ccbc;
68
+ --ansi-white: #e2e9df;
69
+ --ansi-bright-black: #9dab9f;
70
+ --ansi-bright-red: #f2ada5;
71
+ --ansi-bright-green: #aee5b2;
72
+ --ansi-bright-yellow: #e8d494;
73
+ --ansi-bright-blue: #aacbea;
74
+ --ansi-bright-magenta: #d4bce5;
75
+ --ansi-bright-cyan: #a5ded2;
76
+ --ansi-bright-white: #f7fbf5;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
@@ -0,0 +1,85 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;600&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · metropolis
5
+ light · FiraSans minimalism: paper white, spruce ink, one orange
6
+ Inspired by the Beamer metropolis theme (Matthias Vogelgesang) — palette kept canonical where possible,
7
+ every gated pair fitted to the WCAG contract.
8
+ rule-exception: R3 the canonical metropolis orange (#eb811b) is the identity
9
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
10
+ ═══════════════════════════════════════════════════════════════ */
11
+
12
+ .decklight {
13
+ /* ── canvas ─────────────────────────────── */
14
+ --bg: #fafaf8;
15
+ --bg-accent: none;
16
+ --fg: #23373b;
17
+ --muted: #5f7175;
18
+
19
+ /* ── type ───────────────────────────────── */
20
+ --font-body: "Fira Sans", -apple-system, "Segoe UI", Roboto, sans-serif;
21
+ --font-heading: "Fira Sans", -apple-system, "Segoe UI", Roboto, sans-serif;
22
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
23
+ --heading-color: #23373b;
24
+ --heading-weight: 600;
25
+ --link: #c96a12;
26
+
27
+ /* ── accent ─────────────────────────────── */
28
+ --accent: #eb811b;
29
+ --accent-contrast: #333329;
30
+
31
+ /* ── blocks ─────────────────────────────── */
32
+ --block-bg: #f2f2eb;
33
+ --block-border: 1px solid #d9ddda;
34
+ --block-radius: 2px;
35
+ --shadow: 0 3px 12px rgba(35, 55, 59, 0.14);
36
+
37
+ /* ── code ───────────────────────────────── */
38
+ --code-bg: #23373b;
39
+ --code-fg: #eef2f2;
40
+ --hl-keyword: #e2ac5c;
41
+ --hl-string: #86cdbd;
42
+ --hl-number: #e39a72;
43
+ --hl-comment: #7e979b;
44
+ --hl-function: #85bce4;
45
+ --hl-type: #cfc088;
46
+ --hl-punct: #cfdadb;
47
+
48
+ /* ── diagram ────────────────────────────── */
49
+ --d-stroke: #5f7175;
50
+ --d-text: #23373b;
51
+ --d-muted: #5f7175;
52
+ --d-accent: #d06f12;
53
+ --d-fill-1: #e5edee;
54
+ --d-fill-2: #ece4dd;
55
+ --d-fill-3: #dcead5;
56
+ --d-fill-4: #e5eaee;
57
+ --d-fill-5: #ecdde5;
58
+ --d-fill-6: #eae8d5;
59
+
60
+ /* ── terminal ───────────────────────────── */
61
+ --term-bg: #1d2e31;
62
+ --term-fg: #eceae6;
63
+ --term-prompt: #eb811b;
64
+ --term-cursor: #eb811b;
65
+ --term-selection: rgba(235, 129, 27, 0.28);
66
+ --ansi-black: #9f9489;
67
+ --ansi-red: #db8361;
68
+ --ansi-green: #61db7d;
69
+ --ansi-yellow: #dbd461;
70
+ --ansi-blue: #6182db;
71
+ --ansi-magenta: #d861db;
72
+ --ansi-cyan: #61d4db;
73
+ --ansi-white: #e3e0de;
74
+ --ansi-bright-black: #b4ada7;
75
+ --ansi-bright-red: #eba88e;
76
+ --ansi-bright-green: #8eeba3;
77
+ --ansi-bright-yellow: #ebe68e;
78
+ --ansi-bright-blue: #8ea8eb;
79
+ --ansi-bright-magenta: #e98eeb;
80
+ --ansi-bright-cyan: #8ee5eb;
81
+ --ansi-bright-white: #f3f2f2;
82
+
83
+ /* ── builds ─────────────────────────────── */
84
+ --dim-opacity: 0.3;
85
+ }
@@ -0,0 +1,84 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · miami-vice
3
+ dark · night-ocean navy, flamingo pink, seafoam teal
4
+ Inspired by Miami Vice — pastel neon over a hot night — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ rule-exception: R2 the neon-night duotone canvas is the identity
7
+ rule-exception: R3 vice pink does not do pastel-muted
8
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
9
+ ═══════════════════════════════════════════════════════════════ */
10
+
11
+ .decklight {
12
+ /* ── canvas ─────────────────────────────── */
13
+ --bg: linear-gradient(180deg, #131a2c 0%, #1e1430 100%);
14
+ --bg-accent: none;
15
+ --fg: #f0e9ef;
16
+ --muted: #a89ab4;
17
+
18
+ /* ── type ───────────────────────────────── */
19
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
20
+ --font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
21
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
22
+ --heading-color: #57e0c8;
23
+ --heading-weight: 700;
24
+ --link: #f78fc0;
25
+
26
+ /* ── accent ─────────────────────────────── */
27
+ --accent: #ef6fae;
28
+ --accent-contrast: #303027;
29
+
30
+ /* ── blocks ─────────────────────────────── */
31
+ --block-bg: #1f2535;
32
+ --block-border: 1px solid #373b46;
33
+ --block-radius: 10px;
34
+ --shadow: 0 8px 26px rgba(0, 0, 0, 0.5);
35
+
36
+ /* ── code ───────────────────────────────── */
37
+ --code-bg: #181022;
38
+ --code-fg: #f0e8f0;
39
+ --hl-keyword: #f78fc0;
40
+ --hl-string: #6fe0c8;
41
+ --hl-number: #f0c880;
42
+ --hl-comment: #8a7a9a;
43
+ --hl-function: #8fb8f8;
44
+ --hl-type: #d8a8f0;
45
+ --hl-punct: #c0b4cc;
46
+
47
+ /* ── diagram ────────────────────────────── */
48
+ --d-stroke: #a89ab4;
49
+ --d-text: #f0e9ef;
50
+ --d-muted: #a89ab4;
51
+ --d-accent: #ef6fae;
52
+ --d-fill-1: #36272f;
53
+ --d-fill-2: #283f3c;
54
+ --d-fill-3: #332848;
55
+ --d-fill-4: #272f36;
56
+ --d-fill-5: #3f3028;
57
+ --d-fill-6: #482848;
58
+
59
+ /* ── terminal ───────────────────────────── */
60
+ --term-bg: #120c1c;
61
+ --term-fg: #e6e6e2;
62
+ --term-prompt: #ef6fae;
63
+ --term-cursor: #ef6fae;
64
+ --term-selection: rgba(239, 111, 174, 0.28);
65
+ --ansi-black: #9a8aa8;
66
+ --ansi-red: #f08a9a;
67
+ --ansi-green: #6fe0c8;
68
+ --ansi-yellow: #f0c880;
69
+ --ansi-blue: #8fb8f8;
70
+ --ansi-magenta: #f78fc0;
71
+ --ansi-cyan: #7fe0e8;
72
+ --ansi-white: #f4eef4;
73
+ --ansi-bright-black: #b8adc2;
74
+ --ansi-bright-red: #f7c0c9;
75
+ --ansi-bright-green: #a1ebdb;
76
+ --ansi-bright-yellow: #f6e0b7;
77
+ --ansi-bright-blue: #c9ddfc;
78
+ --ansi-bright-magenta: #fbc8e0;
79
+ --ansi-bright-cyan: #b3edf1;
80
+ --ansi-bright-white: #f7f3f7;
81
+
82
+ /* ── builds ─────────────────────────────── */
83
+ --dim-opacity: 0.28;
84
+ }
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · midnight
3
+ dark · Late-night indigo and warm lamplight amber — the hacking hour
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #1a1c2f;
10
+ --bg-accent: #1a2048;
11
+ --fg: #e4e7fb;
12
+ --muted: #a2a9d6;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
16
+ --font-heading: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #ffd9a0;
19
+ --heading-weight: 700;
20
+ --link: #8fb5ff;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #e7b16c;
24
+ --accent-contrast: #2b1800;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #1a1f45;
28
+ --block-border: 1px solid #2c3468;
29
+ --block-radius: 10px;
30
+ --shadow: 0 10px 32px rgba(4, 6, 24, 0.6);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #0e1129;
34
+ --code-fg: #dde2fa;
35
+ --hl-keyword: #ffb454;
36
+ --hl-string: #8be8ad;
37
+ --hl-number: #ff9e9e;
38
+ --hl-comment: #7f87b8;
39
+ --hl-function: #8fb5ff;
40
+ --hl-type: #c5aaff;
41
+ --hl-punct: #a9b0d8;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #5b64a8;
45
+ --d-text: #e4e7fb;
46
+ --d-muted: #9098c8;
47
+ --d-accent: #ffb454;
48
+ --d-fill-1: #1e2452;
49
+ --d-fill-2: #252c63;
50
+ --d-fill-3: #2b2350;
51
+ --d-fill-4: #1f2f5e;
52
+ --d-fill-5: #2c3158;
53
+ --d-fill-6: #232858;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #0a0d22;
57
+ --term-fg: #d9defa;
58
+ --term-prompt: #ffb454;
59
+ --term-cursor: #ffb454;
60
+ --term-selection: rgba(255, 180, 84, 0.26);
61
+ --ansi-black: #828ab8;
62
+ --ansi-red: #ff8298;
63
+ --ansi-green: #7fe0a8;
64
+ --ansi-yellow: #ffce73;
65
+ --ansi-blue: #82aaff;
66
+ --ansi-magenta: #c79bf5;
67
+ --ansi-cyan: #79dce8;
68
+ --ansi-white: #e2e6fa;
69
+ --ansi-bright-black: #9aa2cc;
70
+ --ansi-bright-red: #ffa8b8;
71
+ --ansi-bright-green: #a5ecc3;
72
+ --ansi-bright-yellow: #ffdf9c;
73
+ --ansi-bright-blue: #a8c4ff;
74
+ --ansi-bright-magenta: #dbbcfa;
75
+ --ansi-bright-cyan: #a3e9f0;
76
+ --ansi-bright-white: #fafafa;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.3;
80
+ }
@@ -0,0 +1,82 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · mint
5
+ light · Cool spearmint SaaS-fresh — pill shapes, modern grotesk
6
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #f2faf7;
12
+ --bg-accent: #e2f4ec;
13
+ --fg: #1f3a34;
14
+ --muted: #546b64;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: "Space Grotesk", "Avenir Next", Avenir, Futura, "Century Gothic", "Segoe UI", sans-serif;
19
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #0b6653;
21
+ --heading-weight: 700;
22
+ --link: #0c7a63;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #13725c;
26
+ --accent-contrast: #eafff8;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #fafafa;
30
+ --block-border: 1px solid #cfe8dd;
31
+ --block-radius: 22px;
32
+ --shadow: 0 6px 24px rgba(13, 147, 115, 0.09);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #e2f2eb;
36
+ --code-fg: #22403a;
37
+ --hl-keyword: #0c7a63;
38
+ --hl-string: #8a4a10;
39
+ --hl-number: #b3216a;
40
+ --hl-comment: #5c7068;
41
+ --hl-function: #1e5aa8;
42
+ --hl-type: #7038d8;
43
+ --hl-punct: #42584f;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #4d7a6d;
47
+ --d-text: #1f3a34;
48
+ --d-muted: #618078;
49
+ --d-accent: #0d9373;
50
+ --d-fill-1: #cdeee0;
51
+ --d-fill-2: #daf2e8;
52
+ --d-fill-3: #c2e8dc;
53
+ --d-fill-4: #e5f5e0;
54
+ --d-fill-5: #d2eee8;
55
+ --d-fill-6: #ddf0d5;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #132a24;
59
+ --term-fg: #d9e8e2;
60
+ --term-prompt: #5ce8bb;
61
+ --term-cursor: #5ce8bb;
62
+ --term-selection: rgba(92, 232, 187, 0.26);
63
+ --ansi-black: #7e948c;
64
+ --ansi-red: #f0897e;
65
+ --ansi-green: #5ce0a8;
66
+ --ansi-yellow: #dcc26e;
67
+ --ansi-blue: #7eb2e0;
68
+ --ansi-magenta: #c2a0d8;
69
+ --ansi-cyan: #6cd5ca;
70
+ --ansi-white: #dee9e4;
71
+ --ansi-bright-black: #97a8a1;
72
+ --ansi-bright-red: #f5aba2;
73
+ --ansi-bright-green: #8feec5;
74
+ --ansi-bright-yellow: #ead294;
75
+ --ansi-bright-blue: #a5caec;
76
+ --ansi-bright-magenta: #d6bce5;
77
+ --ansi-bright-cyan: #98e5dc;
78
+ --ansi-bright-white: #f4fbf8;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.35;
82
+ }
@@ -0,0 +1,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · moss
3
+ dark · Old-forest greens with bookish serif headings — damp and calm
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #141a14;
10
+ --bg-accent: #1b241b;
11
+ --fg: #e9f0e2;
12
+ --muted: #adbfa5;
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: #cfe6b8;
19
+ --heading-weight: 600;
20
+ --link: #a8d888;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #9ccc65;
24
+ --accent-contrast: #15250a;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #1c241c;
28
+ --block-border: 1px solid #2d3a2b;
29
+ --block-radius: 8px;
30
+ --shadow: 0 8px 24px rgba(3, 8, 3, 0.55);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #101610;
34
+ --code-fg: #e2ead9;
35
+ --hl-keyword: #a8d888;
36
+ --hl-string: #d5c586;
37
+ --hl-number: #8fd0b5;
38
+ --hl-comment: #8ba083;
39
+ --hl-function: #9cc0e8;
40
+ --hl-type: #c5b8e0;
41
+ --hl-punct: #aebfa6;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #6f8a62;
45
+ --d-text: #e9f0e2;
46
+ --d-muted: #9cae93;
47
+ --d-accent: #9ccc65;
48
+ --d-fill-1: #1f2a1c;
49
+ --d-fill-2: #243522;
50
+ --d-fill-3: #2b2f1e;
51
+ --d-fill-4: #1e3226;
52
+ --d-fill-5: #293225;
53
+ --d-fill-6: #222d20;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #0d120d;
57
+ --term-fg: #dfe8d6;
58
+ --term-prompt: #9ccc65;
59
+ --term-cursor: #9ccc65;
60
+ --term-selection: rgba(156, 204, 101, 0.26);
61
+ --ansi-black: #899a82;
62
+ --ansi-red: #e88a80;
63
+ --ansi-green: #9ccc65;
64
+ --ansi-yellow: #d9c26b;
65
+ --ansi-blue: #8ab0d8;
66
+ --ansi-magenta: #c0a0d0;
67
+ --ansi-cyan: #8bccb8;
68
+ --ansi-white: #e6ecdd;
69
+ --ansi-bright-black: #a0b098;
70
+ --ansi-bright-red: #f2aaa2;
71
+ --ansi-bright-green: #b8e08c;
72
+ --ansi-bright-yellow: #e8d494;
73
+ --ansi-bright-blue: #a8c8e8;
74
+ --ansi-bright-magenta: #d5bce2;
75
+ --ansi-bright-cyan: #abdccd;
76
+ --ansi-bright-white: #fbfef7;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.32;
80
+ }
81
+
82
+ .decklight h1, .decklight h2 { font-style: italic; }