@reliability-design/web 1.0.6 → 1.2.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 (78) hide show
  1. package/dist/components/rel-accordion/rel-accordion.ts +20 -31
  2. package/dist/components/rel-alert/rel-alert.ts +81 -11
  3. package/dist/components/rel-avatar/rel-avatar.ts +6 -3
  4. package/dist/components/rel-badge/rel-badge.ts +8 -3
  5. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +6 -6
  6. package/dist/components/rel-button/rel-button.ts +118 -16
  7. package/dist/components/rel-calendar/rel-calendar.ts +16 -9
  8. package/dist/components/rel-card/rel-card.ts +9 -17
  9. package/dist/components/rel-cardmedia/rel-cardmedia.ts +20 -23
  10. package/dist/components/rel-carousel/rel-carousel.ts +596 -469
  11. package/dist/components/rel-checkbox/rel-checkbox.ts +98 -15
  12. package/dist/components/rel-chip/rel-chip.ts +291 -186
  13. package/dist/components/rel-container/rel-container.ts +2 -2
  14. package/dist/components/rel-date-picker/rel-date-picker.ts +23 -19
  15. package/dist/components/rel-divider/rel-divider.ts +12 -3
  16. package/dist/components/rel-drawer/rel-drawer-footer.ts +27 -0
  17. package/dist/components/rel-drawer/rel-drawer.ts +57 -113
  18. package/dist/components/rel-kbd/rel-kbd.ts +94 -118
  19. package/dist/components/rel-layout/rel-layout.ts +49 -58
  20. package/dist/components/rel-menu/rel-menu.ts +359 -327
  21. package/dist/components/rel-menubar/rel-menubar-menu.css +3 -0
  22. package/dist/components/rel-menubar/rel-menubar-menu.ts +2 -1
  23. package/dist/components/rel-menubar/rel-menubar.ts +602 -576
  24. package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +240 -143
  25. package/dist/components/rel-nav-menu/rel-nav-menu.ts +227 -331
  26. package/dist/components/rel-navbar/rel-navbar.ts +13 -0
  27. package/dist/components/rel-otp/rel-otp.ts +22 -25
  28. package/dist/components/rel-pagination/rel-pagination.ts +112 -63
  29. package/dist/components/rel-popover/rel-popover-content.ts +6 -5
  30. package/dist/components/rel-popover/rel-popover.ts +42 -20
  31. package/dist/components/rel-progress/rel-progress.ts +10 -9
  32. package/dist/components/rel-radio/rel-radio.ts +228 -155
  33. package/dist/components/rel-range-picker/rel-range-picker.css +349 -0
  34. package/dist/components/rel-range-picker/rel-range-picker.ts +1079 -0
  35. package/dist/components/rel-resizable/rel-resizable-handle.ts +12 -15
  36. package/dist/components/rel-segmented-button/rel-segmented-button.ts +41 -20
  37. package/dist/components/rel-select/rel-select.ts +112 -27
  38. package/dist/components/rel-sheet/rel-sheet.ts +362 -683
  39. package/dist/components/rel-sidebar/rel-sidebar.ts +13 -5
  40. package/dist/components/rel-slider/rel-slider.ts +74 -29
  41. package/dist/components/rel-snackbar/rel-snackbar.ts +67 -37
  42. package/dist/components/rel-stepper/rel-stepper.ts +43 -31
  43. package/dist/components/rel-switch/rel-switch.ts +26 -12
  44. package/dist/components/rel-tab/rel-tab.ts +57 -37
  45. package/dist/components/rel-table/rel-table-body.ts +5 -0
  46. package/dist/components/rel-table/rel-table-caption.ts +6 -1
  47. package/dist/components/rel-table/rel-table-cell.ts +42 -49
  48. package/dist/components/rel-table/rel-table-footer.ts +5 -0
  49. package/dist/components/rel-table/rel-table-head.ts +13 -1
  50. package/dist/components/rel-table/rel-table-header.ts +5 -0
  51. package/dist/components/rel-table/rel-table-row.ts +7 -3
  52. package/dist/components/rel-table/rel-table.ts +8 -2
  53. package/dist/components/rel-textfield/rel-textfield.ts +153 -44
  54. package/dist/components/rel-toast/rel-toast.ts +56 -22
  55. package/dist/components/rel-tooltip/rel-tooltip.ts +52 -9
  56. package/dist/components/rel-topbar/rel-topbar-actions.ts +24 -0
  57. package/dist/components/rel-topbar/rel-topbar-brand.ts +47 -0
  58. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +63 -0
  59. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +28 -0
  60. package/dist/components/rel-topbar/rel-topbar-item.ts +320 -0
  61. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +24 -0
  62. package/dist/components/rel-topbar/rel-topbar-profile.ts +222 -0
  63. package/dist/components/rel-topbar/rel-topbar-utilities.ts +24 -0
  64. package/dist/components/rel-topbar/rel-topbar.ts +438 -0
  65. package/dist/index.d.mts +375 -411
  66. package/dist/index.d.ts +375 -411
  67. package/dist/index.js +7587 -7980
  68. package/dist/index.js.map +1 -1
  69. package/dist/index.mjs +7647 -8023
  70. package/dist/index.mjs.map +1 -1
  71. package/dist/rel-menubar-menu-BEEQDAXW.css +3 -0
  72. package/dist/styles/vars-v2.css +525 -0
  73. package/dist/styles/vars.css +79 -27
  74. package/dist/{vars-ITL2K3KO.css → vars-I2PC74XD.css} +79 -27
  75. package/dist/vars-v2-VMGWTFJZ.css +525 -0
  76. package/package.json +3 -1
  77. package/dist/components/rel-quote-page/README.md +0 -166
  78. package/dist/components/rel-quote-page/rel-quote-page.ts +0 -816
@@ -0,0 +1,3 @@
1
+ rel-menubar-menu {
2
+ display: none;
3
+ }
@@ -0,0 +1,525 @@
1
+ /* vars-v2.css — Figma-aligned token file */
2
+ /* Source of truth: semantic-vars.css (Figma export) + vars.css primitives */
3
+ /* Changes from vars.css: */
4
+ /* - Dark grayscale now uses Figma neutral scale (no blue tint) */
5
+ /* - Added 7 opacity tokens (--rel-opacity-*) */
6
+ /* - Added semantic-vars.css grayscale aliases (--rel-gray-*) */
7
+ /* - Added semantic-vars.css status aliases (--rel-error-*, --rel-warning-* */
8
+ /* --rel-success-*) */
9
+ /* - Fixed --rel-background-success: #E8F5E8 → #E2FEEE (Figma value) */
10
+ /* - Fixed --rel-error-surface-default dark: was unpinned → #FF5252 */
11
+ /* - Fixed --rel-error-surface-light dark: was #2a1116 → #FFDEDE */
12
+ /* - Warning dark: removed incorrect dark tint — all warning tokens */
13
+ /* stay at light values (Figma has no dark overrides for warning) */
14
+ /* - Dark grayscale surfaces/text/borders replaced with Figma neutral scale */
15
+ /* DO NOT USE IN PRODUCTION YET — migration happens component by component */
16
+
17
+ /* ------------------ THEME TRANSITIONS ------------------ */
18
+ * {
19
+ transition-property: color, background-color, border-color, box-shadow, fill, stroke;
20
+ transition-duration: 0.2s;
21
+ transition-timing-function: ease;
22
+ }
23
+
24
+ @media (prefers-reduced-motion: reduce) {
25
+ * {
26
+ transition-property: none;
27
+ transition-duration: 0s;
28
+ }
29
+ }
30
+
31
+ :root {
32
+
33
+ /* ------------------ BORDER RADII ------------------ */
34
+ --rel-borders-radius-border-radius-0: 0px;
35
+ --rel-borders-radius-border-radius-100: 2px;
36
+ --rel-borders-radius-border-radius-200: 8px;
37
+ --rel-borders-radius-border-radius-300: 16px;
38
+ --rel-borders-radius-border-radius-400: 24px;
39
+ --rel-borders-radius-border-radius-500: 1000px;
40
+
41
+ /* ------------------ BORDER WIDTHS ------------------ */
42
+ --rel-borders-width-stroke-050: 0.5px;
43
+ --rel-borders-width-stroke-100: 1px;
44
+ --rel-borders-width-stroke-150: 1.5px;
45
+ --rel-borders-width-stroke-200: 2px;
46
+ --rel-borders-width-stroke-300: 3px;
47
+ --rel-borders-width-stroke-400: 4px;
48
+
49
+ /* ------------------ OPACITY ------------------ */
50
+ /* NEW — was missing from vars.css entirely */
51
+ /* In light mode: black overlays at increasing alpha */
52
+ --rel-opacity-5pct: rgba(0, 0, 0, 0.05);
53
+ --rel-opacity-10pct: rgba(0, 0, 0, 0.10);
54
+ --rel-opacity-15pct: rgba(0, 0, 0, 0.15);
55
+ --rel-opacity-20pct: rgba(0, 0, 0, 0.20);
56
+ --rel-opacity-25pct: rgba(0, 0, 0, 0.25);
57
+ --rel-opacity-30pct: rgba(0, 0, 0, 0.30);
58
+ --rel-opacity-50pct: rgba(0, 0, 0, 0.50);
59
+
60
+ /* ------------------ PRIMITIVE COLORS ------------------ */
61
+ --rel-colors-green-primary: #00F49C;
62
+ --rel-colors-green-secondary: #06D98C;
63
+ --rel-colors-green-tertiary: #00A86B;
64
+ --rel-colors-green-success: #22C55E;
65
+ --rel-colors-green-credited: #4CAA47;
66
+ --rel-colors-green-bg-light: #E2FEEE;
67
+ /* FIXED: was #E8F5E8 — now matches Figma */
68
+ --rel-colors-black: #000000;
69
+ --rel-colors-gray-primary: #333333;
70
+ --rel-colors-gray-heading: #2B2B2B;
71
+ --rel-colors-gray-placeholder: #A9A9A9;
72
+ --rel-colors-gray-dark-placeholder: #373737;
73
+ --rel-colors-gray-toast-bg: #404040;
74
+ --rel-colors-gray-light: #FAFAFA;
75
+ --rel-colors-gray-warm: #F5F5F4;
76
+ --rel-colors-gray-border: #DDDDDD;
77
+ --rel-colors-gray-disabled-text: #9E9E9E;
78
+ --rel-colors-gray-divider: #BDBDBD;
79
+ --rel-colors-gray-tab-border: #C4C4C4;
80
+ --rel-colors-gray-surface: #F5F5F5;
81
+ --rel-colors-gray-screen-bg: #EEEEEE;
82
+ --rel-colors-red-primary: #CC0000;
83
+ --rel-colors-red-secondary: #D50000;
84
+ --rel-colors-red-tertiary: #9C1E33;
85
+ --rel-colors-red-bg-alert: #FFE8EB;
86
+ --rel-colors-red-light: #FFDEDE;
87
+ --rel-colors-white: #FFFFFF;
88
+ --rel-colors-blue-primary: #0091EA;
89
+ --rel-colors-blue-secondary: #4A90E2;
90
+ --rel-colors-blue-tertiary: #0059F4;
91
+ --rel-colors-blue-light: #80D8FF;
92
+ --rel-colors-blue-bg: #E1F2FF;
93
+ --rel-colors-orange-warning: #FF6D00;
94
+ --rel-colors-orange-expired: #F2915C;
95
+ --rel-colors-orange-bg-light: #FFE9D9;
96
+ --rel-colors-orange-bg-counter: #FFF3E0;
97
+ --rel-colors-yellow-pending: #FFBF43;
98
+ --rel-colors-gold: #D6BA00;
99
+ --rel-colors-gold-light: #F6EFD7;
100
+ --rel-colors-gold-secondary: #F5F0D3;
101
+ --rel-colors-platinum: #8392C9;
102
+ --rel-colors-platinum-secondary: #E4E6F2;
103
+ --rel-colors-silver: #BABABA;
104
+ --rel-colors-silver-secondary: #F0F0F0;
105
+ --rel-colors-bronze: #7D5300;
106
+ --rel-colors-bronze-secondary: #E2DAC7;
107
+
108
+ /* ------------------ SEMANTIC GRAYSCALE ALIASES (Figma layer) ----------- */
109
+ /* NEW — sourced directly from semantic-vars.css, same resolved values */
110
+ --rel-gray-text-primary: #333333;
111
+ /* = --rel-colors-gray-primary */
112
+ --rel-gray-text-heading: #2B2B2B;
113
+ /* = --rel-colors-gray-heading */
114
+ --rel-gray-text-placeholder: #A9A9A9;
115
+ /* = --rel-colors-gray-placeholder*/
116
+ --rel-gray-disabled-text: #9E9E9E;
117
+ /* = --rel-colors-gray-disabled-text */
118
+ --rel-gray-bg-light: #FAFAFA;
119
+ /* = --rel-colors-gray-light */
120
+ --rel-gray-bg-screen: #EEEEEE;
121
+ /* = --rel-colors-gray-screen-bg */
122
+ --rel-gray-bg-surface: #F5F5F5;
123
+ /* = --rel-colors-gray-surface */
124
+ --rel-gray-bg-toast: #404040;
125
+ /* = --rel-colors-gray-toast-bg */
126
+ --rel-gray-border: #DDDDDD;
127
+ /* = --rel-colors-gray-border */
128
+ --rel-gray-divider-default: #BDBDBD;
129
+ /* = --rel-colors-gray-divider */
130
+
131
+ /* ------------------ SEMANTIC STATUS ALIASES (Figma layer) -------------- */
132
+ /* NEW — sourced from semantic-vars.css */
133
+
134
+ /* Error */
135
+ --rel-error-text: #CC0000;
136
+ /* = --rel-colors-red-primary */
137
+ --rel-error-border: #CC0000;
138
+ --rel-error-icon: #CC0000;
139
+ --rel-error-surface-dark: #9C1E33;
140
+ /* = --rel-colors-red-tertiary */
141
+ --rel-error-surface-default: #D50000;
142
+ /* = --rel-colors-red-secondary */
143
+ --rel-error-surface-light: #FFE8EB;
144
+ /* = --rel-colors-red-bg-alert */
145
+
146
+ /* Warning */
147
+ --rel-warning-text: #FF6D00;
148
+ /* = --rel-colors-orange-warning */
149
+ --rel-warning-icon: #FF6D00;
150
+ --rel-warning-border: #FF6D00;
151
+ --rel-warning-surface-dark: #F2915C;
152
+ /* = --rel-colors-orange-expired */
153
+ --rel-warning-surface-default: #FFBF43;
154
+ /* = --rel-colors-yellow-pending */
155
+ --rel-warning-surface-light: #FFF3E0;
156
+ /* = --rel-colors-orange-bg-counter */
157
+
158
+ /* Success */
159
+ --rel-success-text: #4CAA47;
160
+ /* = --rel-colors-green-credited */
161
+ --rel-success-icon: #4CAA47;
162
+ --rel-success-border: #4CAA47;
163
+ --rel-success-surface-dark: #00A86B;
164
+ /* = --rel-colors-green-tertiary */
165
+ --rel-success-surface-default: #22C55E;
166
+ /* = --rel-colors-green-success */
167
+ --rel-success-surface-light: #E2FEEE;
168
+ /* FIXED: was #E8F5E8 */
169
+
170
+ /* ------------------ SEMANTIC TEXT ------------------ */
171
+ --rel-text-primary: var(--rel-colors-gray-primary);
172
+ --rel-text-heading: var(--rel-colors-gray-heading);
173
+ --rel-text-error: var(--rel-colors-red-primary);
174
+ --rel-text-error-small: var(--rel-colors-red-secondary);
175
+ --rel-text-error-medium: var(--rel-colors-red-tertiary);
176
+ --rel-text-error-large: var(--rel-colors-red-tertiary);
177
+ --rel-text-warning: var(--rel-colors-orange-warning);
178
+ --rel-text-warning-small: var(--rel-colors-orange-expired);
179
+ --rel-text-warning-medium: var(--rel-colors-yellow-pending);
180
+ --rel-text-warning-large: var(--rel-colors-orange-warning);
181
+ --rel-text-success: var(--rel-colors-green-success);
182
+ --rel-text-success-small: var(--rel-colors-green-secondary);
183
+ --rel-text-success-medium: var(--rel-colors-green-tertiary);
184
+ --rel-text-success-large: var(--rel-colors-green-success);
185
+ --rel-text-info: var(--rel-colors-blue-primary);
186
+ --rel-text-info-secondary: var(--rel-colors-blue-secondary);
187
+ --rel-text-info-hover: var(--rel-colors-blue-tertiary);
188
+ --rel-text-placeholder: var(--rel-colors-gray-placeholder);
189
+ --rel-text-dark-placeholder: var(--rel-colors-gray-dark-placeholder);
190
+ --rel-text-disabled: var(--rel-colors-gray-disabled-text);
191
+ --rel-text-credited: var(--rel-colors-green-credited);
192
+
193
+ /* ------------------ SEMANTIC ICONS ------------------ */
194
+ --rel-icon-info: var(--rel-colors-blue-primary);
195
+ --rel-icon-error: var(--rel-colors-red-primary);
196
+ --rel-icon-warning: var(--rel-colors-orange-warning);
197
+ --rel-icon-success: var(--rel-colors-green-success);
198
+
199
+ /* ------------------ SEMANTIC BORDERS ------------------ */
200
+ --rel-border-default: var(--rel-colors-gray-border);
201
+ --rel-border-error: var(--rel-colors-red-primary);
202
+ --rel-border-warning: var(--rel-colors-orange-warning);
203
+ --rel-border-success: var(--rel-colors-green-primary);
204
+ --rel-border-info: var(--rel-colors-blue-primary);
205
+ --rel-border-divider: var(--rel-colors-gray-divider);
206
+ --rel-border-tab: var(--rel-colors-gray-tab-border);
207
+
208
+ /* ------------------ SEMANTIC BACKGROUNDS ------------------ */
209
+ --rel-background-error: var(--rel-colors-red-bg-alert);
210
+ --rel-background-error-light: var(--rel-colors-red-light);
211
+ --rel-background-warning: var(--rel-colors-orange-bg-light);
212
+ --rel-background-warning-counter: var(--rel-colors-orange-bg-counter);
213
+ --rel-background-success: var(--rel-colors-green-bg-light);
214
+ /* FIXED: now #E2FEEE */
215
+ --rel-background-info: var(--rel-colors-blue-bg);
216
+ --rel-background-info-accent: var(--rel-colors-blue-light);
217
+
218
+ /* ------------------ SEMANTIC SURFACES ------------------ */
219
+ --rel-surface-secondary: var(--rel-colors-gray-light);
220
+ --rel-surface-screen: var(--rel-colors-gray-screen-bg);
221
+ --rel-surface-surface: var(--rel-colors-gray-surface);
222
+ --rel-surface-warm: var(--rel-colors-gray-warm);
223
+ --rel-surface-toast: var(--rel-colors-gray-toast-bg);
224
+
225
+ /* ------------------ SHADOWS ------------------ */
226
+ --rel-shadows-shadow-100: 0px 1px 2px 0px rgba(0, 0, 0, 0.3), 0px 1px 3px 1px rgba(0, 0, 0, 0.15);
227
+ --rel-shadows-shadow-200: 0px 1px 2px 0px rgba(0, 0, 0, 0.3), 0px 2px 6px 2px rgba(0, 0, 0, 0.15);
228
+ --rel-shadows-shadow-300: 0px 1px 2px 0px rgba(0, 0, 0, 0.3), 0px 4px 8px 3px rgba(0, 0, 0, 0.15);
229
+ --rel-shadows-shadow-400: 0px 2px 3px 0px rgba(0, 0, 0, 0.3), 0px 6px 10px 4px rgba(0, 0, 0, 0.15);
230
+ --rel-shadows-shadow-500: 0px 4px 4px 0px rgba(0, 0, 0, 0.3), 0px 8px 12px 6px rgba(0, 0, 0, 0.15);
231
+
232
+ /* ------------------ SPACING ------------------ */
233
+ --rel-spacing-space-3xs: 2px;
234
+ --rel-spacing-space-2xs: 4px;
235
+ --rel-spacing-space-xs: 8px;
236
+ --rel-spacing-space-sm: 12px;
237
+ --rel-spacing-space-md: 16px;
238
+ --rel-spacing-space-lg: 20px;
239
+ --rel-spacing-space-xl: 24px;
240
+ --rel-spacing-space-2xl: 32px;
241
+ --rel-spacing-space-3xl: 48px;
242
+
243
+ /* ------------------ TYPOGRAPHY ------------------ */
244
+ --rel-fontFamilies-primary: Poppins, sans-serif;
245
+
246
+ --rel-fontWeights-regular: 400;
247
+ --rel-fontWeights-medium: 500;
248
+ --rel-fontWeights-semibold: 600;
249
+ --rel-fontWeights-bold: 700;
250
+
251
+ --rel-fontSizes-3xl: 36px;
252
+ --rel-fontSizes-2xl: 28px;
253
+ --rel-fontSizes-xl: 24px;
254
+ --rel-fontSizes-lg: 20px;
255
+ --rel-fontSizes-md: 14px;
256
+ --rel-fontSizes-sm: 12px;
257
+ --rel-fontSizes-xs: 10px;
258
+
259
+ --rel-lineHeights-3xl: 48px;
260
+ --rel-lineHeights-2xl: 42px;
261
+ --rel-lineHeights-xl: 36px;
262
+ --rel-lineHeights-lg: 28px;
263
+ --rel-lineHeights-md: 20px;
264
+ --rel-lineHeights-sm: 18px;
265
+ --rel-lineHeights-xs: 16px;
266
+ --rel-lineHeights-2xs: 12px;
267
+
268
+ --rel-letterSpacing-normal: 0px;
269
+ --rel-letterSpacing-dense: -0.2px;
270
+ --rel-letterSpacing-denser: -0.3px;
271
+ --rel-letterSpacing-densest: -0.54px;
272
+
273
+ /* ------------------ OVERLAYS ------------------ */
274
+ --rel-overlay-scrim: rgba(0, 0, 0, 0.5);
275
+
276
+ /* ------------------ COMPAT / LEGACY ALIASES ------------------ */
277
+ --rel-colors-primary-500: var(--rel-colors-blue-primary);
278
+ --rel-colors-gray-body: var(--rel-text-primary);
279
+
280
+ /* ------------------ SEMANTIC ALIAS LAYER — LIGHT MODE ------------------ */
281
+ /* Components reference these. They flip automatically in dark mode. */
282
+
283
+ /* Backgrounds */
284
+ --rel-color-bg-primary: var(--rel-colors-white);
285
+ /* #FFFFFF */
286
+ --rel-color-bg-secondary: var(--rel-colors-gray-light);
287
+ /* #FAFAFA */
288
+ --rel-color-bg-tertiary: var(--rel-colors-gray-surface);
289
+ /* #F5F5F5 */
290
+ --rel-color-bg-hover: var(--rel-colors-gray-surface);
291
+ /* #F5F5F5 */
292
+ --rel-color-bg-selected: var(--rel-colors-gray-screen-bg);
293
+ /* #EEEEEE */
294
+
295
+ /* Text */
296
+ --rel-color-text-primary: var(--rel-text-primary);
297
+ /* #333333 */
298
+ --rel-color-text-secondary: var(--rel-colors-gray-disabled-text);
299
+ /* #9E9E9E */
300
+ --rel-color-text-heading: var(--rel-text-heading);
301
+ /* #2B2B2B */
302
+ --rel-color-text-inverse: var(--rel-colors-white);
303
+ /* #FFFFFF — pinned */
304
+ --rel-color-text-disabled: var(--rel-text-disabled);
305
+ /* #9E9E9E */
306
+ --rel-color-text-placeholder: var(--rel-text-placeholder);
307
+ /* #A9A9A9 */
308
+
309
+ /* Borders */
310
+ --rel-color-border-default: var(--rel-border-default);
311
+ /* #DDDDDD */
312
+ --rel-color-border-strong: var(--rel-colors-black);
313
+ /* #000000 */
314
+ --rel-color-border-focus: var(--rel-colors-blue-primary);
315
+ /* #0091EA */
316
+ --rel-color-border-divider: var(--rel-border-divider);
317
+ /* #BDBDBD */
318
+
319
+ /* Icons */
320
+ --rel-color-icon-primary: var(--rel-colors-gray-placeholder);
321
+ /* #A9A9A9 */
322
+ --rel-color-icon-hover: var(--rel-colors-black);
323
+ /* #000000 */
324
+
325
+ /* Brand — pinned, never flips */
326
+ --rel-color-brand: var(--rel-colors-green-primary);
327
+ /* #00F49C */
328
+ --rel-color-brand-hover: var(--rel-colors-green-secondary);
329
+ /* #06D98C */
330
+ }
331
+
332
+
333
+ /* =============================================================================
334
+ DARK MODE
335
+ Activate by: <html data-theme="dark"> OR <html class="dark">
336
+ ============================================================================= */
337
+ :root[data-theme="dark"],
338
+ .dark {
339
+
340
+ /* ------------------ OPACITY (dark: white overlays) ------------------ */
341
+ /* CHANGED: flipped from black to white-based overlays for dark mode */
342
+ --rel-opacity-5pct: rgba(255, 255, 255, 0.05);
343
+ --rel-opacity-10pct: rgba(255, 255, 255, 0.10);
344
+ --rel-opacity-15pct: rgba(255, 255, 255, 0.15);
345
+ --rel-opacity-20pct: rgba(255, 255, 255, 0.20);
346
+ --rel-opacity-25pct: rgba(255, 255, 255, 0.25);
347
+ --rel-opacity-30pct: rgba(255, 255, 255, 0.30);
348
+ --rel-opacity-50pct: rgba(255, 255, 255, 0.50);
349
+
350
+ /* ------------------ PRIMITIVE OVERRIDES — Figma neutral scale --------- */
351
+ /* CHANGED: replaced blue-tinted grays with Figma's pure neutral scale */
352
+ --rel-colors-white: #1A1A1A;
353
+ /* was #0f1115 (blue-tinted) */
354
+ --rel-colors-black: #F5F5F5;
355
+ /* was #e6e8ee (blue-tinted) */
356
+
357
+ --rel-colors-gray-primary: #F5F5F5;
358
+ /* was #e6e8ee */
359
+ --rel-colors-gray-heading: #D4D4D4;
360
+ /* was #f5f7ff */
361
+ --rel-colors-gray-placeholder: #A3A3A3;
362
+ /* was #8b95a7 */
363
+ --rel-colors-gray-dark-placeholder: #737373;
364
+ /* was #707a8c */
365
+ --rel-colors-gray-disabled-text: #737373;
366
+ /* was #667085 */
367
+
368
+ --rel-colors-gray-border: #404040;
369
+ /* was #2a3241 */
370
+ --rel-colors-gray-divider: #525252;
371
+ /* was #2a3241 */
372
+ --rel-colors-gray-tab-border: #404040;
373
+ /* was #323b4b */
374
+
375
+ --rel-colors-gray-screen-bg: #262626;
376
+ /* was #0f1115 */
377
+ --rel-colors-gray-surface: #2E2E2E;
378
+ /* was #141821 */
379
+ --rel-colors-gray-light: #1A1A1A;
380
+ /* was #1a1f2b */
381
+ --rel-colors-gray-warm: #1A1A1A;
382
+ /* was #161b22 — no Figma equivalent, using bg-light */
383
+ --rel-colors-gray-toast-bg: #525252;
384
+ /* was #1d2430 */
385
+
386
+ /* ------------------ SEMANTIC GRAYSCALE ALIASES (dark) ----------------- */
387
+ --rel-gray-text-primary: #F5F5F5;
388
+ --rel-gray-text-heading: #D4D4D4;
389
+ --rel-gray-text-placeholder: #A3A3A3;
390
+ --rel-gray-disabled-text: #737373;
391
+ --rel-gray-bg-light: #1A1A1A;
392
+ --rel-gray-bg-screen: #262626;
393
+ --rel-gray-bg-surface: #2E2E2E;
394
+ --rel-gray-bg-toast: #525252;
395
+ --rel-gray-border: #404040;
396
+ --rel-gray-divider-default: #525252;
397
+
398
+ /* ------------------ STATUS BACKGROUNDS (DARK) ------------------------- */
399
+ /* Error: adopt Figma dark values */
400
+ --rel-colors-red-bg-alert: #FFE8EB;
401
+ /* CHANGED: was #2a1116 — Figma keeps light */
402
+ --rel-colors-red-light: #FFDEDE;
403
+ /* CHANGED: was #3a151c — Figma keeps light */
404
+ --rel-colors-red-secondary: #FF5252;
405
+ /* CHANGED: dark surface-default override */
406
+
407
+ /* Warning: Figma has NO dark overrides — keep light values */
408
+ --rel-colors-orange-bg-light: #FFE9D9;
409
+ /* CHANGED: was #2a1a10 — Figma unchanged */
410
+ --rel-colors-orange-bg-counter: #FFF3E0;
411
+ /* CHANGED: was #241a10 — Figma unchanged */
412
+
413
+ /* Success: no Figma dark override for surface-light */
414
+ --rel-colors-green-bg-light: #E2FEEE;
415
+ /* was #0f231a — matches Figma light value */
416
+
417
+ /* Info: no Figma semantic token — preserved as-is */
418
+ --rel-colors-blue-bg: #0f1e2c;
419
+ --rel-colors-blue-light: #1b6ea8;
420
+
421
+ /* ------------------ SEMANTIC STATUS ALIASES (dark) -------------------- */
422
+ /* Error dark overrides from semantic-vars.css */
423
+ --rel-error-surface-default: #FF5252;
424
+ /* FIXED: was not overridden in dark */
425
+ --rel-error-surface-light: #FFDEDE;
426
+ /* FIXED: was #2a1116 dark tint */
427
+
428
+ /* Warning: unchanged in dark (Figma has no dark overrides) */
429
+ /* --rel-warning-* tokens stay at light values — no override needed */
430
+
431
+ /* Success: no dark overrides in Figma */
432
+ /* --rel-success-* tokens stay at light values — no override needed */
433
+
434
+ /* ------------------ SEMANTIC TEXT (dark) ------------------------------ */
435
+ --rel-text-primary: var(--rel-colors-gray-primary);
436
+ --rel-text-heading: var(--rel-colors-gray-heading);
437
+ --rel-text-placeholder: var(--rel-colors-gray-placeholder);
438
+ --rel-text-dark-placeholder: var(--rel-colors-gray-dark-placeholder);
439
+ --rel-text-disabled: var(--rel-colors-gray-disabled-text);
440
+ --rel-text-error-small: var(--rel-colors-red-secondary);
441
+ /* now #FF5252 in dark */
442
+
443
+ /* ------------------ SEMANTIC BORDERS (dark) --------------------------- */
444
+ --rel-border-default: var(--rel-colors-gray-border);
445
+ --rel-border-divider: var(--rel-colors-gray-divider);
446
+ --rel-border-tab: var(--rel-colors-gray-tab-border);
447
+
448
+ /* ------------------ SEMANTIC BACKGROUNDS (dark) ----------------------- */
449
+ --rel-background-error: var(--rel-colors-red-bg-alert);
450
+ --rel-background-error-light: var(--rel-colors-red-light);
451
+ --rel-background-warning: var(--rel-colors-orange-bg-light);
452
+ --rel-background-warning-counter: var(--rel-colors-orange-bg-counter);
453
+ --rel-background-success: var(--rel-colors-green-bg-light);
454
+ --rel-background-info: var(--rel-colors-blue-bg);
455
+ --rel-background-info-accent: var(--rel-colors-blue-light);
456
+
457
+ /* ------------------ SEMANTIC SURFACES (dark) -------------------------- */
458
+ --rel-surface-secondary: var(--rel-colors-gray-light);
459
+ --rel-surface-screen: var(--rel-colors-gray-screen-bg);
460
+ --rel-surface-surface: var(--rel-colors-gray-surface);
461
+ --rel-surface-warm: var(--rel-colors-gray-warm);
462
+ --rel-surface-toast: var(--rel-colors-gray-toast-bg);
463
+
464
+ /* ------------------ SHADOWS (dark-tuned) ------------------------------ */
465
+ --rel-shadows-shadow-100: 0px 1px 2px rgba(0, 0, 0, 0.6);
466
+ --rel-shadows-shadow-200: 0px 2px 6px rgba(0, 0, 0, 0.6);
467
+ --rel-shadows-shadow-300: 0px 4px 10px rgba(0, 0, 0, 0.65);
468
+ --rel-shadows-shadow-400: 0px 6px 16px rgba(0, 0, 0, 0.7);
469
+ --rel-shadows-shadow-500: 0px 10px 24px rgba(0, 0, 0, 0.75);
470
+
471
+ /* ------------------ OVERLAYS (dark) ----------------------------------- */
472
+ --rel-overlay-scrim: rgba(0, 0, 0, 0.6);
473
+
474
+ /* ------------------ COMPAT / LEGACY (dark) ---------------------------- */
475
+ --rel-colors-primary-500: var(--rel-colors-blue-primary);
476
+ --rel-colors-gray-body: var(--rel-text-primary);
477
+
478
+ /* ------------------ SEMANTIC ALIAS LAYER — DARK OVERRIDES ------------- */
479
+ /* Sourced from Figma neutral dark scale */
480
+
481
+ /* Backgrounds */
482
+ --rel-color-bg-primary: #1A1A1A;
483
+ /* dark-50 — was same */
484
+ --rel-color-bg-secondary: #262626;
485
+ /* dark-100 — was same */
486
+ --rel-color-bg-tertiary: #2E2E2E;
487
+ /* dark-200 — was same */
488
+ --rel-color-bg-hover: #2E2E2E;
489
+ /* dark-200 — was same */
490
+ --rel-color-bg-selected: #404040;
491
+ /* dark-300 — was same */
492
+
493
+ /* Text */
494
+ --rel-color-text-primary: #F5F5F5;
495
+ /* dark-900 */
496
+ --rel-color-text-secondary: #D4D4D4;
497
+ /* dark-700 */
498
+ --rel-color-text-heading: #F5F5F5;
499
+ /* dark-900 */
500
+ --rel-color-text-inverse: #212121;
501
+ /* gray-900 */
502
+ --rel-color-text-disabled: #737373;
503
+ /* dark-500 */
504
+ --rel-color-text-placeholder: #737373;
505
+ /* dark-500 */
506
+
507
+ /* Borders */
508
+ --rel-color-border-default: #404040;
509
+ /* dark-300 */
510
+ --rel-color-border-strong: #D4D4D4;
511
+ /* dark-700 */
512
+ --rel-color-border-focus: #D4D4D4;
513
+ /* dark-700 */
514
+ --rel-color-border-divider: #404040;
515
+ /* dark-300 */
516
+
517
+ /* Icons */
518
+ --rel-color-icon-primary: #A3A3A3;
519
+ /* dark-600 */
520
+ --rel-color-icon-hover: #F5F5F5;
521
+ /* dark-900 */
522
+
523
+ /* Brand — intentionally pinned, no dark override */
524
+ /* --rel-color-brand and --rel-color-brand-hover stay green in dark mode */
525
+ }