@threadlabs/looma 0.17.3 → 0.18.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 (71) hide show
  1. package/components/ui-avatar/ui-avatar.html +8 -4
  2. package/components/ui-badge/ui-badge.html +28 -34
  3. package/components/ui-button/ui-button.html +5 -0
  4. package/components/ui-checkbox/ui-checkbox.html +5 -5
  5. package/components/ui-combobox/ui-combobox.html +4 -48
  6. package/components/ui-icon-button/ui-icon-button.html +7 -7
  7. package/components/ui-input/ui-input.html +1 -1
  8. package/components/ui-input-group/ui-input-group.html +2 -2
  9. package/components/ui-listbox/ui-listbox.html +88 -12
  10. package/components/ui-listbox/ui-listbox.js +162 -18
  11. package/components/ui-search-result-row/ui-search-result-row.html +2 -6
  12. package/components/ui-search-shell/ui-search-shell.html +2 -11
  13. package/components/ui-select/ui-select.html +1 -1
  14. package/components/ui-spinner/ui-spinner.html +45 -18
  15. package/components/ui-textarea/ui-textarea.html +1 -1
  16. package/components/ui-tooltip/ui-tooltip.html +2 -2
  17. package/dist/index.js +1 -1
  18. package/editor/chunks/extensions.js +5 -0
  19. package/package.json +1 -1
  20. package/styles/ui-avatar.css +6 -2
  21. package/styles/ui-badge.css +30 -40
  22. package/styles/ui-button.css +7 -0
  23. package/styles/ui-checkbox.css +6 -6
  24. package/styles/ui-combobox.css +0 -52
  25. package/styles/ui-icon-button.css +7 -7
  26. package/styles/ui-input-group.css +2 -2
  27. package/styles/ui-input.css +1 -1
  28. package/styles/ui-listbox.css +33 -8
  29. package/styles/ui-search-result-row.css +2 -6
  30. package/styles/ui-search-shell.css +2 -13
  31. package/styles/ui-select.css +1 -1
  32. package/styles/ui-spinner.css +38 -19
  33. package/styles/ui-textarea.css +1 -1
  34. package/styles/ui-tooltip.css +2 -2
  35. package/tokens.css +67 -2
  36. package/vanilla/UiCombobox.js +9 -1
  37. package/vanilla/UiListbox.d.ts +3 -1
  38. package/vanilla/UiListbox.js +65 -18
  39. package/vanilla/UiSpinner.js +19 -1
  40. package/vue/UiAvatar.vue +11 -2
  41. package/vue/UiBadge.vue +30 -36
  42. package/vue/UiButton.vue +5 -0
  43. package/vue/UiCheckbox.vue +5 -5
  44. package/vue/UiCombobox.vue +4 -49
  45. package/vue/UiIconButton.vue +10 -7
  46. package/vue/UiInput.vue +1 -1
  47. package/vue/UiInputGroup.vue +2 -2
  48. package/vue/UiListbox.d.ts +18 -5
  49. package/vue/UiListbox.vue +142 -25
  50. package/vue/UiSearchResultRow.vue +2 -6
  51. package/vue/UiSearchShell.vue +2 -13
  52. package/vue/UiSelect.vue +1 -1
  53. package/vue/UiSpinner.vue +45 -18
  54. package/vue/UiTextarea.vue +1 -1
  55. package/vue/UiTooltip.vue +2 -2
  56. package/vue/chunks/UiAvatar.js +2 -1
  57. package/vue/chunks/UiBadge.js +1 -1
  58. package/vue/chunks/UiButton.js +1 -1
  59. package/vue/chunks/UiCheckbox.js +1 -1
  60. package/vue/chunks/UiCombobox.js +11 -2
  61. package/vue/chunks/UiIconButton.js +1 -1
  62. package/vue/chunks/UiInput.js +1 -1
  63. package/vue/chunks/UiInputGroup.js +1 -1
  64. package/vue/chunks/UiListbox.js +134 -20
  65. package/vue/chunks/UiSearchResultRow.js +1 -1
  66. package/vue/chunks/UiSearchShell.js +1 -1
  67. package/vue/chunks/UiSelect.js +1 -1
  68. package/vue/chunks/UiSpinner.js +29 -3
  69. package/vue/chunks/UiTextarea.js +1 -1
  70. package/vue/chunks/UiTooltip.js +1 -1
  71. package/vue/components.css +426 -440
@@ -134,7 +134,7 @@ svg[data-v-988c6eae] {
134
134
  syntax: "*";
135
135
  inherits: false;
136
136
  }
137
- [data-component~="ui-avatar"][data-v-f9a69ac3] {
137
+ [data-component~="ui-avatar"][data-v-f0891fb1] {
138
138
  --_ui-default-icon-size: 1.25rem;
139
139
  display: inline-grid;
140
140
  place-items: center;
@@ -142,7 +142,11 @@ svg[data-v-988c6eae] {
142
142
  inline-size: 2.5rem;
143
143
  block-size: 2.5rem;
144
144
  border-radius: var(--ui-avatar-radius, var(--ui-radius-round));
145
- border: 1px solid var(--ui-avatar-border, var(--ui-border-strong));
145
+ border: 1px solid
146
+ var(
147
+ --ui-avatar-border,
148
+ color-mix(in srgb, var(--ui-accent-solid) 35%, var(--ui-surface-default))
149
+ );
146
150
  background: var(--ui-avatar-surface, var(--ui-accent-soft));
147
151
  color: var(--ui-avatar-text, var(--ui-accent-subtle-text, var(--ui-accent-solid)));
148
152
  font: inherit;
@@ -150,29 +154,32 @@ svg[data-v-988c6eae] {
150
154
  font-weight: 600;
151
155
  text-transform: uppercase;
152
156
  }
153
- [data-component~="ui-avatar"][data-ui-avatar-state~="size=sm"][data-v-f9a69ac3] {
157
+ [data-component~="ui-avatar"][data-ui-avatar-state~="size=sm"][data-v-f0891fb1] {
154
158
  --_ui-default-icon-size: 1rem;
155
159
  inline-size: 1.75rem;
156
160
  block-size: 1.75rem;
157
161
  font-size: var(--ui-font-size-xs);
158
162
  }
159
- [data-component~="ui-avatar"][data-ui-avatar-state~="shape=square"][data-v-f9a69ac3] {
163
+ [data-component~="ui-avatar"][data-ui-avatar-state~="hasImage"][data-v-f0891fb1] {
164
+ border-color: var(--ui-avatar-border, var(--ui-border-strong));
165
+ }
166
+ [data-component~="ui-avatar"][data-ui-avatar-state~="shape=square"][data-v-f0891fb1] {
160
167
  border-radius: var(--ui-avatar-radius, var(--ui-radius-md));
161
168
  }
162
169
 
163
170
  /* An outline, not a dot: the avatar clips its content to the circle, and an outline is drawn
164
171
  outside the box, so the ring survives the clip and the overlap in an Avatar Group. */
165
- [data-component~="ui-avatar"][data-ui-avatar-state~="active"][data-v-f9a69ac3] {
166
- outline: 2px solid var(--ui-avatar-active-ring, var(--ui-success));
172
+ [data-component~="ui-avatar"][data-ui-avatar-state~="active"][data-v-f0891fb1] {
173
+ outline: 1px solid var(--ui-avatar-active-ring, var(--ui-accent-solid));
167
174
  outline-offset: 1px;
168
175
  }
169
- .image[data-v-f9a69ac3],img[data-v-f9a69ac3-s] {
176
+ .image[data-v-f0891fb1],img[data-v-f0891fb1-s] {
170
177
  grid-area: 1 / 1;
171
178
  inline-size: 100%;
172
179
  block-size: 100%;
173
180
  object-fit: cover;
174
181
  }
175
- .fallback[data-v-f9a69ac3] {
182
+ .fallback[data-v-f0891fb1] {
176
183
  grid-area: 1 / 1;
177
184
  display: inline-flex;
178
185
  align-items: center;
@@ -185,7 +192,7 @@ svg[data-v-988c6eae] {
185
192
  /* Centre the glyphs, not the line box: a label without descenders otherwise reads high.
186
193
  * Trimming applies to block containers, so the box is a block with centred content. */
187
194
  @supports (text-box-trim: trim-both) {
188
- .fallback[data-v-f9a69ac3] {
195
+ .fallback[data-v-f0891fb1] {
189
196
  display: block;
190
197
  text-align: center;
191
198
  align-content: center;
@@ -193,12 +200,12 @@ svg[data-v-988c6eae] {
193
200
  text-box-edge: cap alphabetic;
194
201
  }
195
202
  }
196
- [hidden][data-v-f9a69ac3] {
203
+ [hidden][data-v-f0891fb1] {
197
204
  display: none;
198
205
  }
199
206
 
200
207
  /* A component that sets its display still honours the hidden attribute on its root. */
201
- [data-component~="ui-avatar"][hidden][data-v-f9a69ac3] {
208
+ [data-component~="ui-avatar"][hidden][data-v-f0891fb1] {
202
209
  display: none;
203
210
  }
204
211
 
@@ -316,8 +323,8 @@ svg[data-v-988c6eae] {
316
323
  syntax: "*";
317
324
  inherits: false;
318
325
  }
319
- [data-component~="ui-badge"][data-v-38a29166] {
320
- --_badge-surface: var(--ui-surface-subtle);
326
+ [data-component~="ui-badge"][data-v-fe098822] {
327
+ --_badge-surface: color-mix(in srgb, var(--ui-surface-subtle) 80%, var(--ui-surface-default));
321
328
  --_badge-text: var(--ui-text-secondary);
322
329
  /* Sit between the soft fill and its stronger theme ink. */
323
330
  --_badge-border: color-mix(in srgb, var(--_badge-surface) 75%, var(--_badge-text) 25%);
@@ -325,7 +332,7 @@ svg[data-v-988c6eae] {
325
332
  surface, text, and border hooks. Each value is invalid, so the tone shows, while it is unset. The
326
333
  mixes keep 4.5:1 text contrast for any colour, in a light theme or a dark one. */
327
334
  --_ui-badge-color: var(--ui-badge-color);
328
- --_badge-color-wash: color-mix(in oklab, var(--_ui-badge-color) 15%, var(--ui-surface-default));
335
+ --_badge-color-wash: color-mix(in oklab, var(--_ui-badge-color) 13%, var(--ui-surface-default));
329
336
  --_badge-color-ink: color-mix(in oklab, var(--_ui-badge-color) 35%, var(--ui-text-primary));
330
337
  --_badge-color-surface: var(--_badge-color-wash);
331
338
  --_badge-color-border: color-mix(
@@ -360,7 +367,7 @@ svg[data-v-988c6eae] {
360
367
  * Trimming applies to block containers; an inline-block is one and, like the inline-flex it
361
368
  * replaces, still sizes to its label rather than filling its container. */
362
369
  @supports (text-box-trim: trim-both) {
363
- [data-component~="ui-badge"][data-v-38a29166] {
370
+ [data-component~="ui-badge"][data-v-fe098822] {
364
371
  display: inline-block;
365
372
  min-block-size: var(--ui-badge-min-block-size, 1.5rem);
366
373
  text-align: center;
@@ -369,65 +376,65 @@ svg[data-v-988c6eae] {
369
376
  text-box-edge: cap alphabetic;
370
377
  }
371
378
  }
372
- [data-component~="ui-badge"][data-ui-badge-state~="tone=accent"][data-v-38a29166] {
379
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=accent"][data-v-fe098822] {
373
380
  --_badge-surface: var(--ui-accent-strong-surface, var(--ui-accent-solid));
374
381
  --_badge-border: var(--ui-accent-strong-surface, var(--ui-accent-solid));
375
382
  --_badge-text: var(--ui-accent-on-strong, var(--ui-text-on-accent));
376
383
  }
377
- [data-component~="ui-badge"][data-ui-badge-state~="tone=danger"][data-v-38a29166] {
384
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=danger"][data-v-fe098822] {
378
385
  --_badge-surface: var(--ui-danger-strong-surface, var(--ui-danger-solid));
379
386
  --_badge-border: var(--ui-danger-strong-surface, var(--ui-danger-solid));
380
387
  --_badge-text: var(--ui-danger-on-strong, var(--ui-text-on-accent));
381
388
  }
382
- [data-component~="ui-badge"][data-ui-badge-state~="tone=success"][data-v-38a29166] {
389
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=success"][data-v-fe098822] {
383
390
  --_badge-surface: var(--ui-success-strong-surface, var(--ui-success-solid));
384
391
  --_badge-border: var(--ui-success-strong-surface, var(--ui-success-solid));
385
392
  --_badge-text: var(--ui-success-on-strong, var(--ui-text-on-accent));
386
393
  }
387
- [data-component~="ui-badge"][data-ui-badge-state~="tone=warning"][data-v-38a29166] {
394
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=warning"][data-v-fe098822] {
388
395
  --_badge-surface: var(--ui-warning-strong-surface, var(--ui-warning-solid));
389
396
  --_badge-border: var(--ui-warning-strong-surface, var(--ui-warning-solid));
390
397
  --_badge-text: var(--ui-warning-on-strong, var(--ui-text-on-accent));
391
398
  }
392
- [data-component~="ui-badge"][data-ui-badge-state~="tone=info"][data-v-38a29166] {
399
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=info"][data-v-fe098822] {
393
400
  --_badge-surface: var(--ui-info-strong-surface, var(--ui-info-solid));
394
401
  --_badge-border: var(--ui-info-strong-surface, var(--ui-info-solid));
395
402
  --_badge-text: var(--ui-info-on-strong, var(--ui-text-on-accent));
396
403
  }
397
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=accent"][data-v-38a29166] {
398
- --_badge-surface: color-mix(in srgb, var(--ui-accent-solid) 22%, var(--ui-surface-default));
399
- --_badge-border: color-mix(in srgb, var(--ui-accent-solid) 28%, var(--ui-surface-default));
404
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=accent"][data-v-fe098822] {
405
+ --_badge-surface: color-mix(in srgb, var(--ui-accent-solid) 19%, var(--ui-surface-default));
406
+ --_badge-border: color-mix(in srgb, var(--ui-accent-solid) 25%, var(--ui-surface-default));
400
407
  --_badge-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
401
408
  }
402
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=danger"][data-v-38a29166] {
403
- --_badge-surface: color-mix(in srgb, var(--ui-danger-solid) 22%, var(--ui-surface-default));
404
- --_badge-border: color-mix(in srgb, var(--ui-danger-solid) 28%, var(--ui-surface-default));
409
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=danger"][data-v-fe098822] {
410
+ --_badge-surface: color-mix(in srgb, var(--ui-danger-solid) 19%, var(--ui-surface-default));
411
+ --_badge-border: color-mix(in srgb, var(--ui-danger-solid) 25%, var(--ui-surface-default));
405
412
  --_badge-text: var(--ui-danger-subtle-text, var(--ui-danger-solid));
406
413
  }
407
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=success"][data-v-38a29166] {
408
- --_badge-surface: color-mix(in srgb, var(--ui-success-solid) 22%, var(--ui-surface-default));
409
- --_badge-border: color-mix(in srgb, var(--ui-success-solid) 28%, var(--ui-surface-default));
414
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=success"][data-v-fe098822] {
415
+ --_badge-surface: color-mix(in srgb, var(--ui-success-solid) 19%, var(--ui-surface-default));
416
+ --_badge-border: color-mix(in srgb, var(--ui-success-solid) 25%, var(--ui-surface-default));
410
417
  --_badge-text: var(--ui-success-subtle-text, var(--ui-success-solid));
411
418
  }
412
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=warning"][data-v-38a29166] {
413
- --_badge-surface: color-mix(in srgb, var(--ui-warning-solid) 22%, var(--ui-surface-default));
414
- --_badge-border: color-mix(in srgb, var(--ui-warning-solid) 28%, var(--ui-surface-default));
419
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=warning"][data-v-fe098822] {
420
+ --_badge-surface: color-mix(in srgb, var(--ui-warning-solid) 19%, var(--ui-surface-default));
421
+ --_badge-border: color-mix(in srgb, var(--ui-warning-solid) 25%, var(--ui-surface-default));
415
422
  --_badge-text: var(--ui-warning-subtle-text, var(--ui-warning-solid));
416
423
  }
417
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=info"][data-v-38a29166] {
418
- --_badge-surface: color-mix(in srgb, var(--ui-info-solid) 22%, var(--ui-surface-default));
419
- --_badge-border: color-mix(in srgb, var(--ui-info-solid) 28%, var(--ui-surface-default));
424
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=info"][data-v-fe098822] {
425
+ --_badge-surface: color-mix(in srgb, var(--ui-info-solid) 19%, var(--ui-surface-default));
426
+ --_badge-border: color-mix(in srgb, var(--ui-info-solid) 25%, var(--ui-surface-default));
420
427
  --_badge-text: var(--ui-info-subtle-text, var(--ui-info-solid));
421
428
  }
422
429
 
423
430
  /* A solid colour fills with the ink. Its text is the page surface, mixed at 0% only so that it too is
424
431
  invalid while the hook is unset. */
425
- [data-component~="ui-badge"][data-ui-badge-state~="variant=solid"][data-v-38a29166] {
432
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=solid"][data-v-fe098822] {
426
433
  --_badge-color-surface: var(--_badge-color-ink);
427
434
  --_badge-color-border: var(--_badge-color-ink);
428
435
  --_badge-color-text: color-mix(in oklab, var(--_ui-badge-color) 0%, var(--ui-surface-default));
429
436
  }
430
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-v-38a29166] {
437
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-v-fe098822] {
431
438
  --_badge-surface: var(--ui-surface-default);
432
439
  --_badge-border: var(--ui-border-strong);
433
440
  --_badge-text: var(--ui-text-secondary);
@@ -435,35 +442,37 @@ svg[data-v-988c6eae] {
435
442
  --_badge-color-surface: initial;
436
443
  --_badge-color-border: var(--_badge-color-ink);
437
444
  }
438
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=accent"][data-v-38a29166] {
445
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=accent"][data-v-fe098822] {
439
446
  --_badge-border: var(--ui-accent-solid);
440
447
  --_badge-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
441
448
  }
442
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=danger"][data-v-38a29166] {
449
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=danger"][data-v-fe098822] {
443
450
  --_badge-border: var(--ui-danger-solid);
444
451
  --_badge-text: var(--ui-danger-subtle-text, var(--ui-danger-solid));
445
452
  }
446
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=success"][data-v-38a29166] {
453
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=success"][data-v-fe098822] {
447
454
  --_badge-border: var(--ui-success-solid);
448
455
  --_badge-text: var(--ui-success-subtle-text, var(--ui-success-solid));
449
456
  }
450
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=warning"][data-v-38a29166] {
457
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=warning"][data-v-fe098822] {
451
458
  --_badge-border: var(--ui-warning-solid);
452
459
  --_badge-text: var(--ui-warning-subtle-text, var(--ui-warning-solid));
453
460
  }
454
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=info"][data-v-38a29166] {
461
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="tone=info"][data-v-fe098822] {
455
462
  --_badge-border: var(--ui-info-solid);
456
463
  --_badge-text: var(--ui-info-subtle-text, var(--ui-info-solid));
457
464
  }
458
465
 
459
- /* A tag is flat at the start and points at the end. The point is cut from the box, so it has no
460
- outline to follow: the edge is the fill. The end padding grows by the point's depth so the
461
- label never runs into it. */
462
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-38a29166] {
466
+ /* The clipped point needs an inset surface over an outer border-colour shape: a native border
467
+ has no diagonal edge to follow. Keep this edge for every tag variant. */
468
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-fe098822] {
463
469
  --_badge-point: var(--ui-badge-point, var(--ui-space-2));
464
470
 
471
+ position: relative;
472
+ isolation: isolate;
465
473
  border-color: transparent;
466
474
  border-radius: 0;
475
+ background: var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
467
476
  padding-inline-end: calc(var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point));
468
477
  clip-path: polygon(
469
478
  0 0,
@@ -473,25 +482,10 @@ svg[data-v-988c6eae] {
473
482
  0 100%
474
483
  );
475
484
  }
476
- [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-38a29166]:dir(rtl) {
477
- padding-inline-end: var(--ui-badge-padding-inline, var(--ui-space-2));
478
- padding-inline-start: calc(
479
- var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point)
480
- );
481
- clip-path: polygon(var(--_badge-point) 0, 100% 0, 100% 100%, var(--_badge-point) 100%, 0 50%);
482
- }
483
-
484
- /* The tag clips its point, including the native border. Draw the outer shape in the border
485
- colour and an inset inner shape in the surface colour to keep a visible diagonal edge. */
486
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="shape=tag"][data-v-38a29166] {
487
- position: relative;
488
- isolation: isolate;
489
- background: var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
490
- }
491
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="shape=tag"][data-v-38a29166]::before {
485
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-fe098822]::before {
492
486
  content: "";
493
487
  position: absolute;
494
- inset: 1px;
488
+ inset: 0;
495
489
  z-index: -1;
496
490
  background: var(--_badge-outline-surface);
497
491
  clip-path: polygon(
@@ -503,22 +497,29 @@ svg[data-v-988c6eae] {
503
497
  );
504
498
  pointer-events: none;
505
499
  }
506
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="shape=tag"][data-v-38a29166]:dir(rtl)::before {
500
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-fe098822]:dir(rtl) {
501
+ padding-inline-end: var(--ui-badge-padding-inline, var(--ui-space-2));
502
+ padding-inline-start: calc(
503
+ var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point)
504
+ );
505
+ clip-path: polygon(var(--_badge-point) 0, 100% 0, 100% 100%, var(--_badge-point) 100%, 0 50%);
506
+ }
507
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-fe098822]:dir(rtl)::before {
507
508
  clip-path: polygon(var(--_badge-point) 0, 100% 0, 100% 100%, var(--_badge-point) 100%, 0 50%);
508
509
  }
509
510
  @media (forced-colors: active) {
510
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="shape=tag"][data-v-38a29166] {
511
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-fe098822] {
511
512
  forced-color-adjust: none;
512
513
  background: CanvasText;
513
514
  color: CanvasText;
514
515
  }
515
- [data-component~="ui-badge"][data-ui-badge-state~="variant=outline"][data-ui-badge-state~="shape=tag"][data-v-38a29166]::before {
516
+ [data-component~="ui-badge"][data-ui-badge-state~="shape=tag"][data-v-fe098822]::before {
516
517
  background: Canvas;
517
518
  }
518
519
  }
519
520
 
520
521
  /* A component that sets its display still honours the hidden attribute on its root. */
521
- [data-component~="ui-badge"][hidden][data-v-38a29166] {
522
+ [data-component~="ui-badge"][hidden][data-v-fe098822] {
522
523
  display: none;
523
524
  }
524
525
 
@@ -589,52 +590,69 @@ ol[data-v-ee3145b6] {
589
590
  display: none;
590
591
  }
591
592
 
592
- /* Something is on its way. The ring chases in the current text colour; with reduced motion it holds still,
593
- and the label (or the text beside it) still says what is happening. */
594
- [data-component~="ui-spinner"][data-v-1c74343f] {
593
+ /* A rounded SVG arc grows and recedes over a quiet full-circle track. */
594
+ [data-component~="ui-spinner"][data-v-7dbd4f40] {
595
595
  display: inline-flex;
596
596
  flex: none;
597
597
  align-items: center;
598
598
  justify-content: center;
599
+ box-sizing: border-box;
599
600
  inline-size: 1em;
600
601
  block-size: 1em;
601
602
  color: currentColor;
602
603
  font-size: var(--ui-font-size-lg);
603
604
  line-height: 1;
604
605
  }
605
- .ring[data-v-1c74343f] {
606
+ [data-component~="ui-spinner"][data-ui-spinner-state~="size=sm"][data-v-7dbd4f40] {
607
+ font-size: var(--ui-font-size-md);
608
+ }
609
+ svg[data-v-7dbd4f40] {
606
610
  display: block;
607
- box-sizing: border-box;
608
611
  inline-size: 100%;
609
612
  block-size: 100%;
610
- border: 2px solid transparent;
611
- border-block-start-color: currentColor;
612
- border-inline-end-color: color-mix(in srgb, currentColor 52%, transparent);
613
- border-radius: 50%;
614
- animation: ui-spinner-chase-1c74343f 1s linear infinite;
613
+ animation: ui-spinner-rotate-7dbd4f40 2s linear infinite;
615
614
  }
616
- [data-component~="ui-spinner"][data-ui-spinner-state~="size=sm"][data-v-1c74343f] {
617
- font-size: var(--ui-font-size-md);
615
+ circle[data-v-7dbd4f40] {
616
+ stroke-width: 3;
617
+ stroke-linecap: round;
618
618
  }
619
- @keyframes ui-spinner-chase-1c74343f {
620
- 0% {
621
- transform: rotate(0);
619
+ .track[data-v-7dbd4f40] {
620
+ stroke: color-mix(in srgb, currentColor 16%, transparent);
622
621
  }
623
- 70% {
624
- transform: rotate(160deg);
622
+ .arc[data-v-7dbd4f40] {
623
+ stroke: currentColor;
624
+ stroke-dasharray: 90, 150;
625
+ stroke-dashoffset: 0;
626
+ animation: ui-spinner-dash-7dbd4f40 1.5s ease-in-out infinite;
625
627
  }
628
+ @keyframes ui-spinner-rotate-7dbd4f40 {
626
629
  100% {
627
630
  transform: rotate(1turn);
628
631
  }
629
632
  }
633
+ @keyframes ui-spinner-dash-7dbd4f40 {
634
+ 0% {
635
+ stroke-dasharray: 1, 150;
636
+ stroke-dashoffset: 0;
637
+ }
638
+ 50% {
639
+ stroke-dasharray: 90, 150;
640
+ stroke-dashoffset: -35;
641
+ }
642
+ 100% {
643
+ stroke-dasharray: 90, 150;
644
+ stroke-dashoffset: -124;
645
+ }
646
+ }
630
647
  @media (prefers-reduced-motion: reduce) {
631
- .ring[data-v-1c74343f] {
648
+ svg[data-v-7dbd4f40],
649
+ .arc[data-v-7dbd4f40] {
632
650
  animation: none;
633
651
  }
634
652
  }
635
653
 
636
654
  /* A component that sets its display still honours the hidden attribute on its root. */
637
- [data-component~="ui-spinner"][hidden][data-v-1c74343f] {
655
+ [data-component~="ui-spinner"][hidden][data-v-7dbd4f40] {
638
656
  display: none;
639
657
  }
640
658
 
@@ -711,7 +729,7 @@ ol[data-v-ee3145b6] {
711
729
  syntax: "*";
712
730
  inherits: false;
713
731
  }
714
- [data-component~="ui-button"][data-v-84ef27e9] {
732
+ [data-component~="ui-button"][data-v-a89a1895] {
715
733
  --_hue: var(--ui-accent);
716
734
  --_hue-hover: var(--ui-accent-hover);
717
735
  --_hue-active: var(--ui-accent-active);
@@ -730,15 +748,15 @@ ol[data-v-ee3145b6] {
730
748
  vertical-align: middle;
731
749
  color: var(--_tone-text);
732
750
  }
733
- [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-84ef27e9] {
751
+ [data-component~="ui-button"][data-ui-button-state~="align=start"][data-v-a89a1895] {
734
752
  justify-content: flex-start;
735
753
  text-align: start;
736
754
  }
737
- [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-84ef27e9] {
755
+ [data-component~="ui-button"][data-ui-button-state~="stretch"][data-v-a89a1895] {
738
756
  display: flex;
739
757
  inline-size: 100%;
740
758
  }
741
- [data-component~="ui-button"][data-v-84ef27e9] {
759
+ [data-component~="ui-button"][data-v-a89a1895] {
742
760
  appearance: none;
743
761
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
744
762
  border-style: solid;
@@ -764,24 +782,29 @@ ol[data-v-ee3145b6] {
764
782
  box-shadow var(--ui-motion-base) var(--ui-motion-ease);
765
783
  margin: 0;
766
784
  }
767
- .spinner-wrap[data-v-84ef27e9] {
785
+
786
+ /* An anchor keeps the boxed button look even when an app styles ordinary links. */
787
+ [data-component~="ui-button"][data-v-a89a1895]:is(a) {
788
+ text-decoration: none;
789
+ }
790
+ .spinner-wrap[data-v-a89a1895] {
768
791
  display: inline-flex;
769
792
  flex: none;
770
793
  margin-inline-end: var(--ui-space-2);
771
794
  vertical-align: middle;
772
795
  }
773
796
  @supports (text-box-trim: trim-both) {
774
- [data-component~="ui-button"][data-v-84ef27e9] {
797
+ [data-component~="ui-button"][data-v-a89a1895] {
775
798
  text-box-trim: trim-both;
776
799
  text-box-edge: cap alphabetic;
777
800
  }
778
801
  }
779
- [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-84ef27e9] {
802
+ [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-a89a1895] {
780
803
  min-block-size: var(--ui-control-size-sm);
781
804
  padding: var(--ui-space-1) var(--ui-space-2);
782
805
  font-size: var(--ui-font-size-sm);
783
806
  }
784
- [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-84ef27e9] {
807
+ [data-component~="ui-button"][data-ui-button-state~="size=lg"][data-v-a89a1895] {
785
808
  min-block-size: var(--ui-control-size-lg);
786
809
  padding: var(--ui-space-3) var(--ui-space-4);
787
810
  font-size: var(--ui-font-size-md);
@@ -789,29 +812,29 @@ ol[data-v-ee3145b6] {
789
812
 
790
813
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
791
814
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
792
- [data-component~="ui-button"][data-v-84ef27e9]:hover:not(:disabled, [aria-disabled="true"]) {
815
+ [data-component~="ui-button"][data-v-a89a1895]:hover:not(:disabled, [aria-disabled="true"]) {
793
816
  border-color: var(--ui-button-hover-border, var(--_tone-hover));
794
817
  background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
795
818
  }
796
819
 
797
820
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
798
- [data-component~="ui-button"][data-v-84ef27e9]:active:not(:disabled, [aria-disabled="true"]) {
821
+ [data-component~="ui-button"][data-v-a89a1895]:active:not(:disabled, [aria-disabled="true"]) {
799
822
  background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
800
823
  background-image: none;
801
824
  box-shadow: var(--ui-pressed);
802
825
  }
803
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-84ef27e9],
804
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-84ef27e9] {
826
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895],
827
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895] {
805
828
  border-color: var(--_tone);
806
829
  background-color: var(--_tone);
807
830
  color: var(--_on-tone);
808
831
  box-shadow: var(--ui-button-solid-shadow, var(--ui-raised));
809
832
  }
810
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-84ef27e9], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-84ef27e9]):hover:not(:disabled, [aria-disabled="true"]) {
833
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895]):hover:not(:disabled, [aria-disabled="true"]) {
811
834
  background-color: var(--_tone-hover);
812
835
  border-color: var(--_tone-hover);
813
836
  }
814
- :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-84ef27e9], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-84ef27e9]):active:not(:disabled, [aria-disabled="true"]) {
837
+ :is([data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895]):active:not(:disabled, [aria-disabled="true"]) {
815
838
  background-color: var(--_tone-active);
816
839
  border-color: var(--_tone-active);
817
840
  background-image: none;
@@ -820,43 +843,43 @@ ol[data-v-ee3145b6] {
820
843
 
821
844
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
822
845
  destructive secondary action, not a special case. */
823
- [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-84ef27e9] {
846
+ [data-component~="ui-button"][data-ui-button-state~="tone=neutral"][data-v-a89a1895] {
824
847
  --_hue: var(--ui-text);
825
848
  --_hue-hover: var(--ui-text);
826
849
  --_hue-active: var(--ui-text);
827
850
  --_hue-text: var(--ui-text);
828
851
  --_on-hue: var(--ui-surface);
829
852
  }
830
- [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-84ef27e9],
831
- [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-84ef27e9] {
853
+ [data-component~="ui-button"][data-ui-button-state~="tone=danger"][data-v-a89a1895],
854
+ [data-component~="ui-button"][data-ui-button-state~="variant=danger"][data-v-a89a1895] {
832
855
  --_hue: var(--ui-danger);
833
856
  --_hue-hover: var(--ui-danger-hover);
834
857
  --_hue-active: var(--ui-danger-hover);
835
858
  --_hue-text: var(--ui-danger-hover);
836
859
  --_on-hue: var(--ui-on-danger);
837
860
  }
838
- [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-84ef27e9] {
861
+ [data-component~="ui-button"][data-ui-button-state~="tone=success"][data-v-a89a1895] {
839
862
  --_hue: var(--ui-success);
840
863
  --_hue-hover: color-mix(in srgb, var(--ui-success) 85%, #000);
841
864
  --_hue-active: color-mix(in srgb, var(--ui-success) 75%, #000);
842
865
  --_hue-text: color-mix(in srgb, var(--ui-success) 85%, #000);
843
866
  --_on-hue: var(--ui-surface);
844
867
  }
845
- [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-84ef27e9] {
868
+ [data-component~="ui-button"][data-ui-button-state~="tone=warning"][data-v-a89a1895] {
846
869
  --_hue: var(--ui-warning);
847
870
  --_hue-hover: color-mix(in srgb, var(--ui-warning) 85%, #000);
848
871
  --_hue-active: color-mix(in srgb, var(--ui-warning) 75%, #000);
849
872
  --_hue-text: color-mix(in srgb, var(--ui-warning) 85%, #000);
850
873
  --_on-hue: var(--ui-surface);
851
874
  }
852
- [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-84ef27e9] {
875
+ [data-component~="ui-button"][data-ui-button-state~="tone=info"][data-v-a89a1895] {
853
876
  --_hue: var(--ui-info);
854
877
  --_hue-hover: color-mix(in srgb, var(--ui-info) 85%, #000);
855
878
  --_hue-active: color-mix(in srgb, var(--ui-info) 75%, #000);
856
879
  --_hue-text: color-mix(in srgb, var(--ui-info) 85%, #000);
857
880
  --_on-hue: var(--ui-surface);
858
881
  }
859
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-84ef27e9] {
882
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895] {
860
883
  border-color: transparent;
861
884
  background: transparent;
862
885
  box-shadow: none;
@@ -864,24 +887,24 @@ ol[data-v-ee3145b6] {
864
887
  }
865
888
 
866
889
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
867
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-84ef27e9]:hover:not(:disabled, [aria-disabled="true"]) {
890
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895]:hover:not(:disabled, [aria-disabled="true"]) {
868
891
  background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
869
892
  border-color: transparent;
870
893
  }
871
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-84ef27e9]:active:not(:disabled, [aria-disabled="true"]) {
894
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895]:active:not(:disabled, [aria-disabled="true"]) {
872
895
  background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 16%));
873
896
  border-color: transparent;
874
897
  box-shadow: var(--ui-pressed);
875
898
  }
876
899
 
877
900
  /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
878
- [data-component~="ui-button"][data-v-84ef27e9]:focus-visible {
901
+ [data-component~="ui-button"][data-v-a89a1895]:focus-visible {
879
902
  outline: none;
880
903
  box-shadow:
881
904
  var(--ui-button-shadow, var(--ui-raised)),
882
905
  var(--ui-focus-halo);
883
906
  }
884
- [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-84ef27e9]:focus-visible {
907
+ [data-component~="ui-button"][data-ui-button-state~="variant=solid"][data-v-a89a1895]:focus-visible {
885
908
  box-shadow:
886
909
  var(--ui-button-solid-shadow, var(--ui-raised)),
887
910
  var(--ui-focus-halo);
@@ -889,7 +912,7 @@ ol[data-v-ee3145b6] {
889
912
 
890
913
  /* A loading action stays visually active; only an explicitly disabled action takes the
891
914
  neutral disabled palette. Its flat surface and muted ink make the state unambiguous. */
892
- [data-component~="ui-button"][data-v-84ef27e9]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
915
+ [data-component~="ui-button"][data-v-a89a1895]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
893
916
  border-color: var(--ui-disabled-border);
894
917
  background-color: var(--ui-disabled-surface);
895
918
  color: var(--ui-disabled-text);
@@ -899,19 +922,19 @@ ol[data-v-ee3145b6] {
899
922
  background-image: none;
900
923
  box-shadow: none;
901
924
  }
902
- :is([data-component~="ui-button"][data-ui-button-state~="loading"][data-v-84ef27e9], [data-component~="ui-button"][data-ui-button-state~="pending"][data-v-84ef27e9]):focus-visible {
925
+ :is([data-component~="ui-button"][data-ui-button-state~="loading"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="pending"][data-v-a89a1895]):focus-visible {
903
926
  box-shadow: var(--ui-focus-halo);
904
927
  }
905
928
 
906
929
  /* Ghost keeps no border, but gains the same neutral surface as other disabled buttons. */
907
- [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-84ef27e9]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
930
+ [data-component~="ui-button"][data-ui-button-state~="variant=ghost"][data-v-a89a1895]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
908
931
  background-color: var(--ui-disabled-surface);
909
932
  border-color: transparent;
910
933
  }
911
934
 
912
935
  /* The size states outrank :host, so sm is named too, or a small button would stay small. */
913
936
  @media (pointer: coarse) {
914
- [data-component~="ui-button"][data-v-84ef27e9], [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-84ef27e9] {
937
+ [data-component~="ui-button"][data-v-a89a1895], [data-component~="ui-button"][data-ui-button-state~="size=sm"][data-v-a89a1895] {
915
938
  min-block-size: var(--ui-control-min-block-size);
916
939
  }
917
940
  }
@@ -921,11 +944,11 @@ ol[data-v-ee3145b6] {
921
944
  a link-style one keeps its text size, so a standalone one ("See all" under a list) needs the
922
945
  area. Only the link needs it: a hit area on every button would reach over its neighbours. */
923
946
  html[data-ui-input-modality="touch"]
924
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-84ef27e9] {
947
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895] {
925
948
  position: relative;
926
949
  }
927
950
  html[data-ui-input-modality="touch"]
928
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-84ef27e9]::after {
951
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]::after {
929
952
  position: absolute;
930
953
  inset: 50% auto auto 50%;
931
954
  inline-size: max(100%, var(--ui-control-min-block-size));
@@ -936,7 +959,7 @@ html[data-ui-input-modality="touch"]
936
959
 
937
960
  /* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
938
961
  WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
939
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-84ef27e9] {
962
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895] {
940
963
  display: inline;
941
964
  min-block-size: 0;
942
965
  padding: 0;
@@ -954,21 +977,21 @@ html[data-ui-input-modality="touch"]
954
977
  color var(--ui-motion-fast) var(--ui-motion-ease),
955
978
  text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
956
979
  }
957
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-84ef27e9]:hover:not(:disabled, [aria-disabled="true"]) {
980
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:hover:not(:disabled, [aria-disabled="true"]) {
958
981
  color: var(--ui-button-link-hover-text, var(--ui-text-primary));
959
982
  text-decoration-color: currentColor;
960
983
  background: none;
961
984
  transform: none;
962
985
  }
963
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-84ef27e9]:active:not(:disabled, [aria-disabled="true"]) {
986
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:active:not(:disabled, [aria-disabled="true"]) {
964
987
  background: none;
965
988
  transform: none;
966
989
  }
967
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-84ef27e9]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
990
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
968
991
  background: none;
969
992
  border-color: transparent;
970
993
  }
971
- [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-84ef27e9]:focus-visible {
994
+ [data-component~="ui-button"][data-ui-button-state~="variant=link"][data-v-a89a1895]:focus-visible {
972
995
  box-shadow: none;
973
996
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
974
997
  outline: 2px solid var(--ui-focus-ring);
@@ -976,7 +999,7 @@ html[data-ui-input-modality="touch"]
976
999
  }
977
1000
 
978
1001
  /* A component that sets its display still honours the hidden attribute on its root. */
979
- [data-component~="ui-button"][hidden][data-v-84ef27e9] {
1002
+ [data-component~="ui-button"][hidden][data-v-a89a1895] {
980
1003
  display: none;
981
1004
  }
982
1005
 
@@ -1159,7 +1182,7 @@ html[data-ui-input-modality="touch"]
1159
1182
  syntax: "*";
1160
1183
  inherits: false;
1161
1184
  }
1162
- [data-component~="ui-checkbox"][data-v-62f133c7] {
1185
+ [data-component~="ui-checkbox"][data-v-9a218638] {
1163
1186
  /* Hooks do not inherit, so the parts below read them from the root. */
1164
1187
  --_ui-checkbox-size: var(--ui-checkbox-size);
1165
1188
  --_ui-checkbox-invalid-border: var(
@@ -1176,25 +1199,25 @@ html[data-ui-input-modality="touch"]
1176
1199
  }
1177
1200
 
1178
1201
  /* The label, and under it an optional line saying what the choice means. */
1179
- .text[data-v-62f133c7] {
1202
+ .text[data-v-9a218638] {
1180
1203
  display: flex;
1181
1204
  flex-direction: column;
1182
1205
  gap: var(--ui-space-1);
1183
1206
  min-inline-size: 0;
1184
1207
  }
1185
- .label[data-v-62f133c7] {
1208
+ .label[data-v-9a218638] {
1186
1209
  min-inline-size: 0;
1187
1210
  line-height: var(--ui-line-height-md);
1188
1211
  }
1189
- .description[data-v-62f133c7] {
1212
+ .description[data-v-9a218638] {
1190
1213
  color: var(--ui-text-secondary);
1191
1214
  font-size: var(--ui-font-size-sm);
1192
1215
  line-height: var(--ui-line-height);
1193
1216
  }
1194
- .description[data-v-62f133c7]:empty {
1217
+ .description[data-v-9a218638]:empty {
1195
1218
  display: none;
1196
1219
  }
1197
- input[data-v-62f133c7] {
1220
+ input[data-v-9a218638] {
1198
1221
  appearance: none;
1199
1222
  -webkit-appearance: none;
1200
1223
  position: relative;
@@ -1212,21 +1235,21 @@ input[data-v-62f133c7] {
1212
1235
  border-color var(--ui-motion-fast) var(--ui-motion-ease),
1213
1236
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
1214
1237
  }
1215
- input[data-v-62f133c7]::after {
1238
+ input[data-v-9a218638]::after {
1216
1239
  content: "";
1217
1240
  position: absolute;
1218
1241
  opacity: 0;
1219
1242
  transition: opacity 120ms var(--ui-motion-ease);
1220
1243
  }
1221
- input[data-v-62f133c7]:checked,
1222
- input[data-v-62f133c7]:indeterminate {
1244
+ input[data-v-9a218638]:checked,
1245
+ input[data-v-9a218638]:indeterminate {
1223
1246
  border-color: var(--ui-accent-solid);
1224
1247
  background: var(--ui-accent-solid);
1225
1248
  box-shadow: var(--ui-control-inset);
1226
1249
  }
1227
1250
 
1228
- /* Centre the tick's box, then lift it: a rotated L's ink sits ~0.11rem below its box centre. */
1229
- input[data-v-62f133c7]:checked::after {
1251
+ /* Centre the tick's box and lift it slightly for the rotated check shape. */
1252
+ input[data-v-9a218638]:checked::after {
1230
1253
  inset: 0;
1231
1254
  margin: auto;
1232
1255
  inline-size: 0.28rem;
@@ -1237,10 +1260,10 @@ input[data-v-62f133c7]:checked::after {
1237
1260
  border-color: var(--ui-text-on-accent);
1238
1261
  border-width: 0 0.125rem 0.125rem 0;
1239
1262
  opacity: 1;
1240
- transform: translate(0.07rem, -0.09rem) rotate(45deg);
1241
- animation: ui-checkbox-check-62f133c7 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
1263
+ transform: translateY(-0.09rem) rotate(45deg);
1264
+ animation: ui-checkbox-check-9a218638 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
1242
1265
  }
1243
- input[data-v-62f133c7]:indeterminate::after {
1266
+ input[data-v-9a218638]:indeterminate::after {
1244
1267
  inset: 50% 0.23rem auto;
1245
1268
  block-size: 0.125rem;
1246
1269
  border-radius: var(--ui-radius-round);
@@ -1248,44 +1271,44 @@ input[data-v-62f133c7]:indeterminate::after {
1248
1271
  opacity: 1;
1249
1272
  transform: translateY(-50%);
1250
1273
  }
1251
- @keyframes ui-checkbox-check-62f133c7 {
1274
+ @keyframes ui-checkbox-check-9a218638 {
1252
1275
  from {
1253
1276
  opacity: 0;
1254
- transform: translate(0.07rem, -0.09rem) rotate(45deg) scale(0.55);
1277
+ transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
1255
1278
  }
1256
1279
  65% {
1257
1280
  opacity: 1;
1258
- transform: translate(0.07rem, -0.09rem) rotate(45deg) scale(1.12);
1281
+ transform: translateY(-0.09rem) rotate(45deg) scale(1.12);
1259
1282
  }
1260
1283
  to {
1261
1284
  opacity: 1;
1262
- transform: translate(0.07rem, -0.09rem) rotate(45deg) scale(1);
1285
+ transform: translateY(-0.09rem) rotate(45deg) scale(1);
1263
1286
  }
1264
1287
  }
1265
1288
  @media (prefers-reduced-motion: reduce) {
1266
- input[data-v-62f133c7]::after {
1289
+ input[data-v-9a218638]::after {
1267
1290
  transition: none;
1268
1291
  animation: none;
1269
1292
  }
1270
1293
  }
1271
- input[data-v-62f133c7]:hover:enabled {
1294
+ input[data-v-9a218638]:hover:enabled {
1272
1295
  border-color: var(--ui-accent-solid);
1273
1296
  }
1274
- input[data-v-62f133c7]:focus-visible {
1297
+ input[data-v-9a218638]:focus-visible {
1275
1298
  outline: 2px solid var(--ui-focus-ring, var(--ui-accent-solid));
1276
1299
  outline-offset: 2px;
1277
1300
  }
1278
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="invalid"] input[data-v-62f133c7] {
1301
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="invalid"] input[data-v-9a218638] {
1279
1302
  border-color: var(--_ui-checkbox-invalid-border);
1280
1303
  }
1281
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"][data-v-62f133c7] {
1304
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"][data-v-9a218638] {
1282
1305
  color: var(--ui-disabled-text);
1283
1306
  cursor: not-allowed;
1284
1307
  }
1285
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"] .description[data-v-62f133c7] {
1308
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"] .description[data-v-9a218638] {
1286
1309
  color: var(--ui-disabled-text);
1287
1310
  }
1288
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"] input[data-v-62f133c7] {
1311
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"] input[data-v-9a218638] {
1289
1312
  border-color: var(--ui-disabled-border);
1290
1313
  background: var(--ui-disabled-surface);
1291
1314
  box-shadow: none;
@@ -1295,32 +1318,32 @@ input[data-v-62f133c7]:focus-visible {
1295
1318
  /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
1296
1319
  and the first line centres in that control height, so the label shares a row's baseline.
1297
1320
  Multi-line labels and descriptions still grow downward from that first line. */
1298
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"][data-v-62f133c7] {
1321
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"][data-v-9a218638] {
1299
1322
  --_font: var(--ui-font-size-sm);
1300
1323
  --_row: var(--ui-control-size-sm);
1301
1324
  }
1302
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"][data-v-62f133c7] {
1325
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"][data-v-9a218638] {
1303
1326
  --_font: var(--ui-font-size-md);
1304
1327
  --_row: var(--ui-control-size-lg);
1305
1328
  }
1306
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"][data-v-62f133c7],
1307
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"][data-v-62f133c7] {
1329
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"][data-v-9a218638],
1330
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"][data-v-9a218638] {
1308
1331
  --_line: calc(var(--_font) * var(--ui-line-height-md));
1309
1332
  font-size: var(--_font);
1310
1333
  padding-block: calc((var(--_row) - var(--_line)) / 2);
1311
1334
  }
1312
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"] input[data-v-62f133c7],
1313
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"] input[data-v-62f133c7] {
1335
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"] input[data-v-9a218638],
1336
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"] input[data-v-9a218638] {
1314
1337
  margin-top: calc((var(--_line) - var(--_ui-checkbox-size, 1.125rem)) / 2);
1315
1338
  }
1316
1339
  @media (pointer: coarse) {
1317
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"][data-v-62f133c7] {
1340
+ [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"][data-v-9a218638] {
1318
1341
  --_row: var(--ui-control-min-block-size);
1319
1342
  }
1320
1343
  }
1321
1344
 
1322
1345
  /* A component that sets its display still honours the hidden attribute on its root. */
1323
- [data-component~="ui-checkbox"][hidden][data-v-62f133c7] {
1346
+ [data-component~="ui-checkbox"][hidden][data-v-9a218638] {
1324
1347
  display: none;
1325
1348
  }
1326
1349
 
@@ -1422,7 +1445,7 @@ input[data-v-62f133c7]:focus-visible {
1422
1445
  syntax: "*";
1423
1446
  inherits: false;
1424
1447
  }
1425
- [data-component~="ui-tooltip"][data-v-8f81f4b2] {
1448
+ [data-component~="ui-tooltip"][data-v-0e272bf3] {
1426
1449
  /* Hooks do not inherit, so the parts below read them from the root. */
1427
1450
  --_ui-tooltip-border: var(--ui-tooltip-border);
1428
1451
  --_ui-tooltip-max-inline-size: var(--ui-tooltip-max-inline-size);
@@ -1454,7 +1477,7 @@ input[data-v-62f133c7]:focus-visible {
1454
1477
  display var(--ui-motion-fast) allow-discrete,
1455
1478
  overlay var(--ui-motion-fast) allow-discrete;
1456
1479
  }
1457
- .surface[data-v-8f81f4b2] {
1480
+ .surface[data-v-0e272bf3] {
1458
1481
  --_tooltip-line: var(--_ui-tooltip-border, var(--ui-overlay-border, var(--ui-border-strong)));
1459
1482
  position: relative;
1460
1483
  box-sizing: border-box;
@@ -1472,7 +1495,7 @@ input[data-v-62f133c7]:focus-visible {
1472
1495
  var(--ui-overlay-shadow, var(--ui-elevation-tooltip, var(--ui-shadow-md)))
1473
1496
  );
1474
1497
  }
1475
- [data-component~="ui-tooltip"][data-ui-tooltip-state~="inverse"] .surface[data-v-8f81f4b2] {
1498
+ [data-component~="ui-tooltip"][data-ui-tooltip-state~="inverse"] .surface[data-v-0e272bf3] {
1476
1499
  --_tooltip-line: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
1477
1500
  background: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
1478
1501
  color: var(--_ui-tooltip-inverse-text, var(--ui-surface-default));
@@ -1480,7 +1503,7 @@ input[data-v-62f133c7]:focus-visible {
1480
1503
 
1481
1504
  /* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
1482
1505
  * the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
1483
- .surface[data-v-8f81f4b2]::after {
1506
+ .surface[data-v-0e272bf3]::after {
1484
1507
  content: "";
1485
1508
  position: absolute;
1486
1509
  z-index: 1;
@@ -1496,7 +1519,7 @@ input[data-v-62f133c7]:focus-visible {
1496
1519
  border-end-end-radius: 1px;
1497
1520
  transform: rotate(45deg) scaleX(1.25) scaleY(0.85);
1498
1521
  }
1499
- [data-component~="ui-tooltip"][data-ui-actual-placement="bottom"] .surface[data-v-8f81f4b2]::after {
1522
+ [data-component~="ui-tooltip"][data-ui-actual-placement="bottom"] .surface[data-v-0e272bf3]::after {
1500
1523
  inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - 0.5px);
1501
1524
  inset-block-end: auto;
1502
1525
  border-inline-end-width: 0;
@@ -1506,59 +1529,59 @@ input[data-v-62f133c7]:focus-visible {
1506
1529
  border-end-end-radius: 0;
1507
1530
  border-start-start-radius: 1px;
1508
1531
  }
1509
- [data-component~="ui-tooltip"][data-ui-actual-align="center"] .surface[data-v-8f81f4b2]::after {
1532
+ [data-component~="ui-tooltip"][data-ui-actual-align="center"] .surface[data-v-0e272bf3]::after {
1510
1533
  inset-inline-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
1511
1534
  }
1512
- [data-component~="ui-tooltip"][data-ui-actual-align="end"] .surface[data-v-8f81f4b2]::after {
1535
+ [data-component~="ui-tooltip"][data-ui-actual-align="end"] .surface[data-v-0e272bf3]::after {
1513
1536
  inset-inline-start: auto;
1514
1537
  inset-inline-end: var(--ui-space-3);
1515
1538
  }
1516
- [data-component~="ui-tooltip"][data-ui-actual-placement="left"] .surface[data-v-8f81f4b2]::after,
1517
- [data-component~="ui-tooltip"][data-ui-actual-placement="right"] .surface[data-v-8f81f4b2]::after {
1539
+ [data-component~="ui-tooltip"][data-ui-actual-placement="left"] .surface[data-v-0e272bf3]::after,
1540
+ [data-component~="ui-tooltip"][data-ui-actual-placement="right"] .surface[data-v-0e272bf3]::after {
1518
1541
  inset-block-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
1519
1542
  inset-block-end: auto;
1520
1543
  border: 0 solid var(--_tooltip-line);
1521
1544
  }
1522
- [data-component~="ui-tooltip"][data-ui-actual-placement="left"] .surface[data-v-8f81f4b2]::after {
1545
+ [data-component~="ui-tooltip"][data-ui-actual-placement="left"] .surface[data-v-0e272bf3]::after {
1523
1546
  inset-inline-start: auto;
1524
1547
  inset-inline-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - 0.5px);
1525
1548
  border-inline-end-width: 1px;
1526
- border-block-end-width: 1px;
1549
+ border-block-start-width: 1px;
1527
1550
  }
1528
- [data-component~="ui-tooltip"][data-ui-actual-placement="right"] .surface[data-v-8f81f4b2]::after {
1551
+ [data-component~="ui-tooltip"][data-ui-actual-placement="right"] .surface[data-v-0e272bf3]::after {
1529
1552
  inset-inline-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - 0.5px);
1530
1553
  inset-inline-end: auto;
1531
1554
  border-inline-start-width: 1px;
1532
- border-block-start-width: 1px;
1555
+ border-block-end-width: 1px;
1533
1556
  }
1534
1557
  [data-component~="ui-tooltip"][data-ui-actual-placement="left"][data-ui-actual-align="start"]
1535
- .surface[data-v-8f81f4b2]::after,
1558
+ .surface[data-v-0e272bf3]::after,
1536
1559
  [data-component~="ui-tooltip"][data-ui-actual-placement="right"][data-ui-actual-align="start"]
1537
- .surface[data-v-8f81f4b2]::after {
1560
+ .surface[data-v-0e272bf3]::after {
1538
1561
  inset-block-start: var(--ui-space-3);
1539
1562
  }
1540
1563
  [data-component~="ui-tooltip"][data-ui-actual-placement="left"][data-ui-actual-align="end"]
1541
- .surface[data-v-8f81f4b2]::after,
1564
+ .surface[data-v-0e272bf3]::after,
1542
1565
  [data-component~="ui-tooltip"][data-ui-actual-placement="right"][data-ui-actual-align="end"]
1543
- .surface[data-v-8f81f4b2]::after {
1566
+ .surface[data-v-0e272bf3]::after {
1544
1567
  inset-block-start: auto;
1545
1568
  inset-block-end: var(--ui-space-3);
1546
1569
  }
1547
- [data-component~="ui-tooltip"][data-v-8f81f4b2]:popover-open {
1570
+ [data-component~="ui-tooltip"][data-v-0e272bf3]:popover-open {
1548
1571
  opacity: 1;
1549
1572
  transform: translateY(0);
1550
1573
  }
1551
1574
  @starting-style {
1552
- [data-component~="ui-tooltip"][data-v-8f81f4b2]:popover-open {
1575
+ [data-component~="ui-tooltip"][data-v-0e272bf3]:popover-open {
1553
1576
  opacity: 0;
1554
1577
  transform: translateY(4px);
1555
1578
  }
1556
1579
  }
1557
- [data-component~="ui-tooltip"][hidden][data-v-8f81f4b2] {
1580
+ [data-component~="ui-tooltip"][hidden][data-v-0e272bf3] {
1558
1581
  display: none;
1559
1582
  }
1560
1583
  @media (prefers-reduced-motion: reduce) {
1561
- [data-component~="ui-tooltip"][data-v-8f81f4b2] {
1584
+ [data-component~="ui-tooltip"][data-v-0e272bf3] {
1562
1585
  transition: none;
1563
1586
  }
1564
1587
  }
@@ -1628,7 +1651,7 @@ input[data-v-62f133c7]:focus-visible {
1628
1651
  syntax: "*";
1629
1652
  inherits: false;
1630
1653
  }
1631
- [data-component~="ui-combobox"][data-v-87a4808b] {
1654
+ [data-component~="ui-combobox"][data-v-f90db7fa] {
1632
1655
  /* Hooks do not inherit, so the parts below read them from the root. */
1633
1656
  --_ui-combobox-label-text: var(--ui-combobox-label-text);
1634
1657
  --_ui-combobox-label-font-size: var(--ui-combobox-label-font-size);
@@ -1653,20 +1676,20 @@ input[data-v-62f133c7]:focus-visible {
1653
1676
  color: var(--ui-text-primary);
1654
1677
  font: inherit;
1655
1678
  }
1656
- label[data-v-87a4808b] {
1679
+ label[data-v-f90db7fa] {
1657
1680
  color: var(--_ui-combobox-label-text, var(--ui-text-primary));
1658
1681
  font-size: var(--_ui-combobox-label-font-size, var(--ui-font-size-sm));
1659
1682
  font-weight: 500;
1660
1683
  }
1661
1684
  /* The field and anything that annotates it sit on one row; the help button is beside the box,
1662
1685
  not inside it, because a control's box holds its value. */
1663
- .control[data-v-87a4808b] {
1686
+ .control[data-v-f90db7fa] {
1664
1687
  display: flex;
1665
1688
  align-items: center;
1666
1689
  gap: var(--ui-space-2);
1667
1690
  min-inline-size: 0;
1668
1691
  }
1669
- .field[data-v-87a4808b] {
1692
+ .field[data-v-f90db7fa] {
1670
1693
  flex: 1 1 auto;
1671
1694
  display: flex;
1672
1695
  min-inline-size: 0;
@@ -1678,19 +1701,19 @@ label[data-v-87a4808b] {
1678
1701
  border-color var(--ui-motion-fast) var(--ui-motion-ease),
1679
1702
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
1680
1703
  }
1681
- .field[data-v-87a4808b]:focus-within {
1704
+ .field[data-v-f90db7fa]:focus-within {
1682
1705
  border-color: var(--ui-control-focus, var(--ui-accent-solid));
1683
1706
  box-shadow:
1684
1707
  var(--ui-control-inset),
1685
1708
  var(--ui-control-focus-halo-shadow);
1686
1709
  }
1687
- .entry[data-v-87a4808b] {
1710
+ .entry[data-v-f90db7fa] {
1688
1711
  display: flex;
1689
1712
  flex: 1 1 auto;
1690
1713
  min-inline-size: 0;
1691
1714
  }
1692
1715
  /* A ghost icon button: the affordance is the mark, not a box around it. */
1693
- .help[data-v-87a4808b] {
1716
+ .help[data-v-f90db7fa] {
1694
1717
  flex: none;
1695
1718
  display: inline-flex;
1696
1719
  align-items: center;
@@ -1707,28 +1730,28 @@ label[data-v-87a4808b] {
1707
1730
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
1708
1731
  color var(--ui-motion-fast) var(--ui-motion-ease);
1709
1732
  }
1710
- .help[data-v-87a4808b]:hover:enabled,
1711
- .help[aria-expanded="true"][data-v-87a4808b] {
1733
+ .help[data-v-f90db7fa]:hover:enabled,
1734
+ .help[aria-expanded="true"][data-v-f90db7fa] {
1712
1735
  background: color-mix(in srgb, currentColor 8%, transparent);
1713
1736
  color: var(--ui-text-primary);
1714
1737
  }
1715
- .help[data-v-87a4808b]:focus-visible {
1738
+ .help[data-v-f90db7fa]:focus-visible {
1716
1739
  outline: none;
1717
1740
  box-shadow: var(--ui-focus-halo);
1718
1741
  }
1719
- .help[data-v-87a4808b]:disabled {
1742
+ .help[data-v-f90db7fa]:disabled {
1720
1743
  color: var(--ui-disabled-text);
1721
1744
  cursor: not-allowed;
1722
1745
  }
1723
- .help-icon[data-v-87a4808b] {
1746
+ .help-icon[data-v-f90db7fa] {
1724
1747
  inline-size: var(--ui-icon-size-sm);
1725
1748
  block-size: var(--ui-icon-size-sm);
1726
1749
  }
1727
- input[data-v-87a4808b]::selection {
1750
+ input[data-v-f90db7fa]::selection {
1728
1751
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
1729
1752
  color: inherit;
1730
1753
  }
1731
- input[data-v-87a4808b] {
1754
+ input[data-v-f90db7fa] {
1732
1755
  appearance: none;
1733
1756
  width: 100%;
1734
1757
  min-inline-size: 0;
@@ -1744,20 +1767,20 @@ input[data-v-87a4808b] {
1744
1767
  margin: 0;
1745
1768
  outline: none;
1746
1769
  }
1747
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-87a4808b] {
1770
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-f90db7fa] {
1748
1771
  --_row: var(--ui-control-size-sm);
1749
1772
  }
1750
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-87a4808b] {
1773
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-f90db7fa] {
1751
1774
  min-block-size: calc(var(--_row) - 2px);
1752
1775
  padding: var(--ui-space-1) var(--ui-space-2);
1753
1776
  font-size: var(--ui-font-size-sm);
1754
1777
  }
1755
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"] input[data-v-87a4808b] {
1778
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"] input[data-v-f90db7fa] {
1756
1779
  min-block-size: calc(var(--ui-control-size-lg) - 2px);
1757
1780
  padding: var(--ui-space-3) var(--ui-space-4);
1758
1781
  font-size: var(--ui-font-size-md);
1759
1782
  }
1760
- button[data-v-87a4808b] {
1783
+ button[data-v-f90db7fa] {
1761
1784
  appearance: none;
1762
1785
  display: inline-grid;
1763
1786
  place-items: center;
@@ -1772,35 +1795,35 @@ button[data-v-87a4808b] {
1772
1795
  padding: 0 var(--ui-space-1);
1773
1796
  cursor: pointer;
1774
1797
  }
1775
- .affordance-icon[data-v-87a4808b] {
1798
+ .affordance-icon[data-v-f90db7fa] {
1776
1799
  display: block;
1777
1800
  inline-size: var(--ui-icon-size-sm);
1778
1801
  block-size: var(--ui-icon-size-sm);
1779
1802
  }
1780
- button[data-v-87a4808b]:hover:enabled {
1803
+ button[data-v-f90db7fa]:hover:enabled {
1781
1804
  background: var(--ui-surface-muted);
1782
1805
  color: var(--ui-text-primary);
1783
1806
  }
1784
- button[data-v-87a4808b]:focus-visible {
1807
+ button[data-v-f90db7fa]:focus-visible {
1785
1808
  outline: none;
1786
1809
  background: var(--ui-surface-muted);
1787
1810
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
1788
1811
  }
1789
- input[data-v-87a4808b]:disabled, button[data-v-87a4808b]:disabled {
1812
+ input[data-v-f90db7fa]:disabled, button[data-v-f90db7fa]:disabled {
1790
1813
  color: var(--ui-disabled-text);
1791
1814
  cursor: not-allowed;
1792
1815
  }
1793
- .field[data-v-87a4808b]:has(input:disabled) {
1816
+ .field[data-v-f90db7fa]:has(input:disabled) {
1794
1817
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
1795
1818
  }
1796
- [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-87a4808b],
1797
- [data-component~="ui-combobox"][data-ui-combobox-state~="invalid"] .field[data-v-87a4808b] {
1819
+ [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field[data-v-f90db7fa],
1820
+ [data-component~="ui-combobox"][data-ui-combobox-state~="invalid"] .field[data-v-f90db7fa] {
1798
1821
  border-color: var(
1799
1822
  --_ui-combobox-invalid-border,
1800
1823
  var(--ui-field-danger, var(--ui-danger-solid, var(--ui-accent-active)))
1801
1824
  );
1802
1825
  }
1803
- .popup[data-v-87a4808b] {
1826
+ .popup[data-v-f90db7fa] {
1804
1827
  box-sizing: border-box;
1805
1828
  min-inline-size: 12rem;
1806
1829
  max-inline-size: calc(100vw - 1rem);
@@ -1821,61 +1844,46 @@ input[data-v-87a4808b]:disabled, button[data-v-87a4808b]:disabled {
1821
1844
  var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
1822
1845
  );
1823
1846
  }
1824
- [hidden][data-v-87a4808b] {
1847
+ [hidden][data-v-f90db7fa] {
1825
1848
  display: none;
1826
1849
  }
1827
- .option[data-v-87a4808b] {
1828
- padding: var(--ui-space-2) var(--ui-space-3);
1829
- border-radius: var(--ui-radius-sm);
1830
- cursor: pointer;
1831
- overflow-wrap: anywhere;
1832
- }
1833
- .option[data-v-87a4808b]:hover, .option.active[data-v-87a4808b] {
1834
- background: var(--ui-surface-muted);
1835
- outline: 1px solid var(--ui-focus-ring);
1836
- outline-offset: -1px;
1837
- }
1838
- .option[aria-disabled="true"][data-v-87a4808b] {
1850
+ .option[aria-disabled="true"] .primary[data-v-f90db7fa],
1851
+ .option[aria-disabled="true"] .secondary[data-v-f90db7fa] {
1839
1852
  color: var(--ui-disabled-text);
1840
- cursor: not-allowed;
1841
1853
  }
1842
- .option[aria-disabled="true"] .primary[data-v-87a4808b],
1843
- .option[aria-disabled="true"] .secondary[data-v-87a4808b] {
1844
- color: var(--ui-disabled-text);
1845
- }
1846
- .primary[data-v-87a4808b] {
1854
+ .primary[data-v-f90db7fa] {
1847
1855
  display: block;
1848
1856
  color: var(--_ui-combobox-option-text, var(--ui-text-primary));
1849
1857
  font-weight: 500;
1850
1858
  }
1851
1859
  /* A row with a tag or a description: the label and its tag on one line, the description under them. */
1852
- .detail[data-v-87a4808b] {
1860
+ .detail[data-v-f90db7fa] {
1853
1861
  display: grid;
1854
1862
  gap: var(--ui-space-0-5);
1855
1863
  min-inline-size: 0;
1856
1864
  }
1857
- .line[data-v-87a4808b] {
1865
+ .line[data-v-f90db7fa] {
1858
1866
  display: flex;
1859
1867
  flex-wrap: wrap;
1860
1868
  align-items: center;
1861
1869
  gap: var(--ui-space-2);
1862
1870
  }
1863
- .description[data-v-87a4808b] {
1871
+ .description[data-v-f90db7fa] {
1864
1872
  color: var(--ui-text-muted);
1865
1873
  font-size: var(--ui-font-size-sm);
1866
1874
  line-height: var(--ui-line-height-md);
1867
1875
  }
1868
- .message[data-v-87a4808b], .group[data-v-87a4808b] {
1876
+ .message[data-v-f90db7fa], .group[data-v-f90db7fa] {
1869
1877
  color: var(--_ui-combobox-message-text, var(--ui-text-secondary));
1870
1878
  font-weight: 400;
1871
1879
  font-size: var(--ui-font-size-sm);
1872
1880
  line-height: var(--ui-line-height-md);
1873
1881
  overflow-wrap: anywhere;
1874
1882
  }
1875
- .group[data-v-87a4808b], .popup .message[data-v-87a4808b] {
1883
+ .group[data-v-f90db7fa], .popup .message[data-v-f90db7fa] {
1876
1884
  padding: var(--ui-space-2) var(--ui-space-3);
1877
1885
  }
1878
- .sr-only[data-v-87a4808b] {
1886
+ .sr-only[data-v-f90db7fa] {
1879
1887
  position: absolute;
1880
1888
  inline-size: 1px;
1881
1889
  block-size: 1px;
@@ -1884,77 +1892,45 @@ input[data-v-87a4808b]:disabled, button[data-v-87a4808b]:disabled {
1884
1892
  white-space: nowrap;
1885
1893
  }
1886
1894
  @media (pointer: coarse) {
1887
- button[data-v-87a4808b] {
1895
+ button[data-v-f90db7fa] {
1888
1896
  min-inline-size: 2.75rem;
1889
1897
  min-block-size: 2.75rem;
1890
1898
  }
1891
1899
  /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
1892
1900
  body-size text: below 16px, iOS zooms the page into the focused field. */
1893
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-87a4808b] {
1901
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"][data-v-f90db7fa] {
1894
1902
  --_row: var(--ui-control-min-block-size);
1895
1903
  }
1896
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-87a4808b] {
1904
+ [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input[data-v-f90db7fa] {
1897
1905
  font-size: inherit;
1898
1906
  }
1899
1907
  }
1900
1908
  @media (forced-colors: active) {
1901
- .field[data-v-87a4808b], .popup[data-v-87a4808b] {
1909
+ .field[data-v-f90db7fa], .popup[data-v-f90db7fa] {
1902
1910
  border-color: CanvasText;
1903
1911
  }
1904
- .option.active[data-v-87a4808b] {
1912
+ .option.active[data-v-f90db7fa] {
1905
1913
  outline-color: Highlight;
1906
1914
  }
1907
1915
  }
1908
1916
 
1909
- /* Multiple mode: every option carries a checkbox, so a list that takes several answers says so
1910
- before anything is picked. aria-selected is the state; this draws it.
1911
- Longhands, not shorthands: lowering drops a shorthand that omits a component. */
1912
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-87a4808b] {
1913
- display: flex;
1914
- gap: var(--ui-space-2);
1915
- align-items: center;
1916
- }
1917
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .option[data-v-87a4808b]::before {
1918
- content: "";
1919
- flex: none;
1920
- inline-size: 1.125rem;
1921
- block-size: 1.125rem;
1922
- border-style: solid;
1923
- border-width: 1px;
1924
- border-color: var(--ui-control-border-hover, var(--ui-border-strong));
1925
- border-radius: var(--ui-radius-sm);
1926
- background-color: var(--ui-control-surface, var(--ui-surface-default));
1927
- background-repeat: no-repeat;
1928
- background-position: center;
1929
- background-size: 0.7rem;
1930
- }
1931
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"]
1932
- .option[aria-selected="true"][data-v-87a4808b]::before {
1933
- border-color: var(--ui-accent-solid);
1934
- background-color: var(--ui-accent-solid);
1935
- background-image: var(
1936
- --_ui-combobox-option-check,
1937
- url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5 9-9'/%3E%3C/svg%3E")
1938
- );
1939
- }
1940
-
1941
1917
  /* Multiple mode keeps one control height. Chips and the input scroll within the entry,
1942
1918
  while the clear and disclosure controls remain fixed at the end of the field. */
1943
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-87a4808b] {
1919
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field[data-v-f90db7fa] {
1944
1920
  align-items: center;
1945
1921
  min-block-size: var(--_ui-combobox-item-min-block-size, 2.5rem);
1946
1922
  padding: var(--ui-space-1);
1947
1923
  }
1948
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .entry[data-v-87a4808b] {
1924
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .entry[data-v-f90db7fa] {
1949
1925
  align-items: center;
1950
1926
  gap: var(--ui-space-1);
1951
1927
  overflow-x: auto;
1952
1928
  scrollbar-width: none;
1953
1929
  }
1954
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .entry[data-v-87a4808b]::-webkit-scrollbar {
1930
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .entry[data-v-f90db7fa]::-webkit-scrollbar {
1955
1931
  display: none;
1956
1932
  }
1957
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-87a4808b] {
1933
+ [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input[data-v-f90db7fa] {
1958
1934
  flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
1959
1935
  width: auto;
1960
1936
  min-block-size: 1.75rem;
@@ -1962,25 +1938,25 @@ button[data-v-87a4808b] {
1962
1938
  }
1963
1939
  /* Size variants keep their control height as selections are added. */
1964
1940
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"]
1965
- .field[data-v-87a4808b] {
1941
+ .field[data-v-f90db7fa] {
1966
1942
  min-block-size: 0;
1967
1943
  padding: var(--ui-space-0-5);
1968
1944
  }
1969
1945
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"]
1970
- input[data-v-87a4808b] {
1946
+ input[data-v-f90db7fa] {
1971
1947
  min-block-size: calc(var(--_row) - 2px - 2 * var(--ui-space-0-5));
1972
1948
  padding: 0 var(--ui-space-1);
1973
1949
  }
1974
1950
  /* A large multiple field starts at the large control height, as sm starts at the small one. */
1975
1951
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"]
1976
- .field[data-v-87a4808b] {
1952
+ .field[data-v-f90db7fa] {
1977
1953
  min-block-size: 0;
1978
1954
  }
1979
1955
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"]
1980
- input[data-v-87a4808b] {
1956
+ input[data-v-f90db7fa] {
1981
1957
  min-block-size: calc(var(--ui-control-size-lg) - 2px - 2 * var(--ui-space-1));
1982
1958
  }
1983
- .item[data-v-87a4808b] {
1959
+ .item[data-v-f90db7fa] {
1984
1960
  appearance: none;
1985
1961
  display: inline-flex;
1986
1962
  flex: none;
@@ -1995,16 +1971,16 @@ button[data-v-87a4808b] {
1995
1971
  font: inherit;
1996
1972
  cursor: default;
1997
1973
  }
1998
- .item[data-v-87a4808b]:focus-visible {
1974
+ .item[data-v-f90db7fa]:focus-visible {
1999
1975
  outline: 2px solid var(--ui-focus-ring);
2000
1976
  outline-offset: 1px;
2001
1977
  }
2002
- .item[data-v-87a4808b]:disabled {
1978
+ .item[data-v-f90db7fa]:disabled {
2003
1979
  color: var(--ui-disabled-text);
2004
1980
  }
2005
1981
 
2006
1982
  /* A component that sets its display still honours the hidden attribute on its root. */
2007
- [data-component~="ui-combobox"][hidden][data-v-87a4808b] {
1983
+ [data-component~="ui-combobox"][hidden][data-v-f90db7fa] {
2008
1984
  display: none;
2009
1985
  }
2010
1986
 
@@ -4239,7 +4215,7 @@ svg[data-v-610f67a7-s] {
4239
4215
  syntax: "*";
4240
4216
  inherits: false;
4241
4217
  }
4242
- [data-component~="ui-icon-button"][data-v-e99fb642] {
4218
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4243
4219
  /* Hooks do not inherit, so the parts below read them from the root. */
4244
4220
  --_ui-icon-button-icon-size: var(--ui-icon-button-icon-size);
4245
4221
  --_ui-icon-button-icon-stroke-width: var(--ui-icon-button-icon-stroke-width);
@@ -4247,10 +4223,10 @@ svg[data-v-610f67a7-s] {
4247
4223
  display: inline-flex;
4248
4224
  color: var(--ui-text-secondary);
4249
4225
  }
4250
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-e99fb642] {
4226
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2] {
4251
4227
  position: relative;
4252
4228
  }
4253
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-e99fb642]::before {
4229
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]::before {
4254
4230
  content: "";
4255
4231
  position: absolute;
4256
4232
  inset: 50% auto auto 50%;
@@ -4264,13 +4240,13 @@ svg[data-v-610f67a7-s] {
4264
4240
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
4265
4241
  pointer-events: none;
4266
4242
  }
4267
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-e99fb642]:disabled::before {
4243
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]:disabled::before {
4268
4244
  opacity: 0;
4269
4245
  }
4270
4246
 
4271
4247
  /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
4272
4248
  proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
4273
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-e99fb642] {
4249
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-ae1ec9d2] {
4274
4250
  opacity: 1;
4275
4251
  transform: scale(1);
4276
4252
  transition:
@@ -4278,22 +4254,22 @@ svg[data-v-610f67a7-s] {
4278
4254
  transform calc(var(--ui-motion-fast) * 2) cubic-bezier(0.2, 1.4, 0.35, 1);
4279
4255
  }
4280
4256
  @media (hover: hover) and (pointer: fine) {
4281
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-e99fb642]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [data-ui-proximity="near"], :hover, :focus-visible) {
4257
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [data-ui-proximity="near"], :hover, :focus-visible) {
4282
4258
  border-color: transparent;
4283
- background: transparent;
4259
+ background-color: transparent;
4284
4260
  box-shadow: none;
4285
4261
  }
4286
4262
  [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"]:not([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"], :disabled, [data-ui-proximity="near"], :hover, :focus-visible)
4287
- .content[data-v-e99fb642] {
4263
+ .content[data-v-ae1ec9d2] {
4288
4264
  opacity: 0;
4289
4265
  transform: scale(0.65);
4290
4266
  transition-duration: var(--ui-motion-fast);
4291
4267
  }
4292
4268
  }
4293
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-e99fb642]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
4269
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]:is([data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
4294
4270
  opacity: 0;
4295
4271
  }
4296
- [data-component~="ui-icon-button"][data-v-e99fb642] {
4272
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4297
4273
  /* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
4298
4274
  --_size: 2rem;
4299
4275
  appearance: none;
@@ -4305,7 +4281,7 @@ svg[data-v-610f67a7-s] {
4305
4281
  margin: 0;
4306
4282
  border: 1px solid transparent;
4307
4283
  border-radius: var(--ui-icon-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
4308
- background: var(--ui-icon-button-surface, transparent);
4284
+ background-color: var(--ui-icon-button-surface, transparent);
4309
4285
  color: inherit;
4310
4286
  display: inline-flex;
4311
4287
  align-items: center;
@@ -4319,7 +4295,7 @@ svg[data-v-610f67a7-s] {
4319
4295
  transform var(--ui-motion-fast) var(--ui-motion-ease);
4320
4296
  }
4321
4297
  @media (hover: none), (pointer: coarse) {
4322
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-e99fb642]::before {
4298
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"][data-v-ae1ec9d2]::before {
4323
4299
  opacity: 0;
4324
4300
  }
4325
4301
  }
@@ -4327,10 +4303,10 @@ svg[data-v-610f67a7-s] {
4327
4303
  /* A touch target without a bigger button: an invisible hit area, at least the control
4328
4304
  minimum, centred on the button (::before is the anticipatory guide). */
4329
4305
  @media (pointer: coarse) {
4330
- [data-component~="ui-icon-button"][data-v-e99fb642] {
4306
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4331
4307
  position: relative;
4332
4308
  }
4333
- [data-component~="ui-icon-button"][data-v-e99fb642]::after {
4309
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2]::after {
4334
4310
  content: "";
4335
4311
  position: absolute;
4336
4312
  inset: 50% auto auto 50%;
@@ -4339,10 +4315,10 @@ svg[data-v-610f67a7-s] {
4339
4315
  transform: translate(-50%, -50%);
4340
4316
  }
4341
4317
  }
4342
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-e99fb642] {
4318
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4343
4319
  position: relative;
4344
4320
  }
4345
- html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-e99fb642]::after {
4321
+ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-ae1ec9d2]::after {
4346
4322
  content: "";
4347
4323
  position: absolute;
4348
4324
  inset: 50% auto auto 50%;
@@ -4350,32 +4326,32 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-e
4350
4326
  block-size: max(100%, var(--ui-control-min-block-size));
4351
4327
  transform: translate(-50%, -50%);
4352
4328
  }
4353
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-e99fb642] {
4329
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-ae1ec9d2] {
4354
4330
  --_size: 1.75rem;
4355
4331
  inline-size: var(--ui-icon-button-size, var(--_size));
4356
4332
  block-size: var(--ui-icon-button-size, var(--_size));
4357
4333
  min-inline-size: var(--ui-icon-button-size, var(--_size));
4358
4334
  min-block-size: var(--ui-icon-button-size, var(--_size));
4359
4335
  }
4360
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-e99fb642] {
4336
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-ae1ec9d2] {
4361
4337
  --_size: 2.5rem;
4362
4338
  inline-size: var(--ui-icon-button-size, var(--_size));
4363
4339
  block-size: var(--ui-icon-button-size, var(--_size));
4364
4340
  min-inline-size: var(--ui-icon-button-size, var(--_size));
4365
4341
  min-block-size: var(--ui-icon-button-size, var(--_size));
4366
4342
  }
4367
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-e99fb642] {
4343
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"][data-v-ae1ec9d2] {
4368
4344
  border-radius: var(--ui-radius-round);
4369
4345
  }
4370
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-e99fb642] {
4346
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-ae1ec9d2] {
4371
4347
  border-color: var(--ui-icon-button-border, var(--ui-control-border, var(--ui-border-strong)));
4372
- background: var(--ui-icon-button-outline-surface, var(--ui-surface-default));
4348
+ background-color: var(--ui-icon-button-outline-surface, var(--ui-surface-default));
4373
4349
  background-image: var(--ui-raised-highlight);
4374
4350
  color: var(--ui-icon-button-outline-text, var(--ui-text-primary));
4375
4351
  box-shadow: var(--ui-raised);
4376
4352
  }
4377
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-e99fb642] {
4378
- background: var(--ui-icon-button-solid-surface, var(--ui-accent-solid));
4353
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-ae1ec9d2] {
4354
+ background-color: var(--ui-icon-button-solid-surface, var(--ui-accent-solid));
4379
4355
  background-image: var(--ui-raised-highlight);
4380
4356
  color: var(--ui-icon-button-solid-text, var(--ui-text-on-accent));
4381
4357
  box-shadow: var(
@@ -4383,49 +4359,52 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-e
4383
4359
  0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent)
4384
4360
  );
4385
4361
  }
4386
- [data-component~="ui-icon-button"][data-v-e99fb642]:hover:enabled:not([aria-disabled="true"]) {
4362
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2]:hover:enabled:not([aria-disabled="true"]) {
4387
4363
  /* Derived from the text colour so the ghost hover shows on any background. */
4388
- background: var(--ui-icon-button-hover-surface, color-mix(in srgb, currentColor 8%, transparent));
4364
+ background-color: var(
4365
+ --ui-icon-button-hover-surface,
4366
+ color-mix(in srgb, currentColor 8%, transparent)
4367
+ );
4389
4368
  color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
4390
4369
  }
4391
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-e99fb642]:hover:enabled:not([aria-disabled="true"]) {
4370
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=outline"][data-v-ae1ec9d2]:hover:enabled:not([aria-disabled="true"]) {
4392
4371
  border-color: var(
4393
4372
  --ui-icon-button-hover-border,
4394
4373
  var(--ui-control-border-hover, var(--ui-control-border))
4395
4374
  );
4396
4375
  }
4397
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-e99fb642]:hover:enabled:not([aria-disabled="true"]) {
4398
- background: var(--ui-icon-button-solid-hover-surface, var(--ui-accent-hover));
4376
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=solid"][data-v-ae1ec9d2]:hover:enabled:not([aria-disabled="true"]) {
4377
+ background-color: var(--ui-icon-button-solid-hover-surface, var(--ui-accent-hover));
4399
4378
  }
4400
- [data-component~="ui-icon-button"][data-v-e99fb642]:active:enabled:not([aria-disabled="true"]) {
4379
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2]:active:enabled:not([aria-disabled="true"]) {
4401
4380
  transform: scale(var(--ui-icon-button-active-scale, 0.96));
4402
4381
  }
4403
- :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-e99fb642], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-e99fb642]) {
4382
+ :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"][data-v-ae1ec9d2], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"][data-v-ae1ec9d2]) {
4404
4383
  cursor: progress;
4405
4384
  }
4406
- .content[data-v-e99fb642] {
4385
+ .content[data-v-ae1ec9d2] {
4407
4386
  display: inline-flex;
4408
4387
  align-items: center;
4409
4388
  justify-content: center;
4410
4389
  }
4411
4390
  :is([data-component~="ui-icon-button"][data-ui-icon-button-state~="loading"], [data-component~="ui-icon-button"][data-ui-icon-button-state~="pending"])
4412
- .content[data-v-e99fb642] {
4391
+ .content[data-v-ae1ec9d2] {
4413
4392
  display: none;
4414
4393
  }
4415
4394
  @media (prefers-reduced-motion: reduce) {
4416
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-e99fb642] {
4395
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="anticipatory"] .content[data-v-ae1ec9d2] {
4417
4396
  transition: none;
4418
4397
  }
4419
4398
  }
4420
- [data-component~="ui-icon-button"][data-v-e99fb642]:focus-visible {
4399
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2]:focus-visible {
4421
4400
  outline: none;
4422
4401
  box-shadow: var(--ui-focus-halo);
4423
4402
  }
4424
4403
 
4425
4404
  /* Disabled is a flat neutral control, independent of the active variant's tone. */
4426
- [data-component~="ui-icon-button"][data-v-e99fb642]:disabled {
4405
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2]:disabled {
4427
4406
  border-color: var(--ui-disabled-border);
4428
- background: var(--ui-disabled-surface);
4407
+ background-color: var(--ui-disabled-surface);
4429
4408
  color: var(--ui-disabled-text);
4430
4409
  filter: var(--ui-icon-button-disabled-filter, var(--ui-disabled-filter));
4431
4410
  opacity: var(--ui-icon-button-disabled-opacity, 1);
@@ -4433,23 +4412,23 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"][data-v-e
4433
4412
  box-shadow: none;
4434
4413
  background-image: none;
4435
4414
  }
4436
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-e99fb642]:disabled {
4415
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="variant=ghost"][data-v-ae1ec9d2]:disabled {
4437
4416
  border-color: transparent;
4438
4417
  }
4439
- [data-component~="ui-icon-button"][data-v-e99fb642] {
4418
+ [data-component~="ui-icon-button"][data-v-ae1ec9d2] {
4440
4419
  --_icon-button-icon-default: var(--ui-icon-size-md);
4441
4420
  /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
4442
4421
  defaults, which its own --ui-icon-* hooks still override. */
4443
4422
  --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4444
4423
  --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
4445
4424
  }
4446
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-e99fb642] {
4425
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=sm"][data-v-ae1ec9d2] {
4447
4426
  --_icon-button-icon-default: var(--ui-icon-size-sm);
4448
4427
  }
4449
- [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-e99fb642] {
4428
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="size=lg"][data-v-ae1ec9d2] {
4450
4429
  --_icon-button-icon-default: var(--ui-icon-size-lg);
4451
4430
  }
4452
- svg[data-v-e99fb642-s] {
4431
+ svg[data-v-ae1ec9d2-s] {
4453
4432
  inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4454
4433
  block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4455
4434
  flex-shrink: 0;
@@ -4457,7 +4436,7 @@ svg[data-v-e99fb642-s] {
4457
4436
  }
4458
4437
 
4459
4438
  /* A component that sets its display still honours the hidden attribute on its root. */
4460
- [data-component~="ui-icon-button"][hidden][data-v-e99fb642] {
4439
+ [data-component~="ui-icon-button"][hidden][data-v-ae1ec9d2] {
4461
4440
  display: none;
4462
4441
  }
4463
4442
 
@@ -4515,7 +4494,7 @@ svg[data-v-e99fb642-s] {
4515
4494
  syntax: "*";
4516
4495
  inherits: false;
4517
4496
  }
4518
- [data-component~="ui-input"][data-v-aa3c35f4] {
4497
+ [data-component~="ui-input"][data-v-0d457505] {
4519
4498
  box-sizing: border-box;
4520
4499
  display: inline-block;
4521
4500
  inline-size: var(--ui-input-inline-size, 100%);
@@ -4551,7 +4530,7 @@ svg[data-v-e99fb642-s] {
4551
4530
  }
4552
4531
 
4553
4532
  /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
4554
- [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-aa3c35f4] {
4533
+ [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-0d457505] {
4555
4534
  min-block-size: var(
4556
4535
  --ui-input-min-block-size,
4557
4536
  var(--_ui-default-input-min-block-size, var(--ui-control-size-sm))
@@ -4559,7 +4538,7 @@ svg[data-v-e99fb642-s] {
4559
4538
  padding: var(--ui-space-1) var(--ui-space-2);
4560
4539
  font-size: var(--ui-font-size-sm);
4561
4540
  }
4562
- [data-component~="ui-input"][data-ui-input-state~="size=lg"][data-v-aa3c35f4] {
4541
+ [data-component~="ui-input"][data-ui-input-state~="size=lg"][data-v-0d457505] {
4563
4542
  min-block-size: var(
4564
4543
  --ui-input-min-block-size,
4565
4544
  var(--_ui-default-input-min-block-size, var(--ui-control-size-lg))
@@ -4571,7 +4550,7 @@ svg[data-v-e99fb642-s] {
4571
4550
  /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
4572
4551
  body-size text: below 16px, iOS zooms the page into the focused field. */
4573
4552
  @media (pointer: coarse) {
4574
- [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-aa3c35f4] {
4553
+ [data-component~="ui-input"][data-ui-input-state~="size=sm"][data-v-0d457505] {
4575
4554
  min-block-size: var(
4576
4555
  --ui-input-min-block-size,
4577
4556
  var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size))
@@ -4581,21 +4560,21 @@ svg[data-v-e99fb642-s] {
4581
4560
  }
4582
4561
 
4583
4562
  /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
4584
- [data-component~="ui-input"][data-v-aa3c35f4]::selection {
4563
+ [data-component~="ui-input"][data-v-0d457505]::selection {
4585
4564
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
4586
4565
  color: inherit;
4587
4566
  }
4588
- [data-component~="ui-input"][data-v-aa3c35f4]::placeholder {
4567
+ [data-component~="ui-input"][data-v-0d457505]::placeholder {
4589
4568
  color: var(--ui-control-placeholder, var(--ui-text-secondary));
4590
4569
  opacity: 1;
4591
4570
  }
4592
- [data-component~="ui-input"][data-v-aa3c35f4]:hover:not(:focus):not(:disabled) {
4571
+ [data-component~="ui-input"][data-v-0d457505]:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
4593
4572
  border-color: var(
4594
4573
  --ui-input-border-hover,
4595
4574
  var(--_ui-default-input-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary)))
4596
4575
  );
4597
4576
  }
4598
- [data-component~="ui-input"][data-v-aa3c35f4]:focus-visible {
4577
+ [data-component~="ui-input"][data-v-0d457505]:focus-visible {
4599
4578
  border-color: var(
4600
4579
  --ui-input-focus-border,
4601
4580
  var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid)))
@@ -4612,14 +4591,14 @@ svg[data-v-e99fb642-s] {
4612
4591
  }
4613
4592
 
4614
4593
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
4615
- [data-component~="ui-input"][aria-invalid="true"][data-v-aa3c35f4],
4616
- [data-component~="ui-input"][data-v-aa3c35f4]:is(:user-invalid, [data-user-invalid]) {
4594
+ [data-component~="ui-input"][aria-invalid="true"][data-v-0d457505],
4595
+ [data-component~="ui-input"][data-v-0d457505]:is(:user-invalid, [data-user-invalid]) {
4617
4596
  border-color: var(
4618
4597
  --ui-input-invalid-border,
4619
4598
  var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)))
4620
4599
  );
4621
4600
  }
4622
- [data-component~="ui-input"][data-v-aa3c35f4]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
4601
+ [data-component~="ui-input"][data-v-0d457505]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
4623
4602
  box-shadow: var(
4624
4603
  --ui-input-invalid-focus-shadow,
4625
4604
  var(
@@ -4633,7 +4612,7 @@ svg[data-v-e99fb642-s] {
4633
4612
  )
4634
4613
  );
4635
4614
  }
4636
- [data-component~="ui-input"][data-v-aa3c35f4]:disabled {
4615
+ [data-component~="ui-input"][data-v-0d457505]:disabled {
4637
4616
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
4638
4617
  color: var(--ui-disabled-text);
4639
4618
  box-shadow: none;
@@ -4642,7 +4621,7 @@ svg[data-v-e99fb642-s] {
4642
4621
 
4643
4622
  /* Forced colors drop box shadows, so the focus ring becomes an outline. */
4644
4623
  @media (forced-colors: active) {
4645
- [data-component~="ui-input"][data-v-aa3c35f4]:focus-visible {
4624
+ [data-component~="ui-input"][data-v-0d457505]:focus-visible {
4646
4625
  outline: var(
4647
4626
  --ui-input-focus-outline,
4648
4627
  var(--_ui-default-input-focus-outline, 2px solid Highlight)
@@ -4655,7 +4634,7 @@ svg[data-v-e99fb642-s] {
4655
4634
  * scroll vertically inside the field. Native inputs already center their single line. */
4656
4635
 
4657
4636
  /* A component that sets its display still honours the hidden attribute on its root. */
4658
- [data-component~="ui-input"][hidden][data-v-aa3c35f4] {
4637
+ [data-component~="ui-input"][hidden][data-v-0d457505] {
4659
4638
  display: none;
4660
4639
  }
4661
4640
 
@@ -4679,7 +4658,7 @@ svg[data-v-e99fb642-s] {
4679
4658
  whole value is. The action slot takes one button at the end, inside the border, for the one
4680
4659
  thing the field is for ("Continue" after a site's address), so it reads as the field's action
4681
4660
  and not the form's. */
4682
- [data-component~="ui-input-group"][data-v-8627fd48] {
4661
+ [data-component~="ui-input-group"][data-v-5ed34845] {
4683
4662
  /* The group's own border and height stand for the input's, so the group is a lone Input's height.
4684
4663
  Hooks do not inherit, so these are defaults for the input; its own hooks still win. */
4685
4664
  --_ui-default-input-border-width: 0;
@@ -4715,36 +4694,36 @@ svg[data-v-e99fb642-s] {
4715
4694
  }
4716
4695
 
4717
4696
  /* The frame takes its input's size, so a small group lines up with small buttons and fields. */
4718
- [data-component~="ui-input-group"][data-v-8627fd48]:has(.field [data-ui-input-state~="size=sm"]) {
4697
+ [data-component~="ui-input-group"][data-v-5ed34845]:has(.field [data-ui-input-state~="size=sm"]) {
4719
4698
  min-block-size: var(--ui-control-size-sm);
4720
4699
  }
4721
- [data-component~="ui-input-group"][data-v-8627fd48]:has(.field [data-ui-input-state~="size=lg"]) {
4700
+ [data-component~="ui-input-group"][data-v-5ed34845]:has(.field [data-ui-input-state~="size=lg"]) {
4722
4701
  min-block-size: var(--ui-control-size-lg);
4723
4702
  }
4724
4703
  @media (pointer: coarse) {
4725
- [data-component~="ui-input-group"][data-v-8627fd48]:has(.field [data-ui-input-state~="size=sm"]) {
4704
+ [data-component~="ui-input-group"][data-v-5ed34845]:has(.field [data-ui-input-state~="size=sm"]) {
4726
4705
  min-block-size: var(--ui-control-min-block-size);
4727
4706
  }
4728
4707
  }
4729
- [data-component~="ui-input-group"][data-v-8627fd48]:hover:not(:has(input:focus, input:disabled)) {
4708
+ [data-component~="ui-input-group"][data-v-5ed34845]:hover:not(:has(input:focus, input:disabled, input:read-only, [aria-invalid="true"], :is(:user-invalid, [data-user-invalid]))) {
4730
4709
  border-color: var(--ui-control-border-hover, var(--ui-text-secondary));
4731
4710
  }
4732
4711
 
4733
4712
  /* The ring shows when the field's input would show its own: when it is focus-visible, which a
4734
4713
  text input is for a pointer as well as a keyboard. A focused action button draws its own. */
4735
- [data-component~="ui-input-group"][data-v-8627fd48]:has(.field input:focus-visible) {
4714
+ [data-component~="ui-input-group"][data-v-5ed34845]:has(.field input:focus-visible) {
4736
4715
  border-color: var(--ui-control-focus, var(--ui-accent-solid));
4737
4716
  box-shadow:
4738
4717
  var(--ui-control-inset),
4739
4718
  var(--ui-control-focus-halo-shadow);
4740
4719
  }
4741
- [data-component~="ui-input-group"][data-v-8627fd48]:has([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])) {
4720
+ [data-component~="ui-input-group"][data-v-5ed34845]:has([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])) {
4742
4721
  border-color: var(
4743
4722
  --ui-input-group-invalid-border,
4744
4723
  var(--ui-field-danger, var(--ui-danger-solid))
4745
4724
  );
4746
4725
  }
4747
- [data-component~="ui-input-group"][data-v-8627fd48]:has(input:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
4726
+ [data-component~="ui-input-group"][data-v-5ed34845]:has(input:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
4748
4727
  box-shadow: var(
4749
4728
  --ui-input-group-invalid-focus-shadow,
4750
4729
  var(--ui-control-inset),
@@ -4758,28 +4737,28 @@ svg[data-v-e99fb642-s] {
4758
4737
 
4759
4738
  /* Forced colors drop box shadows, so the focus ring becomes an outline. */
4760
4739
  @media (forced-colors: active) {
4761
- [data-component~="ui-input-group"][data-v-8627fd48]:has(input:focus-visible) {
4740
+ [data-component~="ui-input-group"][data-v-5ed34845]:has(input:focus-visible) {
4762
4741
  outline: 2px solid Highlight;
4763
4742
  outline-offset: 1px;
4764
4743
  }
4765
4744
  }
4766
- [data-component~="ui-input-group"][data-ui-input-group-state~="disabled"][data-v-8627fd48],
4767
- [data-component~="ui-input-group"][data-v-8627fd48]:has(input:disabled) {
4745
+ [data-component~="ui-input-group"][data-ui-input-group-state~="disabled"][data-v-5ed34845],
4746
+ [data-component~="ui-input-group"][data-v-5ed34845]:has(input:disabled) {
4768
4747
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
4769
4748
  box-shadow: none;
4770
4749
  cursor: not-allowed;
4771
4750
  }
4772
- .field[data-v-8627fd48] {
4751
+ .field[data-v-5ed34845] {
4773
4752
  display: flex;
4774
4753
  flex: 1;
4775
4754
  min-inline-size: 0;
4776
4755
  }
4777
- .affix[data-v-8627fd48] {
4756
+ .affix[data-v-5ed34845] {
4778
4757
  display: inline-flex;
4779
4758
  flex: none;
4780
4759
  align-items: center;
4781
4760
  padding-inline: var(--ui-space-2);
4782
- color: var(--ui-text-secondary);
4761
+ color: var(--ui-text-muted);
4783
4762
  font-family: var(--ui-font-family-mono);
4784
4763
  font-size: var(--ui-font-size-sm);
4785
4764
  white-space: nowrap;
@@ -4787,19 +4766,19 @@ svg[data-v-e99fb642-s] {
4787
4766
 
4788
4767
  /* Centred rather than padded above and below: the group is exactly a lone Input's height, so a
4789
4768
  small button sits inside it with the difference split evenly, and the field keeps its height. */
4790
- .action[data-v-8627fd48] {
4769
+ .action[data-v-5ed34845] {
4791
4770
  display: flex;
4792
4771
  flex: none;
4793
4772
  align-items: center;
4794
4773
  padding-inline: var(--ui-space-1);
4795
4774
  }
4796
- .affix[data-v-8627fd48]:empty,
4797
- .action[data-v-8627fd48]:empty {
4775
+ .affix[data-v-5ed34845]:empty,
4776
+ .action[data-v-5ed34845]:empty {
4798
4777
  display: none;
4799
4778
  }
4800
4779
 
4801
4780
  /* A component that sets its display still honours the hidden attribute on its root. */
4802
- [data-component~="ui-input-group"][hidden][data-v-8627fd48] {
4781
+ [data-component~="ui-input-group"][hidden][data-v-5ed34845] {
4803
4782
  display: none;
4804
4783
  }
4805
4784
 
@@ -5040,45 +5019,66 @@ svg[data-v-e99fb642-s] {
5040
5019
  syntax: "*";
5041
5020
  inherits: false;
5042
5021
  }
5043
- [data-component~="ui-listbox"][data-v-44b33b05] {
5022
+ [data-component~="ui-listbox"][data-v-db56e4d0] {
5023
+ position: relative;
5044
5024
  box-sizing: border-box;
5045
5025
  display: block;
5046
5026
  inline-size: 100%;
5047
5027
  min-inline-size: 0;
5048
- min-block-size: var(--ui-control-min-block-size);
5049
5028
  margin: 0;
5050
5029
  padding: var(--ui-space-1);
5051
5030
  border: 1px solid var(--ui-listbox-border, var(--ui-control-border));
5052
5031
  border-radius: var(--ui-listbox-radius, var(--ui-field-radius, var(--ui-radius-md)));
5053
5032
  background: var(--ui-listbox-surface, var(--ui-control-surface));
5054
5033
  color: var(--ui-text-primary);
5055
- color-scheme: light dark;
5056
5034
  font: inherit;
5057
5035
  line-height: var(--ui-line-height-md);
5058
5036
  box-shadow: var(--ui-control-inset);
5037
+ outline: none;
5059
5038
  }
5060
- [data-component~="ui-listbox"] option[data-v-44b33b05],
5061
- [data-component~="ui-listbox"] optgroup[data-v-44b33b05] {
5062
- padding: var(--ui-space-2);
5039
+ .choices[data-v-db56e4d0] {
5040
+ max-block-size: calc(max(2, var(--_rows, 5)) * var(--ui-control-size-md));
5041
+ }
5042
+ [data-component~="ui-listbox"][data-v-db56e4d0]:not([data-enhanced]) {
5043
+ padding: 0;
5044
+ border: 0;
5045
+ background: transparent;
5046
+ box-shadow: none;
5047
+ }
5048
+ [data-component~="ui-listbox"]:not([data-enhanced]) .choices[data-v-db56e4d0],
5049
+ [data-component~="ui-listbox"][data-enhanced] .fallback[data-v-db56e4d0] {
5050
+ display: none;
5051
+ }
5052
+ .fallback[data-v-db56e4d0] {
5053
+ box-sizing: border-box;
5054
+ inline-size: 100%;
5063
5055
  font: inherit;
5064
5056
  }
5065
- [data-component~="ui-listbox"][data-v-44b33b05]:focus-visible {
5057
+ .validity[data-v-db56e4d0] {
5058
+ position: absolute;
5059
+ inline-size: 1px;
5060
+ block-size: 1px;
5061
+ overflow: hidden;
5062
+ clip-path: inset(50%);
5063
+ opacity: 0;
5064
+ pointer-events: none;
5065
+ }
5066
+ [data-component~="ui-listbox"][data-v-db56e4d0]:focus-visible {
5066
5067
  border-color: var(--ui-control-focus);
5067
5068
  outline: 2px solid var(--ui-focus-ring);
5068
5069
  outline-offset: 2px;
5069
5070
  box-shadow: var(--ui-listbox-focus-shadow, var(--ui-focus-halo));
5070
5071
  }
5071
- [data-component~="ui-listbox"][aria-invalid="true"][data-v-44b33b05],
5072
- [data-component~="ui-listbox"][data-v-44b33b05]:is(:user-invalid, [data-user-invalid]) {
5072
+ [data-component~="ui-listbox"][aria-invalid="true"][data-v-db56e4d0] {
5073
5073
  border-color: var(--ui-listbox-invalid-border, var(--ui-field-danger, var(--ui-danger)));
5074
5074
  }
5075
- [data-component~="ui-listbox"][data-v-44b33b05]:disabled {
5075
+ [data-component~="ui-listbox"][aria-disabled="true"][data-v-db56e4d0] {
5076
5076
  background: var(--ui-control-surface-disabled);
5077
5077
  color: var(--ui-disabled-text);
5078
5078
  box-shadow: none;
5079
5079
  cursor: not-allowed;
5080
5080
  }
5081
- [data-component~="ui-listbox"][hidden][data-v-44b33b05] {
5081
+ [data-component~="ui-listbox"][hidden][data-v-db56e4d0] {
5082
5082
  display: none;
5083
5083
  }
5084
5084
 
@@ -6048,7 +6048,7 @@ legend[data-v-3a85bfdd] + * {
6048
6048
  syntax: "*";
6049
6049
  inherits: false;
6050
6050
  }
6051
- [data-component~="ui-search-result-row"][data-v-5a2d6e2a] {
6051
+ [data-component~="ui-search-result-row"][data-v-5fd17258] {
6052
6052
  appearance: none;
6053
6053
  inline-size: 100%;
6054
6054
  min-block-size: var(--ui-search-result-row-min-height, 56px);
@@ -6059,70 +6059,67 @@ legend[data-v-3a85bfdd] + * {
6059
6059
  align-items: flex-start;
6060
6060
  gap: var(--ui-search-result-row-gap, var(--ui-space-3));
6061
6061
  background: var(--ui-search-result-row-surface, transparent);
6062
- border: none;
6063
- border-block-end: 1px solid var(--ui-search-result-row-border, var(--ui-border-divider));
6062
+ border: 1px solid var(--ui-search-result-row-border, transparent);
6063
+ border-radius: var(--ui-radius-md);
6064
6064
  color: inherit;
6065
6065
  cursor: pointer;
6066
6066
  text-align: left;
6067
6067
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
6068
6068
  }
6069
- [data-component~="ui-search-result-row"][data-v-5a2d6e2a]:last-child {
6070
- border-block-end: none;
6071
- }
6072
- [data-component~="ui-search-result-row"][data-v-5a2d6e2a]:hover:enabled {
6069
+ [data-component~="ui-search-result-row"][data-v-5fd17258]:hover:enabled {
6073
6070
  background: var(
6074
6071
  --ui-search-result-row-hover-surface,
6075
6072
  color-mix(in srgb, var(--ui-surface) 85%, black 3%)
6076
6073
  );
6077
6074
  }
6078
- [data-component~="ui-search-result-row"][data-ui-search-result-row-state~="selected"][data-v-5a2d6e2a] {
6075
+ [data-component~="ui-search-result-row"][data-ui-search-result-row-state~="selected"][data-v-5fd17258] {
6079
6076
  background: var(
6080
6077
  --ui-search-result-row-selected-bg,
6081
6078
  var(--ui-search-result-row-hover-surface, color-mix(in srgb, var(--ui-surface) 85%, black 3%))
6082
6079
  );
6083
6080
  }
6084
- [data-component~="ui-search-result-row"][data-v-5a2d6e2a]:focus-visible {
6081
+ [data-component~="ui-search-result-row"][data-v-5fd17258]:focus-visible {
6085
6082
  outline: 2px solid var(--ui-focus-ring);
6086
6083
  outline-offset: -2px;
6087
6084
  }
6088
- [data-component~="ui-search-result-row"][data-v-5a2d6e2a]:disabled {
6085
+ [data-component~="ui-search-result-row"][data-v-5fd17258]:disabled {
6089
6086
  background: var(--ui-disabled-surface);
6090
6087
  color: var(--ui-disabled-text);
6091
6088
  cursor: not-allowed;
6092
6089
  }
6093
- .leading[data-v-5a2d6e2a],
6094
- .trailing[data-v-5a2d6e2a] {
6090
+ .leading[data-v-5fd17258],
6091
+ .trailing[data-v-5fd17258] {
6095
6092
  display: inline-flex;
6096
6093
  align-items: flex-start;
6097
6094
  flex-shrink: 0;
6098
6095
  }
6099
- .content[data-v-5a2d6e2a] {
6096
+ .content[data-v-5fd17258] {
6100
6097
  min-inline-size: 0;
6101
6098
  flex: 1;
6102
6099
  display: flex;
6103
6100
  flex-direction: column;
6104
6101
  }
6105
- .title[data-v-5a2d6e2a],
6106
- .meta[data-v-5a2d6e2a],
6107
- .excerpt[data-v-5a2d6e2a] {
6102
+ .title[data-v-5fd17258],
6103
+ .meta[data-v-5fd17258],
6104
+ .excerpt[data-v-5fd17258] {
6108
6105
  display: block;
6109
6106
  min-inline-size: 0;
6110
6107
  }
6111
6108
 
6112
6109
  /* An unused region takes no space. */
6113
- .leading[data-v-5a2d6e2a]:empty,
6114
- .meta[data-v-5a2d6e2a]:empty,
6115
- .excerpt[data-v-5a2d6e2a]:empty,
6116
- .trailing[data-v-5a2d6e2a]:empty {
6110
+ .leading[data-v-5fd17258]:empty,
6111
+ .meta[data-v-5fd17258]:empty,
6112
+ .excerpt[data-v-5fd17258]:empty,
6113
+ .trailing[data-v-5fd17258]:empty {
6117
6114
  display: none;
6118
6115
  }
6119
- [slot="title"][data-v-5a2d6e2a-s],[slot="meta"][data-v-5a2d6e2a-s],[slot="excerpt"][data-v-5a2d6e2a-s] {
6116
+ [slot="title"][data-v-5fd17258-s],[slot="meta"][data-v-5fd17258-s],[slot="excerpt"][data-v-5fd17258-s] {
6120
6117
  display: block;
6121
6118
  margin: 0;
6122
6119
  }
6123
6120
 
6124
6121
  /* A component that sets its display still honours the hidden attribute on its root. */
6125
- [data-component~="ui-search-result-row"][hidden][data-v-5a2d6e2a] {
6122
+ [data-component~="ui-search-result-row"][hidden][data-v-5fd17258] {
6126
6123
  display: none;
6127
6124
  }
6128
6125
 
@@ -6167,7 +6164,7 @@ legend[data-v-3a85bfdd] + * {
6167
6164
  syntax: "*";
6168
6165
  inherits: false;
6169
6166
  }
6170
- [data-component~="ui-search-shell"][data-v-089e37ee] {
6167
+ [data-component~="ui-search-shell"][data-v-b1cde00b] {
6171
6168
  /* Hooks do not inherit, so the parts below read them from the root. */
6172
6169
  --_ui-search-shell-z-index: var(--ui-search-shell-z-index);
6173
6170
  --_ui-search-shell-padding-top: var(--ui-search-shell-padding-top);
@@ -6182,7 +6179,7 @@ legend[data-v-3a85bfdd] + * {
6182
6179
 
6183
6180
  display: contents;
6184
6181
  }
6185
- dialog[data-v-089e37ee] {
6182
+ dialog[data-v-b1cde00b] {
6186
6183
  position: fixed;
6187
6184
  inset: 0;
6188
6185
  z-index: var(--_ui-search-shell-z-index, 400);
@@ -6200,10 +6197,10 @@ dialog[data-v-089e37ee] {
6200
6197
  background: var(--ui-overlay-backdrop);
6201
6198
  color: var(--ui-text-primary);
6202
6199
  }
6203
- dialog[data-v-089e37ee]::backdrop {
6200
+ dialog[data-v-b1cde00b]::backdrop {
6204
6201
  background: var(--ui-overlay-backdrop);
6205
6202
  }
6206
- .panel[data-v-089e37ee] {
6203
+ .panel[data-v-b1cde00b] {
6207
6204
  position: relative;
6208
6205
  display: flex;
6209
6206
  flex-direction: column;
@@ -6223,20 +6220,10 @@ dialog[data-v-089e37ee]::backdrop {
6223
6220
  var(--ui-overlay-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl)))
6224
6221
  );
6225
6222
  }
6226
- .search[data-v-089e37ee] {
6223
+ .search[data-v-b1cde00b] {
6227
6224
  padding: var(--ui-space-3);
6228
- border-block-end: 1px solid var(--ui-border-divider);
6229
- transition:
6230
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
6231
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
6232
- }
6233
-
6234
- /* The search region shows where typing goes, whatever the author put in it. */
6235
- .search[data-v-089e37ee]:focus-within {
6236
- border-block-end-color: var(--_ui-search-shell-focus-color, var(--ui-control-focus));
6237
- box-shadow: inset 0 -1px 0 var(--_ui-search-shell-focus-color, var(--ui-control-focus));
6238
6225
  }
6239
- input[slot="search"][data-v-089e37ee-s] {
6226
+ input[slot="search"][data-v-b1cde00b-s] {
6240
6227
  box-sizing: border-box;
6241
6228
  inline-size: 100%;
6242
6229
  min-block-size: var(--ui-control-min-block-size);
@@ -6248,37 +6235,36 @@ input[slot="search"][data-v-089e37ee-s] {
6248
6235
  font: inherit;
6249
6236
  box-shadow: var(--ui-shadow-xs);
6250
6237
  }
6251
- input[slot="search"][data-v-089e37ee-s]:focus-visible {
6252
- border-color: var(--ui-control-focus);
6238
+ input[slot="search"][data-v-b1cde00b-s]:focus-visible {
6239
+ border-color: var(--_ui-search-shell-focus-color, var(--ui-control-focus));
6253
6240
  outline: 2px solid var(--ui-focus-ring);
6254
6241
  outline-offset: 2px;
6255
6242
  }
6256
- .status[data-v-089e37ee],
6257
- .actions[data-v-089e37ee] {
6243
+ .status[data-v-b1cde00b],
6244
+ .actions[data-v-b1cde00b] {
6258
6245
  flex-shrink: 0;
6259
6246
  padding: var(--ui-space-2) var(--ui-space-4);
6260
6247
  color: var(--ui-text-secondary);
6261
6248
  font-size: var(--ui-font-size-sm);
6262
6249
  }
6263
- .status[data-v-089e37ee] {
6264
- border-block-end: 1px solid var(--ui-border-divider);
6250
+ .status[data-v-b1cde00b] {
6251
+ padding-block-start: 0;
6265
6252
  }
6266
6253
 
6267
6254
  /* Laid out like the dialog's action row: actions right-aligned, spaced as buttons, no fill. */
6268
- .actions[data-v-089e37ee] {
6255
+ .actions[data-v-b1cde00b] {
6269
6256
  display: flex;
6270
6257
  flex-wrap: wrap;
6271
6258
  align-items: center;
6272
6259
  justify-content: flex-end;
6273
6260
  gap: var(--ui-space-2);
6274
6261
  padding: var(--ui-space-3) var(--ui-space-4);
6275
- border-block-start: 1px solid var(--ui-border-divider);
6276
6262
  }
6277
- .status[data-v-089e37ee]:empty,
6278
- .actions[data-v-089e37ee]:empty {
6263
+ .status[data-v-b1cde00b]:empty,
6264
+ .actions[data-v-b1cde00b]:empty {
6279
6265
  display: none;
6280
6266
  }
6281
- .body[data-v-089e37ee] {
6267
+ .body[data-v-b1cde00b] {
6282
6268
  flex: 1;
6283
6269
  min-block-size: 0;
6284
6270
  overflow: auto;
@@ -6306,10 +6292,10 @@ input[slot="search"][data-v-089e37ee-s]:focus-visible {
6306
6292
  calc(100% - var(--_ui-scroll-fade-size)) 100%;
6307
6293
  }
6308
6294
  @media (max-width: 47.9375rem) {
6309
- dialog[data-v-089e37ee] {
6295
+ dialog[data-v-b1cde00b] {
6310
6296
  padding: 0;
6311
6297
  }
6312
- .panel[data-v-089e37ee] {
6298
+ .panel[data-v-b1cde00b] {
6313
6299
  inline-size: 100%;
6314
6300
  min-block-size: 100dvh;
6315
6301
  max-block-size: none;
@@ -6319,7 +6305,7 @@ dialog[data-v-089e37ee] {
6319
6305
  }
6320
6306
 
6321
6307
  /* A component that sets its display still honours the hidden attribute on its root. */
6322
- [data-component~="ui-search-shell"][hidden][data-v-089e37ee] {
6308
+ [data-component~="ui-search-shell"][hidden][data-v-b1cde00b] {
6323
6309
  display: none;
6324
6310
  }
6325
6311
 
@@ -6440,7 +6426,7 @@ dialog[data-v-089e37ee] {
6440
6426
  syntax: "*";
6441
6427
  inherits: false;
6442
6428
  }
6443
- [data-component~="ui-select"][data-v-3f68a24f] {
6429
+ [data-component~="ui-select"][data-v-699dcb22] {
6444
6430
  box-sizing: border-box;
6445
6431
  display: inline-block;
6446
6432
  inline-size: var(--ui-select-inline-size, 100%);
@@ -6464,7 +6450,7 @@ dialog[data-v-089e37ee] {
6464
6450
 
6465
6451
  /* The select draws its own chevron: the native caret cannot be inset or sized consistently.
6466
6452
  * The root stays a native <s-lect>, so the icon is a background image rather than an element. */
6467
- [data-component~="ui-select"][data-v-3f68a24f] {
6453
+ [data-component~="ui-select"][data-v-699dcb22] {
6468
6454
  appearance: none;
6469
6455
  padding-inline-end: calc(var(--ui-space-3) + 1.5rem);
6470
6456
  background-image: var(
@@ -6475,13 +6461,13 @@ dialog[data-v-089e37ee] {
6475
6461
  background-position: right var(--ui-space-3) center;
6476
6462
  background-size: 1.125rem 1.125rem;
6477
6463
  }
6478
- [data-component~="ui-select"][data-v-3f68a24f]:hover:not(:focus):not(:disabled) {
6464
+ [data-component~="ui-select"][data-v-699dcb22]:hover:not(:focus):not(:disabled):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
6479
6465
  border-color: var(
6480
6466
  --ui-select-border-hover,
6481
6467
  var(--ui-control-border-hover, var(--ui-text-secondary))
6482
6468
  );
6483
6469
  }
6484
- [data-component~="ui-select"][data-v-3f68a24f]:focus-visible {
6470
+ [data-component~="ui-select"][data-v-699dcb22]:focus-visible {
6485
6471
  border-color: var(--ui-select-focus-border, var(--ui-control-focus, var(--ui-accent-solid)));
6486
6472
  outline: none;
6487
6473
  box-shadow: var(
@@ -6492,11 +6478,11 @@ dialog[data-v-089e37ee] {
6492
6478
  }
6493
6479
 
6494
6480
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
6495
- [data-component~="ui-select"][aria-invalid="true"][data-v-3f68a24f],
6496
- [data-component~="ui-select"][data-v-3f68a24f]:is(:user-invalid, [data-user-invalid]) {
6481
+ [data-component~="ui-select"][aria-invalid="true"][data-v-699dcb22],
6482
+ [data-component~="ui-select"][data-v-699dcb22]:is(:user-invalid, [data-user-invalid]) {
6497
6483
  border-color: var(--ui-select-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
6498
6484
  }
6499
- [data-component~="ui-select"][data-v-3f68a24f]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
6485
+ [data-component~="ui-select"][data-v-699dcb22]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
6500
6486
  box-shadow: var(
6501
6487
  --ui-select-invalid-focus-shadow,
6502
6488
  var(--ui-control-inset),
@@ -6507,13 +6493,13 @@ dialog[data-v-089e37ee] {
6507
6493
  )
6508
6494
  );
6509
6495
  }
6510
- [data-component~="ui-select"][data-v-3f68a24f]:disabled {
6496
+ [data-component~="ui-select"][data-v-699dcb22]:disabled {
6511
6497
  background-color: var(--ui-control-surface-disabled, var(--ui-surface-muted));
6512
6498
  color: var(--ui-disabled-text);
6513
6499
  box-shadow: none;
6514
6500
  cursor: not-allowed;
6515
6501
  }
6516
- [data-component~="ui-select"][data-ui-select-state~="size=sm"][data-v-3f68a24f] {
6502
+ [data-component~="ui-select"][data-ui-select-state~="size=sm"][data-v-699dcb22] {
6517
6503
  min-block-size: var(--ui-control-size-sm);
6518
6504
  padding: var(--ui-space-1) var(--ui-space-2);
6519
6505
  padding-inline-end: calc(var(--ui-space-2) + var(--ui-icon-size-sm) + var(--ui-space-1));
@@ -6521,7 +6507,7 @@ dialog[data-v-089e37ee] {
6521
6507
  background-size: var(--ui-icon-size-sm) var(--ui-icon-size-sm);
6522
6508
  font-size: var(--ui-font-size-sm);
6523
6509
  }
6524
- [data-component~="ui-select"][data-ui-select-state~="size=lg"][data-v-3f68a24f] {
6510
+ [data-component~="ui-select"][data-ui-select-state~="size=lg"][data-v-699dcb22] {
6525
6511
  min-block-size: var(--ui-control-size-lg);
6526
6512
  padding: var(--ui-space-3) var(--ui-space-4);
6527
6513
  padding-inline-end: calc(var(--ui-space-4) + 1.5rem);
@@ -6532,14 +6518,14 @@ dialog[data-v-089e37ee] {
6532
6518
  /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
6533
6519
  body-size text: below 16px, iOS zooms the page into the focused field. */
6534
6520
  @media (pointer: coarse) {
6535
- [data-component~="ui-select"][data-ui-select-state~="size=sm"][data-v-3f68a24f] {
6521
+ [data-component~="ui-select"][data-ui-select-state~="size=sm"][data-v-699dcb22] {
6536
6522
  min-block-size: var(--ui-control-min-block-size);
6537
6523
  font-size: inherit;
6538
6524
  }
6539
6525
  }
6540
6526
 
6541
6527
  /* A component that sets its display still honours the hidden attribute on its root. */
6542
- [data-component~="ui-select"][hidden][data-v-3f68a24f] {
6528
+ [data-component~="ui-select"][hidden][data-v-699dcb22] {
6543
6529
  display: none;
6544
6530
  }
6545
6531
 
@@ -7451,7 +7437,7 @@ tbody tr[data-v-a58b58d4-s]:last-child > * {
7451
7437
  syntax: "*";
7452
7438
  inherits: false;
7453
7439
  }
7454
- [data-component~="ui-textarea"][data-v-f371e58f] {
7440
+ [data-component~="ui-textarea"][data-v-a2e0e09f] {
7455
7441
  box-sizing: border-box;
7456
7442
  display: inline-block;
7457
7443
  inline-size: 100%;
@@ -7476,18 +7462,18 @@ tbody tr[data-v-a58b58d4-s]:last-child > * {
7476
7462
  }
7477
7463
 
7478
7464
  /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
7479
- [data-component~="ui-textarea"][data-v-f371e58f]::selection {
7465
+ [data-component~="ui-textarea"][data-v-a2e0e09f]::selection {
7480
7466
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
7481
7467
  color: inherit;
7482
7468
  }
7483
- [data-component~="ui-textarea"][data-v-f371e58f]::placeholder {
7469
+ [data-component~="ui-textarea"][data-v-a2e0e09f]::placeholder {
7484
7470
  color: var(--ui-control-placeholder, var(--ui-text-secondary));
7485
7471
  opacity: 1;
7486
7472
  }
7487
- [data-component~="ui-textarea"][data-v-f371e58f]:hover:not(:focus):not(:disabled) {
7473
+ [data-component~="ui-textarea"][data-v-a2e0e09f]:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
7488
7474
  border-color: var(--ui-control-border-hover, var(--ui-text-secondary));
7489
7475
  }
7490
- [data-component~="ui-textarea"][data-v-f371e58f]:focus-visible {
7476
+ [data-component~="ui-textarea"][data-v-a2e0e09f]:focus-visible {
7491
7477
  border-color: var(--ui-control-focus, var(--ui-accent-solid));
7492
7478
  outline: none;
7493
7479
  box-shadow: var(
@@ -7498,11 +7484,11 @@ tbody tr[data-v-a58b58d4-s]:last-child > * {
7498
7484
  }
7499
7485
 
7500
7486
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
7501
- [data-component~="ui-textarea"][aria-invalid="true"][data-v-f371e58f],
7502
- [data-component~="ui-textarea"][data-v-f371e58f]:is(:user-invalid, [data-user-invalid]) {
7487
+ [data-component~="ui-textarea"][aria-invalid="true"][data-v-a2e0e09f],
7488
+ [data-component~="ui-textarea"][data-v-a2e0e09f]:is(:user-invalid, [data-user-invalid]) {
7503
7489
  border-color: var(--ui-textarea-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
7504
7490
  }
7505
- [data-component~="ui-textarea"][data-v-f371e58f]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
7491
+ [data-component~="ui-textarea"][data-v-a2e0e09f]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
7506
7492
  box-shadow: var(
7507
7493
  --ui-textarea-invalid-focus-shadow,
7508
7494
  var(--ui-control-inset),
@@ -7513,24 +7499,24 @@ tbody tr[data-v-a58b58d4-s]:last-child > * {
7513
7499
  )
7514
7500
  );
7515
7501
  }
7516
- [data-component~="ui-textarea"][data-v-f371e58f]:disabled {
7502
+ [data-component~="ui-textarea"][data-v-a2e0e09f]:disabled {
7517
7503
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
7518
7504
  color: var(--ui-disabled-text);
7519
7505
  box-shadow: none;
7520
7506
  cursor: not-allowed;
7521
7507
  }
7522
- [data-component~="ui-textarea"][data-ui-textarea-state~="size=sm"][data-v-f371e58f] {
7508
+ [data-component~="ui-textarea"][data-ui-textarea-state~="size=sm"][data-v-a2e0e09f] {
7523
7509
  --_padding-block: var(--ui-space-1);
7524
7510
  padding: var(--ui-space-1) var(--ui-space-2);
7525
7511
  font-size: var(--ui-font-size-sm);
7526
7512
  }
7527
- [data-component~="ui-textarea"][data-ui-textarea-state~="size=lg"][data-v-f371e58f] {
7513
+ [data-component~="ui-textarea"][data-ui-textarea-state~="size=lg"][data-v-a2e0e09f] {
7528
7514
  --_padding-block: var(--ui-space-3);
7529
7515
  padding: var(--ui-space-3) var(--ui-space-4);
7530
7516
  font-size: var(--ui-font-size-md);
7531
7517
  }
7532
7518
  @supports (field-sizing: content) {
7533
- [data-component~="ui-textarea"][data-ui-textarea-state~="autosize"][data-v-f371e58f] {
7519
+ [data-component~="ui-textarea"][data-ui-textarea-state~="autosize"][data-v-a2e0e09f] {
7534
7520
  field-sizing: content;
7535
7521
  min-block-size: calc(var(--_rows) * 1lh + var(--_padding-block) + var(--_padding-block) + 2px);
7536
7522
  }
@@ -7538,13 +7524,13 @@ tbody tr[data-v-a58b58d4-s]:last-child > * {
7538
7524
 
7539
7525
  /* Below 16px, iOS zooms the page into the focused field, so touch keeps body-size text. */
7540
7526
  @media (pointer: coarse) {
7541
- [data-component~="ui-textarea"][data-ui-textarea-state~="size=sm"][data-v-f371e58f] {
7527
+ [data-component~="ui-textarea"][data-ui-textarea-state~="size=sm"][data-v-a2e0e09f] {
7542
7528
  font-size: inherit;
7543
7529
  }
7544
7530
  }
7545
7531
 
7546
7532
  /* A component that sets its display still honours the hidden attribute on its root. */
7547
- [data-component~="ui-textarea"][hidden][data-v-f371e58f] {
7533
+ [data-component~="ui-textarea"][hidden][data-v-a2e0e09f] {
7548
7534
  display: none;
7549
7535
  }
7550
7536