@surflane/ui 0.0.0-stage → 0.2.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 (89) hide show
  1. package/LICENSE-APACHE +202 -0
  2. package/LICENSE-MIT +18 -0
  3. package/README.md +55 -2
  4. package/dist/advanced-forms.d.ts +115 -0
  5. package/dist/advanced-forms.js +93 -0
  6. package/dist/app-shell.d.ts +23 -0
  7. package/dist/app-shell.js +29 -0
  8. package/dist/button.d.ts +11 -0
  9. package/dist/button.js +16 -0
  10. package/dist/chart.d.ts +48 -0
  11. package/dist/chart.js +126 -0
  12. package/dist/commands.d.ts +47 -0
  13. package/dist/commands.js +27 -0
  14. package/dist/content.d.ts +59 -0
  15. package/dist/content.js +104 -0
  16. package/dist/context-overlays.d.ts +95 -0
  17. package/dist/context-overlays.js +50 -0
  18. package/dist/data.d.ts +95 -0
  19. package/dist/data.js +40 -0
  20. package/dist/date-picker.d.ts +23 -0
  21. package/dist/date-picker.js +39 -0
  22. package/dist/dialog-focus.d.ts +5 -0
  23. package/dist/dialog-focus.js +35 -0
  24. package/dist/dialog.d.ts +59 -0
  25. package/dist/dialog.js +49 -0
  26. package/dist/feedback.d.ts +76 -0
  27. package/dist/feedback.js +35 -0
  28. package/dist/file-upload.d.ts +77 -0
  29. package/dist/file-upload.js +344 -0
  30. package/dist/filter-bar.d.ts +17 -0
  31. package/dist/filter-bar.js +23 -0
  32. package/dist/form-state.d.ts +5 -0
  33. package/dist/form-state.js +63 -0
  34. package/dist/forms.d.ts +91 -0
  35. package/dist/forms.js +109 -0
  36. package/dist/foundations.d.ts +51 -0
  37. package/dist/foundations.js +55 -0
  38. package/dist/icon.d.ts +37 -0
  39. package/dist/icon.js +28 -0
  40. package/dist/index.d.ts +37 -0
  41. package/dist/index.js +38 -0
  42. package/dist/input-extensions.d.ts +117 -0
  43. package/dist/input-extensions.js +64 -0
  44. package/dist/input.d.ts +7 -0
  45. package/dist/input.js +10 -0
  46. package/dist/markdown.d.ts +15 -0
  47. package/dist/markdown.js +121 -0
  48. package/dist/menu.d.ts +79 -0
  49. package/dist/menu.js +44 -0
  50. package/dist/messages.d.ts +63 -0
  51. package/dist/messages.js +38 -0
  52. package/dist/navigation-menu.d.ts +52 -0
  53. package/dist/navigation-menu.js +31 -0
  54. package/dist/navigation.d.ts +107 -0
  55. package/dist/navigation.js +108 -0
  56. package/dist/otp-field.d.ts +12 -0
  57. package/dist/otp-field.js +46 -0
  58. package/dist/pagination.d.ts +23 -0
  59. package/dist/pagination.js +44 -0
  60. package/dist/panels.d.ts +66 -0
  61. package/dist/panels.js +99 -0
  62. package/dist/parts.d.ts +9 -0
  63. package/dist/parts.js +22 -0
  64. package/dist/popover.d.ts +21 -0
  65. package/dist/popover.js +13 -0
  66. package/dist/scroll-area.d.ts +8 -0
  67. package/dist/scroll-area.js +39 -0
  68. package/dist/select.d.ts +33 -0
  69. package/dist/select.js +97 -0
  70. package/dist/sizing.d.ts +13 -0
  71. package/dist/sizing.js +23 -0
  72. package/dist/slot.d.ts +2 -0
  73. package/dist/slot.js +10 -0
  74. package/dist/status.d.ts +22 -0
  75. package/dist/status.js +17 -0
  76. package/dist/syntax-engine.d.ts +5 -0
  77. package/dist/syntax-engine.js +129 -0
  78. package/dist/syntax-highlighter.d.ts +17 -0
  79. package/dist/syntax-highlighter.js +64 -0
  80. package/dist/toast.d.ts +59 -0
  81. package/dist/toast.js +99 -0
  82. package/dist/tone-transition.d.ts +4 -0
  83. package/dist/tone-transition.js +81 -0
  84. package/dist/tooltip.d.ts +11 -0
  85. package/dist/tooltip.js +13 -0
  86. package/dist/tree.d.ts +28 -0
  87. package/dist/tree.js +311 -0
  88. package/package.json +109 -4
  89. package/src/styles.css +3799 -0
package/src/styles.css ADDED
@@ -0,0 +1,3799 @@
1
+ @import '@surflane/design-tokens/foundations.css';
2
+ @import '@surflane/design-tokens/presentation.css';
3
+
4
+ /* Explicit component classes: no utility framework or application-wide reset. */
5
+ .pui-control,
6
+ .pui-select {
7
+ position: relative;
8
+ display: inline-flex;
9
+ min-width: 0;
10
+ max-width: 100%;
11
+ width: 100%;
12
+ vertical-align: middle;
13
+ }
14
+ .pui-input,
15
+ .pui-select-trigger {
16
+ box-sizing: border-box;
17
+ width: 100%;
18
+ min-width: 0;
19
+ height: var(--control-height);
20
+ padding: 0 var(--control-padding-x);
21
+ border: 1px solid var(--control-border);
22
+ border-radius: var(--control-radius);
23
+ background: var(--control-background);
24
+ color: var(--ink);
25
+ font: 400 14px/22px var(--font-body);
26
+ outline: none;
27
+ transition:
28
+ background-color var(--duration-fast) var(--ease-out),
29
+ border-color var(--duration-fast) var(--ease-out),
30
+ box-shadow var(--duration-fast) var(--ease-out);
31
+ }
32
+ .pui-input::placeholder {
33
+ color: var(--control-placeholder);
34
+ opacity: 1;
35
+ }
36
+ .pui-input:hover:not(:disabled, [aria-disabled='true'], [readonly], :focus),
37
+ .pui-select-trigger:hover:not(
38
+ :disabled,
39
+ [aria-disabled='true'],
40
+ :focus-visible
41
+ ) {
42
+ background: var(--control-hover-background);
43
+ border-color: var(--control-hover-border);
44
+ }
45
+ .pui-input:focus,
46
+ .pui-select-trigger:focus-visible {
47
+ background: var(--control-focus-background);
48
+ border-color: var(--control-focus);
49
+ box-shadow: 0 0 0 3px
50
+ color-mix(in oklch, var(--control-focus) 18%, transparent);
51
+ }
52
+ .pui-input:disabled,
53
+ .pui-select-trigger:disabled {
54
+ opacity: var(--control-disabled-opacity);
55
+ cursor: not-allowed;
56
+ background: var(--control-disabled-background);
57
+ }
58
+ .pui-input[aria-invalid='true'],
59
+ .pui-select-trigger[aria-invalid='true'] {
60
+ border-color: var(--status-danger-fg);
61
+ }
62
+ .pui-control-icon {
63
+ pointer-events: none;
64
+ position: absolute;
65
+ inset-inline-start: var(--control-padding-x);
66
+ top: 50%;
67
+ transform: translateY(-50%);
68
+ display: flex;
69
+ align-items: center;
70
+ color: var(--ink-muted);
71
+ z-index: 1;
72
+ }
73
+ .pui-control[data-leading-icon] .pui-input {
74
+ padding-inline-start: calc(
75
+ var(--control-padding-x) + var(--control-icon-size) +
76
+ var(--control-icon-gap)
77
+ );
78
+ }
79
+ .pui-select-trigger {
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: space-between;
83
+ gap: var(--space-2);
84
+ text-align: start;
85
+ cursor: pointer;
86
+ }
87
+ .pui-select-trigger > span:first-child {
88
+ overflow: hidden;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ }
92
+ .pui-select-icon {
93
+ display: flex;
94
+ align-items: center;
95
+ flex: none;
96
+ color: var(--ink-muted);
97
+ }
98
+ .pui-positioner {
99
+ z-index: var(--layer-popup);
100
+ outline: none;
101
+ isolation: isolate;
102
+ }
103
+ .pui-select-popup,
104
+ .pui-popover,
105
+ .pui-menu,
106
+ .pui-tooltip {
107
+ box-sizing: border-box;
108
+ max-width: calc(100vw - 24px);
109
+ border: 1px solid var(--menu-border);
110
+ border-radius: var(--radius-md);
111
+ background: var(--menu-background);
112
+ color: var(--ink);
113
+ box-shadow: var(--shadow-float);
114
+ font: 400 14px/22px var(--font-body);
115
+ outline: none;
116
+ }
117
+ .pui-tooltip-positioner {
118
+ z-index: var(--layer-tooltip);
119
+ }
120
+ .pui-select-popup {
121
+ min-width: var(--anchor-width);
122
+ max-height: min(360px, var(--available-height));
123
+ overflow: auto;
124
+ padding: var(--space-1);
125
+ overscroll-behavior: contain;
126
+ scrollbar-width: thin;
127
+ }
128
+ .pui-select-item {
129
+ position: relative;
130
+ display: flex;
131
+ align-items: center;
132
+ gap: var(--space-2);
133
+ min-height: var(--control-height);
134
+ padding: 6px var(--space-3) 6px 32px;
135
+ border-radius: var(--control-radius);
136
+ cursor: default;
137
+ outline: none;
138
+ overflow-wrap: anywhere;
139
+ }
140
+ .pui-select-item[data-highlighted] {
141
+ background: var(--menu-hover-background);
142
+ }
143
+ .pui-select-item[data-selected] {
144
+ font-weight: 500;
145
+ }
146
+ .pui-select-item[data-disabled] {
147
+ opacity: var(--control-disabled-opacity);
148
+ }
149
+ .pui-select-check {
150
+ position: absolute;
151
+ left: 10px;
152
+ display: flex;
153
+ }
154
+ .pui-popover {
155
+ padding: var(--space-4);
156
+ max-height: var(--available-height);
157
+ overflow: auto;
158
+ }
159
+ .pui-menu {
160
+ padding: var(--space-1);
161
+ min-width: 176px;
162
+ }
163
+ .pui-tooltip {
164
+ border: 0;
165
+ background: var(--tooltip-background);
166
+ color: var(--tooltip-foreground);
167
+ padding: 8px 12px;
168
+ max-width: 256px;
169
+ font-size: 12px;
170
+ line-height: 18px;
171
+ }
172
+ .pui-button {
173
+ box-sizing: border-box;
174
+ height: var(--control-height);
175
+ display: inline-flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ gap: var(--space-2);
179
+ min-height: var(--control-height);
180
+ padding: 0 14px;
181
+ border: 1px solid transparent;
182
+ border-radius: var(--radius-full);
183
+ font: 500 14px/20px var(--font-body);
184
+ color: var(--ink);
185
+ background: var(--canvas);
186
+ /* A link rendered as a button drops the user-agent underline. */
187
+ text-decoration: none;
188
+ cursor: pointer;
189
+ }
190
+ .pui-button:is([data-variant='default'], [data-variant='primary']) {
191
+ /* On the brand fill the layer is its ink: light ink barely moves bright cyan. */
192
+ --interaction-hover-bg: oklch(from var(--on-brand) l c h / 0.08);
193
+ --interaction-active-bg: oklch(from var(--on-brand) l c h / 0.14);
194
+ background: var(--brand);
195
+ border-color: transparent;
196
+ color: var(--on-brand);
197
+ }
198
+ .pui-button[data-variant='outline'] {
199
+ border-color: var(--line);
200
+ background: transparent;
201
+ }
202
+ .pui-button[data-variant='ghost'] {
203
+ border-color: transparent;
204
+ background: transparent;
205
+ }
206
+ /* Hover adds the state layer over the variant's own fill, so a primary, a
207
+ pressed toggle and a transparent toolbar button all step by the same amount. */
208
+ .pui-button:hover:not(:disabled, [data-disabled], [data-variant='link']) {
209
+ background-image: linear-gradient(
210
+ var(--interaction-hover-bg),
211
+ var(--interaction-hover-bg)
212
+ );
213
+ }
214
+ .pui-button[data-variant='link']:hover:not(:disabled, [data-disabled]) {
215
+ text-decoration-thickness: 2px;
216
+ }
217
+ .pui-button:focus-visible {
218
+ outline: 2px solid var(--interaction-focus);
219
+ outline-offset: 2px;
220
+ }
221
+ .pui-button:is(:disabled, [data-disabled], [aria-disabled='true']) {
222
+ opacity: var(--control-disabled-opacity);
223
+ cursor: not-allowed;
224
+ }
225
+ .pui-scroll-root {
226
+ position: relative;
227
+ min-width: 0;
228
+ max-width: 100%;
229
+ }
230
+ .pui-scroll-viewport {
231
+ max-width: 100%;
232
+ overscroll-behavior: auto;
233
+ scrollbar-width: none !important;
234
+ }
235
+ .pui-scroll-viewport::-webkit-scrollbar {
236
+ display: none;
237
+ }
238
+ /* A horizontal scroller fades the edge that hides more content, so a cut-off table
239
+ * or code line reads as scrollable before its scrollbar appears, on touch too. */
240
+ .pui-scroll-root[data-overflow-x-end] > .pui-scroll-viewport {
241
+ mask-image: linear-gradient(to left, transparent, #000 var(--space-6));
242
+ }
243
+ .pui-scroll-root[data-overflow-x-start] > .pui-scroll-viewport {
244
+ mask-image: linear-gradient(to right, transparent, #000 var(--space-6));
245
+ }
246
+ .pui-scroll-root[data-overflow-x-start][data-overflow-x-end]
247
+ > .pui-scroll-viewport {
248
+ mask-image: linear-gradient(
249
+ to right,
250
+ transparent,
251
+ #000 var(--space-6),
252
+ #000 calc(100% - var(--space-6)),
253
+ transparent
254
+ );
255
+ }
256
+ .pui-scrollbar {
257
+ display: flex;
258
+ user-select: none;
259
+ touch-action: none;
260
+ padding: 2px;
261
+ background: transparent;
262
+ z-index: 1;
263
+ opacity: 0;
264
+ transition: opacity var(--duration-fast) var(--ease-out);
265
+ }
266
+ .pui-scrollbar[data-scrolling],
267
+ .pui-scrollbar:hover,
268
+ .pui-scroll-root[data-scroll-near-x]
269
+ > .pui-scrollbar[data-orientation='horizontal'],
270
+ .pui-scroll-root[data-scroll-near-y]
271
+ > .pui-scrollbar[data-orientation='vertical'],
272
+ .pui-scroll-root[data-scroll-dragging='horizontal']
273
+ > .pui-scrollbar[data-orientation='horizontal'],
274
+ .pui-scroll-root[data-scroll-dragging='vertical']
275
+ > .pui-scrollbar[data-orientation='vertical'],
276
+ .pui-scroll-root:has(> .pui-scroll-viewport:focus-visible) > .pui-scrollbar {
277
+ opacity: 1;
278
+ }
279
+ .pui-scrollbar[data-orientation='horizontal'] {
280
+ height: 10px;
281
+ position: absolute;
282
+ bottom: 0;
283
+ left: 0;
284
+ right: 0;
285
+ }
286
+ .pui-scrollbar[data-orientation='vertical'] {
287
+ flex-direction: column;
288
+ width: 10px;
289
+ position: absolute;
290
+ top: 0;
291
+ bottom: 0;
292
+ right: 0;
293
+ }
294
+ .pui-scroll-thumb {
295
+ flex: none;
296
+ border-radius: var(--radius-full);
297
+ background: var(--ink-muted);
298
+ opacity: 0.45;
299
+ }
300
+ .pui-scrollbar:hover .pui-scroll-thumb {
301
+ opacity: 0.8;
302
+ }
303
+ @media (forced-colors: active) {
304
+ .pui-scrollbar {
305
+ opacity: 1;
306
+ }
307
+ .pui-scrollbar .pui-scroll-thumb {
308
+ background: CanvasText;
309
+ opacity: 1;
310
+ }
311
+ }
312
+ /* Dialog: acknowledge arrival; dismissal has no visual wait. */
313
+ .pui-dialog-backdrop {
314
+ position: fixed;
315
+ inset: 0;
316
+ z-index: var(--layer-backdrop);
317
+ background: color-mix(in srgb, var(--chrome), transparent 25%);
318
+ backdrop-filter: blur(3px);
319
+ opacity: 1;
320
+ transition: opacity var(--dialog-enter-duration) var(--motion-ease);
321
+ }
322
+ .pui-dialog-popup {
323
+ position: fixed;
324
+ top: 50%;
325
+ left: 50%;
326
+ transform: translate(-50%, -50%);
327
+ z-index: var(--layer-dialog);
328
+ margin: 0;
329
+ outline: none;
330
+ opacity: 1;
331
+ translate: 0 0;
332
+ transition:
333
+ opacity var(--dialog-enter-duration) var(--motion-ease),
334
+ translate var(--dialog-enter-duration) var(--motion-spatial-ease);
335
+ }
336
+ .pui-dialog-popup[data-starting-style] {
337
+ opacity: 0;
338
+ translate: 0 var(--dialog-enter-offset);
339
+ }
340
+ .pui-dialog-backdrop[data-starting-style] {
341
+ opacity: 0;
342
+ }
343
+ .pui-dialog-popup[data-ending-style],
344
+ .pui-dialog-backdrop[data-ending-style] {
345
+ transition: none;
346
+ transition-duration: var(--dialog-exit-duration);
347
+ opacity: 0;
348
+ }
349
+ @media (prefers-reduced-motion: reduce) {
350
+ .pui-dialog-popup,
351
+ .pui-dialog-backdrop {
352
+ transition: none;
353
+ }
354
+ .pui-dialog-popup {
355
+ translate: none;
356
+ }
357
+ }
358
+ @media (prefers-reduced-motion: reduce) {
359
+ .pui-input,
360
+ .pui-select-trigger {
361
+ transition: none;
362
+ }
363
+ }
364
+
365
+ .pui-button[data-size='xs'] {
366
+ height: 24px;
367
+ min-height: 24px;
368
+ padding-inline: 8px;
369
+ font-size: 12px;
370
+ gap: 4px;
371
+ }
372
+ .pui-button[data-size='sm'] {
373
+ height: 32px;
374
+ min-height: 32px;
375
+ padding-inline: 10px;
376
+ }
377
+ .pui-button[data-size='lg'] {
378
+ height: var(--size-control-height-large);
379
+ min-height: var(--size-control-height-large);
380
+ padding-inline: var(--size-button-padding-large);
381
+ }
382
+ .pui-button[data-size^='icon'] {
383
+ width: var(--control-height);
384
+ padding: 0;
385
+ }
386
+ @media (max-width: 760px) {
387
+ .pui-button {
388
+ min-height: 44px;
389
+ }
390
+ }
391
+
392
+ .pui-button[data-variant='secondary'] {
393
+ background: var(--selected);
394
+ color: var(--ink);
395
+ }
396
+ .pui-button[data-variant='destructive'] {
397
+ background: var(--status-danger-bg);
398
+ color: var(--status-danger-fg);
399
+ border-color: transparent;
400
+ }
401
+ .pui-button[data-variant='link'] {
402
+ background: transparent;
403
+ color: var(--brand-ink);
404
+ border-color: transparent;
405
+ text-decoration: underline;
406
+ }
407
+
408
+ /* Edge panels share surfaces and layers; only Drawer adds native Base UI gestures. */
409
+ .pui-panel-layer {
410
+ position: fixed;
411
+ inset: 0;
412
+ z-index: var(--layer-dialog);
413
+ pointer-events: none;
414
+ isolation: isolate;
415
+ }
416
+ .pui-panel-backdrop {
417
+ position: fixed;
418
+ inset: 0;
419
+ z-index: 0;
420
+ pointer-events: auto;
421
+ background: color-mix(in srgb, var(--chrome), transparent 25%);
422
+ backdrop-filter: blur(3px);
423
+ opacity: calc(1 - var(--drawer-swipe-progress, 0));
424
+ transition: opacity var(--duration-base) var(--ease-out);
425
+ }
426
+ .pui-panel-backdrop[data-starting-style],
427
+ .pui-panel-backdrop[data-ending-style] {
428
+ opacity: 0;
429
+ }
430
+ .pui-panel-viewport {
431
+ position: fixed;
432
+ inset: 0;
433
+ z-index: 1;
434
+ display: flex;
435
+ padding: 12px;
436
+ pointer-events: none;
437
+ }
438
+ .pui-panel-viewport[data-side='right'] {
439
+ justify-content: flex-end;
440
+ }
441
+ .pui-panel-viewport[data-side='left'] {
442
+ justify-content: flex-start;
443
+ }
444
+ .pui-panel-viewport[data-side='top'] {
445
+ align-items: flex-start;
446
+ justify-content: center;
447
+ }
448
+ .pui-panel-viewport[data-side='bottom'] {
449
+ align-items: flex-end;
450
+ justify-content: center;
451
+ }
452
+ .pui-panel {
453
+ --panel-width: 440px;
454
+ --panel-enter-x: 0px;
455
+ --panel-enter-y: 0px;
456
+ position: relative;
457
+ display: flex;
458
+ flex-direction: column;
459
+ width: min(var(--panel-width), 100%);
460
+ min-width: 0;
461
+ max-height: 100%;
462
+ overflow: hidden;
463
+ pointer-events: auto;
464
+ background: var(--canvas);
465
+ color: var(--ink);
466
+ border-radius: var(--radius-sheet);
467
+ box-shadow: var(--shadow-float);
468
+ outline: none;
469
+ font: 400 14px/22px var(--font-body);
470
+ transform: translate(
471
+ var(--drawer-swipe-movement-x, 0px),
472
+ calc(
473
+ var(--drawer-swipe-movement-y, 0px) + var(--drawer-snap-point-offset, 0px)
474
+ )
475
+ );
476
+ transition: transform var(--duration-base) var(--ease-out);
477
+ }
478
+ .pui-panel[data-size='sm'] {
479
+ --panel-width: 320px;
480
+ }
481
+ .pui-panel[data-size='lg'] {
482
+ --panel-width: 640px;
483
+ }
484
+ .pui-panel[data-side='right'] {
485
+ --panel-enter-x: calc(100% + 12px);
486
+ height: 100%;
487
+ }
488
+ .pui-panel[data-side='left'] {
489
+ --panel-enter-x: calc(-100% - 12px);
490
+ height: 100%;
491
+ }
492
+ .pui-panel[data-side='top'] {
493
+ --panel-enter-y: calc(-100% - 12px);
494
+ max-height: min(85dvh, 100%);
495
+ }
496
+ .pui-panel[data-side='bottom'] {
497
+ --panel-enter-y: calc(100% + 12px);
498
+ max-height: min(85dvh, 100%);
499
+ }
500
+ .pui-panel[data-starting-style],
501
+ .pui-panel[data-ending-style] {
502
+ transform: translate(var(--panel-enter-x), var(--panel-enter-y));
503
+ }
504
+ .pui-panel[data-swiping],
505
+ .pui-panel-backdrop[data-swiping] {
506
+ transition: none;
507
+ }
508
+ .pui-panel-content {
509
+ display: flex;
510
+ flex-direction: column;
511
+ min-height: 0;
512
+ flex: 1;
513
+ }
514
+ .pui-panel-header {
515
+ flex: none;
516
+ padding: 24px 68px 20px 24px;
517
+ }
518
+ .pui-panel-title {
519
+ margin: 0;
520
+ font: 500 22px/28px var(--font-display);
521
+ letter-spacing: var(--tracking);
522
+ }
523
+ .pui-panel-description {
524
+ margin: 8px 0 0;
525
+ color: var(--ink-body);
526
+ font: 400 14px/22px var(--font-body);
527
+ }
528
+ .pui-panel-body {
529
+ flex: 1 1 auto;
530
+ min-height: 0;
531
+ overflow: auto;
532
+ padding: 0 24px 24px;
533
+ overscroll-behavior: contain;
534
+ scrollbar-width: thin;
535
+ scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
536
+ }
537
+ .pui-panel-body::-webkit-scrollbar {
538
+ width: var(--scrollbar-size);
539
+ height: var(--scrollbar-size);
540
+ }
541
+ .pui-panel-body::-webkit-scrollbar-thumb {
542
+ border-radius: var(--scrollbar-radius);
543
+ background: var(--scrollbar-thumb);
544
+ }
545
+ .pui-panel-body::-webkit-scrollbar-thumb:hover {
546
+ background: var(--scrollbar-thumb-hover);
547
+ }
548
+ .pui-panel-footer {
549
+ flex: none;
550
+ display: flex;
551
+ justify-content: flex-end;
552
+ flex-wrap: wrap;
553
+ gap: var(--space-2);
554
+ padding: 16px 24px max(20px, env(safe-area-inset-bottom));
555
+ background: var(--surface);
556
+ }
557
+ .pui-panel-close {
558
+ position: absolute;
559
+ top: 16px;
560
+ right: 16px;
561
+ z-index: 1;
562
+ }
563
+ .pui-drawer-handle {
564
+ flex: none;
565
+ width: 36px;
566
+ height: 4px;
567
+ margin: 10px auto 0;
568
+ border-radius: var(--radius-full);
569
+ background: var(--line);
570
+ }
571
+ .pui-drawer[data-side='left'] > .pui-drawer-handle,
572
+ .pui-drawer[data-side='right'] > .pui-drawer-handle {
573
+ display: none;
574
+ }
575
+ @media (prefers-reduced-motion: reduce) {
576
+ .pui-panel,
577
+ .pui-panel-backdrop {
578
+ transition: none;
579
+ }
580
+ }
581
+ .pui-panel-layer,
582
+ .pui-panel-viewport,
583
+ .pui-panel,
584
+ .pui-panel-content,
585
+ .pui-panel-header,
586
+ .pui-panel-body,
587
+ .pui-panel-footer {
588
+ box-sizing: border-box;
589
+ }
590
+ .pui-panel-viewport[data-side='bottom'] {
591
+ bottom: var(--drawer-keyboard-inset, 0px);
592
+ }
593
+
594
+ .pui-dialog-close {
595
+ position: absolute;
596
+ top: 16px;
597
+ right: 16px;
598
+ z-index: 1;
599
+ }
600
+
601
+ /* Structural chrome never reserves scrollbar space; scrolling belongs to Body. */
602
+ .pui-dialog-content {
603
+ box-sizing: border-box;
604
+ display: flex;
605
+ flex-direction: column;
606
+ width: min(640px, calc(100% - 32px));
607
+ max-height: calc(100dvh - 32px);
608
+ overflow: hidden;
609
+ scrollbar-gutter: auto;
610
+ padding: 0;
611
+ border: 1px solid var(--line);
612
+ border-radius: var(--radius-sheet);
613
+ background: var(--canvas);
614
+ color: var(--ink);
615
+ box-shadow: var(--shadow-float);
616
+ font: 400 14px/22px var(--font-body);
617
+ }
618
+ .pui-dialog-header,
619
+ .pui-dialog-body,
620
+ .pui-dialog-footer {
621
+ box-sizing: border-box;
622
+ min-width: 0;
623
+ }
624
+ .pui-dialog-header,
625
+ .pui-dialog-footer {
626
+ flex: none;
627
+ align-self: stretch;
628
+ }
629
+ .pui-dialog-header {
630
+ padding: 24px 72px 20px 24px;
631
+ border-bottom: 1px solid var(--line);
632
+ }
633
+ .pui-dialog-header h2 {
634
+ margin: 0;
635
+ font: 500 22px/28px var(--font-display);
636
+ }
637
+ .pui-dialog-header p {
638
+ margin: 8px 0 0;
639
+ color: var(--ink-body);
640
+ }
641
+ .pui-dialog-body {
642
+ flex: 1 1 auto;
643
+ min-height: 0;
644
+ overflow: auto;
645
+ padding: 24px;
646
+ overscroll-behavior: contain;
647
+ scrollbar-width: thin;
648
+ scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
649
+ }
650
+ .pui-dialog-body::-webkit-scrollbar {
651
+ width: var(--scrollbar-size);
652
+ height: var(--scrollbar-size);
653
+ }
654
+ .pui-dialog-body::-webkit-scrollbar-thumb {
655
+ background: var(--scrollbar-thumb);
656
+ border-radius: var(--scrollbar-radius);
657
+ }
658
+ .pui-dialog-body::-webkit-scrollbar-thumb:hover {
659
+ background: var(--scrollbar-thumb-hover);
660
+ }
661
+ .pui-dialog-footer {
662
+ display: flex;
663
+ justify-content: flex-end;
664
+ flex-wrap: wrap;
665
+ gap: var(--space-2);
666
+ padding: 20px 24px;
667
+ border-top: 1px solid var(--line);
668
+ }
669
+ .pui-dialog-close:disabled {
670
+ opacity: var(--control-disabled-opacity);
671
+ cursor: not-allowed;
672
+ }
673
+
674
+ .pui-confirm-content {
675
+ width: min(420px, calc(100% - 32px));
676
+ }
677
+ .pui-confirm-content .pui-dialog-header {
678
+ padding-inline-end: 24px;
679
+ border-bottom: 0;
680
+ }
681
+ .pui-confirm-content .pui-dialog-footer {
682
+ border-top: 0;
683
+ padding-top: 8px;
684
+ }
685
+
686
+ /* Form and selection primitives: semantic labels, consistent control states. */
687
+ .pui-form,
688
+ .pui-field {
689
+ display: flex;
690
+ flex-direction: column;
691
+ min-width: 0;
692
+ }
693
+ .pui-form {
694
+ gap: var(--space-6);
695
+ }
696
+ .pui-field {
697
+ gap: var(--space-2);
698
+ }
699
+ .pui-field-label {
700
+ display: block;
701
+ margin: 0;
702
+ color: var(--ink);
703
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
704
+ }
705
+ .pui-field-description,
706
+ .pui-field-error {
707
+ margin: 0;
708
+ font: 400 var(--type-caption-size)/var(--type-caption-leading)
709
+ var(--font-body);
710
+ overflow-wrap: anywhere;
711
+ }
712
+ .pui-field-description {
713
+ color: var(--ink-muted);
714
+ }
715
+ .pui-field-error {
716
+ color: var(--status-danger-fg);
717
+ }
718
+ .pui-fieldset {
719
+ min-width: 0;
720
+ margin: 0;
721
+ padding: 0;
722
+ border: 0;
723
+ display: flex;
724
+ flex-direction: column;
725
+ gap: var(--space-4);
726
+ }
727
+ .pui-fieldset-legend {
728
+ padding: 0;
729
+ margin-bottom: var(--space-4);
730
+ color: var(--ink);
731
+ font: 500 var(--type-subsection-size)/var(--type-subsection-leading)
732
+ var(--font-body);
733
+ }
734
+ .pui-field-item {
735
+ display: grid;
736
+ grid-template-columns: auto minmax(0, 1fr);
737
+ align-items: center;
738
+ column-gap: var(--space-3);
739
+ row-gap: var(--space-1);
740
+ min-height: var(--control-height);
741
+ }
742
+ .pui-field-item > :is(.pui-field-description, .pui-field-error) {
743
+ grid-column: 2;
744
+ }
745
+ .pui-choice-group {
746
+ display: flex;
747
+ flex-direction: column;
748
+ gap: var(--space-2);
749
+ min-width: 0;
750
+ }
751
+ .pui-textarea {
752
+ height: auto;
753
+ min-height: calc(var(--control-height) * 2.5);
754
+ padding-block: var(--space-3);
755
+ resize: vertical;
756
+ scrollbar-width: thin;
757
+ scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
758
+ }
759
+ .pui-textarea[readonly],
760
+ .pui-input[readonly] {
761
+ cursor: text;
762
+ }
763
+ .pui-checkbox,
764
+ .pui-radio,
765
+ .pui-switch {
766
+ box-sizing: border-box;
767
+ display: inline-flex;
768
+ align-items: center;
769
+ justify-content: center;
770
+ flex: none;
771
+ width: var(--control-choice-size);
772
+ height: var(--control-choice-size);
773
+ border: 1px solid var(--control-choice-border);
774
+ border-radius: var(--control-choice-radius);
775
+ background: var(--control-background);
776
+ color: var(--ink);
777
+ outline: none;
778
+ cursor: pointer;
779
+ transition:
780
+ background-color var(--duration-fast) var(--ease-out),
781
+ border-color var(--duration-fast) var(--ease-out),
782
+ box-shadow var(--duration-fast) var(--ease-out);
783
+ }
784
+ .pui-checkbox:hover:not([data-disabled], [data-readonly]),
785
+ .pui-radio:hover:not([data-disabled], [data-readonly]),
786
+ .pui-switch:hover:not([data-disabled], [data-readonly]) {
787
+ border-color: var(--control-choice-hover-border);
788
+ background: var(--control-hover-background);
789
+ }
790
+ .pui-checkbox:is([data-checked], [data-indeterminate]),
791
+ .pui-radio[data-checked],
792
+ .pui-switch[data-checked] {
793
+ background: var(--control-choice-selected-bg);
794
+ border-color: var(--control-choice-selected-border);
795
+ color: var(--control-choice-selected-fg);
796
+ }
797
+ /* Label hover shares the same feedback as the small control itself. */
798
+ .pui-choice-label:hover
799
+ :is(.pui-checkbox, .pui-radio, .pui-switch):not(
800
+ [data-disabled],
801
+ [data-readonly]
802
+ ) {
803
+ background: var(--control-hover-background);
804
+ border-color: var(--control-choice-hover-border);
805
+ }
806
+ :is(.pui-checkbox, .pui-radio, .pui-switch):is(
807
+ [data-checked],
808
+ [data-indeterminate]
809
+ ):hover:not([data-disabled], [data-readonly]),
810
+ .pui-choice-label:hover
811
+ :is(.pui-checkbox, .pui-radio, .pui-switch):is(
812
+ [data-checked],
813
+ [data-indeterminate]
814
+ ):not([data-disabled], [data-readonly]) {
815
+ background: var(--control-choice-selected-hover-bg);
816
+ border-color: var(--control-choice-selected-border);
817
+ }
818
+ .pui-checkbox:focus-visible,
819
+ .pui-radio:focus-visible,
820
+ .pui-switch:focus-visible {
821
+ outline: 2px solid var(--interaction-focus);
822
+ outline-offset: 3px;
823
+ }
824
+ .pui-checkbox[data-disabled],
825
+ .pui-radio[data-disabled],
826
+ .pui-switch[data-disabled] {
827
+ opacity: var(--control-disabled-opacity);
828
+ cursor: not-allowed;
829
+ }
830
+ .pui-checkbox[data-readonly],
831
+ .pui-radio[data-readonly],
832
+ .pui-switch[data-readonly] {
833
+ cursor: default;
834
+ }
835
+ :is(.pui-checkbox, .pui-radio, .pui-switch)[data-invalid],
836
+ .pui-choice-label:hover
837
+ :is(.pui-checkbox, .pui-radio, .pui-switch)[data-invalid] {
838
+ border-color: var(--status-danger-fg);
839
+ }
840
+ .pui-checkbox-indicator {
841
+ display: flex;
842
+ align-items: center;
843
+ justify-content: center;
844
+ }
845
+ .pui-checkbox-mixed {
846
+ display: none;
847
+ }
848
+ .pui-checkbox[data-indeterminate] .pui-checkbox-check {
849
+ display: none;
850
+ }
851
+ .pui-checkbox[data-indeterminate] .pui-checkbox-mixed {
852
+ display: block;
853
+ }
854
+ .pui-radio {
855
+ border-radius: var(--radius-full);
856
+ }
857
+ .pui-radio-indicator {
858
+ width: 8px;
859
+ height: 8px;
860
+ border-radius: var(--radius-full);
861
+ background: currentColor;
862
+ }
863
+ .pui-switch {
864
+ width: var(--control-switch-width);
865
+ height: var(--control-switch-height);
866
+ padding: 3px;
867
+ border-radius: var(--radius-full);
868
+ justify-content: flex-start;
869
+ }
870
+ .pui-switch-thumb {
871
+ width: var(--control-switch-thumb);
872
+ height: var(--control-switch-thumb);
873
+ border-radius: var(--radius-full);
874
+ background: var(--ink-muted);
875
+ transform: translateX(0);
876
+ transition:
877
+ transform var(--duration-fast) var(--ease-out),
878
+ background-color var(--duration-fast) var(--ease-out);
879
+ }
880
+ .pui-switch[data-checked] .pui-switch-thumb {
881
+ background: var(--on-brand);
882
+ transform: translateX(
883
+ calc(var(--control-switch-width) - var(--control-switch-thumb) - 8px)
884
+ );
885
+ }
886
+ .pui-switch:dir(rtl)[data-checked] .pui-switch-thumb {
887
+ transform: translateX(
888
+ calc(-1 * (var(--control-switch-width) - var(--control-switch-thumb) - 8px))
889
+ );
890
+ }
891
+ @media (prefers-reduced-motion: reduce) {
892
+ .pui-checkbox,
893
+ .pui-radio,
894
+ .pui-switch,
895
+ .pui-switch-thumb {
896
+ transition: none;
897
+ }
898
+ }
899
+ @media (forced-colors: active) {
900
+ .pui-checkbox,
901
+ .pui-radio,
902
+ .pui-switch {
903
+ border-color: ButtonText;
904
+ }
905
+ .pui-checkbox:is([data-checked], [data-indeterminate]),
906
+ .pui-radio[data-checked],
907
+ .pui-switch[data-checked] {
908
+ background: Highlight;
909
+ border-color: Highlight;
910
+ color: HighlightText;
911
+ forced-color-adjust: none;
912
+ }
913
+ .pui-switch[data-checked] .pui-switch-thumb {
914
+ background: HighlightText;
915
+ }
916
+ .pui-switch-thumb {
917
+ background: ButtonText;
918
+ }
919
+ }
920
+
921
+ .pui-choice-label {
922
+ display: flex;
923
+ flex-direction: row;
924
+ align-items: center;
925
+ gap: var(--space-3);
926
+ min-height: var(--control-height);
927
+ width: fit-content;
928
+ max-width: 100%;
929
+ cursor: pointer;
930
+ color: var(--ink-body);
931
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
932
+ }
933
+ .pui-choice-label:has([data-disabled]) {
934
+ cursor: not-allowed;
935
+ }
936
+ .pui-choice-label > span:last-child {
937
+ min-width: 0;
938
+ overflow-wrap: anywhere;
939
+ }
940
+
941
+ .pui-choice-label:has([data-readonly]) {
942
+ cursor: default;
943
+ }
944
+
945
+ /* Navigation: whole-surface selection and stable controls. */
946
+ .pui-tabs {
947
+ min-width: 0;
948
+ }
949
+ .pui-tabs-list {
950
+ display: flex;
951
+ gap: var(--space-1);
952
+ position: relative;
953
+ min-width: 0;
954
+ max-width: 100%;
955
+ padding: var(--space-1);
956
+ background: var(--surface);
957
+ border-radius: var(--radius-md);
958
+ overflow: auto;
959
+ scrollbar-width: thin;
960
+ scrollbar-color: var(--scrollbar-thumb) transparent;
961
+ }
962
+ .pui-tabs-tab {
963
+ box-sizing: border-box;
964
+ flex: none;
965
+ position: relative;
966
+ z-index: 1;
967
+ border: 0;
968
+ border-radius: var(--control-radius);
969
+ min-height: var(--control-height);
970
+ padding: 0 var(--space-3);
971
+ background: transparent;
972
+ color: var(--ink-muted);
973
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
974
+ cursor: pointer;
975
+ white-space: nowrap;
976
+ outline: none;
977
+ }
978
+ .pui-tabs-tab:hover:not(:disabled):not([data-disabled]) {
979
+ color: var(--ink);
980
+ background: var(--interaction-hover-bg);
981
+ }
982
+ .pui-tabs-tab:active:not(:disabled):not([data-disabled]) {
983
+ background: var(--interaction-active-bg);
984
+ }
985
+ .pui-tabs-tab[data-active] {
986
+ background: var(--canvas);
987
+ color: var(--ink);
988
+ font-weight: 500;
989
+ }
990
+ .pui-tabs-tab:focus-visible {
991
+ outline: 2px solid var(--interaction-focus);
992
+ outline-offset: -3px;
993
+ }
994
+ .pui-tabs-tab:is(:disabled, [data-disabled]) {
995
+ opacity: var(--control-disabled-opacity);
996
+ cursor: not-allowed;
997
+ }
998
+ .pui-tabs-panel {
999
+ min-width: 0;
1000
+ padding-block: var(--space-4);
1001
+ outline: none;
1002
+ overflow-wrap: anywhere;
1003
+ }
1004
+ .pui-tabs-panel:focus-visible {
1005
+ outline: 2px solid var(--interaction-focus);
1006
+ outline-offset: 3px;
1007
+ border-radius: var(--radius-md);
1008
+ }
1009
+ .pui-tabs-indicator {
1010
+ position: absolute;
1011
+ top: var(--active-tab-top);
1012
+ left: var(--active-tab-left);
1013
+ width: var(--active-tab-width);
1014
+ height: var(--active-tab-height);
1015
+ box-sizing: border-box;
1016
+ border: 0;
1017
+ background: var(--canvas);
1018
+ border-radius: var(--control-radius);
1019
+ pointer-events: none;
1020
+ }
1021
+ .pui-tabs-list:has(.pui-tabs-indicator) .pui-tabs-tab[data-active] {
1022
+ background: transparent;
1023
+ border-color: transparent;
1024
+ }
1025
+ .pui-tabs[data-orientation='vertical'] {
1026
+ display: grid;
1027
+ grid-template-columns: minmax(0, 180px) minmax(0, 1fr);
1028
+ gap: var(--space-6);
1029
+ align-items: start;
1030
+ }
1031
+ .pui-tabs-list[data-orientation='vertical'] {
1032
+ flex-direction: column;
1033
+ }
1034
+ .pui-tabs-list[data-orientation='vertical'] .pui-tabs-tab {
1035
+ text-align: start;
1036
+ }
1037
+ .pui-tabs[data-orientation='vertical'] > .pui-tabs-panel {
1038
+ padding-block: var(--space-1);
1039
+ }
1040
+ .pui-accordion {
1041
+ display: grid;
1042
+ gap: var(--space-2);
1043
+ min-width: 0;
1044
+ }
1045
+ .pui-accordion-item,
1046
+ .pui-collapsible {
1047
+ border-radius: var(--radius-md);
1048
+ min-width: 0;
1049
+ }
1050
+ .pui-accordion-item[data-open],
1051
+ .pui-collapsible[data-open] {
1052
+ background: var(--surface);
1053
+ }
1054
+ .pui-accordion-header {
1055
+ margin: 0;
1056
+ font: inherit;
1057
+ }
1058
+ .pui-disclosure-trigger {
1059
+ display: flex;
1060
+ align-items: center;
1061
+ justify-content: space-between;
1062
+ gap: var(--space-3);
1063
+ width: 100%;
1064
+ min-height: var(--control-height);
1065
+ padding: var(--space-3) var(--space-4);
1066
+ border: 0;
1067
+ border-radius: var(--radius-md);
1068
+ background: transparent;
1069
+ color: var(--ink);
1070
+ font: 500 var(--type-body-size)/var(--type-body-leading) var(--font-body);
1071
+ text-align: start;
1072
+ cursor: pointer;
1073
+ outline: none;
1074
+ }
1075
+ .pui-disclosure-label {
1076
+ min-width: 0;
1077
+ overflow-wrap: anywhere;
1078
+ }
1079
+ .pui-disclosure-trigger:hover:not(:disabled) {
1080
+ background: var(--interaction-hover-bg);
1081
+ }
1082
+ .pui-disclosure-trigger:active:not(:disabled) {
1083
+ background: var(--interaction-active-bg);
1084
+ }
1085
+ .pui-disclosure-trigger:focus-visible {
1086
+ outline: 2px solid var(--interaction-focus);
1087
+ outline-offset: -2px;
1088
+ }
1089
+ .pui-disclosure-trigger:disabled {
1090
+ opacity: var(--control-disabled-opacity);
1091
+ cursor: not-allowed;
1092
+ }
1093
+ .pui-disclosure-chevron {
1094
+ flex: none;
1095
+ transition: transform var(--duration-fast) var(--ease-out);
1096
+ }
1097
+ .pui-disclosure-trigger[data-panel-open] > .pui-disclosure-chevron {
1098
+ transform: rotate(90deg);
1099
+ }
1100
+ .pui-disclosure-trigger:dir(rtl) > .pui-disclosure-chevron {
1101
+ transform: rotate(180deg);
1102
+ }
1103
+ .pui-disclosure-trigger:dir(rtl)[data-panel-open] > .pui-disclosure-chevron {
1104
+ transform: rotate(90deg);
1105
+ }
1106
+ .pui-accordion-panel,
1107
+ .pui-collapsible-panel {
1108
+ overflow: clip;
1109
+ opacity: 1;
1110
+ transition:
1111
+ height var(--motion-reveal) var(--motion-ease),
1112
+ opacity var(--motion-reveal) var(--motion-ease);
1113
+ }
1114
+ .pui-accordion-panel {
1115
+ height: var(--accordion-panel-height);
1116
+ }
1117
+ .pui-collapsible-panel {
1118
+ height: var(--collapsible-panel-height);
1119
+ }
1120
+ .pui-accordion-panel[data-starting-style],
1121
+ .pui-collapsible-panel[data-starting-style] {
1122
+ height: 0;
1123
+ opacity: 0;
1124
+ }
1125
+ .pui-accordion-panel[data-ending-style],
1126
+ .pui-collapsible-panel[data-ending-style] {
1127
+ height: 0;
1128
+ opacity: 0;
1129
+ }
1130
+ .pui-collapsible-panel[data-ending-style] {
1131
+ transition-duration: 0ms;
1132
+ }
1133
+ .pui-accordion-panel[data-ending-style] {
1134
+ pointer-events: none;
1135
+ }
1136
+ .pui-disclosure-body {
1137
+ padding: var(--space-2) var(--space-4) var(--space-4);
1138
+ overflow-wrap: anywhere;
1139
+ min-width: 0;
1140
+ }
1141
+ .pui-disclosure-body > :first-child {
1142
+ margin-top: 0;
1143
+ }
1144
+ .pui-disclosure-body > :last-child {
1145
+ margin-bottom: 0;
1146
+ }
1147
+ @media (max-width: 760px) {
1148
+ .pui-tabs[data-orientation='vertical'] {
1149
+ grid-template-columns: minmax(0, 1fr);
1150
+ gap: var(--space-3);
1151
+ }
1152
+ }
1153
+ @media (prefers-reduced-motion: reduce) {
1154
+ .pui-disclosure-chevron,
1155
+ .pui-accordion-panel,
1156
+ .pui-collapsible-panel {
1157
+ transition: none;
1158
+ }
1159
+ }
1160
+ @media (forced-colors: active) {
1161
+ .pui-tabs-tab[data-active] {
1162
+ background: Highlight;
1163
+ color: HighlightText;
1164
+ forced-color-adjust: none;
1165
+ }
1166
+ .pui-tabs-indicator {
1167
+ background: Highlight;
1168
+ forced-color-adjust: none;
1169
+ }
1170
+ }
1171
+
1172
+ /* Feedback: completion and measurement share geometry, not semantics. */
1173
+ .pui-gauge {
1174
+ display: grid;
1175
+ grid-template-columns: minmax(0, 1fr) auto;
1176
+ gap: var(--space-2) var(--space-4);
1177
+ min-width: 0;
1178
+ color: var(--ink);
1179
+ }
1180
+ .pui-gauge-label {
1181
+ font-weight: var(--weight-regular);
1182
+ overflow-wrap: anywhere;
1183
+ }
1184
+ .pui-gauge-value {
1185
+ color: var(--ink-body);
1186
+ font-variant-numeric: tabular-nums;
1187
+ }
1188
+ .pui-gauge-track {
1189
+ grid-column: 1 / -1;
1190
+ position: relative;
1191
+ height: var(--space-2);
1192
+ overflow: hidden;
1193
+ border-radius: var(--radius-full);
1194
+ background: var(--surface);
1195
+ }
1196
+ .pui-gauge-indicator {
1197
+ background: var(--ink-body);
1198
+ border-radius: inherit;
1199
+ transition: width var(--duration-base) var(--ease-out);
1200
+ }
1201
+ .pui-progress .pui-gauge-indicator {
1202
+ background: var(--brand);
1203
+ }
1204
+ .pui-gauge-indicator[data-indeterminate] {
1205
+ width: 40%;
1206
+ height: inherit;
1207
+ animation: pui-progress-pulse 1.4s ease-in-out infinite;
1208
+ }
1209
+ .pui-spinner {
1210
+ display: inline-flex;
1211
+ align-items: center;
1212
+ justify-content: center;
1213
+ flex: none;
1214
+ color: var(--ink-body);
1215
+ width: 20px;
1216
+ height: 20px;
1217
+ vertical-align: middle;
1218
+ }
1219
+ .pui-spinner[data-size='sm'] {
1220
+ width: 16px;
1221
+ height: 16px;
1222
+ }
1223
+ .pui-spinner[data-size='lg'] {
1224
+ width: 28px;
1225
+ height: 28px;
1226
+ }
1227
+ .pui-spinner > svg {
1228
+ width: 100%;
1229
+ height: 100%;
1230
+ animation: pui-feedback-spin 1s linear infinite;
1231
+ }
1232
+
1233
+ .pui-skeleton {
1234
+ display: block;
1235
+ min-width: 0;
1236
+ width: 100%;
1237
+ height: 1em;
1238
+ border-radius: var(--radius-sm);
1239
+ background: var(--surface);
1240
+ animation: pui-progress-pulse 1.4s ease-in-out infinite;
1241
+ }
1242
+ .pui-skeleton[data-shape='block'] {
1243
+ height: 96px;
1244
+ border-radius: var(--radius-md);
1245
+ }
1246
+ .pui-skeleton[data-shape='circle'] {
1247
+ width: 36px;
1248
+ height: 36px;
1249
+ border-radius: 50%;
1250
+ flex: none;
1251
+ }
1252
+ @keyframes pui-feedback-spin {
1253
+ to {
1254
+ transform: rotate(360deg);
1255
+ }
1256
+ }
1257
+ @keyframes pui-progress-pulse {
1258
+ 50% {
1259
+ opacity: 0.45;
1260
+ }
1261
+ }
1262
+ @media (prefers-reduced-motion: reduce) {
1263
+ .pui-gauge-indicator,
1264
+ .pui-gauge-indicator[data-indeterminate],
1265
+ .pui-spinner > svg,
1266
+ .pui-skeleton {
1267
+ animation: none;
1268
+ transition: none;
1269
+ }
1270
+ }
1271
+ @media (forced-colors: active) {
1272
+ .pui-gauge-track {
1273
+ background: Canvas;
1274
+ outline: 1px solid CanvasText;
1275
+ }
1276
+ .pui-gauge-indicator,
1277
+ .pui-progress .pui-gauge-indicator,
1278
+ .pui-skeleton {
1279
+ background: CanvasText;
1280
+ }
1281
+ }
1282
+
1283
+ .pui-combobox-group,
1284
+ .pui-number-group {
1285
+ box-sizing: border-box;
1286
+ display: flex;
1287
+ align-items: center;
1288
+ min-width: 0;
1289
+ width: 100%;
1290
+ min-height: var(--control-height);
1291
+ border: 1px solid var(--control-border);
1292
+ border-radius: var(--control-radius);
1293
+ background: var(--control-background);
1294
+ transition:
1295
+ background-color var(--duration-fast) var(--ease-out),
1296
+ border-color var(--duration-fast) var(--ease-out),
1297
+ box-shadow var(--duration-fast) var(--ease-out);
1298
+ }
1299
+ .pui-combobox-group:hover,
1300
+ .pui-number-group:hover {
1301
+ border-color: var(--control-hover-border);
1302
+ background: var(--control-hover-background);
1303
+ }
1304
+ .pui-combobox-group:focus-within,
1305
+ .pui-number-group:focus-within {
1306
+ border-color: var(--control-focus);
1307
+ box-shadow: 0 0 0 3px
1308
+ color-mix(in srgb, var(--control-focus) 18%, transparent);
1309
+ }
1310
+ .pui-combobox-group > .pui-combobox-input {
1311
+ flex: 1;
1312
+ min-width: 0;
1313
+ width: 0;
1314
+ border: 0;
1315
+ background: transparent;
1316
+ box-shadow: none;
1317
+ }
1318
+ .pui-combobox-action,
1319
+ .pui-number-step,
1320
+ .pui-combobox-chip-remove {
1321
+ display: inline-flex;
1322
+ align-items: center;
1323
+ justify-content: center;
1324
+ flex: none;
1325
+ width: var(--control-height);
1326
+ height: var(--control-height);
1327
+ padding: 0;
1328
+ border: 0;
1329
+ border-radius: var(--control-radius);
1330
+ background: transparent;
1331
+ color: var(--ink-body);
1332
+ cursor: pointer;
1333
+ }
1334
+ .pui-combobox-action:focus-visible,
1335
+ .pui-number-step:focus-visible,
1336
+ .pui-combobox-chip-remove:focus-visible {
1337
+ outline: 2px solid var(--interaction-focus);
1338
+ outline-offset: -3px;
1339
+ }
1340
+ .pui-combobox-group[data-disabled],
1341
+ .pui-number-group[data-disabled] {
1342
+ opacity: var(--control-disabled-opacity);
1343
+ cursor: not-allowed;
1344
+ }
1345
+ .pui-combobox-action[data-disabled],
1346
+ .pui-number-step[data-disabled],
1347
+ .pui-combobox-chip-remove[data-disabled] {
1348
+ opacity: var(--control-disabled-opacity);
1349
+ cursor: not-allowed;
1350
+ }
1351
+ .pui-combobox-popup {
1352
+ box-sizing: border-box;
1353
+ width: var(--anchor-width);
1354
+ max-width: calc(100vw - 24px);
1355
+ max-height: var(--available-height);
1356
+ overflow: auto;
1357
+ padding: var(--space-1);
1358
+ border: 1px solid var(--menu-border);
1359
+ border-radius: var(--radius-md);
1360
+ background: var(--menu-background);
1361
+ color: var(--ink);
1362
+ box-shadow: var(--shadow-float);
1363
+ font: 400 14px/22px var(--font-body);
1364
+ outline: none;
1365
+ transition:
1366
+ opacity var(--duration-fast) var(--ease-out),
1367
+ transform var(--duration-fast) var(--ease-out);
1368
+ }
1369
+ .pui-combobox-popup[data-starting-style] {
1370
+ opacity: 0;
1371
+ transform: translateY(4px);
1372
+ }
1373
+ .pui-combobox-popup[data-ending-style] {
1374
+ opacity: 0;
1375
+ transition: none;
1376
+ }
1377
+ .pui-combobox-list {
1378
+ max-height: min(280px, var(--available-height));
1379
+ overflow: auto;
1380
+ }
1381
+ .pui-combobox-item {
1382
+ display: flex;
1383
+ align-items: center;
1384
+ gap: var(--space-2);
1385
+ padding: var(--space-2) var(--space-3);
1386
+ min-height: 36px;
1387
+ box-sizing: border-box;
1388
+ border-radius: var(--radius-md);
1389
+ cursor: default;
1390
+ outline: none;
1391
+ overflow-wrap: anywhere;
1392
+ }
1393
+ .pui-combobox-item[data-highlighted] {
1394
+ background: var(--menu-hover-background);
1395
+ }
1396
+ .pui-combobox-item[data-selected] {
1397
+ background: var(--selected);
1398
+ }
1399
+ .pui-combobox-item[data-disabled] {
1400
+ opacity: var(--control-disabled-opacity);
1401
+ }
1402
+ .pui-combobox-indicator {
1403
+ display: inline-flex;
1404
+ align-items: center;
1405
+ }
1406
+ .pui-combobox-empty,
1407
+ .pui-combobox-status {
1408
+ padding: var(--space-3);
1409
+ color: var(--ink-body);
1410
+ }
1411
+ .pui-combobox-empty:empty,
1412
+ .pui-combobox-status:empty {
1413
+ padding: 0;
1414
+ }
1415
+ .pui-combobox-section-label {
1416
+ padding: var(--space-2) var(--space-3);
1417
+ color: var(--ink-muted);
1418
+ font-size: 12px;
1419
+ }
1420
+ .pui-combobox-separator {
1421
+ height: 1px;
1422
+ background: var(--line);
1423
+ margin-block: var(--space-1);
1424
+ }
1425
+ .pui-combobox-chips {
1426
+ display: flex;
1427
+ flex-wrap: wrap;
1428
+ align-items: center;
1429
+ gap: var(--space-1);
1430
+ width: 100%;
1431
+ padding: var(--space-1);
1432
+ }
1433
+ .pui-combobox-chips .pui-combobox-input {
1434
+ flex: 1;
1435
+ width: 100px;
1436
+ min-width: 80px;
1437
+ border: 0;
1438
+ box-shadow: none;
1439
+ background: transparent;
1440
+ }
1441
+ .pui-combobox-chip {
1442
+ display: inline-flex;
1443
+ align-items: center;
1444
+ gap: var(--space-1);
1445
+ padding-inline-start: var(--space-3);
1446
+ border-radius: var(--radius-full);
1447
+ background: var(--selected);
1448
+ color: var(--ink);
1449
+ font-size: 12px;
1450
+ }
1451
+ .pui-combobox-chip-remove {
1452
+ width: 28px;
1453
+ height: 28px;
1454
+ }
1455
+ .pui-number-group {
1456
+ display: grid;
1457
+ grid-template-columns: var(--control-height) minmax(0, 1fr) var(
1458
+ --control-height
1459
+ );
1460
+ }
1461
+ .pui-number-input {
1462
+ box-sizing: border-box;
1463
+ width: 100%;
1464
+ min-width: 0;
1465
+ height: var(--control-height);
1466
+ padding: 0 var(--space-2);
1467
+ border: 0;
1468
+ outline: none;
1469
+ background: transparent;
1470
+ color: var(--ink);
1471
+ font: 400 14px/22px var(--font-body);
1472
+ text-align: center;
1473
+ font-variant-numeric: tabular-nums;
1474
+ }
1475
+ .pui-number-scrub {
1476
+ cursor: ew-resize;
1477
+ touch-action: none;
1478
+ }
1479
+ @media (max-width: 760px) {
1480
+ .pui-combobox-item {
1481
+ min-height: 44px;
1482
+ }
1483
+ .pui-combobox-chip-remove {
1484
+ width: 44px;
1485
+ height: 44px;
1486
+ }
1487
+ }
1488
+ @media (prefers-reduced-motion: reduce) {
1489
+ .pui-combobox-popup,
1490
+ .pui-combobox-group,
1491
+ .pui-number-group {
1492
+ transition: none;
1493
+ }
1494
+ }
1495
+ @media (forced-colors: active) {
1496
+ .pui-combobox-item:is([data-selected], [data-highlighted]) {
1497
+ outline: 1px solid CanvasText;
1498
+ outline-offset: -1px;
1499
+ }
1500
+ }
1501
+ .pui-combobox-group > .pui-combobox-input,
1502
+ .pui-combobox-action,
1503
+ .pui-number-step,
1504
+ .pui-number-input {
1505
+ height: calc(var(--control-height) - 2px);
1506
+ }
1507
+ .pui-combobox-group[data-invalid],
1508
+ .pui-number-group[data-invalid] {
1509
+ border-color: var(--status-danger-border);
1510
+ }
1511
+ .pui-number-scrub[data-readonly],
1512
+ .pui-number-scrub[data-disabled] {
1513
+ cursor: default;
1514
+ }
1515
+ .pui-number-field {
1516
+ width: 100%;
1517
+ max-width: 20rem;
1518
+ }
1519
+ /* Reserve the selection mark so every option label shares one alignment line. */
1520
+ .pui-combobox-indicator {
1521
+ width: 16px;
1522
+ flex: none;
1523
+ }
1524
+ .pui-combobox-item:not([data-selected]) .pui-combobox-indicator {
1525
+ visibility: hidden;
1526
+ }
1527
+
1528
+ .pui-slider {
1529
+ display: grid;
1530
+ grid-template-columns: minmax(0, 1fr) auto;
1531
+ column-gap: var(--space-4);
1532
+ row-gap: var(--space-2);
1533
+ width: 100%;
1534
+ max-width: 32rem;
1535
+ min-width: 0;
1536
+ color: var(--ink-body);
1537
+ }
1538
+ .pui-slider-label {
1539
+ font-weight: var(--weight-regular);
1540
+ color: var(--ink);
1541
+ overflow-wrap: anywhere;
1542
+ }
1543
+ .pui-slider-value {
1544
+ margin: 0;
1545
+ font: inherit;
1546
+ font-variant-numeric: tabular-nums;
1547
+ text-align: end;
1548
+ }
1549
+ .pui-slider-control {
1550
+ position: relative;
1551
+ grid-column: 1/-1;
1552
+ display: flex;
1553
+ align-items: center;
1554
+ width: 100%;
1555
+ min-width: 0;
1556
+ height: 44px;
1557
+ touch-action: pan-y;
1558
+ user-select: none;
1559
+ cursor: pointer;
1560
+ }
1561
+ .pui-slider-track {
1562
+ width: 100%;
1563
+ height: 6px;
1564
+ border-radius: var(--radius-full);
1565
+ background: var(--ink-muted);
1566
+ }
1567
+ .pui-slider-indicator {
1568
+ background: var(--brand);
1569
+ border-radius: inherit;
1570
+ }
1571
+ .pui-slider-thumb {
1572
+ box-sizing: border-box;
1573
+ width: 24px;
1574
+ height: 24px;
1575
+ border: 2px solid var(--ink-body);
1576
+ border-radius: var(--radius-full);
1577
+ background: var(--canvas);
1578
+ }
1579
+ .pui-slider-thumb:focus-within {
1580
+ outline: 2px solid var(--interaction-focus);
1581
+ outline-offset: 3px;
1582
+ }
1583
+ .pui-slider[data-disabled] {
1584
+ opacity: var(--control-disabled-opacity);
1585
+ }
1586
+ .pui-slider-control[data-disabled],
1587
+ .pui-slider-thumb[data-disabled] {
1588
+ cursor: not-allowed;
1589
+ }
1590
+ .pui-slider[data-orientation='vertical'] {
1591
+ width: max-content;
1592
+ min-width: 120px;
1593
+ }
1594
+ .pui-slider-control[data-orientation='vertical'] {
1595
+ width: 44px;
1596
+ height: 192px;
1597
+ justify-content: center;
1598
+ justify-self: center;
1599
+ touch-action: pan-x;
1600
+ }
1601
+ .pui-slider-track[data-orientation='vertical'] {
1602
+ width: 6px;
1603
+ height: 100%;
1604
+ }
1605
+ @media (max-width: 760px) {
1606
+ .pui-slider-thumb {
1607
+ width: 28px;
1608
+ height: 28px;
1609
+ }
1610
+ }
1611
+ @media (forced-colors: active) {
1612
+ .pui-slider-track {
1613
+ background: CanvasText;
1614
+ }
1615
+ .pui-slider-indicator {
1616
+ background: Highlight;
1617
+ }
1618
+ .pui-slider-thumb {
1619
+ border-color: CanvasText;
1620
+ background: Canvas;
1621
+ }
1622
+ }
1623
+
1624
+ /* Command state uses the whole rounded surface, with no one-sided accent. */
1625
+ .pui-toggle {
1626
+ background: transparent;
1627
+ border-color: var(--line);
1628
+ }
1629
+ .pui-toggle[data-pressed],
1630
+ .pui-toolbar-button[aria-pressed='true'] {
1631
+ background: var(--selected);
1632
+ border-color: var(--control-border);
1633
+ color: var(--ink);
1634
+ }
1635
+ .pui-toggle[data-disabled],
1636
+ .pui-toolbar-button[data-disabled],
1637
+ .pui-toolbar-input[data-disabled] {
1638
+ opacity: var(--control-disabled-opacity);
1639
+ cursor: not-allowed;
1640
+ }
1641
+ .pui-toggle-group,
1642
+ .pui-toolbar,
1643
+ .pui-menubar {
1644
+ display: flex;
1645
+ flex-wrap: wrap;
1646
+ align-items: center;
1647
+ gap: var(--space-1);
1648
+ min-width: 0;
1649
+ }
1650
+ .pui-toggle-group[data-orientation='vertical'],
1651
+ .pui-toolbar[data-orientation='vertical'],
1652
+ .pui-menubar[data-orientation='vertical'] {
1653
+ flex-direction: column;
1654
+ align-items: flex-start;
1655
+ width: fit-content;
1656
+ max-width: 100%;
1657
+ }
1658
+ .pui-toolbar {
1659
+ padding: var(--space-1);
1660
+ border-radius: var(--radius-md);
1661
+ background: var(--surface);
1662
+ gap: var(--space-2);
1663
+ }
1664
+ .pui-toolbar-group {
1665
+ display: flex;
1666
+ flex-wrap: wrap;
1667
+ align-items: center;
1668
+ gap: var(--space-1);
1669
+ min-width: 0;
1670
+ }
1671
+ .pui-toolbar-button,
1672
+ .pui-toolbar-link {
1673
+ background: transparent;
1674
+ border: 0;
1675
+ border-radius: max(0px, calc(var(--radius-md) - var(--space-1)));
1676
+ text-decoration: none;
1677
+ }
1678
+ .pui-toolbar-input {
1679
+ width: 160px;
1680
+ max-width: 100%;
1681
+ border: 0;
1682
+ border-radius: max(0px, calc(var(--radius-md) - var(--space-1)));
1683
+ background: var(--canvas);
1684
+ }
1685
+ .pui-toolbar-separator {
1686
+ flex: none;
1687
+ background: transparent;
1688
+ }
1689
+ .pui-toolbar-separator[data-orientation='vertical'] {
1690
+ width: 1px;
1691
+ height: 24px;
1692
+ margin-inline: var(--space-1);
1693
+ }
1694
+ .pui-toolbar-separator[data-orientation='horizontal'] {
1695
+ height: 1px;
1696
+ width: 100%;
1697
+ margin-block: var(--space-1);
1698
+ }
1699
+ .pui-toolbar[data-orientation='vertical'] .pui-toolbar-group {
1700
+ flex-direction: column;
1701
+ align-items: stretch;
1702
+ width: 100%;
1703
+ }
1704
+ .pui-menu-trigger[data-popup-open] {
1705
+ background: var(--selected);
1706
+ border-color: var(--control-border);
1707
+ }
1708
+ .pui-menu-item {
1709
+ position: relative;
1710
+ box-sizing: border-box;
1711
+ display: flex;
1712
+ align-items: center;
1713
+ gap: var(--space-2);
1714
+ min-height: var(--control-height);
1715
+ padding: var(--space-2) var(--space-3);
1716
+ border-radius: var(--control-radius);
1717
+ color: var(--ink);
1718
+ outline: none;
1719
+ cursor: default;
1720
+ text-decoration: none;
1721
+ overflow-wrap: anywhere;
1722
+ }
1723
+ .pui-menu-item[data-highlighted] {
1724
+ background: var(--menu-hover-background);
1725
+ }
1726
+ .pui-menu-item[data-disabled] {
1727
+ opacity: var(--control-disabled-opacity);
1728
+ }
1729
+ .pui-menu-check-item {
1730
+ padding-inline-start: 36px;
1731
+ }
1732
+ .pui-menu-indicator {
1733
+ position: absolute;
1734
+ inset-inline-start: var(--space-3);
1735
+ display: inline-flex;
1736
+ width: 16px;
1737
+ }
1738
+ .pui-menu-check-item[aria-checked='false'] > .pui-menu-indicator {
1739
+ visibility: hidden;
1740
+ }
1741
+ .pui-menu-group-label {
1742
+ padding: var(--space-2) var(--space-3);
1743
+ color: var(--ink-muted);
1744
+ font-size: 12px;
1745
+ }
1746
+ .pui-menu-separator {
1747
+ height: 1px;
1748
+ background: var(--line);
1749
+ margin-block: var(--space-1);
1750
+ }
1751
+ .pui-menu-submenu-trigger {
1752
+ justify-content: space-between;
1753
+ }
1754
+ .pui-submenu-arrow {
1755
+ flex: none;
1756
+ margin-inline-start: var(--space-3);
1757
+ }
1758
+ .pui-menu-submenu-trigger:dir(rtl) .pui-submenu-arrow {
1759
+ transform: rotate(180deg);
1760
+ }
1761
+ @media (max-width: 760px) {
1762
+ .pui-menu-item {
1763
+ min-height: 44px;
1764
+ }
1765
+ }
1766
+ @media (forced-colors: active) {
1767
+ .pui-menu-item[data-highlighted] {
1768
+ outline: 1px solid CanvasText;
1769
+ outline-offset: -1px;
1770
+ }
1771
+ }
1772
+ .pui-menu {
1773
+ max-height: min(360px, var(--available-height));
1774
+ overflow: auto;
1775
+ scrollbar-width: thin;
1776
+ scrollbar-color: var(--scrollbar-thumb) transparent;
1777
+ }
1778
+ .pui-menu-trigger[data-disabled] {
1779
+ opacity: var(--control-disabled-opacity);
1780
+ cursor: not-allowed;
1781
+ }
1782
+ .pui-menubar {
1783
+ padding: var(--space-1);
1784
+ border-radius: var(--radius-md);
1785
+ background: var(--surface);
1786
+ width: fit-content;
1787
+ max-width: 100%;
1788
+ }
1789
+ /* Concentric corners: outer radius minus the bar's inset. */
1790
+ .pui-menubar > .pui-menu-trigger {
1791
+ border: 0;
1792
+ border-radius: max(0px, calc(var(--radius-md) - var(--space-1)));
1793
+ }
1794
+ .pui-toggle,
1795
+ .pui-toolbar-button {
1796
+ position: relative;
1797
+ }
1798
+ @media (forced-colors: active) {
1799
+ .pui-toggle[data-pressed]::after,
1800
+ .pui-toolbar-button[aria-pressed='true']::after {
1801
+ content: '';
1802
+ position: absolute;
1803
+ inset: 3px;
1804
+ border: 1px solid CanvasText;
1805
+ border-radius: inherit;
1806
+ pointer-events: none;
1807
+ }
1808
+ }
1809
+
1810
+ .pui-context-trigger {
1811
+ -webkit-touch-callout: none;
1812
+ }
1813
+ .pui-preview-card {
1814
+ box-sizing: border-box;
1815
+ width: 320px;
1816
+ max-width: min(calc(100vw - 24px), var(--available-width));
1817
+ max-height: var(--available-height);
1818
+ overflow: auto;
1819
+ overscroll-behavior: contain;
1820
+ scrollbar-width: thin;
1821
+ padding: var(--space-5);
1822
+ border: 1px solid var(--menu-border);
1823
+ border-radius: var(--radius-md);
1824
+ background: var(--menu-background);
1825
+ color: var(--ink);
1826
+ box-shadow: var(--shadow-float);
1827
+ font: 400 14px/22px var(--font-body);
1828
+ overflow-wrap: anywhere;
1829
+ outline: none;
1830
+ transform: translateY(0);
1831
+ opacity: 1;
1832
+ transition:
1833
+ opacity var(--dialog-enter-duration) var(--ease-out),
1834
+ transform var(--dialog-enter-duration) var(--ease-out);
1835
+ }
1836
+ .pui-preview-card > :first-child {
1837
+ margin-top: 0;
1838
+ }
1839
+ .pui-preview-card > :last-child {
1840
+ margin-bottom: 0;
1841
+ }
1842
+ .pui-preview-card[data-starting-style] {
1843
+ opacity: 0;
1844
+ transform: translateY(6px);
1845
+ }
1846
+ .pui-preview-card[data-ending-style] {
1847
+ transition-duration: 0s;
1848
+ }
1849
+ .pui-preview-card[data-instant] {
1850
+ transition-duration: 0s;
1851
+ }
1852
+ @media (prefers-reduced-motion: reduce) {
1853
+ .pui-preview-card {
1854
+ transition: none;
1855
+ transform: none;
1856
+ }
1857
+ }
1858
+ @media (forced-colors: active) {
1859
+ .pui-preview-card {
1860
+ border-color: CanvasText;
1861
+ background: Canvas;
1862
+ color: CanvasText;
1863
+ }
1864
+ }
1865
+
1866
+ .pui-navigation-menu {
1867
+ width: fit-content;
1868
+ max-width: 100%;
1869
+ }
1870
+ .pui-navigation-list {
1871
+ display: flex;
1872
+ align-items: center;
1873
+ gap: var(--space-1);
1874
+ margin: 0;
1875
+ padding: 0;
1876
+ list-style: none;
1877
+ }
1878
+ .pui-navigation-menu[data-orientation='vertical'] > .pui-navigation-list {
1879
+ flex-direction: column;
1880
+ align-items: stretch;
1881
+ }
1882
+ .pui-navigation-trigger {
1883
+ padding-inline: var(--space-3);
1884
+ font-weight: 500;
1885
+ background: transparent;
1886
+ color: var(--ink-body);
1887
+ }
1888
+ .pui-navigation-trigger:hover,
1889
+ .pui-navigation-trigger[data-popup-open] {
1890
+ background: var(--menu-hover-background);
1891
+ }
1892
+ .pui-navigation-trigger[data-popup-open] {
1893
+ color: var(--ink);
1894
+ }
1895
+ .pui-navigation-icon {
1896
+ display: inline-flex;
1897
+ flex: none;
1898
+ transition: rotate var(--motion-enter) var(--motion-ease);
1899
+ }
1900
+ .pui-navigation-icon[data-popup-open] {
1901
+ rotate: 180deg;
1902
+ }
1903
+ .pui-navigation-link {
1904
+ display: block;
1905
+ box-sizing: border-box;
1906
+ min-height: var(--control-height);
1907
+ padding: var(--space-2) var(--space-3);
1908
+ border: 1px solid transparent;
1909
+ border-radius: var(--radius-md);
1910
+ color: var(--ink-body);
1911
+ text-decoration: none;
1912
+ font: 400 14px/22px var(--font-body);
1913
+ overflow-wrap: anywhere;
1914
+ }
1915
+ .pui-navigation-link:hover,
1916
+ .pui-navigation-link[data-highlighted] {
1917
+ background: var(--menu-hover-background);
1918
+ }
1919
+ .pui-navigation-link[aria-current='page'] {
1920
+ background: var(--selected);
1921
+ color: var(--ink);
1922
+ font-weight: 500;
1923
+ }
1924
+ .pui-navigation-link:focus-visible {
1925
+ outline: 2px solid var(--interaction-focus);
1926
+ outline-offset: 2px;
1927
+ }
1928
+ .pui-navigation-popup {
1929
+ box-sizing: border-box;
1930
+ width: var(--popup-width);
1931
+ height: var(--popup-height);
1932
+ max-width: min(calc(100vw - 24px), var(--available-width));
1933
+ max-height: var(--available-height);
1934
+ overflow: hidden;
1935
+ border: 1px solid var(--menu-border);
1936
+ border-radius: var(--radius-lg);
1937
+ background: var(--menu-background);
1938
+ color: var(--ink);
1939
+ box-shadow: var(--shadow-float);
1940
+ font: 400 14px/22px var(--font-body);
1941
+ outline: none;
1942
+ opacity: 1;
1943
+ translate: 0 0;
1944
+ transition:
1945
+ opacity var(--dialog-enter-duration) var(--motion-ease),
1946
+ translate var(--dialog-enter-duration) var(--motion-spatial-ease);
1947
+ }
1948
+ .pui-navigation-popup[data-starting-style] {
1949
+ opacity: 0;
1950
+ translate: 0 12px;
1951
+ }
1952
+ .pui-navigation-popup[data-ending-style] {
1953
+ transition-duration: 0s;
1954
+ }
1955
+ .pui-navigation-viewport {
1956
+ position: relative;
1957
+ width: 100%;
1958
+ height: 100%;
1959
+ overflow: auto;
1960
+ scrollbar-width: thin;
1961
+ scrollbar-color: var(--scrollbar-thumb) transparent;
1962
+ overscroll-behavior: contain;
1963
+ }
1964
+ .pui-navigation-content {
1965
+ box-sizing: border-box;
1966
+ width: 380px;
1967
+ max-width: calc(100vw - 26px);
1968
+ padding: var(--space-4);
1969
+ overflow-wrap: anywhere;
1970
+ }
1971
+ @media (max-width: 760px) {
1972
+ .pui-navigation-trigger,
1973
+ .pui-navigation-link {
1974
+ min-height: 44px;
1975
+ }
1976
+ }
1977
+ @media (prefers-reduced-motion: reduce) {
1978
+ .pui-navigation-popup,
1979
+ .pui-navigation-icon {
1980
+ transition: none;
1981
+ }
1982
+ .pui-navigation-popup[data-starting-style] {
1983
+ translate: 0 0;
1984
+ }
1985
+ }
1986
+ @media (forced-colors: active) {
1987
+ .pui-navigation-popup {
1988
+ background: Canvas;
1989
+ color: CanvasText;
1990
+ border-color: CanvasText;
1991
+ }
1992
+ .pui-navigation-link[aria-current='page'] {
1993
+ border-color: Highlight;
1994
+ }
1995
+ }
1996
+
1997
+ /* Keep the floating box measurable even when the popup anchors from its bottom edge. */
1998
+ .pui-navigation-positioner {
1999
+ width: var(--positioner-width);
2000
+ height: var(--positioner-height);
2001
+ max-width: calc(100vw - 24px);
2002
+ }
2003
+ .pui-navigation-viewport {
2004
+ max-height: calc(var(--available-height) - 2px);
2005
+ }
2006
+
2007
+ .pui-otp-field,
2008
+ .pui-otp-group {
2009
+ display: flex;
2010
+ align-items: center;
2011
+ gap: var(--space-2);
2012
+ min-width: 0;
2013
+ max-width: 100%;
2014
+ width: fit-content;
2015
+ }
2016
+ .pui-otp-group {
2017
+ flex: 1 1 auto;
2018
+ }
2019
+ .pui-otp-input {
2020
+ flex: 0 1 44px;
2021
+ width: 44px;
2022
+ height: 44px;
2023
+ min-width: 0;
2024
+ padding: 0;
2025
+ text-align: center;
2026
+ font: 400 20px/24px var(--font-code);
2027
+ font-variant-numeric: tabular-nums;
2028
+ caret-color: var(--control-focus);
2029
+ }
2030
+ .pui-otp-separator {
2031
+ flex: none;
2032
+ width: var(--space-2);
2033
+ height: 0;
2034
+ border: 0;
2035
+ border-top: 1px solid var(--line);
2036
+ }
2037
+ @media (max-width: 760px) {
2038
+ .pui-otp-field,
2039
+ .pui-otp-group {
2040
+ gap: var(--space-1);
2041
+ }
2042
+ }
2043
+ @media (forced-colors: active) {
2044
+ .pui-otp-input {
2045
+ background: Field;
2046
+ color: FieldText;
2047
+ border-color: ButtonText;
2048
+ }
2049
+ .pui-otp-input:focus-visible {
2050
+ outline: 2px solid Highlight;
2051
+ outline-offset: 2px;
2052
+ }
2053
+ .pui-otp-input[aria-invalid='true'] {
2054
+ border-color: LinkText;
2055
+ }
2056
+ .pui-otp-separator {
2057
+ border-color: CanvasText;
2058
+ }
2059
+ }
2060
+
2061
+ .pui-toast-viewport {
2062
+ position: fixed;
2063
+ inset-inline-end: 4px;
2064
+ bottom: 4px;
2065
+ z-index: var(--layer-popup);
2066
+ display: flex;
2067
+ flex-direction: column-reverse;
2068
+ gap: var(--space-2);
2069
+ box-sizing: border-box;
2070
+ width: 400px;
2071
+ max-width: calc(100vw - 8px);
2072
+ max-height: calc(100dvh - 8px);
2073
+ padding: var(--space-2);
2074
+ overflow: auto;
2075
+ scrollbar-width: none;
2076
+ overscroll-behavior: contain;
2077
+ pointer-events: none;
2078
+ outline: none;
2079
+ }
2080
+ .pui-toast {
2081
+ --_toast-icon: var(--ink-muted);
2082
+ position: relative;
2083
+ flex: none;
2084
+ box-sizing: border-box;
2085
+ width: 100%;
2086
+ padding: var(--space-4);
2087
+ border: 0;
2088
+ border-radius: var(--radius-lg);
2089
+ background: var(--menu-background);
2090
+ color: var(--ink);
2091
+ box-shadow: var(--shadow-float);
2092
+ font: 400 14px/22px var(--font-body);
2093
+ overflow-wrap: anywhere;
2094
+ pointer-events: auto;
2095
+ opacity: 1;
2096
+ translate: 0 0;
2097
+ transition:
2098
+ opacity var(--dialog-enter-duration) var(--motion-ease),
2099
+ translate var(--dialog-enter-duration) var(--motion-spatial-ease);
2100
+ }
2101
+ .pui-toast[data-tone='success'] {
2102
+ --_toast-icon: var(--status-success-fg);
2103
+ }
2104
+ .pui-toast[data-tone='danger'] {
2105
+ --_toast-icon: var(--status-danger-fg);
2106
+ }
2107
+ .pui-toast[data-tone='caution'] {
2108
+ --_toast-icon: var(--status-caution-fg);
2109
+ }
2110
+ .pui-toast[data-tone='progress'] {
2111
+ --_toast-icon: var(--status-progress-fg);
2112
+ }
2113
+ .pui-toast[data-starting-style] {
2114
+ opacity: 0;
2115
+ translate: 0 12px;
2116
+ }
2117
+ .pui-toast[data-ending-style] {
2118
+ opacity: 0;
2119
+ transition-duration: 0s;
2120
+ }
2121
+ .pui-toast[data-limited] {
2122
+ display: none;
2123
+ }
2124
+ .pui-toast:focus-visible {
2125
+ outline: 2px solid var(--interaction-focus);
2126
+ outline-offset: 2px;
2127
+ }
2128
+ .pui-toast-content {
2129
+ display: flex;
2130
+ align-items: flex-start;
2131
+ gap: var(--space-3);
2132
+ }
2133
+ .pui-toast-text {
2134
+ flex: 1;
2135
+ min-width: 0;
2136
+ }
2137
+ .pui-toast-icon {
2138
+ display: inline-flex;
2139
+ flex: none;
2140
+ color: var(--_toast-icon);
2141
+ margin-top: 4px;
2142
+ }
2143
+ .pui-toast-title {
2144
+ margin: 0;
2145
+ font: 500 14px/22px var(--font-body);
2146
+ }
2147
+ .pui-toast-description {
2148
+ margin: var(--space-1) 0 0;
2149
+ color: var(--ink-muted);
2150
+ font-size: 13px;
2151
+ line-height: 20px;
2152
+ }
2153
+ .pui-toast-close {
2154
+ flex: none;
2155
+ margin-top: -6px;
2156
+ margin-inline-end: -6px;
2157
+ }
2158
+ .pui-toast-action {
2159
+ margin-top: var(--space-3);
2160
+ }
2161
+ @media (prefers-reduced-motion: reduce) {
2162
+ .pui-toast {
2163
+ transition: none;
2164
+ }
2165
+ .pui-toast[data-starting-style] {
2166
+ translate: 0 0;
2167
+ }
2168
+ }
2169
+ @media (forced-colors: active) {
2170
+ .pui-toast {
2171
+ background: Canvas;
2172
+ color: CanvasText;
2173
+ border: 1px solid CanvasText;
2174
+ box-shadow: none;
2175
+ }
2176
+ .pui-toast-description,
2177
+ .pui-toast-icon {
2178
+ color: CanvasText;
2179
+ }
2180
+ }
2181
+
2182
+ .pui-toast-viewport[data-layout='stack']:focus-visible {
2183
+ border-radius: var(--radius-lg);
2184
+ outline: 2px solid var(--interaction-focus);
2185
+ outline-offset: -2px;
2186
+ }
2187
+ .pui-toast-viewport[data-layout='anchored'] {
2188
+ inset: 0;
2189
+ display: block;
2190
+ width: auto;
2191
+ max-width: none;
2192
+ max-height: none;
2193
+ padding: 0;
2194
+ overflow: visible;
2195
+ }
2196
+ .pui-toast-viewport[data-layout='anchored'] .pui-toast {
2197
+ width: 320px;
2198
+ max-width: min(calc(100vw - 24px), var(--available-width));
2199
+ max-height: var(--available-height);
2200
+ overflow: auto;
2201
+ scrollbar-width: thin;
2202
+ }
2203
+
2204
+ .pui-toast-viewport[data-layout='anchored']:focus-visible .pui-toast {
2205
+ outline: 2px solid var(--interaction-focus);
2206
+ outline-offset: 2px;
2207
+ }
2208
+
2209
+ .pui-file-upload {
2210
+ min-width: 0;
2211
+ }
2212
+ .pui-file-native {
2213
+ position: absolute;
2214
+ width: 1px;
2215
+ height: 1px;
2216
+ margin: -1px;
2217
+ padding: 0;
2218
+ border: 0;
2219
+ overflow: hidden;
2220
+ clip-path: inset(50%);
2221
+ white-space: nowrap;
2222
+ }
2223
+ .pui-file-dropzone {
2224
+ display: flex;
2225
+ flex-wrap: wrap;
2226
+ align-items: center;
2227
+ gap: var(--space-3);
2228
+ padding: var(--space-5);
2229
+ border: 1px solid transparent;
2230
+ border-radius: var(--radius-lg);
2231
+ background: var(--surface);
2232
+ transition: background-color var(--duration-fast) var(--ease-out);
2233
+ }
2234
+ .pui-file-upload[data-dragging] .pui-file-dropzone {
2235
+ background: var(--selected);
2236
+ }
2237
+ .pui-file-trigger {
2238
+ flex-direction: row;
2239
+ width: fit-content;
2240
+ cursor: pointer;
2241
+ font-size: 14px;
2242
+ line-height: 22px;
2243
+ }
2244
+ .pui-file-trigger[data-disabled] {
2245
+ opacity: var(--control-disabled-opacity);
2246
+ cursor: not-allowed;
2247
+ }
2248
+ .pui-file-upload:has(.pui-file-native:focus-visible) .pui-file-trigger {
2249
+ outline: 2px solid var(--interaction-focus);
2250
+ outline-offset: 2px;
2251
+ }
2252
+ .pui-file-upload:has(.pui-file-native[aria-invalid='true']) .pui-file-dropzone {
2253
+ border-color: var(--status-danger-fg);
2254
+ }
2255
+ .pui-file-drop-hint {
2256
+ margin: 0;
2257
+ color: var(--ink-muted);
2258
+ font-size: 13px;
2259
+ }
2260
+ .pui-file-errors {
2261
+ color: var(--status-danger-fg);
2262
+ font: 400 13px/20px var(--font-body);
2263
+ overflow-wrap: anywhere;
2264
+ }
2265
+ .pui-file-errors:empty {
2266
+ display: none;
2267
+ }
2268
+ .pui-file-errors ul {
2269
+ margin: 0;
2270
+ padding-inline-start: var(--space-5);
2271
+ }
2272
+ .pui-file-list {
2273
+ display: grid;
2274
+ gap: var(--space-2);
2275
+ list-style: none;
2276
+ padding: 0;
2277
+ margin: 0;
2278
+ }
2279
+ .pui-file-item {
2280
+ min-width: 0;
2281
+ padding: var(--space-4);
2282
+ border-radius: var(--radius-md);
2283
+ background: var(--surface);
2284
+ }
2285
+ .pui-file-info {
2286
+ display: flex;
2287
+ flex-wrap: wrap;
2288
+ align-items: center;
2289
+ gap: var(--space-2) var(--space-3);
2290
+ font-size: 13px;
2291
+ }
2292
+ .pui-file-info > strong {
2293
+ min-width: 0;
2294
+ max-width: 100%;
2295
+ overflow-wrap: anywhere;
2296
+ font-weight: 500;
2297
+ }
2298
+ .pui-file-info > span:not(.pui-badge) {
2299
+ color: var(--ink-muted);
2300
+ }
2301
+ .pui-file-actions {
2302
+ display: flex;
2303
+ flex-wrap: wrap;
2304
+ gap: var(--space-2);
2305
+ margin-top: var(--space-3);
2306
+ }
2307
+ .pui-file-item .pui-gauge {
2308
+ margin-top: var(--space-3);
2309
+ }
2310
+ .pui-file-upload-error {
2311
+ margin: var(--space-2) 0 0;
2312
+ color: var(--status-danger-fg);
2313
+ font-size: 13px;
2314
+ }
2315
+ @media (max-width: 760px) {
2316
+ .pui-file-trigger {
2317
+ min-height: 44px;
2318
+ }
2319
+ .pui-file-dropzone {
2320
+ padding: var(--space-4);
2321
+ }
2322
+ }
2323
+ @media (forced-colors: active) {
2324
+ .pui-file-dropzone {
2325
+ border-color: ButtonText;
2326
+ background: Canvas;
2327
+ }
2328
+ .pui-file-upload[data-dragging] .pui-file-dropzone {
2329
+ border-color: Highlight;
2330
+ }
2331
+ .pui-file-item {
2332
+ border: 1px solid CanvasText;
2333
+ background: Canvas;
2334
+ color: CanvasText;
2335
+ }
2336
+ }
2337
+
2338
+ /* Static glyphs share size/stroke tokens; parent controls own interaction. */
2339
+ .pui-icon {
2340
+ display: inline-block;
2341
+ flex: 0 0 auto;
2342
+ width: var(--icon-size-sm);
2343
+ height: var(--icon-size-sm);
2344
+ vertical-align: -0.125em;
2345
+ stroke-width: var(--icon-stroke-width);
2346
+ pointer-events: none;
2347
+ }
2348
+ .pui-icon[data-size='md'] {
2349
+ width: var(--icon-size-md);
2350
+ height: var(--icon-size-md);
2351
+ }
2352
+ .pui-icon[data-size='lg'] {
2353
+ width: var(--icon-size-lg);
2354
+ height: var(--icon-size-lg);
2355
+ }
2356
+ .pui-icon[data-directional='true']:dir(rtl) {
2357
+ transform: scaleX(-1);
2358
+ }
2359
+
2360
+ /* Compact notification surfaces: one quiet card, semantic icon and predictable actions. */
2361
+ .pui-toast-viewport {
2362
+ /* The inset is inside the scrollport so shadows have room to fade. */
2363
+ inset-inline-end: 0;
2364
+ bottom: 0;
2365
+ width: 416px;
2366
+ max-width: 100vw;
2367
+ max-height: 100dvh;
2368
+ padding: 24px;
2369
+ overflow-x: hidden;
2370
+ scrollbar-width: none;
2371
+ }
2372
+ .pui-toast {
2373
+ font-size: 13px;
2374
+ line-height: 20px;
2375
+ transition:
2376
+ opacity var(--toast-enter-duration) var(--motion-ease),
2377
+ translate var(--toast-enter-duration) var(--toast-stack-ease);
2378
+ }
2379
+ .pui-toast-content {
2380
+ opacity: 1;
2381
+ transition: opacity var(--duration-fast) var(--motion-ease);
2382
+ gap: var(--space-3);
2383
+ }
2384
+ .pui-toast-icon {
2385
+ margin-top: 1px;
2386
+ }
2387
+ .pui-toast-icon > svg {
2388
+ width: 18px;
2389
+ height: 18px;
2390
+ }
2391
+ .pui-toast-title {
2392
+ font-size: 13px;
2393
+ line-height: 20px;
2394
+ }
2395
+ .pui-toast-description {
2396
+ margin-top: 2px;
2397
+ line-height: 18px;
2398
+ }
2399
+ .pui-toast-close {
2400
+ width: 28px;
2401
+ height: 28px;
2402
+ min-width: 28px;
2403
+ margin: -4px -4px 0 0;
2404
+ border-radius: var(--radius-full);
2405
+ color: var(--ink-muted);
2406
+ }
2407
+ .pui-toast-close:dir(rtl) {
2408
+ margin: -4px 0 0 -4px;
2409
+ }
2410
+ .pui-toast-action {
2411
+ height: 30px;
2412
+ min-height: 30px;
2413
+ font-size: 12px;
2414
+ }
2415
+
2416
+ /* Base UI owns hover/focus expansion, announcements, timers and gestures. */
2417
+ .pui-toast-viewport[data-layout='stack'] {
2418
+ display: grid;
2419
+ /* An auto row adopts the tallest card while its height transitions, moving
2420
+ the bottom anchor during collapse when a behind-card has an action. */
2421
+ grid-template-rows: var(--toast-frontmost-height, 80px);
2422
+ padding-top: 24px;
2423
+ height: calc(var(--toast-frontmost-height, 80px) + 48px);
2424
+ overflow: visible;
2425
+ }
2426
+ .pui-toast-viewport[data-layout='stack'] > .pui-toast {
2427
+ grid-area: 1 / 1;
2428
+ z-index: calc(100 - var(--toast-index));
2429
+ height: var(--toast-frontmost-height, var(--toast-height, auto));
2430
+ overflow: clip;
2431
+ align-self: end;
2432
+ transform-origin: bottom center;
2433
+ transform: translateY(calc(var(--toast-index) * -10px))
2434
+ scale(calc(1 - var(--toast-index) * 0.035));
2435
+ transition:
2436
+ height var(--toast-stack-duration) var(--toast-stack-ease),
2437
+ transform var(--toast-stack-duration) var(--toast-stack-ease),
2438
+ opacity var(--toast-enter-duration) var(--motion-ease),
2439
+ translate var(--toast-enter-duration) var(--toast-stack-ease);
2440
+ }
2441
+ .pui-toast-viewport[data-layout='stack']:not([data-expanded])
2442
+ .pui-toast-content[data-behind] {
2443
+ opacity: 0;
2444
+ pointer-events: none;
2445
+ }
2446
+ .pui-toast-viewport[data-layout='stack'][data-expanded] {
2447
+ pointer-events: auto;
2448
+ height: min(calc(var(--toast-stack-height, 240px) + 48px), 100dvh);
2449
+ grid-template-rows: var(--toast-stack-height, auto);
2450
+ padding-top: 24px;
2451
+ overflow: visible;
2452
+ }
2453
+ .pui-toast-viewport[data-layout='stack'][data-expanded][data-stack-overflow] {
2454
+ overflow-y: auto;
2455
+ overflow-x: hidden;
2456
+ }
2457
+ .pui-toast-viewport[data-layout='stack'][data-expanded] > .pui-toast {
2458
+ height: var(--toast-height, auto);
2459
+ transform: translateY(
2460
+ calc(-1 * (var(--toast-offset-y) + var(--toast-index) * var(--space-2)))
2461
+ );
2462
+ }
2463
+ .pui-toast-viewport[data-layout='stack'] > .pui-toast[data-ending-style] {
2464
+ transition-duration: 0s;
2465
+ }
2466
+ @media (max-width: 760px) {
2467
+ .pui-toast-close {
2468
+ width: 44px;
2469
+ height: 44px;
2470
+ min-width: 44px;
2471
+ margin-top: -8px;
2472
+ }
2473
+ .pui-toast-action {
2474
+ height: 44px;
2475
+ min-height: 44px;
2476
+ }
2477
+ }
2478
+ @media (prefers-reduced-motion: reduce) {
2479
+ .pui-toast-content,
2480
+ .pui-toast-viewport[data-layout='stack'],
2481
+ .pui-toast-viewport[data-layout='stack'] > .pui-toast {
2482
+ transition: none;
2483
+ }
2484
+ }
2485
+
2486
+ .pui-toast-viewport::-webkit-scrollbar {
2487
+ display: none;
2488
+ }
2489
+ @media (prefers-reduced-motion: reduce) {
2490
+ .pui-toast {
2491
+ transition: none;
2492
+ }
2493
+ }
2494
+
2495
+ /* Active feedback is transient; persistent selection belongs to Toggle. */
2496
+ .pui-button:active:not(:disabled, [data-disabled], [data-variant='link']) {
2497
+ background-image: linear-gradient(
2498
+ var(--interaction-active-bg),
2499
+ var(--interaction-active-bg)
2500
+ );
2501
+ }
2502
+ .pui-button[aria-busy='true'] {
2503
+ cursor: progress;
2504
+ }
2505
+ @media (forced-colors: active) {
2506
+ .pui-button {
2507
+ border-color: ButtonText;
2508
+ }
2509
+ .pui-button:active {
2510
+ background-image: none;
2511
+ }
2512
+ }
2513
+
2514
+ @media (forced-colors: active) {
2515
+ .pui-tooltip {
2516
+ background: CanvasText;
2517
+ color: Canvas;
2518
+ forced-color-adjust: none;
2519
+ }
2520
+ }
2521
+
2522
+ .pui-filter-bar {
2523
+ display: grid;
2524
+ gap: var(--space-4);
2525
+ min-inline-size: 0;
2526
+ }
2527
+ .pui-filter-bar-controls {
2528
+ display: flex;
2529
+ flex-wrap: wrap;
2530
+ align-items: end;
2531
+ gap: var(--space-4);
2532
+ min-inline-size: 0;
2533
+ }
2534
+ .pui-filter-bar-field {
2535
+ display: grid;
2536
+ gap: var(--space-2);
2537
+ flex: 1 1 12rem;
2538
+ min-inline-size: 0;
2539
+ max-inline-size: 100%;
2540
+ }
2541
+ .pui-filter-bar-field[data-width='search'] {
2542
+ flex: 2 1 20rem;
2543
+ }
2544
+ .pui-filter-bar-field > :is(.pui-control, .pui-select-trigger) {
2545
+ inline-size: 100%;
2546
+ min-inline-size: 0;
2547
+ }
2548
+ .pui-filter-bar-actions {
2549
+ display: flex;
2550
+ align-items: center;
2551
+ flex-wrap: wrap;
2552
+ gap: var(--space-2);
2553
+ min-inline-size: 0;
2554
+ }
2555
+ .pui-filter-bar-summary {
2556
+ color: var(--ink-muted);
2557
+ font: var(--weight-regular)
2558
+ var(--type-caption-size)/var(--type-caption-leading) var(--font-body);
2559
+ }
2560
+ .pui-filter-bar-actions > .pui-button {
2561
+ max-inline-size: 100%;
2562
+ height: auto;
2563
+ min-height: var(--control-height);
2564
+ padding-block: var(--space-2);
2565
+ overflow-wrap: anywhere;
2566
+ }
2567
+
2568
+ /* Application frame slots: navigation state and product routing remain caller-owned. */
2569
+ .pui-app-shell {
2570
+ --app-shell-radius: var(--radius-sheet);
2571
+ --app-shell-inset: var(--space-3);
2572
+ --app-shell-sidebar-width: 216px;
2573
+ display: grid;
2574
+ grid-template-columns: var(--app-shell-sidebar-width) minmax(0, 1fr);
2575
+ grid-template-rows: auto minmax(0, 1fr);
2576
+ gap: var(--space-4);
2577
+ min-inline-size: 0;
2578
+ padding: var(--app-shell-inset);
2579
+ background: var(--chrome);
2580
+ border-radius: var(--app-shell-radius);
2581
+ }
2582
+ .pui-app-shell[data-sidebar='collapsed'] {
2583
+ --app-shell-sidebar-width: 64px;
2584
+ }
2585
+ .pui-app-shell-header {
2586
+ grid-column: 1 / -1;
2587
+ display: flex;
2588
+ align-items: center;
2589
+ justify-content: space-between;
2590
+ gap: var(--space-3);
2591
+ min-inline-size: 0;
2592
+ }
2593
+ .pui-app-shell-sidebar {
2594
+ display: flex;
2595
+ flex-direction: column;
2596
+ gap: var(--space-3);
2597
+ min-inline-size: 0;
2598
+ min-block-size: 0;
2599
+ padding-inline: var(--space-3);
2600
+ }
2601
+ .pui-app-shell-content {
2602
+ min-inline-size: 0;
2603
+ min-block-size: 0;
2604
+ padding: var(--space-6);
2605
+ background: var(--canvas);
2606
+ border-radius: max(
2607
+ 0px,
2608
+ calc(var(--app-shell-radius) - var(--app-shell-inset))
2609
+ );
2610
+ overflow-wrap: anywhere;
2611
+ }
2612
+ .pui-app-shell-footer {
2613
+ margin-block-start: auto;
2614
+ flex: none;
2615
+ }
2616
+ .pui-app-shell-link {
2617
+ display: grid;
2618
+ grid-template-columns: 40px minmax(0, 1fr);
2619
+ align-items: center;
2620
+ min-block-size: 40px;
2621
+ border-radius: var(--radius-md);
2622
+ text-decoration: none;
2623
+ color: var(--ink-body);
2624
+ transition: background-color var(--duration-fast) var(--ease-out);
2625
+ }
2626
+ .pui-app-shell-link:hover {
2627
+ background: var(--interaction-hover-bg);
2628
+ }
2629
+ .pui-app-shell-link:active:not([aria-current='page']) {
2630
+ background: var(--interaction-active-bg);
2631
+ }
2632
+ .pui-app-shell-link[aria-current='page'] {
2633
+ background: var(--selected);
2634
+ color: var(--ink);
2635
+ font-weight: 500;
2636
+ }
2637
+ .pui-app-shell-link:focus-visible {
2638
+ outline: 2px solid var(--control-focus);
2639
+ outline-offset: -2px;
2640
+ }
2641
+ .pui-app-shell-icon {
2642
+ display: grid;
2643
+ place-items: center;
2644
+ inline-size: 40px;
2645
+ }
2646
+ .pui-app-shell-label {
2647
+ min-inline-size: 0;
2648
+ overflow: hidden;
2649
+ text-overflow: ellipsis;
2650
+ white-space: nowrap;
2651
+ padding-inline-end: var(--space-2);
2652
+ }
2653
+ .pui-app-shell[data-sidebar='collapsed'] .pui-app-shell-label {
2654
+ position: absolute;
2655
+ inline-size: 1px;
2656
+ block-size: 1px;
2657
+ padding: 0;
2658
+ clip-path: inset(50%);
2659
+ overflow: hidden;
2660
+ }
2661
+ @media (max-width: 760px) {
2662
+ .pui-app-shell {
2663
+ grid-template-columns: minmax(0, 1fr);
2664
+ grid-template-rows: auto minmax(0, 1fr);
2665
+ }
2666
+ .pui-app-shell-sidebar {
2667
+ display: none;
2668
+ }
2669
+ .pui-app-shell-link {
2670
+ min-block-size: 44px;
2671
+ }
2672
+ .pui-app-shell-content {
2673
+ padding: var(--space-4);
2674
+ }
2675
+ }
2676
+ @media (prefers-reduced-motion: reduce) {
2677
+ .pui-app-shell-link {
2678
+ transition: none;
2679
+ }
2680
+ }
2681
+ @media (forced-colors: active) {
2682
+ .pui-app-shell-link[aria-current='page'] {
2683
+ outline: 1px solid Highlight;
2684
+ }
2685
+ }
2686
+
2687
+ /* Workspace variant: product sidebar owns the brand; the content scrollport is caller-provided. */
2688
+ .pui-app-shell[data-layout='workspace'] {
2689
+ --app-shell-sidebar-width: 224px;
2690
+ grid-template-rows: minmax(0, 1fr);
2691
+ gap: 0;
2692
+ padding: 0;
2693
+ transition: grid-template-columns var(--duration-base) var(--ease-out);
2694
+ }
2695
+ .pui-app-shell[data-layout='workspace'][data-sidebar='collapsed'] {
2696
+ --app-shell-sidebar-width: 72px;
2697
+ }
2698
+ .pui-app-shell[data-layout='workspace'] > .pui-app-shell-sidebar {
2699
+ position: relative;
2700
+ grid-row: 1;
2701
+ grid-column: 1;
2702
+ gap: 0;
2703
+ padding: 0;
2704
+ z-index: 1;
2705
+ }
2706
+ .pui-app-shell[data-layout='workspace'] > .pui-app-shell-content {
2707
+ grid-row: 1;
2708
+ grid-column: 2;
2709
+ margin: 0;
2710
+ padding: 0;
2711
+ background: transparent;
2712
+ border-radius: 0;
2713
+ }
2714
+ .pui-app-shell[data-layout='workspace'] .pui-app-shell-footer {
2715
+ padding: var(--space-4);
2716
+ }
2717
+ .pui-app-shell[data-layout='workspace'] .pui-app-shell-label {
2718
+ transition:
2719
+ opacity 80ms var(--ease-out) 160ms,
2720
+ visibility 0s 160ms;
2721
+ }
2722
+ .pui-app-shell[data-layout='workspace'][data-sidebar='collapsed']
2723
+ .pui-app-shell-label {
2724
+ opacity: 0;
2725
+ visibility: hidden;
2726
+ transition: none;
2727
+ }
2728
+ @media (min-width: 761px) {
2729
+ .pui-app-shell[data-layout='workspace'] > .pui-app-shell-header {
2730
+ display: none;
2731
+ }
2732
+ }
2733
+ @media (max-width: 760px) {
2734
+ .pui-app-shell[data-layout='workspace'] {
2735
+ grid-template-columns: minmax(0, 1fr);
2736
+ grid-template-rows: auto minmax(0, 1fr);
2737
+ }
2738
+ .pui-app-shell[data-layout='workspace'] > .pui-app-shell-header {
2739
+ padding: var(--space-3);
2740
+ }
2741
+ .pui-app-shell[data-layout='workspace'] > .pui-app-shell-content {
2742
+ grid-column: 1;
2743
+ grid-row: 2;
2744
+ margin: 0;
2745
+ }
2746
+ }
2747
+ @media (prefers-reduced-motion: reduce) {
2748
+ .pui-app-shell[data-layout='workspace'],
2749
+ .pui-app-shell[data-layout='workspace'] .pui-app-shell-label {
2750
+ transition: none;
2751
+ }
2752
+ }
2753
+
2754
+ .pui-tree-scroll {
2755
+ min-inline-size: 0;
2756
+ }
2757
+ .pui-tree-viewport {
2758
+ block-size: 100%;
2759
+ }
2760
+ .pui-tree {
2761
+ position: relative;
2762
+ min-inline-size: 0;
2763
+ }
2764
+ .pui-tree-item {
2765
+ display: flex;
2766
+ align-items: center;
2767
+ gap: var(--space-1);
2768
+ padding-inline-end: var(--space-2);
2769
+ border-radius: var(--radius-md);
2770
+ color: var(--ink);
2771
+ cursor: default;
2772
+ outline-offset: -2px;
2773
+ transition: background-color var(--duration-fast) var(--ease-out);
2774
+ }
2775
+ .pui-tree-item:hover {
2776
+ background: var(--interaction-hover-bg);
2777
+ }
2778
+ .pui-tree-item[aria-selected='true'] {
2779
+ background: var(--selected);
2780
+ }
2781
+ .pui-tree-item:focus-visible {
2782
+ outline: 2px solid var(--control-focus);
2783
+ }
2784
+ .pui-tree-item[aria-disabled='true'] {
2785
+ color: var(--ink-muted);
2786
+ }
2787
+ .pui-tree-toggle,
2788
+ .pui-tree-leaf {
2789
+ inline-size: 32px;
2790
+ block-size: 32px;
2791
+ flex: 0 0 32px;
2792
+ }
2793
+ .pui-tree-toggle {
2794
+ display: grid;
2795
+ place-items: center;
2796
+ padding: 0;
2797
+ border: 0;
2798
+ border-radius: var(--radius-full);
2799
+ background: transparent;
2800
+ color: inherit;
2801
+ }
2802
+ .pui-tree-toggle:hover:not(:disabled) {
2803
+ background: var(--interaction-hover-bg);
2804
+ }
2805
+ .pui-tree-toggle:active:not(:disabled) {
2806
+ background: var(--interaction-active-bg);
2807
+ }
2808
+ .pui-tree-toggle svg[data-expanded] {
2809
+ rotate: 90deg;
2810
+ }
2811
+ .pui-tree:dir(rtl) .pui-tree-toggle svg:not([data-expanded]) {
2812
+ rotate: 180deg;
2813
+ }
2814
+ .pui-tree-label {
2815
+ min-inline-size: 0;
2816
+ overflow: hidden;
2817
+ text-overflow: ellipsis;
2818
+ white-space: nowrap;
2819
+ }
2820
+ .pui-tree-empty {
2821
+ padding: var(--space-4);
2822
+ color: var(--ink-muted);
2823
+ }
2824
+ @media (prefers-reduced-motion: reduce) {
2825
+ .pui-tree-item {
2826
+ transition: none;
2827
+ }
2828
+ }
2829
+ @media (forced-colors: active) {
2830
+ .pui-tree-item[aria-selected='true'] {
2831
+ background: Highlight;
2832
+ color: HighlightText;
2833
+ }
2834
+ .pui-tree-item[aria-disabled='true'] {
2835
+ color: GrayText;
2836
+ }
2837
+ .pui-tree-item:focus-visible {
2838
+ outline-color: Highlight;
2839
+ }
2840
+ }
2841
+
2842
+ /* Date and time share the same field feedback and nested surface hierarchy. */
2843
+ .pui-date-picker,
2844
+ .pui-time-field {
2845
+ display: flex;
2846
+ flex-direction: column;
2847
+ gap: var(--space-2);
2848
+ min-width: 0;
2849
+ max-width: 100%;
2850
+ }
2851
+ .pui-date-group {
2852
+ display: flex;
2853
+ align-items: center;
2854
+ box-sizing: border-box;
2855
+ min-height: var(--control-height);
2856
+ gap: var(--space-2);
2857
+ padding-inline: var(--control-padding-x) var(--space-1);
2858
+ border: 1px solid var(--control-border);
2859
+ border-radius: var(--control-radius);
2860
+ background: var(--control-background);
2861
+ color: var(--ink);
2862
+ outline: none;
2863
+ transition:
2864
+ background-color var(--duration-fast) var(--ease-out),
2865
+ border-color var(--duration-fast) var(--ease-out),
2866
+ box-shadow var(--duration-fast) var(--ease-out);
2867
+ }
2868
+ :is(.pui-date-picker, .pui-time-field):not([data-disabled], [data-readonly])
2869
+ .pui-date-group:hover:not([data-focus-within], :focus-within) {
2870
+ background: var(--control-hover-background);
2871
+ border-color: var(--control-hover-border);
2872
+ }
2873
+ .pui-date-group[data-focus-within],
2874
+ .pui-date-group:focus-within {
2875
+ background: var(--control-focus-background);
2876
+ border-color: var(--control-focus);
2877
+ box-shadow: 0 0 0 3px
2878
+ color-mix(in oklch, var(--control-focus) 18%, transparent);
2879
+ }
2880
+ :is(.pui-date-picker, .pui-time-field)[data-invalid] .pui-date-group {
2881
+ border-color: var(--status-danger-fg);
2882
+ }
2883
+ :is(.pui-date-picker, .pui-time-field)[data-disabled] {
2884
+ opacity: var(--control-disabled-opacity);
2885
+ }
2886
+ :is(.pui-date-picker, .pui-time-field)[data-disabled] .pui-date-group {
2887
+ cursor: not-allowed;
2888
+ background: var(--control-disabled-background);
2889
+ }
2890
+ .pui-date-input {
2891
+ display: flex;
2892
+ align-items: center;
2893
+ flex: 1;
2894
+ min-width: 0;
2895
+ padding-block: var(--space-1);
2896
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
2897
+ white-space: nowrap;
2898
+ }
2899
+ .pui-date-segment {
2900
+ font-variant-numeric: tabular-nums;
2901
+ border-radius: var(--space-1);
2902
+ padding: 1px;
2903
+ outline: none;
2904
+ }
2905
+ .pui-date-segment[data-type='literal'] {
2906
+ padding: 0;
2907
+ white-space: pre;
2908
+ }
2909
+ .pui-date-segment[data-placeholder] {
2910
+ color: var(--control-placeholder);
2911
+ }
2912
+ .pui-date-segment[data-focused] {
2913
+ background: var(--selected);
2914
+ color: var(--ink);
2915
+ outline: 1px solid var(--control-focus);
2916
+ }
2917
+ .pui-date-range-inputs {
2918
+ display: flex;
2919
+ flex-wrap: wrap;
2920
+ align-items: center;
2921
+ gap: var(--space-1) var(--space-2);
2922
+ min-width: 0;
2923
+ flex: 1;
2924
+ }
2925
+ .pui-date-range-inputs .pui-date-input {
2926
+ flex: 0 1 auto;
2927
+ }
2928
+ .pui-date-range-separator {
2929
+ color: var(--ink-muted);
2930
+ }
2931
+ .pui-date-trigger,
2932
+ .pui-calendar-nav {
2933
+ display: inline-flex;
2934
+ align-items: center;
2935
+ justify-content: center;
2936
+ flex: none;
2937
+ width: 32px;
2938
+ height: 32px;
2939
+ min-width: 32px;
2940
+ padding: 0;
2941
+ border: 0;
2942
+ border-radius: var(--radius-full);
2943
+ background: transparent;
2944
+ color: var(--ink);
2945
+ cursor: pointer;
2946
+ outline: none;
2947
+ transition: background-color var(--duration-fast) var(--ease-out);
2948
+ }
2949
+ :is(.pui-date-trigger, .pui-calendar-nav)[data-hovered]:not([data-disabled]) {
2950
+ background: var(--selected);
2951
+ }
2952
+ :is(.pui-date-trigger, .pui-calendar-nav)[data-focus-visible] {
2953
+ outline: 2px solid var(--control-focus);
2954
+ outline-offset: 2px;
2955
+ }
2956
+ :is(.pui-date-trigger, .pui-calendar-nav)[data-disabled] {
2957
+ opacity: var(--control-disabled-opacity);
2958
+ cursor: not-allowed;
2959
+ }
2960
+ .pui-date-popover {
2961
+ box-sizing: border-box;
2962
+ max-width: calc(100vw - var(--space-4));
2963
+ max-height: var(--available-height);
2964
+ overflow: auto;
2965
+ overscroll-behavior: contain;
2966
+ padding: var(--space-2);
2967
+ border: 1px solid var(--line);
2968
+ border-radius: var(--radius-lg);
2969
+ background: var(--canvas);
2970
+ color: var(--ink);
2971
+ box-shadow: var(--shadow-float);
2972
+ z-index: var(--layer-popup);
2973
+ }
2974
+ .pui-date-dialog {
2975
+ outline: none;
2976
+ }
2977
+ .pui-calendar {
2978
+ width: 280px;
2979
+ max-width: 100%;
2980
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
2981
+ }
2982
+ .pui-calendar-header {
2983
+ display: flex;
2984
+ align-items: center;
2985
+ justify-content: space-between;
2986
+ gap: var(--space-1);
2987
+ margin-bottom: var(--space-2);
2988
+ }
2989
+ .pui-calendar-heading {
2990
+ margin: 0;
2991
+ font: 500 var(--type-body-size)/var(--type-body-leading) var(--font-body);
2992
+ text-align: center;
2993
+ }
2994
+ .pui-calendar-grid {
2995
+ min-width: 0;
2996
+ width: 100%;
2997
+ border-collapse: separate;
2998
+ border-spacing: 2px;
2999
+ table-layout: fixed;
3000
+ }
3001
+ .pui-calendar-weekday {
3002
+ color: var(--ink-muted);
3003
+ font-weight: 400;
3004
+ font-size: var(--type-caption-size);
3005
+ text-align: center;
3006
+ }
3007
+ .pui-calendar-day {
3008
+ display: flex;
3009
+ align-items: center;
3010
+ justify-content: center;
3011
+ box-sizing: border-box;
3012
+ width: 100%;
3013
+ min-height: 36px;
3014
+ border: 1px solid transparent;
3015
+ border-radius: var(--radius-sm);
3016
+ cursor: pointer;
3017
+ outline: none;
3018
+ font-variant-numeric: tabular-nums;
3019
+ }
3020
+ .pui-calendar-day[data-hovered]:not(
3021
+ [data-disabled],
3022
+ [data-unavailable],
3023
+ [data-selected]
3024
+ ) {
3025
+ background: var(--selected);
3026
+ }
3027
+ .pui-calendar-day[data-selected] {
3028
+ background: var(--selected);
3029
+ color: var(--ink);
3030
+ }
3031
+ .pui-calendar-day:is([data-selection-start], [data-selection-end]) {
3032
+ background: var(--brand);
3033
+ color: var(--on-brand);
3034
+ }
3035
+ .pui-calendar-day[data-focus-visible] {
3036
+ outline: 2px solid var(--control-focus);
3037
+ outline-offset: -2px;
3038
+ }
3039
+ .pui-calendar-day[data-today] {
3040
+ border-color: var(--control-border);
3041
+ }
3042
+ .pui-calendar-day[data-outside-month] {
3043
+ visibility: hidden;
3044
+ }
3045
+ .pui-calendar-day:is([data-disabled], [data-unavailable]) {
3046
+ color: var(--ink-muted);
3047
+ text-decoration: line-through;
3048
+ cursor: not-allowed;
3049
+ opacity: var(--control-disabled-opacity);
3050
+ }
3051
+ @media (max-width: 760px), (pointer: coarse) {
3052
+ .pui-date-trigger,
3053
+ .pui-calendar-nav {
3054
+ width: 40px;
3055
+ height: 40px;
3056
+ min-width: 40px;
3057
+ }
3058
+ .pui-calendar-day {
3059
+ min-height: 40px;
3060
+ }
3061
+ }
3062
+ @media (prefers-reduced-motion: reduce) {
3063
+ .pui-date-group,
3064
+ .pui-date-trigger,
3065
+ .pui-calendar-nav {
3066
+ transition: none;
3067
+ }
3068
+ }
3069
+ @media (forced-colors: active) {
3070
+ .pui-date-group,
3071
+ .pui-date-popover {
3072
+ border-color: CanvasText;
3073
+ }
3074
+ .pui-date-group[data-focus-within],
3075
+ .pui-date-group:focus-within {
3076
+ outline: 2px solid Highlight;
3077
+ }
3078
+ .pui-calendar-day[data-selected] {
3079
+ background: Highlight;
3080
+ color: HighlightText;
3081
+ forced-color-adjust: none;
3082
+ }
3083
+ .pui-calendar-day[data-focus-visible],
3084
+ .pui-date-segment[data-focused] {
3085
+ outline-color: Highlight;
3086
+ }
3087
+ }
3088
+
3089
+ .pui-calendar-grid :is(th, td) {
3090
+ padding: 0;
3091
+ border: 0;
3092
+ min-width: 0;
3093
+ text-align: center;
3094
+ }
3095
+ .pui-calendar-day[data-focus-visible][data-selected] {
3096
+ outline-color: var(--ink);
3097
+ }
3098
+ .pui-calendar:dir(rtl) .pui-calendar-nav svg {
3099
+ transform: scaleX(-1);
3100
+ }
3101
+
3102
+ @media (prefers-reduced-motion: reduce) {
3103
+ .pui-file-dropzone {
3104
+ transition: none;
3105
+ }
3106
+ }
3107
+
3108
+ .pui-chart {
3109
+ min-width: 0;
3110
+ max-width: 100%;
3111
+ margin: 0;
3112
+ display: flex;
3113
+ flex-direction: column;
3114
+ gap: var(--space-3);
3115
+ }
3116
+ .pui-chart-caption strong {
3117
+ font: 500 var(--type-subsection-size)/var(--type-subsection-leading)
3118
+ var(--font-body);
3119
+ }
3120
+ .pui-chart-caption p,
3121
+ .pui-chart-help {
3122
+ margin: var(--space-2) 0 0;
3123
+ color: var(--ink-muted);
3124
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
3125
+ }
3126
+ .pui-chart-legend {
3127
+ display: flex;
3128
+ flex-wrap: wrap;
3129
+ gap: var(--space-1) var(--space-2);
3130
+ padding: 0;
3131
+ margin: 0;
3132
+ list-style: none;
3133
+ }
3134
+ .pui-chart-legend-button {
3135
+ max-width: 100%;
3136
+ display: inline-flex;
3137
+ align-items: center;
3138
+ gap: var(--space-2);
3139
+ min-height: 36px;
3140
+ padding: var(--space-1) var(--space-2);
3141
+ border: 0;
3142
+ border-radius: var(--radius-md);
3143
+ background: transparent;
3144
+ color: var(--ink-body);
3145
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
3146
+ cursor: pointer;
3147
+ text-align: start;
3148
+ }
3149
+ .pui-chart-legend-button svg {
3150
+ flex: none;
3151
+ }
3152
+ .pui-chart-legend-button span {
3153
+ overflow-wrap: anywhere;
3154
+ }
3155
+ .pui-chart-legend-button:hover {
3156
+ background: var(--interaction-hover-bg);
3157
+ }
3158
+ .pui-chart-legend-button:active {
3159
+ background: var(--interaction-active-bg);
3160
+ }
3161
+ .pui-chart-legend-button[aria-pressed='false'] span {
3162
+ text-decoration: line-through;
3163
+ color: var(--ink-muted);
3164
+ }
3165
+ .pui-chart-legend-button:focus-visible,
3166
+ .pui-chart-plot .recharts-surface:focus-visible,
3167
+ .pui-chart-table summary:focus-visible {
3168
+ outline: 2px solid var(--interaction-focus);
3169
+ outline-offset: 2px;
3170
+ border-radius: var(--radius-sm);
3171
+ }
3172
+ .pui-chart-axis-label {
3173
+ margin: 0;
3174
+ color: var(--ink-muted);
3175
+ font: 400 var(--type-caption-size)/var(--type-caption-leading)
3176
+ var(--font-body);
3177
+ overflow-wrap: anywhere;
3178
+ }
3179
+ .pui-chart-x-label {
3180
+ text-align: center;
3181
+ }
3182
+ .pui-chart-plot {
3183
+ min-width: 0;
3184
+ width: 100%;
3185
+ font-family: var(--font-body);
3186
+ }
3187
+ .pui-chart-inspector {
3188
+ box-sizing: border-box;
3189
+ min-height: 100px;
3190
+ padding: var(--space-3) var(--space-4);
3191
+ background: var(--surface);
3192
+ color: var(--ink-body);
3193
+ border-radius: var(--radius-md);
3194
+ font: 400 var(--type-body-size)/var(--type-body-leading) var(--font-body);
3195
+ overflow-wrap: anywhere;
3196
+ }
3197
+ .pui-chart-inspector[hidden] {
3198
+ display: none;
3199
+ }
3200
+ .pui-chart-readout strong {
3201
+ font-weight: 500;
3202
+ }
3203
+ .pui-chart-readout ul {
3204
+ display: flex;
3205
+ flex-wrap: wrap;
3206
+ gap: var(--space-2) var(--space-4);
3207
+ list-style: none;
3208
+ padding: 0;
3209
+ margin: var(--space-2) 0 0;
3210
+ }
3211
+ .pui-chart-empty {
3212
+ display: flex;
3213
+ align-items: center;
3214
+ flex-wrap: wrap;
3215
+ gap: var(--space-3);
3216
+ min-height: 160px;
3217
+ padding: var(--space-4);
3218
+ background: var(--surface);
3219
+ color: var(--ink-muted);
3220
+ border-radius: var(--radius-md);
3221
+ }
3222
+ .pui-chart-empty p {
3223
+ margin: 0;
3224
+ }
3225
+ .pui-chart-table {
3226
+ min-width: 0;
3227
+ }
3228
+ .pui-chart-table summary {
3229
+ width: fit-content;
3230
+ cursor: pointer;
3231
+ color: var(--ink);
3232
+ padding-block: var(--space-2);
3233
+ text-decoration: underline;
3234
+ text-underline-offset: 3px;
3235
+ }
3236
+ .pui-chart-table .pui-scroll-root {
3237
+ max-height: 320px;
3238
+ margin-top: var(--space-2);
3239
+ }
3240
+ @media (max-width: 760px), (pointer: coarse) {
3241
+ .pui-chart-legend-button {
3242
+ min-height: 44px;
3243
+ }
3244
+ }
3245
+ @media (forced-colors: active) {
3246
+ .pui-chart {
3247
+ --canvas: Canvas;
3248
+ --ink-muted: CanvasText;
3249
+ --line: GrayText;
3250
+ --control-border: CanvasText;
3251
+ --chart-series-1: CanvasText;
3252
+ --chart-series-2: CanvasText;
3253
+ --chart-series-3: CanvasText;
3254
+ }
3255
+ .pui-chart-plot .recharts-surface,
3256
+ .pui-chart-legend svg {
3257
+ forced-color-adjust: none;
3258
+ }
3259
+ .pui-chart-inspector,
3260
+ .pui-chart-empty {
3261
+ background: Canvas;
3262
+ color: CanvasText;
3263
+ border: 1px solid CanvasText;
3264
+ }
3265
+ .pui-chart-plot .recharts-cartesian-axis-tick text {
3266
+ fill: CanvasText;
3267
+ }
3268
+ }
3269
+
3270
+ /* SizeProvider adds no layout box. Screen-reader semantics belong to its children. */
3271
+ .pui-size-scope {
3272
+ display: contents;
3273
+ }
3274
+
3275
+ [data-ui-size='small'] {
3276
+ --ui-slider-track: var(--size-slider-track-small);
3277
+ --ui-file-padding: var(--size-file-padding-small);
3278
+ --ui-content-gap: var(--size-content-gap-small);
3279
+
3280
+ --ui-control-height: var(--size-control-height-small);
3281
+ --ui-control-padding: var(--size-control-padding-small);
3282
+ --ui-button-padding: var(--size-button-padding-small);
3283
+ --ui-font: var(--size-font-small);
3284
+ --ui-leading: var(--size-leading-small);
3285
+ --ui-choice: var(--size-choice-small);
3286
+ --ui-switch-width: var(--size-switch-width-small);
3287
+ --ui-switch-height: var(--size-switch-height-small);
3288
+ --ui-switch-thumb: var(--size-switch-thumb-small);
3289
+ --ui-icon: var(--size-icon-small);
3290
+ --ui-surface-padding: var(--size-surface-padding-small);
3291
+ --ui-card-padding: var(--size-card-padding-small);
3292
+ --ui-gap: var(--size-gap-small);
3293
+ --ui-row: var(--size-row-small);
3294
+ --ui-table-padding-y: var(--size-table-padding-y-small);
3295
+ --ui-table-padding-x: var(--size-table-padding-x-small);
3296
+ --ui-avatar: var(--size-avatar-small);
3297
+ --ui-spinner: var(--size-spinner-small);
3298
+ --ui-badge-padding-y: var(--size-badge-padding-y-small);
3299
+ --ui-badge-padding-x: var(--size-badge-padding-x-small);
3300
+ --ui-badge-font: var(--size-badge-font-small);
3301
+ --ui-gauge: var(--size-gauge-small);
3302
+ --ui-slider-thumb: var(--size-slider-thumb-small);
3303
+ --ui-otp: var(--size-otp-small);
3304
+ --ui-tree-row: var(--size-tree-row-small);
3305
+ --ui-textarea-padding: var(--size-textarea-padding-small);
3306
+ --ui-tooltip-padding-y: var(--size-tooltip-padding-y-small);
3307
+ --ui-tooltip-padding-x: var(--size-tooltip-padding-x-small);
3308
+ --control-height: var(--ui-control-height);
3309
+ --control-padding-x: var(--ui-control-padding);
3310
+ --control-choice-size: var(--ui-choice);
3311
+ --control-switch-width: var(--ui-switch-width);
3312
+ --control-switch-height: var(--ui-switch-height);
3313
+ --control-switch-thumb: var(--ui-switch-thumb);
3314
+ }
3315
+
3316
+ [data-ui-size='default'] {
3317
+ --ui-slider-track: var(--size-slider-track-default);
3318
+ --ui-file-padding: var(--size-file-padding-default);
3319
+ --ui-content-gap: var(--size-content-gap-default);
3320
+
3321
+ --ui-control-height: var(--size-control-height-default);
3322
+ --ui-control-padding: var(--size-control-padding-default);
3323
+ --ui-button-padding: var(--size-button-padding-default);
3324
+ --ui-font: var(--size-font-default);
3325
+ --ui-leading: var(--size-leading-default);
3326
+ --ui-choice: var(--size-choice-default);
3327
+ --ui-switch-width: var(--size-switch-width-default);
3328
+ --ui-switch-height: var(--size-switch-height-default);
3329
+ --ui-switch-thumb: var(--size-switch-thumb-default);
3330
+ --ui-icon: var(--size-icon-default);
3331
+ --ui-surface-padding: var(--size-surface-padding-default);
3332
+ --ui-card-padding: var(--size-card-padding-default);
3333
+ --ui-gap: var(--size-gap-default);
3334
+ --ui-row: var(--size-row-default);
3335
+ --ui-table-padding-y: var(--size-table-padding-y-default);
3336
+ --ui-table-padding-x: var(--size-table-padding-x-default);
3337
+ --ui-avatar: var(--size-avatar-default);
3338
+ --ui-spinner: var(--size-spinner-default);
3339
+ --ui-badge-padding-y: var(--size-badge-padding-y-default);
3340
+ --ui-badge-padding-x: var(--size-badge-padding-x-default);
3341
+ --ui-badge-font: var(--size-badge-font-default);
3342
+ --ui-gauge: var(--size-gauge-default);
3343
+ --ui-slider-thumb: var(--size-slider-thumb-default);
3344
+ --ui-otp: var(--size-otp-default);
3345
+ --ui-tree-row: var(--size-tree-row-default);
3346
+ --ui-textarea-padding: var(--size-textarea-padding-default);
3347
+ --ui-tooltip-padding-y: var(--size-tooltip-padding-y-default);
3348
+ --ui-tooltip-padding-x: var(--size-tooltip-padding-x-default);
3349
+ --control-height: var(--ui-control-height);
3350
+ --control-padding-x: var(--ui-control-padding);
3351
+ --control-choice-size: var(--ui-choice);
3352
+ --control-switch-width: var(--ui-switch-width);
3353
+ --control-switch-height: var(--ui-switch-height);
3354
+ --control-switch-thumb: var(--ui-switch-thumb);
3355
+ }
3356
+
3357
+ [data-ui-size='large'] {
3358
+ --ui-slider-track: var(--size-slider-track-large);
3359
+ --ui-file-padding: var(--size-file-padding-large);
3360
+ --ui-content-gap: var(--size-content-gap-large);
3361
+
3362
+ --ui-control-height: var(--size-control-height-large);
3363
+ --ui-control-padding: var(--size-control-padding-large);
3364
+ --ui-button-padding: var(--size-button-padding-large);
3365
+ --ui-font: var(--size-font-large);
3366
+ --ui-leading: var(--size-leading-large);
3367
+ --ui-choice: var(--size-choice-large);
3368
+ --ui-switch-width: var(--size-switch-width-large);
3369
+ --ui-switch-height: var(--size-switch-height-large);
3370
+ --ui-switch-thumb: var(--size-switch-thumb-large);
3371
+ --ui-icon: var(--size-icon-large);
3372
+ --ui-surface-padding: var(--size-surface-padding-large);
3373
+ --ui-card-padding: var(--size-card-padding-large);
3374
+ --ui-gap: var(--size-gap-large);
3375
+ --ui-row: var(--size-row-large);
3376
+ --ui-table-padding-y: var(--size-table-padding-y-large);
3377
+ --ui-table-padding-x: var(--size-table-padding-x-large);
3378
+ --ui-avatar: var(--size-avatar-large);
3379
+ --ui-spinner: var(--size-spinner-large);
3380
+ --ui-badge-padding-y: var(--size-badge-padding-y-large);
3381
+ --ui-badge-padding-x: var(--size-badge-padding-x-large);
3382
+ --ui-badge-font: var(--size-badge-font-large);
3383
+ --ui-gauge: var(--size-gauge-large);
3384
+ --ui-slider-thumb: var(--size-slider-thumb-large);
3385
+ --ui-otp: var(--size-otp-large);
3386
+ --ui-tree-row: var(--size-tree-row-large);
3387
+ --ui-textarea-padding: var(--size-textarea-padding-large);
3388
+ --ui-tooltip-padding-y: var(--size-tooltip-padding-y-large);
3389
+ --ui-tooltip-padding-x: var(--size-tooltip-padding-x-large);
3390
+ --control-height: var(--ui-control-height);
3391
+ --control-padding-x: var(--ui-control-padding);
3392
+ --control-choice-size: var(--ui-choice);
3393
+ --control-switch-width: var(--ui-switch-width);
3394
+ --control-switch-height: var(--ui-switch-height);
3395
+ --control-switch-thumb: var(--ui-switch-thumb);
3396
+ }
3397
+
3398
+ :where([data-ui-size], [data-ui-size] *).pui-button {
3399
+ height: var(--control-height);
3400
+ min-height: var(--control-height);
3401
+ padding-inline: var(--ui-button-padding);
3402
+ font-size: var(--ui-font);
3403
+ line-height: var(--ui-leading);
3404
+ }
3405
+ :where([data-ui-size], [data-ui-size] *).pui-button[data-size^='icon'] {
3406
+ inline-size: var(--control-height);
3407
+ block-size: var(--control-height);
3408
+ padding: 0;
3409
+ border-radius: var(--radius-full);
3410
+ }
3411
+ :where([data-ui-size], [data-ui-size] *):is(
3412
+ .pui-input,
3413
+ .pui-select-trigger,
3414
+ .pui-combobox-input,
3415
+ .pui-number-input,
3416
+ .pui-date-input,
3417
+ .pui-date-segment
3418
+ ) {
3419
+ font-size: var(--ui-font);
3420
+ line-height: var(--ui-leading);
3421
+ }
3422
+ :where([data-ui-size], [data-ui-size] *).pui-textarea {
3423
+ height: auto;
3424
+ min-height: calc(var(--control-height) * 2.5);
3425
+ padding-block: var(--ui-textarea-padding);
3426
+ }
3427
+ :where([data-ui-size], [data-ui-size] *):is(
3428
+ .pui-tabs-tab,
3429
+ .pui-toggle,
3430
+ .pui-menu-item,
3431
+ .pui-select-item,
3432
+ .pui-combobox-item,
3433
+ .pui-navigation-trigger,
3434
+ .pui-navigation-link
3435
+ ) {
3436
+ min-block-size: var(--ui-row);
3437
+ font-size: var(--ui-font);
3438
+ line-height: var(--ui-leading);
3439
+ }
3440
+ :where([data-ui-size], [data-ui-size] *):is(
3441
+ .pui-accordion-trigger,
3442
+ .pui-collapsible-trigger
3443
+ ) {
3444
+ min-block-size: var(--control-height);
3445
+ font-size: var(--ui-font);
3446
+ padding-block: var(--ui-gap);
3447
+ }
3448
+ :where([data-ui-size], [data-ui-size] *).pui-popover {
3449
+ padding: var(--ui-surface-padding);
3450
+ }
3451
+ :where([data-ui-size], [data-ui-size] *).pui-tooltip {
3452
+ padding: var(--ui-tooltip-padding-y) var(--ui-tooltip-padding-x);
3453
+ }
3454
+ :where([data-ui-size], [data-ui-size] *).pui-dialog-body {
3455
+ padding: var(--ui-card-padding);
3456
+ }
3457
+ :where([data-ui-size], [data-ui-size] *):is(
3458
+ .pui-dialog-header,
3459
+ .pui-dialog-footer
3460
+ ) {
3461
+ padding-inline: var(--ui-card-padding);
3462
+ }
3463
+ :where([data-ui-size], [data-ui-size] *).pui-dialog-header {
3464
+ padding-inline-end: calc(var(--ui-card-padding) + 48px);
3465
+ }
3466
+ :where([data-ui-size], [data-ui-size] *).pui-confirm-content
3467
+ .pui-dialog-header {
3468
+ padding-inline-end: var(--ui-card-padding);
3469
+ }
3470
+ :where([data-ui-size], [data-ui-size] *):is(
3471
+ .pui-panel-header,
3472
+ .pui-panel-body,
3473
+ .pui-panel-footer
3474
+ ) {
3475
+ padding-inline: var(--ui-card-padding);
3476
+ }
3477
+ :where([data-ui-size], [data-ui-size] *).pui-card {
3478
+ padding: var(--surface-padding, var(--ui-card-padding));
3479
+ gap: var(--ui-surface-padding);
3480
+ }
3481
+ :where([data-ui-size], [data-ui-size] *).pui-badge {
3482
+ padding: var(--ui-badge-padding-y) var(--ui-badge-padding-x);
3483
+ font-size: var(--ui-badge-font);
3484
+ }
3485
+ :where([data-ui-size], [data-ui-size] *).pui-avatar {
3486
+ width: var(--ui-avatar);
3487
+ height: var(--ui-avatar);
3488
+ }
3489
+ :where([data-ui-size], [data-ui-size] *).pui-spinner {
3490
+ width: var(--ui-spinner);
3491
+ height: var(--ui-spinner);
3492
+ }
3493
+ :where([data-ui-size], [data-ui-size] *).pui-table-cell {
3494
+ padding: var(--ui-table-padding-y) var(--ui-table-padding-x);
3495
+ }
3496
+ :where([data-ui-size], [data-ui-size] *).pui-table-caption {
3497
+ padding-inline: var(--ui-table-padding-x);
3498
+ }
3499
+ :where([data-ui-size], [data-ui-size] *).pui-list-item {
3500
+ padding: var(--ui-table-padding-y) var(--ui-surface-padding);
3501
+ gap: var(--ui-surface-padding);
3502
+ }
3503
+ :where([data-ui-size], [data-ui-size] *):is(.pui-message, .pui-empty-state) {
3504
+ padding: var(--ui-surface-padding);
3505
+ gap: var(--ui-content-gap);
3506
+ }
3507
+ :where([data-ui-size], [data-ui-size] *).pui-gauge-track {
3508
+ height: var(--ui-gauge);
3509
+ }
3510
+ :where([data-ui-size], [data-ui-size] *).pui-slider-thumb {
3511
+ width: var(--ui-slider-thumb);
3512
+ height: var(--ui-slider-thumb);
3513
+ }
3514
+ :where([data-ui-size], [data-ui-size] *).pui-otp-input {
3515
+ flex-basis: var(--ui-otp);
3516
+ width: var(--ui-otp);
3517
+ height: var(--ui-otp);
3518
+ }
3519
+ :where([data-ui-size], [data-ui-size] *).pui-file-dropzone {
3520
+ padding: var(--ui-file-padding);
3521
+ }
3522
+ :where([data-ui-size], [data-ui-size] *).pui-toast {
3523
+ padding: var(--ui-surface-padding);
3524
+ }
3525
+ :where([data-ui-size], [data-ui-size] *).pui-code-text {
3526
+ padding: var(--ui-surface-padding);
3527
+ }
3528
+ :where([data-ui-size], [data-ui-size] *).pui-skeleton[data-shape='text'] {
3529
+ height: var(--ui-leading);
3530
+ }
3531
+ :where([data-ui-size], [data-ui-size] *).pui-radio-indicator {
3532
+ width: calc(var(--control-choice-size) * 0.4);
3533
+ height: calc(var(--control-choice-size) * 0.4);
3534
+ }
3535
+
3536
+ /* Explicit legacy button dimensions stay supported. */
3537
+ .pui-button[data-size='xs'] {
3538
+ height: 24px;
3539
+ min-height: 24px;
3540
+ padding-inline: 8px;
3541
+ font-size: 12px;
3542
+ }
3543
+ /* Coarse pointers retain comfortable targets even with a compact visual scheme. */
3544
+ @media (max-width: 760px), (pointer: coarse) {
3545
+ [data-ui-size] {
3546
+ --control-height: max(44px, var(--ui-control-height));
3547
+ --ui-row: max(44px, var(--ui-control-height));
3548
+ }
3549
+ }
3550
+ @media (forced-colors: active) {
3551
+ :where([data-ui-size], [data-ui-size] *).pui-badge {
3552
+ border: 1px solid CanvasText;
3553
+ padding: calc(var(--ui-badge-padding-y) - 1px)
3554
+ calc(var(--ui-badge-padding-x) - 1px);
3555
+ }
3556
+ }
3557
+
3558
+ :where([data-ui-size], [data-ui-size] *):is(
3559
+ .pui-menu-item,
3560
+ .pui-select-item,
3561
+ .pui-combobox-item
3562
+ ) {
3563
+ box-sizing: border-box;
3564
+ padding-block: max(4px, calc((var(--ui-row) - var(--ui-leading)) / 2));
3565
+ }
3566
+ :where([data-ui-size], [data-ui-size] *):is(.pui-button, .pui-date-trigger)
3567
+ > svg {
3568
+ inline-size: var(--ui-icon);
3569
+ block-size: var(--ui-icon);
3570
+ }
3571
+ :where([data-ui-size], [data-ui-size] *).pui-date-popover {
3572
+ padding: var(--ui-surface-padding);
3573
+ }
3574
+ :where([data-ui-size], [data-ui-size] *).pui-empty {
3575
+ padding: var(--ui-card-padding);
3576
+ }
3577
+ :where([data-ui-size], [data-ui-size] *).pui-tree-item {
3578
+ font-size: var(--ui-font);
3579
+ }
3580
+ :where([data-ui-size], [data-ui-size] *).pui-field-item {
3581
+ min-block-size: var(--control-height);
3582
+ }
3583
+ @media (max-width: 760px), (pointer: coarse) {
3584
+ :where([data-ui-size], [data-ui-size] *).pui-field-item {
3585
+ min-block-size: 44px;
3586
+ }
3587
+ :where([data-ui-size], [data-ui-size] *).pui-slider-control {
3588
+ min-block-size: 44px;
3589
+ }
3590
+ }
3591
+
3592
+ :where([data-ui-size], [data-ui-size] *).pui-calendar-day {
3593
+ min-block-size: var(--ui-row);
3594
+ }
3595
+ :where([data-ui-size], [data-ui-size] *):is(
3596
+ .pui-date-trigger,
3597
+ .pui-calendar-nav
3598
+ ) {
3599
+ inline-size: calc(var(--control-height) - 4px);
3600
+ block-size: calc(var(--control-height) - 4px);
3601
+ min-inline-size: 0;
3602
+ }
3603
+ :where([data-ui-size], [data-ui-size] *).pui-slider-track:not(
3604
+ [data-orientation='vertical']
3605
+ ) {
3606
+ height: var(--ui-gauge);
3607
+ }
3608
+ :where(
3609
+ [data-ui-size],
3610
+ [data-ui-size] *
3611
+ ).pui-slider-track[data-orientation='vertical'] {
3612
+ width: var(--ui-slider-track);
3613
+ }
3614
+ :where([data-ui-size], [data-ui-size] *):is(.pui-link, .pui-breadcrumbs) {
3615
+ font-size: var(--ui-font);
3616
+ }
3617
+ :where([data-ui-size], [data-ui-size] *).pui-avatar[data-ui-size] {
3618
+ font-size: clamp(12px, calc(var(--ui-avatar) / 3), 16px);
3619
+ }
3620
+ @media (max-width: 760px), (pointer: coarse) {
3621
+ :where([data-ui-size], [data-ui-size] *):is(
3622
+ .pui-date-trigger,
3623
+ .pui-calendar-nav
3624
+ ) {
3625
+ inline-size: 44px;
3626
+ block-size: 44px;
3627
+ }
3628
+ }
3629
+
3630
+ /* Syntax tokens are semantic color roles; source text, type and geometry remain unchanged. */
3631
+ .pui-syntax {
3632
+ color: var(--syntax-plain);
3633
+ font: inherit;
3634
+ letter-spacing: inherit;
3635
+ }
3636
+ .pui-syntax [data-syntax] {
3637
+ font: inherit;
3638
+ letter-spacing: inherit;
3639
+ }
3640
+ .pui-syntax [data-syntax='plain'] {
3641
+ color: var(--syntax-plain);
3642
+ }
3643
+ .pui-syntax [data-syntax='comment'] {
3644
+ color: var(--syntax-comment);
3645
+ }
3646
+ .pui-syntax [data-syntax='keyword'] {
3647
+ color: var(--syntax-keyword);
3648
+ }
3649
+ .pui-syntax [data-syntax='string'] {
3650
+ color: var(--syntax-string);
3651
+ }
3652
+ .pui-syntax [data-syntax='number'] {
3653
+ color: var(--syntax-number);
3654
+ }
3655
+ .pui-syntax [data-syntax='function'] {
3656
+ color: var(--syntax-function);
3657
+ }
3658
+ .pui-syntax [data-syntax='tag'] {
3659
+ color: var(--syntax-tag);
3660
+ }
3661
+ .pui-syntax [data-syntax='attribute'] {
3662
+ color: var(--syntax-attribute);
3663
+ }
3664
+ .pui-syntax [data-syntax='punctuation'] {
3665
+ color: var(--syntax-punctuation);
3666
+ }
3667
+
3668
+ .pui-syntax-pre {
3669
+ box-sizing: border-box;
3670
+ min-inline-size: 0;
3671
+ margin: 0;
3672
+ padding: var(--ui-surface-padding, var(--space-4));
3673
+ background: var(--code-bg);
3674
+ border-radius: var(--radius-md);
3675
+ font: 400 13px/20px var(--font-code);
3676
+ /* Code shows the characters as typed, like the other code text: no === or => ligatures. */
3677
+ font-variant-ligatures: none;
3678
+ letter-spacing: 0;
3679
+ tab-size: 2;
3680
+ white-space: pre;
3681
+ }
3682
+ /* The visible box keeps its background and corners while long lines scroll inside it. */
3683
+ .pui-syntax-scroll {
3684
+ border-radius: var(--radius-md);
3685
+ background: var(--code-bg);
3686
+ overflow: hidden;
3687
+ }
3688
+ .pui-syntax-scroll .pui-syntax-pre {
3689
+ min-inline-size: max-content;
3690
+ border-radius: 0;
3691
+ background: none;
3692
+ }
3693
+ .pui-syntax-scroll .pui-syntax-pre[data-wrap] {
3694
+ min-inline-size: 0;
3695
+ }
3696
+ .pui-syntax-pre[data-wrap] {
3697
+ white-space: pre-wrap;
3698
+ overflow-wrap: anywhere;
3699
+ }
3700
+ .pui-markdown {
3701
+ min-inline-size: 0;
3702
+ overflow-wrap: anywhere;
3703
+ }
3704
+ .pui-markdown > :first-child {
3705
+ margin-block-start: 0;
3706
+ }
3707
+ .pui-markdown > :last-child {
3708
+ margin-block-end: 0;
3709
+ }
3710
+ .pui-markdown .pui-code-block {
3711
+ max-inline-size: 100%;
3712
+ margin-block: var(--space-4);
3713
+ }
3714
+ .pui-markdown img {
3715
+ display: block;
3716
+ max-inline-size: 100%;
3717
+ block-size: auto;
3718
+ border-radius: var(--radius-md);
3719
+ }
3720
+ .pui-markdown blockquote {
3721
+ margin-inline: 0;
3722
+ padding-inline-start: var(--space-4);
3723
+ border-inline-start: 2px solid var(--line);
3724
+ color: var(--ink-body);
3725
+ }
3726
+ .pui-markdown a {
3727
+ color: var(--ink);
3728
+ text-decoration: underline;
3729
+ text-underline-offset: 3px;
3730
+ }
3731
+ .pui-markdown a:focus-visible {
3732
+ outline: 2px solid var(--interaction-focus);
3733
+ outline-offset: 2px;
3734
+ }
3735
+ .pui-markdown .contains-task-list {
3736
+ list-style: none;
3737
+ padding-inline-start: 0;
3738
+ }
3739
+ .pui-markdown .task-list-item {
3740
+ display: list-item;
3741
+ }
3742
+ .pui-markdown .task-list-item input {
3743
+ margin-inline-end: var(--space-2);
3744
+ accent-color: var(--ink);
3745
+ }
3746
+ .pui-markdown-inline-code {
3747
+ padding: 2px 4px;
3748
+ border-radius: 4px;
3749
+ background: var(--code-bg);
3750
+ font: 400 13px/20px var(--font-code);
3751
+ letter-spacing: 0;
3752
+ }
3753
+ .pui-markdown .pui-table {
3754
+ min-inline-size: 480px;
3755
+ }
3756
+ @media (forced-colors: active) {
3757
+ .pui-syntax,
3758
+ .pui-syntax [data-syntax] {
3759
+ color: CanvasText;
3760
+ }
3761
+ }
3762
+
3763
+ /* Touch feedback is each control's own hover and pressed layer, drawn in its own
3764
+ shape. The browser's tap highlight is a rectangle over the box, so it is off. */
3765
+ :where(
3766
+ .pui-button,
3767
+ .pui-tabs-tab,
3768
+ .pui-disclosure-trigger,
3769
+ .pui-accordion-trigger,
3770
+ .pui-collapsible-trigger,
3771
+ .pui-app-shell-link,
3772
+ .pui-tree-item,
3773
+ .pui-tree-toggle,
3774
+ .pui-chart-legend-button,
3775
+ .pui-checkbox,
3776
+ .pui-radio,
3777
+ .pui-switch,
3778
+ .pui-choice-label,
3779
+ .pui-select-trigger,
3780
+ .pui-select-item,
3781
+ .pui-combobox-item,
3782
+ .pui-combobox-action,
3783
+ .pui-combobox-chip-remove,
3784
+ .pui-menu-item,
3785
+ .pui-navigation-trigger,
3786
+ .pui-navigation-link,
3787
+ .pui-link,
3788
+ .pui-breadcrumb-item a,
3789
+ .pui-calendar-day,
3790
+ .pui-calendar-nav,
3791
+ .pui-date-trigger,
3792
+ .pui-file-trigger,
3793
+ .pui-number-step,
3794
+ .pui-slider-control,
3795
+ .pui-toast-action,
3796
+ .pui-toast-close
3797
+ ) {
3798
+ -webkit-tap-highlight-color: transparent;
3799
+ }