@slotted/styles 0.1.0-beta.8 → 0.1.0-beta.9

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 (128) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +31 -32
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +35 -35
  6. package/src/app-shell/app-shell.css +280 -299
  7. package/src/aspect-ratio/aspect-ratio.css +9 -9
  8. package/src/attachment/attachment.css +91 -99
  9. package/src/avatar/avatar.css +41 -41
  10. package/src/avatar-group/avatar-group.css +21 -22
  11. package/src/badge/badge.css +37 -37
  12. package/src/breadcrumb/breadcrumb.css +37 -37
  13. package/src/button/button.css +88 -69
  14. package/src/button-group/button-group.css +69 -73
  15. package/src/calendar/calendar.css +93 -103
  16. package/src/card/card.css +54 -61
  17. package/src/carousel/carousel.css +150 -161
  18. package/src/cascader/cascader.css +147 -151
  19. package/src/chart/chart.css +225 -240
  20. package/src/checkbox/checkbox.css +119 -124
  21. package/src/checkbox-group/checkbox-group.css +7 -7
  22. package/src/code-block/code-block.css +81 -85
  23. package/src/collapsible/collapsible.css +69 -76
  24. package/src/color-picker/color-picker.css +83 -91
  25. package/src/column-manager/column-manager.css +106 -114
  26. package/src/combobox/combobox.css +99 -101
  27. package/src/command-palette/command-palette.css +84 -90
  28. package/src/container/container.css +24 -24
  29. package/src/context-menu/context-menu.css +8 -8
  30. package/src/currency-field/currency-field.css +99 -104
  31. package/src/dashboard-grid/dashboard-grid.css +104 -107
  32. package/src/data-grid/data-grid.css +458 -456
  33. package/src/data-grid/data-grid.tokens.json +2 -0
  34. package/src/data-list/data-list.css +67 -69
  35. package/src/date-field/date-field.css +50 -50
  36. package/src/date-picker/date-picker.css +40 -42
  37. package/src/date-range-picker/date-range-picker.css +114 -118
  38. package/src/datetime-field/datetime-field.css +73 -78
  39. package/src/datetime-picker/datetime-picker.css +61 -63
  40. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  41. package/src/description-list/description-list.css +61 -64
  42. package/src/detail-panel/detail-panel.css +70 -70
  43. package/src/dialog/dialog.css +300 -148
  44. package/src/divider/divider.css +18 -18
  45. package/src/drawer/drawer.css +186 -209
  46. package/src/entity-picker/entity-picker.css +220 -239
  47. package/src/event-calendar/event-calendar.css +343 -385
  48. package/src/field/field.css +74 -78
  49. package/src/field-group/field-group.css +22 -25
  50. package/src/filter-bar/filter-bar.css +193 -209
  51. package/src/form/form.css +21 -24
  52. package/src/fullscreen/fullscreen.css +24 -25
  53. package/src/grid/grid.css +28 -28
  54. package/src/highlight/highlight.css +6 -6
  55. package/src/hover-card/hover-card.css +6 -6
  56. package/src/icon/icon.css +15 -15
  57. package/src/image/image.css +39 -39
  58. package/src/import-export-center/import-export-center.css +135 -156
  59. package/src/inline/inline.css +27 -27
  60. package/src/inline-message/inline-message.css +28 -28
  61. package/src/kbd/kbd.css +26 -26
  62. package/src/link/link.css +15 -15
  63. package/src/list/list.css +20 -20
  64. package/src/list-item/list-item.css +66 -66
  65. package/src/listbox/listbox.css +56 -59
  66. package/src/loading-overlay/loading-overlay.css +75 -92
  67. package/src/markdown/markdown.css +17 -17
  68. package/src/menu/menu.css +63 -65
  69. package/src/menubar/menubar.css +13 -13
  70. package/src/message/message.css +174 -202
  71. package/src/message-scroller/message-scroller.css +41 -42
  72. package/src/multi-select/multi-select.css +131 -137
  73. package/src/navigation-menu/navigation-menu.css +167 -188
  74. package/src/notification-center/notification-center.css +134 -148
  75. package/src/number-field/number-field.css +76 -81
  76. package/src/otp-input/otp-input.css +48 -48
  77. package/src/page/page.css +23 -23
  78. package/src/page-header/page-header.css +219 -280
  79. package/src/pagination/pagination.css +68 -72
  80. package/src/popover/popover.css +40 -49
  81. package/src/progress-indicator/progress-indicator.css +85 -90
  82. package/src/prompt-composer/prompt-composer.css +94 -99
  83. package/src/prose/prose.css +71 -75
  84. package/src/radio-group/radio-group.css +98 -103
  85. package/src/rating/rating.css +132 -132
  86. package/src/result-state/result-state.css +74 -77
  87. package/src/saved-views/saved-views.css +41 -47
  88. package/src/scroll-area/scroll-area.css +32 -35
  89. package/src/section/section.css +16 -16
  90. package/src/segmented-control/segmented-control.css +77 -79
  91. package/src/select/select.css +113 -115
  92. package/src/side-navigation/side-navigation.css +170 -180
  93. package/src/skeleton/skeleton.css +47 -48
  94. package/src/slider/slider.css +86 -88
  95. package/src/sparkline/sparkline.css +32 -32
  96. package/src/spinner/spinner.css +4 -4
  97. package/src/split-button/split-button.css +26 -31
  98. package/src/splitter/splitter.css +35 -35
  99. package/src/stack/stack.css +24 -24
  100. package/src/stat-card/stat-card.css +102 -103
  101. package/src/status-indicator/status-indicator.css +28 -28
  102. package/src/stepper/stepper.css +58 -62
  103. package/src/switch/switch.css +86 -92
  104. package/src/table/table.css +189 -198
  105. package/src/table-of-contents/table-of-contents.css +51 -54
  106. package/src/tabs/tabs.css +143 -162
  107. package/src/tag/tag.css +67 -71
  108. package/src/tags-input/tags-input.css +124 -74
  109. package/src/tags-input/tags-input.tokens.json +6 -1
  110. package/src/text-field/text-field.css +108 -126
  111. package/src/textarea/textarea.css +26 -26
  112. package/src/time-field/time-field.css +67 -67
  113. package/src/time-picker/time-picker.css +56 -58
  114. package/src/time-range-picker/time-range-picker.css +126 -133
  115. package/src/timeline/timeline.css +244 -266
  116. package/src/toast/toast.css +81 -90
  117. package/src/toggle/toggle.css +29 -33
  118. package/src/toggle-group/toggle-group.css +67 -71
  119. package/src/toolbar/toolbar.css +30 -35
  120. package/src/tooltip/tooltip.css +26 -26
  121. package/src/top-navigation/top-navigation.css +243 -259
  122. package/src/tour/tour.css +51 -60
  123. package/src/transfer/transfer.css +160 -164
  124. package/src/tree/tree.css +103 -111
  125. package/src/typography/typography.css +36 -36
  126. package/src/upload/upload.css +224 -224
  127. package/src/visually-hidden/visually-hidden.css +1 -1
  128. package/src/wizard/wizard.css +185 -197
@@ -22,7 +22,7 @@
22
22
  * in, the browser rounded the half to a whole CSS pixel, and the line was
23
23
  * drawn one device pixel off the dot's centre at 100%, 150% and 200%.
24
24
  */
25
- [data-ui='timeline'] {
25
+ [data-ui-timeline] {
26
26
  --_icon: var(--slotted-control-icon-size-md, 16px);
27
27
  --_font-size: var(--slotted-timeline-font-size, var(--slotted-control-font-size-md, 13px));
28
28
  /**
@@ -105,7 +105,7 @@
105
105
  line-height: var(--_leading);
106
106
  }
107
107
 
108
- [data-ui='timeline'][data-size='sm'] {
108
+ [data-ui-timeline][data-size='sm'] {
109
109
  --_icon: var(--slotted-control-icon-size-sm, 14px);
110
110
  --_font-size: var(--slotted-timeline-font-size, var(--slotted-control-font-size-sm, 12px));
111
111
  --_gap: var(
@@ -114,7 +114,7 @@
114
114
  );
115
115
  }
116
116
 
117
- [data-ui='timeline'][data-size='lg'] {
117
+ [data-ui-timeline][data-size='lg'] {
118
118
  --_icon: var(--slotted-control-icon-size-lg, 18px);
119
119
  --_font-size: var(--slotted-timeline-font-size, var(--slotted-control-font-size-lg, 14px));
120
120
  --_gap: var(
@@ -129,11 +129,11 @@
129
129
  * title starts at the same indent. A spinner and the check of a finished
130
130
  * dot are a dot's size and widen nothing.
131
131
  */
132
- [data-ui='timeline']:has([data-part='marker'] > :not([data-ui='spinner'], [data-check])) {
132
+ [data-ui-timeline]:has([data-part-marker] > :not([data-ui-spinner], [data-check])) {
133
133
  --_rail: var(--_badge);
134
134
  }
135
135
 
136
- [data-ui='timeline']:has([data-part='marker'] > [data-ui='avatar']) {
136
+ [data-ui-timeline]:has([data-part-marker] > [data-ui-avatar]) {
137
137
  --_rail: max(var(--_badge), var(--_avatar));
138
138
  }
139
139
 
@@ -144,8 +144,8 @@
144
144
  * item that names its own wins by being nearer.
145
145
  */
146
146
 
147
- [data-ui='timeline'],
148
- [data-ui='timeline'] [data-tone='secondary'] {
147
+ [data-ui-timeline],
148
+ [data-ui-timeline] [data-tone='secondary'] {
149
149
  --_tone-solid: var(--slotted-tone-secondary-solid, ButtonFace);
150
150
  --_tone-on-solid: var(--slotted-tone-secondary-on-solid, ButtonText);
151
151
  --_tone-surface: var(--slotted-tone-secondary-surface, Canvas);
@@ -159,8 +159,8 @@
159
159
  --_tone-mark: var(--slotted-border-strong, GrayText);
160
160
  }
161
161
 
162
- [data-ui='timeline'][data-tone='accent'],
163
- [data-ui='timeline'] [data-tone='accent'] {
162
+ [data-ui-timeline][data-tone='accent'],
163
+ [data-ui-timeline] [data-tone='accent'] {
164
164
  --_tone-solid: var(--slotted-tone-accent-solid, Highlight);
165
165
  --_tone-on-solid: var(--slotted-tone-accent-on-solid, HighlightText);
166
166
  --_tone-surface: var(--slotted-tone-accent-surface, Canvas);
@@ -169,8 +169,8 @@
169
169
  --_tone-text: var(--slotted-tone-accent-text, Highlight);
170
170
  }
171
171
 
172
- [data-ui='timeline'][data-tone='success'],
173
- [data-ui='timeline'] [data-tone='success'] {
172
+ [data-ui-timeline][data-tone='success'],
173
+ [data-ui-timeline] [data-tone='success'] {
174
174
  --_tone-solid: var(--slotted-tone-success-solid, ButtonFace);
175
175
  --_tone-on-solid: var(--slotted-tone-success-on-solid, ButtonText);
176
176
  --_tone-surface: var(--slotted-tone-success-surface, Canvas);
@@ -179,8 +179,8 @@
179
179
  --_tone-text: var(--slotted-tone-success-text, CanvasText);
180
180
  }
181
181
 
182
- [data-ui='timeline'][data-tone='warning'],
183
- [data-ui='timeline'] [data-tone='warning'] {
182
+ [data-ui-timeline][data-tone='warning'],
183
+ [data-ui-timeline] [data-tone='warning'] {
184
184
  --_tone-solid: var(--slotted-tone-warning-solid, ButtonFace);
185
185
  --_tone-on-solid: var(--slotted-tone-warning-on-solid, ButtonText);
186
186
  --_tone-surface: var(--slotted-tone-warning-surface, Canvas);
@@ -189,8 +189,8 @@
189
189
  --_tone-text: var(--slotted-tone-warning-text, CanvasText);
190
190
  }
191
191
 
192
- [data-ui='timeline'][data-tone='danger'],
193
- [data-ui='timeline'] [data-tone='danger'] {
192
+ [data-ui-timeline][data-tone='danger'],
193
+ [data-ui-timeline] [data-tone='danger'] {
194
194
  --_tone-solid: var(--slotted-tone-danger-solid, Mark);
195
195
  --_tone-on-solid: var(--slotted-tone-danger-on-solid, MarkText);
196
196
  --_tone-surface: var(--slotted-tone-danger-surface, Canvas);
@@ -206,7 +206,7 @@
206
206
  * like. A group nests a second list of the same kind.
207
207
  */
208
208
 
209
- [data-ui='timeline'] :is([data-part='list'], [data-part='group-list']) {
209
+ [data-ui-timeline] :is([data-part-list], [data-part-group-list]) {
210
210
  display: flex;
211
211
  flex-direction: column;
212
212
  list-style: none;
@@ -219,7 +219,7 @@
219
219
  * read from the list rather than declared, so a consumer who writes the part
220
220
  * on one event gets the column on every event and the titles keep lining up.
221
221
  */
222
- [data-ui='timeline'] [data-part='list']:has([data-part='opposite']) {
222
+ [data-ui-timeline] [data-part-list]:has([data-part-opposite]) {
223
223
  --_opposite-column: var(--_opposite);
224
224
  }
225
225
 
@@ -231,7 +231,7 @@
231
231
  * title still sits on the title's first line.
232
232
  */
233
233
 
234
- [data-ui='timeline'] [data-part='item'] {
234
+ [data-ui-timeline] [data-part-item] {
235
235
  align-items: stretch;
236
236
  column-gap: var(--_gap);
237
237
  display: grid;
@@ -242,9 +242,7 @@
242
242
  position: relative;
243
243
  }
244
244
 
245
- [data-ui='timeline']
246
- :where([data-part='list']:not(:has([data-part='opposite'])))
247
- [data-part='item'] {
245
+ [data-ui-timeline] :where([data-part-list]:not(:has([data-part-opposite]))) [data-part-item] {
248
246
  grid-template-columns: [rail] var(--_rail) [content] minmax(0, 1fr);
249
247
  }
250
248
 
@@ -253,15 +251,15 @@
253
251
  * around an article wraps the event and not the air under it; the connector
254
252
  * runs on through the margin to the next marker.
255
253
  */
256
- [data-ui='timeline'] [data-part='item'] {
254
+ [data-ui-timeline] [data-part-item] {
257
255
  margin-block-end: var(--_item-gap);
258
256
  }
259
257
 
260
- [data-ui='timeline'] [data-part='item']:last-child {
258
+ [data-ui-timeline] [data-part-item]:last-child {
261
259
  margin-block-end: 0;
262
260
  }
263
261
 
264
- [data-ui='timeline'] [data-part='content'] {
262
+ [data-ui-timeline] [data-part-content] {
265
263
  align-self: baseline;
266
264
  grid-column: content;
267
265
  /**
@@ -273,7 +271,7 @@
273
271
  min-inline-size: 0;
274
272
  }
275
273
 
276
- [data-ui='timeline'] [data-part='opposite'] {
274
+ [data-ui-timeline] [data-part-opposite] {
277
275
  align-self: baseline;
278
276
  color: var(--_muted);
279
277
  grid-column: opposite;
@@ -291,7 +289,7 @@
291
289
  * connector starts and ends — whatever size the marker is.
292
290
  */
293
291
 
294
- [data-ui='timeline'] [data-part='rail'] {
292
+ [data-ui-timeline] [data-part-rail] {
295
293
  align-items: center;
296
294
  display: flex;
297
295
  flex-direction: column;
@@ -315,7 +313,7 @@
315
313
  * and a core laid over it at a whole-pixel inset. There is no smaller box
316
314
  * centred by arithmetic, so the core lands where the ring does.
317
315
  */
318
- [data-ui='timeline'] [data-part='marker'] {
316
+ [data-ui-timeline] [data-part-marker] {
319
317
  --_marker: var(--_dot);
320
318
  /**
321
319
  * Rounded to a whole pixel: a line of 19.5 put a 13-pixel dot at a
@@ -355,7 +353,7 @@
355
353
  * pixels, since the dot and the core differ by an even number. A finished
356
354
  * dot holds its check instead, so it is not empty and draws no core.
357
355
  */
358
- [data-ui='timeline'] [data-part='marker']:empty::after {
356
+ [data-ui-timeline] [data-part-marker]:empty::after {
359
357
  background-color: var(--_tone-mark);
360
358
  border-radius: inherit;
361
359
  content: '';
@@ -377,8 +375,7 @@
377
375
  * the marker stays a dot, and every rule a dot takes names it beside
378
376
  * `:empty`.
379
377
  */
380
- [data-ui='timeline']
381
- [data-part='marker']:not(:empty, :has(> [data-ui='spinner'], > [data-check])) {
378
+ [data-ui-timeline] [data-part-marker]:not(:empty, :has(> [data-ui-spinner], > [data-check])) {
382
379
  --_marker: var(--_badge);
383
380
 
384
381
  background-color: var(--_surface);
@@ -386,7 +383,7 @@
386
383
  border-width: var(--slotted-border-width-thin, 1px);
387
384
  }
388
385
 
389
- [data-ui='timeline'] [data-part='marker'] > [data-ui='icon'] {
386
+ [data-ui-timeline] [data-part-marker] > [data-ui-icon] {
390
387
  --slotted-icon-size: calc(
391
388
  var(--_badge) - 2 * round(down, (var(--_badge) - var(--_glyph)) / 2, 1px)
392
389
  );
@@ -395,17 +392,17 @@
395
392
  }
396
393
 
397
394
  /* A spinner is a dot: the same box, and the same size as the glyph in a badge. */
398
- [data-ui='timeline'] [data-part='marker'] > [data-ui='spinner'] {
395
+ [data-ui-timeline] [data-part-marker] > [data-ui-spinner] {
399
396
  --slotted-spinner-size: var(--_dot);
400
397
 
401
398
  color: inherit;
402
399
  }
403
400
 
404
- [data-ui='timeline'] [data-part='marker'] > [data-ui='avatar'] {
401
+ [data-ui-timeline] [data-part-marker] > [data-ui-avatar] {
405
402
  --slotted-avatar-size: var(--_avatar);
406
403
  }
407
404
 
408
- [data-ui='timeline'] [data-part='marker']:has(> [data-ui='avatar']) {
405
+ [data-ui-timeline] [data-part-marker]:has(> [data-ui-avatar]) {
409
406
  --_marker: var(--_avatar);
410
407
 
411
408
  background-color: transparent;
@@ -422,22 +419,18 @@
422
419
  * the core alone, threaded on the line, or the bare glyph over it.
423
420
  */
424
421
 
425
- [data-ui='timeline']
426
- [data-variant='outline']
427
- [data-part='marker']:is(:empty, :has(> [data-check])) {
422
+ [data-ui-timeline] [data-variant='outline'] [data-part-marker]:is(:empty, :has(> [data-check])) {
428
423
  background-color: var(--_surface);
429
424
  border-color: var(--_tone-mark);
430
425
  border-width: var(--_edge);
431
426
  }
432
427
 
433
- [data-ui='timeline'] [data-variant='outline'] [data-part='marker']:empty::after,
434
- [data-ui='timeline'] [data-variant='solid'] [data-part='marker']:empty::after {
428
+ [data-ui-timeline] [data-variant='outline'] [data-part-marker]:empty::after,
429
+ [data-ui-timeline] [data-variant='solid'] [data-part-marker]:empty::after {
435
430
  content: none;
436
431
  }
437
432
 
438
- [data-ui='timeline']
439
- [data-variant='solid']
440
- [data-part='marker']:is(:empty, :has(> [data-check])) {
433
+ [data-ui-timeline] [data-variant='solid'] [data-part-marker]:is(:empty, :has(> [data-check])) {
441
434
  background-color: var(--_tone-mark);
442
435
  /* A border as wide as the radius, so forced colours, which drop the ground, keep the disc. */
443
436
  border-color: var(--_tone-mark);
@@ -445,45 +438,39 @@
445
438
  }
446
439
 
447
440
  /* The core alone, on the line: the ground and the halo give way so the line runs into it. */
448
- [data-ui='timeline']
449
- [data-variant='plain']
450
- [data-part='marker']:is(:empty, :has(> [data-check])) {
441
+ [data-ui-timeline] [data-variant='plain'] [data-part-marker]:is(:empty, :has(> [data-check])) {
451
442
  background-color: transparent;
452
443
  box-shadow: none;
453
444
  }
454
445
 
455
446
  /* The glyph of a hairline or frameless badge is drawn in the dot's own ink. */
456
- [data-ui='timeline']
457
- [data-variant='outline']
458
- [data-part='marker']:not(:empty, :has(> [data-check])) {
447
+ [data-ui-timeline] [data-variant='outline'] [data-part-marker]:not(:empty, :has(> [data-check])) {
459
448
  color: var(--_tone-mark);
460
449
  }
461
450
 
462
- [data-ui='timeline']
451
+ [data-ui-timeline]
463
452
  [data-variant='outline'][data-tone]:not([data-tone='secondary'])
464
- [data-part='marker']:not(:empty, :has(> [data-ui='spinner'], > [data-check])) {
453
+ [data-part-marker]:not(:empty, :has(> [data-ui-spinner], > [data-check])) {
465
454
  border-color: var(--_tone-border);
466
455
  }
467
456
 
468
- [data-ui='timeline']
457
+ [data-ui-timeline]
469
458
  [data-variant='solid']
470
- [data-part='marker']:not(:empty, :has(> [data-ui='spinner'], > [data-check])) {
459
+ [data-part-marker]:not(:empty, :has(> [data-ui-spinner], > [data-check])) {
471
460
  background-color: var(--_tone-solid);
472
461
  border-color: var(--_tone-solid);
473
462
  color: var(--_tone-on-solid);
474
463
  }
475
464
 
476
- [data-ui='timeline']
465
+ [data-ui-timeline]
477
466
  [data-variant='subtle']
478
- [data-part='marker']:not(:empty, :has(> [data-ui='spinner'], > [data-check])) {
467
+ [data-part-marker]:not(:empty, :has(> [data-ui-spinner], > [data-check])) {
479
468
  background-color: var(--_tone-surface);
480
469
  border-color: var(--_tone-border);
481
470
  color: var(--_tone-text);
482
471
  }
483
472
 
484
- [data-ui='timeline']
485
- [data-variant='plain']
486
- [data-part='marker']:not(:empty, :has(> [data-check])) {
473
+ [data-ui-timeline] [data-variant='plain'] [data-part-marker]:not(:empty, :has(> [data-check])) {
487
474
  background-color: var(--_surface);
488
475
  border-color: transparent;
489
476
  color: var(--_tone-mark);
@@ -507,20 +494,18 @@
507
494
  * radius: that border would leave the check no box to stand in. Forced
508
495
  * colours keep the ground through the block at the end.
509
496
  */
510
- [data-ui='timeline']
511
- [data-complete]:not([data-current])
512
- [data-part='marker']:has(> [data-check]) {
497
+ [data-ui-timeline] [data-complete]:not([data-current]) [data-part-marker]:has(> [data-check]) {
513
498
  background-color: var(--_tone-mark);
514
499
  border-width: 0;
515
500
  }
516
501
 
517
- [data-ui='timeline'] [data-current] [data-part='marker']:empty {
502
+ [data-ui-timeline] [data-current] [data-part-marker]:empty {
518
503
  background-color: var(--_tone-mark);
519
504
  border-color: var(--_tone-mark);
520
505
  border-width: calc(var(--_marker) / 2);
521
506
  }
522
507
 
523
- [data-ui='timeline'] [data-current] [data-part='marker']:empty::after {
508
+ [data-ui-timeline] [data-current] [data-part-marker]:empty::after {
524
509
  content: none;
525
510
  }
526
511
 
@@ -529,25 +514,25 @@
529
514
  * reads in every tone and scheme without a token of its own; it is the
530
515
  * dot less a step a side, the same air a badge gives its glyph.
531
516
  */
532
- [data-ui='timeline'] [data-part='marker'] > [data-ui='icon'][data-check] {
517
+ [data-ui-timeline] [data-part-marker] > [data-ui-icon][data-check] {
533
518
  --slotted-icon-size: calc(var(--_marker) - 2 * var(--slotted-space-1, 0.125rem));
534
519
 
535
520
  color: var(--_surface);
536
521
  }
537
522
 
538
- [data-ui='timeline'] [data-current] [data-part='marker'] {
523
+ [data-ui-timeline] [data-current] [data-part-marker] {
539
524
  box-shadow:
540
525
  0 0 0 var(--slotted-border-width-thick, 2px) var(--_surface),
541
526
  0 0 0 var(--_reach) var(--_tone-mark),
542
527
  0 0 0 calc(var(--_reach) + var(--_line-gap)) var(--_surface);
543
528
  }
544
529
 
545
- [data-ui='timeline']
530
+ [data-ui-timeline]
546
531
  [data-complete]:not([data-current])
547
- [data-part='marker']:not(:empty, :has(> [data-ui='spinner'], > [data-check])),
548
- [data-ui='timeline']
532
+ [data-part-marker]:not(:empty, :has(> [data-ui-spinner], > [data-check])),
533
+ [data-ui-timeline]
549
534
  [data-current]
550
- [data-part='marker']:not(:empty, :has(> [data-ui='spinner'], > [data-check])) {
535
+ [data-part-marker]:not(:empty, :has(> [data-ui-spinner], > [data-check])) {
551
536
  background-color: var(--_tone-solid);
552
537
  border-color: var(--_tone-solid);
553
538
  color: var(--_tone-on-solid);
@@ -558,14 +543,14 @@
558
543
  * for every family that waits — standing bare on the ground, the size of a
559
544
  * dot, in the tone's ink.
560
545
  */
561
- [data-ui='timeline'] [data-loading][data-variant] [data-part='marker'] {
546
+ [data-ui-timeline] [data-loading][data-variant] [data-part-marker] {
562
547
  background-color: var(--_surface);
563
548
  border-color: transparent;
564
549
  box-shadow: 0 0 0 var(--_line-gap) var(--_surface);
565
550
  color: var(--_tone-mark);
566
551
  }
567
552
 
568
- [data-ui='timeline'] [data-loading] > [data-part='content'] {
553
+ [data-ui-timeline] [data-loading] > [data-part-content] {
569
554
  color: var(--_muted);
570
555
  }
571
556
 
@@ -579,7 +564,7 @@
579
564
  * none, because there is nothing after it.
580
565
  */
581
566
 
582
- [data-ui='timeline'] [data-part='connector'] {
567
+ [data-ui-timeline] [data-part-connector] {
583
568
  /* Both edges named, so the dashed style below reaches only the one drawn. */
584
569
  border-block-start: 0 solid var(--_line);
585
570
  border-inline-start: var(--_rule) solid var(--_line);
@@ -593,13 +578,13 @@
593
578
  var(--slotted-control-transition-easing);
594
579
  }
595
580
 
596
- [data-ui='timeline'] [data-connector='dashed'] [data-part='connector'] {
581
+ [data-ui-timeline] [data-connector='dashed'] [data-part-connector] {
597
582
  border-block-start-style: dashed;
598
583
  border-inline-start-style: dashed;
599
584
  }
600
585
 
601
- [data-ui='timeline'] [data-connector='none'] [data-part='connector'],
602
- [data-ui='timeline'] [data-part='item']:last-child [data-part='connector'] {
586
+ [data-ui-timeline] [data-connector='none'] [data-part-connector],
587
+ [data-ui-timeline] [data-part-item]:last-child [data-part-connector] {
603
588
  display: none;
604
589
  }
605
590
 
@@ -607,7 +592,7 @@
607
592
  * The line after a finished event is painted in its tone, so a tracking
608
593
  * timeline reads as a filled track up to where the reader is.
609
594
  */
610
- [data-ui='timeline'] [data-complete] [data-part='connector'] {
595
+ [data-ui-timeline] [data-complete] [data-part-connector] {
611
596
  border-color: var(--_tone-mark);
612
597
  }
613
598
 
@@ -625,7 +610,7 @@
625
610
  * under.
626
611
  */
627
612
 
628
- [data-ui='timeline'] [data-part='content'] {
613
+ [data-ui-timeline] [data-part-content] {
629
614
  /**
630
615
  * No column gap: the timestamp carries the distance itself, so a body
631
616
  * with no timestamp has no empty column and no gap beside it.
@@ -638,15 +623,15 @@
638
623
  row-gap: 0;
639
624
  }
640
625
 
641
- [data-ui='timeline'] [data-part='content'] > :not([data-part='title'], [data-part='time']) {
626
+ [data-ui-timeline] [data-part-content] > :not([data-part-title], [data-part-time]) {
642
627
  grid-column: 1 / -1;
643
628
  }
644
629
 
645
- [data-ui='timeline'] [data-part='content'] > :is([data-part='actor'], [data-part='description']) {
630
+ [data-ui-timeline] [data-part-content] > :is([data-part-actor], [data-part-description]) {
646
631
  margin-block-start: var(--slotted-timeline-content-gap, var(--slotted-space-2, 0.25rem));
647
632
  }
648
633
 
649
- [data-ui='timeline'] [data-part='title'] {
634
+ [data-ui-timeline] [data-part-title] {
650
635
  color: var(--_strong);
651
636
  font-weight: var(--slotted-timeline-title-weight, var(--slotted-font-weight-medium, 500));
652
637
  grid-column: 1;
@@ -654,20 +639,20 @@
654
639
  overflow-wrap: anywhere;
655
640
  }
656
641
 
657
- [data-ui='timeline'] [data-part='content'] > [data-part='time'] {
642
+ [data-ui-timeline] [data-part-content] > [data-part-time] {
658
643
  grid-column: 2;
659
644
  grid-row: 1;
660
645
  margin-inline-start: var(--_gap);
661
646
  }
662
647
 
663
- [data-ui='timeline'] [data-part='time'] {
648
+ [data-ui-timeline] [data-part-time] {
664
649
  color: var(--_muted);
665
650
  font-size: var(--slotted-timeline-time-font-size, var(--slotted-font-size-xs, 0.75rem));
666
651
  font-variant-numeric: tabular-nums;
667
652
  white-space: nowrap;
668
653
  }
669
654
 
670
- [data-ui='timeline'] [data-part='actor'] {
655
+ [data-ui-timeline] [data-part-actor] {
671
656
  align-items: center;
672
657
  color: var(--_muted);
673
658
  column-gap: var(--slotted-space-3, 0.375rem);
@@ -676,14 +661,14 @@
676
661
  min-inline-size: 0;
677
662
  }
678
663
 
679
- [data-ui='timeline'] [data-part='description'] {
664
+ [data-ui-timeline] [data-part-description] {
680
665
  color: var(--_muted);
681
666
  font-size: var(--_meta-size);
682
667
  min-inline-size: 0;
683
668
  overflow-wrap: anywhere;
684
669
  }
685
670
 
686
- [data-ui='timeline'] [data-part='actions'] {
671
+ [data-ui-timeline] [data-part-actions] {
687
672
  column-gap: var(--_gap);
688
673
  display: flex;
689
674
  flex-wrap: wrap;
@@ -698,7 +683,7 @@
698
683
  * theme states, around the whole row rather than around the words.
699
684
  */
700
685
 
701
- [data-ui='timeline'] [data-part='item'][tabindex]:focus-visible {
686
+ [data-ui-timeline] [data-part-item][tabindex]:focus-visible {
702
687
  border-radius: var(--slotted-timeline-radius, var(--slotted-control-radius, 4px));
703
688
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
704
689
  outline-offset: var(--slotted-focus-ring-offset, 2px);
@@ -711,11 +696,11 @@
711
696
  * track that ran into it would say the opposite.
712
697
  */
713
698
 
714
- [data-ui='timeline'] [data-part='group'] {
699
+ [data-ui-timeline] [data-part-group] {
715
700
  display: block;
716
701
  }
717
702
 
718
- [data-ui='timeline'] [data-part='group'] + [data-part='group'] {
703
+ [data-ui-timeline] [data-part-group] + [data-part-group] {
719
704
  margin-block-start: var(--_item-gap);
720
705
  }
721
706
 
@@ -724,7 +709,7 @@
724
709
  * trigger on the heading's baseline added the font's descent under its
725
710
  * 24 pixels, and the heading measured 26.5.
726
711
  */
727
- [data-ui='timeline'] [data-part='group-label'] {
712
+ [data-ui-timeline] [data-part-group-label] {
728
713
  align-items: center;
729
714
  color: var(--_muted);
730
715
  display: flex;
@@ -734,7 +719,7 @@
734
719
  margin: 0 0 var(--slotted-timeline-group-gap, var(--slotted-space-4, 0.5rem));
735
720
  }
736
721
 
737
- [data-ui='timeline'] [data-part='group-trigger'] {
722
+ [data-ui-timeline] [data-part-group-trigger] {
738
723
  align-items: center;
739
724
  appearance: none;
740
725
  background: none;
@@ -754,7 +739,7 @@
754
739
  translate var(--slotted-duration-instant) var(--slotted-control-transition-easing);
755
740
  }
756
741
 
757
- [data-ui='timeline'] [data-part='group-trigger']:enabled:hover {
742
+ [data-ui-timeline] [data-part-group-trigger]:enabled:hover {
758
743
  color: var(--_strong);
759
744
  }
760
745
 
@@ -763,12 +748,12 @@
763
748
  * strongest ink, so a press answers in place: the label settles by a
764
749
  * hairline, the press `button` draws on a solid fill.
765
750
  */
766
- [data-ui='timeline'] [data-part='group-trigger']:enabled:active {
751
+ [data-ui-timeline] [data-part-group-trigger]:enabled:active {
767
752
  color: var(--_strong);
768
753
  translate: 0 var(--slotted-border-width-thin, 1px);
769
754
  }
770
755
 
771
- [data-ui='timeline'] [data-part='group-trigger']:focus-visible {
756
+ [data-ui-timeline] [data-part-group-trigger]:focus-visible {
772
757
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
773
758
  outline-offset: var(--slotted-focus-ring-offset, 2px);
774
759
  }
@@ -778,7 +763,7 @@
778
763
  * that rotates between down and up is the same mark in every direction. The
779
764
  * part sizes the icon box and the box turns.
780
765
  */
781
- [data-ui='timeline'] [data-part='group-indicator'] {
766
+ [data-ui-timeline] [data-part-group-indicator] {
782
767
  --slotted-icon-size: var(--_icon);
783
768
 
784
769
  display: inline-flex;
@@ -793,21 +778,21 @@
793
778
  * one frame, the exiting curve held the list at 0.9 for the first fifty-five milliseconds
794
779
  * after the press, and the chevron finished seventy milliseconds after the list had gone.
795
780
  */
796
- [data-ui='timeline'] [data-part='group'] {
781
+ [data-ui-timeline] [data-part-group] {
797
782
  --_fold: var(--slotted-duration-medium)
798
783
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
799
784
  }
800
785
 
801
- [data-ui='timeline'] [data-part='group-indicator'] > [data-ui='icon'] {
786
+ [data-ui-timeline] [data-part-group-indicator] > [data-ui-icon] {
802
787
  rotate: -90deg;
803
788
  transition: rotate var(--_fold);
804
789
  }
805
790
 
806
- [data-ui='timeline']
791
+ [data-ui-timeline]
807
792
  [data-open]
808
- > [data-part='group-label']
809
- [data-part='group-indicator']
810
- > [data-ui='icon'] {
793
+ > [data-part-group-label]
794
+ [data-part-group-indicator]
795
+ > [data-ui-icon] {
811
796
  rotate: 0deg;
812
797
  }
813
798
 
@@ -821,7 +806,7 @@
821
806
  * opening. The clip margin keeps the current marker's ring and a focus
822
807
  * ring at the list's edge whole.
823
808
  */
824
- [data-ui='timeline'] [data-part='group-list'] {
809
+ [data-ui-timeline] [data-part-group-list] {
825
810
  interpolate-size: allow-keywords;
826
811
  opacity: 1;
827
812
  overflow: clip;
@@ -835,7 +820,7 @@
835
820
  visibility var(--_fold);
836
821
  }
837
822
 
838
- [data-ui='timeline'] [data-part='group-list'][hidden] {
823
+ [data-ui-timeline] [data-part-group-list][hidden] {
839
824
  block-size: 0;
840
825
  display: flex;
841
826
  opacity: 0;
@@ -843,11 +828,11 @@
843
828
  }
844
829
 
845
830
  /* A folded group ends at its heading; the distance to the next is the group's own. */
846
- [data-ui='timeline'] [data-part='group-label'] {
831
+ [data-ui-timeline] [data-part-group-label] {
847
832
  transition: margin-block-end var(--_fold);
848
833
  }
849
834
 
850
- [data-ui='timeline'] [data-part='group-label']:has(+ [data-part='group-list'][hidden]) {
835
+ [data-ui-timeline] [data-part-group-label]:has(+ [data-part-group-list][hidden]) {
851
836
  margin-block-end: 0;
852
837
  }
853
838
 
@@ -858,8 +843,8 @@
858
843
  * been loaded; `empty` is the list with nothing in it yet.
859
844
  */
860
845
 
861
- [data-ui='timeline'] [data-part='fresh'],
862
- [data-ui='timeline'] button[data-part='more'] {
846
+ [data-ui-timeline] [data-part-fresh],
847
+ [data-ui-timeline] button[data-part-more] {
863
848
  align-items: center;
864
849
  appearance: none;
865
850
  background-color: var(--_surface);
@@ -886,7 +871,7 @@
886
871
  color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);
887
872
  }
888
873
 
889
- [data-ui='timeline'] [data-part='fresh'] {
874
+ [data-ui-timeline] [data-part-fresh] {
890
875
  --_tone-solid: var(--slotted-tone-accent-solid, Highlight);
891
876
  --_tone-surface: var(--slotted-tone-accent-surface, Canvas);
892
877
  --_tone-border: var(--slotted-tone-accent-border, Highlight);
@@ -928,7 +913,7 @@
928
913
  * (`text-scale.test.mjs`).
929
914
  */
930
915
  @starting-style {
931
- [data-ui='timeline'] [data-part='fresh']:not([hidden]) {
916
+ [data-ui-timeline] [data-part-fresh]:not([hidden]) {
932
917
  block-size: 0;
933
918
  border-block-width: 0;
934
919
  margin-block-end: 0;
@@ -937,7 +922,7 @@
937
922
  }
938
923
  }
939
924
 
940
- [data-ui='timeline'] [data-part='fresh'][hidden] {
925
+ [data-ui-timeline] [data-part-fresh][hidden] {
941
926
  block-size: 0;
942
927
  border-block-width: 0;
943
928
  display: none;
@@ -954,7 +939,7 @@
954
939
  * on — `subtle-hover` lightened it toward the page in the light scheme, and
955
940
  * matched the page in the dark one, and `subtle-active` was the rest colour.
956
941
  */
957
- [data-ui='timeline'] [data-part='fresh']:enabled:hover {
942
+ [data-ui-timeline] [data-part-fresh]:enabled:hover {
958
943
  background-color: color-mix(
959
944
  in oklab,
960
945
  var(--_tone-surface),
@@ -962,7 +947,7 @@
962
947
  );
963
948
  }
964
949
 
965
- [data-ui='timeline'] [data-part='fresh']:enabled:active {
950
+ [data-ui-timeline] [data-part-fresh]:enabled:active {
966
951
  background-color: color-mix(
967
952
  in oklab,
968
953
  var(--_tone-surface),
@@ -970,21 +955,21 @@
970
955
  );
971
956
  }
972
957
 
973
- [data-ui='timeline'] button[data-part='more']:enabled:hover {
958
+ [data-ui-timeline] button[data-part-more]:enabled:hover {
974
959
  background-color: var(--slotted-tone-secondary-subtle-hover, Canvas);
975
960
  }
976
961
 
977
- [data-ui='timeline'] button[data-part='more']:enabled:active {
962
+ [data-ui-timeline] button[data-part-more]:enabled:active {
978
963
  background-color: var(--slotted-tone-secondary-subtle-active, Canvas);
979
964
  }
980
965
 
981
966
  /* A press lands at once, as a `button` does; the release eases back. */
982
- [data-ui='timeline'] :is([data-part='fresh'], button[data-part='more']):enabled:active {
967
+ [data-ui-timeline] :is([data-part-fresh], button[data-part-more]):enabled:active {
983
968
  transition-duration: var(--slotted-duration-instant);
984
969
  }
985
970
 
986
- [data-ui='timeline'] [data-part='fresh']:focus-visible,
987
- [data-ui='timeline'] button[data-part='more']:focus-visible {
971
+ [data-ui-timeline] [data-part-fresh]:focus-visible,
972
+ [data-ui-timeline] button[data-part-more]:focus-visible {
988
973
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
989
974
  outline-offset: var(--slotted-focus-ring-offset, 2px);
990
975
  }
@@ -993,16 +978,16 @@
993
978
  * The end of the loaded list, in the body's own column so it reads as the
994
979
  * next event's place rather than as a footer.
995
980
  */
996
- [data-ui='timeline'] [data-part='more'] {
981
+ [data-ui-timeline] [data-part-more] {
997
982
  margin-block-start: var(--_item-gap);
998
983
  margin-inline-start: calc(var(--_opposite-column, 0px) + var(--_rail) + var(--_gap));
999
984
  }
1000
985
 
1001
- [data-ui='timeline'] [data-part='list']:has([data-part='opposite']) ~ [data-part='more'] {
986
+ [data-ui-timeline] [data-part-list]:has([data-part-opposite]) ~ [data-part-more] {
1002
987
  margin-inline-start: calc(var(--_opposite) + var(--_rail) + 2 * var(--_gap));
1003
988
  }
1004
989
 
1005
- [data-ui='timeline'] div[data-part='more'] {
990
+ [data-ui-timeline] div[data-part-more] {
1006
991
  align-items: center;
1007
992
  color: var(--_muted);
1008
993
  column-gap: var(--_gap);
@@ -1011,11 +996,11 @@
1011
996
  min-block-size: var(--slotted-control-height-sm, 30px);
1012
997
  }
1013
998
 
1014
- [data-ui='timeline'] [data-part='more'] > [data-ui='spinner'] {
999
+ [data-ui-timeline] [data-part-more] > [data-ui-spinner] {
1015
1000
  --slotted-spinner-size: var(--_icon);
1016
1001
  }
1017
1002
 
1018
- [data-ui='timeline'] [data-part='empty'] {
1003
+ [data-ui-timeline] [data-part-empty] {
1019
1004
  color: var(--_muted);
1020
1005
  padding-block: var(--_item-gap);
1021
1006
  text-align: center;
@@ -1029,45 +1014,45 @@
1029
1014
  * document `start` is the same timeline mirrored.
1030
1015
  */
1031
1016
 
1032
- [data-ui='timeline'][data-placement='start'] [data-part='item'] {
1017
+ [data-ui-timeline][data-placement='start'] [data-part-item] {
1033
1018
  grid-template-columns:
1034
1019
  [content] minmax(0, 1fr)
1035
1020
  [rail] var(--_rail)
1036
1021
  [opposite] var(--_opposite-column, 0);
1037
1022
  }
1038
1023
 
1039
- [data-ui='timeline'][data-placement='start']
1040
- :where([data-part='list']:not(:has([data-part='opposite'])))
1041
- [data-part='item'] {
1024
+ [data-ui-timeline][data-placement='start']
1025
+ :where([data-part-list]:not(:has([data-part-opposite])))
1026
+ [data-part-item] {
1042
1027
  grid-template-columns: [content] minmax(0, 1fr) [rail] var(--_rail);
1043
1028
  }
1044
1029
 
1045
- [data-ui='timeline'][data-placement='start'] [data-part='content'] {
1030
+ [data-ui-timeline][data-placement='start'] [data-part-content] {
1046
1031
  text-align: end;
1047
1032
  }
1048
1033
 
1049
- [data-ui='timeline'][data-placement='start'] [data-part='content'] {
1034
+ [data-ui-timeline][data-placement='start'] [data-part-content] {
1050
1035
  grid-template-columns: auto minmax(0, 1fr);
1051
1036
  }
1052
1037
 
1053
- [data-ui='timeline'][data-placement='start'] [data-part='content'] > [data-part='title'] {
1038
+ [data-ui-timeline][data-placement='start'] [data-part-content] > [data-part-title] {
1054
1039
  grid-column: 2;
1055
1040
  }
1056
1041
 
1057
- [data-ui='timeline'][data-placement='start'] [data-part='content'] > [data-part='time'] {
1042
+ [data-ui-timeline][data-placement='start'] [data-part-content] > [data-part-time] {
1058
1043
  grid-column: 1;
1059
1044
  margin-inline: 0 var(--_gap);
1060
1045
  }
1061
1046
 
1062
- [data-ui='timeline'][data-placement='start'] :is([data-part='actor'], [data-part='actions']) {
1047
+ [data-ui-timeline][data-placement='start'] :is([data-part-actor], [data-part-actions]) {
1063
1048
  justify-content: flex-end;
1064
1049
  }
1065
1050
 
1066
- [data-ui='timeline'][data-placement='start'] [data-part='opposite'] {
1051
+ [data-ui-timeline][data-placement='start'] [data-part-opposite] {
1067
1052
  text-align: start;
1068
1053
  }
1069
1054
 
1070
- [data-ui='timeline'][data-placement='start'] [data-part='more'] {
1055
+ [data-ui-timeline][data-placement='start'] [data-part-more] {
1071
1056
  margin-inline-start: 0;
1072
1057
  }
1073
1058
 
@@ -1076,18 +1061,18 @@
1076
1061
  * rest: two equal fractions of an odd remainder put the rail, and every
1077
1062
  * marker on it, at half a pixel.
1078
1063
  */
1079
- [data-ui='timeline'][data-placement='alternate'] [data-part='item'] {
1064
+ [data-ui-timeline][data-placement='alternate'] [data-part-item] {
1080
1065
  grid-template-columns:
1081
1066
  [before] round(down, calc((100% - var(--_rail)) / 2 - var(--_gap)), 1px)
1082
1067
  [rail] var(--_rail)
1083
1068
  [after] minmax(0, 1fr);
1084
1069
  }
1085
1070
 
1086
- [data-ui='timeline'][data-placement='alternate'] [data-part='content'] {
1071
+ [data-ui-timeline][data-placement='alternate'] [data-part-content] {
1087
1072
  grid-column: after;
1088
1073
  }
1089
1074
 
1090
- [data-ui='timeline'][data-placement='alternate'] [data-part='opposite'] {
1075
+ [data-ui-timeline][data-placement='alternate'] [data-part-opposite] {
1091
1076
  grid-column: before;
1092
1077
  }
1093
1078
 
@@ -1095,72 +1080,72 @@
1095
1080
  * Even rows swap sides. Parity is read from the list rather than written by
1096
1081
  * a binding, and an item that names its own side wins.
1097
1082
  */
1098
- [data-ui='timeline'][data-placement='alternate']
1099
- [data-part='item']:nth-child(even)
1100
- [data-part='content'],
1101
- [data-ui='timeline'][data-placement='alternate'] [data-side='start'] [data-part='content'] {
1083
+ [data-ui-timeline][data-placement='alternate']
1084
+ [data-part-item]:nth-child(even)
1085
+ [data-part-content],
1086
+ [data-ui-timeline][data-placement='alternate'] [data-side='start'] [data-part-content] {
1102
1087
  grid-column: before;
1103
1088
  text-align: end;
1104
1089
  }
1105
1090
 
1106
- [data-ui='timeline'][data-placement='alternate']
1107
- [data-part='item']:nth-child(even)
1108
- [data-part='opposite'],
1109
- [data-ui='timeline'][data-placement='alternate'] [data-side='start'] [data-part='opposite'] {
1091
+ [data-ui-timeline][data-placement='alternate']
1092
+ [data-part-item]:nth-child(even)
1093
+ [data-part-opposite],
1094
+ [data-ui-timeline][data-placement='alternate'] [data-side='start'] [data-part-opposite] {
1110
1095
  grid-column: after;
1111
1096
  text-align: start;
1112
1097
  }
1113
1098
 
1114
- [data-ui='timeline'][data-placement='alternate'] [data-side='end'] [data-part='content'] {
1099
+ [data-ui-timeline][data-placement='alternate'] [data-side='end'] [data-part-content] {
1115
1100
  grid-column: after;
1116
1101
  text-align: start;
1117
1102
  }
1118
1103
 
1119
- [data-ui='timeline'][data-placement='alternate'] [data-side='end'] [data-part='opposite'] {
1104
+ [data-ui-timeline][data-placement='alternate'] [data-side='end'] [data-part-opposite] {
1120
1105
  grid-column: before;
1121
1106
  text-align: end;
1122
1107
  }
1123
1108
 
1124
- [data-ui='timeline'][data-placement='alternate']
1125
- [data-part='item']:nth-child(even)
1126
- [data-part='content'],
1127
- [data-ui='timeline'][data-placement='alternate'] [data-side='start'] [data-part='content'] {
1109
+ [data-ui-timeline][data-placement='alternate']
1110
+ [data-part-item]:nth-child(even)
1111
+ [data-part-content],
1112
+ [data-ui-timeline][data-placement='alternate'] [data-side='start'] [data-part-content] {
1128
1113
  grid-template-columns: auto minmax(0, 1fr);
1129
1114
  }
1130
1115
 
1131
- [data-ui='timeline'][data-placement='alternate']
1132
- [data-part='item']:nth-child(even)
1133
- [data-part='content']
1134
- > [data-part='title'],
1135
- [data-ui='timeline'][data-placement='alternate']
1116
+ [data-ui-timeline][data-placement='alternate']
1117
+ [data-part-item]:nth-child(even)
1118
+ [data-part-content]
1119
+ > [data-part-title],
1120
+ [data-ui-timeline][data-placement='alternate']
1136
1121
  [data-side='start']
1137
- [data-part='content']
1138
- > [data-part='title'] {
1122
+ [data-part-content]
1123
+ > [data-part-title] {
1139
1124
  grid-column: 2;
1140
1125
  }
1141
1126
 
1142
- [data-ui='timeline'][data-placement='alternate']
1143
- [data-part='item']:nth-child(even)
1144
- [data-part='content']
1145
- > [data-part='time'],
1146
- [data-ui='timeline'][data-placement='alternate']
1127
+ [data-ui-timeline][data-placement='alternate']
1128
+ [data-part-item]:nth-child(even)
1129
+ [data-part-content]
1130
+ > [data-part-time],
1131
+ [data-ui-timeline][data-placement='alternate']
1147
1132
  [data-side='start']
1148
- [data-part='content']
1149
- > [data-part='time'] {
1133
+ [data-part-content]
1134
+ > [data-part-time] {
1150
1135
  grid-column: 1;
1151
1136
  margin-inline: 0 var(--_gap);
1152
1137
  }
1153
1138
 
1154
- [data-ui='timeline'][data-placement='alternate']
1155
- [data-part='item']:nth-child(even)
1156
- :is([data-part='actor'], [data-part='actions']),
1157
- [data-ui='timeline'][data-placement='alternate']
1139
+ [data-ui-timeline][data-placement='alternate']
1140
+ [data-part-item]:nth-child(even)
1141
+ :is([data-part-actor], [data-part-actions]),
1142
+ [data-ui-timeline][data-placement='alternate']
1158
1143
  [data-side='start']
1159
- :is([data-part='actor'], [data-part='actions']) {
1144
+ :is([data-part-actor], [data-part-actions]) {
1160
1145
  justify-content: flex-end;
1161
1146
  }
1162
1147
 
1163
- [data-ui='timeline'][data-placement='alternate'] [data-part='more'] {
1148
+ [data-ui-timeline][data-placement='alternate'] [data-part-more] {
1164
1149
  margin-inline-start: calc(50% + var(--_rail) / 2 + var(--_gap));
1165
1150
  }
1166
1151
 
@@ -1173,7 +1158,7 @@
1173
1158
  * titles are.
1174
1159
  */
1175
1160
 
1176
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='list'] {
1161
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-list] {
1177
1162
  display: grid;
1178
1163
  grid-auto-columns: minmax(
1179
1164
  var(--slotted-timeline-track-min, var(--slotted-space-12, 4rem)),
@@ -1193,7 +1178,7 @@
1193
1178
  padding-inline: round(up, var(--_reach), 1px);
1194
1179
  }
1195
1180
 
1196
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='item'] {
1181
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-item] {
1197
1182
  /**
1198
1183
  * The rows keep their own height. Every item in the row is stretched to
1199
1184
  * the tallest, and `auto` rows would share that extra space out — which
@@ -1210,7 +1195,7 @@
1210
1195
  row-gap: 0;
1211
1196
  }
1212
1197
 
1213
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='item']:last-child {
1198
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-item]:last-child {
1214
1199
  padding-inline-end: 0;
1215
1200
  }
1216
1201
 
@@ -1219,7 +1204,7 @@
1219
1204
  * the marker centred in it, so every centre sits half a rail in and the
1220
1205
  * line runs from one to the next along the same row.
1221
1206
  */
1222
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='rail'] {
1207
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-rail] {
1223
1208
  align-items: start;
1224
1209
  align-self: start;
1225
1210
  block-size: var(--_rail);
@@ -1228,13 +1213,13 @@
1228
1213
  justify-content: center;
1229
1214
  }
1230
1215
 
1231
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='marker'] {
1216
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-marker] {
1232
1217
  --_lift: 0px;
1233
1218
 
1234
1219
  margin-inline-start: calc((var(--_rail) - var(--_marker)) / 2);
1235
1220
  }
1236
1221
 
1237
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='connector'] {
1222
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-connector] {
1238
1223
  /* Widths only: the colour and the dash are the rules above, for both edges. */
1239
1224
  border-block-start-width: var(--_rule);
1240
1225
  border-inline-start-width: 0;
@@ -1246,7 +1231,7 @@
1246
1231
  inset-inline-start: calc(var(--_rail) / 2);
1247
1232
  }
1248
1233
 
1249
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='content'] {
1234
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-content] {
1250
1235
  align-self: start;
1251
1236
  grid-column: 1;
1252
1237
  grid-row: after;
@@ -1254,7 +1239,7 @@
1254
1239
  text-align: start;
1255
1240
  }
1256
1241
 
1257
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='opposite'] {
1242
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-opposite] {
1258
1243
  align-self: start;
1259
1244
  grid-column: 1;
1260
1245
  grid-row: before;
@@ -1262,21 +1247,20 @@
1262
1247
  text-align: start;
1263
1248
  }
1264
1249
 
1265
- [data-ui='timeline'][data-orientation='horizontal'][data-placement='start'] [data-part='content'],
1266
- [data-ui='timeline'][data-orientation='horizontal'][data-placement='alternate']
1267
- [data-part='item']:nth-child(even)
1268
- [data-part='content'] {
1250
+ [data-ui-timeline][data-orientation='horizontal'][data-placement='start'] [data-part-content],
1251
+ [data-ui-timeline][data-orientation='horizontal'][data-placement='alternate']
1252
+ [data-part-item]:nth-child(even)
1253
+ [data-part-content] {
1269
1254
  grid-column: 1;
1270
1255
  grid-row: before;
1271
1256
  margin-block: 0 var(--_gap);
1272
1257
  text-align: start;
1273
1258
  }
1274
1259
 
1275
- [data-ui='timeline'][data-orientation='horizontal'][data-placement='start']
1276
- [data-part='opposite'],
1277
- [data-ui='timeline'][data-orientation='horizontal'][data-placement='alternate']
1278
- [data-part='item']:nth-child(even)
1279
- [data-part='opposite'] {
1260
+ [data-ui-timeline][data-orientation='horizontal'][data-placement='start'] [data-part-opposite],
1261
+ [data-ui-timeline][data-orientation='horizontal'][data-placement='alternate']
1262
+ [data-part-item]:nth-child(even)
1263
+ [data-part-opposite] {
1280
1264
  grid-column: 1;
1281
1265
  grid-row: after;
1282
1266
  margin-block: var(--_gap) 0;
@@ -1287,23 +1271,22 @@
1287
1271
  * the placements swap are then irrelevant, and the DOM order — title, time,
1288
1272
  * actor, description, actions — is the order a narrow body reads in.
1289
1273
  */
1290
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='content'] {
1274
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-content] {
1291
1275
  display: flex;
1292
1276
  flex-direction: column;
1293
1277
  }
1294
1278
 
1295
1279
  /* On a line of its own the timestamp may wrap: nowrap is for the title's line. */
1296
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='content'] > [data-part='time'] {
1280
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-content] > [data-part-time] {
1297
1281
  margin-inline: 0;
1298
1282
  white-space: normal;
1299
1283
  }
1300
1284
 
1301
- [data-ui='timeline'][data-orientation='horizontal']
1302
- :is([data-part='actor'], [data-part='actions']) {
1285
+ [data-ui-timeline][data-orientation='horizontal'] :is([data-part-actor], [data-part-actions]) {
1303
1286
  justify-content: flex-start;
1304
1287
  }
1305
1288
 
1306
- [data-ui='timeline'][data-orientation='horizontal'] [data-part='more'] {
1289
+ [data-ui-timeline][data-orientation='horizontal'] [data-part-more] {
1307
1290
  margin-block-start: var(--_gap);
1308
1291
  margin-inline-start: 0;
1309
1292
  }
@@ -1323,12 +1306,12 @@
1323
1306
  */
1324
1307
 
1325
1308
  @container slotted-timeline (max-width: 20rem) {
1326
- [data-ui='timeline'][data-orientation='vertical'] [data-part='content'] {
1309
+ [data-ui-timeline][data-orientation='vertical'] [data-part-content] {
1327
1310
  display: flex;
1328
1311
  flex-direction: column;
1329
1312
  }
1330
1313
 
1331
- [data-ui='timeline'][data-orientation='vertical'] [data-part='content'] > [data-part='time'] {
1314
+ [data-ui-timeline][data-orientation='vertical'] [data-part-content] > [data-part-time] {
1332
1315
  margin-inline: 0;
1333
1316
  white-space: normal;
1334
1317
  }
@@ -1338,62 +1321,59 @@
1338
1321
  * body's measure. The opposite side takes the line above the body, and
1339
1322
  * the rail spans both.
1340
1323
  */
1341
- [data-ui='timeline'][data-orientation='vertical']:not([data-reflow='false'])
1342
- [data-part='list']
1343
- [data-part='item']:nth-child(n) {
1324
+ [data-ui-timeline][data-orientation='vertical']:not([data-reflow='false'])
1325
+ [data-part-list]
1326
+ [data-part-item]:nth-child(n) {
1344
1327
  grid-template-columns: [rail] var(--_rail) [content] minmax(0, 1fr);
1345
1328
  }
1346
1329
 
1347
- [data-ui='timeline'][data-orientation='vertical']:not([data-reflow='false'])
1348
- [data-part='item']:nth-child(n)
1349
- > [data-part='opposite'] {
1330
+ [data-ui-timeline][data-orientation='vertical']:not([data-reflow='false'])
1331
+ [data-part-item]:nth-child(n)
1332
+ > [data-part-opposite] {
1350
1333
  grid-column: content;
1351
1334
  grid-row: 1;
1352
1335
  text-align: start;
1353
1336
  }
1354
1337
 
1355
- [data-ui='timeline'][data-orientation='vertical']:not([data-reflow='false'])
1356
- [data-part='item']:nth-child(n):has(> [data-part='opposite'])
1357
- > [data-part='content'] {
1338
+ [data-ui-timeline][data-orientation='vertical']:not([data-reflow='false'])
1339
+ [data-part-item]:nth-child(n):has(> [data-part-opposite])
1340
+ > [data-part-content] {
1358
1341
  grid-row: 2;
1359
1342
  }
1360
1343
 
1361
- [data-ui='timeline'][data-orientation='vertical']:not([data-reflow='false'])
1362
- [data-part='item']:nth-child(n):has(> [data-part='opposite'])
1363
- > [data-part='rail'] {
1344
+ [data-ui-timeline][data-orientation='vertical']:not([data-reflow='false'])
1345
+ [data-part-item]:nth-child(n):has(> [data-part-opposite])
1346
+ > [data-part-rail] {
1364
1347
  grid-row: 1 / 3;
1365
1348
  }
1366
1349
 
1367
- [data-ui='timeline'][data-orientation='vertical']:not([data-reflow='false'])
1368
- [data-part='item']:nth-child(n)
1369
- > [data-part='content'] {
1350
+ [data-ui-timeline][data-orientation='vertical']:not([data-reflow='false'])
1351
+ [data-part-item]:nth-child(n)
1352
+ > [data-part-content] {
1370
1353
  grid-column: content;
1371
1354
  text-align: start;
1372
1355
  }
1373
1356
 
1374
- [data-ui='timeline'][data-orientation='vertical']:not([data-reflow='false'])
1375
- [data-part='item']:nth-child(n)
1376
- :is([data-part='actor'], [data-part='actions']) {
1357
+ [data-ui-timeline][data-orientation='vertical']:not([data-reflow='false'])
1358
+ [data-part-item]:nth-child(n)
1359
+ :is([data-part-actor], [data-part-actions]) {
1377
1360
  justify-content: flex-start;
1378
1361
  }
1379
1362
 
1380
- [data-ui='timeline'][data-orientation='vertical']:not([data-reflow='false'])
1381
- [data-part='more'] {
1363
+ [data-ui-timeline][data-orientation='vertical']:not([data-reflow='false']) [data-part-more] {
1382
1364
  margin-inline-start: calc(var(--_rail) + var(--_gap));
1383
1365
  }
1384
1366
  }
1385
1367
 
1386
1368
  @container slotted-timeline (max-width: 30rem) {
1387
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1388
- [data-part='list'] {
1369
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false']) [data-part-list] {
1389
1370
  display: flex;
1390
1371
  flex-direction: column;
1391
1372
  overflow-x: visible;
1392
1373
  padding: 0;
1393
1374
  }
1394
1375
 
1395
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1396
- [data-part='item'] {
1376
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false']) [data-part-item] {
1397
1377
  align-items: stretch;
1398
1378
  column-gap: var(--_gap);
1399
1379
  grid-template-columns: [rail] var(--_rail) [content] minmax(0, 1fr);
@@ -1403,13 +1383,12 @@
1403
1383
  row-gap: 0;
1404
1384
  }
1405
1385
 
1406
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1407
- [data-part='item']:last-child {
1386
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false'])
1387
+ [data-part-item]:last-child {
1408
1388
  margin-block-end: 0;
1409
1389
  }
1410
1390
 
1411
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1412
- [data-part='rail'] {
1391
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false']) [data-part-rail] {
1413
1392
  align-items: center;
1414
1393
  align-self: stretch;
1415
1394
  block-size: auto;
@@ -1419,15 +1398,15 @@
1419
1398
  justify-content: flex-start;
1420
1399
  }
1421
1400
 
1422
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1423
- [data-part='marker'] {
1401
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false'])
1402
+ [data-part-marker] {
1424
1403
  --_lift: round(nearest, calc((1lh - var(--_marker)) / 2), 1px);
1425
1404
 
1426
1405
  margin-inline-start: 0;
1427
1406
  }
1428
1407
 
1429
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1430
- [data-part='connector'] {
1408
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false'])
1409
+ [data-part-connector] {
1431
1410
  border-block-start-width: 0;
1432
1411
  border-inline-start-width: var(--_rule);
1433
1412
  block-size: auto;
@@ -1443,9 +1422,9 @@
1443
1422
  * so the column wins over them here; a container query adds no weight of
1444
1423
  * its own.
1445
1424
  */
1446
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1447
- [data-part='item']:nth-child(n)
1448
- > [data-part='opposite'] {
1425
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false'])
1426
+ [data-part-item]:nth-child(n)
1427
+ > [data-part-opposite] {
1449
1428
  align-self: baseline;
1450
1429
  grid-column: content;
1451
1430
  grid-row: 1;
@@ -1453,9 +1432,9 @@
1453
1432
  text-align: start;
1454
1433
  }
1455
1434
 
1456
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1457
- [data-part='item']:nth-child(n)
1458
- > [data-part='content'] {
1435
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false'])
1436
+ [data-part-item]:nth-child(n)
1437
+ > [data-part-content] {
1459
1438
  align-self: baseline;
1460
1439
  grid-column: content;
1461
1440
  grid-row: auto;
@@ -1463,8 +1442,7 @@
1463
1442
  text-align: start;
1464
1443
  }
1465
1444
 
1466
- [data-ui='timeline'][data-orientation='horizontal']:not([data-reflow='false'])
1467
- [data-part='more'] {
1445
+ [data-ui-timeline][data-orientation='horizontal']:not([data-reflow='false']) [data-part-more] {
1468
1446
  margin-block-start: var(--_item-gap);
1469
1447
  margin-inline-start: calc(var(--_rail) + var(--_gap));
1470
1448
  }
@@ -1474,85 +1452,85 @@
1474
1452
  * are two columns of three words. The opposite side takes the line above
1475
1453
  * the body, in reading order.
1476
1454
  */
1477
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1455
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1478
1456
  [data-reflow='false']
1479
1457
  )
1480
- [data-part='item'] {
1458
+ [data-part-item] {
1481
1459
  grid-template-columns: [rail] var(--_rail) [content] minmax(0, 1fr);
1482
1460
  }
1483
1461
 
1484
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1462
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1485
1463
  [data-reflow='false']
1486
1464
  )
1487
- [data-part='item']
1488
- :is([data-part='content'], [data-part='opposite']) {
1465
+ [data-part-item]
1466
+ :is([data-part-content], [data-part-opposite]) {
1489
1467
  grid-column: content;
1490
1468
  text-align: start;
1491
1469
  }
1492
1470
 
1493
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1471
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1494
1472
  [data-reflow='false']
1495
1473
  )
1496
- [data-part='item']
1497
- [data-part='opposite'] {
1474
+ [data-part-item]
1475
+ [data-part-opposite] {
1498
1476
  grid-row: 1;
1499
1477
  }
1500
1478
 
1501
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1479
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1502
1480
  [data-reflow='false']
1503
1481
  )
1504
- [data-part='item']:has(> [data-part='opposite'])
1505
- > [data-part='content'] {
1482
+ [data-part-item]:has(> [data-part-opposite])
1483
+ > [data-part-content] {
1506
1484
  grid-row: 2;
1507
1485
  }
1508
1486
 
1509
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1487
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1510
1488
  [data-reflow='false']
1511
1489
  )
1512
- [data-part='item']:has(> [data-part='opposite'])
1513
- > [data-part='rail'] {
1490
+ [data-part-item]:has(> [data-part-opposite])
1491
+ > [data-part-rail] {
1514
1492
  grid-row: 1 / 3;
1515
1493
  }
1516
1494
 
1517
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1495
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1518
1496
  [data-reflow='false']
1519
1497
  )
1520
- [data-part='item']:nth-child(n)
1521
- [data-part='content'] {
1498
+ [data-part-item]:nth-child(n)
1499
+ [data-part-content] {
1522
1500
  grid-template-columns: minmax(0, 1fr) auto;
1523
1501
  }
1524
1502
 
1525
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1503
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1526
1504
  [data-reflow='false']
1527
1505
  )
1528
- [data-part='item']:nth-child(n)
1529
- [data-part='content']
1530
- > [data-part='title'] {
1506
+ [data-part-item]:nth-child(n)
1507
+ [data-part-content]
1508
+ > [data-part-title] {
1531
1509
  grid-column: 1;
1532
1510
  }
1533
1511
 
1534
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1512
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1535
1513
  [data-reflow='false']
1536
1514
  )
1537
- [data-part='item']:nth-child(n)
1538
- [data-part='content']
1539
- > [data-part='time'] {
1515
+ [data-part-item]:nth-child(n)
1516
+ [data-part-content]
1517
+ > [data-part-time] {
1540
1518
  grid-column: 2;
1541
1519
  margin-inline: var(--_gap) 0;
1542
1520
  }
1543
1521
 
1544
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1522
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1545
1523
  [data-reflow='false']
1546
1524
  )
1547
- [data-part='item']
1548
- :is([data-part='actor'], [data-part='actions']) {
1525
+ [data-part-item]
1526
+ :is([data-part-actor], [data-part-actions]) {
1549
1527
  justify-content: flex-start;
1550
1528
  }
1551
1529
 
1552
- [data-ui='timeline'][data-orientation='vertical'][data-placement='alternate']:not(
1530
+ [data-ui-timeline][data-orientation='vertical'][data-placement='alternate']:not(
1553
1531
  [data-reflow='false']
1554
1532
  )
1555
- [data-part='more'] {
1533
+ [data-part-more] {
1556
1534
  margin-inline-start: calc(var(--_rail) + var(--_gap));
1557
1535
  }
1558
1536
  }
@@ -1571,12 +1549,12 @@
1571
1549
 
1572
1550
  @media (forced-colors: active) {
1573
1551
  /* The core in the marker's own ink, which the system has already forced. */
1574
- [data-ui='timeline'] [data-part='marker']:empty::after {
1552
+ [data-ui-timeline] [data-part-marker]:empty::after {
1575
1553
  background-color: currentColor;
1576
1554
  forced-color-adjust: none;
1577
1555
  }
1578
1556
 
1579
- [data-ui='timeline'] [data-complete]:not([data-current]) [data-part='marker'] {
1557
+ [data-ui-timeline] [data-complete]:not([data-current]) [data-part-marker] {
1580
1558
  background-color: Highlight;
1581
1559
  border-color: Highlight;
1582
1560
  color: HighlightText;
@@ -1584,11 +1562,11 @@
1584
1562
  }
1585
1563
 
1586
1564
  /* The check in the finished disc's forced ink, not the author's ground. */
1587
- [data-ui='timeline'] [data-part='marker'] > [data-ui='icon'][data-check] {
1565
+ [data-ui-timeline] [data-part-marker] > [data-ui-icon][data-check] {
1588
1566
  color: inherit;
1589
1567
  }
1590
1568
 
1591
- [data-ui='timeline'] [data-current]:not([data-loading]) [data-part='marker'] {
1569
+ [data-ui-timeline] [data-current]:not([data-loading]) [data-part-marker] {
1592
1570
  outline: var(--_edge) solid CanvasText;
1593
1571
  outline-offset: var(--slotted-border-width-thick, 2px);
1594
1572
  }