@donotdev/cli 0.0.18 → 0.0.20

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 (150) hide show
  1. package/dependencies-matrix.json +42 -55
  2. package/dist/bin/commands/bump.js +5 -2
  3. package/dist/bin/commands/coach.js +8177 -0
  4. package/dist/bin/commands/create-app.js +6 -6
  5. package/dist/bin/commands/create-project.js +23 -9
  6. package/dist/bin/commands/deploy.js +99 -59
  7. package/dist/bin/commands/doctor.js +243 -698
  8. package/dist/bin/commands/emu.js +2 -2
  9. package/dist/bin/commands/format.js +4 -1
  10. package/dist/bin/commands/get-demo.js +8351 -0
  11. package/dist/bin/commands/make-admin.js +773 -152
  12. package/dist/bin/commands/setup.js +524 -1713
  13. package/dist/bin/commands/staging.js +17870 -0
  14. package/dist/bin/commands/sync-secrets.js +2 -11
  15. package/dist/bin/commands/type-check.js +7738 -1712
  16. package/dist/bin/dndev.js +868 -199
  17. package/dist/bin/donotdev.js +868 -199
  18. package/dist/index.js +127 -67
  19. package/package.json +1 -1
  20. package/templates/app-demo/index.html.example +147 -10
  21. package/templates/app-demo/public/apple-touch-icon.png.example +0 -0
  22. package/templates/app-demo/public/favicon.svg.example +1 -0
  23. package/templates/app-demo/public/icon-192x192.png.example +0 -0
  24. package/templates/app-demo/public/icon-512x512.png.example +0 -0
  25. package/templates/app-demo/src/App.tsx.example +7 -11
  26. package/templates/app-demo/src/config/app.ts.example +13 -48
  27. package/templates/app-demo/src/entities/booking.ts.example +75 -0
  28. package/templates/app-demo/src/entities/onboarding.ts.example +160 -0
  29. package/templates/app-demo/src/entities/product.ts.example +50 -0
  30. package/templates/app-demo/src/entities/quote.ts.example +70 -0
  31. package/templates/app-demo/src/globals.css.example +5 -1
  32. package/templates/app-demo/src/main.tsx.example +13 -7
  33. package/templates/app-demo/src/pages/ChangelogPage.tsx.example +41 -0
  34. package/templates/app-demo/src/pages/ConditionalFormPage.tsx.example +88 -0
  35. package/templates/app-demo/src/pages/DashboardPage.tsx.example +17 -0
  36. package/templates/app-demo/src/pages/HomePage.tsx.example +339 -60
  37. package/templates/app-demo/src/pages/OnboardingPage.tsx.example +47 -0
  38. package/templates/app-demo/src/pages/PricingPage.tsx.example +41 -0
  39. package/templates/app-demo/src/pages/ProductsPage.tsx.example +19 -0
  40. package/templates/app-demo/src/pages/ProfilePage.tsx.example +18 -0
  41. package/templates/app-demo/src/pages/SettingsPage.tsx.example +17 -0
  42. package/templates/app-demo/src/pages/ShowcaseDetailPage.tsx.example +118 -0
  43. package/templates/app-demo/src/pages/ShowcasePage.tsx.example +93 -0
  44. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +147 -51
  45. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +103 -21
  46. package/templates/app-demo/src/pages/components/componentConfig.ts.example +139 -59
  47. package/templates/app-demo/src/pages/legal/LegalPage.tsx.example +25 -0
  48. package/templates/app-demo/src/pages/legal/PrivacyPage.tsx.example +23 -0
  49. package/templates/app-demo/src/pages/legal/TermsPage.tsx.example +23 -0
  50. package/templates/app-demo/src/themes.css.example +289 -77
  51. package/templates/app-demo/stats.html.example +4949 -0
  52. package/templates/app-demo/tsconfig.json.example +1 -1
  53. package/templates/app-demo/vite.config.ts.example +23 -48
  54. package/templates/app-expo/README.md.example +1 -1
  55. package/templates/app-expo/app/index.tsx.example +1 -1
  56. package/templates/app-next/src/locales/home_en.json.example +6 -6
  57. package/templates/app-vite/src/locales/home_en.json.example +6 -6
  58. package/templates/app-vite/src/pages/HomePage.tsx.example +8 -10
  59. package/templates/overlay-firebase/env.fragment.example +1 -1
  60. package/templates/overlay-firebase/env.fragment.expo.example +1 -1
  61. package/templates/overlay-firebase/env.fragment.nextjs.example +1 -1
  62. package/templates/overlay-supabase/env.fragment.example +1 -1
  63. package/templates/overlay-supabase/env.fragment.expo.example +1 -1
  64. package/templates/overlay-supabase/env.fragment.nextjs.example +1 -1
  65. package/templates/overlay-vercel/env.fragment.example +1 -1
  66. package/templates/overlay-vercel/env.fragment.nextjs.example +1 -1
  67. package/templates/root-consumer/AI.md.example +4 -3
  68. package/templates/root-consumer/guides/dndev/AGENT_START_HERE.md.example +21 -6
  69. package/templates/root-consumer/guides/dndev/COMPONENTS_ADV.md.example +16 -179
  70. package/templates/root-consumer/guides/dndev/ENV_SETUP.md.example +19 -21
  71. package/templates/root-consumer/guides/dndev/GOTCHAS.md.example +14 -3
  72. package/templates/root-consumer/guides/dndev/INDEX.md.example +2 -2
  73. package/templates/root-consumer/guides/dndev/SETUP_APP_CONFIG.md.example +3 -3
  74. package/templates/root-consumer/guides/dndev/SETUP_BLOG.md.example +19 -2
  75. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +35 -1
  76. package/templates/root-consumer/guides/dndev/SETUP_FIREBASE.md.example +17 -12
  77. package/templates/root-consumer/guides/dndev/SETUP_LAYOUTS.md.example +32 -0
  78. package/templates/root-consumer/guides/dndev/SETUP_OAUTH_PROVIDERS.md.example +1 -1
  79. package/templates/root-consumer/guides/dndev/SETUP_PAGES.md.example +19 -15
  80. package/templates/root-consumer/guides/dndev/SETUP_STRIPE.md.example +2 -2
  81. package/templates/root-consumer/guides/dndev/SETUP_SUPABASE.md.example +17 -12
  82. package/templates/root-consumer/guides/dndev/SETUP_VERCEL.md.example +37 -16
  83. package/templates/root-consumer/guides/dndev/USE_ROUTING.md.example +18 -18
  84. package/templates/root-consumer/guides/dndev/advanced/COOKIE_REFERENCE.md.example +252 -252
  85. package/templates/root-consumer/guides/dndev/advanced/VERSION_CONTROL.md.example +174 -174
  86. package/templates/root-consumer/guides/dndev/essences_reference.css.example +119 -2
  87. package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +14 -0
  88. package/templates/root-consumer/guides/wai-way/blueprints/2_entities.md.example +6 -0
  89. package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +14 -0
  90. package/templates/root-consumer/guides/wai-way/entity_patterns.md.example +4 -5
  91. package/templates/root-consumer/guides/wai-way/page_patterns.md.example +2 -2
  92. package/dist/bin/commands/agent-setup.d.ts +0 -6
  93. package/dist/bin/commands/agent-setup.d.ts.map +0 -1
  94. package/dist/bin/commands/agent-setup.js.map +0 -1
  95. package/dist/bin/commands/build.d.ts +0 -11
  96. package/dist/bin/commands/build.d.ts.map +0 -1
  97. package/dist/bin/commands/build.js.map +0 -1
  98. package/dist/bin/commands/bump.d.ts +0 -11
  99. package/dist/bin/commands/bump.d.ts.map +0 -1
  100. package/dist/bin/commands/bump.js.map +0 -1
  101. package/dist/bin/commands/cacheout.d.ts +0 -11
  102. package/dist/bin/commands/cacheout.d.ts.map +0 -1
  103. package/dist/bin/commands/cacheout.js.map +0 -1
  104. package/dist/bin/commands/create-app.d.ts +0 -11
  105. package/dist/bin/commands/create-app.d.ts.map +0 -1
  106. package/dist/bin/commands/create-app.js.map +0 -1
  107. package/dist/bin/commands/create-project.d.ts +0 -11
  108. package/dist/bin/commands/create-project.d.ts.map +0 -1
  109. package/dist/bin/commands/create-project.js.map +0 -1
  110. package/dist/bin/commands/deploy.d.ts +0 -11
  111. package/dist/bin/commands/deploy.d.ts.map +0 -1
  112. package/dist/bin/commands/deploy.js.map +0 -1
  113. package/dist/bin/commands/dev.d.ts +0 -11
  114. package/dist/bin/commands/dev.d.ts.map +0 -1
  115. package/dist/bin/commands/dev.js.map +0 -1
  116. package/dist/bin/commands/doctor.d.ts +0 -6
  117. package/dist/bin/commands/doctor.d.ts.map +0 -1
  118. package/dist/bin/commands/doctor.js.map +0 -1
  119. package/dist/bin/commands/emu.d.ts +0 -11
  120. package/dist/bin/commands/emu.d.ts.map +0 -1
  121. package/dist/bin/commands/emu.js.map +0 -1
  122. package/dist/bin/commands/format.d.ts +0 -11
  123. package/dist/bin/commands/format.d.ts.map +0 -1
  124. package/dist/bin/commands/format.js.map +0 -1
  125. package/dist/bin/commands/make-admin.d.ts +0 -11
  126. package/dist/bin/commands/make-admin.d.ts.map +0 -1
  127. package/dist/bin/commands/make-admin.js.map +0 -1
  128. package/dist/bin/commands/preview.d.ts +0 -11
  129. package/dist/bin/commands/preview.d.ts.map +0 -1
  130. package/dist/bin/commands/preview.js.map +0 -1
  131. package/dist/bin/commands/setup.d.ts +0 -6
  132. package/dist/bin/commands/setup.d.ts.map +0 -1
  133. package/dist/bin/commands/setup.js.map +0 -1
  134. package/dist/bin/commands/sync-secrets.d.ts +0 -11
  135. package/dist/bin/commands/sync-secrets.d.ts.map +0 -1
  136. package/dist/bin/commands/sync-secrets.js.map +0 -1
  137. package/dist/bin/commands/type-check.d.ts +0 -14
  138. package/dist/bin/commands/type-check.d.ts.map +0 -1
  139. package/dist/bin/commands/type-check.js.map +0 -1
  140. package/dist/bin/commands/wai.d.ts +0 -11
  141. package/dist/bin/commands/wai.d.ts.map +0 -1
  142. package/dist/bin/commands/wai.js.map +0 -1
  143. package/dist/index.d.ts +0 -8
  144. package/dist/index.d.ts.map +0 -1
  145. package/dist/index.js.map +0 -1
  146. package/templates/app-demo/src/components/ThemeToggle.tsx.example +0 -48
  147. package/templates/app-demo/src/pages/DetailPage.tsx.example +0 -103
  148. package/templates/app-demo/src/pages/FullPage.tsx.example +0 -142
  149. package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +0 -266
  150. package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +0 -20
@@ -1,82 +1,12 @@
1
- /**
2
- * src/themes.css — SSOT for essence and theme variables. Default = SaaS. Optional .brutalist / .luxury: set class on <html>.
3
- */
4
- /* src/themes.css */
1
+ /* apps/demo/src/themes.css */
5
2
 
6
3
  /* ===========================
7
- APP-WIDE SETTINGS
8
- Spacing, radius, shadows, animations - apply to all themes
9
- =========================== */
10
- :root {
11
- /* Routing animations (fade | slide | none) */
12
- /* --routing-animation: fade; */
13
- /* --routing-default-duration: var(--dur-normal); */
14
-
15
- /* Spacing scale */
16
- /* --gap-sm: 0.5rem; */
17
- /* --gap-md: 1rem; */
18
- /* --gap-lg: 2rem; */
19
-
20
- /* Border radius */
21
- /* --radius-interactive: var(--radius-none); */
22
- /* --radius-surface: var(--radius-md); */
23
- /* --radius-floating: var(--radius-none); */
24
- }
25
-
26
- /* ===========================
27
- LIGHT THEME
28
- Zinc-based neutral palette
4
+ SaaS (default)
5
+ Dark zinc palette class .light
29
6
  =========================== */
30
7
  :root.light {
31
- --theme-icon: 'Sun';
32
- --theme-label: 'Light';
33
- --theme-is-dark: 0;
34
-
35
- /* Core colors */
36
- --background: #ffffff;
37
- --foreground: #09090b;
38
-
39
- /* Surfaces */
40
- --card: #ffffff;
41
- --card-foreground: #09090b;
42
- --popover: #ffffff;
43
- --popover-foreground: #09090b;
44
-
45
- /* Muted (zinc-100 / zinc-500) */
46
- --muted: #f4f4f5;
47
- --muted-foreground: #71717a;
48
-
49
- /* Border & input (zinc-200) */
50
- --border: #e4e4e7;
51
- --input: #e4e4e7;
52
- --ring: var(--primary);
53
-
54
- /* Brand colors - customize these */
55
- --primary: #0284c7;
56
- --primary-foreground: #ffffff;
57
-
58
- --secondary: #f4f4f5;
59
- --secondary-foreground: #18181b;
60
-
61
- --accent: #ea580c;
62
- --accent-foreground: #ffffff;
63
-
64
- /* Status colors */
65
- --destructive: #dc2626;
66
- --destructive-foreground: #ffffff;
67
- --success: #16a34a;
68
- --success-foreground: #ffffff;
69
- --warning: #f59e0b;
70
- --warning-foreground: #09090b;
71
- }
72
-
73
- /* ===========================
74
- DARK THEME
75
- Zinc-based dark palette
76
- =========================== */
77
- :root.dark {
78
8
  --theme-icon: 'Moon';
79
- --theme-label: 'Dark';
9
+ --theme-label: 'SaaS';
80
10
  --theme-is-dark: 1;
81
11
 
82
12
  /* Core colors */
@@ -98,7 +28,7 @@
98
28
  --input: #27272a;
99
29
  --ring: var(--primary);
100
30
 
101
- /* Brand colors - customize these */
31
+ /* Brand colors */
102
32
  --primary: #0ea5e9;
103
33
  --primary-foreground: #ffffff;
104
34
 
@@ -117,8 +47,290 @@
117
47
  --warning-foreground: #09090b;
118
48
  }
119
49
 
120
- /* Optional essences: .brutalist, .luxury — see guides/dndev/essences_reference.css. They do not apply by default. */
50
+ /* ===========================
51
+ BRUTALIST — class .dark
52
+ Industrial, monospace body, Space Grotesk headlines, orange/black.
53
+ =========================== */
54
+ :root.dark {
55
+ --theme-icon: 'Construction';
56
+ --theme-label: 'Brutalist';
57
+ --theme-is-dark: 1;
58
+
59
+ /* 1. Core Colors - Black + white + industrial orange */
60
+ --background: #000000;
61
+ --foreground: #ffffff;
62
+ --primary: #f97316;
63
+ --secondary: #ffffff;
64
+ --accent: #f97316;
65
+
66
+ /* 2. Semantic */
67
+ --success: #22c55e;
68
+ --warning: #f97316;
69
+ --destructive: #dc2626;
70
+
71
+ /* 3. Surfaces - Dark, industrial */
72
+ --muted: #111111;
73
+ --muted-foreground: #888888;
74
+ --border: #ffffff;
75
+ --input: #111111;
76
+ --ring: #f97316;
77
+ --card: #000000;
78
+ --card-foreground: #f97316;
79
+ --popover: #000000;
80
+ --popover-foreground: #ffffff;
81
+ --surface-1: #0a0a0a;
82
+
83
+ /* 4. Text on Colors */
84
+ --primary-foreground: #ffffff;
85
+ --secondary-foreground: #000000;
86
+ --accent-foreground: #000000;
87
+ --success-foreground: #ffffff;
88
+ --warning-foreground: #000000;
89
+ --destructive-foreground: #ffffff;
90
+
91
+ /* 5. Radius - Hard zero */
92
+ --radius-interactive: 0;
93
+ --radius-surface: 0;
94
+ --radius-floating: 0;
95
+
96
+ /* 6. Typography - Monospace for body, Space Grotesk 700 for headings */
97
+ --font-family: var(--font-mono);
98
+ --font-headline: 'Space Grotesk', var(--font-sans);
99
+ --font-weight-semibold: 700;
100
+ --font-weight-bold: 700;
101
+
102
+ /* 7. Borders */
103
+ --border-width: 2px;
104
+ --border-huge: 4px;
105
+
106
+ /* 8. Shadows — flat by default, hard offset on interactive */
107
+ --shadow-color: var(--foreground);
108
+ --shadow-sm: none;
109
+ --shadow-md: none;
110
+ --shadow-xl: 8px 8px 0px 0px var(--shadow-color);
111
+ --shadow-cta: 20px 20px 0px 0px var(--shadow-color);
112
+
113
+ /* 9. Per-variant shadows — only at xl level (elevated/clickable) */
114
+ --shadow-primary: none;
115
+ --shadow-primary-xl: 8px 8px 0px 0px var(--background);
116
+ --shadow-secondary: none;
117
+ --shadow-secondary-xl: 8px 8px 0px 0px var(--primary);
118
+
119
+ /* 10. Header padding for hard-offset shadows */
120
+ --header-shadow-padding: 0.75rem;
121
+ }
122
+
123
+ /* Body - grid background */
124
+ .dark body {
125
+ background-color: var(--background);
126
+ background-image:
127
+ linear-gradient(#111 1px, transparent 1px),
128
+ linear-gradient(90deg, #111 1px, transparent 1px);
129
+ background-size: 40px 40px;
130
+ }
131
+
132
+ /* Uppercase headings */
133
+ .dark {
134
+ :is(h1, h2, h3, h4, h5, h6),
135
+ [data-level^='h'] {
136
+ text-transform: uppercase;
137
+ }
138
+ }
139
+
140
+ /* Flat surface - no gradient glow */
141
+ .dark .dndev-surface {
142
+ background: var(--card);
143
+ }
144
+ .dark .dndev-surface[data-variant='outline'] {
145
+ border: var(--border-width) solid var(--border);
146
+ }
147
+
148
+ .dark .dndev-card[data-variant='outline'] {
149
+ background: transparent;
150
+ box-shadow: none;
151
+ }
121
152
 
122
153
  /* ===========================
123
- CUSTOM THEMES
154
+ LUXURY
155
+ Playfair Display headlines, gold/cream, warm shadows.
124
156
  =========================== */
157
+ .luxury {
158
+ --theme-icon: 'Gem';
159
+ --theme-label: 'Luxury';
160
+ --theme-is-dark: 0;
161
+
162
+ /* 1. Core Colors */
163
+ --background: #faf8f5;
164
+ --foreground: #1c1917;
165
+ --primary: #b45309;
166
+ --secondary: #fef3c7;
167
+ --accent: #92400e;
168
+
169
+ /* 2. Semantic */
170
+ --success: #15803d;
171
+ --warning: #b45309;
172
+ --destructive: #b91c1c;
173
+
174
+ /* 3. Surfaces */
175
+ --muted: #fef9c3;
176
+ --muted-foreground: #78716c;
177
+ --border: #e7e5e4;
178
+ --border-hairline: 1px;
179
+ --input: #ffffff;
180
+ --ring: #b45309;
181
+ --card: #ffffff;
182
+ --card-foreground: #1c1917;
183
+ --popover: #ffffff;
184
+ --popover-foreground: #1c1917;
185
+ --surface-1: #faf8f5;
186
+
187
+ /* 4. Text on Colors */
188
+ --primary-foreground: #ffffff;
189
+ --secondary-foreground: #1c1917;
190
+ --accent-foreground: #ffffff;
191
+ --success-foreground: #ffffff;
192
+ --warning-foreground: #1c1917;
193
+ --destructive-foreground: #ffffff;
194
+
195
+ /* 5. Radius */
196
+ --radius-interactive: 0.375rem;
197
+ --radius-surface: 0.5rem;
198
+ --radius-floating: 0.5rem;
199
+
200
+ /* 6. Typography — lighter weights, serif headlines */
201
+ --font-family: var(--font-sans);
202
+ --font-headline: 'Playfair Display', var(--font-serif);
203
+ --font-weight-normal: 300;
204
+ --font-weight-medium: 400;
205
+ --font-weight-semibold: 500;
206
+ --font-weight-bold: 600;
207
+
208
+ /* 7. Spacing — generous, one notch above expressive */
209
+ --gap-sm: 0.75rem;
210
+ --gap-md: 1.5rem;
211
+ --gap-lg: 3rem;
212
+
213
+ /* 8. Shadows — warm gold-tinted, soft diffused */
214
+ --shadow-color: color-mix(in oklab, #b45309 8%, transparent);
215
+ --shadow-sm: 0 1px 3px var(--shadow-color);
216
+ --shadow-md: 0 4px 12px var(--shadow-color);
217
+ --shadow-xl: 0 8px 24px var(--shadow-color);
218
+ }
219
+
220
+ /* ===========================
221
+ RETRO
222
+ 8-bit pixel aesthetic, Press Start 2P, neon on dark, CRT vibes.
223
+ =========================== */
224
+ .retro {
225
+ --theme-icon: 'Gamepad2';
226
+ --theme-label: 'Retro';
227
+ --theme-is-dark: 1;
228
+
229
+ /* 1. Core Colors - Muted neon on zinc */
230
+ --background: #1c1c22;
231
+ --foreground: #c8e6c9;
232
+ --primary: #5eead4;
233
+ --secondary: #c084fc;
234
+ --accent: #fbbf24;
235
+
236
+ /* 2. Semantic */
237
+ --success: #6ee7b7;
238
+ --warning: #fbbf24;
239
+ --destructive: #f87171;
240
+
241
+ /* 3. Surfaces - Zinc CRT glass */
242
+ --muted: #27272f;
243
+ --muted-foreground: #8bae8b;
244
+ --border: #4a6a4a;
245
+ --input: #1c1c22;
246
+ --ring: #5eead4;
247
+ --card: #222228;
248
+ --card-foreground: #c8e6c9;
249
+ --popover: #222228;
250
+ --popover-foreground: #c8e6c9;
251
+ --surface-1: #1e1e24;
252
+
253
+ /* 4. Text on Colors */
254
+ --primary-foreground: #0f172a;
255
+ --secondary-foreground: #0f172a;
256
+ --accent-foreground: #0f172a;
257
+ --success-foreground: #0f172a;
258
+ --warning-foreground: #0f172a;
259
+ --destructive-foreground: #ffffff;
260
+
261
+ /* 5. Radius - Hard pixel corners */
262
+ --radius-interactive: 0;
263
+ --radius-surface: 0;
264
+ --radius-floating: 0;
265
+
266
+ /* 6. Typography - Press Start 2P (pixel font, 400 only) */
267
+ --font-family: 'Press Start 2P', var(--font-mono);
268
+ --font-headline: 'Press Start 2P', var(--font-mono);
269
+ --font-weight-normal: 400;
270
+ --font-weight-medium: 400;
271
+ --font-weight-semibold: 400;
272
+ --font-weight-bold: 400;
273
+
274
+ /* 7. Font scale - smaller base (pixel font reads large) */
275
+ --font-size-xs: 0.5rem;
276
+ --font-size-sm: 0.625rem;
277
+ --font-size-base: 0.75rem;
278
+ --font-size-lg: 0.875rem;
279
+ --font-size-xl: 1rem;
280
+ --font-size-2xl: 1.25rem;
281
+ --font-size-3xl: 1.5rem;
282
+ --line-height: 1.6;
283
+
284
+ /* 8. Borders - Chunky pixel borders */
285
+ --border-width: 3px;
286
+ --border-huge: 4px;
287
+
288
+ /* 9. Shadows — soft neon glow */
289
+ --shadow-color: #5eead433;
290
+ --shadow-sm: 0 0 4px #5eead422;
291
+ --shadow-md: 0 0 8px #5eead433, 0 0 16px #5eead41a;
292
+ --shadow-xl: 0 0 12px #5eead444, 0 0 24px #5eead42a, 0 0 48px #c084fc1a;
293
+ --shadow-cta: 0 0 16px #5eead444, 0 0 32px #5eead422;
294
+
295
+ /* 10. Per-variant shadows — soft neon matching */
296
+ --shadow-primary: 0 0 8px #5eead42a;
297
+ --shadow-primary-xl: 0 0 16px #5eead444, 0 0 32px #5eead422;
298
+ --shadow-secondary: 0 0 8px #c084fc2a;
299
+ --shadow-secondary-xl: 0 0 16px #c084fc44, 0 0 32px #c084fc22;
300
+
301
+ /* 11. Header padding */
302
+ --header-shadow-padding: 0;
303
+ }
304
+
305
+ /* Body - subtle CRT scanlines */
306
+ .retro body {
307
+ background-color: var(--background);
308
+ background-image: repeating-linear-gradient(
309
+ 0deg,
310
+ transparent,
311
+ transparent 2px,
312
+ rgba(0, 0, 0, 0.08) 2px,
313
+ rgba(0, 0, 0, 0.08) 4px
314
+ );
315
+ }
316
+
317
+ /* Uppercase headings (pixel fonts look best in caps) */
318
+ .retro {
319
+ :is(h1, h2, h3, h4, h5, h6),
320
+ [data-level^='h'] {
321
+ text-transform: uppercase;
322
+ }
323
+ }
324
+
325
+ /* Flat surfaces - no gradient, pixel-sharp */
326
+ .retro .dndev-surface {
327
+ background: var(--card);
328
+ }
329
+ .retro .dndev-surface[data-variant='outline'] {
330
+ border: var(--border-width) solid var(--border);
331
+ }
332
+
333
+ .retro .dndev-card[data-variant='outline'] {
334
+ background: transparent;
335
+ box-shadow: none;
336
+ }