kimu-core 0.4.1 → 0.5.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 (75) 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/kimu-core-0.5.0.tgz +0 -0
  12. package/package.json +10 -3
  13. package/scripts/minify-css-assets.js +82 -82
  14. package/src/core/index.ts +47 -47
  15. package/src/core/kimu-global-styles.ts +136 -136
  16. package/src/core/kimu-reactive.ts +196 -196
  17. package/src/extensions/{kimu-home → app-root}/component.ts +5 -5
  18. package/src/extensions/extensions-manifest.json +4 -4
  19. package/src/main.ts +3 -3
  20. package/src/modules-repository/api-axios/CHANGELOG.md +48 -48
  21. package/src/modules-repository/api-axios/QUICK-REFERENCE.md +178 -178
  22. package/src/modules-repository/api-axios/README.md +304 -304
  23. package/src/modules-repository/api-axios/api-axios-service.ts +355 -355
  24. package/src/modules-repository/api-axios/examples.ts +293 -293
  25. package/src/modules-repository/api-axios/index.ts +19 -19
  26. package/src/modules-repository/api-axios/interfaces.ts +71 -71
  27. package/src/modules-repository/api-axios/module.ts +41 -41
  28. package/src/modules-repository/api-core/CHANGELOG.md +42 -42
  29. package/src/modules-repository/api-core/QUICK-REFERENCE.md +192 -192
  30. package/src/modules-repository/api-core/README.md +435 -435
  31. package/src/modules-repository/api-core/api-core-service.ts +289 -289
  32. package/src/modules-repository/api-core/examples.ts +432 -432
  33. package/src/modules-repository/api-core/index.ts +8 -8
  34. package/src/modules-repository/api-core/interfaces.ts +83 -83
  35. package/src/modules-repository/api-core/module.ts +30 -30
  36. package/src/modules-repository/event-bus/README.md +273 -273
  37. package/src/modules-repository/event-bus/event-bus-service.ts +176 -176
  38. package/src/modules-repository/event-bus/module.ts +30 -30
  39. package/src/modules-repository/notification/README.md +423 -423
  40. package/src/modules-repository/notification/module.ts +30 -30
  41. package/src/modules-repository/notification/notification-service.ts +436 -436
  42. package/src/modules-repository/router/README.it.md +61 -10
  43. package/src/modules-repository/router/README.md +61 -10
  44. package/src/modules-repository/router/router-config.ts.example +61 -0
  45. package/src/modules-repository/router/router.ts +18 -0
  46. package/src/modules-repository/state/README.md +409 -409
  47. package/src/modules-repository/state/module.ts +30 -30
  48. package/src/modules-repository/state/state-service.ts +296 -296
  49. package/src/modules-repository/theme/README.md +311 -267
  50. package/src/modules-repository/theme/module.ts +30 -30
  51. package/src/modules-repository/theme/pre-build.js +40 -40
  52. package/src/modules-repository/theme/theme-service.ts +411 -389
  53. package/src/modules-repository/theme/themes/theme-cherry-blossom.css +78 -78
  54. package/src/modules-repository/theme/themes/theme-cozy.css +111 -111
  55. package/src/modules-repository/theme/themes/theme-cyberpunk.css +150 -150
  56. package/src/modules-repository/theme/themes/theme-dark.css +79 -79
  57. package/src/modules-repository/theme/themes/theme-forest.css +171 -171
  58. package/src/modules-repository/theme/themes/theme-gold.css +100 -100
  59. package/src/modules-repository/theme/themes/theme-high-contrast.css +126 -126
  60. package/src/modules-repository/theme/themes/theme-lava.css +101 -101
  61. package/src/modules-repository/theme/themes/theme-lavender.css +90 -90
  62. package/src/modules-repository/theme/themes/theme-light.css +79 -79
  63. package/src/modules-repository/theme/themes/theme-matrix.css +103 -103
  64. package/src/modules-repository/theme/themes/theme-midnight.css +81 -81
  65. package/src/modules-repository/theme/themes/theme-nord.css +94 -94
  66. package/src/modules-repository/theme/themes/theme-ocean.css +84 -84
  67. package/src/modules-repository/theme/themes/theme-retro80s.css +343 -343
  68. package/src/modules-repository/theme/themes/theme-sunset.css +62 -62
  69. package/src/modules-repository/theme/themes-config-default.json +19 -0
  70. package/src/modules-repository/theme/themes-config.d.ts +27 -27
  71. package/src/modules-repository/theme/{themes-config.json → themes-config.json.example} +223 -213
  72. /package/src/extensions/{kimu-home → app-root}/lang/en.json +0 -0
  73. /package/src/extensions/{kimu-home → app-root}/lang/it.json +0 -0
  74. /package/src/extensions/{kimu-home → app-root}/style.css +0 -0
  75. /package/src/extensions/{kimu-home → app-root}/view.html +0 -0
@@ -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
+ }