@threadlabs/looma 0.7.4 → 0.8.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 (40) hide show
  1. package/components/ui-avatar/ui-avatar.html +1 -1
  2. package/components/ui-avatar-group/ui-avatar-group.html +1 -1
  3. package/components/ui-button/ui-button.html +2 -2
  4. package/components/ui-combobox/ui-combobox.html +1 -1
  5. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +1 -1
  6. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +1 -1
  7. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +1 -1
  8. package/components/ui-form-field/ui-form-field.html +3 -3
  9. package/components/ui-tree-item/ui-tree-item.html +1 -1
  10. package/dist/index.js +1 -1
  11. package/package.json +1 -1
  12. package/styles/ui-avatar-group.css +1 -1
  13. package/styles/ui-avatar.css +1 -1
  14. package/styles/ui-button.css +2 -2
  15. package/styles/ui-combobox.css +1 -1
  16. package/styles/ui-editor-slash-menu.css +1 -1
  17. package/styles/ui-editor-table-context-menu.css +1 -1
  18. package/styles/ui-editor-table-toolbar.css +1 -1
  19. package/styles/ui-form-field.css +3 -3
  20. package/styles/ui-tree-item.css +1 -1
  21. package/tokens.css +2 -3
  22. package/vue/UiAvatar.vue +1 -1
  23. package/vue/UiAvatarGroup.vue +1 -1
  24. package/vue/UiButton.vue +2 -2
  25. package/vue/UiCombobox.vue +1 -1
  26. package/vue/UiEditorSlashMenu.vue +1 -1
  27. package/vue/UiEditorTableContextMenu.vue +1 -1
  28. package/vue/UiEditorTableToolbar.vue +1 -1
  29. package/vue/UiFormField.vue +3 -3
  30. package/vue/UiTreeItem.vue +1 -1
  31. package/vue/chunks/UiAvatar.js +1 -1
  32. package/vue/chunks/UiAvatarGroup.js +1 -1
  33. package/vue/chunks/UiButton.js +1 -1
  34. package/vue/chunks/UiCombobox.js +1 -1
  35. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  36. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  37. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  38. package/vue/chunks/UiFormField.js +1 -1
  39. package/vue/chunks/UiTreeItem.js +1 -1
  40. package/vue/components.css +228 -228
@@ -12,7 +12,7 @@
12
12
  display: none;
13
13
  }
14
14
 
15
- [data-component~="ui-avatar"][data-v-64e52bdd] {
15
+ [data-component~="ui-avatar"][data-v-eb16b513] {
16
16
  display: inline-grid;
17
17
  place-items: center;
18
18
  overflow: hidden;
@@ -23,17 +23,17 @@
23
23
  background: var(--ui-avatar-surface, var(--ui-accent-soft));
24
24
  color: var(--ui-avatar-text, var(--ui-accent-solid));
25
25
  font: inherit;
26
- font-size: 0.875rem;
26
+ font-size: var(--ui-font-size-sm);
27
27
  font-weight: 600;
28
28
  text-transform: uppercase;
29
29
  }
30
- .image[data-v-64e52bdd],img[data-v-64e52bdd-s] {
30
+ .image[data-v-eb16b513],img[data-v-eb16b513-s] {
31
31
  grid-area: 1 / 1;
32
32
  inline-size: 100%;
33
33
  block-size: 100%;
34
34
  object-fit: cover;
35
35
  }
36
- .fallback[data-v-64e52bdd] {
36
+ .fallback[data-v-eb16b513] {
37
37
  grid-area: 1 / 1;
38
38
  display: inline-flex;
39
39
  align-items: center;
@@ -46,7 +46,7 @@
46
46
  /* Centre the glyphs, not the line box: a label without descenders otherwise reads high.
47
47
  * Trimming applies to block containers, so the box is a block with centred content. */
48
48
  @supports (text-box-trim: trim-both) {
49
- .fallback[data-v-64e52bdd] {
49
+ .fallback[data-v-eb16b513] {
50
50
  display: block;
51
51
  text-align: center;
52
52
  align-content: center;
@@ -54,16 +54,16 @@
54
54
  text-box-edge: cap alphabetic;
55
55
  }
56
56
  }
57
- [hidden][data-v-64e52bdd] {
57
+ [hidden][data-v-eb16b513] {
58
58
  display: none;
59
59
  }
60
60
 
61
61
  /* A component that sets its display still honours the hidden attribute on its root. */
62
- [data-component~="ui-avatar"][hidden][data-v-64e52bdd] {
62
+ [data-component~="ui-avatar"][hidden][data-v-eb16b513] {
63
63
  display: none;
64
64
  }
65
65
 
66
- [data-component~="ui-avatar-group"][data-v-cbb93f58] {
66
+ [data-component~="ui-avatar-group"][data-v-9e8e1291] {
67
67
  /* Avatars separate with a tight, crisp edge, matching Looma's 1px borders rather than the
68
68
  * diffuse elevation overlays use. */
69
69
  --_overlap-shadow: -2px 0 2px -1px rgba(0, 0, 0, 0.22);
@@ -77,15 +77,15 @@
77
77
 
78
78
  /* Overlap and the separating shadow are applied by the controller: slotted avatars are nested
79
79
  * component roots outside this style scope. */
80
- [data-v-cbb93f58-s] {
80
+ [data-v-9e8e1291-s] {
81
81
  margin-inline-start: -0.625rem;
82
82
  flex-shrink: 0;
83
83
  border-radius: 999px;
84
84
  }
85
- [data-v-cbb93f58-s]:first-child {
85
+ [data-v-9e8e1291-s]:first-child {
86
86
  margin-inline-start: 0;
87
87
  }
88
- .overflow[data-v-cbb93f58] {
88
+ .overflow[data-v-9e8e1291] {
89
89
  margin-inline-start: -0.625rem;
90
90
  display: inline-flex;
91
91
  align-items: center;
@@ -100,16 +100,16 @@
100
100
  var(--ui-avatar-group-overlap-shadow, var(--_overlap-shadow)),
101
101
  var(--ui-avatar-group-edge-ring, var(--_edge-ring));
102
102
  font: inherit;
103
- font-size: 0.75rem;
103
+ font-size: var(--ui-font-size-xs);
104
104
  font-weight: 600;
105
105
  flex-shrink: 0;
106
106
  }
107
- .overflow[hidden][data-v-cbb93f58] {
107
+ .overflow[hidden][data-v-9e8e1291] {
108
108
  display: none;
109
109
  }
110
110
 
111
111
  /* A component that sets its display still honours the hidden attribute on its root. */
112
- [data-component~="ui-avatar-group"][hidden][data-v-cbb93f58] {
112
+ [data-component~="ui-avatar-group"][hidden][data-v-9e8e1291] {
113
113
  display: none;
114
114
  }
115
115
 
@@ -229,7 +229,7 @@
229
229
  display: none;
230
230
  }
231
231
 
232
- [data-component~="ui-button"][data-v-852dd10e] {
232
+ [data-component~="ui-button"][data-v-1cd0b390] {
233
233
  --_hue: var(--ui-accent);
234
234
  --_hue-hover: var(--ui-accent-hover);
235
235
  --_hue-active: var(--ui-accent-active);
@@ -248,15 +248,15 @@
248
248
  vertical-align: middle;
249
249
  color: var(--_tone-text);
250
250
  }
251
- [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-852dd10e] {
251
+ [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-1cd0b390] {
252
252
  justify-content: flex-start;
253
253
  text-align: start;
254
254
  }
255
- [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-852dd10e] {
255
+ [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-1cd0b390] {
256
256
  display: flex;
257
257
  inline-size: 100%;
258
258
  }
259
- [data-component~="ui-button"][data-v-852dd10e] {
259
+ [data-component~="ui-button"][data-v-1cd0b390] {
260
260
  appearance: none;
261
261
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
262
262
  border-style: solid;
@@ -281,47 +281,47 @@
281
281
  margin: 0;
282
282
  }
283
283
  @supports (text-box-trim: trim-both) {
284
- [data-component~="ui-button"][data-v-852dd10e] {
284
+ [data-component~="ui-button"][data-v-1cd0b390] {
285
285
  text-box-trim: trim-both;
286
286
  text-box-edge: cap alphabetic;
287
287
  }
288
288
  }
289
- [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-852dd10e] {
289
+ [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-1cd0b390] {
290
290
  min-block-size: var(--ui-control-size-sm);
291
291
  padding: var(--ui-space-1) var(--ui-space-2);
292
- font-size: 0.875rem;
292
+ font-size: var(--ui-font-size-sm);
293
293
  }
294
- [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-852dd10e] {
294
+ [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-1cd0b390] {
295
295
  min-block-size: var(--ui-control-size-lg);
296
296
  padding: var(--ui-space-3) var(--ui-space-4);
297
- font-size: 1rem;
297
+ font-size: var(--ui-font-size-md);
298
298
  }
299
299
 
300
300
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
301
301
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
302
- [data-component~="ui-button"][data-v-852dd10e]:hover:not(:disabled, [aria-disabled="true"]) {
302
+ [data-component~="ui-button"][data-v-1cd0b390]:hover:not(:disabled, [aria-disabled="true"]) {
303
303
  border-color: var(--ui-button-hover-border, var(--_tone-hover));
304
304
  background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
305
305
  }
306
306
 
307
307
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
308
- [data-component~="ui-button"][data-v-852dd10e]:active:not(:disabled, [aria-disabled="true"]) {
308
+ [data-component~="ui-button"][data-v-1cd0b390]:active:not(:disabled, [aria-disabled="true"]) {
309
309
  background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
310
310
  background-image: none;
311
311
  box-shadow: var(--ui-pressed);
312
312
  }
313
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-852dd10e],
314
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-852dd10e] {
313
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-1cd0b390],
314
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-1cd0b390] {
315
315
  border-color: var(--_tone);
316
316
  background-color: var(--_tone);
317
317
  color: var(--_on-tone);
318
318
  box-shadow: var(--ui-button-solid-shadow, var(--ui-raised));
319
319
  }
320
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-852dd10e], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-852dd10e]):hover:not(:disabled, [aria-disabled="true"]) {
320
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-1cd0b390], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-1cd0b390]):hover:not(:disabled, [aria-disabled="true"]) {
321
321
  background-color: var(--_tone-hover);
322
322
  border-color: var(--_tone-hover);
323
323
  }
324
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-852dd10e], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-852dd10e]):active:not(:disabled, [aria-disabled="true"]) {
324
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-1cd0b390], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-1cd0b390]):active:not(:disabled, [aria-disabled="true"]) {
325
325
  background-color: var(--_tone-active);
326
326
  border-color: var(--_tone-active);
327
327
  background-image: none;
@@ -330,43 +330,43 @@
330
330
 
331
331
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
332
332
  destructive secondary action, not a special case. */
333
- [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-852dd10e] {
333
+ [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-1cd0b390] {
334
334
  --_hue: var(--ui-text);
335
335
  --_hue-hover: var(--ui-text);
336
336
  --_hue-active: var(--ui-text);
337
337
  --_hue-text: var(--ui-text);
338
338
  --_on-hue: var(--ui-surface);
339
339
  }
340
- [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-852dd10e],
341
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-852dd10e] {
340
+ [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-1cd0b390],
341
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-1cd0b390] {
342
342
  --_hue: var(--ui-danger);
343
343
  --_hue-hover: var(--ui-danger-hover);
344
344
  --_hue-active: var(--ui-danger-hover);
345
345
  --_hue-text: var(--ui-danger-hover);
346
346
  --_on-hue: var(--ui-on-danger);
347
347
  }
348
- [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-852dd10e] {
348
+ [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-1cd0b390] {
349
349
  --_hue: var(--ui-success);
350
350
  --_hue-hover: color-mix(in srgb, var(--ui-success) 85%, #000);
351
351
  --_hue-active: color-mix(in srgb, var(--ui-success) 75%, #000);
352
352
  --_hue-text: color-mix(in srgb, var(--ui-success) 85%, #000);
353
353
  --_on-hue: var(--ui-surface);
354
354
  }
355
- [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-852dd10e] {
355
+ [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-1cd0b390] {
356
356
  --_hue: var(--ui-warning);
357
357
  --_hue-hover: color-mix(in srgb, var(--ui-warning) 85%, #000);
358
358
  --_hue-active: color-mix(in srgb, var(--ui-warning) 75%, #000);
359
359
  --_hue-text: color-mix(in srgb, var(--ui-warning) 85%, #000);
360
360
  --_on-hue: var(--ui-surface);
361
361
  }
362
- [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-852dd10e] {
362
+ [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-1cd0b390] {
363
363
  --_hue: var(--ui-info);
364
364
  --_hue-hover: color-mix(in srgb, var(--ui-info) 85%, #000);
365
365
  --_hue-active: color-mix(in srgb, var(--ui-info) 75%, #000);
366
366
  --_hue-text: color-mix(in srgb, var(--ui-info) 85%, #000);
367
367
  --_on-hue: var(--ui-surface);
368
368
  }
369
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-852dd10e] {
369
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-1cd0b390] {
370
370
  border-color: transparent;
371
371
  background: transparent;
372
372
  box-shadow: none;
@@ -374,24 +374,24 @@
374
374
  }
375
375
 
376
376
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
377
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-852dd10e]:hover:not(:disabled, [aria-disabled="true"]) {
377
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-1cd0b390]:hover:not(:disabled, [aria-disabled="true"]) {
378
378
  background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
379
379
  border-color: transparent;
380
380
  }
381
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-852dd10e]:active:not(:disabled, [aria-disabled="true"]) {
381
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-1cd0b390]:active:not(:disabled, [aria-disabled="true"]) {
382
382
  background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 16%));
383
383
  border-color: transparent;
384
384
  box-shadow: var(--ui-pressed);
385
385
  }
386
386
 
387
387
  /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
388
- [data-component~="ui-button"][data-v-852dd10e]:focus-visible {
388
+ [data-component~="ui-button"][data-v-1cd0b390]:focus-visible {
389
389
  outline: none;
390
390
  box-shadow:
391
391
  var(--ui-button-shadow, var(--ui-raised)),
392
392
  var(--ui-focus-halo);
393
393
  }
394
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-852dd10e]:focus-visible {
394
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-1cd0b390]:focus-visible {
395
395
  box-shadow:
396
396
  var(--ui-button-solid-shadow, var(--ui-raised)),
397
397
  var(--ui-focus-halo);
@@ -401,7 +401,7 @@
401
401
  disabled outline is still an outline and a disabled ghost still has no edge. Intent goes — an
402
402
  unavailable action says "unavailable", not "unavailable, and destructive" — and so do the
403
403
  highlight and shadow, because nothing that cannot be pressed should look raised. */
404
- [data-component~="ui-button"][data-v-852dd10e]:is(:disabled, [aria-disabled="true"]) {
404
+ [data-component~="ui-button"][data-v-1cd0b390]:is(:disabled, [aria-disabled="true"]) {
405
405
  /* Derived from the tone itself, not from a separate disabled palette: faded toward the
406
406
  page, which desaturates it at the same time. Toward the page rather than toward white,
407
407
  so a dark theme dims where a light one lightens — the same rule, both schemes. */
@@ -418,7 +418,7 @@
418
418
  }
419
419
 
420
420
  /* A filled button keeps its fill, faded further so its text stays legible on it. */
421
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-852dd10e], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-852dd10e]):is(:disabled, [aria-disabled="true"]) {
421
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-1cd0b390], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-1cd0b390]):is(:disabled, [aria-disabled="true"]) {
422
422
  --_tone: color-mix(in oklab, var(--_hue) 34%, var(--ui-surface));
423
423
  }
424
424
 
@@ -426,19 +426,19 @@
426
426
  it takes a surface rather than reading as plain text. The surface is a wash of the faded tone,
427
427
  the way hover washes the live one, so it stays light in every tone. An opaque mix toward the
428
428
  hue came out a mid-grey slab for neutral, whose hue is the ink: louder than the enabled button. */
429
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-852dd10e]:is(:disabled, [aria-disabled="true"]) {
429
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-1cd0b390]:is(:disabled, [aria-disabled="true"]) {
430
430
  background-color: oklch(from var(--_tone) l c h / 14%);
431
431
  border-color: transparent;
432
432
  }
433
433
  @media (pointer: coarse) {
434
- [data-component~="ui-button"][data-v-852dd10e] {
434
+ [data-component~="ui-button"][data-v-1cd0b390] {
435
435
  min-block-size: var(--ui-control-min-block-size);
436
436
  }
437
437
  }
438
438
 
439
439
  /* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
440
440
  WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
441
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-852dd10e] {
441
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-1cd0b390] {
442
442
  display: inline;
443
443
  min-block-size: 0;
444
444
  padding: 0;
@@ -456,22 +456,22 @@
456
456
  color var(--ui-motion-fast) var(--ui-motion-ease),
457
457
  text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
458
458
  }
459
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-852dd10e]:hover:not(:disabled, [aria-disabled="true"]) {
459
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-1cd0b390]:hover:not(:disabled, [aria-disabled="true"]) {
460
460
  color: var(--ui-button-link-hover-text, var(--ui-text-primary));
461
461
  text-decoration-color: currentColor;
462
462
  background: none;
463
463
  transform: none;
464
464
  }
465
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-852dd10e]:active:not(:disabled, [aria-disabled="true"]) {
465
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-1cd0b390]:active:not(:disabled, [aria-disabled="true"]) {
466
466
  background: none;
467
467
  transform: none;
468
468
  }
469
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-852dd10e]:is(:disabled, [aria-disabled="true"]) {
469
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-1cd0b390]:is(:disabled, [aria-disabled="true"]) {
470
470
  background: none;
471
471
  border-color: transparent;
472
472
  color: var(--ui-button-disabled-text, var(--ui-disabled-text));
473
473
  }
474
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-852dd10e]:focus-visible {
474
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-1cd0b390]:focus-visible {
475
475
  box-shadow: none;
476
476
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
477
477
  outline: 2px solid var(--ui-focus-ring);
@@ -479,7 +479,7 @@
479
479
  }
480
480
 
481
481
  /* A component that sets its display still honours the hidden attribute on its root. */
482
- [data-component~="ui-button"][hidden][data-v-852dd10e] {
482
+ [data-component~="ui-button"][hidden][data-v-1cd0b390] {
483
483
  display: none;
484
484
  }
485
485
 
@@ -770,27 +770,27 @@ input[data-v-964081a0]:focus-visible {
770
770
  }
771
771
  }
772
772
 
773
- [data-component~="ui-combobox"][data-v-1aba7b21] {
773
+ [data-component~="ui-combobox"][data-v-3b8b0ecf] {
774
774
  display: grid;
775
775
  gap: var(--ui-space-1);
776
776
  min-inline-size: 0;
777
777
  color: var(--ui-text-primary);
778
778
  font: inherit;
779
779
  }
780
- label[data-v-1aba7b21] {
780
+ label[data-v-3b8b0ecf] {
781
781
  color: var(--ui-combobox-label-text, var(--ui-text-primary));
782
- font-size: var(--ui-combobox-label-font-size, 0.875rem);
782
+ font-size: var(--ui-combobox-label-font-size, var(--ui-font-size-sm));
783
783
  font-weight: 500;
784
784
  }
785
785
  /* The field and anything that annotates it sit on one row; the help button is beside the box,
786
786
  not inside it, because a control's box holds its value. */
787
- .control[data-v-1aba7b21] {
787
+ .control[data-v-3b8b0ecf] {
788
788
  display: flex;
789
789
  align-items: center;
790
790
  gap: var(--ui-space-2);
791
791
  min-inline-size: 0;
792
792
  }
793
- .field[data-v-1aba7b21] {
793
+ .field[data-v-3b8b0ecf] {
794
794
  flex: 1 1 auto;
795
795
  display: flex;
796
796
  min-inline-size: 0;
@@ -802,14 +802,14 @@ label[data-v-1aba7b21] {
802
802
  border-color var(--ui-motion-fast) var(--ui-motion-ease),
803
803
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
804
804
  }
805
- .field[data-v-1aba7b21]:focus-within {
805
+ .field[data-v-3b8b0ecf]:focus-within {
806
806
  border-color: var(--ui-control-focus, var(--ui-accent-solid));
807
807
  box-shadow:
808
808
  var(--ui-control-inset),
809
809
  var(--ui-control-focus-halo-shadow);
810
810
  }
811
811
  /* A ghost icon button: the affordance is the mark, not a box around it. */
812
- .help[data-v-1aba7b21] {
812
+ .help[data-v-3b8b0ecf] {
813
813
  flex: none;
814
814
  display: inline-flex;
815
815
  align-items: center;
@@ -826,28 +826,28 @@ label[data-v-1aba7b21] {
826
826
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
827
827
  color var(--ui-motion-fast) var(--ui-motion-ease);
828
828
  }
829
- .help[data-v-1aba7b21]:hover:enabled,
830
- .help[aria-expanded="true"][data-v-1aba7b21] {
829
+ .help[data-v-3b8b0ecf]:hover:enabled,
830
+ .help[aria-expanded="true"][data-v-3b8b0ecf] {
831
831
  background: color-mix(in srgb, currentColor 8%, transparent);
832
832
  color: var(--ui-text-primary);
833
833
  }
834
- .help[data-v-1aba7b21]:focus-visible {
834
+ .help[data-v-3b8b0ecf]:focus-visible {
835
835
  outline: none;
836
836
  box-shadow: var(--ui-focus-halo);
837
837
  }
838
- .help[data-v-1aba7b21]:disabled {
838
+ .help[data-v-3b8b0ecf]:disabled {
839
839
  color: var(--ui-disabled-text);
840
840
  cursor: not-allowed;
841
841
  }
842
- .help-icon[data-v-1aba7b21] {
842
+ .help-icon[data-v-3b8b0ecf] {
843
843
  inline-size: var(--ui-icon-size-sm);
844
844
  block-size: var(--ui-icon-size-sm);
845
845
  }
846
- input[data-v-1aba7b21]::selection {
846
+ input[data-v-3b8b0ecf]::selection {
847
847
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
848
848
  color: inherit;
849
849
  }
850
- input[data-v-1aba7b21] {
850
+ input[data-v-3b8b0ecf] {
851
851
  appearance: none;
852
852
  width: 100%;
853
853
  min-inline-size: 0;
@@ -863,11 +863,11 @@ input[data-v-1aba7b21] {
863
863
  margin: 0;
864
864
  outline: none;
865
865
  }
866
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-1aba7b21] {
866
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-3b8b0ecf] {
867
867
  min-block-size: calc(var(--ui-control-size-sm) - 2px);
868
868
  padding: var(--ui-space-1) var(--ui-space-2);
869
869
  }
870
- button[data-v-1aba7b21] {
870
+ button[data-v-3b8b0ecf] {
871
871
  appearance: none;
872
872
  display: inline-grid;
873
873
  place-items: center;
@@ -882,31 +882,31 @@ button[data-v-1aba7b21] {
882
882
  padding: 0 var(--ui-space-1);
883
883
  cursor: pointer;
884
884
  }
885
- .affordance-icon[data-v-1aba7b21] {
885
+ .affordance-icon[data-v-3b8b0ecf] {
886
886
  display: block;
887
887
  inline-size: var(--ui-icon-size-sm);
888
888
  block-size: var(--ui-icon-size-sm);
889
889
  }
890
- button[data-v-1aba7b21]:hover:enabled {
890
+ button[data-v-3b8b0ecf]:hover:enabled {
891
891
  background: var(--ui-surface-muted);
892
892
  color: var(--ui-text-primary);
893
893
  }
894
- button[data-v-1aba7b21]:focus-visible {
894
+ button[data-v-3b8b0ecf]:focus-visible {
895
895
  outline: none;
896
896
  background: var(--ui-surface-muted);
897
897
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
898
898
  }
899
- input[data-v-1aba7b21]:disabled, button[data-v-1aba7b21]:disabled {
899
+ input[data-v-3b8b0ecf]:disabled, button[data-v-3b8b0ecf]:disabled {
900
900
  color: var(--ui-text-muted);
901
901
  cursor: not-allowed;
902
902
  }
903
- .field[data-v-1aba7b21]:has(input:disabled) {
903
+ .field[data-v-3b8b0ecf]:has(input:disabled) {
904
904
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
905
905
  }
906
- [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-1aba7b21] {
906
+ [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-3b8b0ecf] {
907
907
  border-color: var(--ui-danger-solid, var(--ui-accent-active));
908
908
  }
909
- .popup[data-v-1aba7b21] {
909
+ .popup[data-v-3b8b0ecf] {
910
910
  box-sizing: border-box;
911
911
  min-inline-size: 12rem;
912
912
  max-inline-size: calc(100vw - 1rem);
@@ -920,40 +920,40 @@ input[data-v-1aba7b21]:disabled, button[data-v-1aba7b21]:disabled {
920
920
  color: var(--ui-text-primary);
921
921
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
922
922
  }
923
- [hidden][data-v-1aba7b21] {
923
+ [hidden][data-v-3b8b0ecf] {
924
924
  display: none;
925
925
  }
926
- .option[data-v-1aba7b21] {
926
+ .option[data-v-3b8b0ecf] {
927
927
  padding: var(--ui-space-2) var(--ui-space-3);
928
928
  border-radius: var(--ui-radius-sm);
929
929
  cursor: pointer;
930
930
  overflow-wrap: anywhere;
931
931
  }
932
- .option[data-v-1aba7b21]:hover, .option.active[data-v-1aba7b21] {
932
+ .option[data-v-3b8b0ecf]:hover, .option.active[data-v-3b8b0ecf] {
933
933
  background: var(--ui-surface-muted);
934
934
  outline: 1px solid var(--ui-focus-ring);
935
935
  outline-offset: -1px;
936
936
  }
937
- .option[aria-disabled="true"][data-v-1aba7b21] {
937
+ .option[aria-disabled="true"][data-v-3b8b0ecf] {
938
938
  color: var(--ui-text-muted);
939
939
  cursor: not-allowed;
940
940
  }
941
- .primary[data-v-1aba7b21] {
941
+ .primary[data-v-3b8b0ecf] {
942
942
  display: block;
943
943
  color: var(--ui-combobox-option-text, var(--ui-text-primary));
944
944
  font-weight: 500;
945
945
  }
946
- .message[data-v-1aba7b21], .group[data-v-1aba7b21] {
946
+ .message[data-v-3b8b0ecf], .group[data-v-3b8b0ecf] {
947
947
  color: var(--ui-combobox-message-text, var(--ui-text-secondary));
948
948
  font-weight: 400;
949
949
  font-size: var(--ui-font-size-sm);
950
950
  line-height: var(--ui-line-height-md);
951
951
  overflow-wrap: anywhere;
952
952
  }
953
- .group[data-v-1aba7b21], .popup .message[data-v-1aba7b21] {
953
+ .group[data-v-3b8b0ecf], .popup .message[data-v-3b8b0ecf] {
954
954
  padding: var(--ui-space-2) var(--ui-space-3);
955
955
  }
956
- .sr-only[data-v-1aba7b21] {
956
+ .sr-only[data-v-3b8b0ecf] {
957
957
  position: absolute;
958
958
  inline-size: 1px;
959
959
  block-size: 1px;
@@ -962,16 +962,16 @@ input[data-v-1aba7b21]:disabled, button[data-v-1aba7b21]:disabled {
962
962
  white-space: nowrap;
963
963
  }
964
964
  @media (pointer: coarse) {
965
- button[data-v-1aba7b21] {
965
+ button[data-v-3b8b0ecf] {
966
966
  min-inline-size: 2.75rem;
967
967
  min-block-size: 2.75rem;
968
968
  }
969
969
  }
970
970
  @media (forced-colors: active) {
971
- .field[data-v-1aba7b21], .popup[data-v-1aba7b21] {
971
+ .field[data-v-3b8b0ecf], .popup[data-v-3b8b0ecf] {
972
972
  border-color: CanvasText;
973
973
  }
974
- .option.active[data-v-1aba7b21] {
974
+ .option.active[data-v-3b8b0ecf] {
975
975
  outline-color: Highlight;
976
976
  }
977
977
  }
@@ -979,12 +979,12 @@ button[data-v-1aba7b21] {
979
979
  /* Multiple mode: every option carries a checkbox, so a list that takes several answers says so
980
980
  before anything is picked. aria-selected is the state; this draws it.
981
981
  Longhands, not shorthands: lowering drops a shorthand that omits a component. */
982
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-1aba7b21] {
982
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-3b8b0ecf] {
983
983
  display: flex;
984
984
  gap: var(--ui-space-2);
985
985
  align-items: center;
986
986
  }
987
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-1aba7b21]::before {
987
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-3b8b0ecf]::before {
988
988
  content: "";
989
989
  flex: none;
990
990
  inline-size: 1.125rem;
@@ -999,7 +999,7 @@ button[data-v-1aba7b21] {
999
999
  background-size: 0.7rem;
1000
1000
  }
1001
1001
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"]
1002
- .option[aria-selected="true"][data-v-1aba7b21]::before {
1002
+ .option[aria-selected="true"][data-v-3b8b0ecf]::before {
1003
1003
  border-color: var(--ui-accent-solid);
1004
1004
  background-color: var(--ui-accent-solid);
1005
1005
  background-image: var(
@@ -1009,20 +1009,20 @@ button[data-v-1aba7b21] {
1009
1009
  }
1010
1010
 
1011
1011
  /* Multiple mode: chips wrap before the cursor on one flexible field line. */
1012
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-1aba7b21] {
1012
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-3b8b0ecf] {
1013
1013
  flex-wrap: wrap;
1014
1014
  align-items: center;
1015
1015
  gap: var(--ui-space-1);
1016
1016
  min-block-size: var(--ui-combobox-item-min-block-size, 2.5rem);
1017
1017
  padding: var(--ui-space-1);
1018
1018
  }
1019
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-1aba7b21] {
1019
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-3b8b0ecf] {
1020
1020
  flex: 1 0 var(--ui-combobox-item-input-min-inline-size, 5rem);
1021
1021
  width: auto;
1022
1022
  min-block-size: 1.75rem;
1023
1023
  padding: var(--ui-space-0-5) var(--ui-space-1);
1024
1024
  }
1025
- .item[data-v-1aba7b21] {
1025
+ .item[data-v-3b8b0ecf] {
1026
1026
  appearance: none;
1027
1027
  display: inline-flex;
1028
1028
  min-inline-size: 0;
@@ -1036,16 +1036,16 @@ button[data-v-1aba7b21] {
1036
1036
  font: inherit;
1037
1037
  cursor: default;
1038
1038
  }
1039
- .item[data-v-1aba7b21]:focus-visible {
1039
+ .item[data-v-3b8b0ecf]:focus-visible {
1040
1040
  outline: 2px solid var(--ui-focus-ring);
1041
1041
  outline-offset: 1px;
1042
1042
  }
1043
- .item[data-v-1aba7b21]:disabled {
1043
+ .item[data-v-3b8b0ecf]:disabled {
1044
1044
  opacity: 0.6;
1045
1045
  }
1046
1046
 
1047
1047
  /* A component that sets its display still honours the hidden attribute on its root. */
1048
- [data-component~="ui-combobox"][hidden][data-v-1aba7b21] {
1048
+ [data-component~="ui-combobox"][hidden][data-v-3b8b0ecf] {
1049
1049
  display: none;
1050
1050
  }
1051
1051
 
@@ -1666,10 +1666,10 @@ svg[data-v-7b1048a0] {
1666
1666
  display: none;
1667
1667
  }
1668
1668
 
1669
- [data-component~="ui-editor-slash-menu"][data-v-346835f7] {
1669
+ [data-component~="ui-editor-slash-menu"][data-v-e7d0f904] {
1670
1670
  user-select: none;
1671
1671
  }
1672
- [data-component~="ui-editor-slash-menu"][data-v-346835f7] {
1672
+ [data-component~="ui-editor-slash-menu"][data-v-e7d0f904] {
1673
1673
  background: var(--ui-surface);
1674
1674
  border: 1px solid var(--ui-border);
1675
1675
  border-radius: var(--ui-radius-dialog);
@@ -1679,12 +1679,12 @@ svg[data-v-7b1048a0] {
1679
1679
  flex-direction: column;
1680
1680
  }
1681
1681
  @media (max-width: 767px) {
1682
- [data-component~="ui-editor-slash-menu"][data-v-346835f7] {
1682
+ [data-component~="ui-editor-slash-menu"][data-v-e7d0f904] {
1683
1683
  border-radius: var(--ui-radius-dialog) var(--ui-radius-dialog) 0 0;
1684
1684
  border-bottom: none;
1685
1685
  }
1686
1686
  }
1687
- .header[data-v-346835f7] {
1687
+ .header[data-v-e7d0f904] {
1688
1688
  display: none;
1689
1689
  align-items: center;
1690
1690
  gap: var(--ui-space-2);
@@ -1697,11 +1697,11 @@ svg[data-v-7b1048a0] {
1697
1697
  letter-spacing: 0.05em;
1698
1698
  }
1699
1699
  @media (max-width: 767px) {
1700
- .header[data-v-346835f7] {
1700
+ .header[data-v-e7d0f904] {
1701
1701
  display: flex;
1702
1702
  }
1703
1703
  }
1704
- .header-query[data-v-346835f7] {
1704
+ .header-query[data-v-e7d0f904] {
1705
1705
  background: var(--ui-surface-hover);
1706
1706
  border-radius: var(--ui-radius-sm);
1707
1707
  padding: 0.1em 0.4em;
@@ -1711,7 +1711,7 @@ svg[data-v-7b1048a0] {
1711
1711
  text-transform: none;
1712
1712
  letter-spacing: 0;
1713
1713
  }
1714
- .list[data-v-346835f7] {
1714
+ .list[data-v-e7d0f904] {
1715
1715
  list-style: none;
1716
1716
  margin: 0;
1717
1717
  padding: var(--ui-space-1) 0;
@@ -1720,12 +1720,12 @@ svg[data-v-7b1048a0] {
1720
1720
  overscroll-behavior: contain;
1721
1721
  }
1722
1722
  @media (max-width: 767px) {
1723
- .list[data-v-346835f7] {
1723
+ .list[data-v-e7d0f904] {
1724
1724
  max-height: calc(60dvh - 80px);
1725
1725
  padding: var(--ui-space-1) 0 var(--ui-space-2);
1726
1726
  }
1727
1727
  }
1728
- .item[data-v-346835f7] {
1728
+ .item[data-v-e7d0f904] {
1729
1729
  display: flex;
1730
1730
  align-items: center;
1731
1731
  gap: var(--ui-space-3);
@@ -1734,10 +1734,10 @@ svg[data-v-7b1048a0] {
1734
1734
  cursor: pointer;
1735
1735
  transition: background-color 120ms ease;
1736
1736
  }
1737
- .item.active[data-v-346835f7] {
1737
+ .item.active[data-v-e7d0f904] {
1738
1738
  background: var(--ui-accent-subtle, rgb(59 130 246 / 0.1));
1739
1739
  }
1740
- .icon[data-v-346835f7] {
1740
+ .icon[data-v-e7d0f904] {
1741
1741
  display: flex;
1742
1742
  align-items: center;
1743
1743
  justify-content: center;
@@ -1753,22 +1753,22 @@ svg[data-v-7b1048a0] {
1753
1753
  flex-shrink: 0;
1754
1754
  line-height: 1;
1755
1755
  }
1756
- .item.active .icon[data-v-346835f7] {
1756
+ .item.active .icon[data-v-e7d0f904] {
1757
1757
  background: var(--ui-accent);
1758
1758
  border-color: var(--ui-accent);
1759
1759
  color: var(--ui-accent-contrast);
1760
1760
  }
1761
- .icon[data-v-346835f7] {
1761
+ .icon[data-v-e7d0f904] {
1762
1762
  --ui-icon-size: 1rem;
1763
1763
  --ui-icon-stroke-width: var(--ui-editor-toolbar-icon-stroke-width, 1.75);
1764
1764
  }
1765
- .body[data-v-346835f7] {
1765
+ .body[data-v-e7d0f904] {
1766
1766
  display: flex;
1767
1767
  min-width: 0;
1768
1768
  flex-direction: column;
1769
1769
  gap: 1px;
1770
1770
  }
1771
- .title[data-v-346835f7] {
1771
+ .title[data-v-e7d0f904] {
1772
1772
  font-size: var(--ui-font-size-sm);
1773
1773
  font-weight: var(--ui-font-medium);
1774
1774
  color: var(--ui-text);
@@ -1776,14 +1776,14 @@ svg[data-v-7b1048a0] {
1776
1776
  overflow: hidden;
1777
1777
  text-overflow: ellipsis;
1778
1778
  }
1779
- .description[data-v-346835f7] {
1779
+ .description[data-v-e7d0f904] {
1780
1780
  font-size: var(--ui-font-size-xs);
1781
1781
  color: var(--ui-text-muted);
1782
1782
  white-space: nowrap;
1783
1783
  overflow: hidden;
1784
1784
  text-overflow: ellipsis;
1785
1785
  }
1786
- .footer[data-v-346835f7] {
1786
+ .footer[data-v-e7d0f904] {
1787
1787
  display: none;
1788
1788
  padding: var(--ui-space-2) var(--ui-space-3);
1789
1789
  border-top: 1px solid var(--ui-border);
@@ -1791,27 +1791,27 @@ svg[data-v-7b1048a0] {
1791
1791
  color: var(--ui-text-muted);
1792
1792
  }
1793
1793
  @media (min-width: 768px) {
1794
- .footer[data-v-346835f7] {
1794
+ .footer[data-v-e7d0f904] {
1795
1795
  display: block;
1796
1796
  }
1797
1797
  }
1798
- [data-component~="ui-editor-slash-menu"] kbd[data-v-346835f7] {
1798
+ [data-component~="ui-editor-slash-menu"] kbd[data-v-e7d0f904] {
1799
1799
  display: inline-flex;
1800
1800
  align-items: center;
1801
1801
  justify-content: center;
1802
1802
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
1803
- font-size: 10px;
1803
+ font-size: var(--ui-font-size-2xs);
1804
1804
  background: var(--ui-surface-hover);
1805
1805
  border: 1px solid var(--ui-border);
1806
1806
  border-radius: 3px;
1807
1807
  padding: 0 3px;
1808
1808
  color: var(--ui-text-secondary);
1809
1809
  }
1810
- [data-component~="ui-editor-slash-menu"][hidden][data-v-346835f7] {
1810
+ [data-component~="ui-editor-slash-menu"][hidden][data-v-e7d0f904] {
1811
1811
  display: none;
1812
1812
  }
1813
1813
 
1814
- [data-component~="ui-editor-table-context-menu"][data-v-ae062630] {
1814
+ [data-component~="ui-editor-table-context-menu"][data-v-2d9eb67c] {
1815
1815
  /* The max-width is a promise about the menu's footprint, so it counts padding and border. */
1816
1816
  box-sizing: border-box;
1817
1817
  min-width: 14rem;
@@ -1829,12 +1829,12 @@ svg[data-v-7b1048a0] {
1829
1829
  overscroll-behavior: contain;
1830
1830
  scrollbar-width: thin;
1831
1831
  }
1832
- .section[data-v-ae062630] {
1832
+ .section[data-v-2d9eb67c] {
1833
1833
  display: flex;
1834
1834
  flex-direction: column;
1835
1835
  gap: 3px;
1836
1836
  }
1837
- [data-component~="ui-editor-table-context-menu"] button[data-v-ae062630] {
1837
+ [data-component~="ui-editor-table-context-menu"] button[data-v-2d9eb67c] {
1838
1838
  display: flex;
1839
1839
  align-items: center;
1840
1840
  gap: var(--ui-space-2);
@@ -1849,30 +1849,30 @@ svg[data-v-7b1048a0] {
1849
1849
  cursor: pointer;
1850
1850
  color: var(--ui-text);
1851
1851
  }
1852
- [data-component~="ui-editor-table-context-menu"] button[data-v-ae062630] {
1852
+ [data-component~="ui-editor-table-context-menu"] button[data-v-2d9eb67c] {
1853
1853
  --ui-icon-size: 1rem;
1854
1854
  --ui-icon-stroke-width: var(--ui-editor-toolbar-icon-stroke-width, 1.75);
1855
1855
  }
1856
- [data-component~="ui-editor-table-context-menu"] button[data-v-ae062630]:hover:not(:disabled) {
1856
+ [data-component~="ui-editor-table-context-menu"] button[data-v-2d9eb67c]:hover:not(:disabled) {
1857
1857
  background: var(--ui-surface-hover);
1858
1858
  }
1859
- [data-component~="ui-editor-table-context-menu"] button.selected[data-v-ae062630] {
1859
+ [data-component~="ui-editor-table-context-menu"] button.selected[data-v-2d9eb67c] {
1860
1860
  background: var(--ui-accent-subtle, rgb(59 130 246 / 0.1));
1861
1861
  }
1862
- [data-component~="ui-editor-table-context-menu"] button.danger[data-v-ae062630] {
1862
+ [data-component~="ui-editor-table-context-menu"] button.danger[data-v-2d9eb67c] {
1863
1863
  color: var(--ui-danger);
1864
1864
  }
1865
- .swatches[data-v-ae062630] {
1865
+ .swatches[data-v-2d9eb67c] {
1866
1866
  display: grid;
1867
1867
  grid-template-columns: repeat(3, minmax(0, 1fr));
1868
1868
  gap: 3px;
1869
1869
  }
1870
- .swatch-button[data-v-ae062630] {
1870
+ .swatch-button[data-v-2d9eb67c] {
1871
1871
  display: inline-flex;
1872
1872
  align-items: center;
1873
1873
  gap: var(--ui-space-2);
1874
1874
  }
1875
- .swatch[data-v-ae062630] {
1875
+ .swatch[data-v-2d9eb67c] {
1876
1876
  display: inline-flex;
1877
1877
  width: 1rem;
1878
1878
  height: 1rem;
@@ -1882,7 +1882,7 @@ svg[data-v-7b1048a0] {
1882
1882
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.35);
1883
1883
  flex-shrink: 0;
1884
1884
  }
1885
- .swatch.default[data-v-ae062630] {
1885
+ .swatch.default[data-v-2d9eb67c] {
1886
1886
  position: relative;
1887
1887
  background:
1888
1888
  linear-gradient(
@@ -1894,24 +1894,24 @@ svg[data-v-7b1048a0] {
1894
1894
  ),
1895
1895
  var(--ui-surface);
1896
1896
  }
1897
- .swatch-label[data-v-ae062630] {
1897
+ .swatch-label[data-v-2d9eb67c] {
1898
1898
  min-width: 0;
1899
1899
  white-space: nowrap;
1900
1900
  }
1901
- .heading[data-v-ae062630] {
1901
+ .heading[data-v-2d9eb67c] {
1902
1902
  padding: var(--ui-space-1) var(--ui-space-2);
1903
- font-size: 0.6875rem;
1903
+ font-size: var(--ui-font-size-2xs);
1904
1904
  font-weight: 700;
1905
1905
  letter-spacing: 0.05em;
1906
1906
  text-transform: uppercase;
1907
1907
  color: var(--ui-text-muted);
1908
1908
  }
1909
- .sep[data-v-ae062630] {
1909
+ .sep[data-v-2d9eb67c] {
1910
1910
  height: 1px;
1911
1911
  background: var(--ui-border);
1912
1912
  margin: var(--ui-space-1) 0;
1913
1913
  }
1914
- [data-component~="ui-editor-table-context-menu"][hidden][data-v-ae062630] {
1914
+ [data-component~="ui-editor-table-context-menu"][hidden][data-v-2d9eb67c] {
1915
1915
  display: none;
1916
1916
  }
1917
1917
 
@@ -2186,7 +2186,7 @@ svg[data-v-7b1048a0] {
2186
2186
  display: none;
2187
2187
  }
2188
2188
 
2189
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"][data-v-31b70e7c] {
2189
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"][data-v-1b253cb1] {
2190
2190
  min-width: max-content;
2191
2191
  min-height: 100%;
2192
2192
  padding: 0;
@@ -2196,15 +2196,15 @@ svg[data-v-7b1048a0] {
2196
2196
  box-shadow: none;
2197
2197
  backdrop-filter: none;
2198
2198
  }
2199
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button[data-v-31b70e7c] {
2199
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button[data-v-1b253cb1] {
2200
2200
  min-height: 44px;
2201
2201
  background: transparent;
2202
2202
  }
2203
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.active[data-v-31b70e7c],
2204
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.selected[data-v-31b70e7c] {
2203
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.active[data-v-1b253cb1],
2204
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] button.selected[data-v-1b253cb1] {
2205
2205
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
2206
2206
  }
2207
- .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] .menu[data-v-31b70e7c] {
2207
+ .looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] .menu[data-v-1b253cb1] {
2208
2208
  top: auto;
2209
2209
  right: 0;
2210
2210
  bottom: calc(100% + var(--ui-space-2));
@@ -2212,7 +2212,7 @@ svg[data-v-7b1048a0] {
2212
2212
  overflow-y: auto;
2213
2213
  overscroll-behavior: contain;
2214
2214
  }
2215
- [data-component~="ui-editor-table-toolbar"][data-v-31b70e7c] {
2215
+ [data-component~="ui-editor-table-toolbar"][data-v-1b253cb1] {
2216
2216
  display: inline-flex;
2217
2217
  align-items: center;
2218
2218
  gap: var(--ui-space-1);
@@ -2223,21 +2223,21 @@ svg[data-v-7b1048a0] {
2223
2223
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
2224
2224
  backdrop-filter: blur(10px);
2225
2225
  }
2226
- .group[data-v-31b70e7c] {
2226
+ .group[data-v-1b253cb1] {
2227
2227
  display: inline-flex;
2228
2228
  align-items: center;
2229
2229
  gap: 2px;
2230
2230
  overflow: hidden;
2231
2231
  }
2232
- .sep[data-v-31b70e7c] {
2232
+ .sep[data-v-1b253cb1] {
2233
2233
  width: 1px;
2234
2234
  align-self: stretch;
2235
2235
  background: var(--ui-border);
2236
2236
  }
2237
- .overflow[data-v-31b70e7c] {
2237
+ .overflow[data-v-1b253cb1] {
2238
2238
  position: relative;
2239
2239
  }
2240
- [data-component~="ui-editor-table-toolbar"] button[data-v-31b70e7c] {
2240
+ [data-component~="ui-editor-table-toolbar"] button[data-v-1b253cb1] {
2241
2241
  display: inline-flex;
2242
2242
  align-items: center;
2243
2243
  justify-content: center;
@@ -2254,39 +2254,39 @@ svg[data-v-7b1048a0] {
2254
2254
  padding: var(--ui-space-2) var(--ui-space-2);
2255
2255
  white-space: nowrap;
2256
2256
  }
2257
- [data-component~="ui-editor-table-toolbar"] button[data-v-31b70e7c]:hover {
2257
+ [data-component~="ui-editor-table-toolbar"] button[data-v-1b253cb1]:hover {
2258
2258
  background: var(--ui-surface-hover);
2259
2259
  }
2260
- [data-component~="ui-editor-table-toolbar"] button.active[data-v-31b70e7c] {
2260
+ [data-component~="ui-editor-table-toolbar"] button.active[data-v-1b253cb1] {
2261
2261
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
2262
2262
  color: var(--ui-accent-active);
2263
2263
  }
2264
- .group button[data-v-31b70e7c] {
2264
+ .group button[data-v-1b253cb1] {
2265
2265
  border-radius: var(--ui-radius-sm);
2266
2266
  }
2267
- .group button + button[data-v-31b70e7c] {
2267
+ .group button + button[data-v-1b253cb1] {
2268
2268
  border-left: 0;
2269
2269
  }
2270
- [data-component~="ui-editor-table-toolbar"] .more[data-v-31b70e7c] {
2270
+ [data-component~="ui-editor-table-toolbar"] .more[data-v-1b253cb1] {
2271
2271
  border: 0;
2272
2272
  border-radius: var(--ui-radius-sm);
2273
2273
  }
2274
- [data-component~="ui-editor-table-toolbar"] button.danger[data-v-31b70e7c] {
2274
+ [data-component~="ui-editor-table-toolbar"] button.danger[data-v-1b253cb1] {
2275
2275
  color: var(--ui-danger);
2276
2276
  }
2277
- [data-component~="ui-editor-table-toolbar"][data-v-31b70e7c] {
2277
+ [data-component~="ui-editor-table-toolbar"][data-v-1b253cb1] {
2278
2278
  --ui-icon-size: var(--ui-editor-toolbar-icon-size, 1rem);
2279
2279
  --ui-icon-stroke-width: var(--ui-editor-toolbar-icon-stroke-width, 1.75);
2280
2280
  }
2281
- .chevron[data-v-31b70e7c] {
2281
+ .chevron[data-v-1b253cb1] {
2282
2282
  display: inline-flex;
2283
2283
  --ui-icon-size: 0.875rem;
2284
2284
  }
2285
- [data-component~="ui-editor-table-toolbar"] .icon-button[data-v-31b70e7c] {
2285
+ [data-component~="ui-editor-table-toolbar"] .icon-button[data-v-1b253cb1] {
2286
2286
  width: 32px;
2287
2287
  padding-inline: 0;
2288
2288
  }
2289
- .menu[data-v-31b70e7c] {
2289
+ .menu[data-v-1b253cb1] {
2290
2290
  position: absolute;
2291
2291
  top: calc(100% + var(--ui-space-2));
2292
2292
  right: 0;
@@ -2301,35 +2301,35 @@ svg[data-v-7b1048a0] {
2301
2301
  gap: 2px;
2302
2302
  z-index: 2;
2303
2303
  }
2304
- .menu-section + .menu-section[data-v-31b70e7c] {
2304
+ .menu-section + .menu-section[data-v-1b253cb1] {
2305
2305
  margin-top: var(--ui-space-1);
2306
2306
  padding-top: var(--ui-space-1);
2307
2307
  border-top: 1px solid color-mix(in srgb, var(--ui-border) 80%, transparent);
2308
2308
  }
2309
- .menu-heading[data-v-31b70e7c] {
2309
+ .menu-heading[data-v-1b253cb1] {
2310
2310
  padding: var(--ui-space-1) var(--ui-space-2);
2311
- font-size: 0.6875rem;
2311
+ font-size: var(--ui-font-size-2xs);
2312
2312
  font-weight: 700;
2313
2313
  letter-spacing: 0.05em;
2314
2314
  text-transform: uppercase;
2315
2315
  color: var(--ui-text-muted);
2316
2316
  }
2317
- .menu button[data-v-31b70e7c] {
2317
+ .menu button[data-v-1b253cb1] {
2318
2318
  display: flex;
2319
2319
  justify-content: flex-start;
2320
2320
  width: 100%;
2321
2321
  text-align: left;
2322
2322
  }
2323
- .swatches[data-v-31b70e7c] {
2323
+ .swatches[data-v-1b253cb1] {
2324
2324
  display: grid;
2325
2325
  grid-template-columns: repeat(3, minmax(0, 1fr));
2326
2326
  gap: 2px;
2327
2327
  }
2328
- [data-component~="ui-editor-table-toolbar"] .swatch-button[data-v-31b70e7c] {
2328
+ [data-component~="ui-editor-table-toolbar"] .swatch-button[data-v-1b253cb1] {
2329
2329
  gap: var(--ui-space-1);
2330
2330
  justify-content: flex-start;
2331
2331
  }
2332
- .swatch[data-v-31b70e7c] {
2332
+ .swatch[data-v-1b253cb1] {
2333
2333
  width: 14px;
2334
2334
  height: 14px;
2335
2335
  flex: 0 0 14px;
@@ -2337,15 +2337,15 @@ svg[data-v-7b1048a0] {
2337
2337
  border-radius: 3px;
2338
2338
  background: var(--_swatch);
2339
2339
  }
2340
- .swatch.default[data-v-31b70e7c] {
2340
+ .swatch.default[data-v-1b253cb1] {
2341
2341
  background:
2342
2342
  linear-gradient(135deg, transparent 44%, var(--ui-danger) 46% 54%, transparent 56%),
2343
2343
  var(--ui-surface);
2344
2344
  }
2345
- .swatch-button.selected[data-v-31b70e7c] {
2345
+ .swatch-button.selected[data-v-1b253cb1] {
2346
2346
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
2347
2347
  }
2348
- [data-component~="ui-editor-table-toolbar"][hidden][data-v-31b70e7c] {
2348
+ [data-component~="ui-editor-table-toolbar"][hidden][data-v-1b253cb1] {
2349
2349
  display: none;
2350
2350
  }
2351
2351
 
@@ -2524,7 +2524,7 @@ svg[data-v-62b77471-s] {
2524
2524
  display: none;
2525
2525
  }
2526
2526
 
2527
- [data-component~="ui-form-field"][data-v-605db5c0] {
2527
+ [data-component~="ui-form-field"][data-v-13b85af2] {
2528
2528
  display: grid;
2529
2529
  gap: var(--ui-space-2);
2530
2530
  min-inline-size: 0;
@@ -2534,30 +2534,30 @@ svg[data-v-62b77471-s] {
2534
2534
 
2535
2535
  /* Each named region styles whatever fills it, however it was slotted (slot="…" in HTML, #label
2536
2536
  in Vue), and generates no box of its own, so an empty region adds no gap. */
2537
- .label[data-v-605db5c0],
2538
- .help[data-v-605db5c0],
2539
- .error[data-v-605db5c0] {
2537
+ .label[data-v-13b85af2],
2538
+ .help[data-v-13b85af2],
2539
+ .error[data-v-13b85af2] {
2540
2540
  display: contents;
2541
2541
  }
2542
- .label[data-v-605db5c0] {
2542
+ .label[data-v-13b85af2] {
2543
2543
  color: var(--ui-text-secondary);
2544
- font-size: 0.95rem;
2544
+ font-size: var(--ui-font-size-sm);
2545
2545
  }
2546
- .help[data-v-605db5c0] {
2546
+ .help[data-v-13b85af2] {
2547
2547
  color: var(--ui-text-muted);
2548
- font-size: 0.875rem;
2548
+ font-size: var(--ui-font-size-sm);
2549
2549
  line-height: var(--ui-line-height-md);
2550
2550
  }
2551
- .help > [data-v-605db5c0-s] {
2551
+ .help > [data-v-13b85af2-s] {
2552
2552
  min-block-size: var(--ui-form-field-help-min-block-size, 0);
2553
2553
  }
2554
- .error[data-v-605db5c0],[role="alert"][data-v-605db5c0-s] {
2554
+ .error[data-v-13b85af2],[role="alert"][data-v-13b85af2-s] {
2555
2555
  color: var(--ui-accent-active);
2556
- font-size: 0.875rem;
2556
+ font-size: var(--ui-font-size-sm);
2557
2557
  }
2558
2558
 
2559
2559
  /* A component that sets its display still honours the hidden attribute on its root. */
2560
- [data-component~="ui-form-field"][hidden][data-v-605db5c0] {
2560
+ [data-component~="ui-form-field"][hidden][data-v-13b85af2] {
2561
2561
  display: none;
2562
2562
  }
2563
2563
 
@@ -4081,7 +4081,7 @@ to {
4081
4081
  display: none;
4082
4082
  }
4083
4083
 
4084
- [data-component~="ui-tree-item"][data-v-9b8fd08d] {
4084
+ [data-component~="ui-tree-item"][data-v-d093d318] {
4085
4085
  --_tree-row-min-height: 32px;
4086
4086
  --_tree-disclosure-size: 16px;
4087
4087
 
@@ -4090,14 +4090,14 @@ to {
4090
4090
  min-inline-size: 0;
4091
4091
  margin-inline-start: calc(var(--ui-tree-item-depth, 0) * var(--ui-tree-indent, 16px));
4092
4092
  }
4093
- .row[data-v-9b8fd08d] {
4093
+ .row[data-v-d093d318] {
4094
4094
  position: relative;
4095
4095
  display: grid;
4096
4096
  grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr);
4097
4097
  align-items: center;
4098
4098
  min-block-size: var(--ui-tree-item-min-block-size, var(--_tree-row-min-height));
4099
4099
  min-inline-size: 0;
4100
- font-size: var(--ui-tree-item-font-size, var(--ui-font-size-ui));
4100
+ font-size: var(--ui-tree-item-font-size, var(--ui-font-size-sm));
4101
4101
  border-radius: var(--ui-radius-md);
4102
4102
  color: var(--ui-text-secondary);
4103
4103
  transition:
@@ -4107,38 +4107,38 @@ to {
4107
4107
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
4108
4108
  min-block-size var(--ui-motion-base) var(--ui-motion-ease);
4109
4109
  }
4110
- .row[data-v-9b8fd08d]:hover,
4111
- [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] .row[data-v-9b8fd08d],
4112
- .row[data-v-9b8fd08d]:focus-within {
4110
+ .row[data-v-d093d318]:hover,
4111
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] .row[data-v-d093d318],
4112
+ .row[data-v-d093d318]:focus-within {
4113
4113
  color: var(--ui-text-primary);
4114
4114
  background: var(--ui-surface-muted);
4115
4115
  }
4116
- [data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row[data-v-9b8fd08d] {
4116
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row[data-v-d093d318] {
4117
4117
  opacity: 0.55;
4118
4118
  }
4119
- [data-component~="ui-tree-item"][data-dragging] .row[data-v-9b8fd08d] {
4119
+ [data-component~="ui-tree-item"][data-dragging] .row[data-v-d093d318] {
4120
4120
  opacity: 0.42;
4121
4121
  }
4122
- [data-component~="ui-tree-item"][data-v-9b8fd08d]:focus {
4122
+ [data-component~="ui-tree-item"][data-v-d093d318]:focus {
4123
4123
  outline: none;
4124
4124
  }
4125
- [data-component~="ui-tree-item"]:focus-visible .row[data-v-9b8fd08d] {
4125
+ [data-component~="ui-tree-item"]:focus-visible .row[data-v-d093d318] {
4126
4126
  box-shadow: 0 0 0 2px var(--ui-focus-ring);
4127
4127
  }
4128
4128
 
4129
4129
  /* Child combinators: drop feedback belongs to this item's own row, not the rows nested in it. */
4130
- [data-component~="ui-tree-item"][data-drop-position="inside"] > .row[data-v-9b8fd08d] {
4130
+ [data-component~="ui-tree-item"][data-drop-position="inside"] > .row[data-v-d093d318] {
4131
4131
  background: var(--ui-accent-subtle);
4132
4132
  box-shadow: inset 0 0 0 1px var(--ui-tree-drop-color, var(--ui-accent-solid));
4133
4133
  }
4134
- .disclosure[data-v-9b8fd08d],
4135
- .disclosure-spacer[data-v-9b8fd08d] {
4134
+ .disclosure[data-v-d093d318],
4135
+ .disclosure-spacer[data-v-d093d318] {
4136
4136
  grid-column: 1;
4137
4137
  grid-row: 1;
4138
4138
  inline-size: var(--_tree-disclosure-size);
4139
4139
  block-size: 28px;
4140
4140
  }
4141
- .disclosure[data-v-9b8fd08d] {
4141
+ .disclosure[data-v-d093d318] {
4142
4142
  display: grid;
4143
4143
  /* Start-aligned: the chevron's ink, not its hit area, aligns with the content above it. */
4144
4144
  place-items: center start;
@@ -4149,14 +4149,14 @@ to {
4149
4149
  border-radius: var(--ui-radius-sm);
4150
4150
  cursor: pointer;
4151
4151
  }
4152
- .disclosure[hidden][data-v-9b8fd08d] {
4152
+ .disclosure[hidden][data-v-d093d318] {
4153
4153
  display: none;
4154
4154
  }
4155
- .disclosure[data-v-9b8fd08d]:hover {
4155
+ .disclosure[data-v-d093d318]:hover {
4156
4156
  color: var(--ui-text-primary);
4157
4157
  background: var(--ui-surface-elevated);
4158
4158
  }
4159
- .disclosure-icon[data-v-9b8fd08d] {
4159
+ .disclosure-icon[data-v-d093d318] {
4160
4160
  display: grid;
4161
4161
  place-items: center;
4162
4162
  inline-size: 12px;
@@ -4164,7 +4164,7 @@ to {
4164
4164
  transform: rotate(-90deg);
4165
4165
  transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
4166
4166
  }
4167
- .disclosure-icon[data-v-9b8fd08d]::before {
4167
+ .disclosure-icon[data-v-d093d318]::before {
4168
4168
  display: block;
4169
4169
  inline-size: 0.375rem;
4170
4170
  block-size: 0.375rem;
@@ -4174,19 +4174,19 @@ to {
4174
4174
  /* A chevron's ink sits below its box centre; lift it so it centres optically (in either rotation). */
4175
4175
  transform: translateY(-20%) rotate(45deg);
4176
4176
  }
4177
- [data-component~="ui-tree-item"][aria-expanded="true"] .disclosure-icon[data-v-9b8fd08d] {
4177
+ [data-component~="ui-tree-item"][aria-expanded="true"] .disclosure-icon[data-v-d093d318] {
4178
4178
  transform: rotate(0deg);
4179
4179
  }
4180
4180
 
4181
4181
  /* Lucide grip-vertical, filling the handle as in Looma 0.2. */
4182
- .drag-handle svg[data-v-9b8fd08d] {
4182
+ .drag-handle svg[data-v-d093d318] {
4183
4183
  display: block;
4184
4184
  inline-size: 100%;
4185
4185
  block-size: 100%;
4186
4186
  }
4187
4187
 
4188
4188
  /* Slotted content is outside this scope, so :has() cannot see it; hide only a truly empty slot. */
4189
- .leading[data-v-9b8fd08d] {
4189
+ .leading[data-v-d093d318] {
4190
4190
  display: inline-grid;
4191
4191
  place-items: center;
4192
4192
  grid-column: 2;
@@ -4196,12 +4196,12 @@ to {
4196
4196
  margin-inline-start: var(--ui-space-1);
4197
4197
  color: var(--ui-text-muted);
4198
4198
  }
4199
- .leading[data-v-9b8fd08d]:empty {
4199
+ .leading[data-v-d093d318]:empty {
4200
4200
  display: none;
4201
4201
  }
4202
4202
 
4203
4203
  /* Icons match the label's size (as in Knit's tree): an unsized SVG would otherwise render 300×150. */
4204
- svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4204
+ svg[data-v-d093d318-s],img[data-v-d093d318-s] {
4205
4205
  display: block;
4206
4206
  inline-size: 1em;
4207
4207
  block-size: 1em;
@@ -4210,7 +4210,7 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4210
4210
 
4211
4211
  /* The label spans the row's height and centres its content, so slotted content (a link) can
4212
4212
  stretch to fill the row as its own hit area; the padding tokens remove the inset. */
4213
- .label[data-v-9b8fd08d] {
4213
+ .label[data-v-d093d318] {
4214
4214
  grid-column: 3;
4215
4215
  grid-row: 1;
4216
4216
  align-self: stretch;
@@ -4223,15 +4223,15 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4223
4223
 
4224
4224
  /* Slotted label content fills the cell, so a link is the row's hit area rather than sizing to
4225
4225
  its own text and reading as overflow. */
4226
- .label > [data-v-9b8fd08d-s] {
4226
+ .label > [data-v-d093d318-s] {
4227
4227
  flex: 1 1 auto;
4228
4228
  min-inline-size: 0;
4229
4229
  }
4230
4230
 
4231
4231
  /* The controls sit over the label's end, so the text fades out where they begin. The fade is
4232
4232
  the truncation mark while it shows: an ellipsis under it would read as a second one. */
4233
- .row:hover > .label[data-v-9b8fd08d],
4234
- .row:focus-within > .label[data-v-9b8fd08d] {
4233
+ .row:hover > .label[data-v-d093d318],
4234
+ .row:focus-within > .label[data-v-d093d318] {
4235
4235
  text-overflow: clip;
4236
4236
  mask-image: linear-gradient(
4237
4237
  to right,
@@ -4239,19 +4239,19 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4239
4239
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
4240
4240
  );
4241
4241
  }
4242
- .row:hover > .label[data-v-9b8fd08d]:dir(rtl),
4243
- .row:focus-within > .label[data-v-9b8fd08d]:dir(rtl) {
4242
+ .row:hover > .label[data-v-d093d318]:dir(rtl),
4243
+ .row:focus-within > .label[data-v-d093d318]:dir(rtl) {
4244
4244
  mask-image: linear-gradient(
4245
4245
  to left,
4246
4246
  #000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-3)),
4247
4247
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
4248
4248
  );
4249
4249
  }
4250
- .row:hover > .label > [data-v-9b8fd08d-s],
4251
- .row:focus-within > .label > [data-v-9b8fd08d-s] {
4250
+ .row:hover > .label > [data-v-d093d318-s],
4251
+ .row:focus-within > .label > [data-v-d093d318-s] {
4252
4252
  text-overflow: clip;
4253
4253
  }
4254
- .actions[data-v-9b8fd08d] {
4254
+ .actions[data-v-d093d318] {
4255
4255
  position: absolute;
4256
4256
  z-index: 1;
4257
4257
  inset-block: 0;
@@ -4263,18 +4263,18 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4263
4263
  pointer-events: none;
4264
4264
  transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
4265
4265
  }
4266
- .row:hover > .actions[data-v-9b8fd08d],
4267
- .row:focus-within > .actions[data-v-9b8fd08d] {
4266
+ .row:hover > .actions[data-v-d093d318],
4267
+ .row:focus-within > .actions[data-v-d093d318] {
4268
4268
  opacity: 1;
4269
4269
  pointer-events: auto;
4270
4270
  }
4271
4271
 
4272
4272
  /* Without hover there is no reveal, so the controls keep their own column. */
4273
4273
  @media (hover: none) {
4274
- .row[data-v-9b8fd08d] {
4274
+ .row[data-v-d093d318] {
4275
4275
  grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
4276
4276
  }
4277
- .actions[data-v-9b8fd08d] {
4277
+ .actions[data-v-d093d318] {
4278
4278
  position: static;
4279
4279
  grid-column: 4;
4280
4280
  grid-row: 1;
@@ -4284,7 +4284,7 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4284
4284
  pointer-events: auto;
4285
4285
  }
4286
4286
  }
4287
- .drag-handle[data-v-9b8fd08d] {
4287
+ .drag-handle[data-v-d093d318] {
4288
4288
  position: absolute;
4289
4289
  z-index: 2;
4290
4290
  inset-block-start: 50%;
@@ -4305,16 +4305,16 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4305
4305
  transform: translateY(-50%);
4306
4306
  transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
4307
4307
  }
4308
- .row:hover .drag-handle[data-v-9b8fd08d],
4309
- .drag-handle[data-v-9b8fd08d]:hover,
4310
- .drag-handle[data-v-9b8fd08d]:focus-visible,
4311
- [data-component~="ui-tree-item"][data-dragging] > .row > .drag-handle[data-v-9b8fd08d] {
4308
+ .row:hover .drag-handle[data-v-d093d318],
4309
+ .drag-handle[data-v-d093d318]:hover,
4310
+ .drag-handle[data-v-d093d318]:focus-visible,
4311
+ [data-component~="ui-tree-item"][data-dragging] > .row > .drag-handle[data-v-d093d318] {
4312
4312
  opacity: 1;
4313
4313
  }
4314
- .drag-handle[data-v-9b8fd08d]:active {
4314
+ .drag-handle[data-v-d093d318]:active {
4315
4315
  cursor: grabbing;
4316
4316
  }
4317
- .drop-indicator[data-v-9b8fd08d] {
4317
+ .drop-indicator[data-v-d093d318] {
4318
4318
  position: absolute;
4319
4319
  z-index: 3;
4320
4320
  inset-inline: 1px;
@@ -4324,8 +4324,8 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4324
4324
  background: var(--ui-tree-drop-color, var(--ui-accent-solid));
4325
4325
  pointer-events: none;
4326
4326
  }
4327
- .drop-indicator[data-v-9b8fd08d]::before,
4328
- .drop-indicator[data-v-9b8fd08d]::after {
4327
+ .drop-indicator[data-v-d093d318]::before,
4328
+ .drop-indicator[data-v-d093d318]::after {
4329
4329
  content: "";
4330
4330
  position: absolute;
4331
4331
  inset-block-start: 50%;
@@ -4336,39 +4336,39 @@ svg[data-v-9b8fd08d-s],img[data-v-9b8fd08d-s] {
4336
4336
  background: var(--ui-surface-elevated);
4337
4337
  transform: translateY(-50%);
4338
4338
  }
4339
- .drop-indicator[data-v-9b8fd08d]::before {
4339
+ .drop-indicator[data-v-d093d318]::before {
4340
4340
  inset-inline-start: -1px;
4341
4341
  }
4342
- .drop-indicator[data-v-9b8fd08d]::after {
4342
+ .drop-indicator[data-v-d093d318]::after {
4343
4343
  inset-inline-end: -1px;
4344
4344
  }
4345
- [data-component~="ui-tree-item"][data-drop-position="before"] > .row > .row-drop-indicator[data-v-9b8fd08d] {
4345
+ [data-component~="ui-tree-item"][data-drop-position="before"] > .row > .row-drop-indicator[data-v-d093d318] {
4346
4346
  display: block;
4347
4347
  inset-block-start: -1px;
4348
4348
  }
4349
- [data-component~="ui-tree-item"][data-drop-position="after"] > .subtree-drop-indicator[data-v-9b8fd08d] {
4349
+ [data-component~="ui-tree-item"][data-drop-position="after"] > .subtree-drop-indicator[data-v-d093d318] {
4350
4350
  display: block;
4351
4351
  inset-block-end: -1px;
4352
4352
  }
4353
- .children[hidden][data-v-9b8fd08d] {
4353
+ .children[hidden][data-v-d093d318] {
4354
4354
  display: none;
4355
4355
  }
4356
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"][data-v-9b8fd08d] {
4356
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"][data-v-d093d318] {
4357
4357
  --_tree-row-min-height: 44px;
4358
4358
  }
4359
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle[data-v-9b8fd08d] {
4359
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle[data-v-d093d318] {
4360
4360
  display: none;
4361
4361
  }
4362
4362
  @media (prefers-reduced-motion: reduce) {
4363
- .row[data-v-9b8fd08d],
4364
- .disclosure-icon[data-v-9b8fd08d],
4365
- .drag-handle[data-v-9b8fd08d] {
4363
+ .row[data-v-d093d318],
4364
+ .disclosure-icon[data-v-d093d318],
4365
+ .drag-handle[data-v-d093d318] {
4366
4366
  transition: none;
4367
4367
  }
4368
4368
  }
4369
4369
 
4370
4370
  /* A component that sets its display still honours the hidden attribute on its root. */
4371
- [data-component~="ui-tree-item"][hidden][data-v-9b8fd08d] {
4371
+ [data-component~="ui-tree-item"][hidden][data-v-d093d318] {
4372
4372
  display: none;
4373
4373
  }
4374
4374
  /**