rei-kit 1.0.2 → 2.0.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.
package/dist/styles.css CHANGED
@@ -1,31 +1,31 @@
1
1
 
2
- .sheet-enter-active[data-v-ab6c6ace],
3
- .sheet-leave-active[data-v-ab6c6ace] {
4
- transition: opacity 200ms ease;
2
+ .sheet-enter-active[data-v-6194b8f4],
3
+ .sheet-leave-active[data-v-6194b8f4] {
4
+ transition: opacity var(--duration-base) ease;
5
5
  }
6
- .sheet-enter-from[data-v-ab6c6ace],
7
- .sheet-leave-to[data-v-ab6c6ace] {
6
+ .sheet-enter-from[data-v-6194b8f4],
7
+ .sheet-leave-to[data-v-6194b8f4] {
8
8
  opacity: 0;
9
9
  }
10
10
 
11
11
  /* The panel travels further than the scrim fades, which is what makes the
12
12
  sheet read as rising rather than appearing. */
13
- .sheet-enter-active .sheet-panel[data-v-ab6c6ace],
14
- .sheet-leave-active .sheet-panel[data-v-ab6c6ace] {
15
- transition: transform 280ms cubic-bezier(0.32, 0.72, 0, 1);
13
+ .sheet-enter-active .sheet-panel[data-v-6194b8f4],
14
+ .sheet-leave-active .sheet-panel[data-v-6194b8f4] {
15
+ transition: transform var(--duration-slow) var(--ease-sheet);
16
16
  }
17
- .sheet-enter-from .sheet-panel[data-v-ab6c6ace],
18
- .sheet-leave-to .sheet-panel[data-v-ab6c6ace] {
17
+ .sheet-enter-from .sheet-panel[data-v-6194b8f4],
18
+ .sheet-leave-to .sheet-panel[data-v-6194b8f4] {
19
19
  transform: translateY(6%);
20
20
  }
21
21
  @media (prefers-reduced-motion: reduce) {
22
- .sheet-enter-from .sheet-panel[data-v-ab6c6ace],
23
- .sheet-leave-to .sheet-panel[data-v-ab6c6ace] {
22
+ .sheet-enter-from .sheet-panel[data-v-6194b8f4],
23
+ .sheet-leave-to .sheet-panel[data-v-6194b8f4] {
24
24
  transform: none;
25
25
  }
26
26
  }
27
27
 
28
- .rk-fab-slot[data-v-7e2bbe71] {
28
+ .rk-fab-slot[data-v-3bd0d80a] {
29
29
  position: absolute;
30
30
  bottom: calc(6rem + env(safe-area-inset-bottom, 0px));
31
31
  left: 50%;
@@ -40,7 +40,7 @@
40
40
  must not swallow taps meant for the page underneath it. */
41
41
  pointer-events: none;
42
42
  }
43
- .rk-fab[data-v-7e2bbe71] {
43
+ .rk-fab[data-v-3bd0d80a] {
44
44
  pointer-events: auto;
45
45
  display: flex;
46
46
  height: 3rem;
@@ -49,48 +49,50 @@
49
49
  border-radius: 9999px;
50
50
  padding-left: 1rem;
51
51
  padding-right: 1.25rem;
52
- color: #fff;
52
+ color: var(--color-on-primary);
53
53
  background: var(--color-primary);
54
- transition: transform 150ms;
55
- /* A ring in the canvas colour separates it from whatever scrolls behind. */
54
+ transition: transform var(--duration-fast);
55
+ /* A ring in the canvas colour separates it from whatever scrolls behind; the
56
+ depth under it is the material's, so a brutalist app gets a hard offset
57
+ and a soft one gets a puff without this file knowing either. */
56
58
  box-shadow:
57
59
  0 0 0 4px var(--color-canvas),
58
- 0 10px 24px -8px color-mix(in srgb, var(--color-primary) 60%, transparent);
60
+ var(--shadow-raised);
59
61
  }
60
- .rk-fab[data-v-7e2bbe71]:active {
61
- transform: scale(0.95);
62
+ .rk-fab[data-v-3bd0d80a]:active {
63
+ transform: translate(var(--press-offset), var(--press-offset)) scale(var(--press-scale));
62
64
  }
63
65
 
64
66
  /* The ring is not decoration. This button was a `BaseButton variant="unstyled"`
65
67
  in the app it came from, which meant it inherited a focus ring for free; a
66
68
  bare <button> here would have dropped it, and a keyboard user would have had
67
69
  no way to see where they were. */
68
- .rk-fab[data-v-7e2bbe71]:focus-visible {
70
+ .rk-fab[data-v-3bd0d80a]:focus-visible {
69
71
  outline: 2px solid var(--color-primary);
70
72
  outline-offset: 2px;
71
73
  }
72
- .rk-fab-icon[data-v-7e2bbe71] {
74
+ .rk-fab-icon[data-v-3bd0d80a] {
73
75
  display: grid;
74
76
  place-items: center;
75
77
  flex-shrink: 0;
76
78
  }
77
- .rk-fab-icon[data-v-7e2bbe71] svg {
79
+ .rk-fab-icon[data-v-3bd0d80a] svg {
78
80
  width: 1.25rem;
79
81
  height: 1.25rem;
80
82
  stroke-width: 2.5px;
81
83
  }
82
- .rk-fab-label[data-v-7e2bbe71] {
84
+ .rk-fab-label[data-v-3bd0d80a] {
83
85
  font-size: 0.875rem;
84
86
  font-weight: 600;
85
87
  white-space: nowrap;
86
88
  }
87
89
  @media (prefers-reduced-motion: reduce) {
88
- .rk-fab[data-v-7e2bbe71] {
90
+ .rk-fab[data-v-3bd0d80a] {
89
91
  transition: none;
90
92
  }
91
93
  }
92
94
 
93
- .rk-offline-banner[data-v-0781b5b6] {
95
+ .rk-offline-banner[data-v-0f6db9dc] {
94
96
  position: absolute;
95
97
  top: 4.75rem;
96
98
  left: 50%;
@@ -105,25 +107,25 @@
105
107
  font-weight: 500;
106
108
  color: var(--color-ink);
107
109
  background: color-mix(in srgb, var(--color-warning) 90%, transparent);
108
- box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
110
+ box-shadow: var(--shadow-raised);
109
111
  backdrop-filter: blur(4px);
110
112
  }
111
- .rk-offline-enter-active[data-v-0781b5b6],
112
- .rk-offline-leave-active[data-v-0781b5b6] {
113
+ .rk-offline-enter-active[data-v-0f6db9dc],
114
+ .rk-offline-leave-active[data-v-0f6db9dc] {
113
115
  transition:
114
- opacity 200ms ease,
115
- transform 200ms cubic-bezier(0.32, 0.72, 0, 1);
116
+ opacity var(--duration-base) ease,
117
+ transform var(--duration-base) var(--ease-sheet);
116
118
  }
117
- .rk-offline-enter-from[data-v-0781b5b6],
118
- .rk-offline-leave-to[data-v-0781b5b6] {
119
+ .rk-offline-enter-from[data-v-0f6db9dc],
120
+ .rk-offline-leave-to[data-v-0f6db9dc] {
119
121
  opacity: 0;
120
122
  transform: translate(-50%, -0.5rem);
121
123
  }
122
124
 
123
125
  /* The travel is the part that causes trouble; the fade is not. */
124
126
  @media (prefers-reduced-motion: reduce) {
125
- .rk-offline-enter-from[data-v-0781b5b6],
126
- .rk-offline-leave-to[data-v-0781b5b6] {
127
+ .rk-offline-enter-from[data-v-0f6db9dc],
128
+ .rk-offline-leave-to[data-v-0f6db9dc] {
127
129
  transform: translate(-50%, 0);
128
130
  }
129
131
  }
@@ -135,13 +137,15 @@
135
137
  The colour is a custom property because it is the one thing each app wants
136
138
  different: set `--rk-lattice` on any ancestor. It defaults to the ink colour,
137
139
  which is legible against every theme the tokens can produce. */
138
- .rk-screen[data-v-f19fd72a] {
140
+ .rk-screen[data-v-211d6411] {
139
141
  position: fixed;
140
142
  inset: 0;
141
143
  display: flex;
142
144
  align-items: center;
143
145
  justify-content: center;
144
146
  background-color: var(--color-canvas);
147
+ /* The lattice sits on top of whatever the material puts behind the page —
148
+ glass needs colour to blur, and it is this layer that supplies it. */
145
149
  background-image:
146
150
  repeating-linear-gradient(
147
151
  45deg,
@@ -162,9 +166,10 @@
162
166
  )
163
167
  0 1px,
164
168
  transparent 1px 56px
165
- );
169
+ ),
170
+ var(--canvas-backdrop);
166
171
  }
167
- .rk-screen-aside[data-v-f19fd72a] {
172
+ .rk-screen-aside[data-v-211d6411] {
168
173
  position: absolute;
169
174
  bottom: 1.5rem;
170
175
  left: 1.5rem;
@@ -175,28 +180,28 @@
175
180
  color: var(--color-ink-soft);
176
181
  }
177
182
  @media (min-width: 48rem) {
178
- .rk-screen-aside[data-v-f19fd72a] {
183
+ .rk-screen-aside[data-v-211d6411] {
179
184
  display: flex;
180
185
  }
181
186
  }
182
187
 
183
188
  /* `shell-frame` from `rei-kit/shell/mobile.css` supplies the geometry — the
184
189
  430px column and the desktop height. This adds only the surface. */
185
- .rk-shell[data-v-f19fd72a] {
190
+ .rk-shell[data-v-211d6411] {
186
191
  position: relative;
187
192
  margin: auto;
188
193
  display: flex;
189
194
  flex-direction: column;
190
195
  overflow: hidden;
191
- background: var(--color-surface);
196
+ background: color-mix(in oklab, var(--color-surface) var(--surface-opacity), transparent);
197
+ backdrop-filter: var(--surface-backdrop);
198
+ -webkit-backdrop-filter: var(--surface-backdrop);
192
199
  }
193
200
  @media (min-width: 48rem) {
194
- .rk-shell[data-v-f19fd72a] {
195
- border: 1px solid var(--color-hair);
201
+ .rk-shell[data-v-211d6411] {
202
+ border: var(--surface-border-width) solid var(--surface-border-color);
196
203
  border-radius: var(--radius-shell);
197
- box-shadow:
198
- 0 20px 25px -5px rgb(0 0 0 / 0.1),
199
- 0 8px 10px -6px rgb(0 0 0 / 0.1);
204
+ box-shadow: var(--shadow-overlay);
200
205
  }
201
206
  }
202
207
 
@@ -204,12 +209,12 @@
204
209
  cannot reach slot content, which belongs to the caller's scope, so
205
210
  `.tour-forward-*` and `.tour-backward-*` ship unscoped in
206
211
  `rei-kit/shell/mobile.css` where the caller's slide can actually see them. */
207
- .tour-enter-active[data-v-1b9e7f4d],
208
- .tour-leave-active[data-v-1b9e7f4d] {
209
- transition: opacity 220ms ease;
212
+ .tour-enter-active[data-v-3bbf95fc],
213
+ .tour-leave-active[data-v-3bbf95fc] {
214
+ transition: opacity var(--duration-base) ease;
210
215
  }
211
- .tour-enter-from[data-v-1b9e7f4d],
212
- .tour-leave-to[data-v-1b9e7f4d] {
216
+ .tour-enter-from[data-v-3bbf95fc],
217
+ .tour-leave-to[data-v-3bbf95fc] {
213
218
  opacity: 0;
214
219
  }
215
220
 
@@ -254,40 +259,37 @@
254
259
  height: 65%;
255
260
  }
256
261
 
257
- .rk-menu[data-v-8ad05b3d] {
262
+ .rk-menu[data-v-e57ec901] {
258
263
  position: relative;
259
264
  display: inline-flex;
260
265
  }
261
- .rk-menu-trigger[data-v-8ad05b3d] {
266
+ .rk-menu-trigger[data-v-e57ec901] {
262
267
  display: inline-flex;
263
268
  border-radius: var(--radius-cell);
264
269
  }
265
- .rk-menu-trigger[data-v-8ad05b3d]:focus-visible {
270
+ .rk-menu-trigger[data-v-e57ec901]:focus-visible {
266
271
  outline: 2px solid var(--color-primary);
267
272
  outline-offset: 2px;
268
273
  }
269
- .rk-menu-panel[data-v-8ad05b3d] {
274
+ .rk-menu-panel[data-v-e57ec901] {
270
275
  position: absolute;
271
276
  top: calc(100% + 0.5rem);
272
277
  z-index: 50;
273
278
  min-width: 12rem;
274
279
  overflow: hidden;
275
280
  border-radius: var(--radius-card);
276
- border: 1px solid color-mix(in srgb, var(--color-hair) 70%, transparent);
277
- background: var(--color-surface);
278
281
  padding: 0.375rem;
279
- box-shadow: 0 10px 24px -8px rgb(0 0 0 / 0.25);
280
282
  }
281
- .rk-menu-panel.is-end[data-v-8ad05b3d] {
283
+ .rk-menu-panel.is-end[data-v-e57ec901] {
282
284
  right: 0;
283
285
  }
284
- .rk-menu-panel.is-start[data-v-8ad05b3d] {
286
+ .rk-menu-panel.is-start[data-v-e57ec901] {
285
287
  left: 0;
286
288
  }
287
289
 
288
290
  /* The items belong to the caller, so this styles them by role rather than by
289
291
  class: whatever they render, it lines up. */
290
- .rk-menu-panel[data-v-8ad05b3d] [role='menuitem'] {
292
+ .rk-menu-panel[data-v-e57ec901] [role='menuitem'] {
291
293
  display: block;
292
294
  width: 100%;
293
295
  border-radius: var(--radius-cell);
@@ -295,34 +297,34 @@
295
297
  text-align: left;
296
298
  font-size: 0.875rem;
297
299
  color: var(--color-ink);
298
- transition: background-color 150ms;
300
+ transition: background-color var(--duration-fast);
299
301
  }
300
- .rk-menu-panel[data-v-8ad05b3d] [role='menuitem']:hover {
302
+ .rk-menu-panel[data-v-e57ec901] [role='menuitem']:hover {
301
303
  background: var(--color-muted);
302
304
  }
303
- .rk-menu-panel[data-v-8ad05b3d] [role='menuitem']:focus-visible {
305
+ .rk-menu-panel[data-v-e57ec901] [role='menuitem']:focus-visible {
304
306
  outline: 2px solid var(--color-primary);
305
307
  outline-offset: -2px;
306
308
  }
307
- .rk-menu-panel[data-v-8ad05b3d] hr {
309
+ .rk-menu-panel[data-v-e57ec901] hr {
308
310
  margin: 0.375rem 0;
309
311
  height: 1px;
310
312
  border: 0;
311
313
  background: color-mix(in srgb, var(--color-hair) 70%, transparent);
312
314
  }
313
315
 
314
- .rk-combo[data-v-52b21155] {
316
+ .rk-combo[data-v-ce4c503f] {
315
317
  position: relative;
316
318
  display: flex;
317
319
  flex-direction: column;
318
320
  gap: 0.375rem;
319
321
  }
320
- .rk-combo-label[data-v-52b21155] {
322
+ .rk-combo-label[data-v-ce4c503f] {
321
323
  font-size: 0.875rem;
322
324
  font-weight: 500;
323
325
  color: var(--color-ink);
324
326
  }
325
- .rk-combo-field[data-v-52b21155] {
327
+ .rk-combo-field[data-v-ce4c503f] {
326
328
  position: relative;
327
329
  display: flex;
328
330
  align-items: center;
@@ -330,30 +332,28 @@
330
332
 
331
333
  /* 16px, like every other text control here: iOS zooms the viewport when it
332
334
  focuses a field under 16px and never zooms back. */
333
- .rk-combo-input[data-v-52b21155] {
335
+ .rk-combo-input[data-v-ce4c503f] {
334
336
  width: 100%;
335
337
  height: 2.75rem;
336
338
  border-radius: var(--radius-card);
337
- border: 1px solid var(--color-hair);
338
- background: var(--color-surface);
339
339
  padding: 0 2rem 0 0.75rem;
340
340
  font-size: 1rem;
341
341
  color: var(--color-ink);
342
342
  }
343
- .rk-combo-input[data-v-52b21155]:focus-visible {
343
+ .rk-combo-input[data-v-ce4c503f]:focus-visible {
344
344
  outline: 2px solid var(--color-primary);
345
345
  outline-offset: -1px;
346
346
  }
347
- .rk-combo-input[data-v-52b21155]:disabled {
347
+ .rk-combo-input[data-v-ce4c503f]:disabled {
348
348
  opacity: 0.5;
349
349
  }
350
- .rk-combo-toggle[data-v-52b21155] {
350
+ .rk-combo-toggle[data-v-ce4c503f] {
351
351
  position: absolute;
352
352
  right: 0.5rem;
353
353
  color: var(--color-ink-soft);
354
354
  font-size: 0.75rem;
355
355
  }
356
- .rk-combo-list[data-v-52b21155] {
356
+ .rk-combo-list[data-v-ce4c503f] {
357
357
  position: absolute;
358
358
  top: calc(100% - 1.25rem);
359
359
  z-index: 50;
@@ -361,74 +361,71 @@
361
361
  width: 100%;
362
362
  overflow-y: auto;
363
363
  border-radius: var(--radius-card);
364
- border: 1px solid var(--color-hair);
365
- background: var(--color-surface);
366
364
  padding: 0.25rem;
367
- box-shadow: 0 10px 24px -8px rgb(0 0 0 / 0.25);
368
365
  }
369
- .rk-combo-option[data-v-52b21155] {
366
+ .rk-combo-option[data-v-ce4c503f] {
370
367
  cursor: pointer;
371
368
  border-radius: var(--radius-cell);
372
369
  padding: 0.5rem 0.625rem;
373
370
  font-size: 0.875rem;
374
371
  color: var(--color-ink);
375
372
  }
376
- .rk-combo-option.is-highlighted[data-v-52b21155] {
373
+ .rk-combo-option.is-highlighted[data-v-ce4c503f] {
377
374
  background: var(--color-muted);
378
375
  }
379
- .rk-combo-option.is-selected[data-v-52b21155] {
376
+ .rk-combo-option.is-selected[data-v-ce4c503f] {
380
377
  font-weight: 600;
381
378
  }
382
- .rk-combo-empty[data-v-52b21155] {
379
+ .rk-combo-empty[data-v-ce4c503f] {
383
380
  padding: 0.75rem 0.625rem;
384
381
  font-size: 0.875rem;
385
382
  color: var(--color-ink-soft);
386
383
  }
387
- .rk-combo-error[data-v-52b21155] {
384
+ .rk-combo-error[data-v-ce4c503f] {
388
385
  font-size: 0.75rem;
389
386
  color: var(--color-negative);
390
387
  }
391
- .rk-combo-hint[data-v-52b21155] {
388
+ .rk-combo-hint[data-v-ce4c503f] {
392
389
  font-size: 0.75rem;
393
390
  color: var(--color-ink-soft);
394
391
  }
395
392
 
396
- .rk-slider[data-v-0a408519] {
393
+ .rk-slider[data-v-7fa2769b] {
397
394
  display: flex;
398
395
  flex-direction: column;
399
396
  gap: 0.5rem;
400
397
  }
401
- .rk-slider-head[data-v-0a408519] {
398
+ .rk-slider-head[data-v-7fa2769b] {
402
399
  display: flex;
403
400
  align-items: baseline;
404
401
  justify-content: space-between;
405
402
  gap: 1rem;
406
403
  }
407
- .rk-slider-label[data-v-0a408519] {
404
+ .rk-slider-label[data-v-7fa2769b] {
408
405
  font-size: 0.875rem;
409
406
  font-weight: 500;
410
407
  color: var(--color-ink);
411
408
  }
412
- .rk-slider-value[data-v-0a408519] {
409
+ .rk-slider-value[data-v-7fa2769b] {
413
410
  font-size: 0.875rem;
414
411
  color: var(--color-ink-soft);
415
412
  font-variant-numeric: tabular-nums;
416
413
  }
417
- .rk-slider-input[data-v-0a408519] {
414
+ .rk-slider-input[data-v-7fa2769b] {
418
415
  width: 100%;
419
416
  height: 1.25rem;
420
417
  appearance: none;
421
418
  background: transparent;
422
419
  cursor: pointer;
423
420
  }
424
- .rk-slider-input[data-v-0a408519]:disabled {
421
+ .rk-slider-input[data-v-7fa2769b]:disabled {
425
422
  opacity: 0.5;
426
423
  cursor: default;
427
424
  }
428
425
 
429
426
  /* The two engines will not accept these in one rule: an unknown pseudo-element
430
427
  invalidates the whole selector, so WebKit and Firefox are written twice. */
431
- .rk-slider-input[data-v-0a408519]::-webkit-slider-runnable-track {
428
+ .rk-slider-input[data-v-7fa2769b]::-webkit-slider-runnable-track {
432
429
  height: 0.375rem;
433
430
  border-radius: 9999px;
434
431
  background: linear-gradient(
@@ -437,43 +434,43 @@
437
434
  var(--color-hair) var(--rk-slider-filled, 0%)
438
435
  );
439
436
  }
440
- .rk-slider-input[data-v-0a408519]::-moz-range-track {
437
+ .rk-slider-input[data-v-7fa2769b]::-moz-range-track {
441
438
  height: 0.375rem;
442
439
  border-radius: 9999px;
443
440
  background: var(--color-hair);
444
441
  }
445
- .rk-slider-input[data-v-0a408519]::-moz-range-progress {
442
+ .rk-slider-input[data-v-7fa2769b]::-moz-range-progress {
446
443
  height: 0.375rem;
447
444
  border-radius: 9999px;
448
445
  background: var(--color-primary);
449
446
  }
450
- .rk-slider-input[data-v-0a408519]::-webkit-slider-thumb {
447
+ .rk-slider-input[data-v-7fa2769b]::-webkit-slider-thumb {
451
448
  appearance: none;
452
449
  margin-top: -0.4375rem;
453
450
  width: 1.25rem;
454
451
  height: 1.25rem;
455
452
  border-radius: 9999px;
456
- background: #fff;
453
+ background: var(--color-surface);
457
454
  border: 2px solid var(--color-primary);
458
- box-shadow: 0 1px 3px rgb(0 0 0 / 0.25);
455
+ box-shadow: var(--shadow-control);
459
456
  }
460
- .rk-slider-input[data-v-0a408519]::-moz-range-thumb {
457
+ .rk-slider-input[data-v-7fa2769b]::-moz-range-thumb {
461
458
  width: 1.25rem;
462
459
  height: 1.25rem;
463
460
  border: 2px solid var(--color-primary);
464
461
  border-radius: 9999px;
465
- background: #fff;
466
- box-shadow: 0 1px 3px rgb(0 0 0 / 0.25);
462
+ background: var(--color-surface);
463
+ box-shadow: var(--shadow-control);
467
464
  }
468
- .rk-slider-input[data-v-0a408519]:focus-visible::-webkit-slider-thumb {
465
+ .rk-slider-input[data-v-7fa2769b]:focus-visible::-webkit-slider-thumb {
469
466
  outline: 2px solid var(--color-primary);
470
467
  outline-offset: 2px;
471
468
  }
472
- .rk-slider-input[data-v-0a408519]:focus-visible::-moz-range-thumb {
469
+ .rk-slider-input[data-v-7fa2769b]:focus-visible::-moz-range-thumb {
473
470
  outline: 2px solid var(--color-primary);
474
471
  outline-offset: 2px;
475
472
  }
476
- .rk-slider-hint[data-v-0a408519] {
473
+ .rk-slider-hint[data-v-7fa2769b] {
477
474
  font-size: 0.75rem;
478
475
  color: var(--color-ink-soft);
479
476
  }
@@ -516,7 +513,7 @@ to {
516
513
  }
517
514
  }
518
515
 
519
- .rk-switch[data-v-a9f65b91] {
516
+ .rk-switch[data-v-3f4400a0] {
520
517
  position: relative;
521
518
  display: inline-flex;
522
519
  flex-shrink: 0;
@@ -525,35 +522,37 @@ to {
525
522
  height: 1.625rem;
526
523
  border-radius: 9999px;
527
524
  background: var(--color-hair);
528
- transition: background-color 180ms ease;
525
+ transition: background-color var(--duration-base) ease;
529
526
  }
530
- .rk-switch.is-on[data-v-a9f65b91] {
527
+ .rk-switch.is-on[data-v-3f4400a0] {
531
528
  background: var(--color-primary);
532
529
  }
533
- .rk-switch[data-v-a9f65b91]:focus-visible {
530
+ .rk-switch[data-v-3f4400a0]:focus-visible {
534
531
  outline: 2px solid var(--color-primary);
535
532
  outline-offset: 2px;
536
533
  }
537
- .rk-switch[data-v-a9f65b91]:disabled {
534
+ .rk-switch[data-v-3f4400a0]:disabled {
538
535
  opacity: 0.5;
539
536
  pointer-events: none;
540
537
  }
541
- .rk-switch-knob[data-v-a9f65b91] {
538
+ .rk-switch-knob[data-v-3f4400a0] {
542
539
  position: absolute;
543
540
  left: 0.1875rem;
544
541
  width: 1.25rem;
545
542
  height: 1.25rem;
546
543
  border-radius: 9999px;
547
- background: #fff;
548
- box-shadow: 0 1px 2px rgb(0 0 0 / 0.25);
549
- transition: transform 180ms cubic-bezier(0.32, 0.72, 0, 1);
544
+ /* The on-colour, because the knob sits on the primary track when it is on,
545
+ and that is exactly the pairing `on-primary` is tuned for. */
546
+ background: var(--color-on-primary);
547
+ box-shadow: var(--shadow-control);
548
+ transition: transform var(--duration-base) var(--ease-sheet);
550
549
  }
551
- .rk-switch.is-on .rk-switch-knob[data-v-a9f65b91] {
550
+ .rk-switch.is-on .rk-switch-knob[data-v-3f4400a0] {
552
551
  transform: translateX(1.125rem);
553
552
  }
554
553
  @media (prefers-reduced-motion: reduce) {
555
- .rk-switch[data-v-a9f65b91],
556
- .rk-switch-knob[data-v-a9f65b91] {
554
+ .rk-switch[data-v-3f4400a0],
555
+ .rk-switch-knob[data-v-3f4400a0] {
557
556
  transition: none;
558
557
  }
559
558
  }
@@ -621,64 +620,40 @@ to {
621
620
 
622
621
  /* Movement is small and downward from the top, upward from the bottom — the
623
622
  direction it came from either way. */
624
- .toast-enter-active[data-v-f1a3439c],
625
- .toast-leave-active[data-v-f1a3439c] {
623
+ .toast-enter-active[data-v-b336935c],
624
+ .toast-leave-active[data-v-b336935c] {
626
625
  transition:
627
- opacity 200ms ease-out,
628
- transform 200ms ease-out;
626
+ opacity var(--duration-base) ease-out,
627
+ transform var(--duration-base) ease-out;
629
628
  }
630
- .toast-enter-from[data-v-f1a3439c],
631
- .toast-leave-to[data-v-f1a3439c] {
629
+ .toast-enter-from[data-v-b336935c],
630
+ .toast-leave-to[data-v-b336935c] {
632
631
  opacity: 0;
633
632
  transform: translateY(-0.5rem);
634
633
  }
635
634
 
636
635
  /* Leaving is taken out of flow so the ones below close the gap smoothly
637
636
  instead of jumping when it unmounts. */
638
- .toast-leave-active[data-v-f1a3439c] {
637
+ .toast-leave-active[data-v-b336935c] {
639
638
  position: absolute;
640
639
  }
641
640
  @media (prefers-reduced-motion: reduce) {
642
- .toast-enter-active[data-v-f1a3439c],
643
- .toast-leave-active[data-v-f1a3439c] {
641
+ .toast-enter-active[data-v-b336935c],
642
+ .toast-leave-active[data-v-b336935c] {
644
643
  transition-duration: 1ms;
645
644
  }
646
- .toast-enter-from[data-v-f1a3439c],
647
- .toast-leave-to[data-v-f1a3439c] {
645
+ .toast-enter-from[data-v-b336935c],
646
+ .toast-leave-to[data-v-b336935c] {
648
647
  transform: none;
649
648
  }
650
649
  }
651
650
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
652
651
  @layer properties {
653
652
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
654
- [data-v-d3cd9a8a],[data-v-d3cd9a8a]:before,[data-v-d3cd9a8a]:after,[data-v-d3cd9a8a]::backdrop {
653
+ [data-v-e9bd0632],[data-v-e9bd0632]:before,[data-v-e9bd0632]:after,[data-v-e9bd0632]::backdrop {
655
654
  --tw-translate-x: 0;
656
655
  --tw-translate-y: 0;
657
656
  --tw-translate-z: 0;
658
- --tw-border-style: solid;
659
- --tw-shadow: 0 0 #0000;
660
- --tw-shadow-color: initial;
661
- --tw-shadow-alpha: 100%;
662
- --tw-inset-shadow: 0 0 #0000;
663
- --tw-inset-shadow-color: initial;
664
- --tw-inset-shadow-alpha: 100%;
665
- --tw-ring-color: initial;
666
- --tw-ring-shadow: 0 0 #0000;
667
- --tw-inset-ring-color: initial;
668
- --tw-inset-ring-shadow: 0 0 #0000;
669
- --tw-ring-inset: initial;
670
- --tw-ring-offset-width: 0px;
671
- --tw-ring-offset-color: #fff;
672
- --tw-ring-offset-shadow: 0 0 #0000;
673
- --tw-backdrop-blur: initial;
674
- --tw-backdrop-brightness: initial;
675
- --tw-backdrop-contrast: initial;
676
- --tw-backdrop-grayscale: initial;
677
- --tw-backdrop-hue-rotate: initial;
678
- --tw-backdrop-invert: initial;
679
- --tw-backdrop-opacity: initial;
680
- --tw-backdrop-saturate: initial;
681
- --tw-backdrop-sepia: initial;
682
657
  --tw-duration: initial;
683
658
  --tw-ease: initial;
684
659
  --tw-scale-x: 1;
@@ -689,7 +664,7 @@ to {
689
664
  }
690
665
  }
691
666
  }
692
- .tab-bar[data-v-d3cd9a8a] {
667
+ .tab-bar[data-v-e9bd0632] {
693
668
  z-index: 40;
694
669
  --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
695
670
  width: 100%;
@@ -700,31 +675,34 @@ to {
700
675
  bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
701
676
  position: absolute;
702
677
  }
703
- .tab-bar-inner[data-v-d3cd9a8a] {
678
+ .tab-bar-inner[data-v-e9bd0632] {
704
679
  justify-content: space-between;
705
680
  align-items: center;
706
681
  gap: var(--spacing, .25rem);
707
- border-style: var(--tw-border-style);
708
- border-width: 1px;
709
- border-color: var(--color-hair, #e1edea);
710
- background-color: #ffffffd9;
711
682
  display: flex;
712
683
  }
713
684
  @supports (color: color-mix(in lab, red, red)) {
714
- .tab-bar-inner[data-v-d3cd9a8a] {
715
- background-color: color-mix(in oklab, var(--color-surface, #fff) 85%, transparent);
685
+ .tab-bar-inner[data-v-e9bd0632] {
686
+ background-color: color-mix(in oklab, var(--color-surface) var(--surface-opacity), transparent);
716
687
  }
717
688
  }
718
- .tab-bar-inner[data-v-d3cd9a8a] {
689
+ .tab-bar-inner[data-v-e9bd0632] {
690
+ border: var(--surface-border-width) solid var(--surface-border-color);
691
+ box-shadow: var(--shadow-raised);
692
+ -webkit-backdrop-filter: var(--surface-backdrop);
719
693
  padding: calc(var(--spacing, .25rem) * 1.5);
720
- --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);
721
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
722
- --tw-backdrop-blur: blur(var(--blur-md, 12px));
723
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
724
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
694
+ background-color: #fff;
695
+ }
696
+ @supports (color: color-mix(in lab, red, red)) {
697
+ .tab-bar-inner[data-v-e9bd0632] {
698
+ background-color: color-mix(in oklab, var(--color-surface) min(var(--surface-opacity), 88%), transparent);
699
+ }
700
+ }
701
+ .tab-bar-inner[data-v-e9bd0632] {
702
+ -webkit-backdrop-filter: var(--surface-backdrop, blur(12px));
725
703
  border-radius: var(--radius-shell);
726
704
  }
727
- .tab-link[data-v-d3cd9a8a] {
705
+ .tab-link[data-v-e9bd0632] {
728
706
  cursor: pointer;
729
707
  justify-content: center;
730
708
  align-items: center;
@@ -733,71 +711,71 @@ to {
733
711
  padding-block: calc(var(--spacing, .25rem) * 1.5);
734
712
  color: var(--color-ink-soft, #5c7480);
735
713
  border-radius: calc(var(--radius-shell) - 6px);
714
+ transition: color var(--duration-base) ease;
736
715
  flex-direction: column;
737
716
  flex: 1;
738
- transition: color .2s;
739
717
  display: flex;
740
718
  }
741
- .tab-link[data-v-d3cd9a8a]:hover {
719
+ .tab-link[data-v-e9bd0632]:hover {
742
720
  color: var(--color-ink, #0f2229);
743
721
  }
744
- .tab-icon-slot[data-v-d3cd9a8a] {
722
+ .tab-icon-slot[data-v-e9bd0632] {
745
723
  height: calc(var(--spacing, .25rem) * 7);
746
724
  width: calc(var(--spacing, .25rem) * 12);
747
725
  transition-property: all;
748
726
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
749
727
  transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
750
- --tw-duration: .2s;
728
+ --tw-duration: var(--duration-base);
729
+ transition-duration: var(--duration-base);
751
730
  --tw-ease: var(--ease-out, cubic-bezier(0, 0, .2, 1));
752
- transition-duration: .2s;
753
731
  transition-timing-function: var(--ease-out, cubic-bezier(0, 0, .2, 1));
754
732
  border-radius: 3.40282e38px;
755
733
  justify-content: center;
756
734
  align-items: center;
757
735
  display: flex;
758
736
  }
759
- .tab-link:active .tab-icon-slot[data-v-d3cd9a8a] {
737
+ .tab-link:active .tab-icon-slot[data-v-e9bd0632] {
760
738
  transform: scale(.88);
761
739
  }
762
- .is-active[data-v-d3cd9a8a] {
740
+ .is-active[data-v-e9bd0632] {
763
741
  color: var(--color-primary, #26667f);
764
742
  }
765
- .is-active .tab-icon-slot[data-v-d3cd9a8a] {
743
+ .is-active .tab-icon-slot[data-v-e9bd0632] {
766
744
  background-color: var(--color-muted, #ddf4e7);
767
745
  }
768
- .tab-icon[data-v-d3cd9a8a] {
746
+ .tab-icon[data-v-e9bd0632] {
769
747
  stroke-width: 2px;
770
748
  width: 18px;
771
749
  height: 18px;
772
750
  transition-property: transform, translate, scale, rotate;
773
751
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
774
752
  transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
775
- --tw-duration: .2s;
776
- transition-duration: .2s;
753
+ --tw-duration: var(--duration-base);
754
+ transition-duration: var(--duration-base);
777
755
  }
778
- .is-active .tab-icon[data-v-d3cd9a8a] {
756
+ .is-active .tab-icon[data-v-e9bd0632] {
779
757
  --tw-scale-x: 110%;
780
758
  --tw-scale-y: 110%;
781
759
  --tw-scale-z: 110%;
782
760
  scale: var(--tw-scale-x) var(--tw-scale-y);
783
761
  stroke-width: 2.5px;
784
762
  }
785
- .tab-label[data-v-d3cd9a8a] {
763
+ .tab-label[data-v-e9bd0632] {
786
764
  --tw-leading: 1;
787
765
  --tw-font-weight: var(--font-weight-medium, 500);
788
766
  font-size: 10px;
789
767
  line-height: 1;
790
768
  font-weight: var(--font-weight-medium, 500);
791
769
  }
792
- .is-active .tab-label[data-v-d3cd9a8a] {
770
+ .is-active .tab-label[data-v-e9bd0632] {
793
771
  --tw-font-weight: var(--font-weight-semibold, 600);
794
772
  font-weight: var(--font-weight-semibold, 600);
795
773
  }
796
774
  @media (prefers-reduced-motion: reduce) {
797
- .tab-icon-slot[data-v-d3cd9a8a], .tab-icon[data-v-d3cd9a8a] {
775
+ .tab-icon-slot[data-v-e9bd0632], .tab-icon[data-v-e9bd0632] {
798
776
  transition: none;
799
777
  }
800
- .tab-link:active .tab-icon-slot[data-v-d3cd9a8a] {
778
+ .tab-link:active .tab-icon-slot[data-v-e9bd0632] {
801
779
  transform: none;
802
780
  }
803
781
  }
@@ -816,112 +794,6 @@ to {
816
794
  inherits: false;
817
795
  initial-value: 0;
818
796
  }
819
- @property --tw-border-style {
820
- syntax: "*";
821
- inherits: false;
822
- initial-value: solid;
823
- }
824
- @property --tw-shadow {
825
- syntax: "*";
826
- inherits: false;
827
- initial-value: 0 0 #0000;
828
- }
829
- @property --tw-shadow-color {
830
- syntax: "*";
831
- inherits: false
832
- }
833
- @property --tw-shadow-alpha {
834
- syntax: "<percentage>";
835
- inherits: false;
836
- initial-value: 100%;
837
- }
838
- @property --tw-inset-shadow {
839
- syntax: "*";
840
- inherits: false;
841
- initial-value: 0 0 #0000;
842
- }
843
- @property --tw-inset-shadow-color {
844
- syntax: "*";
845
- inherits: false
846
- }
847
- @property --tw-inset-shadow-alpha {
848
- syntax: "<percentage>";
849
- inherits: false;
850
- initial-value: 100%;
851
- }
852
- @property --tw-ring-color {
853
- syntax: "*";
854
- inherits: false
855
- }
856
- @property --tw-ring-shadow {
857
- syntax: "*";
858
- inherits: false;
859
- initial-value: 0 0 #0000;
860
- }
861
- @property --tw-inset-ring-color {
862
- syntax: "*";
863
- inherits: false
864
- }
865
- @property --tw-inset-ring-shadow {
866
- syntax: "*";
867
- inherits: false;
868
- initial-value: 0 0 #0000;
869
- }
870
- @property --tw-ring-inset {
871
- syntax: "*";
872
- inherits: false
873
- }
874
- @property --tw-ring-offset-width {
875
- syntax: "<length>";
876
- inherits: false;
877
- initial-value: 0;
878
- }
879
- @property --tw-ring-offset-color {
880
- syntax: "*";
881
- inherits: false;
882
- initial-value: #fff;
883
- }
884
- @property --tw-ring-offset-shadow {
885
- syntax: "*";
886
- inherits: false;
887
- initial-value: 0 0 #0000;
888
- }
889
- @property --tw-backdrop-blur {
890
- syntax: "*";
891
- inherits: false
892
- }
893
- @property --tw-backdrop-brightness {
894
- syntax: "*";
895
- inherits: false
896
- }
897
- @property --tw-backdrop-contrast {
898
- syntax: "*";
899
- inherits: false
900
- }
901
- @property --tw-backdrop-grayscale {
902
- syntax: "*";
903
- inherits: false
904
- }
905
- @property --tw-backdrop-hue-rotate {
906
- syntax: "*";
907
- inherits: false
908
- }
909
- @property --tw-backdrop-invert {
910
- syntax: "*";
911
- inherits: false
912
- }
913
- @property --tw-backdrop-opacity {
914
- syntax: "*";
915
- inherits: false
916
- }
917
- @property --tw-backdrop-saturate {
918
- syntax: "*";
919
- inherits: false
920
- }
921
- @property --tw-backdrop-sepia {
922
- syntax: "*";
923
- inherits: false
924
- }
925
797
  @property --tw-duration {
926
798
  syntax: "*";
927
799
  inherits: false
@@ -954,20 +826,20 @@ to {
954
826
  inherits: false
955
827
  }
956
828
 
957
- .install-enter-active[data-v-34c86300],
958
- .install-leave-active[data-v-34c86300] {
829
+ .install-enter-active[data-v-552a4ac9],
830
+ .install-leave-active[data-v-552a4ac9] {
959
831
  transition:
960
- opacity 200ms ease,
961
- transform 200ms ease;
832
+ opacity var(--duration-base) ease,
833
+ transform var(--duration-base) ease;
962
834
  }
963
- .install-enter-from[data-v-34c86300],
964
- .install-leave-to[data-v-34c86300] {
835
+ .install-enter-from[data-v-552a4ac9],
836
+ .install-leave-to[data-v-552a4ac9] {
965
837
  opacity: 0;
966
838
  transform: translateY(-4px);
967
839
  }
968
840
  @media (prefers-reduced-motion: reduce) {
969
- .install-enter-from[data-v-34c86300],
970
- .install-leave-to[data-v-34c86300] {
841
+ .install-enter-from[data-v-552a4ac9],
842
+ .install-leave-to[data-v-552a4ac9] {
971
843
  transform: none;
972
844
  }
973
845
  }
@@ -975,7 +847,7 @@ to {
975
847
  /* Sits above the tab bar and the action button, because it outranks both — but
976
848
  absolutely inside its container, so on a desktop-sized shell it does not
977
849
  float off into the page. Give the shell `relative`. */
978
- .update-card[data-v-7cf60526] {
850
+ .update-card[data-v-ac5bec25] {
979
851
  border-color: var(--color-hair);
980
852
  background: color-mix(in srgb, var(--color-surface) 95%, transparent);
981
853
  border-radius: var(--radius-card);
@@ -990,11 +862,11 @@ to {
990
862
  border-width: 1px;
991
863
  padding: 0.75rem;
992
864
  backdrop-filter: blur(12px);
993
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1);
865
+ box-shadow: var(--shadow-overlay);
994
866
  transform: translateX(-50%);
995
867
  bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
996
868
  }
997
- .update-icon[data-v-7cf60526] {
869
+ .update-icon[data-v-ac5bec25] {
998
870
  background: color-mix(in srgb, var(--color-primary) 15%, transparent);
999
871
  color: var(--color-primary);
1000
872
  display: flex;
@@ -1005,31 +877,31 @@ to {
1005
877
  justify-content: center;
1006
878
  border-radius: 0.75rem;
1007
879
  }
1008
- .update-enter-active[data-v-7cf60526],
1009
- .update-leave-active[data-v-7cf60526] {
880
+ .update-enter-active[data-v-ac5bec25],
881
+ .update-leave-active[data-v-ac5bec25] {
1010
882
  transition:
1011
- opacity 250ms ease,
1012
- transform 250ms cubic-bezier(0.32, 0.72, 0, 1);
883
+ opacity var(--duration-slow) ease,
884
+ transform var(--duration-slow) var(--ease-sheet);
1013
885
  }
1014
- .update-enter-from[data-v-7cf60526],
1015
- .update-leave-to[data-v-7cf60526] {
886
+ .update-enter-from[data-v-ac5bec25],
887
+ .update-leave-to[data-v-ac5bec25] {
1016
888
  opacity: 0;
1017
889
  transform: translate(-50%, 1rem);
1018
890
  }
1019
891
  @media (prefers-reduced-motion: reduce) {
1020
- .update-enter-from[data-v-7cf60526],
1021
- .update-leave-to[data-v-7cf60526] {
892
+ .update-enter-from[data-v-ac5bec25],
893
+ .update-leave-to[data-v-ac5bec25] {
1022
894
  transform: translate(-50%, 0);
1023
895
  }
1024
896
  }
1025
897
 
1026
- .rk-accordion[data-v-d7bddb65] {
898
+ .rk-accordion[data-v-03e2e1d0] {
1027
899
  border-top: 1px solid color-mix(in srgb, var(--color-hair) 70%, transparent);
1028
900
  }
1029
- .rk-accordion-item[data-v-d7bddb65] {
901
+ .rk-accordion-item[data-v-03e2e1d0] {
1030
902
  border-bottom: 1px solid color-mix(in srgb, var(--color-hair) 70%, transparent);
1031
903
  }
1032
- .rk-accordion-control[data-v-d7bddb65] {
904
+ .rk-accordion-control[data-v-03e2e1d0] {
1033
905
  display: flex;
1034
906
  width: 100%;
1035
907
  cursor: pointer;
@@ -1038,21 +910,21 @@ to {
1038
910
  gap: 1.5rem;
1039
911
  padding: 1.25rem 0;
1040
912
  text-align: left;
1041
- transition: color 150ms;
913
+ transition: color var(--duration-fast);
1042
914
  }
1043
- .rk-accordion-control[data-v-d7bddb65]:hover {
915
+ .rk-accordion-control[data-v-03e2e1d0]:hover {
1044
916
  color: var(--color-primary);
1045
917
  }
1046
- .rk-accordion-control[data-v-d7bddb65]:focus-visible {
918
+ .rk-accordion-control[data-v-03e2e1d0]:focus-visible {
1047
919
  outline: 2px solid var(--color-primary);
1048
920
  outline-offset: 2px;
1049
921
  }
1050
- .rk-accordion-title[data-v-d7bddb65] {
922
+ .rk-accordion-title[data-v-03e2e1d0] {
1051
923
  color: var(--color-ink);
1052
924
  font-size: 1rem;
1053
925
  font-weight: 500;
1054
926
  }
1055
- .rk-accordion-mark[data-v-d7bddb65] {
927
+ .rk-accordion-mark[data-v-03e2e1d0] {
1056
928
  position: relative;
1057
929
  display: grid;
1058
930
  place-items: center;
@@ -1060,85 +932,85 @@ to {
1060
932
  width: 1.5rem;
1061
933
  height: 1.5rem;
1062
934
  }
1063
- .rk-accordion-bar[data-v-d7bddb65] {
935
+ .rk-accordion-bar[data-v-03e2e1d0] {
1064
936
  position: absolute;
1065
937
  height: 1px;
1066
938
  width: 0.875rem;
1067
939
  background: var(--color-ink-soft);
1068
940
  }
1069
- .rk-accordion-bar-turn[data-v-d7bddb65] {
941
+ .rk-accordion-bar-turn[data-v-03e2e1d0] {
1070
942
  transform: rotate(90deg);
1071
- transition: transform 420ms ease-out;
943
+ transition: transform var(--duration-slower) ease-out;
1072
944
  }
1073
- .rk-accordion-bar-turn.is-open[data-v-d7bddb65] {
945
+ .rk-accordion-bar-turn.is-open[data-v-03e2e1d0] {
1074
946
  transform: rotate(0deg);
1075
947
  }
1076
948
 
1077
949
  /* 0fr to 1fr is the whole trick: a grid row can be animated to a height that
1078
950
  was never measured, which is what `height: auto` cannot do. */
1079
- .rk-accordion-panel[data-v-d7bddb65] {
951
+ .rk-accordion-panel[data-v-03e2e1d0] {
1080
952
  display: grid;
1081
953
  grid-template-rows: 0fr;
1082
- transition: grid-template-rows 420ms ease-out;
954
+ transition: grid-template-rows var(--duration-slower) ease-out;
1083
955
  }
1084
- .rk-accordion-panel.is-open[data-v-d7bddb65] {
956
+ .rk-accordion-panel.is-open[data-v-03e2e1d0] {
1085
957
  grid-template-rows: 1fr;
1086
958
  }
1087
- .rk-accordion-clip[data-v-d7bddb65] {
959
+ .rk-accordion-clip[data-v-03e2e1d0] {
1088
960
  overflow: hidden;
1089
961
  }
1090
- .rk-accordion-body[data-v-d7bddb65] {
962
+ .rk-accordion-body[data-v-03e2e1d0] {
1091
963
  max-width: 68ch;
1092
964
  padding-bottom: 1.5rem;
1093
965
  color: var(--color-ink-soft);
1094
966
  line-height: 1.625;
1095
967
  opacity: 0;
1096
- transition: opacity 300ms;
968
+ transition: opacity var(--duration-slow);
1097
969
  }
1098
- .rk-accordion-body.is-open[data-v-d7bddb65] {
970
+ .rk-accordion-body.is-open[data-v-03e2e1d0] {
1099
971
  opacity: 1;
1100
972
  }
1101
973
  @media (prefers-reduced-motion: reduce) {
1102
- .rk-accordion-panel[data-v-d7bddb65],
1103
- .rk-accordion-bar-turn[data-v-d7bddb65],
1104
- .rk-accordion-body[data-v-d7bddb65] {
974
+ .rk-accordion-panel[data-v-03e2e1d0],
975
+ .rk-accordion-bar-turn[data-v-03e2e1d0],
976
+ .rk-accordion-body[data-v-03e2e1d0] {
1105
977
  transition: none;
1106
978
  }
1107
979
  }
1108
980
 
1109
- .rk-crumbs[data-v-85ee4b4e] {
981
+ .rk-crumbs[data-v-dcc01b03] {
1110
982
  display: flex;
1111
983
  flex-wrap: wrap;
1112
984
  align-items: center;
1113
985
  gap: 0.5rem;
1114
986
  font-size: 0.8125rem;
1115
987
  }
1116
- .rk-crumb[data-v-85ee4b4e] {
988
+ .rk-crumb[data-v-dcc01b03] {
1117
989
  display: flex;
1118
990
  align-items: center;
1119
991
  gap: 0.5rem;
1120
992
  }
1121
- .rk-crumb-link[data-v-85ee4b4e] {
993
+ .rk-crumb-link[data-v-dcc01b03] {
1122
994
  color: var(--color-ink-soft);
1123
- transition: color 150ms;
995
+ transition: color var(--duration-fast);
1124
996
  }
1125
- .rk-crumb-link[data-v-85ee4b4e]:hover {
997
+ .rk-crumb-link[data-v-dcc01b03]:hover {
1126
998
  color: var(--color-ink);
1127
999
  }
1128
- .rk-crumb-link[data-v-85ee4b4e]:focus-visible {
1000
+ .rk-crumb-link[data-v-dcc01b03]:focus-visible {
1129
1001
  outline: 2px solid var(--color-primary);
1130
1002
  outline-offset: 2px;
1131
1003
  border-radius: 2px;
1132
1004
  }
1133
- .rk-crumb-current[data-v-85ee4b4e] {
1005
+ .rk-crumb-current[data-v-dcc01b03] {
1134
1006
  color: var(--color-ink);
1135
1007
  font-weight: 500;
1136
1008
  }
1137
- .rk-crumb-sep[data-v-85ee4b4e] {
1009
+ .rk-crumb-sep[data-v-dcc01b03] {
1138
1010
  color: var(--color-hair);
1139
1011
  }
1140
1012
 
1141
- .rk-disclosure-control[data-v-e09c1481] {
1013
+ .rk-disclosure-control[data-v-ad5c09f5] {
1142
1014
  display: flex;
1143
1015
  width: 100%;
1144
1016
  cursor: pointer;
@@ -1147,21 +1019,21 @@ to {
1147
1019
  gap: 1.5rem;
1148
1020
  padding: 1.25rem 0;
1149
1021
  text-align: left;
1150
- transition: color 150ms;
1022
+ transition: color var(--duration-fast);
1151
1023
  }
1152
- .rk-disclosure-control[data-v-e09c1481]:hover {
1024
+ .rk-disclosure-control[data-v-ad5c09f5]:hover {
1153
1025
  color: var(--color-primary);
1154
1026
  }
1155
- .rk-disclosure-control[data-v-e09c1481]:focus-visible {
1027
+ .rk-disclosure-control[data-v-ad5c09f5]:focus-visible {
1156
1028
  outline: 2px solid var(--color-primary);
1157
1029
  outline-offset: 2px;
1158
1030
  }
1159
- .rk-disclosure-title[data-v-e09c1481] {
1031
+ .rk-disclosure-title[data-v-ad5c09f5] {
1160
1032
  color: var(--color-ink);
1161
1033
  font-size: 1rem;
1162
1034
  font-weight: 500;
1163
1035
  }
1164
- .rk-disclosure-mark[data-v-e09c1481] {
1036
+ .rk-disclosure-mark[data-v-ad5c09f5] {
1165
1037
  position: relative;
1166
1038
  display: grid;
1167
1039
  place-items: center;
@@ -1169,53 +1041,53 @@ to {
1169
1041
  width: 1.5rem;
1170
1042
  height: 1.5rem;
1171
1043
  }
1172
- .rk-disclosure-bar[data-v-e09c1481] {
1044
+ .rk-disclosure-bar[data-v-ad5c09f5] {
1173
1045
  position: absolute;
1174
1046
  height: 1px;
1175
1047
  width: 0.875rem;
1176
1048
  background: var(--color-ink-soft);
1177
1049
  }
1178
- .rk-disclosure-turn[data-v-e09c1481] {
1050
+ .rk-disclosure-turn[data-v-ad5c09f5] {
1179
1051
  transform: rotate(90deg);
1180
- transition: transform 420ms ease-out;
1052
+ transition: transform var(--duration-slower) ease-out;
1181
1053
  }
1182
- .rk-disclosure-turn.is-open[data-v-e09c1481] {
1054
+ .rk-disclosure-turn.is-open[data-v-ad5c09f5] {
1183
1055
  transform: rotate(0deg);
1184
1056
  }
1185
1057
 
1186
1058
  /* 0fr to 1fr is the whole trick: a grid row can be animated to a height that
1187
1059
  was never measured, which `height: auto` cannot do. */
1188
- .rk-disclosure-panel[data-v-e09c1481] {
1060
+ .rk-disclosure-panel[data-v-ad5c09f5] {
1189
1061
  display: grid;
1190
1062
  grid-template-rows: 0fr;
1191
- transition: grid-template-rows 420ms ease-out;
1063
+ transition: grid-template-rows var(--duration-slower) ease-out;
1192
1064
  }
1193
- .rk-disclosure-panel.is-open[data-v-e09c1481] {
1065
+ .rk-disclosure-panel.is-open[data-v-ad5c09f5] {
1194
1066
  grid-template-rows: 1fr;
1195
1067
  }
1196
- .rk-disclosure-clip[data-v-e09c1481] {
1068
+ .rk-disclosure-clip[data-v-ad5c09f5] {
1197
1069
  overflow: hidden;
1198
1070
  }
1199
- .rk-disclosure-body[data-v-e09c1481] {
1071
+ .rk-disclosure-body[data-v-ad5c09f5] {
1200
1072
  max-width: 68ch;
1201
1073
  padding-bottom: 1.5rem;
1202
1074
  color: var(--color-ink-soft);
1203
1075
  line-height: 1.625;
1204
1076
  opacity: 0;
1205
- transition: opacity 300ms;
1077
+ transition: opacity var(--duration-slow);
1206
1078
  }
1207
- .rk-disclosure-body.is-open[data-v-e09c1481] {
1079
+ .rk-disclosure-body.is-open[data-v-ad5c09f5] {
1208
1080
  opacity: 1;
1209
1081
  }
1210
1082
  @media (prefers-reduced-motion: reduce) {
1211
- .rk-disclosure-panel[data-v-e09c1481],
1212
- .rk-disclosure-turn[data-v-e09c1481],
1213
- .rk-disclosure-body[data-v-e09c1481] {
1083
+ .rk-disclosure-panel[data-v-ad5c09f5],
1084
+ .rk-disclosure-turn[data-v-ad5c09f5],
1085
+ .rk-disclosure-body[data-v-ad5c09f5] {
1214
1086
  transition: none;
1215
1087
  }
1216
1088
  }
1217
1089
 
1218
- .rk-modal-scrim[data-v-e092f731] {
1090
+ .rk-modal-scrim[data-v-c6537cc8] {
1219
1091
  position: fixed;
1220
1092
  inset: 0;
1221
1093
  z-index: 50;
@@ -1225,31 +1097,29 @@ to {
1225
1097
  background: color-mix(in srgb, var(--color-ink) 70%, transparent);
1226
1098
  backdrop-filter: blur(4px);
1227
1099
  }
1228
- .rk-modal-panel[data-v-e092f731] {
1100
+ .rk-modal-panel[data-v-c6537cc8] {
1229
1101
  width: 100%;
1230
1102
  max-width: 28rem;
1231
1103
  max-height: 85vh;
1232
1104
  overflow-y: auto;
1233
1105
  border-radius: var(--radius-card);
1234
- background: var(--color-surface);
1235
1106
  padding: 1.5rem;
1236
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.2);
1237
1107
  }
1238
- .rk-modal-panel[data-v-e092f731]:focus {
1108
+ .rk-modal-panel[data-v-c6537cc8]:focus {
1239
1109
  outline: none;
1240
1110
  }
1241
- .rk-modal-head[data-v-e092f731] {
1111
+ .rk-modal-head[data-v-c6537cc8] {
1242
1112
  display: flex;
1243
1113
  align-items: flex-start;
1244
1114
  justify-content: space-between;
1245
1115
  gap: 1rem;
1246
1116
  }
1247
- .rk-modal-title[data-v-e092f731] {
1117
+ .rk-modal-title[data-v-c6537cc8] {
1248
1118
  font-size: 1.0625rem;
1249
1119
  font-weight: 600;
1250
1120
  color: var(--color-ink);
1251
1121
  }
1252
- .rk-modal-close[data-v-e092f731] {
1122
+ .rk-modal-close[data-v-c6537cc8] {
1253
1123
  display: grid;
1254
1124
  place-items: center;
1255
1125
  flex-shrink: 0;
@@ -1257,71 +1127,71 @@ to {
1257
1127
  height: 2rem;
1258
1128
  border-radius: 9999px;
1259
1129
  color: var(--color-ink-soft);
1260
- transition: background-color 150ms;
1130
+ transition: background-color var(--duration-fast);
1261
1131
  }
1262
- .rk-modal-close[data-v-e092f731]:hover {
1132
+ .rk-modal-close[data-v-c6537cc8]:hover {
1263
1133
  background: var(--color-muted);
1264
1134
  }
1265
- .rk-modal-close[data-v-e092f731]:focus-visible {
1135
+ .rk-modal-close[data-v-c6537cc8]:focus-visible {
1266
1136
  outline: 2px solid var(--color-primary);
1267
1137
  outline-offset: 2px;
1268
1138
  }
1269
- .rk-modal-close svg[data-v-e092f731] {
1139
+ .rk-modal-close svg[data-v-c6537cc8] {
1270
1140
  width: 1rem;
1271
1141
  height: 1rem;
1272
1142
  }
1273
- .rk-modal-body[data-v-e092f731] {
1143
+ .rk-modal-body[data-v-c6537cc8] {
1274
1144
  margin-top: 0.75rem;
1275
1145
  color: var(--color-ink-soft);
1276
1146
  font-size: 0.875rem;
1277
1147
  line-height: 1.625;
1278
1148
  }
1279
- .rk-modal-actions[data-v-e092f731] {
1149
+ .rk-modal-actions[data-v-c6537cc8] {
1280
1150
  margin-top: 1.5rem;
1281
1151
  display: flex;
1282
1152
  justify-content: flex-end;
1283
1153
  gap: 0.5rem;
1284
1154
  }
1285
- .rk-modal-enter-active[data-v-e092f731],
1286
- .rk-modal-leave-active[data-v-e092f731] {
1287
- transition: opacity 180ms ease;
1155
+ .rk-modal-enter-active[data-v-c6537cc8],
1156
+ .rk-modal-leave-active[data-v-c6537cc8] {
1157
+ transition: opacity var(--duration-base) ease;
1288
1158
  }
1289
- .rk-modal-enter-active .rk-modal-panel[data-v-e092f731],
1290
- .rk-modal-leave-active .rk-modal-panel[data-v-e092f731] {
1159
+ .rk-modal-enter-active .rk-modal-panel[data-v-c6537cc8],
1160
+ .rk-modal-leave-active .rk-modal-panel[data-v-c6537cc8] {
1291
1161
  transition:
1292
- transform 180ms cubic-bezier(0.32, 0.72, 0, 1),
1293
- opacity 180ms ease;
1162
+ transform var(--duration-base) var(--ease-sheet),
1163
+ opacity var(--duration-base) ease;
1294
1164
  }
1295
- .rk-modal-enter-from[data-v-e092f731],
1296
- .rk-modal-leave-to[data-v-e092f731] {
1165
+ .rk-modal-enter-from[data-v-c6537cc8],
1166
+ .rk-modal-leave-to[data-v-c6537cc8] {
1297
1167
  opacity: 0;
1298
1168
  }
1299
1169
 
1300
1170
  /* From nowhere, not from an edge: a scale is what separates this from a sheet. */
1301
- .rk-modal-enter-from .rk-modal-panel[data-v-e092f731],
1302
- .rk-modal-leave-to .rk-modal-panel[data-v-e092f731] {
1171
+ .rk-modal-enter-from .rk-modal-panel[data-v-c6537cc8],
1172
+ .rk-modal-leave-to .rk-modal-panel[data-v-c6537cc8] {
1303
1173
  transform: scale(0.96);
1304
1174
  opacity: 0;
1305
1175
  }
1306
1176
  @media (prefers-reduced-motion: reduce) {
1307
- .rk-modal-enter-active .rk-modal-panel[data-v-e092f731],
1308
- .rk-modal-leave-active .rk-modal-panel[data-v-e092f731] {
1309
- transition: opacity 180ms ease;
1177
+ .rk-modal-enter-active .rk-modal-panel[data-v-c6537cc8],
1178
+ .rk-modal-leave-active .rk-modal-panel[data-v-c6537cc8] {
1179
+ transition: opacity var(--duration-base) ease;
1310
1180
  transform: none;
1311
1181
  }
1312
- .rk-modal-enter-from .rk-modal-panel[data-v-e092f731],
1313
- .rk-modal-leave-to .rk-modal-panel[data-v-e092f731] {
1182
+ .rk-modal-enter-from .rk-modal-panel[data-v-c6537cc8],
1183
+ .rk-modal-leave-to .rk-modal-panel[data-v-c6537cc8] {
1314
1184
  transform: none;
1315
1185
  }
1316
1186
  }
1317
1187
 
1318
- .rk-pager[data-v-cc4bbb58] {
1188
+ .rk-pager[data-v-29950578] {
1319
1189
  display: flex;
1320
1190
  align-items: center;
1321
1191
  gap: 0.25rem;
1322
1192
  }
1323
- .rk-pager-step[data-v-cc4bbb58],
1324
- .rk-pager-page[data-v-cc4bbb58] {
1193
+ .rk-pager-step[data-v-29950578],
1194
+ .rk-pager-page[data-v-29950578] {
1325
1195
  display: grid;
1326
1196
  place-items: center;
1327
1197
  min-width: 2rem;
@@ -1331,29 +1201,29 @@ to {
1331
1201
  font-size: 0.875rem;
1332
1202
  color: var(--color-ink-soft);
1333
1203
  transition:
1334
- background-color 150ms,
1335
- color 150ms;
1204
+ background-color var(--duration-fast),
1205
+ color var(--duration-fast);
1336
1206
  }
1337
- .rk-pager-step[data-v-cc4bbb58]:hover:not(:disabled),
1338
- .rk-pager-page[data-v-cc4bbb58]:hover {
1207
+ .rk-pager-step[data-v-29950578]:hover:not(:disabled),
1208
+ .rk-pager-page[data-v-29950578]:hover {
1339
1209
  background: var(--color-muted);
1340
1210
  color: var(--color-ink);
1341
1211
  }
1342
- .rk-pager-step[data-v-cc4bbb58]:focus-visible,
1343
- .rk-pager-page[data-v-cc4bbb58]:focus-visible {
1212
+ .rk-pager-step[data-v-29950578]:focus-visible,
1213
+ .rk-pager-page[data-v-29950578]:focus-visible {
1344
1214
  outline: 2px solid var(--color-primary);
1345
1215
  outline-offset: 2px;
1346
1216
  }
1347
- .rk-pager-step[data-v-cc4bbb58]:disabled {
1217
+ .rk-pager-step[data-v-29950578]:disabled {
1348
1218
  opacity: 0.4;
1349
1219
  pointer-events: none;
1350
1220
  }
1351
- .rk-pager-page.is-active[data-v-cc4bbb58] {
1221
+ .rk-pager-page.is-active[data-v-29950578] {
1352
1222
  background: var(--color-primary);
1353
- color: #fff;
1223
+ color: var(--color-on-primary);
1354
1224
  font-weight: 500;
1355
1225
  }
1356
- .rk-pager-gap[data-v-cc4bbb58] {
1226
+ .rk-pager-gap[data-v-29950578] {
1357
1227
  display: grid;
1358
1228
  place-items: center;
1359
1229
  min-width: 2rem;
@@ -1361,32 +1231,32 @@ to {
1361
1231
  color: var(--color-ink-soft);
1362
1232
  }
1363
1233
 
1364
- .rk-tabs[data-v-b854e7f5] {
1234
+ .rk-tabs[data-v-2a18b30e] {
1365
1235
  display: flex;
1366
1236
  align-items: center;
1367
1237
  gap: 0.25rem;
1368
1238
  border-bottom: 1px solid color-mix(in srgb, var(--color-hair) 70%, transparent);
1369
1239
  }
1370
- .rk-tab[data-v-b854e7f5] {
1240
+ .rk-tab[data-v-2a18b30e] {
1371
1241
  position: relative;
1372
1242
  padding: 0.625rem 0.875rem;
1373
1243
  font-size: 0.875rem;
1374
1244
  color: var(--color-ink-soft);
1375
- transition: color 150ms;
1245
+ transition: color var(--duration-fast);
1376
1246
  }
1377
- .rk-tab[data-v-b854e7f5]:hover {
1247
+ .rk-tab[data-v-2a18b30e]:hover {
1378
1248
  color: var(--color-ink);
1379
1249
  }
1380
- .rk-tab[data-v-b854e7f5]:focus-visible {
1250
+ .rk-tab[data-v-2a18b30e]:focus-visible {
1381
1251
  outline: 2px solid var(--color-primary);
1382
1252
  outline-offset: -2px;
1383
1253
  border-radius: var(--radius-cell);
1384
1254
  }
1385
- .rk-tab.is-active[data-v-b854e7f5] {
1255
+ .rk-tab.is-active[data-v-2a18b30e] {
1386
1256
  color: var(--color-ink);
1387
1257
  font-weight: 500;
1388
1258
  }
1389
- .rk-tab.is-active[data-v-b854e7f5]::after {
1259
+ .rk-tab.is-active[data-v-2a18b30e]::after {
1390
1260
  content: '';
1391
1261
  position: absolute;
1392
1262
  inset-inline: 0.5rem;
@@ -1395,19 +1265,19 @@ to {
1395
1265
  border-radius: 9999px;
1396
1266
  background: var(--color-primary);
1397
1267
  }
1398
- .rk-tabpanel[data-v-b854e7f5] {
1268
+ .rk-tabpanel[data-v-2a18b30e] {
1399
1269
  padding-top: 1rem;
1400
1270
  }
1401
- .rk-tabpanel[data-v-b854e7f5]:focus-visible {
1271
+ .rk-tabpanel[data-v-2a18b30e]:focus-visible {
1402
1272
  outline: 2px solid var(--color-primary);
1403
1273
  outline-offset: 2px;
1404
1274
  }
1405
1275
 
1406
- .rk-tip[data-v-3ed61bd4] {
1276
+ .rk-tip[data-v-3a572640] {
1407
1277
  position: relative;
1408
1278
  display: inline-flex;
1409
1279
  }
1410
- .rk-tip-bubble[data-v-3ed61bd4] {
1280
+ .rk-tip-bubble[data-v-3a572640] {
1411
1281
  position: absolute;
1412
1282
  left: 50%;
1413
1283
  z-index: 60;
@@ -1424,20 +1294,20 @@ to {
1424
1294
  /* Out of the hit area while hidden, or it would swallow the pointer on its
1425
1295
  way to the control it describes. */
1426
1296
  pointer-events: none;
1427
- transition: opacity 150ms ease;
1297
+ transition: opacity var(--duration-fast) ease;
1428
1298
  }
1429
- .rk-tip-bubble.is-top[data-v-3ed61bd4] {
1299
+ .rk-tip-bubble.is-top[data-v-3a572640] {
1430
1300
  bottom: calc(100% + 0.375rem);
1431
1301
  }
1432
- .rk-tip-bubble.is-bottom[data-v-3ed61bd4] {
1302
+ .rk-tip-bubble.is-bottom[data-v-3a572640] {
1433
1303
  top: calc(100% + 0.375rem);
1434
1304
  }
1435
- .rk-tip:hover .rk-tip-bubble[data-v-3ed61bd4],
1436
- .rk-tip:focus-within .rk-tip-bubble[data-v-3ed61bd4] {
1305
+ .rk-tip:hover .rk-tip-bubble[data-v-3a572640],
1306
+ .rk-tip:focus-within .rk-tip-bubble[data-v-3a572640] {
1437
1307
  opacity: 1;
1438
1308
  }
1439
1309
  @media (prefers-reduced-motion: reduce) {
1440
- .rk-tip-bubble[data-v-3ed61bd4] {
1310
+ .rk-tip-bubble[data-v-3a572640] {
1441
1311
  transition: none;
1442
1312
  }
1443
1313
  }
@@ -1453,31 +1323,31 @@ to {
1453
1323
 
1454
1324
  So the flex row lives on an element the caller does not own, and the root is
1455
1325
  left for them to style. `TabBar` is built the same way for the same reason. */
1456
- .rk-nav-inner[data-v-5e640548] {
1326
+ .rk-nav-inner[data-v-52e5d553] {
1457
1327
  display: flex;
1458
1328
  align-items: center;
1459
1329
  gap: 0.25rem;
1460
1330
  }
1461
- .rk-nav-link[data-v-5e640548] {
1331
+ .rk-nav-link[data-v-52e5d553] {
1462
1332
  position: relative;
1463
1333
  border-radius: var(--radius-cell);
1464
1334
  padding: 0.5rem 0.75rem;
1465
1335
  font-size: 0.875rem;
1466
1336
  color: var(--color-ink-soft);
1467
- transition: color 150ms;
1337
+ transition: color var(--duration-fast);
1468
1338
  }
1469
- .rk-nav-link[data-v-5e640548]:hover {
1339
+ .rk-nav-link[data-v-52e5d553]:hover {
1470
1340
  color: var(--color-ink);
1471
1341
  }
1472
- .rk-nav-link[data-v-5e640548]:focus-visible {
1342
+ .rk-nav-link[data-v-52e5d553]:focus-visible {
1473
1343
  outline: 2px solid var(--color-primary);
1474
1344
  outline-offset: 2px;
1475
1345
  }
1476
- .rk-nav-link.is-active[data-v-5e640548] {
1346
+ .rk-nav-link.is-active[data-v-52e5d553] {
1477
1347
  color: var(--color-ink);
1478
1348
  font-weight: 500;
1479
1349
  }
1480
- .rk-nav-rule[data-v-5e640548] {
1350
+ .rk-nav-rule[data-v-52e5d553] {
1481
1351
  position: absolute;
1482
1352
  inset-inline: 0.75rem;
1483
1353
  bottom: -1px;
@@ -1486,13 +1356,13 @@ to {
1486
1356
  background: var(--color-primary);
1487
1357
  transform: scaleX(0);
1488
1358
  transform-origin: left;
1489
- transition: transform 300ms;
1359
+ transition: transform var(--duration-slow);
1490
1360
  }
1491
- .rk-nav-link.is-active .rk-nav-rule[data-v-5e640548] {
1361
+ .rk-nav-link.is-active .rk-nav-rule[data-v-52e5d553] {
1492
1362
  transform: scaleX(1);
1493
1363
  }
1494
1364
  @media (prefers-reduced-motion: reduce) {
1495
- .rk-nav-rule[data-v-5e640548] {
1365
+ .rk-nav-rule[data-v-52e5d553] {
1496
1366
  transition: none;
1497
1367
  }
1498
1368
  }