@loidolt/theme-styles 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,478 @@
1
+ /* Deep slice: assumes the token custom properties are already loaded. */
2
+
3
+ /* A box that holds its shape before its content loads. */
4
+ .ldt-aspect-ratio {
5
+ position: relative;
6
+ width: 100%;
7
+ aspect-ratio: var(--ldt-aspect-ratio, 16 / 9);
8
+ overflow: hidden;
9
+ }
10
+ .ldt-aspect-ratio > :where(img, video, iframe) {
11
+ width: 100%;
12
+ height: 100%;
13
+ object-fit: cover;
14
+ }
15
+
16
+ /*
17
+ * Video and audio players. The control bar sits on the inverse surface — the same dark strip in
18
+ * both themes — so it reads against any frame of video.
19
+ */
20
+ .ldt-media-player {
21
+ position: relative;
22
+ width: 100%;
23
+ border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
24
+ color: var(--loidolt-text);
25
+ background: var(--loidolt-surface);
26
+ }
27
+ .ldt-media-player--video {
28
+ display: grid;
29
+ grid-template-rows: minmax(0, 1fr) auto;
30
+ background: var(--loidolt-surface-inverse);
31
+ }
32
+ .ldt-media-player__media {
33
+ display: block;
34
+ width: 100%;
35
+ aspect-ratio: var(--ldt-aspect-ratio, 16 / 9);
36
+ background: var(--loidolt-surface-inverse);
37
+ }
38
+ .ldt-media-player:fullscreen {
39
+ border: 0;
40
+ }
41
+ .ldt-media-player:fullscreen .ldt-media-player__media {
42
+ height: 100%;
43
+ aspect-ratio: auto;
44
+ }
45
+ .ldt-media-player__overlay {
46
+ position: absolute;
47
+ inset: 0 0 auto;
48
+ padding: var(--loidolt-space-3);
49
+ color: var(--loidolt-text-inverse);
50
+ pointer-events: none;
51
+ }
52
+ .ldt-media-player__error {
53
+ position: absolute;
54
+ inset: auto var(--loidolt-space-3) calc(var(--loidolt-size-control) + var(--loidolt-space-3));
55
+ margin: 0;
56
+ padding: var(--loidolt-space-2) var(--loidolt-space-3);
57
+ color: var(--loidolt-on-danger);
58
+ background: var(--loidolt-danger);
59
+ font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
60
+ }
61
+ .ldt-media-player--audio {
62
+ display: grid;
63
+ grid-template-columns: auto minmax(0, 1fr);
64
+ align-items: center;
65
+ gap: var(--loidolt-space-3);
66
+ padding: var(--loidolt-space-3);
67
+ }
68
+ .ldt-media-player--audio .ldt-media-controls {
69
+ grid-column: 1 / -1;
70
+ /* No picture to sit over, so the bar joins the card instead of inverting. */
71
+ border: var(--loidolt-border-width) solid var(--loidolt-border);
72
+ color: var(--loidolt-text);
73
+ background: var(--loidolt-surface-alt);
74
+ }
75
+ .ldt-media-player--audio .ldt-media-player__error {
76
+ position: static;
77
+ grid-column: 1 / -1;
78
+ }
79
+ .ldt-media-player__artwork {
80
+ width: var(--loidolt-size-control-lg);
81
+ height: var(--loidolt-size-control-lg);
82
+ object-fit: cover;
83
+ border: var(--loidolt-border-width) solid var(--loidolt-border);
84
+ }
85
+ .ldt-media-player__meta {
86
+ display: grid;
87
+ gap: 0.1rem;
88
+ min-width: 0;
89
+ }
90
+ .ldt-media-player--audio .ldt-media-player__meta:first-child {
91
+ grid-column: 1 / -1;
92
+ }
93
+ .ldt-media-player__title {
94
+ overflow: hidden;
95
+ text-overflow: ellipsis;
96
+ white-space: nowrap;
97
+ }
98
+ .ldt-media-player__artist {
99
+ color: var(--loidolt-text-muted);
100
+ font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
101
+ }
102
+
103
+ .ldt-media-controls {
104
+ display: flex;
105
+ flex-wrap: wrap;
106
+ align-items: center;
107
+ gap: var(--loidolt-space-1) var(--loidolt-space-2);
108
+ padding: var(--loidolt-space-1) var(--loidolt-space-2);
109
+ color: var(--loidolt-text-inverse);
110
+ background: var(--loidolt-surface-inverse);
111
+ font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
112
+ }
113
+ .ldt-media-controls__button {
114
+ display: inline-grid;
115
+ place-items: center;
116
+ min-width: var(--loidolt-size-control-sm);
117
+ min-height: var(--loidolt-size-control-sm);
118
+ border: 0;
119
+ padding: 0;
120
+ color: inherit;
121
+ background: transparent;
122
+ }
123
+ .ldt-media-controls__button:hover,
124
+ .ldt-media-controls__button[aria-pressed='true'] {
125
+ color: var(--loidolt-accent);
126
+ }
127
+ .ldt-media-controls__text {
128
+ letter-spacing: var(--loidolt-font-tracking-utility);
129
+ }
130
+ /* Focus rings on the dark bar follow the ink so they stay visible in both themes. */
131
+ .ldt-media-controls :focus-visible {
132
+ outline-color: currentColor;
133
+ }
134
+ .ldt-media-controls__scrubber {
135
+ position: relative;
136
+ flex: 1 1 8rem;
137
+ min-width: 6rem;
138
+ display: flex;
139
+ align-items: center;
140
+ }
141
+ /* The buffered span sits behind the range input's own track. */
142
+ .ldt-media-controls__scrubber::before {
143
+ content: '';
144
+ position: absolute;
145
+ inset-inline: 0;
146
+ height: 0.25rem;
147
+ background: currentColor;
148
+ opacity: 0.35;
149
+ transform: scaleX(var(--ldt-media-buffered, 0));
150
+ transform-origin: left center;
151
+ }
152
+ .ldt-media-controls__range {
153
+ position: relative;
154
+ width: 100%;
155
+ min-height: 1.5rem;
156
+ margin: 0;
157
+ background: transparent;
158
+ accent-color: var(--loidolt-accent);
159
+ }
160
+ .ldt-media-controls__volume {
161
+ width: 5rem;
162
+ flex: none;
163
+ }
164
+ .ldt-media-controls__time {
165
+ flex: none;
166
+ font-variant-numeric: tabular-nums;
167
+ white-space: nowrap;
168
+ }
169
+ .ldt-media-controls__speed {
170
+ min-height: 1.5rem;
171
+ border: var(--loidolt-border-width) solid currentColor;
172
+ padding: 0 0.3rem;
173
+ color: inherit;
174
+ background: transparent;
175
+ font: inherit;
176
+ }
177
+ .ldt-media-controls__speed option {
178
+ color: var(--loidolt-text);
179
+ background: var(--loidolt-surface);
180
+ }
181
+ @media (max-width: 760px) {
182
+ .ldt-media-controls__volume {
183
+ display: none;
184
+ }
185
+ }
186
+
187
+ /* A click-to-load stand-in for a third-party player. */
188
+ .ldt-media-embed {
189
+ position: relative;
190
+ width: 100%;
191
+ aspect-ratio: var(--ldt-aspect-ratio, 16 / 9);
192
+ overflow: hidden;
193
+ border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
194
+ background: var(--loidolt-surface-inverse);
195
+ }
196
+ .ldt-media-embed__frame {
197
+ width: 100%;
198
+ height: 100%;
199
+ border: 0;
200
+ }
201
+ .ldt-media-embed__facade {
202
+ width: 100%;
203
+ height: 100%;
204
+ display: grid;
205
+ place-content: center;
206
+ justify-items: center;
207
+ gap: var(--loidolt-space-3);
208
+ border: 0;
209
+ padding: var(--loidolt-space-4);
210
+ color: var(--loidolt-text-inverse);
211
+ background: var(--loidolt-surface-inverse) center / cover no-repeat;
212
+ cursor: pointer;
213
+ }
214
+ .ldt-media-embed__play {
215
+ display: grid;
216
+ width: 3.5rem;
217
+ height: 3.5rem;
218
+ place-items: center;
219
+ color: var(--loidolt-on-accent);
220
+ background: var(--loidolt-accent);
221
+ transition: background var(--loidolt-motion-fast) var(--loidolt-motion-easing);
222
+ }
223
+ .ldt-media-embed__facade:hover .ldt-media-embed__play {
224
+ background: var(--loidolt-accent-hover);
225
+ }
226
+ .ldt-media-embed__title {
227
+ max-width: 32rem;
228
+ padding: 0.2rem 0.5rem;
229
+ color: var(--loidolt-text-inverse);
230
+ background: var(--loidolt-surface-inverse);
231
+ font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
232
+ letter-spacing: var(--loidolt-font-tracking-utility);
233
+ text-transform: uppercase;
234
+ }
235
+ .ldt-media-embed__unsupported {
236
+ display: grid;
237
+ height: 100%;
238
+ margin: 0;
239
+ place-items: center;
240
+ padding: var(--loidolt-space-4);
241
+ color: var(--loidolt-text-inverse);
242
+ text-align: center;
243
+ }
244
+
245
+ /* An item shown at full size inside a lightbox or carousel. */
246
+ .ldt-media-stage {
247
+ width: 100%;
248
+ max-height: 100%;
249
+ }
250
+ .ldt-media-stage--image {
251
+ height: 100%;
252
+ display: grid;
253
+ place-items: center;
254
+ overflow: hidden;
255
+ touch-action: none;
256
+ }
257
+ .ldt-media-stage__image {
258
+ max-width: 100%;
259
+ max-height: 100%;
260
+ transform-origin: center;
261
+ transition: transform var(--loidolt-motion-fast) var(--loidolt-motion-easing);
262
+ user-select: none;
263
+ }
264
+
265
+ /* A gallery of pressable tiles. `--ldt-media-grid-min` is the narrowest column. */
266
+ .ldt-media-grid {
267
+ display: grid;
268
+ grid-template-columns: repeat(
269
+ auto-fill,
270
+ minmax(min(100%, var(--ldt-media-grid-min, 12rem)), 1fr)
271
+ );
272
+ gap: var(--loidolt-space-3);
273
+ margin: 0;
274
+ padding: 0;
275
+ list-style: none;
276
+ }
277
+ .ldt-media-grid--sm {
278
+ gap: var(--loidolt-space-1);
279
+ }
280
+ .ldt-media-grid--lg {
281
+ gap: var(--loidolt-space-5);
282
+ }
283
+ .ldt-media-grid--masonry {
284
+ display: block;
285
+ columns: var(--ldt-media-grid-min, 12rem);
286
+ column-gap: var(--loidolt-space-3);
287
+ }
288
+ .ldt-media-grid--masonry .ldt-media-grid__item {
289
+ margin-bottom: var(--loidolt-space-3);
290
+ break-inside: avoid;
291
+ }
292
+ .ldt-media-grid--masonry .ldt-thumbnail {
293
+ aspect-ratio: auto;
294
+ }
295
+ .ldt-media-tile {
296
+ width: 100%;
297
+ display: grid;
298
+ gap: var(--loidolt-space-1);
299
+ border: 0;
300
+ padding: 0;
301
+ color: inherit;
302
+ background: transparent;
303
+ text-align: start;
304
+ cursor: zoom-in;
305
+ }
306
+ .ldt-media-tile .ldt-thumbnail {
307
+ transition: border-color var(--loidolt-motion-fast) var(--loidolt-motion-easing);
308
+ }
309
+ .ldt-media-tile:hover .ldt-thumbnail {
310
+ border-color: var(--loidolt-accent);
311
+ }
312
+ .ldt-media-tile__kind {
313
+ padding: 0.1rem 0.4rem;
314
+ color: var(--loidolt-text-inverse);
315
+ background: var(--loidolt-surface-inverse);
316
+ font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
317
+ letter-spacing: var(--loidolt-font-tracking-utility);
318
+ text-transform: uppercase;
319
+ }
320
+ .ldt-media-tile__caption {
321
+ color: var(--loidolt-text-muted);
322
+ font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
323
+ }
324
+
325
+ /* A full-screen viewer on the inverse surface, so images read against a neutral field. */
326
+ .ldt-lightbox__overlay {
327
+ background: var(--loidolt-scrim);
328
+ }
329
+ .ldt-lightbox {
330
+ position: fixed;
331
+ z-index: var(--loidolt-z-dialog);
332
+ inset: var(--loidolt-space-4);
333
+ display: grid;
334
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
335
+ gap: var(--loidolt-space-2);
336
+ padding: var(--loidolt-space-3);
337
+ color: var(--loidolt-text-inverse);
338
+ background: var(--loidolt-surface-inverse);
339
+ box-shadow: var(--loidolt-shadow-modal);
340
+ }
341
+ .ldt-lightbox__bar {
342
+ display: flex;
343
+ align-items: center;
344
+ justify-content: space-between;
345
+ gap: var(--loidolt-space-2);
346
+ }
347
+ .ldt-lightbox__counter {
348
+ font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
349
+ font-variant-numeric: tabular-nums;
350
+ letter-spacing: var(--loidolt-font-tracking-utility);
351
+ }
352
+ .ldt-lightbox__tools {
353
+ display: flex;
354
+ gap: var(--loidolt-space-1);
355
+ margin-inline-start: auto;
356
+ }
357
+ .ldt-lightbox__control {
358
+ display: inline-grid;
359
+ min-width: var(--loidolt-size-control-sm);
360
+ min-height: var(--loidolt-size-control-sm);
361
+ place-items: center;
362
+ border: var(--loidolt-border-width) solid currentColor;
363
+ padding: 0 0.5rem;
364
+ color: inherit;
365
+ background: var(--loidolt-surface-inverse);
366
+ font: var(--loidolt-font-size-base) var(--loidolt-font-utility);
367
+ text-decoration: none;
368
+ }
369
+ .ldt-lightbox__control:hover:not(:disabled) {
370
+ color: var(--loidolt-on-accent);
371
+ border-color: var(--loidolt-accent);
372
+ background: var(--loidolt-accent);
373
+ }
374
+ .ldt-lightbox__control:disabled {
375
+ opacity: 0.4;
376
+ }
377
+ .ldt-lightbox :focus-visible {
378
+ outline-color: currentColor;
379
+ }
380
+ .ldt-lightbox__stage {
381
+ position: relative;
382
+ min-height: 0;
383
+ display: grid;
384
+ place-items: center;
385
+ }
386
+ .ldt-lightbox__stage[data-zoomed] {
387
+ cursor: grab;
388
+ }
389
+ .ldt-lightbox__nav {
390
+ position: absolute;
391
+ top: 50%;
392
+ transform: translateY(-50%);
393
+ }
394
+ .ldt-lightbox__nav--previous {
395
+ inset-inline-start: 0;
396
+ }
397
+ .ldt-lightbox__nav--next {
398
+ inset-inline-end: 0;
399
+ }
400
+ .ldt-lightbox__chevron,
401
+ .ldt-media-carousel__chevron {
402
+ width: 0.55rem;
403
+ height: 0.55rem;
404
+ border: solid currentColor;
405
+ border-width: 0 0 2px 2px;
406
+ transform: translateX(0.1rem) rotate(45deg);
407
+ }
408
+ .ldt-lightbox__nav--next .ldt-lightbox__chevron,
409
+ .ldt-media-carousel__control--next .ldt-media-carousel__chevron {
410
+ transform: translateX(-0.1rem) rotate(-135deg);
411
+ }
412
+ .ldt-lightbox__caption {
413
+ margin: 0;
414
+ text-align: center;
415
+ }
416
+ .ldt-lightbox__strip {
417
+ justify-content: center;
418
+ }
419
+ .ldt-lightbox__strip .ldt-filmstrip__item {
420
+ color: inherit;
421
+ background: transparent;
422
+ }
423
+
424
+ /* A slideshow with its own controls, one slide in view. */
425
+ .ldt-media-carousel {
426
+ display: grid;
427
+ gap: var(--loidolt-space-2);
428
+ }
429
+ .ldt-media-carousel__controls {
430
+ display: flex;
431
+ justify-content: flex-end;
432
+ gap: var(--loidolt-space-1);
433
+ }
434
+ .ldt-media-carousel__control {
435
+ display: inline-grid;
436
+ min-width: var(--loidolt-size-control-sm);
437
+ min-height: var(--loidolt-size-control-sm);
438
+ place-items: center;
439
+ border: var(--loidolt-border-width) solid var(--loidolt-border-control);
440
+ padding: 0;
441
+ color: var(--loidolt-text);
442
+ background: var(--loidolt-surface);
443
+ }
444
+ .ldt-media-carousel__control:hover:not(:disabled) {
445
+ color: var(--loidolt-text-inverse);
446
+ border-color: var(--loidolt-surface-inverse);
447
+ background: var(--loidolt-surface-inverse);
448
+ }
449
+ .ldt-media-carousel__control:disabled {
450
+ opacity: 0.4;
451
+ cursor: not-allowed;
452
+ }
453
+ .ldt-media-carousel__viewport {
454
+ position: relative;
455
+ border: var(--loidolt-border-width) solid var(--loidolt-border);
456
+ background: var(--loidolt-surface-sunken);
457
+ }
458
+ .ldt-media-carousel__slide {
459
+ display: grid;
460
+ }
461
+ /* An author `display` beats the user-agent `[hidden]` rule, so restate it. */
462
+ .ldt-media-carousel__slide[hidden] {
463
+ display: none;
464
+ }
465
+ .ldt-media-carousel__slide > .ldt-media-stage--image {
466
+ aspect-ratio: var(--ldt-aspect-ratio, 16 / 9);
467
+ }
468
+ .ldt-media-carousel__slide > .ldt-media-stage--image .ldt-media-stage__image {
469
+ width: 100%;
470
+ height: 100%;
471
+ }
472
+ .ldt-media-carousel__caption {
473
+ margin: 0;
474
+ border-top: var(--loidolt-border-width) solid var(--loidolt-border);
475
+ padding: var(--loidolt-space-2) var(--loidolt-space-3);
476
+ color: var(--loidolt-text-muted);
477
+ background: var(--loidolt-surface);
478
+ }
@@ -31,6 +31,18 @@
31
31
  .ldt-dialog--xl {
32
32
  --ldt-dialog-width: 60rem;
33
33
  }
34
+ .ldt-dialog--full {
35
+ --ldt-dialog-width: 100vw;
36
+ height: calc(100dvh - 2rem);
37
+ max-height: none;
38
+ grid-template-rows: auto minmax(0, 1fr) auto;
39
+ }
40
+ .ldt-dialog__actions {
41
+ display: flex;
42
+ flex: none;
43
+ align-items: center;
44
+ gap: 0.25rem;
45
+ }
34
46
  .ldt-dialog__header,
35
47
  .ldt-dialog__body,
36
48
  .ldt-dialog__footer {
@@ -227,6 +239,62 @@
227
239
  opacity: 0.4;
228
240
  cursor: not-allowed;
229
241
  }
242
+ /* Destructive rows read as danger at rest, and invert to the danger fill when highlighted. */
243
+ .ldt-menu__item--danger {
244
+ color: var(--loidolt-text-danger);
245
+ }
246
+ .ldt-menu__item--danger:hover:not(:disabled, [data-disabled]),
247
+ .ldt-menu__item--danger[data-highlighted] {
248
+ color: var(--loidolt-on-danger);
249
+ background: var(--loidolt-danger);
250
+ }
251
+ .ldt-menu__group {
252
+ display: grid;
253
+ gap: 0.1rem;
254
+ }
255
+ /* Checkbox and radio rows lead with a drawn indicator, so state never rests on colour alone. */
256
+ .ldt-menu__item--check,
257
+ .ldt-menu__item--radio {
258
+ justify-content: flex-start;
259
+ gap: 0.6rem;
260
+ }
261
+ .ldt-menu__item--check .ldt-menu__hint,
262
+ .ldt-menu__item--radio .ldt-menu__hint {
263
+ margin-inline-start: auto;
264
+ }
265
+ .ldt-menu__indicator {
266
+ position: relative;
267
+ width: 0.85rem;
268
+ height: 0.85rem;
269
+ flex: none;
270
+ border: var(--loidolt-border-width) solid currentColor;
271
+ }
272
+ .ldt-menu__item--check[data-state='checked'] .ldt-menu__indicator::after {
273
+ content: '';
274
+ position: absolute;
275
+ inset: 0.05rem 0.22rem 0.18rem;
276
+ border: solid currentColor;
277
+ border-width: 0 2px 2px 0;
278
+ transform: rotate(45deg);
279
+ }
280
+ .ldt-menu__item--radio[data-state='checked'] .ldt-menu__indicator::after {
281
+ content: '';
282
+ position: absolute;
283
+ inset: 0.17rem;
284
+ background: currentColor;
285
+ }
286
+ .ldt-menu__chevron {
287
+ width: 0.4rem;
288
+ height: 0.4rem;
289
+ flex: none;
290
+ border: solid currentColor;
291
+ border-width: 0 1.5px 1.5px 0;
292
+ transform: rotate(-45deg);
293
+ }
294
+ .ldt-menu__item--sub[data-state='open'] {
295
+ color: var(--loidolt-text-inverse);
296
+ background: var(--loidolt-surface-inverse);
297
+ }
230
298
  .ldt-menu__separator {
231
299
  height: var(--loidolt-border-width);
232
300
  margin: 0.25rem 0;
@@ -242,6 +310,10 @@
242
310
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
243
311
  box-shadow: var(--loidolt-shadow-popover);
244
312
  }
313
+ /* The arrow's SVG fills with currentColor, so it takes the tooltip's surface colour. */
314
+ .ldt-tooltip__arrow {
315
+ color: var(--loidolt-surface-inverse);
316
+ }
245
317
  /*
246
318
  * Bits UI stamps `data-orientation` on the root, list, triggers and panels, so the vertical
247
319
  * layout keys off that rather than needing a second class.
@@ -311,3 +383,69 @@
311
383
  padding-block: 1rem;
312
384
  }
313
385
  }
386
+ /* The option list of Combobox and MultiSelect: the menu surface, sized to its field. */
387
+ .ldt-listbox {
388
+ z-index: var(--loidolt-z-menu);
389
+ min-width: var(--bits-floating-anchor-width, 13rem);
390
+ max-width: min(28rem, calc(100vw - 2rem));
391
+ max-height: min(20rem, var(--bits-floating-available-height, 20rem));
392
+ display: grid;
393
+ gap: 0.1rem;
394
+ overflow-y: auto;
395
+ padding: 0.35rem;
396
+ border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
397
+ color: var(--loidolt-text);
398
+ background: var(--loidolt-surface);
399
+ box-shadow: var(--loidolt-shadow-popover);
400
+ }
401
+ .ldt-listbox__group {
402
+ display: grid;
403
+ gap: 0.1rem;
404
+ }
405
+ .ldt-listbox__group + .ldt-listbox__group,
406
+ .ldt-listbox__item + .ldt-listbox__group {
407
+ margin-top: 0.25rem;
408
+ border-top: var(--loidolt-border-width) solid var(--loidolt-border-soft);
409
+ padding-top: 0.25rem;
410
+ }
411
+ .ldt-listbox__heading {
412
+ padding: 0.4rem 0.55rem 0.25rem;
413
+ color: var(--loidolt-text-accent);
414
+ font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
415
+ letter-spacing: 0.09em;
416
+ text-transform: uppercase;
417
+ }
418
+ .ldt-listbox__item {
419
+ min-height: 1.5rem;
420
+ display: flex;
421
+ align-items: center;
422
+ justify-content: space-between;
423
+ gap: 1rem;
424
+ padding: 0.55rem;
425
+ cursor: default;
426
+ }
427
+ .ldt-listbox__item[data-highlighted] {
428
+ color: var(--loidolt-text-inverse);
429
+ background: var(--loidolt-surface-inverse);
430
+ }
431
+ .ldt-listbox__item[data-disabled] {
432
+ opacity: 0.4;
433
+ cursor: not-allowed;
434
+ }
435
+ /* A check drawn with borders, so selection never depends on an icon font. */
436
+ .ldt-listbox__check {
437
+ width: 0.35rem;
438
+ height: 0.65rem;
439
+ flex: none;
440
+ border: solid transparent;
441
+ border-width: 0 2px 2px 0;
442
+ transform: rotate(45deg) translate(-0.1rem, -0.1rem);
443
+ }
444
+ .ldt-listbox__item[data-selected] .ldt-listbox__check {
445
+ border-color: currentColor;
446
+ }
447
+ .ldt-listbox__empty {
448
+ padding: 0.55rem;
449
+ color: var(--loidolt-text-muted);
450
+ font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
451
+ }