@pure-ds/storybook 0.1.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 (129) hide show
  1. package/.storybook/addons/description/preview.js +15 -0
  2. package/.storybook/addons/description/register.js +60 -0
  3. package/.storybook/addons/html-preview/Panel.jsx +327 -0
  4. package/.storybook/addons/html-preview/constants.js +6 -0
  5. package/.storybook/addons/html-preview/preview.js +178 -0
  6. package/.storybook/addons/html-preview/register.js +16 -0
  7. package/.storybook/addons/pds-configurator/SearchTool.js +44 -0
  8. package/.storybook/addons/pds-configurator/Tool.js +30 -0
  9. package/.storybook/addons/pds-configurator/constants.js +9 -0
  10. package/.storybook/addons/pds-configurator/preview.js +159 -0
  11. package/.storybook/addons/pds-configurator/register.js +24 -0
  12. package/.storybook/docs.css +35 -0
  13. package/.storybook/htmlPreview.css +103 -0
  14. package/.storybook/htmlPreview.js +271 -0
  15. package/.storybook/main.js +160 -0
  16. package/.storybook/preview-body.html +48 -0
  17. package/.storybook/preview-head.html +11 -0
  18. package/.storybook/preview.js +1563 -0
  19. package/README.md +266 -0
  20. package/bin/index.js +40 -0
  21. package/dist/pds-reference.json +2101 -0
  22. package/package.json +45 -0
  23. package/pds.config.js +6 -0
  24. package/public/assets/css/app.css +1216 -0
  25. package/public/assets/data/auto-design-advanced.json +704 -0
  26. package/public/assets/data/auto-design-simple.json +123 -0
  27. package/public/assets/img/icon-512x512.png +0 -0
  28. package/public/assets/img/logo-trans.png +0 -0
  29. package/public/assets/img/logo.png +0 -0
  30. package/public/assets/js/app.js +15088 -0
  31. package/public/assets/js/app.js.map +7 -0
  32. package/public/assets/js/lit.js +1176 -0
  33. package/public/assets/js/lit.js.map +7 -0
  34. package/public/assets/js/pds.js +9801 -0
  35. package/public/assets/js/pds.js.map +7 -0
  36. package/public/assets/pds/components/pds-calendar.js +837 -0
  37. package/public/assets/pds/components/pds-drawer.js +857 -0
  38. package/public/assets/pds/components/pds-icon.js +338 -0
  39. package/public/assets/pds/components/pds-jsonform.js +1775 -0
  40. package/public/assets/pds/components/pds-richtext.js +1035 -0
  41. package/public/assets/pds/components/pds-scrollrow.js +331 -0
  42. package/public/assets/pds/components/pds-splitpanel.js +401 -0
  43. package/public/assets/pds/components/pds-tabstrip.js +251 -0
  44. package/public/assets/pds/components/pds-toaster.js +446 -0
  45. package/public/assets/pds/components/pds-upload.js +657 -0
  46. package/public/assets/pds/custom-elements.json +2003 -0
  47. package/public/assets/pds/icons/pds-icons.svg +498 -0
  48. package/public/assets/pds/pds-css-complete.json +1861 -0
  49. package/public/assets/pds/pds-runtime-config.json +11 -0
  50. package/public/assets/pds/pds.css-data.json +2152 -0
  51. package/public/assets/pds/styles/pds-components.css +1944 -0
  52. package/public/assets/pds/styles/pds-components.css.js +3895 -0
  53. package/public/assets/pds/styles/pds-primitives.css +352 -0
  54. package/public/assets/pds/styles/pds-primitives.css.js +711 -0
  55. package/public/assets/pds/styles/pds-styles.css +3761 -0
  56. package/public/assets/pds/styles/pds-styles.css.js +7529 -0
  57. package/public/assets/pds/styles/pds-tokens.css +699 -0
  58. package/public/assets/pds/styles/pds-tokens.css.js +1405 -0
  59. package/public/assets/pds/styles/pds-utilities.css +763 -0
  60. package/public/assets/pds/styles/pds-utilities.css.js +1533 -0
  61. package/public/assets/pds/vscode-custom-data.json +824 -0
  62. package/scripts/build-pds-reference.mjs +807 -0
  63. package/scripts/generate-stories.js +542 -0
  64. package/scripts/package-build.js +86 -0
  65. package/src/js/app.js +17 -0
  66. package/src/js/common/ask.js +208 -0
  67. package/src/js/common/common.js +20 -0
  68. package/src/js/common/font-loader.js +200 -0
  69. package/src/js/common/msg.js +90 -0
  70. package/src/js/lit.js +40 -0
  71. package/src/js/pds-core/pds-config.js +1162 -0
  72. package/src/js/pds-core/pds-enhancer-metadata.js +75 -0
  73. package/src/js/pds-core/pds-enhancers.js +357 -0
  74. package/src/js/pds-core/pds-enums.js +86 -0
  75. package/src/js/pds-core/pds-generator.js +5317 -0
  76. package/src/js/pds-core/pds-ontology.js +256 -0
  77. package/src/js/pds-core/pds-paths.js +109 -0
  78. package/src/js/pds-core/pds-query.js +571 -0
  79. package/src/js/pds-core/pds-registry.js +129 -0
  80. package/src/js/pds-core/pds.d.ts +129 -0
  81. package/src/js/pds.d.ts +408 -0
  82. package/src/js/pds.js +1579 -0
  83. package/src/pds-core/pds-api.js +105 -0
  84. package/stories/GettingStarted.md +96 -0
  85. package/stories/GettingStarted.stories.js +144 -0
  86. package/stories/WhatIsPDS.md +194 -0
  87. package/stories/WhatIsPDS.stories.js +144 -0
  88. package/stories/components/PdsCalendar.stories.js +263 -0
  89. package/stories/components/PdsDrawer.stories.js +623 -0
  90. package/stories/components/PdsIcon.stories.js +78 -0
  91. package/stories/components/PdsJsonform.stories.js +1444 -0
  92. package/stories/components/PdsRichtext.stories.js +367 -0
  93. package/stories/components/PdsScrollrow.stories.js +140 -0
  94. package/stories/components/PdsSplitpanel.stories.js +502 -0
  95. package/stories/components/PdsTabstrip.stories.js +442 -0
  96. package/stories/components/PdsToaster.stories.js +186 -0
  97. package/stories/components/PdsUpload.stories.js +66 -0
  98. package/stories/enhancements/Dropdowns.stories.js +185 -0
  99. package/stories/enhancements/InteractiveStates.stories.js +625 -0
  100. package/stories/enhancements/MeshGradients.stories.js +320 -0
  101. package/stories/enhancements/OpenGroups.stories.js +227 -0
  102. package/stories/enhancements/RangeSliders.stories.js +232 -0
  103. package/stories/enhancements/RequiredFields.stories.js +189 -0
  104. package/stories/enhancements/Toggles.stories.js +167 -0
  105. package/stories/foundations/Colors.stories.js +283 -0
  106. package/stories/foundations/Icons.stories.js +305 -0
  107. package/stories/foundations/SmartSurfaces.stories.js +367 -0
  108. package/stories/foundations/Spacing.stories.js +175 -0
  109. package/stories/foundations/Typography.stories.js +960 -0
  110. package/stories/foundations/ZIndex.stories.js +325 -0
  111. package/stories/patterns/BorderEffects.stories.js +72 -0
  112. package/stories/patterns/Layout.stories.js +99 -0
  113. package/stories/patterns/Utilities.stories.js +107 -0
  114. package/stories/primitives/Accordion.stories.js +359 -0
  115. package/stories/primitives/Alerts.stories.js +64 -0
  116. package/stories/primitives/Badges.stories.js +183 -0
  117. package/stories/primitives/Buttons.stories.js +229 -0
  118. package/stories/primitives/Cards.stories.js +353 -0
  119. package/stories/primitives/FormGroups.stories.js +569 -0
  120. package/stories/primitives/Forms.stories.js +131 -0
  121. package/stories/primitives/Media.stories.js +203 -0
  122. package/stories/primitives/Tables.stories.js +232 -0
  123. package/stories/reference/ReferenceCatalog.stories.js +28 -0
  124. package/stories/reference/reference-catalog.js +413 -0
  125. package/stories/reference/reference-docs.js +302 -0
  126. package/stories/reference/reference-helpers.js +310 -0
  127. package/stories/utilities/GridSystem.stories.js +208 -0
  128. package/stories/utils/PdsAsk.stories.js +420 -0
  129. package/stories/utils/toast-utils.js +148 -0
@@ -0,0 +1,1405 @@
1
+ // Pure Design System - tokens
2
+ // Auto-generated - do not edit directly
3
+
4
+ export const tokens = new CSSStyleSheet();
5
+ tokens.replaceSync(`@layer tokens {
6
+ :root {
7
+ /* Colors */
8
+ --color-primary-50: #95dbee;
9
+ --color-primary-100: #65ceeb;
10
+ --color-primary-200: #32c3eb;
11
+ --color-primary-300: #15acd6;
12
+ --color-primary-400: #1087a7;
13
+ --color-primary-500: #0e7490;
14
+ --color-primary-600: #0b5e74;
15
+ --color-primary-700: #094b5d;
16
+ --color-primary-800: #073846;
17
+ --color-primary-900: #05252e;
18
+ --color-secondary-50: #f4f2f1;
19
+ --color-secondary-100: #e9e4e2;
20
+ --color-secondary-200: #ddd7d5;
21
+ --color-secondary-300: #c6bdb9;
22
+ --color-secondary-400: #afa29c;
23
+ --color-secondary-500: #a99b95;
24
+ --color-secondary-600: #928079;
25
+ --color-secondary-700: #776761;
26
+ --color-secondary-800: #5b4f4a;
27
+ --color-secondary-900: #3f3733;
28
+ --color-accent-50: #fbeaef;
29
+ --color-accent-100: #f8d3de;
30
+ --color-accent-200: #f4b2c5;
31
+ --color-accent-300: #ee85a4;
32
+ --color-accent-400: #e85882;
33
+ --color-accent-500: #e54271;
34
+ --color-accent-600: #d61e53;
35
+ --color-accent-700: #aa1742;
36
+ --color-accent-800: #7d1130;
37
+ --color-accent-900: #500b1f;
38
+ --color-success-50: #d3f8d3;
39
+ --color-success-100: #a4f3a4;
40
+ --color-success-200: #73f273;
41
+ --color-success-300: #44ed44;
42
+ --color-success-400: #16e816;
43
+ --color-success-500: #14d114;
44
+ --color-success-600: #10a210;
45
+ --color-success-700: #0b740b;
46
+ --color-success-800: #074607;
47
+ --color-success-900: #042f04;
48
+ --color-warning-50: #fae39f;
49
+ --color-warning-100: #fbd76a;
50
+ --color-warning-200: #ffcc33;
51
+ --color-warning-300: #ffbf00;
52
+ --color-warning-400: #cc9900;
53
+ --color-warning-500: #B38600;
54
+ --color-warning-600: #806000;
55
+ --color-warning-700: #664c00;
56
+ --color-warning-800: #4d3900;
57
+ --color-warning-900: #332600;
58
+ --color-danger-50: #fbe9e9;
59
+ --color-danger-100: #f6bbbb;
60
+ --color-danger-200: #f38b8b;
61
+ --color-danger-300: #ef5d5d;
62
+ --color-danger-400: #ea2e2e;
63
+ --color-danger-500: #e81717;
64
+ --color-danger-600: #ba1212;
65
+ --color-danger-700: #8b0e0e;
66
+ --color-danger-800: #5d0909;
67
+ --color-danger-900: #2e0505;
68
+ --color-info-50: #95dbee;
69
+ --color-info-100: #65ceeb;
70
+ --color-info-200: #32c3eb;
71
+ --color-info-300: #15acd6;
72
+ --color-info-400: #1087a7;
73
+ --color-info-500: #0e7490;
74
+ --color-info-600: #0b5e74;
75
+ --color-info-700: #094b5d;
76
+ --color-info-800: #073846;
77
+ --color-info-900: #05252e;
78
+ --color-gray-50: #fafaf9;
79
+ --color-gray-100: #f4f2f1;
80
+ --color-gray-200: #e3dfdd;
81
+ --color-gray-300: #cdc5c1;
82
+ --color-gray-400: #a3958f;
83
+ --color-gray-500: #a99b95;
84
+ --color-gray-600: #846c62;
85
+ --color-gray-700: #695349;
86
+ --color-gray-800: #3d2f29;
87
+ --color-gray-900: #1f1714;
88
+ --color-surface-base: #e7e6de;
89
+ --color-surface-subtle: #e3e2d8;
90
+ --color-surface-elevated: #deddd2;
91
+ --color-surface-sunken: #dad9cc;
92
+ --color-surface-overlay: #ebeae4;
93
+ --color-surface-inverse: #191810;
94
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
95
+ --color-surface-fieldset-base: #e3e2d8;
96
+ --color-surface-fieldset-subtle: #deddd2;
97
+ --color-surface-fieldset-elevated: #dad9cc;
98
+ --color-surface-fieldset-sunken: #d1d0c0;
99
+ --color-surface-fieldset-overlay: #deddd2;
100
+ /* Smart Surface Tokens (context-aware) */
101
+ --surface-base-bg: #e7e6de;
102
+ --surface-base-text: #000000;
103
+ --surface-base-text-secondary: #000000;
104
+ --surface-base-text-muted: #5c5c59;
105
+ --surface-base-icon: #000000;
106
+ --surface-base-icon-subtle: #5c5c59;
107
+ --surface-base-shadow: rgba(0, 0, 0, 0.1);
108
+ --surface-base-border: rgba(0, 0, 0, 0.1);
109
+ --surface-subtle-bg: #e3e2d8;
110
+ --surface-subtle-text: #000000;
111
+ --surface-subtle-text-secondary: #000000;
112
+ --surface-subtle-text-muted: #5b5a56;
113
+ --surface-subtle-icon: #000000;
114
+ --surface-subtle-icon-subtle: #5b5a56;
115
+ --surface-subtle-shadow: rgba(0, 0, 0, 0.1);
116
+ --surface-subtle-border: rgba(0, 0, 0, 0.1);
117
+ --surface-elevated-bg: #deddd2;
118
+ --surface-elevated-text: #000000;
119
+ --surface-elevated-text-secondary: #000000;
120
+ --surface-elevated-text-muted: #595854;
121
+ --surface-elevated-icon: #000000;
122
+ --surface-elevated-icon-subtle: #595854;
123
+ --surface-elevated-shadow: rgba(0, 0, 0, 0.1);
124
+ --surface-elevated-border: rgba(0, 0, 0, 0.1);
125
+ --surface-sunken-bg: #dad9cc;
126
+ --surface-sunken-text: #000000;
127
+ --surface-sunken-text-secondary: #000000;
128
+ --surface-sunken-text-muted: #575752;
129
+ --surface-sunken-icon: #000000;
130
+ --surface-sunken-icon-subtle: #575752;
131
+ --surface-sunken-shadow: rgba(0, 0, 0, 0.1);
132
+ --surface-sunken-border: rgba(0, 0, 0, 0.1);
133
+ --surface-overlay-bg: #ebeae4;
134
+ --surface-overlay-text: #000000;
135
+ --surface-overlay-text-secondary: #000000;
136
+ --surface-overlay-text-muted: #5e5e5b;
137
+ --surface-overlay-icon: #000000;
138
+ --surface-overlay-icon-subtle: #5e5e5b;
139
+ --surface-overlay-shadow: rgba(0, 0, 0, 0.1);
140
+ --surface-overlay-border: rgba(0, 0, 0, 0.1);
141
+ --surface-inverse-bg: #191810;
142
+ --surface-inverse-text: #ffffff;
143
+ --surface-inverse-text-secondary: #ffffff;
144
+ --surface-inverse-text-muted: #a3a39f;
145
+ --surface-inverse-icon: #ffffff;
146
+ --surface-inverse-icon-subtle: #a3a39f;
147
+ --surface-inverse-shadow: rgba(255, 255, 255, 0.25);
148
+ --surface-inverse-border: rgba(255, 255, 255, 0.15);
149
+
150
+ /* Semantic Text Colors */
151
+ --color-text-primary: var(--color-gray-900);
152
+ --color-text-secondary: var(--color-gray-600);
153
+ --color-text-muted: var(--color-gray-600);
154
+ --color-border: var(--color-gray-300);
155
+ --color-input-bg: var(--color-surface-base);
156
+ --color-input-disabled-bg: var(--color-gray-50);
157
+ --color-input-disabled-text: var(--color-gray-500);
158
+ --color-code-bg: var(--color-gray-100);
159
+ /* Interactive Colors - optimized for specific use cases */
160
+ --color-primary-fill: #0b5e74; /* For button backgrounds with white text */
161
+ --color-primary-text: #0b5e74; /* For links and outline buttons on light surfaces */
162
+ /* Translucent Surface Tokens */
163
+ --color-surface-translucent-25: color-mix(in oklab, var(--color-surface-subtle) 25%, transparent 75%);
164
+ --color-surface-translucent-50: color-mix(in oklab, var(--color-surface-subtle) 50%, transparent 50%);
165
+ --color-surface-translucent-75: color-mix(in oklab, var(--color-surface-subtle) 75%, transparent 25%);
166
+ /* Backdrop tokens - used for modal dialogs, drawers, overlays */
167
+
168
+ --backdrop-bg: linear-gradient(
169
+ 135deg,
170
+ rgba(255, 255, 255, 0.2),
171
+ rgba(255, 255, 255, 0.1)
172
+ );
173
+ --backdrop-blur: 10px;
174
+ --backdrop-saturate: 150%;
175
+ --backdrop-brightness: 0.9;
176
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
177
+ --backdrop-opacity: 1;
178
+
179
+ /* Legacy alias for backwards compatibility */
180
+ --backdrop-background: var(--backdrop-bg);
181
+
182
+ /* Mesh Gradient Backgrounds */
183
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #0e7490 25%, transparent) 0px, transparent 50%),
184
+ radial-gradient(at 97% 21%, color-mix(in oklab, #a99b95 22%, transparent) 0px, transparent 50%),
185
+ radial-gradient(at 52% 99%, color-mix(in oklab, #e54271 18%, transparent) 0px, transparent 50%),
186
+ radial-gradient(at 10% 29%, color-mix(in oklab, #0e7490 15%, transparent) 0px, transparent 50%);
187
+
188
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #a99b95 24%, transparent) 0px, transparent 50%),
189
+ radial-gradient(at 80% 0%, color-mix(in oklab, #0e7490 20%, transparent) 0px, transparent 50%),
190
+ radial-gradient(at 0% 50%, color-mix(in oklab, #e54271 17%, transparent) 0px, transparent 50%),
191
+ radial-gradient(at 80% 100%, color-mix(in oklab, #a99b95 15%, transparent) 0px, transparent 50%);
192
+
193
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #e54271 21%, transparent) 0px, transparent 50%),
194
+ radial-gradient(at 85% 30%, color-mix(in oklab, #0e7490 23%, transparent) 0px, transparent 50%),
195
+ radial-gradient(at 50% 80%, color-mix(in oklab, #a99b95 18%, transparent) 0px, transparent 50%),
196
+ radial-gradient(at 90% 90%, color-mix(in oklab, #e54271 16%, transparent) 0px, transparent 50%);
197
+
198
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #0e7490 19%, transparent) 0px, transparent 50%),
199
+ radial-gradient(at 20% 80%, color-mix(in oklab, #a99b95 22%, transparent) 0px, transparent 50%),
200
+ radial-gradient(at 90% 60%, color-mix(in oklab, #e54271 17%, transparent) 0px, transparent 50%),
201
+ radial-gradient(at 30% 40%, color-mix(in oklab, #0e7490 16%, transparent) 0px, transparent 50%);
202
+
203
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #0e7490 23%, transparent) 0px, transparent 50%),
204
+ radial-gradient(at 10% 10%, color-mix(in oklab, #e54271 20%, transparent) 0px, transparent 50%),
205
+ radial-gradient(at 90% 10%, color-mix(in oklab, #a99b95 18%, transparent) 0px, transparent 50%),
206
+ radial-gradient(at 50% 90%, color-mix(in oklab, #e54271 15%, transparent) 0px, transparent 50%);
207
+
208
+
209
+ /* Spacing */
210
+ --spacing-0: 0;
211
+ --spacing-1: 4px;
212
+ --spacing-2: 8px;
213
+ --spacing-3: 12px;
214
+ --spacing-4: 16px;
215
+ --spacing-5: 20px;
216
+ --spacing-6: 24px;
217
+ --spacing-7: 28px;
218
+ --spacing-8: 32px;
219
+ --spacing-9: 36px;
220
+ --spacing-10: 40px;
221
+ --spacing-11: 44px;
222
+ --spacing-12: 48px;
223
+
224
+
225
+ /* Border Radius */
226
+ --radius-none: 0;
227
+ --radius-xs: 4px;
228
+ --radius-sm: 8px;
229
+ --radius-md: 16px;
230
+ --radius-lg: 24px;
231
+ --radius-xl: 32px;
232
+ --radius-full: 9999px;
233
+
234
+
235
+ /* Border Widths */
236
+ --border-width-hairline: 0.5px;
237
+ --border-width-thin: 1px;
238
+ --border-width-medium: 2px;
239
+ --border-width-thick: 3px;
240
+
241
+
242
+ /* Typography */
243
+ --font-family-headings: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
244
+ --font-family-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
245
+ --font-family-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;
246
+ --font-size-xs: 11px;
247
+ --font-size-sm: 13px;
248
+ --font-size-base: 16px;
249
+ --font-size-lg: 19px;
250
+ --font-size-xl: 23px;
251
+ --font-size-2xl: 28px;
252
+ --font-size-3xl: 33px;
253
+ --font-size-4xl: 40px;
254
+ --font-weight-light: 300;
255
+ --font-weight-normal: 400;
256
+ --font-weight-medium: 500;
257
+ --font-weight-semibold: 600;
258
+ --font-weight-bold: 700;
259
+ --font-line-height-tight: 1.25;
260
+ --font-line-height-normal: 1.5;
261
+ --font-line-height-relaxed: 1.75;
262
+
263
+
264
+ /* Shadows */
265
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
266
+ --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.05);
267
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.05);
268
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
269
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.05);
270
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
271
+
272
+
273
+ /* Layout */
274
+ --layout-max-width: 1200px;
275
+ --layout-min-height: 100vh;
276
+ --layout-container-padding: var(--spacing-6)px;
277
+ --layout-page-margin: 120px;
278
+ --layout-section-gap: 160px;
279
+ --layout-container-gap: 200px;
280
+ --layout-hero-spacing: 240px;
281
+ --layout-footer-spacing: 160px;
282
+
283
+
284
+ /* Transitions */
285
+ --transition-fast: 150ms;
286
+ --transition-normal: 250ms;
287
+ --transition-slow: 350ms;
288
+
289
+
290
+ /* Z-Index */
291
+ --z-dropdown: 1000;
292
+ --z-sticky: 1020;
293
+ --z-fixed: 1030;
294
+ --z-modal: 1040;
295
+ --z-drawer: 1050;
296
+ --z-popover: 1060;
297
+ --z-tooltip: 1070;
298
+ --z-notification: 1080;
299
+
300
+
301
+ /* Icon System */
302
+ --icon-set: phosphor;
303
+ --icon-weight: regular;
304
+ --icon-size: 24px;
305
+ --icon-size-xs: 16px;
306
+ --icon-size-sm: 20px;
307
+ --icon-size-md: 24px;
308
+ --icon-size-lg: 32px;
309
+ --icon-size-xl: 48px;
310
+ --icon-size-2xl: 64px;
311
+
312
+
313
+ }
314
+
315
+ html[data-theme="dark"] {
316
+ --color-surface-base: #16171a;
317
+ --color-surface-subtle: #111214;
318
+ --color-surface-elevated: #0d0d0f;
319
+ --color-surface-sunken: #131416;
320
+ --color-surface-overlay: #1b1c20;
321
+ --color-surface-inverse: #f2f2f3;
322
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
323
+ --color-surface-fieldset-base: #0d0d0f;
324
+ --color-surface-fieldset-subtle: #1b1c20;
325
+ --color-surface-fieldset-elevated: #1f1f24;
326
+ --color-surface-fieldset-sunken: #0d0d0f;
327
+ --color-surface-fieldset-overlay: #25272c;
328
+ --color-primary-50: #c5f2fa;
329
+ --color-primary-100: #93eaf9;
330
+ --color-primary-200: #5fe4fa;
331
+ --color-primary-300: #2ddbf9;
332
+ --color-primary-400: #07cbed;
333
+ --color-primary-500: #06b6d4;
334
+ --color-primary-600: #058ba2;
335
+ --color-primary-700: #036171;
336
+ --color-primary-800: #02404a;
337
+ --color-primary-900: #012b32;
338
+ --color-secondary-50: #f1f2f4;
339
+ --color-secondary-100: #e2e5e9;
340
+ --color-secondary-200: #cfd1d5;
341
+ --color-secondary-300: #b4b8bd;
342
+ --color-secondary-400: #999ea5;
343
+ --color-secondary-500: #8b9199;
344
+ --color-secondary-600: #717780;
345
+ --color-secondary-700: #595e65;
346
+ --color-secondary-800: #41454a;
347
+ --color-secondary-900: #292c2f;
348
+ --color-accent-50: #3a0e1b;
349
+ --color-accent-100: #5b162a;
350
+ --color-accent-200: #7c1e3a;
351
+ --color-accent-300: #9c2749;
352
+ --color-accent-400: #ce2d5b;
353
+ --color-accent-500: #d53b68;
354
+ --color-accent-600: #dc5f84;
355
+ --color-accent-700: #e4839f;
356
+ --color-accent-800: #f4c1d0;
357
+ --color-accent-900: #f6d6e0;
358
+ --color-gray-50: #fafafa;
359
+ --color-gray-100: #f1f2f3;
360
+ --color-gray-200: #dee0e2;
361
+ --color-gray-300: #c3c6cb;
362
+ --color-gray-400: #9298a0;
363
+ --color-gray-500: #8b9199;
364
+ --color-gray-600: #667180;
365
+ --color-gray-700: #4c5766;
366
+ --color-gray-800: #2b323b;
367
+ --color-gray-900: #15191e;
368
+ --color-success-50: #072207;
369
+ --color-success-100: #0b330b;
370
+ --color-success-200: #115411;
371
+ --color-success-300: #187618;
372
+ --color-success-400: #1da61d;
373
+ --color-success-500: #20b820;
374
+ --color-success-600: #2ad92a;
375
+ --color-success-700: #4fe14f;
376
+ --color-success-800: #94ee94;
377
+ --color-success-900: #c1f4c1;
378
+ --color-info-50: #071c22;
379
+ --color-info-100: #0b2a33;
380
+ --color-info-200: #0e3844;
381
+ --color-info-300: #114654;
382
+ --color-info-400: #145e72;
383
+ --color-info-500: #176d84;
384
+ --color-info-600: #1e8baa;
385
+ --color-info-700: #24a9ce;
386
+ --color-info-800: #5ac7e5;
387
+ --color-info-900: #87d4e9;
388
+ --color-warning-50: #251c04;
389
+ --color-warning-100: #372b06;
390
+ --color-warning-200: #493908;
391
+ --color-warning-300: #5c480a;
392
+ --color-warning-400: #8d6c0b;
393
+ --color-warning-500: #a07c0d;
394
+ --color-warning-600: #c89a10;
395
+ --color-warning-700: #ecb718;
396
+ --color-warning-800: #f6d05d;
397
+ --color-warning-900: #f6dc8e;
398
+ --color-danger-50: #220707;
399
+ --color-danger-100: #440e0e;
400
+ --color-danger-200: #651515;
401
+ --color-danger-300: #871c1c;
402
+ --color-danger-400: #b82121;
403
+ --color-danger-500: #ca2424;
404
+ --color-danger-600: #dd3e3e;
405
+ --color-danger-700: #e26262;
406
+ --color-danger-800: #f2aaaa;
407
+ --color-danger-900: #f6d5d5;
408
+ /* Smart Surface Tokens (dark mode, context-aware) */
409
+ --surface-base-bg: #16171a;
410
+ --surface-base-text: #ffffff;
411
+ --surface-base-text-secondary: #ffffff;
412
+ --surface-base-text-muted: #a2a2a3;
413
+ --surface-base-icon: #ffffff;
414
+ --surface-base-icon-subtle: #a2a2a3;
415
+ --surface-base-shadow: rgba(255, 255, 255, 0.25);
416
+ --surface-base-border: rgba(255, 255, 255, 0.15);
417
+ --surface-subtle-bg: #111214;
418
+ --surface-subtle-text: #ffffff;
419
+ --surface-subtle-text-secondary: #ffffff;
420
+ --surface-subtle-text-muted: #a0a0a1;
421
+ --surface-subtle-icon: #ffffff;
422
+ --surface-subtle-icon-subtle: #a0a0a1;
423
+ --surface-subtle-shadow: rgba(255, 255, 255, 0.25);
424
+ --surface-subtle-border: rgba(255, 255, 255, 0.15);
425
+ --surface-elevated-bg: #0d0d0f;
426
+ --surface-elevated-text: #ffffff;
427
+ --surface-elevated-text-secondary: #ffffff;
428
+ --surface-elevated-text-muted: #9e9e9f;
429
+ --surface-elevated-icon: #ffffff;
430
+ --surface-elevated-icon-subtle: #9e9e9f;
431
+ --surface-elevated-shadow: rgba(255, 255, 255, 0.25);
432
+ --surface-elevated-border: rgba(255, 255, 255, 0.15);
433
+ --surface-sunken-bg: #131416;
434
+ --surface-sunken-text: #ffffff;
435
+ --surface-sunken-text-secondary: #ffffff;
436
+ --surface-sunken-text-muted: #a1a1a2;
437
+ --surface-sunken-icon: #ffffff;
438
+ --surface-sunken-icon-subtle: #a1a1a2;
439
+ --surface-sunken-shadow: rgba(255, 255, 255, 0.25);
440
+ --surface-sunken-border: rgba(255, 255, 255, 0.15);
441
+ --surface-overlay-bg: #1b1c20;
442
+ --surface-overlay-text: #ffffff;
443
+ --surface-overlay-text-secondary: #ffffff;
444
+ --surface-overlay-text-muted: #a4a4a6;
445
+ --surface-overlay-icon: #ffffff;
446
+ --surface-overlay-icon-subtle: #a4a4a6;
447
+ --surface-overlay-shadow: rgba(255, 255, 255, 0.25);
448
+ --surface-overlay-border: rgba(255, 255, 255, 0.15);
449
+ --surface-inverse-bg: #f2f2f3;
450
+ --surface-inverse-text: #000000;
451
+ --surface-inverse-text-secondary: #000000;
452
+ --surface-inverse-text-muted: #616161;
453
+ --surface-inverse-icon: #000000;
454
+ --surface-inverse-icon-subtle: #616161;
455
+ --surface-inverse-shadow: rgba(0, 0, 0, 0.1);
456
+ --surface-inverse-border: rgba(0, 0, 0, 0.1);
457
+
458
+ --color-text-primary: var(--color-gray-100);
459
+ --color-text-secondary: var(--color-gray-300);
460
+ --color-text-muted: var(--color-gray-400);
461
+ --color-border: var(--color-gray-700);
462
+ --color-input-bg: var(--color-gray-800);
463
+ --color-input-disabled-bg: var(--color-gray-900);
464
+ --color-input-disabled-text: var(--color-gray-600);
465
+ --color-code-bg: var(--color-gray-800);
466
+ /* Interactive Colors - optimized for specific use cases (dark mode) */
467
+ --color-primary-fill: #036171; /* For button backgrounds with white text */
468
+ --color-primary-text: #06b6d4; /* For links and outline buttons on dark surfaces */
469
+ /* Backdrop tokens - dark mode */
470
+ --backdrop-bg: linear-gradient(
471
+ 135deg,
472
+ rgba(0, 0, 0, 0.6),
473
+ rgba(0, 0, 0, 0.4)
474
+ );
475
+ --backdrop-blur: 10px;
476
+ --backdrop-saturate: 120%;
477
+ --backdrop-brightness: 0.7;
478
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
479
+ --backdrop-opacity: 1;
480
+
481
+ /* Legacy alias for backwards compatibility */
482
+ --backdrop-background: var(--backdrop-bg);
483
+ /* Mesh Gradient Variables (Dark Mode) */
484
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #07cbed 20%, transparent) 0px, transparent 50%),
485
+ radial-gradient(at 97% 21%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
486
+ radial-gradient(at 52% 99%, color-mix(in oklab, #ce2d5b 13%, transparent) 0px, transparent 50%),
487
+ radial-gradient(at 10% 29%, color-mix(in oklab, #07cbed 10%, transparent) 0px, transparent 50%);
488
+
489
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #999ea5 18%, transparent) 0px, transparent 50%),
490
+ radial-gradient(at 80% 0%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
491
+ radial-gradient(at 0% 50%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
492
+ radial-gradient(at 80% 100%, color-mix(in oklab, #999ea5 10%, transparent) 0px, transparent 50%);
493
+
494
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #ce2d5b 15%, transparent) 0px, transparent 50%),
495
+ radial-gradient(at 85% 30%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
496
+ radial-gradient(at 50% 80%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
497
+ radial-gradient(at 90% 90%, color-mix(in oklab, #ce2d5b 11%, transparent) 0px, transparent 50%);
498
+
499
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
500
+ radial-gradient(at 20% 80%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
501
+ radial-gradient(at 90% 60%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
502
+ radial-gradient(at 30% 40%, color-mix(in oklab, #07cbed 11%, transparent) 0px, transparent 50%);
503
+
504
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
505
+ radial-gradient(at 10% 10%, color-mix(in oklab, #ce2d5b 14%, transparent) 0px, transparent 50%),
506
+ radial-gradient(at 90% 10%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
507
+ radial-gradient(at 50% 90%, color-mix(in oklab, #ce2d5b 10%, transparent) 0px, transparent 50%);
508
+ }
509
+
510
+ }
511
+ /* Non-layered dark variables fallback (ensures attribute wins) */
512
+ html[data-theme="dark"] {
513
+ --color-surface-base: #16171a;
514
+ --color-surface-subtle: #111214;
515
+ --color-surface-elevated: #0d0d0f;
516
+ --color-surface-sunken: #131416;
517
+ --color-surface-overlay: #1b1c20;
518
+ --color-surface-inverse: #f2f2f3;
519
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
520
+ --color-surface-fieldset-base: #0d0d0f;
521
+ --color-surface-fieldset-subtle: #1b1c20;
522
+ --color-surface-fieldset-elevated: #1f1f24;
523
+ --color-surface-fieldset-sunken: #0d0d0f;
524
+ --color-surface-fieldset-overlay: #25272c;
525
+ --color-primary-50: #c5f2fa;
526
+ --color-primary-100: #93eaf9;
527
+ --color-primary-200: #5fe4fa;
528
+ --color-primary-300: #2ddbf9;
529
+ --color-primary-400: #07cbed;
530
+ --color-primary-500: #06b6d4;
531
+ --color-primary-600: #058ba2;
532
+ --color-primary-700: #036171;
533
+ --color-primary-800: #02404a;
534
+ --color-primary-900: #012b32;
535
+ --color-secondary-50: #f1f2f4;
536
+ --color-secondary-100: #e2e5e9;
537
+ --color-secondary-200: #cfd1d5;
538
+ --color-secondary-300: #b4b8bd;
539
+ --color-secondary-400: #999ea5;
540
+ --color-secondary-500: #8b9199;
541
+ --color-secondary-600: #717780;
542
+ --color-secondary-700: #595e65;
543
+ --color-secondary-800: #41454a;
544
+ --color-secondary-900: #292c2f;
545
+ --color-accent-50: #3a0e1b;
546
+ --color-accent-100: #5b162a;
547
+ --color-accent-200: #7c1e3a;
548
+ --color-accent-300: #9c2749;
549
+ --color-accent-400: #ce2d5b;
550
+ --color-accent-500: #d53b68;
551
+ --color-accent-600: #dc5f84;
552
+ --color-accent-700: #e4839f;
553
+ --color-accent-800: #f4c1d0;
554
+ --color-accent-900: #f6d6e0;
555
+ --color-gray-50: #fafafa;
556
+ --color-gray-100: #f1f2f3;
557
+ --color-gray-200: #dee0e2;
558
+ --color-gray-300: #c3c6cb;
559
+ --color-gray-400: #9298a0;
560
+ --color-gray-500: #8b9199;
561
+ --color-gray-600: #667180;
562
+ --color-gray-700: #4c5766;
563
+ --color-gray-800: #2b323b;
564
+ --color-gray-900: #15191e;
565
+ --color-success-50: #072207;
566
+ --color-success-100: #0b330b;
567
+ --color-success-200: #115411;
568
+ --color-success-300: #187618;
569
+ --color-success-400: #1da61d;
570
+ --color-success-500: #20b820;
571
+ --color-success-600: #2ad92a;
572
+ --color-success-700: #4fe14f;
573
+ --color-success-800: #94ee94;
574
+ --color-success-900: #c1f4c1;
575
+ --color-info-50: #071c22;
576
+ --color-info-100: #0b2a33;
577
+ --color-info-200: #0e3844;
578
+ --color-info-300: #114654;
579
+ --color-info-400: #145e72;
580
+ --color-info-500: #176d84;
581
+ --color-info-600: #1e8baa;
582
+ --color-info-700: #24a9ce;
583
+ --color-info-800: #5ac7e5;
584
+ --color-info-900: #87d4e9;
585
+ --color-warning-50: #251c04;
586
+ --color-warning-100: #372b06;
587
+ --color-warning-200: #493908;
588
+ --color-warning-300: #5c480a;
589
+ --color-warning-400: #8d6c0b;
590
+ --color-warning-500: #a07c0d;
591
+ --color-warning-600: #c89a10;
592
+ --color-warning-700: #ecb718;
593
+ --color-warning-800: #f6d05d;
594
+ --color-warning-900: #f6dc8e;
595
+ --color-danger-50: #220707;
596
+ --color-danger-100: #440e0e;
597
+ --color-danger-200: #651515;
598
+ --color-danger-300: #871c1c;
599
+ --color-danger-400: #b82121;
600
+ --color-danger-500: #ca2424;
601
+ --color-danger-600: #dd3e3e;
602
+ --color-danger-700: #e26262;
603
+ --color-danger-800: #f2aaaa;
604
+ --color-danger-900: #f6d5d5;
605
+ /* Smart Surface Tokens (dark mode, context-aware) */
606
+ --surface-base-bg: #16171a;
607
+ --surface-base-text: #ffffff;
608
+ --surface-base-text-secondary: #ffffff;
609
+ --surface-base-text-muted: #a2a2a3;
610
+ --surface-base-icon: #ffffff;
611
+ --surface-base-icon-subtle: #a2a2a3;
612
+ --surface-base-shadow: rgba(255, 255, 255, 0.25);
613
+ --surface-base-border: rgba(255, 255, 255, 0.15);
614
+ --surface-subtle-bg: #111214;
615
+ --surface-subtle-text: #ffffff;
616
+ --surface-subtle-text-secondary: #ffffff;
617
+ --surface-subtle-text-muted: #a0a0a1;
618
+ --surface-subtle-icon: #ffffff;
619
+ --surface-subtle-icon-subtle: #a0a0a1;
620
+ --surface-subtle-shadow: rgba(255, 255, 255, 0.25);
621
+ --surface-subtle-border: rgba(255, 255, 255, 0.15);
622
+ --surface-elevated-bg: #0d0d0f;
623
+ --surface-elevated-text: #ffffff;
624
+ --surface-elevated-text-secondary: #ffffff;
625
+ --surface-elevated-text-muted: #9e9e9f;
626
+ --surface-elevated-icon: #ffffff;
627
+ --surface-elevated-icon-subtle: #9e9e9f;
628
+ --surface-elevated-shadow: rgba(255, 255, 255, 0.25);
629
+ --surface-elevated-border: rgba(255, 255, 255, 0.15);
630
+ --surface-sunken-bg: #131416;
631
+ --surface-sunken-text: #ffffff;
632
+ --surface-sunken-text-secondary: #ffffff;
633
+ --surface-sunken-text-muted: #a1a1a2;
634
+ --surface-sunken-icon: #ffffff;
635
+ --surface-sunken-icon-subtle: #a1a1a2;
636
+ --surface-sunken-shadow: rgba(255, 255, 255, 0.25);
637
+ --surface-sunken-border: rgba(255, 255, 255, 0.15);
638
+ --surface-overlay-bg: #1b1c20;
639
+ --surface-overlay-text: #ffffff;
640
+ --surface-overlay-text-secondary: #ffffff;
641
+ --surface-overlay-text-muted: #a4a4a6;
642
+ --surface-overlay-icon: #ffffff;
643
+ --surface-overlay-icon-subtle: #a4a4a6;
644
+ --surface-overlay-shadow: rgba(255, 255, 255, 0.25);
645
+ --surface-overlay-border: rgba(255, 255, 255, 0.15);
646
+ --surface-inverse-bg: #f2f2f3;
647
+ --surface-inverse-text: #000000;
648
+ --surface-inverse-text-secondary: #000000;
649
+ --surface-inverse-text-muted: #616161;
650
+ --surface-inverse-icon: #000000;
651
+ --surface-inverse-icon-subtle: #616161;
652
+ --surface-inverse-shadow: rgba(0, 0, 0, 0.1);
653
+ --surface-inverse-border: rgba(0, 0, 0, 0.1);
654
+
655
+ --color-text-primary: var(--color-gray-100);
656
+ --color-text-secondary: var(--color-gray-300);
657
+ --color-text-muted: var(--color-gray-400);
658
+ --color-border: var(--color-gray-700);
659
+ --color-input-bg: var(--color-gray-800);
660
+ --color-input-disabled-bg: var(--color-gray-900);
661
+ --color-input-disabled-text: var(--color-gray-600);
662
+ --color-code-bg: var(--color-gray-800);
663
+ /* Backdrop tokens - dark mode */
664
+ --backdrop-bg: linear-gradient(
665
+ 135deg,
666
+ rgba(0, 0, 0, 0.6),
667
+ rgba(0, 0, 0, 0.4)
668
+ );
669
+ --backdrop-blur: 10px;
670
+ --backdrop-saturate: 120%;
671
+ --backdrop-brightness: 0.7;
672
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
673
+ --backdrop-opacity: 1;
674
+
675
+ /* Legacy alias for backwards compatibility */
676
+ --backdrop-background: var(--backdrop-bg);
677
+
678
+ /* Mesh Gradient Backgrounds (Dark Mode) */
679
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #07cbed 20%, transparent) 0px, transparent 50%),
680
+ radial-gradient(at 97% 21%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
681
+ radial-gradient(at 52% 99%, color-mix(in oklab, #ce2d5b 13%, transparent) 0px, transparent 50%),
682
+ radial-gradient(at 10% 29%, color-mix(in oklab, #07cbed 10%, transparent) 0px, transparent 50%);
683
+
684
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #999ea5 18%, transparent) 0px, transparent 50%),
685
+ radial-gradient(at 80% 0%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
686
+ radial-gradient(at 0% 50%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
687
+ radial-gradient(at 80% 100%, color-mix(in oklab, #999ea5 10%, transparent) 0px, transparent 50%);
688
+
689
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #ce2d5b 15%, transparent) 0px, transparent 50%),
690
+ radial-gradient(at 85% 30%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
691
+ radial-gradient(at 50% 80%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
692
+ radial-gradient(at 90% 90%, color-mix(in oklab, #ce2d5b 11%, transparent) 0px, transparent 50%);
693
+
694
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
695
+ radial-gradient(at 20% 80%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
696
+ radial-gradient(at 90% 60%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
697
+ radial-gradient(at 30% 40%, color-mix(in oklab, #07cbed 11%, transparent) 0px, transparent 50%);
698
+
699
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
700
+ radial-gradient(at 10% 10%, color-mix(in oklab, #ce2d5b 14%, transparent) 0px, transparent 50%),
701
+ radial-gradient(at 90% 10%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
702
+ radial-gradient(at 50% 90%, color-mix(in oklab, #ce2d5b 10%, transparent) 0px, transparent 50%);
703
+ }
704
+ `);
705
+
706
+ export const tokensCSS = `@layer tokens {
707
+ :root {
708
+ /* Colors */
709
+ --color-primary-50: #95dbee;
710
+ --color-primary-100: #65ceeb;
711
+ --color-primary-200: #32c3eb;
712
+ --color-primary-300: #15acd6;
713
+ --color-primary-400: #1087a7;
714
+ --color-primary-500: #0e7490;
715
+ --color-primary-600: #0b5e74;
716
+ --color-primary-700: #094b5d;
717
+ --color-primary-800: #073846;
718
+ --color-primary-900: #05252e;
719
+ --color-secondary-50: #f4f2f1;
720
+ --color-secondary-100: #e9e4e2;
721
+ --color-secondary-200: #ddd7d5;
722
+ --color-secondary-300: #c6bdb9;
723
+ --color-secondary-400: #afa29c;
724
+ --color-secondary-500: #a99b95;
725
+ --color-secondary-600: #928079;
726
+ --color-secondary-700: #776761;
727
+ --color-secondary-800: #5b4f4a;
728
+ --color-secondary-900: #3f3733;
729
+ --color-accent-50: #fbeaef;
730
+ --color-accent-100: #f8d3de;
731
+ --color-accent-200: #f4b2c5;
732
+ --color-accent-300: #ee85a4;
733
+ --color-accent-400: #e85882;
734
+ --color-accent-500: #e54271;
735
+ --color-accent-600: #d61e53;
736
+ --color-accent-700: #aa1742;
737
+ --color-accent-800: #7d1130;
738
+ --color-accent-900: #500b1f;
739
+ --color-success-50: #d3f8d3;
740
+ --color-success-100: #a4f3a4;
741
+ --color-success-200: #73f273;
742
+ --color-success-300: #44ed44;
743
+ --color-success-400: #16e816;
744
+ --color-success-500: #14d114;
745
+ --color-success-600: #10a210;
746
+ --color-success-700: #0b740b;
747
+ --color-success-800: #074607;
748
+ --color-success-900: #042f04;
749
+ --color-warning-50: #fae39f;
750
+ --color-warning-100: #fbd76a;
751
+ --color-warning-200: #ffcc33;
752
+ --color-warning-300: #ffbf00;
753
+ --color-warning-400: #cc9900;
754
+ --color-warning-500: #B38600;
755
+ --color-warning-600: #806000;
756
+ --color-warning-700: #664c00;
757
+ --color-warning-800: #4d3900;
758
+ --color-warning-900: #332600;
759
+ --color-danger-50: #fbe9e9;
760
+ --color-danger-100: #f6bbbb;
761
+ --color-danger-200: #f38b8b;
762
+ --color-danger-300: #ef5d5d;
763
+ --color-danger-400: #ea2e2e;
764
+ --color-danger-500: #e81717;
765
+ --color-danger-600: #ba1212;
766
+ --color-danger-700: #8b0e0e;
767
+ --color-danger-800: #5d0909;
768
+ --color-danger-900: #2e0505;
769
+ --color-info-50: #95dbee;
770
+ --color-info-100: #65ceeb;
771
+ --color-info-200: #32c3eb;
772
+ --color-info-300: #15acd6;
773
+ --color-info-400: #1087a7;
774
+ --color-info-500: #0e7490;
775
+ --color-info-600: #0b5e74;
776
+ --color-info-700: #094b5d;
777
+ --color-info-800: #073846;
778
+ --color-info-900: #05252e;
779
+ --color-gray-50: #fafaf9;
780
+ --color-gray-100: #f4f2f1;
781
+ --color-gray-200: #e3dfdd;
782
+ --color-gray-300: #cdc5c1;
783
+ --color-gray-400: #a3958f;
784
+ --color-gray-500: #a99b95;
785
+ --color-gray-600: #846c62;
786
+ --color-gray-700: #695349;
787
+ --color-gray-800: #3d2f29;
788
+ --color-gray-900: #1f1714;
789
+ --color-surface-base: #e7e6de;
790
+ --color-surface-subtle: #e3e2d8;
791
+ --color-surface-elevated: #deddd2;
792
+ --color-surface-sunken: #dad9cc;
793
+ --color-surface-overlay: #ebeae4;
794
+ --color-surface-inverse: #191810;
795
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
796
+ --color-surface-fieldset-base: #e3e2d8;
797
+ --color-surface-fieldset-subtle: #deddd2;
798
+ --color-surface-fieldset-elevated: #dad9cc;
799
+ --color-surface-fieldset-sunken: #d1d0c0;
800
+ --color-surface-fieldset-overlay: #deddd2;
801
+ /* Smart Surface Tokens (context-aware) */
802
+ --surface-base-bg: #e7e6de;
803
+ --surface-base-text: #000000;
804
+ --surface-base-text-secondary: #000000;
805
+ --surface-base-text-muted: #5c5c59;
806
+ --surface-base-icon: #000000;
807
+ --surface-base-icon-subtle: #5c5c59;
808
+ --surface-base-shadow: rgba(0, 0, 0, 0.1);
809
+ --surface-base-border: rgba(0, 0, 0, 0.1);
810
+ --surface-subtle-bg: #e3e2d8;
811
+ --surface-subtle-text: #000000;
812
+ --surface-subtle-text-secondary: #000000;
813
+ --surface-subtle-text-muted: #5b5a56;
814
+ --surface-subtle-icon: #000000;
815
+ --surface-subtle-icon-subtle: #5b5a56;
816
+ --surface-subtle-shadow: rgba(0, 0, 0, 0.1);
817
+ --surface-subtle-border: rgba(0, 0, 0, 0.1);
818
+ --surface-elevated-bg: #deddd2;
819
+ --surface-elevated-text: #000000;
820
+ --surface-elevated-text-secondary: #000000;
821
+ --surface-elevated-text-muted: #595854;
822
+ --surface-elevated-icon: #000000;
823
+ --surface-elevated-icon-subtle: #595854;
824
+ --surface-elevated-shadow: rgba(0, 0, 0, 0.1);
825
+ --surface-elevated-border: rgba(0, 0, 0, 0.1);
826
+ --surface-sunken-bg: #dad9cc;
827
+ --surface-sunken-text: #000000;
828
+ --surface-sunken-text-secondary: #000000;
829
+ --surface-sunken-text-muted: #575752;
830
+ --surface-sunken-icon: #000000;
831
+ --surface-sunken-icon-subtle: #575752;
832
+ --surface-sunken-shadow: rgba(0, 0, 0, 0.1);
833
+ --surface-sunken-border: rgba(0, 0, 0, 0.1);
834
+ --surface-overlay-bg: #ebeae4;
835
+ --surface-overlay-text: #000000;
836
+ --surface-overlay-text-secondary: #000000;
837
+ --surface-overlay-text-muted: #5e5e5b;
838
+ --surface-overlay-icon: #000000;
839
+ --surface-overlay-icon-subtle: #5e5e5b;
840
+ --surface-overlay-shadow: rgba(0, 0, 0, 0.1);
841
+ --surface-overlay-border: rgba(0, 0, 0, 0.1);
842
+ --surface-inverse-bg: #191810;
843
+ --surface-inverse-text: #ffffff;
844
+ --surface-inverse-text-secondary: #ffffff;
845
+ --surface-inverse-text-muted: #a3a39f;
846
+ --surface-inverse-icon: #ffffff;
847
+ --surface-inverse-icon-subtle: #a3a39f;
848
+ --surface-inverse-shadow: rgba(255, 255, 255, 0.25);
849
+ --surface-inverse-border: rgba(255, 255, 255, 0.15);
850
+
851
+ /* Semantic Text Colors */
852
+ --color-text-primary: var(--color-gray-900);
853
+ --color-text-secondary: var(--color-gray-600);
854
+ --color-text-muted: var(--color-gray-600);
855
+ --color-border: var(--color-gray-300);
856
+ --color-input-bg: var(--color-surface-base);
857
+ --color-input-disabled-bg: var(--color-gray-50);
858
+ --color-input-disabled-text: var(--color-gray-500);
859
+ --color-code-bg: var(--color-gray-100);
860
+ /* Interactive Colors - optimized for specific use cases */
861
+ --color-primary-fill: #0b5e74; /* For button backgrounds with white text */
862
+ --color-primary-text: #0b5e74; /* For links and outline buttons on light surfaces */
863
+ /* Translucent Surface Tokens */
864
+ --color-surface-translucent-25: color-mix(in oklab, var(--color-surface-subtle) 25%, transparent 75%);
865
+ --color-surface-translucent-50: color-mix(in oklab, var(--color-surface-subtle) 50%, transparent 50%);
866
+ --color-surface-translucent-75: color-mix(in oklab, var(--color-surface-subtle) 75%, transparent 25%);
867
+ /* Backdrop tokens - used for modal dialogs, drawers, overlays */
868
+
869
+ --backdrop-bg: linear-gradient(
870
+ 135deg,
871
+ rgba(255, 255, 255, 0.2),
872
+ rgba(255, 255, 255, 0.1)
873
+ );
874
+ --backdrop-blur: 10px;
875
+ --backdrop-saturate: 150%;
876
+ --backdrop-brightness: 0.9;
877
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
878
+ --backdrop-opacity: 1;
879
+
880
+ /* Legacy alias for backwards compatibility */
881
+ --backdrop-background: var(--backdrop-bg);
882
+
883
+ /* Mesh Gradient Backgrounds */
884
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #0e7490 25%, transparent) 0px, transparent 50%),
885
+ radial-gradient(at 97% 21%, color-mix(in oklab, #a99b95 22%, transparent) 0px, transparent 50%),
886
+ radial-gradient(at 52% 99%, color-mix(in oklab, #e54271 18%, transparent) 0px, transparent 50%),
887
+ radial-gradient(at 10% 29%, color-mix(in oklab, #0e7490 15%, transparent) 0px, transparent 50%);
888
+
889
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #a99b95 24%, transparent) 0px, transparent 50%),
890
+ radial-gradient(at 80% 0%, color-mix(in oklab, #0e7490 20%, transparent) 0px, transparent 50%),
891
+ radial-gradient(at 0% 50%, color-mix(in oklab, #e54271 17%, transparent) 0px, transparent 50%),
892
+ radial-gradient(at 80% 100%, color-mix(in oklab, #a99b95 15%, transparent) 0px, transparent 50%);
893
+
894
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #e54271 21%, transparent) 0px, transparent 50%),
895
+ radial-gradient(at 85% 30%, color-mix(in oklab, #0e7490 23%, transparent) 0px, transparent 50%),
896
+ radial-gradient(at 50% 80%, color-mix(in oklab, #a99b95 18%, transparent) 0px, transparent 50%),
897
+ radial-gradient(at 90% 90%, color-mix(in oklab, #e54271 16%, transparent) 0px, transparent 50%);
898
+
899
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #0e7490 19%, transparent) 0px, transparent 50%),
900
+ radial-gradient(at 20% 80%, color-mix(in oklab, #a99b95 22%, transparent) 0px, transparent 50%),
901
+ radial-gradient(at 90% 60%, color-mix(in oklab, #e54271 17%, transparent) 0px, transparent 50%),
902
+ radial-gradient(at 30% 40%, color-mix(in oklab, #0e7490 16%, transparent) 0px, transparent 50%);
903
+
904
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #0e7490 23%, transparent) 0px, transparent 50%),
905
+ radial-gradient(at 10% 10%, color-mix(in oklab, #e54271 20%, transparent) 0px, transparent 50%),
906
+ radial-gradient(at 90% 10%, color-mix(in oklab, #a99b95 18%, transparent) 0px, transparent 50%),
907
+ radial-gradient(at 50% 90%, color-mix(in oklab, #e54271 15%, transparent) 0px, transparent 50%);
908
+
909
+
910
+ /* Spacing */
911
+ --spacing-0: 0;
912
+ --spacing-1: 4px;
913
+ --spacing-2: 8px;
914
+ --spacing-3: 12px;
915
+ --spacing-4: 16px;
916
+ --spacing-5: 20px;
917
+ --spacing-6: 24px;
918
+ --spacing-7: 28px;
919
+ --spacing-8: 32px;
920
+ --spacing-9: 36px;
921
+ --spacing-10: 40px;
922
+ --spacing-11: 44px;
923
+ --spacing-12: 48px;
924
+
925
+
926
+ /* Border Radius */
927
+ --radius-none: 0;
928
+ --radius-xs: 4px;
929
+ --radius-sm: 8px;
930
+ --radius-md: 16px;
931
+ --radius-lg: 24px;
932
+ --radius-xl: 32px;
933
+ --radius-full: 9999px;
934
+
935
+
936
+ /* Border Widths */
937
+ --border-width-hairline: 0.5px;
938
+ --border-width-thin: 1px;
939
+ --border-width-medium: 2px;
940
+ --border-width-thick: 3px;
941
+
942
+
943
+ /* Typography */
944
+ --font-family-headings: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
945
+ --font-family-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
946
+ --font-family-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;
947
+ --font-size-xs: 11px;
948
+ --font-size-sm: 13px;
949
+ --font-size-base: 16px;
950
+ --font-size-lg: 19px;
951
+ --font-size-xl: 23px;
952
+ --font-size-2xl: 28px;
953
+ --font-size-3xl: 33px;
954
+ --font-size-4xl: 40px;
955
+ --font-weight-light: 300;
956
+ --font-weight-normal: 400;
957
+ --font-weight-medium: 500;
958
+ --font-weight-semibold: 600;
959
+ --font-weight-bold: 700;
960
+ --font-line-height-tight: 1.25;
961
+ --font-line-height-normal: 1.5;
962
+ --font-line-height-relaxed: 1.75;
963
+
964
+
965
+ /* Shadows */
966
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
967
+ --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.05);
968
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.05);
969
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
970
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.05);
971
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
972
+
973
+
974
+ /* Layout */
975
+ --layout-max-width: 1200px;
976
+ --layout-min-height: 100vh;
977
+ --layout-container-padding: var(--spacing-6)px;
978
+ --layout-page-margin: 120px;
979
+ --layout-section-gap: 160px;
980
+ --layout-container-gap: 200px;
981
+ --layout-hero-spacing: 240px;
982
+ --layout-footer-spacing: 160px;
983
+
984
+
985
+ /* Transitions */
986
+ --transition-fast: 150ms;
987
+ --transition-normal: 250ms;
988
+ --transition-slow: 350ms;
989
+
990
+
991
+ /* Z-Index */
992
+ --z-dropdown: 1000;
993
+ --z-sticky: 1020;
994
+ --z-fixed: 1030;
995
+ --z-modal: 1040;
996
+ --z-drawer: 1050;
997
+ --z-popover: 1060;
998
+ --z-tooltip: 1070;
999
+ --z-notification: 1080;
1000
+
1001
+
1002
+ /* Icon System */
1003
+ --icon-set: phosphor;
1004
+ --icon-weight: regular;
1005
+ --icon-size: 24px;
1006
+ --icon-size-xs: 16px;
1007
+ --icon-size-sm: 20px;
1008
+ --icon-size-md: 24px;
1009
+ --icon-size-lg: 32px;
1010
+ --icon-size-xl: 48px;
1011
+ --icon-size-2xl: 64px;
1012
+
1013
+
1014
+ }
1015
+
1016
+ html[data-theme="dark"] {
1017
+ --color-surface-base: #16171a;
1018
+ --color-surface-subtle: #111214;
1019
+ --color-surface-elevated: #0d0d0f;
1020
+ --color-surface-sunken: #131416;
1021
+ --color-surface-overlay: #1b1c20;
1022
+ --color-surface-inverse: #f2f2f3;
1023
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
1024
+ --color-surface-fieldset-base: #0d0d0f;
1025
+ --color-surface-fieldset-subtle: #1b1c20;
1026
+ --color-surface-fieldset-elevated: #1f1f24;
1027
+ --color-surface-fieldset-sunken: #0d0d0f;
1028
+ --color-surface-fieldset-overlay: #25272c;
1029
+ --color-primary-50: #c5f2fa;
1030
+ --color-primary-100: #93eaf9;
1031
+ --color-primary-200: #5fe4fa;
1032
+ --color-primary-300: #2ddbf9;
1033
+ --color-primary-400: #07cbed;
1034
+ --color-primary-500: #06b6d4;
1035
+ --color-primary-600: #058ba2;
1036
+ --color-primary-700: #036171;
1037
+ --color-primary-800: #02404a;
1038
+ --color-primary-900: #012b32;
1039
+ --color-secondary-50: #f1f2f4;
1040
+ --color-secondary-100: #e2e5e9;
1041
+ --color-secondary-200: #cfd1d5;
1042
+ --color-secondary-300: #b4b8bd;
1043
+ --color-secondary-400: #999ea5;
1044
+ --color-secondary-500: #8b9199;
1045
+ --color-secondary-600: #717780;
1046
+ --color-secondary-700: #595e65;
1047
+ --color-secondary-800: #41454a;
1048
+ --color-secondary-900: #292c2f;
1049
+ --color-accent-50: #3a0e1b;
1050
+ --color-accent-100: #5b162a;
1051
+ --color-accent-200: #7c1e3a;
1052
+ --color-accent-300: #9c2749;
1053
+ --color-accent-400: #ce2d5b;
1054
+ --color-accent-500: #d53b68;
1055
+ --color-accent-600: #dc5f84;
1056
+ --color-accent-700: #e4839f;
1057
+ --color-accent-800: #f4c1d0;
1058
+ --color-accent-900: #f6d6e0;
1059
+ --color-gray-50: #fafafa;
1060
+ --color-gray-100: #f1f2f3;
1061
+ --color-gray-200: #dee0e2;
1062
+ --color-gray-300: #c3c6cb;
1063
+ --color-gray-400: #9298a0;
1064
+ --color-gray-500: #8b9199;
1065
+ --color-gray-600: #667180;
1066
+ --color-gray-700: #4c5766;
1067
+ --color-gray-800: #2b323b;
1068
+ --color-gray-900: #15191e;
1069
+ --color-success-50: #072207;
1070
+ --color-success-100: #0b330b;
1071
+ --color-success-200: #115411;
1072
+ --color-success-300: #187618;
1073
+ --color-success-400: #1da61d;
1074
+ --color-success-500: #20b820;
1075
+ --color-success-600: #2ad92a;
1076
+ --color-success-700: #4fe14f;
1077
+ --color-success-800: #94ee94;
1078
+ --color-success-900: #c1f4c1;
1079
+ --color-info-50: #071c22;
1080
+ --color-info-100: #0b2a33;
1081
+ --color-info-200: #0e3844;
1082
+ --color-info-300: #114654;
1083
+ --color-info-400: #145e72;
1084
+ --color-info-500: #176d84;
1085
+ --color-info-600: #1e8baa;
1086
+ --color-info-700: #24a9ce;
1087
+ --color-info-800: #5ac7e5;
1088
+ --color-info-900: #87d4e9;
1089
+ --color-warning-50: #251c04;
1090
+ --color-warning-100: #372b06;
1091
+ --color-warning-200: #493908;
1092
+ --color-warning-300: #5c480a;
1093
+ --color-warning-400: #8d6c0b;
1094
+ --color-warning-500: #a07c0d;
1095
+ --color-warning-600: #c89a10;
1096
+ --color-warning-700: #ecb718;
1097
+ --color-warning-800: #f6d05d;
1098
+ --color-warning-900: #f6dc8e;
1099
+ --color-danger-50: #220707;
1100
+ --color-danger-100: #440e0e;
1101
+ --color-danger-200: #651515;
1102
+ --color-danger-300: #871c1c;
1103
+ --color-danger-400: #b82121;
1104
+ --color-danger-500: #ca2424;
1105
+ --color-danger-600: #dd3e3e;
1106
+ --color-danger-700: #e26262;
1107
+ --color-danger-800: #f2aaaa;
1108
+ --color-danger-900: #f6d5d5;
1109
+ /* Smart Surface Tokens (dark mode, context-aware) */
1110
+ --surface-base-bg: #16171a;
1111
+ --surface-base-text: #ffffff;
1112
+ --surface-base-text-secondary: #ffffff;
1113
+ --surface-base-text-muted: #a2a2a3;
1114
+ --surface-base-icon: #ffffff;
1115
+ --surface-base-icon-subtle: #a2a2a3;
1116
+ --surface-base-shadow: rgba(255, 255, 255, 0.25);
1117
+ --surface-base-border: rgba(255, 255, 255, 0.15);
1118
+ --surface-subtle-bg: #111214;
1119
+ --surface-subtle-text: #ffffff;
1120
+ --surface-subtle-text-secondary: #ffffff;
1121
+ --surface-subtle-text-muted: #a0a0a1;
1122
+ --surface-subtle-icon: #ffffff;
1123
+ --surface-subtle-icon-subtle: #a0a0a1;
1124
+ --surface-subtle-shadow: rgba(255, 255, 255, 0.25);
1125
+ --surface-subtle-border: rgba(255, 255, 255, 0.15);
1126
+ --surface-elevated-bg: #0d0d0f;
1127
+ --surface-elevated-text: #ffffff;
1128
+ --surface-elevated-text-secondary: #ffffff;
1129
+ --surface-elevated-text-muted: #9e9e9f;
1130
+ --surface-elevated-icon: #ffffff;
1131
+ --surface-elevated-icon-subtle: #9e9e9f;
1132
+ --surface-elevated-shadow: rgba(255, 255, 255, 0.25);
1133
+ --surface-elevated-border: rgba(255, 255, 255, 0.15);
1134
+ --surface-sunken-bg: #131416;
1135
+ --surface-sunken-text: #ffffff;
1136
+ --surface-sunken-text-secondary: #ffffff;
1137
+ --surface-sunken-text-muted: #a1a1a2;
1138
+ --surface-sunken-icon: #ffffff;
1139
+ --surface-sunken-icon-subtle: #a1a1a2;
1140
+ --surface-sunken-shadow: rgba(255, 255, 255, 0.25);
1141
+ --surface-sunken-border: rgba(255, 255, 255, 0.15);
1142
+ --surface-overlay-bg: #1b1c20;
1143
+ --surface-overlay-text: #ffffff;
1144
+ --surface-overlay-text-secondary: #ffffff;
1145
+ --surface-overlay-text-muted: #a4a4a6;
1146
+ --surface-overlay-icon: #ffffff;
1147
+ --surface-overlay-icon-subtle: #a4a4a6;
1148
+ --surface-overlay-shadow: rgba(255, 255, 255, 0.25);
1149
+ --surface-overlay-border: rgba(255, 255, 255, 0.15);
1150
+ --surface-inverse-bg: #f2f2f3;
1151
+ --surface-inverse-text: #000000;
1152
+ --surface-inverse-text-secondary: #000000;
1153
+ --surface-inverse-text-muted: #616161;
1154
+ --surface-inverse-icon: #000000;
1155
+ --surface-inverse-icon-subtle: #616161;
1156
+ --surface-inverse-shadow: rgba(0, 0, 0, 0.1);
1157
+ --surface-inverse-border: rgba(0, 0, 0, 0.1);
1158
+
1159
+ --color-text-primary: var(--color-gray-100);
1160
+ --color-text-secondary: var(--color-gray-300);
1161
+ --color-text-muted: var(--color-gray-400);
1162
+ --color-border: var(--color-gray-700);
1163
+ --color-input-bg: var(--color-gray-800);
1164
+ --color-input-disabled-bg: var(--color-gray-900);
1165
+ --color-input-disabled-text: var(--color-gray-600);
1166
+ --color-code-bg: var(--color-gray-800);
1167
+ /* Interactive Colors - optimized for specific use cases (dark mode) */
1168
+ --color-primary-fill: #036171; /* For button backgrounds with white text */
1169
+ --color-primary-text: #06b6d4; /* For links and outline buttons on dark surfaces */
1170
+ /* Backdrop tokens - dark mode */
1171
+ --backdrop-bg: linear-gradient(
1172
+ 135deg,
1173
+ rgba(0, 0, 0, 0.6),
1174
+ rgba(0, 0, 0, 0.4)
1175
+ );
1176
+ --backdrop-blur: 10px;
1177
+ --backdrop-saturate: 120%;
1178
+ --backdrop-brightness: 0.7;
1179
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
1180
+ --backdrop-opacity: 1;
1181
+
1182
+ /* Legacy alias for backwards compatibility */
1183
+ --backdrop-background: var(--backdrop-bg);
1184
+ /* Mesh Gradient Variables (Dark Mode) */
1185
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #07cbed 20%, transparent) 0px, transparent 50%),
1186
+ radial-gradient(at 97% 21%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
1187
+ radial-gradient(at 52% 99%, color-mix(in oklab, #ce2d5b 13%, transparent) 0px, transparent 50%),
1188
+ radial-gradient(at 10% 29%, color-mix(in oklab, #07cbed 10%, transparent) 0px, transparent 50%);
1189
+
1190
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #999ea5 18%, transparent) 0px, transparent 50%),
1191
+ radial-gradient(at 80% 0%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
1192
+ radial-gradient(at 0% 50%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
1193
+ radial-gradient(at 80% 100%, color-mix(in oklab, #999ea5 10%, transparent) 0px, transparent 50%);
1194
+
1195
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #ce2d5b 15%, transparent) 0px, transparent 50%),
1196
+ radial-gradient(at 85% 30%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
1197
+ radial-gradient(at 50% 80%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
1198
+ radial-gradient(at 90% 90%, color-mix(in oklab, #ce2d5b 11%, transparent) 0px, transparent 50%);
1199
+
1200
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
1201
+ radial-gradient(at 20% 80%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
1202
+ radial-gradient(at 90% 60%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
1203
+ radial-gradient(at 30% 40%, color-mix(in oklab, #07cbed 11%, transparent) 0px, transparent 50%);
1204
+
1205
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
1206
+ radial-gradient(at 10% 10%, color-mix(in oklab, #ce2d5b 14%, transparent) 0px, transparent 50%),
1207
+ radial-gradient(at 90% 10%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
1208
+ radial-gradient(at 50% 90%, color-mix(in oklab, #ce2d5b 10%, transparent) 0px, transparent 50%);
1209
+ }
1210
+
1211
+ }
1212
+ /* Non-layered dark variables fallback (ensures attribute wins) */
1213
+ html[data-theme="dark"] {
1214
+ --color-surface-base: #16171a;
1215
+ --color-surface-subtle: #111214;
1216
+ --color-surface-elevated: #0d0d0f;
1217
+ --color-surface-sunken: #131416;
1218
+ --color-surface-overlay: #1b1c20;
1219
+ --color-surface-inverse: #f2f2f3;
1220
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
1221
+ --color-surface-fieldset-base: #0d0d0f;
1222
+ --color-surface-fieldset-subtle: #1b1c20;
1223
+ --color-surface-fieldset-elevated: #1f1f24;
1224
+ --color-surface-fieldset-sunken: #0d0d0f;
1225
+ --color-surface-fieldset-overlay: #25272c;
1226
+ --color-primary-50: #c5f2fa;
1227
+ --color-primary-100: #93eaf9;
1228
+ --color-primary-200: #5fe4fa;
1229
+ --color-primary-300: #2ddbf9;
1230
+ --color-primary-400: #07cbed;
1231
+ --color-primary-500: #06b6d4;
1232
+ --color-primary-600: #058ba2;
1233
+ --color-primary-700: #036171;
1234
+ --color-primary-800: #02404a;
1235
+ --color-primary-900: #012b32;
1236
+ --color-secondary-50: #f1f2f4;
1237
+ --color-secondary-100: #e2e5e9;
1238
+ --color-secondary-200: #cfd1d5;
1239
+ --color-secondary-300: #b4b8bd;
1240
+ --color-secondary-400: #999ea5;
1241
+ --color-secondary-500: #8b9199;
1242
+ --color-secondary-600: #717780;
1243
+ --color-secondary-700: #595e65;
1244
+ --color-secondary-800: #41454a;
1245
+ --color-secondary-900: #292c2f;
1246
+ --color-accent-50: #3a0e1b;
1247
+ --color-accent-100: #5b162a;
1248
+ --color-accent-200: #7c1e3a;
1249
+ --color-accent-300: #9c2749;
1250
+ --color-accent-400: #ce2d5b;
1251
+ --color-accent-500: #d53b68;
1252
+ --color-accent-600: #dc5f84;
1253
+ --color-accent-700: #e4839f;
1254
+ --color-accent-800: #f4c1d0;
1255
+ --color-accent-900: #f6d6e0;
1256
+ --color-gray-50: #fafafa;
1257
+ --color-gray-100: #f1f2f3;
1258
+ --color-gray-200: #dee0e2;
1259
+ --color-gray-300: #c3c6cb;
1260
+ --color-gray-400: #9298a0;
1261
+ --color-gray-500: #8b9199;
1262
+ --color-gray-600: #667180;
1263
+ --color-gray-700: #4c5766;
1264
+ --color-gray-800: #2b323b;
1265
+ --color-gray-900: #15191e;
1266
+ --color-success-50: #072207;
1267
+ --color-success-100: #0b330b;
1268
+ --color-success-200: #115411;
1269
+ --color-success-300: #187618;
1270
+ --color-success-400: #1da61d;
1271
+ --color-success-500: #20b820;
1272
+ --color-success-600: #2ad92a;
1273
+ --color-success-700: #4fe14f;
1274
+ --color-success-800: #94ee94;
1275
+ --color-success-900: #c1f4c1;
1276
+ --color-info-50: #071c22;
1277
+ --color-info-100: #0b2a33;
1278
+ --color-info-200: #0e3844;
1279
+ --color-info-300: #114654;
1280
+ --color-info-400: #145e72;
1281
+ --color-info-500: #176d84;
1282
+ --color-info-600: #1e8baa;
1283
+ --color-info-700: #24a9ce;
1284
+ --color-info-800: #5ac7e5;
1285
+ --color-info-900: #87d4e9;
1286
+ --color-warning-50: #251c04;
1287
+ --color-warning-100: #372b06;
1288
+ --color-warning-200: #493908;
1289
+ --color-warning-300: #5c480a;
1290
+ --color-warning-400: #8d6c0b;
1291
+ --color-warning-500: #a07c0d;
1292
+ --color-warning-600: #c89a10;
1293
+ --color-warning-700: #ecb718;
1294
+ --color-warning-800: #f6d05d;
1295
+ --color-warning-900: #f6dc8e;
1296
+ --color-danger-50: #220707;
1297
+ --color-danger-100: #440e0e;
1298
+ --color-danger-200: #651515;
1299
+ --color-danger-300: #871c1c;
1300
+ --color-danger-400: #b82121;
1301
+ --color-danger-500: #ca2424;
1302
+ --color-danger-600: #dd3e3e;
1303
+ --color-danger-700: #e26262;
1304
+ --color-danger-800: #f2aaaa;
1305
+ --color-danger-900: #f6d5d5;
1306
+ /* Smart Surface Tokens (dark mode, context-aware) */
1307
+ --surface-base-bg: #16171a;
1308
+ --surface-base-text: #ffffff;
1309
+ --surface-base-text-secondary: #ffffff;
1310
+ --surface-base-text-muted: #a2a2a3;
1311
+ --surface-base-icon: #ffffff;
1312
+ --surface-base-icon-subtle: #a2a2a3;
1313
+ --surface-base-shadow: rgba(255, 255, 255, 0.25);
1314
+ --surface-base-border: rgba(255, 255, 255, 0.15);
1315
+ --surface-subtle-bg: #111214;
1316
+ --surface-subtle-text: #ffffff;
1317
+ --surface-subtle-text-secondary: #ffffff;
1318
+ --surface-subtle-text-muted: #a0a0a1;
1319
+ --surface-subtle-icon: #ffffff;
1320
+ --surface-subtle-icon-subtle: #a0a0a1;
1321
+ --surface-subtle-shadow: rgba(255, 255, 255, 0.25);
1322
+ --surface-subtle-border: rgba(255, 255, 255, 0.15);
1323
+ --surface-elevated-bg: #0d0d0f;
1324
+ --surface-elevated-text: #ffffff;
1325
+ --surface-elevated-text-secondary: #ffffff;
1326
+ --surface-elevated-text-muted: #9e9e9f;
1327
+ --surface-elevated-icon: #ffffff;
1328
+ --surface-elevated-icon-subtle: #9e9e9f;
1329
+ --surface-elevated-shadow: rgba(255, 255, 255, 0.25);
1330
+ --surface-elevated-border: rgba(255, 255, 255, 0.15);
1331
+ --surface-sunken-bg: #131416;
1332
+ --surface-sunken-text: #ffffff;
1333
+ --surface-sunken-text-secondary: #ffffff;
1334
+ --surface-sunken-text-muted: #a1a1a2;
1335
+ --surface-sunken-icon: #ffffff;
1336
+ --surface-sunken-icon-subtle: #a1a1a2;
1337
+ --surface-sunken-shadow: rgba(255, 255, 255, 0.25);
1338
+ --surface-sunken-border: rgba(255, 255, 255, 0.15);
1339
+ --surface-overlay-bg: #1b1c20;
1340
+ --surface-overlay-text: #ffffff;
1341
+ --surface-overlay-text-secondary: #ffffff;
1342
+ --surface-overlay-text-muted: #a4a4a6;
1343
+ --surface-overlay-icon: #ffffff;
1344
+ --surface-overlay-icon-subtle: #a4a4a6;
1345
+ --surface-overlay-shadow: rgba(255, 255, 255, 0.25);
1346
+ --surface-overlay-border: rgba(255, 255, 255, 0.15);
1347
+ --surface-inverse-bg: #f2f2f3;
1348
+ --surface-inverse-text: #000000;
1349
+ --surface-inverse-text-secondary: #000000;
1350
+ --surface-inverse-text-muted: #616161;
1351
+ --surface-inverse-icon: #000000;
1352
+ --surface-inverse-icon-subtle: #616161;
1353
+ --surface-inverse-shadow: rgba(0, 0, 0, 0.1);
1354
+ --surface-inverse-border: rgba(0, 0, 0, 0.1);
1355
+
1356
+ --color-text-primary: var(--color-gray-100);
1357
+ --color-text-secondary: var(--color-gray-300);
1358
+ --color-text-muted: var(--color-gray-400);
1359
+ --color-border: var(--color-gray-700);
1360
+ --color-input-bg: var(--color-gray-800);
1361
+ --color-input-disabled-bg: var(--color-gray-900);
1362
+ --color-input-disabled-text: var(--color-gray-600);
1363
+ --color-code-bg: var(--color-gray-800);
1364
+ /* Backdrop tokens - dark mode */
1365
+ --backdrop-bg: linear-gradient(
1366
+ 135deg,
1367
+ rgba(0, 0, 0, 0.6),
1368
+ rgba(0, 0, 0, 0.4)
1369
+ );
1370
+ --backdrop-blur: 10px;
1371
+ --backdrop-saturate: 120%;
1372
+ --backdrop-brightness: 0.7;
1373
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
1374
+ --backdrop-opacity: 1;
1375
+
1376
+ /* Legacy alias for backwards compatibility */
1377
+ --backdrop-background: var(--backdrop-bg);
1378
+
1379
+ /* Mesh Gradient Backgrounds (Dark Mode) */
1380
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #07cbed 20%, transparent) 0px, transparent 50%),
1381
+ radial-gradient(at 97% 21%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
1382
+ radial-gradient(at 52% 99%, color-mix(in oklab, #ce2d5b 13%, transparent) 0px, transparent 50%),
1383
+ radial-gradient(at 10% 29%, color-mix(in oklab, #07cbed 10%, transparent) 0px, transparent 50%);
1384
+
1385
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #999ea5 18%, transparent) 0px, transparent 50%),
1386
+ radial-gradient(at 80% 0%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
1387
+ radial-gradient(at 0% 50%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
1388
+ radial-gradient(at 80% 100%, color-mix(in oklab, #999ea5 10%, transparent) 0px, transparent 50%);
1389
+
1390
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #ce2d5b 15%, transparent) 0px, transparent 50%),
1391
+ radial-gradient(at 85% 30%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
1392
+ radial-gradient(at 50% 80%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
1393
+ radial-gradient(at 90% 90%, color-mix(in oklab, #ce2d5b 11%, transparent) 0px, transparent 50%);
1394
+
1395
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
1396
+ radial-gradient(at 20% 80%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
1397
+ radial-gradient(at 90% 60%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
1398
+ radial-gradient(at 30% 40%, color-mix(in oklab, #07cbed 11%, transparent) 0px, transparent 50%);
1399
+
1400
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
1401
+ radial-gradient(at 10% 10%, color-mix(in oklab, #ce2d5b 14%, transparent) 0px, transparent 50%),
1402
+ radial-gradient(at 90% 10%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
1403
+ radial-gradient(at 50% 90%, color-mix(in oklab, #ce2d5b 10%, transparent) 0px, transparent 50%);
1404
+ }
1405
+ `;