@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.
package/README.md CHANGED
@@ -15,4 +15,7 @@ Deep entry points include `/tokens`, `/base`, `/components`, `/utilities`, `/acc
15
15
  `/fonts`, `/dark`, and `/dark-auto`. Every slice except `/tokens` expects the token custom
16
16
  properties to be loaded first.
17
17
 
18
+ Built-in style presets live under `/presets/*`: `loidolt`, `soft` and `compact`, each with
19
+ `-dark` and `-dark-auto` companions. They apply under `data-preset="<name>"`.
20
+
18
21
  See the [design-system documentation](https://theme.loidolt.space) for customization guidance.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loidolt/theme-styles",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Base styles, fonts, accessibility helpers, and utilities for Loidolt applications",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,6 +10,7 @@
10
10
  "./tokens": "./src/tokens.css",
11
11
  "./dark": "./src/dark.css",
12
12
  "./dark-auto": "./src/dark-auto.css",
13
+ "./presets/*": "./src/presets/*.css",
13
14
  "./base": "./src/base.css",
14
15
  "./accessibility": "./src/accessibility.css",
15
16
  "./utilities": "./src/utilities.css",
@@ -28,7 +29,7 @@
28
29
  "build": "node -e \"console.log('theme-styles: source CSS is publish-ready')\""
29
30
  },
30
31
  "dependencies": {
31
- "@loidolt/theme-tokens": "^0.7.0"
32
+ "@loidolt/theme-tokens": "^0.8.1"
32
33
  },
33
34
  "publishConfig": {
34
35
  "access": "public",
@@ -1,15 +1,15 @@
1
1
  /* Deep slice: assumes the token custom properties are already loaded.
2
2
  Import '@loidolt/theme-styles/tokens' (or the whole '@loidolt/theme-styles') first. */
3
3
  :where(:focus-visible) {
4
- outline: 2px solid var(--loidolt-focus-ring);
5
- outline-offset: 2px;
4
+ outline: var(--loidolt-stroke-focus) solid var(--loidolt-focus-ring);
5
+ outline-offset: 2px; /* @literal clearance between control and ring */
6
6
  }
7
7
  :where(:focus:not(:focus-visible)) {
8
8
  outline: none;
9
9
  }
10
10
  /*
11
11
  * A scroll container clips an outset ring against its own edge, and children that fill the
12
- * container have nowhere to put one. Draw it inside those instead — same 2px indicator,
12
+ * container have nowhere to put one. Draw it inside those instead — same indicator,
13
13
  * just on the other side of the border box. Zero specificity, declared after the rule above,
14
14
  * so it overrides by document order without escalating specificity.
15
15
  */
@@ -31,7 +31,7 @@
31
31
  .ldt-mermaid
32
32
  )
33
33
  :where(:focus-visible) {
34
- outline-offset: -2px;
34
+ outline-offset: calc(-1 * var(--loidolt-stroke-focus));
35
35
  /* Follow the control's accessible foreground pairing so inset focus stays visible on fills. */
36
36
  outline-color: currentColor;
37
37
  }
@@ -68,7 +68,7 @@
68
68
  z-index: var(--loidolt-z-skip-link);
69
69
  top: 0;
70
70
  left: 0;
71
- padding: 0.75rem 1rem;
71
+ padding: var(--loidolt-space-3) var(--loidolt-space-4);
72
72
  color: var(--loidolt-on-accent);
73
73
  background: var(--loidolt-accent);
74
74
  transform: translateY(-110%);
@@ -194,7 +194,7 @@
194
194
 
195
195
  @media (forced-colors: active) {
196
196
  :where(button, input, select, textarea, [role='button']) {
197
- border: 1px solid ButtonText;
197
+ border: 1px solid ButtonText; /* @literal forced-colors boundary */
198
198
  }
199
199
  :where(:focus-visible) {
200
200
  outline-color: Highlight;
package/src/base.css CHANGED
@@ -45,7 +45,7 @@
45
45
  margin-block-start: 0;
46
46
  }
47
47
  :where(h1, h2, h3, h4) {
48
- font-weight: 500;
48
+ font-weight: var(--loidolt-heading-weight);
49
49
  line-height: var(--loidolt-font-line-height-tight);
50
50
  }
51
51
  :where(code, pre, kbd, samp) {
@@ -9,17 +9,18 @@
9
9
  justify-content: center;
10
10
  gap: var(--loidolt-space-2);
11
11
  border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
12
- border-radius: var(--loidolt-border-radius);
13
- padding: 0.5rem 0.85rem;
12
+ border-radius: var(--loidolt-radius-control);
13
+ padding: var(--loidolt-pad-control-y) var(--loidolt-pad-control-x);
14
14
  color: var(--loidolt-text);
15
15
  background: transparent;
16
16
  font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
17
- letter-spacing: 0.08em;
17
+ font-weight: var(--loidolt-control-weight);
18
+ letter-spacing: var(--loidolt-control-tracking);
18
19
  line-height: 1.2;
19
20
  overflow-wrap: anywhere;
20
21
  text-align: center;
21
22
  text-decoration: none;
22
- text-transform: uppercase;
23
+ text-transform: var(--loidolt-control-transform);
23
24
  white-space: normal;
24
25
  }
25
26
  .ldt-button:hover:not(:disabled, [aria-disabled='true']) {
@@ -60,7 +61,7 @@
60
61
  .ldt-button--text {
61
62
  /* 1.5rem is the WCAG 2.2 minimum target size; `auto` left this at ~22px. */
62
63
  min-height: 1.5rem;
63
- padding: 0.25rem;
64
+ padding: var(--loidolt-space-1);
64
65
  color: var(--loidolt-text-muted);
65
66
  }
66
67
  .ldt-button--text:hover:not(:disabled, [aria-disabled='true']) {
@@ -69,12 +70,12 @@
69
70
  }
70
71
  .ldt-button--sm {
71
72
  min-height: var(--loidolt-size-control-sm);
72
- padding: 0.38rem 0.65rem;
73
+ padding: var(--loidolt-pad-control-y-sm) var(--loidolt-pad-control-x-sm);
73
74
  font-size: var(--loidolt-font-size-xs);
74
75
  }
75
76
  .ldt-button--lg {
76
77
  min-height: var(--loidolt-size-control-lg);
77
- padding-inline: 1.2rem;
78
+ padding-inline: var(--loidolt-pad-control-x-lg);
78
79
  }
79
80
  .ldt-button:disabled,
80
81
  .ldt-button[aria-disabled='true'] {
@@ -99,9 +100,9 @@
99
100
  .ldt-spinner {
100
101
  width: 1em;
101
102
  height: 1em;
102
- border: 2px solid currentColor;
103
+ border: 2px solid currentColor; /* @literal drawn in proportion to its 1em box */
103
104
  border-right-color: transparent;
104
- border-radius: 50%;
105
+ border-radius: 50%; /* @literal a spinner is a circle in every preset */
105
106
  animation: ldt-spin 0.7s linear infinite;
106
107
  }
107
108
  .ldt-spinner--sm {
@@ -115,7 +116,7 @@
115
116
  .ldt-spinner--lg {
116
117
  width: 2rem;
117
118
  height: 2rem;
118
- border-width: 3px;
119
+ border-width: 3px; /* @literal spinner ring geometry */
119
120
  }
120
121
  @keyframes ldt-spin {
121
122
  to {
@@ -129,6 +130,7 @@
129
130
  align-items: center;
130
131
  gap: var(--loidolt-space-2);
131
132
  border: 0;
133
+ border-radius: var(--loidolt-radius-inner);
132
134
  padding: var(--loidolt-space-1) var(--loidolt-space-2);
133
135
  color: inherit;
134
136
  background: transparent;
@@ -142,6 +144,6 @@
142
144
  text-decoration: none;
143
145
  }
144
146
  .ldt-list-row--selected {
145
- box-shadow: inset 2px 0 0 var(--loidolt-accent);
147
+ box-shadow: inset var(--loidolt-stroke-indicator) 0 0 var(--loidolt-accent);
146
148
  background: var(--loidolt-surface-sunken);
147
149
  }
@@ -2,7 +2,7 @@
2
2
  runtime through `createTokenColors`); this file styles everything around the canvas. */
3
3
  .ldt-chart {
4
4
  display: grid;
5
- gap: 0.5rem;
5
+ gap: var(--loidolt-space-2);
6
6
  min-width: 0;
7
7
  margin: 0;
8
8
  }
@@ -10,8 +10,9 @@
10
10
  .ldt-chart__title {
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-chart__canvas,
17
18
  .ldt-chart__state {
@@ -2,6 +2,7 @@
2
2
  width: 100%;
3
3
  overflow-x: auto;
4
4
  border: var(--loidolt-border-width) solid var(--loidolt-border);
5
+ border-radius: var(--loidolt-radius-surface);
5
6
  }
6
7
  .ldt-table {
7
8
  width: 100%;
@@ -10,15 +11,16 @@
10
11
  background: var(--loidolt-surface);
11
12
  }
12
13
  .ldt-table :where(th, td) {
13
- padding: 0.7rem 0.8rem;
14
+ padding: var(--loidolt-pad-cell);
14
15
  border-bottom: var(--loidolt-border-width) solid var(--loidolt-border-soft);
15
16
  text-align: left;
16
17
  }
17
18
  .ldt-table th {
18
19
  color: var(--loidolt-text-muted);
19
20
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
20
- letter-spacing: var(--loidolt-font-tracking-utility);
21
- text-transform: uppercase;
21
+ font-weight: var(--loidolt-label-weight);
22
+ letter-spacing: var(--loidolt-label-tracking);
23
+ text-transform: var(--loidolt-label-transform);
22
24
  }
23
25
  .ldt-table tbody tr:last-child td {
24
26
  border-bottom: 0;
@@ -50,12 +52,12 @@
50
52
  /* `border-collapse: collapse` drops the borders of a sticky cell — the collapsed edge belongs
51
53
  to the table, which scrolls away. An inset shadow is painted by the cell itself and stays. */
52
54
  border-bottom: 0;
53
- box-shadow: inset 0 -1px 0 var(--loidolt-border);
55
+ box-shadow: inset 0 calc(-1 * var(--loidolt-border-width)) 0 var(--loidolt-border);
54
56
  }
55
57
  .ldt-table__sort {
56
58
  display: inline-flex;
57
59
  align-items: center;
58
- gap: 0.4rem;
60
+ gap: 0.4rem; /* @literal glyph-to-label spacing, not density */
59
61
  border: 0;
60
62
  padding: 0;
61
63
  color: inherit;
@@ -73,8 +75,8 @@
73
75
  .ldt-table__sort-indicator {
74
76
  width: 0;
75
77
  height: 0;
76
- border-inline: 0.3rem solid transparent;
77
- border-bottom: 0.34rem solid currentColor;
78
+ border-inline: 0.3rem solid transparent; /* @literal CSS triangle geometry */
79
+ border-bottom: 0.34rem solid currentColor; /* @literal CSS triangle geometry */
78
80
  opacity: 0;
79
81
  }
80
82
  .ldt-table__sort:hover .ldt-table__sort-indicator {
@@ -99,9 +101,10 @@
99
101
  .ldt-empty-state {
100
102
  display: grid;
101
103
  justify-items: center;
102
- gap: 0.5rem;
104
+ gap: var(--loidolt-space-2);
103
105
  padding: var(--loidolt-space-10) var(--loidolt-space-6);
104
106
  border: var(--loidolt-border-width) dashed var(--loidolt-border);
107
+ border-radius: var(--loidolt-radius-surface);
105
108
  color: var(--loidolt-text-muted);
106
109
  background: var(--loidolt-surface);
107
110
  text-align: center;
@@ -124,7 +127,7 @@
124
127
  display: flex;
125
128
  flex-wrap: wrap;
126
129
  justify-content: center;
127
- gap: var(--loidolt-space-2);
130
+ gap: var(--loidolt-gap-actions);
128
131
  margin-top: var(--loidolt-space-2);
129
132
  }
130
133
  /* Trailing action cell in a data table: content hugs the right edge, inline forms welcome. */
@@ -151,6 +154,7 @@
151
154
  display: flex;
152
155
  align-items: flex-start;
153
156
  gap: var(--loidolt-space-2);
157
+ border-radius: var(--loidolt-radius-inner);
154
158
  padding: var(--loidolt-space-1) var(--loidolt-space-2);
155
159
  }
156
160
  .ldt-comment--active {
@@ -175,6 +179,7 @@
175
179
  gap: var(--loidolt-space-2);
176
180
  padding: var(--loidolt-space-2) var(--loidolt-space-3);
177
181
  border: var(--loidolt-border-width) solid var(--loidolt-border);
182
+ border-radius: var(--loidolt-radius-surface);
178
183
  background: var(--loidolt-surface-sunken);
179
184
  }
180
185
  .ldt-code-block__code {
@@ -225,7 +230,7 @@
225
230
  background: var(--loidolt-surface-alt);
226
231
  }
227
232
  .ldt-table tbody tr[data-selected] td:first-child {
228
- box-shadow: inset 3px 0 0 var(--loidolt-accent);
233
+ box-shadow: inset var(--loidolt-stroke-accent) 0 0 var(--loidolt-accent);
229
234
  }
230
235
  .ldt-data-table__spacer td {
231
236
  padding: 0;
@@ -275,7 +280,7 @@
275
280
  min-width: 1.25rem;
276
281
  place-items: center;
277
282
  margin-inline-start: 0.4rem;
278
- padding-inline: 0.3rem;
283
+ padding-inline: 0.3rem; /* @literal count badge metrics */
279
284
  color: var(--loidolt-on-accent);
280
285
  background: var(--loidolt-accent);
281
286
  font-size: var(--loidolt-font-size-xs);
@@ -301,8 +306,9 @@
301
306
  gap: var(--loidolt-space-2);
302
307
  color: var(--loidolt-text-muted);
303
308
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
304
- letter-spacing: var(--loidolt-font-tracking-utility);
305
- text-transform: uppercase;
309
+ font-weight: var(--loidolt-label-weight);
310
+ letter-spacing: var(--loidolt-label-tracking);
311
+ text-transform: var(--loidolt-label-transform);
306
312
  }
307
313
  .ldt-data-table-pagination__size .ldt-select {
308
314
  width: auto;
@@ -33,11 +33,11 @@
33
33
  }
34
34
  .ldt-code__header {
35
35
  display: flex;
36
- gap: 0.75rem;
36
+ gap: var(--loidolt-space-3);
37
37
  align-items: center;
38
38
  justify-content: space-between;
39
39
  min-height: 2rem;
40
- padding: 0 0 0 0.75rem;
40
+ padding: 0 0 0 var(--loidolt-space-3);
41
41
  border: var(--loidolt-border-width) solid var(--loidolt-border);
42
42
  border-bottom: 0;
43
43
  color: var(--loidolt-text-muted);
@@ -53,14 +53,15 @@
53
53
  flex: none;
54
54
  margin-inline-start: auto;
55
55
  min-height: 2rem;
56
- padding: 0 0.75rem;
56
+ padding: 0 var(--loidolt-space-3);
57
57
  border: 0;
58
58
  border-inline-start: var(--loidolt-border-width) solid var(--loidolt-border);
59
59
  color: var(--loidolt-text);
60
60
  background: none;
61
61
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
62
- letter-spacing: var(--loidolt-font-tracking-utility);
63
- text-transform: uppercase;
62
+ font-weight: var(--loidolt-label-weight);
63
+ letter-spacing: var(--loidolt-label-tracking);
64
+ text-transform: var(--loidolt-label-transform);
64
65
  cursor: pointer;
65
66
  }
66
67
  .ldt-code__copy:hover {
@@ -68,7 +69,7 @@
68
69
  }
69
70
  .ldt-code__pre {
70
71
  margin: 0;
71
- padding: 0.9em 1.1em;
72
+ padding: 0.9em 1.1em; /* @literal em-based code rhythm */
72
73
  overflow-x: auto;
73
74
  border: var(--loidolt-border-width) solid var(--loidolt-border);
74
75
  color: var(--ldt-syntax-foreground);
@@ -97,12 +98,12 @@
97
98
 
98
99
  /* --- Footnotes ------------------------------------------------------------------------------- */
99
100
  .ldt-footnote-ref a {
100
- padding-inline: 0.1em;
101
+ padding-inline: 0.1em; /* @literal optical nudge around the marker */
101
102
  text-decoration: none;
102
103
  }
103
104
  .ldt-footnotes {
104
105
  margin-top: 2em;
105
- padding-top: 1em;
106
+ padding-top: 1em; /* @literal em-based prose rhythm */
106
107
  border-top: var(--loidolt-border-width) solid var(--loidolt-border);
107
108
  color: var(--loidolt-text-muted);
108
109
  font-size: 0.9em;
@@ -114,11 +115,12 @@
114
115
  /* --- Diagrams -------------------------------------------------------------------------------- */
115
116
  .ldt-mermaid {
116
117
  display: grid;
117
- gap: 0.5rem;
118
+ gap: var(--loidolt-space-2);
118
119
  margin: 0 0 1.1em;
119
- padding: 1rem;
120
+ padding: var(--loidolt-pad-surface);
120
121
  overflow-x: auto;
121
122
  border: var(--loidolt-border-width) solid var(--loidolt-border);
123
+ border-radius: var(--loidolt-radius-surface);
122
124
  background: var(--loidolt-background);
123
125
  }
124
126
  .ldt-mermaid__diagram[hidden] {
@@ -137,8 +139,9 @@
137
139
  .ldt-mermaid__source summary {
138
140
  color: var(--loidolt-text-muted);
139
141
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
140
- letter-spacing: var(--loidolt-font-tracking-utility);
141
- text-transform: uppercase;
142
+ font-weight: var(--loidolt-label-weight);
143
+ letter-spacing: var(--loidolt-label-tracking);
144
+ text-transform: var(--loidolt-label-transform);
142
145
  cursor: pointer;
143
146
  }
144
147
  .ldt-mermaid__source pre,
@@ -157,8 +160,8 @@ pre.ldt-mermaid {
157
160
  margin: 0 0 0.5rem;
158
161
  color: var(--loidolt-text-muted);
159
162
  font-size: var(--loidolt-font-size-xs);
160
- letter-spacing: var(--loidolt-font-tracking-utility);
161
- text-transform: uppercase;
163
+ letter-spacing: var(--loidolt-label-tracking);
164
+ text-transform: var(--loidolt-label-transform);
162
165
  }
163
166
  .ldt-toc__list {
164
167
  margin: 0;
@@ -172,8 +175,8 @@ pre.ldt-mermaid {
172
175
  display: flex;
173
176
  align-items: center;
174
177
  min-block-size: 1.5rem;
175
- padding: 0.2rem 0 0.2rem 0.65rem;
176
- border-inline-start: 2px solid var(--loidolt-border-soft);
178
+ padding: 0.2rem 0 0.2rem 0.65rem; /* @literal rail inset */
179
+ border-inline-start: var(--loidolt-stroke-indicator) solid var(--loidolt-border-soft);
177
180
  color: var(--loidolt-text-muted);
178
181
  text-decoration: none;
179
182
  }
@@ -206,7 +209,7 @@ pre.ldt-mermaid {
206
209
  /* --- The page -------------------------------------------------------------------------------- */
207
210
  .ldt-markdown-page {
208
211
  display: grid;
209
- gap: 1.5rem;
212
+ gap: var(--loidolt-space-6);
210
213
  min-width: 0;
211
214
  }
212
215
  .ldt-markdown-page__main {
@@ -215,7 +218,7 @@ pre.ldt-mermaid {
215
218
  @media (min-width: 1024px) {
216
219
  .ldt-markdown-page--toc {
217
220
  grid-template-columns: minmax(0, 1fr) 14rem;
218
- gap: 2.5rem;
221
+ gap: var(--loidolt-space-10);
219
222
  align-items: start;
220
223
  }
221
224
  .ldt-markdown-page--toc .ldt-markdown-page__toc {
@@ -230,18 +233,19 @@ pre.ldt-mermaid {
230
233
  .ldt-markdown-page__pager {
231
234
  display: flex;
232
235
  flex-wrap: wrap;
233
- gap: 0.75rem;
236
+ gap: var(--loidolt-space-3);
234
237
  justify-content: space-between;
235
238
  margin-top: 2.5rem;
236
- padding-top: 1.25rem;
239
+ padding-top: var(--loidolt-space-5);
237
240
  border-top: var(--loidolt-border-width) solid var(--loidolt-border);
238
241
  }
239
242
  .ldt-markdown-page__pager a {
240
243
  display: grid;
241
- gap: 0.15rem;
244
+ gap: 0.15rem; /* @literal label-to-title spacing */
242
245
  min-width: min(14rem, 100%);
243
- padding: 0.65rem 0.9rem;
246
+ padding: 0.65rem 0.9rem; /* @literal pager card metrics */
244
247
  border: var(--loidolt-border-width) solid var(--loidolt-border);
248
+ border-radius: var(--loidolt-radius-surface);
245
249
  color: var(--loidolt-text);
246
250
  text-decoration: none;
247
251
  }
@@ -255,14 +259,15 @@ pre.ldt-mermaid {
255
259
  .ldt-markdown-page__direction {
256
260
  color: var(--loidolt-text-muted);
257
261
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
258
- letter-spacing: var(--loidolt-font-tracking-utility);
259
- text-transform: uppercase;
262
+ font-weight: var(--loidolt-label-weight);
263
+ letter-spacing: var(--loidolt-label-tracking);
264
+ text-transform: var(--loidolt-label-transform);
260
265
  }
261
266
 
262
267
  /* --- Docs index ------------------------------------------------------------------------------ */
263
268
  .ldt-docs-hub {
264
269
  display: grid;
265
- gap: 2.25rem;
270
+ gap: 2.25rem; /* @literal hub section rhythm */
266
271
  }
267
272
  .ldt-docs-hub__title {
268
273
  margin: 0;
@@ -274,7 +279,7 @@ pre.ldt-mermaid {
274
279
  .ldt-docs-hub__grid {
275
280
  display: grid;
276
281
  grid-template-columns: repeat(auto-fill, minmax(min(16rem, 100%), 1fr));
277
- gap: 1rem;
282
+ gap: var(--loidolt-space-4);
278
283
  margin: 1rem 0 0;
279
284
  padding: 0;
280
285
  list-style: none;
@@ -293,6 +298,7 @@ pre.ldt-mermaid {
293
298
  margin: 0 0 0.35rem;
294
299
  color: var(--loidolt-text-accent);
295
300
  font: var(--loidolt-font-size-xs) var(--loidolt-font-utility);
296
- letter-spacing: var(--loidolt-font-tracking-wide);
297
- text-transform: uppercase;
301
+ font-weight: var(--loidolt-label-weight);
302
+ letter-spacing: var(--loidolt-label-tracking-wide);
303
+ text-transform: var(--loidolt-label-transform);
298
304
  }
@@ -1,7 +1,8 @@
1
1
  .ldt-alert {
2
- padding: 0.8rem 1rem;
2
+ padding: var(--loidolt-pad-callout);
3
3
  border: var(--loidolt-border-width) solid var(--loidolt-border);
4
- border-left: 3px solid var(--loidolt-info);
4
+ border-left: var(--loidolt-stroke-accent) solid var(--loidolt-info);
5
+ border-radius: var(--loidolt-radius-surface);
5
6
  color: var(--loidolt-text);
6
7
  background: var(--loidolt-surface);
7
8
  }
@@ -20,8 +21,9 @@
20
21
  .ldt-alert__title {
21
22
  margin: 0 0 0.2rem;
22
23
  font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
23
- letter-spacing: 0.06em;
24
- text-transform: uppercase;
24
+ font-weight: var(--loidolt-label-weight);
25
+ letter-spacing: calc(var(--loidolt-label-tracking) * 0.6);
26
+ text-transform: var(--loidolt-label-transform);
25
27
  }
26
28
  .ldt-alert__description {
27
29
  margin: 0;
@@ -145,15 +147,16 @@
145
147
  bottom: 1rem;
146
148
  display: grid;
147
149
  width: min(24rem, calc(100vw - 2rem));
148
- gap: 0.5rem;
150
+ gap: var(--loidolt-space-2);
149
151
  }
150
152
  .ldt-toast {
151
153
  display: grid;
152
154
  grid-template-columns: minmax(0, 1fr) auto;
153
- gap: 0.4rem 1rem;
154
- padding: 0.8rem 1rem;
155
+ gap: 0.4rem 1rem; /* @literal title-to-description rhythm */
156
+ padding: var(--loidolt-pad-callout);
155
157
  border: var(--loidolt-border-width) solid var(--loidolt-border-strong);
156
- border-left: 3px solid var(--loidolt-border-strong);
158
+ border-left: var(--loidolt-stroke-accent) solid var(--loidolt-border-strong);
159
+ border-radius: var(--loidolt-radius-overlay);
157
160
  color: var(--loidolt-text);
158
161
  background: var(--loidolt-surface);
159
162
  box-shadow: var(--loidolt-shadow-popover);
@@ -172,8 +175,9 @@
172
175
  }
173
176
  .ldt-toast__title {
174
177
  font: var(--loidolt-font-size-sm) var(--loidolt-font-utility);
175
- letter-spacing: 0.06em;
176
- text-transform: uppercase;
178
+ font-weight: var(--loidolt-label-weight);
179
+ letter-spacing: calc(var(--loidolt-label-tracking) * 0.6);
180
+ text-transform: var(--loidolt-label-transform);
177
181
  }
178
182
  .ldt-toast__description {
179
183
  grid-column: 1;
@@ -188,7 +192,7 @@
188
192
  grid-column: 1;
189
193
  display: flex;
190
194
  flex-wrap: wrap;
191
- gap: 0.4rem;
195
+ gap: 0.4rem; /* @literal button cluster */
192
196
  margin-top: 0.2rem;
193
197
  }
194
198
  /* Logical insets, so `start`/`end` follow the writing direction. */
@@ -250,21 +254,21 @@
250
254
  justify-content: center;
251
255
  min-width: 1.25rem;
252
256
  height: 1.25rem;
253
- padding: 0 0.25rem;
257
+ padding: 0 var(--loidolt-space-1);
254
258
  border-radius: var(--loidolt-border-radius-pill);
255
259
  color: var(--loidolt-on-accent);
256
260
  background: var(--loidolt-accent);
257
261
  font-size: var(--loidolt-font-size-xs);
258
- font-weight: 700;
262
+ font-weight: 700; /* @literal a numeral in a 1.25rem chip needs the heaviest weight */
259
263
  white-space: nowrap;
260
264
  flex: none;
261
265
  }
262
266
  .ldt-marker--pin {
263
267
  min-width: 1.5rem;
264
268
  height: 1.5rem;
265
- border-radius: 50% 50% 50% 0;
269
+ border-radius: 50% 50% 50% 0; /* @literal the pin silhouette */
266
270
  box-shadow: var(--loidolt-shadow-popover);
267
271
  }
268
272
  .ldt-marker--active {
269
- outline: 2px solid var(--loidolt-surface);
273
+ outline: 2px solid var(--loidolt-surface); /* @literal halo that lifts the pin off a canvas */
270
274
  }