@lincyaw/design 1.0.0-rc.0 → 1.0.0-rc.2

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.
@@ -1,3 +1,34 @@
1
+ .pm-ui,
2
+ [data-density='regular'] {
3
+ --pm-ui-control-height: var(--pm-control-height);
4
+ --pm-ui-control-font: var(--pm-text-md);
5
+ --pm-ui-control-padding-block: var(--pm-space-1);
6
+ --pm-ui-control-padding-inline: var(--pm-space-3);
7
+ --pm-ui-control-radius: var(--pm-radius-control);
8
+ --pm-ui-textarea-height: calc(var(--pm-size-row) * 2);
9
+ }
10
+
11
+ /* The legacy small flag is the public compact density, never a private geometry. */
12
+ .pm-ui-button--small,
13
+ .pm-ui-icon-button--small,
14
+ [data-density='compact'] {
15
+ --pm-ui-control-height: var(--pm-size-tool);
16
+ --pm-ui-control-font: var(--pm-text-sm);
17
+ --pm-ui-control-padding-block: var(--pm-space-px);
18
+ --pm-ui-control-padding-inline: var(--pm-space-2);
19
+ --pm-ui-control-radius: var(--pm-radius-small);
20
+ --pm-ui-textarea-height: var(--pm-narration-editor-compact-height);
21
+ }
22
+
23
+ [data-density='touch'] {
24
+ --pm-ui-control-height: var(--pm-control-hit-area);
25
+ --pm-ui-control-font: var(--pm-text-lg);
26
+ --pm-ui-control-padding-block: var(--pm-space-2);
27
+ --pm-ui-control-padding-inline: var(--pm-space-3);
28
+ --pm-ui-control-radius: var(--pm-radius-control);
29
+ --pm-ui-textarea-height: calc(var(--pm-size-row) * 2);
30
+ }
31
+
1
32
  .pm-ui {
2
33
  color: var(--pm-color-ink);
3
34
  font-family: var(--pm-font-sans);
@@ -5,62 +36,255 @@
5
36
  line-height: var(--pm-leading-ui);
6
37
  }
7
38
 
39
+ .pm-ui-brand-mark {
40
+ display: inline-block;
41
+ flex: none;
42
+ width: var(--pm-size-logo);
43
+ height: var(--pm-size-logo);
44
+ vertical-align: middle;
45
+ }
46
+
47
+ /* The mascot: one frame of its sprite sheet, chosen by the player through --pm-mascot-x and --pm-mascot-y. */
48
+ .pm-ui-mascot {
49
+ display: inline-block;
50
+ flex: none;
51
+ width: var(--pm-size-mascot);
52
+ aspect-ratio: 4 / 3;
53
+ background-image: var(--pm-mascot-sheet);
54
+ background-repeat: no-repeat;
55
+ background-size: calc(var(--pm-mascot-columns) * 100%) calc(var(--pm-mascot-rows) * 100%);
56
+ background-position: var(--pm-mascot-x) var(--pm-mascot-y);
57
+ pointer-events: none;
58
+ }
59
+ .pm-ui-mascot--sm { width: var(--pm-size-mascot-sm); }
60
+ :root.dark .pm-ui-mascot { background-image: var(--pm-mascot-sheet-dark); }
61
+
62
+ .pm-ui-appbar {
63
+ box-sizing: border-box;
64
+ min-height: var(--pm-appbar-height);
65
+ border-block-end: var(--pm-size-hairline) solid var(--pm-color-line);
66
+ background: var(--pm-color-chrome);
67
+ color: var(--pm-color-ink);
68
+ font-family: var(--pm-font-sans);
69
+ font-size: var(--pm-text-md);
70
+ line-height: var(--pm-leading-ui);
71
+ }
72
+
73
+ .pm-ui-appbar__context {
74
+ padding-inline-start: var(--pm-space-3);
75
+ border-inline-start: var(--pm-size-hairline) solid var(--pm-color-line);
76
+ color: var(--pm-color-muted);
77
+ font-size: var(--pm-text-sm);
78
+ line-height: var(--pm-leading-ui);
79
+ }
80
+
81
+ .pm-ui-toolbar {
82
+ box-sizing: border-box;
83
+ min-height: var(--pm-toolbar-height);
84
+ color: var(--pm-color-ink);
85
+ font-family: var(--pm-font-sans);
86
+ font-size: var(--pm-text-sm);
87
+ line-height: var(--pm-leading-ui);
88
+ }
89
+
90
+ .pm-ui-toolbar__group {
91
+ display: inline-flex;
92
+ align-items: center;
93
+ gap: var(--pm-space-1);
94
+ }
95
+
96
+ .pm-ui-toolbar__separator {
97
+ flex: none;
98
+ align-self: center;
99
+ width: 0;
100
+ height: var(--pm-size-divider);
101
+ margin-inline: var(--pm-space-2);
102
+ border: 0;
103
+ border-inline-start: var(--pm-size-hairline) solid var(--pm-color-line);
104
+ }
105
+
106
+ /* Shared application surfaces; consumers own column placement and responsive layout. */
107
+ .pm-ui-sidebar {
108
+ box-sizing: border-box;
109
+ padding: var(--pm-space-3);
110
+ border-inline-end: var(--pm-size-hairline) solid var(--pm-color-line);
111
+ background: var(--pm-color-chrome);
112
+ color: var(--pm-color-ink);
113
+ }
114
+
115
+ .pm-ui-sidebar__label {
116
+ margin: var(--pm-space-5) var(--pm-space-3) var(--pm-space-2);
117
+ color: var(--pm-color-muted);
118
+ font-size: var(--pm-text-xs);
119
+ font-weight: var(--pm-weight-medium);
120
+ }
121
+
122
+ .pm-ui-sidebar__item {
123
+ display: flex;
124
+ align-items: center;
125
+ gap: var(--pm-space-3);
126
+ min-width: 0;
127
+ min-height: var(--pm-control-height);
128
+ padding: var(--pm-space-1) var(--pm-space-3);
129
+ border: 0;
130
+ border-radius: var(--pm-radius-small);
131
+ background: transparent;
132
+ color: var(--pm-color-muted);
133
+ font-family: var(--pm-font-sans);
134
+ font-size: var(--pm-text-sm);
135
+ font-weight: var(--pm-weight-medium);
136
+ line-height: var(--pm-leading-ui);
137
+ text-align: start;
138
+ text-decoration: none;
139
+ overflow-wrap: anywhere;
140
+ cursor: pointer;
141
+ }
142
+
143
+ .pm-ui-sidebar__item:hover { background: var(--pm-color-hover); color: var(--pm-color-ink); }
144
+ .pm-ui-sidebar__item:active { background: var(--pm-color-pressed); }
145
+ .pm-ui-sidebar__item[aria-current='page'] { background: var(--pm-color-selected); color: var(--pm-color-accent); }
146
+ .pm-ui-sidebar__item:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: var(--pm-space-px); }
147
+ .pm-ui-sidebar__footer { padding: var(--pm-space-3); border-block-start: var(--pm-size-hairline) solid var(--pm-color-line); color: var(--pm-color-muted); font-size: var(--pm-text-xs); overflow-wrap: anywhere; }
148
+ .pm-ui-page-heading { margin-block-end: var(--pm-space-2); }
149
+ .pm-ui-page-heading__eyebrow { margin: 0 0 var(--pm-space-2); color: var(--pm-color-muted); font-size: var(--pm-text-xs); font-weight: var(--pm-weight-medium); }
150
+ .pm-ui-page-heading__title { margin: 0; color: var(--pm-color-ink); font-family: var(--pm-font-sans); font-size: var(--pm-text-page-title); font-weight: var(--pm-weight-semibold); line-height: var(--pm-leading-tight); }
151
+ .pm-ui-page-heading__description { margin: var(--pm-space-2) 0 0; max-width: var(--pm-site-reading-width); color: var(--pm-color-muted); font-size: var(--pm-text-md); line-height: var(--pm-leading-ui); }
152
+ .pm-ui-document-list { margin: 0; padding: 0; border: var(--pm-size-hairline) solid var(--pm-color-line); border-radius: var(--pm-radius-card); background: var(--pm-color-surface); list-style: none; overflow: hidden; }
153
+ .pm-ui-document-list__row { display: flex; align-items: center; gap: var(--pm-space-3); min-width: 0; padding: var(--pm-space-4); border-block-end: var(--pm-size-hairline) solid var(--pm-color-line); }
154
+ .pm-ui-document-list__row:last-child { border-block-end: 0; }
155
+ .pm-ui-document-list__row:hover { background: var(--pm-color-hover); }
156
+ .pm-ui-document-list__row:focus-within { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: calc(-1 * var(--pm-space-px)); }
157
+ .pm-ui-document-list__icon { display: flex; flex: none; align-items: center; justify-content: center; width: var(--pm-size-row); height: var(--pm-size-row); border: var(--pm-size-hairline) solid var(--pm-color-line); border-radius: var(--pm-radius-control); background: var(--pm-color-chrome); color: var(--pm-color-accent); }
158
+ .pm-ui-document-list__body { display: grid; flex: 1; min-width: 0; gap: var(--pm-space-1); margin: 0; padding: 0; border: 0; background: transparent; color: var(--pm-color-ink); font: inherit; text-align: start; text-decoration: none; overflow-wrap: anywhere; cursor: pointer; }
159
+ .pm-ui-document-list__body:focus-visible { outline: none; }
160
+ .pm-ui-document-list__title { font-family: var(--pm-font-sans); font-size: var(--pm-text-md); font-weight: var(--pm-weight-medium); line-height: var(--pm-leading-ui); }
161
+ .pm-ui-document-list__meta { color: var(--pm-color-muted); font-size: var(--pm-text-xs); line-height: var(--pm-leading-ui); }
162
+ .pm-ui-document-list__actions { display: flex; flex: none; align-items: center; gap: var(--pm-space-2); }
163
+ .pm-ui-section-card { padding: var(--pm-space-5); border: var(--pm-size-hairline) solid var(--pm-color-line); border-radius: var(--pm-radius-card); background: var(--pm-color-surface); color: var(--pm-color-ink); }
164
+ .pm-ui-section-card__heading { margin: 0; color: var(--pm-color-ink); font-family: var(--pm-font-sans); font-size: var(--pm-text-lg); font-weight: var(--pm-weight-semibold); line-height: var(--pm-leading-tight); }
165
+ .pm-ui-section-card__description { margin: var(--pm-space-2) 0 0; color: var(--pm-color-muted); font-size: var(--pm-text-sm); line-height: var(--pm-leading-ui); }
166
+
167
+ .pm-ui-choice-select__trigger {
168
+ box-sizing: border-box;
169
+ display: flex;
170
+ align-items: center;
171
+ gap: var(--pm-space-2);
172
+ width: 100%;
173
+ min-width: 0;
174
+ min-height: var(--pm-ui-control-height, var(--pm-control-height));
175
+ padding: var(--pm-ui-control-padding-block, var(--pm-space-1)) var(--pm-ui-control-padding-inline, var(--pm-space-3));
176
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
177
+ border-radius: var(--pm-ui-control-radius, var(--pm-radius-control));
178
+ background: var(--pm-color-surface);
179
+ color: var(--pm-color-ink);
180
+ font-family: var(--pm-font-sans);
181
+ font-size: var(--pm-ui-control-font, var(--pm-text-md));
182
+ line-height: var(--pm-leading-ui);
183
+ text-align: start;
184
+ cursor: pointer;
185
+ }
186
+ .pm-ui-choice-select__trigger:hover:not(:disabled) { background: var(--pm-color-hover); border-color: var(--pm-color-line-strong); }
187
+ .pm-ui-choice-select__trigger:active:not(:disabled) { background: var(--pm-color-pressed); }
188
+ .pm-ui-choice-select__trigger:is(:focus-visible, [data-state='open']) { border-color: var(--pm-color-accent); outline: 0; box-shadow: var(--pm-shadow-control-focus); }
189
+ .pm-ui-choice-select__trigger[aria-invalid='true'] { border-color: var(--pm-color-danger); }
190
+ .pm-ui-choice-select__trigger[aria-invalid='true']:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: var(--pm-space-px); }
191
+ .pm-ui-choice-select__trigger:disabled { opacity: var(--pm-opacity-disabled); cursor: not-allowed; }
192
+ .pm-ui-choice-select__trigger[data-placeholder] { color: var(--pm-color-muted); }
193
+ .pm-ui-choice-select__value { flex: 1; min-width: 0; overflow-wrap: anywhere; }
194
+ .pm-ui-choice-select__menu { min-width: min(var(--radix-dropdown-menu-trigger-width), calc(100vw - var(--pm-space-8))); max-width: min(var(--pm-popover-max-width), calc(100vw - var(--pm-space-8))); }
195
+ .pm-ui-choice-select__option[data-state='checked'] { background: var(--pm-color-selected); color: var(--pm-color-accent); }
196
+ .pm-ui-choice-select__text { display: grid; flex: 1; min-width: 0; gap: var(--pm-space-1); overflow-wrap: anywhere; }
197
+ .pm-ui-choice-select__description { color: var(--pm-color-muted); font-size: var(--pm-text-xs); }
198
+ .pm-ui-choice-select__check { display: flex; flex: none; width: var(--pm-size-icon); }
199
+ .pm-ui-choice-select__native { position: absolute; width: var(--pm-size-hairline); height: var(--pm-size-hairline); overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
200
+ .pm-ui-workspace-switcher { box-sizing: border-box; display: flex; align-items: center; gap: var(--pm-space-3); width: 100%; min-width: 0; min-height: calc(var(--pm-control-height) + var(--pm-space-4)); padding: var(--pm-space-2); border: var(--pm-size-hairline) solid transparent; border-radius: var(--pm-radius-control); background: transparent; color: var(--pm-color-ink); font-family: var(--pm-font-sans); font-size: var(--pm-text-md); line-height: var(--pm-leading-ui); text-align: start; cursor: pointer; }
201
+ .pm-ui-workspace-switcher:hover:not(:disabled) { border-color: var(--pm-color-line); background: var(--pm-color-surface); }
202
+ .pm-ui-workspace-switcher[data-state='open'] { border-color: var(--pm-color-accent-line); background: var(--pm-color-selected); }
203
+ .pm-ui-workspace-switcher:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: var(--pm-space-px); }
204
+ .pm-ui-workspace-switcher:disabled { opacity: var(--pm-opacity-disabled); cursor: not-allowed; }
205
+ .pm-ui-workspace-switcher__mark { display: flex; flex: none; align-items: center; justify-content: center; width: var(--pm-size-row); height: var(--pm-size-row); border-radius: var(--pm-radius-control); background: var(--pm-color-accent-soft); color: var(--pm-color-accent); font-size: var(--pm-text-lg); font-weight: var(--pm-weight-semibold); }
206
+ .pm-ui-workspace-switcher__text { display: grid; flex: 1; min-width: 0; overflow-wrap: anywhere; }
207
+ .pm-ui-workspace-switcher__name { font-size: var(--pm-text-md); font-weight: var(--pm-weight-semibold); }
208
+ .pm-ui-workspace-switcher__description { color: var(--pm-color-muted); font-size: var(--pm-text-xs); }
209
+ .pm-ui-workspace-switcher__panel { width: min(var(--pm-comment-width), calc(100vw - var(--pm-space-8))); }
210
+ .pm-ui-workspace-switcher__footer { display: grid; margin-block-start: var(--pm-space-3); padding-block-start: var(--pm-space-2); border-block-start: var(--pm-size-hairline) solid var(--pm-color-line); }
211
+
8
212
  .pm-ui-icon {
213
+ width: var(--pm-size-icon);
214
+ height: var(--pm-size-icon);
9
215
  flex: none;
10
216
  vertical-align: middle;
11
217
  }
12
218
 
219
+ .pm-ui-icon[data-size='small'] {
220
+ width: var(--pm-size-icon-sm);
221
+ height: var(--pm-size-icon-sm);
222
+ }
223
+
224
+ .pm-ui-icon[data-size='large'] {
225
+ width: var(--pm-size-icon-lg);
226
+ height: var(--pm-size-icon-lg);
227
+ }
228
+
13
229
  .pm-ui-button {
14
230
  box-sizing: border-box;
231
+ position: relative;
15
232
  display: inline-flex;
16
233
  align-items: center;
17
234
  justify-content: center;
18
235
  gap: var(--pm-space-2);
19
- min-height: 2rem;
236
+ min-height: var(--pm-ui-control-height, var(--pm-control-height));
20
237
  margin: 0;
21
- padding: 0.3125rem 0.75rem;
22
- border: 1px solid var(--pm-color-line);
23
- border-radius: var(--pm-radius-control);
24
- background: var(--pm-color-surface);
238
+ padding: var(--pm-ui-control-padding-block, var(--pm-space-1)) var(--pm-ui-control-padding-inline, var(--pm-space-3));
239
+ border: var(--pm-size-hairline) solid var(--pm-color-line-strong);
240
+ border-radius: var(--pm-ui-control-radius, var(--pm-radius-control));
241
+ background: var(--pm-color-chrome);
25
242
  color: var(--pm-color-ink);
26
243
  font-family: var(--pm-font-sans);
27
- font-size: var(--pm-text-md);
28
- font-weight: 500;
29
- line-height: 1.4;
244
+ font-size: var(--pm-ui-control-font, var(--pm-text-md));
245
+ font-weight: var(--pm-weight-medium);
246
+ line-height: var(--pm-leading-ui);
30
247
  text-align: center;
31
248
  text-decoration: none;
32
- white-space: nowrap;
249
+ white-space: normal;
33
250
  cursor: pointer;
34
251
  transition: background-color var(--pm-duration-fast) var(--pm-ease), border-color var(--pm-duration-fast) var(--pm-ease), color var(--pm-duration-fast) var(--pm-ease);
35
252
  }
36
253
 
37
- .pm-ui-button:hover {
38
- border-color: var(--pm-color-line-strong);
254
+ .pm-ui-button:hover:not(:disabled):not([aria-disabled='true']) {
39
255
  background: var(--pm-color-sunk);
40
256
  }
41
257
 
258
+ .pm-ui-button:active:not(:disabled):not([aria-disabled='true']) {
259
+ background: var(--pm-color-hover);
260
+ }
261
+
42
262
  .pm-ui-button--primary {
43
263
  border-color: var(--pm-color-ink);
44
264
  background: var(--pm-color-ink);
45
265
  color: var(--pm-color-bg);
46
266
  }
47
267
 
48
- .pm-ui-button--primary:hover {
49
- border-color: var(--pm-color-ink);
50
- background: color-mix(in srgb, var(--pm-color-ink) 86%, var(--pm-color-bg));
268
+ .pm-ui-button--primary:hover:not(:disabled):not([aria-disabled='true']) {
269
+ background: var(--pm-color-primary-hover);
270
+ }
271
+
272
+ .pm-ui-button--primary:active:not(:disabled):not([aria-disabled='true']) {
273
+ background: var(--pm-color-primary-pressed);
51
274
  }
52
275
 
53
- .pm-ui-button--accent,
54
- .pm-ui-button[aria-pressed='true'] {
276
+ .pm-ui-button--accent {
55
277
  border-color: var(--pm-color-accent);
56
278
  background: var(--pm-color-accent);
57
279
  color: var(--pm-color-on-accent);
58
280
  }
59
281
 
60
- .pm-ui-button--accent:hover,
61
- .pm-ui-button[aria-pressed='true']:hover {
62
- border-color: var(--pm-color-accent);
63
- background: color-mix(in srgb, var(--pm-color-accent) 88%, var(--pm-color-ink));
282
+ .pm-ui-button--accent:hover:not(:disabled):not([aria-disabled='true']) {
283
+ background: var(--pm-color-accent-hover);
284
+ }
285
+
286
+ .pm-ui-button--accent:active:not(:disabled):not([aria-disabled='true']) {
287
+ background: var(--pm-color-accent-pressed);
64
288
  }
65
289
 
66
290
  .pm-ui-button--ghost {
@@ -68,78 +292,145 @@
68
292
  background: transparent;
69
293
  }
70
294
 
71
- .pm-ui-button--ghost:hover {
72
- border-color: transparent;
295
+ .pm-ui-button[aria-pressed='true']:not(.pm-ui-button--accent) {
296
+ border-color: var(--pm-color-accent);
297
+ background: var(--pm-color-selected);
298
+ color: var(--pm-color-accent);
73
299
  }
74
300
 
75
301
  .pm-ui-button--danger {
302
+ border-color: transparent;
303
+ background: var(--pm-color-danger-soft);
76
304
  color: var(--pm-color-danger);
77
305
  }
78
306
 
79
- .pm-ui-button--danger:hover {
80
- border-color: var(--pm-color-danger);
307
+ .pm-ui-button--danger:hover:not(:disabled):not([aria-disabled='true']) {
81
308
  background: var(--pm-color-danger-soft);
309
+ box-shadow: inset 0 0 0 var(--pm-size-hairline) var(--pm-color-danger);
82
310
  }
83
311
 
84
- .pm-ui-button--small {
85
- min-height: 1.625rem;
86
- padding: 0.0625rem 0.625rem;
87
- border-radius: var(--pm-radius-small);
88
- font-size: var(--pm-text-sm);
312
+ .pm-ui-button--danger:active:not(:disabled):not([aria-disabled='true']) {
313
+ background: var(--pm-color-danger-soft);
314
+ box-shadow: inset 0 0 0 var(--pm-size-stroke) var(--pm-color-danger);
89
315
  }
90
316
 
91
- .pm-ui-button:disabled,
92
- .pm-ui-button[aria-disabled='true'] {
93
- opacity: 0.55;
94
- cursor: not-allowed;
317
+ .pm-ui-button__content {
318
+ display: inline-flex;
319
+ align-items: center;
320
+ justify-content: center;
321
+ gap: var(--pm-space-2);
322
+ min-width: 0;
323
+ }
324
+
325
+ .pm-ui-button__icon {
326
+ display: inline-flex;
327
+ flex: none;
328
+ align-items: center;
329
+ justify-content: center;
330
+ width: var(--pm-size-icon);
331
+ height: var(--pm-size-icon);
332
+ }
333
+
334
+ /* Balance the reserved spinner slot so a text-only action stays centered in
335
+ both idle and busy states, without changing its width when loading starts. */
336
+ .pm-ui-button:has(> .pm-ui-button__content--loading-text) {
337
+ padding-inline: var(--pm-space-1);
338
+ }
339
+
340
+ .pm-ui-button__content--loading-text {
341
+ gap: var(--pm-space-1);
342
+ }
343
+
344
+ .pm-ui-button__content--loading-text::after {
345
+ content: '';
346
+ flex: none;
347
+ width: var(--pm-size-icon);
348
+ }
349
+
350
+ :is(.pm-ui-button, .pm-ui-icon-button)[aria-busy='true'] {
351
+ cursor: progress;
352
+ }
353
+
354
+ .pm-ui-loading {
355
+ animation: pm-ui-spin var(--pm-duration-spin) linear infinite;
356
+ }
357
+
358
+ @keyframes pm-ui-spin {
359
+ to { transform: rotate(1turn); }
95
360
  }
96
361
 
97
362
  .pm-ui-icon-button {
98
363
  box-sizing: border-box;
364
+ position: relative;
99
365
  display: inline-flex;
100
366
  flex: none;
101
367
  align-items: center;
102
368
  justify-content: center;
103
- width: 2.5rem;
104
- height: 2.5rem;
369
+ width: var(--pm-ui-control-height, var(--pm-control-height));
370
+ min-width: var(--pm-ui-control-height, var(--pm-control-height));
371
+ min-height: var(--pm-ui-control-height, var(--pm-control-height));
105
372
  margin: 0;
106
- padding: 0;
107
- border: 0;
108
- border-radius: var(--pm-radius-control);
373
+ padding: var(--pm-space-1);
374
+ border: var(--pm-size-hairline) solid transparent;
375
+ border-radius: var(--pm-ui-control-radius, var(--pm-radius-control));
109
376
  background: transparent;
110
377
  color: var(--pm-color-muted);
111
378
  cursor: pointer;
112
379
  transition: background-color var(--pm-duration-fast) var(--pm-ease), color var(--pm-duration-fast) var(--pm-ease);
113
380
  }
114
381
 
115
- .pm-ui-icon-button--small {
116
- width: 1.75rem;
117
- height: 1.75rem;
118
- border-radius: var(--pm-radius-small);
382
+ .pm-ui-icon-button:hover:not(:disabled):not([aria-disabled='true']) {
383
+ background: var(--pm-color-hover);
384
+ color: var(--pm-color-ink);
119
385
  }
120
386
 
121
- .pm-ui-icon-button:hover {
122
- background: color-mix(in srgb, var(--pm-color-surface) 70%, transparent);
123
- color: var(--pm-color-ink);
387
+ .pm-ui-icon-button:active:not(:disabled):not([aria-disabled='true']) {
388
+ background: var(--pm-color-sunk);
124
389
  }
125
390
 
126
391
  .pm-ui-icon-button[aria-pressed='true'],
127
392
  .pm-ui-icon-button[aria-expanded='true'] {
128
- background: var(--pm-color-surface);
393
+ border-color: var(--pm-color-accent);
394
+ background: var(--pm-color-selected);
129
395
  color: var(--pm-color-accent);
130
- box-shadow: var(--pm-shadow);
131
396
  }
132
397
 
133
- :is(.pm-ui-button, .pm-ui-icon-button, .pm-ui-segmented__option, .pm-ui-tab, .pm-ui-menu__item, .pm-ui-link):focus-visible,
134
- :is(.pm-ui-input, .pm-ui-select, .pm-ui-textarea):focus-visible {
135
- outline: 2px solid var(--pm-color-accent);
136
- outline-offset: 2px;
398
+ :is(.pm-ui-button, .pm-ui-icon-button, .pm-ui-tab, .pm-ui-segmented__option, .pm-ui-menu__item):is(:disabled, [aria-disabled='true'], [data-disabled]):not([aria-busy='true']) {
399
+ opacity: var(--pm-opacity-disabled);
400
+ cursor: not-allowed;
401
+ }
402
+
403
+ .pm-ui-tooltip-layer {
404
+ pointer-events: none;
405
+ }
406
+
407
+ .pm-ui-tooltip {
408
+ z-index: var(--pm-z-tooltip);
409
+ display: flex;
410
+ align-items: center;
411
+ gap: var(--pm-space-2);
412
+ max-width: min(var(--pm-tooltip-width), var(--radix-tooltip-content-available-width, var(--pm-tooltip-width)));
413
+ padding: var(--pm-space-1) var(--pm-space-2);
414
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
415
+ border-radius: var(--pm-radius-small);
416
+ background: var(--pm-color-surface);
417
+ color: var(--pm-color-ink);
418
+ box-shadow: var(--pm-shadow-float);
419
+ font-family: var(--pm-font-sans);
420
+ font-size: var(--pm-text-xs);
421
+ line-height: var(--pm-leading-ui);
422
+ pointer-events: none;
423
+ }
424
+
425
+ :is(.pm-ui-button, .pm-ui-icon-button, .pm-ui-segmented__option, .pm-ui-tab, .pm-ui-menu__item, .pm-ui-link):focus-visible {
426
+ outline: var(--pm-space-px) solid var(--pm-color-accent);
427
+ outline-offset: var(--pm-space-px);
137
428
  }
138
429
 
139
430
  .pm-ui-link {
140
431
  color: var(--pm-color-accent);
141
432
  text-decoration: underline;
142
- text-underline-offset: 2px;
433
+ text-underline-offset: var(--pm-space-px);
143
434
  }
144
435
 
145
436
  .pm-ui-field {
@@ -148,121 +439,350 @@
148
439
  min-width: 0;
149
440
  }
150
441
 
442
+ .pm-ui-schema-form,
443
+ .pm-ui-schema-form__fields { display: grid; gap: var(--pm-space-3); min-width: 0; }
444
+ .pm-ui-schema-form__field { min-width: 0; }
445
+ .pm-ui-schema-form__item { display: flex; align-items: start; gap: var(--pm-space-2); min-width: 0; }
446
+ .pm-ui-schema-form__item > .pm-ui-schema-form__field { flex: 1; }
447
+ .pm-ui-schema-form__actions { display: flex; flex-wrap: wrap; gap: var(--pm-space-1); }
448
+
151
449
  .pm-ui-field__label {
152
450
  color: var(--pm-color-muted);
153
451
  font-size: var(--pm-text-sm);
154
- font-weight: 500;
452
+ font-weight: var(--pm-weight-medium);
155
453
  }
156
454
 
157
- .pm-ui-field--inline {
455
+ .pm-ui-field__hint,
456
+ .pm-ui-field__error {
457
+ margin: 0;
458
+ font-size: var(--pm-text-xs);
459
+ line-height: var(--pm-leading-ui);
460
+ overflow-wrap: anywhere;
461
+ }
462
+
463
+ .pm-ui-field__hint {
464
+ color: var(--pm-color-muted);
465
+ }
466
+
467
+ .pm-ui-field__error {
468
+ color: var(--pm-color-danger);
469
+ }
470
+
471
+ .pm-ui-search-list {
472
+ display: grid;
473
+ gap: var(--pm-space-2);
474
+ min-width: 0;
475
+ }
476
+
477
+ .pm-ui-search-list__heading {
158
478
  display: flex;
479
+ flex-wrap: wrap;
159
480
  align-items: center;
481
+ justify-content: space-between;
160
482
  gap: var(--pm-space-2);
483
+ color: var(--pm-color-muted);
484
+ font-size: var(--pm-text-sm);
485
+ font-weight: var(--pm-weight-medium);
161
486
  }
162
487
 
163
- .pm-ui-field--inline .pm-ui-field__label {
164
- color: var(--pm-color-ink);
165
- font-size: var(--pm-text-md);
488
+ .pm-ui-search-list__count {
489
+ display: inline-flex;
490
+ align-items: center;
491
+ gap: var(--pm-space-1);
492
+ font-size: var(--pm-text-xs);
493
+ font-weight: var(--pm-weight-regular);
166
494
  }
167
495
 
168
- .pm-ui-input,
169
- .pm-ui-select,
170
- .pm-ui-textarea {
496
+ .pm-ui-search-list__results {
171
497
  box-sizing: border-box;
498
+ display: grid;
499
+ grid-auto-rows: max-content;
500
+ align-content: start;
501
+ gap: var(--pm-space-px);
502
+ max-height: var(--pm-search-list-max-height);
172
503
  min-width: 0;
173
- min-height: 2rem;
174
- margin: 0;
175
- padding: 0.3125rem 0.625rem;
176
- border: 1px solid var(--pm-color-line-strong);
177
- border-radius: var(--pm-radius-control);
504
+ padding: var(--pm-space-px);
505
+ overflow: auto;
506
+ overscroll-behavior: contain;
507
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
508
+ border-radius: var(--pm-ui-control-radius, var(--pm-radius-control));
178
509
  background: var(--pm-color-surface);
179
- color: var(--pm-color-ink);
180
- font-family: var(--pm-font-sans);
181
- font-size: var(--pm-text-md);
182
- line-height: 1.4;
183
510
  }
184
511
 
185
- .pm-ui-input::placeholder,
186
- .pm-ui-textarea::placeholder {
187
- color: var(--pm-color-muted);
188
- opacity: 1;
512
+ .pm-ui-search-list__results[aria-invalid='true'] {
513
+ border-color: var(--pm-color-danger);
189
514
  }
190
515
 
191
- .pm-ui-input:hover,
192
- .pm-ui-select:hover,
193
- .pm-ui-textarea:hover {
194
- border-color: var(--pm-color-muted);
516
+ .pm-ui-search-list__option {
517
+ display: flex;
518
+ align-items: center;
519
+ gap: var(--pm-space-2);
520
+ min-width: 0;
521
+ min-height: var(--pm-ui-control-height, var(--pm-control-height));
522
+ height: auto;
523
+ margin: 0;
524
+ padding: var(--pm-ui-control-padding-block, var(--pm-space-1)) var(--pm-ui-control-padding-inline, var(--pm-space-3));
525
+ border: var(--pm-size-hairline) solid transparent;
526
+ /* Nested radius: the results frame's radius less its padding. */
527
+ border-radius: calc(var(--pm-ui-control-radius, var(--pm-radius-control)) - var(--pm-space-px));
528
+ background: transparent;
529
+ color: var(--pm-color-ink);
530
+ font-family: var(--pm-font-sans);
531
+ font-size: var(--pm-ui-control-font, var(--pm-text-md));
532
+ line-height: var(--pm-leading-ui);
533
+ text-align: start;
534
+ cursor: pointer;
195
535
  }
196
536
 
197
- .pm-ui-input:focus,
198
- .pm-ui-select:focus,
199
- .pm-ui-textarea:focus {
200
- border-color: var(--pm-color-accent);
537
+ .pm-ui-search-list__option:hover:not(:disabled) {
538
+ background: var(--pm-color-hover);
201
539
  }
202
540
 
203
- .pm-ui-textarea {
204
- resize: vertical;
541
+ .pm-ui-search-list__option:active:not(:disabled) {
542
+ background: var(--pm-color-sunk);
205
543
  }
206
544
 
207
- .pm-ui-checkbox {
208
- accent-color: var(--pm-color-accent);
545
+ .pm-ui-search-list__option[data-state='checked'] {
546
+ border-color: var(--pm-color-accent-line);
547
+ background: var(--pm-color-accent-soft);
209
548
  }
210
549
 
211
- .pm-ui-search {
212
- box-sizing: border-box;
213
- display: flex;
214
- align-items: center;
215
- gap: var(--pm-space-2);
216
- min-width: 0;
217
- padding: 0.4375rem 0.75rem;
218
- border: 1px solid var(--pm-color-line-strong);
219
- border-radius: var(--pm-radius-control);
220
- background: var(--pm-color-surface);
221
- color: var(--pm-color-muted);
550
+ .pm-ui-search-list__option:focus-visible {
551
+ border-color: var(--pm-color-accent);
552
+ outline: 0;
553
+ box-shadow: var(--pm-shadow-control-focus);
222
554
  }
223
555
 
224
- .pm-ui-search:focus-within {
225
- border-color: var(--pm-color-accent);
226
- outline: 2px solid var(--pm-color-accent);
227
- outline-offset: 2px;
556
+ .pm-ui-search-list__option:disabled {
557
+ opacity: var(--pm-opacity-disabled);
558
+ cursor: not-allowed;
228
559
  }
229
560
 
230
- .pm-ui-search > input {
561
+ .pm-ui-search-list__text {
562
+ display: grid;
231
563
  flex: 1;
232
564
  min-width: 0;
233
- margin: 0;
234
- padding: 0;
235
- border: 0;
236
- outline: 0;
237
- background: transparent;
238
- color: var(--pm-color-ink);
239
- font: inherit;
565
+ overflow-wrap: anywhere;
240
566
  }
241
567
 
242
- .pm-ui-search > input::placeholder {
568
+ .pm-ui-search-list__description {
243
569
  color: var(--pm-color-muted);
244
- opacity: 1;
570
+ font-size: var(--pm-text-xs);
245
571
  }
572
+ .pm-ui-search-list__label { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
246
573
 
247
- .pm-ui-kbd {
248
- padding: 0 0.3125rem;
249
- border: 1px solid var(--pm-color-line);
250
- border-radius: var(--pm-radius-chip);
574
+ .pm-ui-search-list__check {
575
+ display: inline-flex;
576
+ flex: none;
577
+ width: var(--pm-size-icon);
578
+ }
579
+
580
+ .pm-ui-search-list__empty {
581
+ margin: 0;
582
+ padding: var(--pm-space-3);
251
583
  color: var(--pm-color-muted);
252
- font-family: var(--pm-font-mono);
253
- font-size: var(--pm-text-xs);
254
- white-space: nowrap;
584
+ font-size: var(--pm-text-sm);
585
+ overflow-wrap: anywhere;
255
586
  }
256
587
 
257
- .pm-ui-card {
258
- box-sizing: border-box;
588
+ .pm-ui-field--inline {
589
+ display: flex;
590
+ flex-wrap: wrap;
591
+ align-items: center;
592
+ gap: var(--pm-space-2);
593
+ }
594
+
595
+ .pm-ui-field--inline .pm-ui-field__label {
596
+ color: var(--pm-color-ink);
597
+ font-size: var(--pm-ui-control-font, var(--pm-text-md));
598
+ }
599
+
600
+ .pm-ui-input,
601
+ .pm-ui-select,
602
+ .pm-ui-textarea,
603
+ .pm-ui-control,
604
+ .pm-ui-search {
605
+ box-sizing: border-box;
606
+ min-width: 0;
607
+ min-height: var(--pm-ui-control-height, var(--pm-control-height));
608
+ margin: 0;
609
+ padding: var(--pm-ui-control-padding-block, var(--pm-space-1)) var(--pm-ui-control-padding-inline, var(--pm-space-3));
610
+ border: var(--pm-size-hairline) solid var(--pm-color-line-strong);
611
+ border-radius: var(--pm-ui-control-radius, var(--pm-radius-control));
612
+ background: var(--pm-color-chrome);
613
+ color: var(--pm-color-ink);
614
+ font-family: var(--pm-font-sans);
615
+ font-size: var(--pm-ui-control-font, var(--pm-text-md));
616
+ line-height: var(--pm-leading-ui);
617
+ }
618
+
619
+ :is(.pm-ui-input, .pm-ui-textarea)::placeholder,
620
+ .pm-ui-search > input::placeholder {
621
+ color: var(--pm-color-muted);
622
+ opacity: 1;
623
+ }
624
+
625
+ :is(.pm-ui-input, .pm-ui-select, .pm-ui-textarea):focus,
626
+ :is(.pm-ui-control, .pm-ui-search):focus-within {
627
+ border-color: var(--pm-color-accent);
628
+ outline: 0;
629
+ box-shadow: var(--pm-shadow-control-focus);
630
+ }
631
+
632
+ :is(.pm-ui-input, .pm-ui-textarea)[readonly],
633
+ .pm-ui-control:has([readonly]) {
634
+ background: var(--pm-color-sunk);
635
+ }
636
+
637
+ :is(.pm-ui-input, .pm-ui-select, .pm-ui-textarea)[aria-invalid='true'],
638
+ .pm-ui-control:has([aria-invalid='true']) {
639
+ border-color: var(--pm-color-danger);
640
+ }
641
+
642
+ :is(.pm-ui-input, .pm-ui-select, .pm-ui-textarea)[aria-invalid='true']:focus,
643
+ .pm-ui-control:has([aria-invalid='true']):focus-within {
644
+ border-color: var(--pm-color-danger);
645
+ outline: var(--pm-space-px) solid var(--pm-color-accent);
646
+ outline-offset: var(--pm-space-px);
647
+ box-shadow: var(--pm-shadow-control-error-focus);
648
+ }
649
+
650
+ :is(.pm-ui-input, .pm-ui-select, .pm-ui-textarea):disabled,
651
+ .pm-ui-control:has(:disabled) {
652
+ opacity: var(--pm-opacity-disabled);
653
+ cursor: not-allowed;
654
+ }
655
+
656
+ .pm-ui-textarea {
657
+ width: 100%;
658
+ min-height: var(--pm-ui-textarea-height, calc(var(--pm-size-row) * 2));
659
+ resize: vertical;
660
+ }
661
+
662
+ .pm-ui-control,
663
+ .pm-ui-search {
664
+ display: flex;
665
+ align-items: center;
666
+ gap: var(--pm-space-2);
667
+ }
668
+
669
+ .pm-ui-control {
670
+ padding-block: 0;
671
+ }
672
+
673
+ .pm-ui-control > .pm-ui-input,
674
+ .pm-ui-search > input {
675
+ flex: 1;
676
+ width: 100%;
677
+ min-width: 0;
678
+ margin: 0;
679
+ padding-inline: 0;
680
+ border: 0;
681
+ border-radius: 0;
682
+ outline: 0;
683
+ background: transparent;
684
+ color: var(--pm-color-ink);
685
+ box-shadow: none;
686
+ font: inherit;
687
+ }
688
+
689
+ .pm-ui-control > .pm-ui-input {
690
+ min-height: calc(var(--pm-ui-control-height, var(--pm-control-height)) - var(--pm-size-hairline) * 2);
691
+ }
692
+
693
+ .pm-ui-control > .pm-ui-input:focus {
694
+ border: 0;
695
+ outline: 0;
696
+ box-shadow: none;
697
+ }
698
+
699
+ .pm-ui-control > .pm-ui-input:disabled {
700
+ opacity: 1;
701
+ }
702
+
703
+ .pm-ui-control__prefix,
704
+ .pm-ui-control__suffix {
705
+ display: inline-flex;
706
+ flex: none;
707
+ align-items: center;
708
+ gap: var(--pm-space-1);
709
+ color: var(--pm-color-muted);
710
+ font-size: var(--pm-text-sm);
711
+ }
712
+
713
+ :is(.pm-ui-input, .pm-ui-control)[data-width='number'] {
714
+ width: var(--pm-control-number-width);
715
+ min-width: var(--pm-control-number-width);
716
+ }
717
+
718
+ :is(.pm-ui-input, .pm-ui-control)[data-width='time'] {
719
+ width: var(--pm-control-time-width);
720
+ min-width: var(--pm-control-time-width);
721
+ }
722
+
723
+ .pm-ui-control > .pm-ui-input[data-width] {
724
+ width: 100%;
725
+ min-width: 0;
726
+ }
727
+
728
+ .pm-ui-media-clip-editor {
729
+ display: flex;
730
+ flex-direction: column;
731
+ gap: var(--pm-space-3);
732
+ min-width: 0;
733
+ padding: var(--pm-space-3);
734
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
735
+ border-radius: var(--pm-radius-control);
736
+ background: var(--pm-color-surface);
737
+ color: var(--pm-color-ink);
738
+ }
739
+ .pm-ui-media-clip-editor__heading,
740
+ .pm-ui-media-clip-editor__volume,
741
+ .pm-ui-media-clip-editor__actions {
742
+ display: flex;
743
+ flex-wrap: wrap;
744
+ align-items: center;
745
+ gap: var(--pm-space-2);
746
+ }
747
+ .pm-ui-media-clip-editor__heading { justify-content: space-between; }
748
+ .pm-ui-media-clip-editor__heading > h2 { margin: 0; font: inherit; font-size: var(--pm-text-sm); font-weight: var(--pm-weight-medium); }
749
+ .pm-ui-media-clip-editor__times { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: var(--pm-space-2); }
750
+ .pm-ui-media-clip-editor__volume > .pm-ui-range { flex: 1; min-width: var(--pm-control-number-width); }
751
+ .pm-ui-media-clip-editor__volume > output { font-variant-numeric: tabular-nums; }
752
+
753
+ .pm-ui-checkbox {
754
+ accent-color: var(--pm-color-accent);
755
+ }
756
+
757
+ .pm-ui-search {
758
+ color: var(--pm-color-muted);
759
+ }
760
+
761
+ .pm-ui-search > input {
762
+ min-height: 0;
763
+ padding-block: 0;
764
+ }
765
+
766
+ .pm-ui-kbd,
767
+ .pm-ui-shortcut {
768
+ padding: 0 var(--pm-space-1);
769
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
770
+ border-radius: var(--pm-radius-chip);
771
+ color: var(--pm-color-muted);
772
+ font-family: var(--pm-font-mono);
773
+ font-size: var(--pm-text-xs);
774
+ white-space: nowrap;
775
+ }
776
+
777
+ .pm-ui-card {
778
+ box-sizing: border-box;
259
779
  position: relative;
260
780
  display: flex;
261
781
  flex-direction: column;
262
782
  gap: var(--pm-space-3);
263
783
  min-width: 0;
264
784
  padding: 1.125rem;
265
- border: 1px solid var(--pm-color-line);
785
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
266
786
  border-radius: var(--pm-radius-card);
267
787
  background: var(--pm-color-surface);
268
788
  color: var(--pm-color-ink);
@@ -283,14 +803,24 @@
283
803
  }
284
804
 
285
805
  .pm-ui-card--interactive:hover,
286
- .pm-ui-card--dashed:hover {
806
+ .pm-ui-card--dashed:hover:not(:disabled) {
287
807
  border-color: var(--pm-color-accent);
288
808
  }
289
809
 
810
+ .pm-ui-card--dashed:active:not(:disabled) {
811
+ background: var(--pm-color-hover);
812
+ }
813
+
814
+ .pm-ui-card--dashed:disabled {
815
+ border-color: var(--pm-color-line);
816
+ opacity: var(--pm-opacity-disabled);
817
+ cursor: not-allowed;
818
+ }
819
+
290
820
  .pm-ui-card--interactive:focus-within,
291
821
  .pm-ui-card--dashed:focus-visible {
292
- outline: 2px solid var(--pm-color-accent);
293
- outline-offset: 2px;
822
+ outline: var(--pm-space-px) solid var(--pm-color-accent);
823
+ outline-offset: var(--pm-space-px);
294
824
  }
295
825
 
296
826
  .pm-ui-card__title {
@@ -298,7 +828,7 @@
298
828
  color: var(--pm-color-ink);
299
829
  font-family: var(--pm-font-serif);
300
830
  font-size: var(--pm-text-title);
301
- font-weight: 600;
831
+ font-weight: var(--pm-weight-semibold);
302
832
  line-height: 1.3;
303
833
  }
304
834
 
@@ -307,7 +837,7 @@
307
837
  color: var(--pm-color-muted);
308
838
  font-family: var(--pm-font-sans);
309
839
  font-size: var(--pm-text-sm);
310
- font-weight: 600;
840
+ font-weight: var(--pm-weight-semibold);
311
841
  letter-spacing: var(--pm-tracking-label);
312
842
  line-height: var(--pm-leading-ui);
313
843
  }
@@ -315,14 +845,15 @@
315
845
  .pm-ui-badges {
316
846
  display: flex;
317
847
  flex-wrap: wrap;
318
- gap: 0.375rem;
848
+ gap: calc(var(--pm-space-1) + var(--pm-space-px));
319
849
  }
320
850
 
321
851
  .pm-ui-badge {
852
+ width: fit-content;
322
853
  display: inline-flex;
323
854
  align-items: center;
324
855
  gap: var(--pm-space-1);
325
- padding: 0.125rem 0.5rem;
856
+ padding: var(--pm-space-px) var(--pm-space-2);
326
857
  border-radius: var(--pm-radius-chip);
327
858
  background: var(--pm-color-sunk);
328
859
  color: var(--pm-color-muted);
@@ -353,14 +884,14 @@
353
884
  }
354
885
 
355
886
  .pm-ui-badge--pill {
356
- padding: 0 0.5rem;
887
+ padding: 0 var(--pm-space-2);
357
888
  border-radius: var(--pm-radius-pill);
358
889
  font-family: var(--pm-font-sans);
359
- font-weight: 500;
890
+ font-weight: var(--pm-weight-medium);
360
891
  }
361
892
 
362
893
  .pm-ui-badge--outline {
363
- border: 1px solid var(--pm-color-line);
894
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
364
895
  background: transparent;
365
896
  color: var(--pm-color-ink);
366
897
  }
@@ -368,8 +899,8 @@
368
899
  .pm-ui-dot {
369
900
  display: inline-block;
370
901
  flex: none;
371
- width: 7px;
372
- height: 7px;
902
+ width: var(--pm-size-dot);
903
+ height: var(--pm-size-dot);
373
904
  border-radius: 50%;
374
905
  background: var(--pm-color-ok);
375
906
  }
@@ -385,64 +916,99 @@
385
916
  .pm-ui-segmented {
386
917
  display: inline-flex;
387
918
  flex: none;
388
- gap: 2px;
389
- padding: 3px;
919
+ flex-wrap: wrap;
920
+ gap: var(--pm-space-1);
921
+ min-width: 0;
922
+ padding: var(--pm-space-px);
390
923
  border-radius: var(--pm-radius-control);
391
924
  background: var(--pm-color-sunk);
392
925
  }
393
926
 
394
- .pm-ui-segmented__option {
927
+ .pm-ui-segmented__option,
928
+ .pm-ui-tab {
929
+ box-sizing: border-box;
930
+ display: inline-flex;
931
+ align-items: center;
932
+ justify-content: center;
933
+ gap: var(--pm-space-2);
934
+ min-height: var(--pm-ui-control-height, var(--pm-control-height));
395
935
  margin: 0;
396
- padding: calc(0.25rem - 1px) calc(0.625rem - 1px);
397
- border: 1px solid transparent;
398
- border-radius: var(--pm-radius-small);
936
+ padding: var(--pm-ui-control-padding-block, var(--pm-space-1)) var(--pm-ui-control-padding-inline, var(--pm-space-3));
937
+ border: var(--pm-size-hairline) solid transparent;
938
+ border-radius: var(--pm-ui-control-radius, var(--pm-radius-small));
399
939
  background: transparent;
400
940
  color: var(--pm-color-muted);
401
941
  font-family: var(--pm-font-sans);
402
- font-size: var(--pm-text-sm);
403
- line-height: 1.4;
942
+ font-size: var(--pm-ui-control-font, var(--pm-text-md));
943
+ line-height: var(--pm-leading-ui);
404
944
  cursor: pointer;
405
945
  }
406
946
 
407
- .pm-ui-segmented__option[aria-pressed='true'] {
408
- border-color: var(--pm-color-line-strong);
409
- background: var(--pm-color-surface);
947
+ :is(.pm-ui-segmented__option, .pm-ui-tab):hover:not(:disabled):not([data-disabled]) {
948
+ background: var(--pm-color-hover);
410
949
  color: var(--pm-color-ink);
411
- box-shadow: var(--pm-shadow);
950
+ }
951
+
952
+ :is(.pm-ui-segmented__option, .pm-ui-tab):active:not(:disabled):not([data-disabled]) {
953
+ background: var(--pm-color-pressed);
954
+ }
955
+
956
+ /* Nested radius: an option sits the frame's padding inside it. */
957
+ .pm-ui-segmented > .pm-ui-segmented__option {
958
+ border-radius: var(--pm-radius-control-inset);
959
+ }
960
+
961
+ .pm-ui-segmented__option[aria-pressed='true'],
962
+ .pm-ui-segmented__option[data-state='on'],
963
+ .pm-ui-segmented__option[data-state='checked'],
964
+ .pm-ui-segmented__option[aria-checked='true'] {
965
+ border-color: var(--pm-color-accent);
966
+ background: var(--pm-color-selected);
967
+ color: var(--pm-color-accent);
412
968
  }
413
969
 
414
970
  .pm-ui-tabs {
415
971
  display: flex;
416
972
  flex-wrap: wrap;
417
- gap: var(--pm-space-4);
418
- border-bottom: 1px solid var(--pm-color-line);
973
+ gap: var(--pm-space-1);
974
+ min-width: 0;
975
+ padding-block: var(--pm-space-1);
976
+ border-bottom: var(--pm-size-hairline) solid var(--pm-color-line);
419
977
  }
420
978
 
421
- .pm-ui-tab {
422
- margin: 0 0 -1px;
423
- padding: var(--pm-space-1) 0;
424
- border: 0;
425
- border-bottom: 2px solid transparent;
426
- background: transparent;
427
- color: var(--pm-color-muted);
428
- font-family: var(--pm-font-sans);
429
- font-size: var(--pm-text-md);
430
- cursor: pointer;
979
+ .pm-ui-tab[aria-selected='true'],
980
+ .pm-ui-tab[data-state='active'] {
981
+ border-color: var(--pm-color-accent);
982
+ background: var(--pm-color-accent-soft);
983
+ color: var(--pm-color-accent);
984
+ font-weight: var(--pm-weight-medium);
431
985
  }
432
986
 
433
- .pm-ui-tab[aria-selected='true'] {
434
- border-bottom-color: var(--pm-color-accent);
435
- color: var(--pm-color-ink);
436
- font-weight: 600;
987
+ .pm-ui-tab[data-icon-only='true'] {
988
+ min-width: var(--pm-ui-control-height, var(--pm-control-height));
989
+ padding-inline: var(--pm-space-1);
437
990
  }
438
991
 
439
- .pm-ui-tabpanel {
992
+ .pm-ui-tabpanel,
993
+ .pm-ui-tab-panel {
994
+ min-width: 0;
440
995
  padding-top: var(--pm-space-3);
441
996
  }
997
+ .pm-ui-tab-panel[data-keep-mounted][data-state='inactive'] { display: none; }
998
+ .pm-ui-tabs-root[data-variant='dock'] { display: flex; flex: 1; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; }
999
+ .pm-ui-tabs-root[data-variant='dock'] > .pm-ui-tabs { flex: none; padding-inline: var(--pm-space-2); background: var(--pm-color-chrome); }
1000
+ .pm-ui-tabs-root[data-variant='dock'] .pm-ui-tab { border-radius: 0; border-color: transparent; background: transparent; }
1001
+ .pm-ui-tabs-root[data-variant='dock'] .pm-ui-tab[data-state='active'] { border-bottom: var(--pm-size-stroke) solid var(--pm-color-accent); color: var(--pm-color-accent); }
1002
+ .pm-ui-tabs-root[data-variant='dock'] .pm-ui-tab:hover:not(:disabled) { background: var(--pm-color-hover); }
1003
+ .pm-ui-tabs-root[data-variant='dock'] .pm-ui-tab:active:not(:disabled) { background: var(--pm-color-pressed); }
1004
+ .pm-ui-tabs-root[data-variant='dock'] > .pm-ui-tab-panel { flex: 1; min-height: 0; overflow: auto; padding: var(--pm-space-3); }
1005
+ .pm-ui-toolbar-scroll { display: flex; gap: var(--pm-space-1); min-width: 0; overflow: auto; }
1006
+ .pm-ui-toolbar-scroll > * { flex: none; }
442
1007
 
443
- .pm-ui-tabpanel:focus-visible {
444
- outline: 2px solid var(--pm-color-accent);
445
- outline-offset: 2px;
1008
+ .pm-ui-tabpanel:focus-visible,
1009
+ .pm-ui-tab-panel:focus-visible {
1010
+ outline: var(--pm-space-px) solid var(--pm-color-accent);
1011
+ outline-offset: var(--pm-space-px);
446
1012
  }
447
1013
 
448
1014
  .pm-ui-anchor {
@@ -456,13 +1022,13 @@
456
1022
  .pm-ui-dialog,
457
1023
  .pm-ui-menu {
458
1024
  box-sizing: border-box;
459
- border: 1px solid var(--pm-color-line);
1025
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
460
1026
  background: var(--pm-color-surface);
461
1027
  color: var(--pm-color-ink);
462
1028
  box-shadow: var(--pm-shadow-float);
463
1029
  font-family: var(--pm-font-sans);
464
1030
  font-size: var(--pm-text-md);
465
- font-weight: 400;
1031
+ font-weight: var(--pm-weight-regular);
466
1032
  letter-spacing: normal;
467
1033
  line-height: var(--pm-leading-ui);
468
1034
  text-align: start;
@@ -473,8 +1039,8 @@
473
1039
  position: absolute;
474
1040
  z-index: var(--pm-z-popover);
475
1041
  width: max-content;
476
- min-width: min(18rem, calc(100vw - 2rem));
477
- max-width: min(32rem, calc(100vw - 2rem));
1042
+ min-width: min(var(--pm-popover-min-width), calc(100vw - var(--pm-space-8)));
1043
+ max-width: min(var(--pm-popover-max-width), calc(100vw - var(--pm-space-8)));
478
1044
  max-height: 70vh;
479
1045
  overflow: auto;
480
1046
  padding: var(--pm-space-3);
@@ -483,15 +1049,15 @@
483
1049
 
484
1050
  .pm-ui-drawer {
485
1051
  position: fixed;
486
- z-index: var(--pm-z-popover);
1052
+ z-index: var(--pm-z-dialog);
487
1053
  top: var(--pm-drawer-top, 0);
488
1054
  bottom: var(--pm-drawer-bottom, 0);
489
1055
  left: var(--pm-drawer-left, 0);
490
1056
  display: flex;
491
1057
  flex-direction: column;
492
- width: min(25rem, calc(100vw - var(--pm-drawer-left, 0px)));
1058
+ width: min(var(--pm-drawer-width), calc(100vw - var(--pm-drawer-left, 0rem)));
493
1059
  overflow: hidden;
494
- border-width: 0 1px 0 0;
1060
+ border-width: 0 var(--pm-size-hairline) 0 0;
495
1061
  }
496
1062
 
497
1063
  .pm-ui-drawer__body {
@@ -504,14 +1070,14 @@
504
1070
  .pm-ui-dialog {
505
1071
  position: fixed;
506
1072
  z-index: var(--pm-z-dialog);
507
- top: max(4vh, 3.5rem);
1073
+ top: max(var(--pm-space-4), env(safe-area-inset-top));
508
1074
  left: 50%;
509
1075
  display: flex;
510
1076
  flex-direction: column;
511
- width: min(40rem, calc(100vw - 2rem));
512
- max-height: calc(100vh - max(4vh, 3.5rem) - 2rem);
1077
+ width: min(var(--pm-dialog-width), calc(100vw - var(--pm-space-8)));
1078
+ max-height: calc(100dvh - var(--pm-space-8) - env(safe-area-inset-top) - env(safe-area-inset-bottom));
513
1079
  overflow: hidden;
514
- border-radius: var(--pm-radius-panel);
1080
+ border-radius: var(--pm-radius-control);
515
1081
  transform: translateX(-50%);
516
1082
  }
517
1083
 
@@ -522,7 +1088,7 @@
522
1088
  align-items: center;
523
1089
  gap: var(--pm-space-2);
524
1090
  padding: var(--pm-space-3) var(--pm-space-4);
525
- border-bottom: 1px solid var(--pm-color-line);
1091
+ border-bottom: var(--pm-size-hairline) solid var(--pm-color-line);
526
1092
  }
527
1093
 
528
1094
  .pm-ui-dialog__title,
@@ -534,7 +1100,7 @@
534
1100
  color: var(--pm-color-ink);
535
1101
  font-family: var(--pm-font-serif);
536
1102
  font-size: var(--pm-text-title);
537
- font-weight: 600;
1103
+ font-weight: var(--pm-weight-semibold);
538
1104
  letter-spacing: normal;
539
1105
  line-height: var(--pm-leading-tight);
540
1106
  }
@@ -550,7 +1116,7 @@
550
1116
  position: absolute;
551
1117
  z-index: var(--pm-z-popover);
552
1118
  display: grid;
553
- min-width: min(12rem, calc(100vw - 2rem));
1119
+ min-width: min(var(--pm-menu-min-width), calc(100vw - var(--pm-space-8)));
554
1120
  max-height: 60vh;
555
1121
  margin: 0;
556
1122
  overflow: auto;
@@ -559,11 +1125,11 @@
559
1125
  list-style: none;
560
1126
  }
561
1127
 
562
- /* Reka positions the outer wrapper; the content participates in its layout. */
1128
+ /* Radix positions the outer wrapper; the content participates in its layout. */
563
1129
  .pm-ui-floating {
564
1130
  position: relative;
565
1131
  inset: auto;
566
- max-height: min(70vh, var(--reka-popper-available-height, 70vh));
1132
+ max-height: min(70vh, var(--radix-popper-available-height, 70vh));
567
1133
  }
568
1134
 
569
1135
  .pm-ui-menu__item {
@@ -572,22 +1138,45 @@
572
1138
  gap: var(--pm-space-2);
573
1139
  width: 100%;
574
1140
  margin: 0;
575
- padding: 0.375rem 0.625rem;
1141
+ box-sizing: border-box;
1142
+ min-height: var(--pm-ui-control-height, var(--pm-control-height));
1143
+ padding: var(--pm-ui-control-padding-block, var(--pm-space-1)) var(--pm-ui-control-padding-inline, var(--pm-space-3));
576
1144
  border: 0;
577
- border-radius: var(--pm-radius-small);
1145
+ /* Nested radius: the menu's radius less its padding. */
1146
+ border-radius: var(--pm-radius-menu-item);
578
1147
  background: transparent;
579
1148
  color: var(--pm-color-ink);
580
- font: inherit;
1149
+ font-family: var(--pm-font-sans);
1150
+ font-size: var(--pm-ui-control-font, var(--pm-text-md));
1151
+ line-height: var(--pm-leading-ui);
581
1152
  text-align: start;
1153
+ text-decoration: none;
582
1154
  cursor: pointer;
583
1155
  }
584
1156
 
585
- .pm-ui-menu__item:hover,
586
- .pm-ui-menu__item:focus,
587
- .pm-ui-menu__item[data-highlighted] {
1157
+ .pm-ui-menu[data-description] {
1158
+ max-width: min(var(--pm-popover-max-width), calc(100vw - var(--pm-space-8)));
1159
+ }
1160
+
1161
+ .pm-ui-menu__description {
1162
+ margin: 0;
1163
+ padding: var(--pm-space-2) var(--pm-space-3);
1164
+ color: var(--pm-color-muted);
1165
+ font-size: var(--pm-text-xs);
1166
+ line-height: var(--pm-leading-ui);
1167
+ overflow-wrap: anywhere;
1168
+ }
1169
+
1170
+ .pm-ui-menu__item:hover:not([data-disabled]),
1171
+ .pm-ui-menu__item:focus:not([data-disabled]),
1172
+ .pm-ui-menu__item[data-highlighted]:not([data-disabled]) {
588
1173
  background: var(--pm-color-sunk);
589
1174
  }
590
1175
 
1176
+ .pm-ui-menu__item:active:not([data-disabled]) {
1177
+ background: var(--pm-color-pressed);
1178
+ }
1179
+
591
1180
  .pm-ui-menu__item--danger {
592
1181
  color: var(--pm-color-danger);
593
1182
  }
@@ -601,7 +1190,7 @@
601
1190
  .pm-ui-list > li {
602
1191
  margin: 0;
603
1192
  padding: var(--pm-space-3) 0;
604
- border-top: 1px solid var(--pm-color-line);
1193
+ border-top: var(--pm-size-hairline) solid var(--pm-color-line);
605
1194
  }
606
1195
 
607
1196
  .pm-ui-list > li:first-child {
@@ -621,7 +1210,63 @@
621
1210
  .pm-ui-empty__title {
622
1211
  margin: 0;
623
1212
  color: var(--pm-color-ink);
624
- font-weight: 600;
1213
+ font-weight: var(--pm-weight-semibold);
1214
+ }
1215
+
1216
+ .pm-ui-empty__body {
1217
+ max-width: var(--pm-popover-min-width);
1218
+ margin: 0;
1219
+ }
1220
+
1221
+ /* Loading in the shape of what is coming: grey bars where its headings and lines will be, not a spinner. The pulse
1222
+ animates opacity only and stops when motion is reduced. Its name is read from the status, not from the bars. */
1223
+ .pm-ui-skeleton {
1224
+ display: grid;
1225
+ gap: var(--pm-space-3);
1226
+ min-width: 0;
1227
+ }
1228
+
1229
+ .pm-ui-skeleton__group {
1230
+ display: grid;
1231
+ gap: var(--pm-space-2);
1232
+ }
1233
+
1234
+ .pm-ui-skeleton__bar {
1235
+ height: var(--pm-skeleton-line);
1236
+ border-radius: var(--pm-radius-chip);
1237
+ background: var(--pm-color-sunk);
1238
+ animation: pm-ui-skeleton-pulse var(--pm-duration-pulse) ease-in-out infinite;
1239
+ }
1240
+
1241
+ .pm-ui-skeleton__bar[data-kind='heading'] {
1242
+ width: 60%;
1243
+ height: var(--pm-skeleton-heading);
1244
+ margin-block-end: var(--pm-space-1);
1245
+ }
1246
+
1247
+ .pm-ui-skeleton__bar[data-kind='row'] {
1248
+ height: var(--pm-size-tool);
1249
+ border-radius: var(--pm-radius-tool);
1250
+ }
1251
+
1252
+ .pm-ui-skeleton__bar[data-kind='media'] {
1253
+ height: auto;
1254
+ aspect-ratio: 16 / 9;
1255
+ border-radius: var(--pm-radius-small);
1256
+ }
1257
+
1258
+ .pm-ui-skeleton__group > .pm-ui-skeleton__bar:last-child:not(:only-child) {
1259
+ width: 64%;
1260
+ }
1261
+
1262
+ @keyframes pm-ui-skeleton-pulse {
1263
+ 50% { opacity: 0.55; }
1264
+ }
1265
+
1266
+ @media (prefers-reduced-motion: reduce) {
1267
+ .pm-ui-skeleton__bar {
1268
+ animation: none;
1269
+ }
625
1270
  }
626
1271
 
627
1272
  .pm-ui-notice {
@@ -659,9 +1304,772 @@
659
1304
 
660
1305
  .pm-ui-sr-only {
661
1306
  position: absolute;
662
- width: 1px;
663
- height: 1px;
1307
+ width: var(--pm-size-hairline);
1308
+ height: var(--pm-size-hairline);
664
1309
  overflow: hidden;
665
1310
  clip: rect(0 0 0 0);
666
1311
  white-space: nowrap;
667
1312
  }
1313
+
1314
+ /* BlockNote's public UI stays separate from document typography. */
1315
+ .pm-ui-block-editor { color: var(--pm-color-ink); }
1316
+
1317
+ .pm-ui-block-editor .bn-block-content::before { color: inherit; }
1318
+
1319
+ .pm-ui-block-editor .bn-block-content[data-content-type='codeBlock'] {
1320
+ background: var(--pm-color-code);
1321
+ color: var(--pm-color-ink);
1322
+ }
1323
+
1324
+ .pm-ui-block-editor .bn-block-content[data-content-type='codeBlock'] code { color: inherit; }
1325
+
1326
+ /* Document content uses the same link, check and inline code treatment as the reading view. */
1327
+ .pm-ui-block-editor .bn-inline-content a {
1328
+ color: var(--pm-color-accent);
1329
+ text-decoration: underline;
1330
+ text-decoration-color: var(--pm-color-accent-line);
1331
+ text-underline-offset: var(--pm-space-px);
1332
+ }
1333
+
1334
+ .pm-ui-block-editor .bn-inline-content a:hover { text-decoration-color: currentColor; }
1335
+
1336
+ .pm-ui-block-editor .bn-block-content[data-content-type='checkListItem'] input[type='checkbox'] { accent-color: var(--pm-color-accent); }
1337
+
1338
+ .pm-ui-block-editor .bn-inline-content code:not(.bn-source-block-popup *) {
1339
+ padding-inline: var(--pm-space-1);
1340
+ border-radius: var(--pm-radius-chip);
1341
+ background: var(--pm-color-sunk);
1342
+ font-family: var(--pm-font-mono);
1343
+ font-size: 0.9em;
1344
+ }
1345
+
1346
+ /* Formulas: BlockNote's preview-with-source popup, held to the editor's tokens. */
1347
+ .pm-ui-block-editor .bn-preview-container { color: var(--pm-color-ink); }
1348
+ .pm-ui-block-editor .bn-block-content .bn-preview-with-source-popup { padding: var(--pm-space-3); }
1349
+ .pm-ui-block-editor .bn-block-content .pm-document-editor__math--display { width: 100%; overflow-x: auto; text-align: center; }
1350
+ .pm-ui-block-editor .bn-preview-container:hover { border-radius: var(--pm-radius-small); background: var(--pm-color-hover); }
1351
+
1352
+ .pm-ui-block-editor .bn-preview-with-source-popup[data-open='true'] .bn-source-block-popup {
1353
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
1354
+ border-radius: var(--pm-radius-control);
1355
+ background: var(--pm-color-surface);
1356
+ box-shadow: var(--pm-shadow-float);
1357
+ color: var(--pm-color-ink);
1358
+ }
1359
+
1360
+ .pm-ui-block-editor .bn-inline-content-section .bn-preview-with-source-popup[data-open='true'] .bn-source-block-popup {
1361
+ width: var(--pm-popover-min-width);
1362
+ max-width: calc(100vw - var(--pm-space-8));
1363
+ }
1364
+
1365
+ /* The editor places an open inline popup inside the screen (flipped above the line or slid left) through these properties. */
1366
+ .pm-ui-block-editor .bn-inline-content-section .bn-preview-with-source-popup[data-open='true'] .bn-source-block-popup[style*='--pm-source-popup-x'] {
1367
+ top: var(--pm-source-popup-y);
1368
+ left: var(--pm-source-popup-x);
1369
+ margin-top: 0;
1370
+ }
1371
+
1372
+ .pm-ui-block-editor .bn-code-block-source-popup-body > pre {
1373
+ padding: var(--pm-space-3);
1374
+ font-family: var(--pm-font-mono);
1375
+ font-size: var(--pm-text-md);
1376
+ }
1377
+
1378
+ .pm-ui-block-editor .bn-code-block-source-popup-input-empty::before { inset-inline: var(--pm-space-3); top: var(--pm-space-3); color: var(--pm-color-muted); opacity: 1; }
1379
+ .pm-ui-block-editor .bn-code-block-source-popup-ok-button-wrapper { padding: var(--pm-space-2); }
1380
+
1381
+ .pm-ui-block-editor .bn-code-block-source-popup-ok-button {
1382
+ min-height: var(--pm-size-tool);
1383
+ padding: 0 var(--pm-space-3);
1384
+ border-radius: var(--pm-radius-control);
1385
+ background: var(--pm-color-accent);
1386
+ color: var(--pm-color-on-accent);
1387
+ font-size: var(--pm-text-sm);
1388
+ font-weight: var(--pm-weight-medium);
1389
+ }
1390
+
1391
+ .pm-ui-block-editor .bn-code-block-source-popup-ok-button:hover { background: var(--pm-color-accent-hover); }
1392
+ .pm-ui-block-editor .bn-code-block-source-popup-ok-button:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: var(--pm-space-px); }
1393
+ .pm-ui-block-editor .bn-code-block-source-popup-ok-button-icon { width: var(--pm-size-icon); height: var(--pm-size-icon); }
1394
+
1395
+ .pm-ui-block-editor .bn-code-block-source-error {
1396
+ padding: var(--pm-space-2) var(--pm-space-3);
1397
+ border-top: var(--pm-size-hairline) solid var(--pm-color-line);
1398
+ color: var(--pm-color-danger);
1399
+ font-family: var(--pm-font-sans);
1400
+ font-size: var(--pm-text-sm);
1401
+ }
1402
+
1403
+ .pm-ui-block-editor .bn-preview-placeholder {
1404
+ border-radius: var(--pm-radius-small);
1405
+ background: var(--pm-color-sunk);
1406
+ color: var(--pm-color-muted);
1407
+ }
1408
+
1409
+ .pm-ui-block-editor .bn-preview-placeholder-error {
1410
+ background: var(--pm-color-danger-soft);
1411
+ color: var(--pm-color-danger);
1412
+ }
1413
+
1414
+ @media (pointer: coarse) {
1415
+ .pm-ui-block-editor .bn-code-block-source-popup-ok-button { min-height: var(--pm-control-hit-area); font-size: var(--pm-text-lg); }
1416
+ .pm-ui-block-editor .bn-code-block-source-popup-body > pre { font-size: var(--pm-text-lg); }
1417
+ }
1418
+
1419
+ .pm-ui-block-editor .bn-comment-editor.bn-container {
1420
+ --bn-colors-editor-text: var(--pm-color-ink);
1421
+ --bn-colors-editor-background: var(--pm-color-surface);
1422
+ }
1423
+
1424
+ .pm-ui-block-editor .bn-comment-editor .bn-inline-content { color: inherit; }
1425
+
1426
+ .pm-ui-block-editor .bn-suggestion-menu p {
1427
+ margin: 0;
1428
+ line-height: var(--pm-leading-ui);
1429
+ }
1430
+
1431
+ .pm-ui-block-editor .bn-toolbar.bn-formatting-toolbar {
1432
+ box-sizing: border-box;
1433
+ max-width: calc(100vw - var(--pm-space-4));
1434
+ height: auto;
1435
+ flex-wrap: wrap;
1436
+ }
1437
+
1438
+ .pm-ui-block-editor .bn-formatting-toolbar button {
1439
+ min-width: var(--pm-size-tool);
1440
+ min-height: var(--pm-size-tool);
1441
+ font-family: var(--pm-font-sans);
1442
+ font-size: var(--pm-text-sm);
1443
+ line-height: var(--pm-leading-ui);
1444
+ }
1445
+
1446
+ /* A colour sample for document colour menus; --pm-swatch and --pm-swatch-background carry the token being offered. */
1447
+ .pm-ui-color-swatch {
1448
+ box-sizing: border-box;
1449
+ display: inline-grid;
1450
+ place-items: center;
1451
+ flex: none;
1452
+ width: var(--pm-size-icon-lg);
1453
+ height: var(--pm-size-icon-lg);
1454
+ border: var(--pm-size-hairline) solid var(--pm-color-line-strong);
1455
+ border-radius: var(--pm-radius-chip);
1456
+ background: var(--pm-color-surface);
1457
+ color: var(--pm-color-ink);
1458
+ font-family: var(--pm-font-sans);
1459
+ font-size: var(--pm-text-sm);
1460
+ font-weight: var(--pm-weight-semibold);
1461
+ line-height: 1;
1462
+ }
1463
+ .pm-ui-color-swatch[data-kind='text'] { color: var(--pm-swatch, var(--pm-color-ink)); }
1464
+ .pm-ui-color-swatch[data-kind='background'] { background: var(--pm-swatch, var(--pm-color-surface)); }
1465
+ .pm-ui-color-swatch--pair { color: var(--pm-swatch, var(--pm-color-ink)); background: var(--pm-swatch-background, transparent); }
1466
+ /* Each group is a labelled row of swatch buttons, so both palettes fit on a phone without scrolling. */
1467
+ .bn-color-picker-grid { display: grid; gap: var(--pm-space-1); }
1468
+ .bn-color-picker-group {
1469
+ --pm-ui-swatch-cell: var(--pm-size-tool);
1470
+ display: grid;
1471
+ grid-template-columns: repeat(6, var(--pm-ui-swatch-cell));
1472
+ gap: var(--pm-space-1);
1473
+ }
1474
+ .bn-color-picker-group > .mantine-Menu-label { grid-column: 1 / -1; padding-inline: var(--pm-space-1); }
1475
+ /* BlockNote fixes its menu items' height; the swatch cell is square at both densities. */
1476
+ .bn-menu-dropdown.bn-color-picker-dropdown .mantine-Menu-item[data-document-color] {
1477
+ position: relative;
1478
+ box-sizing: border-box;
1479
+ display: grid;
1480
+ place-items: center;
1481
+ width: var(--pm-ui-swatch-cell);
1482
+ height: var(--pm-ui-swatch-cell);
1483
+ padding: 0;
1484
+ border-radius: var(--pm-radius-small);
1485
+ }
1486
+ .bn-color-picker-dropdown [data-document-color] .mantine-Menu-itemLabel { display: contents; }
1487
+ .bn-color-picker-dropdown [data-document-color][data-checked] { background: var(--pm-color-selected); }
1488
+ .bn-color-picker-dropdown [data-document-color][data-checked] .pm-ui-color-swatch { border-color: var(--pm-color-accent); }
1489
+ .bn-color-picker-dropdown [data-document-color] .pm-ui-icon {
1490
+ position: absolute;
1491
+ inset-block-end: 0;
1492
+ inset-inline-end: 0;
1493
+ width: var(--pm-size-icon-sm);
1494
+ height: var(--pm-size-icon-sm);
1495
+ border-radius: var(--pm-radius-pill);
1496
+ background: var(--pm-color-accent);
1497
+ color: var(--pm-color-on-accent);
1498
+ }
1499
+ .bn-color-picker-dropdown [data-document-color]:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: calc(var(--pm-space-px) * -1); }
1500
+
1501
+ .pm-ui-block-editor .bn-menu-dropdown.bn-table-handle-menu [role='menuitem'] {
1502
+ font-size: var(--pm-text-sm);
1503
+ }
1504
+
1505
+ .pm-ui-block-editor .bn-container .bn-panel {
1506
+ box-sizing: border-box;
1507
+ width: var(--pm-popover-max-width);
1508
+ max-width: calc(100vw - var(--pm-space-4) * 2);
1509
+ min-width: 0;
1510
+ padding: var(--pm-space-2);
1511
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
1512
+ border-radius: var(--pm-radius-control);
1513
+ background: var(--pm-color-surface);
1514
+ color: var(--pm-color-ink);
1515
+ box-shadow: var(--pm-shadow-float);
1516
+ font-family: var(--pm-font-sans);
1517
+ font-size: var(--pm-text-sm);
1518
+ line-height: var(--pm-leading-ui);
1519
+ }
1520
+
1521
+ .pm-ui-block-editor .bn-panel > .mantine-Tabs-root {
1522
+ position: relative;
1523
+ min-width: 0;
1524
+ width: 100%;
1525
+ }
1526
+
1527
+ .pm-ui-block-editor .bn-panel [role='tab'] {
1528
+ box-sizing: border-box;
1529
+ min-width: var(--pm-size-tool);
1530
+ min-height: var(--pm-size-tool);
1531
+ padding: var(--pm-space-px) var(--pm-space-3);
1532
+ border-bottom-width: var(--pm-size-hairline);
1533
+ font-family: var(--pm-font-sans);
1534
+ font-size: var(--pm-text-sm);
1535
+ line-height: var(--pm-leading-ui);
1536
+ }
1537
+
1538
+ .pm-ui-block-editor .bn-panel [role='tabpanel'] {
1539
+ padding: var(--pm-space-2) 0 0;
1540
+ }
1541
+
1542
+ .pm-ui-block-editor .bn-container .bn-panel :is(.bn-tab-panel, .bn-form) {
1543
+ display: flex;
1544
+ flex-direction: column;
1545
+ align-items: stretch;
1546
+ gap: var(--pm-space-2);
1547
+ min-width: 0;
1548
+ width: 100%;
1549
+ }
1550
+
1551
+ .pm-ui-block-editor .bn-panel :is(.bn-file-input, .bn-text-input) .mantine-Input-input,
1552
+ .pm-ui-block-editor .bn-panel .bn-form > .bn-button {
1553
+ box-sizing: border-box;
1554
+ min-width: 0;
1555
+ width: 100%;
1556
+ height: var(--pm-size-tool);
1557
+ min-height: var(--pm-size-tool);
1558
+ padding: 0 var(--pm-space-2);
1559
+ border: var(--pm-size-hairline) solid var(--pm-color-line-strong);
1560
+ border-radius: var(--pm-radius-control);
1561
+ background: var(--pm-color-chrome);
1562
+ color: var(--pm-color-ink);
1563
+ font-family: var(--pm-font-sans);
1564
+ font-size: var(--pm-text-sm);
1565
+ font-weight: var(--pm-weight-regular);
1566
+ line-height: var(--pm-leading-ui);
1567
+ }
1568
+
1569
+ .pm-ui-block-editor .bn-panel .bn-text-input input::placeholder {
1570
+ color: var(--pm-color-muted);
1571
+ opacity: 1;
1572
+ }
1573
+
1574
+ .pm-ui-block-editor .bn-panel .bn-file-input .mantine-Input-input,
1575
+ .pm-ui-block-editor .bn-panel .bn-form > .bn-button {
1576
+ font-weight: var(--pm-weight-medium);
1577
+ }
1578
+
1579
+ .pm-ui-block-editor .bn-panel .bn-form > .bn-button {
1580
+ border-color: var(--pm-color-line);
1581
+ background: var(--pm-color-surface);
1582
+ }
1583
+
1584
+ .pm-ui-block-editor .bn-panel :is(.bn-file-input, .bn-text-input) .mantine-Input-input:focus-visible,
1585
+ .pm-ui-block-editor .bn-panel :is([role='tab'], .bn-form > .bn-button):focus-visible {
1586
+ outline: var(--pm-size-stroke) solid var(--pm-color-accent);
1587
+ outline-offset: calc(-1 * var(--pm-size-stroke));
1588
+ box-shadow: var(--pm-shadow-control-focus);
1589
+ }
1590
+
1591
+ .pm-ui-block-editor .bn-panel .bn-error-text {
1592
+ color: var(--pm-color-danger);
1593
+ font-size: var(--pm-text-sm);
1594
+ line-height: var(--pm-leading-ui);
1595
+ overflow-wrap: anywhere;
1596
+ }
1597
+
1598
+ .pm-ui-block-editor .bn-panel .mantine-LoadingOverlay-root .mantine-Overlay-root {
1599
+ background: var(--pm-color-surface);
1600
+ opacity: var(--pm-opacity-disabled);
1601
+ }
1602
+
1603
+ .pm-ui-block-editor .bn-panel .mantine-Loader-root {
1604
+ --loader-color: var(--pm-color-accent);
1605
+ --loader-size: var(--pm-size-icon);
1606
+ }
1607
+
1608
+ /* Native floating cards and sidebar threads share bounded, wrappable content. */
1609
+ .pm-ui-block-editor .pm-ui-comment-hidden {
1610
+ visibility: hidden;
1611
+ pointer-events: none;
1612
+ }
1613
+
1614
+ .pm-ui-block-editor .bn-thread {
1615
+ width: min(var(--pm-comment-width), calc(100vw - var(--pm-space-8)));
1616
+ min-width: 0;
1617
+ max-width: 100%;
1618
+ box-sizing: border-box;
1619
+ overflow-wrap: anywhere;
1620
+ }
1621
+
1622
+ .pm-ui-block-editor .bn-comment-editor {
1623
+ min-width: 0;
1624
+ max-width: 100%;
1625
+ }
1626
+
1627
+ .pm-ui-block-editor .bn-comment-editor .bn-editor {
1628
+ max-height: min(var(--pm-comment-editor-max-height), 45vh);
1629
+ overflow-y: auto;
1630
+ overflow-wrap: anywhere;
1631
+ }
1632
+
1633
+ .pm-ui-block-editor .bn-thread button {
1634
+ min-width: var(--pm-size-tool);
1635
+ min-height: var(--pm-size-tool);
1636
+ font-family: var(--pm-font-sans);
1637
+ font-size: var(--pm-text-sm);
1638
+ line-height: var(--pm-leading-ui);
1639
+ }
1640
+
1641
+ /* The native actions float over the end of the author line; the line keeps room for them instead of a blank row above. */
1642
+ .pm-ui-block-editor .pm-ui-comment-actions-row {
1643
+ --pm-ui-comment-action: var(--pm-size-tool);
1644
+ }
1645
+
1646
+ .pm-ui-block-editor .pm-ui-comment-actions-row > .mantine-Group-root:has(> .mantine-Avatar-root) {
1647
+ box-sizing: border-box;
1648
+ min-height: calc(var(--pm-ui-comment-action) + var(--pm-space-2));
1649
+ padding-inline-end: calc(var(--pm-ui-comment-action) * 3 + var(--pm-space-3));
1650
+ }
1651
+
1652
+ .pm-ui-block-editor .bn-threads-sidebar {
1653
+ box-sizing: border-box;
1654
+ padding-inline: var(--pm-space-3);
1655
+ }
1656
+
1657
+ .pm-ui-block-editor .bn-threads-sidebar .bn-thread {
1658
+ min-width: 0;
1659
+ max-width: 100%;
1660
+ }
1661
+
1662
+ .pm-ui-block-editor .bn-thread button svg {
1663
+ width: var(--pm-size-icon);
1664
+ height: var(--pm-size-icon);
1665
+ }
1666
+
1667
+ .pm-ui-block-editor .bn-side-menu {
1668
+ gap: 0;
1669
+ height: auto;
1670
+ flex-wrap: nowrap;
1671
+ }
1672
+
1673
+ .pm-ui-block-editor .bn-side-menu button {
1674
+ box-sizing: border-box;
1675
+ display: inline-flex;
1676
+ flex: none;
1677
+ align-items: center;
1678
+ justify-content: center;
1679
+ width: var(--pm-size-tool);
1680
+ min-width: var(--pm-size-tool);
1681
+ height: var(--pm-size-tool);
1682
+ min-height: var(--pm-size-tool);
1683
+ padding: var(--pm-space-1);
1684
+ border-radius: var(--pm-radius-control);
1685
+ }
1686
+
1687
+ .pm-ui-block-editor :is(.bn-side-menu, .bn-formatting-toolbar) button svg {
1688
+ width: var(--pm-size-icon);
1689
+ height: var(--pm-size-icon);
1690
+ }
1691
+
1692
+ .pm-ui-block-editor .bn-side-menu button:hover:not(:disabled) {
1693
+ background: var(--pm-color-hover);
1694
+ color: var(--pm-color-ink);
1695
+ }
1696
+
1697
+ .pm-ui-block-editor .bn-side-menu button:active:not(:disabled) {
1698
+ background: var(--pm-color-sunk);
1699
+ }
1700
+
1701
+ .pm-ui-block-editor :is(.bn-side-menu, .bn-formatting-toolbar) button:focus-visible {
1702
+ outline: var(--pm-size-stroke) solid var(--pm-color-accent);
1703
+ outline-offset: calc(-1 * var(--pm-size-stroke));
1704
+ box-shadow: var(--pm-shadow-control-focus);
1705
+ }
1706
+
1707
+ .pm-ui-block-editor :is(.bn-side-menu, .bn-formatting-toolbar) button:disabled {
1708
+ cursor: not-allowed;
1709
+ opacity: var(--pm-opacity-disabled);
1710
+ }
1711
+
1712
+ @media (max-width: 768px), (pointer: coarse) {
1713
+ .pm-ui-block-editor .bn-side-menu { flex-direction: column; }
1714
+ }
1715
+
1716
+ @media (pointer: coarse) {
1717
+ .pm-ui-block-editor .bn-panel [role='tab'],
1718
+ .pm-ui-block-editor .bn-panel :is(.bn-file-input, .bn-text-input) .mantine-Input-input,
1719
+ .pm-ui-block-editor .bn-panel .bn-form > .bn-button {
1720
+ height: var(--pm-control-hit-area);
1721
+ min-height: var(--pm-control-hit-area);
1722
+ font-size: var(--pm-text-lg);
1723
+ }
1724
+ .pm-ui-block-editor .bn-panel .bn-error-text { font-size: var(--pm-text-lg); }
1725
+ .pm-ui-block-editor .bn-menu-dropdown.bn-table-handle-menu [role='menuitem'] {
1726
+ min-height: var(--pm-control-hit-area);
1727
+ font-size: var(--pm-text-lg);
1728
+ }
1729
+ .bn-color-picker-group { --pm-ui-swatch-cell: var(--pm-control-hit-area); }
1730
+ .pm-ui-block-editor .bn-formatting-toolbar button {
1731
+ min-width: var(--pm-control-hit-area);
1732
+ min-height: var(--pm-control-hit-area);
1733
+ }
1734
+ .pm-ui-block-editor .bn-thread button {
1735
+ min-width: var(--pm-control-hit-area);
1736
+ min-height: var(--pm-control-hit-area);
1737
+ }
1738
+ .pm-ui-block-editor .pm-ui-comment-actions-row {
1739
+ --pm-ui-comment-action: var(--pm-control-hit-area);
1740
+ }
1741
+ .pm-ui-block-editor .bn-comment-editor .bn-editor {
1742
+ font-size: var(--pm-text-lg);
1743
+ }
1744
+ .pm-ui-block-editor .bn-side-menu button {
1745
+ width: var(--pm-control-hit-area);
1746
+ min-width: var(--pm-control-hit-area);
1747
+ height: var(--pm-control-hit-area);
1748
+ min-height: var(--pm-control-hit-area);
1749
+ }
1750
+ }
1751
+
1752
+ /* The public node-selection surface shares the authored canvas palette. */
1753
+ .pm-ui-block-editor:focus-within .ProseMirror-selectednode > .bn-block-content {
1754
+ background: var(--pm-color-accent-soft);
1755
+ border-radius: var(--pm-radius-small);
1756
+ }
1757
+
1758
+ .pm-ui-block-editor .ProseMirror-selectednode > .bn-block-content > ::after {
1759
+ background: transparent;
1760
+ border-radius: var(--pm-radius-small);
1761
+ box-shadow: none;
1762
+ }
1763
+
1764
+ .pm-ui-block-editor:focus-within .ProseMirror-selectednode > .bn-block-content > ::after {
1765
+ box-shadow: inset 0 0 0 var(--pm-size-stroke) var(--pm-color-accent);
1766
+ }
1767
+
1768
+ /* Previews that mark themselves selected (formulas) use the same accent outline, without a fill over the content. */
1769
+ .pm-ui-block-editor :is(.bn-block-content, .bn-inline-content) .ProseMirror-selectednode::after {
1770
+ background: transparent;
1771
+ border-radius: var(--pm-radius-small);
1772
+ box-shadow: none;
1773
+ }
1774
+
1775
+ .pm-ui-block-editor:focus-within :is(.bn-block-content, .bn-inline-content) .ProseMirror-selectednode::after {
1776
+ box-shadow: inset 0 0 0 var(--pm-size-stroke) var(--pm-color-accent);
1777
+ }
1778
+
1779
+ .pm-ui-menu__shortcut,
1780
+ .pm-ui-menu__item > .pm-ui-shortcut {
1781
+ margin-inline-start: auto;
1782
+ color: var(--pm-color-muted);
1783
+ font-family: var(--pm-font-mono);
1784
+ font-size: var(--pm-text-xs);
1785
+ }
1786
+
1787
+ .pm-ui-menu__label {
1788
+ padding: var(--pm-space-1) var(--pm-space-2);
1789
+ color: var(--pm-color-muted);
1790
+ font-size: var(--pm-text-xs);
1791
+ font-weight: var(--pm-weight-medium);
1792
+ }
1793
+
1794
+ .pm-ui-menu__separator {
1795
+ height: var(--pm-size-hairline);
1796
+ margin: var(--pm-space-1) 0;
1797
+ background: var(--pm-color-line);
1798
+ }
1799
+
1800
+ .pm-ui-menu__item[data-state='checked'] {
1801
+ background: var(--pm-color-selected);
1802
+ color: var(--pm-color-accent);
1803
+ }
1804
+
1805
+ .pm-ui-dialog-overlay {
1806
+ position: fixed;
1807
+ inset: 0;
1808
+ z-index: calc(var(--pm-z-dialog) - 1);
1809
+ background: var(--pm-color-backdrop);
1810
+ }
1811
+
1812
+ .pm-ui-dialog__description {
1813
+ margin: 0;
1814
+ padding: var(--pm-space-3) var(--pm-space-4) 0;
1815
+ color: var(--pm-color-muted);
1816
+ font-size: var(--pm-text-sm);
1817
+ }
1818
+
1819
+ .pm-ui-dialog__footer {
1820
+ display: flex;
1821
+ flex: none;
1822
+ flex-wrap: wrap;
1823
+ justify-content: flex-end;
1824
+ gap: var(--pm-space-2);
1825
+ padding: var(--pm-space-3) var(--pm-space-4);
1826
+ padding-bottom: max(var(--pm-space-3), env(safe-area-inset-bottom));
1827
+ border-top: var(--pm-size-hairline) solid var(--pm-color-line);
1828
+ }
1829
+
1830
+ @media (pointer: coarse) {
1831
+ .pm-ui-appbar {
1832
+ min-height: var(--pm-appbar-height-touch);
1833
+ }
1834
+
1835
+ :is(.pm-ui-choice-select__trigger, .pm-ui-sidebar__item, .pm-ui-document-list__body) {
1836
+ min-height: var(--pm-control-hit-area);
1837
+ }
1838
+
1839
+ .pm-ui-choice-select__trigger {
1840
+ font-size: var(--pm-text-lg);
1841
+ }
1842
+
1843
+ :is(.pm-ui-button, .pm-ui-icon-button, .pm-ui-input, .pm-ui-select, .pm-ui-textarea, .pm-ui-control, .pm-ui-search, .pm-ui-tab, .pm-ui-segmented__option, .pm-ui-menu__item, .pm-ui-search-list__option) {
1844
+ min-height: var(--pm-control-hit-area);
1845
+ }
1846
+
1847
+ :is(.pm-ui-button, .pm-ui-icon-button) {
1848
+ min-width: var(--pm-control-hit-area);
1849
+ }
1850
+
1851
+ :is(.pm-ui-input, .pm-ui-select, .pm-ui-textarea, .pm-ui-control, .pm-ui-search) {
1852
+ font-size: var(--pm-text-lg);
1853
+ }
1854
+
1855
+ .pm-ui-control > .pm-ui-input {
1856
+ min-height: calc(var(--pm-control-hit-area) - var(--pm-size-hairline) * 2);
1857
+ }
1858
+ }
1859
+
1860
+ @media (prefers-reduced-motion: reduce) {
1861
+ .pm-ui-loading {
1862
+ animation: none;
1863
+ }
1864
+ }
1865
+
1866
+ /* Native narration is a compact typed field, including when embedded in a body node. */
1867
+ .pm-ui-timeline__segment-picker { display: none; min-width: 0; }
1868
+ @media (max-width: 767px), (pointer: coarse) {
1869
+ .pm-ui-timeline__segment-picker { display: block; }
1870
+ }
1871
+ @media (pointer: coarse) {
1872
+ .pm-ui-timeline[data-segment-picker='caption'] .pm-ui-timeline__track[data-track='caption'] .pm-ui-timeline__segment { pointer-events: none; }
1873
+ }
1874
+
1875
+ .pm-ui-narration-editor {
1876
+ min-width: 0;
1877
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
1878
+ border-radius: var(--pm-radius-control);
1879
+ background: var(--pm-color-surface);
1880
+ }
1881
+ .pm-ui-narration-editor:focus-within {
1882
+ border-color: var(--pm-color-accent-line);
1883
+ box-shadow: var(--pm-shadow-control-focus);
1884
+ }
1885
+ .pm-ui-narration-editor .bn-editor {
1886
+ min-height: var(--pm-narration-editor-compact-height);
1887
+ padding: var(--pm-space-2) var(--pm-space-3);
1888
+ font-size: var(--pm-text-sm);
1889
+ }
1890
+ .pm-ui-narration-editor .bn-block-content { font-size: inherit; }
1891
+ .pm-ui-narration-editor__actions { display: flex; padding: 0 var(--pm-space-2) var(--pm-space-2); }
1892
+ .pm-ui-narration-editor__cue {
1893
+ display: inline-block;
1894
+ padding: var(--pm-space-1) var(--pm-space-2);
1895
+ border-radius: var(--pm-radius-control);
1896
+ background: var(--pm-color-accent-soft);
1897
+ color: var(--pm-color-accent);
1898
+ font-size: var(--pm-text-xs);
1899
+ white-space: normal;
1900
+ }
1901
+ @media (pointer: coarse) {
1902
+ .pm-ui-narration-editor .bn-editor { font-size: var(--pm-text-lg); }
1903
+ }
1904
+
1905
+ /* Controlled native range; keyboard behavior and pointer capture remain browser-owned. */
1906
+ .pm-ui-range {
1907
+ appearance: none;
1908
+ box-sizing: border-box;
1909
+ display: block;
1910
+ width: 100%;
1911
+ min-width: 0;
1912
+ height: var(--pm-ui-control-height, var(--pm-size-tool));
1913
+ margin: 0;
1914
+ padding: 0 var(--pm-space-2);
1915
+ background: transparent;
1916
+ cursor: pointer;
1917
+ border-radius: var(--pm-radius-small);
1918
+ }
1919
+ .pm-ui-range::-webkit-slider-runnable-track {
1920
+ height: var(--pm-space-1);
1921
+ border-radius: var(--pm-radius-pill);
1922
+ background: linear-gradient(to right, var(--pm-color-accent) var(--pm-range-progress, 0%), var(--pm-color-line-strong) var(--pm-range-progress, 0%));
1923
+ }
1924
+ .pm-ui-range::-moz-range-track {
1925
+ height: var(--pm-space-1);
1926
+ border-radius: var(--pm-radius-pill);
1927
+ background: linear-gradient(to right, var(--pm-color-accent) var(--pm-range-progress, 0%), var(--pm-color-line-strong) var(--pm-range-progress, 0%));
1928
+ }
1929
+ .pm-ui-range::-webkit-slider-thumb {
1930
+ appearance: none;
1931
+ box-sizing: border-box;
1932
+ width: var(--pm-size-icon);
1933
+ height: var(--pm-size-icon);
1934
+ margin-top: calc((var(--pm-space-1) - var(--pm-size-icon)) / 2);
1935
+ border: var(--pm-size-hairline) solid var(--pm-color-accent);
1936
+ border-radius: var(--pm-radius-pill);
1937
+ background: var(--pm-color-surface);
1938
+ }
1939
+ .pm-ui-range::-moz-range-thumb {
1940
+ box-sizing: border-box;
1941
+ width: var(--pm-size-icon);
1942
+ height: var(--pm-size-icon);
1943
+ border: var(--pm-size-hairline) solid var(--pm-color-accent);
1944
+ border-radius: var(--pm-radius-pill);
1945
+ background: var(--pm-color-surface);
1946
+ }
1947
+ .pm-ui-range:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: calc(var(--pm-space-px) * -1); }
1948
+ .pm-ui-range:disabled { cursor: default; opacity: var(--pm-opacity-disabled); }
1949
+ .pm-ui-panel-header { box-sizing: border-box; display: flex; flex: none; align-items: center; gap: var(--pm-space-2); min-width: 0; min-height: var(--pm-size-tool); padding: var(--pm-space-1) var(--pm-space-3); border-bottom: var(--pm-size-hairline) solid var(--pm-color-line); background: var(--pm-color-chrome); color: var(--pm-color-ink); font-family: var(--pm-font-sans); font-size: var(--pm-text-sm); line-height: var(--pm-leading-ui); }
1950
+ .pm-ui-panel-header__title { flex: none; margin: 0; font: inherit; font-weight: var(--pm-weight-semibold); }
1951
+ .pm-ui-panel-header__meta { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--pm-color-muted); font-size: var(--pm-text-xs); }
1952
+ .pm-ui-panel-header__actions { display: flex; flex: 0 1 auto; align-items: center; gap: var(--pm-space-2); min-width: 0; margin-inline-start: auto; }
1953
+ .pm-ui-split-group, .pm-ui-split-panel { position: relative; display: flex; min-width: 0; min-height: 0; overflow: hidden; }
1954
+ .pm-ui-split-panel { flex-direction: column; }
1955
+ /* Panel's public outer sizing element has inline display:flex; honor hidden there. */
1956
+ .pm-ui-split-group > [data-pm-split-panel][hidden] { display: none !important; }
1957
+ .pm-ui-split-group > [data-pm-background] { position: absolute; inset: 0; visibility: hidden; }
1958
+ .pm-ui-split-handle { position: relative; width: var(--pm-split-handle-size); outline: none; }
1959
+ .pm-ui-split-handle::after { position: absolute; inset-block: 0; left: 50%; width: var(--pm-size-hairline); background: var(--pm-color-line); content: ''; }
1960
+ .pm-ui-split-group[data-pm-orientation='vertical'] > .pm-ui-split-handle { width: auto; height: var(--pm-split-handle-size); }
1961
+ .pm-ui-split-group[data-pm-orientation='vertical'] > .pm-ui-split-handle::after { inset-inline: 0; top: 50%; left: 0; width: auto; height: var(--pm-size-hairline); }
1962
+ .pm-ui-split-handle:hover::after, .pm-ui-split-handle:focus-visible::after, .pm-ui-split-handle[data-separator='active']::after { background: var(--pm-color-accent); box-shadow: 0 0 0 var(--pm-size-hairline) var(--pm-color-accent-line); }
1963
+ .pm-ui-timeline { display: flex; flex-direction: column; gap: var(--pm-space-2); min-width: 0; padding: var(--pm-space-3); border: var(--pm-size-hairline) solid var(--pm-color-line); border-radius: var(--pm-radius-control); background: var(--pm-color-surface); color: var(--pm-color-ink); font-family: var(--pm-font-sans); font-size: var(--pm-ui-control-font, var(--pm-text-sm)); line-height: var(--pm-leading-ui); }
1964
+ .pm-ui-timeline__tools { display: flex; flex-wrap: wrap; align-items: end; gap: var(--pm-space-2); }
1965
+ .pm-ui-timeline__zoom { display: flex; align-items: center; gap: var(--pm-space-2); }
1966
+ .pm-ui-timeline__scale { min-width: var(--pm-size-row); text-align: center; font-variant-numeric: tabular-nums; }
1967
+ .pm-ui-timeline__status { margin: 0; color: var(--pm-color-muted); font-size: var(--pm-text-xs); }
1968
+ .pm-ui-timeline__tracks { display: grid; grid-template-columns: var(--pm-timeline-label-width) minmax(0, 1fr); gap: var(--pm-space-2); min-width: 0; }
1969
+ .pm-ui-timeline__labels { display: flex; flex-direction: column; gap: var(--pm-space-2); }
1970
+ .pm-ui-timeline__labels > span { display: flex; align-items: center; height: var(--pm-ui-control-height, var(--pm-size-tool)); min-width: 0; overflow: hidden; }
1971
+ .pm-ui-timeline__viewport { min-width: 0; overflow-x: auto; overflow-y: hidden; padding: var(--pm-space-px); margin: calc(var(--pm-space-px) * -1); scrollbar-gutter: stable; }
1972
+ .pm-ui-timeline__viewport:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: calc(var(--pm-space-px) * -1); }
1973
+ .pm-ui-timeline__canvas { position: relative; display: flex; flex-direction: column; gap: var(--pm-space-2); min-width: 100%; }
1974
+ .pm-ui-timeline__ruler { position: relative; height: var(--pm-ui-control-height, var(--pm-size-tool)); cursor: pointer; color: var(--pm-color-muted); font-size: var(--pm-text-xs); }
1975
+ .pm-ui-timeline__ruler > span { position: absolute; bottom: 0; box-sizing: border-box; width: var(--pm-timeline-tick-width); transform: translateX(-50%); padding-inline-start: var(--pm-space-px); font-variant-numeric: tabular-nums; }
1976
+ .pm-ui-timeline__ruler > span::before { position: absolute; inset-block: 0; left: 50%; border-left: var(--pm-size-hairline) solid var(--pm-color-line-strong); content: ''; }
1977
+ .pm-ui-timeline__ruler > span:first-child { transform: none; }
1978
+ .pm-ui-timeline__ruler > span:first-child::before { left: 0; }
1979
+ .pm-ui-timeline__ruler > span[data-end] { transform: translateX(-100%); text-align: right; }
1980
+ .pm-ui-timeline__ruler > span[data-end]::before { left: 100%; }
1981
+ .pm-ui-timeline__track { position: relative; display: flex; align-items: center; gap: var(--pm-space-2); height: var(--pm-ui-control-height, var(--pm-size-tool)); overflow: hidden; }
1982
+ .pm-ui-timeline__segment { position: absolute; box-sizing: border-box; display: flex; align-items: center; justify-content: start; min-width: 0; height: 100%; margin: 0; padding: var(--pm-space-1); border: var(--pm-size-hairline) solid var(--pm-color-line); border-radius: var(--pm-radius-small); background: var(--pm-ui-timeline-segment-bg, var(--pm-color-chrome)); color: var(--pm-color-ink); font: inherit; cursor: pointer; overflow: hidden; }
1983
+ .pm-ui-timeline__segment > span { position: relative; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
1984
+ .pm-ui-timeline__segment[aria-pressed='true'] { border-color: var(--pm-color-accent); background: var(--pm-color-accent-soft); }
1985
+ .pm-ui-timeline__segment[data-timing='estimated'] { border-style: dashed; }
1986
+ .pm-ui-timeline__segment:hover:not(:disabled) { background: var(--pm-color-hover); }
1987
+ .pm-ui-timeline__segment:active:not(:disabled) { background: var(--pm-color-pressed); }
1988
+ .pm-ui-timeline__segment:focus-visible { outline: var(--pm-space-px) solid var(--pm-color-accent); outline-offset: calc(var(--pm-space-px) * -1); }
1989
+ .pm-ui-timeline__segment:disabled { cursor: default; opacity: var(--pm-opacity-disabled); }
1990
+ .pm-ui-timeline__unknown { flex: 0 0 auto; color: var(--pm-color-muted); white-space: nowrap; }
1991
+ .pm-ui-timeline__cursor { position: absolute; top: 0; bottom: 0; border-left: var(--pm-size-hairline) solid var(--pm-color-accent); pointer-events: none; }
1992
+ .pm-ui-timeline__cursor[data-preview] { border-left-style: dashed; }
1993
+ .pm-ui-timeline__wave { position: absolute; inset-inline: 0; bottom: 0; width: 100%; height: var(--pm-timeline-wave-height); color: var(--pm-color-accent-line); pointer-events: none; }
1994
+ .pm-ui-timeline__wave path { fill: none; stroke: currentColor; stroke-width: 1; }
1995
+ .pm-ui-timeline__steps { display: flex; flex-wrap: wrap; gap: var(--pm-space-2); }
1996
+ .pm-ui-timeline__steps > .pm-ui-button { min-width: var(--pm-control-hit-area); }
1997
+ .pm-ui-timeline[data-variant='editor'] { gap: 0; min-height: 0; padding: 0; border: 0; border-radius: 0; font-size: var(--pm-text-xs); }
1998
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__tools { flex: none; align-items: center; padding: var(--pm-space-1) var(--pm-space-2); border-bottom: var(--pm-size-hairline) solid var(--pm-color-line); }
1999
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__zoom { margin-inline-start: auto; }
2000
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__tracks { grid-template-columns: var(--pm-timeline-editor-label-width) minmax(0, 1fr); padding: var(--pm-space-1) var(--pm-space-2); }
2001
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__canvas, .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__labels { gap: var(--pm-space-1); }
2002
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__ruler, .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__status { font-size: var(--pm-timeline-editor-meta-font); }
2003
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__track { height: var(--pm-timeline-editor-track-height); }
2004
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__ruler, .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__labels > span:first-child:not([data-track-label]) { height: var(--pm-size-badge); }
2005
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__labels > [data-track-label] { height: var(--pm-timeline-editor-track-height); }
2006
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__segment { border-radius: var(--pm-radius-tool); }
2007
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__track[data-track='voice'] { --pm-ui-timeline-segment-bg: var(--pm-color-ok-soft); }
2008
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__track[data-track='caption'] { --pm-ui-timeline-segment-bg: var(--pm-color-warn-soft); }
2009
+ .pm-ui-timeline[data-variant='editor'] .pm-ui-timeline__segment[aria-pressed='true'] { box-shadow: inset 0 0 0 var(--pm-size-hairline) var(--pm-color-accent); }
2010
+
2011
+ .pm-ui-sortable-list {
2012
+ display: grid;
2013
+ align-content: start;
2014
+ gap: var(--pm-space-1);
2015
+ min-width: 0;
2016
+ margin: 0;
2017
+ padding: 0;
2018
+ list-style: none;
2019
+ }
2020
+
2021
+ .pm-ui-sortable-list__row {
2022
+ display: flex;
2023
+ align-items: center;
2024
+ gap: var(--pm-space-1);
2025
+ min-width: 0;
2026
+ min-height: var(--pm-ui-control-height, var(--pm-size-tool));
2027
+ border-radius: var(--pm-radius-small);
2028
+ color: var(--pm-color-ink);
2029
+ font-family: var(--pm-font-sans);
2030
+ font-size: var(--pm-text-sm);
2031
+ line-height: var(--pm-leading-ui);
2032
+ }
2033
+
2034
+ .pm-ui-sortable-list__row:hover { background: var(--pm-color-hover); }
2035
+ .pm-ui-sortable-list__row[data-selected] { background: var(--pm-color-accent-soft); }
2036
+ .pm-ui-sortable-list__row:focus-within,
2037
+ .pm-ui-sortable-list__row[data-dragging] { box-shadow: inset 0 0 0 var(--pm-size-stroke) var(--pm-color-accent); }
2038
+ .pm-ui-sortable-list__row[data-dragging] { background: var(--pm-color-surface); }
2039
+ .pm-ui-sortable-list__handle { flex: none; touch-action: none; }
2040
+
2041
+ .pm-ui-sortable-list__select {
2042
+ display: flex;
2043
+ flex: 1;
2044
+ align-items: center;
2045
+ align-self: stretch;
2046
+ gap: var(--pm-space-1);
2047
+ min-width: 0;
2048
+ margin: 0;
2049
+ padding: 0;
2050
+ border: 0;
2051
+ background: transparent;
2052
+ color: inherit;
2053
+ font: inherit;
2054
+ text-align: start;
2055
+ cursor: pointer;
2056
+ }
2057
+
2058
+ .pm-ui-sortable-list__select:focus-visible { outline: 0; }
2059
+ .pm-ui-sortable-list__select:disabled { opacity: var(--pm-opacity-disabled); cursor: not-allowed; }
2060
+ .pm-ui-sortable-list__row[data-selected] .pm-ui-sortable-list__select { color: var(--pm-color-accent); }
2061
+ .pm-ui-sortable-list__prefix { flex: none; color: var(--pm-color-muted); text-align: end; }
2062
+ .pm-ui-sortable-list__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2063
+ .pm-ui-sortable-list__actions { display: flex; flex: none; align-items: center; }
2064
+ .pm-ui-sortable-list__row[data-density='touch'] { font-size: var(--pm-text-lg); }
2065
+
2066
+ @media (pointer: coarse) {
2067
+ .pm-ui-sortable-list__row { --pm-ui-control-height: var(--pm-control-hit-area); font-size: var(--pm-text-lg); }
2068
+ }
2069
+ @media (max-width: 767px) {
2070
+ .pm-ui-timeline__tracks { grid-template-columns: var(--pm-control-hit-area) minmax(0, 1fr); }
2071
+ }
2072
+ @media (pointer: coarse) {
2073
+ .pm-ui-range { min-height: var(--pm-control-hit-area); }
2074
+ .pm-ui-timeline { --pm-ui-control-height: var(--pm-control-hit-area); --pm-ui-control-font: var(--pm-text-lg); }
2075
+ }