rei-kit 1.0.3 → 2.1.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-2855eea3],
3
+ .sheet-leave-active[data-v-2855eea3] {
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-2855eea3],
7
+ .sheet-leave-to[data-v-2855eea3] {
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-2855eea3],
14
+ .sheet-leave-active .sheet-panel[data-v-2855eea3] {
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-2855eea3],
18
+ .sheet-leave-to .sheet-panel[data-v-2855eea3] {
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-2855eea3],
23
+ .sheet-leave-to .sheet-panel[data-v-2855eea3] {
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-88982fee],
213
+ .tour-leave-active[data-v-88982fee] {
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-88982fee],
217
+ .tour-leave-to[data-v-88982fee] {
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-a76891c4],[data-v-a76891c4]:before,[data-v-a76891c4]:after,[data-v-a76891c4]::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-a76891c4] {
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-a76891c4] {
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-a76891c4] {
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-a76891c4] {
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-a76891c4] {
698
+ background-color: color-mix(in oklab, var(--color-surface) min(var(--surface-opacity), 88%), transparent);
699
+ }
700
+ }
701
+ .tab-bar-inner[data-v-a76891c4] {
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-a76891c4] {
728
706
  cursor: pointer;
729
707
  justify-content: center;
730
708
  align-items: center;
@@ -732,72 +710,78 @@ to {
732
710
  min-height: 52px;
733
711
  padding-block: calc(var(--spacing, .25rem) * 1.5);
734
712
  color: var(--color-ink-soft, #5c7480);
735
- border-radius: calc(var(--radius-shell) - 6px);
736
713
  flex-direction: column;
737
714
  flex: 1;
738
- transition: color .2s;
739
715
  display: flex;
740
716
  }
741
- .tab-link[data-v-d3cd9a8a]:hover {
717
+ .tab-link[data-v-a76891c4]:focus-visible {
718
+ outline: 2px solid var(--color-primary);
719
+ outline-offset: 2px;
720
+ }
721
+ .tab-link[data-v-a76891c4] {
722
+ border-radius: calc(var(--radius-shell) - 6px);
723
+ transition: color var(--duration-base) ease;
724
+ }
725
+ .tab-link[data-v-a76891c4]:hover {
742
726
  color: var(--color-ink, #0f2229);
743
727
  }
744
- .tab-icon-slot[data-v-d3cd9a8a] {
728
+ .tab-icon-slot[data-v-a76891c4] {
745
729
  height: calc(var(--spacing, .25rem) * 7);
746
730
  width: calc(var(--spacing, .25rem) * 12);
747
731
  transition-property: all;
748
732
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
749
733
  transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
750
- --tw-duration: .2s;
734
+ --tw-duration: var(--duration-base);
735
+ transition-duration: var(--duration-base);
751
736
  --tw-ease: var(--ease-out, cubic-bezier(0, 0, .2, 1));
752
- transition-duration: .2s;
753
737
  transition-timing-function: var(--ease-out, cubic-bezier(0, 0, .2, 1));
754
738
  border-radius: 3.40282e38px;
755
739
  justify-content: center;
756
740
  align-items: center;
757
741
  display: flex;
758
742
  }
759
- .tab-link:active .tab-icon-slot[data-v-d3cd9a8a] {
743
+ .tab-link:active .tab-icon-slot[data-v-a76891c4] {
760
744
  transform: scale(.88);
761
745
  }
762
- .is-active[data-v-d3cd9a8a] {
746
+ .is-active[data-v-a76891c4] {
763
747
  color: var(--color-primary, #26667f);
764
748
  }
765
- .is-active .tab-icon-slot[data-v-d3cd9a8a] {
749
+ .is-active .tab-icon-slot[data-v-a76891c4] {
766
750
  background-color: var(--color-muted, #ddf4e7);
767
751
  }
768
- .tab-icon[data-v-d3cd9a8a] {
752
+ .tab-icon[data-v-a76891c4] {
769
753
  stroke-width: 2px;
770
754
  width: 18px;
771
755
  height: 18px;
772
756
  transition-property: transform, translate, scale, rotate;
773
757
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
774
758
  transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
775
- --tw-duration: .2s;
776
- transition-duration: .2s;
759
+ --tw-duration: var(--duration-base);
760
+ transition-duration: var(--duration-base);
777
761
  }
778
- .is-active .tab-icon[data-v-d3cd9a8a] {
762
+ .is-active .tab-icon[data-v-a76891c4] {
779
763
  --tw-scale-x: 110%;
780
764
  --tw-scale-y: 110%;
781
765
  --tw-scale-z: 110%;
782
766
  scale: var(--tw-scale-x) var(--tw-scale-y);
783
767
  stroke-width: 2.5px;
784
768
  }
785
- .tab-label[data-v-d3cd9a8a] {
769
+ .tab-label[data-v-a76891c4] {
786
770
  --tw-leading: 1;
787
771
  --tw-font-weight: var(--font-weight-medium, 500);
788
772
  font-size: 10px;
789
773
  line-height: 1;
790
774
  font-weight: var(--font-weight-medium, 500);
791
775
  }
792
- .is-active .tab-label[data-v-d3cd9a8a] {
776
+ .is-active .tab-label[data-v-a76891c4] {
793
777
  --tw-font-weight: var(--font-weight-semibold, 600);
794
778
  font-weight: var(--font-weight-semibold, 600);
795
779
  }
796
780
  @media (prefers-reduced-motion: reduce) {
797
- .tab-icon-slot[data-v-d3cd9a8a], .tab-icon[data-v-d3cd9a8a] {
781
+ .tab-icon-slot[data-v-a76891c4], .tab-icon[data-v-a76891c4] {
798
782
  transition: none;
799
783
  }
800
- .tab-link:active .tab-icon-slot[data-v-d3cd9a8a] {
784
+ .tab-link:active .tab-icon-slot[data-v-a76891c4] {
801
785
  transform: none;
802
786
  }
803
787
  }
@@ -816,112 +800,6 @@ to {
816
800
  inherits: false;
817
801
  initial-value: 0;
818
802
  }
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
803
  @property --tw-duration {
926
804
  syntax: "*";
927
805
  inherits: false
@@ -954,20 +832,20 @@ to {
954
832
  inherits: false
955
833
  }
956
834
 
957
- .install-enter-active[data-v-34c86300],
958
- .install-leave-active[data-v-34c86300] {
835
+ .install-enter-active[data-v-552a4ac9],
836
+ .install-leave-active[data-v-552a4ac9] {
959
837
  transition:
960
- opacity 200ms ease,
961
- transform 200ms ease;
838
+ opacity var(--duration-base) ease,
839
+ transform var(--duration-base) ease;
962
840
  }
963
- .install-enter-from[data-v-34c86300],
964
- .install-leave-to[data-v-34c86300] {
841
+ .install-enter-from[data-v-552a4ac9],
842
+ .install-leave-to[data-v-552a4ac9] {
965
843
  opacity: 0;
966
844
  transform: translateY(-4px);
967
845
  }
968
846
  @media (prefers-reduced-motion: reduce) {
969
- .install-enter-from[data-v-34c86300],
970
- .install-leave-to[data-v-34c86300] {
847
+ .install-enter-from[data-v-552a4ac9],
848
+ .install-leave-to[data-v-552a4ac9] {
971
849
  transform: none;
972
850
  }
973
851
  }
@@ -975,7 +853,7 @@ to {
975
853
  /* Sits above the tab bar and the action button, because it outranks both — but
976
854
  absolutely inside its container, so on a desktop-sized shell it does not
977
855
  float off into the page. Give the shell `relative`. */
978
- .update-card[data-v-7cf60526] {
856
+ .update-card[data-v-ac5bec25] {
979
857
  border-color: var(--color-hair);
980
858
  background: color-mix(in srgb, var(--color-surface) 95%, transparent);
981
859
  border-radius: var(--radius-card);
@@ -990,11 +868,11 @@ to {
990
868
  border-width: 1px;
991
869
  padding: 0.75rem;
992
870
  backdrop-filter: blur(12px);
993
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1);
871
+ box-shadow: var(--shadow-overlay);
994
872
  transform: translateX(-50%);
995
873
  bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
996
874
  }
997
- .update-icon[data-v-7cf60526] {
875
+ .update-icon[data-v-ac5bec25] {
998
876
  background: color-mix(in srgb, var(--color-primary) 15%, transparent);
999
877
  color: var(--color-primary);
1000
878
  display: flex;
@@ -1005,31 +883,31 @@ to {
1005
883
  justify-content: center;
1006
884
  border-radius: 0.75rem;
1007
885
  }
1008
- .update-enter-active[data-v-7cf60526],
1009
- .update-leave-active[data-v-7cf60526] {
886
+ .update-enter-active[data-v-ac5bec25],
887
+ .update-leave-active[data-v-ac5bec25] {
1010
888
  transition:
1011
- opacity 250ms ease,
1012
- transform 250ms cubic-bezier(0.32, 0.72, 0, 1);
889
+ opacity var(--duration-slow) ease,
890
+ transform var(--duration-slow) var(--ease-sheet);
1013
891
  }
1014
- .update-enter-from[data-v-7cf60526],
1015
- .update-leave-to[data-v-7cf60526] {
892
+ .update-enter-from[data-v-ac5bec25],
893
+ .update-leave-to[data-v-ac5bec25] {
1016
894
  opacity: 0;
1017
895
  transform: translate(-50%, 1rem);
1018
896
  }
1019
897
  @media (prefers-reduced-motion: reduce) {
1020
- .update-enter-from[data-v-7cf60526],
1021
- .update-leave-to[data-v-7cf60526] {
898
+ .update-enter-from[data-v-ac5bec25],
899
+ .update-leave-to[data-v-ac5bec25] {
1022
900
  transform: translate(-50%, 0);
1023
901
  }
1024
902
  }
1025
903
 
1026
- .rk-accordion[data-v-d7bddb65] {
904
+ .rk-accordion[data-v-03e2e1d0] {
1027
905
  border-top: 1px solid color-mix(in srgb, var(--color-hair) 70%, transparent);
1028
906
  }
1029
- .rk-accordion-item[data-v-d7bddb65] {
907
+ .rk-accordion-item[data-v-03e2e1d0] {
1030
908
  border-bottom: 1px solid color-mix(in srgb, var(--color-hair) 70%, transparent);
1031
909
  }
1032
- .rk-accordion-control[data-v-d7bddb65] {
910
+ .rk-accordion-control[data-v-03e2e1d0] {
1033
911
  display: flex;
1034
912
  width: 100%;
1035
913
  cursor: pointer;
@@ -1038,21 +916,21 @@ to {
1038
916
  gap: 1.5rem;
1039
917
  padding: 1.25rem 0;
1040
918
  text-align: left;
1041
- transition: color 150ms;
919
+ transition: color var(--duration-fast);
1042
920
  }
1043
- .rk-accordion-control[data-v-d7bddb65]:hover {
921
+ .rk-accordion-control[data-v-03e2e1d0]:hover {
1044
922
  color: var(--color-primary);
1045
923
  }
1046
- .rk-accordion-control[data-v-d7bddb65]:focus-visible {
924
+ .rk-accordion-control[data-v-03e2e1d0]:focus-visible {
1047
925
  outline: 2px solid var(--color-primary);
1048
926
  outline-offset: 2px;
1049
927
  }
1050
- .rk-accordion-title[data-v-d7bddb65] {
928
+ .rk-accordion-title[data-v-03e2e1d0] {
1051
929
  color: var(--color-ink);
1052
930
  font-size: 1rem;
1053
931
  font-weight: 500;
1054
932
  }
1055
- .rk-accordion-mark[data-v-d7bddb65] {
933
+ .rk-accordion-mark[data-v-03e2e1d0] {
1056
934
  position: relative;
1057
935
  display: grid;
1058
936
  place-items: center;
@@ -1060,85 +938,85 @@ to {
1060
938
  width: 1.5rem;
1061
939
  height: 1.5rem;
1062
940
  }
1063
- .rk-accordion-bar[data-v-d7bddb65] {
941
+ .rk-accordion-bar[data-v-03e2e1d0] {
1064
942
  position: absolute;
1065
943
  height: 1px;
1066
944
  width: 0.875rem;
1067
945
  background: var(--color-ink-soft);
1068
946
  }
1069
- .rk-accordion-bar-turn[data-v-d7bddb65] {
947
+ .rk-accordion-bar-turn[data-v-03e2e1d0] {
1070
948
  transform: rotate(90deg);
1071
- transition: transform 420ms ease-out;
949
+ transition: transform var(--duration-slower) ease-out;
1072
950
  }
1073
- .rk-accordion-bar-turn.is-open[data-v-d7bddb65] {
951
+ .rk-accordion-bar-turn.is-open[data-v-03e2e1d0] {
1074
952
  transform: rotate(0deg);
1075
953
  }
1076
954
 
1077
955
  /* 0fr to 1fr is the whole trick: a grid row can be animated to a height that
1078
956
  was never measured, which is what `height: auto` cannot do. */
1079
- .rk-accordion-panel[data-v-d7bddb65] {
957
+ .rk-accordion-panel[data-v-03e2e1d0] {
1080
958
  display: grid;
1081
959
  grid-template-rows: 0fr;
1082
- transition: grid-template-rows 420ms ease-out;
960
+ transition: grid-template-rows var(--duration-slower) ease-out;
1083
961
  }
1084
- .rk-accordion-panel.is-open[data-v-d7bddb65] {
962
+ .rk-accordion-panel.is-open[data-v-03e2e1d0] {
1085
963
  grid-template-rows: 1fr;
1086
964
  }
1087
- .rk-accordion-clip[data-v-d7bddb65] {
965
+ .rk-accordion-clip[data-v-03e2e1d0] {
1088
966
  overflow: hidden;
1089
967
  }
1090
- .rk-accordion-body[data-v-d7bddb65] {
968
+ .rk-accordion-body[data-v-03e2e1d0] {
1091
969
  max-width: 68ch;
1092
970
  padding-bottom: 1.5rem;
1093
971
  color: var(--color-ink-soft);
1094
972
  line-height: 1.625;
1095
973
  opacity: 0;
1096
- transition: opacity 300ms;
974
+ transition: opacity var(--duration-slow);
1097
975
  }
1098
- .rk-accordion-body.is-open[data-v-d7bddb65] {
976
+ .rk-accordion-body.is-open[data-v-03e2e1d0] {
1099
977
  opacity: 1;
1100
978
  }
1101
979
  @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] {
980
+ .rk-accordion-panel[data-v-03e2e1d0],
981
+ .rk-accordion-bar-turn[data-v-03e2e1d0],
982
+ .rk-accordion-body[data-v-03e2e1d0] {
1105
983
  transition: none;
1106
984
  }
1107
985
  }
1108
986
 
1109
- .rk-crumbs[data-v-85ee4b4e] {
987
+ .rk-crumbs[data-v-dcc01b03] {
1110
988
  display: flex;
1111
989
  flex-wrap: wrap;
1112
990
  align-items: center;
1113
991
  gap: 0.5rem;
1114
992
  font-size: 0.8125rem;
1115
993
  }
1116
- .rk-crumb[data-v-85ee4b4e] {
994
+ .rk-crumb[data-v-dcc01b03] {
1117
995
  display: flex;
1118
996
  align-items: center;
1119
997
  gap: 0.5rem;
1120
998
  }
1121
- .rk-crumb-link[data-v-85ee4b4e] {
999
+ .rk-crumb-link[data-v-dcc01b03] {
1122
1000
  color: var(--color-ink-soft);
1123
- transition: color 150ms;
1001
+ transition: color var(--duration-fast);
1124
1002
  }
1125
- .rk-crumb-link[data-v-85ee4b4e]:hover {
1003
+ .rk-crumb-link[data-v-dcc01b03]:hover {
1126
1004
  color: var(--color-ink);
1127
1005
  }
1128
- .rk-crumb-link[data-v-85ee4b4e]:focus-visible {
1006
+ .rk-crumb-link[data-v-dcc01b03]:focus-visible {
1129
1007
  outline: 2px solid var(--color-primary);
1130
1008
  outline-offset: 2px;
1131
1009
  border-radius: 2px;
1132
1010
  }
1133
- .rk-crumb-current[data-v-85ee4b4e] {
1011
+ .rk-crumb-current[data-v-dcc01b03] {
1134
1012
  color: var(--color-ink);
1135
1013
  font-weight: 500;
1136
1014
  }
1137
- .rk-crumb-sep[data-v-85ee4b4e] {
1015
+ .rk-crumb-sep[data-v-dcc01b03] {
1138
1016
  color: var(--color-hair);
1139
1017
  }
1140
1018
 
1141
- .rk-disclosure-control[data-v-e09c1481] {
1019
+ .rk-disclosure-control[data-v-ad5c09f5] {
1142
1020
  display: flex;
1143
1021
  width: 100%;
1144
1022
  cursor: pointer;
@@ -1147,21 +1025,21 @@ to {
1147
1025
  gap: 1.5rem;
1148
1026
  padding: 1.25rem 0;
1149
1027
  text-align: left;
1150
- transition: color 150ms;
1028
+ transition: color var(--duration-fast);
1151
1029
  }
1152
- .rk-disclosure-control[data-v-e09c1481]:hover {
1030
+ .rk-disclosure-control[data-v-ad5c09f5]:hover {
1153
1031
  color: var(--color-primary);
1154
1032
  }
1155
- .rk-disclosure-control[data-v-e09c1481]:focus-visible {
1033
+ .rk-disclosure-control[data-v-ad5c09f5]:focus-visible {
1156
1034
  outline: 2px solid var(--color-primary);
1157
1035
  outline-offset: 2px;
1158
1036
  }
1159
- .rk-disclosure-title[data-v-e09c1481] {
1037
+ .rk-disclosure-title[data-v-ad5c09f5] {
1160
1038
  color: var(--color-ink);
1161
1039
  font-size: 1rem;
1162
1040
  font-weight: 500;
1163
1041
  }
1164
- .rk-disclosure-mark[data-v-e09c1481] {
1042
+ .rk-disclosure-mark[data-v-ad5c09f5] {
1165
1043
  position: relative;
1166
1044
  display: grid;
1167
1045
  place-items: center;
@@ -1169,53 +1047,53 @@ to {
1169
1047
  width: 1.5rem;
1170
1048
  height: 1.5rem;
1171
1049
  }
1172
- .rk-disclosure-bar[data-v-e09c1481] {
1050
+ .rk-disclosure-bar[data-v-ad5c09f5] {
1173
1051
  position: absolute;
1174
1052
  height: 1px;
1175
1053
  width: 0.875rem;
1176
1054
  background: var(--color-ink-soft);
1177
1055
  }
1178
- .rk-disclosure-turn[data-v-e09c1481] {
1056
+ .rk-disclosure-turn[data-v-ad5c09f5] {
1179
1057
  transform: rotate(90deg);
1180
- transition: transform 420ms ease-out;
1058
+ transition: transform var(--duration-slower) ease-out;
1181
1059
  }
1182
- .rk-disclosure-turn.is-open[data-v-e09c1481] {
1060
+ .rk-disclosure-turn.is-open[data-v-ad5c09f5] {
1183
1061
  transform: rotate(0deg);
1184
1062
  }
1185
1063
 
1186
1064
  /* 0fr to 1fr is the whole trick: a grid row can be animated to a height that
1187
1065
  was never measured, which `height: auto` cannot do. */
1188
- .rk-disclosure-panel[data-v-e09c1481] {
1066
+ .rk-disclosure-panel[data-v-ad5c09f5] {
1189
1067
  display: grid;
1190
1068
  grid-template-rows: 0fr;
1191
- transition: grid-template-rows 420ms ease-out;
1069
+ transition: grid-template-rows var(--duration-slower) ease-out;
1192
1070
  }
1193
- .rk-disclosure-panel.is-open[data-v-e09c1481] {
1071
+ .rk-disclosure-panel.is-open[data-v-ad5c09f5] {
1194
1072
  grid-template-rows: 1fr;
1195
1073
  }
1196
- .rk-disclosure-clip[data-v-e09c1481] {
1074
+ .rk-disclosure-clip[data-v-ad5c09f5] {
1197
1075
  overflow: hidden;
1198
1076
  }
1199
- .rk-disclosure-body[data-v-e09c1481] {
1077
+ .rk-disclosure-body[data-v-ad5c09f5] {
1200
1078
  max-width: 68ch;
1201
1079
  padding-bottom: 1.5rem;
1202
1080
  color: var(--color-ink-soft);
1203
1081
  line-height: 1.625;
1204
1082
  opacity: 0;
1205
- transition: opacity 300ms;
1083
+ transition: opacity var(--duration-slow);
1206
1084
  }
1207
- .rk-disclosure-body.is-open[data-v-e09c1481] {
1085
+ .rk-disclosure-body.is-open[data-v-ad5c09f5] {
1208
1086
  opacity: 1;
1209
1087
  }
1210
1088
  @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] {
1089
+ .rk-disclosure-panel[data-v-ad5c09f5],
1090
+ .rk-disclosure-turn[data-v-ad5c09f5],
1091
+ .rk-disclosure-body[data-v-ad5c09f5] {
1214
1092
  transition: none;
1215
1093
  }
1216
1094
  }
1217
1095
 
1218
- .rk-modal-scrim[data-v-e092f731] {
1096
+ .rk-modal-scrim[data-v-61956691] {
1219
1097
  position: fixed;
1220
1098
  inset: 0;
1221
1099
  z-index: 50;
@@ -1225,31 +1103,29 @@ to {
1225
1103
  background: color-mix(in srgb, var(--color-ink) 70%, transparent);
1226
1104
  backdrop-filter: blur(4px);
1227
1105
  }
1228
- .rk-modal-panel[data-v-e092f731] {
1106
+ .rk-modal-panel[data-v-61956691] {
1229
1107
  width: 100%;
1230
1108
  max-width: 28rem;
1231
1109
  max-height: 85vh;
1232
1110
  overflow-y: auto;
1233
1111
  border-radius: var(--radius-card);
1234
- background: var(--color-surface);
1235
1112
  padding: 1.5rem;
1236
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.2);
1237
1113
  }
1238
- .rk-modal-panel[data-v-e092f731]:focus {
1114
+ .rk-modal-panel[data-v-61956691]:focus {
1239
1115
  outline: none;
1240
1116
  }
1241
- .rk-modal-head[data-v-e092f731] {
1117
+ .rk-modal-head[data-v-61956691] {
1242
1118
  display: flex;
1243
1119
  align-items: flex-start;
1244
1120
  justify-content: space-between;
1245
1121
  gap: 1rem;
1246
1122
  }
1247
- .rk-modal-title[data-v-e092f731] {
1123
+ .rk-modal-title[data-v-61956691] {
1248
1124
  font-size: 1.0625rem;
1249
1125
  font-weight: 600;
1250
1126
  color: var(--color-ink);
1251
1127
  }
1252
- .rk-modal-close[data-v-e092f731] {
1128
+ .rk-modal-close[data-v-61956691] {
1253
1129
  display: grid;
1254
1130
  place-items: center;
1255
1131
  flex-shrink: 0;
@@ -1257,71 +1133,71 @@ to {
1257
1133
  height: 2rem;
1258
1134
  border-radius: 9999px;
1259
1135
  color: var(--color-ink-soft);
1260
- transition: background-color 150ms;
1136
+ transition: background-color var(--duration-fast);
1261
1137
  }
1262
- .rk-modal-close[data-v-e092f731]:hover {
1138
+ .rk-modal-close[data-v-61956691]:hover {
1263
1139
  background: var(--color-muted);
1264
1140
  }
1265
- .rk-modal-close[data-v-e092f731]:focus-visible {
1141
+ .rk-modal-close[data-v-61956691]:focus-visible {
1266
1142
  outline: 2px solid var(--color-primary);
1267
1143
  outline-offset: 2px;
1268
1144
  }
1269
- .rk-modal-close svg[data-v-e092f731] {
1145
+ .rk-modal-close svg[data-v-61956691] {
1270
1146
  width: 1rem;
1271
1147
  height: 1rem;
1272
1148
  }
1273
- .rk-modal-body[data-v-e092f731] {
1149
+ .rk-modal-body[data-v-61956691] {
1274
1150
  margin-top: 0.75rem;
1275
1151
  color: var(--color-ink-soft);
1276
1152
  font-size: 0.875rem;
1277
1153
  line-height: 1.625;
1278
1154
  }
1279
- .rk-modal-actions[data-v-e092f731] {
1155
+ .rk-modal-actions[data-v-61956691] {
1280
1156
  margin-top: 1.5rem;
1281
1157
  display: flex;
1282
1158
  justify-content: flex-end;
1283
1159
  gap: 0.5rem;
1284
1160
  }
1285
- .rk-modal-enter-active[data-v-e092f731],
1286
- .rk-modal-leave-active[data-v-e092f731] {
1287
- transition: opacity 180ms ease;
1161
+ .rk-modal-enter-active[data-v-61956691],
1162
+ .rk-modal-leave-active[data-v-61956691] {
1163
+ transition: opacity var(--duration-base) ease;
1288
1164
  }
1289
- .rk-modal-enter-active .rk-modal-panel[data-v-e092f731],
1290
- .rk-modal-leave-active .rk-modal-panel[data-v-e092f731] {
1165
+ .rk-modal-enter-active .rk-modal-panel[data-v-61956691],
1166
+ .rk-modal-leave-active .rk-modal-panel[data-v-61956691] {
1291
1167
  transition:
1292
- transform 180ms cubic-bezier(0.32, 0.72, 0, 1),
1293
- opacity 180ms ease;
1168
+ transform var(--duration-base) var(--ease-sheet),
1169
+ opacity var(--duration-base) ease;
1294
1170
  }
1295
- .rk-modal-enter-from[data-v-e092f731],
1296
- .rk-modal-leave-to[data-v-e092f731] {
1171
+ .rk-modal-enter-from[data-v-61956691],
1172
+ .rk-modal-leave-to[data-v-61956691] {
1297
1173
  opacity: 0;
1298
1174
  }
1299
1175
 
1300
1176
  /* 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] {
1177
+ .rk-modal-enter-from .rk-modal-panel[data-v-61956691],
1178
+ .rk-modal-leave-to .rk-modal-panel[data-v-61956691] {
1303
1179
  transform: scale(0.96);
1304
1180
  opacity: 0;
1305
1181
  }
1306
1182
  @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;
1183
+ .rk-modal-enter-active .rk-modal-panel[data-v-61956691],
1184
+ .rk-modal-leave-active .rk-modal-panel[data-v-61956691] {
1185
+ transition: opacity var(--duration-base) ease;
1310
1186
  transform: none;
1311
1187
  }
1312
- .rk-modal-enter-from .rk-modal-panel[data-v-e092f731],
1313
- .rk-modal-leave-to .rk-modal-panel[data-v-e092f731] {
1188
+ .rk-modal-enter-from .rk-modal-panel[data-v-61956691],
1189
+ .rk-modal-leave-to .rk-modal-panel[data-v-61956691] {
1314
1190
  transform: none;
1315
1191
  }
1316
1192
  }
1317
1193
 
1318
- .rk-pager[data-v-cc4bbb58] {
1194
+ .rk-pager[data-v-29950578] {
1319
1195
  display: flex;
1320
1196
  align-items: center;
1321
1197
  gap: 0.25rem;
1322
1198
  }
1323
- .rk-pager-step[data-v-cc4bbb58],
1324
- .rk-pager-page[data-v-cc4bbb58] {
1199
+ .rk-pager-step[data-v-29950578],
1200
+ .rk-pager-page[data-v-29950578] {
1325
1201
  display: grid;
1326
1202
  place-items: center;
1327
1203
  min-width: 2rem;
@@ -1331,29 +1207,29 @@ to {
1331
1207
  font-size: 0.875rem;
1332
1208
  color: var(--color-ink-soft);
1333
1209
  transition:
1334
- background-color 150ms,
1335
- color 150ms;
1210
+ background-color var(--duration-fast),
1211
+ color var(--duration-fast);
1336
1212
  }
1337
- .rk-pager-step[data-v-cc4bbb58]:hover:not(:disabled),
1338
- .rk-pager-page[data-v-cc4bbb58]:hover {
1213
+ .rk-pager-step[data-v-29950578]:hover:not(:disabled),
1214
+ .rk-pager-page[data-v-29950578]:hover {
1339
1215
  background: var(--color-muted);
1340
1216
  color: var(--color-ink);
1341
1217
  }
1342
- .rk-pager-step[data-v-cc4bbb58]:focus-visible,
1343
- .rk-pager-page[data-v-cc4bbb58]:focus-visible {
1218
+ .rk-pager-step[data-v-29950578]:focus-visible,
1219
+ .rk-pager-page[data-v-29950578]:focus-visible {
1344
1220
  outline: 2px solid var(--color-primary);
1345
1221
  outline-offset: 2px;
1346
1222
  }
1347
- .rk-pager-step[data-v-cc4bbb58]:disabled {
1223
+ .rk-pager-step[data-v-29950578]:disabled {
1348
1224
  opacity: 0.4;
1349
1225
  pointer-events: none;
1350
1226
  }
1351
- .rk-pager-page.is-active[data-v-cc4bbb58] {
1227
+ .rk-pager-page.is-active[data-v-29950578] {
1352
1228
  background: var(--color-primary);
1353
- color: #fff;
1229
+ color: var(--color-on-primary);
1354
1230
  font-weight: 500;
1355
1231
  }
1356
- .rk-pager-gap[data-v-cc4bbb58] {
1232
+ .rk-pager-gap[data-v-29950578] {
1357
1233
  display: grid;
1358
1234
  place-items: center;
1359
1235
  min-width: 2rem;
@@ -1361,32 +1237,32 @@ to {
1361
1237
  color: var(--color-ink-soft);
1362
1238
  }
1363
1239
 
1364
- .rk-tabs[data-v-b854e7f5] {
1240
+ .rk-tabs[data-v-2a18b30e] {
1365
1241
  display: flex;
1366
1242
  align-items: center;
1367
1243
  gap: 0.25rem;
1368
1244
  border-bottom: 1px solid color-mix(in srgb, var(--color-hair) 70%, transparent);
1369
1245
  }
1370
- .rk-tab[data-v-b854e7f5] {
1246
+ .rk-tab[data-v-2a18b30e] {
1371
1247
  position: relative;
1372
1248
  padding: 0.625rem 0.875rem;
1373
1249
  font-size: 0.875rem;
1374
1250
  color: var(--color-ink-soft);
1375
- transition: color 150ms;
1251
+ transition: color var(--duration-fast);
1376
1252
  }
1377
- .rk-tab[data-v-b854e7f5]:hover {
1253
+ .rk-tab[data-v-2a18b30e]:hover {
1378
1254
  color: var(--color-ink);
1379
1255
  }
1380
- .rk-tab[data-v-b854e7f5]:focus-visible {
1256
+ .rk-tab[data-v-2a18b30e]:focus-visible {
1381
1257
  outline: 2px solid var(--color-primary);
1382
1258
  outline-offset: -2px;
1383
1259
  border-radius: var(--radius-cell);
1384
1260
  }
1385
- .rk-tab.is-active[data-v-b854e7f5] {
1261
+ .rk-tab.is-active[data-v-2a18b30e] {
1386
1262
  color: var(--color-ink);
1387
1263
  font-weight: 500;
1388
1264
  }
1389
- .rk-tab.is-active[data-v-b854e7f5]::after {
1265
+ .rk-tab.is-active[data-v-2a18b30e]::after {
1390
1266
  content: '';
1391
1267
  position: absolute;
1392
1268
  inset-inline: 0.5rem;
@@ -1395,19 +1271,19 @@ to {
1395
1271
  border-radius: 9999px;
1396
1272
  background: var(--color-primary);
1397
1273
  }
1398
- .rk-tabpanel[data-v-b854e7f5] {
1274
+ .rk-tabpanel[data-v-2a18b30e] {
1399
1275
  padding-top: 1rem;
1400
1276
  }
1401
- .rk-tabpanel[data-v-b854e7f5]:focus-visible {
1277
+ .rk-tabpanel[data-v-2a18b30e]:focus-visible {
1402
1278
  outline: 2px solid var(--color-primary);
1403
1279
  outline-offset: 2px;
1404
1280
  }
1405
1281
 
1406
- .rk-tip[data-v-3ed61bd4] {
1282
+ .rk-tip[data-v-3a572640] {
1407
1283
  position: relative;
1408
1284
  display: inline-flex;
1409
1285
  }
1410
- .rk-tip-bubble[data-v-3ed61bd4] {
1286
+ .rk-tip-bubble[data-v-3a572640] {
1411
1287
  position: absolute;
1412
1288
  left: 50%;
1413
1289
  z-index: 60;
@@ -1424,20 +1300,20 @@ to {
1424
1300
  /* Out of the hit area while hidden, or it would swallow the pointer on its
1425
1301
  way to the control it describes. */
1426
1302
  pointer-events: none;
1427
- transition: opacity 150ms ease;
1303
+ transition: opacity var(--duration-fast) ease;
1428
1304
  }
1429
- .rk-tip-bubble.is-top[data-v-3ed61bd4] {
1305
+ .rk-tip-bubble.is-top[data-v-3a572640] {
1430
1306
  bottom: calc(100% + 0.375rem);
1431
1307
  }
1432
- .rk-tip-bubble.is-bottom[data-v-3ed61bd4] {
1308
+ .rk-tip-bubble.is-bottom[data-v-3a572640] {
1433
1309
  top: calc(100% + 0.375rem);
1434
1310
  }
1435
- .rk-tip:hover .rk-tip-bubble[data-v-3ed61bd4],
1436
- .rk-tip:focus-within .rk-tip-bubble[data-v-3ed61bd4] {
1311
+ .rk-tip:hover .rk-tip-bubble[data-v-3a572640],
1312
+ .rk-tip:focus-within .rk-tip-bubble[data-v-3a572640] {
1437
1313
  opacity: 1;
1438
1314
  }
1439
1315
  @media (prefers-reduced-motion: reduce) {
1440
- .rk-tip-bubble[data-v-3ed61bd4] {
1316
+ .rk-tip-bubble[data-v-3a572640] {
1441
1317
  transition: none;
1442
1318
  }
1443
1319
  }
@@ -1453,31 +1329,31 @@ to {
1453
1329
 
1454
1330
  So the flex row lives on an element the caller does not own, and the root is
1455
1331
  left for them to style. `TabBar` is built the same way for the same reason. */
1456
- .rk-nav-inner[data-v-5e640548] {
1332
+ .rk-nav-inner[data-v-52e5d553] {
1457
1333
  display: flex;
1458
1334
  align-items: center;
1459
1335
  gap: 0.25rem;
1460
1336
  }
1461
- .rk-nav-link[data-v-5e640548] {
1337
+ .rk-nav-link[data-v-52e5d553] {
1462
1338
  position: relative;
1463
1339
  border-radius: var(--radius-cell);
1464
1340
  padding: 0.5rem 0.75rem;
1465
1341
  font-size: 0.875rem;
1466
1342
  color: var(--color-ink-soft);
1467
- transition: color 150ms;
1343
+ transition: color var(--duration-fast);
1468
1344
  }
1469
- .rk-nav-link[data-v-5e640548]:hover {
1345
+ .rk-nav-link[data-v-52e5d553]:hover {
1470
1346
  color: var(--color-ink);
1471
1347
  }
1472
- .rk-nav-link[data-v-5e640548]:focus-visible {
1348
+ .rk-nav-link[data-v-52e5d553]:focus-visible {
1473
1349
  outline: 2px solid var(--color-primary);
1474
1350
  outline-offset: 2px;
1475
1351
  }
1476
- .rk-nav-link.is-active[data-v-5e640548] {
1352
+ .rk-nav-link.is-active[data-v-52e5d553] {
1477
1353
  color: var(--color-ink);
1478
1354
  font-weight: 500;
1479
1355
  }
1480
- .rk-nav-rule[data-v-5e640548] {
1356
+ .rk-nav-rule[data-v-52e5d553] {
1481
1357
  position: absolute;
1482
1358
  inset-inline: 0.75rem;
1483
1359
  bottom: -1px;
@@ -1486,13 +1362,13 @@ to {
1486
1362
  background: var(--color-primary);
1487
1363
  transform: scaleX(0);
1488
1364
  transform-origin: left;
1489
- transition: transform 300ms;
1365
+ transition: transform var(--duration-slow);
1490
1366
  }
1491
- .rk-nav-link.is-active .rk-nav-rule[data-v-5e640548] {
1367
+ .rk-nav-link.is-active .rk-nav-rule[data-v-52e5d553] {
1492
1368
  transform: scaleX(1);
1493
1369
  }
1494
1370
  @media (prefers-reduced-motion: reduce) {
1495
- .rk-nav-rule[data-v-5e640548] {
1371
+ .rk-nav-rule[data-v-52e5d553] {
1496
1372
  transition: none;
1497
1373
  }
1498
1374
  }