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,90 +1,90 @@
1
- /**
2
- * Lavender Theme - Relaxing purple lavender colors
3
- * A calming theme inspired by lavender fields
4
- */
5
-
6
- :root {
7
- /* Main colors */
8
- --kimu-background: linear-gradient(135deg, #F4ECFA 0%, #E6D9F5 50%, #D8C6F0 100%);
9
- --kimu-surface: rgba(216, 198, 240, 0.2);
10
- --kimu-surface-elevated: rgba(216, 198, 240, 0.3);
11
-
12
- /* Text colors */
13
- --kimu-text-primary: #4A2C5B;
14
- --kimu-text-secondary: #6A4C7B;
15
- --kimu-text-tertiary: #8A6C9B;
16
- --kimu-text-disabled: #AA8CBB;
17
-
18
- /* Border colors */
19
- --kimu-border: #C8B2E0;
20
- --kimu-border-light: #DCC9EB;
21
- --kimu-divider: rgba(200, 178, 224, 0.3);
22
-
23
- /* Accent colors */
24
- --kimu-primary: #9B7EBD;
25
- --kimu-primary-dark: #7B5E9D;
26
- --kimu-primary-light: #B89ED4;
27
- --kimu-secondary: #B5A2D4;
28
- --kimu-accent: #D8C6F0;
29
-
30
- /* State colors */
31
- --kimu-success: #81C784;
32
- --kimu-warning: #FFB74D;
33
- --kimu-error: #E57373;
34
- --kimu-info: #64B5F6;
35
-
36
- /* Shadow */
37
- --kimu-shadow: rgba(155, 126, 189, 0.3);
38
- --kimu-shadow-strong: rgba(155, 126, 189, 0.5);
39
-
40
- /* Component colors */
41
- --kimu-input-bg: #FFFFFF;
42
- --kimu-input-border: #C8B2E0;
43
- --kimu-button-bg: #9B7EBD;
44
- --kimu-button-hover: #B89ED4;
45
- --kimu-card-bg: rgba(255, 255, 255, 0.9);
46
-
47
- /* Font */
48
- --kimu-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
49
- }
50
-
51
- /* Body background with gradient */
52
- body {
53
- background: linear-gradient(135deg, #F4ECFA 0%, #E6D9F5 50%, #D8C6F0 100%);
54
- background-attachment: fixed;
55
- color: var(--kimu-text-primary);
56
- }
57
-
58
- /* Lavender field effect */
59
- body::before {
60
- content: '';
61
- position: fixed;
62
- bottom: 0;
63
- left: 0;
64
- width: 100%;
65
- height: 30%;
66
- background: linear-gradient(to top,
67
- rgba(155, 126, 189, 0.2) 0%,
68
- rgba(155, 126, 189, 0.1) 50%,
69
- transparent 100%
70
- );
71
- pointer-events: none;
72
- z-index: 0;
73
- }
74
-
75
- /* Soft glow on hover */
76
- button:hover,
77
- a:hover {
78
- box-shadow: 0 0 20px rgba(155, 126, 189, 0.5);
79
- transition: all 0.3s ease;
80
- }
81
-
82
- /* Relaxing pulse animation */
83
- @keyframes lavender-pulse {
84
- 0%, 100% {
85
- box-shadow: 0 0 10px rgba(155, 126, 189, 0.3);
86
- }
87
- 50% {
88
- box-shadow: 0 0 20px rgba(155, 126, 189, 0.5);
89
- }
90
- }
1
+ /**
2
+ * Lavender Theme - Relaxing purple lavender colors
3
+ * A calming theme inspired by lavender fields
4
+ */
5
+
6
+ :root {
7
+ /* Main colors */
8
+ --kimu-background: linear-gradient(135deg, #F4ECFA 0%, #E6D9F5 50%, #D8C6F0 100%);
9
+ --kimu-surface: rgba(216, 198, 240, 0.2);
10
+ --kimu-surface-elevated: rgba(216, 198, 240, 0.3);
11
+
12
+ /* Text colors */
13
+ --kimu-text-primary: #4A2C5B;
14
+ --kimu-text-secondary: #6A4C7B;
15
+ --kimu-text-tertiary: #8A6C9B;
16
+ --kimu-text-disabled: #AA8CBB;
17
+
18
+ /* Border colors */
19
+ --kimu-border: #C8B2E0;
20
+ --kimu-border-light: #DCC9EB;
21
+ --kimu-divider: rgba(200, 178, 224, 0.3);
22
+
23
+ /* Accent colors */
24
+ --kimu-primary: #9B7EBD;
25
+ --kimu-primary-dark: #7B5E9D;
26
+ --kimu-primary-light: #B89ED4;
27
+ --kimu-secondary: #B5A2D4;
28
+ --kimu-accent: #D8C6F0;
29
+
30
+ /* State colors */
31
+ --kimu-success: #81C784;
32
+ --kimu-warning: #FFB74D;
33
+ --kimu-error: #E57373;
34
+ --kimu-info: #64B5F6;
35
+
36
+ /* Shadow */
37
+ --kimu-shadow: rgba(155, 126, 189, 0.3);
38
+ --kimu-shadow-strong: rgba(155, 126, 189, 0.5);
39
+
40
+ /* Component colors */
41
+ --kimu-input-bg: #FFFFFF;
42
+ --kimu-input-border: #C8B2E0;
43
+ --kimu-button-bg: #9B7EBD;
44
+ --kimu-button-hover: #B89ED4;
45
+ --kimu-card-bg: rgba(255, 255, 255, 0.9);
46
+
47
+ /* Font */
48
+ --kimu-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
49
+ }
50
+
51
+ /* Body background with gradient */
52
+ body {
53
+ background: linear-gradient(135deg, #F4ECFA 0%, #E6D9F5 50%, #D8C6F0 100%);
54
+ background-attachment: fixed;
55
+ color: var(--kimu-text-primary);
56
+ }
57
+
58
+ /* Lavender field effect */
59
+ body::before {
60
+ content: '';
61
+ position: fixed;
62
+ bottom: 0;
63
+ left: 0;
64
+ width: 100%;
65
+ height: 30%;
66
+ background: linear-gradient(to top,
67
+ rgba(155, 126, 189, 0.2) 0%,
68
+ rgba(155, 126, 189, 0.1) 50%,
69
+ transparent 100%
70
+ );
71
+ pointer-events: none;
72
+ z-index: 0;
73
+ }
74
+
75
+ /* Soft glow on hover */
76
+ button:hover,
77
+ a:hover {
78
+ box-shadow: 0 0 20px rgba(155, 126, 189, 0.5);
79
+ transition: all 0.3s ease;
80
+ }
81
+
82
+ /* Relaxing pulse animation */
83
+ @keyframes lavender-pulse {
84
+ 0%, 100% {
85
+ box-shadow: 0 0 10px rgba(155, 126, 189, 0.3);
86
+ }
87
+ 50% {
88
+ box-shadow: 0 0 20px rgba(155, 126, 189, 0.5);
89
+ }
90
+ }
@@ -1,79 +1,79 @@
1
- /**
2
- * KIMU Light Theme
3
- * Clean and bright theme for daytime use
4
- *
5
- * This file OVERRIDES the default CSS variables defined in style.css
6
- * When this theme is loaded, these values take precedence.
7
- */
8
-
9
- :root {
10
- /* Primary colors */
11
- --kimu-primary: #667eea;
12
- --kimu-primary-light: #818cf8;
13
- --kimu-primary-dark: #5a67d8;
14
- --kimu-text-on-primary: #ffffff;
15
-
16
- /* Accent colors */
17
- --kimu-accent: #764ba2;
18
- --kimu-accent-light: #9f7aea;
19
- --kimu-accent-dark: #6b46c1;
20
- --kimu-text-on-accent: #ffffff;
21
-
22
- /* Background colors */
23
- --kimu-background: #ffffff;
24
- --kimu-background-alt: #f7fafc;
25
- --kimu-surface: #ffffff;
26
-
27
- /* Text colors */
28
- --kimu-text-primary: #1a202c;
29
- --kimu-text-secondary: #4a5568;
30
- --kimu-text-disabled: #a0aec0;
31
-
32
- /* Semantic colors */
33
- --kimu-success: #22c55e;
34
- --kimu-success-light: #4ade80;
35
- --kimu-success-dark: #16a34a;
36
-
37
- --kimu-warning: #f59e0b;
38
- --kimu-warning-light: #fbbf24;
39
- --kimu-warning-dark: #d97706;
40
-
41
- --kimu-error: #ef4444;
42
- --kimu-error-light: #f87171;
43
- --kimu-error-dark: #dc2626;
44
-
45
- --kimu-info: #3b82f6;
46
- --kimu-info-light: #60a5fa;
47
- --kimu-info-dark: #2563eb;
48
-
49
- /* Borders and dividers */
50
- --kimu-border: #e2e8f0;
51
- --kimu-divider: #cbd5e0;
52
-
53
- /* Shadows */
54
- --kimu-shadow: rgba(0, 0, 0, 0.1);
55
- --kimu-shadow-light: rgba(0, 0, 0, 0.05);
56
- --kimu-shadow-medium: rgba(0, 0, 0, 0.15);
57
- --kimu-shadow-heavy: rgba(0, 0, 0, 0.25);
58
-
59
- /* Additional UI colors */
60
- --kimu-card-bg: #ffffff;
61
- --kimu-card-border: #e2e8f0;
62
- --kimu-input-bg: #ffffff;
63
- --kimu-input-border: #cbd5e0;
64
- --kimu-input-focus: #667eea;
65
-
66
- /* Navigation */
67
- --kimu-nav-bg: #ffffff;
68
- --kimu-nav-text: #4a5568;
69
- --kimu-nav-active: #667eea;
70
-
71
- /* Footer */
72
- --kimu-footer-bg: #f7fafc;
73
- --kimu-footer-text: #718096;
74
- }
75
-
76
- /* Smooth transitions for theme changes */
77
- * {
78
- transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
79
- }
1
+ /**
2
+ * KIMU Light Theme
3
+ * Clean and bright theme for daytime use
4
+ *
5
+ * This file OVERRIDES the default CSS variables defined in style.css
6
+ * When this theme is loaded, these values take precedence.
7
+ */
8
+
9
+ :root {
10
+ /* Primary colors */
11
+ --kimu-primary: #667eea;
12
+ --kimu-primary-light: #818cf8;
13
+ --kimu-primary-dark: #5a67d8;
14
+ --kimu-text-on-primary: #ffffff;
15
+
16
+ /* Accent colors */
17
+ --kimu-accent: #764ba2;
18
+ --kimu-accent-light: #9f7aea;
19
+ --kimu-accent-dark: #6b46c1;
20
+ --kimu-text-on-accent: #ffffff;
21
+
22
+ /* Background colors */
23
+ --kimu-background: #ffffff;
24
+ --kimu-background-alt: #f7fafc;
25
+ --kimu-surface: #ffffff;
26
+
27
+ /* Text colors */
28
+ --kimu-text-primary: #1a202c;
29
+ --kimu-text-secondary: #4a5568;
30
+ --kimu-text-disabled: #a0aec0;
31
+
32
+ /* Semantic colors */
33
+ --kimu-success: #22c55e;
34
+ --kimu-success-light: #4ade80;
35
+ --kimu-success-dark: #16a34a;
36
+
37
+ --kimu-warning: #f59e0b;
38
+ --kimu-warning-light: #fbbf24;
39
+ --kimu-warning-dark: #d97706;
40
+
41
+ --kimu-error: #ef4444;
42
+ --kimu-error-light: #f87171;
43
+ --kimu-error-dark: #dc2626;
44
+
45
+ --kimu-info: #3b82f6;
46
+ --kimu-info-light: #60a5fa;
47
+ --kimu-info-dark: #2563eb;
48
+
49
+ /* Borders and dividers */
50
+ --kimu-border: #e2e8f0;
51
+ --kimu-divider: #cbd5e0;
52
+
53
+ /* Shadows */
54
+ --kimu-shadow: rgba(0, 0, 0, 0.1);
55
+ --kimu-shadow-light: rgba(0, 0, 0, 0.05);
56
+ --kimu-shadow-medium: rgba(0, 0, 0, 0.15);
57
+ --kimu-shadow-heavy: rgba(0, 0, 0, 0.25);
58
+
59
+ /* Additional UI colors */
60
+ --kimu-card-bg: #ffffff;
61
+ --kimu-card-border: #e2e8f0;
62
+ --kimu-input-bg: #ffffff;
63
+ --kimu-input-border: #cbd5e0;
64
+ --kimu-input-focus: #667eea;
65
+
66
+ /* Navigation */
67
+ --kimu-nav-bg: #ffffff;
68
+ --kimu-nav-text: #4a5568;
69
+ --kimu-nav-active: #667eea;
70
+
71
+ /* Footer */
72
+ --kimu-footer-bg: #f7fafc;
73
+ --kimu-footer-text: #718096;
74
+ }
75
+
76
+ /* Smooth transitions for theme changes */
77
+ * {
78
+ transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
79
+ }
@@ -1,103 +1,103 @@
1
- /**
2
- * Matrix Theme - Green phosphorescent on black
3
- * A hacker-style theme inspired by The Matrix
4
- */
5
-
6
- :root {
7
- /* Main colors */
8
- --kimu-background: linear-gradient(135deg, #000000 0%, #0A0A0A 50%, #001100 100%);
9
- --kimu-surface: rgba(0, 255, 65, 0.05);
10
- --kimu-surface-elevated: rgba(0, 255, 65, 0.1);
11
-
12
- /* Text colors */
13
- --kimu-text-primary: #00FF41;
14
- --kimu-text-secondary: #00D936;
15
- --kimu-text-tertiary: #00B32C;
16
- --kimu-text-disabled: #008C23;
17
-
18
- /* Border colors */
19
- --kimu-border: #00FF41;
20
- --kimu-border-light: #33FF66;
21
- --kimu-divider: rgba(0, 255, 65, 0.2);
22
-
23
- /* Accent colors */
24
- --kimu-primary: #00FF41;
25
- --kimu-primary-dark: #00D936;
26
- --kimu-primary-light: #33FF66;
27
- --kimu-secondary: #00E63B;
28
- --kimu-accent: #66FF8C;
29
-
30
- /* State colors */
31
- --kimu-success: #00FF41;
32
- --kimu-warning: #FFFF00;
33
- --kimu-error: #FF0000;
34
- --kimu-info: #00FFFF;
35
-
36
- /* Shadow */
37
- --kimu-shadow: rgba(0, 255, 65, 0.3);
38
- --kimu-shadow-strong: rgba(0, 255, 65, 0.6);
39
-
40
- /* Component colors */
41
- --kimu-input-bg: rgba(0, 17, 0, 0.8);
42
- --kimu-input-border: #00FF41;
43
- --kimu-button-bg: #00FF41;
44
- --kimu-button-hover: #33FF66;
45
- --kimu-card-bg: rgba(0, 17, 0, 0.9);
46
-
47
- /* Font */
48
- --kimu-font: 'Courier New', 'Consolas', monospace;
49
- }
50
-
51
- /* Body background with gradient */
52
- body {
53
- background: linear-gradient(135deg, #000000 0%, #0A0A0A 50%, #001100 100%);
54
- background-attachment: fixed;
55
- color: var(--kimu-text-primary);
56
- font-family: var(--kimu-font);
57
- }
58
-
59
- /* Matrix rain effect */
60
- @keyframes matrix-rain {
61
- 0% {
62
- transform: translateY(-100%);
63
- opacity: 1;
64
- }
65
- 100% {
66
- transform: translateY(100vh);
67
- opacity: 0;
68
- }
69
- }
70
-
71
- /* Digital glow effect */
72
- button:hover,
73
- a:hover {
74
- box-shadow: 0 0 20px rgba(0, 255, 65, 0.8),
75
- 0 0 40px rgba(0, 255, 65, 0.4),
76
- inset 0 0 10px rgba(0, 255, 65, 0.2);
77
- text-shadow: 0 0 10px rgba(0, 255, 65, 0.8);
78
- }
79
-
80
- /* Text glow */
81
- body {
82
- text-shadow: 0 0 5px rgba(0, 255, 65, 0.5);
83
- }
84
-
85
- /* Scanline effect */
86
- body::before {
87
- content: '';
88
- position: fixed;
89
- top: 0;
90
- left: 0;
91
- width: 100%;
92
- height: 100%;
93
- background: repeating-linear-gradient(
94
- 0deg,
95
- rgba(0, 0, 0, 0.15) 0px,
96
- transparent 1px,
97
- transparent 2px,
98
- rgba(0, 0, 0, 0.15) 3px
99
- );
100
- pointer-events: none;
101
- z-index: 9999;
102
- opacity: 0.3;
103
- }
1
+ /**
2
+ * Matrix Theme - Green phosphorescent on black
3
+ * A hacker-style theme inspired by The Matrix
4
+ */
5
+
6
+ :root {
7
+ /* Main colors */
8
+ --kimu-background: linear-gradient(135deg, #000000 0%, #0A0A0A 50%, #001100 100%);
9
+ --kimu-surface: rgba(0, 255, 65, 0.05);
10
+ --kimu-surface-elevated: rgba(0, 255, 65, 0.1);
11
+
12
+ /* Text colors */
13
+ --kimu-text-primary: #00FF41;
14
+ --kimu-text-secondary: #00D936;
15
+ --kimu-text-tertiary: #00B32C;
16
+ --kimu-text-disabled: #008C23;
17
+
18
+ /* Border colors */
19
+ --kimu-border: #00FF41;
20
+ --kimu-border-light: #33FF66;
21
+ --kimu-divider: rgba(0, 255, 65, 0.2);
22
+
23
+ /* Accent colors */
24
+ --kimu-primary: #00FF41;
25
+ --kimu-primary-dark: #00D936;
26
+ --kimu-primary-light: #33FF66;
27
+ --kimu-secondary: #00E63B;
28
+ --kimu-accent: #66FF8C;
29
+
30
+ /* State colors */
31
+ --kimu-success: #00FF41;
32
+ --kimu-warning: #FFFF00;
33
+ --kimu-error: #FF0000;
34
+ --kimu-info: #00FFFF;
35
+
36
+ /* Shadow */
37
+ --kimu-shadow: rgba(0, 255, 65, 0.3);
38
+ --kimu-shadow-strong: rgba(0, 255, 65, 0.6);
39
+
40
+ /* Component colors */
41
+ --kimu-input-bg: rgba(0, 17, 0, 0.8);
42
+ --kimu-input-border: #00FF41;
43
+ --kimu-button-bg: #00FF41;
44
+ --kimu-button-hover: #33FF66;
45
+ --kimu-card-bg: rgba(0, 17, 0, 0.9);
46
+
47
+ /* Font */
48
+ --kimu-font: 'Courier New', 'Consolas', monospace;
49
+ }
50
+
51
+ /* Body background with gradient */
52
+ body {
53
+ background: linear-gradient(135deg, #000000 0%, #0A0A0A 50%, #001100 100%);
54
+ background-attachment: fixed;
55
+ color: var(--kimu-text-primary);
56
+ font-family: var(--kimu-font);
57
+ }
58
+
59
+ /* Matrix rain effect */
60
+ @keyframes matrix-rain {
61
+ 0% {
62
+ transform: translateY(-100%);
63
+ opacity: 1;
64
+ }
65
+ 100% {
66
+ transform: translateY(100vh);
67
+ opacity: 0;
68
+ }
69
+ }
70
+
71
+ /* Digital glow effect */
72
+ button:hover,
73
+ a:hover {
74
+ box-shadow: 0 0 20px rgba(0, 255, 65, 0.8),
75
+ 0 0 40px rgba(0, 255, 65, 0.4),
76
+ inset 0 0 10px rgba(0, 255, 65, 0.2);
77
+ text-shadow: 0 0 10px rgba(0, 255, 65, 0.8);
78
+ }
79
+
80
+ /* Text glow */
81
+ body {
82
+ text-shadow: 0 0 5px rgba(0, 255, 65, 0.5);
83
+ }
84
+
85
+ /* Scanline effect */
86
+ body::before {
87
+ content: '';
88
+ position: fixed;
89
+ top: 0;
90
+ left: 0;
91
+ width: 100%;
92
+ height: 100%;
93
+ background: repeating-linear-gradient(
94
+ 0deg,
95
+ rgba(0, 0, 0, 0.15) 0px,
96
+ transparent 1px,
97
+ transparent 2px,
98
+ rgba(0, 0, 0, 0.15) 3px
99
+ );
100
+ pointer-events: none;
101
+ z-index: 9999;
102
+ opacity: 0.3;
103
+ }