@semanticus/semanticus-css 0.7.0 → 0.9.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 (138) hide show
  1. package/README.md +8 -10
  2. package/dist/semanticus-semantics.css +11 -1
  3. package/dist/semanticus.css +13 -1
  4. package/dist/semanticus.palette.amber.css +1 -1
  5. package/dist/semanticus.palette.blue.css +1 -1
  6. package/dist/semanticus.palette.cyan.css +1 -1
  7. package/dist/semanticus.palette.fuchsia.css +1 -1
  8. package/dist/semanticus.palette.green.css +1 -1
  9. package/dist/semanticus.palette.grey.css +1 -1
  10. package/dist/semanticus.palette.indigo.css +1 -1
  11. package/dist/semanticus.palette.jade.css +1 -1
  12. package/dist/semanticus.palette.lime.css +1 -1
  13. package/dist/semanticus.palette.orange.css +1 -1
  14. package/dist/semanticus.palette.pink.css +1 -1
  15. package/dist/semanticus.palette.pumpkin.css +1 -1
  16. package/dist/semanticus.palette.purple.css +1 -1
  17. package/dist/semanticus.palette.red.css +1 -1
  18. package/dist/semanticus.palette.sand.css +1 -1
  19. package/dist/semanticus.palette.slate.css +1 -1
  20. package/dist/semanticus.palette.violet.css +1 -1
  21. package/dist/semanticus.palette.yellow.css +1 -1
  22. package/dist/semanticus.palette.zinc.css +1 -1
  23. package/dist/semanticus.size.pico.css +1 -0
  24. package/package.json +13 -14
  25. package/src/index.css +11 -4
  26. package/src/palettes/amber.css +3 -3
  27. package/src/palettes/blue.css +3 -3
  28. package/src/palettes/cyan.css +3 -3
  29. package/src/palettes/fuchsia.css +3 -3
  30. package/src/palettes/green.css +3 -3
  31. package/src/palettes/grey.css +3 -3
  32. package/src/palettes/indigo.css +3 -3
  33. package/src/palettes/jade.css +3 -3
  34. package/src/palettes/lime.css +3 -3
  35. package/src/palettes/orange.css +3 -3
  36. package/src/palettes/pink.css +3 -3
  37. package/src/palettes/pumpkin.css +3 -3
  38. package/src/palettes/purple.css +3 -3
  39. package/src/palettes/red.css +3 -3
  40. package/src/palettes/sand.css +3 -3
  41. package/src/palettes/slate.css +3 -3
  42. package/src/palettes/violet.css +3 -3
  43. package/src/palettes/yellow.css +3 -3
  44. package/src/palettes/zinc.css +3 -3
  45. package/src/semantics/_misc.css +3 -0
  46. package/src/semantics/attributes/_popover.css +13 -0
  47. package/src/semantics/attributes/_role-group-search.css +140 -0
  48. package/src/semantics/elements/_abbr.css +5 -0
  49. package/src/semantics/elements/_address.css +7 -0
  50. package/src/semantics/elements/_article.css +6 -0
  51. package/src/semantics/{_aside.css → elements/_aside.css} +3 -3
  52. package/src/semantics/elements/_blockquote.css +18 -0
  53. package/src/semantics/{_button.css → elements/_button.css} +2 -2
  54. package/src/semantics/{_code.css → elements/_code.css} +10 -7
  55. package/src/semantics/elements/_del.css +3 -0
  56. package/src/semantics/{_details.css → elements/_details.css} +10 -10
  57. package/src/semantics/elements/_dialog.css +117 -0
  58. package/src/semantics/elements/_footer.css +13 -0
  59. package/src/semantics/elements/_header.css +13 -0
  60. package/src/semantics/elements/_headings.css +34 -0
  61. package/src/semantics/elements/_hgroup.css +14 -0
  62. package/src/semantics/{_hr.css → elements/_hr.css} +1 -1
  63. package/src/semantics/{_input.css → elements/_input.css} +3 -4
  64. package/src/semantics/elements/_ins.css +4 -0
  65. package/src/semantics/{_links.css → elements/_links.css} +11 -4
  66. package/src/semantics/elements/_lists.css +22 -0
  67. package/src/semantics/elements/_main.css +7 -0
  68. package/src/semantics/elements/_mark.css +6 -0
  69. package/src/semantics/{_nav.css → elements/_nav.css} +4 -4
  70. package/src/semantics/elements/_p.css +11 -0
  71. package/src/semantics/{_progress.css → elements/_progress.css} +1 -1
  72. package/src/semantics/elements/_section.css +7 -0
  73. package/src/semantics/elements/_strong.css +4 -0
  74. package/src/semantics/elements/_sub.css +7 -0
  75. package/src/semantics/elements/_sup.css +7 -0
  76. package/src/semantics/{_table.css → elements/_table.css} +7 -2
  77. package/src/semantics/index.css +9 -4
  78. package/src/semantics/modules.css +47 -32
  79. package/src/sizes/pico.css +100 -0
  80. package/src/utilities/_variables.css +19 -214
  81. package/src/utilities/borders/_border-radius.css +24 -0
  82. package/src/utilities/borders/_border-width.css +8 -0
  83. package/src/utilities/colors/_background-colors.css +51 -44
  84. package/src/utilities/colors/_border-colors.css +14 -14
  85. package/src/utilities/colors/_text-colors.css +80 -80
  86. package/src/utilities/effects/_shadows.css +10 -10
  87. package/src/utilities/layout/_flexbox.css +16 -1
  88. package/src/utilities/layout/_misc.css +2 -2
  89. package/src/utilities/modules.css +6 -0
  90. package/src/utilities/spacing/_gap.css +63 -0
  91. package/src/utilities/spacing/_margin.css +145 -0
  92. package/src/utilities/spacing/_padding.css +145 -0
  93. package/src/utilities/typography/_font-sizes.css +0 -15
  94. package/src/variables/_all.css +15 -739
  95. package/src/variables/_breakpoints.css +10 -0
  96. package/src/variables/_colors.css +355 -0
  97. package/src/variables/_components.css +330 -0
  98. package/src/variables/_elements.css +194 -0
  99. package/src/variables/_icons.css +55 -0
  100. package/src/variables/_layout.css +123 -0
  101. package/src/variants/_contrast.css +28 -14
  102. package/src/variants/_ghost.css +36 -29
  103. package/src/variants/_pane-panel-card.css +54 -0
  104. package/src/variants/_secondary.css +25 -12
  105. package/src/variants/_sidebar.css +49 -9
  106. package/src/variants/modules.css +4 -6
  107. package/dist/semanticus-utilities.css +0 -7
  108. package/dist/semanticus-variants.css +0 -1
  109. package/dist/semanticus.size.slim.css +0 -1
  110. package/src/semantics/_article.css +0 -12
  111. package/src/semantics/_dialog.css +0 -157
  112. package/src/semantics/_footer.css +0 -12
  113. package/src/semantics/_header.css +0 -12
  114. package/src/semantics/_main.css +0 -10
  115. package/src/semantics/_role-group-search.css +0 -129
  116. package/src/semantics/_section.css +0 -9
  117. package/src/semantics/_typography.css +0 -146
  118. package/src/sizes/slim.css +0 -41
  119. package/src/utilities/index.css +0 -14
  120. package/src/variables/_shared.css +0 -121
  121. package/src/variants/_card.css +0 -45
  122. package/src/variants/_flow.css +0 -15
  123. package/src/variants/_panel.css +0 -18
  124. package/src/variants/index.css +0 -9
  125. /package/src/semantics/{_aria-busy.css → attributes/_aria-busy.css} +0 -0
  126. /package/src/semantics/{_hidden.css → attributes/_hidden.css} +0 -0
  127. /package/src/semantics/{_role-toolbar.css → attributes/_role-toolbar.css} +0 -0
  128. /package/src/semantics/{_role-tooltip.css → attributes/_role-tooltip.css} +0 -0
  129. /package/src/semantics/{_body.css → elements/_body.css} +0 -0
  130. /package/src/semantics/{_document.css → elements/_document.css} +0 -0
  131. /package/src/semantics/{_embedded.css → elements/_embedded.css} +0 -0
  132. /package/src/semantics/{_figure.css → elements/_figure.css} +0 -0
  133. /package/src/semantics/{_type-checkbox-radio.css → elements/_type-checkbox-radio.css} +0 -0
  134. /package/src/semantics/{_type-color.css → elements/_type-color.css} +0 -0
  135. /package/src/semantics/{_type-date.css → elements/_type-date.css} +0 -0
  136. /package/src/semantics/{_type-file.css → elements/_type-file.css} +0 -0
  137. /package/src/semantics/{_type-range.css → elements/_type-range.css} +0 -0
  138. /package/src/semantics/{_type-search.css → elements/_type-search.css} +0 -0
@@ -0,0 +1,10 @@
1
+ /* ==========================================================================
2
+ Responsive Breakpoints (custom media queries)
3
+ Used consistently across semantics, variants, and utilities.
4
+ ========================================================================== */
5
+
6
+ @custom-media --breakpoint-sm (min-width: 576px);
7
+ @custom-media --breakpoint-md (min-width: 768px);
8
+ @custom-media --breakpoint-lg (min-width: 1024px);
9
+ @custom-media --breakpoint-xl (min-width: 1280px);
10
+ @custom-media --breakpoint-xxl (min-width: 1536px);
@@ -0,0 +1,355 @@
1
+ /* ==========================================================================
2
+ Color Variables
3
+ ==========================================================================
4
+
5
+ Semantic color system with RGB values for opacity manipulation,
6
+ theme-aware variables for light/dark modes, and component color roles.
7
+
8
+ Naming convention:
9
+ --color-{role} Text color for links, buttons, inline elements
10
+ --color-{role}-bg Background fill
11
+ --color-{role}-border Border color
12
+ --color-{role}-underline Semi-transparent underline for links
13
+ --color-{role}-hover Text color on hover
14
+ --color-{role}-hover-bg Background on hover
15
+ --color-{role}-focus Focus ring / outline color
16
+ --color-{role}-inverse Text on top of filled backgrounds
17
+
18
+ Roles: primary (brand CTA), secondary (neutral actions), contrast (high-emphasis)
19
+ ========================================================================== */
20
+
21
+ /* ==========================================================================
22
+ Light Theme (Default)
23
+ ========================================================================== */
24
+
25
+ [data-theme="light"],
26
+ :root:not([data-theme="dark"]),
27
+ :host(:not([data-theme="dark"])) {
28
+ color-scheme: light;
29
+
30
+ /* RGB channels */
31
+ --color-primary-rgb: 1, 114, 173;
32
+ --color-secondary-rgb: 93, 107, 137;
33
+ --color-contrast-rgb: 24, 28, 37;
34
+ --color-success-rgb: 43, 122, 76;
35
+ --color-info-rgb: 4, 120, 120;
36
+ --color-warning-rgb: 255, 191, 0;
37
+ --color-danger-rgb: 197, 47, 33;
38
+
39
+ /* Body & emphasis RGB */
40
+ --color-body-rgb: 55, 60, 68;
41
+ --color-text-rgb: 55, 60, 68;
42
+ --color-body-bg-rgb: 255, 255, 255;
43
+ --color-emphasis-rgb: 24, 28, 37;
44
+
45
+ /* Secondary surfaces */
46
+ --color-secondary-bg-rgb: 233, 236, 239;
47
+
48
+ /* Link RGB */
49
+ --color-link-rgb: 1, 114, 173;
50
+
51
+ /* Emphasis colors (RGB format for use with rgba()) */
52
+ --color-primary-emphasis-rgb: 1, 88, 135;
53
+ --color-secondary-emphasis-rgb: 72, 83, 107;
54
+ --color-success-emphasis-rgb: 32, 96, 59;
55
+ --color-info-emphasis-rgb: 2, 93, 93;
56
+ --color-warning-emphasis-rgb: 105, 77, 0;
57
+ --color-danger-emphasis-rgb: 155, 35, 24;
58
+ --color-contrast-emphasis-rgb: 248, 249, 250;
59
+
60
+ /* Subtle backgrounds (low opacity) */
61
+ --color-primary-bg-subtle: rgba(var(--color-primary-rgb), 0.1);
62
+ --color-secondary-bg-subtle: rgba(var(--color-secondary-rgb), 0.1);
63
+ --color-success-bg-subtle: rgba(var(--color-success-rgb), 0.1);
64
+ --color-info-bg-subtle: rgba(var(--color-info-rgb), 0.1);
65
+ --color-warning-bg-subtle: rgba(var(--color-warning-rgb), 0.1);
66
+ --color-danger-bg-subtle: rgba(var(--color-danger-rgb), 0.1);
67
+ --color-contrast-bg-subtle: rgba(var(--color-contrast-rgb), 0.85);
68
+
69
+ /* Subtle borders (medium opacity) */
70
+ --color-primary-border-subtle: rgba(var(--color-primary-rgb), 0.35);
71
+ --color-secondary-border-subtle: rgba(var(--color-secondary-rgb), 0.35);
72
+ --color-success-border-subtle: rgba(var(--color-success-rgb), 0.35);
73
+ --color-info-border-subtle: rgba(var(--color-info-rgb), 0.35);
74
+ --color-warning-border-subtle: rgba(var(--color-warning-rgb), 0.35);
75
+ --color-danger-border-subtle: rgba(var(--color-danger-rgb), 0.35);
76
+ --color-contrast-border-subtle: rgb(var(--color-contrast-rgb));
77
+
78
+ /* Status inverse colors */
79
+ --color-success-inverse: #fff;
80
+ --color-info-inverse: #fff;
81
+ --color-warning-inverse: #000;
82
+ --color-danger-inverse: #fff;
83
+
84
+ /* Core Colors */
85
+ --color-body-bg: rgb(var(--color-body-bg-rgb));
86
+ --color-background: var(--color-body-bg);
87
+ --color-text: rgb(var(--color-text-rgb));
88
+ --color-text-selection: rgba(2, 154, 232, 0.25);
89
+ --color-text-muted: color-mix(in srgb, rgb(var(--color-text-rgb)), rgb(128, 128, 128) 70%);
90
+ --color-border-muted: rgb(231, 234, 239.5);
91
+
92
+ /* Primary */
93
+ --color-primary-bg: #0172ad;
94
+ --color-primary-border: var(--color-primary-bg);
95
+ --color-primary-underline: rgba(var(--color-primary-rgb), 0.5);
96
+ --color-primary-hover: #015887;
97
+ --color-primary-hover-bg: #02659a;
98
+ --color-primary-hover-border: var(--color-primary-hover-bg);
99
+ --color-primary-hover-underline: var(--color-primary-hover);
100
+ --color-primary-focus: rgba(2, 154, 232, 0.5);
101
+ --color-primary-inverse: #fff;
102
+
103
+ /* Secondary */
104
+ --color-secondary-bg: #525f7a;
105
+ --color-secondary-border: var(--color-secondary-bg);
106
+ --color-secondary-underline: rgba(var(--color-secondary-rgb), 0.5);
107
+ --color-secondary-hover: #48536b;
108
+ --color-secondary-hover-bg: #48536b;
109
+ --color-secondary-hover-border: var(--color-secondary-hover-bg);
110
+ --color-secondary-hover-underline: var(--color-secondary-hover);
111
+ --color-secondary-focus: rgba(var(--color-secondary-rgb), 0.25);
112
+ --color-secondary-inverse: #fff;
113
+
114
+ /* Contrast */
115
+ --color-contrast-bg: #181c25;
116
+ --color-contrast-border: var(--color-contrast-bg);
117
+ --color-contrast-underline: rgba(var(--color-contrast-rgb), 0.5);
118
+ --color-contrast-hover: #000;
119
+ --color-contrast-hover-bg: #000;
120
+ --color-contrast-hover-border: var(--color-contrast-hover-bg);
121
+ --color-contrast-hover-underline: var(--color-contrast-hover);
122
+ --color-contrast-focus: rgba(93, 107, 137, 0.25);
123
+ --color-contrast-inverse: #fff;
124
+
125
+ /* Shadows */
126
+ --shadow-sm: 0 0.0625rem 0.125rem rgba(129, 145, 181, 0.1);
127
+ --shadow-md: 0.0625rem 0.125rem 0.5rem rgba(129, 145, 181, 0.15);
128
+ --shadow-lg: 0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024), 0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03), 0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036), 0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302), 0.5rem 1rem 6rem rgba(129, 145, 181, 0.06), 0 0 0 0.0625rem rgba(129, 145, 181, 0.015);
129
+
130
+ /* Headings - base color for progressive lightness via color-mix */
131
+ --color-heading-base: #2d3138;
132
+
133
+ /* Mark & Text */
134
+ --color-mark-bg: rgb(252.5, 230.5, 191.5);
135
+ --color-mark-text: #0f1114;
136
+ }
137
+
138
+ /* ==========================================================================
139
+ Dark Theme (System Preference)
140
+ ========================================================================== */
141
+
142
+ @media only screen and (prefers-color-scheme: dark) {
143
+ :root:not([data-theme]),
144
+ :host(:not([data-theme])) {
145
+ color-scheme: dark;
146
+
147
+ /* RGB channels */
148
+ --color-primary-rgb: 1, 170, 255;
149
+ --color-secondary-rgb: 150, 158, 175;
150
+ --color-contrast-rgb: 248, 249, 250;
151
+ --color-success-rgb: 110, 213, 157;
152
+ --color-info-rgb: 10, 194, 194;
153
+ --color-warning-rgb: 255, 191, 0;
154
+ --color-danger-rgb: 243, 143, 121;
155
+
156
+ /* Body & emphasis RGB */
157
+ --color-body-rgb: 194, 199, 208;
158
+ --color-text-rgb: 194, 199, 208;
159
+ --color-body-bg-rgb: 19, 23, 31;
160
+ --color-emphasis-rgb: 223, 227, 235;
161
+
162
+ /* Secondary surfaces */
163
+ --color-secondary-bg-rgb: 42, 49, 64;
164
+
165
+ /* Link RGB */
166
+ --color-link-rgb: 1, 170, 255;
167
+
168
+ /* Emphasis colors */
169
+ --color-primary-emphasis-rgb: 121, 192, 255;
170
+ --color-secondary-emphasis-rgb: 179, 185, 197;
171
+ --color-success-emphasis-rgb: 147, 222, 181;
172
+ --color-info-emphasis-rgb: 37, 221, 221;
173
+ --color-warning-emphasis-rgb: 232, 174, 1;
174
+ --color-danger-emphasis-rgb: 245, 183, 168;
175
+ --color-contrast-emphasis-rgb: 24, 28, 37;
176
+
177
+ /* Subtle backgrounds */
178
+ --color-primary-bg-subtle: rgba(var(--color-primary-rgb), 0.15);
179
+ --color-secondary-bg-subtle: rgba(var(--color-secondary-rgb), 0.15);
180
+ --color-success-bg-subtle: rgba(var(--color-success-rgb), 0.15);
181
+ --color-info-bg-subtle: rgba(var(--color-info-rgb), 0.15);
182
+ --color-warning-bg-subtle: rgba(var(--color-warning-rgb), 0.15);
183
+ --color-danger-bg-subtle: rgba(var(--color-danger-rgb), 0.15);
184
+ --color-contrast-bg-subtle: color-mix(in srgb, rgb(var(--color-contrast-rgb)), black 7%);
185
+
186
+ /* Subtle borders */
187
+ --color-primary-border-subtle: rgba(var(--color-primary-rgb), 0.35);
188
+ --color-secondary-border-subtle: rgba(var(--color-secondary-rgb), 0.35);
189
+ --color-success-border-subtle: rgba(var(--color-success-rgb), 0.35);
190
+ --color-info-border-subtle: rgba(var(--color-info-rgb), 0.35);
191
+ --color-warning-border-subtle: rgba(var(--color-warning-rgb), 0.35);
192
+ --color-danger-border-subtle: rgba(var(--color-danger-rgb), 0.35);
193
+ --color-contrast-border-subtle: rgb(var(--color-contrast-rgb));
194
+
195
+ /* Core Colors */
196
+ --color-background: rgb(19, 22.5, 30.5);
197
+ --color-text: rgb(var(--color-text-rgb));
198
+ --color-text-selection: rgba(var(--color-primary-rgb), 0.1875);
199
+ --color-text-muted: color-mix(in srgb, rgb(var(--color-text-rgb)), rgb(128, 128, 128) 70%);
200
+ --color-border-muted: #202632;
201
+
202
+ /* Primary */
203
+ --color-primary-bg: #0172ad;
204
+ --color-primary-border: var(--color-primary-bg);
205
+ --color-primary-underline: rgba(var(--color-primary-rgb), 0.5);
206
+ --color-primary-hover: #79c0ff;
207
+ --color-primary-hover-bg: #017fc0;
208
+ --color-primary-hover-border: var(--color-primary-hover-bg);
209
+ --color-primary-hover-underline: var(--color-primary-hover);
210
+ --color-primary-focus: rgba(var(--color-primary-rgb), 0.375);
211
+ --color-primary-inverse: #fff;
212
+
213
+ /* Secondary */
214
+ --color-secondary-bg: #525f7a;
215
+ --color-secondary-border: var(--color-secondary-bg);
216
+ --color-secondary-underline: rgba(var(--color-secondary-rgb), 0.5);
217
+ --color-secondary-hover: #b3b9c5;
218
+ --color-secondary-hover-bg: #5d6b89;
219
+ --color-secondary-hover-border: var(--color-secondary-hover-bg);
220
+ --color-secondary-hover-underline: var(--color-secondary-hover);
221
+ --color-secondary-focus: rgba(144, 158, 190, 0.25);
222
+ --color-secondary-inverse: #fff;
223
+
224
+ /* Contrast */
225
+ --color-contrast-bg: #eff1f4;
226
+ --color-contrast-border: var(--color-contrast-bg);
227
+ --color-contrast-underline: rgba(var(--color-contrast-rgb), 0.5);
228
+ --color-contrast-hover: #fff;
229
+ --color-contrast-hover-bg: #fff;
230
+ --color-contrast-hover-border: var(--color-contrast-hover-bg);
231
+ --color-contrast-hover-underline: var(--color-contrast-hover);
232
+ --color-contrast-focus: rgba(207, 213, 226, 0.25);
233
+ --color-contrast-inverse: #000;
234
+
235
+ /* Shadows */
236
+ --shadow-sm: 0 0.0625rem 0.125rem rgba(7, 8.5, 12, 0.1);
237
+ --shadow-md: 0.0625rem 0.125rem 0.5rem rgba(7, 8.5, 12, 0.15);
238
+ --shadow-lg: 0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06), 0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);
239
+
240
+ /* Headings */
241
+ --color-heading-base: #f0f1f3;
242
+
243
+ /* Mark & Text */
244
+ --color-mark-bg: #014063;
245
+ --color-mark-text: #fff;
246
+ }
247
+ }
248
+
249
+ /* ==========================================================================
250
+ Dark Theme (Explicit)
251
+ ========================================================================== */
252
+
253
+ [data-theme="dark"] {
254
+ color-scheme: dark;
255
+
256
+ /* RGB channels */
257
+ --color-primary-rgb: 1, 170, 255;
258
+ --color-secondary-rgb: 150, 158, 175;
259
+ --color-contrast-rgb: 248, 249, 250;
260
+ --color-success-rgb: 110, 213, 157;
261
+ --color-info-rgb: 10, 194, 194;
262
+ --color-warning-rgb: 255, 191, 0;
263
+ --color-danger-rgb: 243, 143, 121;
264
+
265
+ /* Body & emphasis RGB */
266
+ --color-body-rgb: 194, 199, 208;
267
+ --color-text-rgb: 194, 199, 208;
268
+ --color-body-bg-rgb: 19, 23, 31;
269
+ --color-emphasis-rgb: 223, 227, 235;
270
+
271
+ /* Secondary surfaces */
272
+ --color-secondary-bg-rgb: 42, 49, 64;
273
+
274
+ /* Link RGB */
275
+ --color-link-rgb: 1, 170, 255;
276
+
277
+ /* Emphasis colors */
278
+ --color-primary-emphasis-rgb: 121, 192, 255;
279
+ --color-secondary-emphasis-rgb: 179, 185, 197;
280
+ --color-success-emphasis-rgb: 147, 222, 181;
281
+ --color-info-emphasis-rgb: 37, 221, 221;
282
+ --color-warning-emphasis-rgb: 232, 174, 1;
283
+ --color-danger-emphasis-rgb: 245, 183, 168;
284
+ --color-contrast-emphasis-rgb: 24, 28, 37;
285
+
286
+ /* Subtle backgrounds */
287
+ --color-primary-bg-subtle: rgba(var(--color-primary-rgb), 0.15);
288
+ --color-secondary-bg-subtle: rgba(var(--color-secondary-rgb), 0.15);
289
+ --color-success-bg-subtle: rgba(var(--color-success-rgb), 0.15);
290
+ --color-info-bg-subtle: rgba(var(--color-info-rgb), 0.15);
291
+ --color-warning-bg-subtle: rgba(var(--color-warning-rgb), 0.15);
292
+ --color-danger-bg-subtle: rgba(var(--color-danger-rgb), 0.15);
293
+ --color-contrast-bg-subtle: color-mix(in srgb, rgb(var(--color-contrast-rgb)), black 7%);
294
+
295
+ /* Subtle borders */
296
+ --color-primary-border-subtle: rgba(var(--color-primary-rgb), 0.35);
297
+ --color-secondary-border-subtle: rgba(var(--color-secondary-rgb), 0.35);
298
+ --color-success-border-subtle: rgba(var(--color-success-rgb), 0.35);
299
+ --color-info-border-subtle: rgba(var(--color-info-rgb), 0.35);
300
+ --color-warning-border-subtle: rgba(var(--color-warning-rgb), 0.35);
301
+ --color-danger-border-subtle: rgba(var(--color-danger-rgb), 0.35);
302
+ --color-contrast-border-subtle: rgb(var(--color-contrast-rgb));
303
+
304
+ /* Core Colors */
305
+ --color-background: rgb(19, 22.5, 30.5);
306
+ --color-text: #c2c7d0;
307
+ --color-text-selection: rgba(var(--color-primary-rgb), 0.1875);
308
+ --color-text-muted: color-mix(in srgb, rgb(var(--color-text-rgb)), rgb(128, 128, 128) 70%);
309
+ --color-border-muted: #202632;
310
+
311
+ /* Primary */
312
+ --color-primary-bg: #0172ad;
313
+ --color-primary-border: var(--color-primary-bg);
314
+ --color-primary-underline: rgba(var(--color-primary-rgb), 0.5);
315
+ --color-primary-hover: #79c0ff;
316
+ --color-primary-hover-bg: #017fc0;
317
+ --color-primary-hover-border: var(--color-primary-hover-bg);
318
+ --color-primary-hover-underline: var(--color-primary-hover);
319
+ --color-primary-focus: rgba(var(--color-primary-rgb), 0.375);
320
+ --color-primary-inverse: #fff;
321
+
322
+ /* Secondary */
323
+ --color-secondary-bg: #525f7a;
324
+ --color-secondary-border: var(--color-secondary-bg);
325
+ --color-secondary-underline: rgba(var(--color-secondary-rgb), 0.5);
326
+ --color-secondary-hover: #b3b9c5;
327
+ --color-secondary-hover-bg: #5d6b89;
328
+ --color-secondary-hover-border: var(--color-secondary-hover-bg);
329
+ --color-secondary-hover-underline: var(--color-secondary-hover);
330
+ --color-secondary-focus: rgba(144, 158, 190, 0.25);
331
+ --color-secondary-inverse: #fff;
332
+
333
+ /* Contrast */
334
+ --color-contrast-bg: #eff1f4;
335
+ --color-contrast-border: var(--color-contrast-bg);
336
+ --color-contrast-underline: rgba(var(--color-contrast-rgb), 0.5);
337
+ --color-contrast-hover: #fff;
338
+ --color-contrast-hover-bg: #fff;
339
+ --color-contrast-hover-border: var(--color-contrast-hover-bg);
340
+ --color-contrast-hover-underline: var(--color-contrast-hover);
341
+ --color-contrast-focus: rgba(207, 213, 226, 0.25);
342
+ --color-contrast-inverse: #000;
343
+
344
+ /* Shadows */
345
+ --shadow-sm: 0 0.0625rem 0.125rem rgba(7, 8.5, 12, 0.1);
346
+ --shadow-md: 0.0625rem 0.125rem 0.5rem rgba(7, 8.5, 12, 0.15);
347
+ --shadow-lg: 0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06), 0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);
348
+
349
+ /* Headings */
350
+ --color-heading-base: #f0f1f3;
351
+
352
+ /* Mark & Text */
353
+ --color-mark-bg: #014063;
354
+ --color-mark-text: #fff;
355
+ }
@@ -0,0 +1,330 @@
1
+ /* ==========================================================================
2
+ Component Variables
3
+ ==========================================================================
4
+
5
+ Component-specific CSS custom properties organized by UI component.
6
+ These define the appearance of buttons, forms, tables, cards, modals,
7
+ and other interactive elements.
8
+
9
+ Each component section is self-contained with all its color, spacing,
10
+ and state variable definitions.
11
+ ========================================================================== */
12
+
13
+ /* ==========================================================================
14
+ Light Theme Component Variables
15
+ ========================================================================== */
16
+
17
+ [data-theme="light"],
18
+ :root:not([data-theme="dark"]),
19
+ :host(:not([data-theme="dark"])) {
20
+ /* Button */
21
+ --button-shadow: 0 0 0 rgba(0, 0, 0, 0);
22
+ --button-shadow-hover: 0 0 0 rgba(0, 0, 0, 0);
23
+
24
+ /* Table */
25
+ --table-border-color: var(--color-border-muted);
26
+ --table-row-stripe-bg: rgba(111, 120, 135, 0.0375);
27
+
28
+ /* Code */
29
+ --code-bg: rgb(243, 244.5, 246.75);
30
+ --code-color: #646b79;
31
+ --kbd-bg: var(--color-text);
32
+ --kbd-color: var(--color-background);
33
+
34
+ /* Form Elements */
35
+ --form-bg: rgb(251, 251.5, 252.25);
36
+ --form-selected-bg: #dfe3eb;
37
+ --form-border-color: #cfd5e2;
38
+ --form-text-color: #23262c;
39
+ --form-placeholder-color: var(--color-text-muted);
40
+ --form-active-bg: #fff;
41
+ --form-active-border: var(--color-primary-border);
42
+ --form-focus: var(--color-primary-border);
43
+ --form-disabled-opacity: 0.5;
44
+ --form-invalid-border: rgb(var(--color-danger-rgb));
45
+ --form-invalid-active-border: rgb(var(--color-danger-rgb));
46
+ --form-invalid-focus: rgba(var(--color-danger-rgb), 0.5);
47
+ --form-valid-border: rgb(var(--color-success-rgb));
48
+ --form-valid-active-border: rgb(var(--color-success-rgb));
49
+ --form-valid-focus: rgba(var(--color-success-rgb), 0.5);
50
+
51
+ /* Switch */
52
+ --switch-bg: #bfc7d9;
53
+ --switch-checked-bg: var(--color-primary-bg);
54
+ --switch-thumb-color: #fff;
55
+ --switch-thumb-shadow: 0 0 0 rgba(0, 0, 0, 0);
56
+
57
+ /* Range */
58
+ --range-border-color: #dfe3eb;
59
+ --range-active-border: #bfc7d9;
60
+ --range-thumb-border: var(--color-background);
61
+ --range-thumb-color: var(--color-secondary-bg);
62
+ --range-thumb-active: var(--color-primary-bg);
63
+
64
+ /* Accordion */
65
+ --accordion-border: var(--color-border-muted);
66
+ --accordion-active-summary: var(--color-primary-hover);
67
+ --accordion-closed-summary: var(--color-text);
68
+ --accordion-open-summary: var(--color-text-muted);
69
+
70
+ /* Card */
71
+ --pane-bg: var(--color-background);
72
+ --pane-border: transparent;
73
+ --pane-shadow: none;
74
+ --pane-section-border: var(--color-border-muted);
75
+ --pane-section-bg: rgb(251, 251.5, 252.25);
76
+
77
+ /* Menu & Dropdown */
78
+ --menu-bg: #fff;
79
+ --menu-border: #eff1f4;
80
+ --menu-shadow: var(--shadow-lg);
81
+ --menu-text: var(--color-text);
82
+ --menu-hover-bg: #eff1f4;
83
+
84
+ /* Loading */
85
+ --loading-spinner-opacity: 0.5;
86
+
87
+ /* Progress */
88
+ --progress-bg: #dfe3eb;
89
+ --progress-fill: var(--color-primary-bg);
90
+
91
+ /* Tooltip */
92
+ --tooltip-bg: var(--color-contrast-bg);
93
+ --tooltip-text: var(--color-contrast-inverse);
94
+
95
+ /* Backdrop Overlay */
96
+ --backdrop-overlay-filter: blur(0.375rem);
97
+ --backdrop-overlay-bg: rgba(232, 234, 237, 0.75);
98
+ }
99
+
100
+ /* Form focus override for actionable input types in light mode */
101
+ [data-theme="light"] input:is(
102
+ [type="submit"],
103
+ [type="button"],
104
+ [type="reset"],
105
+ [type="checkbox"],
106
+ [type="radio"],
107
+ [type="file"]
108
+ ),
109
+ :root:not([data-theme="dark"]) input:is(
110
+ [type="submit"],
111
+ [type="button"],
112
+ [type="reset"],
113
+ [type="checkbox"],
114
+ [type="radio"],
115
+ [type="file"]
116
+ ),
117
+ :host(:not([data-theme="dark"])) input:is(
118
+ [type="submit"],
119
+ [type="button"],
120
+ [type="reset"],
121
+ [type="checkbox"],
122
+ [type="radio"],
123
+ [type="file"]
124
+ ) {
125
+ --form-focus: var(--color-primary-focus);
126
+ }
127
+
128
+ /* ==========================================================================
129
+ Dark Theme Component Variables (System Preference)
130
+ ========================================================================== */
131
+
132
+ @media only screen and (prefers-color-scheme: dark) {
133
+ :root:not([data-theme]),
134
+ :host(:not([data-theme])) {
135
+ /* Button */
136
+ --button-shadow: 0 0 0 rgba(0, 0, 0, 0);
137
+ --button-shadow-hover: 0 0 0 rgba(0, 0, 0, 0);
138
+
139
+ /* Table */
140
+ --table-border-color: var(--color-border-muted);
141
+ --table-row-stripe-bg: rgba(111, 120, 135, 0.0375);
142
+
143
+ /* Code */
144
+ --code-bg: rgb(26, 30.5, 40.25);
145
+ --code-color: #8891a4;
146
+ --kbd-bg: var(--color-text);
147
+ --kbd-color: var(--color-background);
148
+
149
+ /* Form Elements */
150
+ --form-bg: rgb(28, 33, 43.5);
151
+ --form-selected-bg: #2a3140;
152
+ --form-border-color: #2a3140;
153
+ --form-text-color: #e0e3e7;
154
+ --form-placeholder-color: #8891a4;
155
+ --form-active-bg: rgb(26, 30.5, 40.25);
156
+ --form-active-border: var(--color-primary-border);
157
+ --form-focus: var(--color-primary-border);
158
+ --form-disabled-opacity: 0.5;
159
+ --form-invalid-border: rgb(var(--color-danger-rgb));
160
+ --form-invalid-active-border: rgb(var(--color-danger-rgb));
161
+ --form-invalid-focus: rgba(var(--color-danger-rgb), 0.5);
162
+ --form-valid-border: rgb(var(--color-success-rgb));
163
+ --form-valid-active-border: rgb(var(--color-success-rgb));
164
+ --form-valid-focus: rgba(var(--color-success-rgb), 0.5);
165
+
166
+ /* Switch */
167
+ --switch-bg: #333c4e;
168
+ --switch-checked-bg: var(--color-primary-bg);
169
+ --switch-thumb-color: #fff;
170
+ --switch-thumb-shadow: 0 0 0 rgba(0, 0, 0, 0);
171
+
172
+ /* Range */
173
+ --range-border-color: #202632;
174
+ --range-active-border: #2a3140;
175
+ --range-thumb-border: var(--color-background);
176
+ --range-thumb-color: var(--color-secondary-bg);
177
+ --range-thumb-active: var(--color-primary-bg);
178
+
179
+ /* Accordion */
180
+ --accordion-border: var(--color-border-muted);
181
+ --accordion-active-summary: var(--color-primary-hover);
182
+ --accordion-closed-summary: var(--color-text);
183
+ --accordion-open-summary: var(--color-text-muted);
184
+
185
+ /* Card */
186
+ --pane-bg: #181c25;
187
+ --pane-border: transparent;
188
+ --pane-shadow: none;
189
+ --pane-section-border: var(--pane-bg);
190
+ --pane-section-bg: rgb(26, 30.5, 40.25);
191
+
192
+ /* Dropdown */
193
+ --menu-bg: #181c25;
194
+ --menu-border: #202632;
195
+ --menu-shadow: var(--shadow-lg);
196
+ --menu-text: var(--color-text);
197
+ --menu-hover-bg: #202632;
198
+
199
+ /* Loading & Modal */
200
+ --loading-spinner-opacity: 0.5;
201
+
202
+ /* Progress */
203
+ --progress-bg: #202632;
204
+ --progress-fill: var(--color-primary-bg);
205
+
206
+ /* Tooltip */
207
+ --tooltip-bg: var(--color-contrast-bg);
208
+ --tooltip-text: var(--color-contrast-inverse);
209
+
210
+ /* Backdrop Overlay */
211
+ --backdrop-overlay-filter: blur(0.375rem);
212
+ --backdrop-overlay-bg: rgba(7.5, 8.5, 10, 0.75);
213
+ }
214
+
215
+ :root:not([data-theme]) input:is(
216
+ [type="submit"],
217
+ [type="button"],
218
+ [type="reset"],
219
+ [type="checkbox"],
220
+ [type="radio"],
221
+ [type="file"]
222
+ ),
223
+ :host(:not([data-theme])) input:is(
224
+ [type="submit"],
225
+ [type="button"],
226
+ [type="reset"],
227
+ [type="checkbox"],
228
+ [type="radio"],
229
+ [type="file"]
230
+ ) {
231
+ --form-focus: var(--color-primary-focus);
232
+ }
233
+ }
234
+
235
+ /* ==========================================================================
236
+ Dark Theme Component Variables (Explicit)
237
+ ========================================================================== */
238
+
239
+ [data-theme="dark"] {
240
+ /* Button */
241
+ --button-shadow: 0 0 0 rgba(0, 0, 0, 0);
242
+ --button-shadow-hover: 0 0 0 rgba(0, 0, 0, 0);
243
+
244
+ /* Table */
245
+ --table-border-color: var(--color-border-muted);
246
+ --table-row-stripe-bg: rgba(111, 120, 135, 0.0375);
247
+
248
+ /* Code */
249
+ --code-bg: rgb(26, 30.5, 40.25);
250
+ --code-color: #8891a4;
251
+ --kbd-bg: var(--color-text);
252
+ --kbd-color: var(--color-background);
253
+
254
+ /* Form Elements */
255
+ --form-bg: rgb(28, 33, 43.5);
256
+ --form-selected-bg: #2a3140;
257
+ --form-border-color: #2a3140;
258
+ --form-text-color: #e0e3e7;
259
+ --form-placeholder-color: #8891a4;
260
+ --form-active-bg: rgb(26, 30.5, 40.25);
261
+ --form-active-border: var(--color-primary-border);
262
+ --form-focus: var(--color-primary-border);
263
+ --form-disabled-opacity: 0.5;
264
+ --form-invalid-border: rgb(var(--color-danger-rgb));
265
+ --form-invalid-active-border: rgb(var(--color-danger-rgb));
266
+ --form-invalid-focus: rgba(var(--color-danger-rgb), 0.5);
267
+ --form-valid-border: rgb(var(--color-success-rgb));
268
+ --form-valid-active-border: rgb(var(--color-success-rgb));
269
+ --form-valid-focus: rgba(var(--color-success-rgb), 0.5);
270
+
271
+ /* Switch */
272
+ --switch-bg: #333c4e;
273
+ --switch-checked-bg: var(--color-primary-bg);
274
+ --switch-thumb-color: #fff;
275
+ --switch-thumb-shadow: 0 0 0 rgba(0, 0, 0, 0);
276
+
277
+ /* Range */
278
+ --range-border-color: #202632;
279
+ --range-active-border: #2a3140;
280
+ --range-thumb-border: var(--color-background);
281
+ --range-thumb-color: var(--color-secondary-bg);
282
+ --range-thumb-active: var(--color-primary-bg);
283
+
284
+ /* Accordion */
285
+ --accordion-border: var(--color-border-muted);
286
+ --accordion-active-summary: var(--color-primary-hover);
287
+ --accordion-closed-summary: var(--color-text);
288
+ --accordion-open-summary: var(--color-text-muted);
289
+
290
+ /* Card */
291
+ --pane-bg: #181c25;
292
+ --pane-border: transparent;
293
+ --pane-shadow: none;
294
+ --pane-section-border: var(--pane-bg);
295
+ --pane-section-bg: rgb(26, 30.5, 40.25);
296
+
297
+ /* Dropdown */
298
+ --menu-bg: #181c25;
299
+ --menu-border: #202632;
300
+ --menu-shadow: var(--shadow-lg);
301
+ --menu-text: var(--color-text);
302
+ --menu-hover-bg: #202632;
303
+
304
+ /* Loading */
305
+ --loading-spinner-opacity: 0.5;
306
+
307
+ /* Progress */
308
+ --progress-bg: #202632;
309
+ --progress-fill: var(--color-primary-bg);
310
+
311
+ /* Tooltip */
312
+ --tooltip-bg: var(--color-contrast-bg);
313
+ --tooltip-text: var(--color-contrast-inverse);
314
+
315
+ /* Backdrop Overlay */
316
+ --backdrop-overlay-filter: blur(0.375rem);
317
+ --backdrop-overlay-bg: rgba(7.5, 8.5, 10, 0.75);
318
+ }
319
+
320
+ /* Form focus override for actionable input types in explicit dark mode */
321
+ [data-theme="dark"] input:is(
322
+ [type="submit"],
323
+ [type="button"],
324
+ [type="reset"],
325
+ [type="checkbox"],
326
+ [type="radio"],
327
+ [type="file"]
328
+ ) {
329
+ --form-focus: var(--color-primary-focus);
330
+ }