ketatlas 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 (51) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +10 -0
  4. package/README.md +130 -0
  5. package/assets/INTER-LICENSE +93 -0
  6. package/assets/KETJS-LICENSE +21 -0
  7. package/assets/LUCIDE-LICENSE +43 -0
  8. package/assets/design-system.lock.json +56 -0
  9. package/assets/inter-latin-wght-normal.woff2 +0 -0
  10. package/assets/inter-vietnamese-wght-normal.woff2 +0 -0
  11. package/bin/audit.js +116 -0
  12. package/bin/ketatlas.js +148 -0
  13. package/bin/server.js +93 -0
  14. package/bin/viewer.js +20 -0
  15. package/docs/architecture.md +57 -0
  16. package/docs/authoring.md +49 -0
  17. package/docs/cli.md +70 -0
  18. package/docs/configuration.md +65 -0
  19. package/docs/integration.md +108 -0
  20. package/docs/migration.md +35 -0
  21. package/docs/releasing.md +40 -0
  22. package/package.json +59 -0
  23. package/schema.json +187 -0
  24. package/src/config.js +196 -0
  25. package/src/icons.js +23 -0
  26. package/src/index.d.ts +106 -0
  27. package/src/index.js +679 -0
  28. package/src/layout.js +103 -0
  29. package/src/template.js +38 -0
  30. package/styles/design-system.css +2838 -0
  31. package/styles/design-system.document.css +2838 -0
  32. package/styles/fonts.css +17 -0
  33. package/styles/ketatlas.css +992 -0
  34. package/templates/basic/README.md +14 -0
  35. package/templates/basic/atlas.json +45 -0
  36. package/templates/basic/ketatlas.schema.json +187 -0
  37. package/templates/basic/screens/done.html +18 -0
  38. package/templates/basic/screens/screen.css +48 -0
  39. package/templates/basic/screens/welcome.html +21 -0
  40. package/templates/basic/styles/LICENSE +21 -0
  41. package/templates/basic/styles/design-system.css +2838 -0
  42. package/templates/process/README.md +14 -0
  43. package/templates/process/atlas.json +83 -0
  44. package/templates/process/ketatlas.schema.json +187 -0
  45. package/templates/web/README.md +14 -0
  46. package/templates/web/atlas.json +77 -0
  47. package/templates/web/ketatlas.schema.json +187 -0
  48. package/templates/web/screens/demo.css +255 -0
  49. package/templates/web/screens/portal.html +41 -0
  50. package/templates/web/styles/LICENSE +21 -0
  51. package/templates/web/styles/design-system.css +2838 -0
@@ -0,0 +1,2838 @@
1
+ /* GENERATED from @ketvietlab/design-system at fab9de5d5814e96f2e04ced806b6bef487cf9662. Do not edit. */
2
+ /*
3
+ * KétSuite public token contract.
4
+ *
5
+ * Three levels stay deliberately separate:
6
+ * reference palette -> semantic roles -> component roles.
7
+ * Components consume semantic or component roles; application code never needs
8
+ * to know which numbered surface or brand swatch produced them.
9
+ */
10
+ @layer ket.theme {
11
+ :root {
12
+ color-scheme: light dark;
13
+
14
+ /* Reference: dark application palette. */
15
+ --kv-ref-black: #000000;
16
+ --kv-ref-white: #ffffff;
17
+ --kv-ref-bg-app: #15181d;
18
+ --kv-ref-bg-sidebar: #171b20;
19
+ --kv-ref-bg-main: #1b1f24;
20
+ --kv-ref-bg-rail: #181c21;
21
+ --kv-ref-surface-0: #171b20;
22
+ --kv-ref-surface-1: #1d2228;
23
+ --kv-ref-surface-2: #23282f;
24
+ --kv-ref-surface-3: #292f37;
25
+ --kv-ref-surface-4: #30363f;
26
+ --kv-ref-control: #20252c;
27
+ --kv-ref-control-hover: #292f37;
28
+ --kv-ref-control-active: #313844;
29
+ --kv-ref-control-disabled: #1d2126;
30
+ --kv-ref-border-subtle: rgb(255 255 255 / 5.5%);
31
+ --kv-ref-border-default: rgb(255 255 255 / 8.5%);
32
+ --kv-ref-border-strong: rgb(255 255 255 / 13%);
33
+ --kv-ref-border-emphasis: rgb(255 255 255 / 18%);
34
+ --kv-ref-border-solid: #30363d;
35
+ --kv-ref-text-primary: #f2f4f7;
36
+ --kv-ref-text-secondary: #b4bac4;
37
+ --kv-ref-text-tertiary: #858d99;
38
+ --kv-ref-text-muted: #68717d;
39
+ --kv-ref-text-disabled: #505862;
40
+ --kv-ref-text-inverse: #111318;
41
+
42
+ /* Reference: brand. */
43
+ --kv-ref-primary-50: #eef2ff;
44
+ --kv-ref-primary-100: #e0e7ff;
45
+ --kv-ref-primary-200: #c7d2fe;
46
+ --kv-ref-primary-300: #a5b4fc;
47
+ --kv-ref-primary-400: #818cf8;
48
+ --kv-ref-primary-500: #6366f1;
49
+ --kv-ref-primary-600: #5563df;
50
+ --kv-ref-primary-700: #4753c7;
51
+ --kv-ref-primary-800: #3944a5;
52
+ --kv-ref-primary-900: #303a83;
53
+ --kv-ref-primary: #5968df;
54
+ --kv-ref-primary-hover: #6875ea;
55
+ --kv-ref-primary-active: #4c59c9;
56
+ --kv-ref-primary-subtle: rgb(89 104 223 / 14%);
57
+ --kv-ref-primary-muted: rgb(89 104 223 / 22%);
58
+ --kv-ref-primary-border: rgb(112 126 240 / 32%);
59
+ --kv-ref-nav-selected: rgb(76 93 190 / 52%);
60
+ --kv-ref-nav-selected-hover: rgb(83 101 204 / 62%);
61
+
62
+ /* Reference: semantic colour families. */
63
+ --kv-ref-success: #40c97b;
64
+ --kv-ref-success-hover: #4dd487;
65
+ --kv-ref-success-bg: rgb(64 201 123 / 13%);
66
+ --kv-ref-success-border: rgb(64 201 123 / 22%);
67
+ --kv-ref-warning: #e5a93c;
68
+ --kv-ref-warning-hover: #efb74e;
69
+ --kv-ref-warning-bg: rgb(229 169 60 / 14%);
70
+ --kv-ref-warning-border: rgb(229 169 60 / 24%);
71
+ --kv-ref-danger: #ef665c;
72
+ --kv-ref-danger-hover: #f1766d;
73
+ --kv-ref-danger-bg: rgb(239 102 92 / 13%);
74
+ --kv-ref-danger-border: rgb(239 102 92 / 28%);
75
+ --kv-ref-info: #5794f2;
76
+ --kv-ref-info-bg: rgb(87 148 242 / 13%);
77
+ --kv-ref-info-border: rgb(87 148 242 / 25%);
78
+ --kv-ref-status-todo-text: #aab1bc;
79
+ --kv-ref-status-todo-bg: rgb(170 177 188 / 10%);
80
+ --kv-ref-status-progress-text: #6f9cf8;
81
+ --kv-ref-status-progress-bg: rgb(79 126 233 / 14%);
82
+ --kv-ref-status-done-text: #4fd184;
83
+ --kv-ref-status-done-bg: rgb(54 190 113 / 14%);
84
+ --kv-ref-status-paused-text: #e9ad3e;
85
+ --kv-ref-status-paused-bg: rgb(233 173 62 / 14%);
86
+ --kv-ref-status-overdue-text: #f0645c;
87
+ --kv-ref-status-overdue-bg: rgb(240 100 92 / 14%);
88
+
89
+ /* Semantic application roles. Light values preserve the package's two-scheme
90
+ contract; dark values are the canonical KetSuite palette. */
91
+ --kv-page-bg: light-dark(#f7f5f5, var(--kv-ref-bg-main));
92
+ --kv-app-bg: light-dark(#f7f5f5, var(--kv-ref-bg-app));
93
+ --kv-sidebar-bg: light-dark(#f7f5f5, var(--kv-ref-bg-sidebar));
94
+ --kv-right-rail-bg: light-dark(#f7f5f5, var(--kv-ref-bg-rail));
95
+ --kv-panel-bg: light-dark(#ffffff, var(--kv-ref-surface-1));
96
+ --kv-panel-bg-subtle: light-dark(#f7f5f5, var(--kv-ref-surface-0));
97
+ --kv-surface-raised: light-dark(#fbfafa, var(--kv-ref-surface-2));
98
+ --kv-surface-hover: light-dark(#f1eff0, var(--kv-ref-surface-3));
99
+ --kv-text-main: light-dark(#24262a, var(--kv-ref-text-primary));
100
+ --kv-text-secondary: light-dark(#5a5c5e, var(--kv-ref-text-secondary));
101
+ --kv-text-muted: light-dark(#717373, var(--kv-ref-text-tertiary));
102
+ --kv-text-disabled: light-dark(#9a9ea2, var(--kv-ref-text-disabled));
103
+ --kv-panel-border: light-dark(#e9e7e8, var(--kv-ref-border-subtle));
104
+ --kv-panel-divider: var(--kv-panel-border);
105
+ --kv-border-default: light-dark(#dddcde, var(--kv-ref-border-default));
106
+ --kv-border-strong: light-dark(#cccccd, var(--kv-ref-border-strong));
107
+ --kv-interactive-bg: light-dark(#ffffff, var(--kv-ref-control));
108
+ --kv-interactive-hover: light-dark(#f7f5f5, var(--kv-ref-control-hover));
109
+ --kv-interactive-active: light-dark(#efedee, var(--kv-ref-control-active));
110
+ --kv-interactive-disabled: light-dark(#efedee, var(--kv-ref-control-disabled));
111
+ --kv-accent: light-dark(#5167c4, var(--kv-ref-primary));
112
+ --kv-accent-hover: light-dark(#45579f, var(--kv-ref-primary-hover));
113
+ --kv-accent-active: light-dark(#394985, var(--kv-ref-primary-active));
114
+ --kv-accent-subtle: light-dark(#eef0fb, var(--kv-ref-primary-subtle));
115
+ --kv-accent-muted: light-dark(#dde2f7, var(--kv-ref-primary-muted));
116
+ --kv-accent-border: light-dark(#c3cdf0, var(--kv-ref-primary-border));
117
+ --kv-focus-border: light-dark(#637ad5, #6474e8);
118
+ --kv-focus-ring: 0 0 0 3px light-dark(#dde2f7, rgb(89 104 223 / 16%));
119
+ --kv-on-accent: var(--kv-ref-white);
120
+ --kv-positive: light-dark(#1d5d3b, var(--kv-ref-success));
121
+ --kv-positive-hover: light-dark(#174b30, var(--kv-ref-success-hover));
122
+ --kv-positive-bg: light-dark(#ecf5ef, var(--kv-ref-success-bg));
123
+ --kv-positive-border: light-dark(#c9e7d4, var(--kv-ref-success-border));
124
+ --kv-success: var(--kv-positive);
125
+ --kv-success-hover: var(--kv-positive-hover);
126
+ --kv-success-bg: var(--kv-positive-bg);
127
+ --kv-success-border: var(--kv-positive-border);
128
+ --kv-warning: light-dark(#8b5c12, var(--kv-ref-warning));
129
+ --kv-warning-hover: light-dark(#70490e, var(--kv-ref-warning-hover));
130
+ --kv-warning-bg: light-dark(#fbf3e6, var(--kv-ref-warning-bg));
131
+ --kv-warning-border: light-dark(#eed6ad, var(--kv-ref-warning-border));
132
+ --kv-danger: light-dark(#b42318, var(--kv-ref-danger));
133
+ --kv-danger-hover: light-dark(#912018, var(--kv-ref-danger-hover));
134
+ --kv-danger-bg: light-dark(#fef3f2, var(--kv-ref-danger-bg));
135
+ --kv-danger-border: light-dark(#fecdca, var(--kv-ref-danger-border));
136
+ --kv-info: light-dark(#315f8e, var(--kv-ref-info));
137
+ --kv-info-bg: light-dark(#eaf2fb, var(--kv-ref-info-bg));
138
+ --kv-info-border: light-dark(#c7dcf0, var(--kv-ref-info-border));
139
+ --kv-nav-selected: light-dark(#dde2f7, var(--kv-ref-nav-selected));
140
+ --kv-nav-selected-hover: light-dark(#cfd6f5, var(--kv-ref-nav-selected-hover));
141
+ --kv-nav-selected-text: light-dark(#394985, #dce2ff);
142
+ --kv-tab-active-text: light-dark(#45579f, #8c9aff);
143
+
144
+ /* Compatibility names used by the first public component slice. */
145
+ --kv-color-canvas: var(--kv-page-bg);
146
+ --kv-color-canvas-raised: var(--kv-panel-bg-subtle);
147
+ --kv-color-surface: var(--kv-panel-bg);
148
+ --kv-color-surface-subtle: var(--kv-surface-raised);
149
+ --kv-color-surface-hover: var(--kv-surface-hover);
150
+ --kv-color-ink: var(--kv-text-main);
151
+ --kv-color-ink-secondary: var(--kv-text-secondary);
152
+ --kv-color-ink-muted: var(--kv-text-muted);
153
+ --kv-color-line: var(--kv-panel-border);
154
+ --kv-color-line-strong: var(--kv-border-strong);
155
+ --kv-color-focus: var(--kv-focus-border);
156
+ --kv-color-focus-ring: light-dark(#dde2f7, rgb(89 104 223 / 16%));
157
+ --kv-color-accent: var(--kv-accent);
158
+ --kv-color-accent-hover: var(--kv-accent-hover);
159
+ --kv-color-accent-soft: var(--kv-accent-subtle);
160
+ --kv-color-on-accent: var(--kv-on-accent);
161
+ --kv-color-positive: var(--kv-positive);
162
+ --kv-color-positive-soft: var(--kv-positive-bg);
163
+ --kv-color-warning: var(--kv-warning);
164
+ --kv-color-warning-soft: var(--kv-warning-bg);
165
+ --kv-color-danger: var(--kv-danger);
166
+ --kv-color-danger-soft: var(--kv-danger-bg);
167
+ --kv-color-info: var(--kv-info);
168
+ --kv-color-info-soft: var(--kv-info-bg);
169
+
170
+ /* Type. */
171
+ --kv-font-sans: "Inter", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
172
+ --kv-font-display: var(--kv-font-sans);
173
+ --kv-font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
174
+ --kv-text-2xs: 0.625rem;
175
+ --kv-text-xs: 0.6875rem;
176
+ --kv-text-sm: 0.75rem;
177
+ --kv-text-md: 0.8125rem;
178
+ --kv-text-base: 0.875rem;
179
+ --kv-text-lg: 1rem;
180
+ --kv-text-xl: 1.125rem;
181
+ --kv-text-2xl: 1.375rem;
182
+ --kv-text-3xl: 1.75rem;
183
+ --kv-leading-tight: 1.2;
184
+ --kv-leading-normal: 1.45;
185
+ --kv-leading-relaxed: 1.6;
186
+ --kv-weight-normal: 400;
187
+ --kv-weight-medium: 500;
188
+ --kv-weight-semibold: 600;
189
+ --kv-weight-bold: 700;
190
+
191
+ /* Spacing. */
192
+ --kv-space-0: 0;
193
+ --kv-space-0-5: 0.125rem;
194
+ --kv-space-1: 0.25rem;
195
+ --kv-space-1-5: 0.375rem;
196
+ --kv-space-2: 0.5rem;
197
+ --kv-space-2-5: 0.625rem;
198
+ --kv-space-3: 0.75rem;
199
+ --kv-space-4: 1rem;
200
+ --kv-space-5: 1.25rem;
201
+ --kv-space-6: 1.5rem;
202
+ --kv-space-7: 1.75rem;
203
+ --kv-space-8: 2rem;
204
+ --kv-space-10: 2.5rem;
205
+ --kv-space-12: 3rem;
206
+ --kv-space-16: 4rem;
207
+ --kv-gap-control: var(--kv-space-2);
208
+ --kv-gap-form-row: 0.875rem;
209
+ --kv-gap-field-group: var(--kv-space-5);
210
+ --kv-gap-section: var(--kv-space-7);
211
+ --kv-page-padding-x: var(--kv-space-7);
212
+ --kv-page-padding-y: var(--kv-space-6);
213
+
214
+ /* Dimensions and shape. */
215
+ --kv-control-height-xs: 1.625rem;
216
+ --kv-control-height-sm: 1.875rem;
217
+ --kv-control-height-md: 2.125rem;
218
+ --kv-control-height-lg: 2.5rem;
219
+ --kv-control-height: var(--kv-control-height-md);
220
+ --kv-control-height-compact: var(--kv-control-height-sm);
221
+ --kv-control-height-prominent: var(--kv-control-height-lg);
222
+ --kv-sidebar-width: 13.5rem;
223
+ --kv-right-rail-width: 21.25rem;
224
+ --kv-sidebar-item-height: 1.875rem;
225
+ --kv-table-row-height: 3.25rem;
226
+ --kv-table-header-height: 2.625rem;
227
+ --kv-row-height: var(--kv-table-row-height);
228
+ --kv-radius-xs: 0.1875rem;
229
+ --kv-radius-sm: 0.3125rem;
230
+ --kv-radius-md: 0.4375rem;
231
+ --kv-radius-lg: 0.5625rem;
232
+ --kv-radius-xl: 0.75rem;
233
+ --kv-radius-full: 9999px;
234
+ --kv-radius-app-region: 0;
235
+
236
+ /* Elevation and motion. */
237
+ --kv-shadow-xs: 0 1px 2px rgb(0 0 0 / 22%);
238
+ --kv-shadow-sm: 0 2px 6px rgb(0 0 0 / 24%);
239
+ --kv-shadow-md: 0 8px 20px rgb(0 0 0 / 28%);
240
+ --kv-shadow-popover: 0 12px 32px rgb(0 0 0 / 42%);
241
+ --kv-shadow-float: var(--kv-shadow-popover);
242
+ --kv-duration-fast: 100ms;
243
+ --kv-duration-normal: 160ms;
244
+ --kv-duration-slow: 240ms;
245
+ --kv-ease-default: cubic-bezier(0.2, 0, 0, 1);
246
+ --kv-ease-out: cubic-bezier(0, 0, 0.2, 1);
247
+ --kv-motion-fast: var(--kv-duration-fast) var(--kv-ease-default);
248
+ --kv-motion-normal: var(--kv-duration-normal) var(--kv-ease-default);
249
+ --kv-z-base: 0;
250
+ --kv-z-sticky: 10;
251
+ --kv-z-dropdown: 40;
252
+ --kv-z-popover: 50;
253
+ --kv-z-modal: 100;
254
+ --kv-z-toast: 200;
255
+
256
+ /* Component roles. */
257
+ --kv-action-primary-bg: var(--kv-accent);
258
+ --kv-action-primary-hover: var(--kv-accent-hover);
259
+ --kv-action-primary-active: var(--kv-accent-active);
260
+ --kv-action-primary-ink: var(--kv-on-accent);
261
+ --kv-input-bg: light-dark(#ffffff, #20252b);
262
+ --kv-input-bg-hover: light-dark(#f7f5f5, #252b32);
263
+ --kv-input-bg-focus: light-dark(#ffffff, #222831);
264
+ --kv-input-border: light-dark(#dddcde, rgb(255 255 255 / 10%));
265
+ --kv-input-border-hover: light-dark(#cccccd, rgb(255 255 255 / 17%));
266
+ --kv-input-border-focus: var(--kv-focus-border);
267
+ --kv-input-placeholder: light-dark(#717373, #707985);
268
+ --kv-input-text: light-dark(#24262a, #e9ecf1);
269
+ --kv-input-ring: var(--kv-focus-ring);
270
+ --kv-field-bg: var(--kv-input-bg);
271
+ --kv-field-border: var(--kv-input-border);
272
+ --kv-table-bg: transparent;
273
+ --kv-table-header-bg: light-dark(#efedee, #282d34);
274
+ --kv-table-header-text: light-dark(#5a5c5e, #9da4af);
275
+ --kv-table-row-bg: transparent;
276
+ --kv-table-row-hover: light-dark(#f7f5f5, rgb(255 255 255 / 2.7%));
277
+ --kv-table-row-selected: light-dark(#eef0fb, rgb(89 104 223 / 9%));
278
+ --kv-table-border: var(--kv-panel-border);
279
+ --kv-sidebar-border: light-dark(#e9e7e8, rgb(255 255 255 / 7%));
280
+ --kv-right-rail-border: var(--kv-sidebar-border);
281
+ }
282
+
283
+ :root[data-theme="light"],
284
+ [data-kv-design-system][data-theme="light"] {
285
+ color-scheme: light;
286
+ }
287
+
288
+ :root[data-theme="dark"],
289
+ [data-kv-design-system][data-theme="dark"] {
290
+ color-scheme: dark;
291
+ }
292
+
293
+ [data-kv-design-system][data-density="compact"] {
294
+ --kv-control-height: var(--kv-control-height-sm);
295
+ --kv-row-height: 2.5rem;
296
+ }
297
+
298
+ [data-kv-design-system][data-density="comfortable"] {
299
+ --kv-control-height: var(--kv-control-height-lg);
300
+ --kv-row-height: 3.75rem;
301
+ }
302
+ }
303
+
304
+ @layer ket.reset {
305
+ :where([data-kv-design-system]),
306
+ :where([data-kv-design-system]) *,
307
+ :where([data-kv-design-system]) *::before,
308
+ :where([data-kv-design-system]) *::after {
309
+ box-sizing: border-box;
310
+ }
311
+
312
+ :where([data-kv-design-system]) {
313
+ min-width: 0;
314
+ color: var(--kv-color-ink);
315
+ font-family: var(--kv-font-sans);
316
+ font-size: var(--kv-text-base);
317
+ line-height: var(--kv-leading-normal);
318
+ text-rendering: optimizeLegibility;
319
+ }
320
+
321
+ :where([data-kv-design-system]) :where(button, input, select, textarea) {
322
+ font: inherit;
323
+ }
324
+
325
+ :where([data-kv-design-system]) :where(a, button, input, select, textarea, summary):focus-visible {
326
+ outline: 2px solid var(--kv-color-focus);
327
+ outline-offset: 2px;
328
+ box-shadow: var(--kv-focus-ring);
329
+ }
330
+
331
+ :where([data-kv-design-system]) :where(h1, h2, h3, p) {
332
+ margin-block-start: 0;
333
+ }
334
+
335
+ @media (prefers-reduced-motion: reduce) {
336
+ :where([data-kv-design-system]) *,
337
+ :where([data-kv-design-system]) *::before,
338
+ :where([data-kv-design-system]) *::after {
339
+ scroll-behavior: auto !important;
340
+ transition-duration: 0.01ms !important;
341
+ animation-duration: 0.01ms !important;
342
+ animation-iteration-count: 1 !important;
343
+ }
344
+ }
345
+ }
346
+
347
+ @layer ket.app {
348
+ :where([data-kv-design-system]) [data-ui="action"] {
349
+ display: inline-flex;
350
+ min-height: var(--kv-control-height);
351
+ align-items: center;
352
+ justify-content: center;
353
+ gap: 0.4375rem;
354
+ padding-inline: var(--kv-space-3);
355
+ border: 1px solid var(--kv-border-default);
356
+ border-radius: var(--kv-radius-sm);
357
+ background: var(--kv-interactive-bg);
358
+ color: var(--kv-text-secondary);
359
+ font-size: var(--kv-text-sm);
360
+ font-weight: var(--kv-weight-medium);
361
+ line-height: 1;
362
+ text-decoration: none;
363
+ white-space: nowrap;
364
+ cursor: pointer;
365
+ transition:
366
+ background var(--kv-motion-fast),
367
+ border-color var(--kv-motion-fast),
368
+ transform var(--kv-motion-fast);
369
+ }
370
+
371
+ :where([data-kv-design-system]) [data-ui="action"]:hover:not(:disabled) {
372
+ border-color: var(--kv-border-strong);
373
+ background: var(--kv-interactive-hover);
374
+ color: var(--kv-text-main);
375
+ }
376
+
377
+ :where([data-kv-design-system]) [data-ui="action"]:active:not(:disabled) {
378
+ background: var(--kv-interactive-active);
379
+ transform: translateY(1px);
380
+ }
381
+
382
+ :where([data-kv-design-system]) [data-ui="action"][data-variant="primary"] {
383
+ border-color: var(--kv-action-primary-bg);
384
+ background: var(--kv-action-primary-bg);
385
+ color: var(--kv-action-primary-ink);
386
+ }
387
+
388
+ :where([data-kv-design-system]) [data-ui="action"][data-variant="primary"]:hover:not(:disabled) {
389
+ border-color: var(--kv-action-primary-hover);
390
+ background: var(--kv-action-primary-hover);
391
+ }
392
+
393
+ :where([data-kv-design-system]) [data-ui="action"][data-variant="primary"]:active:not(:disabled) {
394
+ border-color: var(--kv-action-primary-active);
395
+ background: var(--kv-action-primary-active);
396
+ }
397
+
398
+ :where([data-kv-design-system]) [data-ui="action"][data-variant="tertiary"] {
399
+ border-color: transparent;
400
+ background: transparent;
401
+ color: var(--kv-text-secondary);
402
+ }
403
+
404
+ :where([data-kv-design-system]) [data-ui="action"][data-variant="tertiary"]:hover:not(:disabled) {
405
+ border-color: transparent;
406
+ background: color-mix(in srgb, var(--kv-text-main) 5%, transparent);
407
+ }
408
+
409
+ :where([data-kv-design-system]) [data-ui="action"][data-variant="destructive"] {
410
+ border-color: var(--kv-danger-border);
411
+ background: transparent;
412
+ color: var(--kv-danger);
413
+ }
414
+
415
+ :where([data-kv-design-system]) [data-ui="action"][data-variant="destructive"]:hover:not(:disabled) {
416
+ border-color: var(--kv-danger-border);
417
+ background: var(--kv-danger-bg);
418
+ color: var(--kv-danger-hover);
419
+ }
420
+
421
+ :where([data-kv-design-system]) [data-ui="action"][data-size="compact"] {
422
+ min-height: var(--kv-control-height-compact);
423
+ padding-inline: var(--kv-space-2);
424
+ font-size: var(--kv-text-xs);
425
+ }
426
+
427
+ :where([data-kv-design-system]) [data-ui="action"][data-size="prominent"] {
428
+ min-height: var(--kv-control-height-prominent);
429
+ padding-inline: var(--kv-space-5);
430
+ font-size: var(--kv-text-base);
431
+ }
432
+
433
+ :where([data-kv-design-system]) [data-ui="action"]:disabled {
434
+ border-color: var(--kv-panel-border);
435
+ background: var(--kv-interactive-disabled);
436
+ color: var(--kv-text-disabled);
437
+ cursor: not-allowed;
438
+ }
439
+
440
+ :where([data-kv-design-system]) [data-ui="action-leading"] {
441
+ display: inline-grid;
442
+ width: 1rem;
443
+ height: 1rem;
444
+ place-items: center;
445
+ font-family: var(--kv-font-mono);
446
+ }
447
+
448
+ :where([data-kv-design-system]) [data-ui="action-label"] {
449
+ min-width: 0;
450
+ overflow: hidden;
451
+ line-height: var(--kv-leading-normal);
452
+ text-overflow: ellipsis;
453
+ }
454
+
455
+ :where([data-kv-design-system]) [data-ui="action-spinner"] {
456
+ width: 0.8rem;
457
+ height: 0.8rem;
458
+ border: 2px solid currentcolor;
459
+ border-right-color: transparent;
460
+ border-radius: 50%;
461
+ animation: kv-spin 700ms linear infinite;
462
+ }
463
+
464
+ :where([data-kv-design-system]) [data-ui="action-group"] {
465
+ display: flex;
466
+ flex-wrap: wrap;
467
+ align-items: center;
468
+ gap: var(--kv-space-2);
469
+ }
470
+
471
+ :where([data-kv-design-system]) [data-ui="badge"] {
472
+ display: inline-flex;
473
+ min-height: 1.4rem;
474
+ align-items: center;
475
+ gap: 0.3125rem;
476
+ padding: 0.125rem 0.4375rem;
477
+ border: 1px solid transparent;
478
+ border-radius: var(--kv-radius-sm);
479
+ background: color-mix(in srgb, var(--kv-text-main) 7%, transparent);
480
+ color: var(--kv-text-secondary);
481
+ font-size: var(--kv-text-xs);
482
+ font-weight: var(--kv-weight-medium);
483
+ white-space: nowrap;
484
+ }
485
+
486
+ :where([data-kv-design-system]) [data-ui="badge"][data-tone="info"] {
487
+ background: var(--kv-color-info-soft);
488
+ color: var(--kv-color-info);
489
+ }
490
+
491
+ :where([data-kv-design-system]) [data-ui="badge"][data-tone="positive"] {
492
+ background: var(--kv-color-positive-soft);
493
+ color: var(--kv-color-positive);
494
+ }
495
+
496
+ :where([data-kv-design-system]) [data-ui="badge"][data-tone="warning"] {
497
+ background: var(--kv-color-warning-soft);
498
+ color: var(--kv-color-warning);
499
+ }
500
+
501
+ :where([data-kv-design-system]) [data-ui="badge"][data-tone="danger"] {
502
+ background: var(--kv-color-danger-soft);
503
+ color: var(--kv-color-danger);
504
+ }
505
+
506
+ :where([data-kv-design-system]) [data-ui="tag"] {
507
+ display: inline-flex;
508
+ min-height: 1.6rem;
509
+ align-items: center;
510
+ gap: var(--kv-space-1);
511
+ padding-inline: var(--kv-space-2);
512
+ border: 1px solid var(--kv-color-line);
513
+ border-radius: var(--kv-radius-sm);
514
+ background: var(--kv-color-surface);
515
+ font-size: var(--kv-text-xs);
516
+ font-weight: 650;
517
+ }
518
+
519
+ :where([data-kv-design-system]) [data-ui="tag-remove"] {
520
+ display: grid;
521
+ width: 1rem;
522
+ height: 1rem;
523
+ place-items: center;
524
+ border-radius: var(--kv-radius-xs);
525
+ color: var(--kv-color-ink-muted);
526
+ text-decoration: none;
527
+ }
528
+
529
+ :where([data-kv-design-system]) [data-ui="tag-remove"]:hover {
530
+ background: var(--kv-color-danger-soft);
531
+ color: var(--kv-color-danger);
532
+ }
533
+
534
+ :where([data-kv-design-system]) [data-ui="count-badge"] {
535
+ display: inline-grid;
536
+ min-width: 1.4rem;
537
+ height: 1.4rem;
538
+ place-items: center;
539
+ padding-inline: var(--kv-space-1);
540
+ border-radius: var(--kv-radius-full);
541
+ background: var(--kv-color-accent-soft);
542
+ color: var(--kv-color-accent);
543
+ font-family: var(--kv-font-mono);
544
+ font-size: var(--kv-text-xs);
545
+ font-weight: 800;
546
+ }
547
+
548
+ :where([data-kv-design-system]) [data-ui="avatar"] {
549
+ display: inline-grid;
550
+ width: 2rem;
551
+ height: 2rem;
552
+ place-items: center;
553
+ border: 1px solid var(--kv-color-line-strong);
554
+ border-radius: 50%;
555
+ background: var(--kv-color-accent-soft);
556
+ color: var(--kv-color-accent);
557
+ font-size: var(--kv-text-xs);
558
+ font-weight: 800;
559
+ }
560
+
561
+ :where([data-kv-design-system]) [data-ui="avatar"][data-size="small"] {
562
+ width: 1.5rem;
563
+ height: 1.5rem;
564
+ }
565
+
566
+ :where([data-kv-design-system]) [data-ui="avatar"][data-size="large"] {
567
+ width: 3rem;
568
+ height: 3rem;
569
+ font-size: var(--kv-text-sm);
570
+ }
571
+
572
+ :where([data-kv-design-system]) [data-ui="code"] {
573
+ padding: 0.15rem 0.35rem;
574
+ border-radius: var(--kv-radius-xs);
575
+ background: var(--kv-color-surface-subtle);
576
+ color: var(--kv-color-ink-secondary);
577
+ font-family: var(--kv-font-mono);
578
+ font-size: 0.85em;
579
+ overflow-wrap: anywhere;
580
+ }
581
+
582
+ :where([data-kv-design-system]) [data-ui="notice"] {
583
+ display: grid;
584
+ grid-template-columns: auto minmax(0, 1fr) auto;
585
+ gap: var(--kv-space-3);
586
+ align-items: start;
587
+ padding: var(--kv-space-3) var(--kv-space-4);
588
+ border: 1px solid var(--kv-color-line);
589
+ border-left: 3px solid var(--kv-color-info);
590
+ border-radius: var(--kv-radius-sm);
591
+ background: var(--kv-color-info-soft);
592
+ }
593
+
594
+ :where([data-kv-design-system]) [data-ui="notice"][data-tone="positive"] {
595
+ border-left-color: var(--kv-color-positive);
596
+ background: var(--kv-color-positive-soft);
597
+ }
598
+
599
+ :where([data-kv-design-system]) [data-ui="notice"][data-tone="warning"] {
600
+ border-left-color: var(--kv-color-warning);
601
+ background: var(--kv-color-warning-soft);
602
+ }
603
+
604
+ :where([data-kv-design-system]) [data-ui="notice"][data-tone="danger"] {
605
+ border-left-color: var(--kv-color-danger);
606
+ background: var(--kv-color-danger-soft);
607
+ }
608
+
609
+ :where([data-kv-design-system]) [data-ui="notice-mark"] {
610
+ width: 0.65rem;
611
+ height: 0.65rem;
612
+ margin-top: 0.35rem;
613
+ border-radius: 50%;
614
+ background: currentcolor;
615
+ }
616
+
617
+ :where([data-kv-design-system]) [data-ui="notice-copy"] {
618
+ min-width: 0;
619
+ }
620
+
621
+ :where([data-kv-design-system]) [data-ui="notice-title"] {
622
+ margin-bottom: var(--kv-space-1);
623
+ font-weight: 800;
624
+ }
625
+
626
+ :where([data-kv-design-system]) [data-ui="notice-message"] {
627
+ margin-bottom: 0;
628
+ color: var(--kv-color-ink-secondary);
629
+ font-size: var(--kv-text-sm);
630
+ }
631
+
632
+ :where([data-kv-design-system]) [data-ui="notice-actions"] {
633
+ align-self: center;
634
+ }
635
+
636
+ :where([data-kv-design-system]) [data-ui="empty"] {
637
+ display: grid;
638
+ min-height: 11rem;
639
+ place-items: center;
640
+ align-content: center;
641
+ padding: var(--kv-space-8);
642
+ color: var(--kv-color-ink-secondary);
643
+ text-align: center;
644
+ }
645
+
646
+ :where([data-kv-design-system]) [data-ui="empty-mark"] {
647
+ display: grid;
648
+ width: 2.5rem;
649
+ height: 2.5rem;
650
+ margin-bottom: var(--kv-space-3);
651
+ place-items: center;
652
+ border: 1px solid var(--kv-color-line-strong);
653
+ border-radius: 50%;
654
+ color: var(--kv-color-accent);
655
+ font-size: var(--kv-text-lg);
656
+ }
657
+
658
+ :where([data-kv-design-system]) [data-ui="empty-title"] {
659
+ margin-bottom: var(--kv-space-1);
660
+ color: var(--kv-color-ink);
661
+ font-weight: 800;
662
+ }
663
+
664
+ :where([data-kv-design-system]) [data-ui="empty-message"] {
665
+ max-width: 34rem;
666
+ margin-bottom: 0;
667
+ font-size: var(--kv-text-sm);
668
+ }
669
+
670
+ :where([data-kv-design-system]) [data-ui="empty-actions"] {
671
+ margin-top: var(--kv-space-4);
672
+ }
673
+
674
+ :where([data-kv-design-system]) [data-ui="loading"] {
675
+ display: grid;
676
+ gap: var(--kv-space-3);
677
+ padding: var(--kv-space-4);
678
+ }
679
+
680
+ :where([data-kv-design-system]) [data-ui="loading-label"] {
681
+ color: var(--kv-color-ink-muted);
682
+ font-size: var(--kv-text-xs);
683
+ font-weight: 750;
684
+ letter-spacing: 0.08em;
685
+ text-transform: uppercase;
686
+ }
687
+
688
+ :where([data-kv-design-system]) [data-ui="skeleton"] {
689
+ display: grid;
690
+ gap: var(--kv-space-2);
691
+ }
692
+
693
+ :where([data-kv-design-system]) [data-ui="skeleton-line"] {
694
+ height: 0.7rem;
695
+ border-radius: var(--kv-radius-xs);
696
+ background: linear-gradient(
697
+ 90deg,
698
+ var(--kv-color-surface-subtle),
699
+ var(--kv-color-line),
700
+ var(--kv-color-surface-subtle)
701
+ );
702
+ background-size: 200% 100%;
703
+ animation: kv-shimmer 1.5s ease infinite;
704
+ }
705
+
706
+ :where([data-kv-design-system]) [data-ui="skeleton-line"][data-line="2"] {
707
+ width: 82%;
708
+ }
709
+
710
+ :where([data-kv-design-system]) [data-ui="skeleton-line"][data-line="3"] {
711
+ width: 58%;
712
+ }
713
+
714
+ :where([data-kv-design-system]) [data-ui="field"] {
715
+ display: grid;
716
+ min-width: 0;
717
+ gap: var(--kv-space-1);
718
+ margin: 0;
719
+ padding: 0;
720
+ border: 0;
721
+ }
722
+
723
+ :where([data-kv-design-system]) [data-ui="field"][data-kind="checkbox"] {
724
+ grid-template-columns: auto minmax(0, 1fr);
725
+ align-items: center;
726
+ gap: var(--kv-space-2);
727
+ }
728
+
729
+ :where([data-kv-design-system]) [data-ui="field-label"] {
730
+ color: var(--kv-text-secondary);
731
+ font-size: var(--kv-text-sm);
732
+ font-weight: var(--kv-weight-medium);
733
+ }
734
+
735
+ :where([data-kv-design-system]) [data-ui="field-required"] {
736
+ color: var(--kv-color-danger);
737
+ }
738
+
739
+ :where([data-kv-design-system]) [data-ui="field-control"] {
740
+ width: 100%;
741
+ min-height: var(--kv-control-height);
742
+ padding: 0 var(--kv-space-2-5);
743
+ border: 1px solid var(--kv-field-border);
744
+ border-radius: var(--kv-radius-sm);
745
+ background: var(--kv-input-bg);
746
+ color: var(--kv-input-text);
747
+ font-size: var(--kv-text-sm);
748
+ }
749
+
750
+ :where([data-kv-design-system]) [data-ui="field-control"]::placeholder {
751
+ color: var(--kv-input-placeholder);
752
+ }
753
+
754
+ :where([data-kv-design-system]) [data-ui="field-control"]:hover:not(:focus-visible, :disabled) {
755
+ border-color: var(--kv-input-border-hover);
756
+ background: var(--kv-input-bg-hover);
757
+ }
758
+
759
+ :where([data-kv-design-system]) [data-ui="field-control"]:focus-visible {
760
+ border-color: var(--kv-input-border-focus);
761
+ background: var(--kv-input-bg-focus);
762
+ box-shadow: var(--kv-input-ring);
763
+ outline: none;
764
+ }
765
+
766
+ :where([data-kv-design-system]) [data-ui="field-control"]:disabled {
767
+ border-color: var(--kv-panel-border);
768
+ background: var(--kv-interactive-disabled);
769
+ color: var(--kv-text-disabled);
770
+ cursor: not-allowed;
771
+ }
772
+
773
+ :where([data-kv-design-system]) textarea[data-ui="field-control"] {
774
+ min-height: 6.875rem;
775
+ padding: var(--kv-space-2-5) var(--kv-space-3);
776
+ resize: vertical;
777
+ }
778
+
779
+ :where([data-kv-design-system]) input[type="checkbox"][data-ui="field-control"] {
780
+ width: 1rem;
781
+ min-height: 1rem;
782
+ accent-color: var(--kv-color-accent);
783
+ }
784
+
785
+ :where([data-kv-design-system]) [data-ui="field"][data-invalid="true"] [data-ui="field-control"] {
786
+ border-color: var(--kv-color-danger);
787
+ }
788
+
789
+ :where([data-kv-design-system]) [data-ui="field-options"] {
790
+ display: flex;
791
+ flex-wrap: wrap;
792
+ gap: var(--kv-space-2);
793
+ }
794
+
795
+ :where([data-kv-design-system]) [data-ui="field-option"] {
796
+ display: inline-flex;
797
+ align-items: center;
798
+ gap: var(--kv-space-2);
799
+ color: var(--kv-color-ink-secondary);
800
+ font-size: var(--kv-text-sm);
801
+ }
802
+
803
+ :where([data-kv-design-system]) [data-ui="field-help"] {
804
+ color: var(--kv-color-ink-muted);
805
+ font-size: var(--kv-text-xs);
806
+ }
807
+
808
+ :where([data-kv-design-system]) [data-ui="field-error"] {
809
+ color: var(--kv-color-danger);
810
+ font-size: var(--kv-text-xs);
811
+ font-weight: 700;
812
+ }
813
+
814
+ @keyframes kv-spin {
815
+ to {
816
+ transform: rotate(360deg);
817
+ }
818
+ }
819
+
820
+ @keyframes kv-shimmer {
821
+ to {
822
+ background-position: -200% 0;
823
+ }
824
+ }
825
+
826
+ @media (max-width: 42rem) {
827
+ :where([data-kv-design-system]) [data-ui="notice"] {
828
+ grid-template-columns: auto minmax(0, 1fr);
829
+ }
830
+
831
+ :where([data-kv-design-system]) [data-ui="notice-actions"] {
832
+ grid-column: 1 / -1;
833
+ }
834
+ }
835
+ }
836
+
837
+ @layer ket.app {
838
+ :where([data-kv-design-system]) [data-ui="nav-list"] {
839
+ display: grid;
840
+ gap: var(--kv-space-1);
841
+ }
842
+
843
+ :where([data-kv-design-system]) [data-ui="nav-item"] {
844
+ display: flex;
845
+ height: var(--kv-sidebar-item-height);
846
+ align-items: center;
847
+ gap: 0.5625rem;
848
+ padding-inline: var(--kv-space-2-5);
849
+ border-radius: var(--kv-radius-sm);
850
+ color: var(--kv-text-secondary);
851
+ font-size: var(--kv-text-sm);
852
+ text-decoration: none;
853
+ transition:
854
+ background var(--kv-duration-normal) var(--kv-ease-default),
855
+ color var(--kv-duration-normal) var(--kv-ease-default);
856
+ }
857
+
858
+ :where([data-kv-design-system]) [data-ui="nav-item"]:hover {
859
+ background: color-mix(in srgb, var(--kv-text-main) 4.5%, transparent);
860
+ color: var(--kv-text-main);
861
+ }
862
+
863
+ :where([data-kv-design-system]) [data-ui="nav-item"][data-active="true"] {
864
+ background: var(--kv-nav-selected);
865
+ color: var(--kv-nav-selected-text);
866
+ }
867
+
868
+ :where([data-kv-design-system]) [data-ui="nav-item"][data-active="true"]:hover {
869
+ background: var(--kv-nav-selected-hover);
870
+ }
871
+
872
+ :where([data-kv-design-system]) [data-ui="nav-item-leading"] {
873
+ display: inline-grid;
874
+ width: 1rem;
875
+ flex: none;
876
+ place-items: center;
877
+ }
878
+
879
+ :where([data-kv-design-system]) [data-ui="nav-item-label"] {
880
+ min-width: 0;
881
+ flex: 1;
882
+ overflow: hidden;
883
+ text-overflow: ellipsis;
884
+ white-space: nowrap;
885
+ }
886
+
887
+ :where([data-kv-design-system]) [data-ui="nav-item-count"],
888
+ :where([data-kv-design-system]) [data-ui="tab-count"] {
889
+ color: inherit;
890
+ font-size: var(--kv-text-xs);
891
+ font-variant-numeric: tabular-nums;
892
+ opacity: 0.72;
893
+ }
894
+
895
+ :where([data-kv-design-system]) [data-ui="tabs"] {
896
+ display: flex;
897
+ min-height: var(--kv-table-header-height);
898
+ align-items: center;
899
+ gap: 1.625rem;
900
+ border-bottom: 1px solid var(--kv-border-subtle);
901
+ overflow-x: auto;
902
+ }
903
+
904
+ :where([data-kv-design-system]) [data-ui="tab"] {
905
+ position: relative;
906
+ display: inline-flex;
907
+ height: var(--kv-table-header-height);
908
+ flex: none;
909
+ align-items: center;
910
+ gap: var(--kv-space-1-5);
911
+ color: var(--kv-text-muted);
912
+ font-size: var(--kv-text-sm);
913
+ font-weight: var(--kv-weight-medium);
914
+ text-decoration: none;
915
+ }
916
+
917
+ :where([data-kv-design-system]) [data-ui="tab"]:hover {
918
+ color: var(--kv-text-secondary);
919
+ }
920
+
921
+ :where([data-kv-design-system]) [data-ui="tab"][data-active="true"] {
922
+ color: var(--kv-tab-active-text);
923
+ }
924
+
925
+ :where([data-kv-design-system]) [data-ui="tab"][data-active="true"]::after {
926
+ position: absolute;
927
+ right: 0;
928
+ bottom: -1px;
929
+ left: 0;
930
+ height: 2px;
931
+ border-radius: 2px 2px 0 0;
932
+ background: var(--kv-accent);
933
+ content: "";
934
+ }
935
+ }
936
+
937
+ @layer ket.app {
938
+ :where([data-kv-design-system]) [data-ui="progress"] {
939
+ display: grid;
940
+ gap: var(--kv-space-2);
941
+ }
942
+
943
+ :where([data-kv-design-system]) [data-ui="progress-label"] {
944
+ display: flex;
945
+ align-items: center;
946
+ justify-content: space-between;
947
+ gap: var(--kv-space-3);
948
+ color: var(--kv-text-secondary);
949
+ font-size: var(--kv-text-sm);
950
+ }
951
+
952
+ :where([data-kv-design-system]) [data-ui="progress-value"] {
953
+ color: var(--kv-text-muted);
954
+ font-variant-numeric: tabular-nums;
955
+ }
956
+
957
+ :where([data-kv-design-system]) [data-ui="progress-track"] {
958
+ height: 4px;
959
+ overflow: hidden;
960
+ border-radius: var(--kv-radius-full);
961
+ background: color-mix(in srgb, var(--kv-text-main) 9%, transparent);
962
+ }
963
+
964
+ :where([data-kv-design-system]) [data-ui="progress-bar"] {
965
+ display: block;
966
+ height: 100%;
967
+ border-radius: inherit;
968
+ background: var(--kv-accent);
969
+ }
970
+
971
+ :where([data-kv-design-system]) [data-ui="progress"][data-tone="positive"] [data-ui="progress-bar"] {
972
+ background: var(--kv-success);
973
+ }
974
+
975
+ :where([data-kv-design-system]) [data-ui="progress"][data-tone="warning"] [data-ui="progress-bar"] {
976
+ background: var(--kv-warning);
977
+ }
978
+
979
+ :where([data-kv-design-system]) [data-ui="progress"][data-tone="danger"] [data-ui="progress-bar"] {
980
+ background: var(--kv-danger);
981
+ }
982
+ }
983
+
984
+ @layer ket.app {
985
+ :where([data-kv-design-system]) [data-ui="stack"] {
986
+ display: grid;
987
+ gap: var(--kv-space-4);
988
+ }
989
+
990
+ :where([data-kv-design-system]) [data-ui="stack"][data-gap="compact"] {
991
+ gap: var(--kv-space-2);
992
+ }
993
+
994
+ :where([data-kv-design-system]) [data-ui="stack"][data-gap="loose"] {
995
+ gap: var(--kv-space-8);
996
+ }
997
+
998
+ :where([data-kv-design-system]) [data-ui="inline"] {
999
+ display: flex;
1000
+ flex-wrap: wrap;
1001
+ align-items: center;
1002
+ gap: var(--kv-space-2);
1003
+ }
1004
+
1005
+ :where([data-kv-design-system]) [data-ui="grid"] {
1006
+ display: grid;
1007
+ grid-template-columns: repeat(var(--kv-grid-columns, 3), minmax(0, 1fr));
1008
+ gap: var(--kv-space-4);
1009
+ }
1010
+
1011
+ :where([data-kv-design-system]) [data-ui="grid"][data-columns="2"] {
1012
+ --kv-grid-columns: 2;
1013
+ }
1014
+
1015
+ :where([data-kv-design-system]) [data-ui="grid"][data-columns="3"] {
1016
+ --kv-grid-columns: 3;
1017
+ }
1018
+
1019
+ :where([data-kv-design-system]) [data-ui="grid"][data-columns="4"] {
1020
+ --kv-grid-columns: 4;
1021
+ }
1022
+
1023
+ :where([data-kv-design-system]) [data-ui="surface"] {
1024
+ min-width: 0;
1025
+ border: 1px solid var(--kv-panel-border);
1026
+ border-radius: var(--kv-radius-md);
1027
+ background: var(--kv-panel-bg);
1028
+ }
1029
+
1030
+ :where([data-kv-design-system]) [data-ui="surface"][data-tone="subtle"] {
1031
+ background: var(--kv-panel-bg-subtle);
1032
+ }
1033
+
1034
+ :where([data-kv-design-system]) [data-ui="surface"][data-tone="raised"] {
1035
+ background: var(--kv-surface-raised);
1036
+ box-shadow: var(--kv-shadow-md);
1037
+ }
1038
+
1039
+ :where([data-kv-design-system]) [data-ui="surface"][data-padding="compact"] {
1040
+ padding: var(--kv-space-3);
1041
+ }
1042
+
1043
+ :where([data-kv-design-system]) [data-ui="surface"][data-padding="default"] {
1044
+ padding: var(--kv-space-5);
1045
+ }
1046
+
1047
+ :where([data-kv-design-system]) [data-ui="disclosure"] {
1048
+ min-width: 0;
1049
+ overflow: clip;
1050
+ border: 1px solid var(--kv-panel-border);
1051
+ border-radius: var(--kv-radius-md);
1052
+ background: var(--kv-panel-bg-subtle);
1053
+ }
1054
+
1055
+ :where([data-kv-design-system]) [data-ui="disclosure-summary"] {
1056
+ display: flex;
1057
+ align-items: center;
1058
+ justify-content: space-between;
1059
+ gap: var(--kv-space-3);
1060
+ padding: var(--kv-space-3) var(--kv-space-4);
1061
+ color: var(--kv-color-ink-secondary);
1062
+ font-size: var(--kv-text-sm);
1063
+ font-weight: 700;
1064
+ cursor: pointer;
1065
+ list-style: none;
1066
+ }
1067
+
1068
+ :where([data-kv-design-system]) [data-ui="disclosure-summary"]::-webkit-details-marker {
1069
+ display: none;
1070
+ }
1071
+
1072
+ :where([data-kv-design-system]) [data-ui="disclosure-summary"]::after {
1073
+ content: "+";
1074
+ flex: 0 0 auto;
1075
+ color: var(--kv-color-ink-muted);
1076
+ font-family: var(--kv-font-mono);
1077
+ font-weight: 600;
1078
+ transition: transform var(--kv-motion-fast);
1079
+ }
1080
+
1081
+ :where([data-kv-design-system]) [data-ui="disclosure"][open] > [data-ui="disclosure-summary"] {
1082
+ border-bottom: 1px solid var(--kv-color-line);
1083
+ }
1084
+
1085
+ :where([data-kv-design-system]) [data-ui="disclosure"][open] > [data-ui="disclosure-summary"]::after {
1086
+ transform: rotate(45deg);
1087
+ }
1088
+
1089
+ :where([data-kv-design-system]) [data-ui="disclosure-body"] {
1090
+ min-width: 0;
1091
+ padding: var(--kv-space-4);
1092
+ }
1093
+
1094
+ :where([data-kv-design-system]) [data-ui="section"] {
1095
+ display: grid;
1096
+ gap: var(--kv-space-3);
1097
+ }
1098
+
1099
+ :where([data-kv-design-system]) [data-ui="section-head"] {
1100
+ display: flex;
1101
+ align-items: end;
1102
+ justify-content: space-between;
1103
+ gap: var(--kv-space-4);
1104
+ padding-bottom: var(--kv-space-3);
1105
+ border-bottom: 1px solid var(--kv-color-line);
1106
+ }
1107
+
1108
+ :where([data-kv-design-system]) [data-ui="section-eyebrow"] {
1109
+ margin-bottom: var(--kv-space-1);
1110
+ color: var(--kv-color-accent);
1111
+ font-family: var(--kv-font-mono);
1112
+ font-size: var(--kv-text-xs);
1113
+ font-weight: 800;
1114
+ letter-spacing: 0.1em;
1115
+ text-transform: uppercase;
1116
+ }
1117
+
1118
+ :where([data-kv-design-system]) [data-ui="section-title"] {
1119
+ margin-bottom: 0;
1120
+ font-size: var(--kv-text-md);
1121
+ line-height: var(--kv-leading-tight);
1122
+ }
1123
+
1124
+ :where([data-kv-design-system]) [data-ui="section-description"] {
1125
+ max-width: 52rem;
1126
+ margin: var(--kv-space-1) 0 0;
1127
+ color: var(--kv-color-ink-muted);
1128
+ font-size: var(--kv-text-sm);
1129
+ }
1130
+
1131
+ :where([data-kv-design-system]) [data-ui="section-actions"] {
1132
+ flex: 0 0 auto;
1133
+ }
1134
+
1135
+ :where([data-kv-design-system]) [data-ui="section-body"] {
1136
+ min-width: 0;
1137
+ }
1138
+
1139
+ :where([data-kv-design-system]) [data-ui="content-card"] {
1140
+ display: grid;
1141
+ min-width: 0;
1142
+ gap: var(--kv-space-3);
1143
+ padding: var(--kv-space-4);
1144
+ border: 1px solid var(--kv-panel-border);
1145
+ border-radius: var(--kv-radius-md);
1146
+ background: var(--kv-panel-bg);
1147
+ transition:
1148
+ border-color var(--kv-motion-fast),
1149
+ background var(--kv-motion-fast);
1150
+ }
1151
+
1152
+ :where([data-kv-design-system]) [data-ui="content-card"][data-interactive="true"]:hover {
1153
+ border-color: var(--kv-border-default);
1154
+ background: var(--kv-surface-raised);
1155
+ }
1156
+
1157
+ :where([data-kv-design-system]) [data-ui="content-card"][data-selected="true"] {
1158
+ border-color: var(--kv-accent-border);
1159
+ background: var(--kv-accent-subtle);
1160
+ }
1161
+
1162
+ :where([data-kv-design-system]) [data-ui="card-head"] {
1163
+ min-width: 0;
1164
+ }
1165
+
1166
+ :where([data-kv-design-system]) [data-ui="card-title"] {
1167
+ margin-bottom: 0;
1168
+ font-size: var(--kv-text-base);
1169
+ }
1170
+
1171
+ :where([data-kv-design-system]) [data-ui="card-title"] a {
1172
+ color: inherit;
1173
+ text-decoration: none;
1174
+ }
1175
+
1176
+ :where([data-kv-design-system]) [data-ui="card-summary"] {
1177
+ margin: var(--kv-space-1) 0 0;
1178
+ color: var(--kv-color-ink-muted);
1179
+ font-size: var(--kv-text-sm);
1180
+ }
1181
+
1182
+ :where([data-kv-design-system]) [data-ui="card-body"] {
1183
+ color: var(--kv-color-ink-secondary);
1184
+ font-size: var(--kv-text-sm);
1185
+ }
1186
+
1187
+ :where([data-kv-design-system]) [data-ui="card-meta"] {
1188
+ align-self: end;
1189
+ }
1190
+
1191
+ :where([data-kv-design-system]) [data-ui="card-actions"] {
1192
+ padding-top: var(--kv-space-3);
1193
+ border-top: 1px solid var(--kv-color-line);
1194
+ }
1195
+
1196
+ :where([data-kv-design-system]) [data-ui="metric"] {
1197
+ display: grid;
1198
+ min-width: 0;
1199
+ min-height: 6.75rem;
1200
+ align-content: start;
1201
+ gap: var(--kv-space-1);
1202
+ padding: var(--kv-space-4);
1203
+ border: 1px solid var(--kv-panel-border);
1204
+ border-radius: var(--kv-radius-md);
1205
+ background: var(--kv-panel-bg);
1206
+ }
1207
+
1208
+ /* A metric with a glyph puts it in a tile on the left and lets the figure keep
1209
+ the rest of the row, so a grid of four stays scannable by position. */
1210
+ :where([data-kv-design-system]) [data-ui="metric"]:has(> [data-ui="metric-icon"]) {
1211
+ grid-template-columns: auto 1fr;
1212
+ column-gap: var(--kv-space-3);
1213
+ }
1214
+
1215
+ /* The figures are pinned to the text column: auto-placement would wrap them
1216
+ back under the tile as soon as a card carried a third line. */
1217
+ :where([data-kv-design-system])
1218
+ [data-ui="metric"]:has(> [data-ui="metric-icon"])
1219
+ > :not([data-ui="metric-icon"]) {
1220
+ grid-column: 2;
1221
+ }
1222
+
1223
+ :where([data-kv-design-system]) [data-ui="metric-icon"] {
1224
+ display: grid;
1225
+ grid-row: 1 / 3;
1226
+ grid-column: 1;
1227
+ align-self: center;
1228
+ place-items: center;
1229
+ inline-size: 2.25rem;
1230
+ block-size: 2.25rem;
1231
+ border-radius: var(--kv-radius-md);
1232
+ background: var(--kv-accent-subtle);
1233
+ color: var(--kv-accent);
1234
+ }
1235
+
1236
+ :where([data-kv-design-system]) [data-ui="metric-icon"] svg {
1237
+ inline-size: 1.125rem;
1238
+ block-size: 1.125rem;
1239
+ }
1240
+
1241
+ :where([data-kv-design-system]) a[data-ui="metric"] {
1242
+ color: inherit;
1243
+ text-decoration: none;
1244
+ }
1245
+
1246
+ :where([data-kv-design-system]) a[data-ui="metric"]:hover {
1247
+ border-color: var(--kv-color-line-strong);
1248
+ background: var(--kv-color-surface-hover);
1249
+ }
1250
+
1251
+ :where([data-kv-design-system]) [data-ui="metric-label"] {
1252
+ display: flex;
1253
+ align-items: center;
1254
+ margin-bottom: 0;
1255
+ gap: var(--kv-space-2);
1256
+ color: var(--kv-text-secondary);
1257
+ font-size: var(--kv-text-xs);
1258
+ font-weight: var(--kv-weight-semibold);
1259
+ letter-spacing: 0.05em;
1260
+ text-transform: uppercase;
1261
+ }
1262
+
1263
+ /* Drawn only for a metric that was given a tone. A grey bullet in front of
1264
+ every label would be decoration; here it is the one place a KPI row carries
1265
+ state, which is why the figure beside it stays in the page's ink. */
1266
+ :where([data-kv-design-system]) [data-ui="metric"][data-dot="true"] [data-ui="metric-label"]::before {
1267
+ width: 0.5rem;
1268
+ height: 0.5rem;
1269
+ flex: none;
1270
+ border-radius: 50%;
1271
+ background: var(--kv-text-muted);
1272
+ content: "";
1273
+ }
1274
+
1275
+ :where([data-kv-design-system]) [data-ui="metric"][data-tone="info"] [data-ui="metric-label"]::before {
1276
+ background: var(--kv-color-info);
1277
+ }
1278
+
1279
+ :where([data-kv-design-system]) [data-ui="metric"][data-tone="positive"] [data-ui="metric-label"]::before {
1280
+ background: var(--kv-color-positive);
1281
+ }
1282
+
1283
+ :where([data-kv-design-system]) [data-ui="metric"][data-tone="warning"] [data-ui="metric-label"]::before {
1284
+ background: var(--kv-color-warning);
1285
+ }
1286
+
1287
+ :where([data-kv-design-system]) [data-ui="metric"][data-tone="danger"] [data-ui="metric-label"]::before {
1288
+ background: var(--kv-color-danger);
1289
+ }
1290
+
1291
+ :where([data-kv-design-system]) [data-ui="metric-value"] {
1292
+ margin-bottom: 0;
1293
+ font-size: var(--kv-text-2xl);
1294
+ font-weight: var(--kv-weight-bold);
1295
+ font-variant-numeric: tabular-nums;
1296
+ letter-spacing: -0.025em;
1297
+ }
1298
+
1299
+ :where([data-kv-design-system]) [data-ui="metric-detail"] {
1300
+ margin: 0;
1301
+ color: var(--kv-text-secondary);
1302
+ font-size: var(--kv-text-sm);
1303
+ }
1304
+
1305
+ @media (max-width: 48rem) {
1306
+ :where([data-kv-design-system]) [data-ui="grid"] {
1307
+ grid-template-columns: 1fr;
1308
+ }
1309
+
1310
+ :where([data-kv-design-system]) [data-ui="section-head"] {
1311
+ align-items: start;
1312
+ flex-direction: column;
1313
+ }
1314
+ }
1315
+ }
1316
+
1317
+ @layer ket.app {
1318
+ :where([data-kv-design-system]) [data-ui="app-shell"] {
1319
+ display: grid;
1320
+ min-width: 0;
1321
+ min-height: 100dvh;
1322
+ grid-template-columns: var(--kv-sidebar-width) minmax(0, 1fr);
1323
+ background: var(--kv-page-bg);
1324
+ color: var(--kv-text-main);
1325
+ }
1326
+
1327
+ :where([data-kv-design-system]) [data-ui="app-shell"][data-has-right-rail="true"] {
1328
+ grid-template-columns: var(--kv-sidebar-width) minmax(0, 1fr) var(--kv-right-rail-width);
1329
+ }
1330
+
1331
+ :where([data-kv-design-system]) [data-ui="app-sidebar"] {
1332
+ position: sticky;
1333
+ top: 0;
1334
+ height: 100dvh;
1335
+ min-width: 0;
1336
+ overflow: hidden;
1337
+ border-right: 1px solid var(--kv-sidebar-border);
1338
+ border-radius: var(--kv-radius-app-region);
1339
+ background: var(--kv-sidebar-bg);
1340
+ }
1341
+
1342
+ :where([data-kv-design-system]) [data-ui="app-main"] {
1343
+ min-width: 0;
1344
+ border-radius: var(--kv-radius-app-region);
1345
+ background: var(--kv-page-bg);
1346
+ }
1347
+
1348
+ :where([data-kv-design-system]) [data-ui="app-right-rail"] {
1349
+ position: sticky;
1350
+ top: 0;
1351
+ height: 100dvh;
1352
+ min-width: 0;
1353
+ overflow-y: auto;
1354
+ border-left: 1px solid var(--kv-right-rail-border);
1355
+ border-radius: var(--kv-radius-app-region);
1356
+ background: var(--kv-right-rail-bg);
1357
+ }
1358
+
1359
+ :where([data-kv-design-system]) [data-ui="app-shell"][data-mode="embedded"] {
1360
+ min-height: 28rem;
1361
+ height: 28rem;
1362
+ overflow: hidden;
1363
+ }
1364
+
1365
+ :where([data-kv-design-system])
1366
+ [data-ui="app-shell"][data-mode="embedded"]
1367
+ :is([data-ui="app-sidebar"], [data-ui="app-right-rail"]) {
1368
+ position: relative;
1369
+ height: 100%;
1370
+ }
1371
+
1372
+ :where([data-kv-design-system]) [data-ui="page"] {
1373
+ min-width: 0;
1374
+ padding: var(--kv-page-padding-y) var(--kv-page-padding-x);
1375
+ }
1376
+
1377
+ :where([data-kv-design-system]) [data-ui="page-header"] {
1378
+ display: flex;
1379
+ align-items: flex-start;
1380
+ justify-content: space-between;
1381
+ gap: var(--kv-space-6);
1382
+ margin-bottom: var(--kv-space-6);
1383
+ }
1384
+
1385
+ :where([data-kv-design-system]) [data-ui="page-heading"] {
1386
+ min-width: 0;
1387
+ }
1388
+
1389
+ :where([data-kv-design-system]) [data-ui="page-title"] {
1390
+ margin: 0;
1391
+ font-size: var(--kv-text-2xl);
1392
+ font-weight: var(--kv-weight-semibold);
1393
+ letter-spacing: -0.025em;
1394
+ line-height: var(--kv-leading-tight);
1395
+ }
1396
+
1397
+ :where([data-kv-design-system]) [data-ui="page-description"] {
1398
+ margin: var(--kv-space-1-5) 0 0;
1399
+ color: var(--kv-text-muted);
1400
+ font-size: var(--kv-text-sm);
1401
+ }
1402
+
1403
+ :where([data-kv-design-system]) [data-ui="page-actions"] {
1404
+ flex: 0 0 auto;
1405
+ }
1406
+
1407
+ :where([data-kv-design-system]) [data-ui="page-body"] {
1408
+ min-width: 0;
1409
+ }
1410
+
1411
+ :where([data-kv-design-system]) [data-ui="record-canvas"] {
1412
+ min-width: 0;
1413
+ padding: 1.375rem var(--kv-page-padding-x) var(--kv-space-12);
1414
+ }
1415
+
1416
+ :where([data-kv-design-system]) [data-ui="record-content"] {
1417
+ width: 100%;
1418
+ min-width: 0;
1419
+ }
1420
+
1421
+ :where([data-kv-design-system]) [data-ui="record-section"] {
1422
+ min-width: 0;
1423
+ padding: var(--kv-space-6) 0;
1424
+ border-bottom: 1px solid var(--kv-panel-divider);
1425
+ }
1426
+
1427
+ :where([data-kv-design-system]) [data-ui="record-section"]:last-child {
1428
+ border-bottom: 0;
1429
+ }
1430
+
1431
+ :where([data-kv-design-system]) [data-ui="record-section-title"] {
1432
+ margin: 0 0 var(--kv-space-4);
1433
+ font-size: var(--kv-text-lg);
1434
+ font-weight: var(--kv-weight-semibold);
1435
+ }
1436
+
1437
+ @media (max-width: 48rem) {
1438
+ :where([data-kv-design-system]) [data-ui="app-shell"],
1439
+ :where([data-kv-design-system]) [data-ui="app-shell"][data-has-right-rail="true"] {
1440
+ grid-template-columns: minmax(0, 1fr);
1441
+ }
1442
+
1443
+ :where([data-kv-design-system]) [data-ui="app-sidebar"],
1444
+ :where([data-kv-design-system]) [data-ui="app-right-rail"] {
1445
+ position: relative;
1446
+ width: auto;
1447
+ height: auto;
1448
+ }
1449
+
1450
+ :where([data-kv-design-system]) [data-ui="app-sidebar"] {
1451
+ border-right: 0;
1452
+ border-bottom: 1px solid var(--kv-sidebar-border);
1453
+ }
1454
+
1455
+ :where([data-kv-design-system]) [data-ui="app-right-rail"] {
1456
+ border-top: 1px solid var(--kv-right-rail-border);
1457
+ border-left: 0;
1458
+ }
1459
+
1460
+ :where([data-kv-design-system]) [data-ui="page"],
1461
+ :where([data-kv-design-system]) [data-ui="record-canvas"] {
1462
+ padding-inline: var(--kv-space-4);
1463
+ }
1464
+
1465
+ :where([data-kv-design-system]) [data-ui="page-header"] {
1466
+ flex-direction: column;
1467
+ gap: var(--kv-space-4);
1468
+ }
1469
+ }
1470
+ }
1471
+
1472
+ /* FormPage rail contract: desktop content is 2:1; narrow screens stack. */
1473
+ @layer ket.app {
1474
+ :where([data-kv-design-system])
1475
+ :is([data-ui="list-page"], [data-ui="form-page"], [data-ui="dashboard-page"], [data-ui="board-page"]) {
1476
+ --kv-page-title-size: 1.5rem;
1477
+ }
1478
+
1479
+ :where([data-kv-design-system]) [data-ui="list-page"] {
1480
+ display: grid;
1481
+ min-width: 0;
1482
+ gap: var(--kv-space-3);
1483
+ padding: var(--kv-space-6) var(--kv-page-padding-x) var(--kv-space-10);
1484
+ }
1485
+
1486
+ :where([data-kv-design-system]) [data-ui="list-page-header"] {
1487
+ min-width: 0;
1488
+ padding-bottom: var(--kv-space-2);
1489
+ }
1490
+
1491
+ :where([data-kv-design-system]) [data-ui="list-page-heading"] {
1492
+ display: grid;
1493
+ min-width: 0;
1494
+ gap: var(--kv-space-1);
1495
+ }
1496
+
1497
+ :where([data-kv-design-system]) [data-ui="list-page-title-row"] {
1498
+ display: flex;
1499
+ min-width: 0;
1500
+ flex-wrap: wrap;
1501
+ align-items: center;
1502
+ gap: var(--kv-space-3);
1503
+ }
1504
+
1505
+ :where([data-kv-design-system]) [data-ui="list-page-eyebrow"] {
1506
+ margin: 0;
1507
+ color: var(--kv-accent);
1508
+ font-size: var(--kv-text-2xs);
1509
+ font-weight: var(--kv-weight-bold);
1510
+ letter-spacing: 0.09em;
1511
+ line-height: var(--kv-leading-tight);
1512
+ text-transform: uppercase;
1513
+ }
1514
+
1515
+ :where([data-kv-design-system]) [data-ui="list-page-title"] {
1516
+ margin: 0;
1517
+ color: var(--kv-text-main);
1518
+ font-size: var(--kv-page-title-size);
1519
+ font-weight: var(--kv-weight-semibold);
1520
+ letter-spacing: -0.025em;
1521
+ line-height: var(--kv-leading-tight);
1522
+ }
1523
+
1524
+ :where([data-kv-design-system]) [data-ui="list-page-description"] {
1525
+ max-width: 48rem;
1526
+ margin: 0;
1527
+ color: var(--kv-text-muted);
1528
+ font-size: var(--kv-text-sm);
1529
+ line-height: var(--kv-leading-normal);
1530
+ }
1531
+
1532
+ :where([data-kv-design-system]) [data-ui="list-page-actions"] {
1533
+ display: flex;
1534
+ flex: 0 0 auto;
1535
+ flex-wrap: wrap;
1536
+ align-items: center;
1537
+ gap: var(--kv-space-2);
1538
+ }
1539
+
1540
+ :where([data-kv-design-system]) [data-ui="list-page-toolbar"] {
1541
+ display: flex;
1542
+ width: 100%;
1543
+ min-width: 0;
1544
+ flex-wrap: wrap;
1545
+ align-items: center;
1546
+ gap: var(--kv-space-2);
1547
+ padding: var(--kv-space-2);
1548
+ border: 1px solid var(--kv-panel-border);
1549
+ border-radius: var(--kv-radius-md);
1550
+ background: var(--kv-panel-bg-subtle);
1551
+ }
1552
+
1553
+ :where([data-kv-design-system]) [data-ui="list-page-controls"] {
1554
+ min-width: min(100%, 24rem);
1555
+ flex: 1 1 40rem;
1556
+ }
1557
+
1558
+ :where([data-kv-design-system]) [data-ui="list-page-status"] {
1559
+ min-width: max-content;
1560
+ flex: 0 0 auto;
1561
+ padding-inline: var(--kv-space-2);
1562
+ color: var(--kv-text-muted);
1563
+ font-size: var(--kv-text-xs);
1564
+ font-variant-numeric: tabular-nums;
1565
+ }
1566
+
1567
+ :where([data-kv-design-system]) [data-ui="list-page-body"] {
1568
+ min-width: 0;
1569
+ }
1570
+
1571
+ :where([data-kv-design-system]) [data-ui="list-page-footer"] {
1572
+ min-width: 0;
1573
+ padding-top: var(--kv-space-3);
1574
+ border-top: 1px solid var(--kv-panel-divider);
1575
+ color: var(--kv-text-muted);
1576
+ font-size: var(--kv-text-xs);
1577
+ }
1578
+
1579
+ /* Application collections opt into the full operational workspace. This keeps
1580
+ context, identity, command bar and results in distinct horizontal bands so
1581
+ dense records remain the visual focus. */
1582
+ :where([data-kv-design-system]) [data-ui="list-page"][data-variant="operational"] {
1583
+ gap: 0;
1584
+ padding: 0 0 var(--kv-space-10);
1585
+ background: var(--kv-page-bg);
1586
+ }
1587
+
1588
+ :where([data-kv-design-system])
1589
+ [data-ui="list-page"][data-variant="operational"]
1590
+ [data-ui="list-page-context"] {
1591
+ display: flex;
1592
+ min-width: 0;
1593
+ min-height: var(--kv-table-header-height);
1594
+ align-items: center;
1595
+ padding-inline: var(--kv-page-padding-x);
1596
+ border-bottom: 1px solid var(--kv-panel-divider);
1597
+ background: var(--kv-panel-bg);
1598
+ }
1599
+
1600
+ :where([data-kv-design-system])
1601
+ [data-ui="list-page"][data-variant="operational"]
1602
+ [data-ui="list-page-header"] {
1603
+ padding: var(--kv-space-4) var(--kv-page-padding-x);
1604
+ border-bottom: 1px solid var(--kv-panel-divider);
1605
+ background: var(--kv-panel-bg);
1606
+ }
1607
+
1608
+ :where([data-kv-design-system])
1609
+ [data-ui="list-page"][data-variant="operational"]
1610
+ [data-ui="list-page-title-row"] {
1611
+ display: grid;
1612
+ grid-template-columns: minmax(0, 1fr) auto;
1613
+ gap: var(--kv-space-5);
1614
+ }
1615
+
1616
+ :where([data-kv-design-system])
1617
+ [data-ui="list-page"][data-variant="operational"]
1618
+ [data-ui="list-page-actions"] {
1619
+ justify-content: flex-end;
1620
+ }
1621
+
1622
+ :where([data-kv-design-system])
1623
+ [data-ui="list-page"][data-variant="operational"]
1624
+ [data-ui="list-page-toolbar"] {
1625
+ padding: var(--kv-space-3) var(--kv-page-padding-x) var(--kv-space-2-5);
1626
+ border: 0;
1627
+ border-radius: 0;
1628
+ background: transparent;
1629
+ }
1630
+
1631
+ :where([data-kv-design-system])
1632
+ [data-ui="list-page"][data-variant="operational"]
1633
+ [data-ui="list-page-controls"] {
1634
+ min-width: 0;
1635
+ flex-basis: 100%;
1636
+ }
1637
+
1638
+ :where([data-kv-design-system])
1639
+ [data-ui="list-page"][data-variant="operational"]
1640
+ [data-ui="list-page-body"] {
1641
+ padding-top: var(--kv-space-2);
1642
+ padding-inline: var(--kv-page-padding-x);
1643
+ }
1644
+
1645
+ :where([data-kv-design-system])
1646
+ [data-ui="list-page"][data-variant="operational"]
1647
+ [data-ui="list-page-footer"] {
1648
+ margin: var(--kv-space-3) var(--kv-page-padding-x) 0;
1649
+ padding: var(--kv-space-2-5) var(--kv-space-3);
1650
+ border: 1px solid var(--kv-panel-border);
1651
+ border-radius: var(--kv-radius-md);
1652
+ background: var(--kv-panel-bg);
1653
+ font-variant-numeric: tabular-nums;
1654
+ }
1655
+
1656
+ :where([data-kv-design-system])
1657
+ [data-ui="list-page"][data-variant="operational"]
1658
+ [data-ui="list-page-body"]:has(> [data-ui="table-scroll"])
1659
+ > [data-ui="table-scroll"] {
1660
+ border-radius: var(--kv-radius-md) var(--kv-radius-md) 0 0;
1661
+ }
1662
+
1663
+ :where([data-kv-design-system])
1664
+ [data-ui="list-page"][data-variant="operational"]
1665
+ [data-ui="list-page-body"]:has(> [data-ui="table-scroll"])
1666
+ + [data-ui="list-page-footer"] {
1667
+ margin-top: -1px;
1668
+ border-radius: 0 0 var(--kv-radius-md) var(--kv-radius-md);
1669
+ }
1670
+
1671
+ /* Lists are page regions, not cards. More capable application tables may add
1672
+ selection, grouping or configurable columns while retaining this surface. */
1673
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="table-scroll"] {
1674
+ margin: 0;
1675
+ border-color: var(--kv-table-border);
1676
+ border-radius: var(--kv-radius-md);
1677
+ background: var(--kv-table-bg);
1678
+ box-shadow: none;
1679
+ }
1680
+
1681
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="table"] th {
1682
+ background: var(--kv-table-header-bg);
1683
+ color: var(--kv-table-header-text);
1684
+ }
1685
+
1686
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="row"] td {
1687
+ background: var(--kv-table-row-bg);
1688
+ }
1689
+
1690
+ :where([data-kv-design-system]) [data-ui="list-page"] [data-ui="row"]:hover td {
1691
+ background: var(--kv-table-row-hover);
1692
+ }
1693
+
1694
+ :where([data-kv-design-system]) [data-ui="table-scroll"] {
1695
+ width: 100%;
1696
+ overflow-x: auto;
1697
+ border: 1px solid var(--kv-panel-border);
1698
+ border-radius: var(--kv-radius-md);
1699
+ background: var(--kv-table-bg);
1700
+ }
1701
+
1702
+ :where([data-kv-design-system]) [data-ui="table"] {
1703
+ width: 100%;
1704
+ min-width: 38rem;
1705
+ border-collapse: separate;
1706
+ border-spacing: 0;
1707
+ font-size: var(--kv-text-sm);
1708
+ }
1709
+
1710
+ :where([data-kv-design-system]) [data-ui="table-caption"] {
1711
+ padding: var(--kv-space-3);
1712
+ color: var(--kv-text-muted);
1713
+ font-size: var(--kv-text-xs);
1714
+ text-align: left;
1715
+ }
1716
+
1717
+ :where([data-kv-design-system]) [data-ui="col"] {
1718
+ height: var(--kv-table-header-height);
1719
+ padding: 0 var(--kv-space-3);
1720
+ border-bottom: 1px solid var(--kv-table-border);
1721
+ background: var(--kv-table-header-bg);
1722
+ color: var(--kv-table-header-text);
1723
+ font-size: var(--kv-text-2xs);
1724
+ font-weight: var(--kv-weight-semibold);
1725
+ letter-spacing: 0.035em;
1726
+ text-align: left;
1727
+ text-transform: uppercase;
1728
+ white-space: nowrap;
1729
+ }
1730
+
1731
+ :where([data-kv-design-system]) [data-ui="col"][data-align="end"],
1732
+ :where([data-kv-design-system]) [data-ui="cell"][data-align="end"] {
1733
+ font-variant-numeric: tabular-nums;
1734
+ text-align: right;
1735
+ }
1736
+
1737
+ :where([data-kv-design-system]) [data-ui="row"] {
1738
+ height: var(--kv-row-height);
1739
+ transition: background var(--kv-motion-fast);
1740
+ }
1741
+
1742
+ :where([data-kv-design-system]) [data-ui="row"]:hover {
1743
+ background: transparent;
1744
+ }
1745
+
1746
+ :where([data-kv-design-system]) [data-ui="row"]:hover [data-ui="cell"] {
1747
+ background: var(--kv-table-row-hover);
1748
+ }
1749
+
1750
+ :where([data-kv-design-system]) [data-ui="row"][data-selected="true"] [data-ui="cell"] {
1751
+ background: var(--kv-table-row-selected);
1752
+ }
1753
+
1754
+ :where([data-kv-design-system]) [data-ui="cell"] {
1755
+ max-width: 24rem;
1756
+ height: var(--kv-row-height);
1757
+ padding: 0.4375rem var(--kv-space-3);
1758
+ border-bottom: 1px solid var(--kv-table-border);
1759
+ background: var(--kv-table-row-bg);
1760
+ color: var(--kv-text-secondary);
1761
+ overflow-wrap: anywhere;
1762
+ }
1763
+
1764
+ :where([data-kv-design-system]) [data-ui="cell"][data-priority="primary"] {
1765
+ color: var(--kv-text-main);
1766
+ font-weight: var(--kv-weight-semibold);
1767
+ }
1768
+
1769
+ :where([data-kv-design-system]) [data-ui="row-link"] {
1770
+ color: inherit;
1771
+ text-decoration: none;
1772
+ }
1773
+
1774
+ :where([data-kv-design-system]) [data-ui="row-link"]:hover {
1775
+ color: var(--kv-color-accent);
1776
+ text-decoration: underline;
1777
+ text-underline-offset: 0.15em;
1778
+ }
1779
+
1780
+ :where([data-kv-design-system]) [data-ui="record-form"] {
1781
+ display: grid;
1782
+ gap: var(--kv-gap-field-group);
1783
+ }
1784
+
1785
+ :where([data-kv-design-system]) [data-ui="form-errors"] {
1786
+ display: grid;
1787
+ gap: var(--kv-space-1);
1788
+ margin: 0;
1789
+ padding: var(--kv-space-3) var(--kv-space-3) var(--kv-space-3) 2rem;
1790
+ border: 1px solid var(--kv-color-danger);
1791
+ border-radius: var(--kv-radius-sm);
1792
+ background: var(--kv-color-danger-soft);
1793
+ color: var(--kv-color-danger);
1794
+ font-size: var(--kv-text-sm);
1795
+ }
1796
+
1797
+ :where([data-kv-design-system]) [data-ui="form-grid"] {
1798
+ display: grid;
1799
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1800
+ gap: var(--kv-gap-form-row) var(--kv-gap-field-group);
1801
+ }
1802
+
1803
+ :where([data-kv-design-system]) [data-ui="form-grid"] [data-ui="field"][data-span="full"] {
1804
+ grid-column: 1 / -1;
1805
+ }
1806
+
1807
+ :where([data-kv-design-system]) [data-ui="form-actions"] {
1808
+ display: flex;
1809
+ justify-content: flex-end;
1810
+ padding-top: var(--kv-space-4);
1811
+ border-top: 1px solid var(--kv-panel-divider);
1812
+ }
1813
+
1814
+ @media (max-width: 47.9375rem) {
1815
+ :where([data-kv-design-system]) [data-ui="form-grid"] {
1816
+ grid-template-columns: minmax(0, 1fr);
1817
+ }
1818
+
1819
+ :where([data-kv-design-system]) [data-ui="form-grid"] [data-ui="field"] {
1820
+ grid-column: 1;
1821
+ }
1822
+ }
1823
+
1824
+ :where([data-kv-design-system]) [data-ui="modal-backdrop"] {
1825
+ position: fixed;
1826
+ z-index: var(--kv-z-modal);
1827
+ inset: 0;
1828
+ display: grid;
1829
+ place-items: center;
1830
+ padding: var(--kv-space-4);
1831
+ background: rgb(12 14 16 / 52%);
1832
+ backdrop-filter: blur(3px);
1833
+ }
1834
+
1835
+ :where([data-kv-design-system]) [data-ui="modal-backdrop"][data-mode="embedded"] {
1836
+ position: relative;
1837
+ min-height: 20rem;
1838
+ inset: auto;
1839
+ border-radius: var(--kv-radius-md);
1840
+ background:
1841
+ linear-gradient(135deg, color-mix(in srgb, var(--kv-color-accent-soft) 60%, transparent), transparent),
1842
+ var(--kv-color-canvas);
1843
+ backdrop-filter: none;
1844
+ }
1845
+
1846
+ :where([data-kv-design-system]) [data-ui="modal-sheet"] {
1847
+ width: min(34rem, 100%);
1848
+ max-height: calc(100dvh - 2rem);
1849
+ overflow: auto;
1850
+ border: 1px solid var(--kv-color-line-strong);
1851
+ border-radius: var(--kv-radius-lg);
1852
+ background: var(--kv-color-surface);
1853
+ box-shadow: var(--kv-shadow-popover);
1854
+ }
1855
+
1856
+ :where([data-kv-design-system]) [data-ui="modal-head"] {
1857
+ display: flex;
1858
+ align-items: center;
1859
+ justify-content: space-between;
1860
+ gap: var(--kv-space-4);
1861
+ padding: var(--kv-space-4) var(--kv-space-5);
1862
+ border-bottom: 1px solid var(--kv-color-line);
1863
+ }
1864
+
1865
+ :where([data-kv-design-system]) [data-ui="modal-title"] {
1866
+ margin-bottom: 0;
1867
+ font-family: var(--kv-font-display);
1868
+ font-size: var(--kv-text-lg);
1869
+ font-weight: 650;
1870
+ }
1871
+
1872
+ :where([data-kv-design-system]) [data-ui="modal-close"] {
1873
+ display: grid;
1874
+ width: 2rem;
1875
+ height: 2rem;
1876
+ place-items: center;
1877
+ border-radius: 50%;
1878
+ color: var(--kv-color-ink-muted);
1879
+ font-size: 1.4rem;
1880
+ line-height: 1;
1881
+ text-decoration: none;
1882
+ }
1883
+
1884
+ :where([data-kv-design-system]) [data-ui="modal-close"]:hover {
1885
+ background: var(--kv-color-surface-hover);
1886
+ color: var(--kv-color-ink);
1887
+ }
1888
+
1889
+ :where([data-kv-design-system]) [data-ui="modal-body"] {
1890
+ padding: var(--kv-space-5);
1891
+ }
1892
+
1893
+ @media (max-width: 42rem) {
1894
+ :where([data-kv-design-system]) [data-ui="list-page"] {
1895
+ gap: var(--kv-space-3);
1896
+ padding: var(--kv-space-4) var(--kv-space-4) var(--kv-space-8);
1897
+ }
1898
+
1899
+ :where([data-kv-design-system]) [data-ui="list-page-header"] {
1900
+ padding-bottom: var(--kv-space-1);
1901
+ }
1902
+
1903
+ :where([data-kv-design-system]) [data-ui="list-page-actions"] {
1904
+ justify-content: flex-start;
1905
+ }
1906
+
1907
+ :where([data-kv-design-system]) [data-ui="list-page-toolbar"] {
1908
+ gap: var(--kv-space-2);
1909
+ padding: var(--kv-space-2);
1910
+ }
1911
+
1912
+ :where([data-kv-design-system]) [data-ui="list-page-controls"] {
1913
+ min-width: 0;
1914
+ flex-basis: 15rem;
1915
+ }
1916
+
1917
+ :where([data-kv-design-system]) [data-ui="list-page"][data-variant="operational"] {
1918
+ padding: 0 0 var(--kv-space-8);
1919
+ }
1920
+
1921
+ :where([data-kv-design-system])
1922
+ [data-ui="list-page"][data-variant="operational"]
1923
+ [data-ui="list-page-context"] {
1924
+ min-height: 2.75rem;
1925
+ padding-inline: var(--kv-space-4);
1926
+ }
1927
+
1928
+ :where([data-kv-design-system])
1929
+ [data-ui="list-page"][data-variant="operational"]
1930
+ [data-ui="list-page-header"] {
1931
+ padding: var(--kv-space-4) var(--kv-space-4) var(--kv-space-3);
1932
+ }
1933
+
1934
+ :where([data-kv-design-system])
1935
+ [data-ui="list-page"][data-variant="operational"]
1936
+ [data-ui="list-page-heading"] {
1937
+ display: flex;
1938
+ flex-direction: column;
1939
+ }
1940
+
1941
+ :where([data-kv-design-system])
1942
+ [data-ui="list-page"][data-variant="operational"]
1943
+ [data-ui="list-page-title-row"] {
1944
+ display: contents;
1945
+ }
1946
+
1947
+ :where([data-kv-design-system])
1948
+ [data-ui="list-page"][data-variant="operational"]
1949
+ [data-ui="list-page-title"] {
1950
+ order: 1;
1951
+ font-size: var(--kv-text-lg);
1952
+ }
1953
+
1954
+ :where([data-kv-design-system])
1955
+ [data-ui="list-page"][data-variant="operational"]
1956
+ [data-ui="list-page-description"] {
1957
+ order: 2;
1958
+ }
1959
+
1960
+ :where([data-kv-design-system])
1961
+ [data-ui="list-page"][data-variant="operational"]
1962
+ [data-ui="list-page-actions"],
1963
+ :where([data-kv-design-system])
1964
+ [data-ui="list-page"][data-variant="operational"]
1965
+ [data-ui="list-page-actions"]
1966
+ > [data-ui="inline"] {
1967
+ width: 100%;
1968
+ }
1969
+
1970
+ :where([data-kv-design-system])
1971
+ [data-ui="list-page"][data-variant="operational"]
1972
+ [data-ui="list-page-actions"] {
1973
+ order: 3;
1974
+ margin-top: var(--kv-space-2);
1975
+ }
1976
+
1977
+ :where([data-kv-design-system])
1978
+ [data-ui="list-page"][data-variant="operational"]
1979
+ [data-ui="list-page-actions"]
1980
+ [data-ui="action"][data-variant="primary"] {
1981
+ min-height: 2.75rem;
1982
+ flex: 1 1 auto;
1983
+ }
1984
+
1985
+ :where([data-kv-design-system])
1986
+ [data-ui="list-page"][data-variant="operational"]
1987
+ [data-ui="list-page-toolbar"] {
1988
+ padding: var(--kv-space-3) var(--kv-space-4);
1989
+ }
1990
+
1991
+ :where([data-kv-design-system])
1992
+ [data-ui="list-page"][data-variant="operational"]
1993
+ :is([data-ui="list-page-body"], [data-ui="list-page-footer"]) {
1994
+ margin-inline: var(--kv-space-4);
1995
+ padding-inline: 0;
1996
+ }
1997
+
1998
+ :where([data-kv-design-system])
1999
+ [data-ui="list-page"][data-variant="operational"]
2000
+ [data-ui="list-page-footer"] {
2001
+ padding: var(--kv-space-2-5) var(--kv-space-3);
2002
+ }
2003
+
2004
+ :where([data-kv-design-system]) [data-ui="list-page"][data-variant="operational"] [data-ui="table"] {
2005
+ min-width: 0;
2006
+ }
2007
+
2008
+ :where([data-kv-design-system])
2009
+ [data-ui="list-page"][data-variant="operational"]
2010
+ [data-ui="table"]
2011
+ :is(th, td):is([data-priority="secondary"], [data-priority="tertiary"]) {
2012
+ display: none;
2013
+ }
2014
+
2015
+ :where([data-kv-design-system])
2016
+ [data-ui="list-page"][data-variant="operational"]
2017
+ [data-ui="table"]
2018
+ :is(th, td)[data-priority="primary"][data-align="end"] {
2019
+ width: 7rem;
2020
+ }
2021
+
2022
+ :where([data-kv-design-system])
2023
+ [data-ui="list-page"][data-variant="operational"]
2024
+ [data-ui="table"]
2025
+ :is([data-ui="col"], [data-ui="cell"]) {
2026
+ padding-inline: var(--kv-space-2);
2027
+ }
2028
+ }
2029
+
2030
+ /* A process read left to right. The rail is drawn as two half-lines per step
2031
+ rather than one line behind the row, so it starts at the first node and stops
2032
+ at the last instead of running off both ends of the grid. */
2033
+ :where([data-kv-design-system]) [data-ui="pipeline"] {
2034
+ display: grid;
2035
+ margin: 0;
2036
+ padding: 0;
2037
+ grid-auto-columns: 1fr;
2038
+ grid-auto-flow: column;
2039
+ list-style: none;
2040
+ }
2041
+
2042
+ :where([data-kv-design-system]) [data-ui="pipeline-step"] {
2043
+ position: relative;
2044
+ display: grid;
2045
+ padding-bottom: var(--kv-space-5);
2046
+ justify-items: center;
2047
+ gap: var(--kv-space-1);
2048
+ text-align: center;
2049
+ }
2050
+
2051
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::before,
2052
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::after {
2053
+ position: absolute;
2054
+ bottom: 0.3125rem;
2055
+ height: 1px;
2056
+ background: var(--kv-color-line-strong);
2057
+ content: "";
2058
+ }
2059
+
2060
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::before {
2061
+ left: 0;
2062
+ right: 50%;
2063
+ }
2064
+
2065
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::after {
2066
+ left: 50%;
2067
+ right: 0;
2068
+ }
2069
+
2070
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]:first-child::before,
2071
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]:last-child::after {
2072
+ display: none;
2073
+ }
2074
+
2075
+ :where([data-kv-design-system]) [data-ui="pipeline-step-node"] {
2076
+ position: absolute;
2077
+ bottom: 0;
2078
+ left: 50%;
2079
+ width: 0.625rem;
2080
+ height: 0.625rem;
2081
+ border-radius: 50%;
2082
+ background: var(--kv-text-muted);
2083
+ translate: -50% 0;
2084
+ }
2085
+
2086
+ :where([data-kv-design-system]) [data-ui="pipeline-step"][data-tone="info"] [data-ui="pipeline-step-node"] {
2087
+ background: var(--kv-color-info);
2088
+ }
2089
+
2090
+ :where([data-kv-design-system])
2091
+ [data-ui="pipeline-step"][data-tone="positive"]
2092
+ [data-ui="pipeline-step-node"] {
2093
+ background: var(--kv-color-positive);
2094
+ }
2095
+
2096
+ :where([data-kv-design-system])
2097
+ [data-ui="pipeline-step"][data-tone="warning"]
2098
+ [data-ui="pipeline-step-node"] {
2099
+ background: var(--kv-color-warning);
2100
+ }
2101
+
2102
+ :where([data-kv-design-system])
2103
+ [data-ui="pipeline-step"][data-tone="danger"]
2104
+ [data-ui="pipeline-step-node"] {
2105
+ background: var(--kv-color-danger);
2106
+ }
2107
+
2108
+ /* Two borders rotated into a chevron, sat on the column boundary. Drawn rather
2109
+ than written, because the order is already in the markup and an arrow
2110
+ character here would be read out between every pair of stages. */
2111
+ :where([data-kv-design-system]) [data-ui="pipeline-arrow"] {
2112
+ position: absolute;
2113
+ top: 0.25rem;
2114
+ left: 0;
2115
+ width: 0.375rem;
2116
+ height: 0.375rem;
2117
+ border-top: 1.5px solid var(--kv-text-muted);
2118
+ border-right: 1.5px solid var(--kv-text-muted);
2119
+ rotate: 45deg;
2120
+ translate: -50% 0;
2121
+ }
2122
+
2123
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]:first-child [data-ui="pipeline-arrow"] {
2124
+ display: none;
2125
+ }
2126
+
2127
+ :where([data-kv-design-system]) [data-ui="pipeline-step-label"] {
2128
+ color: var(--kv-text-secondary);
2129
+ font-size: var(--kv-text-sm);
2130
+ text-decoration: none;
2131
+ }
2132
+
2133
+ :where([data-kv-design-system]) a[data-ui="pipeline-step-label"]:hover {
2134
+ color: var(--kv-text-main);
2135
+ text-decoration: underline;
2136
+ }
2137
+
2138
+ :where([data-kv-design-system]) [data-ui="pipeline-step-value"] {
2139
+ color: var(--kv-text-main);
2140
+ font-size: var(--kv-text-2xl);
2141
+ font-weight: var(--kv-weight-bold);
2142
+ font-variant-numeric: tabular-nums;
2143
+ letter-spacing: -0.025em;
2144
+ }
2145
+
2146
+ /* Too narrow for four columns, so the rail turns and runs down the left. The
2147
+ stages keep their order and their counts; only the axis changes. */
2148
+ @media (max-width: 42rem) {
2149
+ :where([data-kv-design-system]) [data-ui="pipeline"] {
2150
+ grid-auto-columns: auto;
2151
+ grid-auto-flow: row;
2152
+ }
2153
+
2154
+ :where([data-kv-design-system]) [data-ui="pipeline-step"] {
2155
+ padding-bottom: var(--kv-space-3);
2156
+ padding-left: var(--kv-space-6);
2157
+ grid-template-columns: 1fr auto;
2158
+ align-items: center;
2159
+ justify-items: start;
2160
+ text-align: left;
2161
+ }
2162
+
2163
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::before,
2164
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::after {
2165
+ left: 0.3125rem;
2166
+ right: auto;
2167
+ width: 1px;
2168
+ height: 50%;
2169
+ }
2170
+
2171
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::before {
2172
+ top: 0;
2173
+ bottom: auto;
2174
+ }
2175
+
2176
+ :where([data-kv-design-system]) [data-ui="pipeline-step"]::after {
2177
+ top: 50%;
2178
+ bottom: auto;
2179
+ }
2180
+
2181
+ :where([data-kv-design-system]) [data-ui="pipeline-step-node"] {
2182
+ top: 50%;
2183
+ bottom: auto;
2184
+ left: 0.3125rem;
2185
+ translate: -50% -50%;
2186
+ }
2187
+
2188
+ :where([data-kv-design-system]) [data-ui="pipeline-arrow"] {
2189
+ display: none;
2190
+ }
2191
+
2192
+ :where([data-kv-design-system]) [data-ui="pipeline-step-value"] {
2193
+ font-size: var(--kv-text-lg);
2194
+ }
2195
+ }
2196
+ }
2197
+
2198
+ @layer ket.app {
2199
+ /* Boards spend their space on the operational surface. Context, identity and
2200
+ global controls stay in compact horizontal bands; the specialised board
2201
+ owns its internal columns, timeline and scrolling behavior. */
2202
+ :where([data-kv-design-system]) [data-ui="board-page"] {
2203
+ display: grid;
2204
+ min-width: 0;
2205
+ background: var(--kv-page-bg);
2206
+ }
2207
+
2208
+ :where([data-kv-design-system]) [data-ui="board-page"][data-variant="operational"] {
2209
+ gap: 0;
2210
+ padding: 0;
2211
+ }
2212
+
2213
+ :where([data-kv-design-system])
2214
+ [data-ui="board-page"][data-variant="operational"]
2215
+ [data-ui="board-page-context"] {
2216
+ display: flex;
2217
+ min-width: 0;
2218
+ min-height: var(--kv-table-header-height);
2219
+ align-items: center;
2220
+ padding-inline: var(--kv-page-padding-x);
2221
+ border-bottom: 1px solid var(--kv-panel-divider);
2222
+ background: var(--kv-panel-bg);
2223
+ }
2224
+
2225
+ :where([data-kv-design-system]) [data-ui="board-page-header"] {
2226
+ display: grid;
2227
+ min-width: 0;
2228
+ padding: var(--kv-space-4) var(--kv-page-padding-x);
2229
+ border-bottom: 1px solid var(--kv-panel-divider);
2230
+ }
2231
+
2232
+ :where([data-kv-design-system])
2233
+ [data-ui="board-page"][data-variant="operational"]
2234
+ [data-ui="board-page-header"] {
2235
+ background: var(--kv-panel-bg);
2236
+ }
2237
+
2238
+ :where([data-kv-design-system]) [data-ui="board-page-heading"] {
2239
+ display: grid;
2240
+ min-width: 0;
2241
+ gap: var(--kv-space-1);
2242
+ }
2243
+
2244
+ :where([data-kv-design-system]) [data-ui="board-page-eyebrow"] {
2245
+ margin: 0;
2246
+ color: var(--kv-text-muted);
2247
+ font-size: var(--kv-text-2xs);
2248
+ font-weight: var(--kv-weight-semibold);
2249
+ letter-spacing: 0.07em;
2250
+ line-height: var(--kv-leading-normal);
2251
+ text-transform: uppercase;
2252
+ }
2253
+
2254
+ :where([data-kv-design-system]) [data-ui="board-page-title-row"] {
2255
+ display: grid;
2256
+ min-width: 0;
2257
+ grid-template-columns: minmax(0, 1fr) auto;
2258
+ align-items: center;
2259
+ gap: var(--kv-space-4);
2260
+ }
2261
+
2262
+ :where([data-kv-design-system]) [data-ui="board-page-title"] {
2263
+ margin: 0;
2264
+ overflow-wrap: anywhere;
2265
+ color: var(--kv-text-main);
2266
+ font-size: var(--kv-page-title-size);
2267
+ font-weight: var(--kv-weight-semibold);
2268
+ letter-spacing: -0.025em;
2269
+ line-height: var(--kv-leading-tight);
2270
+ }
2271
+
2272
+ :where([data-kv-design-system]) [data-ui="board-page-description"] {
2273
+ max-width: 56rem;
2274
+ margin: 0;
2275
+ color: var(--kv-text-muted);
2276
+ font-size: var(--kv-text-sm);
2277
+ line-height: var(--kv-leading-normal);
2278
+ }
2279
+
2280
+ :where([data-kv-design-system]) [data-ui="board-page-subline"] {
2281
+ display: flex;
2282
+ min-width: 0;
2283
+ flex-wrap: wrap;
2284
+ align-items: center;
2285
+ gap: var(--kv-space-2);
2286
+ }
2287
+
2288
+ :where([data-kv-design-system]) [data-ui="board-page-status"],
2289
+ :where([data-kv-design-system]) [data-ui="board-page-meta"] {
2290
+ color: var(--kv-text-muted);
2291
+ font-size: var(--kv-text-xs);
2292
+ font-variant-numeric: tabular-nums;
2293
+ }
2294
+
2295
+ :where([data-kv-design-system]) [data-ui="board-page-actions"] {
2296
+ display: flex;
2297
+ min-width: 0;
2298
+ flex-wrap: wrap;
2299
+ align-items: center;
2300
+ justify-content: flex-end;
2301
+ gap: var(--kv-space-2);
2302
+ }
2303
+
2304
+ :where([data-kv-design-system]) [data-ui="board-page-toolbar"] {
2305
+ display: flex;
2306
+ min-width: 0;
2307
+ align-items: center;
2308
+ padding: var(--kv-space-3) var(--kv-page-padding-x) var(--kv-space-2-5);
2309
+ border-bottom: 1px solid var(--kv-panel-divider);
2310
+ }
2311
+
2312
+ :where([data-kv-design-system]) [data-ui="board-page-controls"] {
2313
+ min-width: 0;
2314
+ flex: 1 1 auto;
2315
+ }
2316
+
2317
+ :where([data-kv-design-system]) [data-ui="board-page-body"] {
2318
+ display: grid;
2319
+ min-width: 0;
2320
+ gap: var(--kv-space-4);
2321
+ padding: var(--kv-space-4) var(--kv-page-padding-x) var(--kv-space-8);
2322
+ }
2323
+
2324
+ :where([data-kv-design-system]) [data-ui="board-page-body"] > [data-ui="stack"] {
2325
+ gap: var(--kv-space-4);
2326
+ }
2327
+
2328
+ @media (max-width: 42rem) {
2329
+ :where([data-kv-design-system])
2330
+ [data-ui="board-page"][data-variant="operational"]
2331
+ [data-ui="board-page-context"] {
2332
+ min-height: 2.75rem;
2333
+ padding-inline: var(--kv-space-4);
2334
+ }
2335
+
2336
+ :where([data-kv-design-system]) [data-ui="board-page-header"] {
2337
+ padding: var(--kv-space-4) var(--kv-space-4) var(--kv-space-3);
2338
+ }
2339
+
2340
+ :where([data-kv-design-system]) [data-ui="board-page-title-row"] {
2341
+ grid-template-columns: minmax(0, 1fr);
2342
+ align-items: stretch;
2343
+ gap: var(--kv-space-3);
2344
+ }
2345
+
2346
+ :where([data-kv-design-system]) [data-ui="board-page-title"] {
2347
+ font-size: var(--kv-text-lg);
2348
+ }
2349
+
2350
+ :where([data-kv-design-system]) [data-ui="board-page-actions"] {
2351
+ justify-content: flex-start;
2352
+ }
2353
+
2354
+ :where([data-kv-design-system]) [data-ui="board-page-toolbar"],
2355
+ :where([data-kv-design-system]) [data-ui="board-page-body"] {
2356
+ padding-inline: var(--kv-space-4);
2357
+ }
2358
+ }
2359
+ }
2360
+
2361
+ @layer ket.app {
2362
+ /* Dashboards are working canvases, not records. Their context and identity use
2363
+ the same quiet bands as lists and forms; KPI, workflow and analytical blocks
2364
+ then share one uninterrupted canvas below. */
2365
+ :where([data-kv-design-system]) [data-ui="dashboard-page"] {
2366
+ display: grid;
2367
+ min-width: 0;
2368
+ background: var(--kv-page-bg);
2369
+ }
2370
+
2371
+ :where([data-kv-design-system]) [data-ui="dashboard-page"][data-variant="operational"] {
2372
+ gap: 0;
2373
+ padding: 0 0 var(--kv-space-10);
2374
+ }
2375
+
2376
+ :where([data-kv-design-system])
2377
+ [data-ui="dashboard-page"][data-variant="operational"]
2378
+ [data-ui="dashboard-page-context"] {
2379
+ display: flex;
2380
+ min-width: 0;
2381
+ min-height: var(--kv-table-header-height);
2382
+ align-items: center;
2383
+ padding-inline: var(--kv-page-padding-x);
2384
+ border-bottom: 1px solid var(--kv-panel-divider);
2385
+ background: var(--kv-panel-bg);
2386
+ }
2387
+
2388
+ :where([data-kv-design-system]) [data-ui="dashboard-page-header"] {
2389
+ display: grid;
2390
+ min-width: 0;
2391
+ padding: var(--kv-space-4) var(--kv-page-padding-x);
2392
+ border-bottom: 1px solid var(--kv-panel-divider);
2393
+ }
2394
+
2395
+ :where([data-kv-design-system])
2396
+ [data-ui="dashboard-page"][data-variant="operational"]
2397
+ [data-ui="dashboard-page-header"] {
2398
+ background: var(--kv-panel-bg);
2399
+ }
2400
+
2401
+ :where([data-kv-design-system]) [data-ui="dashboard-page-heading"] {
2402
+ display: grid;
2403
+ min-width: 0;
2404
+ gap: var(--kv-space-1);
2405
+ }
2406
+
2407
+ :where([data-kv-design-system]) [data-ui="dashboard-page-eyebrow"] {
2408
+ margin: 0;
2409
+ color: var(--kv-text-muted);
2410
+ font-size: var(--kv-text-2xs);
2411
+ font-weight: var(--kv-weight-semibold);
2412
+ letter-spacing: 0.07em;
2413
+ line-height: var(--kv-leading-normal);
2414
+ text-transform: uppercase;
2415
+ }
2416
+
2417
+ :where([data-kv-design-system]) [data-ui="dashboard-page-title-row"] {
2418
+ display: grid;
2419
+ min-width: 0;
2420
+ grid-template-columns: minmax(0, 1fr) auto;
2421
+ align-items: center;
2422
+ gap: var(--kv-space-4);
2423
+ }
2424
+
2425
+ :where([data-kv-design-system]) [data-ui="dashboard-page-title"] {
2426
+ margin: 0;
2427
+ overflow-wrap: anywhere;
2428
+ color: var(--kv-text-main);
2429
+ font-size: var(--kv-page-title-size);
2430
+ font-weight: var(--kv-weight-semibold);
2431
+ letter-spacing: -0.025em;
2432
+ line-height: var(--kv-leading-tight);
2433
+ }
2434
+
2435
+ :where([data-kv-design-system]) [data-ui="dashboard-page-description"] {
2436
+ max-width: 56rem;
2437
+ margin: 0;
2438
+ color: var(--kv-text-muted);
2439
+ font-size: var(--kv-text-sm);
2440
+ line-height: var(--kv-leading-normal);
2441
+ }
2442
+
2443
+ :where([data-kv-design-system]) [data-ui="dashboard-page-subline"] {
2444
+ display: flex;
2445
+ min-width: 0;
2446
+ flex-wrap: wrap;
2447
+ align-items: center;
2448
+ gap: var(--kv-space-2);
2449
+ }
2450
+
2451
+ :where([data-kv-design-system]) [data-ui="dashboard-page-status"],
2452
+ :where([data-kv-design-system]) [data-ui="dashboard-page-meta"] {
2453
+ color: var(--kv-text-muted);
2454
+ font-size: var(--kv-text-xs);
2455
+ font-variant-numeric: tabular-nums;
2456
+ }
2457
+
2458
+ :where([data-kv-design-system]) [data-ui="dashboard-page-actions"] {
2459
+ display: flex;
2460
+ min-width: 0;
2461
+ flex-wrap: wrap;
2462
+ align-items: center;
2463
+ justify-content: flex-end;
2464
+ gap: var(--kv-space-2);
2465
+ }
2466
+
2467
+ :where([data-kv-design-system]) [data-ui="dashboard-page-body"] {
2468
+ display: grid;
2469
+ min-width: 0;
2470
+ gap: var(--kv-space-6);
2471
+ padding: var(--kv-space-5) var(--kv-page-padding-x) var(--kv-space-10);
2472
+ }
2473
+
2474
+ :where([data-kv-design-system]) [data-ui="dashboard-page-body"] > [data-ui="stack"] {
2475
+ gap: var(--kv-space-6);
2476
+ }
2477
+
2478
+ @media (max-width: 42rem) {
2479
+ :where([data-kv-design-system]) [data-ui="dashboard-page"][data-variant="operational"] {
2480
+ padding-bottom: var(--kv-space-8);
2481
+ }
2482
+
2483
+ :where([data-kv-design-system])
2484
+ [data-ui="dashboard-page"][data-variant="operational"]
2485
+ [data-ui="dashboard-page-context"] {
2486
+ min-height: 2.75rem;
2487
+ padding-inline: var(--kv-space-4);
2488
+ }
2489
+
2490
+ :where([data-kv-design-system]) [data-ui="dashboard-page-header"] {
2491
+ padding: var(--kv-space-4) var(--kv-space-4) var(--kv-space-3);
2492
+ }
2493
+
2494
+ :where([data-kv-design-system]) [data-ui="dashboard-page-title-row"] {
2495
+ grid-template-columns: minmax(0, 1fr);
2496
+ align-items: stretch;
2497
+ gap: var(--kv-space-3);
2498
+ }
2499
+
2500
+ :where([data-kv-design-system]) [data-ui="dashboard-page-title"] {
2501
+ font-size: var(--kv-text-lg);
2502
+ }
2503
+
2504
+ :where([data-kv-design-system]) [data-ui="dashboard-page-actions"] {
2505
+ justify-content: flex-start;
2506
+ }
2507
+
2508
+ :where([data-kv-design-system]) [data-ui="dashboard-page-actions"] > [data-ui="inline"] {
2509
+ width: 100%;
2510
+ }
2511
+
2512
+ :where([data-kv-design-system])
2513
+ [data-ui="dashboard-page-actions"]
2514
+ [data-ui="action"][data-variant="primary"] {
2515
+ min-height: 2.75rem;
2516
+ flex: 1 1 auto;
2517
+ }
2518
+
2519
+ :where([data-kv-design-system]) [data-ui="dashboard-page-body"] {
2520
+ padding: var(--kv-space-4) var(--kv-space-4) var(--kv-space-8);
2521
+ }
2522
+ }
2523
+ }
2524
+
2525
+ @layer ket.app {
2526
+ /* Operational forms read like one working sheet: identity and the primary
2527
+ decision stay together, sections use rhythm instead of card nesting, and
2528
+ durable context occupies a quiet rail when there is room. */
2529
+ :where([data-kv-design-system]) [data-ui="form-page"] {
2530
+ display: grid;
2531
+ min-width: 0;
2532
+ background: var(--kv-page-bg);
2533
+ }
2534
+
2535
+ /* Operational forms share the same quiet location band as collections. The
2536
+ form title remains compact: business fields, not chrome, own the viewport. */
2537
+ :where([data-kv-design-system]) [data-ui="form-page"][data-variant="operational"] {
2538
+ gap: 0;
2539
+ padding: 0 0 var(--kv-space-10);
2540
+ }
2541
+
2542
+ :where([data-kv-design-system])
2543
+ [data-ui="form-page"][data-variant="operational"]
2544
+ [data-ui="form-page-context"] {
2545
+ display: flex;
2546
+ min-width: 0;
2547
+ min-height: var(--kv-table-header-height);
2548
+ align-items: center;
2549
+ padding-inline: var(--kv-page-padding-x);
2550
+ border-bottom: 1px solid var(--kv-panel-divider);
2551
+ background: var(--kv-panel-bg);
2552
+ }
2553
+
2554
+ :where([data-kv-design-system]) [data-ui="form-page-header"] {
2555
+ display: grid;
2556
+ min-width: 0;
2557
+ gap: var(--kv-space-2);
2558
+ padding: var(--kv-space-4) var(--kv-page-padding-x);
2559
+ border-bottom: 1px solid var(--kv-panel-divider);
2560
+ }
2561
+
2562
+ :where([data-kv-design-system])
2563
+ [data-ui="form-page"][data-variant="operational"]
2564
+ [data-ui="form-page-header"] {
2565
+ background: var(--kv-panel-bg);
2566
+ }
2567
+
2568
+ :where([data-kv-design-system]) [data-ui="form-page-title-row"] {
2569
+ display: grid;
2570
+ min-width: 0;
2571
+ grid-template-columns: minmax(0, 1fr) auto;
2572
+ align-items: center;
2573
+ gap: var(--kv-space-4);
2574
+ }
2575
+
2576
+ :where([data-kv-design-system]) [data-ui="form-page-heading"] {
2577
+ display: grid;
2578
+ min-width: 0;
2579
+ gap: var(--kv-space-1);
2580
+ }
2581
+
2582
+ :where([data-kv-design-system]) [data-ui="form-page-title"] {
2583
+ margin: 0;
2584
+ overflow-wrap: anywhere;
2585
+ color: var(--kv-text-main);
2586
+ font-size: var(--kv-page-title-size);
2587
+ font-weight: var(--kv-weight-semibold);
2588
+ letter-spacing: -0.025em;
2589
+ line-height: var(--kv-leading-tight);
2590
+ }
2591
+
2592
+ :where([data-kv-design-system]) [data-ui="form-page-status"] {
2593
+ display: inline-flex;
2594
+ flex: 0 0 auto;
2595
+ align-items: center;
2596
+ }
2597
+
2598
+ :where([data-kv-design-system]) [data-ui="form-page-subline"] {
2599
+ display: flex;
2600
+ min-width: 0;
2601
+ flex-wrap: wrap;
2602
+ align-items: center;
2603
+ gap: var(--kv-space-2);
2604
+ }
2605
+
2606
+ :where([data-kv-design-system]) [data-ui="form-page-description"] {
2607
+ max-width: 48rem;
2608
+ margin: 0;
2609
+ color: var(--kv-text-muted);
2610
+ font-size: var(--kv-text-sm);
2611
+ line-height: var(--kv-leading-normal);
2612
+ }
2613
+
2614
+ :where([data-kv-design-system]) [data-ui="form-page-actions"] {
2615
+ display: flex;
2616
+ min-width: 0;
2617
+ flex-wrap: wrap;
2618
+ align-items: center;
2619
+ justify-content: flex-end;
2620
+ gap: var(--kv-space-2);
2621
+ }
2622
+
2623
+ :where([data-kv-design-system]) [data-ui="form-page-meta"] {
2624
+ min-width: 0;
2625
+ }
2626
+
2627
+ :where([data-kv-design-system]) [data-ui="form-page-controller"] {
2628
+ min-width: 0;
2629
+ padding-inline: var(--kv-page-padding-x);
2630
+ }
2631
+
2632
+ :where([data-kv-design-system]) [data-ui="form-page-controller"]:empty {
2633
+ display: none;
2634
+ }
2635
+
2636
+ :where([data-kv-design-system]) [data-ui="form-page-navigation"] {
2637
+ min-width: 0;
2638
+ padding-inline: var(--kv-page-padding-x);
2639
+ border-bottom: 1px solid var(--kv-panel-divider);
2640
+ }
2641
+
2642
+ :where([data-kv-design-system]) [data-ui="form-page-layout"] {
2643
+ display: grid;
2644
+ min-width: 0;
2645
+ grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
2646
+ align-items: start;
2647
+ }
2648
+
2649
+ :where([data-kv-design-system]) [data-ui="form-page"][data-has-aside="false"] [data-ui="form-page-layout"] {
2650
+ grid-template-columns: minmax(0, 56rem);
2651
+ }
2652
+
2653
+ :where([data-kv-design-system]) [data-ui="form-page-body"] {
2654
+ display: grid;
2655
+ min-width: 0;
2656
+ gap: var(--kv-space-6);
2657
+ padding: var(--kv-space-5) var(--kv-page-padding-x) var(--kv-space-10);
2658
+ }
2659
+
2660
+ :where([data-kv-design-system]) [data-ui="form-page-body"] > [data-ui="stack"] {
2661
+ gap: 0;
2662
+ }
2663
+
2664
+ :where([data-kv-design-system]) [data-ui="form-page-body"] [data-ui="section-head"] {
2665
+ align-items: flex-start;
2666
+ padding-bottom: 0;
2667
+ border-bottom: 0;
2668
+ }
2669
+
2670
+ :where([data-kv-design-system]) [data-ui="form-page-body"] > [data-ui="stack"] > [data-ui="section"] {
2671
+ padding-block: var(--kv-space-5);
2672
+ border-bottom: 1px solid var(--kv-panel-divider);
2673
+ }
2674
+
2675
+ :where([data-kv-design-system])
2676
+ [data-ui="form-page-body"]
2677
+ > [data-ui="stack"]
2678
+ > [data-ui="section"]:first-child {
2679
+ padding-block-start: 0;
2680
+ }
2681
+
2682
+ :where([data-kv-design-system]) [data-ui="form-page-body"] [data-ui="surface"] {
2683
+ border: 0;
2684
+ background: transparent;
2685
+ box-shadow: none;
2686
+ }
2687
+
2688
+ :where([data-kv-design-system]) [data-ui="form-page-body"] [data-ui="section-body"] > [data-ui="surface"] {
2689
+ padding: 0;
2690
+ }
2691
+
2692
+ :where([data-kv-design-system]) [data-ui="form-page-aside"] {
2693
+ position: sticky;
2694
+ top: 0;
2695
+ display: grid;
2696
+ min-width: 0;
2697
+ max-height: 100dvh;
2698
+ align-content: start;
2699
+ padding: var(--kv-space-5) var(--kv-page-padding-x) var(--kv-space-10) var(--kv-space-5);
2700
+ overflow-y: auto;
2701
+ border-left: 1px solid var(--kv-panel-divider);
2702
+ background: var(--kv-panel-bg-subtle);
2703
+ }
2704
+
2705
+ /* Record forms use the compact ERP label/value rhythm while there is enough
2706
+ room. Below 768 px the form becomes conventional vertical fields so labels
2707
+ and controls never compete for the same narrow row. */
2708
+ :where([data-kv-design-system])
2709
+ [data-ui="form-page"]
2710
+ [data-ui="record-form"]
2711
+ [data-ui="field"]:not([data-kind="checkbox"]) {
2712
+ grid-template-columns: minmax(7rem, 9rem) minmax(0, 1fr);
2713
+ align-items: center;
2714
+ column-gap: var(--kv-space-3);
2715
+ }
2716
+
2717
+ :where([data-kv-design-system])
2718
+ [data-ui="form-page"]
2719
+ [data-ui="record-form"]
2720
+ [data-ui="field"]:not([data-kind="checkbox"])
2721
+ > [data-ui="field-label"] {
2722
+ grid-column: 1;
2723
+ }
2724
+
2725
+ :where([data-kv-design-system])
2726
+ [data-ui="form-page"]
2727
+ [data-ui="record-form"]
2728
+ [data-ui="field"]:not([data-kind="checkbox"])
2729
+ > :is(
2730
+ [data-ui="field-control"],
2731
+ [data-ui="field-options"],
2732
+ [data-ui="field-help"],
2733
+ [data-ui="field-error"]
2734
+ ) {
2735
+ grid-column: 2;
2736
+ }
2737
+
2738
+ @media (max-width: 89.9375rem) {
2739
+ :where([data-kv-design-system])
2740
+ [data-ui="form-page"]
2741
+ [data-ui="record-form"]
2742
+ [data-ui="field"]:not([data-kind="checkbox"]) {
2743
+ grid-template-columns: minmax(6.5rem, 7.5rem) minmax(0, 1fr);
2744
+ column-gap: var(--kv-space-2);
2745
+ }
2746
+ }
2747
+
2748
+ @media (max-width: 63.9375rem) {
2749
+ :where([data-kv-design-system]) [data-ui="form-page-layout"] {
2750
+ grid-template-columns: minmax(0, 1fr);
2751
+ row-gap: var(--kv-space-5);
2752
+ }
2753
+
2754
+ :where([data-kv-design-system]) [data-ui="form-page-aside"] {
2755
+ position: static;
2756
+ max-height: none;
2757
+ padding-top: var(--kv-space-5);
2758
+ overflow: visible;
2759
+ border-top: 1px solid var(--kv-panel-divider);
2760
+ border-left: 0;
2761
+ }
2762
+ }
2763
+
2764
+ @media (max-width: 47.9375rem) {
2765
+ :where([data-kv-design-system])
2766
+ [data-ui="form-page"]
2767
+ [data-ui="record-form"]
2768
+ [data-ui="field"]:not([data-kind="checkbox"]) {
2769
+ grid-template-columns: minmax(0, 1fr);
2770
+ align-items: stretch;
2771
+ }
2772
+
2773
+ :where([data-kv-design-system])
2774
+ [data-ui="form-page"]
2775
+ [data-ui="record-form"]
2776
+ [data-ui="field"]:not([data-kind="checkbox"])
2777
+ > :is(
2778
+ [data-ui="field-label"],
2779
+ [data-ui="field-control"],
2780
+ [data-ui="field-options"],
2781
+ [data-ui="field-help"],
2782
+ [data-ui="field-error"]
2783
+ ) {
2784
+ grid-column: 1;
2785
+ }
2786
+ }
2787
+
2788
+ @media (max-width: 42rem) {
2789
+ :where([data-kv-design-system]) [data-ui="form-page"][data-variant="operational"] {
2790
+ padding-bottom: var(--kv-space-8);
2791
+ }
2792
+
2793
+ :where([data-kv-design-system])
2794
+ [data-ui="form-page"][data-variant="operational"]
2795
+ [data-ui="form-page-context"] {
2796
+ min-height: 2.75rem;
2797
+ padding-inline: var(--kv-space-4);
2798
+ }
2799
+
2800
+ :where([data-kv-design-system]) [data-ui="form-page-header"] {
2801
+ padding: var(--kv-space-4) var(--kv-space-4) var(--kv-space-3);
2802
+ }
2803
+
2804
+ :where([data-kv-design-system]) [data-ui="form-page-title-row"] {
2805
+ grid-template-columns: minmax(0, 1fr);
2806
+ align-items: stretch;
2807
+ gap: var(--kv-space-3);
2808
+ }
2809
+
2810
+ :where([data-kv-design-system]) [data-ui="form-page-title"] {
2811
+ font-size: var(--kv-text-lg);
2812
+ }
2813
+
2814
+ :where([data-kv-design-system]) [data-ui="form-page-actions"] {
2815
+ justify-content: flex-start;
2816
+ }
2817
+
2818
+ :where([data-kv-design-system])
2819
+ [data-ui="form-page-actions"]
2820
+ > :is([data-ui="action-group"], [data-ui="form-cluster"]) {
2821
+ width: 100%;
2822
+ }
2823
+
2824
+ :where([data-kv-design-system]) [data-ui="form-page-meta"] {
2825
+ padding-left: 0;
2826
+ }
2827
+
2828
+ :where([data-kv-design-system]) [data-ui="form-page-navigation"] {
2829
+ padding-inline: var(--kv-space-4);
2830
+ }
2831
+
2832
+ :where([data-kv-design-system]) [data-ui="form-page-body"],
2833
+ :where([data-kv-design-system]) [data-ui="form-page-aside"],
2834
+ :where([data-kv-design-system]) [data-ui="form-page-controller"] {
2835
+ padding-inline: var(--kv-space-4);
2836
+ }
2837
+ }
2838
+ }