keystone_ui-styles 0.4.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 313dc2e29ebb30c8b62fcc732e29f8b22a1eac18864da55c47f953b0006537da
4
- data.tar.gz: 41caf540753ab7495a116ed1e2ccfcd60ba40fd119d859740bbbd743fe70fddc
3
+ metadata.gz: 4865024c95ea2eab6c71aceb4047def052b27aed1b0ca16848c4cfedf4046742
4
+ data.tar.gz: 564646b1320c31fc79494bf3f8a80cce40525336de6def1e3a1684f6d669e8fd
5
5
  SHA512:
6
- metadata.gz: 1400b6b290038f3b750c14ea37d9a4559c6ebd0e7d5182b03f1ef9e5e546a71f24364715a71cbe8332d4378beabc7d29493adfb94c4a8d65292c32a9e51b3f8e
7
- data.tar.gz: '09fd3861e0b7f2077af23dd81c400e955a23066dd5de631a14e3a0dd7a575ff88da01773dddd11f4b48c168da266f7081bfdce5206308f9296d950c3e9076df9'
6
+ metadata.gz: 4d3fdf1c9429b1bd465c3693da8ff2092263e7e883962d31d32fd5cce2c91ecc9395d84452307f77ee953e44a7b27789c3e735fabda5b50932de25b8c0420889
7
+ data.tar.gz: f5508779eb84ad00a0cf33ad2f1ba86ec072356e404622b483336185bfb3b0c155a393d771bed8d0c8703db3dd8c7a7c2d8309eccabf281b967582dcdd6b2a6e
@@ -85,6 +85,164 @@
85
85
  --ks-color-danger-dark: var(--color-red-600);
86
86
  --ks-color-danger-hover-dark: var(--color-red-500);
87
87
  --ks-color-on-fill-dark: var(--color-white);
88
+ --ks-color-surface: var(--color-white);
89
+ --ks-color-surface-dark: var(--color-zinc-900);
90
+ --ks-color-border: var(--color-gray-200);
91
+ --ks-color-border-dark: var(--color-zinc-700);
92
+ --ks-color-border-control: var(--color-gray-300);
93
+ --ks-color-border-control-dark: var(--color-zinc-700);
94
+ --ks-color-text: var(--color-gray-900);
95
+ --ks-color-text-dark: var(--color-white);
96
+ --ks-color-text-label: var(--color-gray-700);
97
+ --ks-color-text-label-dark: var(--color-gray-300);
98
+ --ks-color-text-muted: var(--color-gray-500);
99
+ --ks-color-text-muted-dark: var(--color-gray-400);
100
+ --ks-font-weight-heading: var(--font-weight-semibold);
101
+ --ks-radius-surface: var(--radius-lg);
102
+ --ks-shadow-surface: var(--shadow-sm);
103
+ --ks-color-success-50: var(--color-green-50);
104
+ --ks-color-success-100: var(--color-green-100);
105
+ --ks-color-success-300: var(--color-green-300);
106
+ --ks-color-success-400: var(--color-green-400);
107
+ --ks-color-success-700: var(--color-green-700);
108
+ --ks-color-success-800: var(--color-green-800);
109
+ --ks-color-success-900: var(--color-green-900);
110
+ --ks-color-warning-50: var(--color-yellow-50);
111
+ --ks-color-warning-100: var(--color-yellow-100);
112
+ --ks-color-warning-300: var(--color-yellow-300);
113
+ --ks-color-warning-400: var(--color-yellow-400);
114
+ --ks-color-warning-700: var(--color-yellow-700);
115
+ --ks-color-warning-800: var(--color-yellow-800);
116
+ --ks-color-warning-900: var(--color-yellow-900);
117
+ --ks-color-danger-50: var(--color-red-50);
118
+ --ks-color-danger-100: var(--color-red-100);
119
+ --ks-color-danger-300: var(--color-red-300);
120
+ --ks-color-danger-400: var(--color-red-400);
121
+ --ks-color-danger-700: var(--color-red-700);
122
+ --ks-color-danger-800: var(--color-red-800);
123
+ --ks-color-danger-900: var(--color-red-900);
124
+ --ks-color-info-50: var(--color-accent-50);
125
+ --ks-color-info-100: var(--color-accent-100);
126
+ --ks-color-info-300: var(--color-accent-300);
127
+ --ks-color-info-400: var(--color-accent-400);
128
+ --ks-color-info-700: var(--color-accent-700);
129
+ --ks-color-info-800: var(--color-accent-800);
130
+ --ks-color-info-900: var(--color-accent-900);
131
+ --ks-border-width: 1px;
132
+ --ks-shadow-overlay: var(--shadow-lg);
133
+ --ks-font-weight-medium: var(--font-weight-medium);
134
+ --ks-color-backdrop: color-mix(in oklab, var(--color-black) 60%, transparent);
135
+ --ks-color-overlay: var(--color-white);
136
+ --ks-color-overlay-dark: var(--color-zinc-800);
137
+ --ks-color-text-heading: var(--color-gray-900);
138
+ --ks-color-text-heading-dark: var(--color-gray-200);
139
+ --ks-color-close: var(--color-gray-400);
140
+ --ks-color-close-hover: var(--color-gray-600);
141
+ --ks-color-close-hover-dark: var(--color-gray-200);
142
+ --ks-color-ring: color-mix(in oklab, var(--color-black) 5%, transparent);
143
+ --ks-color-ring-dark: color-mix(in oklab, var(--color-white) 10%, transparent);
144
+ --ks-color-hover: var(--color-gray-50);
145
+ --ks-color-hover-dark: var(--color-zinc-800);
146
+ --ks-color-border-strong: var(--color-gray-300);
147
+ --ks-color-border-strong-dark: var(--color-zinc-600);
148
+ --ks-color-focus: var(--color-accent-500);
149
+ --ks-color-hover-raised: var(--color-gray-50);
150
+ --ks-color-hover-raised-dark: var(--color-zinc-700);
151
+ --ks-color-border-choice: var(--color-surface-300);
152
+ --ks-color-text-choice: var(--color-surface-900);
153
+ --ks-color-text-choice-dark: var(--color-surface-100);
154
+ --ks-color-text-choice-muted: var(--color-surface-500);
155
+ --ks-color-text-choice-muted-dark: var(--color-surface-400);
156
+ --ks-color-selected-border: var(--color-accent-500);
157
+ --ks-color-selected: var(--color-accent-50);
158
+ --ks-color-selected-dark: var(--color-zinc-800);
159
+ --ks-color-text-option: var(--color-gray-900);
160
+ --ks-color-text-option-dark: var(--color-gray-100);
161
+ --ks-color-text-option-muted: var(--color-surface-500);
162
+ --ks-color-text-option-muted-dark: var(--color-gray-400);
163
+ --ks-color-drop-active: var(--color-accent-50);
164
+ --ks-color-drop-active-dark: color-mix(in oklab, var(--color-accent-900) 10%, transparent);
165
+ --ks-color-icon: var(--color-gray-400);
166
+ --ks-color-icon-dark: var(--color-gray-500);
167
+ --ks-color-text-secondary: var(--color-gray-600);
168
+ --ks-color-text-secondary-dark: var(--color-gray-400);
169
+ --ks-color-link: var(--color-accent-600);
170
+ --ks-color-link-dark: var(--color-accent-400);
171
+ --ks-color-link-hover: var(--color-accent-500);
172
+ --ks-color-link-hover-dark: var(--color-accent-300);
173
+ --ks-radius-pill: calc(infinity * 1px);
174
+ --ks-color-success-600: var(--color-green-600);
175
+ --ks-color-warning-600: var(--color-yellow-600);
176
+ --ks-color-danger-600: var(--color-red-600);
177
+ --ks-color-info-600: var(--color-accent-600);
178
+ --ks-color-danger-500: var(--color-red-500);
179
+ --ks-color-hover-border: color-mix(in oklab, var(--color-accent-500) 50%, transparent);
180
+ --ks-color-border-subtle: var(--color-surface-200);
181
+ --ks-color-border-subtle-dark: var(--color-surface-700);
182
+ --ks-color-fill-muted: var(--color-surface-50);
183
+ --ks-color-fill-muted-dark: var(--color-surface-800);
184
+ --ks-color-text-display: var(--color-surface-900);
185
+ --ks-color-text-display-dark: var(--color-white);
186
+ --ks-color-text-display-muted: var(--color-surface-500);
187
+ --ks-color-text-display-muted-dark: var(--color-surface-400);
188
+ --ks-color-raised: var(--color-white);
189
+ --ks-color-raised-dark: var(--color-surface-800);
190
+ --ks-color-tint: color-mix(in oklab, var(--color-accent-500) 10%, transparent);
191
+ --ks-color-tint-border: color-mix(in oklab, var(--color-accent-500) 20%, transparent);
192
+ --ks-shadow-surface-dark: 0 0 #0000;
193
+ --ks-color-table-head: var(--color-gray-50);
194
+ --ks-color-table-head-dark: color-mix(in oklab, var(--color-gray-800) 75%, transparent);
195
+ --ks-color-table-body: var(--color-white);
196
+ --ks-color-table-body-dark: color-mix(in oklab, var(--color-gray-800) 50%, transparent);
197
+ --ks-color-divider: var(--color-gray-200);
198
+ --ks-color-divider-dark: color-mix(in oklab, var(--color-white) 10%, transparent);
199
+ --ks-color-code: var(--color-surface-900);
200
+ --ks-color-code-dark: var(--color-black);
201
+ --ks-color-text-code: var(--color-surface-100);
202
+ --ks-color-text-body: var(--color-surface-600);
203
+ --ks-color-text-body-dark: var(--color-surface-400);
204
+ --ks-color-icon-soft: var(--color-surface-400);
205
+ --ks-color-track: var(--color-surface-200);
206
+ --ks-color-track-dark: var(--color-surface-700);
207
+ --ks-color-meter: var(--color-accent-500);
208
+ --ks-color-text-meter-label: var(--color-surface-700);
209
+ --ks-color-text-meter-label-dark: var(--color-surface-300);
210
+ --ks-color-funnel-accent: var(--color-accent-500);
211
+ --ks-color-funnel-sky: var(--color-sky-500);
212
+ --ks-color-funnel-violet: var(--color-violet-500);
213
+ --ks-color-funnel-amber: var(--color-amber-500);
214
+ --ks-color-funnel-rose: var(--color-rose-500);
215
+ --ks-color-over-goal: var(--color-green-500);
216
+ --ks-color-over-goal-warning: var(--color-amber-500);
217
+ --ks-color-pipeline-border: var(--color-surface-700);
218
+ --ks-color-pipeline: var(--color-surface-800);
219
+ --ks-color-text-on-dark: var(--color-white);
220
+ --ks-color-pipeline-muted: var(--color-surface-400);
221
+ --ks-color-pipeline-box: var(--color-surface-900);
222
+ --ks-color-pipeline-label: var(--color-surface-500);
223
+ --ks-color-pipeline-amber: var(--color-amber-400);
224
+ --ks-color-nav: var(--base-bg-low, var(--color-white));
225
+ --ks-color-nav-dark: var(--base-bg-low, var(--color-zinc-900));
226
+ --ks-color-nav-border: var(--base-border-tertiary, var(--color-gray-200));
227
+ --ks-color-nav-border-dark: var(--base-border-tertiary, var(--color-zinc-700));
228
+ --ks-color-nav-text: var(--base-text-tertiary, var(--color-gray-500));
229
+ --ks-color-nav-text-dark: var(--base-text-tertiary, var(--color-gray-400));
230
+ --ks-color-nav-text-hover: var(--base-text-secondary, var(--color-gray-700));
231
+ --ks-color-nav-text-hover-dark: var(--base-text-secondary, var(--color-gray-300));
232
+ --ks-color-nav-active: var(--text-primary, var(--color-accent-600));
233
+ --ks-color-nav-active-dark: var(--text-primary, var(--color-accent-400));
234
+ --ks-color-nav-link: var(--base-text, var(--color-gray-900));
235
+ --ks-color-nav-link-dark: var(--base-text, var(--color-white));
236
+ --ks-color-nav-indicator: var(--border-primary, var(--color-accent-600));
237
+ --ks-color-nav-indicator-dark: var(--border-primary, var(--color-accent-400));
238
+ --ks-color-nav-menu-mobile: var(--base-bg-base, var(--color-white));
239
+ --ks-color-nav-menu-mobile-dark: var(--base-bg-base, var(--color-zinc-900));
240
+ --ks-color-nav-hover: var(--base-bg-hover, var(--color-gray-50));
241
+ --ks-color-nav-hover-dark: var(--base-bg-hover, var(--color-zinc-800));
242
+ --ks-shadow-menu: var(--shadow-md);
243
+ --ks-font-weight-normal: var(--font-weight-normal);
244
+ --ks-color-hover-soft: var(--color-gray-50);
245
+ --ks-color-hover-soft-dark: var(--color-gray-800);
88
246
  }
89
247
  }
90
248
 
@@ -118,11 +276,11 @@
118
276
  }
119
277
 
120
278
  .ks-panel {
121
- @apply border border-gray-200 bg-white dark:bg-zinc-900 dark:border-zinc-700;
279
+ @apply border border-(color:--ks-color-border) bg-(color:--ks-color-surface) dark:bg-(color:--ks-color-surface-dark) dark:border-(color:--ks-color-border-dark);
122
280
  }
123
281
 
124
282
  .ks-input {
125
- @apply block w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-1 focus:border-accent-500 focus:ring-accent-500 dark:bg-zinc-900 dark:border-zinc-700 dark:text-white dark:placeholder:text-gray-500 dark:focus:border-accent-400 dark:focus:ring-accent-400;
283
+ @apply block w-full rounded-[calc(var(--ks-radius-control)*0.75)] border border-(color:--ks-color-border-control) bg-(color:--ks-color-surface) px-[calc(var(--ks-spacing)*3)] py-[calc(var(--ks-spacing)*2)] text-sm text-(color:--ks-color-text) placeholder:text-gray-400 focus:outline-none focus:ring-1 focus:border-accent-500 focus:ring-accent-500 dark:bg-(color:--ks-color-surface-dark) dark:border-(color:--ks-color-border-control-dark) dark:text-(color:--ks-color-text-dark) dark:placeholder:text-gray-500 dark:focus:border-accent-400 dark:focus:ring-accent-400;
126
284
  }
127
285
 
128
286
  .ks-input-disabled {
@@ -130,7 +288,7 @@
130
288
  }
131
289
 
132
290
  .ks-label {
133
- @apply block text-sm font-medium text-gray-700 dark:text-gray-300;
291
+ @apply block text-sm font-medium text-(color:--ks-color-text-label) dark:text-(color:--ks-color-text-label-dark);
134
292
  }
135
293
 
136
294
  .ks-required {
@@ -138,7 +296,7 @@
138
296
  }
139
297
 
140
298
  .ks-hint {
141
- @apply mt-1 text-sm text-gray-500 dark:text-gray-400;
299
+ @apply mt-1 text-sm text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
142
300
  }
143
301
 
144
302
  .ks-error {
@@ -150,7 +308,7 @@
150
308
  }
151
309
 
152
310
  .ks-page {
153
- @apply px-4 py-4 sm:px-6 lg:px-8;
311
+ @apply px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*4)] sm:px-[calc(var(--ks-spacing)*6)] lg:px-[calc(var(--ks-spacing)*8)];
154
312
  }
155
313
 
156
314
  .ks-page-sm {
@@ -190,11 +348,11 @@
190
348
  }
191
349
 
192
350
  .ks-page-header-title {
193
- @apply text-2xl font-bold text-gray-900 dark:text-white;
351
+ @apply text-2xl font-[weight:calc(var(--ks-font-weight-heading)+100)] text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
194
352
  }
195
353
 
196
354
  .ks-page-header-subtitle {
197
- @apply mt-1 text-sm text-gray-500 dark:text-gray-400;
355
+ @apply mt-1 text-sm text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
198
356
  }
199
357
 
200
358
  .ks-page-header-actions {
@@ -218,11 +376,11 @@
218
376
  }
219
377
 
220
378
  .ks-section-title {
221
- @apply text-lg font-semibold text-gray-900 dark:text-white;
379
+ @apply text-lg font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
222
380
  }
223
381
 
224
382
  .ks-section-subtitle {
225
- @apply mt-1 text-sm text-gray-500 dark:text-gray-400;
383
+ @apply mt-1 text-sm text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
226
384
  }
227
385
 
228
386
  .ks-section-action {
@@ -230,27 +388,27 @@
230
388
  }
231
389
 
232
390
  .ks-card {
233
- @apply overflow-hidden rounded-lg border border-gray-200 bg-white dark:bg-zinc-900 dark:border-zinc-700;
391
+ @apply overflow-hidden rounded-(--ks-radius-surface) border border-(color:--ks-color-border) bg-(color:--ks-color-surface) dark:bg-(color:--ks-color-surface-dark) dark:border-(color:--ks-color-border-dark);
234
392
  }
235
393
 
236
394
  .ks-card-edge {
237
- @apply overflow-hidden border-y border-gray-200 bg-white sm:rounded-lg sm:border-x dark:bg-zinc-900 dark:border-zinc-700;
395
+ @apply overflow-hidden border-y border-(color:--ks-color-border) bg-(color:--ks-color-surface) sm:rounded-(--ks-radius-surface) sm:border-x dark:bg-(color:--ks-color-surface-dark) dark:border-(color:--ks-color-border-dark);
238
396
  }
239
397
 
240
398
  .ks-card-body {
241
- @apply px-4 py-4 sm:px-6 sm:pt-6 sm:pb-4;
399
+ @apply px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*4)] sm:px-[calc(var(--ks-spacing)*6)] sm:pt-[calc(var(--ks-spacing)*6)] sm:pb-[calc(var(--ks-spacing)*4)];
242
400
  }
243
401
 
244
402
  .ks-card-title {
245
- @apply text-lg font-semibold text-gray-900 dark:text-white m-0;
403
+ @apply text-lg font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark) m-0;
246
404
  }
247
405
 
248
406
  .ks-card-summary {
249
- @apply mt-1 text-sm text-gray-500 dark:text-gray-400 mb-0;
407
+ @apply mt-1 text-sm text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark) mb-0;
250
408
  }
251
409
 
252
410
  .ks-card-cta {
253
- @apply px-4 pb-4 sm:px-6 sm:pb-6;
411
+ @apply px-[calc(var(--ks-spacing)*4)] pb-[calc(var(--ks-spacing)*4)] sm:px-[calc(var(--ks-spacing)*6)] sm:pb-[calc(var(--ks-spacing)*6)];
254
412
  }
255
413
 
256
414
  .ks-card-link {
@@ -258,23 +416,23 @@
258
416
  }
259
417
 
260
418
  .ks-alert {
261
- @apply rounded-md p-4;
419
+ @apply rounded-[calc(var(--ks-radius-surface)*0.75)] p-[calc(var(--ks-spacing)*4)];
262
420
  }
263
421
 
264
422
  .ks-alert-info {
265
- @apply bg-accent-50 text-accent-800 dark:bg-accent-900/30 dark:text-accent-300;
423
+ @apply bg-(color:--ks-color-info-50) text-(color:--ks-color-info-800) dark:bg-(color:--ks-color-info-900)/30 dark:text-(color:--ks-color-info-300);
266
424
  }
267
425
 
268
426
  .ks-alert-success {
269
- @apply bg-green-50 text-green-800 dark:bg-green-900/30 dark:text-green-300;
427
+ @apply bg-(color:--ks-color-success-50) text-(color:--ks-color-success-800) dark:bg-(color:--ks-color-success-900)/30 dark:text-(color:--ks-color-success-300);
270
428
  }
271
429
 
272
430
  .ks-alert-warning {
273
- @apply bg-yellow-50 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300;
431
+ @apply bg-(color:--ks-color-warning-50) text-(color:--ks-color-warning-800) dark:bg-(color:--ks-color-warning-900)/30 dark:text-(color:--ks-color-warning-300);
274
432
  }
275
433
 
276
434
  .ks-alert-error {
277
- @apply bg-red-50 text-red-800 dark:bg-red-900/30 dark:text-red-300;
435
+ @apply bg-(color:--ks-color-danger-50) text-(color:--ks-color-danger-800) dark:bg-(color:--ks-color-danger-900)/30 dark:text-(color:--ks-color-danger-300);
278
436
  }
279
437
 
280
438
  .ks-alert-body {
@@ -286,7 +444,7 @@
286
444
  }
287
445
 
288
446
  .ks-alert-title {
289
- @apply font-semibold;
447
+ @apply font-(weight:--ks-font-weight-heading);
290
448
  }
291
449
 
292
450
  .ks-alert-message {
@@ -310,18 +468,726 @@
310
468
  }
311
469
 
312
470
  .ks-badge-success {
313
- @apply bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-400;
471
+ @apply bg-(color:--ks-color-success-100) text-(color:--ks-color-success-700) dark:bg-(color:--ks-color-success-900)/50 dark:text-(color:--ks-color-success-400);
314
472
  }
315
473
 
316
474
  .ks-badge-danger {
317
- @apply bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-400;
475
+ @apply bg-(color:--ks-color-danger-100) text-(color:--ks-color-danger-700) dark:bg-(color:--ks-color-danger-900)/50 dark:text-(color:--ks-color-danger-400);
318
476
  }
319
477
 
320
478
  .ks-badge-warning {
321
- @apply bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-400;
479
+ @apply bg-(color:--ks-color-warning-100) text-(color:--ks-color-warning-700) dark:bg-(color:--ks-color-warning-900)/50 dark:text-(color:--ks-color-warning-400);
322
480
  }
323
481
 
324
482
  .ks-badge-info {
325
- @apply bg-accent-100 text-accent-700 dark:bg-accent-900/50 dark:text-accent-400;
483
+ @apply bg-(color:--ks-color-info-100) text-(color:--ks-color-info-700) dark:bg-(color:--ks-color-info-900)/50 dark:text-(color:--ks-color-info-400);
484
+ }
485
+
486
+ .ks-panel-radius-md {
487
+ @apply rounded-(--ks-radius-surface);
488
+ }
489
+
490
+ .ks-panel-radius-lg {
491
+ @apply rounded-[calc(var(--ks-radius-surface)*1.5)];
492
+ }
493
+
494
+ .ks-panel-radius-xl {
495
+ @apply rounded-[calc(var(--ks-radius-surface)*2)];
496
+ }
497
+
498
+ .ks-panel-shadow {
499
+ @apply shadow-(--ks-shadow-surface);
500
+ }
501
+
502
+ .ks-panel-padding-sm {
503
+ @apply p-[calc(var(--ks-spacing)*4)];
504
+ }
505
+
506
+ .ks-panel-padding-md {
507
+ @apply p-[calc(var(--ks-spacing)*5)];
508
+ }
509
+
510
+ .ks-panel-padding-lg {
511
+ @apply p-[calc(var(--ks-spacing)*6)];
512
+ }
513
+
514
+ .ks-modal-backdrop {
515
+ @apply bg-(color:--ks-color-backdrop);
516
+ }
517
+
518
+ .ks-modal-panel {
519
+ @apply rounded-[calc(var(--ks-radius-surface)*1.5)] border-(length:--ks-border-width) border-(color:--ks-color-border) bg-(color:--ks-color-overlay) p-[calc(var(--ks-spacing)*6)] mx-[calc(var(--ks-spacing)*4)] dark:border-(color:--ks-color-border-dark) dark:bg-(color:--ks-color-overlay-dark);
520
+ }
521
+
522
+ .ks-modal-header {
523
+ @apply mb-[calc(var(--ks-spacing)*4)];
524
+ }
525
+
526
+ .ks-modal-title {
527
+ @apply font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-heading) dark:text-(color:--ks-color-text-heading-dark);
528
+ }
529
+
530
+ .ks-modal-close {
531
+ @apply text-(color:--ks-color-close) hover:text-(color:--ks-color-close-hover) dark:hover:text-(color:--ks-color-close-hover-dark);
532
+ }
533
+
534
+ .ks-action-menu {
535
+ @apply mt-[calc(var(--ks-spacing)*2)] rounded-[calc(var(--ks-radius-surface)*0.75)] bg-(color:--ks-color-overlay) py-[calc(var(--ks-spacing)*1)] shadow-(--ks-shadow-overlay) ring-(length:--ks-border-width) ring-(color:--ks-color-ring) dark:bg-(color:--ks-color-overlay-dark) dark:ring-(color:--ks-color-ring-dark);
536
+ }
537
+
538
+ .ks-action-menu-button {
539
+ @apply text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
540
+ }
541
+
542
+ .ks-menu {
543
+ @apply mt-[calc(var(--ks-spacing)*1)] rounded-[calc(var(--ks-radius-surface)*0.75)] border-(length:--ks-border-width) border-(color:--ks-color-border) bg-(color:--ks-color-surface) shadow-(--ks-shadow-overlay) dark:border-(color:--ks-color-border-dark) dark:bg-(color:--ks-color-surface-dark);
544
+ }
545
+
546
+ .ks-menu-trigger {
547
+ @apply gap-[calc(var(--ks-spacing)*1)] rounded-[calc(var(--ks-radius-control)*0.75)] border-(length:--ks-border-width) px-[calc(var(--ks-spacing)*3)] py-[calc(var(--ks-spacing)*2)] border-(color:--ks-color-border-control) bg-(color:--ks-color-surface) text-(color:--ks-color-text) dark:border-(color:--ks-color-border-control-dark) dark:bg-(color:--ks-color-surface-dark) dark:text-(color:--ks-color-text-dark);
548
+ }
549
+
550
+ .ks-menu-option {
551
+ @apply gap-[calc(var(--ks-spacing)*2)] px-[calc(var(--ks-spacing)*3)] py-[calc(var(--ks-spacing)*2)] text-(color:--ks-color-text-label) hover:bg-(color:--ks-color-hover) dark:text-(color:--ks-color-text-label-dark) dark:hover:bg-(color:--ks-color-hover-dark);
552
+ }
553
+
554
+ .ks-menu-checkbox {
555
+ @apply rounded-[calc(var(--ks-radius-control)*0.5)] border-(color:--ks-color-border-strong) text-(color:--ks-color-accent) focus:ring-(color:--ks-color-focus) dark:border-(color:--ks-color-border-strong-dark);
556
+ }
557
+
558
+ .ks-copy-button {
559
+ @apply gap-[calc(var(--ks-spacing)*1.5)] rounded-[calc(var(--ks-radius-control)*0.75)] border-(length:--ks-border-width) border-(color:--ks-color-border-strong) bg-(color:--ks-color-overlay) px-[calc(var(--ks-spacing)*3)] py-[calc(var(--ks-spacing)*1.5)] font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-label) hover:bg-(color:--ks-color-hover-raised) dark:border-(color:--ks-color-border-strong-dark) dark:bg-(color:--ks-color-overlay-dark) dark:text-(color:--ks-color-text-label-dark) dark:hover:bg-(color:--ks-color-hover-raised-dark);
560
+ }
561
+
562
+ .ks-theme-toggle-option {
563
+ @apply aria-pressed:bg-(color:--ks-color-accent) aria-pressed:hover:bg-(color:--ks-color-accent-hover) dark:aria-pressed:bg-(color:--ks-color-accent-dark) dark:aria-pressed:hover:bg-(color:--ks-color-accent-hover-dark);
564
+ }
565
+
566
+ .ks-checkbox-row {
567
+ @apply gap-[calc(var(--ks-spacing)*3)] py-[calc(var(--ks-spacing)*3)];
568
+ }
569
+
570
+ .ks-checkbox-row-input {
571
+ @apply mt-[calc(var(--ks-spacing)*0.5)] rounded-[calc(var(--ks-radius-control)*0.5)] border-(color:--ks-color-border-choice) text-(color:--ks-color-accent) checked:bg-(color:--ks-color-accent) focus:ring-(color:--ks-color-focus);
572
+ }
573
+
574
+ .ks-checkbox-row-label {
575
+ @apply font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-choice) dark:text-(color:--ks-color-text-choice-dark);
576
+ }
577
+
578
+ .ks-checkbox-row-hint {
579
+ @apply mt-[calc(var(--ks-spacing)*0.5)] text-(color:--ks-color-text-choice-muted) dark:text-(color:--ks-color-text-choice-muted-dark);
580
+ }
581
+
582
+ .ks-radio-card {
583
+ @apply px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*3)] rounded-(--ks-radius-surface) border-[calc(var(--ks-border-width)*2)];
584
+ }
585
+
586
+ .ks-radio-card-highlight {
587
+ @apply border-(color:--ks-color-border) dark:border-(color:--ks-color-border-dark) peer-checked:border-(color:--ks-color-selected-border) peer-checked:bg-(color:--ks-color-selected) dark:peer-checked:bg-(color:--ks-color-selected-dark);
588
+ }
589
+
590
+ .ks-radio-card-label {
591
+ @apply font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-option) dark:text-(color:--ks-color-text-option-dark);
592
+ }
593
+
594
+ .ks-radio-card-hint {
595
+ @apply mt-[calc(var(--ks-spacing)*1)] text-(color:--ks-color-text-option-muted) dark:text-(color:--ks-color-text-option-muted-dark);
596
+ }
597
+
598
+ .ks-option-card {
599
+ @apply gap-[calc(var(--ks-spacing)*2)] px-[calc(var(--ks-spacing)*3)] py-[calc(var(--ks-spacing)*2)] rounded-(--ks-radius-surface) border-[calc(var(--ks-border-width)*2)];
600
+ }
601
+
602
+ .ks-option-card-selected {
603
+ @apply border-(color:--ks-color-selected-border);
604
+ }
605
+
606
+ .ks-file-upload {
607
+ @apply space-y-[calc(var(--ks-spacing)*1)];
608
+ }
609
+
610
+ .ks-file-upload-drop-zone {
611
+ @apply mt-[calc(var(--ks-spacing)*1)] rounded-[calc(var(--ks-radius-surface)*0.75)] border-[calc(var(--ks-border-width)*2)] border-dashed border-(color:--ks-color-border-strong) px-[calc(var(--ks-spacing)*6)] py-[calc(var(--ks-spacing)*8)] dark:border-(color:--ks-color-border-strong-dark);
612
+ }
613
+
614
+ .ks-file-upload-drop-zone-active {
615
+ @apply border-(color:--ks-color-selected-border) bg-(color:--ks-color-drop-active) dark:bg-(color:--ks-color-drop-active-dark);
616
+ }
617
+
618
+ .ks-file-upload-inner {
619
+ @apply space-y-[calc(var(--ks-spacing)*2)];
620
+ }
621
+
622
+ .ks-file-upload-icon {
623
+ @apply text-(color:--ks-color-icon) dark:text-(color:--ks-color-icon-dark);
624
+ }
625
+
626
+ .ks-file-upload-prompt {
627
+ @apply text-(color:--ks-color-text-secondary) dark:text-(color:--ks-color-text-secondary-dark);
628
+ }
629
+
630
+ .ks-file-upload-browse {
631
+ @apply font-(weight:--ks-font-weight-strong) text-(color:--ks-color-link) hover:text-(color:--ks-color-link-hover) dark:text-(color:--ks-color-link-dark) dark:hover:text-(color:--ks-color-link-hover-dark);
632
+ }
633
+
634
+ .ks-file-upload-hint {
635
+ @apply mt-[calc(var(--ks-spacing)*1)] text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
636
+ }
637
+
638
+ .ks-file-upload-file-name {
639
+ @apply mt-[calc(var(--ks-spacing)*2)] text-(color:--ks-color-text-label) dark:text-(color:--ks-color-text-label-dark);
640
+ }
641
+
642
+ .ks-color-swatch {
643
+ @apply rounded-(--ks-radius-surface) border-(length:--ks-border-width) border-(color:--ks-color-border-strong) dark:border-(color:--ks-color-border-strong-dark);
644
+ }
645
+
646
+ .ks-color-picker-panel {
647
+ @apply mt-[calc(var(--ks-spacing)*2)] p-[calc(var(--ks-spacing)*3)] rounded-(--ks-radius-surface) shadow-(--ks-shadow-overlay) bg-(color:--ks-color-overlay) border-(length:--ks-border-width) border-(color:--ks-color-border) dark:bg-(color:--ks-color-overlay-dark) dark:border-(color:--ks-color-border-dark);
648
+ }
649
+
650
+ .ks-metric-card {
651
+ @apply rounded-[calc(var(--ks-radius-surface)*1.5)] border-(length:--ks-border-width) border-(color:--ks-color-border) bg-(color:--ks-color-overlay) p-[calc(var(--ks-spacing)*6)] dark:border-(color:--ks-color-border-dark) dark:bg-(color:--ks-color-overlay-dark);
652
+ }
653
+
654
+ .ks-stat-card-header {
655
+ @apply gap-[calc(var(--ks-spacing)*2)];
656
+ }
657
+
658
+ .ks-stat-card-label {
659
+ @apply font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
660
+ }
661
+
662
+ .ks-stat-card-value {
663
+ @apply mt-[calc(var(--ks-spacing)*1)] font-[weight:calc(var(--ks-font-weight-heading)+100)];
664
+ }
665
+
666
+ .ks-stat-card-suffix {
667
+ @apply text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
668
+ }
669
+
670
+ .ks-stat-card-disclosure {
671
+ @apply mt-[calc(var(--ks-spacing)*2)] rounded-(--ks-radius-surface) border-(length:--ks-border-width) border-(color:--ks-color-border) bg-(color:--ks-color-overlay) p-[calc(var(--ks-spacing)*3)] text-(color:--ks-color-text-secondary) shadow-(--ks-shadow-overlay) dark:border-(color:--ks-color-border-dark) dark:bg-(color:--ks-color-overlay-dark) dark:text-(color:--ks-color-text-secondary-dark) space-y-[calc(var(--ks-spacing)*1)];
672
+ }
673
+
674
+ .ks-stat-card-emphasis {
675
+ @apply font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-label) dark:text-(color:--ks-color-text-label-dark);
676
+ }
677
+
678
+ .ks-stat-card-change {
679
+ @apply mt-[calc(var(--ks-spacing)*1)] font-(weight:--ks-font-weight-medium);
680
+ }
681
+
682
+ .ks-stat-card-info {
683
+ @apply text-(color:--ks-color-close) hover:text-(color:--ks-color-link) dark:hover:text-(color:--ks-color-link-dark);
684
+ }
685
+
686
+ .ks-tone-neutral {
687
+ @apply text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
688
+ }
689
+
690
+ .ks-tone-muted {
691
+ @apply text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
692
+ }
693
+
694
+ .ks-tone-success {
695
+ @apply text-(color:--ks-color-success-600) dark:text-(color:--ks-color-success-400);
696
+ }
697
+
698
+ .ks-tone-danger {
699
+ @apply text-(color:--ks-color-danger-600) dark:text-(color:--ks-color-danger-400);
700
+ }
701
+
702
+ .ks-tone-warning {
703
+ @apply text-(color:--ks-color-warning-600) dark:text-(color:--ks-color-warning-400);
704
+ }
705
+
706
+ .ks-tone-info {
707
+ @apply text-(color:--ks-color-info-600) dark:text-(color:--ks-color-info-400);
708
+ }
709
+
710
+ .ks-chart-card-title {
711
+ @apply font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-muted) mb-[calc(var(--ks-spacing)*4)] dark:text-(color:--ks-color-text-muted-dark);
712
+ }
713
+
714
+ .ks-link-card {
715
+ @apply rounded-(--ks-radius-surface) border-(length:--ks-border-width) border-(color:--ks-color-border) bg-(color:--ks-color-surface) hover:border-(color:--ks-color-hover-border) dark:border-(color:--ks-color-border-dark) dark:bg-(color:--ks-color-surface-dark);
716
+ }
717
+
718
+ .ks-link-card-shadow {
719
+ @apply shadow-(--ks-shadow-surface);
720
+ }
721
+
722
+ .ks-link-card-padding-sm {
723
+ @apply p-[calc(var(--ks-spacing)*3)];
724
+ }
725
+
726
+ .ks-link-card-padding-md {
727
+ @apply p-[calc(var(--ks-spacing)*4)];
728
+ }
729
+
730
+ .ks-link-card-padding-lg {
731
+ @apply p-[calc(var(--ks-spacing)*6)];
732
+ }
733
+
734
+ .ks-cta-banner {
735
+ @apply rounded-[calc(var(--ks-radius-surface)*2)] border-(length:--ks-border-width) px-[calc(var(--ks-spacing)*6)] py-[calc(var(--ks-spacing)*12)] border-(color:--ks-color-border-subtle) bg-(color:--ks-color-fill-muted) lg:px-[calc(var(--ks-spacing)*16)] lg:py-[calc(var(--ks-spacing)*16)] dark:border-(color:--ks-color-border-subtle-dark) dark:bg-(color:--ks-color-fill-muted-dark);
736
+ }
737
+
738
+ .ks-cta-banner-title {
739
+ @apply mb-[calc(var(--ks-spacing)*4)] font-[weight:calc(var(--ks-font-weight-heading)+100)] text-(color:--ks-color-text-display) dark:text-(color:--ks-color-text-display-dark);
740
+ }
741
+
742
+ .ks-cta-banner-subtitle {
743
+ @apply mb-[calc(var(--ks-spacing)*8)] text-(color:--ks-color-text-display-muted) dark:text-(color:--ks-color-text-display-muted-dark);
744
+ }
745
+
746
+ .ks-cta-banner-actions {
747
+ @apply gap-[calc(var(--ks-spacing)*4)];
748
+ }
749
+
750
+ .ks-feature-grid {
751
+ @apply gap-[calc(var(--ks-spacing)*6)];
752
+ }
753
+
754
+ .ks-feature-grid-title {
755
+ @apply mb-[calc(var(--ks-spacing)*4)] font-[weight:calc(var(--ks-font-weight-heading)+100)] text-(color:--ks-color-text-display) dark:text-(color:--ks-color-text-display-dark);
756
+ }
757
+
758
+ .ks-feature-grid-subtitle {
759
+ @apply mb-[calc(var(--ks-spacing)*16)] text-(color:--ks-color-text-display-muted) dark:text-(color:--ks-color-text-display-muted-dark);
760
+ }
761
+
762
+ .ks-feature-card {
763
+ @apply rounded-[calc(var(--ks-radius-surface)*1.5)] border-(length:--ks-border-width) p-[calc(var(--ks-spacing)*6)] border-(color:--ks-color-border-subtle) bg-(color:--ks-color-raised) hover:border-(color:--ks-color-hover-border) dark:border-(color:--ks-color-border-subtle-dark) dark:bg-(color:--ks-color-raised-dark);
764
+ }
765
+
766
+ .ks-feature-card-icon {
767
+ @apply mb-[calc(var(--ks-spacing)*4)] rounded-(--ks-radius-surface) bg-(color:--ks-color-tint) text-(color:--ks-color-link) dark:text-(color:--ks-color-link-dark);
768
+ }
769
+
770
+ .ks-feature-card-title {
771
+ @apply mb-[calc(var(--ks-spacing)*2)] font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-display) dark:text-(color:--ks-color-text-display-dark);
772
+ }
773
+
774
+ .ks-feature-card-description {
775
+ @apply text-(color:--ks-color-text-display-muted) dark:text-(color:--ks-color-text-display-muted-dark);
776
+ }
777
+
778
+ .ks-hero {
779
+ @apply pt-[calc(var(--ks-spacing)*24)];
780
+ }
781
+
782
+ .ks-hero-inner {
783
+ @apply px-[calc(var(--ks-spacing)*6)] py-[calc(var(--ks-spacing)*24)] lg:py-[calc(var(--ks-spacing)*32)];
784
+ }
785
+
786
+ .ks-hero-content {
787
+ @apply gap-[calc(var(--ks-spacing)*8)];
788
+ }
789
+
790
+ .ks-hero-split {
791
+ @apply gap-[calc(var(--ks-spacing)*12)] lg:gap-[calc(var(--ks-spacing)*16)];
792
+ }
793
+
794
+ .ks-hero-title {
795
+ @apply font-[weight:calc(var(--ks-font-weight-heading)+100)] text-(color:--ks-color-text-display) dark:text-(color:--ks-color-text-display-dark);
796
+ }
797
+
798
+ .ks-hero-subtitle {
799
+ @apply text-(color:--ks-color-text-display-muted) dark:text-(color:--ks-color-text-display-muted-dark);
800
+ }
801
+
802
+ .ks-hero-badge {
803
+ @apply gap-[calc(var(--ks-spacing)*2)] rounded-(--ks-radius-pill) border-(length:--ks-border-width) px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*1.5)] border-(color:--ks-color-tint-border) bg-(color:--ks-color-tint) text-(color:--ks-color-link) dark:text-(color:--ks-color-link-dark);
804
+ }
805
+
806
+ .ks-hero-actions {
807
+ @apply gap-[calc(var(--ks-spacing)*4)];
808
+ }
809
+
810
+ .ks-table {
811
+ @apply rounded-(--ks-radius-surface) border-(length:--ks-border-width) border-(color:--ks-color-border) shadow-(--ks-shadow-surface) dark:border-(color:--ks-color-border-dark) dark:shadow-(--ks-shadow-surface-dark);
812
+ }
813
+
814
+ .ks-table-head {
815
+ @apply bg-(color:--ks-color-table-head) dark:bg-(color:--ks-color-table-head-dark);
816
+ }
817
+
818
+ .ks-table-body {
819
+ @apply bg-(color:--ks-color-table-body) divide-y-(length:--ks-border-width) divide-(color:--ks-color-divider) dark:bg-(color:--ks-color-table-body-dark) dark:divide-(color:--ks-color-divider-dark);
820
+ }
821
+
822
+ .ks-table-header {
823
+ @apply py-[calc(var(--ks-spacing)*3.5)] font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-heading) dark:text-(color:--ks-color-text-heading-dark);
824
+ }
825
+
826
+ .ks-table-header-first {
827
+ @apply pr-[calc(var(--ks-spacing)*3)] pl-[calc(var(--ks-spacing)*6)];
828
+ }
829
+
830
+ .ks-table-header-middle {
831
+ @apply px-[calc(var(--ks-spacing)*3)];
832
+ }
833
+
834
+ .ks-table-header-last {
835
+ @apply py-[calc(var(--ks-spacing)*3.5)] pr-[calc(var(--ks-spacing)*6)] pl-[calc(var(--ks-spacing)*3)];
836
+ }
837
+
838
+ .ks-table-cell-first {
839
+ @apply py-[calc(var(--ks-spacing)*4)] pr-[calc(var(--ks-spacing)*3)] pl-[calc(var(--ks-spacing)*6)] font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
840
+ }
841
+
842
+ .ks-table-cell-middle {
843
+ @apply px-[calc(var(--ks-spacing)*3)] py-[calc(var(--ks-spacing)*4)] text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
844
+ }
845
+
846
+ .ks-table-cell-last {
847
+ @apply py-[calc(var(--ks-spacing)*4)] pr-[calc(var(--ks-spacing)*6)] pl-[calc(var(--ks-spacing)*3)] font-(weight:--ks-font-weight-medium);
848
+ }
849
+
850
+ .ks-table-sort-link {
851
+ @apply gap-[calc(var(--ks-spacing)*1)];
852
+ }
853
+
854
+ .ks-table-sort-icon-active {
855
+ @apply text-(color:--ks-color-text-label) dark:text-(color:--ks-color-text-label-dark);
856
+ }
857
+
858
+ .ks-table-sort-icon {
859
+ @apply text-(color:--ks-color-icon) dark:text-(color:--ks-color-icon-dark);
860
+ }
861
+
862
+ .ks-code {
863
+ @apply rounded-(--ks-radius-surface) border-(length:--ks-border-width) border-(color:--ks-color-border-subtle) dark:border-(color:--ks-color-border-subtle-dark);
864
+ }
865
+
866
+ .ks-code-caption {
867
+ @apply border-b-(length:--ks-border-width) border-(color:--ks-color-border-subtle) bg-(color:--ks-color-fill-muted) px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*2)] text-(color:--ks-color-text-display-muted) dark:border-(color:--ks-color-border-subtle-dark) dark:bg-(color:--ks-color-fill-muted-dark) dark:text-(color:--ks-color-text-display-muted-dark);
868
+ }
869
+
870
+ .ks-code-block {
871
+ @apply bg-(color:--ks-color-code) p-[calc(var(--ks-spacing)*4)] text-(color:--ks-color-text-code) dark:bg-(color:--ks-color-code-dark);
872
+ }
873
+
874
+ .ks-accordion {
875
+ @apply gap-[calc(var(--ks-spacing)*4)];
876
+ }
877
+
878
+ .ks-accordion-item {
879
+ @apply rounded-[calc(var(--ks-radius-surface)*1.5)] border-(length:--ks-border-width) border-(color:--ks-color-border-subtle) dark:border-(color:--ks-color-border-subtle-dark);
880
+ }
881
+
882
+ .ks-disclosure {
883
+ @apply rounded-[calc(var(--ks-radius-surface)*1.5)] border-(length:--ks-border-width) border-(color:--ks-color-border-subtle) dark:border-(color:--ks-color-border-subtle-dark);
884
+ }
885
+
886
+ .ks-accordion-button {
887
+ @apply px-[calc(var(--ks-spacing)*6)] py-[calc(var(--ks-spacing)*4)] font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-display) hover:text-(color:--ks-color-link) dark:text-(color:--ks-color-text-display-dark) dark:hover:text-(color:--ks-color-link-dark);
888
+ }
889
+
890
+ .ks-disclosure-summary {
891
+ @apply gap-[calc(var(--ks-spacing)*4)] px-[calc(var(--ks-spacing)*6)] py-[calc(var(--ks-spacing)*4)] font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-display) dark:text-(color:--ks-color-text-display-dark);
892
+ }
893
+
894
+ .ks-accordion-answer {
895
+ @apply px-[calc(var(--ks-spacing)*6)] pb-[calc(var(--ks-spacing)*4)] text-(color:--ks-color-text-body) dark:text-(color:--ks-color-text-body-dark);
896
+ }
897
+
898
+ .ks-disclosure-body {
899
+ @apply px-[calc(var(--ks-spacing)*6)] pb-[calc(var(--ks-spacing)*4)] text-(color:--ks-color-text-body) dark:text-(color:--ks-color-text-body-dark);
900
+ }
901
+
902
+ .ks-disclosure-icon {
903
+ @apply text-(color:--ks-color-icon-soft);
904
+ }
905
+
906
+ .ks-tab-bar {
907
+ @apply mb-[calc(var(--ks-spacing)*8)] gap-[calc(var(--ks-spacing)*2)];
908
+ }
909
+
910
+ .ks-tab {
911
+ @apply rounded-(--ks-radius-surface) px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*2)] font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-muted) hover:text-(color:--ks-color-text) dark:text-(color:--ks-color-text-muted-dark) dark:hover:text-(color:--ks-color-text-dark);
912
+ }
913
+
914
+ .ks-tab-active {
915
+ @apply data-[active]:bg-(color:--ks-color-tint) data-[active]:text-(color:--ks-color-link) dark:data-[active]:text-(color:--ks-color-link-dark);
916
+ }
917
+
918
+ .ks-progress-track {
919
+ @apply bg-(color:--ks-color-track) rounded-(--ks-radius-pill) dark:bg-(color:--ks-color-track-dark);
920
+ }
921
+
922
+ .ks-progress-bar {
923
+ @apply bg-(color:--ks-color-meter) rounded-(--ks-radius-pill);
924
+ }
925
+
926
+ .ks-meter-label {
927
+ @apply mb-[calc(var(--ks-spacing)*1)] font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-meter-label) dark:text-(color:--ks-color-text-meter-label-dark);
928
+ }
929
+
930
+ .ks-funnel {
931
+ @apply space-y-[calc(var(--ks-spacing)*2)];
932
+ }
933
+
934
+ .ks-funnel-layer {
935
+ @apply space-y-[calc(var(--ks-spacing)*1)];
936
+ }
937
+
938
+ .ks-funnel-row {
939
+ @apply gap-[calc(var(--ks-spacing)*3)];
940
+ }
941
+
942
+ .ks-funnel-label {
943
+ @apply font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-meter-label) dark:text-(color:--ks-color-text-meter-label-dark);
944
+ }
945
+
946
+ .ks-funnel-value {
947
+ @apply font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-display) dark:text-(color:--ks-color-text-display-dark);
948
+ }
949
+
950
+ .ks-funnel-bar {
951
+ @apply rounded-[calc(var(--ks-radius-surface)*0.75)];
952
+ }
953
+
954
+ .ks-funnel-transition {
955
+ @apply py-[calc(var(--ks-spacing)*1)] text-(color:--ks-color-text-display-muted) dark:text-(color:--ks-color-text-display-muted-dark);
956
+ }
957
+
958
+ .ks-funnel-bar-accent {
959
+ @apply bg-(color:--ks-color-funnel-accent);
960
+ }
961
+
962
+ .ks-funnel-bar-sky {
963
+ @apply bg-(color:--ks-color-funnel-sky);
964
+ }
965
+
966
+ .ks-funnel-bar-violet {
967
+ @apply bg-(color:--ks-color-funnel-violet);
968
+ }
969
+
970
+ .ks-funnel-bar-amber {
971
+ @apply bg-(color:--ks-color-funnel-amber);
972
+ }
973
+
974
+ .ks-funnel-bar-rose {
975
+ @apply bg-(color:--ks-color-funnel-rose);
976
+ }
977
+
978
+ .ks-bucket {
979
+ @apply gap-[calc(var(--ks-spacing)*1)];
980
+ }
981
+
982
+ .ks-bucket-series {
983
+ @apply gap-[calc(var(--ks-spacing)*4)];
984
+ }
985
+
986
+ .ks-bucket-label {
987
+ @apply font-(weight:--ks-font-weight-medium) text-(color:--ks-color-text-label) dark:text-(color:--ks-color-text-label-dark);
988
+ }
989
+
990
+ .ks-bucket-goal {
991
+ @apply text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
992
+ }
993
+
994
+ .ks-bucket-percent {
995
+ @apply text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
996
+ }
997
+
998
+ .ks-bucket-tank {
999
+ @apply rounded-t-[calc(var(--ks-radius-surface)*0.5)] rounded-b-[calc(var(--ks-radius-surface)*1.5)] border-[calc(var(--ks-border-width)*2)] border-(color:--ks-color-border-strong) bg-(color:--ks-color-hover) dark:border-(color:--ks-color-border-strong-dark) dark:bg-(color:--ks-color-hover-dark);
1000
+ }
1001
+
1002
+ .ks-bucket-actual {
1003
+ @apply font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
1004
+ }
1005
+
1006
+ .ks-bucket-fill {
1007
+ @apply bg-(color:--ks-color-meter);
1008
+ }
1009
+
1010
+ .ks-bucket-fill-over {
1011
+ @apply bg-(color:--ks-color-over-goal);
1012
+ }
1013
+
1014
+ .ks-bucket-fill-over-warning {
1015
+ @apply bg-(color:--ks-color-over-goal-warning);
1016
+ }
1017
+
1018
+ .ks-pipeline {
1019
+ @apply rounded-[calc(var(--ks-radius-surface)*1.5)] border-(length:--ks-border-width) border-(color:--ks-color-pipeline-border) bg-(color:--ks-color-pipeline) p-[calc(var(--ks-spacing)*6)];
1020
+ }
1021
+
1022
+ .ks-pipeline-header {
1023
+ @apply mb-[calc(var(--ks-spacing)*4)];
1024
+ }
1025
+
1026
+ .ks-pipeline-title {
1027
+ @apply font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text-on-dark);
1028
+ }
1029
+
1030
+ .ks-pipeline-subtitle {
1031
+ @apply mt-[calc(var(--ks-spacing)*1)] text-(color:--ks-color-pipeline-muted);
1032
+ }
1033
+
1034
+ .ks-pipeline-track {
1035
+ @apply gap-[calc(var(--ks-spacing)*3)];
1036
+ }
1037
+
1038
+ .ks-pipeline-box {
1039
+ @apply gap-[calc(var(--ks-spacing)*2)] rounded-(--ks-radius-surface) border-(length:--ks-border-width) border-(color:--ks-color-pipeline-border) bg-(color:--ks-color-pipeline-box) p-[calc(var(--ks-spacing)*4)];
1040
+ }
1041
+
1042
+ .ks-pipeline-box-label {
1043
+ @apply text-(color:--ks-color-pipeline-label);
1044
+ }
1045
+
1046
+ .ks-pipeline-count {
1047
+ @apply font-[weight:calc(var(--ks-font-weight-heading)+100)];
1048
+ }
1049
+
1050
+ .ks-pipeline-link-healthy {
1051
+ @apply text-(color:--ks-color-meter);
1052
+ }
1053
+
1054
+ .ks-pipeline-link-broken {
1055
+ @apply text-(color:--ks-color-danger-500);
1056
+ }
1057
+
1058
+ .ks-pipeline-count-amber {
1059
+ @apply text-(color:--ks-color-pipeline-amber);
1060
+ }
1061
+
1062
+ .ks-pipeline-count-emerald {
1063
+ @apply text-(color:--ks-color-info-400);
1064
+ }
1065
+
1066
+ .ks-pipeline-count-danger {
1067
+ @apply text-(color:--ks-color-danger-400);
1068
+ }
1069
+
1070
+ .ks-pipeline-count-muted {
1071
+ @apply text-(color:--ks-color-pipeline-label);
1072
+ }
1073
+
1074
+ .ks-swipe-card {
1075
+ @apply rounded-[calc(var(--ks-radius-surface)*2)] border-(length:--ks-border-width) border-(color:--ks-color-border) bg-(color:--ks-color-surface) shadow-(--ks-shadow-overlay) p-[calc(var(--ks-spacing)*6)] dark:border-(color:--ks-color-border-dark) dark:bg-(color:--ks-color-surface-dark);
1076
+ }
1077
+
1078
+ .ks-swipe-empty {
1079
+ @apply py-[calc(var(--ks-spacing)*16)];
1080
+ }
1081
+
1082
+ .ks-swipe-empty-title {
1083
+ @apply font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
1084
+ }
1085
+
1086
+ .ks-swipe-empty-message {
1087
+ @apply mt-[calc(var(--ks-spacing)*2)] text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
1088
+ }
1089
+
1090
+ .ks-swipe-actions {
1091
+ @apply gap-[calc(var(--ks-spacing)*8)] mt-[calc(var(--ks-spacing)*8)];
1092
+ }
1093
+
1094
+ .ks-swipe-button {
1095
+ @apply rounded-(--ks-radius-pill) border-[calc(var(--ks-border-width)*2)] border-(color:--ks-color-border-strong) text-(color:--ks-color-close) dark:border-(color:--ks-color-border-strong-dark);
1096
+ }
1097
+
1098
+ .ks-swipe-button-reject {
1099
+ @apply hover:border-(color:--ks-color-danger-400) hover:text-(color:--ks-color-danger-400);
1100
+ }
1101
+
1102
+ .ks-swipe-button-accept {
1103
+ @apply hover:border-(color:--ks-color-success-400) hover:text-(color:--ks-color-success-400);
1104
+ }
1105
+
1106
+ .ks-bottom-nav {
1107
+ @apply fixed bottom-0 left-0 right-0 z-40 flex justify-around pb-[env(safe-area-inset-bottom)] lg:hidden bg-(color:--ks-color-nav) dark:bg-(color:--ks-color-nav-dark) border-t-(length:--ks-border-width) border-t-(color:--ks-color-nav-border) dark:border-t-(color:--ks-color-nav-border-dark);
1108
+ }
1109
+
1110
+ .ks-bottom-nav::after {
1111
+ content: '';
1112
+ position: absolute;
1113
+ top: 100%;
1114
+ left: 0;
1115
+ right: 0;
1116
+ height: 100px;
1117
+ background: inherit;
1118
+ }
1119
+
1120
+ .ks-bottom-nav-item {
1121
+ @apply flex flex-1 flex-col items-center justify-center min-h-14 no-underline gap-[calc(var(--ks-spacing)*0.5)] py-[calc(var(--ks-spacing)*2)] px-[calc(var(--ks-spacing)*1)] text-(color:--ks-color-nav-text) hover:text-(color:--ks-color-nav-text-hover) active:text-(color:--ks-color-nav-text-hover) [&.active]:text-(color:--ks-color-nav-active) dark:text-(color:--ks-color-nav-text-dark) dark:hover:text-(color:--ks-color-nav-text-hover-dark) dark:active:text-(color:--ks-color-nav-text-hover-dark) dark:[&.active]:text-(color:--ks-color-nav-active-dark) [&_svg]:size-6;
1122
+ }
1123
+
1124
+ .ks-bottom-nav-label {
1125
+ @apply text-[10px] font-(weight:--ks-font-weight-medium) leading-none;
1126
+ }
1127
+
1128
+ .ks-nav-dropdown {
1129
+ @apply relative w-full lg:w-auto;
1130
+ }
1131
+
1132
+ .ks-nav-dropdown-trigger {
1133
+ @apply flex items-center justify-between text-sm text-nowrap w-full no-underline gap-[calc(var(--ks-spacing)*1)] px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*3)] lg:px-[calc(var(--ks-spacing)*1)] lg:py-[calc(var(--ks-spacing)*2)] lg:w-auto text-(color:--ks-color-nav-link) hover:text-(color:--ks-color-nav-text-hover) [&.active]:text-(color:--ks-color-nav-active) [&.active]:font-(weight:--ks-font-weight-heading) dark:text-(color:--ks-color-nav-link-dark) dark:hover:text-(color:--ks-color-nav-text-hover-dark) dark:[&.active]:text-(color:--ks-color-nav-active-dark) lg:[&.active]:shadow-[inset_0_calc(var(--ks-border-width)*-4)_0_0_var(--ks-color-nav-indicator)] dark:lg:[&.active]:shadow-[inset_0_calc(var(--ks-border-width)*-4)_0_0_var(--ks-color-nav-indicator-dark)];
1134
+ }
1135
+
1136
+ .ks-nav-item {
1137
+ @apply flex items-center justify-between text-sm text-nowrap w-full no-underline gap-[calc(var(--ks-spacing)*1)] px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*3)] lg:px-[calc(var(--ks-spacing)*1)] lg:py-[calc(var(--ks-spacing)*2)] lg:w-auto text-(color:--ks-color-nav-link) hover:text-(color:--ks-color-nav-text-hover) [&.active]:text-(color:--ks-color-nav-active) [&.active]:font-(weight:--ks-font-weight-heading) dark:text-(color:--ks-color-nav-link-dark) dark:hover:text-(color:--ks-color-nav-text-hover-dark) dark:[&.active]:text-(color:--ks-color-nav-active-dark) lg:[&.active]:shadow-[inset_0_calc(var(--ks-border-width)*-4)_0_0_var(--ks-color-nav-indicator)] dark:lg:[&.active]:shadow-[inset_0_calc(var(--ks-border-width)*-4)_0_0_var(--ks-color-nav-indicator-dark)];
1138
+ }
1139
+
1140
+ .ks-nav-dropdown-caret {
1141
+ @apply size-4 transition-transform duration-200 ease-[ease];
1142
+ }
1143
+
1144
+ .ks-nav-dropdown:has(.ks-nav-dropdown-menu:not(.hidden)) .ks-nav-dropdown-caret {
1145
+ transform: rotate(180deg);
1146
+ }
1147
+
1148
+ .ks-nav-dropdown-menu {
1149
+ @apply relative w-full z-50 bg-(color:--ks-color-nav-menu-mobile) dark:bg-(color:--ks-color-nav-menu-mobile-dark) lg:bg-(color:--ks-color-nav) dark:lg:bg-(color:--ks-color-nav-dark) lg:border-(length:--ks-border-width) lg:border-(color:--ks-color-nav-border) dark:lg:border-(color:--ks-color-nav-border-dark) lg:rounded-(--ks-radius-surface) lg:shadow-(--ks-shadow-menu) lg:min-w-[200px] lg:absolute lg:top-full lg:left-0 lg:mt-[calc(var(--ks-spacing)*1)] [&_ul]:list-none [&_ul]:m-0 [&_ul]:p-0;
1150
+ }
1151
+
1152
+ .ks-nav-dropdown-menu li a, .ks-nav-dropdown-menu > a {
1153
+ @apply block text-sm no-underline whitespace-nowrap py-[calc(var(--ks-spacing)*3)] pr-[calc(var(--ks-spacing)*4)] pl-[calc(var(--ks-spacing)*8)] lg:py-[calc(var(--ks-spacing)*2)] lg:px-[calc(var(--ks-spacing)*4)] text-(color:--ks-color-nav-link) hover:bg-(color:--ks-color-nav-hover) hover:text-(color:--ks-color-nav-text-hover) [&.active]:bg-(color:--ks-color-nav-hover) [&.active]:text-(color:--ks-color-nav-active) [&.active]:font-(weight:--ks-font-weight-heading) dark:text-(color:--ks-color-nav-link-dark) dark:hover:bg-(color:--ks-color-nav-hover-dark) dark:hover:text-(color:--ks-color-nav-text-hover-dark) dark:[&.active]:bg-(color:--ks-color-nav-hover-dark) dark:[&.active]:text-(color:--ks-color-nav-active-dark);
1154
+ }
1155
+
1156
+ .ks-navbar-title {
1157
+ @apply font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
1158
+ }
1159
+
1160
+ .ks-mobile-header-title {
1161
+ @apply font-(weight:--ks-font-weight-heading) text-(color:--ks-color-text) dark:text-(color:--ks-color-text-dark);
1162
+ }
1163
+
1164
+ .ks-mobile-header-back {
1165
+ @apply text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
1166
+ }
1167
+
1168
+ .ks-mobile-header-subtitle {
1169
+ @apply font-(weight:--ks-font-weight-normal) text-(color:--ks-color-text-muted) dark:text-(color:--ks-color-text-muted-dark);
1170
+ }
1171
+
1172
+ .ks-settings-link {
1173
+ @apply px-[calc(var(--ks-spacing)*4)] py-[calc(var(--ks-spacing)*3)] text-(color:--ks-color-text-option) hover:bg-(color:--ks-color-hover-soft) dark:text-(color:--ks-color-text-option-dark) dark:hover:bg-(color:--ks-color-hover-soft-dark);
1174
+ }
1175
+
1176
+ .ks-settings-link-label {
1177
+ @apply font-(weight:--ks-font-weight-medium);
1178
+ }
1179
+ }
1180
+
1181
+ @media (max-width: 1023px) {
1182
+ main {
1183
+ padding-bottom: calc(56px + env(safe-area-inset-bottom));
1184
+ }
1185
+
1186
+ .hotwire-native .ks-bottom-nav {
1187
+ display: none;
1188
+ }
1189
+
1190
+ .hotwire-native main {
1191
+ padding-bottom: 0;
326
1192
  }
327
1193
  }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module KeystoneUi
4
4
  module Styles
5
- VERSION = "0.4.0"
5
+ VERSION = "0.5.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keystone_ui-styles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Schneider