@slotted/styles 0.1.0-beta.7 → 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 +312 -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 +157 -172
  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
@@ -7,7 +7,7 @@
7
7
  * scales, so a calendar at `dense` is the same calendar with less air rather
8
8
  * than a different drawing.
9
9
  */
10
- [data-ui='event-calendar'][data-part='root'] {
10
+ [data-ui-event-calendar][data-part-root] {
11
11
  container: slotted-event-calendar / inline-size;
12
12
 
13
13
  /** Grid rules, drawn once per cell edge. */
@@ -102,9 +102,9 @@
102
102
  min-inline-size: 0;
103
103
  }
104
104
 
105
- [data-ui='event-calendar'] *,
106
- [data-ui='event-calendar'] *::before,
107
- [data-ui='event-calendar'] *::after {
105
+ [data-ui-event-calendar] *,
106
+ [data-ui-event-calendar] *::before,
107
+ [data-ui-event-calendar] *::after {
108
108
  box-sizing: border-box;
109
109
  }
110
110
 
@@ -128,7 +128,7 @@
128
128
  * filter with one calendar, no actions — is an empty `auto` track, and a gap
129
129
  * beside it would still be drawn. The air is each area's own start margin.
130
130
  */
131
- [data-ui='event-calendar'] > [data-part='header'] {
131
+ [data-ui-event-calendar] > [data-part-header] {
132
132
  align-items: center;
133
133
  display: grid;
134
134
  grid-template-areas: 'title navigation views filter actions';
@@ -136,7 +136,7 @@
136
136
  row-gap: var(--slotted-space-4, 0.5rem);
137
137
  }
138
138
 
139
- [data-ui='event-calendar'] > [data-part='header'] > [data-part='title'] {
139
+ [data-ui-event-calendar] > [data-part-header] > [data-part-title] {
140
140
  font-family: var(
141
141
  --slotted-font-family-heading,
142
142
  var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif)
@@ -150,7 +150,7 @@
150
150
  overflow-wrap: anywhere;
151
151
  }
152
152
 
153
- [data-ui='event-calendar'] [data-part='navigation'] {
153
+ [data-ui-event-calendar] [data-part-navigation] {
154
154
  align-items: center;
155
155
  display: inline-flex;
156
156
  gap: var(--slotted-space-2, 0.25rem);
@@ -158,19 +158,19 @@
158
158
  margin-inline-start: var(--slotted-space-6, 1rem);
159
159
  }
160
160
 
161
- [data-ui='event-calendar'] [data-part='views'] {
161
+ [data-ui-event-calendar] [data-part-views] {
162
162
  display: flex;
163
163
  grid-area: views;
164
164
  margin-inline-start: var(--slotted-space-5, 0.75rem);
165
165
  min-inline-size: 0;
166
166
  }
167
167
 
168
- [data-ui='event-calendar'] [data-part='filter'] {
168
+ [data-ui-event-calendar] [data-part-filter] {
169
169
  grid-area: filter;
170
170
  margin-inline-start: var(--_gap);
171
171
  }
172
172
 
173
- [data-ui='event-calendar'] > [data-part='header'] > [data-part='actions'] {
173
+ [data-ui-event-calendar] > [data-part-header] > [data-part-actions] {
174
174
  align-items: center;
175
175
  display: inline-flex;
176
176
  gap: var(--_gap);
@@ -184,10 +184,10 @@
184
184
  * so it cannot carry this family's part; the look is the outlined secondary
185
185
  * control every form already shows, read from the same control tokens.
186
186
  */
187
- [data-ui='event-calendar'] [data-part='today'],
188
- [data-ui='event-calendar'] [data-part='filter'],
189
- [data-ui='event-calendar'] [data-part='previous'],
190
- [data-ui='event-calendar'] [data-part='next'] {
187
+ [data-ui-event-calendar] [data-part-today],
188
+ [data-ui-event-calendar] [data-part-filter],
189
+ [data-ui-event-calendar] [data-part-previous],
190
+ [data-ui-event-calendar] [data-part-next] {
191
191
  align-items: center;
192
192
  appearance: none;
193
193
  background-color: var(--slotted-control-surface, #ffffff);
@@ -214,24 +214,24 @@
214
214
  -webkit-tap-highlight-color: transparent;
215
215
  }
216
216
 
217
- [data-ui='event-calendar'] [data-part='previous'],
218
- [data-ui='event-calendar'] [data-part='next'] {
217
+ [data-ui-event-calendar] [data-part-previous],
218
+ [data-ui-event-calendar] [data-part-next] {
219
219
  inline-size: var(--slotted-control-height-md, 34px);
220
220
  padding-inline: 0;
221
221
  }
222
222
 
223
- [data-ui='event-calendar'] [data-part='today']:hover:not([data-disabled]),
224
- [data-ui='event-calendar'] [data-part='filter']:hover:not([data-disabled]),
225
- [data-ui='event-calendar'] [data-part='previous']:hover:not([data-disabled]),
226
- [data-ui='event-calendar'] [data-part='next']:hover:not([data-disabled]) {
223
+ [data-ui-event-calendar] [data-part-today]:hover:not([data-disabled]),
224
+ [data-ui-event-calendar] [data-part-filter]:hover:not([data-disabled]),
225
+ [data-ui-event-calendar] [data-part-previous]:hover:not([data-disabled]),
226
+ [data-ui-event-calendar] [data-part-next]:hover:not([data-disabled]) {
227
227
  background-color: var(--slotted-tone-secondary-subtle-hover, #eef1f5);
228
228
  }
229
229
 
230
- [data-ui='event-calendar'] [data-part='today']:active:not([data-disabled]),
231
- [data-ui='event-calendar'] [data-part='filter']:active:not([data-disabled]),
232
- [data-ui='event-calendar'] [data-part='previous']:active:not([data-disabled]),
233
- [data-ui='event-calendar'] [data-part='next']:active:not([data-disabled]),
234
- [data-ui='event-calendar'] [data-part='filter'][aria-expanded='true'] {
230
+ [data-ui-event-calendar] [data-part-today]:active:not([data-disabled]),
231
+ [data-ui-event-calendar] [data-part-filter]:active:not([data-disabled]),
232
+ [data-ui-event-calendar] [data-part-previous]:active:not([data-disabled]),
233
+ [data-ui-event-calendar] [data-part-next]:active:not([data-disabled]),
234
+ [data-ui-event-calendar] [data-part-filter][aria-expanded='true'] {
235
235
  background-color: var(--slotted-tone-secondary-subtle-active, #e2e8f0);
236
236
  transition-duration: var(--slotted-duration-instant);
237
237
  }
@@ -243,25 +243,25 @@
243
243
  * inside an `icon` box, which the binding draws; the header only sizes and
244
244
  * turns the box.
245
245
  */
246
- [data-ui='event-calendar'] [data-part='previous'] > [data-ui='icon'],
247
- [data-ui='event-calendar'] [data-part='next'] > [data-ui='icon'],
248
- [data-ui='event-calendar'] [data-part='filter'] > [data-ui='icon'] {
246
+ [data-ui-event-calendar] [data-part-previous] > [data-ui-icon],
247
+ [data-ui-event-calendar] [data-part-next] > [data-ui-icon],
248
+ [data-ui-event-calendar] [data-part-filter] > [data-ui-icon] {
249
249
  --slotted-icon-size: var(--slotted-control-icon-size-md, 16px);
250
250
  }
251
251
 
252
- [data-ui='event-calendar'] [data-part='previous'] > [data-ui='icon'] {
252
+ [data-ui-event-calendar] [data-part-previous] > [data-ui-icon] {
253
253
  rotate: 180deg;
254
254
  }
255
255
 
256
- [data-ui='event-calendar']:dir(rtl) [data-part='previous'] > [data-ui='icon'] {
256
+ [data-ui-event-calendar]:dir(rtl) [data-part-previous] > [data-ui-icon] {
257
257
  rotate: 0deg;
258
258
  }
259
259
 
260
- [data-ui='event-calendar']:dir(rtl) [data-part='next'] > [data-ui='icon'] {
260
+ [data-ui-event-calendar]:dir(rtl) [data-part-next] > [data-ui-icon] {
261
261
  rotate: 180deg;
262
262
  }
263
263
 
264
- [data-ui='event-calendar'] [data-part='filter'] > [data-ui='icon'] {
264
+ [data-ui-event-calendar] [data-part-filter] > [data-ui-icon] {
265
265
  color: var(--slotted-text-muted, #5b6b7f);
266
266
  }
267
267
 
@@ -272,19 +272,19 @@
272
272
  * inside its own edge, because the cell beside it shares that edge and a
273
273
  * ring hung outside would be half under the neighbour.
274
274
  */
275
- [data-ui='event-calendar'] [data-part='today']:focus-visible,
276
- [data-ui='event-calendar'] [data-part='filter']:focus-visible,
277
- [data-ui='event-calendar'] [data-part='previous']:focus-visible,
278
- [data-ui='event-calendar'] [data-part='next']:focus-visible,
279
- [data-ui='event-calendar'] [data-part='day-number']:focus-visible {
275
+ [data-ui-event-calendar] [data-part-today]:focus-visible,
276
+ [data-ui-event-calendar] [data-part-filter]:focus-visible,
277
+ [data-ui-event-calendar] [data-part-previous]:focus-visible,
278
+ [data-ui-event-calendar] [data-part-next]:focus-visible,
279
+ [data-ui-event-calendar] [data-part-day-number]:focus-visible {
280
280
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
281
281
  outline-offset: var(--slotted-focus-ring-offset, 2px);
282
282
  }
283
283
 
284
- [data-ui='event-calendar'] [data-part='day']:focus-visible,
285
- [data-ui='event-calendar'] [data-part='column-header']:focus-visible,
286
- [data-ui='event-calendar'] [data-part='all-day-cell']:focus-visible,
287
- [data-ui='event-calendar'] [data-part='column']:focus-visible {
284
+ [data-ui-event-calendar] [data-part-day]:focus-visible,
285
+ [data-ui-event-calendar] [data-part-column-header]:focus-visible,
286
+ [data-ui-event-calendar] [data-part-all-day-cell]:focus-visible,
287
+ [data-ui-event-calendar] [data-part-column]:focus-visible {
288
288
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
289
289
  outline-offset: calc(var(--slotted-focus-ring-width, 2px) * -1);
290
290
  }
@@ -293,8 +293,8 @@
293
293
  * An event sits in the air the grid leaves around it, and its ring stands
294
294
  * in that air: one pixel out, inside the space to the next event or rule.
295
295
  */
296
- [data-ui='event-calendar'] [data-part='event']:focus-visible,
297
- [data-ui='event-calendar'] [data-part='more']:focus-visible {
296
+ [data-ui-event-calendar] [data-part-event]:focus-visible,
297
+ [data-ui-event-calendar] [data-part-more]:focus-visible {
298
298
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
299
299
  outline-offset: 1px;
300
300
  z-index: 3;
@@ -307,7 +307,7 @@
307
307
  * the month and the list take their content's height and the hours take at
308
308
  * most 40rem; a root with a height gives the hours the rest of it.
309
309
  */
310
- [data-ui='event-calendar'] > [data-part='body'] {
310
+ [data-ui-event-calendar] > [data-part-body] {
311
311
  display: flex;
312
312
  flex: 1 1 auto;
313
313
  flex-direction: column;
@@ -320,7 +320,7 @@
320
320
  * would outline the whole grid; the calendar marks the event or the
321
321
  * stretch the commands act on instead.
322
322
  */
323
- [data-ui='event-calendar'] > [data-part='body'][data-ui='context-menu'] {
323
+ [data-ui-event-calendar] > [data-part-body][data-ui-context-menu] {
324
324
  --slotted-context-menu-mark-width: 0px;
325
325
  }
326
326
 
@@ -333,12 +333,12 @@
333
333
  an application does; with no height the body is the list's height and
334
334
  nothing scrolls. The panels are the body's siblings, so nothing it
335
335
  clips. */
336
- [data-ui='event-calendar'][data-layout='list'] > [data-part='body'] {
336
+ [data-ui-event-calendar][data-layout='list'] > [data-part-body] {
337
337
  overflow-y: auto;
338
338
  overscroll-behavior: contain;
339
339
  }
340
340
 
341
- [data-ui='event-calendar'] > [data-part='body'] > [data-part='loader'] {
341
+ [data-ui-event-calendar] > [data-part-body] > [data-part-loader] {
342
342
  inset-block-start: 0;
343
343
  inset-inline: 0;
344
344
  pointer-events: none;
@@ -346,11 +346,11 @@
346
346
  z-index: 4;
347
347
  }
348
348
 
349
- [data-ui='event-calendar'] > [data-part='body'] > [data-part='error'] {
349
+ [data-ui-event-calendar] > [data-part-body] > [data-part-error] {
350
350
  margin-block-end: var(--slotted-space-5, 0.75rem);
351
351
  }
352
352
 
353
- [data-ui='event-calendar'] > [data-part='body'][aria-busy='true'] [data-part='event'] {
353
+ [data-ui-event-calendar] > [data-part-body][aria-busy='true'] [data-part-event] {
354
354
  opacity: 0.6;
355
355
  }
356
356
 
@@ -367,7 +367,7 @@
367
367
  the rest of it to the weeks: the month grows as a column item and the
368
368
  table spreads the height over its rows, instead of ending half way down
369
369
  the screen. With no height on the root it is its content's height. */
370
- [data-ui='event-calendar'] [data-part='month'] {
370
+ [data-ui-event-calendar] [data-part-month] {
371
371
  flex: 1 0 auto;
372
372
  border-block-start: var(--_rule-width) solid var(--_rule);
373
373
  border-collapse: separate;
@@ -377,8 +377,8 @@
377
377
  table-layout: fixed;
378
378
  }
379
379
 
380
- [data-ui='event-calendar'] [data-part='weekday'],
381
- [data-ui='event-calendar'] [data-part='week-number-header'] {
380
+ [data-ui-event-calendar] [data-part-weekday],
381
+ [data-ui-event-calendar] [data-part-week-number-header] {
382
382
  color: var(--slotted-text-muted, #5b6b7f);
383
383
  font-size: var(--slotted-font-size-xs, 0.75rem);
384
384
  font-weight: var(--slotted-font-weight-medium, 500);
@@ -391,19 +391,19 @@
391
391
  white-space: nowrap;
392
392
  }
393
393
 
394
- [data-ui='event-calendar'] [data-part='month'] [data-part='weekday'],
395
- [data-ui='event-calendar'] [data-part='month'] [data-part='week-number-header'] {
394
+ [data-ui-event-calendar] [data-part-month] [data-part-weekday],
395
+ [data-ui-event-calendar] [data-part-month] [data-part-week-number-header] {
396
396
  border-block-end: var(--_rule-width) solid var(--_rule);
397
397
  border-inline-end: var(--_rule-width) solid var(--_rule);
398
398
  }
399
399
 
400
400
  /** The week-number column is a quarter of a day, enough for two digits. */
401
- [data-ui='event-calendar'] [data-part='week-number-header'],
402
- [data-ui='event-calendar'] [data-part='week-number'] {
401
+ [data-ui-event-calendar] [data-part-week-number-header],
402
+ [data-ui-event-calendar] [data-part-week-number] {
403
403
  inline-size: calc(var(--slotted-space-9, 2rem) + var(--slotted-space-2, 0.25rem));
404
404
  }
405
405
 
406
- [data-ui='event-calendar'] [data-part='week-number'] {
406
+ [data-ui-event-calendar] [data-part-week-number] {
407
407
  border-block-end: var(--_rule-width) solid var(--_rule);
408
408
  border-inline-end: var(--_rule-width) solid var(--_rule);
409
409
  color: var(--slotted-text-muted, #5b6b7f);
@@ -420,7 +420,7 @@
420
420
  * air between the rules and what the cell holds — and the one number a bar
421
421
  * reads to reach across into the cells after it.
422
422
  */
423
- [data-ui='event-calendar'] [data-part='day'] {
423
+ [data-ui-event-calendar] [data-part-day] {
424
424
  --_pad: var(--_air);
425
425
 
426
426
  border-block-end: var(--_rule-width) solid var(--_rule);
@@ -430,9 +430,9 @@
430
430
  vertical-align: top;
431
431
  }
432
432
 
433
- [data-ui='event-calendar'] [data-part='day'][data-non-working],
434
- [data-ui='event-calendar'] [data-part='column'][data-non-working],
435
- [data-ui='event-calendar'] [data-part='all-day-cell'][data-non-working] {
433
+ [data-ui-event-calendar] [data-part-day][data-non-working],
434
+ [data-ui-event-calendar] [data-part-column][data-non-working],
435
+ [data-ui-event-calendar] [data-part-all-day-cell][data-non-working] {
436
436
  background-color: var(--slotted-event-calendar-off-background, var(--_off));
437
437
  }
438
438
 
@@ -442,8 +442,8 @@
442
442
  * a row draw its start and end. The inline edges are inset shadows, so the
443
443
  * offset carries the direction: `--_run-direction` turns it in RTL.
444
444
  */
445
- [data-ui='event-calendar'] [data-part='day'][data-selected],
446
- [data-ui='event-calendar'] [data-part='all-day-cell'][data-selected] {
445
+ [data-ui-event-calendar] [data-part-day][data-selected],
446
+ [data-ui-event-calendar] [data-part-all-day-cell][data-selected] {
447
447
  --_run-edge: var(--slotted-border-width-thin, 1px);
448
448
  --_run-color: var(
449
449
  --slotted-event-calendar-selection-border-color,
@@ -464,19 +464,18 @@
464
464
  inset calc(var(--_run-end) * var(--_run-direction) * -1) 0 0 0 var(--_run-color);
465
465
  }
466
466
 
467
- [data-ui='event-calendar']:dir(rtl) [data-part='day'][data-selected],
468
- [data-ui='event-calendar']:dir(rtl) [data-part='all-day-cell'][data-selected] {
467
+ [data-ui-event-calendar]:dir(rtl) [data-part-day][data-selected],
468
+ [data-ui-event-calendar]:dir(rtl) [data-part-all-day-cell][data-selected] {
469
469
  --_run-direction: -1;
470
470
  }
471
471
 
472
- [data-ui='event-calendar'] [data-part='day'][data-selected]:not([data-selected] + *),
473
- [data-ui='event-calendar'] [data-part='all-day-cell'][data-selected]:not([data-selected] + *) {
472
+ [data-ui-event-calendar] [data-part-day][data-selected]:not([data-selected] + *),
473
+ [data-ui-event-calendar] [data-part-all-day-cell][data-selected]:not([data-selected] + *) {
474
474
  --_run-start: var(--_run-edge);
475
475
  }
476
476
 
477
- [data-ui='event-calendar'] [data-part='day'][data-selected]:not(:has(+ [data-selected])),
478
- [data-ui='event-calendar']
479
- [data-part='all-day-cell'][data-selected]:not(:has(+ [data-selected])) {
477
+ [data-ui-event-calendar] [data-part-day][data-selected]:not(:has(+ [data-selected])),
478
+ [data-ui-event-calendar] [data-part-all-day-cell][data-selected]:not(:has(+ [data-selected])) {
480
479
  --_run-end: var(--_run-edge);
481
480
  }
482
481
 
@@ -484,7 +483,7 @@
484
483
  * The day's number on the start side, the consumer's content for the day
485
484
  * on the end side, one line: a price, a count of free slots, a holiday.
486
485
  */
487
- [data-ui='event-calendar'] [data-part='day-header'] {
486
+ [data-ui-event-calendar] [data-part-day-header] {
488
487
  align-items: center;
489
488
  display: flex;
490
489
  gap: var(--slotted-space-2, 0.25rem);
@@ -493,7 +492,7 @@
493
492
  min-inline-size: 0;
494
493
  }
495
494
 
496
- [data-ui='event-calendar'] [data-part='day-content'] {
495
+ [data-ui-event-calendar] [data-part-day-content] {
497
496
  color: var(--slotted-text-muted, #5b6b7f);
498
497
  font-size: var(--slotted-font-size-xs, 0.75rem);
499
498
  line-height: var(--_line-xs);
@@ -509,7 +508,7 @@
509
508
  * a control, so it lines up with the lanes under it. Today is the accent
510
509
  * solid, the one filled mark on the page.
511
510
  */
512
- [data-ui='event-calendar'] [data-part='day-number'] {
511
+ [data-ui-event-calendar] [data-part-day-number] {
513
512
  align-items: center;
514
513
  appearance: none;
515
514
  background-color: transparent;
@@ -531,21 +530,21 @@
531
530
  var(--slotted-control-transition-easing);
532
531
  }
533
532
 
534
- [data-ui='event-calendar'] [data-part='day-number']:hover:not([data-disabled]) {
533
+ [data-ui-event-calendar] [data-part-day-number]:hover:not([data-disabled]) {
535
534
  background-color: var(--slotted-tone-secondary-subtle-hover, #eef1f5);
536
535
  }
537
536
 
538
- [data-ui='event-calendar'] [data-part='day-number']:active:not([data-disabled]) {
537
+ [data-ui-event-calendar] [data-part-day-number]:active:not([data-disabled]) {
539
538
  background-color: var(--slotted-tone-secondary-subtle-active, #e2e8f0);
540
539
  transition-duration: var(--slotted-duration-instant);
541
540
  }
542
541
 
543
- [data-ui='event-calendar'] [data-part='day'][data-outside-month] [data-part='day-number'] {
542
+ [data-ui-event-calendar] [data-part-day][data-outside-month] [data-part-day-number] {
544
543
  color: var(--slotted-text-muted, #5b6b7f);
545
544
  }
546
545
 
547
- [data-ui='event-calendar'] [data-today] > [data-part='day-header'] [data-part='day-number'],
548
- [data-ui='event-calendar'] [data-part='column-header'][data-today] [data-part='day-number'] {
546
+ [data-ui-event-calendar] [data-today] > [data-part-day-header] [data-part-day-number],
547
+ [data-ui-event-calendar] [data-part-column-header][data-today] [data-part-day-number] {
549
548
  background-color: var(
550
549
  --slotted-event-calendar-today-background,
551
550
  var(--slotted-tone-accent-solid, #2563eb)
@@ -560,15 +559,15 @@
560
559
  * of every week and a bar crossing from one cell into the next stays on its
561
560
  * line.
562
561
  */
563
- [data-ui='event-calendar'] [data-part='day-events'],
564
- [data-ui='event-calendar'] [data-part='all-day-cell'] {
562
+ [data-ui-event-calendar] [data-part-day-events],
563
+ [data-ui-event-calendar] [data-part-all-day-cell] {
565
564
  display: grid;
566
565
  grid-template-columns: minmax(0, 1fr);
567
566
  grid-template-rows: repeat(var(--slotted-event-calendar-lanes, 3), var(--_event-size));
568
567
  row-gap: var(--_air);
569
568
  }
570
569
 
571
- [data-ui='event-calendar'] [data-part='day-events'] {
570
+ [data-ui-event-calendar] [data-part-day-events] {
572
571
  container: slotted-event-calendar-day / inline-size;
573
572
  grid-template-rows:
574
573
  repeat(var(--slotted-event-calendar-lanes, 3), var(--_event-size))
@@ -576,14 +575,14 @@
576
575
  position: relative;
577
576
  }
578
577
 
579
- [data-ui='event-calendar'] [data-part='day-events'] > [data-part='event'],
580
- [data-ui='event-calendar'] [data-part='all-day-cell'] > [data-part='event'] {
578
+ [data-ui-event-calendar] [data-part-day-events] > [data-part-event],
579
+ [data-ui-event-calendar] [data-part-all-day-cell] > [data-part-event] {
581
580
  grid-column: 1;
582
581
  grid-row: var(--slotted-event-lane, 1);
583
582
  justify-self: start;
584
583
  }
585
584
 
586
- [data-ui='event-calendar'] [data-part='day-events'] > [data-part='more'] {
585
+ [data-ui-event-calendar] [data-part-day-events] > [data-part-more] {
587
586
  grid-column: 1;
588
587
  grid-row: -2 / -1;
589
588
  justify-self: start;
@@ -597,7 +596,7 @@
597
596
  * scale; the slot is the identity and the text is the meaning, so the ink
598
597
  * stays the page's own.
599
598
  */
600
- [data-ui='event-calendar'] [data-part='event'] {
599
+ [data-ui-event-calendar] [data-part-event] {
601
600
  align-items: center;
602
601
  appearance: none;
603
602
  background-color: transparent;
@@ -625,35 +624,35 @@
625
624
  -webkit-tap-highlight-color: transparent;
626
625
  }
627
626
 
628
- [data-ui='event-calendar'] [data-part='event'][data-color='1'] {
627
+ [data-ui-event-calendar] [data-part-event][data-color='1'] {
629
628
  --_hue: var(--slotted-data-1, #2563eb);
630
629
  }
631
630
 
632
- [data-ui='event-calendar'] [data-part='event'][data-color='2'] {
631
+ [data-ui-event-calendar] [data-part-event][data-color='2'] {
633
632
  --_hue: var(--slotted-data-2, #ea580c);
634
633
  }
635
634
 
636
- [data-ui='event-calendar'] [data-part='event'][data-color='3'] {
635
+ [data-ui-event-calendar] [data-part-event][data-color='3'] {
637
636
  --_hue: var(--slotted-data-3, #0891b2);
638
637
  }
639
638
 
640
- [data-ui='event-calendar'] [data-part='event'][data-color='4'] {
639
+ [data-ui-event-calendar] [data-part-event][data-color='4'] {
641
640
  --_hue: var(--slotted-data-4, #dc2626);
642
641
  }
643
642
 
644
- [data-ui='event-calendar'] [data-part='event'][data-color='5'] {
643
+ [data-ui-event-calendar] [data-part-event][data-color='5'] {
645
644
  --_hue: var(--slotted-data-5, #7c3aed);
646
645
  }
647
646
 
648
- [data-ui='event-calendar'] [data-part='event'][data-color='6'] {
647
+ [data-ui-event-calendar] [data-part-event][data-color='6'] {
649
648
  --_hue: var(--slotted-data-6, #a16207);
650
649
  }
651
650
 
652
- [data-ui='event-calendar'] [data-part='event'][data-color='7'] {
651
+ [data-ui-event-calendar] [data-part-event][data-color='7'] {
653
652
  --_hue: var(--slotted-data-7, #c026d3);
654
653
  }
655
654
 
656
- [data-ui='event-calendar'] [data-part='event'][data-color='8'] {
655
+ [data-ui-event-calendar] [data-part-event][data-color='8'] {
657
656
  --_hue: var(--slotted-data-8, #16a34a);
658
657
  }
659
658
 
@@ -663,25 +662,25 @@
663
662
  * "AM 7:30" and lost its start to the ellipsis when it inherited the page's
664
663
  * direction instead.
665
664
  */
666
- [data-ui='event-calendar'] [data-part='event-time'],
667
- [data-ui='event-calendar'] [data-part='event-title'],
668
- [data-ui='event-calendar'] [data-part='event-location'],
669
- [data-ui='event-calendar'] [data-part='more'],
670
- [data-ui='event-calendar'] [data-part='hour'],
671
- [data-ui='event-calendar'] [data-part='zone'],
672
- [data-ui='event-calendar'] [data-part='selection'],
673
- [data-ui='event-calendar'] [data-part='offset-change'] {
665
+ [data-ui-event-calendar] [data-part-event-time],
666
+ [data-ui-event-calendar] [data-part-event-title],
667
+ [data-ui-event-calendar] [data-part-event-location],
668
+ [data-ui-event-calendar] [data-part-more],
669
+ [data-ui-event-calendar] [data-part-hour],
670
+ [data-ui-event-calendar] [data-part-zone],
671
+ [data-ui-event-calendar] [data-part-selection],
672
+ [data-ui-event-calendar] [data-part-offset-change] {
674
673
  unicode-bidi: plaintext;
675
674
  }
676
675
 
677
- [data-ui='event-calendar'] [data-part='event-time'] {
676
+ [data-ui-event-calendar] [data-part-event-time] {
678
677
  color: var(--slotted-text-muted, #5b6b7f);
679
678
  flex: 0 0 auto;
680
679
  font-variant-numeric: tabular-nums;
681
680
  white-space: nowrap;
682
681
  }
683
682
 
684
- [data-ui='event-calendar'] [data-part='event-title'] {
683
+ [data-ui-event-calendar] [data-part-event-title] {
685
684
  flex: 0 1 auto;
686
685
  font-weight: var(--slotted-font-weight-medium, 500);
687
686
  min-inline-size: 0;
@@ -690,7 +689,7 @@
690
689
  white-space: nowrap;
691
690
  }
692
691
 
693
- [data-ui='event-calendar'] [data-part='event-location'] {
692
+ [data-ui-event-calendar] [data-part-event-location] {
694
693
  color: var(--slotted-text-muted, #5b6b7f);
695
694
  min-inline-size: 0;
696
695
  overflow: hidden;
@@ -699,8 +698,8 @@
699
698
  }
700
699
 
701
700
  /** Text for assistive technology alone, in the shape `visually-hidden` draws. */
702
- [data-ui='event-calendar'] [data-part='event-meta'],
703
- [data-ui='event-calendar'] [data-part='continuation'] {
701
+ [data-ui-event-calendar] [data-part-event-meta],
702
+ [data-ui-event-calendar] [data-part-continuation] {
704
703
  block-size: 1px;
705
704
  clip-path: inset(50%);
706
705
  inline-size: 1px;
@@ -717,15 +716,15 @@
717
716
  * read as a wall of colour, and the all-day events — the ones a month is
718
717
  * for — no longer stood out from it.
719
718
  */
720
- [data-ui='event-calendar'] [data-part='day-events'] > [data-part='event']:not([data-bar]) {
719
+ [data-ui-event-calendar] [data-part-day-events] > [data-part-event]:not([data-bar]) {
721
720
  position: relative;
722
721
  block-size: var(--_event-size);
723
722
  inline-size: 100%;
724
723
  padding-inline: var(--slotted-space-2, 0.25rem);
725
724
  }
726
725
 
727
- [data-ui='event-calendar'] [data-part='day-events'] > [data-part='event']:not([data-bar])::before,
728
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event']::before {
726
+ [data-ui-event-calendar] [data-part-day-events] > [data-part-event]:not([data-bar])::before,
727
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event]::before {
729
728
  background-color: var(--_hue);
730
729
  block-size: var(--slotted-space-4, 0.5rem);
731
730
  border-radius: var(--slotted-radius-full, 9999px);
@@ -734,22 +733,20 @@
734
733
  inline-size: var(--slotted-space-4, 0.5rem);
735
734
  }
736
735
 
737
- [data-ui='event-calendar']
738
- [data-part='day-events']
739
- > [data-part='event']:not([data-bar]):hover:not([data-disabled]) {
736
+ [data-ui-event-calendar]
737
+ [data-part-day-events]
738
+ > [data-part-event]:not([data-bar]):hover:not([data-disabled]) {
740
739
  background-color: var(--slotted-tone-secondary-subtle-hover, #eef1f5);
741
740
  }
742
741
 
743
- [data-ui='event-calendar']
744
- [data-part='day-events']
745
- > [data-part='event']:not([data-bar]):active:not([data-disabled], [data-open]) {
742
+ [data-ui-event-calendar]
743
+ [data-part-day-events]
744
+ > [data-part-event]:not([data-bar]):active:not([data-disabled], [data-open]) {
746
745
  background-color: var(--slotted-tone-secondary-subtle-active, #e2e8f0);
747
746
  transition-duration: var(--slotted-duration-instant);
748
747
  }
749
748
 
750
- [data-ui='event-calendar']
751
- [data-part='day-events']
752
- > [data-part='event']:not([data-bar])[data-open] {
749
+ [data-ui-event-calendar] [data-part-day-events] > [data-part-event]:not([data-bar])[data-open] {
753
750
  background-color: light-dark(
754
751
  color-mix(in oklab, var(--_hue) var(--_tint), var(--_base)),
755
752
  color-mix(in oklab, var(--_hue) var(--_tint-dark), var(--_base))
@@ -763,8 +760,8 @@
763
760
  * reaches for. `--_ground` is named because the block's fade below paints
764
761
  * with it, so the fade follows every state the ground does.
765
762
  */
766
- [data-ui='event-calendar'] [data-part='event'][data-bar],
767
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] {
763
+ [data-ui-event-calendar] [data-part-event][data-bar],
764
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] {
768
765
  --_ground: light-dark(
769
766
  color-mix(in oklab, var(--_hue) var(--_tint), var(--_base)),
770
767
  color-mix(in oklab, var(--_hue) var(--_tint-dark), var(--_base))
@@ -779,26 +776,23 @@
779
776
  color: var(--_ink);
780
777
  }
781
778
 
782
- [data-ui='event-calendar'] [data-part='event'][data-bar] [data-part='event-time'],
783
- [data-ui='event-calendar'] [data-part='event'][data-bar] [data-part='event-location'],
784
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] > [data-part='event-time'],
785
- [data-ui='event-calendar']
786
- [data-part='column']
787
- > [data-part='event']
788
- > [data-part='event-location'] {
779
+ [data-ui-event-calendar] [data-part-event][data-bar] [data-part-event-time],
780
+ [data-ui-event-calendar] [data-part-event][data-bar] [data-part-event-location],
781
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-time],
782
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-location] {
789
783
  color: color-mix(in oklab, var(--_ink) 72%, var(--_ground));
790
784
  }
791
785
 
792
- [data-ui='event-calendar']
793
- [data-part='event'][data-bar]:hover:not(
786
+ [data-ui-event-calendar]
787
+ [data-part-event][data-bar]:hover:not(
794
788
  [data-disabled],
795
789
  [data-open],
796
790
  [data-dragging],
797
791
  [data-context]
798
792
  ),
799
- [data-ui='event-calendar']
800
- [data-part='column']
801
- > [data-part='event']:hover:not([data-disabled], [data-open], [data-dragging], [data-context]) {
793
+ [data-ui-event-calendar]
794
+ [data-part-column]
795
+ > [data-part-event]:hover:not([data-disabled], [data-open], [data-dragging], [data-context]) {
802
796
  --_ground: light-dark(
803
797
  color-mix(in oklab, var(--_hue) var(--_tint-hover), var(--_base)),
804
798
  color-mix(in oklab, var(--_hue) var(--_tint-hover-dark), var(--_base))
@@ -810,21 +804,16 @@
810
804
  );
811
805
  }
812
806
 
813
- [data-ui='event-calendar']
814
- [data-part='event'][data-bar]:active:not(
807
+ [data-ui-event-calendar]
808
+ [data-part-event][data-bar]:active:not(
815
809
  [data-disabled],
816
810
  [data-open],
817
811
  [data-dragging],
818
812
  [data-context]
819
813
  ),
820
- [data-ui='event-calendar']
821
- [data-part='column']
822
- > [data-part='event']:active:not(
823
- [data-disabled],
824
- [data-open],
825
- [data-dragging],
826
- [data-context]
827
- ) {
814
+ [data-ui-event-calendar]
815
+ [data-part-column]
816
+ > [data-part-event]:active:not([data-disabled], [data-open], [data-dragging], [data-context]) {
828
817
  --_ground: light-dark(
829
818
  color-mix(in oklab, var(--_hue) var(--_tint-active), var(--_base)),
830
819
  color-mix(in oklab, var(--_hue) var(--_tint-active-dark), var(--_base))
@@ -840,12 +829,12 @@
840
829
  * white type holds 4.5:1 on every slot of the scale. The event a context
841
830
  * menu acts on is drawn the same way, for the same reason.
842
831
  */
843
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-open],
844
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-open],
845
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-context],
846
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-context],
847
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-dragging],
848
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-dragging] {
832
+ [data-ui-event-calendar] [data-part-event][data-bar][data-open],
833
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-open],
834
+ [data-ui-event-calendar] [data-part-event][data-bar][data-context],
835
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-context],
836
+ [data-ui-event-calendar] [data-part-event][data-bar][data-dragging],
837
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-dragging] {
849
838
  --_ground: color-mix(in oklab, var(--_hue) 80%, #000000);
850
839
  --_ink: #ffffff;
851
840
 
@@ -858,10 +847,10 @@
858
847
  * event that will not land there — and the pointer says it cannot drop.
859
848
  * Letting go puts it back where it was.
860
849
  */
861
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-dragging][data-drop-invalid],
862
- [data-ui='event-calendar']
863
- [data-part='column']
864
- > [data-part='event'][data-dragging][data-drop-invalid] {
850
+ [data-ui-event-calendar] [data-part-event][data-bar][data-dragging][data-drop-invalid],
851
+ [data-ui-event-calendar]
852
+ [data-part-column]
853
+ > [data-part-event][data-dragging][data-drop-invalid] {
865
854
  --_ground: light-dark(
866
855
  color-mix(in oklab, var(--_hue) var(--_tint), var(--_base)),
867
856
  color-mix(in oklab, var(--_hue) var(--_tint-dark), var(--_base))
@@ -872,24 +861,24 @@
872
861
  border-style: dashed;
873
862
  }
874
863
 
875
- [data-ui='event-calendar']:has([data-part='event'][data-drop-invalid]),
876
- [data-ui='event-calendar']:has([data-part='event'][data-drop-invalid]) * {
864
+ [data-ui-event-calendar]:has([data-part-event][data-drop-invalid]),
865
+ [data-ui-event-calendar]:has([data-part-event][data-drop-invalid]) * {
877
866
  cursor: not-allowed;
878
867
  }
879
868
 
880
869
  /* The solid slot answers the pointer by darkening, never by going back to the tint. */
881
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-open]:hover:not([data-disabled]),
882
- [data-ui='event-calendar']
883
- [data-part='column']
884
- > [data-part='event'][data-open]:hover:not([data-disabled]) {
870
+ [data-ui-event-calendar] [data-part-event][data-bar][data-open]:hover:not([data-disabled]),
871
+ [data-ui-event-calendar]
872
+ [data-part-column]
873
+ > [data-part-event][data-open]:hover:not([data-disabled]) {
885
874
  --_ground: color-mix(in oklab, var(--_hue) 70%, #000000);
886
875
  }
887
876
 
888
877
  /* And the press one step further down the same line: 80, 70, 60. */
889
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-open]:active:not([data-disabled]),
890
- [data-ui='event-calendar']
891
- [data-part='column']
892
- > [data-part='event'][data-open]:active:not([data-disabled]) {
878
+ [data-ui-event-calendar] [data-part-event][data-bar][data-open]:active:not([data-disabled]),
879
+ [data-ui-event-calendar]
880
+ [data-part-column]
881
+ > [data-part-event][data-open]:active:not([data-disabled]) {
893
882
  --_ground: color-mix(in oklab, var(--_hue) 60%, #000000);
894
883
 
895
884
  transition-duration: var(--slotted-duration-instant);
@@ -901,7 +890,7 @@
901
890
  * being cut by its edge; a block whose words end above the fade shows
902
891
  * nothing of it, because the fade is the ground it lies on.
903
892
  */
904
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event']:not([data-short])::after {
893
+ [data-ui-event-calendar] [data-part-column] > [data-part-event]:not([data-short])::after {
905
894
  background-image: linear-gradient(to bottom, transparent, var(--_ground));
906
895
  block-size: min(var(--slotted-space-6, 1rem), 45%);
907
896
  border-end-end-radius: inherit;
@@ -917,7 +906,7 @@
917
906
  * An event that has ended steps back: less of its colour, its words in the
918
907
  * muted ink. The day's remaining events are the ones a reader acts on.
919
908
  */
920
- [data-ui='event-calendar'] [data-part='event'][data-past]:not([data-open], [data-dragging]) {
909
+ [data-ui-event-calendar] [data-part-event][data-past]:not([data-open], [data-dragging]) {
921
910
  --_tint: 7%;
922
911
  --_tint-hover: 13%;
923
912
  --_edge: 20%;
@@ -927,25 +916,23 @@
927
916
  --_ink-mix: 30%;
928
917
  }
929
918
 
930
- [data-ui='event-calendar']
931
- [data-part='day-events']
932
- > [data-part='event'][data-past]:not([data-bar])::before {
919
+ [data-ui-event-calendar]
920
+ [data-part-day-events]
921
+ > [data-part-event][data-past]:not([data-bar])::before {
933
922
  opacity: 0.55;
934
923
  }
935
924
 
936
- [data-ui='event-calendar']
937
- [data-part='day-events']
938
- > [data-part='event'][data-past]:not([data-bar]) {
925
+ [data-ui-event-calendar] [data-part-day-events] > [data-part-event][data-past]:not([data-bar]) {
939
926
  color: var(--slotted-text-muted, #5b6b7f);
940
927
  }
941
928
 
942
929
  /* The list steps a past event back the same way: its mark faded and its
943
930
  words in the muted ink, the time and the place quieter still. */
944
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event'][data-past]::before {
931
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event][data-past]::before {
945
932
  opacity: 0.55;
946
933
  }
947
934
 
948
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event'][data-past] {
935
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event][data-past] {
949
936
  color: var(--slotted-text-muted, #5b6b7f);
950
937
  }
951
938
 
@@ -964,7 +951,7 @@
964
951
  * it pointing the way it continues. Running it into the table's edge made
965
952
  * it read as clipped rather than continued.
966
953
  */
967
- [data-ui='event-calendar'] [data-part='event'][data-bar] {
954
+ [data-ui-event-calendar] [data-part-event][data-bar] {
968
955
  block-size: var(--_event-size);
969
956
  inline-size: calc(
970
957
  var(--slotted-event-span, 1) * (100% + 2 * var(--_pad, 0px) + var(--_rule-width)) - 2 *
@@ -976,39 +963,37 @@
976
963
  z-index: 1;
977
964
  }
978
965
 
979
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-continues-before] {
966
+ [data-ui-event-calendar] [data-part-event][data-bar][data-continues-before] {
980
967
  border-end-start-radius: 0;
981
968
  border-start-start-radius: 0;
982
969
  padding-inline-start: var(--slotted-space-1, 0.125rem);
983
970
  }
984
971
 
985
- [data-ui='event-calendar'] [data-part='event'][data-bar][data-continues-after] {
972
+ [data-ui-event-calendar] [data-part-event][data-bar][data-continues-after] {
986
973
  border-end-end-radius: 0;
987
974
  border-start-end-radius: 0;
988
975
  padding-inline-end: var(--slotted-space-1, 0.125rem);
989
976
  }
990
977
 
991
- [data-ui='event-calendar'] [data-part='event'][data-bar] > [data-ui='icon'][data-edge] {
978
+ [data-ui-event-calendar] [data-part-event][data-bar] > [data-ui-icon][data-edge] {
992
979
  color: color-mix(in oklab, var(--_hue) 70%, var(--slotted-text, #0f172a));
993
980
  }
994
981
 
995
- [data-ui='event-calendar'] [data-part='event'][data-bar] > [data-ui='icon'][data-edge='start'] {
982
+ [data-ui-event-calendar] [data-part-event][data-bar] > [data-ui-icon][data-edge='start'] {
996
983
  rotate: 180deg;
997
984
  }
998
985
 
999
- [data-ui='event-calendar'] [data-part='event'][data-bar] > [data-ui='icon'][data-edge='end'] {
986
+ [data-ui-event-calendar] [data-part-event][data-bar] > [data-ui-icon][data-edge='end'] {
1000
987
  margin-inline-start: auto;
1001
988
  }
1002
989
 
1003
- [data-ui='event-calendar']:dir(rtl)
1004
- [data-part='event'][data-bar]
1005
- > [data-ui='icon'][data-edge='start'] {
990
+ [data-ui-event-calendar]:dir(rtl)
991
+ [data-part-event][data-bar]
992
+ > [data-ui-icon][data-edge='start'] {
1006
993
  rotate: 0deg;
1007
994
  }
1008
995
 
1009
- [data-ui='event-calendar']:dir(rtl)
1010
- [data-part='event'][data-bar]
1011
- > [data-ui='icon'][data-edge='end'] {
996
+ [data-ui-event-calendar]:dir(rtl) [data-part-event][data-bar] > [data-ui-icon][data-edge='end'] {
1012
997
  rotate: 180deg;
1013
998
  }
1014
999
 
@@ -1017,11 +1002,11 @@
1017
1002
  * is an outline of one. Cancelled keeps its place and strikes its title, so
1018
1003
  * the slot a reader remembers is still where they remember it.
1019
1004
  */
1020
- [data-ui='event-calendar']
1021
- [data-part='event'][data-status='tentative'][data-bar]:not([data-open], [data-dragging]),
1022
- [data-ui='event-calendar']
1023
- [data-part='column']
1024
- > [data-part='event'][data-status='tentative']:not([data-open], [data-dragging]) {
1005
+ [data-ui-event-calendar]
1006
+ [data-part-event][data-status='tentative'][data-bar]:not([data-open], [data-dragging]),
1007
+ [data-ui-event-calendar]
1008
+ [data-part-column]
1009
+ > [data-part-event][data-status='tentative']:not([data-open], [data-dragging]) {
1025
1010
  --_tint: 0%;
1026
1011
  --_tint-hover: 7%;
1027
1012
  --_tint-active: 12%;
@@ -1033,13 +1018,11 @@
1033
1018
  border-style: dashed;
1034
1019
  }
1035
1020
 
1036
- [data-ui='event-calendar'] [data-part='event'][data-status='cancelled'] {
1021
+ [data-ui-event-calendar] [data-part-event][data-status='cancelled'] {
1037
1022
  color: var(--slotted-text-muted, #5b6b7f);
1038
1023
  }
1039
1024
 
1040
- [data-ui='event-calendar']
1041
- [data-part='event'][data-status='cancelled']
1042
- [data-part='event-title'] {
1025
+ [data-ui-event-calendar] [data-part-event][data-status='cancelled'] [data-part-event-title] {
1043
1026
  text-decoration: line-through;
1044
1027
  }
1045
1028
 
@@ -1053,12 +1036,12 @@
1053
1036
  * floating shadow, and it lets the pointer through to the cell beneath it so
1054
1037
  * the cell under the finger is the one it lands on.
1055
1038
  */
1056
- [data-ui='event-calendar'] [data-part='event'][data-editable] {
1039
+ [data-ui-event-calendar] [data-part-event][data-editable] {
1057
1040
  cursor: grab;
1058
1041
  touch-action: none;
1059
1042
  }
1060
1043
 
1061
- [data-ui='event-calendar'] [data-part='event'][data-dragging] {
1044
+ [data-ui-event-calendar] [data-part-event][data-dragging] {
1062
1045
  box-shadow: var(--slotted-shadow-md, none);
1063
1046
  cursor: grabbing;
1064
1047
  pointer-events: none;
@@ -1071,7 +1054,7 @@
1071
1054
  * while the event is hovered or focused, so a resting grid carries no marks
1072
1055
  * nobody is using.
1073
1056
  */
1074
- [data-ui='event-calendar'] [data-part='resize-handle'] {
1057
+ [data-ui-event-calendar] [data-part-resize-handle] {
1075
1058
  display: flex;
1076
1059
  inset-block-end: 0;
1077
1060
  inset-inline: 0;
@@ -1085,7 +1068,7 @@
1085
1068
  z-index: 1;
1086
1069
  }
1087
1070
 
1088
- [data-ui='event-calendar'] [data-part='event'][data-bar] > [data-part='resize-handle'] {
1071
+ [data-ui-event-calendar] [data-part-event][data-bar] > [data-part-resize-handle] {
1089
1072
  block-size: auto;
1090
1073
  cursor: ew-resize;
1091
1074
  inline-size: var(--slotted-space-4, 0.5rem);
@@ -1093,7 +1076,7 @@
1093
1076
  inset-inline: auto 0;
1094
1077
  }
1095
1078
 
1096
- [data-ui='event-calendar'] [data-part='resize-handle']::before {
1079
+ [data-ui-event-calendar] [data-part-resize-handle]::before {
1097
1080
  background-color: var(--_ink, var(--_hue));
1098
1081
  block-size: var(--slotted-border-width-thick, 2px);
1099
1082
  border-radius: var(--slotted-radius-full, 9999px);
@@ -1104,26 +1087,22 @@
1104
1087
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
1105
1088
  }
1106
1089
 
1107
- [data-ui='event-calendar'] [data-part='event'][data-bar] > [data-part='resize-handle']::before {
1090
+ [data-ui-event-calendar] [data-part-event][data-bar] > [data-part-resize-handle]::before {
1108
1091
  block-size: var(--slotted-space-4, 0.5rem);
1109
1092
  inline-size: var(--slotted-border-width-thick, 2px);
1110
1093
  }
1111
1094
 
1112
- [data-ui='event-calendar']
1113
- [data-part='event']:hover:not([data-disabled])
1114
- > [data-part='resize-handle']::before,
1115
- [data-ui='event-calendar']
1116
- [data-part='event']:focus-visible
1117
- > [data-part='resize-handle']::before,
1118
- [data-ui='event-calendar']
1119
- [data-part='event'][data-dragging]
1120
- > [data-part='resize-handle']::before {
1095
+ [data-ui-event-calendar]
1096
+ [data-part-event]:hover:not([data-disabled])
1097
+ > [data-part-resize-handle]::before,
1098
+ [data-ui-event-calendar] [data-part-event]:focus-visible > [data-part-resize-handle]::before,
1099
+ [data-ui-event-calendar] [data-part-event][data-dragging] > [data-part-resize-handle]::before {
1121
1100
  opacity: 1;
1122
1101
  transition-timing-function: var(--slotted-easing-enter);
1123
1102
  }
1124
1103
 
1125
1104
  /** "+N": a quiet line under the lanes, or a block in the last column. */
1126
- [data-ui='event-calendar'] [data-part='more'] {
1105
+ [data-ui-event-calendar] [data-part-more] {
1127
1106
  align-items: center;
1128
1107
  appearance: none;
1129
1108
  background-color: transparent;
@@ -1152,13 +1131,13 @@
1152
1131
  white-space: nowrap;
1153
1132
  }
1154
1133
 
1155
- [data-ui='event-calendar'] [data-part='more']:hover:not([data-disabled]),
1156
- [data-ui='event-calendar'] [data-part='more'][aria-expanded='true'] {
1134
+ [data-ui-event-calendar] [data-part-more]:hover:not([data-disabled]),
1135
+ [data-ui-event-calendar] [data-part-more][aria-expanded='true'] {
1157
1136
  background-color: var(--slotted-tone-secondary-subtle-hover, #eef1f5);
1158
1137
  color: var(--slotted-text, #0f172a);
1159
1138
  }
1160
1139
 
1161
- [data-ui='event-calendar'] [data-part='more']:active:not([data-disabled]) {
1140
+ [data-ui-event-calendar] [data-part-more]:active:not([data-disabled]) {
1162
1141
  background-color: var(--slotted-tone-secondary-subtle-active, #e2e8f0);
1163
1142
  transition-duration: var(--slotted-duration-instant);
1164
1143
  }
@@ -1173,36 +1152,27 @@
1173
1152
  * words were noise that looked like text.
1174
1153
  */
1175
1154
  @container slotted-event-calendar-day (max-width: 7.5rem) {
1176
- [data-ui='event-calendar']
1177
- [data-part='day-events']
1178
- > [data-part='event']:not([data-bar])
1179
- > [data-part='event-time'] {
1155
+ [data-ui-event-calendar]
1156
+ [data-part-day-events]
1157
+ > [data-part-event]:not([data-bar])
1158
+ > [data-part-event-time] {
1180
1159
  display: none;
1181
1160
  }
1182
1161
  }
1183
1162
 
1184
1163
  @container slotted-event-calendar-event (max-width: 4.5rem) {
1185
- [data-ui='event-calendar']
1186
- [data-part='column']
1187
- > [data-part='event']
1188
- > [data-part='event-time'],
1189
- [data-ui='event-calendar']
1190
- [data-part='column']
1191
- > [data-part='event']
1192
- > [data-part='event-location'] {
1164
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-time],
1165
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-location] {
1193
1166
  display: none;
1194
1167
  }
1195
1168
 
1196
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] {
1169
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] {
1197
1170
  padding-inline: var(--slotted-space-2, 0.25rem);
1198
1171
  }
1199
1172
  }
1200
1173
 
1201
1174
  @container slotted-event-calendar-event (max-width: 2rem) {
1202
- [data-ui='event-calendar']
1203
- [data-part='column']
1204
- > [data-part='event']
1205
- > [data-part='event-title'] {
1175
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-title] {
1206
1176
  block-size: 1px;
1207
1177
  clip-path: inset(50%);
1208
1178
  inline-size: 1px;
@@ -1213,7 +1183,7 @@
1213
1183
  }
1214
1184
 
1215
1185
  @container slotted-event-calendar-event (max-width: 4.5rem) {
1216
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'] > span {
1186
+ [data-ui-event-calendar] [data-part-column] > [data-part-more] > span {
1217
1187
  display: none;
1218
1188
  }
1219
1189
  }
@@ -1227,7 +1197,7 @@
1227
1197
  * the scroller's gutter, which is what keeps a column header over its
1228
1198
  * column when the hours have a scrollbar and the headers do not.
1229
1199
  */
1230
- [data-ui='event-calendar'] [data-part='time-grid'] {
1200
+ [data-ui-event-calendar] [data-part-time-grid] {
1231
1201
  border-block-start: var(--_rule-width) solid var(--_rule);
1232
1202
  display: flex;
1233
1203
  flex: 1 1 auto;
@@ -1235,15 +1205,15 @@
1235
1205
  min-block-size: 0;
1236
1206
  }
1237
1207
 
1238
- [data-ui='event-calendar'] [data-part='time-head'] {
1208
+ [data-ui-event-calendar] [data-part-time-head] {
1239
1209
  border-block-end: var(--_rule-width) solid var(--_rule);
1240
1210
  overflow: hidden;
1241
1211
  scrollbar-gutter: stable;
1242
1212
  }
1243
1213
 
1244
- [data-ui='event-calendar'] [data-part='columns'],
1245
- [data-ui='event-calendar'] [data-part='all-day-row'],
1246
- [data-ui='event-calendar'] [data-part='time-row'] {
1214
+ [data-ui-event-calendar] [data-part-columns],
1215
+ [data-ui-event-calendar] [data-part-all-day-row],
1216
+ [data-ui-event-calendar] [data-part-time-row] {
1247
1217
  display: grid;
1248
1218
  grid-template-columns: var(--_gutter) repeat(
1249
1219
  var(--slotted-event-calendar-days, 7),
@@ -1251,11 +1221,11 @@
1251
1221
  );
1252
1222
  }
1253
1223
 
1254
- [data-ui='event-calendar'] [data-part='columns'] {
1224
+ [data-ui-event-calendar] [data-part-columns] {
1255
1225
  border-block-end: var(--_rule-width) solid var(--_rule);
1256
1226
  }
1257
1227
 
1258
- [data-ui='event-calendar'] [data-part='zone'] {
1228
+ [data-ui-event-calendar] [data-part-zone] {
1259
1229
  align-self: end;
1260
1230
  color: var(--slotted-text-muted, #5b6b7f);
1261
1231
  font-size: var(--slotted-font-size-xs, 0.75rem);
@@ -1275,7 +1245,7 @@
1275
1245
  * start edge sat a padding and a half away from digits it was meant to
1276
1246
  * stand over.
1277
1247
  */
1278
- [data-ui='event-calendar'] [data-part='column-header'] {
1248
+ [data-ui-event-calendar] [data-part-column-header] {
1279
1249
  align-items: center;
1280
1250
  border-inline-start: var(--_rule-width) solid var(--_rule);
1281
1251
  display: flex;
@@ -1286,24 +1256,24 @@
1286
1256
  padding-inline: var(--_air);
1287
1257
  }
1288
1258
 
1289
- [data-ui='event-calendar'] [data-part='column-header'] [data-part='weekday'] {
1259
+ [data-ui-event-calendar] [data-part-column-header] [data-part-weekday] {
1290
1260
  max-inline-size: 100%;
1291
1261
  padding: 0;
1292
1262
  }
1293
1263
 
1294
- [data-ui='event-calendar'] [data-part='column-header'][data-today] [data-part='weekday'] {
1264
+ [data-ui-event-calendar] [data-part-column-header][data-today] [data-part-weekday] {
1295
1265
  color: var(--slotted-tone-accent-text, #1d4ed8);
1296
1266
  }
1297
1267
 
1298
- [data-ui='event-calendar'] [data-part='column-header'] [data-part='day-number'] {
1268
+ [data-ui-event-calendar] [data-part-column-header] [data-part-day-number] {
1299
1269
  block-size: var(--slotted-control-inner-size-lg, 28px);
1300
1270
  font-size: var(--slotted-font-size-lg, 1rem);
1301
1271
  font-weight: var(--slotted-font-weight-medium, 500);
1302
1272
  min-inline-size: var(--slotted-control-inner-size-lg, 28px);
1303
1273
  }
1304
1274
 
1305
- [data-ui='event-calendar'] [data-part='column-header'] [data-part='day-content'],
1306
- [data-ui='event-calendar'] [data-part='offset-change'] {
1275
+ [data-ui-event-calendar] [data-part-column-header] [data-part-day-content],
1276
+ [data-ui-event-calendar] [data-part-offset-change] {
1307
1277
  color: var(--slotted-text-muted, #5b6b7f);
1308
1278
  font-size: var(--slotted-font-size-xs, 0.75rem);
1309
1279
  line-height: var(--_line-xs);
@@ -1316,7 +1286,7 @@
1316
1286
 
1317
1287
  /* Two short lines rather than an ellipsis: "Dia inteiro" in the gutter of
1318
1288
  "12 PM" read "Dia int…". */
1319
- [data-ui='event-calendar'] [data-part='all-day-label'] {
1289
+ [data-ui-event-calendar] [data-part-all-day-label] {
1320
1290
  color: var(--slotted-text-muted, #5b6b7f);
1321
1291
  font-size: var(--slotted-font-size-xs, 0.75rem);
1322
1292
  hyphens: auto;
@@ -1327,7 +1297,7 @@
1327
1297
  text-align: end;
1328
1298
  }
1329
1299
 
1330
- [data-ui='event-calendar'] [data-part='all-day-cell'] {
1300
+ [data-ui-event-calendar] [data-part-all-day-cell] {
1331
1301
  --_pad: var(--_air);
1332
1302
 
1333
1303
  border-inline-start: var(--_rule-width) solid var(--_rule);
@@ -1336,7 +1306,7 @@
1336
1306
  position: relative;
1337
1307
  }
1338
1308
 
1339
- [data-ui='event-calendar'] [data-part='scroller'] {
1309
+ [data-ui-event-calendar] [data-part-scroller] {
1340
1310
  flex: 1 1 40rem;
1341
1311
  max-block-size: max-content;
1342
1312
  min-block-size: 0;
@@ -1345,7 +1315,7 @@
1345
1315
  scrollbar-gutter: stable;
1346
1316
  }
1347
1317
 
1348
- [data-ui='event-calendar'] [data-part='gutter'] {
1318
+ [data-ui-event-calendar] [data-part-gutter] {
1349
1319
  display: flex;
1350
1320
  flex-direction: column;
1351
1321
  min-inline-size: 0;
@@ -1356,7 +1326,7 @@
1356
1326
  * The first hour's line is the grid's own top edge, so its label is not
1357
1327
  * drawn: half of it would hang above the scroller.
1358
1328
  */
1359
- [data-ui='event-calendar'] [data-part='hour'] {
1329
+ [data-ui-event-calendar] [data-part-hour] {
1360
1330
  block-size: var(--_hour);
1361
1331
  color: var(--slotted-text-muted, #5b6b7f);
1362
1332
  flex: 0 0 auto;
@@ -1371,7 +1341,7 @@
1371
1341
  white-space: nowrap;
1372
1342
  }
1373
1343
 
1374
- [data-ui='event-calendar'] [data-part='hour']:nth-child(1 of [data-part='hour']) {
1344
+ [data-ui-event-calendar] [data-part-hour]:nth-child(1 of [data-part-hour]) {
1375
1345
  visibility: hidden;
1376
1346
  }
1377
1347
 
@@ -1380,7 +1350,7 @@
1380
1350
  * background, not elements: forty-eight lines a day across seven days would
1381
1351
  * be three hundred nodes that say nothing.
1382
1352
  */
1383
- [data-ui='event-calendar'] [data-part='column'] {
1353
+ [data-ui-event-calendar] [data-part-column] {
1384
1354
  background-image:
1385
1355
  linear-gradient(to bottom, var(--_rule) var(--_rule-width), transparent var(--_rule-width)),
1386
1356
  linear-gradient(
@@ -1396,7 +1366,7 @@
1396
1366
  position: relative;
1397
1367
  }
1398
1368
 
1399
- [data-ui='event-calendar'] [data-part='column'][data-today] {
1369
+ [data-ui-event-calendar] [data-part-column][data-today] {
1400
1370
  background-color: color-mix(
1401
1371
  in oklab,
1402
1372
  var(--slotted-tone-accent-surface, #eff6ff) 50%,
@@ -1411,9 +1381,9 @@
1411
1381
  * block that starts where it ends. The last stretch of the column's width is
1412
1382
  * left clear, so there is always an empty slot under the pointer to press.
1413
1383
  */
1414
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'],
1415
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'],
1416
- [data-ui='event-calendar'] [data-part='column'] > [data-part='selection'] {
1384
+ [data-ui-event-calendar] [data-part-column] > [data-part-event],
1385
+ [data-ui-event-calendar] [data-part-column] > [data-part-more],
1386
+ [data-ui-event-calendar] [data-part-column] > [data-part-selection] {
1417
1387
  --_room: calc(100% - var(--slotted-space-5, 0.75rem));
1418
1388
  --_share: calc(var(--_room) / var(--slotted-event-columns, 1));
1419
1389
 
@@ -1427,7 +1397,7 @@
1427
1397
  position: absolute;
1428
1398
  }
1429
1399
 
1430
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] {
1400
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] {
1431
1401
  align-content: start;
1432
1402
  align-items: start;
1433
1403
  container: slotted-event-calendar-event / inline-size;
@@ -1442,14 +1412,11 @@
1442
1412
  * fit, the last line first. A flex column that shrank them laid the time
1443
1413
  * over the title in a one-hour block at `dense`.
1444
1414
  */
1445
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] > * {
1415
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > * {
1446
1416
  flex-shrink: 0;
1447
1417
  }
1448
1418
 
1449
- [data-ui='event-calendar']
1450
- [data-part='column']
1451
- > [data-part='event']
1452
- > [data-part='event-title'] {
1419
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-title] {
1453
1420
  max-inline-size: 100%;
1454
1421
  order: -1;
1455
1422
  }
@@ -1460,10 +1427,10 @@
1460
1427
  * "Design …" where "Design critique" fits on two lines. A word wider than
1461
1428
  * the block is hyphenated in the page's language, and cut only without one.
1462
1429
  */
1463
- [data-ui='event-calendar']
1464
- [data-part='column']
1465
- > [data-part='event']:not([data-short])
1466
- > [data-part='event-title'] {
1430
+ [data-ui-event-calendar]
1431
+ [data-part-column]
1432
+ > [data-part-event]:not([data-short])
1433
+ > [data-part-event-title] {
1467
1434
  -webkit-box-orient: vertical;
1468
1435
  display: -webkit-box;
1469
1436
  hyphens: auto;
@@ -1473,11 +1440,8 @@
1473
1440
  white-space: normal;
1474
1441
  }
1475
1442
 
1476
- [data-ui='event-calendar']
1477
- [data-part='column']
1478
- > [data-part='event']
1479
- > [data-part='event-location'],
1480
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] > [data-part='event-time'] {
1443
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-location],
1444
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > [data-part-event-time] {
1481
1445
  max-inline-size: 100%;
1482
1446
  overflow: hidden;
1483
1447
  text-overflow: ellipsis;
@@ -1488,25 +1452,25 @@
1488
1452
  * takes the room first: a block that can show one word shows the name, not
1489
1453
  * the hour the grid already states by where the block stands.
1490
1454
  */
1491
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-short] {
1455
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-short] {
1492
1456
  align-items: center;
1493
1457
  flex-direction: row;
1494
1458
  gap: var(--slotted-space-2, 0.25rem);
1495
1459
  padding-block: 0;
1496
1460
  }
1497
1461
 
1498
- [data-ui='event-calendar']
1499
- [data-part='column']
1500
- > [data-part='event'][data-short]
1501
- > [data-part='event-title'] {
1462
+ [data-ui-event-calendar]
1463
+ [data-part-column]
1464
+ > [data-part-event][data-short]
1465
+ > [data-part-event-title] {
1502
1466
  flex: 0 0 auto;
1503
1467
  max-inline-size: 100%;
1504
1468
  }
1505
1469
 
1506
- [data-ui='event-calendar']
1507
- [data-part='column']
1508
- > [data-part='event'][data-short]
1509
- > [data-part='event-time'] {
1470
+ [data-ui-event-calendar]
1471
+ [data-part-column]
1472
+ > [data-part-event][data-short]
1473
+ > [data-part-event-time] {
1510
1474
  flex: 1 1 0;
1511
1475
  min-inline-size: 0;
1512
1476
  }
@@ -1517,15 +1481,15 @@
1517
1481
  * edge squared and dashed: the same edge, broken where the event is not
1518
1482
  * over.
1519
1483
  */
1520
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-clipped-start],
1521
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-continues-before] {
1484
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-clipped-start],
1485
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-continues-before] {
1522
1486
  border-block-start-style: dashed;
1523
1487
  border-start-end-radius: 0;
1524
1488
  border-start-start-radius: 0;
1525
1489
  }
1526
1490
 
1527
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-clipped-end],
1528
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'][data-continues-after] {
1491
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-clipped-end],
1492
+ [data-ui-event-calendar] [data-part-column] > [data-part-event][data-continues-after] {
1529
1493
  border-block-end-style: dashed;
1530
1494
  border-end-end-radius: 0;
1531
1495
  border-end-start-radius: 0;
@@ -1536,7 +1500,7 @@
1536
1500
  Hover and press take six more points of the same ink each, 9, 15 and
1537
1501
  21: the surface's own hover landed within a hundredth of the rest in
1538
1502
  every scheme, lighter than the chip in the light one. */
1539
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'] {
1503
+ [data-ui-event-calendar] [data-part-column] > [data-part-more] {
1540
1504
  align-items: start;
1541
1505
  container: slotted-event-calendar-event / inline-size;
1542
1506
  background-color: color-mix(in oklab, var(--slotted-text-muted, #5b6b7f) 9%, var(--_base));
@@ -1545,12 +1509,12 @@
1545
1509
  z-index: 1;
1546
1510
  }
1547
1511
 
1548
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more']:hover:not([data-disabled]),
1549
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'][aria-expanded='true'] {
1512
+ [data-ui-event-calendar] [data-part-column] > [data-part-more]:hover:not([data-disabled]),
1513
+ [data-ui-event-calendar] [data-part-column] > [data-part-more][aria-expanded='true'] {
1550
1514
  background-color: color-mix(in oklab, var(--slotted-text-muted, #5b6b7f) 15%, var(--_base));
1551
1515
  }
1552
1516
 
1553
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more']:active:not([data-disabled]) {
1517
+ [data-ui-event-calendar] [data-part-column] > [data-part-more]:active:not([data-disabled]) {
1554
1518
  background-color: color-mix(in oklab, var(--slotted-text-muted, #5b6b7f) 21%, var(--_base));
1555
1519
  }
1556
1520
 
@@ -1561,7 +1525,7 @@
1561
1525
  * event opens with. It is the day's "+N" by every other measure — the same
1562
1526
  * popover, the same name — and shows the count alone.
1563
1527
  */
1564
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'][data-overlay] {
1528
+ [data-ui-event-calendar] [data-part-column] > [data-part-more][data-overlay] {
1565
1529
  align-items: center;
1566
1530
  background-color: var(--_base);
1567
1531
  block-size: auto;
@@ -1583,11 +1547,11 @@
1583
1547
  z-index: 3;
1584
1548
  }
1585
1549
 
1586
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'][data-overlay] > span {
1550
+ [data-ui-event-calendar] [data-part-column] > [data-part-more][data-overlay] > span {
1587
1551
  display: none;
1588
1552
  }
1589
1553
 
1590
- [data-ui='event-calendar'] [data-part='column'] > [data-part='selection'] {
1554
+ [data-ui-event-calendar] [data-part-column] > [data-part-selection] {
1591
1555
  background-color: var(
1592
1556
  --slotted-event-calendar-selection-background,
1593
1557
  var(--slotted-tone-accent-surface, #eff6ff)
@@ -1615,7 +1579,7 @@
1615
1579
  }
1616
1580
 
1617
1581
  /** Time nobody works in: the same step off the page in every scheme. */
1618
- [data-ui='event-calendar'] [data-part='off-hours'] {
1582
+ [data-ui-event-calendar] [data-part-off-hours] {
1619
1583
  background-color: var(--slotted-event-calendar-off-background, var(--_off));
1620
1584
  block-size: calc(var(--slotted-event-length, 0) * var(--_hour) / 60);
1621
1585
  inset-block-start: calc(var(--slotted-event-start, 0) * var(--_hour) / 60);
@@ -1628,22 +1592,22 @@
1628
1592
  * Now: a thick accent line across today's column, with a dot where it meets
1629
1593
  * the column's edge. Accent and not danger — the present is not a failure.
1630
1594
  */
1631
- [data-ui='event-calendar'] [data-part='now'],
1632
- [data-ui='event-calendar'] [data-part='offset-line'] {
1595
+ [data-ui-event-calendar] [data-part-now],
1596
+ [data-ui-event-calendar] [data-part-offset-line] {
1633
1597
  inset-block-start: calc(var(--slotted-event-start, 0) * var(--_hour) / 60);
1634
1598
  inset-inline: 0;
1635
1599
  pointer-events: none;
1636
1600
  position: absolute;
1637
1601
  }
1638
1602
 
1639
- [data-ui='event-calendar'] [data-part='now'] {
1603
+ [data-ui-event-calendar] [data-part-now] {
1640
1604
  border-block-start: var(--slotted-border-width-thick, 2px) solid
1641
1605
  var(--slotted-event-calendar-now-color, var(--slotted-tone-accent-solid, #2563eb));
1642
1606
  translate: 0 -50%;
1643
1607
  z-index: 2;
1644
1608
  }
1645
1609
 
1646
- [data-ui='event-calendar'] [data-part='now']::before {
1610
+ [data-ui-event-calendar] [data-part-now]::before {
1647
1611
  background-color: var(
1648
1612
  --slotted-event-calendar-now-color,
1649
1613
  var(--slotted-tone-accent-solid, #2563eb)
@@ -1659,7 +1623,7 @@
1659
1623
  position: absolute;
1660
1624
  }
1661
1625
 
1662
- [data-ui='event-calendar'] [data-part='offset-line'] {
1626
+ [data-ui-event-calendar] [data-part-offset-line] {
1663
1627
  border-block-start: var(--slotted-border-width-thin, 1px) dashed
1664
1628
  var(--slotted-border-strong, #78899c);
1665
1629
  z-index: 1;
@@ -1673,13 +1637,13 @@
1673
1637
  * description list in a detail — whose own part is also `list` — keeps none
1674
1638
  * of it.
1675
1639
  */
1676
- [data-ui='event-calendar'] > [data-part='body'] > [data-part='list'] {
1640
+ [data-ui-event-calendar] > [data-part-body] > [data-part-list] {
1677
1641
  border-block-start: var(--_rule-width) solid var(--_rule);
1678
1642
  display: flex;
1679
1643
  flex-direction: column;
1680
1644
  }
1681
1645
 
1682
- [data-ui='event-calendar'] [data-part='list-day'] {
1646
+ [data-ui-event-calendar] [data-part-list-day] {
1683
1647
  border-block-end: var(--_rule-width) solid var(--_rule);
1684
1648
  column-gap: var(--slotted-space-6, 1rem);
1685
1649
  display: grid;
@@ -1693,32 +1657,32 @@
1693
1657
  * inside itself; beside the events at every width but the narrowest, where
1694
1658
  * the two sit on one line above them.
1695
1659
  */
1696
- [data-ui='event-calendar'] [data-part='list-day-heading'] {
1660
+ [data-ui-event-calendar] [data-part-list-day-heading] {
1697
1661
  display: flex;
1698
1662
  flex-direction: column;
1699
1663
  margin: 0;
1700
1664
  padding-block: var(--slotted-space-3, 0.375rem);
1701
1665
  }
1702
1666
 
1703
- [data-ui='event-calendar'] [data-part='list-weekday'] {
1667
+ [data-ui-event-calendar] [data-part-list-weekday] {
1704
1668
  color: var(--slotted-text-muted, #5b6b7f);
1705
1669
  font-size: var(--slotted-font-size-xs, 0.75rem);
1706
1670
  font-weight: var(--slotted-font-weight-medium, 500);
1707
1671
  line-height: var(--_line-xs);
1708
1672
  }
1709
1673
 
1710
- [data-ui='event-calendar'] [data-part='list-date'] {
1674
+ [data-ui-event-calendar] [data-part-list-date] {
1711
1675
  font-size: var(--slotted-font-size-sm, 0.8125rem);
1712
1676
  font-weight: var(--slotted-font-weight-semibold, 600);
1713
1677
  line-height: var(--_line-sm);
1714
1678
  }
1715
1679
 
1716
- [data-ui='event-calendar'] [data-part='list-day'][data-today] [data-part='list-day-heading'],
1717
- [data-ui='event-calendar'] [data-part='list-day'][data-today] [data-part='list-weekday'] {
1680
+ [data-ui-event-calendar] [data-part-list-day][data-today] [data-part-list-day-heading],
1681
+ [data-ui-event-calendar] [data-part-list-day][data-today] [data-part-list-weekday] {
1718
1682
  color: var(--slotted-tone-accent-text, #1d4ed8);
1719
1683
  }
1720
1684
 
1721
- [data-ui='event-calendar'] [data-part='list-events'] {
1685
+ [data-ui-event-calendar] [data-part-list-events] {
1722
1686
  display: flex;
1723
1687
  flex-direction: column;
1724
1688
  gap: var(--slotted-space-1, 0.125rem);
@@ -1732,7 +1696,7 @@
1732
1696
  * title and the place under it. The time column is one width for every row,
1733
1697
  * so the titles start on one line down the whole list.
1734
1698
  */
1735
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event'] {
1699
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event] {
1736
1700
  align-items: start;
1737
1701
  column-gap: var(--slotted-space-4, 0.5rem);
1738
1702
  display: grid;
@@ -1747,27 +1711,27 @@
1747
1711
  }
1748
1712
 
1749
1713
  /** The mark sits on the centre of the title's first line, whatever the row's height. */
1750
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event']::before {
1714
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event]::before {
1751
1715
  grid-column: 2;
1752
1716
  grid-row: 1;
1753
1717
  margin-block-start: calc((1lh - var(--slotted-space-4, 0.5rem)) / 2);
1754
1718
  }
1755
1719
 
1756
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event-time'] {
1720
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event-time] {
1757
1721
  grid-column: 1;
1758
1722
  grid-row: 1;
1759
1723
  white-space: normal;
1760
1724
  }
1761
1725
 
1762
1726
  /* A row grows downward, so a list wraps what a grid cell truncates. */
1763
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event-title'] {
1727
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event-title] {
1764
1728
  grid-column: 3;
1765
1729
  grid-row: 1;
1766
1730
  overflow-wrap: break-word;
1767
1731
  white-space: normal;
1768
1732
  }
1769
1733
 
1770
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event-location'] {
1734
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event-location] {
1771
1735
  font-size: var(--slotted-font-size-xs, 0.75rem);
1772
1736
  grid-column: 3;
1773
1737
  line-height: var(--_line-xs);
@@ -1776,37 +1740,35 @@
1776
1740
  white-space: normal;
1777
1741
  }
1778
1742
 
1779
- [data-ui='event-calendar']
1780
- [data-part='list-events']
1781
- [data-part='event']:hover:not([data-disabled]) {
1743
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event]:hover:not([data-disabled]) {
1782
1744
  background-color: var(--slotted-tone-secondary-subtle-hover, #eef1f5);
1783
1745
  }
1784
1746
 
1785
- [data-ui='event-calendar']
1786
- [data-part='list-events']
1787
- [data-part='event']:active:not([data-disabled], [data-open], [data-context]) {
1747
+ [data-ui-event-calendar]
1748
+ [data-part-list-events]
1749
+ [data-part-event]:active:not([data-disabled], [data-open], [data-context]) {
1788
1750
  background-color: var(--slotted-tone-secondary-subtle-active, #e2e8f0);
1789
1751
  transition-duration: var(--slotted-duration-instant);
1790
1752
  }
1791
1753
 
1792
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event'][data-open],
1793
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event'][data-context] {
1754
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event][data-open],
1755
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event][data-context] {
1794
1756
  background-color: light-dark(
1795
1757
  color-mix(in oklab, var(--_hue) var(--_tint), var(--_base)),
1796
1758
  color-mix(in oklab, var(--_hue) var(--_tint-dark), var(--_base))
1797
1759
  );
1798
1760
  }
1799
1761
 
1800
- [data-ui='event-calendar']
1801
- [data-part='list-events']
1802
- [data-part='event'][data-status='tentative']::before {
1762
+ [data-ui-event-calendar]
1763
+ [data-part-list-events]
1764
+ [data-part-event][data-status='tentative']::before {
1803
1765
  background-color: transparent;
1804
1766
  border: var(--slotted-border-width-medium, 1.5px) solid var(--_hue);
1805
1767
  }
1806
1768
 
1807
1769
  /* The day and the hours of the detail break between them, never inside. */
1808
- [data-ui='event-calendar'] [data-part='detail-day'],
1809
- [data-ui='event-calendar'] [data-part='detail-range'] {
1770
+ [data-ui-event-calendar] [data-part-detail-day],
1771
+ [data-ui-event-calendar] [data-part-detail-range] {
1810
1772
  display: inline-block;
1811
1773
  }
1812
1774
 
@@ -1815,8 +1777,8 @@
1815
1777
  * row of actions — and spaces them, so a template needs no wrapper to keep
1816
1778
  * its button off the list above it.
1817
1779
  */
1818
- [data-ui='event-calendar'] [data-ui='popover'] > [data-part='content'] > [data-part='body'],
1819
- [data-ui='event-calendar'] [data-ui='drawer'] [data-part='panel'] > [data-part='body'] {
1780
+ [data-ui-event-calendar] [data-ui-popover] > [data-part-content] > [data-part-body],
1781
+ [data-ui-event-calendar] [data-ui-drawer] [data-part-panel] > [data-part-body] {
1820
1782
  display: grid;
1821
1783
  gap: var(--slotted-space-5, 0.75rem);
1822
1784
  }
@@ -1826,40 +1788,36 @@
1826
1788
  * under the title. The panel is a sixth of a page wide, and a column of time
1827
1789
  * beside the titles left each title a word.
1828
1790
  */
1829
- [data-ui='event-calendar'] [data-part='list-events'][data-layout='stacked'] [data-part='event'] {
1791
+ [data-ui-event-calendar] [data-part-list-events][data-layout='stacked'] [data-part-event] {
1830
1792
  grid-template-columns: auto minmax(0, 1fr);
1831
1793
  }
1832
1794
 
1833
- [data-ui='event-calendar']
1834
- [data-part='list-events'][data-layout='stacked']
1835
- [data-part='event']::before {
1795
+ [data-ui-event-calendar]
1796
+ [data-part-list-events][data-layout='stacked']
1797
+ [data-part-event]::before {
1836
1798
  grid-column: 1;
1837
1799
  }
1838
1800
 
1839
- [data-ui='event-calendar']
1840
- [data-part='list-events'][data-layout='stacked']
1841
- [data-part='event-title'] {
1801
+ [data-ui-event-calendar] [data-part-list-events][data-layout='stacked'] [data-part-event-title] {
1842
1802
  grid-column: 2;
1843
1803
  grid-row: 1;
1844
1804
  }
1845
1805
 
1846
- [data-ui='event-calendar']
1847
- [data-part='list-events'][data-layout='stacked']
1848
- [data-part='event-time'] {
1806
+ [data-ui-event-calendar] [data-part-list-events][data-layout='stacked'] [data-part-event-time] {
1849
1807
  font-size: var(--slotted-font-size-xs, 0.75rem);
1850
1808
  grid-column: 2;
1851
1809
  grid-row: 2;
1852
1810
  line-height: var(--_line-xs);
1853
1811
  }
1854
1812
 
1855
- [data-ui='event-calendar']
1856
- [data-part='list-events'][data-layout='stacked']
1857
- [data-part='event-location'] {
1813
+ [data-ui-event-calendar]
1814
+ [data-part-list-events][data-layout='stacked']
1815
+ [data-part-event-location] {
1858
1816
  grid-column: 2;
1859
1817
  grid-row: 3;
1860
1818
  }
1861
1819
 
1862
- [data-ui='event-calendar'] [data-part='empty'] {
1820
+ [data-ui-event-calendar] [data-part-empty] {
1863
1821
  align-items: center;
1864
1822
  color: var(--slotted-text-muted, #5b6b7f);
1865
1823
  display: flex;
@@ -1887,18 +1845,18 @@
1887
1845
  /* The navigation spans the last two columns of the first line: held to
1888
1846
  the fourth alone, it made that column its width, and with no actions
1889
1847
  the filter stopped short of the edge by the width of three buttons. */
1890
- [data-ui='event-calendar'] > [data-part='header'] {
1848
+ [data-ui-event-calendar] > [data-part-header] {
1891
1849
  grid-template-areas:
1892
1850
  'title title navigation navigation'
1893
1851
  'views . filter actions';
1894
1852
  grid-template-columns: auto minmax(0, 1fr) auto auto;
1895
1853
  }
1896
1854
 
1897
- [data-ui='event-calendar'] [data-part='navigation'] {
1855
+ [data-ui-event-calendar] [data-part-navigation] {
1898
1856
  justify-self: end;
1899
1857
  }
1900
1858
 
1901
- [data-ui='event-calendar'] [data-part='views'] {
1859
+ [data-ui-event-calendar] [data-part-views] {
1902
1860
  margin-inline-start: 0;
1903
1861
  }
1904
1862
  }
@@ -1911,64 +1869,64 @@
1911
1869
  * its whole name for assistive technology.
1912
1870
  */
1913
1871
  @container slotted-event-calendar (max-width: 599px) {
1914
- [data-ui='event-calendar'][data-part='root'] {
1872
+ [data-ui-event-calendar][data-part-root] {
1915
1873
  --_gutter: calc(var(--slotted-space-10, 2.5rem) + var(--slotted-space-2, 0.25rem));
1916
1874
  }
1917
1875
 
1918
- [data-ui='event-calendar'] [data-part='list-day'] {
1876
+ [data-ui-event-calendar] [data-part-list-day] {
1919
1877
  grid-template-columns: minmax(0, 1fr);
1920
1878
  row-gap: var(--slotted-space-1, 0.125rem);
1921
1879
  }
1922
1880
 
1923
1881
  /* Above the events, the weekday and the date read as one line. */
1924
- [data-ui='event-calendar'] [data-part='list-day-heading'] {
1882
+ [data-ui-event-calendar] [data-part-list-day-heading] {
1925
1883
  align-items: baseline;
1926
1884
  column-gap: var(--slotted-space-3, 0.375rem);
1927
1885
  flex-direction: row;
1928
1886
  flex-wrap: wrap;
1929
1887
  }
1930
1888
 
1931
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event'] {
1889
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event] {
1932
1890
  grid-template-columns: auto minmax(0, 1fr);
1933
1891
  }
1934
1892
 
1935
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event']::before {
1893
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event]::before {
1936
1894
  grid-column: 1;
1937
1895
  }
1938
1896
 
1939
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event-title'] {
1897
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event-title] {
1940
1898
  grid-column: 2;
1941
1899
  grid-row: 1;
1942
1900
  }
1943
1901
 
1944
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event-time'] {
1902
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event-time] {
1945
1903
  font-size: var(--slotted-font-size-xs, 0.75rem);
1946
1904
  grid-column: 2;
1947
1905
  grid-row: 2;
1948
1906
  line-height: var(--_line-xs);
1949
1907
  }
1950
1908
 
1951
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event-location'] {
1909
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event-location] {
1952
1910
  grid-column: 2;
1953
1911
  grid-row: 3;
1954
1912
  }
1955
1913
 
1956
- [data-ui='event-calendar'] [data-part='month'] [data-part='day'] {
1914
+ [data-ui-event-calendar] [data-part-month] [data-part-day] {
1957
1915
  --_event-size: var(--slotted-space-3, 0.375rem);
1958
1916
  --_air: var(--slotted-space-1, 0.125rem);
1959
1917
  }
1960
1918
 
1961
- [data-ui='event-calendar'] [data-part='month'] [data-part='day-header'] {
1919
+ [data-ui-event-calendar] [data-part-month] [data-part-day-header] {
1962
1920
  margin-block-end: var(--slotted-space-2, 0.25rem);
1963
1921
  }
1964
1922
 
1965
- [data-ui='event-calendar'] [data-part='month'] [data-part='day-number'] {
1923
+ [data-ui-event-calendar] [data-part-month] [data-part-day-number] {
1966
1924
  block-size: var(--slotted-control-inner-size-sm, 22px);
1967
1925
  min-inline-size: var(--slotted-control-inner-size-sm, 22px);
1968
1926
  }
1969
1927
 
1970
1928
  /** The whole cell is the day's target, through its number. */
1971
- [data-ui='event-calendar'] [data-part='month'] [data-part='day-number']::after {
1929
+ [data-ui-event-calendar] [data-part-month] [data-part-day-number]::after {
1972
1930
  content: '';
1973
1931
  inset: 0;
1974
1932
  position: absolute;
@@ -1976,7 +1934,7 @@
1976
1934
 
1977
1935
  /* A month's mark is six pixels tall and no target; the day is. A block in
1978
1936
  a column is a column wide and stays one. */
1979
- [data-ui='event-calendar'] [data-part='month'] [data-part='event'] {
1937
+ [data-ui-event-calendar] [data-part-month] [data-part-event] {
1980
1938
  padding: 0;
1981
1939
  pointer-events: none;
1982
1940
  }
@@ -1986,7 +1944,7 @@
1986
1944
  * pressed tint and the calendar's own edge: at the resting tint a column
1987
1945
  * of pale blocks read as one colour.
1988
1946
  */
1989
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] {
1947
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] {
1990
1948
  background-color: light-dark(
1991
1949
  color-mix(in oklab, var(--_hue) var(--_tint-active), var(--_base)),
1992
1950
  color-mix(in oklab, var(--_hue) var(--_tint-active-dark), var(--_base))
@@ -1995,37 +1953,37 @@
1995
1953
  padding: 0;
1996
1954
  }
1997
1955
 
1998
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'] {
1956
+ [data-ui-event-calendar] [data-part-column] > [data-part-more] {
1999
1957
  justify-content: center;
2000
1958
  padding-inline: 0;
2001
1959
  }
2002
1960
 
2003
- [data-ui='event-calendar'] [data-part='month'] [data-part='event'][data-bar] {
1961
+ [data-ui-event-calendar] [data-part-month] [data-part-event][data-bar] {
2004
1962
  background-color: var(--_hue);
2005
1963
  border-color: var(--_hue);
2006
1964
  border-radius: var(--slotted-radius-full, 9999px);
2007
1965
  }
2008
1966
 
2009
- [data-ui='event-calendar'] [data-part='month'] [data-part='event']:not([data-bar]) {
1967
+ [data-ui-event-calendar] [data-part-month] [data-part-event]:not([data-bar]) {
2010
1968
  inline-size: var(--slotted-space-4, 0.5rem);
2011
1969
  }
2012
1970
 
2013
- [data-ui='event-calendar'] [data-part='month'] [data-part='event']::before {
1971
+ [data-ui-event-calendar] [data-part-month] [data-part-event]::before {
2014
1972
  block-size: var(--slotted-space-3, 0.375rem);
2015
1973
  inline-size: var(--slotted-space-3, 0.375rem);
2016
1974
  }
2017
1975
 
2018
- [data-ui='event-calendar'] [data-part='month'] [data-part='event'][data-bar]::before,
2019
- [data-ui='event-calendar'] [data-part='month'] [data-part='event'][data-bar]::after {
1976
+ [data-ui-event-calendar] [data-part-month] [data-part-event][data-bar]::before,
1977
+ [data-ui-event-calendar] [data-part-month] [data-part-event][data-bar]::after {
2020
1978
  display: none;
2021
1979
  }
2022
1980
 
2023
- [data-ui='event-calendar'] [data-part='month'] [data-part='event'] > *,
2024
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] > *,
2025
- [data-ui='event-calendar'] [data-part='month'] [data-part='day-content'],
2026
- [data-ui='event-calendar'] [data-part='month'] [data-part='more'] > *,
2027
- [data-ui='event-calendar'] [data-part='column-header'] [data-part='day-content'],
2028
- [data-ui='event-calendar'] [data-part='offset-change'] {
1981
+ [data-ui-event-calendar] [data-part-month] [data-part-event] > *,
1982
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] > *,
1983
+ [data-ui-event-calendar] [data-part-month] [data-part-day-content],
1984
+ [data-ui-event-calendar] [data-part-month] [data-part-more] > *,
1985
+ [data-ui-event-calendar] [data-part-column-header] [data-part-day-content],
1986
+ [data-ui-event-calendar] [data-part-offset-change] {
2029
1987
  block-size: 1px;
2030
1988
  clip-path: inset(50%);
2031
1989
  inline-size: 1px;
@@ -2036,7 +1994,7 @@
2036
1994
  white-space: nowrap;
2037
1995
  }
2038
1996
 
2039
- [data-ui='event-calendar'] [data-part='month'] [data-part='more'] {
1997
+ [data-ui-event-calendar] [data-part-month] [data-part-more] {
2040
1998
  block-size: auto;
2041
1999
  font-size: var(--slotted-font-size-xs, 0.75rem);
2042
2000
  line-height: var(--_line-xs);
@@ -2044,20 +2002,20 @@
2044
2002
  pointer-events: none;
2045
2003
  }
2046
2004
 
2047
- [data-ui='event-calendar'] [data-part='month'] [data-part='day-events'] {
2005
+ [data-ui-event-calendar] [data-part-month] [data-part-day-events] {
2048
2006
  grid-template-rows:
2049
2007
  repeat(var(--slotted-event-calendar-lanes, 3), var(--_event-size))
2050
2008
  auto;
2051
2009
  }
2052
2010
 
2053
- [data-ui='event-calendar'] [data-part='column-header'] [data-part='day-number'] {
2011
+ [data-ui-event-calendar] [data-part-column-header] [data-part-day-number] {
2054
2012
  block-size: var(--slotted-control-inner-size-md, 24px);
2055
2013
  font-size: var(--slotted-font-size-md, 0.875rem);
2056
2014
  min-inline-size: var(--slotted-control-inner-size-md, 24px);
2057
2015
  }
2058
2016
 
2059
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'],
2060
- [data-ui='event-calendar'] [data-part='column'] > [data-part='more'] {
2017
+ [data-ui-event-calendar] [data-part-column] > [data-part-event],
2018
+ [data-ui-event-calendar] [data-part-column] > [data-part-more] {
2061
2019
  --_room: 100%;
2062
2020
  }
2063
2021
  }
@@ -2069,7 +2027,7 @@
2069
2027
  * alone.
2070
2028
  */
2071
2029
  @container slotted-event-calendar (max-width: 479px) {
2072
- [data-ui='event-calendar'] > [data-part='header'] {
2030
+ [data-ui-event-calendar] > [data-part-header] {
2073
2031
  grid-template-areas:
2074
2032
  'title title title title'
2075
2033
  'navigation . filter actions'
@@ -2077,28 +2035,28 @@
2077
2035
  grid-template-columns: auto minmax(0, 1fr) auto auto;
2078
2036
  }
2079
2037
 
2080
- [data-ui='event-calendar'] [data-part='navigation'] {
2038
+ [data-ui-event-calendar] [data-part-navigation] {
2081
2039
  justify-self: start;
2082
2040
  margin-inline-start: 0;
2083
2041
  }
2084
2042
 
2085
- [data-ui='event-calendar'] [data-part='views'] > * {
2043
+ [data-ui-event-calendar] [data-part-views] > * {
2086
2044
  flex: 1 1 auto;
2087
2045
  min-inline-size: 0;
2088
2046
  }
2089
2047
 
2090
- [data-ui='event-calendar'] [data-part='filter'] {
2048
+ [data-ui-event-calendar] [data-part-filter] {
2091
2049
  inline-size: var(--slotted-control-height-md, 34px);
2092
2050
  padding-inline: 0;
2093
2051
  }
2094
2052
 
2095
2053
  /* The funnel stays: an icon-only control keeps its mark and names itself
2096
2054
  with the words it hides. The chevron goes with the words. */
2097
- [data-ui='event-calendar'] [data-part='filter'] > [data-ui='icon']:last-child {
2055
+ [data-ui-event-calendar] [data-part-filter] > [data-ui-icon]:last-child {
2098
2056
  display: none;
2099
2057
  }
2100
2058
 
2101
- [data-ui='event-calendar'] [data-part='filter'] > :not([data-ui='icon']) {
2059
+ [data-ui-event-calendar] [data-part-filter] > :not([data-ui-icon]) {
2102
2060
  block-size: 1px;
2103
2061
  clip-path: inset(50%);
2104
2062
  inline-size: 1px;
@@ -2114,8 +2072,8 @@
2114
2072
  background, which forced colours would replace: the mark would go and
2115
2073
  the box it sat in would stay. The icons are `Glyph` elements stroked
2116
2074
  with the forced ink, and need nothing here. */
2117
- [data-ui='event-calendar'] [data-part='event']::before,
2118
- [data-ui='event-calendar'] [data-part='now']::before {
2075
+ [data-ui-event-calendar] [data-part-event]::before,
2076
+ [data-ui-event-calendar] [data-part-now]::before {
2119
2077
  forced-color-adjust: none;
2120
2078
  }
2121
2079
 
@@ -2123,23 +2081,23 @@
2123
2081
  * The tint has nothing to mix in a palette the system replaced, so an
2124
2082
  * event keeps its edge, in the text colour.
2125
2083
  */
2126
- [data-ui='event-calendar'] [data-part='event'][data-bar],
2127
- [data-ui='event-calendar'] [data-part='column'] > [data-part='event'] {
2084
+ [data-ui-event-calendar] [data-part-event][data-bar],
2085
+ [data-ui-event-calendar] [data-part-column] > [data-part-event] {
2128
2086
  border-color: currentcolor;
2129
2087
  }
2130
2088
 
2131
2089
  /* A timed line of the month and a row of the list have no edge: the
2132
2090
  transparent one they keep for geometry would be painted in the text
2133
2091
  colour, and the line would read as a bar. */
2134
- [data-ui='event-calendar'] [data-part='day-events'] > [data-part='event']:not([data-bar]),
2135
- [data-ui='event-calendar'] [data-part='list-events'] [data-part='event'] {
2092
+ [data-ui-event-calendar] [data-part-day-events] > [data-part-event]:not([data-bar]),
2093
+ [data-ui-event-calendar] [data-part-list-events] [data-part-event] {
2136
2094
  border-color: Canvas;
2137
2095
  }
2138
2096
 
2139
2097
  /* Today is the one filled mark: the system's own highlight pair, kept
2140
2098
  whole, where the replaced palette left a ring round an empty square. */
2141
- [data-ui='event-calendar'] [data-today] > [data-part='day-header'] [data-part='day-number'],
2142
- [data-ui='event-calendar'] [data-part='column-header'][data-today] [data-part='day-number'] {
2099
+ [data-ui-event-calendar] [data-today] > [data-part-day-header] [data-part-day-number],
2100
+ [data-ui-event-calendar] [data-part-column-header][data-today] [data-part-day-number] {
2143
2101
  background-color: Highlight;
2144
2102
  color: HighlightText;
2145
2103
  forced-color-adjust: none;