@loidolt/theme-styles 0.7.0 → 0.8.1

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.
@@ -1,6 +1,6 @@
1
1
  .ldt-field {
2
2
  display: grid;
3
- gap: 0.35rem;
3
+ gap: var(--loidolt-gap-field);
4
4
  min-width: 0;
5
5
  }
6
6
  .ldt-label,
@@ -10,8 +10,9 @@
10
10
  justify-content: space-between;
11
11
  color: var(--loidolt-text-muted);
12
12
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
13
- letter-spacing: var(--loidolt-font-tracking-utility);
14
- text-transform: uppercase;
13
+ font-weight: var(--loidolt-label-weight);
14
+ letter-spacing: var(--loidolt-label-tracking);
15
+ text-transform: var(--loidolt-label-transform);
15
16
  }
16
17
  .ldt-field__description {
17
18
  margin: 0;
@@ -32,8 +33,9 @@
32
33
  min-height: var(--loidolt-size-control);
33
34
  border: 0;
34
35
  border-bottom: var(--loidolt-border-width) solid var(--loidolt-border-control);
36
+ /* Square even when controls are rounded: a radius on a bottom-only border reads as a fault. */
35
37
  border-radius: 0;
36
- padding: 0.45rem 0.15rem;
38
+ padding: var(--loidolt-pad-field);
37
39
  color: var(--loidolt-text);
38
40
  background: transparent;
39
41
  }
@@ -42,7 +44,8 @@
42
44
  .ldt-textarea--boxed,
43
45
  .ldt-number-field--boxed {
44
46
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
45
- padding-inline: 0.65rem;
47
+ border-radius: var(--loidolt-radius-control);
48
+ padding-inline: var(--loidolt-pad-control-x-sm);
46
49
  background: var(--loidolt-surface-input);
47
50
  }
48
51
  /* The focus ring itself comes from the `loidolt.a11y` layer; this only tints the border. */
@@ -66,10 +69,10 @@
66
69
  min-height: 1.5rem;
67
70
  display: inline-flex;
68
71
  align-items: center;
69
- gap: 0.55rem;
72
+ gap: 0.55rem; /* @literal glyph-to-label spacing, not density */
70
73
  color: var(--loidolt-text-muted);
71
74
  font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
72
- letter-spacing: 0.06em;
75
+ letter-spacing: calc(var(--loidolt-control-tracking) * 0.75);
73
76
  }
74
77
  .ldt-choice input {
75
78
  width: 1rem;
@@ -85,7 +88,7 @@
85
88
  }
86
89
  .ldt-choice__text {
87
90
  display: grid;
88
- gap: 0.15rem;
91
+ gap: 0.15rem; /* @literal glyph-to-label spacing, not density */
89
92
  }
90
93
  .ldt-choice__description {
91
94
  color: var(--loidolt-text-muted);
@@ -108,15 +111,15 @@
108
111
  .ldt-fieldset__body {
109
112
  display: grid;
110
113
  gap: var(--ldt-gap, var(--loidolt-space-3));
111
- margin-top: 0.35rem;
114
+ margin-top: var(--loidolt-gap-field);
112
115
  }
113
116
  .ldt-fieldset > :where(.ldt-field__description, .ldt-field__error) {
114
- margin-top: 0.35rem;
117
+ margin-top: var(--loidolt-gap-field);
115
118
  }
116
119
  .ldt-radio-group {
117
120
  display: flex;
118
121
  flex-wrap: wrap;
119
- gap: 0.75rem 1rem;
122
+ gap: var(--loidolt-space-3) var(--loidolt-space-4);
120
123
  }
121
124
  .ldt-radio-group--vertical {
122
125
  flex-direction: column;
@@ -125,7 +128,7 @@
125
128
  min-height: 1.5rem;
126
129
  display: inline-flex;
127
130
  align-items: center;
128
- gap: 0.65rem;
131
+ gap: 0.65rem; /* @literal glyph-to-label spacing, not density */
129
132
  border: 0;
130
133
  padding: 0;
131
134
  background: transparent;
@@ -133,14 +136,17 @@
133
136
  .ldt-switch__track {
134
137
  width: 2.4rem;
135
138
  height: 1.25rem;
136
- padding: 2px;
139
+ padding: 2px; /* @literal thumb travel is computed from the track geometry */
137
140
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
141
+ border-radius: var(--loidolt-radius-control);
138
142
  background: var(--loidolt-surface-alt);
139
143
  }
140
144
  .ldt-switch__thumb {
141
145
  display: block;
142
146
  width: 0.9rem;
143
147
  height: 0.9rem;
148
+ /* Concentric with the track: its radius less the 2px inset and 1px border. */
149
+ border-radius: max(0px, calc(var(--loidolt-radius-control) - 3px));
144
150
  background: var(--loidolt-text-muted);
145
151
  transition: transform var(--loidolt-motion-fast) var(--loidolt-motion-easing);
146
152
  }
@@ -180,12 +186,14 @@
180
186
  .ldt-file-input::file-selector-button {
181
187
  margin-inline-end: var(--loidolt-space-2);
182
188
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
183
- padding: 0.25rem 0.65rem;
189
+ border-radius: var(--loidolt-radius-control);
190
+ padding: var(--loidolt-space-1) var(--loidolt-pad-control-x-sm);
184
191
  color: var(--loidolt-text);
185
192
  background: var(--loidolt-surface);
186
193
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
187
- letter-spacing: 0.08em;
188
- text-transform: uppercase;
194
+ font-weight: var(--loidolt-control-weight);
195
+ letter-spacing: var(--loidolt-control-tracking);
196
+ text-transform: var(--loidolt-control-transform);
189
197
  cursor: pointer;
190
198
  }
191
199
  .ldt-file-input::file-selector-button:hover {
@@ -201,7 +209,8 @@
201
209
  display: inline-block;
202
210
  width: 1.75rem;
203
211
  height: 1.75rem;
204
- border: 2px solid transparent;
212
+ border: var(--loidolt-stroke-indicator) solid transparent;
213
+ border-radius: var(--loidolt-radius-control);
205
214
  background: var(--ldt-swatch);
206
215
  cursor: pointer;
207
216
  }
@@ -213,8 +222,8 @@
213
222
  border-color: var(--loidolt-accent);
214
223
  }
215
224
  .ldt-swatch-group__swatch:has(input:focus-visible) {
216
- outline: 2px solid var(--loidolt-focus-ring);
217
- outline-offset: 1px;
225
+ outline: var(--loidolt-stroke-focus) solid var(--loidolt-focus-ring);
226
+ outline-offset: 1px; /* @literal gap between swatch and ring */
218
227
  }
219
228
  .ldt-swatch-group__swatch:has(input:disabled) {
220
229
  opacity: 0.4;
@@ -230,14 +239,15 @@
230
239
  display: flex;
231
240
  flex-wrap: wrap;
232
241
  align-items: center;
233
- gap: 0.3rem;
242
+ gap: 0.3rem; /* @literal chip spacing */
234
243
  border-bottom: var(--loidolt-border-width) solid var(--loidolt-border-control);
235
- padding: 0.2rem 0 0.2rem 0.15rem;
244
+ padding: 0.2rem 0 0.2rem 0.15rem; /* @literal chip well inset */
236
245
  color: var(--loidolt-text);
237
246
  }
238
247
  .ldt-combobox--boxed {
239
248
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
240
- padding-inline: 0.5rem 0;
249
+ border-radius: var(--loidolt-radius-control);
250
+ padding-inline: var(--loidolt-space-2) 0;
241
251
  background: var(--loidolt-surface-input);
242
252
  }
243
253
  .ldt-combobox:focus-within {
@@ -255,7 +265,7 @@
255
265
  min-width: 0;
256
266
  min-height: 1.5rem;
257
267
  border: 0;
258
- padding: 0.2rem 0;
268
+ padding: 0.2rem 0; /* @literal sits inside the well's own padding */
259
269
  color: inherit;
260
270
  background: transparent;
261
271
  }
@@ -279,7 +289,7 @@
279
289
  .ldt-multi-select__chips {
280
290
  display: flex;
281
291
  flex-wrap: wrap;
282
- gap: 0.3rem;
292
+ gap: 0.3rem; /* @literal chip spacing */
283
293
  margin: 0;
284
294
  padding: 0;
285
295
  list-style: none;
@@ -322,7 +332,7 @@
322
332
  display: block;
323
333
  width: var(--ldt-slider-thumb);
324
334
  height: var(--ldt-slider-thumb);
325
- border: 2px solid var(--loidolt-accent);
335
+ border: var(--loidolt-stroke-indicator) solid var(--loidolt-accent);
326
336
  background: var(--loidolt-surface-input);
327
337
  cursor: grab;
328
338
  transition: background var(--loidolt-motion-fast) var(--loidolt-motion-easing);
@@ -382,6 +392,7 @@
382
392
  }
383
393
  .ldt-password-input--boxed {
384
394
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
395
+ border-radius: var(--loidolt-radius-control);
385
396
  background: var(--loidolt-surface-input);
386
397
  }
387
398
  .ldt-password-input:focus-within {
@@ -394,12 +405,12 @@
394
405
  flex: 1;
395
406
  min-width: 0;
396
407
  border: 0;
397
- padding: 0.45rem 0.15rem;
408
+ padding: var(--loidolt-pad-field);
398
409
  color: var(--loidolt-text);
399
410
  background: transparent;
400
411
  }
401
412
  .ldt-password-input--boxed .ldt-password-input__input {
402
- padding-inline: 0.65rem;
413
+ padding-inline: var(--loidolt-pad-control-x-sm);
403
414
  }
404
415
  .ldt-password-input__toggle {
405
416
  display: inline-grid;
@@ -420,7 +431,7 @@
420
431
  .ldt-otp-input {
421
432
  display: inline-flex;
422
433
  align-items: center;
423
- gap: 0.35rem;
434
+ gap: 0.35rem; /* @literal cell spacing */
424
435
  }
425
436
  .ldt-otp-input__cell {
426
437
  position: relative;
@@ -429,6 +440,7 @@
429
440
  display: grid;
430
441
  place-items: center;
431
442
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
443
+ border-radius: var(--loidolt-radius-control);
432
444
  color: var(--loidolt-text);
433
445
  background: var(--loidolt-surface-input);
434
446
  font: var(--loidolt-font-size-lg) var(--loidolt-font-utility);
@@ -437,8 +449,8 @@
437
449
  /* The input is visually hidden, so the active cell carries the focus indicator for it. */
438
450
  .ldt-otp-input:focus-within .ldt-otp-input__cell[data-active] {
439
451
  border-color: var(--loidolt-accent);
440
- outline: 2px solid var(--loidolt-focus-ring);
441
- outline-offset: 1px;
452
+ outline: var(--loidolt-stroke-focus) solid var(--loidolt-focus-ring);
453
+ outline-offset: 1px; /* @literal gap between cell and ring */
442
454
  }
443
455
  .ldt-otp-input:has([aria-invalid='true']) .ldt-otp-input__cell {
444
456
  border-color: var(--loidolt-danger);
@@ -468,6 +480,7 @@
468
480
  .ldt-signature__surface {
469
481
  position: relative;
470
482
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
483
+ border-radius: var(--loidolt-radius-surface);
471
484
  color: var(--loidolt-text);
472
485
  background: var(--loidolt-surface-input);
473
486
  }
@@ -28,8 +28,8 @@
28
28
  /* Reflow at whatever width runs out of room, rather than only at the compact breakpoint. */
29
29
  flex-wrap: wrap;
30
30
  align-items: center;
31
- gap: 1.25rem;
32
- padding: 0 1.35rem;
31
+ gap: var(--loidolt-space-5);
32
+ padding: 0 var(--loidolt-pad-bar-x);
33
33
  color: var(--loidolt-text);
34
34
  background: var(--loidolt-surface);
35
35
  }
@@ -37,7 +37,7 @@
37
37
  display: inline-flex;
38
38
  flex: 0 0 auto;
39
39
  align-items: baseline;
40
- gap: 0.55rem;
40
+ gap: 0.55rem; /* @literal brand lockup */
41
41
  color: var(--loidolt-text);
42
42
  text-decoration: none;
43
43
  }
@@ -46,14 +46,15 @@
46
46
  }
47
47
  .ldt-brand__name {
48
48
  font-size: var(--loidolt-font-size-lg);
49
- font-weight: 500;
50
- letter-spacing: -0.02em;
49
+ font-weight: var(--loidolt-heading-weight);
50
+ letter-spacing: -0.02em; /* @literal brand lockup */
51
51
  }
52
52
  .ldt-brand__meta {
53
53
  color: var(--loidolt-text-accent);
54
54
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
55
- letter-spacing: 0.12em;
56
- text-transform: uppercase;
55
+ font-weight: var(--loidolt-label-weight);
56
+ letter-spacing: calc(var(--loidolt-label-tracking) * 1.2);
57
+ text-transform: var(--loidolt-label-transform);
57
58
  }
58
59
  .ldt-topbar__nav {
59
60
  /*
@@ -72,21 +73,22 @@
72
73
  margin-left: auto;
73
74
  display: flex;
74
75
  align-items: center;
75
- gap: 0.4rem;
76
+ gap: 0.4rem; /* @literal icon-button cluster */
76
77
  }
77
78
  .ldt-nav-menu {
78
79
  min-height: var(--loidolt-size-control);
79
80
  display: inline-flex;
80
81
  align-items: center;
81
- gap: 0.35rem;
82
+ gap: 0.35rem; /* @literal glyph-to-label spacing, not density */
82
83
  border: 0;
83
- border-bottom: 2px solid transparent;
84
- padding: 0 0.75rem;
84
+ border-bottom: var(--loidolt-stroke-indicator) solid transparent;
85
+ padding: 0 var(--loidolt-space-3);
85
86
  color: var(--loidolt-text-muted);
86
87
  background: transparent;
87
88
  font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
88
- letter-spacing: 0.08em;
89
- text-transform: uppercase;
89
+ font-weight: var(--loidolt-control-weight);
90
+ letter-spacing: var(--loidolt-control-tracking);
91
+ text-transform: var(--loidolt-control-transform);
90
92
  }
91
93
  .ldt-nav-menu:hover:not(:disabled, [aria-disabled='true']) {
92
94
  color: var(--loidolt-text);
@@ -105,8 +107,8 @@
105
107
  display: inline-flex;
106
108
  align-items: center;
107
109
  align-self: stretch;
108
- border-bottom: 2px solid transparent;
109
- padding: 0 0.85rem;
110
+ border-bottom: var(--loidolt-stroke-indicator) solid transparent;
111
+ padding: 0 var(--loidolt-pad-control-x);
110
112
  color: var(--loidolt-text-muted);
111
113
  font-size: var(--loidolt-font-size-sm);
112
114
  text-decoration: none;
@@ -125,8 +127,8 @@
125
127
  display: flex;
126
128
  align-items: center;
127
129
  justify-content: space-between;
128
- gap: 1rem;
129
- padding: 0.4rem 1.35rem;
130
+ gap: var(--loidolt-space-4);
131
+ padding: 0.4rem var(--loidolt-pad-bar-x); /* @literal vertical inset is fixed by size-contextbar */
130
132
  border-block: var(--loidolt-border-width) solid var(--loidolt-border);
131
133
  color: var(--loidolt-text);
132
134
  background: var(--loidolt-surface-alt);
@@ -135,14 +137,15 @@
135
137
  min-width: 0;
136
138
  display: flex;
137
139
  align-items: baseline;
138
- gap: 0.65rem;
140
+ gap: 0.65rem; /* @literal title-to-detail spacing */
139
141
  }
140
142
  .ldt-contextbar__section {
141
143
  flex: 0 0 auto;
142
144
  color: var(--loidolt-text-accent);
143
145
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
144
- letter-spacing: 0.1em;
145
- text-transform: uppercase;
146
+ font-weight: var(--loidolt-label-weight);
147
+ letter-spacing: var(--loidolt-label-tracking);
148
+ text-transform: var(--loidolt-label-transform);
146
149
  }
147
150
  .ldt-contextbar__actions {
148
151
  flex: 0 0 auto;
@@ -189,7 +192,7 @@
189
192
  .ldt-sidebar {
190
193
  min-width: 0;
191
194
  overflow-y: auto;
192
- padding: 1.25rem;
195
+ padding: var(--loidolt-pad-pane);
193
196
  border-right: var(--loidolt-border-width) solid var(--loidolt-border);
194
197
  color: var(--loidolt-text);
195
198
  background: var(--loidolt-surface);
@@ -200,7 +203,7 @@
200
203
  }
201
204
  .ldt-workspace__main {
202
205
  min-width: 0;
203
- padding: var(--loidolt-space-6);
206
+ padding: var(--loidolt-pad-page);
204
207
  }
205
208
  /* A toolbar floated over a positioned container (canvas, map, viewer). The parent must be
206
209
  position: relative; the bar is a pointer-events island above the stage content. */
@@ -211,7 +214,7 @@
211
214
  gap: var(--loidolt-space-1);
212
215
  padding: var(--loidolt-space-1);
213
216
  border: var(--loidolt-border-width) solid var(--loidolt-border);
214
- border-radius: var(--loidolt-border-radius);
217
+ border-radius: var(--loidolt-radius-surface);
215
218
  background: var(--loidolt-surface);
216
219
  z-index: var(--loidolt-z-raised);
217
220
  pointer-events: auto;
@@ -239,7 +242,7 @@
239
242
  display: flex;
240
243
  align-items: end;
241
244
  justify-content: space-between;
242
- gap: 1rem;
245
+ gap: var(--loidolt-space-4);
243
246
  margin-bottom: var(--loidolt-space-6);
244
247
  padding-bottom: var(--loidolt-space-4);
245
248
  border-bottom: var(--loidolt-border-width) solid var(--loidolt-border);
@@ -263,7 +266,7 @@
263
266
  display: flex;
264
267
  align-items: baseline;
265
268
  justify-content: space-between;
266
- gap: 1rem;
269
+ gap: var(--loidolt-space-4);
267
270
  margin-bottom: var(--loidolt-space-4);
268
271
  }
269
272
  .ldt-section__title {
@@ -275,8 +278,8 @@
275
278
  @media (max-width: 760px) {
276
279
  .ldt-topbar {
277
280
  min-height: auto;
278
- padding-block: 0.75rem;
279
- gap: 0.75rem;
281
+ padding-block: var(--loidolt-space-3);
282
+ gap: var(--loidolt-space-3);
280
283
  }
281
284
  .ldt-topbar__actions {
282
285
  width: 100%;
@@ -288,7 +291,7 @@
288
291
  }
289
292
  .ldt-contextbar__location {
290
293
  display: grid;
291
- gap: 0.15rem;
294
+ gap: 0.15rem; /* @literal stacked title and detail */
292
295
  }
293
296
  .ldt-contextbar__detail {
294
297
  overflow: visible;
@@ -341,6 +344,7 @@
341
344
  align-items: center;
342
345
  gap: var(--loidolt-space-2);
343
346
  border: var(--loidolt-border-width) solid var(--loidolt-border);
347
+ border-radius: var(--loidolt-radius-surface);
344
348
  padding: var(--loidolt-space-2) var(--loidolt-space-3);
345
349
  color: var(--loidolt-text);
346
350
  background: var(--loidolt-surface-alt);
@@ -382,6 +386,7 @@
382
386
  .ldt-filter-panel__body {
383
387
  margin-top: var(--loidolt-space-2);
384
388
  border: var(--loidolt-border-width) solid var(--loidolt-border);
389
+ border-radius: var(--loidolt-radius-surface);
385
390
  padding: var(--loidolt-space-4);
386
391
  color: var(--loidolt-text);
387
392
  background: var(--loidolt-surface-alt);
@@ -8,6 +8,7 @@
8
8
  height: var(--ldt-map-height, 25rem);
9
9
  overflow: hidden;
10
10
  border: var(--loidolt-border-width) solid var(--loidolt-border);
11
+ border-radius: var(--loidolt-radius-surface);
11
12
  background: var(--loidolt-map-land);
12
13
  }
13
14
  .ldt-map__canvas {
@@ -99,7 +100,7 @@
99
100
  }
100
101
  .ldt-map .maplibregl-ctrl-attrib a {
101
102
  display: inline-block;
102
- padding-block: 0.35rem;
103
+ padding-block: 0.35rem; /* @literal attribution link target */
103
104
  color: var(--loidolt-text);
104
105
  line-height: 1.5;
105
106
  }
@@ -116,8 +117,9 @@
116
117
 
117
118
  /* Controls of our own: legends, coordinates, the basemap switcher. */
118
119
  .ldt-map-control {
119
- padding: 0.5rem 0.65rem;
120
+ padding: var(--loidolt-space-2) var(--loidolt-pad-control-x-sm);
120
121
  border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
122
+ border-radius: var(--loidolt-radius-surface);
121
123
  color: var(--loidolt-text);
122
124
  background: var(--loidolt-surface);
123
125
  }
@@ -128,7 +130,7 @@
128
130
  }
129
131
  .ldt-map-legend {
130
132
  display: grid;
131
- gap: 0.4rem;
133
+ gap: 0.4rem; /* @literal swatch-to-label spacing */
132
134
  min-width: 9rem;
133
135
  max-width: 16rem;
134
136
  font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
@@ -138,26 +140,27 @@
138
140
  margin: 0;
139
141
  color: var(--loidolt-text-muted);
140
142
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
141
- letter-spacing: var(--loidolt-font-tracking-utility);
142
- text-transform: uppercase;
143
+ font-weight: var(--loidolt-label-weight);
144
+ letter-spacing: var(--loidolt-label-tracking);
145
+ text-transform: var(--loidolt-label-transform);
143
146
  }
144
147
  .ldt-map-legend__summary {
145
148
  cursor: pointer;
146
149
  }
147
150
  .ldt-map-legend__section {
148
151
  display: grid;
149
- gap: 0.35rem;
152
+ gap: 0.35rem; /* @literal legend rhythm */
150
153
  }
151
154
  .ldt-map-legend__items {
152
155
  display: grid;
153
- gap: 0.25rem;
156
+ gap: var(--loidolt-space-1);
154
157
  margin: 0;
155
158
  padding: 0;
156
159
  list-style: none;
157
160
  }
158
161
  .ldt-map-legend__item {
159
162
  display: flex;
160
- gap: 0.5rem;
163
+ gap: var(--loidolt-space-2);
161
164
  align-items: center;
162
165
  }
163
166
  .ldt-map-legend__key {
@@ -184,7 +187,7 @@
184
187
  }
185
188
  .ldt-map-coordinates {
186
189
  display: flex;
187
- gap: 0.75rem;
190
+ gap: var(--loidolt-space-3);
188
191
  margin: 0;
189
192
  font: var(--loidolt-font-size-xs) var(--loidolt-font-mono);
190
193
  font-variant-numeric: tabular-nums;
@@ -203,19 +206,20 @@
203
206
  }
204
207
  .ldt-layer-manager__toggle {
205
208
  width: 100%;
206
- padding: 0.15rem 0;
209
+ padding: 0.15rem 0; /* @literal toggle hit area */
207
210
  border: 0;
208
211
  color: var(--loidolt-text-muted);
209
212
  background: none;
210
213
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
211
- letter-spacing: var(--loidolt-font-tracking-utility);
214
+ font-weight: var(--loidolt-label-weight);
215
+ letter-spacing: var(--loidolt-label-tracking);
212
216
  text-align: start;
213
- text-transform: uppercase;
217
+ text-transform: var(--loidolt-label-transform);
214
218
  cursor: pointer;
215
219
  }
216
220
  .ldt-layer-manager__list {
217
221
  display: grid;
218
- gap: 0.5rem;
222
+ gap: var(--loidolt-space-2);
219
223
  margin: 0.4rem 0 0;
220
224
  padding: 0;
221
225
  list-style: none;
@@ -226,9 +230,9 @@
226
230
  .ldt-layer-manager__row {
227
231
  display: grid;
228
232
  grid-template-columns: minmax(0, 1fr) auto;
229
- gap: 0.35rem 0.5rem;
233
+ gap: 0.35rem 0.5rem; /* @literal separator rhythm */
230
234
  align-items: center;
231
- padding-top: 0.5rem;
235
+ padding-top: var(--loidolt-space-2);
232
236
  border-top: var(--loidolt-border-width) solid var(--loidolt-border-soft);
233
237
  }
234
238
  .ldt-layer-manager__row:first-child {
@@ -237,7 +241,7 @@
237
241
  }
238
242
  .ldt-layer-manager__move {
239
243
  display: flex;
240
- gap: 0.15rem;
244
+ gap: 0.15rem; /* @literal icon pair */
241
245
  }
242
246
  .ldt-layer-manager__opacity {
243
247
  grid-column: 1 / -1;
@@ -272,9 +276,9 @@ span.ldt-map-marker {
272
276
  display: grid;
273
277
  grid-template-columns: minmax(0, 1fr) auto;
274
278
  align-items: start;
275
- gap: 0.25rem;
279
+ gap: var(--loidolt-space-1);
276
280
  max-width: min(18rem, 80vw);
277
- padding: 0.5rem 0.35rem 0.6rem 0.75rem;
281
+ padding: 0.5rem 0.35rem 0.6rem 0.75rem; /* @literal popup inset clears the close button */
278
282
  }
279
283
  .ldt-map-popup__body > :first-child {
280
284
  margin-top: 0.3rem;
@@ -292,12 +296,12 @@ span.ldt-map-marker {
292
296
  }
293
297
  .ldt-map-features__item {
294
298
  display: grid;
295
- gap: 0.1rem;
299
+ gap: 0.1rem; /* @literal hairline between lines */
296
300
  width: 100%;
297
- padding: 0.55rem 0.75rem;
301
+ padding: 0.55rem 0.75rem; /* @literal feature list metrics */
298
302
  border: 0;
299
303
  border-bottom: var(--loidolt-border-width) solid var(--loidolt-border-soft);
300
- border-left: 3px solid transparent;
304
+ border-left: var(--loidolt-stroke-accent) solid transparent;
301
305
  color: var(--loidolt-text);
302
306
  background: none;
303
307
  font: inherit;
@@ -84,7 +84,7 @@
84
84
  }
85
85
  .ldt-media-player__meta {
86
86
  display: grid;
87
- gap: 0.1rem;
87
+ gap: 0.1rem; /* @literal hairline between lines */
88
88
  min-width: 0;
89
89
  }
90
90
  .ldt-media-player--audio .ldt-media-player__meta:first-child {
@@ -125,7 +125,7 @@
125
125
  color: var(--loidolt-accent);
126
126
  }
127
127
  .ldt-media-controls__text {
128
- letter-spacing: var(--loidolt-font-tracking-utility);
128
+ letter-spacing: var(--loidolt-label-tracking);
129
129
  }
130
130
  /* Focus rings on the dark bar follow the ink so they stay visible in both themes. */
131
131
  .ldt-media-controls :focus-visible {
@@ -169,7 +169,8 @@
169
169
  .ldt-media-controls__speed {
170
170
  min-height: 1.5rem;
171
171
  border: var(--loidolt-border-width) solid currentColor;
172
- padding: 0 0.3rem;
172
+ border-radius: var(--loidolt-radius-control);
173
+ padding: 0 0.3rem; /* @literal compact readout */
173
174
  color: inherit;
174
175
  background: transparent;
175
176
  font: inherit;
@@ -191,6 +192,7 @@
191
192
  aspect-ratio: var(--ldt-aspect-ratio, 16 / 9);
192
193
  overflow: hidden;
193
194
  border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
195
+ border-radius: var(--loidolt-radius-surface);
194
196
  background: var(--loidolt-surface-inverse);
195
197
  }
196
198
  .ldt-media-embed__frame {
@@ -225,12 +227,13 @@
225
227
  }
226
228
  .ldt-media-embed__title {
227
229
  max-width: 32rem;
228
- padding: 0.2rem 0.5rem;
230
+ padding: 0.2rem 0.5rem; /* @literal caption chip */
229
231
  color: var(--loidolt-text-inverse);
230
232
  background: var(--loidolt-surface-inverse);
231
233
  font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
232
- letter-spacing: var(--loidolt-font-tracking-utility);
233
- text-transform: uppercase;
234
+ font-weight: var(--loidolt-label-weight);
235
+ letter-spacing: var(--loidolt-label-tracking);
236
+ text-transform: var(--loidolt-label-transform);
234
237
  }
235
238
  .ldt-media-embed__unsupported {
236
239
  display: grid;
@@ -310,12 +313,13 @@
310
313
  border-color: var(--loidolt-accent);
311
314
  }
312
315
  .ldt-media-tile__kind {
313
- padding: 0.1rem 0.4rem;
316
+ padding: 0.1rem 0.4rem; /* @literal kind chip */
314
317
  color: var(--loidolt-text-inverse);
315
318
  background: var(--loidolt-surface-inverse);
316
319
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
317
- letter-spacing: var(--loidolt-font-tracking-utility);
318
- text-transform: uppercase;
320
+ font-weight: var(--loidolt-label-weight);
321
+ letter-spacing: var(--loidolt-label-tracking);
322
+ text-transform: var(--loidolt-label-transform);
319
323
  }
320
324
  .ldt-media-tile__caption {
321
325
  color: var(--loidolt-text-muted);
@@ -347,7 +351,7 @@
347
351
  .ldt-lightbox__counter {
348
352
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
349
353
  font-variant-numeric: tabular-nums;
350
- letter-spacing: var(--loidolt-font-tracking-utility);
354
+ letter-spacing: var(--loidolt-label-tracking);
351
355
  }
352
356
  .ldt-lightbox__tools {
353
357
  display: flex;
@@ -360,7 +364,8 @@
360
364
  min-height: var(--loidolt-size-control-sm);
361
365
  place-items: center;
362
366
  border: var(--loidolt-border-width) solid currentColor;
363
- padding: 0 0.5rem;
367
+ border-radius: var(--loidolt-radius-control);
368
+ padding: 0 var(--loidolt-space-2);
364
369
  color: inherit;
365
370
  background: var(--loidolt-surface-inverse);
366
371
  font: var(--loidolt-font-size-base) var(--loidolt-font-utility);
@@ -402,7 +407,7 @@
402
407
  width: 0.55rem;
403
408
  height: 0.55rem;
404
409
  border: solid currentColor;
405
- border-width: 0 0 2px 2px;
410
+ border-width: 0 0 2px 2px; /* @literal chevron glyph */
406
411
  transform: translateX(0.1rem) rotate(45deg);
407
412
  }
408
413
  .ldt-lightbox__nav--next .ldt-lightbox__chevron,
@@ -437,6 +442,7 @@
437
442
  min-height: var(--loidolt-size-control-sm);
438
443
  place-items: center;
439
444
  border: var(--loidolt-border-width) solid var(--loidolt-border-control);
445
+ border-radius: var(--loidolt-radius-control);
440
446
  padding: 0;
441
447
  color: var(--loidolt-text);
442
448
  background: var(--loidolt-surface);