@snksergio/design-system 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 (73) hide show
  1. package/README.md +260 -0
  2. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs +2681 -0
  3. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs.map +1 -0
  4. package/dist-lib/chunks/app-shell-CDy42aNI.mjs +2663 -0
  5. package/dist-lib/chunks/app-shell-CDy42aNI.mjs.map +1 -0
  6. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs +208 -0
  7. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -0
  8. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs +207 -0
  9. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs.map +1 -0
  10. package/dist-lib/chunks/badge-B_2Zt52o.mjs +797 -0
  11. package/dist-lib/chunks/badge-B_2Zt52o.mjs.map +1 -0
  12. package/dist-lib/chunks/badge-DKpXURa1.mjs +813 -0
  13. package/dist-lib/chunks/badge-DKpXURa1.mjs.map +1 -0
  14. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs +192 -0
  15. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs.map +1 -0
  16. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs +193 -0
  17. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -0
  18. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs +796 -0
  19. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs.map +1 -0
  20. package/dist-lib/chunks/chip-group-D3D0i72q.mjs +780 -0
  21. package/dist-lib/chunks/chip-group-D3D0i72q.mjs.map +1 -0
  22. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs +185 -0
  23. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs.map +1 -0
  24. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs +169 -0
  25. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs.map +1 -0
  26. package/dist-lib/chunks/input-374MpdBL.mjs +72 -0
  27. package/dist-lib/chunks/input-374MpdBL.mjs.map +1 -0
  28. package/dist-lib/chunks/input-DF4XAWmr.mjs +56 -0
  29. package/dist-lib/chunks/input-DF4XAWmr.mjs.map +1 -0
  30. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs +75 -0
  31. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs.map +1 -0
  32. package/dist-lib/chunks/page-header-mC1gGtOI.mjs +76 -0
  33. package/dist-lib/chunks/page-header-mC1gGtOI.mjs.map +1 -0
  34. package/dist-lib/chunks/panel-Ds15whqp.mjs +9717 -0
  35. package/dist-lib/chunks/panel-Ds15whqp.mjs.map +1 -0
  36. package/dist-lib/chunks/panel-bzNmFlEZ.mjs +9737 -0
  37. package/dist-lib/chunks/panel-bzNmFlEZ.mjs.map +1 -0
  38. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs +66 -0
  39. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -0
  40. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs +65 -0
  41. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs.map +1 -0
  42. package/dist-lib/index.cjs +1207 -0
  43. package/dist-lib/index.cjs.map +1 -0
  44. package/dist-lib/index.d.ts +2 -0
  45. package/dist-lib/index.mjs +1209 -0
  46. package/dist-lib/index.mjs.map +1 -0
  47. package/dist-lib/preview/chat.cjs +1120 -0
  48. package/dist-lib/preview/chat.cjs.map +1 -0
  49. package/dist-lib/preview/chat.d.ts +6 -0
  50. package/dist-lib/preview/chat.mjs +1120 -0
  51. package/dist-lib/preview/chat.mjs.map +1 -0
  52. package/dist-lib/preview/clientes.cjs +897 -0
  53. package/dist-lib/preview/clientes.cjs.map +1 -0
  54. package/dist-lib/preview/clientes.d.ts +6 -0
  55. package/dist-lib/preview/clientes.mjs +897 -0
  56. package/dist-lib/preview/clientes.mjs.map +1 -0
  57. package/dist-lib/preview/dashboard.cjs +733 -0
  58. package/dist-lib/preview/dashboard.cjs.map +1 -0
  59. package/dist-lib/preview/dashboard.d.ts +4 -0
  60. package/dist-lib/preview/dashboard.mjs +733 -0
  61. package/dist-lib/preview/dashboard.mjs.map +1 -0
  62. package/dist-lib/preview/mocks.cjs +15 -0
  63. package/dist-lib/preview/mocks.cjs.map +1 -0
  64. package/dist-lib/preview/mocks.d.ts +2 -0
  65. package/dist-lib/preview/mocks.mjs +15 -0
  66. package/dist-lib/preview/mocks.mjs.map +1 -0
  67. package/dist-lib/theme.css +668 -0
  68. package/dist-lib/tokens.cjs +915 -0
  69. package/dist-lib/tokens.cjs.map +1 -0
  70. package/dist-lib/tokens.d.ts +2 -0
  71. package/dist-lib/tokens.mjs +915 -0
  72. package/dist-lib/tokens.mjs.map +1 -0
  73. package/package.json +142 -0
@@ -0,0 +1,668 @@
1
+ /**
2
+ * tailwind-theme.css — Auto-gerado. Não editar manualmente.
3
+ * Source of truth: tokens/brands/default/semantic/*.ts
4
+ * Regenerar: npx tsx tokens/transforms/to-tailwind-v4.ts > dist/tailwind-theme.css
5
+ */
6
+
7
+ @theme {
8
+ --color-bg-canvas: oklch(1 0 0);
9
+ --color-bg-surface: oklch(1 0 0);
10
+ --color-bg-surface-elevated: oklch(1 0 0);
11
+ --color-bg-surface-panels: oklch(1 0 0);
12
+ --color-bg-sidebar: oklch(0.9516 0.0027 106.45);
13
+ --color-bg-subtle: oklch(0.973 0 0);
14
+ --color-bg-muted: oklch(0.973 0 0);
15
+ --color-bg-emphasis: oklch(0.94 0 0);
16
+ --color-bg-input: oklch(1 0 0);
17
+ --color-bg-accent: oklch(1 0 0);
18
+ --color-bg-brand: oklch(0.5248 0.1415 150.9);
19
+ --color-bg-brand-subtle: color-mix(in oklch, oklch(0.5248 0.1415 150.9) 14%, transparent);
20
+ --color-bg-brand-hover: color-mix(in oklch, oklch(0.5248 0.1415 150.9) 90%, black);
21
+ --color-bg-brand-subtle-hover: color-mix(in oklch, oklch(0.5248 0.1415 150.9) 22%, transparent);
22
+ --color-bg-danger: oklch(0.6368 0.2078 25.33);
23
+ --color-bg-danger-muted: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 14%, transparent);
24
+ --color-bg-danger-hover: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 90%, black);
25
+ --color-bg-danger-muted-hover: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 22%, transparent);
26
+ --color-bg-success: oklch(0.66 0.135 161);
27
+ --color-bg-success-muted: color-mix(in oklch, oklch(0.66 0.135 161) 14%, transparent);
28
+ --color-bg-success-hover: color-mix(in oklch, oklch(0.66 0.135 161) 90%, black);
29
+ --color-bg-success-muted-hover: color-mix(in oklch, oklch(0.66 0.135 161) 22%, transparent);
30
+ --color-bg-warning: oklch(0.81 0.160 81);
31
+ --color-bg-warning-muted: color-mix(in oklch, oklch(0.81 0.160 81) 14%, transparent);
32
+ --color-bg-warning-hover: color-mix(in oklch, oklch(0.81 0.160 81) 90%, black);
33
+ --color-bg-warning-muted-hover: color-mix(in oklch, oklch(0.81 0.160 81) 22%, transparent);
34
+ --color-bg-info: oklch(0.62 0.210 280);
35
+ --color-bg-info-muted: color-mix(in oklch, oklch(0.62 0.210 280) 14%, transparent);
36
+ --color-bg-info-hover: color-mix(in oklch, oklch(0.62 0.210 280) 90%, black);
37
+ --color-bg-info-muted-hover: color-mix(in oklch, oklch(0.62 0.210 280) 22%, transparent);
38
+ --color-bg-muted-hover: oklch(0.95 0 0);
39
+ --color-bg-input-hover: oklch(0.973 0 0);
40
+ --color-bg-accent-hover: oklch(0.84 0 0);
41
+ --color-bg-sidebar-accent: oklch(1 0 0);
42
+ --color-bg-sidebar-accent-hover: oklch(0.92 0.0068 115.72);
43
+ --color-bg-table: oklch(1 0 0);
44
+ --color-bg-table-head: oklch(0.973 0 0);
45
+ --color-bg-table-row-hover: oklch(0.973 0 0);
46
+ --color-bg-table-row-selected: color-mix(in oklch, oklch(0.5248 0.1415 150.9) 6%, transparent);
47
+ --color-bg-table-row-selected-hover: color-mix(in oklch, oklch(0.5248 0.1415 150.9) 10%, transparent);
48
+ --color-bg-dropdown: var(--color-bg-canvas);
49
+ --color-fg-strong: oklch(0.15 0 0);
50
+ --color-fg-default: oklch(0.15 0 0);
51
+ --color-fg-muted: oklch(0.4997 0 0);
52
+ --color-fg-subtle: oklch(0.7025 0 0);
53
+ --color-fg-disabled: oklch(0.7025 0 0);
54
+ --color-fg-brand: oklch(0.5248 0.1415 150.9);
55
+ --color-fg-danger: oklch(0.6368 0.2078 25.33);
56
+ --color-fg-success: oklch(0.66 0.135 161);
57
+ --color-fg-warning: oklch(0.81 0.160 81);
58
+ --color-fg-info: oklch(0.62 0.210 280);
59
+ --color-fg-on-brand: oklch(1 0 0);
60
+ --color-fg-on-danger: oklch(1 0 0);
61
+ --color-fg-on-success: oklch(1 0 0);
62
+ --color-fg-on-warning: oklch(0 0 0);
63
+ --color-fg-on-info: oklch(1 0 0);
64
+ --color-border-default: oklch(0.9076 0 0);
65
+ --color-border-subtle: oklch(0.931 0 0);
66
+ --color-border-input: oklch(0.8761 0 0);
67
+ --color-border-sidebar: oklch(0.9076 0.0068 115.72);
68
+ --color-border-brand: oklch(0.5248 0.1415 150.9);
69
+ --color-border-brand-subtle: color-mix(in oklch, oklch(0.5248 0.1415 150.9) 36%, transparent);
70
+ --color-border-danger-muted: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 36%, transparent);
71
+ --color-border-success-muted: color-mix(in oklch, oklch(0.66 0.135 161) 36%, transparent);
72
+ --color-border-warning-muted: color-mix(in oklch, oklch(0.81 0.160 81) 36%, transparent);
73
+ --color-border-info-muted: color-mix(in oklch, oklch(0.62 0.210 280) 36%, transparent);
74
+ --color-border-table: oklch(0.931 0 0);
75
+ --color-ring-brand: color-mix(in oklch, oklch(0.5248 0.1415 150.9) 22%, transparent);
76
+ --color-ring-danger: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 22%, transparent);
77
+ --color-ring-success: color-mix(in oklch, oklch(0.66 0.135 161) 22%, transparent);
78
+ --color-ring-warning: color-mix(in oklch, oklch(0.81 0.160 81) 22%, transparent);
79
+ --color-ring-info: color-mix(in oklch, oklch(0.62 0.210 280) 22%, transparent);
80
+ --color-ring-secondary: color-mix(in oklch, oklch(0.4997 0 0) 22%, transparent);
81
+ --color-overlay-scrim: oklch(0 0 0 / 0.55);
82
+ --color-overlay-float: oklch(0.55 0 0 / 0.12);
83
+ --spacing-sp-0: 0px;
84
+ --spacing-sp-base: 16px;
85
+ --spacing-sp-px: 1px;
86
+ --spacing-sp-2xs: 2px;
87
+ --spacing-sp-xs: 4px;
88
+ --spacing-sp-sm: 6px;
89
+ --spacing-sp-md: 8px;
90
+ --spacing-sp-lg: 10px;
91
+ --spacing-sp-xl: 12px;
92
+ --spacing-sp-2xl: 16px;
93
+ --spacing-sp-3xl: 20px;
94
+ --spacing-sp-4xl: 24px;
95
+ --spacing-sp-5xl: 28px;
96
+ --spacing-sp-6xl: 32px;
97
+ --spacing-sp-7xl: 48px;
98
+ --spacing-gp-base: 24px;
99
+ --spacing-gp-2xs: 2px;
100
+ --spacing-gp-xs: 4px;
101
+ --spacing-gp-sm: 6px;
102
+ --spacing-gp-md: 8px;
103
+ --spacing-gp-lg: 10px;
104
+ --spacing-gp-xl: 12px;
105
+ --spacing-gp-2xl: 16px;
106
+ --spacing-gp-3xl: 20px;
107
+ --spacing-gp-4xl: 24px;
108
+ --spacing-gp-5xl: 28px;
109
+ --spacing-gp-6xl: 32px;
110
+ --spacing-gp-7xl: 48px;
111
+ --spacing-pad-base: 12px;
112
+ --spacing-pad-2xs: 2px;
113
+ --spacing-pad-xs: 4px;
114
+ --spacing-pad-sm: 6px;
115
+ --spacing-pad-md: 8px;
116
+ --spacing-pad-lg: 10px;
117
+ --spacing-pad-xl: 12px;
118
+ --spacing-pad-2xl: 16px;
119
+ --spacing-pad-3xl: 20px;
120
+ --spacing-pad-4xl: 24px;
121
+ --spacing-pad-5xl: 28px;
122
+ --spacing-pad-6xl: 32px;
123
+ --spacing-pad-7xl: 48px;
124
+ --spacing-comp-base: 40px;
125
+ --spacing-comp-3xs: 16px;
126
+ --spacing-comp-2xs: 20px;
127
+ --spacing-comp-xs: 24px;
128
+ --spacing-comp-sm: 28px;
129
+ --spacing-comp-md: 32px;
130
+ --spacing-comp-lg: 36px;
131
+ --spacing-comp-xl: 40px;
132
+ --spacing-comp-2xl: 44px;
133
+ --spacing-comp-3xl: 48px;
134
+ --spacing-comp-4xl: 56px;
135
+ --spacing-form-base: 40px;
136
+ --spacing-form-3xs: 20px;
137
+ --spacing-form-2xs: 24px;
138
+ --spacing-form-xs: 28px;
139
+ --spacing-form-sm: 32px;
140
+ --spacing-form-md: 36px;
141
+ --spacing-form-lg: 40px;
142
+ --spacing-form-xl: 44px;
143
+ --spacing-layout-navbar: 64px;
144
+ --spacing-layout-toolbar: 48px;
145
+ --spacing-layout-tab-bar: 56px;
146
+ --spacing-layout-header-sm: 80px;
147
+ --spacing-layout-header-md: 96px;
148
+ --spacing-layout-header-lg: 128px;
149
+ --spacing-icon-base: 20px;
150
+ --spacing-icon-2xs: 8px;
151
+ --spacing-icon-xs: 12px;
152
+ --spacing-icon-sm: 16px;
153
+ --spacing-icon-md: 20px;
154
+ --spacing-icon-lg: 24px;
155
+ --spacing-icon-xl: 32px;
156
+ --spacing-icon-2xl: 40px;
157
+ --spacing-icon-3xl: 48px;
158
+ --container-xs: 480px;
159
+ --container-sm: 640px;
160
+ --container-md: 768px;
161
+ --container-lg: 1024px;
162
+ --container-xl: 1280px;
163
+ --container-2xl: 1440px;
164
+ --container-3xl: 1920px;
165
+ --container-full: 100%;
166
+ --container-prose: 65ch;
167
+ --container-main-content-max: 1368px;
168
+ --container-tooltip-sm: 160px;
169
+ --container-tooltip-md: 240px;
170
+ --container-tooltip-lg: 320px;
171
+ --container-dropdown-sm: 160px;
172
+ --container-dropdown-md: 240px;
173
+ --container-dropdown-lg: 320px;
174
+ --container-sidebar-sm: 240px;
175
+ --container-sidebar-md: 280px;
176
+ --container-sidebar-lg: 320px;
177
+ --container-drawer-sm: 320px;
178
+ --container-drawer-md: 480px;
179
+ --container-drawer-lg: 640px;
180
+ --container-modal-sm: 480px;
181
+ --container-modal-md: 640px;
182
+ --container-modal-lg: 800px;
183
+ --spacing-pad-card-base: 24px;
184
+ --spacing-pad-card-sm: 16px;
185
+ --spacing-pad-page-base: 24px;
186
+ --spacing-pad-page-sm: 16px;
187
+ --spacing-pad-page-lg: 40px;
188
+ --radius: 0.625rem;
189
+ --radius-radius-base: 0.625rem;
190
+ --radius-radius-none: 0px;
191
+ --radius-radius-xs: calc(0.625rem * 0.4);
192
+ --radius-radius-sm: calc(0.625rem * 0.6);
193
+ --radius-radius-md: calc(0.625rem * 0.8);
194
+ --radius-radius-lg: 0.625rem;
195
+ --radius-radius-xl: calc(0.625rem * 1.4);
196
+ --radius-radius-2xl: calc(0.625rem * 1.8);
197
+ --radius-radius-3xl: calc(0.625rem * 2.2);
198
+ --radius-radius-4xl: calc(0.625rem * 2.6);
199
+ --radius-radius-full: 9999px;
200
+ --border-width-none: 0px;
201
+ --border-width-xs: 1px;
202
+ --border-width-sm: 2px;
203
+ --border-width-md: 4px;
204
+ --shadow-sh-none: none;
205
+ --shadow-sh-sm: 0 1px 2px oklch(0 0 0 / 0.04);
206
+ --shadow-sh-md: rgba(145, 158, 171, 0.18) 0 0 2px 0, rgba(145, 158, 171, 0.12) 0 12px 24px -4px;
207
+ --shadow-sh-lg: 0 8px 24px oklch(0 0 0 / 0.08);
208
+ --shadow-sh-xl: 0 12px 32px oklch(0 0 0 / 0.08);
209
+ --shadow-sh-2xl: 0 24px 56px oklch(0 0 0 / 0.16);
210
+ --shadow-sh-aside: -8px 0 24px oklch(0 0 0 / 0.12);
211
+ --shadow-sh-ring: 0 0 0 3px color-mix(in oklch, oklch(0.5248 0.1415 150.9) 22%, transparent);
212
+ --shadow-sh-ring-danger: 0 0 0 3px color-mix(in oklch, oklch(0.6368 0.2078 25.33) 22%, transparent);
213
+ --shadow-sh-ring-warning: 0 0 0 3px color-mix(in oklch, oklch(0.81 0.160 81) 22%, transparent);
214
+ --shadow-sh-ring-success: 0 0 0 3px color-mix(in oklch, oklch(0.66 0.135 161) 22%, transparent);
215
+ --shadow-sh-ring-info: 0 0 0 3px color-mix(in oklch, oklch(0.62 0.210 280) 22%, transparent);
216
+ --opacity-disabled: 0.38;
217
+ --opacity-hover: 0.08;
218
+ --opacity-focus: 0.12;
219
+ --opacity-pressed: 0.12;
220
+ --opacity-dragged: 0.16;
221
+ --opacity-invisible: 0;
222
+ --opacity-muted: 0.5;
223
+ --opacity-subtle: 0.7;
224
+ --opacity-full: 1;
225
+ --opacity-scrim-light: 0.32;
226
+ --opacity-scrim-dark: 0.64;
227
+ --z-index-hide: -1;
228
+ --z-index-base: 0;
229
+ --z-index-dropdown: 100;
230
+ --z-index-sticky: 200;
231
+ --z-index-overlay: 300;
232
+ --z-index-modal: 400;
233
+ --z-index-popover: 500;
234
+ --z-index-toast: 600;
235
+ --z-index-tooltip: 700;
236
+ --scrollbar-width-thin: 6px;
237
+ --scrollbar-width-default: 8px;
238
+ }
239
+
240
+ /* ── Dark mode overrides (via .dark class — toggle manual) ────────────────── */
241
+
242
+ .dark {
243
+ --color-bg-canvas: oklch(0.205 0 0);
244
+ --color-bg-surface: oklch(0.225 0 0);
245
+ --color-bg-surface-elevated: oklch(0.225 0 0);
246
+ --color-bg-surface-panels: oklch(0.205 0 0);
247
+ --color-bg-sidebar: oklch(0.225 0 0);
248
+ --color-bg-subtle: oklch(1 0 0 / 0.01);
249
+ --color-bg-muted: oklch(1 0 0 / 0.03);
250
+ --color-bg-emphasis: color-mix(in oklch, oklch(1 0 0) 12%, transparent);
251
+ --color-bg-input: oklch(1 0 0 / 0.04);
252
+ --color-bg-accent: oklch(1 0 0 / 0.12);
253
+ --color-bg-brand: oklch(0.7289 0.1571 162.3);
254
+ --color-bg-brand-subtle: color-mix(in oklch, oklch(0.7289 0.1571 162.3) 14%, transparent);
255
+ --color-bg-brand-hover: color-mix(in oklch, oklch(0.7289 0.1571 162.3) 90%, black);
256
+ --color-bg-brand-subtle-hover: color-mix(in oklch, oklch(0.7289 0.1571 162.3) 22%, transparent);
257
+ --color-bg-danger: oklch(0.6368 0.2078 25.33);
258
+ --color-bg-danger-muted: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 14%, transparent);
259
+ --color-bg-danger-hover: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 90%, white);
260
+ --color-bg-danger-muted-hover: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 22%, transparent);
261
+ --color-bg-success: oklch(0.66 0.135 161);
262
+ --color-bg-success-muted: color-mix(in oklch, oklch(0.66 0.135 161) 14%, transparent);
263
+ --color-bg-success-hover: color-mix(in oklch, oklch(0.66 0.135 161) 90%, white);
264
+ --color-bg-success-muted-hover: color-mix(in oklch, oklch(0.66 0.135 161) 22%, transparent);
265
+ --color-bg-warning: oklch(0.81 0.160 81);
266
+ --color-bg-warning-muted: color-mix(in oklch, oklch(0.81 0.160 81) 14%, transparent);
267
+ --color-bg-warning-hover: color-mix(in oklch, oklch(0.81 0.160 81) 90%, white);
268
+ --color-bg-warning-muted-hover: color-mix(in oklch, oklch(0.81 0.160 81) 22%, transparent);
269
+ --color-bg-info: oklch(0.62 0.210 280);
270
+ --color-bg-info-muted: color-mix(in oklch, oklch(0.62 0.210 280) 14%, transparent);
271
+ --color-bg-info-hover: color-mix(in oklch, oklch(0.62 0.210 280) 90%, white);
272
+ --color-bg-info-muted-hover: color-mix(in oklch, oklch(0.62 0.210 280) 22%, transparent);
273
+ --color-bg-muted-hover: oklch(1 0 0 / 0.08);
274
+ --color-bg-input-hover: oklch(1 0 0 / 0.08);
275
+ --color-bg-accent-hover: oklch(1 0 0 / 0.16);
276
+ --color-bg-sidebar-accent: oklch(1 0 0 / 0.08);
277
+ --color-bg-sidebar-accent-hover: oklch(1 0 0 / 0.12);
278
+ --color-bg-table: oklch(0.225 0 0);
279
+ --color-bg-table-head: oklch(0.252 0 0);
280
+ --color-bg-table-row-hover: oklch(0.252 0 0);
281
+ --color-bg-table-row-selected: color-mix(in oklch, oklch(0.7289 0.1571 162.3) 10%, transparent);
282
+ --color-bg-table-row-selected-hover: color-mix(in oklch, oklch(0.7289 0.1571 162.3) 14%, transparent);
283
+ --color-bg-dropdown: color-mix(in oklab, var(--color-bg-canvas) 70%, transparent);
284
+ --color-fg-strong: oklch(1 0 0);
285
+ --color-fg-default: oklch(0.98 0 0);
286
+ --color-fg-muted: oklch(0.7025 0 0);
287
+ --color-fg-subtle: color-mix(in oklch, oklch(0.7025 0 0) 70%, transparent);
288
+ --color-fg-disabled: oklch(0.36 0 0);
289
+ --color-fg-brand: oklch(0.7289 0.1571 162.3);
290
+ --color-fg-danger: oklch(0.6368 0.2078 25.33);
291
+ --color-fg-success: oklch(0.66 0.135 161);
292
+ --color-fg-warning: oklch(0.81 0.160 81);
293
+ --color-fg-info: oklch(0.62 0.210 280);
294
+ --color-fg-on-brand: oklch(0 0 0);
295
+ --color-fg-on-danger: oklch(1 0 0);
296
+ --color-fg-on-success: oklch(0 0 0);
297
+ --color-fg-on-warning: oklch(0 0 0);
298
+ --color-fg-on-info: oklch(1 0 0);
299
+ --color-border-default: oklch(0.2645 0 0);
300
+ --color-border-subtle: oklch(1 0 0 / 0.04);
301
+ --color-border-input: oklch(1 0 0 / 0.08);
302
+ --color-border-sidebar: oklch(0.2645 0 0);
303
+ --color-border-brand: oklch(0.7289 0.1571 162.3);
304
+ --color-border-brand-subtle: color-mix(in oklch, oklch(0.7289 0.1571 162.3) 36%, transparent);
305
+ --color-border-danger-muted: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 36%, transparent);
306
+ --color-border-success-muted: color-mix(in oklch, oklch(0.66 0.135 161) 36%, transparent);
307
+ --color-border-warning-muted: color-mix(in oklch, oklch(0.81 0.160 81) 36%, transparent);
308
+ --color-border-info-muted: color-mix(in oklch, oklch(0.62 0.210 280) 36%, transparent);
309
+ --color-border-table: oklch(0.2645 0 0);
310
+ --color-ring-brand: color-mix(in oklch, oklch(0.7289 0.1571 162.3) 22%, transparent);
311
+ --color-ring-danger: color-mix(in oklch, oklch(0.6368 0.2078 25.33) 22%, transparent);
312
+ --color-ring-success: color-mix(in oklch, oklch(0.66 0.135 161) 22%, transparent);
313
+ --color-ring-warning: color-mix(in oklch, oklch(0.81 0.160 81) 22%, transparent);
314
+ --color-ring-info: color-mix(in oklch, oklch(0.62 0.210 280) 22%, transparent);
315
+ --color-ring-secondary: color-mix(in oklch, oklch(0.4997 0 0) 22%, transparent);
316
+ --color-overlay-scrim: oklch(0 0 0 / 0.55);
317
+ --color-overlay-float: oklch(1 0 0 / 0.08);
318
+ --shadow-sh-none: none;
319
+ --shadow-sh-sm: none;
320
+ --shadow-sh-md: 0 0 0 1px oklch(0.2645 0 0);
321
+ --shadow-sh-lg: 0 8px 24px oklch(0 0 0 / 0.30);
322
+ --shadow-sh-xl: 0 12px 32px oklch(0 0 0 / 0.40);
323
+ --shadow-sh-2xl: 0 24px 56px oklch(0 0 0 / 0.45);
324
+ --shadow-sh-aside: -8px 0 24px oklch(0 0 0 / 0.40);
325
+ --shadow-sh-ring: 0 0 0 3px color-mix(in oklch, oklch(0.7289 0.1571 162.3) 22%, transparent);
326
+ --shadow-sh-ring-danger: 0 0 0 3px color-mix(in oklch, oklch(0.6368 0.2078 25.33) 22%, transparent);
327
+ --shadow-sh-ring-warning: 0 0 0 3px color-mix(in oklch, oklch(0.81 0.160 81) 22%, transparent);
328
+ --shadow-sh-ring-success: 0 0 0 3px color-mix(in oklch, oklch(0.66 0.135 161) 22%, transparent);
329
+ --shadow-sh-ring-info: 0 0 0 3px color-mix(in oklch, oklch(0.62 0.210 280) 22%, transparent);
330
+ }
331
+
332
+ /* ── Typography utilities (composite presets) ─────────────────────────────── */
333
+
334
+ @utility text-display-2xl {
335
+ font-size: clamp(2.5rem, calc(1.568rem + 3.978vw), 4.75rem);
336
+ line-height: 1.1;
337
+ font-weight: 700;
338
+ letter-spacing: -0.02em;
339
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
340
+ }
341
+
342
+ @utility text-display-xl {
343
+ font-size: clamp(2.25rem, calc(1.603rem + 2.762vw), 3.8125rem);
344
+ line-height: 1.1;
345
+ font-weight: 700;
346
+ letter-spacing: -0.02em;
347
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
348
+ }
349
+
350
+ @utility text-display-lg {
351
+ font-size: clamp(2rem, calc(1.560rem + 1.878vw), 3.0625rem);
352
+ line-height: 1.15;
353
+ font-weight: 600;
354
+ letter-spacing: -0.01em;
355
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
356
+ }
357
+
358
+ @utility text-display-md {
359
+ font-size: clamp(1.75rem, calc(1.465rem + 1.215vw), 2.4375rem);
360
+ line-height: 1.15;
361
+ font-weight: 600;
362
+ letter-spacing: -0.01em;
363
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
364
+ }
365
+
366
+ @utility text-heading-xl {
367
+ font-size: clamp(2.25rem, calc(1.732rem + 2.210vw), 3.5rem);
368
+ line-height: 1.15;
369
+ font-weight: 500;
370
+ letter-spacing: -0.01em;
371
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
372
+ }
373
+
374
+ @utility text-heading-lg {
375
+ font-size: clamp(2rem, calc(1.586rem + 1.768vw), 3rem);
376
+ line-height: 1.2;
377
+ font-weight: 500;
378
+ letter-spacing: -0.01em;
379
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
380
+ }
381
+
382
+ @utility text-heading-md {
383
+ font-size: clamp(1.75rem, calc(1.439rem + 1.326vw), 2.5rem);
384
+ line-height: 1.2;
385
+ font-weight: 500;
386
+ letter-spacing: -0.01em;
387
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
388
+ }
389
+
390
+ @utility text-heading-sm {
391
+ font-size: clamp(1.5rem, calc(1.293rem + 0.884vw), 2rem);
392
+ line-height: 1.25;
393
+ font-weight: 500;
394
+ letter-spacing: -0.005em;
395
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
396
+ }
397
+
398
+ @utility text-heading-xs {
399
+ font-size: 1.5rem;
400
+ line-height: 2rem;
401
+ font-weight: 500;
402
+ letter-spacing: 0em;
403
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
404
+ }
405
+
406
+ @utility text-title-lg {
407
+ font-size: 1.25rem;
408
+ line-height: 1.75rem;
409
+ font-weight: 500;
410
+ letter-spacing: 0em;
411
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
412
+ }
413
+
414
+ @utility text-title-md {
415
+ font-size: 1rem;
416
+ line-height: 1.5rem;
417
+ font-weight: 500;
418
+ letter-spacing: 0em;
419
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
420
+ }
421
+
422
+ @utility text-title-sm {
423
+ font-size: 0.875rem;
424
+ line-height: 1.25rem;
425
+ font-weight: 500;
426
+ letter-spacing: 0em;
427
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
428
+ }
429
+
430
+ @utility text-label-xl {
431
+ font-size: 1.5rem;
432
+ line-height: 2rem;
433
+ font-weight: 500;
434
+ letter-spacing: -0.015em;
435
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
436
+ }
437
+
438
+ @utility text-label-lg {
439
+ font-size: 1.125rem;
440
+ line-height: 1.5rem;
441
+ font-weight: 500;
442
+ letter-spacing: -0.015em;
443
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
444
+ }
445
+
446
+ @utility text-label-md {
447
+ font-size: 1rem;
448
+ line-height: 1.5rem;
449
+ font-weight: 500;
450
+ letter-spacing: -0.011em;
451
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
452
+ }
453
+
454
+ @utility text-label-sm {
455
+ font-size: 0.875rem;
456
+ line-height: 1.25rem;
457
+ font-weight: 500;
458
+ letter-spacing: -0.006em;
459
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
460
+ }
461
+
462
+ @utility text-label-xs {
463
+ font-size: 0.75rem;
464
+ line-height: 1rem;
465
+ font-weight: 500;
466
+ letter-spacing: 0em;
467
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
468
+ }
469
+
470
+ @utility text-label-2xs {
471
+ font-size: 0.6875rem;
472
+ line-height: 0.875rem;
473
+ font-weight: 500;
474
+ letter-spacing: 0em;
475
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
476
+ }
477
+
478
+ @utility text-label-base {
479
+ font-size: 0.8125rem;
480
+ line-height: 1.125rem;
481
+ font-weight: 500;
482
+ letter-spacing: -0.003em;
483
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
484
+ }
485
+
486
+ @utility text-paragraph-xl {
487
+ font-size: 1.5rem;
488
+ line-height: 2rem;
489
+ font-weight: 400;
490
+ letter-spacing: -0.015em;
491
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
492
+ }
493
+
494
+ @utility text-paragraph-lg {
495
+ font-size: 1.125rem;
496
+ line-height: 1.5rem;
497
+ font-weight: 400;
498
+ letter-spacing: -0.015em;
499
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
500
+ }
501
+
502
+ @utility text-paragraph-md {
503
+ font-size: 1rem;
504
+ line-height: 1.5rem;
505
+ font-weight: 400;
506
+ letter-spacing: -0.011em;
507
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
508
+ }
509
+
510
+ @utility text-paragraph-sm {
511
+ font-size: 0.875rem;
512
+ line-height: 1.25rem;
513
+ font-weight: 400;
514
+ letter-spacing: -0.006em;
515
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
516
+ }
517
+
518
+ @utility text-paragraph-xs {
519
+ font-size: 0.75rem;
520
+ line-height: 1rem;
521
+ font-weight: 400;
522
+ letter-spacing: 0em;
523
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
524
+ }
525
+
526
+ @utility text-paragraph-base {
527
+ font-size: 0.8125rem;
528
+ line-height: 1.125rem;
529
+ font-weight: 400;
530
+ letter-spacing: -0.003em;
531
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
532
+ }
533
+
534
+ @utility text-caption-md {
535
+ font-size: 0.8125rem;
536
+ line-height: 1.125rem;
537
+ font-weight: 400;
538
+ letter-spacing: 0em;
539
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
540
+ }
541
+
542
+ @utility text-caption-sm {
543
+ font-size: 0.6875rem;
544
+ line-height: 0.875rem;
545
+ font-weight: 400;
546
+ letter-spacing: 0em;
547
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
548
+ }
549
+
550
+ @utility text-caption-xs {
551
+ font-size: 0.625rem;
552
+ line-height: 0.75rem;
553
+ font-weight: 400;
554
+ letter-spacing: 0em;
555
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
556
+ }
557
+
558
+ @utility text-subheading-md {
559
+ font-size: 1rem;
560
+ line-height: 1.5rem;
561
+ font-weight: 500;
562
+ letter-spacing: 0.06em;
563
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
564
+ }
565
+
566
+ @utility text-subheading-sm {
567
+ font-size: 0.875rem;
568
+ line-height: 1.25rem;
569
+ font-weight: 500;
570
+ letter-spacing: 0.06em;
571
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
572
+ }
573
+
574
+ @utility text-subheading-xs {
575
+ font-size: 0.75rem;
576
+ line-height: 1rem;
577
+ font-weight: 500;
578
+ letter-spacing: 0.04em;
579
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
580
+ }
581
+
582
+ @utility text-subheading-2xs {
583
+ font-size: 0.6875rem;
584
+ line-height: 0.75rem;
585
+ font-weight: 500;
586
+ letter-spacing: 0.02em;
587
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
588
+ }
589
+
590
+ @utility text-subheading-strong-md {
591
+ font-size: 0.6875rem;
592
+ line-height: 0.875rem;
593
+ font-weight: 700;
594
+ letter-spacing: 0.06em;
595
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
596
+ }
597
+
598
+ @utility text-subheading-strong-sm {
599
+ font-size: 0.625rem;
600
+ line-height: 0.75rem;
601
+ font-weight: 700;
602
+ letter-spacing: 0.06em;
603
+ font-family: var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif);
604
+ }
605
+
606
+ @utility text-code-md {
607
+ font-size: 1rem;
608
+ line-height: 1.6;
609
+ font-weight: 400;
610
+ letter-spacing: 0em;
611
+ font-family: var(--font-mono, 'Geist Mono', 'Fira Code', monospace);
612
+ }
613
+
614
+ @utility text-code-sm {
615
+ font-size: 0.8125rem;
616
+ line-height: 1.6;
617
+ font-weight: 400;
618
+ letter-spacing: 0em;
619
+ font-family: var(--font-mono, 'Geist Mono', 'Fira Code', monospace);
620
+ }
621
+
622
+ /* ── Scrollbar utilities (token-driven) ───────────────────────────────────── */
623
+
624
+ @utility scrollbar-thin {
625
+ scrollbar-width: thin;
626
+ scrollbar-color: var(--color-bg-muted-hover) transparent;
627
+
628
+ &::-webkit-scrollbar {
629
+ width: var(--scrollbar-width-thin);
630
+ height: var(--scrollbar-width-thin);
631
+ }
632
+
633
+ &::-webkit-scrollbar-track {
634
+ background: transparent;
635
+ }
636
+
637
+ &::-webkit-scrollbar-thumb {
638
+ background-color: var(--color-bg-muted-hover);
639
+ border-radius: var(--radius-radius-full);
640
+ }
641
+
642
+ &::-webkit-scrollbar-thumb:hover {
643
+ background-color: var(--color-fg-muted);
644
+ }
645
+ }
646
+
647
+ @utility scrollbar-default {
648
+ scrollbar-width: auto;
649
+ scrollbar-color: var(--color-bg-muted-hover) transparent;
650
+
651
+ &::-webkit-scrollbar {
652
+ width: var(--scrollbar-width-default);
653
+ height: var(--scrollbar-width-default);
654
+ }
655
+
656
+ &::-webkit-scrollbar-track {
657
+ background: transparent;
658
+ }
659
+
660
+ &::-webkit-scrollbar-thumb {
661
+ background-color: var(--color-bg-muted-hover);
662
+ border-radius: var(--radius-radius-full);
663
+ }
664
+
665
+ &::-webkit-scrollbar-thumb:hover {
666
+ background-color: var(--color-fg-muted);
667
+ }
668
+ }