codex-terminal-themes 1.0.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 (229) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/CONTRIBUTING.md +23 -0
  3. package/LICENSE +21 -0
  4. package/LICENSE.txt +21 -0
  5. package/README.md +169 -0
  6. package/SECURITY.md +5 -0
  7. package/SUPPORT.md +5 -0
  8. package/bin/codex-terminal-themes.mjs +12 -0
  9. package/docs/app.js +1393 -0
  10. package/docs/assets/theme-gallery-header.png +0 -0
  11. package/docs/favicon.svg +10 -0
  12. package/docs/index.html +240 -0
  13. package/docs/preview.svg +24 -0
  14. package/docs/site-data.json +51078 -0
  15. package/docs/styles.css +780 -0
  16. package/metadata/README.md +71 -0
  17. package/metadata/themes.json +16185 -0
  18. package/metadata/themes.schema.json +218 -0
  19. package/package.json +109 -0
  20. package/src/cli.mjs +1763 -0
  21. package/stylelint.config.mjs +12 -0
  22. package/themes/80s.tmTheme +229 -0
  23. package/themes/Active4D.tmTheme +407 -0
  24. package/themes/All Hallow's Eve Custom.tmTheme +275 -0
  25. package/themes/All Hallow's Eve.tmTheme +277 -0
  26. package/themes/All Hallows Eve.tmTheme +277 -0
  27. package/themes/Amy.tmTheme +559 -0
  28. package/themes/Artic Fall.tmTheme +275 -0
  29. package/themes/BBEdit.tmTheme +439 -0
  30. package/themes/Bespin.tmTheme +516 -0
  31. package/themes/Black Pearl II.tmTheme +496 -0
  32. package/themes/Black Pearl.tmTheme +400 -0
  33. package/themes/Blackboard 2.tmTheme +348 -0
  34. package/themes/Blackboard Black.tmTheme +350 -0
  35. package/themes/Blackboard.tmTheme +348 -0
  36. package/themes/Blueberry Jelly.tmTheme +242 -0
  37. package/themes/Bluesy.tmTheme +242 -0
  38. package/themes/Blurb 2.tmTheme +229 -0
  39. package/themes/Blurb.tmTheme +229 -0
  40. package/themes/Bongzilla 2.tmTheme +223 -0
  41. package/themes/Bongzilla.tmTheme +223 -0
  42. package/themes/Brightly Dark.tmTheme +242 -0
  43. package/themes/Brilliance Black.tmTheme +2619 -0
  44. package/themes/Brilliance Dull.tmTheme +2243 -0
  45. package/themes/Bromozoid.tmTheme +227 -0
  46. package/themes/CSSEdit.tmTheme +203 -0
  47. package/themes/Classic Modified.tmTheme +469 -0
  48. package/themes/Clouds Midnight.tmTheme +361 -0
  49. package/themes/Clouds of Ruby.tmTheme +649 -0
  50. package/themes/Clouds.tmTheme +348 -0
  51. package/themes/Cloudy Fields.tmTheme +240 -0
  52. package/themes/Coal Graal.tmTheme +282 -0
  53. package/themes/Cobalt.tmTheme +561 -0
  54. package/themes/Coda.tmTheme +317 -0
  55. package/themes/Colorful.tmTheme +307 -0
  56. package/themes/Cool Glow.tmTheme +234 -0
  57. package/themes/Corona.tmTheme +290 -0
  58. package/themes/Cowabunga.tmTheme +242 -0
  59. package/themes/DanBurst.tmTheme +665 -0
  60. package/themes/Daniel Fischer.tmTheme +627 -0
  61. package/themes/Dark Ocean.tmTheme +242 -0
  62. package/themes/DarkNeon.tmTheme +818 -0
  63. package/themes/Dawn.tmTheme +437 -0
  64. package/themes/DawnCustom.tmTheme +443 -0
  65. package/themes/Django (Smoothy).tmTheme +453 -0
  66. package/themes/Django Blues.tmTheme +182 -0
  67. package/themes/Django Extended.tmTheme +495 -0
  68. package/themes/Django.tmTheme +436 -0
  69. package/themes/Dobdark.tmTheme +615 -0
  70. package/themes/Dominion Day.tmTheme +562 -0
  71. package/themes/Doo-Daa.tmTheme +242 -0
  72. package/themes/Drankin Purp.tmTheme +227 -0
  73. package/themes/Dreamweaver_Blackbam_Aptana303.tmTheme +980 -0
  74. package/themes/Easy on my Eyes There Buddy.tmTheme +227 -0
  75. package/themes/Eiffel.tmTheme +435 -0
  76. package/themes/Emacs Strict.tmTheme +241 -0
  77. package/themes/Emacs.tmTheme +241 -0
  78. package/themes/Epic Blue.tmTheme +320 -0
  79. package/themes/Erebus.tmTheme +467 -0
  80. package/themes/Espresso Libre.tmTheme +402 -0
  81. package/themes/Espresso Tutti.tmTheme +392 -0
  82. package/themes/Espresso.tmTheme +329 -0
  83. package/themes/Fade to Grey.tmTheme +308 -0
  84. package/themes/Fluidvision.tmTheme +443 -0
  85. package/themes/ForLaTeX.tmTheme +214 -0
  86. package/themes/Freckle.tmTheme +279 -0
  87. package/themes/Friendship Bracelet.tmTheme +303 -0
  88. package/themes/GaGaGaGroovy.tmTheme +227 -0
  89. package/themes/Gangrene.tmTheme +242 -0
  90. package/themes/GitHub.tmTheme +653 -0
  91. package/themes/GlitterBomb.tmTheme +387 -0
  92. package/themes/Halloween Night.tmTheme +303 -0
  93. package/themes/Happy happy joy joy.tmTheme +841 -0
  94. package/themes/Happydeluxe.tmTheme +184 -0
  95. package/themes/HelvectorLight.tmTheme +557 -0
  96. package/themes/Humane.tmTheme +220 -0
  97. package/themes/IDLE.tmTheme +235 -0
  98. package/themes/IR_Black.tmTheme +810 -0
  99. package/themes/IR_White.tmTheme +792 -0
  100. package/themes/Jane Fonda, Baby Redux.tmTheme +264 -0
  101. package/themes/Johnny.tmTheme +798 -0
  102. package/themes/Juicy.tmTheme +250 -0
  103. package/themes/Kuroir Theme.tmTheme +707 -0
  104. package/themes/LAZY.tmTheme +291 -0
  105. package/themes/Lowlight.tmTheme +605 -0
  106. package/themes/Mac Classic.tmTheme +476 -0
  107. package/themes/Made of Code.tmTheme +695 -0
  108. package/themes/MagicWB (Amiga).tmTheme +376 -0
  109. package/themes/Malibu Nights.tmTheme +257 -0
  110. package/themes/Menage A Trois.tmTheme +881 -0
  111. package/themes/Merbivore Soft.tmTheme +285 -0
  112. package/themes/Merbivore.tmTheme +285 -0
  113. package/themes/Midnight.tmTheme +321 -0
  114. package/themes/Mmm Sandy.tmTheme +227 -0
  115. package/themes/Monokai.tmTheme +289 -0
  116. package/themes/MultiMarkdown.tmTheme +183 -0
  117. package/themes/Mustang.tmTheme +339 -0
  118. package/themes/Neopro Inverted.tmTheme +328 -0
  119. package/themes/Neopro.tmTheme +330 -0
  120. package/themes/Nice One.tmTheme +222 -0
  121. package/themes/No Way.tmTheme +255 -0
  122. package/themes/Overcast.tmTheme +659 -0
  123. package/themes/Pastels on Dark.tmTheme +703 -0
  124. package/themes/Pastie.tmTheme +321 -0
  125. package/themes/Peridinkle.tmTheme +240 -0
  126. package/themes/Play!.tmTheme +736 -0
  127. package/themes/Puss.tmTheme +227 -0
  128. package/themes/Putty.tmTheme +275 -0
  129. package/themes/Quail.tmTheme +257 -0
  130. package/themes/RDark.tmTheme +235 -0
  131. package/themes/Rails Envy.tmTheme +299 -0
  132. package/themes/Railscasts 2.tmTheme +368 -0
  133. package/themes/Railscasts.tmTheme +278 -0
  134. package/themes/Resesif.tmTheme +298 -0
  135. package/themes/Ringo.tmTheme +240 -0
  136. package/themes/Ruby Blue.tmTheme +366 -0
  137. package/themes/RubyRobot.tmTheme +250 -0
  138. package/themes/Ryan Light.tmTheme +232 -0
  139. package/themes/Seafoam.tmTheme +242 -0
  140. package/themes/Sidewalk Chalk.tmTheme +276 -0
  141. package/themes/Sin City (that yellow bastard).tmTheme +585 -0
  142. package/themes/Slate.tmTheme +436 -0
  143. package/themes/Slush & Poppies.tmTheme +336 -0
  144. package/themes/Slush and Poppies.tmTheme +336 -0
  145. package/themes/Smokey Morning.tmTheme +229 -0
  146. package/themes/Smoothy original.tmTheme +623 -0
  147. package/themes/Smoothy.tmTheme +623 -0
  148. package/themes/Solarized (dark).tmTheme +2051 -0
  149. package/themes/Solarized-dark.tmTheme +312 -0
  150. package/themes/Solarized-light.tmTheme +305 -0
  151. package/themes/Sometheme.tmTheme +240 -0
  152. package/themes/SoylentTheme.tmTheme +353 -0
  153. package/themes/SpaceCadet.tmTheme +212 -0
  154. package/themes/Spectacular.tmTheme +436 -0
  155. package/themes/Starlight.tmTheme +857 -0
  156. package/themes/Stoneship Bright.tmTheme +348 -0
  157. package/themes/Stoneship.tmTheme +361 -0
  158. package/themes/Summer Camp Mod.tmTheme +229 -0
  159. package/themes/Summer Camp.tmTheme +229 -0
  160. package/themes/Summery Drink.tmTheme +242 -0
  161. package/themes/Sunburst.tmTheme +665 -0
  162. package/themes/Swyphs II.tmTheme +306 -0
  163. package/themes/Tango Bright.tmTheme +1 -0
  164. package/themes/Tango.tmTheme +450 -0
  165. package/themes/Teenage Dream.tmTheme +242 -0
  166. package/themes/Texari.tmTheme +727 -0
  167. package/themes/Text Ex Machina.tmTheme +295 -0
  168. package/themes/Tomorrow-Night-Blue.tmTheme +175 -0
  169. package/themes/Tomorrow-Night-Eighties.tmTheme +175 -0
  170. package/themes/Tomorrow-Night.tmTheme +175 -0
  171. package/themes/Tomorrow.tmTheme +349 -0
  172. package/themes/ToyChest.tmTheme +503 -0
  173. package/themes/TravisJeffery.tmTheme +1261 -0
  174. package/themes/Tubster.tmTheme +280 -0
  175. package/themes/Twilight BG FG.tmTheme +1000 -0
  176. package/themes/Twilight.tmTheme +516 -0
  177. package/themes/TwilightMod.tmTheme +529 -0
  178. package/themes/Two Days Ago.tmTheme +242 -0
  179. package/themes/Vibrant Fin.tmTheme +447 -0
  180. package/themes/Vibrant Ink.tmTheme +447 -0
  181. package/themes/Vibrant Scala.tmTheme +292 -0
  182. package/themes/Vibrant Tango.tmTheme +438 -0
  183. package/themes/Wandering.tmTheme +681 -0
  184. package/themes/Whimsy in Blue.tmTheme +240 -0
  185. package/themes/Why/342/200/231s Poignant.tmTheme" +191 -0
  186. package/themes/Windows XP.tmTheme +350 -0
  187. package/themes/Witch.tmTheme +282 -0
  188. package/themes/Yurple.tmTheme +227 -0
  189. package/themes/ZZZ.tmTheme +131 -0
  190. package/themes/Zachstronaut.tmTheme +381 -0
  191. package/themes/Zenburnesque.tmTheme +343 -0
  192. package/themes/[ Argonaut ].tmTheme +387 -0
  193. package/themes/barf.tmTheme +254 -0
  194. package/themes/converted-vscode-AmoledShinyBlack.tmTheme +528 -0
  195. package/themes/converted-vscode-AmoledShinyBlack2.tmTheme +609 -0
  196. package/themes/converted-vscode-AmoledShinyBlack3.tmTheme +683 -0
  197. package/themes/converted-vscode-AmoledShinyBlack4.tmTheme +896 -0
  198. package/themes/converted-vscode-AmoledShinyBlack5.tmTheme +1023 -0
  199. package/themes/converted-vscode-AmoledShinyBlack6.tmTheme +2092 -0
  200. package/themes/eclips3.media (ECLM).tmTheme +294 -0
  201. package/themes/evin.tmTheme +253 -0
  202. package/themes/fake.tmTheme +669 -0
  203. package/themes/fapfap.tmTheme +508 -0
  204. package/themes/helloKitty.tmTheme +293 -0
  205. package/themes/iLife 05.tmTheme +619 -0
  206. package/themes/iPlastic.tmTheme +397 -0
  207. package/themes/idleFingers.tmTheme +380 -0
  208. package/themes/krTheme.tmTheme +551 -0
  209. package/themes/mark.james.name.tmTheme +1117 -0
  210. package/themes/minimal Theme.tmTheme +551 -0
  211. package/themes/mint.tmTheme +617 -0
  212. package/themes/mintBlue Dark.tmTheme +653 -0
  213. package/themes/mintBlue.tmTheme +655 -0
  214. package/themes/modifiedPastels.tmTheme +745 -0
  215. package/themes/monoindustrial.tmTheme +451 -0
  216. package/themes/my-theme-blackboard.tmTheme +363 -0
  217. package/themes/my-theme-classic.tmTheme +465 -0
  218. package/themes/nppGLua.tmTheme +293 -0
  219. package/themes/reST testing theme.tmTheme +554 -0
  220. package/themes/rose-pine-dawn.tmTheme +329 -0
  221. package/themes/rose-pine-moon.tmTheme +329 -0
  222. package/themes/rose-pine.tmTheme +329 -0
  223. package/themes/ryan-light.tmTheme +232 -0
  224. package/themes/wut.tmTheme +255 -0
  225. package/tools/build-pages-site.mjs +465 -0
  226. package/tools/generate-theme-metadata.mjs +680 -0
  227. package/tools/serve-pages-site.mjs +196 -0
  228. package/tools/validate-themes.mjs +272 -0
  229. package/types/index.d.ts +49 -0
@@ -0,0 +1,780 @@
1
+ :root {
2
+ color-scheme: dark;
3
+ accent-color: #69d6c6;
4
+ color: #edf2f7;
5
+ background: #0b0d10;
6
+ --color-page: #0b0d10;
7
+ --color-panel: rgb(18 22 28 / 88%);
8
+ --color-panel-strong: #171c23;
9
+ --color-border: rgb(255 255 255 / 12%);
10
+ --color-border-strong: rgb(255 255 255 / 20%);
11
+ --color-text: #edf2f7;
12
+ --color-muted: #a8b3bf;
13
+ --color-accent: #69d6c6;
14
+ --color-accent-strong: #8ee8d9;
15
+ --color-amber: #f4ca64;
16
+ --color-rose: #f27d78;
17
+ --shadow-panel: 0 22px 60px rgb(0 0 0 / 34%);
18
+ --shadow-control: 0 12px 28px rgb(0 0 0 / 24%);
19
+ --radius-card: 8px;
20
+ --radius-control: 6px;
21
+ --surface-blur: blur(18px);
22
+ font-family:
23
+ Inter,
24
+ ui-sans-serif,
25
+ system-ui,
26
+ -apple-system,
27
+ BlinkMacSystemFont,
28
+ "Segoe UI",
29
+ sans-serif;
30
+ line-height: 1.5;
31
+ text-rendering: optimizeLegibility;
32
+ -webkit-font-smoothing: antialiased;
33
+ }
34
+
35
+ * {
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ html {
40
+ scrollbar-color: #39424d #0d1014;
41
+ }
42
+
43
+ body {
44
+ min-width: 320px;
45
+ min-height: 100vh;
46
+ margin: 0;
47
+ color: var(--color-text);
48
+ background:
49
+ linear-gradient(125deg, rgb(105 214 198 / 10%), transparent 28rem),
50
+ linear-gradient(245deg, rgb(182 162 255 / 9%), transparent 32rem),
51
+ linear-gradient(180deg, #15191f 0%, var(--color-page) 52%),
52
+ var(--color-page);
53
+ }
54
+
55
+ body::before {
56
+ position: fixed;
57
+ z-index: -1;
58
+ inset: 0;
59
+ background-image:
60
+ linear-gradient(rgb(255 255 255 / 3%) 1px, transparent 1px),
61
+ linear-gradient(90deg, rgb(255 255 255 / 3%) 1px, transparent 1px);
62
+ background-size: 56px 56px;
63
+ mask-image: linear-gradient(180deg, rgb(0 0 0 / 70%), transparent 72%);
64
+ pointer-events: none;
65
+ content: "";
66
+ }
67
+
68
+ ::selection {
69
+ color: #07100f;
70
+ background: var(--color-accent-strong);
71
+ }
72
+
73
+ button,
74
+ input,
75
+ select {
76
+ font: inherit;
77
+ }
78
+
79
+ button,
80
+ a,
81
+ input,
82
+ select {
83
+ transition:
84
+ border-color 160ms ease,
85
+ background-color 160ms ease,
86
+ box-shadow 160ms ease,
87
+ color 160ms ease,
88
+ transform 160ms ease;
89
+ }
90
+
91
+ button {
92
+ appearance: none;
93
+ }
94
+
95
+ .google-tag-manager-frame {
96
+ display: none;
97
+ visibility: hidden;
98
+ }
99
+
100
+ .site-header {
101
+ position: relative;
102
+ display: flex;
103
+ align-items: end;
104
+ justify-content: space-between;
105
+ gap: 24px;
106
+ width: min(1600px, 100%);
107
+ margin: 0 auto;
108
+ padding: 36px 24px 22px;
109
+ }
110
+
111
+ .site-title {
112
+ position: relative;
113
+ z-index: 2;
114
+ flex: 0 0 auto;
115
+ min-width: 0;
116
+ }
117
+
118
+ .header-artwork {
119
+ flex: 1 1 760px;
120
+ align-self: stretch;
121
+ height: 216px;
122
+ min-width: 360px;
123
+ overflow: hidden;
124
+ border-radius: var(--radius-card);
125
+ opacity: 0.92;
126
+ mask-image: linear-gradient(90deg, transparent 0%, #000 22%, #000 100%);
127
+ pointer-events: none;
128
+ }
129
+
130
+ .header-artwork img {
131
+ display: block;
132
+ width: 100%;
133
+ height: 100%;
134
+ object-fit: cover;
135
+ object-position: right center;
136
+ }
137
+
138
+ .eyebrow {
139
+ margin: 0 0 6px;
140
+ color: var(--color-accent-strong);
141
+ font-size: 0.78rem;
142
+ font-weight: 700;
143
+ letter-spacing: 0;
144
+ text-transform: uppercase;
145
+ }
146
+
147
+ h1,
148
+ h2 {
149
+ margin: 0;
150
+ letter-spacing: 0;
151
+ }
152
+
153
+ h1 {
154
+ max-width: 11ch;
155
+ color: #ffffff;
156
+ font-size: 3.9rem;
157
+ line-height: 0.95;
158
+ }
159
+
160
+ h2 {
161
+ color: #ffffff;
162
+ font-size: 2.35rem;
163
+ line-height: 1.08;
164
+ }
165
+
166
+ .site-stats {
167
+ position: absolute;
168
+ right: 24px;
169
+ bottom: 22px;
170
+ z-index: 3;
171
+ display: flex;
172
+ flex-wrap: wrap;
173
+ justify-content: end;
174
+ gap: 8px;
175
+ color: #d8e0e8;
176
+ font-size: 0.92rem;
177
+ }
178
+
179
+ .site-stats span,
180
+ .metadata-pill {
181
+ border: 1px solid var(--color-border);
182
+ border-radius: var(--radius-control);
183
+ padding: 6px 10px;
184
+ background:
185
+ linear-gradient(180deg, rgb(255 255 255 / 7%), rgb(255 255 255 / 3%)),
186
+ rgb(255 255 255 / 4%);
187
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 7%);
188
+ }
189
+
190
+ .site-stats span {
191
+ border-color: rgb(255 255 255 / 28%);
192
+ color: #ffffff;
193
+ background:
194
+ linear-gradient(180deg, rgb(255 255 255 / 12%), rgb(255 255 255 / 5%)),
195
+ rgb(7 10 13 / 88%);
196
+ box-shadow:
197
+ 0 14px 32px rgb(0 0 0 / 40%),
198
+ inset 0 1px 0 rgb(255 255 255 / 12%);
199
+ backdrop-filter: blur(14px);
200
+ }
201
+
202
+ .app-shell {
203
+ display: grid;
204
+ grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
205
+ gap: 18px;
206
+ width: min(1600px, 100%);
207
+ margin: 0 auto;
208
+ padding: 0 24px 32px;
209
+ }
210
+
211
+ .sidebar,
212
+ .preview-panel {
213
+ min-width: 0;
214
+ border: 1px solid var(--color-border);
215
+ border-radius: var(--radius-card);
216
+ background:
217
+ linear-gradient(180deg, rgb(255 255 255 / 6%), rgb(255 255 255 / 2%)),
218
+ var(--color-panel);
219
+ box-shadow: var(--shadow-panel);
220
+ backdrop-filter: var(--surface-blur);
221
+ }
222
+
223
+ .sidebar {
224
+ position: sticky;
225
+ top: 16px;
226
+ display: flex;
227
+ flex-direction: column;
228
+ gap: 14px;
229
+ height: calc(100vh - 116px);
230
+ min-height: 620px;
231
+ padding: 16px;
232
+ }
233
+
234
+ .control-group {
235
+ display: grid;
236
+ gap: 7px;
237
+ }
238
+
239
+ label {
240
+ color: var(--color-muted);
241
+ font-size: 0.78rem;
242
+ font-weight: 700;
243
+ text-transform: uppercase;
244
+ }
245
+
246
+ input,
247
+ select {
248
+ width: 100%;
249
+ min-height: 42px;
250
+ border: 1px solid var(--color-border);
251
+ border-radius: var(--radius-control);
252
+ padding: 0 12px;
253
+ color: var(--color-text);
254
+ background: #0d1014;
255
+ outline: none;
256
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 5%);
257
+ }
258
+
259
+ input[type="checkbox"] {
260
+ flex: 0 0 auto;
261
+ width: 16px;
262
+ height: 16px;
263
+ margin: 0;
264
+ min-height: 0;
265
+ }
266
+
267
+ .color-tool {
268
+ position: relative;
269
+ display: grid;
270
+ grid-template-columns: minmax(0, 1fr);
271
+ gap: 8px;
272
+ }
273
+
274
+ .color-entry {
275
+ display: grid;
276
+ grid-template-columns: minmax(0, 1fr) 42px;
277
+ gap: 8px;
278
+ }
279
+
280
+ .color-wheel-button {
281
+ display: grid;
282
+ place-items: center;
283
+ min-height: 42px;
284
+ border: 1px solid var(--color-border);
285
+ border-radius: var(--radius-control);
286
+ background: #0d1014;
287
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 5%);
288
+ cursor: pointer;
289
+ }
290
+
291
+ .color-wheel-button:hover {
292
+ border-color: rgb(105 214 198 / 40%);
293
+ background: #111720;
294
+ }
295
+
296
+ #color_preview {
297
+ width: 22px;
298
+ height: 22px;
299
+ border: 1px solid rgb(255 255 255 / 32%);
300
+ border-radius: 50%;
301
+ background: var(--color-accent);
302
+ box-shadow:
303
+ 0 0 0 2px rgb(0 0 0 / 22%),
304
+ 0 8px 16px rgb(0 0 0 / 28%);
305
+ }
306
+
307
+ .color-popover {
308
+ position: absolute;
309
+ z-index: 10;
310
+ top: 0;
311
+ right: 0;
312
+ display: grid;
313
+ gap: 12px;
314
+ width: min(100%, 278px);
315
+ border: 1px solid rgb(255 255 255 / 20%);
316
+ border-radius: var(--radius-card);
317
+ padding: 14px;
318
+ background:
319
+ linear-gradient(180deg, rgb(255 255 255 / 8%), rgb(255 255 255 / 3%)),
320
+ rgb(9 12 16 / 96%);
321
+ box-shadow: 0 22px 48px rgb(0 0 0 / 46%);
322
+ backdrop-filter: blur(18px);
323
+ }
324
+
325
+ .color-popover[hidden] {
326
+ display: none;
327
+ }
328
+
329
+ .color-wheel {
330
+ position: relative;
331
+ isolation: isolate;
332
+ width: 184px;
333
+ height: 184px;
334
+ justify-self: center;
335
+ border-radius: 50%;
336
+ overflow: hidden;
337
+ background: conic-gradient(
338
+ from 90deg,
339
+ #ff3b3b,
340
+ #ffb638,
341
+ #d8ff3b,
342
+ #38ff77,
343
+ #38ffe1,
344
+ #386bff,
345
+ #b238ff,
346
+ #ff38b6,
347
+ #ff3b3b
348
+ );
349
+ box-shadow:
350
+ 0 0 0 1px rgb(255 255 255 / 18%),
351
+ inset 0 0 28px rgb(0 0 0 / 38%),
352
+ 0 16px 32px rgb(0 0 0 / 28%);
353
+ cursor: crosshair;
354
+ }
355
+
356
+ .color-wheel::before,
357
+ .color-wheel::after {
358
+ position: absolute;
359
+ border-radius: inherit;
360
+ pointer-events: none;
361
+ content: "";
362
+ }
363
+
364
+ .color-wheel::before {
365
+ inset: 2px;
366
+ border-radius: inherit;
367
+ background: radial-gradient(
368
+ circle,
369
+ #ffffff 0%,
370
+ rgb(255 255 255 / 92%) 7%,
371
+ rgb(255 255 255 / 0%) 70%
372
+ );
373
+ }
374
+
375
+ .color-wheel::after {
376
+ inset: 0;
377
+ background: rgb(0 0 0 / var(--wheel-shade, 0));
378
+ }
379
+
380
+ .color-wheel-marker {
381
+ position: absolute;
382
+ left: var(--marker-left, 50%);
383
+ top: var(--marker-top, 50%);
384
+ z-index: 1;
385
+ width: 14px;
386
+ height: 14px;
387
+ border: 2px solid #ffffff;
388
+ border-radius: 50%;
389
+ background: var(--selected-color, var(--color-accent));
390
+ box-shadow:
391
+ 0 0 0 2px rgb(0 0 0 / 72%),
392
+ 0 6px 14px rgb(0 0 0 / 38%);
393
+ transform: translate(-50%, -50%);
394
+ }
395
+
396
+ .color-rgb {
397
+ min-height: 28px;
398
+ border: 1px solid rgb(255 255 255 / 12%);
399
+ border-radius: var(--radius-control);
400
+ padding: 4px 8px;
401
+ color: #dce6ee;
402
+ background: rgb(0 0 0 / 24%);
403
+ font-family: "Cascadia Code", "Fira Code", Consolas, monospace;
404
+ font-size: 0.82rem;
405
+ text-align: center;
406
+ }
407
+
408
+ .lightness-control {
409
+ display: grid;
410
+ gap: 7px;
411
+ color: var(--color-muted);
412
+ font-size: 0.78rem;
413
+ font-weight: 700;
414
+ text-transform: uppercase;
415
+ }
416
+
417
+ .lightness-control input {
418
+ min-height: 28px;
419
+ padding: 0;
420
+ }
421
+
422
+ .color-toggle {
423
+ display: flex;
424
+ align-items: center;
425
+ gap: 8px;
426
+ min-height: 42px;
427
+ border: 1px solid var(--color-border);
428
+ border-radius: var(--radius-control);
429
+ padding: 0 10px;
430
+ color: var(--color-text);
431
+ font-size: 0.83rem;
432
+ font-weight: 700;
433
+ text-transform: none;
434
+ background: #0d1014;
435
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 5%);
436
+ }
437
+
438
+ a:focus-visible,
439
+ button:focus-visible,
440
+ input:focus-visible,
441
+ select:focus-visible,
442
+ .theme-option:focus-visible {
443
+ border-color: var(--color-amber);
444
+ box-shadow:
445
+ 0 0 0 3px rgb(244 202 100 / 22%),
446
+ inset 0 1px 0 rgb(255 255 255 / 8%);
447
+ outline: none;
448
+ }
449
+
450
+ .theme-list {
451
+ display: grid;
452
+ align-content: start;
453
+ gap: 8px;
454
+ min-height: 0;
455
+ overflow: auto;
456
+ padding-right: 6px;
457
+ scrollbar-color: #414b57 transparent;
458
+ }
459
+
460
+ .theme-option {
461
+ display: grid;
462
+ grid-template-columns: 34px minmax(0, 1fr);
463
+ gap: 10px;
464
+ width: 100%;
465
+ min-height: 62px;
466
+ border: 1px solid rgb(255 255 255 / 10%);
467
+ border-radius: 7px;
468
+ padding: 9px;
469
+ color: #e2eaf1;
470
+ text-align: left;
471
+ background:
472
+ linear-gradient(180deg, rgb(255 255 255 / 5%), transparent),
473
+ var(--color-panel-strong);
474
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 5%);
475
+ cursor: pointer;
476
+ }
477
+
478
+ .theme-option:hover {
479
+ border-color: rgb(105 214 198 / 36%);
480
+ background-color: #1a2028;
481
+ transform: translateY(-1px);
482
+ }
483
+
484
+ .theme-option[aria-pressed="true"] {
485
+ border-color: rgb(105 214 198 / 78%);
486
+ background:
487
+ linear-gradient(90deg, rgb(105 214 198 / 14%), transparent 62%), #1b2329;
488
+ box-shadow:
489
+ inset 3px 0 0 var(--color-accent),
490
+ inset 0 1px 0 rgb(255 255 255 / 7%);
491
+ }
492
+
493
+ .swatch {
494
+ width: 34px;
495
+ height: 44px;
496
+ border: 1px solid var(--color-border-strong);
497
+ border-radius: 5px;
498
+ box-shadow:
499
+ inset 0 0 0 1px rgb(0 0 0 / 24%),
500
+ 0 8px 16px rgb(0 0 0 / 22%);
501
+ }
502
+
503
+ .theme-option strong,
504
+ .theme-option span {
505
+ overflow: hidden;
506
+ text-overflow: ellipsis;
507
+ white-space: nowrap;
508
+ }
509
+
510
+ .theme-option > span {
511
+ display: grid;
512
+ align-content: center;
513
+ gap: 2px;
514
+ min-width: 0;
515
+ }
516
+
517
+ .theme-option > span > span {
518
+ display: block;
519
+ }
520
+
521
+ .theme-option strong {
522
+ color: #ffffff;
523
+ font-size: 0.95rem;
524
+ line-height: 1.25;
525
+ }
526
+
527
+ .theme-option span {
528
+ color: var(--color-muted);
529
+ font-size: 0.8rem;
530
+ }
531
+
532
+ .preview-panel {
533
+ display: grid;
534
+ gap: 16px;
535
+ min-height: calc(100vh - 116px);
536
+ padding: 20px;
537
+ }
538
+
539
+ .preview-toolbar {
540
+ display: flex;
541
+ align-items: start;
542
+ justify-content: space-between;
543
+ gap: 18px;
544
+ }
545
+
546
+ .preview-toolbar a {
547
+ border: 1px solid rgb(255 255 255 / 18%);
548
+ border-radius: var(--radius-control);
549
+ padding: 10px 13px;
550
+ color: #09110f;
551
+ font-size: 0.88rem;
552
+ font-weight: 800;
553
+ text-decoration: none;
554
+ background:
555
+ linear-gradient(180deg, #ffe08a, var(--color-amber)), var(--color-amber);
556
+ box-shadow: var(--shadow-control);
557
+ }
558
+
559
+ .preview-toolbar a:hover {
560
+ color: #050808;
561
+ background: linear-gradient(180deg, #fff0b3, #ffd56f), var(--color-amber);
562
+ transform: translateY(-1px);
563
+ }
564
+
565
+ .metadata-strip {
566
+ display: flex;
567
+ flex-wrap: wrap;
568
+ gap: 8px;
569
+ }
570
+
571
+ .metadata-pill {
572
+ color: #d5dee7;
573
+ font-size: 0.86rem;
574
+ }
575
+
576
+ .metadata-pill:nth-child(1) {
577
+ border-color: rgb(105 214 198 / 28%);
578
+ color: var(--color-accent-strong);
579
+ }
580
+
581
+ .metadata-pill:nth-child(3) {
582
+ border-color: rgb(182 162 255 / 26%);
583
+ color: #d4caff;
584
+ }
585
+
586
+ .metadata-pill:nth-child(4) {
587
+ border-color: rgb(244 202 100 / 28%);
588
+ color: #ffe09a;
589
+ }
590
+
591
+ .terminal-frame {
592
+ overflow: hidden;
593
+ border: 1px solid var(--color-border-strong);
594
+ border-radius: var(--radius-card);
595
+ background: #050608;
596
+ box-shadow:
597
+ 0 22px 44px rgb(0 0 0 / 34%),
598
+ inset 0 1px 0 rgb(255 255 255 / 8%);
599
+ }
600
+
601
+ .terminal-chrome {
602
+ display: flex;
603
+ gap: 7px;
604
+ align-items: center;
605
+ height: 36px;
606
+ padding: 0 13px;
607
+ border-bottom: 1px solid rgb(255 255 255 / 10%);
608
+ background:
609
+ linear-gradient(180deg, rgb(255 255 255 / 11%), rgb(255 255 255 / 6%)),
610
+ rgb(255 255 255 / 8%);
611
+ }
612
+
613
+ .terminal-chrome span {
614
+ width: 10px;
615
+ height: 10px;
616
+ border-radius: 50%;
617
+ }
618
+
619
+ .terminal-chrome span:nth-child(1) {
620
+ background: var(--color-rose);
621
+ }
622
+
623
+ .terminal-chrome span:nth-child(2) {
624
+ background: var(--color-amber);
625
+ }
626
+
627
+ .terminal-chrome span:nth-child(3) {
628
+ background: var(--color-accent);
629
+ }
630
+
631
+ .code-grid {
632
+ display: grid;
633
+ grid-template-columns: repeat(2, minmax(0, 1fr));
634
+ gap: 1px;
635
+ background: rgb(255 255 255 / 11%);
636
+ }
637
+
638
+ .code-sample {
639
+ min-width: 0;
640
+ min-height: 330px;
641
+ padding: 18px;
642
+ }
643
+
644
+ .sample-title {
645
+ display: flex;
646
+ justify-content: space-between;
647
+ gap: 12px;
648
+ margin-bottom: 12px;
649
+ color: inherit;
650
+ font-family:
651
+ "Cascadia Code", "Fira Code", Consolas, "Liberation Mono", monospace;
652
+ font-size: 0.78rem;
653
+ font-weight: 700;
654
+ opacity: 0.82;
655
+ }
656
+
657
+ .sample-title span:last-child {
658
+ color: var(--color-accent-strong);
659
+ }
660
+
661
+ pre {
662
+ overflow: auto;
663
+ min-height: 260px;
664
+ margin: 0;
665
+ font-family:
666
+ "Cascadia Code", "Fira Code", Consolas, "Liberation Mono", monospace;
667
+ font-size: 0.9rem;
668
+ line-height: 1.58;
669
+ white-space: pre;
670
+ scrollbar-color: #46515f transparent;
671
+ }
672
+
673
+ .token.bold {
674
+ font-weight: 700;
675
+ }
676
+
677
+ .token.italic {
678
+ font-style: italic;
679
+ }
680
+
681
+ .token.underline {
682
+ text-decoration: underline;
683
+ }
684
+
685
+ @media (prefers-reduced-motion: no-preference) {
686
+ .preview-panel,
687
+ .sidebar,
688
+ .theme-option {
689
+ animation: surface-in 280ms ease both;
690
+ }
691
+ }
692
+
693
+ @keyframes surface-in {
694
+ from {
695
+ opacity: 0;
696
+ transform: translateY(8px);
697
+ }
698
+
699
+ to {
700
+ opacity: 1;
701
+ transform: translateY(0);
702
+ }
703
+ }
704
+
705
+ @media (max-width: 980px) {
706
+ .site-header {
707
+ align-items: start;
708
+ flex-direction: column;
709
+ }
710
+
711
+ .header-artwork {
712
+ display: none;
713
+ }
714
+
715
+ .site-stats {
716
+ justify-content: start;
717
+ position: static;
718
+ }
719
+
720
+ h1 {
721
+ max-width: 14ch;
722
+ font-size: 2.75rem;
723
+ }
724
+
725
+ h2 {
726
+ font-size: 1.9rem;
727
+ }
728
+
729
+ .app-shell {
730
+ grid-template-columns: 1fr;
731
+ }
732
+
733
+ .sidebar {
734
+ position: static;
735
+ height: auto;
736
+ min-height: 0;
737
+ }
738
+
739
+ .theme-list {
740
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
741
+ max-height: 360px;
742
+ }
743
+
744
+ .preview-panel {
745
+ min-height: auto;
746
+ }
747
+ }
748
+
749
+ @media (max-width: 740px) {
750
+ .site-header,
751
+ .app-shell {
752
+ padding-right: 14px;
753
+ padding-left: 14px;
754
+ }
755
+
756
+ .site-header {
757
+ padding-top: 24px;
758
+ }
759
+
760
+ h1 {
761
+ font-size: 2.1rem;
762
+ }
763
+
764
+ h2 {
765
+ font-size: 1.55rem;
766
+ }
767
+
768
+ .preview-toolbar {
769
+ align-items: stretch;
770
+ flex-direction: column;
771
+ }
772
+
773
+ .preview-toolbar a {
774
+ text-align: center;
775
+ }
776
+
777
+ .code-grid {
778
+ grid-template-columns: 1fr;
779
+ }
780
+ }