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,85 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Quicksand:wght@500;600&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · reveal-sky
5
+ light · pale sky wash, rounded type, sea-blue links
6
+ Inspired by Reveal.js 'sky' — palette kept canonical where possible,
7
+ every gated pair fitted to the WCAG contract.
8
+ rule-exception: R2 the canonical sky wash canvas
9
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
10
+ ═══════════════════════════════════════════════════════════════ */
11
+
12
+ .decklight {
13
+ /* ── canvas ─────────────────────────────── */
14
+ --bg: linear-gradient(180deg, #f7fbfc 0%, #add9e4 100%);
15
+ --bg-accent: none;
16
+ --fg: #333333;
17
+ --muted: #5f7078;
18
+
19
+ /* ── type ───────────────────────────────── */
20
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
21
+ --font-heading: Quicksand, ui-rounded, "SF Pro Rounded", "Segoe UI", sans-serif;
22
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
23
+ --heading-color: #333333;
24
+ --heading-weight: 600;
25
+ --link: #3b759e;
26
+
27
+ /* ── accent ─────────────────────────────── */
28
+ --accent: #3b759e;
29
+ --accent-contrast: #fbfbfa;
30
+
31
+ /* ── blocks ─────────────────────────────── */
32
+ --block-bg: #ecf2f3;
33
+ --block-border: 1px solid #d0d9dc;
34
+ --block-radius: 8px;
35
+ --shadow: 0 5px 18px rgba(30, 30, 40, 0.12);
36
+
37
+ /* ── code ───────────────────────────────── */
38
+ --code-bg: #272822;
39
+ --code-fg: #f8f8f2;
40
+ --hl-keyword: #fa4e8c;
41
+ --hl-string: #e6db74;
42
+ --hl-number: #ae81ff;
43
+ --hl-comment: #787460;
44
+ --hl-function: #a6e22e;
45
+ --hl-type: #66d9ef;
46
+ --hl-punct: #f8f8f2;
47
+
48
+ /* ── diagram ────────────────────────────── */
49
+ --d-stroke: #5f7078;
50
+ --d-text: #333333;
51
+ --d-muted: #5f7078;
52
+ --d-accent: #3b759e;
53
+ --d-fill-1: #e6edef;
54
+ --d-fill-2: #dee2ec;
55
+ --d-fill-3: #ebe1d5;
56
+ --d-fill-4: #ece6ef;
57
+ --d-fill-5: #e5ecde;
58
+ --d-fill-6: #d5ebe4;
59
+
60
+ /* ── terminal ───────────────────────────── */
61
+ --term-bg: #1d282b;
62
+ --term-fg: #eceae6;
63
+ --term-prompt: #3e7aa5;
64
+ --term-cursor: #3e7aa5;
65
+ --term-selection: rgba(59, 117, 158, 0.28);
66
+ --ansi-black: #89969f;
67
+ --ansi-red: #c38a79;
68
+ --ansi-green: #79c387;
69
+ --ansi-yellow: #c3bb79;
70
+ --ansi-blue: #7991c3;
71
+ --ansi-magenta: #be79c3;
72
+ --ansi-cyan: #79c2c3;
73
+ --ansi-white: #dee1e3;
74
+ --ansi-bright-black: #a7afb4;
75
+ --ansi-bright-red: #dbac9e;
76
+ --ansi-bright-green: #9edba9;
77
+ --ansi-bright-yellow: #dbd59e;
78
+ --ansi-bright-blue: #9eb2db;
79
+ --ansi-bright-magenta: #d79edb;
80
+ --ansi-bright-cyan: #9edadb;
81
+ --ansi-bright-white: #f2f2f3;
82
+
83
+ /* ── builds ─────────────────────────────── */
84
+ --dim-opacity: 0.3;
85
+ }
@@ -0,0 +1,83 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · reveal-solarized
3
+ light · the canonical base3 cream, equal-lightness accents
4
+ Inspired by Reveal.js 'solarized' / Ethan Schoonover's Solarized Light — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ rule-exception: R2 the canonical Solarized base3 cream canvas
7
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
8
+ ═══════════════════════════════════════════════════════════════ */
9
+
10
+ .decklight {
11
+ /* ── canvas ─────────────────────────────── */
12
+ --bg: #fdf6e3;
13
+ --bg-accent: none;
14
+ --fg: #5e737a;
15
+ --muted: #7d8e8e;
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: #586e75;
22
+ --heading-weight: 600;
23
+ --link: #268bd2;
24
+
25
+ /* ── accent ─────────────────────────────── */
26
+ --accent: #268bd2;
27
+ --accent-contrast: #1c1c17;
28
+
29
+ /* ── blocks ─────────────────────────────── */
30
+ --block-bg: #ece9e0;
31
+ --block-border: 1px solid #d3d0c5;
32
+ --block-radius: 8px;
33
+ --shadow: 0 5px 18px rgba(30, 30, 40, 0.12);
34
+
35
+ /* ── code ───────────────────────────────── */
36
+ --code-bg: #eee8d5;
37
+ --code-fg: #54696f;
38
+ --hl-keyword: #5d6b00;
39
+ --hl-string: #1d706a;
40
+ --hl-number: #bc2970;
41
+ --hl-comment: #738484;
42
+ --hl-function: #1d6ca2;
43
+ --hl-type: #826200;
44
+ --hl-punct: #55686f;
45
+
46
+ /* ── diagram ────────────────────────────── */
47
+ --d-stroke: #93a1a1;
48
+ --d-text: #657b83;
49
+ --d-muted: #738484;
50
+ --d-accent: #2485c9;
51
+ --d-fill-1: #e7e4da;
52
+ --d-fill-2: #e6d8d2;
53
+ --d-fill-3: #c9d9e4;
54
+ --d-fill-4: #e6e7da;
55
+ --d-fill-5: #e6d2db;
56
+ --d-fill-6: #c9e4e2;
57
+
58
+ /* ── terminal ───────────────────────────── */
59
+ --term-bg: #002b36;
60
+ --term-fg: #eceae6;
61
+ --term-prompt: #268bd2;
62
+ --term-cursor: #268bd2;
63
+ --term-selection: rgba(38, 139, 210, 0.28);
64
+ --ansi-black: #93a1a1;
65
+ --ansi-red: #dc322f;
66
+ --ansi-green: #859900;
67
+ --ansi-yellow: #b58900;
68
+ --ansi-blue: #268bd2;
69
+ --ansi-magenta: #d33682;
70
+ --ansi-cyan: #2aa198;
71
+ --ansi-white: #eee8d5;
72
+ --ansi-bright-black: #b4bdbd;
73
+ --ansi-bright-red: #e56663;
74
+ --ansi-bright-green: #bad600;
75
+ --ansi-bright-yellow: #f2b700;
76
+ --ansi-bright-blue: #55a7e0;
77
+ --ansi-bright-magenta: #de68a1;
78
+ --ansi-bright-cyan: #3cccc1;
79
+ --ansi-bright-white: #f9f7f0;
80
+
81
+ /* ── builds ─────────────────────────────── */
82
+ --dim-opacity: 0.3;
83
+ }
@@ -0,0 +1,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · reveal-white
3
+ light · plain white, dark ink, Reveal blue links, monokai code
4
+ Inspired by Reveal.js 'white' — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #fdfdfd;
12
+ --bg-accent: none;
13
+ --fg: #20242a;
14
+ --muted: #6d727b;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
19
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #20242a;
21
+ --heading-weight: 600;
22
+ --link: #2a76dd;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #226ed6;
26
+ --accent-contrast: #fbfbfa;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #f3f2f2;
30
+ --block-border: 1px solid #dfd4d4;
31
+ --block-radius: 8px;
32
+ --shadow: 0 5px 18px rgba(30, 30, 40, 0.12);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #272822;
36
+ --code-fg: #f8f8f2;
37
+ --hl-keyword: #fa4e8c;
38
+ --hl-string: #e6db74;
39
+ --hl-number: #ae81ff;
40
+ --hl-comment: #787460;
41
+ --hl-function: #a6e22e;
42
+ --hl-type: #66d9ef;
43
+ --hl-punct: #f8f8f2;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #6d727b;
47
+ --d-text: #20242a;
48
+ --d-muted: #6d727b;
49
+ --d-accent: #226ed6;
50
+ --d-fill-1: #f2eaea;
51
+ --d-fill-2: #efe9e2;
52
+ --d-fill-3: #dae7ed;
53
+ --d-fill-4: #eef2ea;
54
+ --d-fill-5: #e7e2ef;
55
+ --d-fill-6: #eddae4;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #2b1d1d;
59
+ --term-fg: #eceae6;
60
+ --term-prompt: #226ed6;
61
+ --term-cursor: #226ed6;
62
+ --term-selection: rgba(34, 110, 214, 0.28);
63
+ --ansi-black: #89929f;
64
+ --ansi-red: #d36d69;
65
+ --ansi-green: #6bd369;
66
+ --ansi-yellow: #d3b369;
67
+ --ansi-blue: #69a0d3;
68
+ --ansi-magenta: #b669d3;
69
+ --ansi-cyan: #69d3bf;
70
+ --ansi-white: #dee0e3;
71
+ --ansi-bright-black: #a7acb4;
72
+ --ansi-bright-red: #e69693;
73
+ --ansi-bright-green: #95e693;
74
+ --ansi-bright-yellow: #e6cd93;
75
+ --ansi-bright-blue: #93bee6;
76
+ --ansi-bright-magenta: #d093e6;
77
+ --ansi-bright-cyan: #93e6d7;
78
+ --ansi-bright-white: #f2f2f3;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.3;
82
+ }
@@ -0,0 +1,81 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · sepia
3
+ light · Antique folio — old-book paper, oxblood ink, light terminal
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #ebe4d6;
10
+ --bg-accent: #e8dabc;
11
+ --fg: #463522;
12
+ --muted: #75634a;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, 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: #5c3317;
19
+ --heading-weight: 700;
20
+ --link: #7d2a20;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #8a2e2e;
24
+ --accent-contrast: #fdf2ee;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #f7efdd;
28
+ --block-border: 1px solid #d5c4a2;
29
+ --block-radius: 4px;
30
+ --shadow: 0 3px 10px rgba(90, 60, 20, 0.12);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #e8dabc;
34
+ --code-fg: #43331f;
35
+ --hl-keyword: #7d2a20;
36
+ --hl-string: #2f5c28;
37
+ --hl-number: #1d4d78;
38
+ --hl-comment: #6d5c42;
39
+ --hl-function: #5c3a8a;
40
+ --hl-type: #0d5c5c;
41
+ --hl-punct: #5c4a30;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #7d6845;
45
+ --d-text: #463522;
46
+ --d-muted: #7a684e;
47
+ --d-accent: #8a2e2e;
48
+ --d-fill-1: #ead9b4;
49
+ --d-fill-2: #e2d2ae;
50
+ --d-fill-3: #efe0be;
51
+ --d-fill-4: #dccca6;
52
+ --d-fill-5: #e6d6b2;
53
+ --d-fill-6: #eddebb;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #e8dabc;
57
+ --term-fg: #43331f;
58
+ --term-prompt: #7d2a20;
59
+ --term-cursor: #43331f;
60
+ --term-selection: rgba(125, 42, 32, 0.18);
61
+ --term-chrome: none;
62
+ --ansi-black: #43331f;
63
+ --ansi-red: #8c2318;
64
+ --ansi-green: #2f5c28;
65
+ --ansi-yellow: #6d4a00;
66
+ --ansi-blue: #1d4d78;
67
+ --ansi-magenta: #68306d;
68
+ --ansi-cyan: #0d5c5c;
69
+ --ansi-white: #6d5c42;
70
+ --ansi-bright-black: #5c4a30;
71
+ --ansi-bright-red: #701a10;
72
+ --ansi-bright-green: #254a20;
73
+ --ansi-bright-yellow: #5c3e00;
74
+ --ansi-bright-blue: #173e62;
75
+ --ansi-bright-magenta: #552758;
76
+ --ansi-bright-cyan: #0a4a4a;
77
+ --ansi-bright-white: #847252;
78
+
79
+ /* ── builds ─────────────────────────────── */
80
+ --dim-opacity: 0.4;
81
+ }
@@ -0,0 +1,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · seriph
3
+ light · warm white, quiet serif display, a single restrained gold
4
+ Inspired by Slidev's 'seriph' aesthetic — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #fdfcf9;
12
+ --bg-accent: none;
13
+ --fg: #2b2a27;
14
+ --muted: #807b71;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
19
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #1f1e1b;
21
+ --heading-weight: 600;
22
+ --link: #8a6d33;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #9c7c3c;
26
+ --accent-contrast: #171712;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #f4f3ed;
30
+ --block-border: 1px solid #e4e0d5;
31
+ --block-radius: 4px;
32
+ --shadow: 0 4px 14px rgba(40, 36, 28, 0.10);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #26241f;
36
+ --code-fg: #ece9e2;
37
+ --hl-keyword: #d8b56a;
38
+ --hl-string: #a8bd8c;
39
+ --hl-number: #d89a72;
40
+ --hl-comment: #8b8778;
41
+ --hl-function: #9ebcd8;
42
+ --hl-type: #cfc39d;
43
+ --hl-punct: #b5b2a8;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #807b71;
47
+ --d-text: #2b2a27;
48
+ --d-muted: #807b71;
49
+ --d-accent: #9c7c3c;
50
+ --d-fill-1: #f0ede7;
51
+ --d-fill-2: #ede4e0;
52
+ --d-fill-3: #d7e2ec;
53
+ --d-fill-4: #ecf0e7;
54
+ --d-fill-5: #e7e0ed;
55
+ --d-fill-6: #ecd7e2;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #2b271d;
59
+ --term-fg: #eceae6;
60
+ --term-prompt: #9c7c3c;
61
+ --term-cursor: #9c7c3c;
62
+ --term-selection: rgba(156, 124, 60, 0.28);
63
+ --ansi-black: #9f9789;
64
+ --ansi-red: #c37f79;
65
+ --ansi-green: #79c37c;
66
+ --ansi-yellow: #c3b179;
67
+ --ansi-blue: #799cc3;
68
+ --ansi-magenta: #b379c3;
69
+ --ansi-cyan: #79c3b9;
70
+ --ansi-white: #e3e1de;
71
+ --ansi-bright-black: #b4b0a7;
72
+ --ansi-bright-red: #dba39e;
73
+ --ansi-bright-green: #9edba0;
74
+ --ansi-bright-yellow: #dbcc9e;
75
+ --ansi-bright-blue: #9ebbdb;
76
+ --ansi-bright-magenta: #ce9edb;
77
+ --ansi-bright-cyan: #9edbd3;
78
+ --ansi-bright-white: #f3f2f2;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.3;
82
+ }
@@ -0,0 +1,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · severance
3
+ dark · lumon midnight, cold fluorescent teal, unsettling calm
4
+ Inspired by Severance — the severed floor and its green terminals — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #06131c;
12
+ --bg-accent: none;
13
+ --fg: #cfe4e4;
14
+ --muted: #7fa0a4;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
19
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #a8e8dc;
21
+ --heading-weight: 500;
22
+ --link: #6fd0c0;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #48b8a4;
26
+ --accent-contrast: #131313;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #141c22;
30
+ --block-border: 1px solid #2a3135;
31
+ --block-radius: 4px;
32
+ --shadow: 0 8px 26px rgba(0, 0, 0, 0.5);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #0a1c26;
36
+ --code-fg: #c8e8e4;
37
+ --hl-keyword: #7fe0d0;
38
+ --hl-string: #a8d0e8;
39
+ --hl-number: #d0e090;
40
+ --hl-comment: #5f8084;
41
+ --hl-function: #98c8f0;
42
+ --hl-type: #c0e8c8;
43
+ --hl-punct: #8fb0b4;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #7fa0a4;
47
+ --d-text: #cfe4e4;
48
+ --d-muted: #7fa0a4;
49
+ --d-accent: #48b8a4;
50
+ --d-fill-1: #1b2525;
51
+ --d-fill-2: #1d282e;
52
+ --d-fill-3: #1f3632;
53
+ --d-fill-4: #1b1f25;
54
+ --d-fill-5: #1d2e27;
55
+ --d-fill-6: #1f2336;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #040e15;
59
+ --term-fg: #e6e6e2;
60
+ --term-prompt: #48b8a4;
61
+ --term-cursor: #48b8a4;
62
+ --term-selection: rgba(72, 184, 164, 0.28);
63
+ --ansi-black: #6f9094;
64
+ --ansi-red: #e09088;
65
+ --ansi-green: #8fd8b8;
66
+ --ansi-yellow: #d0d090;
67
+ --ansi-blue: #88b8e0;
68
+ --ansi-magenta: #b0a0d0;
69
+ --ansi-cyan: #7fe0d0;
70
+ --ansi-white: #e0efee;
71
+ --ansi-bright-black: #92abae;
72
+ --ansi-bright-red: #edbdb9;
73
+ --ansi-bright-green: #bce8d5;
74
+ --ansi-bright-yellow: #e2e2bb;
75
+ --ansi-bright-blue: #b9d5ed;
76
+ --ansi-bright-magenta: #d2c9e4;
77
+ --ansi-bright-cyan: #b0ece2;
78
+ --ansi-bright-white: #f2f8f8;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.25;
82
+ }
@@ -0,0 +1,80 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · slate
3
+ light · Boardroom neutral — deliberately safe, steel-blue accent
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: #f1f5f9;
11
+ --fg: #334155;
12
+ --muted: #64748b;
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: #0f172a;
19
+ --heading-weight: 700;
20
+ --link: #1d4ed8;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #3268de;
24
+ --accent-contrast: #eff6ff;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #f8fafc;
28
+ --block-border: 1px solid #e2e8f0;
29
+ --block-radius: 8px;
30
+ --shadow: 0 2px 10px rgba(15, 23, 42, 0.06);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #f1f5f9;
34
+ --code-fg: #31405a;
35
+ --hl-keyword: #1d4ed8;
36
+ --hl-string: #15803d;
37
+ --hl-number: #b91c1c;
38
+ --hl-comment: #64748b;
39
+ --hl-function: #7038d8;
40
+ --hl-type: #0e7490;
41
+ --hl-punct: #475569;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #64748b;
45
+ --d-text: #334155;
46
+ --d-muted: #71809a;
47
+ --d-accent: #2563eb;
48
+ --d-fill-1: #dbeafe;
49
+ --d-fill-2: #e2e8f0;
50
+ --d-fill-3: #dcfce7;
51
+ --d-fill-4: #fef3c7;
52
+ --d-fill-5: #ede9fe;
53
+ --d-fill-6: #cffafe;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #0f172a;
57
+ --term-fg: #e2e8f0;
58
+ --term-prompt: #7dd3fc;
59
+ --term-cursor: #7dd3fc;
60
+ --term-selection: rgba(125, 211, 252, 0.28);
61
+ --ansi-black: #8494ab;
62
+ --ansi-red: #f87171;
63
+ --ansi-green: #4ade80;
64
+ --ansi-yellow: #facc15;
65
+ --ansi-blue: #60a5fa;
66
+ --ansi-magenta: #c084fc;
67
+ --ansi-cyan: #22d3ee;
68
+ --ansi-white: #e2e8f0;
69
+ --ansi-bright-black: #94a3b8;
70
+ --ansi-bright-red: #fca5a5;
71
+ --ansi-bright-green: #86efac;
72
+ --ansi-bright-yellow: #fde047;
73
+ --ansi-bright-blue: #93c5fd;
74
+ --ansi-bright-magenta: #d8b4fe;
75
+ --ansi-bright-cyan: #67e8f9;
76
+ --ansi-bright-white: #f8fafc;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
@@ -0,0 +1,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · snes
3
+ light · console gray, purple accents, ABXY color pops
4
+ Inspired by the Super Nintendo console + its four action buttons — palette kept canonical where possible,
5
+ every gated pair fitted to the WCAG contract.
6
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #d8d8dd;
12
+ --bg-accent: none;
13
+ --fg: #26262e;
14
+ --muted: #5f5f6c;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
19
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #3c33a0;
21
+ --heading-weight: 700;
22
+ --link: #4f43ae;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #5546c8;
26
+ --accent-contrast: #fbfbfa;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #cbcbd5;
30
+ --block-border: 1px solid #adadc1;
31
+ --block-radius: 10px;
32
+ --shadow: 0 5px 18px rgba(30, 30, 40, 0.12);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #26262e;
36
+ --code-fg: #e8e8ee;
37
+ --hl-keyword: #b2a5fc;
38
+ --hl-string: #8bdc9d;
39
+ --hl-number: #f0d060;
40
+ --hl-comment: #8a8a97;
41
+ --hl-function: #7fc0f0;
42
+ --hl-type: #f0a0a8;
43
+ --hl-punct: #c8c8d4;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #5f5f6c;
47
+ --d-text: #26262e;
48
+ --d-muted: #5f5f6c;
49
+ --d-accent: #5546c8;
50
+ --d-fill-1: #c3c0d7;
51
+ --d-fill-2: #d7b7b7;
52
+ --d-fill-3: #b4c7da;
53
+ --d-fill-4: #d7d7c0;
54
+ --d-fill-5: #b7d7b7;
55
+ --d-fill-6: #cdb4da;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #2a2a33;
59
+ --term-fg: #eceae6;
60
+ --term-prompt: #7669d3;
61
+ --term-cursor: #7669d3;
62
+ --term-selection: rgba(85, 70, 200, 0.28);
63
+ --ansi-black: #9a9aa5;
64
+ --ansi-red: #e05a5a;
65
+ --ansi-green: #3fa050;
66
+ --ansi-yellow: #e8c840;
67
+ --ansi-blue: #4f7fd0;
68
+ --ansi-magenta: #a878d8;
69
+ --ansi-cyan: #5fb8c8;
70
+ --ansi-white: #ececf2;
71
+ --ansi-bright-black: #babac2;
72
+ --ansi-bright-red: #ea8e8e;
73
+ --ansi-bright-green: #5dbf6e;
74
+ --ansi-bright-yellow: #efd877;
75
+ --ansi-bright-blue: #7fa2dd;
76
+ --ansi-bright-magenta: #c7a7e6;
77
+ --ansi-bright-cyan: #8dccd8;
78
+ --ansi-bright-white: #f3f3f7;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.3;
82
+ }