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,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · obsidian
3
+ dark · Volcanic glass — near-black, ember red, hard edges
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #0c0b10;
10
+ --bg-accent: #161219;
11
+ --fg: #ebe7ee;
12
+ --muted: #a49dad;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
16
+ --font-heading: "Avenir Next", Avenir, Futura, "Century Gothic", "Segoe UI", sans-serif;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #fafafa;
19
+ --heading-weight: 900;
20
+ --link: #ff9d8a;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #e76a6a;
24
+ --accent-contrast: #2b0303;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #151318;
28
+ --block-border: 1px solid #2a2530;
29
+ --block-radius: 4px;
30
+ --shadow: 0 10px 30px rgba(0, 0, 0, 0.7);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #131117;
34
+ --code-fg: #eae5ee;
35
+ --hl-keyword: #ff7a7a;
36
+ --hl-string: #f0b76b;
37
+ --hl-number: #e89ae0;
38
+ --hl-comment: #8d8598;
39
+ --hl-function: #8fb8ff;
40
+ --hl-type: #c5a3ff;
41
+ --hl-punct: #b0a8ba;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #a0552f;
45
+ --d-text: #ebe7ee;
46
+ --d-muted: #948c9e;
47
+ --d-accent: #ff5252;
48
+ --d-fill-1: #231b22;
49
+ --d-fill-2: #2c1c1e;
50
+ --d-fill-3: #1e1b2b;
51
+ --d-fill-4: #291f19;
52
+ --d-fill-5: #1c2026;
53
+ --d-fill-6: #251921;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #09080c;
57
+ --term-fg: #e2dde6;
58
+ --term-prompt: #ff5252;
59
+ --term-cursor: #ff5252;
60
+ --term-selection: rgba(255, 82, 82, 0.28);
61
+ --ansi-black: #8e8798;
62
+ --ansi-red: #ff6b6b;
63
+ --ansi-green: #9fd873;
64
+ --ansi-yellow: #f5c260;
65
+ --ansi-blue: #82aaff;
66
+ --ansi-magenta: #e08ae5;
67
+ --ansi-cyan: #72d6ce;
68
+ --ansi-white: #e6e1ea;
69
+ --ansi-bright-black: #a79fb2;
70
+ --ansi-bright-red: #ff9494;
71
+ --ansi-bright-green: #bce79c;
72
+ --ansi-bright-yellow: #f8d488;
73
+ --ansi-bright-blue: #a8c6ff;
74
+ --ansi-bright-magenta: #eeadf2;
75
+ --ansi-bright-cyan: #9de5df;
76
+ --ansi-bright-white: #fafafa;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.28;
80
+ }
81
+
82
+ .decklight h1, .decklight h2 { letter-spacing: -0.02em; }
@@ -0,0 +1,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · orchid
3
+ light · Lilac-tinted white, violet elegance, feather-light headings
4
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
5
+ ═══════════════════════════════════════════════════════════════ */
6
+
7
+ .decklight {
8
+ /* ── canvas ─────────────────────────────── */
9
+ --bg: #faf8fd;
10
+ --bg-accent: #f1ecf8;
11
+ --fg: #372f45;
12
+ --muted: #6d6580;
13
+
14
+ /* ── type ───────────────────────────────── */
15
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
16
+ --font-heading: "Avenir Next", Avenir, Futura, "Century Gothic", "Segoe UI", sans-serif;
17
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --heading-color: #5b21b6;
19
+ --heading-weight: 400;
20
+ --link: #7038d8;
21
+
22
+ /* ── accent ─────────────────────────────── */
23
+ --accent: #7446e1;
24
+ --accent-contrast: #f8f4ff;
25
+
26
+ /* ── blocks ─────────────────────────────── */
27
+ --block-bg: #fafafa;
28
+ --block-border: 1px solid #e6def2;
29
+ --block-radius: 12px;
30
+ --shadow: 0 5px 20px rgba(90, 50, 180, 0.08);
31
+
32
+ /* ── code ───────────────────────────────── */
33
+ --code-bg: #f1ecf8;
34
+ --code-fg: #38304a;
35
+ --hl-keyword: #7038d8;
36
+ --hl-string: #276b46;
37
+ --hl-number: #a04d10;
38
+ --hl-comment: #6d6580;
39
+ --hl-function: #1e5aa8;
40
+ --hl-type: #a12a8a;
41
+ --hl-punct: #544a68;
42
+
43
+ /* ── diagram ────────────────────────────── */
44
+ --d-stroke: #75689a;
45
+ --d-text: #372f45;
46
+ --d-muted: #7c7290;
47
+ --d-accent: #8b5cf6;
48
+ --d-fill-1: #ece2fa;
49
+ --d-fill-2: #f2e5f5;
50
+ --d-fill-3: #e2e5f8;
51
+ --d-fill-4: #f6e2ee;
52
+ --d-fill-5: #e8ddf5;
53
+ --d-fill-6: #efe8fc;
54
+
55
+ /* ── terminal ───────────────────────────── */
56
+ --term-bg: #231d30;
57
+ --term-fg: #e5e0ee;
58
+ --term-prompt: #c4a8ff;
59
+ --term-cursor: #c4a8ff;
60
+ --term-selection: rgba(196, 168, 255, 0.26);
61
+ --ansi-black: #8f88a0;
62
+ --ansi-red: #f0879a;
63
+ --ansi-green: #93d0a2;
64
+ --ansi-yellow: #e2c47c;
65
+ --ansi-blue: #93aff0;
66
+ --ansi-magenta: #c9a0e8;
67
+ --ansi-cyan: #8bcfcc;
68
+ --ansi-white: #e6e2ee;
69
+ --ansi-bright-black: #a49db5;
70
+ --ansi-bright-red: #f5a9b8;
71
+ --ansi-bright-green: #b0e2bd;
72
+ --ansi-bright-yellow: #eed6a2;
73
+ --ansi-bright-blue: #b3c8f8;
74
+ --ansi-bright-magenta: #dcbdf2;
75
+ --ansi-bright-cyan: #abe0de;
76
+ --ansi-bright-white: #faf8fe;
77
+
78
+ /* ── builds ─────────────────────────────── */
79
+ --dim-opacity: 0.35;
80
+ }
81
+
82
+ .decklight h1, .decklight h2 { letter-spacing: 0.02em; }
@@ -0,0 +1,89 @@
1
+ {
2
+ "order": [
3
+ "default",
4
+ "classics",
5
+ "oldmachines",
6
+ "tvseries",
7
+ "movies"
8
+ ],
9
+ "labels": {
10
+ "default": "Default",
11
+ "classics": "Classics",
12
+ "oldmachines": "Old Machines",
13
+ "tvseries": "TV Series",
14
+ "movies": "Movies"
15
+ },
16
+ "packs": {
17
+ "default": [
18
+ "aurora",
19
+ "eclipse",
20
+ "midnight",
21
+ "fjord",
22
+ "cosmos",
23
+ "ink",
24
+ "storm",
25
+ "carbon",
26
+ "synthwave",
27
+ "obsidian",
28
+ "graphite",
29
+ "ember",
30
+ "moss",
31
+ "velvet",
32
+ "porcelain",
33
+ "paper",
34
+ "linen",
35
+ "sepia",
36
+ "glacier",
37
+ "mint",
38
+ "latte",
39
+ "dune",
40
+ "coastal",
41
+ "harvest",
42
+ "meadow",
43
+ "orchid",
44
+ "peony",
45
+ "slate",
46
+ "berry",
47
+ "citrus",
48
+ "ibm-modern"
49
+ ],
50
+ "classics": [
51
+ "reveal-black",
52
+ "reveal-white",
53
+ "reveal-league",
54
+ "reveal-beige",
55
+ "reveal-sky",
56
+ "reveal-night",
57
+ "reveal-serif",
58
+ "reveal-simple",
59
+ "reveal-solarized",
60
+ "reveal-moon",
61
+ "reveal-blood",
62
+ "reveal-dracula",
63
+ "metropolis",
64
+ "seriph"
65
+ ],
66
+ "oldmachines": [
67
+ "apple2",
68
+ "c64",
69
+ "gameboy",
70
+ "snes",
71
+ "genesis",
72
+ "ibm-oldschool"
73
+ ],
74
+ "tvseries": [
75
+ "miami-vice",
76
+ "friends",
77
+ "severance",
78
+ "stranger-things"
79
+ ],
80
+ "movies": [
81
+ "aliens",
82
+ "blade-runner",
83
+ "star-wars",
84
+ "terminator",
85
+ "godfather",
86
+ "pulp-fiction"
87
+ ]
88
+ }
89
+ }
@@ -0,0 +1,83 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Courier+Prime:wght@400;700&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · paper
5
+ light · Typewriter manuscript — cream stock, red pencil, light terminal
6
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #f5f1e6;
12
+ --bg-accent: #ede7d6;
13
+ --fg: #3a3733;
14
+ --muted: #6e6a62;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: "Courier Prime", "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
18
+ --font-heading: "Courier Prime", "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
19
+ --font-mono: "Courier Prime", "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #26231f;
21
+ --heading-weight: 700;
22
+ --link: #a03d2e;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #bd4433;
26
+ --accent-contrast: #fff8f5;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #fbf8f0;
30
+ --block-border: 1px dashed #c9c2b2;
31
+ --block-radius: 2px;
32
+ --shadow: none;
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #ede7d6;
36
+ --code-fg: #38352f;
37
+ --hl-keyword: #a03d2e;
38
+ --hl-string: #33691e;
39
+ --hl-number: #825008;
40
+ --hl-comment: #6d6a5e;
41
+ --hl-function: #1d558a;
42
+ --hl-type: #6541b0;
43
+ --hl-punct: #55524a;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #5f5b51;
47
+ --d-text: #3a3733;
48
+ --d-muted: #767268;
49
+ --d-accent: #c94f3d;
50
+ --d-fill-1: #efe8d3;
51
+ --d-fill-2: #e8e4d8;
52
+ --d-fill-3: #f2ead6;
53
+ --d-fill-4: #e5e0d0;
54
+ --d-fill-5: #ede4c9;
55
+ --d-fill-6: #e9e6dc;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #ede7d6;
59
+ --term-fg: #3a3733;
60
+ --term-prompt: #a03d2e;
61
+ --term-cursor: #3a3733;
62
+ --term-selection: rgba(160, 61, 46, 0.18);
63
+ --term-chrome: none;
64
+ --ansi-black: #3a3733;
65
+ --ansi-red: #9c3428;
66
+ --ansi-green: #33691e;
67
+ --ansi-yellow: #7d4b00;
68
+ --ansi-blue: #1d558a;
69
+ --ansi-magenta: #7a3f92;
70
+ --ansi-cyan: #0d6b70;
71
+ --ansi-white: #6e6a60;
72
+ --ansi-bright-black: #55524a;
73
+ --ansi-bright-red: #7d2a20;
74
+ --ansi-bright-green: #28541a;
75
+ --ansi-bright-yellow: #6b4000;
76
+ --ansi-bright-blue: #17456f;
77
+ --ansi-bright-magenta: #623276;
78
+ --ansi-bright-cyan: #0a565a;
79
+ --ansi-bright-white: #837e70;
80
+
81
+ /* ── builds ─────────────────────────────── */
82
+ --dim-opacity: 0.4;
83
+ }
@@ -0,0 +1,84 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,700;1,700&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · peony
5
+ light · Editorial blush — pine-green ink, peony pink, italic serif
6
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #fdf6f7;
12
+ --bg-accent: #f8e8ec;
13
+ --fg: #1e3a34;
14
+ --muted: #537067;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: "Playfair Display", "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: #16302b;
21
+ --heading-weight: 700;
22
+ --link: #b3325f;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #c23360;
26
+ --accent-contrast: #fff2f6;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #fafafa;
30
+ --block-border: 1px solid #f0d8de;
31
+ --block-radius: 10px;
32
+ --shadow: 0 5px 20px rgba(180, 80, 110, 0.08);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #f5e6e9;
36
+ --code-fg: #243d37;
37
+ --hl-keyword: #b3325f;
38
+ --hl-string: #276b46;
39
+ --hl-number: #8a4a10;
40
+ --hl-comment: #5f7068;
41
+ --hl-function: #1e5aa8;
42
+ --hl-type: #7038d8;
43
+ --hl-punct: #40544d;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #5d7d72;
47
+ --d-text: #1e3a34;
48
+ --d-muted: #68847a;
49
+ --d-accent: #d64571;
50
+ --d-fill-1: #fadce4;
51
+ --d-fill-2: #dcefe6;
52
+ --d-fill-3: #f8e5d5;
53
+ --d-fill-4: #e2ecf5;
54
+ --d-fill-5: #f5dceb;
55
+ --d-fill-6: #e8f2dc;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #1c2f2a;
59
+ --term-fg: #dfe9e5;
60
+ --term-prompt: #ff9ab8;
61
+ --term-cursor: #ff9ab8;
62
+ --term-selection: rgba(255, 154, 184, 0.26);
63
+ --ansi-black: #84988f;
64
+ --ansi-red: #f58a9c;
65
+ --ansi-green: #8fd0a5;
66
+ --ansi-yellow: #e2c478;
67
+ --ansi-blue: #8ab2e2;
68
+ --ansi-magenta: #d59fc8;
69
+ --ansi-cyan: #85cfc2;
70
+ --ansi-white: #e2eae6;
71
+ --ansi-bright-black: #9cada4;
72
+ --ansi-bright-red: #f8abb8;
73
+ --ansi-bright-green: #aee2c0;
74
+ --ansi-bright-yellow: #eed69e;
75
+ --ansi-bright-blue: #aac9ec;
76
+ --ansi-bright-magenta: #e5bad8;
77
+ --ansi-bright-cyan: #a6e0d6;
78
+ --ansi-bright-white: #f8fcfa;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.35;
82
+ }
83
+
84
+ .decklight h1, .decklight h2 { font-style: italic; }
@@ -0,0 +1,82 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · porcelain
5
+ light · Warm gallery white, ink-blue serif type, hairline restraint
6
+ Token contract: SPEC.md §5 — all values validated by test/contrast.mjs
7
+ ═══════════════════════════════════════════════════════════════ */
8
+
9
+ .decklight {
10
+ /* ── canvas ─────────────────────────────── */
11
+ --bg: #faf7f2;
12
+ --bg-accent: #f1ece2;
13
+ --fg: #28313e;
14
+ --muted: #68707c;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: Fraunces, "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: #1d3557;
21
+ --heading-weight: 600;
22
+ --link: #20558a;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #1d3557;
26
+ --accent-contrast: #f5f9ff;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #fafafa;
30
+ --block-border: 1px solid #e3dccf;
31
+ --block-radius: 10px;
32
+ --shadow: 0 4px 18px rgba(60, 50, 30, 0.08);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #f1ece2;
36
+ --code-fg: #2b3440;
37
+ --hl-keyword: #8a3ba8;
38
+ --hl-string: #276b46;
39
+ --hl-number: #a04d10;
40
+ --hl-comment: #6d7480;
41
+ --hl-function: #1f5aa8;
42
+ --hl-type: #0f6e73;
43
+ --hl-punct: #4c545f;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #5b6779;
47
+ --d-text: #28313e;
48
+ --d-muted: #727a86;
49
+ --d-accent: #1d3557;
50
+ --d-fill-1: #e8eef6;
51
+ --d-fill-2: #e4efe6;
52
+ --d-fill-3: #f4ead8;
53
+ --d-fill-4: #ece5f2;
54
+ --d-fill-5: #e0eef0;
55
+ --d-fill-6: #f2e6e0;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #20262e;
59
+ --term-fg: #e5e9ee;
60
+ --term-prompt: #8fd0a8;
61
+ --term-cursor: #e5e9ee;
62
+ --term-selection: rgba(143, 208, 168, 0.28);
63
+ --ansi-black: #8994a3;
64
+ --ansi-red: #f28b93;
65
+ --ansi-green: #95d5a2;
66
+ --ansi-yellow: #e8c982;
67
+ --ansi-blue: #8db8e8;
68
+ --ansi-magenta: #c8a5dd;
69
+ --ansi-cyan: #8ad2ca;
70
+ --ansi-white: #e6eaef;
71
+ --ansi-bright-black: #a0aab8;
72
+ --ansi-bright-red: #f8adb3;
73
+ --ansi-bright-green: #b3e5bd;
74
+ --ansi-bright-yellow: #f2daa5;
75
+ --ansi-bright-blue: #aeccf0;
76
+ --ansi-bright-magenta: #dabfe8;
77
+ --ansi-bright-cyan: #a9e2dc;
78
+ --ansi-bright-white: #fafafa;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.35;
82
+ }
@@ -0,0 +1,84 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ Decklight theme · pulp-fiction
3
+ dark · dime-novel black, poster yellow, royale red
4
+ Inspired by Pulp Fiction — the paperback cover — 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: #171310;
12
+ --bg-accent: none;
13
+ --fg: #efe5d0;
14
+ --muted: #a39784;
15
+
16
+ /* ── type ───────────────────────────────── */
17
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
18
+ --font-heading: Rockwell, "Rockwell Nova", "Roboto Slab", "DejaVu Serif", serif;
19
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
20
+ --heading-color: #e8b93b;
21
+ --heading-weight: 800;
22
+ --link: #ef9a3f;
23
+
24
+ /* ── accent ─────────────────────────────── */
25
+ --accent: #c03a2b;
26
+ --accent-contrast: #fbfbfa;
27
+
28
+ /* ── blocks ─────────────────────────────── */
29
+ --block-bg: #241d17;
30
+ --block-border: 1px solid #38312c;
31
+ --block-radius: 6px;
32
+ --shadow: 0 8px 26px rgba(0, 0, 0, 0.5);
33
+
34
+ /* ── code ───────────────────────────────── */
35
+ --code-bg: #1e1914;
36
+ --code-fg: #ece2ce;
37
+ --hl-keyword: #ecc664;
38
+ --hl-string: #bacc8c;
39
+ --hl-number: #ee9a71;
40
+ --hl-comment: #7d7364;
41
+ --hl-function: #97b8d1;
42
+ --hl-type: #d8c090;
43
+ --hl-punct: #b0a894;
44
+
45
+ /* ── diagram ────────────────────────────── */
46
+ --d-stroke: #a39784;
47
+ --d-text: #efe5d0;
48
+ --d-muted: #a39784;
49
+ --d-accent: #c83d2d;
50
+ --d-fill-1: #28251d;
51
+ --d-fill-2: #31211f;
52
+ --d-fill-3: #3a2c20;
53
+ --d-fill-4: #28281d;
54
+ --d-fill-5: #1f2831;
55
+ --d-fill-6: #3a2025;
56
+
57
+ /* ── terminal ───────────────────────────── */
58
+ --term-bg: #120f0c;
59
+ --term-fg: #e6e6e2;
60
+ --term-prompt: #c03a2b;
61
+ --term-cursor: #c03a2b;
62
+ --term-selection: rgba(192, 58, 43, 0.28);
63
+ --ansi-black: #9f8b89;
64
+ --ansi-red: #cc7470;
65
+ --ansi-green: #71cc70;
66
+ --ansi-yellow: #ccb170;
67
+ --ansi-blue: #709fcc;
68
+ --ansi-magenta: #b570cc;
69
+ --ansi-cyan: #70ccbc;
70
+ --ansi-white: #e3dede;
71
+ --ansi-bright-black: #b4a8a7;
72
+ --ansi-bright-red: #e29b98;
73
+ --ansi-bright-green: #98e298;
74
+ --ansi-bright-yellow: #e2cc98;
75
+ --ansi-bright-blue: #98bde2;
76
+ --ansi-bright-magenta: #cf98e2;
77
+ --ansi-bright-cyan: #98e2d5;
78
+ --ansi-bright-white: #f3f2f2;
79
+
80
+ /* ── builds ─────────────────────────────── */
81
+ --dim-opacity: 0.27;
82
+ }
83
+
84
+ .decklight h1, .decklight h2 { text-transform: uppercase; letter-spacing: 0.02em; }
@@ -0,0 +1,87 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Oswald:wght@400;500&display=swap');
2
+
3
+ /* ═══════════════════════════════════════════════════════════════
4
+ Decklight theme · reveal-beige
5
+ light · parchment wash, warm browns, condensed display type
6
+ Inspired by Reveal.js 'beige' — palette kept canonical where possible,
7
+ every gated pair fitted to the WCAG contract.
8
+ rule-exception: R2 the canonical white→beige parchment wash
9
+ Token contract: SPEC.md §5 — validated by test/contrast.mjs
10
+ ═══════════════════════════════════════════════════════════════ */
11
+
12
+ .decklight {
13
+ /* ── canvas ─────────────────────────────── */
14
+ --bg: linear-gradient(180deg, #fdfdf8 0%, #f7f2d3 100%);
15
+ --bg-accent: none;
16
+ --fg: #333333;
17
+ --muted: #7c7461;
18
+
19
+ /* ── type ───────────────────────────────── */
20
+ --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
21
+ --font-heading: "League Gothic", Oswald, "Arial Narrow", "Avenir Next Condensed", sans-serif;
22
+ --font-mono: "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;
23
+ --heading-color: #333333;
24
+ --heading-weight: 500;
25
+ --link: #8b743d;
26
+
27
+ /* ── accent ─────────────────────────────── */
28
+ --accent: #846e3a;
29
+ --accent-contrast: #fbfbfa;
30
+
31
+ /* ── blocks ─────────────────────────────── */
32
+ --block-bg: #f4f4ed;
33
+ --block-border: 1px solid #dcdcd1;
34
+ --block-radius: 4px;
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: #7c7461;
50
+ --d-text: #333333;
51
+ --d-muted: #7c7461;
52
+ --d-accent: #846e3a;
53
+ --d-fill-1: #f0f0e7;
54
+ --d-fill-2: #e6eddf;
55
+ --d-fill-3: #ded7eb;
56
+ --d-fill-4: #e7f0eb;
57
+ --d-fill-5: #eddfe8;
58
+ --d-fill-6: #ebe1d7;
59
+
60
+ /* ── terminal ───────────────────────────── */
61
+ --term-bg: #2b2b1d;
62
+ --term-fg: #eceae6;
63
+ --term-prompt: #8f773f;
64
+ --term-cursor: #8f773f;
65
+ --term-selection: rgba(132, 110, 58, 0.28);
66
+ --ansi-black: #9f9889;
67
+ --ansi-red: #c38179;
68
+ --ansi-green: #79c37d;
69
+ --ansi-yellow: #c3b279;
70
+ --ansi-blue: #799ac3;
71
+ --ansi-magenta: #b579c3;
72
+ --ansi-cyan: #79c3bb;
73
+ --ansi-white: #e3e1de;
74
+ --ansi-bright-black: #b4b0a7;
75
+ --ansi-bright-red: #dba59e;
76
+ --ansi-bright-green: #9edba2;
77
+ --ansi-bright-yellow: #dbcd9e;
78
+ --ansi-bright-blue: #9eb9db;
79
+ --ansi-bright-magenta: #cf9edb;
80
+ --ansi-bright-cyan: #9edbd4;
81
+ --ansi-bright-white: #f3f3f2;
82
+
83
+ /* ── builds ─────────────────────────────── */
84
+ --dim-opacity: 0.3;
85
+ }
86
+
87
+ .decklight h1, .decklight h2 { text-transform: uppercase; letter-spacing: 0.02em; }