@dorsk/tsumikit 0.77.0 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/components/atoms/Artwork.svelte +5 -3
  2. package/dist/components/atoms/Badge.svelte +1 -1
  3. package/dist/components/atoms/Button.svelte +24 -8
  4. package/dist/components/atoms/Card.svelte +18 -12
  5. package/dist/components/atoms/Checkbox.svelte +4 -2
  6. package/dist/components/atoms/Gauge.svelte +2 -2
  7. package/dist/components/atoms/Input.svelte +6 -3
  8. package/dist/components/atoms/Kbd.svelte +1 -1
  9. package/dist/components/atoms/Progress.svelte +1 -1
  10. package/dist/components/atoms/SegmentedProgress.svelte +2 -2
  11. package/dist/components/atoms/Select.svelte +9 -3
  12. package/dist/components/atoms/Slider.svelte +8 -6
  13. package/dist/components/atoms/Swatch.svelte +1 -1
  14. package/dist/components/atoms/Switch.svelte +3 -2
  15. package/dist/components/atoms/Textarea.svelte +6 -3
  16. package/dist/components/layouts/AppShell.svelte +7 -6
  17. package/dist/components/layouts/MasterDetail.svelte +3 -3
  18. package/dist/components/layouts/NavBar.svelte +7 -4
  19. package/dist/components/layouts/NavSection.svelte +1 -1
  20. package/dist/components/layouts/ResizablePanel.svelte +7 -7
  21. package/dist/components/layouts/TabBar.svelte +2 -2
  22. package/dist/components/molecules/Accordion.svelte +2 -2
  23. package/dist/components/molecules/AttachmentList.svelte +2 -2
  24. package/dist/components/molecules/Callout.svelte +5 -5
  25. package/dist/components/molecules/CapBar.svelte +2 -2
  26. package/dist/components/molecules/ChatBubble.svelte +4 -0
  27. package/dist/components/molecules/CodeBlock.svelte +12 -5
  28. package/dist/components/molecules/Combobox.svelte +3 -3
  29. package/dist/components/molecules/Drawer.svelte +8 -8
  30. package/dist/components/molecules/EmojiPicker.svelte +1 -1
  31. package/dist/components/molecules/FileButton.svelte +16 -4
  32. package/dist/components/molecules/FilterInput.svelte +6 -5
  33. package/dist/components/molecules/GitRef.svelte +2 -2
  34. package/dist/components/molecules/GlyphStack.svelte +21 -3
  35. package/dist/components/molecules/InputGroup.svelte +2 -2
  36. package/dist/components/molecules/Modal.svelte +5 -5
  37. package/dist/components/molecules/OptionButton.svelte +8 -3
  38. package/dist/components/molecules/Pagination.svelte +3 -1
  39. package/dist/components/molecules/Popover.svelte +18 -11
  40. package/dist/components/molecules/Prose.svelte +6 -6
  41. package/dist/components/molecules/RadialMenu.svelte +3 -3
  42. package/dist/components/molecules/RadioGroup.svelte +6 -4
  43. package/dist/components/molecules/RichSelect.svelte +6 -4
  44. package/dist/components/molecules/SectionHeader.svelte +1 -1
  45. package/dist/components/molecules/SeekSlider.svelte +6 -6
  46. package/dist/components/molecules/SegmentedControl.svelte +7 -7
  47. package/dist/components/molecules/SortableList.svelte +2 -2
  48. package/dist/components/molecules/SplitButton.svelte +1 -1
  49. package/dist/components/molecules/StatusBar.svelte +2 -0
  50. package/dist/components/molecules/Tabs.svelte +3 -3
  51. package/dist/components/molecules/ThemePicker.svelte +1 -1
  52. package/dist/components/molecules/Timestamp.svelte +1 -1
  53. package/dist/components/molecules/Toggle.svelte +5 -3
  54. package/dist/components/molecules/Tooltip.svelte +2 -2
  55. package/dist/components/molecules/Truncate.svelte +21 -3
  56. package/dist/components/molecules/VolumeSlider.svelte +3 -3
  57. package/dist/components/organisms/ConversationFeed.svelte +2 -1
  58. package/dist/components/organisms/ConversationPanel.svelte +3 -3
  59. package/dist/components/organisms/DataTable.svelte +18 -16
  60. package/dist/components/organisms/FilterSearchBar.svelte +8 -2
  61. package/dist/styles/tokens.css +34 -0
  62. package/package.json +1 -1
@@ -401,8 +401,8 @@
401
401
  min-width: 0;
402
402
  min-height: 0;
403
403
  width: var(--panel-current-width);
404
- background: var(--bg-elevated);
405
- border-right: 1px solid var(--border);
404
+ background: var(--surface-fill);
405
+ border-right: var(--edge-width) solid var(--surface-edge);
406
406
  transition:
407
407
  width var(--dur-base) var(--ease),
408
408
  box-shadow var(--dur-base) var(--ease);
@@ -414,7 +414,7 @@
414
414
  grid-column: 2;
415
415
  grid-row: 1;
416
416
  border-right: 0;
417
- border-left: 1px solid var(--border);
417
+ border-left: var(--edge-width) solid var(--surface-edge);
418
418
  }
419
419
  .main {
420
420
  min-width: 0;
@@ -449,7 +449,7 @@
449
449
  font: inherit;
450
450
  font-size: var(--icon-sm);
451
451
  background: transparent;
452
- border: 1px solid transparent;
452
+ border: var(--edge-width) solid transparent;
453
453
  border-radius: var(--r-sm);
454
454
  cursor: pointer;
455
455
  transition:
@@ -475,7 +475,7 @@
475
475
  .collapse-control:hover {
476
476
  color: var(--text);
477
477
  background: var(--bg-elevated-2);
478
- border-color: var(--border);
478
+ border-color: var(--surface-edge);
479
479
  }
480
480
  }
481
481
  .collapse-control:focus-visible,
@@ -547,7 +547,7 @@
547
547
  left: 0;
548
548
  z-index: 1;
549
549
  width: min(var(--panel-current-width), 85cqw);
550
- box-shadow: var(--shadow-md);
550
+ box-shadow: var(--raised-shadow);
551
551
  }
552
552
  .right .panel {
553
553
  right: 0;
@@ -581,7 +581,7 @@
581
581
  left: 0;
582
582
  z-index: var(--z-drawer);
583
583
  width: min(var(--panel-current-width), 100%);
584
- box-shadow: var(--shadow-md);
584
+ box-shadow: var(--raised-shadow);
585
585
  outline: none;
586
586
  animation: panel-slide-left var(--dur-base) var(--ease);
587
587
  }
@@ -144,8 +144,8 @@
144
144
  <style>
145
145
  .tabbar {
146
146
  min-width: 0;
147
- background: var(--bg-elevated);
148
- border-top: 1px solid var(--border);
147
+ background: var(--surface-fill);
148
+ border-top: var(--edge-width) solid var(--surface-edge);
149
149
  }
150
150
  .bar {
151
151
  position: fixed;
@@ -124,7 +124,7 @@
124
124
 
125
125
  <style>
126
126
  .accordion {
127
- border: 1px solid var(--border);
127
+ border: var(--edge-width) solid var(--surface-edge);
128
128
  border-radius: var(--r-lg);
129
129
  overflow: hidden;
130
130
  }
@@ -133,7 +133,7 @@
133
133
  border-radius: 0;
134
134
  }
135
135
  .accordion > :global(.acc-item + .acc-item) {
136
- border-top: 1px solid var(--border);
136
+ border-top: var(--edge-width) solid var(--surface-edge);
137
137
  }
138
138
  .acc-title {
139
139
  min-width: 0;
@@ -317,7 +317,7 @@
317
317
  right: -0.35em;
318
318
  min-width: 1.4em;
319
319
  padding: 0.1em 0.3em;
320
- border: 1px solid var(--border-strong);
320
+ border: var(--edge-width) solid var(--surface-edge-strong);
321
321
  border-radius: var(--r-pill);
322
322
  background: var(--bg);
323
323
  color: var(--text);
@@ -326,7 +326,7 @@
326
326
  .preview {
327
327
  display: block;
328
328
  padding: 0;
329
- border: 1px solid var(--border);
329
+ border: var(--edge-width) solid var(--surface-edge);
330
330
  border-radius: var(--r-md);
331
331
  background: none;
332
332
  cursor: pointer;
@@ -90,19 +90,19 @@
90
90
  gap: var(--sp-3);
91
91
  padding: var(--sp-3);
92
92
  }
93
- :global(.callout-ok) {
93
+ :global(.card.callout-ok) {
94
94
  --callout-tone: var(--ok);
95
95
  }
96
- :global(.callout-warn) {
96
+ :global(.card.callout-warn) {
97
97
  --callout-tone: var(--warn);
98
98
  }
99
- :global(.callout-danger) {
99
+ :global(.card.callout-danger) {
100
100
  --callout-tone: var(--danger);
101
101
  }
102
- :global(.callout-info) {
102
+ :global(.card.callout-info) {
103
103
  --callout-tone: var(--info);
104
104
  }
105
- :global(.callout-accent) {
105
+ :global(.card.callout-accent) {
106
106
  --callout-tone: var(--accent);
107
107
  }
108
108
 
@@ -284,7 +284,7 @@
284
284
  inset: 0 0 0 var(--cap);
285
285
  border-radius: 0 var(--r-pill) var(--r-pill) 0;
286
286
  background: var(--bg);
287
- box-shadow: inset 0 0 0 1px var(--border);
287
+ box-shadow: inset 0 0 0 var(--edge-width) var(--track-edge);
288
288
  pointer-events: none;
289
289
  }
290
290
  .fill-clip {
@@ -363,7 +363,7 @@
363
363
  left: clamp(0%, var(--cap), 100%);
364
364
  translate: calc(-1 * clamp(0%, var(--cap), 100%)) 0;
365
365
  padding: var(--sp-px) var(--sp-1);
366
- border: 1px solid var(--border-strong);
366
+ border: var(--edge-width) solid var(--raised-edge);
367
367
  border-radius: var(--r-sm);
368
368
  background: var(--bg-elevated-2);
369
369
  box-shadow: var(--shadow-sm);
@@ -180,5 +180,9 @@
180
180
  -webkit-line-clamp: var(--clamp);
181
181
  line-clamp: var(--clamp);
182
182
  overflow: hidden;
183
+ padding: calc(var(--focus-ring-width) + var(--focus-ring-offset));
184
+ padding-block-end: 0;
185
+ margin: calc(-1 * (var(--focus-ring-width) + var(--focus-ring-offset)));
186
+ margin-block-end: 0;
183
187
  }
184
188
  </style>
@@ -85,7 +85,7 @@
85
85
  <style>
86
86
  .codeblock {
87
87
  margin: 0;
88
- border: 1px solid var(--border);
88
+ border: var(--edge-width) solid var(--surface-edge);
89
89
  border-radius: var(--r-lg);
90
90
  background: var(--bg);
91
91
  overflow: hidden;
@@ -95,14 +95,21 @@
95
95
  align-items: center;
96
96
  gap: var(--sp-2);
97
97
  padding: var(--sp-1) var(--sp-1) var(--sp-1) var(--sp-3);
98
- background: var(--bg-elevated-2);
99
- border-bottom: 1px solid var(--border);
98
+ background: var(--surface-fill-2);
99
+ border-bottom: var(--edge-width) solid var(--surface-edge);
100
100
  font-size: var(--fs-xs);
101
101
  font-family: var(--font-mono);
102
102
  color: var(--text-muted);
103
103
  }
104
+ .cb-name {
105
+ min-width: 0;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ white-space: nowrap;
109
+ }
104
110
  .cb-body {
105
111
  display: flex;
112
+ align-items: flex-start;
106
113
  overflow: auto;
107
114
  -webkit-overflow-scrolling: touch;
108
115
  }
@@ -113,8 +120,8 @@
113
120
  padding: var(--sp-3) var(--sp-2);
114
121
  text-align: right;
115
122
  color: var(--text-faint);
116
- background: var(--bg-elevated);
117
- border-right: 1px solid var(--border);
123
+ background: var(--surface-fill);
124
+ border-right: var(--edge-width) solid var(--surface-edge);
118
125
  user-select: none;
119
126
  font-family: var(--font-mono);
120
127
  font-size: var(--fs-sm);
@@ -281,11 +281,11 @@
281
281
  max-height: var(--cb-max-height, min(16rem, 40vh));
282
282
  overflow-y: auto;
283
283
  padding: var(--sp-1);
284
- background: var(--cb-bg, var(--bg-elevated));
284
+ background: var(--cb-bg, var(--raised-fill));
285
285
  color: var(--text);
286
- border: 1px solid var(--cb-border, var(--border-strong));
286
+ border: var(--edge-width) solid var(--cb-border, var(--raised-edge));
287
287
  border-radius: var(--cb-radius, var(--r-md));
288
- box-shadow: var(--shadow-md);
288
+ box-shadow: var(--raised-shadow);
289
289
  transform-origin: var(--tsu-origin, top left);
290
290
  opacity: 1;
291
291
  scale: 1;
@@ -215,7 +215,7 @@
215
215
  'foot';
216
216
  width: 100%;
217
217
  height: 100%;
218
- background: var(--bg-elevated);
218
+ background: var(--overlay-fill);
219
219
  will-change: translate;
220
220
  padding-top: var(--safe-top);
221
221
  padding-bottom: var(--safe-bottom);
@@ -242,7 +242,7 @@
242
242
  align-items: center;
243
243
  gap: var(--sp-2);
244
244
  padding: var(--sp-4);
245
- border-bottom: 1px solid var(--border);
245
+ border-bottom: var(--edge-width) solid var(--surface-edge);
246
246
  }
247
247
  .panel-icon {
248
248
  display: inline-flex;
@@ -269,7 +269,7 @@
269
269
  display: flex;
270
270
  gap: var(--sp-1);
271
271
  padding: var(--sp-2);
272
- border-bottom: 1px solid var(--border);
272
+ border-bottom: var(--edge-width) solid var(--surface-edge);
273
273
  overflow-x: auto;
274
274
  scrollbar-width: thin;
275
275
  }
@@ -290,7 +290,7 @@
290
290
  justify-content: flex-end;
291
291
  gap: var(--sp-2);
292
292
  padding: var(--sp-4);
293
- border-top: 1px solid var(--border);
293
+ border-top: var(--edge-width) solid var(--surface-edge);
294
294
  }
295
295
 
296
296
  @media (min-width: 48rem) {
@@ -298,8 +298,8 @@
298
298
  width: min(var(--drawer-w), 100%);
299
299
  padding-top: 0;
300
300
  padding-bottom: 0;
301
- border-left: 1px solid var(--border-strong);
302
- box-shadow: var(--shadow-lg);
301
+ border-left: var(--edge-width) solid var(--border-strong);
302
+ box-shadow: var(--overlay-shadow);
303
303
  grid-template-columns: minmax(0, 1fr);
304
304
  grid-template-rows: auto minmax(0, 1fr) auto;
305
305
  grid-template-areas:
@@ -309,7 +309,7 @@
309
309
  }
310
310
  .drawer[data-side='left'] .panel {
311
311
  border-left: 0;
312
- border-right: 1px solid var(--border-strong);
312
+ border-right: var(--edge-width) solid var(--border-strong);
313
313
  }
314
314
  .panel.has-nav {
315
315
  grid-template-columns: var(--drawer-nav-w) minmax(0, 1fr);
@@ -325,7 +325,7 @@
325
325
  overflow-x: hidden;
326
326
  overflow-y: auto;
327
327
  border-bottom: 0;
328
- border-right: 1px solid var(--border);
328
+ border-right: var(--edge-width) solid var(--surface-edge);
329
329
  }
330
330
  .panel-nav-mobile {
331
331
  display: none;
@@ -223,7 +223,7 @@
223
223
  align-items: center;
224
224
  justify-content: center;
225
225
  padding: var(--sp-1);
226
- border: 1px solid transparent;
226
+ border: var(--edge-width) solid transparent;
227
227
  border-radius: var(--r-sm);
228
228
  background: none;
229
229
  color: inherit;
@@ -107,9 +107,12 @@
107
107
  gap: var(--sp-2);
108
108
  padding: var(--sp-2) var(--btn-px-md);
109
109
  min-height: var(--control-height-default);
110
- border: 1px solid var(--border-strong);
110
+ border: var(--edge-width) solid var(--btn-edge);
111
111
  border-radius: var(--r-md);
112
- background: var(--surface);
112
+ background: var(--btn-fill);
113
+ --file-shadow-rest: var(--btn-shadow);
114
+ --file-shadow-lift: var(--btn-shadow-hover);
115
+ box-shadow: var(--file-shadow-rest);
113
116
  color: var(--text);
114
117
  font-weight: var(--fw-medium);
115
118
  font-size: var(--control-fs-md);
@@ -123,8 +126,10 @@
123
126
  transition:
124
127
  background var(--dur-fast) ease,
125
128
  border-color var(--dur-fast) ease,
129
+ box-shadow var(--dur-fast) ease,
126
130
  color var(--dur-fast) ease,
127
131
  opacity var(--dur-fast) ease,
132
+ translate var(--dur-fast) var(--ease-out),
128
133
  scale var(--file-scale-dur) var(--ease-out);
129
134
  }
130
135
  .file-btn:active:not(.disabled) {
@@ -197,20 +202,25 @@
197
202
  font-size: var(--icon-xl);
198
203
  }
199
204
  .file-btn.primary {
200
- background: var(--accent);
201
- border-color: var(--accent);
205
+ background: var(--btn-primary-fill);
206
+ border-color: var(--btn-primary-edge);
207
+ --file-shadow-rest: var(--btn-primary-shadow);
208
+ --file-shadow-lift: var(--btn-primary-shadow-hover);
202
209
  color: var(--text-on-accent);
203
210
  font-weight: var(--fw-semibold);
204
211
  }
205
212
  .file-btn.ghost {
206
213
  background: transparent;
207
214
  border-color: transparent;
215
+ --file-shadow-rest: none;
216
+ --file-shadow-lift: none;
208
217
  }
209
218
  /* The hidden input keeps focusability (sr-only, not display:none), so mirror
210
219
  its focus onto the label for a visible ring. */
211
220
  .file-btn:focus-within {
212
221
  outline: var(--focus-ring);
213
222
  outline-offset: var(--focus-ring-offset);
223
+ box-shadow: var(--file-shadow-rest), var(--focus-glow);
214
224
  }
215
225
  .file-btn.disabled {
216
226
  opacity: var(--disabled-opacity);
@@ -219,6 +229,8 @@
219
229
  @media (hover: hover) and (pointer: fine) {
220
230
  .file-btn:hover:not(.disabled) {
221
231
  border-color: var(--accent);
232
+ translate: 0 calc(-1 * var(--hover-lift));
233
+ --file-shadow-rest: var(--file-shadow-lift);
222
234
  }
223
235
  .file-btn.primary:hover:not(.disabled) {
224
236
  filter: brightness(1.08);
@@ -467,12 +467,13 @@
467
467
  .fi__bar {
468
468
  --fi-icon: var(--control-icon-md);
469
469
  display: flex;
470
+ flex-wrap: wrap;
470
471
  align-items: center;
471
472
  gap: var(--sp-2);
472
473
  padding: 0 var(--control-px-md);
473
474
  min-height: var(--control-height-default);
474
475
  background: var(--bg-elevated);
475
- border: 1px solid var(--border-strong);
476
+ border: var(--edge-width) solid var(--control-edge);
476
477
  border-radius: var(--r-md);
477
478
  transition:
478
479
  border-color var(--dur-fast) ease,
@@ -501,7 +502,7 @@
501
502
  font-size: var(--fs-xs);
502
503
  line-height: var(--lh-none);
503
504
  color: var(--text-faint);
504
- border: 1px solid var(--border);
505
+ border: var(--edge-width) solid var(--border);
505
506
  border-radius: var(--r-sm);
506
507
  padding: var(--sp-0-5) var(--sp-1);
507
508
  }
@@ -522,7 +523,7 @@
522
523
  position: relative;
523
524
  display: flex;
524
525
  flex: 1;
525
- min-width: 0;
526
+ min-width: min(100%, 6rem);
526
527
  }
527
528
  .fi__display {
528
529
  position: absolute;
@@ -599,8 +600,8 @@
599
600
  left: 0;
600
601
  right: 0;
601
602
  z-index: var(--z-drawer);
602
- background: var(--bg-elevated);
603
- border: 1px solid var(--border-strong);
603
+ background: var(--raised-fill);
604
+ border: var(--edge-width) solid var(--raised-edge);
604
605
  border-radius: var(--r-md);
605
606
  box-shadow: var(--shadow-lg);
606
607
  padding: var(--sp-1);
@@ -125,9 +125,9 @@
125
125
  min-width: 0;
126
126
  padding: var(--sp-0-5) var(--sp-2);
127
127
  border-radius: var(--r-pill);
128
- background: var(--bg-elevated-2);
128
+ background: var(--surface-fill-2);
129
129
  color: var(--text-muted);
130
- border: 1px solid var(--border);
130
+ border: var(--edge-width) solid var(--surface-edge);
131
131
  text-decoration: none;
132
132
  }
133
133
  .branch {
@@ -314,6 +314,8 @@
314
314
  height: 1rem;
315
315
  max-width: 1rem;
316
316
  max-height: 1rem;
317
+ min-width: 0;
318
+ min-height: 0;
317
319
  display: inline-flex;
318
320
  align-items: center;
319
321
  justify-content: center;
@@ -321,6 +323,22 @@
321
323
  font-size: var(--fs-xs);
322
324
  line-height: var(--lh-none);
323
325
  }
326
+ /* Controls with a minimum box (e.g. a `box="xs"` IconButton) shrink to the cell instead of clipping. */
327
+ .stacked > .cell > :global(*) {
328
+ min-width: 0;
329
+ min-height: 0;
330
+ max-width: 1rem;
331
+ max-height: 1rem;
332
+ }
333
+ /* A labelled Dot folds to its disc; the label stays in the accessibility tree. */
334
+ .stacked :global(.dot-row > :not(.dot)) {
335
+ position: absolute;
336
+ width: 1px;
337
+ height: 1px;
338
+ overflow: hidden;
339
+ clip-path: inset(50%);
340
+ white-space: nowrap;
341
+ }
324
342
  .stacked > :global(*) :global(:focus-visible),
325
343
  .stacked > :global(:focus-visible) {
326
344
  outline-offset: var(--focus-ring-offset-inset);
@@ -343,11 +361,11 @@
343
361
  margin: 0;
344
362
  padding: var(--sp-1);
345
363
  max-width: calc(100vw - 2 * var(--sp-2));
346
- background: var(--bg-elevated);
364
+ background: var(--raised-fill);
347
365
  color: var(--text);
348
- border: 1px solid var(--border-strong);
366
+ border: var(--edge-width) solid var(--raised-edge);
349
367
  border-radius: var(--r-md);
350
- box-shadow: var(--shadow-md);
368
+ box-shadow: var(--raised-shadow);
351
369
  opacity: 0;
352
370
  scale: var(--enter-scale);
353
371
  transition:
@@ -221,8 +221,8 @@
221
221
  position: absolute;
222
222
  inset: auto 0 0 0;
223
223
  height: var(--ig-h);
224
- background: var(--textarea-bg, var(--bg));
225
- border: 1px solid var(--textarea-border, var(--border-strong));
224
+ background: var(--textarea-bg, var(--control-fill));
225
+ border: var(--edge-width) solid var(--textarea-border, var(--control-edge));
226
226
  border-top: 0;
227
227
  border-radius: 0 0 var(--ig-radius) var(--ig-radius);
228
228
  transition: border-color var(--dur-fast) ease;
@@ -286,10 +286,10 @@
286
286
  max-height: calc(100dvh - var(--safe-top) - var(--sp-6));
287
287
  display: flex;
288
288
  flex-direction: column;
289
- background: var(--bg-elevated);
290
- border: 1px solid var(--border);
289
+ background: var(--overlay-fill);
290
+ border: var(--edge-width) solid var(--overlay-edge);
291
291
  border-radius: var(--r-lg) var(--r-lg) 0 0;
292
- box-shadow: var(--shadow-lg);
292
+ box-shadow: var(--overlay-shadow);
293
293
  padding-bottom: var(--safe-bottom);
294
294
  /* Bottom sheet: slides up on enter, down on exit. */
295
295
  opacity: 0;
@@ -357,7 +357,7 @@
357
357
  align-items: center;
358
358
  gap: var(--sp-2);
359
359
  padding: var(--sp-4);
360
- border-bottom: 1px solid var(--border);
360
+ border-bottom: var(--edge-width) solid var(--surface-edge);
361
361
  }
362
362
  .sheet-toned {
363
363
  border-top: 3px solid var(--modal-tone);
@@ -382,7 +382,7 @@
382
382
  justify-content: flex-end;
383
383
  gap: var(--sp-2);
384
384
  padding: var(--sp-4);
385
- border-top: 1px solid var(--border);
385
+ border-top: var(--edge-width) solid var(--surface-edge);
386
386
  }
387
387
  /* Opt-in: a flex item is shrink-to-fit, so a layout wrapper handed to the
388
388
  footer would size to its content and hug the right edge instead of
@@ -95,9 +95,10 @@
95
95
  flex-direction: column;
96
96
  gap: var(--sp-0-5);
97
97
  padding: var(--sp-2);
98
- background: var(--bg);
99
- border: 1px solid var(--border-strong);
98
+ background: var(--control-fill);
99
+ border: var(--edge-width) solid var(--control-edge);
100
100
  border-radius: var(--r-md);
101
+ box-shadow: var(--control-shadow);
101
102
  color: var(--text);
102
103
  text-align: left;
103
104
  white-space: normal;
@@ -107,6 +108,7 @@
107
108
  background var(--dur-fast) ease,
108
109
  border-color var(--dur-fast) ease,
109
110
  color var(--dur-fast) ease,
111
+ translate var(--dur-fast) ease,
110
112
  scale var(--opt-scale-dur) var(--ease-out);
111
113
  }
112
114
  .opt:disabled {
@@ -154,8 +156,11 @@
154
156
  color: var(--oc);
155
157
  }
156
158
  @media (hover: hover) and (pointer: fine) {
159
+ .opt:hover:not(:disabled) {
160
+ translate: 0 calc(-1 * var(--hover-lift));
161
+ }
157
162
  .opt:hover:not(:disabled):not(.selected) {
158
- border-color: var(--border-strong);
163
+ border-color: var(--control-edge);
159
164
  }
160
165
  .opt.selected:hover:not(:disabled) {
161
166
  border-color: var(--oc);
@@ -189,7 +189,7 @@
189
189
  min-width: var(--box-md);
190
190
  height: var(--box-md);
191
191
  padding: 0 var(--control-px-md);
192
- border: 1px solid transparent;
192
+ border: var(--edge-width) solid transparent;
193
193
  border-radius: var(--r-md);
194
194
  background: transparent;
195
195
  color: var(--text-muted);
@@ -201,6 +201,7 @@
201
201
  background var(--dur-fast) ease,
202
202
  border-color var(--dur-fast) ease,
203
203
  color var(--dur-fast) ease,
204
+ translate var(--dur-fast) ease,
204
205
  scale var(--page-scale-dur) var(--ease-out);
205
206
  }
206
207
  .page:active {
@@ -211,6 +212,7 @@
211
212
  .page:hover {
212
213
  background: var(--bg-elevated-2);
213
214
  color: var(--text);
215
+ translate: 0 calc(-1 * var(--hover-lift));
214
216
  }
215
217
  }
216
218
  .page.on {
@@ -392,7 +392,7 @@
392
392
  min-height: var(--pop-box, var(--box-sm));
393
393
  min-width: var(--pop-box, var(--box-sm));
394
394
  padding: var(--pop-trigger-pad, var(--sp-1));
395
- border: 1px solid var(--pop-trigger-border, transparent);
395
+ border: var(--edge-width) solid var(--pop-trigger-border, transparent);
396
396
  border-radius: var(--pop-trigger-radius, var(--r-md));
397
397
  background: var(--pop-trigger-bg, transparent);
398
398
  color: var(--pop-trigger-fg, var(--text));
@@ -403,6 +403,8 @@
403
403
  background-color var(--dur-fast) var(--ease),
404
404
  border-color var(--dur-fast) var(--ease),
405
405
  color var(--dur-fast) var(--ease),
406
+ box-shadow var(--dur-fast) var(--ease),
407
+ translate var(--dur-fast) var(--ease),
406
408
  scale var(--pop-scale-dur) var(--ease-out);
407
409
  }
408
410
  .pop-trigger:not(.bare, .trigger-toggle):active:not(:disabled, .is-disabled) {
@@ -418,11 +420,14 @@
418
420
  }
419
421
  .pop-trigger.canonical:hover:not(:disabled) {
420
422
  border-color: var(--accent);
421
- background: var(--surface);
423
+ background: var(--btn-fill);
424
+ box-shadow: var(--btn-shadow-hover);
425
+ translate: 0 calc(-1 * var(--hover-lift));
422
426
  }
423
427
  .pop-trigger.trigger-primary:hover:not(:disabled) {
424
- background: var(--accent);
425
- border-color: var(--accent);
428
+ background: var(--btn-primary-fill);
429
+ border-color: var(--btn-primary-edge);
430
+ box-shadow: var(--btn-primary-shadow-hover);
426
431
  filter: brightness(1.08);
427
432
  }
428
433
  .pop-trigger.trigger-ghost:hover:not(:disabled) {
@@ -453,8 +458,9 @@
453
458
  min-width: 0;
454
459
  min-height: var(--control-height-default);
455
460
  padding: var(--pop-trigger-pad, var(--sp-2) var(--btn-px-md));
456
- border-color: var(--pop-trigger-border, var(--border-strong));
457
- background: var(--pop-trigger-bg, var(--surface));
461
+ border-color: var(--pop-trigger-border, var(--btn-edge));
462
+ background: var(--pop-trigger-bg, var(--btn-fill));
463
+ box-shadow: var(--btn-shadow);
458
464
  font-weight: var(--fw-medium);
459
465
  font-size: var(--pop-trigger-size, var(--control-fs-md));
460
466
  line-height: var(--lh-none);
@@ -462,8 +468,9 @@
462
468
  white-space: nowrap;
463
469
  }
464
470
  .pop-trigger.trigger-primary {
465
- background: var(--pop-trigger-bg, var(--accent));
466
- border-color: var(--pop-trigger-border, var(--accent));
471
+ background: var(--pop-trigger-bg, var(--btn-primary-fill));
472
+ border-color: var(--pop-trigger-border, var(--btn-primary-edge));
473
+ box-shadow: var(--btn-primary-shadow);
467
474
  color: var(--pop-trigger-fg, var(--text-on-accent));
468
475
  font-weight: var(--fw-semibold);
469
476
  }
@@ -620,11 +627,11 @@
620
627
  min-width: 10rem;
621
628
  max-width: min(22rem, calc(100vw - 2 * var(--sp-3)));
622
629
  padding: var(--sp-1);
623
- background: var(--bg-elevated);
630
+ background: var(--raised-fill);
624
631
  color: var(--text);
625
- border: 1px solid var(--border-strong);
632
+ border: var(--edge-width) solid var(--raised-edge);
626
633
  border-radius: var(--r-md);
627
- box-shadow: var(--shadow-md);
634
+ box-shadow: var(--raised-shadow);
628
635
  transform-origin: var(--tsu-origin, top left);
629
636
  opacity: 0;
630
637
  scale: var(--enter-scale);
@@ -76,15 +76,15 @@
76
76
  font-family: var(--font-mono);
77
77
  font-size: 0.92em;
78
78
  color: var(--md-code, var(--text));
79
- background: var(--md-code-bg, var(--bg-elevated-2));
79
+ background: var(--md-code-bg, var(--surface-fill-2));
80
80
  padding: 0.1em 0.35em;
81
81
  border-radius: var(--r-sm);
82
82
  }
83
83
  .prose :global(pre) {
84
84
  margin: 0;
85
85
  padding: var(--sp-3);
86
- background: var(--bg-elevated);
87
- border: 1px solid var(--border);
86
+ background: var(--surface-fill);
87
+ border: var(--edge-width) solid var(--surface-edge);
88
88
  border-radius: var(--r-md);
89
89
  overflow-x: auto;
90
90
  font-family: var(--font-mono);
@@ -119,12 +119,12 @@
119
119
  .prose :global(th),
120
120
  .prose :global(td) {
121
121
  padding: var(--sp-1) var(--sp-2);
122
- border: 1px solid var(--border);
122
+ border: var(--edge-width) solid var(--surface-edge);
123
123
  text-align: left;
124
124
  vertical-align: top;
125
125
  }
126
126
  .prose :global(th) {
127
- background: var(--bg-elevated-2);
127
+ background: var(--surface-fill-2);
128
128
  color: var(--text-muted);
129
129
  font-weight: var(--fw-semibold);
130
130
  }
@@ -135,6 +135,6 @@
135
135
  }
136
136
  .prose :global(hr) {
137
137
  border: 0;
138
- border-top: 1px solid var(--border);
138
+ border-top: var(--edge-width) solid var(--surface-edge);
139
139
  }
140
140
  </style>