kimu-core 0.4.1 → 0.4.2

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 (67) hide show
  1. package/.editorconfig +116 -30
  2. package/.gitattributes +81 -11
  3. package/.github/FUNDING.yml +8 -8
  4. package/.github/kimu-copilot-instructions.md +3779 -3779
  5. package/.github/workflows/deploy-demo.yml +39 -39
  6. package/.nvmrc +1 -0
  7. package/.prettierignore +44 -0
  8. package/.prettierrc +16 -0
  9. package/FUNDING.md +31 -31
  10. package/icon.svg +10 -10
  11. package/package.json +9 -2
  12. package/scripts/minify-css-assets.js +82 -82
  13. package/src/core/index.ts +47 -47
  14. package/src/core/kimu-global-styles.ts +136 -136
  15. package/src/core/kimu-reactive.ts +196 -196
  16. package/src/modules-repository/api-axios/CHANGELOG.md +48 -48
  17. package/src/modules-repository/api-axios/QUICK-REFERENCE.md +178 -178
  18. package/src/modules-repository/api-axios/README.md +304 -304
  19. package/src/modules-repository/api-axios/api-axios-service.ts +355 -355
  20. package/src/modules-repository/api-axios/examples.ts +293 -293
  21. package/src/modules-repository/api-axios/index.ts +19 -19
  22. package/src/modules-repository/api-axios/interfaces.ts +71 -71
  23. package/src/modules-repository/api-axios/module.ts +41 -41
  24. package/src/modules-repository/api-core/CHANGELOG.md +42 -42
  25. package/src/modules-repository/api-core/QUICK-REFERENCE.md +192 -192
  26. package/src/modules-repository/api-core/README.md +435 -435
  27. package/src/modules-repository/api-core/api-core-service.ts +289 -289
  28. package/src/modules-repository/api-core/examples.ts +432 -432
  29. package/src/modules-repository/api-core/index.ts +8 -8
  30. package/src/modules-repository/api-core/interfaces.ts +83 -83
  31. package/src/modules-repository/api-core/module.ts +30 -30
  32. package/src/modules-repository/event-bus/README.md +273 -273
  33. package/src/modules-repository/event-bus/event-bus-service.ts +176 -176
  34. package/src/modules-repository/event-bus/module.ts +30 -30
  35. package/src/modules-repository/notification/README.md +423 -423
  36. package/src/modules-repository/notification/module.ts +30 -30
  37. package/src/modules-repository/notification/notification-service.ts +436 -436
  38. package/src/modules-repository/router/README.it.md +61 -10
  39. package/src/modules-repository/router/README.md +61 -10
  40. package/src/modules-repository/router/router-config.ts.example +61 -0
  41. package/src/modules-repository/router/router.ts +18 -0
  42. package/src/modules-repository/state/README.md +409 -409
  43. package/src/modules-repository/state/module.ts +30 -30
  44. package/src/modules-repository/state/state-service.ts +296 -296
  45. package/src/modules-repository/theme/README.md +311 -267
  46. package/src/modules-repository/theme/module.ts +30 -30
  47. package/src/modules-repository/theme/pre-build.js +40 -40
  48. package/src/modules-repository/theme/theme-service.ts +411 -389
  49. package/src/modules-repository/theme/themes/theme-cherry-blossom.css +78 -78
  50. package/src/modules-repository/theme/themes/theme-cozy.css +111 -111
  51. package/src/modules-repository/theme/themes/theme-cyberpunk.css +150 -150
  52. package/src/modules-repository/theme/themes/theme-dark.css +79 -79
  53. package/src/modules-repository/theme/themes/theme-forest.css +171 -171
  54. package/src/modules-repository/theme/themes/theme-gold.css +100 -100
  55. package/src/modules-repository/theme/themes/theme-high-contrast.css +126 -126
  56. package/src/modules-repository/theme/themes/theme-lava.css +101 -101
  57. package/src/modules-repository/theme/themes/theme-lavender.css +90 -90
  58. package/src/modules-repository/theme/themes/theme-light.css +79 -79
  59. package/src/modules-repository/theme/themes/theme-matrix.css +103 -103
  60. package/src/modules-repository/theme/themes/theme-midnight.css +81 -81
  61. package/src/modules-repository/theme/themes/theme-nord.css +94 -94
  62. package/src/modules-repository/theme/themes/theme-ocean.css +84 -84
  63. package/src/modules-repository/theme/themes/theme-retro80s.css +343 -343
  64. package/src/modules-repository/theme/themes/theme-sunset.css +62 -62
  65. package/src/modules-repository/theme/themes-config-default.json +19 -0
  66. package/src/modules-repository/theme/themes-config.d.ts +27 -27
  67. package/src/modules-repository/theme/{themes-config.json → themes-config.json.example} +223 -213
@@ -1,343 +1,343 @@
1
- /**
2
- * Retro 80s Theme - Nostalgic 1980s aesthetic
3
- *
4
- * Inspired by 80s aesthetics with neon grids, LED displays,
5
- * laser effects, and retro-futuristic vibes
6
- *
7
- * Color Palette inspired by:
8
- * - VHS tapes and CRT monitors
9
- * - Neon signs and arcade machines
10
- * - Synthwave and outrun aesthetics
11
- */
12
-
13
- :root {
14
- /* Primary Colors - Hot Pink/Magenta */
15
- --kimu-primary: #FF10F0;
16
- --kimu-primary-hover: #FF44F4;
17
- --kimu-primary-active: #DD00CC;
18
- --kimu-primary-light: rgba(255, 16, 240, 0.15);
19
-
20
- /* Secondary Colors - Electric Cyan */
21
- --kimu-secondary: #00FFFF;
22
- --kimu-secondary-hover: #33FFFF;
23
- --kimu-secondary-active: #00DDDD;
24
-
25
- /* Accent Colors - Laser Orange */
26
- --kimu-accent: #FF6600;
27
- --kimu-accent-hover: #FF8833;
28
- --kimu-accent-active: #DD5500;
29
-
30
- /* Background Colors - Dark with Grid */
31
- --kimu-bg-primary: #0D0221;
32
- --kimu-bg-secondary: #190F33;
33
- --kimu-bg-tertiary: #240F3F;
34
- --kimu-bg-hover: #2F1456;
35
-
36
- /* Text Colors - Bright LED style */
37
- --kimu-text-primary: #FFFFFF;
38
- --kimu-text-secondary: #FFE5FF;
39
- --kimu-text-tertiary: #CCAAFF;
40
- --kimu-text-disabled: #7744AA;
41
-
42
- /* Border Colors - Glowing neon */
43
- --kimu-border: #FF10F0;
44
- --kimu-border-light: rgba(255, 16, 240, 0.4);
45
- --kimu-border-strong: #00FFFF;
46
-
47
- /* Status Colors - 80s Palette */
48
- --kimu-success: #00FF00;
49
- --kimu-warning: #FFFF00;
50
- --kimu-error: #FF0055;
51
- --kimu-info: #00DDFF;
52
-
53
- /* Shadows - Neon glow effects */
54
- --kimu-shadow-sm: 0 0 10px rgba(255, 16, 240, 0.5), 0 0 20px rgba(0, 255, 255, 0.3);
55
- --kimu-shadow-md: 0 0 15px rgba(255, 16, 240, 0.6), 0 0 30px rgba(0, 255, 255, 0.4);
56
- --kimu-shadow-lg: 0 0 25px rgba(255, 16, 240, 0.7), 0 0 50px rgba(0, 255, 255, 0.5);
57
-
58
- /* Additional Component Colors */
59
- --kimu-card-bg: var(--kimu-bg-secondary);
60
- --kimu-input-bg: var(--kimu-bg-tertiary);
61
- --kimu-input-border: var(--kimu-border-light);
62
- --kimu-input-focus: var(--kimu-primary);
63
-
64
- /* Links - Neon glow */
65
- --kimu-link: var(--kimu-secondary);
66
- --kimu-link-hover: var(--kimu-primary);
67
-
68
- /* Overlays */
69
- --kimu-overlay: rgba(13, 2, 33, 0.9);
70
- }
71
-
72
- /* 80s Retro Styling */
73
- body {
74
- color: var(--kimu-text-primary);
75
- background: var(--kimu-bg-primary);
76
- font-family: 'Orbitron', 'Share Tech Mono', 'Courier New', monospace;
77
- }
78
-
79
- /* Classic 80s Grid Background */
80
- body::before {
81
- content: '';
82
- position: fixed;
83
- top: 0;
84
- left: 0;
85
- width: 100%;
86
- height: 100%;
87
- background:
88
- /* Horizontal lines */
89
- repeating-linear-gradient(
90
- 0deg,
91
- transparent,
92
- transparent 39px,
93
- rgba(255, 16, 240, 0.15) 39px,
94
- rgba(255, 16, 240, 0.15) 40px
95
- ),
96
- /* Vertical lines */
97
- repeating-linear-gradient(
98
- 90deg,
99
- transparent,
100
- transparent 39px,
101
- rgba(0, 255, 255, 0.1) 39px,
102
- rgba(0, 255, 255, 0.1) 40px
103
- ),
104
- /* Gradient horizon */
105
- linear-gradient(
106
- 180deg,
107
- rgba(13, 2, 33, 0) 0%,
108
- rgba(13, 2, 33, 0) 50%,
109
- rgba(255, 16, 240, 0.05) 70%,
110
- rgba(0, 255, 255, 0.05) 100%
111
- );
112
- pointer-events: none;
113
- z-index: -1;
114
- animation: gridScroll 20s linear infinite;
115
- }
116
-
117
- @keyframes gridScroll {
118
- 0% {
119
- background-position: 0 0, 0 0, 0 0;
120
- }
121
- 100% {
122
- background-position: 0 40px, 0 0, 0 100px;
123
- }
124
- }
125
-
126
- /* LED-style text with scan lines effect */
127
- body::after {
128
- content: '';
129
- position: fixed;
130
- top: 0;
131
- left: 0;
132
- width: 100%;
133
- height: 100%;
134
- background: repeating-linear-gradient(
135
- 0deg,
136
- rgba(0, 0, 0, 0.1) 0px,
137
- transparent 1px,
138
- transparent 2px,
139
- rgba(0, 0, 0, 0.1) 3px
140
- );
141
- pointer-events: none;
142
- z-index: 9999;
143
- opacity: 0.3;
144
- }
145
-
146
- /* Headers with neon glow */
147
- h1, h2, h3, h4, h5, h6 {
148
- color: var(--kimu-primary);
149
- text-shadow:
150
- 0 0 10px rgba(255, 16, 240, 0.8),
151
- 0 0 20px rgba(255, 16, 240, 0.6),
152
- 0 0 30px rgba(255, 16, 240, 0.4);
153
- font-weight: bold;
154
- text-transform: uppercase;
155
- letter-spacing: 0.1em;
156
- }
157
-
158
- /* Buttons with laser effect */
159
- button {
160
- background: linear-gradient(135deg, var(--kimu-primary), var(--kimu-secondary));
161
- border: 2px solid var(--kimu-primary);
162
- box-shadow:
163
- 0 0 10px rgba(255, 16, 240, 0.5),
164
- inset 0 0 10px rgba(255, 255, 255, 0.2);
165
- text-shadow: 0 0 5px rgba(255, 255, 255, 0.8);
166
- text-transform: uppercase;
167
- letter-spacing: 0.05em;
168
- font-weight: bold;
169
- transition: all 0.3s ease;
170
- position: relative;
171
- overflow: hidden;
172
- }
173
-
174
- /* Laser sweep animation on hover */
175
- button::before {
176
- content: '';
177
- position: absolute;
178
- top: -50%;
179
- left: -50%;
180
- width: 200%;
181
- height: 200%;
182
- background: linear-gradient(
183
- 45deg,
184
- transparent 30%,
185
- rgba(255, 255, 255, 0.3) 50%,
186
- transparent 70%
187
- );
188
- transform: translateX(-100%) translateY(-100%) rotate(45deg);
189
- transition: transform 0.6s ease;
190
- }
191
-
192
- button:hover::before {
193
- transform: translateX(100%) translateY(100%) rotate(45deg);
194
- }
195
-
196
- button:hover {
197
- box-shadow:
198
- 0 0 20px rgba(255, 16, 240, 0.8),
199
- 0 0 40px rgba(0, 255, 255, 0.6),
200
- inset 0 0 15px rgba(255, 255, 255, 0.3);
201
- transform: translateY(-2px);
202
- border-color: var(--kimu-secondary);
203
- }
204
-
205
- button:active {
206
- transform: translateY(0);
207
- box-shadow:
208
- 0 0 15px rgba(255, 16, 240, 0.6),
209
- inset 0 0 10px rgba(0, 0, 0, 0.3);
210
- }
211
-
212
- /* Input fields with LED display style */
213
- input,
214
- textarea,
215
- select {
216
- background: var(--kimu-input-bg);
217
- border: 2px solid var(--kimu-border-light);
218
- color: var(--kimu-secondary);
219
- box-shadow: inset 0 0 10px rgba(255, 16, 240, 0.2);
220
- font-family: 'Share Tech Mono', 'Courier New', monospace;
221
- }
222
-
223
- input:focus,
224
- textarea:focus,
225
- select:focus {
226
- border-color: var(--kimu-primary);
227
- box-shadow:
228
- 0 0 10px rgba(255, 16, 240, 0.5),
229
- inset 0 0 15px rgba(255, 16, 240, 0.3);
230
- color: var(--kimu-primary);
231
- }
232
-
233
- /* Cards with retro frame */
234
- .card,
235
- [class*="card"] {
236
- background: var(--kimu-bg-secondary);
237
- border: 2px solid var(--kimu-primary);
238
- box-shadow:
239
- 0 0 15px rgba(255, 16, 240, 0.4),
240
- inset 0 0 20px rgba(255, 16, 240, 0.1);
241
- position: relative;
242
- }
243
-
244
- /* Corner decorations for cards */
245
- .card::before,
246
- .card::after,
247
- [class*="card"]::before,
248
- [class*="card"]::after {
249
- content: '';
250
- position: absolute;
251
- width: 15px;
252
- height: 15px;
253
- border: 2px solid var(--kimu-secondary);
254
- }
255
-
256
- .card::before,
257
- [class*="card"]::before {
258
- top: -2px;
259
- left: -2px;
260
- border-right: none;
261
- border-bottom: none;
262
- box-shadow: -5px -5px 10px rgba(0, 255, 255, 0.3);
263
- }
264
-
265
- .card::after,
266
- [class*="card"]::after {
267
- bottom: -2px;
268
- right: -2px;
269
- border-left: none;
270
- border-top: none;
271
- box-shadow: 5px 5px 10px rgba(0, 255, 255, 0.3);
272
- }
273
-
274
- /* Links with neon underline */
275
- a {
276
- color: var(--kimu-link);
277
- text-decoration: none;
278
- text-shadow: 0 0 5px rgba(0, 255, 255, 0.5);
279
- border-bottom: 1px solid transparent;
280
- transition: all 0.3s ease;
281
- }
282
-
283
- a:hover {
284
- color: var(--kimu-primary);
285
- text-shadow: 0 0 10px rgba(255, 16, 240, 0.8);
286
- border-bottom: 1px solid var(--kimu-primary);
287
- }
288
-
289
- /* Scrollbar - Retro LED style */
290
- ::-webkit-scrollbar {
291
- width: 14px;
292
- height: 14px;
293
- }
294
-
295
- ::-webkit-scrollbar-track {
296
- background: var(--kimu-bg-secondary);
297
- border: 1px solid var(--kimu-border-light);
298
- box-shadow: inset 0 0 10px rgba(255, 16, 240, 0.2);
299
- }
300
-
301
- ::-webkit-scrollbar-thumb {
302
- background: linear-gradient(180deg, var(--kimu-primary), var(--kimu-secondary));
303
- border: 2px solid var(--kimu-bg-secondary);
304
- box-shadow:
305
- 0 0 10px rgba(255, 16, 240, 0.6),
306
- inset 0 0 5px rgba(255, 255, 255, 0.3);
307
- }
308
-
309
- ::-webkit-scrollbar-thumb:hover {
310
- background: linear-gradient(180deg, var(--kimu-secondary), var(--kimu-accent));
311
- box-shadow:
312
- 0 0 15px rgba(0, 255, 255, 0.8),
313
- inset 0 0 10px rgba(255, 255, 255, 0.5);
314
- }
315
-
316
- /* Selection with laser highlight */
317
- ::selection {
318
- background: rgba(255, 16, 240, 0.4);
319
- color: var(--kimu-text-primary);
320
- text-shadow: 0 0 10px rgba(255, 16, 240, 0.8);
321
- }
322
-
323
- /* Pulse animation for interactive elements */
324
- @keyframes neonPulse {
325
- 0%, 100% {
326
- box-shadow:
327
- 0 0 10px rgba(255, 16, 240, 0.5),
328
- 0 0 20px rgba(0, 255, 255, 0.3);
329
- }
330
- 50% {
331
- box-shadow:
332
- 0 0 20px rgba(255, 16, 240, 0.8),
333
- 0 0 40px rgba(0, 255, 255, 0.6);
334
- }
335
- }
336
-
337
- /* Apply pulse to focused/active elements */
338
- button:focus,
339
- input:focus,
340
- textarea:focus,
341
- select:focus {
342
- animation: neonPulse 2s ease-in-out infinite;
343
- }
1
+ /**
2
+ * Retro 80s Theme - Nostalgic 1980s aesthetic
3
+ *
4
+ * Inspired by 80s aesthetics with neon grids, LED displays,
5
+ * laser effects, and retro-futuristic vibes
6
+ *
7
+ * Color Palette inspired by:
8
+ * - VHS tapes and CRT monitors
9
+ * - Neon signs and arcade machines
10
+ * - Synthwave and outrun aesthetics
11
+ */
12
+
13
+ :root {
14
+ /* Primary Colors - Hot Pink/Magenta */
15
+ --kimu-primary: #FF10F0;
16
+ --kimu-primary-hover: #FF44F4;
17
+ --kimu-primary-active: #DD00CC;
18
+ --kimu-primary-light: rgba(255, 16, 240, 0.15);
19
+
20
+ /* Secondary Colors - Electric Cyan */
21
+ --kimu-secondary: #00FFFF;
22
+ --kimu-secondary-hover: #33FFFF;
23
+ --kimu-secondary-active: #00DDDD;
24
+
25
+ /* Accent Colors - Laser Orange */
26
+ --kimu-accent: #FF6600;
27
+ --kimu-accent-hover: #FF8833;
28
+ --kimu-accent-active: #DD5500;
29
+
30
+ /* Background Colors - Dark with Grid */
31
+ --kimu-bg-primary: #0D0221;
32
+ --kimu-bg-secondary: #190F33;
33
+ --kimu-bg-tertiary: #240F3F;
34
+ --kimu-bg-hover: #2F1456;
35
+
36
+ /* Text Colors - Bright LED style */
37
+ --kimu-text-primary: #FFFFFF;
38
+ --kimu-text-secondary: #FFE5FF;
39
+ --kimu-text-tertiary: #CCAAFF;
40
+ --kimu-text-disabled: #7744AA;
41
+
42
+ /* Border Colors - Glowing neon */
43
+ --kimu-border: #FF10F0;
44
+ --kimu-border-light: rgba(255, 16, 240, 0.4);
45
+ --kimu-border-strong: #00FFFF;
46
+
47
+ /* Status Colors - 80s Palette */
48
+ --kimu-success: #00FF00;
49
+ --kimu-warning: #FFFF00;
50
+ --kimu-error: #FF0055;
51
+ --kimu-info: #00DDFF;
52
+
53
+ /* Shadows - Neon glow effects */
54
+ --kimu-shadow-sm: 0 0 10px rgba(255, 16, 240, 0.5), 0 0 20px rgba(0, 255, 255, 0.3);
55
+ --kimu-shadow-md: 0 0 15px rgba(255, 16, 240, 0.6), 0 0 30px rgba(0, 255, 255, 0.4);
56
+ --kimu-shadow-lg: 0 0 25px rgba(255, 16, 240, 0.7), 0 0 50px rgba(0, 255, 255, 0.5);
57
+
58
+ /* Additional Component Colors */
59
+ --kimu-card-bg: var(--kimu-bg-secondary);
60
+ --kimu-input-bg: var(--kimu-bg-tertiary);
61
+ --kimu-input-border: var(--kimu-border-light);
62
+ --kimu-input-focus: var(--kimu-primary);
63
+
64
+ /* Links - Neon glow */
65
+ --kimu-link: var(--kimu-secondary);
66
+ --kimu-link-hover: var(--kimu-primary);
67
+
68
+ /* Overlays */
69
+ --kimu-overlay: rgba(13, 2, 33, 0.9);
70
+ }
71
+
72
+ /* 80s Retro Styling */
73
+ body {
74
+ color: var(--kimu-text-primary);
75
+ background: var(--kimu-bg-primary);
76
+ font-family: 'Orbitron', 'Share Tech Mono', 'Courier New', monospace;
77
+ }
78
+
79
+ /* Classic 80s Grid Background */
80
+ body::before {
81
+ content: '';
82
+ position: fixed;
83
+ top: 0;
84
+ left: 0;
85
+ width: 100%;
86
+ height: 100%;
87
+ background:
88
+ /* Horizontal lines */
89
+ repeating-linear-gradient(
90
+ 0deg,
91
+ transparent,
92
+ transparent 39px,
93
+ rgba(255, 16, 240, 0.15) 39px,
94
+ rgba(255, 16, 240, 0.15) 40px
95
+ ),
96
+ /* Vertical lines */
97
+ repeating-linear-gradient(
98
+ 90deg,
99
+ transparent,
100
+ transparent 39px,
101
+ rgba(0, 255, 255, 0.1) 39px,
102
+ rgba(0, 255, 255, 0.1) 40px
103
+ ),
104
+ /* Gradient horizon */
105
+ linear-gradient(
106
+ 180deg,
107
+ rgba(13, 2, 33, 0) 0%,
108
+ rgba(13, 2, 33, 0) 50%,
109
+ rgba(255, 16, 240, 0.05) 70%,
110
+ rgba(0, 255, 255, 0.05) 100%
111
+ );
112
+ pointer-events: none;
113
+ z-index: -1;
114
+ animation: gridScroll 20s linear infinite;
115
+ }
116
+
117
+ @keyframes gridScroll {
118
+ 0% {
119
+ background-position: 0 0, 0 0, 0 0;
120
+ }
121
+ 100% {
122
+ background-position: 0 40px, 0 0, 0 100px;
123
+ }
124
+ }
125
+
126
+ /* LED-style text with scan lines effect */
127
+ body::after {
128
+ content: '';
129
+ position: fixed;
130
+ top: 0;
131
+ left: 0;
132
+ width: 100%;
133
+ height: 100%;
134
+ background: repeating-linear-gradient(
135
+ 0deg,
136
+ rgba(0, 0, 0, 0.1) 0px,
137
+ transparent 1px,
138
+ transparent 2px,
139
+ rgba(0, 0, 0, 0.1) 3px
140
+ );
141
+ pointer-events: none;
142
+ z-index: 9999;
143
+ opacity: 0.3;
144
+ }
145
+
146
+ /* Headers with neon glow */
147
+ h1, h2, h3, h4, h5, h6 {
148
+ color: var(--kimu-primary);
149
+ text-shadow:
150
+ 0 0 10px rgba(255, 16, 240, 0.8),
151
+ 0 0 20px rgba(255, 16, 240, 0.6),
152
+ 0 0 30px rgba(255, 16, 240, 0.4);
153
+ font-weight: bold;
154
+ text-transform: uppercase;
155
+ letter-spacing: 0.1em;
156
+ }
157
+
158
+ /* Buttons with laser effect */
159
+ button {
160
+ background: linear-gradient(135deg, var(--kimu-primary), var(--kimu-secondary));
161
+ border: 2px solid var(--kimu-primary);
162
+ box-shadow:
163
+ 0 0 10px rgba(255, 16, 240, 0.5),
164
+ inset 0 0 10px rgba(255, 255, 255, 0.2);
165
+ text-shadow: 0 0 5px rgba(255, 255, 255, 0.8);
166
+ text-transform: uppercase;
167
+ letter-spacing: 0.05em;
168
+ font-weight: bold;
169
+ transition: all 0.3s ease;
170
+ position: relative;
171
+ overflow: hidden;
172
+ }
173
+
174
+ /* Laser sweep animation on hover */
175
+ button::before {
176
+ content: '';
177
+ position: absolute;
178
+ top: -50%;
179
+ left: -50%;
180
+ width: 200%;
181
+ height: 200%;
182
+ background: linear-gradient(
183
+ 45deg,
184
+ transparent 30%,
185
+ rgba(255, 255, 255, 0.3) 50%,
186
+ transparent 70%
187
+ );
188
+ transform: translateX(-100%) translateY(-100%) rotate(45deg);
189
+ transition: transform 0.6s ease;
190
+ }
191
+
192
+ button:hover::before {
193
+ transform: translateX(100%) translateY(100%) rotate(45deg);
194
+ }
195
+
196
+ button:hover {
197
+ box-shadow:
198
+ 0 0 20px rgba(255, 16, 240, 0.8),
199
+ 0 0 40px rgba(0, 255, 255, 0.6),
200
+ inset 0 0 15px rgba(255, 255, 255, 0.3);
201
+ transform: translateY(-2px);
202
+ border-color: var(--kimu-secondary);
203
+ }
204
+
205
+ button:active {
206
+ transform: translateY(0);
207
+ box-shadow:
208
+ 0 0 15px rgba(255, 16, 240, 0.6),
209
+ inset 0 0 10px rgba(0, 0, 0, 0.3);
210
+ }
211
+
212
+ /* Input fields with LED display style */
213
+ input,
214
+ textarea,
215
+ select {
216
+ background: var(--kimu-input-bg);
217
+ border: 2px solid var(--kimu-border-light);
218
+ color: var(--kimu-secondary);
219
+ box-shadow: inset 0 0 10px rgba(255, 16, 240, 0.2);
220
+ font-family: 'Share Tech Mono', 'Courier New', monospace;
221
+ }
222
+
223
+ input:focus,
224
+ textarea:focus,
225
+ select:focus {
226
+ border-color: var(--kimu-primary);
227
+ box-shadow:
228
+ 0 0 10px rgba(255, 16, 240, 0.5),
229
+ inset 0 0 15px rgba(255, 16, 240, 0.3);
230
+ color: var(--kimu-primary);
231
+ }
232
+
233
+ /* Cards with retro frame */
234
+ .card,
235
+ [class*="card"] {
236
+ background: var(--kimu-bg-secondary);
237
+ border: 2px solid var(--kimu-primary);
238
+ box-shadow:
239
+ 0 0 15px rgba(255, 16, 240, 0.4),
240
+ inset 0 0 20px rgba(255, 16, 240, 0.1);
241
+ position: relative;
242
+ }
243
+
244
+ /* Corner decorations for cards */
245
+ .card::before,
246
+ .card::after,
247
+ [class*="card"]::before,
248
+ [class*="card"]::after {
249
+ content: '';
250
+ position: absolute;
251
+ width: 15px;
252
+ height: 15px;
253
+ border: 2px solid var(--kimu-secondary);
254
+ }
255
+
256
+ .card::before,
257
+ [class*="card"]::before {
258
+ top: -2px;
259
+ left: -2px;
260
+ border-right: none;
261
+ border-bottom: none;
262
+ box-shadow: -5px -5px 10px rgba(0, 255, 255, 0.3);
263
+ }
264
+
265
+ .card::after,
266
+ [class*="card"]::after {
267
+ bottom: -2px;
268
+ right: -2px;
269
+ border-left: none;
270
+ border-top: none;
271
+ box-shadow: 5px 5px 10px rgba(0, 255, 255, 0.3);
272
+ }
273
+
274
+ /* Links with neon underline */
275
+ a {
276
+ color: var(--kimu-link);
277
+ text-decoration: none;
278
+ text-shadow: 0 0 5px rgba(0, 255, 255, 0.5);
279
+ border-bottom: 1px solid transparent;
280
+ transition: all 0.3s ease;
281
+ }
282
+
283
+ a:hover {
284
+ color: var(--kimu-primary);
285
+ text-shadow: 0 0 10px rgba(255, 16, 240, 0.8);
286
+ border-bottom: 1px solid var(--kimu-primary);
287
+ }
288
+
289
+ /* Scrollbar - Retro LED style */
290
+ ::-webkit-scrollbar {
291
+ width: 14px;
292
+ height: 14px;
293
+ }
294
+
295
+ ::-webkit-scrollbar-track {
296
+ background: var(--kimu-bg-secondary);
297
+ border: 1px solid var(--kimu-border-light);
298
+ box-shadow: inset 0 0 10px rgba(255, 16, 240, 0.2);
299
+ }
300
+
301
+ ::-webkit-scrollbar-thumb {
302
+ background: linear-gradient(180deg, var(--kimu-primary), var(--kimu-secondary));
303
+ border: 2px solid var(--kimu-bg-secondary);
304
+ box-shadow:
305
+ 0 0 10px rgba(255, 16, 240, 0.6),
306
+ inset 0 0 5px rgba(255, 255, 255, 0.3);
307
+ }
308
+
309
+ ::-webkit-scrollbar-thumb:hover {
310
+ background: linear-gradient(180deg, var(--kimu-secondary), var(--kimu-accent));
311
+ box-shadow:
312
+ 0 0 15px rgba(0, 255, 255, 0.8),
313
+ inset 0 0 10px rgba(255, 255, 255, 0.5);
314
+ }
315
+
316
+ /* Selection with laser highlight */
317
+ ::selection {
318
+ background: rgba(255, 16, 240, 0.4);
319
+ color: var(--kimu-text-primary);
320
+ text-shadow: 0 0 10px rgba(255, 16, 240, 0.8);
321
+ }
322
+
323
+ /* Pulse animation for interactive elements */
324
+ @keyframes neonPulse {
325
+ 0%, 100% {
326
+ box-shadow:
327
+ 0 0 10px rgba(255, 16, 240, 0.5),
328
+ 0 0 20px rgba(0, 255, 255, 0.3);
329
+ }
330
+ 50% {
331
+ box-shadow:
332
+ 0 0 20px rgba(255, 16, 240, 0.8),
333
+ 0 0 40px rgba(0, 255, 255, 0.6);
334
+ }
335
+ }
336
+
337
+ /* Apply pulse to focused/active elements */
338
+ button:focus,
339
+ input:focus,
340
+ textarea:focus,
341
+ select:focus {
342
+ animation: neonPulse 2s ease-in-out infinite;
343
+ }