@collectivetrait/lineaui 0.0.0-stage → 1.0.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.
Files changed (130) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +21 -0
  3. package/README.md +113 -2
  4. package/config.json +3 -0
  5. package/dist/blocks.css +5042 -0
  6. package/dist/blocks.css.map +1 -0
  7. package/dist/bundle.js +873 -0
  8. package/dist/core.css +1641 -0
  9. package/dist/core.css.map +1 -0
  10. package/dist/icons-manifest.json +1 -0
  11. package/dist/icons.css +158 -0
  12. package/dist/styles.css +10546 -0
  13. package/dist/styles.css.map +1 -0
  14. package/dist/theme-init.js +8 -0
  15. package/dist/utilities.css +3865 -0
  16. package/dist/utilities.css.map +1 -0
  17. package/humans.txt +8 -0
  18. package/js/config.js +3 -0
  19. package/js/index.js +45 -0
  20. package/js/modules/copy.js +64 -0
  21. package/js/modules/dialog.js +55 -0
  22. package/js/modules/dismiss.js +43 -0
  23. package/js/modules/dropdown.js +108 -0
  24. package/js/modules/gallery.js +84 -0
  25. package/js/modules/highlight.js +89 -0
  26. package/js/modules/navigation.js +104 -0
  27. package/js/modules/quantity.js +63 -0
  28. package/js/modules/rhythm.js +21 -0
  29. package/js/modules/table.js +109 -0
  30. package/js/modules/tabs.js +112 -0
  31. package/js/modules/toast.js +97 -0
  32. package/js/modules/tooltip.js +106 -0
  33. package/js/theme-init.js +8 -0
  34. package/package.json +71 -4
  35. package/scss/_blocks-only.scss +4 -0
  36. package/scss/_core.scss +7 -0
  37. package/scss/_index.scss +12 -0
  38. package/scss/_layers.scss +2 -0
  39. package/scss/_utilities-only.scss +4 -0
  40. package/scss/base/_code.scss +50 -0
  41. package/scss/base/_forms.scss +110 -0
  42. package/scss/base/_index.scss +7 -0
  43. package/scss/base/_interactive.scss +25 -0
  44. package/scss/base/_media.scss +28 -0
  45. package/scss/base/_reset.scss +53 -0
  46. package/scss/base/_tables.scss +49 -0
  47. package/scss/base/_typography.scss +232 -0
  48. package/scss/blocks/_accordion.scss +88 -0
  49. package/scss/blocks/_alert.scss +101 -0
  50. package/scss/blocks/_avatar.scss +104 -0
  51. package/scss/blocks/_badge.scss +72 -0
  52. package/scss/blocks/_breadcrumb.scss +65 -0
  53. package/scss/blocks/_button-group.scss +73 -0
  54. package/scss/blocks/_button.scss +212 -0
  55. package/scss/blocks/_card.scss +146 -0
  56. package/scss/blocks/_choice.scss +163 -0
  57. package/scss/blocks/_code.scss +157 -0
  58. package/scss/blocks/_data-list.scss +92 -0
  59. package/scss/blocks/_divider.scss +54 -0
  60. package/scss/blocks/_drawer.scss +160 -0
  61. package/scss/blocks/_dropdown.scss +167 -0
  62. package/scss/blocks/_empty-state.scss +61 -0
  63. package/scss/blocks/_field.scss +146 -0
  64. package/scss/blocks/_form.scss +87 -0
  65. package/scss/blocks/_gallery.scss +120 -0
  66. package/scss/blocks/_index.scss +49 -0
  67. package/scss/blocks/_input-group.scss +95 -0
  68. package/scss/blocks/_line-item.scss +105 -0
  69. package/scss/blocks/_list.scss +117 -0
  70. package/scss/blocks/_media.scss +105 -0
  71. package/scss/blocks/_menu.scss +191 -0
  72. package/scss/blocks/_meta.scss +59 -0
  73. package/scss/blocks/_modal.scss +156 -0
  74. package/scss/blocks/_navbar.scss +227 -0
  75. package/scss/blocks/_order-summary.scss +92 -0
  76. package/scss/blocks/_page-header.scss +88 -0
  77. package/scss/blocks/_pagination.scss +110 -0
  78. package/scss/blocks/_price.scss +88 -0
  79. package/scss/blocks/_product-card.scss +138 -0
  80. package/scss/blocks/_progress.scss +68 -0
  81. package/scss/blocks/_prose.scss +165 -0
  82. package/scss/blocks/_quantity.scss +73 -0
  83. package/scss/blocks/_quote.scss +71 -0
  84. package/scss/blocks/_rating.scss +50 -0
  85. package/scss/blocks/_site-footer.scss +135 -0
  86. package/scss/blocks/_skeleton.scss +63 -0
  87. package/scss/blocks/_spinner.scss +44 -0
  88. package/scss/blocks/_stat.scss +111 -0
  89. package/scss/blocks/_steps.scss +147 -0
  90. package/scss/blocks/_swatch.scss +117 -0
  91. package/scss/blocks/_table.scss +242 -0
  92. package/scss/blocks/_tabs.scss +168 -0
  93. package/scss/blocks/_tag.scss +72 -0
  94. package/scss/blocks/_timeline.scss +84 -0
  95. package/scss/blocks/_toast.scss +146 -0
  96. package/scss/blocks/_toolbar.scss +67 -0
  97. package/scss/blocks/_tooltip.scss +63 -0
  98. package/scss/helpers/_index.scss +2 -0
  99. package/scss/helpers/_rhythm.scss +64 -0
  100. package/scss/helpers/_typography.scss +4 -0
  101. package/scss/layout/_cluster.scss +43 -0
  102. package/scss/layout/_container.scss +26 -0
  103. package/scss/layout/_grid.scss +90 -0
  104. package/scss/layout/_index.scss +5 -0
  105. package/scss/layout/_section.scss +78 -0
  106. package/scss/layout/_shell.scss +87 -0
  107. package/scss/settings/_blocks.scss +3 -0
  108. package/scss/settings/_breakpoints.scss +7 -0
  109. package/scss/settings/_fonts.scss +5 -0
  110. package/scss/settings/_index.scss +7 -0
  111. package/scss/settings/_layout.scss +5 -0
  112. package/scss/settings/_prefix.scss +1 -0
  113. package/scss/settings/_rhythm.scss +6 -0
  114. package/scss/settings/_utilities.scss +2 -0
  115. package/scss/tokens/_borders.scss +16 -0
  116. package/scss/tokens/_elevation.scss +37 -0
  117. package/scss/tokens/_index.scss +8 -0
  118. package/scss/tokens/_layout.scss +17 -0
  119. package/scss/tokens/_motion.scss +17 -0
  120. package/scss/tokens/_palette.scss +50 -0
  121. package/scss/tokens/_roles.scss +90 -0
  122. package/scss/tokens/_space.scss +9 -0
  123. package/scss/tokens/_type.scss +57 -0
  124. package/scss/tools/_bem.scss +22 -0
  125. package/scss/tools/_index.scss +4 -0
  126. package/scss/tools/_rhythm.scss +26 -0
  127. package/scss/tools/_role-engine.scss +16 -0
  128. package/scss/tools/_utility-generator.scss +74 -0
  129. package/scss/utilities/_index.scss +8 -0
  130. package/scss/utilities/_map.scss +321 -0
@@ -0,0 +1,5042 @@
1
+ @charset "UTF-8";
2
+ @layer external, reset, tokens, base, layout, blocks, helpers, utilities;
3
+ @layer blocks {
4
+ .ln-avatar {
5
+ --_size: 40px;
6
+ display: inline-flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ width: var(--_size);
10
+ height: var(--_size);
11
+ border-radius: var(--r-circle);
12
+ background-color: var(--primary-subtle);
13
+ color: var(--primary-text);
14
+ font: 600 calc(var(--_size) * 0.4)/1 var(--f-ui);
15
+ flex-shrink: 0;
16
+ position: relative;
17
+ }
18
+ .ln-avatar__img {
19
+ width: 100%;
20
+ height: 100%;
21
+ object-fit: cover;
22
+ border-radius: inherit;
23
+ overflow: hidden;
24
+ }
25
+ .ln-avatar__initials {
26
+ text-transform: uppercase;
27
+ letter-spacing: 0.02em;
28
+ }
29
+ .ln-avatar__status {
30
+ position: absolute;
31
+ bottom: 0;
32
+ right: 0;
33
+ width: 25%;
34
+ height: 25%;
35
+ min-width: 8px;
36
+ min-height: 8px;
37
+ border-radius: var(--r-circle);
38
+ background-color: var(--_status-color, var(--success));
39
+ box-shadow: 0 0 0 2px var(--surface);
40
+ }
41
+ .ln-avatar__status--success {
42
+ --_status-color: var(--success);
43
+ }
44
+ .ln-avatar__status--warning {
45
+ --_status-color: var(--warning);
46
+ }
47
+ .ln-avatar__status--danger {
48
+ --_status-color: var(--danger);
49
+ }
50
+ .ln-avatar__status--neutral {
51
+ --_status-color: var(--c-subtle);
52
+ }
53
+ .ln-avatar--xs {
54
+ --_size: 24px;
55
+ }
56
+ .ln-avatar--sm {
57
+ --_size: 32px;
58
+ }
59
+ .ln-avatar--md {
60
+ --_size: 40px;
61
+ }
62
+ .ln-avatar--lg {
63
+ --_size: 48px;
64
+ }
65
+ .ln-avatar--xl {
66
+ --_size: 64px;
67
+ }
68
+ .ln-avatar--square {
69
+ border-radius: var(--r-md);
70
+ }
71
+ .ln-avatar-group {
72
+ display: flex;
73
+ align-items: center;
74
+ }
75
+ .ln-avatar-group > .ln-avatar {
76
+ box-shadow: 0 0 0 2px var(--surface);
77
+ margin-left: -8px;
78
+ }
79
+ .ln-avatar-group > .ln-avatar:first-child {
80
+ margin-left: 0;
81
+ }
82
+ .ln-avatar-group__more {
83
+ --_size: 40px;
84
+ display: inline-flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ width: var(--_size);
88
+ height: var(--_size);
89
+ border-radius: var(--r-circle);
90
+ background-color: var(--surface-raised);
91
+ color: var(--c-muted);
92
+ font: 500 var(--t-body-sm-s)/1 var(--f-mono);
93
+ box-shadow: 0 0 0 2px var(--surface);
94
+ margin-left: -8px;
95
+ }
96
+ .ln-avatar-group--spread > .ln-avatar {
97
+ margin-left: 0;
98
+ }
99
+ .ln-avatar-group--spread .ln-avatar-group__more {
100
+ margin-left: 0;
101
+ }
102
+ }
103
+ @layer blocks {
104
+ .ln-meta {
105
+ display: flex;
106
+ flex-wrap: wrap;
107
+ align-items: center;
108
+ gap: var(--s1);
109
+ font: 0.75rem/1rem var(--f-mono);
110
+ letter-spacing: 0.02em;
111
+ color: var(--c-muted);
112
+ }
113
+ .ln-meta__item {
114
+ display: inline-flex;
115
+ align-items: center;
116
+ gap: var(--s-h);
117
+ }
118
+ .ln-meta__icon {
119
+ width: 1em;
120
+ height: 1em;
121
+ flex-shrink: 0;
122
+ }
123
+ .ln-meta__link {
124
+ color: inherit;
125
+ text-decoration: none;
126
+ }
127
+ .ln-meta__link:hover {
128
+ color: var(--link);
129
+ text-decoration: underline;
130
+ }
131
+ .ln-meta__separator {
132
+ color: var(--c-subtle);
133
+ user-select: none;
134
+ }
135
+ .ln-meta__separator::before {
136
+ content: "·";
137
+ }
138
+ .ln-meta--sm {
139
+ font-size: var(--t-meta-s);
140
+ line-height: var(--t-meta-lh);
141
+ }
142
+ .ln-meta--stacked {
143
+ flex-direction: column;
144
+ align-items: flex-start;
145
+ gap: 0;
146
+ }
147
+ }
148
+ @layer blocks {
149
+ .ln-media {
150
+ position: relative;
151
+ margin-bottom: 24px;
152
+ }
153
+ .ln-media:last-child {
154
+ margin-bottom: 0;
155
+ }
156
+ .ln-media__frame {
157
+ border-radius: var(--radius);
158
+ overflow: hidden;
159
+ background: var(--surface-sunken);
160
+ outline: var(--bd1) solid var(--border);
161
+ outline-offset: calc(-1 * var(--bd1));
162
+ margin-bottom: 0.5rem;
163
+ }
164
+ .ln-media__img {
165
+ display: block;
166
+ width: 100%;
167
+ height: 100%;
168
+ object-fit: var(--_fit, cover);
169
+ }
170
+ .ln-media__caption {
171
+ font: 400 0.875rem/1.5rem var(--f-ui);
172
+ color: var(--c-muted);
173
+ display: flex;
174
+ gap: 0.5rem;
175
+ }
176
+ .ln-media__caption b {
177
+ font: 500 0.75rem/1.5rem var(--f-mono);
178
+ letter-spacing: 0.04em;
179
+ color: var(--c-subtle);
180
+ text-transform: uppercase;
181
+ }
182
+ .ln-media__credit {
183
+ font: var(--t-meta-s)/var(--t-meta-lh) var(--f-mono);
184
+ color: var(--c-subtle);
185
+ }
186
+ .ln-media--ratio-1x1 .ln-media__frame {
187
+ aspect-ratio: 1/1;
188
+ }
189
+ .ln-media--ratio-4x3 .ln-media__frame {
190
+ aspect-ratio: 4/3;
191
+ }
192
+ .ln-media--ratio-3x2 .ln-media__frame {
193
+ aspect-ratio: 3/2;
194
+ }
195
+ .ln-media--ratio-16x9 .ln-media__frame {
196
+ aspect-ratio: 16/9;
197
+ }
198
+ .ln-media--ratio-21x9 .ln-media__frame {
199
+ aspect-ratio: 21/9;
200
+ }
201
+ .ln-media--cover {
202
+ --_fit: cover;
203
+ }
204
+ .ln-media--contain {
205
+ --_fit: contain;
206
+ }
207
+ .ln-media--wide {
208
+ max-width: var(--container-wide);
209
+ margin-inline: auto;
210
+ }
211
+ .ln-media--float-start {
212
+ float: left;
213
+ margin-right: var(--s3);
214
+ margin-bottom: var(--s1);
215
+ max-width: 50%;
216
+ }
217
+ .ln-media--float-end {
218
+ float: right;
219
+ margin-left: var(--s3);
220
+ margin-bottom: var(--s1);
221
+ max-width: 50%;
222
+ }
223
+ .ln-media--rounded .ln-media__frame {
224
+ border-radius: var(--r-lg);
225
+ }
226
+ .ln-media--bordered .ln-media__frame {
227
+ outline: var(--bd1) solid var(--border);
228
+ outline-offset: calc(-1 * var(--bd1));
229
+ }
230
+ .ln-media--bleed {
231
+ max-width: none;
232
+ margin-inline: calc(-1 * var(--gutter, 0px));
233
+ }
234
+ .ln-media--bleed .ln-media__frame {
235
+ border-radius: 0;
236
+ }
237
+ }
238
+ @layer blocks {
239
+ .ln-prose {
240
+ font: var(--t-body-prose-s)/var(--t-body-prose-lh) var(--f-prose);
241
+ max-width: var(--measure);
242
+ }
243
+ .ln-prose :is(h1, h2, h3, h4, h5, h6):first-child {
244
+ margin-top: 0;
245
+ }
246
+ .ln-prose > * {
247
+ margin-block: 0;
248
+ }
249
+ .ln-prose > *:not(:last-child) {
250
+ margin-block-end: 2rem;
251
+ }
252
+ .ln-prose > h2 {
253
+ font: 400 2rem/3rem var(--f-prose);
254
+ text-wrap: balance;
255
+ }
256
+ .ln-prose > *:has(+ h2) {
257
+ margin-block-end: 3rem;
258
+ }
259
+ .ln-prose > h2:not(:last-child) {
260
+ margin-block-end: 1.5rem;
261
+ }
262
+ .ln-prose > ul {
263
+ padding-left: 1.5rem;
264
+ }
265
+ .ln-prose li::marker {
266
+ color: var(--primary-text);
267
+ }
268
+ .ln-prose .lead {
269
+ font-size: 1.125rem;
270
+ line-height: 1.5rem;
271
+ color: var(--c-muted);
272
+ }
273
+ .ln-prose em {
274
+ font-style: italic;
275
+ }
276
+ .ln-prose code {
277
+ font: 400 0.8em/1 var(--f-mono);
278
+ padding: 0.125rem 0.25rem;
279
+ border-radius: var(--radius);
280
+ background: var(--surface-sunken);
281
+ }
282
+ .ln-prose a {
283
+ text-decoration: underline;
284
+ }
285
+ .ln-prose ol {
286
+ padding-left: 1.5rem;
287
+ }
288
+ .ln-prose li + li {
289
+ margin-top: var(--s-h);
290
+ }
291
+ .ln-prose img {
292
+ max-width: 100%;
293
+ height: auto;
294
+ border-radius: var(--r-md);
295
+ }
296
+ .ln-prose hr {
297
+ margin: 24px 0;
298
+ }
299
+ .ln-prose > *:has(+ .ln-quote--pull) {
300
+ margin-block-end: 3rem;
301
+ }
302
+ .ln-prose .ln-quote--pull:not(:last-child) {
303
+ margin-block-end: 3rem;
304
+ }
305
+ .ln-prose .alignleft {
306
+ float: left;
307
+ margin-right: var(--s3);
308
+ margin-bottom: var(--s1);
309
+ max-width: 50%;
310
+ }
311
+ .ln-prose .alignright {
312
+ float: right;
313
+ margin-left: var(--s3);
314
+ margin-bottom: var(--s1);
315
+ max-width: 50%;
316
+ }
317
+ .ln-prose .aligncenter {
318
+ display: block;
319
+ margin-inline: auto;
320
+ }
321
+ .ln-prose .alignwide {
322
+ max-width: var(--container-wide);
323
+ margin-inline: auto;
324
+ }
325
+ .ln-prose .alignfull {
326
+ max-width: none;
327
+ margin-inline: calc(-1 * var(--gutter));
328
+ }
329
+ .ln-prose::after {
330
+ content: "";
331
+ display: table;
332
+ clear: both;
333
+ }
334
+ .ln-prose > :last-child {
335
+ margin-bottom: 0;
336
+ }
337
+ .ln-prose--sm {
338
+ font-size: var(--t-body-sm-s);
339
+ line-height: var(--t-body-sm-lh);
340
+ }
341
+ .ln-prose--lg {
342
+ font-size: var(--t-body-lg-s);
343
+ line-height: var(--t-body-lg-lh);
344
+ }
345
+ .ln-prose--ui {
346
+ font-family: var(--f-ui);
347
+ }
348
+ .ln-prose--wide-media img,
349
+ .ln-prose--wide-media figure,
350
+ .ln-prose--wide-media .ln-media {
351
+ max-width: var(--container);
352
+ margin-inline: auto;
353
+ }
354
+ }
355
+ @layer blocks {
356
+ .ln-quote {
357
+ --_edge: var(--_border-color, var(--primary));
358
+ font-family: var(--f-prose);
359
+ margin-bottom: 24px;
360
+ }
361
+ .ln-quote:last-child {
362
+ margin-bottom: 0;
363
+ }
364
+ .ln-quote__text {
365
+ font-size: var(--t-body-lg-s);
366
+ line-height: var(--t-body-lg-lh);
367
+ font-style: italic;
368
+ }
369
+ .ln-quote__footer {
370
+ margin-top: var(--s1);
371
+ display: flex;
372
+ align-items: center;
373
+ gap: var(--s2);
374
+ }
375
+ .ln-quote__cite {
376
+ font-style: normal;
377
+ font-size: var(--t-body-sm-s);
378
+ line-height: var(--t-body-sm-lh);
379
+ color: var(--c-muted);
380
+ }
381
+ .ln-quote__avatar {
382
+ width: 3rem;
383
+ height: 3rem;
384
+ border-radius: 50%;
385
+ object-fit: cover;
386
+ flex-shrink: 0;
387
+ }
388
+ .ln-quote--pull {
389
+ font: italic 400 1.25rem/1.5rem var(--f-prose);
390
+ color: var(--text);
391
+ text-wrap: balance;
392
+ padding: 0 0 0 2rem;
393
+ border-left: 3px solid var(--primary-text);
394
+ }
395
+ .ln-quote--card {
396
+ background: var(--surface);
397
+ padding: calc(var(--s3) - var(--bd1));
398
+ border-radius: var(--r-lg);
399
+ border: var(--bd1) solid var(--border);
400
+ }
401
+ .ln-quote--bordered {
402
+ border: var(--bd1) solid var(--border);
403
+ padding: calc(var(--s3) - var(--bd1));
404
+ border-radius: var(--r-md);
405
+ }
406
+ .ln-quote--primary {
407
+ --_fill: var(--primary);
408
+ --_on: var(--on-primary);
409
+ --_subtle: var(--primary-subtle);
410
+ --_text: var(--primary-text);
411
+ --_border-color: var(--primary-border);
412
+ --_hover: var(--primary-hover);
413
+ }
414
+ .ln-quote--secondary {
415
+ --_fill: var(--secondary);
416
+ --_on: var(--on-secondary);
417
+ --_subtle: var(--secondary-subtle);
418
+ --_text: var(--secondary-text);
419
+ --_border-color: var(--secondary-border);
420
+ --_hover: var(--secondary-hover);
421
+ }
422
+ .ln-quote--success {
423
+ --_fill: var(--success);
424
+ --_on: var(--on-success);
425
+ --_subtle: var(--success-subtle);
426
+ --_text: var(--success-text);
427
+ --_border-color: var(--success-border);
428
+ --_hover: var(--success-hover);
429
+ }
430
+ .ln-quote--warning {
431
+ --_fill: var(--warning);
432
+ --_on: var(--on-warning);
433
+ --_subtle: var(--warning-subtle);
434
+ --_text: var(--warning-text);
435
+ --_border-color: var(--warning-border);
436
+ --_hover: var(--warning-hover);
437
+ }
438
+ .ln-quote--danger {
439
+ --_fill: var(--danger);
440
+ --_on: var(--on-danger);
441
+ --_subtle: var(--danger-subtle);
442
+ --_text: var(--danger-text);
443
+ --_border-color: var(--danger-border);
444
+ --_hover: var(--danger-hover);
445
+ }
446
+ .ln-quote--info {
447
+ --_fill: var(--info);
448
+ --_on: var(--on-info);
449
+ --_subtle: var(--info-subtle);
450
+ --_text: var(--info-text);
451
+ --_border-color: var(--info-border);
452
+ --_hover: var(--info-hover);
453
+ }
454
+ }
455
+ @layer blocks {
456
+ .ln-code {
457
+ position: relative;
458
+ background: var(--surface-sunken);
459
+ border-radius: var(--radius);
460
+ overflow: hidden;
461
+ outline: var(--bd1) solid var(--border);
462
+ outline-offset: calc(-1 * var(--bd1));
463
+ }
464
+ .ln-code__header {
465
+ display: flex;
466
+ align-items: center;
467
+ gap: 0.5rem;
468
+ padding: 0.5rem 1rem calc(0.5rem - var(--bd1));
469
+ background: color-mix(in srgb, var(--surface-sunken) 80%, var(--surface));
470
+ border-bottom: var(--bd1) solid var(--border);
471
+ font: 500 0.75rem/1rem var(--f-mono);
472
+ color: var(--c-muted);
473
+ letter-spacing: 0.02em;
474
+ }
475
+ .ln-code__header > i {
476
+ font-size: 0.875rem;
477
+ flex: none;
478
+ color: var(--c-subtle);
479
+ }
480
+ .ln-code__lang {
481
+ margin-left: auto;
482
+ font: 400 0.6875rem/1rem var(--f-mono);
483
+ color: var(--c-subtle);
484
+ text-transform: uppercase;
485
+ letter-spacing: 0.06em;
486
+ }
487
+ .ln-code__body {
488
+ margin: 0;
489
+ padding: 0;
490
+ overflow-x: auto;
491
+ font: 400 0.8125rem/1.5rem var(--f-mono);
492
+ color: var(--text);
493
+ tab-size: 2;
494
+ counter-reset: line;
495
+ }
496
+ .ln-code__body code {
497
+ display: block;
498
+ }
499
+ .ln-code__line {
500
+ display: block;
501
+ padding: 0 1rem 0 3.5rem;
502
+ position: relative;
503
+ min-height: 1.5rem;
504
+ }
505
+ .ln-code__line::before {
506
+ content: counter(line);
507
+ counter-increment: line;
508
+ position: absolute;
509
+ left: 0;
510
+ width: 2.5rem;
511
+ text-align: right;
512
+ color: var(--c-disabled);
513
+ font-variant-numeric: tabular-nums;
514
+ user-select: none;
515
+ pointer-events: none;
516
+ }
517
+ .ln-code__line--highlight {
518
+ background: color-mix(in srgb, var(--primary) 10%, transparent);
519
+ border-left: 3px solid var(--primary-text);
520
+ }
521
+ .ln-code--wrap .ln-code__body {
522
+ white-space: pre-wrap;
523
+ word-break: break-word;
524
+ }
525
+ .ln-code--flush {
526
+ border-radius: 0;
527
+ margin-bottom: 0;
528
+ }
529
+ .ln-code .hljs-keyword, .ln-code .hljs-selector-tag, .ln-code .hljs-built_in, .ln-code .hljs-type, .ln-code .hljs-meta .hljs-keyword {
530
+ color: var(--syntax-keyword);
531
+ }
532
+ .ln-code .hljs-string, .ln-code .hljs-regexp, .ln-code .hljs-addition, .ln-code .hljs-template-variable {
533
+ color: var(--syntax-string);
534
+ }
535
+ .ln-code .hljs-comment, .ln-code .hljs-doctag, .ln-code .hljs-quote {
536
+ color: var(--syntax-comment);
537
+ font-style: italic;
538
+ }
539
+ .ln-code .hljs-title, .ln-code .hljs-title\.function_, .ln-code .hljs-section {
540
+ color: var(--syntax-function);
541
+ }
542
+ .ln-code .hljs-number, .ln-code .hljs-literal, .ln-code .hljs-variable\.constant_, .ln-code .hljs-symbol, .ln-code .hljs-link {
543
+ color: var(--syntax-constant);
544
+ }
545
+ .ln-code .hljs-operator, .ln-code .hljs-deletion {
546
+ color: var(--syntax-operator);
547
+ }
548
+ .ln-code .hljs-punctuation {
549
+ color: var(--syntax-punctuation);
550
+ }
551
+ .ln-code .hljs-tag, .ln-code .hljs-name {
552
+ color: var(--syntax-tag);
553
+ }
554
+ .ln-code .hljs-attr, .ln-code .hljs-attribute, .ln-code .hljs-property {
555
+ color: var(--syntax-attribute);
556
+ }
557
+ .ln-code .hljs-variable, .ln-code .hljs-params {
558
+ color: var(--text);
559
+ }
560
+ .ln-code .hljs-meta {
561
+ color: var(--c-muted);
562
+ }
563
+ :root {
564
+ --syntax-keyword: var(--primary-text);
565
+ --syntax-string: var(--success-text);
566
+ --syntax-comment: var(--c-muted);
567
+ --syntax-function: var(--info-text);
568
+ --syntax-constant: var(--warning-text);
569
+ --syntax-operator: var(--c-muted);
570
+ --syntax-punctuation: var(--c-subtle);
571
+ --syntax-tag: var(--danger-text);
572
+ --syntax-attribute: var(--secondary-text);
573
+ }
574
+ }
575
+ @layer blocks {
576
+ .ln-accordion__item {
577
+ border-bottom: var(--bd1) solid var(--border);
578
+ }
579
+ .ln-accordion__item:first-child {
580
+ border-top: var(--bd1) solid var(--border);
581
+ }
582
+ .ln-accordion__summary {
583
+ display: flex;
584
+ align-items: center;
585
+ gap: var(--s2);
586
+ padding-top: 8px;
587
+ padding-bottom: calc(8px - var(--bd1));
588
+ min-height: calc(48px - var(--bd1));
589
+ cursor: pointer;
590
+ font-weight: 600;
591
+ }
592
+ .ln-accordion__item:first-child .ln-accordion__summary {
593
+ padding-top: calc(8px - var(--bd1));
594
+ min-height: calc(48px - var(--bd1) - var(--bd1));
595
+ }
596
+ .ln-accordion__title {
597
+ flex: 1;
598
+ }
599
+ .ln-accordion__icon {
600
+ font-size: 1em;
601
+ flex-shrink: 0;
602
+ transition: transform var(--dur-base) var(--e-standard);
603
+ }
604
+ [open] > .ln-accordion__summary .ln-accordion__icon {
605
+ transform: rotate(180deg);
606
+ }
607
+ .ln-accordion__content {
608
+ padding-bottom: var(--s3);
609
+ }
610
+ .ln-accordion--flush .ln-accordion__item {
611
+ border-bottom: 0;
612
+ }
613
+ .ln-accordion--flush .ln-accordion__item:first-child {
614
+ border-top: 0;
615
+ }
616
+ .ln-accordion--flush .ln-accordion__summary {
617
+ padding: 8px 0;
618
+ min-height: 48px;
619
+ }
620
+ .ln-accordion--flush .ln-accordion__item:first-child .ln-accordion__summary {
621
+ padding-top: 8px;
622
+ min-height: 48px;
623
+ }
624
+ .ln-accordion--sm .ln-accordion__summary {
625
+ font-size: var(--t-body-sm-s);
626
+ line-height: var(--t-body-sm-lh);
627
+ padding: var(--s-h) 0;
628
+ min-height: 24px;
629
+ }
630
+ .ln-accordion--sm .ln-accordion__content {
631
+ font-size: var(--t-body-sm-s);
632
+ line-height: var(--t-body-sm-lh);
633
+ padding-bottom: var(--s2);
634
+ }
635
+ }
636
+ @layer blocks {
637
+ .ln-list {
638
+ list-style: none;
639
+ padding: 0;
640
+ margin: 0;
641
+ }
642
+ .ln-list__item {
643
+ display: flex;
644
+ align-items: center;
645
+ gap: var(--s2);
646
+ min-height: 48px;
647
+ padding: 8px 0;
648
+ }
649
+ .ln-list__item[aria-current=true] {
650
+ background-color: var(--primary-subtle);
651
+ color: var(--primary-text);
652
+ }
653
+ .ln-list__icon {
654
+ width: 1.5rem;
655
+ height: 1.5rem;
656
+ flex-shrink: 0;
657
+ color: var(--c-muted);
658
+ }
659
+ .ln-list__media {
660
+ flex-shrink: 0;
661
+ }
662
+ .ln-list__content {
663
+ flex: 1;
664
+ min-width: 0;
665
+ display: flex;
666
+ flex-direction: column;
667
+ }
668
+ .ln-list__title {
669
+ font-weight: 600;
670
+ font-size: var(--t-body-s);
671
+ line-height: var(--t-body-lh);
672
+ }
673
+ .ln-list__description {
674
+ font-size: var(--t-body-sm-s);
675
+ line-height: var(--t-body-sm-lh);
676
+ color: var(--c-muted);
677
+ }
678
+ .ln-list__meta {
679
+ font: var(--t-meta-s)/var(--t-meta-lh) var(--f-mono);
680
+ color: var(--c-subtle);
681
+ }
682
+ .ln-list__action {
683
+ margin-left: auto;
684
+ flex-shrink: 0;
685
+ }
686
+ .ln-list--divided .ln-list__item + .ln-list__item {
687
+ border-top: var(--bd1) solid var(--border);
688
+ padding-top: calc(8px - var(--bd1));
689
+ }
690
+ .ln-list--bordered {
691
+ outline: var(--bd1) solid var(--border);
692
+ outline-offset: calc(-1 * var(--bd1));
693
+ border-radius: var(--r-md);
694
+ }
695
+ .ln-list--bordered .ln-list__item {
696
+ padding-left: var(--s3);
697
+ padding-right: var(--s3);
698
+ }
699
+ .ln-list--bordered .ln-list__item + .ln-list__item {
700
+ border-top: var(--bd1) solid var(--border);
701
+ padding-top: calc(8px - var(--bd1));
702
+ }
703
+ .ln-list--interactive .ln-list__item {
704
+ cursor: pointer;
705
+ transition: background-color var(--dur-fast) var(--e-standard);
706
+ }
707
+ .ln-list--interactive .ln-list__item:hover {
708
+ background-color: var(--surface-raised);
709
+ }
710
+ .ln-list--compact .ln-list__item {
711
+ min-height: 32px;
712
+ padding-top: var(--s-h);
713
+ padding-bottom: var(--s-h);
714
+ }
715
+ .ln-list--spacious .ln-list__item {
716
+ min-height: 64px;
717
+ padding-top: 16px;
718
+ padding-bottom: 16px;
719
+ }
720
+ }
721
+ @layer blocks {
722
+ .ln-card {
723
+ --_bg: var(--surface);
724
+ --_border-color: var(--border);
725
+ --_pad: var(--s3);
726
+ display: flex;
727
+ flex-direction: column;
728
+ padding: var(--_pad);
729
+ background-color: var(--_bg);
730
+ overflow: hidden;
731
+ position: relative;
732
+ outline: var(--bd1) solid var(--_border-color);
733
+ outline-offset: calc(-1 * var(--bd1));
734
+ }
735
+ .ln-card__media {
736
+ margin: calc(-1 * var(--_pad));
737
+ margin-bottom: 0;
738
+ }
739
+ .ln-card__media-object {
740
+ align-content: center;
741
+ }
742
+ .ln-card__header {
743
+ margin-bottom: 1.5rem;
744
+ }
745
+ .ln-card__eyebrow {
746
+ font: var(--t-meta-s)/var(--t-meta-lh) var(--f-mono);
747
+ text-transform: uppercase;
748
+ letter-spacing: 0.08em;
749
+ font-weight: 500;
750
+ color: var(--c-muted);
751
+ margin-bottom: var(--s-h);
752
+ }
753
+ .ln-card__title {
754
+ font: 600 var(--t-h4-s)/var(--t-h4-lh) var(--f-ui);
755
+ margin: 0;
756
+ }
757
+ .ln-card__subtitle {
758
+ font-size: var(--t-body-sm-s);
759
+ line-height: var(--t-body-sm-lh);
760
+ color: var(--c-muted);
761
+ }
762
+ .ln-card__body {
763
+ flex: 1;
764
+ margin-bottom: 1.5rem;
765
+ }
766
+ .ln-card__footer {
767
+ display: flex;
768
+ flex-direction: column;
769
+ margin-top: auto;
770
+ }
771
+ .ln-card__actions {
772
+ display: flex;
773
+ gap: var(--s1);
774
+ }
775
+ .ln-card__link {
776
+ text-decoration: none;
777
+ color: inherit;
778
+ }
779
+ .ln-card__link::after {
780
+ content: "";
781
+ position: absolute;
782
+ inset: 0;
783
+ z-index: 1;
784
+ }
785
+ .ln-card--flat {
786
+ outline: 0;
787
+ }
788
+ .ln-card--shadow-1 {
789
+ box-shadow: var(--sh1);
790
+ }
791
+ .ln-card--shadow-2 {
792
+ box-shadow: var(--sh2);
793
+ }
794
+ .ln-card--shadow-3 {
795
+ box-shadow: var(--sh3);
796
+ }
797
+ .ln-card--shadow-4 {
798
+ box-shadow: var(--sh4);
799
+ }
800
+ .ln-card--interactive {
801
+ cursor: pointer;
802
+ overflow: visible;
803
+ box-shadow: var(--sh1);
804
+ transition: box-shadow var(--dur-fast) var(--e-standard), transform var(--dur-fast) var(--e-standard);
805
+ }
806
+ .ln-card--interactive:hover {
807
+ box-shadow: var(--sh3);
808
+ transform: translateY(-2px);
809
+ }
810
+ .ln-card--horizontal {
811
+ flex-direction: row;
812
+ }
813
+ .ln-card--horizontal .ln-card__media {
814
+ width: 40%;
815
+ max-width: 200px;
816
+ flex-shrink: 0;
817
+ margin: calc(-1 * var(--_pad));
818
+ margin-right: 1.5rem;
819
+ }
820
+ .ln-card--horizontal .ln-card__media-object {
821
+ width: 100%;
822
+ height: 100%;
823
+ object-fit: cover;
824
+ }
825
+ .ln-card--pad-sm {
826
+ --_pad: var(--s2);
827
+ }
828
+ .ln-card--pad-md {
829
+ --_pad: var(--s3);
830
+ }
831
+ .ln-card--pad-lg {
832
+ --_pad: var(--s4);
833
+ }
834
+ .ln-card--primary {
835
+ --_fill: var(--primary);
836
+ --_on: var(--on-primary);
837
+ --_subtle: var(--primary-subtle);
838
+ --_text: var(--primary-text);
839
+ --_border-color: var(--primary-border);
840
+ --_hover: var(--primary-hover);
841
+ }
842
+ .ln-card--secondary {
843
+ --_fill: var(--secondary);
844
+ --_on: var(--on-secondary);
845
+ --_subtle: var(--secondary-subtle);
846
+ --_text: var(--secondary-text);
847
+ --_border-color: var(--secondary-border);
848
+ --_hover: var(--secondary-hover);
849
+ }
850
+ .ln-card--success {
851
+ --_fill: var(--success);
852
+ --_on: var(--on-success);
853
+ --_subtle: var(--success-subtle);
854
+ --_text: var(--success-text);
855
+ --_border-color: var(--success-border);
856
+ --_hover: var(--success-hover);
857
+ }
858
+ .ln-card--warning {
859
+ --_fill: var(--warning);
860
+ --_on: var(--on-warning);
861
+ --_subtle: var(--warning-subtle);
862
+ --_text: var(--warning-text);
863
+ --_border-color: var(--warning-border);
864
+ --_hover: var(--warning-hover);
865
+ }
866
+ .ln-card--danger {
867
+ --_fill: var(--danger);
868
+ --_on: var(--on-danger);
869
+ --_subtle: var(--danger-subtle);
870
+ --_text: var(--danger-text);
871
+ --_border-color: var(--danger-border);
872
+ --_hover: var(--danger-hover);
873
+ }
874
+ .ln-card--info {
875
+ --_fill: var(--info);
876
+ --_on: var(--on-info);
877
+ --_subtle: var(--info-subtle);
878
+ --_text: var(--info-text);
879
+ --_border-color: var(--info-border);
880
+ --_hover: var(--info-hover);
881
+ }
882
+ .ln-card--subtle {
883
+ --_bg: var(--_subtle, var(--surface-sunken));
884
+ }
885
+ .ln-card[aria-selected=true], .ln-card:has(:checked) {
886
+ --_border-color: var(--primary);
887
+ outline: var(--bd2) solid var(--_border-color);
888
+ outline-offset: calc(-1 * var(--bd2));
889
+ }
890
+ }
891
+ @layer blocks {
892
+ .ln-page-header {
893
+ margin-bottom: 48px;
894
+ }
895
+ .ln-page-header__breadcrumb {
896
+ margin-bottom: var(--s2);
897
+ }
898
+ .ln-page-header__eyebrow {
899
+ font: var(--t-meta-s)/var(--t-meta-lh) var(--f-mono);
900
+ text-transform: uppercase;
901
+ letter-spacing: 0.08em;
902
+ font-weight: 500;
903
+ color: var(--c-muted);
904
+ margin-bottom: var(--s1);
905
+ }
906
+ .ln-page-header__title {
907
+ font: 400 var(--t-h1-s)/var(--t-h1-lh) var(--f-prose);
908
+ letter-spacing: -0.01em;
909
+ text-wrap: balance;
910
+ margin-top: 0;
911
+ }
912
+ .ln-page-header__lead {
913
+ font: var(--t-lead-s)/var(--t-lead-lh) var(--f-prose);
914
+ color: var(--c-muted);
915
+ margin-top: var(--s2);
916
+ max-width: 44rem;
917
+ }
918
+ .ln-page-header__meta {
919
+ margin-top: var(--s2);
920
+ }
921
+ .ln-page-header__actions {
922
+ display: flex;
923
+ gap: var(--s2);
924
+ margin-top: var(--s3);
925
+ }
926
+ .ln-page-header__tabs {
927
+ margin-top: var(--s3);
928
+ border-bottom: var(--bd1) solid var(--border);
929
+ }
930
+ .ln-page-header--hero {
931
+ margin-bottom: 72px;
932
+ }
933
+ .ln-page-header--hero .ln-page-header__title {
934
+ font-size: var(--t-display-2-s);
935
+ line-height: var(--t-display-2-lh);
936
+ }
937
+ .ln-page-header--compact {
938
+ margin-bottom: 24px;
939
+ }
940
+ .ln-page-header--compact .ln-page-header__title {
941
+ font: 600 var(--t-h3-s)/var(--t-h3-lh) var(--f-ui);
942
+ }
943
+ .ln-page-header--center {
944
+ text-align: center;
945
+ }
946
+ .ln-page-header--center .ln-page-header__lead {
947
+ margin-inline: auto;
948
+ }
949
+ .ln-page-header--center .ln-page-header__actions {
950
+ justify-content: center;
951
+ }
952
+ .ln-page-header--bordered {
953
+ padding-bottom: calc(24px - var(--bd1));
954
+ border-bottom: var(--bd1) solid var(--border);
955
+ }
956
+ }
957
+ @layer blocks {
958
+ .ln-breadcrumb__list {
959
+ display: flex;
960
+ flex-wrap: wrap;
961
+ gap: 0.5rem;
962
+ list-style: none;
963
+ padding: 0;
964
+ margin: 0;
965
+ font: 400 0.875rem/1.5rem var(--f-ui);
966
+ color: var(--c-muted);
967
+ }
968
+ .ln-breadcrumb__item {
969
+ display: inline-flex;
970
+ align-items: center;
971
+ }
972
+ .ln-breadcrumb__item + .ln-breadcrumb__item::before {
973
+ content: "/";
974
+ margin-right: 0.5rem;
975
+ color: var(--c-subtle);
976
+ }
977
+ .ln-breadcrumb__link {
978
+ color: var(--c-muted);
979
+ text-decoration: none;
980
+ }
981
+ .ln-breadcrumb__link:hover {
982
+ color: var(--text);
983
+ text-decoration: underline;
984
+ }
985
+ .ln-breadcrumb__current {
986
+ color: var(--text);
987
+ }
988
+ .ln-breadcrumb--sm .ln-breadcrumb__list {
989
+ font-size: var(--t-meta-s);
990
+ line-height: var(--t-meta-lh);
991
+ }
992
+ .ln-breadcrumb--truncate .ln-breadcrumb__list {
993
+ flex-wrap: nowrap;
994
+ }
995
+ .ln-breadcrumb--truncate .ln-breadcrumb__item:not(:first-child):not(:last-child):not(:nth-last-child(2)) {
996
+ display: none;
997
+ }
998
+ }
999
+ @layer blocks {
1000
+ .ln-pagination__list {
1001
+ display: flex;
1002
+ gap: 0.25rem;
1003
+ list-style: none;
1004
+ align-items: center;
1005
+ flex-wrap: wrap;
1006
+ padding: 0;
1007
+ margin: 0;
1008
+ }
1009
+ .ln-pagination__link {
1010
+ display: inline-grid;
1011
+ place-items: center;
1012
+ min-width: 2.5rem;
1013
+ height: 2.5rem;
1014
+ padding-inline: 0.5rem;
1015
+ border-radius: var(--r-md);
1016
+ font: 500 0.875rem/1.25rem var(--f-mono);
1017
+ color: var(--c-muted);
1018
+ text-decoration: none;
1019
+ }
1020
+ .ln-pagination__link:hover {
1021
+ background: var(--surface-raised);
1022
+ color: var(--text);
1023
+ }
1024
+ .ln-pagination__link[aria-current=page] {
1025
+ background: var(--primary-subtle);
1026
+ color: var(--primary-text);
1027
+ border: var(--bd1) solid var(--primary-text);
1028
+ }
1029
+ .ln-pagination__link[aria-disabled=true] {
1030
+ color: var(--c-subtle);
1031
+ pointer-events: none;
1032
+ }
1033
+ .ln-pagination__ellipsis {
1034
+ color: var(--c-subtle);
1035
+ padding-inline: 0.5rem;
1036
+ }
1037
+ .ln-pagination__summary {
1038
+ font: 400 0.875rem/1.25rem var(--f-ui);
1039
+ color: var(--c-muted);
1040
+ padding-inline: 0.5rem;
1041
+ }
1042
+ .ln-pagination--sm .ln-pagination__link {
1043
+ min-width: 2rem;
1044
+ height: 2rem;
1045
+ }
1046
+ .ln-pagination--simple .ln-pagination__list {
1047
+ justify-content: space-between;
1048
+ }
1049
+ .ln-pagination--simple .ln-pagination__link {
1050
+ border-radius: 0;
1051
+ }
1052
+ .ln-pagination--simple .ln-pagination__link:hover {
1053
+ background: none;
1054
+ }
1055
+ .ln-pagination--compact .ln-pagination__link {
1056
+ border-radius: 0;
1057
+ }
1058
+ .ln-pagination--compact .ln-pagination__link:hover {
1059
+ background: none;
1060
+ }
1061
+ .ln-pagination--text .ln-pagination__link {
1062
+ border-radius: 0;
1063
+ color: var(--link);
1064
+ }
1065
+ .ln-pagination--text .ln-pagination__link:hover {
1066
+ background: none;
1067
+ color: var(--link-hover);
1068
+ text-decoration: underline;
1069
+ }
1070
+ .ln-pagination--text .ln-pagination__link[aria-current=page] {
1071
+ background: none;
1072
+ border: 0;
1073
+ color: var(--text);
1074
+ font-weight: 700;
1075
+ }
1076
+ }
1077
+ @layer blocks {
1078
+ .ln-steps {
1079
+ --_fill: var(--primary);
1080
+ --_on: var(--on-primary);
1081
+ display: flex;
1082
+ gap: 0.5rem;
1083
+ list-style: none;
1084
+ align-items: center;
1085
+ flex-wrap: wrap;
1086
+ }
1087
+ .ln-steps__item {
1088
+ display: flex;
1089
+ align-items: center;
1090
+ gap: 0.5rem;
1091
+ height: 2rem;
1092
+ font: 500 0.875rem/1.25rem var(--f-ui);
1093
+ color: var(--c-subtle);
1094
+ }
1095
+ .ln-steps__item.is-complete {
1096
+ color: var(--c-muted);
1097
+ }
1098
+ .ln-steps__item.is-complete .ln-steps__marker {
1099
+ background: var(--success-subtle);
1100
+ color: var(--success-text);
1101
+ border: 0;
1102
+ }
1103
+ .ln-steps__item[aria-current=step] {
1104
+ color: var(--text);
1105
+ }
1106
+ .ln-steps__item[aria-current=step] .ln-steps__marker {
1107
+ background: var(--_fill);
1108
+ color: var(--_on);
1109
+ border: 0;
1110
+ }
1111
+ .ln-steps__item.is-error .ln-steps__marker {
1112
+ background: var(--danger);
1113
+ color: var(--on-danger);
1114
+ border: 0;
1115
+ }
1116
+ .ln-steps__marker {
1117
+ width: 1.5rem;
1118
+ height: 1.5rem;
1119
+ border-radius: 50%;
1120
+ display: grid;
1121
+ place-items: center;
1122
+ font: 500 0.75rem/1rem var(--f-mono);
1123
+ border: var(--bd1) solid var(--border-control);
1124
+ flex-shrink: 0;
1125
+ }
1126
+ .ln-steps__connector {
1127
+ width: 1.5rem;
1128
+ height: 1px;
1129
+ background: var(--border-control);
1130
+ flex-shrink: 0;
1131
+ }
1132
+ .ln-steps__label {
1133
+ font: 500 0.875rem/1.25rem var(--f-ui);
1134
+ }
1135
+ .ln-steps__description {
1136
+ font-size: var(--t-meta-s);
1137
+ line-height: var(--t-meta-lh);
1138
+ color: var(--c-muted);
1139
+ }
1140
+ .ln-steps--vertical {
1141
+ flex-direction: column;
1142
+ align-items: flex-start;
1143
+ flex-wrap: nowrap;
1144
+ }
1145
+ .ln-steps--vertical .ln-steps__item {
1146
+ flex-direction: row;
1147
+ align-items: flex-start;
1148
+ height: auto;
1149
+ padding-bottom: var(--s4);
1150
+ position: relative;
1151
+ }
1152
+ .ln-steps--vertical .ln-steps__connector {
1153
+ position: absolute;
1154
+ left: 0.6875rem;
1155
+ top: 1.5rem;
1156
+ bottom: 0;
1157
+ width: 0.125rem;
1158
+ height: auto;
1159
+ }
1160
+ .ln-steps--vertical .ln-steps__label {
1161
+ padding-top: 0.125rem;
1162
+ }
1163
+ .ln-steps--dots {
1164
+ gap: 0.25rem;
1165
+ }
1166
+ .ln-steps--dots .ln-steps__marker {
1167
+ width: 0.5rem;
1168
+ height: 0.5rem;
1169
+ font-size: 0;
1170
+ background: var(--border-control);
1171
+ border: 0;
1172
+ }
1173
+ .ln-steps--dots .ln-steps__item.is-complete .ln-steps__marker {
1174
+ background: var(--success);
1175
+ }
1176
+ .ln-steps--dots .ln-steps__item[aria-current=step] .ln-steps__marker {
1177
+ width: 0.75rem;
1178
+ height: 0.75rem;
1179
+ background: var(--_fill);
1180
+ }
1181
+ .ln-steps--dots .ln-steps__label {
1182
+ display: none;
1183
+ }
1184
+ .ln-steps--compact .ln-steps__marker {
1185
+ width: 1.25rem;
1186
+ height: 1.25rem;
1187
+ font-size: 0.625rem;
1188
+ }
1189
+ .ln-steps--primary {
1190
+ --_fill: var(--primary);
1191
+ --_on: var(--on-primary);
1192
+ --_subtle: var(--primary-subtle);
1193
+ --_text: var(--primary-text);
1194
+ --_border-color: var(--primary-border);
1195
+ --_hover: var(--primary-hover);
1196
+ }
1197
+ .ln-steps--secondary {
1198
+ --_fill: var(--secondary);
1199
+ --_on: var(--on-secondary);
1200
+ --_subtle: var(--secondary-subtle);
1201
+ --_text: var(--secondary-text);
1202
+ --_border-color: var(--secondary-border);
1203
+ --_hover: var(--secondary-hover);
1204
+ }
1205
+ .ln-steps--success {
1206
+ --_fill: var(--success);
1207
+ --_on: var(--on-success);
1208
+ --_subtle: var(--success-subtle);
1209
+ --_text: var(--success-text);
1210
+ --_border-color: var(--success-border);
1211
+ --_hover: var(--success-hover);
1212
+ }
1213
+ .ln-steps--warning {
1214
+ --_fill: var(--warning);
1215
+ --_on: var(--on-warning);
1216
+ --_subtle: var(--warning-subtle);
1217
+ --_text: var(--warning-text);
1218
+ --_border-color: var(--warning-border);
1219
+ --_hover: var(--warning-hover);
1220
+ }
1221
+ .ln-steps--danger {
1222
+ --_fill: var(--danger);
1223
+ --_on: var(--on-danger);
1224
+ --_subtle: var(--danger-subtle);
1225
+ --_text: var(--danger-text);
1226
+ --_border-color: var(--danger-border);
1227
+ --_hover: var(--danger-hover);
1228
+ }
1229
+ .ln-steps--info {
1230
+ --_fill: var(--info);
1231
+ --_on: var(--on-info);
1232
+ --_subtle: var(--info-subtle);
1233
+ --_text: var(--info-text);
1234
+ --_border-color: var(--info-border);
1235
+ --_hover: var(--info-hover);
1236
+ }
1237
+ }
1238
+ @layer blocks {
1239
+ .ln-site-footer {
1240
+ font: 400 0.875rem/2rem var(--f-ui);
1241
+ color: var(--c-muted);
1242
+ }
1243
+ .ln-site-footer__inner {
1244
+ max-width: var(--container-wide);
1245
+ margin-inline: auto;
1246
+ }
1247
+ .ln-site-footer__brand {
1248
+ margin-bottom: var(--s4);
1249
+ }
1250
+ .ln-site-footer__columns {
1251
+ display: grid;
1252
+ grid-template-columns: repeat(auto-fit, minmax(min(10rem, 100%), 1fr));
1253
+ gap: var(--s4) var(--s4);
1254
+ margin-bottom: 48px;
1255
+ }
1256
+ .ln-site-footer__heading {
1257
+ font-weight: 600;
1258
+ font-size: var(--t-body-s);
1259
+ line-height: var(--t-body-lh);
1260
+ margin-bottom: var(--s2);
1261
+ color: var(--text);
1262
+ }
1263
+ .ln-site-footer__links {
1264
+ list-style: none;
1265
+ padding: 0;
1266
+ margin: 0;
1267
+ display: flex;
1268
+ flex-direction: column;
1269
+ gap: var(--s1);
1270
+ }
1271
+ .ln-site-footer__link {
1272
+ color: var(--c-muted);
1273
+ text-decoration: none;
1274
+ transition: color var(--dur-fast) var(--e-standard);
1275
+ }
1276
+ .ln-site-footer__link:hover {
1277
+ color: var(--link-hover);
1278
+ }
1279
+ .ln-site-footer__description {
1280
+ margin-top: 0;
1281
+ }
1282
+ .ln-site-footer__social {
1283
+ display: flex;
1284
+ gap: var(--s2);
1285
+ margin-bottom: var(--s4);
1286
+ }
1287
+ .ln-site-footer__bottom {
1288
+ display: flex;
1289
+ flex-wrap: wrap;
1290
+ justify-content: space-between;
1291
+ align-items: center;
1292
+ gap: var(--s2);
1293
+ padding-top: calc(var(--s3) - var(--bd1));
1294
+ border-top: var(--bd1) solid var(--border);
1295
+ }
1296
+ .ln-site-footer__legal {
1297
+ font-size: var(--t-meta-s);
1298
+ line-height: var(--t-meta-lh);
1299
+ color: var(--c-subtle);
1300
+ }
1301
+ .ln-site-footer--compact .ln-site-footer__columns {
1302
+ margin-bottom: 24px;
1303
+ }
1304
+ .ln-site-footer--center {
1305
+ text-align: center;
1306
+ }
1307
+ .ln-site-footer--center .ln-site-footer__columns {
1308
+ justify-items: center;
1309
+ }
1310
+ .ln-site-footer--center .ln-site-footer__links {
1311
+ align-items: center;
1312
+ }
1313
+ .ln-site-footer--center .ln-site-footer__social {
1314
+ justify-content: center;
1315
+ }
1316
+ .ln-site-footer--center .ln-site-footer__bottom {
1317
+ justify-content: center;
1318
+ }
1319
+ .ln-site-footer--inverse {
1320
+ background: var(--surface-inverse);
1321
+ color: var(--c-inverse);
1322
+ }
1323
+ .ln-site-footer--inverse .ln-site-footer__heading {
1324
+ color: var(--c-inverse);
1325
+ }
1326
+ .ln-site-footer--inverse .ln-site-footer__link {
1327
+ color: var(--c-inverse);
1328
+ opacity: 0.7;
1329
+ }
1330
+ .ln-site-footer--inverse .ln-site-footer__link:hover {
1331
+ opacity: 1;
1332
+ }
1333
+ .ln-site-footer--inverse .ln-site-footer__bottom {
1334
+ border-top-color: rgba(255, 255, 255, 0.15);
1335
+ }
1336
+ .ln-site-footer--inverse .ln-site-footer__legal {
1337
+ color: var(--c-inverse);
1338
+ opacity: 0.5;
1339
+ }
1340
+ }
1341
+ @layer blocks {
1342
+ .ln-menu {
1343
+ --_item-height: 40px;
1344
+ --_fill: var(--primary);
1345
+ --_text: var(--text);
1346
+ --_border-color: var(--border);
1347
+ font: var(--t-body-sm-s)/var(--t-body-sm-lh) var(--f-ui);
1348
+ list-style: none;
1349
+ padding: 0;
1350
+ margin: 0;
1351
+ }
1352
+ .ln-menu ul, .ln-menu ol {
1353
+ list-style: none;
1354
+ padding: 0;
1355
+ margin: 0;
1356
+ }
1357
+ .ln-menu__group:not(:first-child) {
1358
+ margin-top: var(--s2);
1359
+ padding-top: calc(var(--s2) - var(--bd1));
1360
+ border-top: var(--bd1) solid var(--_border-color);
1361
+ }
1362
+ .ln-menu__heading {
1363
+ font-size: var(--t-meta-s);
1364
+ line-height: var(--t-meta-lh);
1365
+ font-weight: 600;
1366
+ text-transform: uppercase;
1367
+ letter-spacing: 0.06em;
1368
+ color: var(--c-subtle);
1369
+ padding: var(--s1) var(--s2);
1370
+ }
1371
+ .ln-menu__item {
1372
+ list-style: none;
1373
+ }
1374
+ .ln-menu__link {
1375
+ display: flex;
1376
+ align-items: center;
1377
+ gap: var(--s2);
1378
+ min-height: var(--_item-height);
1379
+ padding: var(--s-h) var(--s2);
1380
+ border-radius: var(--r-md);
1381
+ color: var(--c-muted);
1382
+ text-decoration: none;
1383
+ font-weight: 500;
1384
+ transition: background-color var(--dur-fast) var(--e-standard), color var(--dur-fast) var(--e-standard);
1385
+ }
1386
+ .ln-menu__link:hover {
1387
+ background-color: var(--surface-raised);
1388
+ color: var(--_text);
1389
+ }
1390
+ .ln-menu__link[aria-current=page], .ln-menu__link[aria-current=true] {
1391
+ background-color: var(--primary-subtle);
1392
+ color: var(--_fill);
1393
+ font-weight: 600;
1394
+ }
1395
+ .ln-menu__link[aria-expanded=true] {
1396
+ color: var(--_text);
1397
+ }
1398
+ .ln-menu__link:focus-visible {
1399
+ outline: 2px solid var(--focus);
1400
+ outline-offset: -2px;
1401
+ }
1402
+ .ln-menu__icon {
1403
+ width: 1.25rem;
1404
+ height: 1.25rem;
1405
+ flex-shrink: 0;
1406
+ opacity: 0.7;
1407
+ }
1408
+ .ln-menu__label {
1409
+ flex: 1;
1410
+ min-width: 0;
1411
+ overflow: hidden;
1412
+ text-overflow: ellipsis;
1413
+ white-space: nowrap;
1414
+ }
1415
+ .ln-menu__badge {
1416
+ font: var(--t-meta-s)/1 var(--f-mono);
1417
+ padding: 2px 6px;
1418
+ border-radius: var(--r-pill);
1419
+ background: var(--primary-subtle);
1420
+ color: var(--primary-text);
1421
+ font-weight: 600;
1422
+ }
1423
+ .ln-menu__shortcut {
1424
+ font: var(--t-meta-s) var(--f-mono);
1425
+ color: var(--c-subtle);
1426
+ margin-left: auto;
1427
+ }
1428
+ .ln-menu__submenu {
1429
+ list-style: none;
1430
+ padding: 0 0 0 var(--s4);
1431
+ margin: 0;
1432
+ }
1433
+ .ln-menu__link[aria-expanded=false] + .ln-menu__submenu {
1434
+ display: none;
1435
+ }
1436
+ .ln-menu__link[aria-expanded=true] + .ln-menu__submenu {
1437
+ display: block;
1438
+ }
1439
+ .ln-menu__divider {
1440
+ height: 0;
1441
+ margin: var(--s1) 0;
1442
+ border-top: var(--bd1) solid var(--_border-color);
1443
+ }
1444
+ .ln-menu--compact {
1445
+ --_item-height: 32px;
1446
+ font-size: var(--t-meta-s);
1447
+ line-height: var(--t-meta-lh);
1448
+ }
1449
+ .ln-menu--rail .ln-menu__link {
1450
+ justify-content: center;
1451
+ padding-inline: var(--s1);
1452
+ }
1453
+ .ln-menu--rail .ln-menu__label,
1454
+ .ln-menu--rail .ln-menu__badge,
1455
+ .ln-menu--rail .ln-menu__shortcut {
1456
+ display: none;
1457
+ }
1458
+ .ln-menu--rail .ln-menu__heading {
1459
+ font-size: 0;
1460
+ padding: var(--s-h);
1461
+ min-height: 0;
1462
+ }
1463
+ .ln-menu--toc {
1464
+ font-size: var(--t-meta-s);
1465
+ line-height: var(--t-meta-lh);
1466
+ }
1467
+ .ln-menu--toc .ln-menu__link {
1468
+ min-height: 32px;
1469
+ border-radius: 0;
1470
+ padding-left: var(--s3);
1471
+ border-left: 2px solid transparent;
1472
+ }
1473
+ .ln-menu--toc .ln-menu__link[aria-current=page], .ln-menu--toc .ln-menu__link[aria-current=true] {
1474
+ background: none;
1475
+ border-left-color: var(--_fill);
1476
+ color: var(--_fill);
1477
+ }
1478
+ .ln-menu--pills .ln-menu__link {
1479
+ border-radius: var(--r-pill);
1480
+ }
1481
+ .ln-menu--pills .ln-menu__link[aria-current=page], .ln-menu--pills .ln-menu__link[aria-current=true] {
1482
+ background-color: var(--_fill);
1483
+ color: var(--on-primary);
1484
+ }
1485
+ .ln-menu--primary {
1486
+ --_fill: var(--primary);
1487
+ --_on: var(--on-primary);
1488
+ --_subtle: var(--primary-subtle);
1489
+ --_text: var(--primary-text);
1490
+ --_border-color: var(--primary-border);
1491
+ --_hover: var(--primary-hover);
1492
+ }
1493
+ .ln-menu--secondary {
1494
+ --_fill: var(--secondary);
1495
+ --_on: var(--on-secondary);
1496
+ --_subtle: var(--secondary-subtle);
1497
+ --_text: var(--secondary-text);
1498
+ --_border-color: var(--secondary-border);
1499
+ --_hover: var(--secondary-hover);
1500
+ }
1501
+ .ln-menu--success {
1502
+ --_fill: var(--success);
1503
+ --_on: var(--on-success);
1504
+ --_subtle: var(--success-subtle);
1505
+ --_text: var(--success-text);
1506
+ --_border-color: var(--success-border);
1507
+ --_hover: var(--success-hover);
1508
+ }
1509
+ .ln-menu--warning {
1510
+ --_fill: var(--warning);
1511
+ --_on: var(--on-warning);
1512
+ --_subtle: var(--warning-subtle);
1513
+ --_text: var(--warning-text);
1514
+ --_border-color: var(--warning-border);
1515
+ --_hover: var(--warning-hover);
1516
+ }
1517
+ .ln-menu--danger {
1518
+ --_fill: var(--danger);
1519
+ --_on: var(--on-danger);
1520
+ --_subtle: var(--danger-subtle);
1521
+ --_text: var(--danger-text);
1522
+ --_border-color: var(--danger-border);
1523
+ --_hover: var(--danger-hover);
1524
+ }
1525
+ .ln-menu--info {
1526
+ --_fill: var(--info);
1527
+ --_on: var(--on-info);
1528
+ --_subtle: var(--info-subtle);
1529
+ --_text: var(--info-text);
1530
+ --_border-color: var(--info-border);
1531
+ --_hover: var(--info-hover);
1532
+ }
1533
+ }
1534
+ @layer blocks {
1535
+ .ln-tabs {
1536
+ --_fill: var(--primary);
1537
+ --_border-color: var(--border);
1538
+ --_indicator-size: 2px;
1539
+ }
1540
+ .ln-tabs__list {
1541
+ display: flex;
1542
+ gap: 1.5rem;
1543
+ border-bottom: var(--bd1) solid var(--_border-color);
1544
+ overflow-x: auto;
1545
+ scrollbar-width: none;
1546
+ }
1547
+ .ln-tabs__list::-webkit-scrollbar {
1548
+ display: none;
1549
+ }
1550
+ .ln-tabs__tab {
1551
+ height: calc(2.5rem - var(--bd1));
1552
+ padding: 0;
1553
+ border: none;
1554
+ background: none;
1555
+ cursor: pointer;
1556
+ font: 500 0.9375rem/1.5rem var(--f-ui);
1557
+ color: var(--c-muted);
1558
+ white-space: nowrap;
1559
+ text-decoration: none;
1560
+ border-radius: 0;
1561
+ position: relative;
1562
+ transition: color var(--dur-fast) var(--e-standard);
1563
+ }
1564
+ .ln-tabs__tab:hover {
1565
+ color: var(--text);
1566
+ }
1567
+ .ln-tabs__tab[aria-selected=true] {
1568
+ color: var(--text);
1569
+ box-shadow: inset 0 -2px 0 var(--primary-text);
1570
+ }
1571
+ .ln-tabs__tab:focus-visible {
1572
+ outline: 2px solid var(--focus);
1573
+ outline-offset: -2px;
1574
+ border-radius: var(--r-sm);
1575
+ }
1576
+ .ln-tabs__icon {
1577
+ width: 1em;
1578
+ height: 1em;
1579
+ flex-shrink: 0;
1580
+ }
1581
+ .ln-tabs__badge {
1582
+ font: var(--t-meta-s)/1 var(--f-mono);
1583
+ padding: 2px 6px;
1584
+ border-radius: var(--r-pill);
1585
+ background: var(--surface-raised);
1586
+ font-weight: 600;
1587
+ }
1588
+ .ln-tabs__panel {
1589
+ padding-top: 1.5rem;
1590
+ }
1591
+ .ln-tabs__panel[hidden] {
1592
+ display: none;
1593
+ }
1594
+ .ln-tabs--pills .ln-tabs__list {
1595
+ border-bottom: 0;
1596
+ gap: var(--s-h);
1597
+ }
1598
+ .ln-tabs--pills .ln-tabs__tab {
1599
+ height: auto;
1600
+ border-radius: var(--r-pill);
1601
+ min-height: 32px;
1602
+ padding: var(--s-h) var(--s2);
1603
+ }
1604
+ .ln-tabs--pills .ln-tabs__tab[aria-selected=true] {
1605
+ background-color: var(--_fill);
1606
+ color: var(--on-primary);
1607
+ box-shadow: none;
1608
+ }
1609
+ .ln-tabs--boxed .ln-tabs__list {
1610
+ outline: var(--bd1) solid var(--_border-color);
1611
+ outline-offset: -1px;
1612
+ border-bottom: none;
1613
+ background: var(--surface-sunken);
1614
+ gap: 0;
1615
+ }
1616
+ .ln-tabs--boxed .ln-tabs__tab {
1617
+ height: 2.5rem;
1618
+ padding: 0 var(--s3);
1619
+ }
1620
+ .ln-tabs--boxed .ln-tabs__tab[aria-selected=true] {
1621
+ background: var(--surface);
1622
+ color: var(--text);
1623
+ box-shadow: none;
1624
+ outline: var(--bd1) solid var(--_border-color);
1625
+ outline-offset: -1px;
1626
+ }
1627
+ .ln-tabs--vertical {
1628
+ display: flex;
1629
+ gap: var(--s3);
1630
+ }
1631
+ .ln-tabs--vertical .ln-tabs__list {
1632
+ flex-direction: column;
1633
+ border-bottom: 0;
1634
+ border-right: var(--bd1) solid var(--_border-color);
1635
+ min-width: 160px;
1636
+ overflow-x: visible;
1637
+ }
1638
+ .ln-tabs--vertical .ln-tabs__tab[aria-selected=true]::after {
1639
+ top: 0;
1640
+ bottom: 0;
1641
+ left: auto;
1642
+ right: 0;
1643
+ width: var(--_indicator-size);
1644
+ height: auto;
1645
+ border-radius: var(--_indicator-size) 0 0 var(--_indicator-size);
1646
+ }
1647
+ .ln-tabs--vertical .ln-tabs__panel {
1648
+ flex: 1;
1649
+ padding-top: 0;
1650
+ }
1651
+ .ln-tabs--fill .ln-tabs__tab {
1652
+ flex: 1;
1653
+ justify-content: center;
1654
+ }
1655
+ .ln-tabs--sm .ln-tabs__tab {
1656
+ min-height: 32px;
1657
+ padding: var(--s-h) var(--s2);
1658
+ font-size: var(--t-meta-s);
1659
+ line-height: var(--t-meta-lh);
1660
+ }
1661
+ .ln-tabs--primary {
1662
+ --_fill: var(--primary);
1663
+ --_on: var(--on-primary);
1664
+ --_subtle: var(--primary-subtle);
1665
+ --_text: var(--primary-text);
1666
+ --_border-color: var(--primary-border);
1667
+ --_hover: var(--primary-hover);
1668
+ }
1669
+ .ln-tabs--secondary {
1670
+ --_fill: var(--secondary);
1671
+ --_on: var(--on-secondary);
1672
+ --_subtle: var(--secondary-subtle);
1673
+ --_text: var(--secondary-text);
1674
+ --_border-color: var(--secondary-border);
1675
+ --_hover: var(--secondary-hover);
1676
+ }
1677
+ .ln-tabs--success {
1678
+ --_fill: var(--success);
1679
+ --_on: var(--on-success);
1680
+ --_subtle: var(--success-subtle);
1681
+ --_text: var(--success-text);
1682
+ --_border-color: var(--success-border);
1683
+ --_hover: var(--success-hover);
1684
+ }
1685
+ .ln-tabs--warning {
1686
+ --_fill: var(--warning);
1687
+ --_on: var(--on-warning);
1688
+ --_subtle: var(--warning-subtle);
1689
+ --_text: var(--warning-text);
1690
+ --_border-color: var(--warning-border);
1691
+ --_hover: var(--warning-hover);
1692
+ }
1693
+ .ln-tabs--danger {
1694
+ --_fill: var(--danger);
1695
+ --_on: var(--on-danger);
1696
+ --_subtle: var(--danger-subtle);
1697
+ --_text: var(--danger-text);
1698
+ --_border-color: var(--danger-border);
1699
+ --_hover: var(--danger-hover);
1700
+ }
1701
+ .ln-tabs--info {
1702
+ --_fill: var(--info);
1703
+ --_on: var(--on-info);
1704
+ --_subtle: var(--info-subtle);
1705
+ --_text: var(--info-text);
1706
+ --_border-color: var(--info-border);
1707
+ --_hover: var(--info-hover);
1708
+ }
1709
+ }
1710
+ @layer blocks {
1711
+ .ln-dropdown {
1712
+ --_fill: var(--primary);
1713
+ --_border-color: var(--border);
1714
+ --_menu-min: 12rem;
1715
+ --_menu-max: 20rem;
1716
+ position: relative;
1717
+ display: inline-block;
1718
+ }
1719
+ .ln-dropdown__toggle {
1720
+ cursor: pointer;
1721
+ }
1722
+ .ln-dropdown__menu {
1723
+ position: absolute;
1724
+ top: 100%;
1725
+ left: 0;
1726
+ z-index: 50;
1727
+ min-width: var(--_menu-min);
1728
+ max-width: var(--_menu-max);
1729
+ padding: calc(var(--s-h) - var(--bd1)) 0;
1730
+ background: var(--surface);
1731
+ border-radius: var(--r-md);
1732
+ border: var(--bd1) solid var(--_border-color);
1733
+ box-shadow: var(--sh3);
1734
+ margin-top: var(--s-h);
1735
+ }
1736
+ .ln-dropdown__menu[popover] {
1737
+ padding: calc(var(--s-h) - var(--bd1)) 0;
1738
+ overflow: visible;
1739
+ color: inherit;
1740
+ background: var(--surface);
1741
+ }
1742
+ .ln-dropdown__menu:not([popover]) {
1743
+ display: none;
1744
+ }
1745
+ .ln-dropdown__toggle[aria-expanded=true] + .ln-dropdown__menu:not([popover]) {
1746
+ display: block;
1747
+ }
1748
+ .ln-dropdown__item {
1749
+ display: flex;
1750
+ align-items: center;
1751
+ gap: var(--s2);
1752
+ padding: var(--s1) var(--s3);
1753
+ min-height: 32px;
1754
+ font: var(--t-body-sm-s)/var(--t-body-sm-lh) var(--f-ui);
1755
+ color: var(--text);
1756
+ text-decoration: none;
1757
+ cursor: pointer;
1758
+ border: none;
1759
+ background: none;
1760
+ width: 100%;
1761
+ text-align: start;
1762
+ transition: background-color var(--dur-fast) var(--e-standard);
1763
+ }
1764
+ .ln-dropdown__item:hover, .ln-dropdown__item[data-active] {
1765
+ background-color: var(--surface-raised);
1766
+ }
1767
+ .ln-dropdown__item:focus-visible {
1768
+ outline: 2px solid var(--focus);
1769
+ outline-offset: -2px;
1770
+ }
1771
+ .ln-dropdown__item--danger {
1772
+ color: var(--danger-text);
1773
+ }
1774
+ .ln-dropdown__item--danger:hover, .ln-dropdown__item--danger[data-active] {
1775
+ background-color: var(--danger-subtle);
1776
+ }
1777
+ .ln-dropdown__icon {
1778
+ width: 1rem;
1779
+ height: 1rem;
1780
+ flex-shrink: 0;
1781
+ opacity: 0.7;
1782
+ }
1783
+ .ln-dropdown__label {
1784
+ flex: 1;
1785
+ min-width: 0;
1786
+ }
1787
+ .ln-dropdown__shortcut {
1788
+ font: var(--t-meta-s) var(--f-mono);
1789
+ color: var(--c-subtle);
1790
+ margin-left: auto;
1791
+ }
1792
+ .ln-dropdown__heading {
1793
+ font-size: var(--t-meta-s);
1794
+ line-height: var(--t-meta-lh);
1795
+ font-weight: 600;
1796
+ text-transform: uppercase;
1797
+ letter-spacing: 0.06em;
1798
+ color: var(--c-subtle);
1799
+ padding: var(--s1) var(--s3);
1800
+ }
1801
+ .ln-dropdown__divider {
1802
+ height: 0;
1803
+ margin: var(--s-h) 0;
1804
+ border-top: var(--bd1) solid var(--_border-color);
1805
+ }
1806
+ .ln-dropdown--end .ln-dropdown__menu {
1807
+ left: auto;
1808
+ right: 0;
1809
+ }
1810
+ .ln-dropdown--up .ln-dropdown__menu {
1811
+ top: auto;
1812
+ bottom: 100%;
1813
+ margin: 0 0 var(--s-h);
1814
+ }
1815
+ .ln-dropdown--start .ln-dropdown__menu {
1816
+ left: 0;
1817
+ right: auto;
1818
+ }
1819
+ .ln-dropdown--wide .ln-dropdown__menu {
1820
+ min-width: 100%;
1821
+ }
1822
+ @supports (anchor-name: --x) {
1823
+ .ln-dropdown .ln-dropdown__toggle {
1824
+ anchor-name: --dropdown-trigger;
1825
+ }
1826
+ .ln-dropdown .ln-dropdown__menu[popover] {
1827
+ position: fixed;
1828
+ position-anchor: --dropdown-trigger;
1829
+ inset: unset;
1830
+ top: anchor(bottom);
1831
+ left: anchor(left);
1832
+ margin-top: var(--s-h);
1833
+ }
1834
+ }
1835
+ .ln-dropdown--primary {
1836
+ --_fill: var(--primary);
1837
+ --_on: var(--on-primary);
1838
+ --_subtle: var(--primary-subtle);
1839
+ --_text: var(--primary-text);
1840
+ --_border-color: var(--primary-border);
1841
+ --_hover: var(--primary-hover);
1842
+ }
1843
+ .ln-dropdown--secondary {
1844
+ --_fill: var(--secondary);
1845
+ --_on: var(--on-secondary);
1846
+ --_subtle: var(--secondary-subtle);
1847
+ --_text: var(--secondary-text);
1848
+ --_border-color: var(--secondary-border);
1849
+ --_hover: var(--secondary-hover);
1850
+ }
1851
+ .ln-dropdown--success {
1852
+ --_fill: var(--success);
1853
+ --_on: var(--on-success);
1854
+ --_subtle: var(--success-subtle);
1855
+ --_text: var(--success-text);
1856
+ --_border-color: var(--success-border);
1857
+ --_hover: var(--success-hover);
1858
+ }
1859
+ .ln-dropdown--warning {
1860
+ --_fill: var(--warning);
1861
+ --_on: var(--on-warning);
1862
+ --_subtle: var(--warning-subtle);
1863
+ --_text: var(--warning-text);
1864
+ --_border-color: var(--warning-border);
1865
+ --_hover: var(--warning-hover);
1866
+ }
1867
+ .ln-dropdown--danger {
1868
+ --_fill: var(--danger);
1869
+ --_on: var(--on-danger);
1870
+ --_subtle: var(--danger-subtle);
1871
+ --_text: var(--danger-text);
1872
+ --_border-color: var(--danger-border);
1873
+ --_hover: var(--danger-hover);
1874
+ }
1875
+ .ln-dropdown--info {
1876
+ --_fill: var(--info);
1877
+ --_on: var(--on-info);
1878
+ --_subtle: var(--info-subtle);
1879
+ --_text: var(--info-text);
1880
+ --_border-color: var(--info-border);
1881
+ --_hover: var(--info-hover);
1882
+ }
1883
+ }
1884
+ @layer blocks {
1885
+ .ln-navbar {
1886
+ --_height: var(--s4);
1887
+ --_bg: var(--surface);
1888
+ --_text: var(--text);
1889
+ --_border-color: var(--border);
1890
+ --_fill: var(--primary);
1891
+ position: relative;
1892
+ background-color: var(--_bg);
1893
+ color: var(--_text);
1894
+ z-index: 100;
1895
+ }
1896
+ .ln-navbar__inner {
1897
+ display: flex;
1898
+ align-items: center;
1899
+ gap: var(--s3);
1900
+ max-width: var(--container-wide);
1901
+ margin-inline: auto;
1902
+ padding-inline: var(--gutter);
1903
+ min-height: var(--_height);
1904
+ }
1905
+ .ln-navbar__brand {
1906
+ display: flex;
1907
+ align-items: center;
1908
+ gap: var(--s2);
1909
+ font: 700 var(--t-h4-s)/var(--t-h4-lh) var(--f-ui);
1910
+ text-decoration: none;
1911
+ color: inherit;
1912
+ flex-shrink: 0;
1913
+ }
1914
+ .ln-navbar__nav {
1915
+ display: flex;
1916
+ align-items: center;
1917
+ gap: var(--s-h);
1918
+ flex: 1;
1919
+ }
1920
+ .ln-navbar__item {
1921
+ list-style: none;
1922
+ }
1923
+ .ln-navbar__link {
1924
+ display: inline-flex;
1925
+ align-items: center;
1926
+ gap: var(--s1);
1927
+ padding: var(--s1) var(--s2);
1928
+ min-height: 48px;
1929
+ font: 500 var(--t-body-sm-s)/var(--t-body-sm-lh) var(--f-ui);
1930
+ color: var(--c-muted);
1931
+ text-decoration: none;
1932
+ transition: color var(--dur-fast) var(--e-standard);
1933
+ }
1934
+ .ln-navbar__link:hover {
1935
+ color: var(--_text);
1936
+ }
1937
+ .ln-navbar__link[aria-current=page] {
1938
+ color: var(--primary-text);
1939
+ }
1940
+ .ln-navbar__actions {
1941
+ display: flex;
1942
+ align-items: center;
1943
+ gap: var(--s2);
1944
+ margin-left: auto;
1945
+ }
1946
+ .ln-navbar__toggle {
1947
+ display: none;
1948
+ appearance: none;
1949
+ background: none;
1950
+ border: none;
1951
+ padding: var(--s1);
1952
+ cursor: pointer;
1953
+ color: inherit;
1954
+ border-radius: var(--r-md);
1955
+ }
1956
+ .ln-navbar__toggle:hover {
1957
+ background-color: var(--surface-raised);
1958
+ }
1959
+ .ln-navbar__panel {
1960
+ display: none;
1961
+ }
1962
+ @media (max-width: 768px) {
1963
+ .ln-navbar__toggle {
1964
+ display: flex;
1965
+ align-items: center;
1966
+ justify-content: center;
1967
+ margin-left: auto;
1968
+ }
1969
+ .ln-navbar__nav {
1970
+ display: none;
1971
+ }
1972
+ .ln-navbar__actions {
1973
+ display: none;
1974
+ }
1975
+ .ln-navbar__panel {
1976
+ position: absolute;
1977
+ top: 100%;
1978
+ left: 0;
1979
+ right: 0;
1980
+ background: var(--_bg);
1981
+ padding: var(--s2) var(--gutter);
1982
+ box-shadow: var(--sh3);
1983
+ z-index: 99;
1984
+ display: none;
1985
+ opacity: 0;
1986
+ transform: translateY(-8px);
1987
+ transition: opacity var(--dur-base) var(--e-exit), transform var(--dur-base) var(--e-exit), display var(--dur-base) var(--e-exit) allow-discrete;
1988
+ }
1989
+ .ln-navbar__panel[aria-hidden=false] {
1990
+ display: block;
1991
+ opacity: 1;
1992
+ transform: translateY(0);
1993
+ transition: opacity var(--dur-base) var(--e-enter), transform var(--dur-base) var(--e-enter), display var(--dur-base) var(--e-enter) allow-discrete;
1994
+ }
1995
+ @starting-style {
1996
+ .ln-navbar__panel[aria-hidden=false] {
1997
+ opacity: 0;
1998
+ transform: translateY(-8px);
1999
+ }
2000
+ }
2001
+ .ln-navbar__panel .ln-navbar__link {
2002
+ display: flex;
2003
+ width: 100%;
2004
+ padding: var(--s2) var(--s3);
2005
+ border-radius: var(--r-md);
2006
+ }
2007
+ .ln-navbar__panel .ln-navbar__link:hover {
2008
+ background-color: var(--surface-raised);
2009
+ }
2010
+ .ln-navbar:has(.ln-navbar__panel[aria-hidden=false])::before {
2011
+ content: "";
2012
+ position: fixed;
2013
+ top: 0;
2014
+ left: 0;
2015
+ right: 0;
2016
+ bottom: 0;
2017
+ background: var(--overlay);
2018
+ z-index: 98;
2019
+ }
2020
+ }
2021
+ @media (max-width: 768px) {
2022
+ .ln-navbar--actions-visible .ln-navbar__actions {
2023
+ display: flex;
2024
+ }
2025
+ }
2026
+ .ln-navbar--sticky {
2027
+ position: sticky;
2028
+ top: 0;
2029
+ }
2030
+ .ln-navbar--transparent {
2031
+ --_bg: transparent;
2032
+ border-bottom: 0;
2033
+ }
2034
+ .ln-navbar--transparent.is-stuck {
2035
+ --_bg: var(--surface);
2036
+ border-bottom: var(--bd1) solid var(--_border-color);
2037
+ transition: background-color var(--dur-base) var(--e-standard);
2038
+ }
2039
+ .ln-navbar--bordered {
2040
+ border-bottom: var(--bd1) solid var(--_border-color);
2041
+ }
2042
+ .ln-navbar--bordered .ln-navbar__inner {
2043
+ min-height: calc(var(--_height) - var(--bd1));
2044
+ }
2045
+ .ln-navbar--center .ln-navbar__nav {
2046
+ justify-content: center;
2047
+ }
2048
+ .ln-navbar--compact {
2049
+ --_height: var(--s4);
2050
+ }
2051
+ .ln-navbar--compact .ln-navbar__link {
2052
+ min-height: 24px;
2053
+ }
2054
+ .ln-navbar--primary {
2055
+ --_fill: var(--primary);
2056
+ --_on: var(--on-primary);
2057
+ --_subtle: var(--primary-subtle);
2058
+ --_text: var(--primary-text);
2059
+ --_border-color: var(--primary-border);
2060
+ --_hover: var(--primary-hover);
2061
+ }
2062
+ .ln-navbar--secondary {
2063
+ --_fill: var(--secondary);
2064
+ --_on: var(--on-secondary);
2065
+ --_subtle: var(--secondary-subtle);
2066
+ --_text: var(--secondary-text);
2067
+ --_border-color: var(--secondary-border);
2068
+ --_hover: var(--secondary-hover);
2069
+ }
2070
+ .ln-navbar--success {
2071
+ --_fill: var(--success);
2072
+ --_on: var(--on-success);
2073
+ --_subtle: var(--success-subtle);
2074
+ --_text: var(--success-text);
2075
+ --_border-color: var(--success-border);
2076
+ --_hover: var(--success-hover);
2077
+ }
2078
+ .ln-navbar--warning {
2079
+ --_fill: var(--warning);
2080
+ --_on: var(--on-warning);
2081
+ --_subtle: var(--warning-subtle);
2082
+ --_text: var(--warning-text);
2083
+ --_border-color: var(--warning-border);
2084
+ --_hover: var(--warning-hover);
2085
+ }
2086
+ .ln-navbar--danger {
2087
+ --_fill: var(--danger);
2088
+ --_on: var(--on-danger);
2089
+ --_subtle: var(--danger-subtle);
2090
+ --_text: var(--danger-text);
2091
+ --_border-color: var(--danger-border);
2092
+ --_hover: var(--danger-hover);
2093
+ }
2094
+ .ln-navbar--info {
2095
+ --_fill: var(--info);
2096
+ --_on: var(--on-info);
2097
+ --_subtle: var(--info-subtle);
2098
+ --_text: var(--info-text);
2099
+ --_border-color: var(--info-border);
2100
+ --_hover: var(--info-hover);
2101
+ }
2102
+ @media (max-width: 768px) {
2103
+ html.ln-navbar-open {
2104
+ overflow: hidden;
2105
+ }
2106
+ }
2107
+ }
2108
+ @layer blocks {
2109
+ .ln-button {
2110
+ --_fill: var(--primary);
2111
+ --_on: var(--on-primary);
2112
+ --_text: var(--primary-text);
2113
+ --_subtle: var(--primary-subtle);
2114
+ --_h: 2.5rem;
2115
+ --_px: 1rem;
2116
+ --_fs: 0.9375rem;
2117
+ --_lh: 1.5rem;
2118
+ display: inline-flex;
2119
+ align-items: center;
2120
+ justify-content: center;
2121
+ gap: 0.5rem;
2122
+ height: var(--_h);
2123
+ padding-inline: var(--_px);
2124
+ border: 0;
2125
+ font: 500 var(--_fs)/var(--_lh) var(--f-ui);
2126
+ white-space: nowrap;
2127
+ cursor: pointer;
2128
+ background: var(--_fill);
2129
+ color: var(--_on);
2130
+ text-decoration: none;
2131
+ transition: background-color 0.12s, box-shadow 0.12s, color 0.12s;
2132
+ text-box: trim-both cap alphabetic;
2133
+ }
2134
+ .ln-button:hover {
2135
+ background: color-mix(in srgb, var(--_fill) 88%, var(--text));
2136
+ }
2137
+ .ln-button:focus-visible {
2138
+ outline: 2px solid var(--focus);
2139
+ outline-offset: 2px;
2140
+ }
2141
+ .ln-button:disabled, .ln-button[aria-disabled=true] {
2142
+ background: var(--surface-raised);
2143
+ color: var(--c-subtle);
2144
+ border: var(--bd1) solid var(--border);
2145
+ cursor: not-allowed;
2146
+ }
2147
+ .ln-button[aria-busy=true] {
2148
+ cursor: progress;
2149
+ }
2150
+ .ln-button[aria-busy=true] .ln-button__spinner {
2151
+ display: inline-flex;
2152
+ }
2153
+ .ln-button__label {
2154
+ display: inline-flex;
2155
+ align-items: center;
2156
+ }
2157
+ .ln-button__icon {
2158
+ font-size: 1rem;
2159
+ flex: none;
2160
+ }
2161
+ .ln-button__spinner {
2162
+ display: none;
2163
+ align-items: center;
2164
+ }
2165
+ .ln-button__badge {
2166
+ display: inline-flex;
2167
+ align-items: center;
2168
+ justify-content: center;
2169
+ }
2170
+ .ln-button--neutral {
2171
+ --_fill: var(--surface-raised);
2172
+ --_on: var(--text);
2173
+ --_text: var(--text);
2174
+ --_subtle: var(--surface-sunken);
2175
+ border: var(--bd1) solid var(--border-control);
2176
+ }
2177
+ .ln-button--subtle {
2178
+ background: var(--_subtle);
2179
+ color: var(--_text);
2180
+ border: 0;
2181
+ }
2182
+ .ln-button--subtle:hover {
2183
+ background: color-mix(in srgb, var(--_subtle) 80%, var(--_text));
2184
+ }
2185
+ .ln-button--outline {
2186
+ background: transparent;
2187
+ color: var(--_text);
2188
+ border: var(--bd1) solid var(--_text);
2189
+ }
2190
+ .ln-button--outline:hover {
2191
+ background: transparent;
2192
+ }
2193
+ .ln-button--ghost {
2194
+ background: transparent;
2195
+ color: var(--_text);
2196
+ border: 0;
2197
+ }
2198
+ .ln-button--ghost:hover {
2199
+ background: var(--_subtle);
2200
+ }
2201
+ .ln-button--link {
2202
+ background: transparent;
2203
+ color: var(--_text);
2204
+ padding-inline: 0;
2205
+ text-decoration: underline;
2206
+ text-underline-offset: 0.2em;
2207
+ border: 0;
2208
+ }
2209
+ .ln-button--link:hover {
2210
+ background: transparent;
2211
+ text-decoration-thickness: 2px;
2212
+ }
2213
+ .ln-button--sm {
2214
+ --_h: 2rem;
2215
+ --_px: 0.75rem;
2216
+ --_fs: 0.875rem;
2217
+ --_lh: 1.25rem;
2218
+ }
2219
+ .ln-button--lg {
2220
+ --_h: 3rem;
2221
+ --_px: 1.5rem;
2222
+ --_fs: 1rem;
2223
+ --_lh: 1.5rem;
2224
+ }
2225
+ .ln-button--block {
2226
+ width: 100%;
2227
+ }
2228
+ @media (min-width: 576px) {
2229
+ .ln-button--sm\@sm {
2230
+ --_h: 2rem;
2231
+ --_px: 0.75rem;
2232
+ --_fs: 0.875rem;
2233
+ --_lh: 1.25rem;
2234
+ }
2235
+ .ln-button--lg\@sm {
2236
+ --_h: 3rem;
2237
+ --_px: 1.5rem;
2238
+ --_fs: 1rem;
2239
+ --_lh: 1.5rem;
2240
+ }
2241
+ .ln-button--block\@sm {
2242
+ width: 100%;
2243
+ }
2244
+ }
2245
+ @media (min-width: 768px) {
2246
+ .ln-button--sm\@md {
2247
+ --_h: 2rem;
2248
+ --_px: 0.75rem;
2249
+ --_fs: 0.875rem;
2250
+ --_lh: 1.25rem;
2251
+ }
2252
+ .ln-button--lg\@md {
2253
+ --_h: 3rem;
2254
+ --_px: 1.5rem;
2255
+ --_fs: 1rem;
2256
+ --_lh: 1.5rem;
2257
+ }
2258
+ .ln-button--block\@md {
2259
+ width: 100%;
2260
+ }
2261
+ }
2262
+ @media (min-width: 1024px) {
2263
+ .ln-button--sm\@lg {
2264
+ --_h: 2rem;
2265
+ --_px: 0.75rem;
2266
+ --_fs: 0.875rem;
2267
+ --_lh: 1.25rem;
2268
+ }
2269
+ .ln-button--lg\@lg {
2270
+ --_h: 3rem;
2271
+ --_px: 1.5rem;
2272
+ --_fs: 1rem;
2273
+ --_lh: 1.5rem;
2274
+ }
2275
+ .ln-button--block\@lg {
2276
+ width: 100%;
2277
+ }
2278
+ }
2279
+ @media (min-width: 1280px) {
2280
+ .ln-button--sm\@xl {
2281
+ --_h: 2rem;
2282
+ --_px: 0.75rem;
2283
+ --_fs: 0.875rem;
2284
+ --_lh: 1.25rem;
2285
+ }
2286
+ .ln-button--lg\@xl {
2287
+ --_h: 3rem;
2288
+ --_px: 1.5rem;
2289
+ --_fs: 1rem;
2290
+ --_lh: 1.5rem;
2291
+ }
2292
+ .ln-button--block\@xl {
2293
+ width: 100%;
2294
+ }
2295
+ }
2296
+ @media (min-width: 1536px) {
2297
+ .ln-button--sm\@2xl {
2298
+ --_h: 2rem;
2299
+ --_px: 0.75rem;
2300
+ --_fs: 0.875rem;
2301
+ --_lh: 1.25rem;
2302
+ }
2303
+ .ln-button--lg\@2xl {
2304
+ --_h: 3rem;
2305
+ --_px: 1.5rem;
2306
+ --_fs: 1rem;
2307
+ --_lh: 1.5rem;
2308
+ }
2309
+ .ln-button--block\@2xl {
2310
+ width: 100%;
2311
+ }
2312
+ }
2313
+ .ln-button--icon {
2314
+ padding-inline: 0;
2315
+ width: var(--_h);
2316
+ }
2317
+ .ln-button--pill {
2318
+ border-radius: var(--r-pill);
2319
+ }
2320
+ .ln-button--square {
2321
+ border-radius: 0;
2322
+ }
2323
+ .ln-button--rounded-sm {
2324
+ border-radius: var(--r-sm);
2325
+ }
2326
+ .ln-button--rounded-md {
2327
+ border-radius: var(--r-md);
2328
+ }
2329
+ .ln-button--rounded-lg {
2330
+ border-radius: var(--r-lg);
2331
+ }
2332
+ .ln-button--rounded-xl {
2333
+ border-radius: var(--r-xl);
2334
+ }
2335
+ .ln-button--primary {
2336
+ --_fill: var(--primary);
2337
+ --_on: var(--on-primary);
2338
+ --_subtle: var(--primary-subtle);
2339
+ --_text: var(--primary-text);
2340
+ --_border-color: var(--primary-border);
2341
+ --_hover: var(--primary-hover);
2342
+ }
2343
+ .ln-button--secondary {
2344
+ --_fill: var(--secondary);
2345
+ --_on: var(--on-secondary);
2346
+ --_subtle: var(--secondary-subtle);
2347
+ --_text: var(--secondary-text);
2348
+ --_border-color: var(--secondary-border);
2349
+ --_hover: var(--secondary-hover);
2350
+ }
2351
+ .ln-button--success {
2352
+ --_fill: var(--success);
2353
+ --_on: var(--on-success);
2354
+ --_subtle: var(--success-subtle);
2355
+ --_text: var(--success-text);
2356
+ --_border-color: var(--success-border);
2357
+ --_hover: var(--success-hover);
2358
+ }
2359
+ .ln-button--warning {
2360
+ --_fill: var(--warning);
2361
+ --_on: var(--on-warning);
2362
+ --_subtle: var(--warning-subtle);
2363
+ --_text: var(--warning-text);
2364
+ --_border-color: var(--warning-border);
2365
+ --_hover: var(--warning-hover);
2366
+ }
2367
+ .ln-button--danger {
2368
+ --_fill: var(--danger);
2369
+ --_on: var(--on-danger);
2370
+ --_subtle: var(--danger-subtle);
2371
+ --_text: var(--danger-text);
2372
+ --_border-color: var(--danger-border);
2373
+ --_hover: var(--danger-hover);
2374
+ }
2375
+ .ln-button--info {
2376
+ --_fill: var(--info);
2377
+ --_on: var(--on-info);
2378
+ --_subtle: var(--info-subtle);
2379
+ --_text: var(--info-text);
2380
+ --_border-color: var(--info-border);
2381
+ --_hover: var(--info-hover);
2382
+ }
2383
+ }
2384
+ @layer blocks {
2385
+ .ln-button-group {
2386
+ display: inline-flex;
2387
+ flex-wrap: wrap;
2388
+ gap: var(--s1);
2389
+ }
2390
+ .ln-button-group--attached {
2391
+ gap: 0;
2392
+ }
2393
+ .ln-button-group--attached .ln-button {
2394
+ border-radius: 0;
2395
+ }
2396
+ .ln-button-group--attached .ln-button:not(:first-child) {
2397
+ margin-left: -1px;
2398
+ }
2399
+ .ln-button-group--attached .ln-button:first-child {
2400
+ border-start-start-radius: var(--r-md);
2401
+ border-end-start-radius: var(--r-md);
2402
+ }
2403
+ .ln-button-group--attached .ln-button:last-child {
2404
+ border-start-end-radius: var(--r-md);
2405
+ border-end-end-radius: var(--r-md);
2406
+ }
2407
+ .ln-button-group--vertical {
2408
+ flex-direction: column;
2409
+ }
2410
+ .ln-button-group--vertical.ln-button-group--attached .ln-button {
2411
+ border-radius: 0;
2412
+ }
2413
+ .ln-button-group--vertical.ln-button-group--attached .ln-button:not(:first-child) {
2414
+ margin-left: 0;
2415
+ border-top: 0;
2416
+ }
2417
+ .ln-button-group--vertical.ln-button-group--attached .ln-button:first-child {
2418
+ border-start-start-radius: var(--r-md);
2419
+ border-start-end-radius: var(--r-md);
2420
+ }
2421
+ .ln-button-group--vertical.ln-button-group--attached .ln-button:last-child {
2422
+ border-end-start-radius: var(--r-md);
2423
+ border-end-end-radius: var(--r-md);
2424
+ }
2425
+ .ln-button-group--fill {
2426
+ width: 100%;
2427
+ }
2428
+ .ln-button-group--fill .ln-button {
2429
+ flex: 1 1;
2430
+ min-width: 0;
2431
+ }
2432
+ .ln-button-group--fill.ln-button-group--vertical .ln-button {
2433
+ flex: auto;
2434
+ }
2435
+ }
2436
+ @layer blocks {
2437
+ .ln-field {
2438
+ display: flex;
2439
+ flex-direction: column;
2440
+ gap: 0.25rem;
2441
+ }
2442
+ .ln-field__label {
2443
+ font: 500 0.875rem/1.25rem var(--f-ui);
2444
+ display: flex;
2445
+ gap: 0.5rem;
2446
+ align-items: center;
2447
+ height: 1.25rem;
2448
+ }
2449
+ .ln-field__required {
2450
+ color: var(--danger-text);
2451
+ }
2452
+ .ln-field__optional {
2453
+ font: 400 0.75rem/1.25rem var(--f-mono);
2454
+ color: var(--c-subtle);
2455
+ }
2456
+ .ln-field__control {
2457
+ width: 100%;
2458
+ }
2459
+ .ln-field__control input,
2460
+ .ln-field__control select,
2461
+ .ln-field__control textarea {
2462
+ width: 100%;
2463
+ height: 3.5rem;
2464
+ padding: 1rem;
2465
+ border: var(--bd1) solid var(--border-control);
2466
+ font: 400 1rem/1.5rem var(--f-ui);
2467
+ color: var(--text);
2468
+ background: var(--surface);
2469
+ }
2470
+ .ln-field__control textarea {
2471
+ height: auto;
2472
+ min-height: 5rem;
2473
+ resize: vertical;
2474
+ }
2475
+ .ln-field__control select {
2476
+ appearance: none;
2477
+ padding-right: 2.5rem;
2478
+ background-image: linear-gradient(45deg, transparent 50%, var(--c-muted) 50%), linear-gradient(135deg, var(--c-muted) 50%, transparent 50%);
2479
+ background-position: calc(100% - 20px) 18px, calc(100% - 15px) 18px;
2480
+ background-size: 5px 5px;
2481
+ background-repeat: no-repeat;
2482
+ }
2483
+ .ln-field__control input::placeholder,
2484
+ .ln-field__control textarea::placeholder {
2485
+ color: var(--c-subtle);
2486
+ }
2487
+ .ln-field__control input:focus,
2488
+ .ln-field__control select:focus,
2489
+ .ln-field__control textarea:focus {
2490
+ outline: 2px solid var(--focus);
2491
+ outline-offset: -2px;
2492
+ }
2493
+ .ln-field__hint {
2494
+ font: 400 0.875rem/1.25rem var(--f-ui);
2495
+ color: var(--c-muted);
2496
+ }
2497
+ .ln-field__error {
2498
+ font: 500 0.875rem/1.25rem var(--f-ui);
2499
+ color: var(--danger-text);
2500
+ display: none;
2501
+ }
2502
+ .ln-field__counter {
2503
+ font: var(--t-meta-s)/var(--t-meta-lh) var(--f-mono);
2504
+ color: var(--c-subtle);
2505
+ text-align: end;
2506
+ }
2507
+ .ln-field:has([aria-invalid=true]) .ln-field__label {
2508
+ color: var(--danger-text);
2509
+ }
2510
+ .ln-field:has([aria-invalid=true]) .ln-field__control input,
2511
+ .ln-field:has([aria-invalid=true]) .ln-field__control select,
2512
+ .ln-field:has([aria-invalid=true]) .ln-field__control textarea {
2513
+ border: var(--bd2) solid var(--danger-text);
2514
+ }
2515
+ .ln-field:has([aria-invalid=true]) .ln-field__hint {
2516
+ display: none;
2517
+ }
2518
+ .ln-field:has([aria-invalid=true]) .ln-field__error {
2519
+ display: flex;
2520
+ gap: 0.25rem;
2521
+ align-items: center;
2522
+ }
2523
+ .ln-field:has(:disabled) {
2524
+ opacity: 0.5;
2525
+ }
2526
+ .ln-field--sm .ln-field__control input,
2527
+ .ln-field--sm .ln-field__control select {
2528
+ height: 2rem;
2529
+ }
2530
+ .ln-field--lg .ln-field__control input,
2531
+ .ln-field--lg .ln-field__control select {
2532
+ height: 3rem;
2533
+ }
2534
+ .ln-field--inline {
2535
+ flex-direction: row;
2536
+ align-items: flex-start;
2537
+ }
2538
+ .ln-field--inline .ln-field__label {
2539
+ min-width: 30%;
2540
+ padding: var(--s1) 0;
2541
+ }
2542
+ .ln-field--inline .ln-field__control {
2543
+ flex: 1;
2544
+ }
2545
+ }
2546
+ @layer blocks {
2547
+ .ln-input-group {
2548
+ display: flex;
2549
+ border-radius: var(--r-xs);
2550
+ outline: var(--bd1) solid var(--border-control);
2551
+ outline-offset: calc(-1 * var(--bd1));
2552
+ background: var(--surface);
2553
+ }
2554
+ .ln-input-group:focus-within {
2555
+ outline-color: var(--focus);
2556
+ outline-width: 2px;
2557
+ outline-offset: -2px;
2558
+ }
2559
+ .ln-input-group__addon {
2560
+ height: 2.5rem;
2561
+ padding-inline: 0.75rem;
2562
+ font: 400 0.875rem/2.5rem var(--f-mono);
2563
+ color: var(--c-muted);
2564
+ border-right: var(--bd1) solid var(--border);
2565
+ }
2566
+ .ln-input-group__control {
2567
+ flex: 1;
2568
+ min-width: 0;
2569
+ border: 0;
2570
+ background: transparent;
2571
+ }
2572
+ .ln-input-group__control:focus {
2573
+ outline: none;
2574
+ }
2575
+ .ln-input-group__control::placeholder {
2576
+ color: var(--c-subtle);
2577
+ }
2578
+ .ln-input-group .ln-button {
2579
+ border-radius: 0 var(--r-xs) var(--r-xs) 0;
2580
+ }
2581
+ .ln-input-group__button {
2582
+ flex-shrink: 0;
2583
+ }
2584
+ .ln-input-group__icon {
2585
+ position: absolute;
2586
+ display: inline-flex;
2587
+ align-items: center;
2588
+ justify-content: center;
2589
+ width: 2.5rem;
2590
+ height: 100%;
2591
+ color: var(--c-muted);
2592
+ pointer-events: none;
2593
+ }
2594
+ .ln-input-group--sm .ln-input-group__control {
2595
+ height: 2rem;
2596
+ }
2597
+ .ln-input-group--sm .ln-input-group__addon {
2598
+ height: 2rem;
2599
+ line-height: 2rem;
2600
+ }
2601
+ .ln-input-group--sm .ln-input-group__icon {
2602
+ width: 2rem;
2603
+ }
2604
+ .ln-input-group--lg .ln-input-group__control {
2605
+ height: 3rem;
2606
+ }
2607
+ .ln-input-group--lg .ln-input-group__addon {
2608
+ height: 3rem;
2609
+ line-height: 3rem;
2610
+ }
2611
+ .ln-input-group--lg .ln-input-group__icon {
2612
+ width: 3rem;
2613
+ }
2614
+ }
2615
+ @layer blocks {
2616
+ .ln-choice {
2617
+ display: flex;
2618
+ flex-direction: column;
2619
+ gap: 0.75rem;
2620
+ }
2621
+ .ln-choice__option {
2622
+ display: flex;
2623
+ gap: 0.75rem;
2624
+ align-items: flex-start;
2625
+ cursor: pointer;
2626
+ }
2627
+ .ln-choice__input {
2628
+ appearance: none;
2629
+ flex: none;
2630
+ width: 1.25rem;
2631
+ height: 1.25rem;
2632
+ margin: 0.125rem 0 0;
2633
+ border: var(--bd1) solid var(--border-control);
2634
+ border-radius: var(--r-xs);
2635
+ background: var(--surface);
2636
+ display: grid;
2637
+ place-items: center;
2638
+ cursor: pointer;
2639
+ }
2640
+ .ln-choice__input[type=radio] {
2641
+ border-radius: 50%;
2642
+ }
2643
+ .ln-choice__input:checked {
2644
+ background: var(--primary);
2645
+ border-color: var(--primary);
2646
+ }
2647
+ .ln-choice__input[type=checkbox]:checked::after {
2648
+ content: "";
2649
+ width: 0.625rem;
2650
+ height: 0.375rem;
2651
+ border: 2px solid var(--on-primary);
2652
+ border-top: 0;
2653
+ border-right: 0;
2654
+ transform: translateY(-1px) rotate(-45deg);
2655
+ }
2656
+ .ln-choice__input[type=radio]:checked::after {
2657
+ content: "";
2658
+ width: 0.5rem;
2659
+ height: 0.5rem;
2660
+ border-radius: 50%;
2661
+ background: var(--on-primary);
2662
+ }
2663
+ .ln-choice__input:focus-visible {
2664
+ outline: 2px solid var(--focus);
2665
+ outline-offset: 2px;
2666
+ }
2667
+ .ln-choice__input[aria-invalid=true] {
2668
+ border-color: var(--danger);
2669
+ }
2670
+ .ln-choice__input:disabled {
2671
+ opacity: 0.5;
2672
+ cursor: not-allowed;
2673
+ }
2674
+ .ln-choice__input:disabled ~ .ln-choice__label {
2675
+ opacity: 0.5;
2676
+ cursor: not-allowed;
2677
+ }
2678
+ .ln-choice__body {
2679
+ flex: 1;
2680
+ display: flex;
2681
+ flex-direction: column;
2682
+ gap: 0.25rem;
2683
+ }
2684
+ .ln-choice__label {
2685
+ font: 500 1rem/1.5rem var(--f-ui);
2686
+ }
2687
+ .ln-choice__description {
2688
+ font: 400 0.875rem/1.25rem var(--f-ui);
2689
+ color: var(--c-muted);
2690
+ }
2691
+ .ln-choice__hint {
2692
+ font: 400 0.875rem/1.25rem var(--f-ui);
2693
+ color: var(--c-muted);
2694
+ }
2695
+ .ln-choice__aside {
2696
+ font: 500 1rem/1.5rem var(--f-ui);
2697
+ font-variant-numeric: tabular-nums;
2698
+ }
2699
+ .ln-choice--card {
2700
+ gap: 1.5rem;
2701
+ }
2702
+ .ln-choice--card .ln-choice__option {
2703
+ padding: 0.75rem;
2704
+ border-radius: var(--r-xs);
2705
+ background: var(--surface);
2706
+ outline: var(--bd1) solid var(--border);
2707
+ outline-offset: calc(-1 * var(--bd1));
2708
+ }
2709
+ .ln-choice--card .ln-choice__option:has(:checked) {
2710
+ background: var(--primary-subtle);
2711
+ outline: var(--bd2) solid var(--primary-text);
2712
+ outline-offset: calc(-1 * var(--bd2));
2713
+ }
2714
+ .ln-choice--switch {
2715
+ gap: 1rem;
2716
+ }
2717
+ .ln-choice--switch .ln-choice__input {
2718
+ width: 2.5rem;
2719
+ height: 1.5rem;
2720
+ margin: 0;
2721
+ border-radius: 999px;
2722
+ display: block;
2723
+ position: relative;
2724
+ }
2725
+ .ln-choice--switch .ln-choice__input::after {
2726
+ content: "";
2727
+ position: absolute;
2728
+ top: 0.25rem;
2729
+ left: 0.25rem;
2730
+ width: 1rem;
2731
+ height: 1rem;
2732
+ border-radius: 50%;
2733
+ background: var(--c-muted);
2734
+ transition: transform 0.2s;
2735
+ }
2736
+ .ln-choice--switch .ln-choice__input:checked::after {
2737
+ transform: translateX(1rem);
2738
+ background: var(--on-primary);
2739
+ border: 0;
2740
+ width: 1rem;
2741
+ height: 1rem;
2742
+ }
2743
+ .ln-choice--inline {
2744
+ flex-direction: row;
2745
+ flex-wrap: wrap;
2746
+ gap: var(--s3);
2747
+ }
2748
+ }
2749
+ @layer blocks {
2750
+ .ln-form {
2751
+ display: flex;
2752
+ flex-direction: column;
2753
+ gap: var(--s3);
2754
+ }
2755
+ .ln-form__section {
2756
+ display: flex;
2757
+ flex-direction: column;
2758
+ gap: var(--s3);
2759
+ }
2760
+ .ln-form__section:not(:first-child) {
2761
+ padding-top: calc(var(--s3) - var(--bd1));
2762
+ border-top: var(--bd1) solid var(--border);
2763
+ }
2764
+ .ln-form__header {
2765
+ font: 600 var(--t-h4-s)/var(--t-h4-lh) var(--f-ui);
2766
+ }
2767
+ .ln-form__title {
2768
+ font: 600 var(--t-h4-s)/var(--t-h4-lh) var(--f-ui);
2769
+ }
2770
+ .ln-form__description {
2771
+ font-size: var(--t-body-sm-s);
2772
+ line-height: var(--t-body-sm-lh);
2773
+ color: var(--c-muted);
2774
+ }
2775
+ .ln-form__row {
2776
+ display: grid;
2777
+ grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
2778
+ gap: var(--s3);
2779
+ }
2780
+ .ln-form__actions {
2781
+ display: flex;
2782
+ align-items: center;
2783
+ gap: var(--s2);
2784
+ padding-top: calc(var(--s3) - var(--bd1));
2785
+ border-top: var(--bd1) solid var(--border);
2786
+ }
2787
+ .ln-form__actions--plain {
2788
+ padding-top: 0;
2789
+ border-top: 0;
2790
+ }
2791
+ .ln-form__actions--end {
2792
+ justify-content: flex-end;
2793
+ }
2794
+ .ln-form__actions--sticky {
2795
+ position: sticky;
2796
+ bottom: 0;
2797
+ background-color: var(--surface);
2798
+ padding-block: var(--s3);
2799
+ z-index: 10;
2800
+ }
2801
+ .ln-form--aside .ln-form__section {
2802
+ display: grid;
2803
+ grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
2804
+ gap: var(--s4);
2805
+ align-items: start;
2806
+ }
2807
+ .ln-form--compact {
2808
+ gap: var(--s2);
2809
+ }
2810
+ .ln-form--compact .ln-form__section {
2811
+ gap: var(--s2);
2812
+ }
2813
+ }
2814
+ @layer blocks {
2815
+ .ln-spinner {
2816
+ --_fill: currentColor;
2817
+ --_size: 24px;
2818
+ display: inline-block;
2819
+ width: var(--_size);
2820
+ height: var(--_size);
2821
+ border: 2px solid transparent;
2822
+ border-top-color: var(--_fill);
2823
+ border-left-color: var(--_fill);
2824
+ border-radius: var(--r-circle);
2825
+ animation: ln-spin 1s linear infinite;
2826
+ }
2827
+ .ln-spinner__label {
2828
+ position: absolute;
2829
+ width: 1px;
2830
+ height: 1px;
2831
+ padding: 0;
2832
+ margin: -1px;
2833
+ overflow: hidden;
2834
+ clip: rect(0, 0, 0, 0);
2835
+ white-space: nowrap;
2836
+ border: 0;
2837
+ }
2838
+ .ln-spinner--sm {
2839
+ --_size: 16px;
2840
+ }
2841
+ .ln-spinner--md {
2842
+ --_size: 24px;
2843
+ }
2844
+ .ln-spinner--lg {
2845
+ --_size: 32px;
2846
+ }
2847
+ .ln-spinner--primary {
2848
+ --_fill: var(--primary);
2849
+ --_on: var(--on-primary);
2850
+ --_subtle: var(--primary-subtle);
2851
+ --_text: var(--primary-text);
2852
+ --_border-color: var(--primary-border);
2853
+ --_hover: var(--primary-hover);
2854
+ }
2855
+ .ln-spinner--secondary {
2856
+ --_fill: var(--secondary);
2857
+ --_on: var(--on-secondary);
2858
+ --_subtle: var(--secondary-subtle);
2859
+ --_text: var(--secondary-text);
2860
+ --_border-color: var(--secondary-border);
2861
+ --_hover: var(--secondary-hover);
2862
+ }
2863
+ .ln-spinner--success {
2864
+ --_fill: var(--success);
2865
+ --_on: var(--on-success);
2866
+ --_subtle: var(--success-subtle);
2867
+ --_text: var(--success-text);
2868
+ --_border-color: var(--success-border);
2869
+ --_hover: var(--success-hover);
2870
+ }
2871
+ .ln-spinner--warning {
2872
+ --_fill: var(--warning);
2873
+ --_on: var(--on-warning);
2874
+ --_subtle: var(--warning-subtle);
2875
+ --_text: var(--warning-text);
2876
+ --_border-color: var(--warning-border);
2877
+ --_hover: var(--warning-hover);
2878
+ }
2879
+ .ln-spinner--danger {
2880
+ --_fill: var(--danger);
2881
+ --_on: var(--on-danger);
2882
+ --_subtle: var(--danger-subtle);
2883
+ --_text: var(--danger-text);
2884
+ --_border-color: var(--danger-border);
2885
+ --_hover: var(--danger-hover);
2886
+ }
2887
+ .ln-spinner--info {
2888
+ --_fill: var(--info);
2889
+ --_on: var(--on-info);
2890
+ --_subtle: var(--info-subtle);
2891
+ --_text: var(--info-text);
2892
+ --_border-color: var(--info-border);
2893
+ --_hover: var(--info-hover);
2894
+ }
2895
+ @keyframes ln-spin {
2896
+ to {
2897
+ transform: rotate(360deg);
2898
+ }
2899
+ }
2900
+ }
2901
+ @layer blocks {
2902
+ .ln-badge {
2903
+ --_fill: var(--surface-raised);
2904
+ --_on: var(--text);
2905
+ --_text: var(--c-muted);
2906
+ --_subtle: var(--surface-sunken);
2907
+ display: inline-block;
2908
+ height: 1.5rem;
2909
+ padding-inline: 0.5rem;
2910
+ border-radius: 999px;
2911
+ font: 500 0.75rem/1.5rem var(--f-ui);
2912
+ background: var(--_subtle);
2913
+ color: var(--_text);
2914
+ white-space: nowrap;
2915
+ vertical-align: middle;
2916
+ }
2917
+ .ln-badge--solid {
2918
+ background: var(--_fill);
2919
+ color: var(--_on);
2920
+ }
2921
+ .ln-badge--outline {
2922
+ background: transparent;
2923
+ border: var(--bd1) solid currentColor;
2924
+ }
2925
+ .ln-badge--sm {
2926
+ padding: 0 var(--s-h);
2927
+ font-size: 10px;
2928
+ line-height: 16px;
2929
+ }
2930
+ .ln-badge--pill {
2931
+ border-radius: 999px;
2932
+ }
2933
+ .ln-badge--count {
2934
+ font: 500 0.75rem/1.5rem var(--f-mono);
2935
+ padding-inline: 0.375rem;
2936
+ min-width: 1.5rem;
2937
+ text-align: center;
2938
+ }
2939
+ .ln-badge__dot {
2940
+ display: inline-block;
2941
+ width: 0.5rem;
2942
+ height: 0.5rem;
2943
+ border-radius: 50%;
2944
+ background: currentColor;
2945
+ vertical-align: middle;
2946
+ margin-top: -2px;
2947
+ margin-right: 0.25rem;
2948
+ }
2949
+ .ln-badge__icon {
2950
+ width: 1em;
2951
+ height: 1em;
2952
+ flex: none;
2953
+ }
2954
+ .ln-badge--primary {
2955
+ --_fill: var(--primary);
2956
+ --_on: var(--on-primary);
2957
+ --_subtle: var(--primary-subtle);
2958
+ --_text: var(--primary-text);
2959
+ --_border-color: var(--primary-border);
2960
+ --_hover: var(--primary-hover);
2961
+ }
2962
+ .ln-badge--secondary {
2963
+ --_fill: var(--secondary);
2964
+ --_on: var(--on-secondary);
2965
+ --_subtle: var(--secondary-subtle);
2966
+ --_text: var(--secondary-text);
2967
+ --_border-color: var(--secondary-border);
2968
+ --_hover: var(--secondary-hover);
2969
+ }
2970
+ .ln-badge--success {
2971
+ --_fill: var(--success);
2972
+ --_on: var(--on-success);
2973
+ --_subtle: var(--success-subtle);
2974
+ --_text: var(--success-text);
2975
+ --_border-color: var(--success-border);
2976
+ --_hover: var(--success-hover);
2977
+ }
2978
+ .ln-badge--warning {
2979
+ --_fill: var(--warning);
2980
+ --_on: var(--on-warning);
2981
+ --_subtle: var(--warning-subtle);
2982
+ --_text: var(--warning-text);
2983
+ --_border-color: var(--warning-border);
2984
+ --_hover: var(--warning-hover);
2985
+ }
2986
+ .ln-badge--danger {
2987
+ --_fill: var(--danger);
2988
+ --_on: var(--on-danger);
2989
+ --_subtle: var(--danger-subtle);
2990
+ --_text: var(--danger-text);
2991
+ --_border-color: var(--danger-border);
2992
+ --_hover: var(--danger-hover);
2993
+ }
2994
+ .ln-badge--info {
2995
+ --_fill: var(--info);
2996
+ --_on: var(--on-info);
2997
+ --_subtle: var(--info-subtle);
2998
+ --_text: var(--info-text);
2999
+ --_border-color: var(--info-border);
3000
+ --_hover: var(--info-hover);
3001
+ }
3002
+ }
3003
+ @layer blocks {
3004
+ .ln-tag {
3005
+ --_fill: var(--surface-raised);
3006
+ --_on: var(--text);
3007
+ --_text: var(--text);
3008
+ --_subtle: var(--surface-raised);
3009
+ display: inline-flex;
3010
+ align-items: center;
3011
+ gap: 0.25rem;
3012
+ height: 2rem;
3013
+ padding-inline: 0.75rem;
3014
+ border-radius: var(--r-xs);
3015
+ font: 500 0.875rem/1.25rem var(--f-ui);
3016
+ background: var(--_fill);
3017
+ color: var(--_on);
3018
+ border: 0;
3019
+ }
3020
+ .ln-tag__icon {
3021
+ width: 1em;
3022
+ height: 1em;
3023
+ flex: none;
3024
+ }
3025
+ .ln-tag__label {
3026
+ flex: 1;
3027
+ }
3028
+ .ln-tag__remove {
3029
+ display: inline-grid;
3030
+ place-items: center;
3031
+ width: 1.25rem;
3032
+ height: 1.25rem;
3033
+ border: 0;
3034
+ border-radius: var(--r-sm);
3035
+ background: transparent;
3036
+ color: currentColor;
3037
+ cursor: pointer;
3038
+ padding: 0;
3039
+ margin-left: 0.125rem;
3040
+ margin-top: -0.05rem;
3041
+ line-height: 0;
3042
+ }
3043
+ .ln-tag__remove:hover {
3044
+ background: color-mix(in srgb, currentColor 12%, transparent);
3045
+ color: var(--text);
3046
+ }
3047
+ .ln-tag--selectable {
3048
+ padding-inline: 0.75rem;
3049
+ cursor: pointer;
3050
+ border: 0;
3051
+ }
3052
+ .ln-tag--selectable[aria-pressed=true] {
3053
+ background: var(--primary-subtle);
3054
+ color: var(--primary-text);
3055
+ border: var(--bd1) solid var(--primary-text);
3056
+ }
3057
+ .ln-tag--primary {
3058
+ --_fill: var(--primary);
3059
+ --_on: var(--on-primary);
3060
+ --_subtle: var(--primary-subtle);
3061
+ --_text: var(--primary-text);
3062
+ --_border-color: var(--primary-border);
3063
+ --_hover: var(--primary-hover);
3064
+ }
3065
+ .ln-tag--secondary {
3066
+ --_fill: var(--secondary);
3067
+ --_on: var(--on-secondary);
3068
+ --_subtle: var(--secondary-subtle);
3069
+ --_text: var(--secondary-text);
3070
+ --_border-color: var(--secondary-border);
3071
+ --_hover: var(--secondary-hover);
3072
+ }
3073
+ .ln-tag--success {
3074
+ --_fill: var(--success);
3075
+ --_on: var(--on-success);
3076
+ --_subtle: var(--success-subtle);
3077
+ --_text: var(--success-text);
3078
+ --_border-color: var(--success-border);
3079
+ --_hover: var(--success-hover);
3080
+ }
3081
+ .ln-tag--warning {
3082
+ --_fill: var(--warning);
3083
+ --_on: var(--on-warning);
3084
+ --_subtle: var(--warning-subtle);
3085
+ --_text: var(--warning-text);
3086
+ --_border-color: var(--warning-border);
3087
+ --_hover: var(--warning-hover);
3088
+ }
3089
+ .ln-tag--danger {
3090
+ --_fill: var(--danger);
3091
+ --_on: var(--on-danger);
3092
+ --_subtle: var(--danger-subtle);
3093
+ --_text: var(--danger-text);
3094
+ --_border-color: var(--danger-border);
3095
+ --_hover: var(--danger-hover);
3096
+ }
3097
+ .ln-tag--info {
3098
+ --_fill: var(--info);
3099
+ --_on: var(--on-info);
3100
+ --_subtle: var(--info-subtle);
3101
+ --_text: var(--info-text);
3102
+ --_border-color: var(--info-border);
3103
+ --_hover: var(--info-hover);
3104
+ }
3105
+ }
3106
+ @layer blocks {
3107
+ .ln-progress {
3108
+ --_fill: var(--primary);
3109
+ --_track-height: 8px;
3110
+ display: flex;
3111
+ flex-direction: column;
3112
+ gap: var(--s1);
3113
+ }
3114
+ .ln-progress__header {
3115
+ display: flex;
3116
+ justify-content: space-between;
3117
+ align-items: baseline;
3118
+ }
3119
+ .ln-progress__label {
3120
+ font: 500 var(--t-body-sm-s)/var(--t-body-sm-lh) var(--f-ui);
3121
+ color: var(--text);
3122
+ }
3123
+ .ln-progress__value {
3124
+ font: var(--t-meta-s)/var(--t-meta-lh) var(--f-mono);
3125
+ color: var(--c-muted);
3126
+ font-variant-numeric: tabular-nums;
3127
+ }
3128
+ .ln-progress__track {
3129
+ width: 100%;
3130
+ height: var(--_track-height);
3131
+ background-color: var(--surface-sunken);
3132
+ border-radius: var(--r-pill);
3133
+ overflow: hidden;
3134
+ }
3135
+ .ln-progress__bar {
3136
+ height: 100%;
3137
+ width: var(--progress, 0%);
3138
+ background-color: var(--_fill);
3139
+ border-radius: var(--r-pill);
3140
+ transition: width var(--dur-slow) var(--e-standard);
3141
+ }
3142
+ .ln-progress--xs {
3143
+ --_track-height: 4px;
3144
+ }
3145
+ .ln-progress--sm {
3146
+ --_track-height: 8px;
3147
+ }
3148
+ .ln-progress--md {
3149
+ --_track-height: 16px;
3150
+ }
3151
+ .ln-progress--indeterminate .ln-progress__bar {
3152
+ width: 40%;
3153
+ animation: ln-progress-indeterminate 1.8s var(--e-standard) infinite;
3154
+ }
3155
+ .ln-progress--primary {
3156
+ --_fill: var(--primary);
3157
+ --_on: var(--on-primary);
3158
+ --_subtle: var(--primary-subtle);
3159
+ --_text: var(--primary-text);
3160
+ --_border-color: var(--primary-border);
3161
+ --_hover: var(--primary-hover);
3162
+ }
3163
+ .ln-progress--secondary {
3164
+ --_fill: var(--secondary);
3165
+ --_on: var(--on-secondary);
3166
+ --_subtle: var(--secondary-subtle);
3167
+ --_text: var(--secondary-text);
3168
+ --_border-color: var(--secondary-border);
3169
+ --_hover: var(--secondary-hover);
3170
+ }
3171
+ .ln-progress--success {
3172
+ --_fill: var(--success);
3173
+ --_on: var(--on-success);
3174
+ --_subtle: var(--success-subtle);
3175
+ --_text: var(--success-text);
3176
+ --_border-color: var(--success-border);
3177
+ --_hover: var(--success-hover);
3178
+ }
3179
+ .ln-progress--warning {
3180
+ --_fill: var(--warning);
3181
+ --_on: var(--on-warning);
3182
+ --_subtle: var(--warning-subtle);
3183
+ --_text: var(--warning-text);
3184
+ --_border-color: var(--warning-border);
3185
+ --_hover: var(--warning-hover);
3186
+ }
3187
+ .ln-progress--danger {
3188
+ --_fill: var(--danger);
3189
+ --_on: var(--on-danger);
3190
+ --_subtle: var(--danger-subtle);
3191
+ --_text: var(--danger-text);
3192
+ --_border-color: var(--danger-border);
3193
+ --_hover: var(--danger-hover);
3194
+ }
3195
+ .ln-progress--info {
3196
+ --_fill: var(--info);
3197
+ --_on: var(--on-info);
3198
+ --_subtle: var(--info-subtle);
3199
+ --_text: var(--info-text);
3200
+ --_border-color: var(--info-border);
3201
+ --_hover: var(--info-hover);
3202
+ }
3203
+ @keyframes ln-progress-indeterminate {
3204
+ 0% {
3205
+ transform: translateX(-100%);
3206
+ }
3207
+ 100% {
3208
+ transform: translateX(350%);
3209
+ }
3210
+ }
3211
+ }
3212
+ @layer blocks {
3213
+ .ln-skeleton {
3214
+ display: flex;
3215
+ flex-direction: column;
3216
+ gap: var(--s1);
3217
+ }
3218
+ .ln-skeleton__line {
3219
+ height: 24px;
3220
+ background-color: var(--surface-raised);
3221
+ border-radius: var(--r-sm);
3222
+ animation: ln-pulse 1.5s ease-in-out infinite alternate;
3223
+ }
3224
+ .ln-skeleton__block {
3225
+ background-color: var(--surface-raised);
3226
+ border-radius: var(--r-md);
3227
+ animation: ln-pulse 1.5s ease-in-out infinite alternate;
3228
+ }
3229
+ .ln-skeleton__circle {
3230
+ border-radius: var(--r-circle);
3231
+ background-color: var(--surface-raised);
3232
+ animation: ln-pulse 1.5s ease-in-out infinite alternate;
3233
+ aspect-ratio: 1;
3234
+ }
3235
+ .ln-skeleton--text-body .ln-skeleton__line {
3236
+ height: 24px;
3237
+ }
3238
+ .ln-skeleton--text-sm .ln-skeleton__line {
3239
+ height: 20px;
3240
+ }
3241
+ .ln-skeleton--text-h2 .ln-skeleton__line {
3242
+ height: 48px;
3243
+ }
3244
+ .ln-skeleton--text-h3 .ln-skeleton__line {
3245
+ height: 32px;
3246
+ }
3247
+ @keyframes ln-pulse {
3248
+ from {
3249
+ opacity: 0.4;
3250
+ }
3251
+ to {
3252
+ opacity: 1;
3253
+ }
3254
+ }
3255
+ }
3256
+ @layer blocks {
3257
+ .ln-empty-state {
3258
+ display: flex;
3259
+ flex-direction: column;
3260
+ align-items: center;
3261
+ text-align: center;
3262
+ padding: 72px var(--s4);
3263
+ }
3264
+ .ln-empty-state__media {
3265
+ max-width: 200px;
3266
+ margin-bottom: var(--s3);
3267
+ color: var(--c-subtle);
3268
+ }
3269
+ .ln-empty-state__icon {
3270
+ font-size: 48px;
3271
+ color: var(--c-subtle);
3272
+ margin-bottom: var(--s3);
3273
+ }
3274
+ .ln-empty-state__title {
3275
+ font: 600 var(--t-h4-s)/var(--t-h4-lh) var(--f-ui);
3276
+ color: var(--text);
3277
+ margin-bottom: var(--s1);
3278
+ }
3279
+ .ln-empty-state__body {
3280
+ font-size: var(--t-body-sm-s);
3281
+ line-height: var(--t-body-sm-lh);
3282
+ color: var(--c-muted);
3283
+ max-width: 400px;
3284
+ margin-bottom: var(--s4);
3285
+ }
3286
+ .ln-empty-state__actions {
3287
+ display: flex;
3288
+ gap: var(--s2);
3289
+ align-items: center;
3290
+ }
3291
+ .ln-empty-state--compact {
3292
+ padding: 48px var(--s3);
3293
+ }
3294
+ .ln-empty-state--compact .ln-empty-state__media {
3295
+ max-width: 120px;
3296
+ }
3297
+ .ln-empty-state--sunken {
3298
+ background-color: var(--surface-sunken);
3299
+ border-radius: var(--r-lg);
3300
+ }
3301
+ }
3302
+ @layer blocks {
3303
+ .ln-alert {
3304
+ --_text: var(--info-text);
3305
+ --_subtle: var(--info-subtle);
3306
+ --_fill: var(--info);
3307
+ --_on: var(--on-info);
3308
+ --_border-color: var(--info-border);
3309
+ --border: var(--_border-color);
3310
+ display: flex;
3311
+ gap: 0.75rem;
3312
+ padding: 1rem;
3313
+ }
3314
+ .ln-alert[hidden] {
3315
+ display: none;
3316
+ }
3317
+ .ln-alert {
3318
+ background: var(--_subtle);
3319
+ color: var(--text);
3320
+ }
3321
+ .ln-alert__icon {
3322
+ line-height: 1.5rem;
3323
+ color: var(--_text);
3324
+ }
3325
+ .ln-alert__content {
3326
+ flex: 1;
3327
+ min-width: 0;
3328
+ }
3329
+ .ln-alert__title {
3330
+ font: 600 1rem/1.5rem var(--f-ui);
3331
+ margin-bottom: 0.25rem;
3332
+ }
3333
+ .ln-alert__body {
3334
+ font: 400 1rem/1.5rem var(--f-ui);
3335
+ color: var(--c-muted);
3336
+ }
3337
+ .ln-alert__actions {
3338
+ display: flex;
3339
+ gap: var(--s1);
3340
+ margin-top: var(--s2);
3341
+ }
3342
+ .ln-alert__dismiss {
3343
+ display: inline-flex;
3344
+ align-items: center;
3345
+ justify-content: center;
3346
+ width: 1.5rem;
3347
+ height: 1.5rem;
3348
+ flex-shrink: 0;
3349
+ padding: 0;
3350
+ border: none;
3351
+ background: none;
3352
+ color: var(--c-muted);
3353
+ cursor: pointer;
3354
+ border-radius: var(--r-sm);
3355
+ }
3356
+ .ln-alert__dismiss:hover {
3357
+ color: var(--text);
3358
+ background-color: color-mix(in srgb, currentColor 10%, transparent);
3359
+ }
3360
+ .ln-alert--solid {
3361
+ background: var(--_fill);
3362
+ color: var(--_on);
3363
+ }
3364
+ .ln-alert--solid .ln-alert__icon,
3365
+ .ln-alert--solid .ln-alert__body {
3366
+ color: var(--_on);
3367
+ }
3368
+ .ln-alert--accent {
3369
+ border-left: var(--bd3) solid var(--_text);
3370
+ border-radius: 0 var(--r-xs) var(--r-xs) 0;
3371
+ }
3372
+ .ln-alert--banner {
3373
+ border-radius: 0;
3374
+ padding-inline: var(--s4);
3375
+ }
3376
+ .ln-alert--compact {
3377
+ padding: var(--s2);
3378
+ }
3379
+ .ln-alert--primary {
3380
+ --_fill: var(--primary);
3381
+ --_on: var(--on-primary);
3382
+ --_subtle: var(--primary-subtle);
3383
+ --_text: var(--primary-text);
3384
+ --_border-color: var(--primary-border);
3385
+ --_hover: var(--primary-hover);
3386
+ }
3387
+ .ln-alert--secondary {
3388
+ --_fill: var(--secondary);
3389
+ --_on: var(--on-secondary);
3390
+ --_subtle: var(--secondary-subtle);
3391
+ --_text: var(--secondary-text);
3392
+ --_border-color: var(--secondary-border);
3393
+ --_hover: var(--secondary-hover);
3394
+ }
3395
+ .ln-alert--success {
3396
+ --_fill: var(--success);
3397
+ --_on: var(--on-success);
3398
+ --_subtle: var(--success-subtle);
3399
+ --_text: var(--success-text);
3400
+ --_border-color: var(--success-border);
3401
+ --_hover: var(--success-hover);
3402
+ }
3403
+ .ln-alert--warning {
3404
+ --_fill: var(--warning);
3405
+ --_on: var(--on-warning);
3406
+ --_subtle: var(--warning-subtle);
3407
+ --_text: var(--warning-text);
3408
+ --_border-color: var(--warning-border);
3409
+ --_hover: var(--warning-hover);
3410
+ }
3411
+ .ln-alert--danger {
3412
+ --_fill: var(--danger);
3413
+ --_on: var(--on-danger);
3414
+ --_subtle: var(--danger-subtle);
3415
+ --_text: var(--danger-text);
3416
+ --_border-color: var(--danger-border);
3417
+ --_hover: var(--danger-hover);
3418
+ }
3419
+ .ln-alert--info {
3420
+ --_fill: var(--info);
3421
+ --_on: var(--on-info);
3422
+ --_subtle: var(--info-subtle);
3423
+ --_text: var(--info-text);
3424
+ --_border-color: var(--info-border);
3425
+ --_hover: var(--info-hover);
3426
+ }
3427
+ }
3428
+ @layer blocks {
3429
+ .ln-tooltip {
3430
+ position: absolute;
3431
+ z-index: 1000;
3432
+ max-width: 250px;
3433
+ padding: var(--s1) var(--s2);
3434
+ font: 500 var(--t-meta-s)/var(--t-meta-lh) var(--f-ui);
3435
+ color: var(--c-inverse);
3436
+ background-color: var(--surface-inverse);
3437
+ border-radius: var(--r-md);
3438
+ box-shadow: var(--sh2);
3439
+ pointer-events: none;
3440
+ white-space: normal;
3441
+ word-wrap: break-word;
3442
+ }
3443
+ .ln-tooltip__arrow {
3444
+ position: absolute;
3445
+ width: 8px;
3446
+ height: 8px;
3447
+ background-color: var(--surface-inverse);
3448
+ transform: rotate(45deg);
3449
+ }
3450
+ .ln-tooltip--top .ln-tooltip__arrow {
3451
+ bottom: -4px;
3452
+ left: 50%;
3453
+ margin-left: -4px;
3454
+ }
3455
+ .ln-tooltip--bottom .ln-tooltip__arrow {
3456
+ top: -4px;
3457
+ left: 50%;
3458
+ margin-left: -4px;
3459
+ }
3460
+ .ln-tooltip--start .ln-tooltip__arrow {
3461
+ right: -4px;
3462
+ top: 50%;
3463
+ margin-top: -4px;
3464
+ }
3465
+ .ln-tooltip--end .ln-tooltip__arrow {
3466
+ left: -4px;
3467
+ top: 50%;
3468
+ margin-top: -4px;
3469
+ }
3470
+ }
3471
+ @layer blocks {
3472
+ .ln-toast {
3473
+ --_fill: var(--primary);
3474
+ --_on: var(--on-primary);
3475
+ --_subtle: var(--primary-subtle);
3476
+ --_text: var(--primary-text);
3477
+ display: flex;
3478
+ align-items: flex-start;
3479
+ gap: var(--s2);
3480
+ min-width: 300px;
3481
+ max-width: 420px;
3482
+ padding: var(--s2);
3483
+ background-color: var(--surface);
3484
+ border-radius: var(--r-xs);
3485
+ position: relative;
3486
+ overflow: hidden;
3487
+ }
3488
+ .ln-toast[hidden] {
3489
+ display: none;
3490
+ }
3491
+ .ln-toast__icon {
3492
+ display: inline-flex;
3493
+ align-items: center;
3494
+ justify-content: center;
3495
+ width: 1.25rem;
3496
+ height: 1.25rem;
3497
+ flex-shrink: 0;
3498
+ margin-top: 0;
3499
+ color: var(--_fill);
3500
+ }
3501
+ .ln-toast__content {
3502
+ flex: 1;
3503
+ min-width: 0;
3504
+ }
3505
+ .ln-toast__title {
3506
+ font: 600 var(--t-body-sm-s)/var(--t-body-sm-lh) var(--f-ui);
3507
+ color: var(--text);
3508
+ }
3509
+ .ln-toast__body {
3510
+ font-size: var(--t-body-sm-s);
3511
+ line-height: var(--t-body-sm-lh);
3512
+ color: var(--c-muted);
3513
+ margin-top: 0;
3514
+ }
3515
+ .ln-toast__action {
3516
+ margin-top: var(--s2);
3517
+ }
3518
+ .ln-toast__close {
3519
+ display: inline-flex;
3520
+ align-items: center;
3521
+ justify-content: center;
3522
+ width: 24px;
3523
+ height: 24px;
3524
+ padding: 0;
3525
+ border: none;
3526
+ background: none;
3527
+ color: var(--c-muted);
3528
+ cursor: pointer;
3529
+ border-radius: var(--r-sm);
3530
+ flex-shrink: 0;
3531
+ }
3532
+ .ln-toast__close:hover {
3533
+ color: var(--text);
3534
+ background-color: var(--surface-raised);
3535
+ }
3536
+ .ln-toast__close:focus-visible {
3537
+ outline: 2px solid var(--focus);
3538
+ outline-offset: -2px;
3539
+ }
3540
+ .ln-toast__timer {
3541
+ position: absolute;
3542
+ bottom: 0;
3543
+ left: 0;
3544
+ height: 3px;
3545
+ background-color: var(--_fill);
3546
+ transition: width linear;
3547
+ }
3548
+ .ln-toast--solid {
3549
+ background-color: var(--_fill);
3550
+ color: var(--_on);
3551
+ }
3552
+ .ln-toast--solid .ln-toast__icon,
3553
+ .ln-toast--solid .ln-toast__title {
3554
+ color: var(--_on);
3555
+ }
3556
+ .ln-toast--solid .ln-toast__body {
3557
+ color: color-mix(in srgb, var(--_on) 80%, transparent);
3558
+ }
3559
+ .ln-toast--solid .ln-toast__close {
3560
+ color: var(--_on);
3561
+ }
3562
+ .ln-toast--solid .ln-toast__close:hover {
3563
+ background-color: color-mix(in srgb, var(--_on) 15%, transparent);
3564
+ }
3565
+ .ln-toast--solid .ln-toast__timer {
3566
+ background-color: var(--_on);
3567
+ opacity: 0.3;
3568
+ }
3569
+ .ln-toast--primary {
3570
+ --_fill: var(--primary);
3571
+ --_on: var(--on-primary);
3572
+ --_subtle: var(--primary-subtle);
3573
+ --_text: var(--primary-text);
3574
+ --_border-color: var(--primary-border);
3575
+ --_hover: var(--primary-hover);
3576
+ }
3577
+ .ln-toast--secondary {
3578
+ --_fill: var(--secondary);
3579
+ --_on: var(--on-secondary);
3580
+ --_subtle: var(--secondary-subtle);
3581
+ --_text: var(--secondary-text);
3582
+ --_border-color: var(--secondary-border);
3583
+ --_hover: var(--secondary-hover);
3584
+ }
3585
+ .ln-toast--success {
3586
+ --_fill: var(--success);
3587
+ --_on: var(--on-success);
3588
+ --_subtle: var(--success-subtle);
3589
+ --_text: var(--success-text);
3590
+ --_border-color: var(--success-border);
3591
+ --_hover: var(--success-hover);
3592
+ }
3593
+ .ln-toast--warning {
3594
+ --_fill: var(--warning);
3595
+ --_on: var(--on-warning);
3596
+ --_subtle: var(--warning-subtle);
3597
+ --_text: var(--warning-text);
3598
+ --_border-color: var(--warning-border);
3599
+ --_hover: var(--warning-hover);
3600
+ }
3601
+ .ln-toast--danger {
3602
+ --_fill: var(--danger);
3603
+ --_on: var(--on-danger);
3604
+ --_subtle: var(--danger-subtle);
3605
+ --_text: var(--danger-text);
3606
+ --_border-color: var(--danger-border);
3607
+ --_hover: var(--danger-hover);
3608
+ }
3609
+ .ln-toast--info {
3610
+ --_fill: var(--info);
3611
+ --_on: var(--on-info);
3612
+ --_subtle: var(--info-subtle);
3613
+ --_text: var(--info-text);
3614
+ --_border-color: var(--info-border);
3615
+ --_hover: var(--info-hover);
3616
+ }
3617
+ .ln-toast-region {
3618
+ position: fixed;
3619
+ z-index: 1100;
3620
+ display: flex;
3621
+ flex-direction: column;
3622
+ gap: var(--s2);
3623
+ padding: var(--s3);
3624
+ pointer-events: none;
3625
+ }
3626
+ .ln-toast-region > * {
3627
+ pointer-events: auto;
3628
+ }
3629
+ .ln-toast-region--top-start {
3630
+ top: 0;
3631
+ left: 0;
3632
+ align-items: flex-start;
3633
+ }
3634
+ .ln-toast-region--top-center {
3635
+ top: 0;
3636
+ left: 50%;
3637
+ transform: translateX(-50%);
3638
+ align-items: center;
3639
+ }
3640
+ .ln-toast-region--top-end {
3641
+ top: 0;
3642
+ right: 0;
3643
+ align-items: flex-end;
3644
+ }
3645
+ .ln-toast-region--bottom-start {
3646
+ bottom: 0;
3647
+ left: 0;
3648
+ align-items: flex-start;
3649
+ }
3650
+ .ln-toast-region--bottom-center {
3651
+ bottom: 0;
3652
+ left: 50%;
3653
+ transform: translateX(-50%);
3654
+ align-items: center;
3655
+ }
3656
+ .ln-toast-region--bottom-end {
3657
+ bottom: 0;
3658
+ right: 0;
3659
+ align-items: flex-end;
3660
+ }
3661
+ }
3662
+ @layer blocks {
3663
+ .ln-divider {
3664
+ --_bw: var(--bd1);
3665
+ display: block;
3666
+ border: none;
3667
+ height: 0;
3668
+ margin: var(--s3) 0 calc(var(--s3) - var(--_bw));
3669
+ border-top: var(--_bw) solid var(--border);
3670
+ }
3671
+ .ln-divider__label {
3672
+ display: flex;
3673
+ align-items: center;
3674
+ gap: var(--s2);
3675
+ font: var(--t-meta-s)/var(--t-meta-lh) var(--f-ui);
3676
+ color: var(--c-muted);
3677
+ text-transform: uppercase;
3678
+ letter-spacing: 0.06em;
3679
+ font-weight: 500;
3680
+ }
3681
+ .ln-divider__label::before, .ln-divider__label::after {
3682
+ content: "";
3683
+ flex: 1;
3684
+ height: 0;
3685
+ border-top: var(--_bw) solid var(--border);
3686
+ }
3687
+ .ln-divider--vertical {
3688
+ display: inline-block;
3689
+ width: 0;
3690
+ height: 100%;
3691
+ margin: 0 calc(var(--s3) - var(--_bw)) 0 var(--s3);
3692
+ border-top: 0;
3693
+ border-left: var(--_bw) solid var(--border);
3694
+ }
3695
+ .ln-divider--strong {
3696
+ --_bw: var(--bd2);
3697
+ }
3698
+ .ln-divider--space-md {
3699
+ margin: 24px 0 calc(24px - var(--_bw));
3700
+ }
3701
+ .ln-divider--space-lg {
3702
+ margin: 48px 0 calc(48px - var(--_bw));
3703
+ }
3704
+ .ln-divider--space-xl {
3705
+ margin: 72px 0 calc(72px - var(--_bw));
3706
+ }
3707
+ }
3708
+ @layer blocks {
3709
+ .ln-modal {
3710
+ --_max-width: min(90vw, 560px);
3711
+ position: relative;
3712
+ background-color: var(--surface-raised);
3713
+ color: var(--text);
3714
+ border: none;
3715
+ border-radius: var(--r-xs);
3716
+ padding: 0;
3717
+ max-inline-size: var(--_max-width);
3718
+ box-shadow: var(--sh4);
3719
+ overflow: visible;
3720
+ opacity: 1;
3721
+ transform: scale(1);
3722
+ transition: opacity var(--dur-base) var(--e-exit), transform var(--dur-base) var(--e-exit), overlay var(--dur-base) var(--e-exit) allow-discrete, display var(--dur-base) var(--e-exit) allow-discrete;
3723
+ }
3724
+ @starting-style {
3725
+ .ln-modal {
3726
+ opacity: 0;
3727
+ transform: scale(0.95);
3728
+ }
3729
+ }
3730
+ .ln-modal:not([open]) {
3731
+ opacity: 0;
3732
+ transform: scale(0.95);
3733
+ }
3734
+ .ln-modal::backdrop {
3735
+ background-color: var(--overlay);
3736
+ opacity: 1;
3737
+ transition: opacity var(--dur-base) var(--e-exit), overlay var(--dur-base) var(--e-exit) allow-discrete, display var(--dur-base) var(--e-exit) allow-discrete;
3738
+ }
3739
+ @starting-style {
3740
+ .ln-modal::backdrop {
3741
+ opacity: 0;
3742
+ }
3743
+ }
3744
+ .ln-modal:not([open])::backdrop {
3745
+ opacity: 0;
3746
+ }
3747
+ .ln-modal__close {
3748
+ position: absolute;
3749
+ top: var(--s2);
3750
+ right: var(--s2);
3751
+ z-index: 1;
3752
+ display: inline-flex;
3753
+ align-items: center;
3754
+ justify-content: center;
3755
+ width: 32px;
3756
+ height: 32px;
3757
+ padding: 0;
3758
+ border: none;
3759
+ background: none;
3760
+ color: var(--c-muted);
3761
+ cursor: pointer;
3762
+ border-radius: var(--r-md);
3763
+ flex-shrink: 0;
3764
+ }
3765
+ .ln-modal__close:hover {
3766
+ color: var(--text);
3767
+ background-color: var(--surface-raised);
3768
+ }
3769
+ .ln-modal__close:focus-visible {
3770
+ outline: 2px solid var(--focus);
3771
+ outline-offset: -2px;
3772
+ }
3773
+ .ln-modal__header {
3774
+ display: flex;
3775
+ align-items: center;
3776
+ gap: var(--s2);
3777
+ padding: var(--s4) calc(var(--s4) + 32px) 0 var(--s4);
3778
+ }
3779
+ .ln-modal__title {
3780
+ font: 600 var(--t-h4-s)/var(--t-h4-lh) var(--f-ui);
3781
+ flex: 1;
3782
+ min-width: 0;
3783
+ margin: 0;
3784
+ }
3785
+ .ln-modal__body {
3786
+ padding: var(--s4);
3787
+ overflow-y: auto;
3788
+ }
3789
+ .ln-modal__body > p:first-child,
3790
+ .ln-modal__body > h1:first-child,
3791
+ .ln-modal__body > h2:first-child,
3792
+ .ln-modal__body > h3:first-child,
3793
+ .ln-modal__body > h4:first-child,
3794
+ .ln-modal__body > h5:first-child,
3795
+ .ln-modal__body > h6:first-child {
3796
+ margin-top: 0;
3797
+ }
3798
+ .ln-modal__footer {
3799
+ display: flex;
3800
+ align-items: center;
3801
+ justify-content: flex-end;
3802
+ gap: var(--s2);
3803
+ padding: var(--s4);
3804
+ padding-top: 0;
3805
+ }
3806
+ .ln-modal--sm {
3807
+ --_max-width: min(90vw, 400px);
3808
+ }
3809
+ .ln-modal--md {
3810
+ --_max-width: min(90vw, 560px);
3811
+ }
3812
+ .ln-modal--lg {
3813
+ --_max-width: min(90vw, 800px);
3814
+ }
3815
+ .ln-modal--full {
3816
+ --_max-width: 100vw;
3817
+ max-block-size: 100vh;
3818
+ border-radius: 0;
3819
+ }
3820
+ .ln-modal--scroll-body {
3821
+ max-block-size: min(90vh, 600px);
3822
+ display: flex;
3823
+ flex-direction: column;
3824
+ }
3825
+ .ln-modal--scroll-body .ln-modal__body {
3826
+ flex: 1;
3827
+ overflow-y: auto;
3828
+ }
3829
+ .ln-modal--center {
3830
+ text-align: center;
3831
+ }
3832
+ .ln-modal--center .ln-modal__footer {
3833
+ justify-content: center;
3834
+ }
3835
+ .ln-modal--danger .ln-modal__title {
3836
+ color: var(--danger-text);
3837
+ }
3838
+ }
3839
+ @layer blocks {
3840
+ .ln-drawer {
3841
+ --_width: 400px;
3842
+ position: fixed;
3843
+ top: 0;
3844
+ right: 0;
3845
+ bottom: 0;
3846
+ width: min(var(--_width), 100vw);
3847
+ max-width: 100vw;
3848
+ max-height: 100vh;
3849
+ height: 100%;
3850
+ margin: 0;
3851
+ padding: 0;
3852
+ background-color: var(--surface-raised);
3853
+ color: var(--text);
3854
+ border: none;
3855
+ border-radius: var(--r-xs);
3856
+ box-shadow: var(--sh4);
3857
+ display: flex;
3858
+ flex-direction: column;
3859
+ transform: translateX(0);
3860
+ opacity: 1;
3861
+ transition: transform var(--dur-base) var(--e-exit), opacity var(--dur-base) var(--e-exit), overlay var(--dur-base) var(--e-exit) allow-discrete, display var(--dur-base) var(--e-exit) allow-discrete;
3862
+ }
3863
+ @starting-style {
3864
+ .ln-drawer {
3865
+ transform: translateX(100%);
3866
+ opacity: 0;
3867
+ }
3868
+ }
3869
+ .ln-drawer:not([open]) {
3870
+ transform: translateX(100%);
3871
+ opacity: 0;
3872
+ }
3873
+ .ln-drawer::backdrop {
3874
+ background-color: var(--overlay);
3875
+ opacity: 1;
3876
+ transition: opacity var(--dur-base) var(--e-exit), overlay var(--dur-base) var(--e-exit) allow-discrete, display var(--dur-base) var(--e-exit) allow-discrete;
3877
+ }
3878
+ @starting-style {
3879
+ .ln-drawer::backdrop {
3880
+ opacity: 0;
3881
+ }
3882
+ }
3883
+ .ln-drawer:not([open])::backdrop {
3884
+ opacity: 0;
3885
+ }
3886
+ .ln-drawer__close {
3887
+ position: absolute;
3888
+ top: var(--s2);
3889
+ right: var(--s2);
3890
+ z-index: 1;
3891
+ display: inline-flex;
3892
+ align-items: center;
3893
+ justify-content: center;
3894
+ width: 32px;
3895
+ height: 32px;
3896
+ padding: 0;
3897
+ border: none;
3898
+ background: none;
3899
+ color: var(--c-muted);
3900
+ cursor: pointer;
3901
+ border-radius: var(--r-md);
3902
+ flex-shrink: 0;
3903
+ }
3904
+ .ln-drawer__close:hover {
3905
+ color: var(--text);
3906
+ background-color: var(--surface-raised);
3907
+ }
3908
+ .ln-drawer__close:focus-visible {
3909
+ outline: 2px solid var(--focus);
3910
+ outline-offset: -2px;
3911
+ }
3912
+ .ln-drawer__header {
3913
+ display: flex;
3914
+ align-items: center;
3915
+ gap: var(--s2);
3916
+ padding: var(--s4) calc(var(--s4) + 32px) calc(var(--s4) - var(--bd1)) var(--s4);
3917
+ flex-shrink: 0;
3918
+ border-bottom: var(--bd1) solid var(--border);
3919
+ }
3920
+ .ln-drawer__title {
3921
+ font: 600 var(--t-h4-s)/var(--t-h4-lh) var(--f-ui);
3922
+ flex: 1;
3923
+ min-width: 0;
3924
+ margin: 0;
3925
+ }
3926
+ .ln-drawer__body {
3927
+ padding: 0 var(--s4);
3928
+ flex: 1;
3929
+ overflow-y: auto;
3930
+ }
3931
+ .ln-drawer__footer {
3932
+ display: flex;
3933
+ align-items: center;
3934
+ justify-content: flex-end;
3935
+ gap: var(--s2);
3936
+ padding: var(--s4);
3937
+ padding-top: calc(var(--s4) - var(--bd1));
3938
+ flex-shrink: 0;
3939
+ border-top: var(--bd1) solid var(--border);
3940
+ }
3941
+ .ln-drawer--start {
3942
+ right: auto;
3943
+ left: 0;
3944
+ }
3945
+ @starting-style {
3946
+ .ln-drawer--start {
3947
+ transform: translateX(-100%);
3948
+ }
3949
+ }
3950
+ .ln-drawer--start:not([open]) {
3951
+ transform: translateX(-100%);
3952
+ }
3953
+ .ln-drawer--bottom {
3954
+ top: auto;
3955
+ right: 0;
3956
+ left: 0;
3957
+ bottom: 0;
3958
+ width: 100%;
3959
+ height: auto;
3960
+ max-height: 80vh;
3961
+ border-radius: var(--r-xs) var(--r-xs) 0 0;
3962
+ }
3963
+ @starting-style {
3964
+ .ln-drawer--bottom {
3965
+ transform: translateY(100%);
3966
+ }
3967
+ }
3968
+ .ln-drawer--bottom:not([open]) {
3969
+ transform: translateY(100%);
3970
+ }
3971
+ .ln-drawer--sm {
3972
+ --_width: 320px;
3973
+ }
3974
+ .ln-drawer--md {
3975
+ --_width: 400px;
3976
+ }
3977
+ .ln-drawer--lg {
3978
+ --_width: 560px;
3979
+ }
3980
+ }
3981
+ @layer blocks {
3982
+ .ln-price {
3983
+ display: inline-flex;
3984
+ align-items: center;
3985
+ gap: var(--s1);
3986
+ font-family: var(--f-ui);
3987
+ font-variant-numeric: tabular-nums;
3988
+ }
3989
+ .ln-price__current {
3990
+ font-size: var(--t-h4-s);
3991
+ line-height: var(--t-h4-lh);
3992
+ font-weight: 600;
3993
+ color: var(--text);
3994
+ }
3995
+ .ln-price__original {
3996
+ font-size: var(--t-body-sm-s);
3997
+ line-height: var(--t-body-sm-lh);
3998
+ color: var(--c-muted);
3999
+ text-decoration: line-through;
4000
+ }
4001
+ .ln-price__discount {
4002
+ font-size: var(--t-body-sm-s);
4003
+ line-height: var(--t-body-sm-lh);
4004
+ font-weight: 600;
4005
+ color: var(--danger-text);
4006
+ }
4007
+ .ln-price__currency {
4008
+ font-size: var(--t-body-sm-s);
4009
+ line-height: var(--t-body-sm-lh);
4010
+ font-weight: 500;
4011
+ }
4012
+ .ln-price__period {
4013
+ font-size: var(--t-meta-s);
4014
+ line-height: var(--t-meta-lh);
4015
+ color: var(--c-muted);
4016
+ font-weight: 400;
4017
+ }
4018
+ .ln-price--range::before {
4019
+ content: "From";
4020
+ font-size: var(--t-meta-s);
4021
+ line-height: var(--t-meta-lh);
4022
+ color: var(--c-muted);
4023
+ font-weight: 400;
4024
+ }
4025
+ .ln-price--stacked {
4026
+ flex-direction: column;
4027
+ align-items: flex-start;
4028
+ gap: 0;
4029
+ }
4030
+ .ln-price--sm .ln-price__current {
4031
+ font-size: var(--t-body-s);
4032
+ line-height: var(--t-body-lh);
4033
+ }
4034
+ .ln-price--lg .ln-price__current {
4035
+ font-size: var(--t-h3-s);
4036
+ line-height: var(--t-h3-lh);
4037
+ }
4038
+ .ln-price--xl .ln-price__current {
4039
+ font-size: var(--t-h2-s);
4040
+ line-height: var(--t-h2-lh);
4041
+ }
4042
+ }
4043
+ @layer blocks {
4044
+ .ln-rating {
4045
+ display: flex;
4046
+ align-items: center;
4047
+ gap: 0.5rem;
4048
+ height: 1.5rem;
4049
+ font: 400 0.875rem/1.25rem var(--f-ui);
4050
+ color: var(--c-muted);
4051
+ }
4052
+ .ln-rating__stars {
4053
+ --rating: 0;
4054
+ position: relative;
4055
+ width: 5rem;
4056
+ height: 1rem;
4057
+ background: linear-gradient(90deg, var(--star-color, var(--primary)) calc(var(--rating) / 5 * 100%), var(--border) 0);
4058
+ mask: var(--star-mask) repeat-x 0 0/16px 16px;
4059
+ }
4060
+ .ln-rating__value {
4061
+ color: var(--text);
4062
+ font-weight: 500;
4063
+ font-variant-numeric: tabular-nums;
4064
+ }
4065
+ .ln-rating__count {
4066
+ color: var(--c-muted);
4067
+ }
4068
+ .ln-rating--input {
4069
+ cursor: pointer;
4070
+ }
4071
+ .ln-rating--compact .ln-rating__count {
4072
+ display: none;
4073
+ }
4074
+ :root {
4075
+ --star-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.2l2 4.3 4.6.5-3.4 3.2.9 4.6L8 11.5l-4.1 2.3.9-4.6L1.4 6l4.6-.5z'/%3E%3C/svg%3E");
4076
+ }
4077
+ }
4078
+ @layer blocks {
4079
+ .ln-swatch {
4080
+ display: flex;
4081
+ gap: 0.5rem;
4082
+ align-items: center;
4083
+ height: 1.5rem;
4084
+ border: 0;
4085
+ padding: 0;
4086
+ margin: 0;
4087
+ }
4088
+ .ln-swatch__option {
4089
+ position: relative;
4090
+ display: inline-grid;
4091
+ }
4092
+ .ln-swatch__input {
4093
+ position: absolute;
4094
+ opacity: 0;
4095
+ inset: 0;
4096
+ margin: 0;
4097
+ cursor: pointer;
4098
+ }
4099
+ .ln-swatch__input:checked + .ln-swatch__color {
4100
+ outline: 2px solid var(--text);
4101
+ outline-offset: 2px;
4102
+ }
4103
+ .ln-swatch__input:focus-visible + .ln-swatch__color {
4104
+ outline: 2px solid var(--focus);
4105
+ outline-offset: 4px;
4106
+ }
4107
+ .ln-swatch__input:disabled + .ln-swatch__color {
4108
+ opacity: 0.35;
4109
+ background: linear-gradient(135deg, transparent 45%, var(--c-muted) 45% 55%, transparent 55%), var(--c);
4110
+ }
4111
+ .ln-swatch__color {
4112
+ width: 1.5rem;
4113
+ height: 1.5rem;
4114
+ border-radius: 50%;
4115
+ background: var(--c);
4116
+ border: var(--bd1) solid var(--c-subtle);
4117
+ }
4118
+ .ln-swatch--text .ln-swatch__color {
4119
+ width: auto;
4120
+ height: auto;
4121
+ border-radius: var(--r-xs);
4122
+ padding: calc(var(--s1) - var(--bd1)) var(--s2);
4123
+ font: 500 0.875rem/1.25rem var(--f-ui);
4124
+ border: var(--bd1) solid var(--border);
4125
+ background: none;
4126
+ }
4127
+ .ln-swatch--text .ln-swatch__input:checked + .ln-swatch__color {
4128
+ border: var(--bd2) solid var(--c, var(--primary));
4129
+ padding: calc(var(--s1) - var(--bd2)) calc(var(--s2) - var(--bd2) + var(--bd1));
4130
+ background-color: color-mix(in srgb, var(--c, var(--primary)) 10%, transparent);
4131
+ color: var(--c, var(--primary-text));
4132
+ outline: none;
4133
+ }
4134
+ .ln-swatch--text .ln-swatch__input:disabled + .ln-swatch__color {
4135
+ opacity: 0.4;
4136
+ cursor: not-allowed;
4137
+ background: none;
4138
+ }
4139
+ .ln-swatch--image .ln-swatch__color {
4140
+ width: 3rem;
4141
+ height: 3rem;
4142
+ overflow: hidden;
4143
+ border: var(--bd1) solid var(--border);
4144
+ background: none;
4145
+ }
4146
+ .ln-swatch--image .ln-swatch__color > img {
4147
+ width: 100%;
4148
+ height: 100%;
4149
+ object-fit: cover;
4150
+ }
4151
+ .ln-swatch--image .ln-swatch__input:checked + .ln-swatch__color {
4152
+ outline: 2px solid var(--text);
4153
+ outline-offset: 2px;
4154
+ }
4155
+ .ln-swatch--sm .ln-swatch__color {
4156
+ width: 1rem;
4157
+ height: 1rem;
4158
+ }
4159
+ .ln-swatch--lg .ln-swatch__color {
4160
+ width: 2rem;
4161
+ height: 2rem;
4162
+ }
4163
+ }
4164
+ @layer blocks {
4165
+ .ln-quantity {
4166
+ display: inline-flex;
4167
+ align-items: center;
4168
+ height: 2rem;
4169
+ border-radius: var(--r-xs);
4170
+ border: var(--bd1) solid var(--border-control);
4171
+ background: var(--surface);
4172
+ overflow: hidden;
4173
+ }
4174
+ .ln-quantity__button, .ln-quantity__increment, .ln-quantity__decrement {
4175
+ width: 2rem;
4176
+ height: 100%;
4177
+ border: 0;
4178
+ border-radius: 0;
4179
+ background: transparent;
4180
+ color: var(--text);
4181
+ cursor: pointer;
4182
+ font: 500 1rem/1.5rem var(--f-ui);
4183
+ }
4184
+ .ln-quantity__button:hover, .ln-quantity__increment:hover, .ln-quantity__decrement:hover {
4185
+ background: var(--surface-raised);
4186
+ }
4187
+ .ln-quantity__button:disabled, .ln-quantity__increment:disabled, .ln-quantity__decrement:disabled {
4188
+ color: var(--c-disabled);
4189
+ cursor: not-allowed;
4190
+ background: transparent;
4191
+ }
4192
+ .ln-quantity__input {
4193
+ width: 2.5rem;
4194
+ height: 2rem;
4195
+ border: 0;
4196
+ background: transparent;
4197
+ text-align: center;
4198
+ color: var(--text);
4199
+ font: 500 0.875rem/1.25rem var(--f-mono);
4200
+ -moz-appearance: textfield;
4201
+ }
4202
+ .ln-quantity__input::-webkit-outer-spin-button, .ln-quantity__input::-webkit-inner-spin-button {
4203
+ -webkit-appearance: none;
4204
+ margin: 0;
4205
+ }
4206
+ .ln-quantity--compact {
4207
+ height: 1.5rem;
4208
+ }
4209
+ .ln-quantity--compact .ln-quantity__button, .ln-quantity--compact .ln-quantity__decrement, .ln-quantity--compact .ln-quantity__increment {
4210
+ width: 1.5rem;
4211
+ height: 1.5rem;
4212
+ }
4213
+ .ln-quantity--compact .ln-quantity__input {
4214
+ width: 2rem;
4215
+ height: 1.5rem;
4216
+ font-size: 0.75rem;
4217
+ }
4218
+ }
4219
+ @layer blocks {
4220
+ .ln-gallery {
4221
+ display: flex;
4222
+ flex-direction: column;
4223
+ gap: var(--s2);
4224
+ }
4225
+ .ln-gallery__main {
4226
+ display: flex;
4227
+ overflow-x: auto;
4228
+ scroll-snap-type: x mandatory;
4229
+ background-color: var(--surface-sunken);
4230
+ scrollbar-width: none;
4231
+ }
4232
+ .ln-gallery__main::-webkit-scrollbar {
4233
+ display: none;
4234
+ }
4235
+ .ln-gallery__slide {
4236
+ flex: 0 0 100%;
4237
+ scroll-snap-align: start;
4238
+ }
4239
+ .ln-gallery__slide > img {
4240
+ display: block;
4241
+ width: 100%;
4242
+ height: auto;
4243
+ object-fit: cover;
4244
+ }
4245
+ .ln-gallery__thumbs {
4246
+ display: flex;
4247
+ gap: var(--s1);
4248
+ overflow-x: auto;
4249
+ scrollbar-width: none;
4250
+ }
4251
+ .ln-gallery__thumbs::-webkit-scrollbar {
4252
+ display: none;
4253
+ }
4254
+ .ln-gallery__thumb {
4255
+ flex: 0 0 auto;
4256
+ width: 64px;
4257
+ height: 64px;
4258
+ border-radius: var(--r-sm);
4259
+ overflow: hidden;
4260
+ cursor: pointer;
4261
+ border: var(--bd1) solid var(--border);
4262
+ opacity: 0.6;
4263
+ transition: opacity var(--dur-fast) var(--e-standard), border-color var(--dur-fast) var(--e-standard);
4264
+ }
4265
+ .ln-gallery__thumb:hover {
4266
+ opacity: 0.8;
4267
+ }
4268
+ .ln-gallery__thumb[aria-selected=true], .ln-gallery__thumb.is-active {
4269
+ opacity: 1;
4270
+ border: var(--bd2) solid var(--primary);
4271
+ }
4272
+ .ln-gallery__thumb > img {
4273
+ width: 100%;
4274
+ height: 100%;
4275
+ object-fit: cover;
4276
+ }
4277
+ .ln-gallery__dots {
4278
+ display: flex;
4279
+ justify-content: center;
4280
+ gap: var(--s1);
4281
+ }
4282
+ .ln-gallery__dot {
4283
+ width: 8px;
4284
+ height: 8px;
4285
+ border-radius: var(--r-circle);
4286
+ background-color: var(--border);
4287
+ border: none;
4288
+ padding: 0;
4289
+ cursor: pointer;
4290
+ transition: background-color var(--dur-fast) var(--e-standard);
4291
+ }
4292
+ .ln-gallery__dot[aria-selected=true], .ln-gallery__dot.is-active {
4293
+ background-color: var(--primary);
4294
+ }
4295
+ .ln-gallery--thumbs-start {
4296
+ flex-direction: row;
4297
+ }
4298
+ .ln-gallery--thumbs-start .ln-gallery__thumbs {
4299
+ flex-direction: column;
4300
+ order: -1;
4301
+ }
4302
+ .ln-gallery--grid .ln-gallery__main {
4303
+ display: grid;
4304
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
4305
+ gap: var(--s1);
4306
+ overflow: visible;
4307
+ scroll-snap-type: none;
4308
+ }
4309
+ .ln-gallery--grid .ln-gallery__slide {
4310
+ flex: none;
4311
+ aspect-ratio: 1;
4312
+ }
4313
+ }
4314
+ @layer blocks {
4315
+ .ln-product-card {
4316
+ display: flex;
4317
+ flex-direction: column;
4318
+ background-color: var(--surface);
4319
+ overflow: hidden;
4320
+ position: relative;
4321
+ outline: var(--bd1) solid var(--border);
4322
+ outline-offset: calc(-1 * var(--bd1));
4323
+ }
4324
+ .ln-product-card__media {
4325
+ position: relative;
4326
+ background: var(--surface-sunken);
4327
+ }
4328
+ .ln-product-card__img {
4329
+ aspect-ratio: var(--ratio, 4/5);
4330
+ background: var(--surface-sunken);
4331
+ display: grid;
4332
+ place-items: center;
4333
+ color: var(--c-subtle);
4334
+ }
4335
+ .ln-product-card__img > img {
4336
+ display: block;
4337
+ width: 100%;
4338
+ height: 100%;
4339
+ object-fit: cover;
4340
+ }
4341
+ .ln-product-card__badges {
4342
+ position: absolute;
4343
+ top: 0.75rem;
4344
+ left: 0.75rem;
4345
+ display: flex;
4346
+ gap: 0.25rem;
4347
+ z-index: 1;
4348
+ }
4349
+ .ln-product-card__wishlist {
4350
+ position: absolute;
4351
+ top: 0.75rem;
4352
+ right: 0.75rem;
4353
+ z-index: 2;
4354
+ }
4355
+ .ln-product-card__body {
4356
+ display: flex;
4357
+ flex-direction: column;
4358
+ gap: 0.25rem;
4359
+ padding: 1rem;
4360
+ }
4361
+ .ln-product-card__vendor {
4362
+ font: 500 0.75rem/1rem var(--f-mono);
4363
+ letter-spacing: 0.06em;
4364
+ text-transform: uppercase;
4365
+ color: var(--c-subtle);
4366
+ }
4367
+ .ln-product-card__title {
4368
+ font: 500 1rem/1.5rem var(--f-ui);
4369
+ margin: 0;
4370
+ overflow: hidden;
4371
+ }
4372
+ .ln-product-card__title a {
4373
+ color: var(--text);
4374
+ text-decoration: none;
4375
+ }
4376
+ .ln-product-card__title a::after {
4377
+ content: "";
4378
+ position: absolute;
4379
+ inset: 0;
4380
+ }
4381
+ .ln-product-card__swatches {
4382
+ position: relative;
4383
+ z-index: 1;
4384
+ }
4385
+ .ln-product-card__actions {
4386
+ position: relative;
4387
+ z-index: 1;
4388
+ }
4389
+ .ln-product-card--ratio-1x1 {
4390
+ --ratio: 1 / 1;
4391
+ }
4392
+ .ln-product-card--ratio-4x5 {
4393
+ --ratio: 4 / 5;
4394
+ }
4395
+ .ln-product-card--ratio-3x4 {
4396
+ --ratio: 3 / 4;
4397
+ }
4398
+ .ln-product-card--horizontal {
4399
+ flex-direction: row;
4400
+ }
4401
+ .ln-product-card--horizontal .ln-product-card__media {
4402
+ width: 40%;
4403
+ max-width: 200px;
4404
+ flex-shrink: 0;
4405
+ aspect-ratio: auto;
4406
+ }
4407
+ .ln-product-card--compact .ln-product-card__body {
4408
+ padding: var(--s2);
4409
+ }
4410
+ .ln-product-card--compact .ln-product-card__actions {
4411
+ padding: var(--s2);
4412
+ padding-top: 0;
4413
+ }
4414
+ .ln-product-card--center {
4415
+ text-align: center;
4416
+ }
4417
+ .ln-product-card--center .ln-product-card__actions {
4418
+ justify-content: center;
4419
+ }
4420
+ .ln-product-card--flat {
4421
+ outline: 0;
4422
+ }
4423
+ .ln-product-card.is-sold-out {
4424
+ opacity: 0.6;
4425
+ pointer-events: none;
4426
+ }
4427
+ }
4428
+ @layer blocks {
4429
+ .ln-line-item {
4430
+ display: grid;
4431
+ grid-template-columns: 4rem 1fr auto;
4432
+ gap: 1rem;
4433
+ padding: 1rem 0 calc(1rem - var(--bd1));
4434
+ border-bottom: var(--bd1) solid var(--border);
4435
+ align-items: start;
4436
+ }
4437
+ .ln-line-item:last-child {
4438
+ border-bottom: 0;
4439
+ padding-bottom: 1rem;
4440
+ }
4441
+ .ln-line-item__media {
4442
+ width: 4rem;
4443
+ height: 4rem;
4444
+ border-radius: var(--r-xs);
4445
+ background: var(--surface-sunken);
4446
+ display: grid;
4447
+ place-items: center;
4448
+ color: var(--c-subtle);
4449
+ border: var(--bd1) solid var(--border);
4450
+ overflow: hidden;
4451
+ }
4452
+ .ln-line-item__media > img {
4453
+ width: 100%;
4454
+ height: 100%;
4455
+ object-fit: cover;
4456
+ }
4457
+ .ln-line-item__body {
4458
+ display: flex;
4459
+ flex-direction: column;
4460
+ gap: 0.25rem;
4461
+ }
4462
+ .ln-line-item__title {
4463
+ font: 500 1rem/1.5rem var(--f-ui);
4464
+ }
4465
+ .ln-line-item__meta {
4466
+ font: 400 0.875rem/1.25rem var(--f-ui);
4467
+ color: var(--c-muted);
4468
+ }
4469
+ .ln-line-item__note {
4470
+ font: 400 0.875rem/1.25rem var(--f-ui);
4471
+ color: var(--c-subtle);
4472
+ }
4473
+ .ln-line-item__side {
4474
+ text-align: right;
4475
+ }
4476
+ .ln-line-item__price {
4477
+ font: 600 1rem/1.5rem var(--f-ui);
4478
+ font-variant-numeric: tabular-nums;
4479
+ }
4480
+ .ln-line-item__controls {
4481
+ display: flex;
4482
+ gap: 0.5rem;
4483
+ align-items: center;
4484
+ grid-column: 2/-1;
4485
+ }
4486
+ .ln-line-item__remove {
4487
+ border: none;
4488
+ background: none;
4489
+ padding: 0;
4490
+ color: var(--c-muted);
4491
+ cursor: pointer;
4492
+ font: 400 1rem/1 var(--f-ui);
4493
+ }
4494
+ .ln-line-item__remove:hover {
4495
+ color: var(--danger-text);
4496
+ }
4497
+ .ln-line-item--compact {
4498
+ gap: 0.75rem;
4499
+ padding-block: 0.75rem;
4500
+ }
4501
+ .ln-line-item--compact .ln-line-item__media {
4502
+ width: 3rem;
4503
+ height: 3rem;
4504
+ }
4505
+ .ln-line-item--readonly .ln-line-item__remove,
4506
+ .ln-line-item--readonly .ln-line-item__controls {
4507
+ display: none;
4508
+ }
4509
+ }
4510
+ @layer blocks {
4511
+ .ln-order-summary {
4512
+ display: flex;
4513
+ flex-direction: column;
4514
+ gap: 0.5rem;
4515
+ }
4516
+ .ln-order-summary__header {
4517
+ font: 600 1.125rem/1.5rem var(--f-ui);
4518
+ color: var(--text);
4519
+ }
4520
+ .ln-order-summary__items {
4521
+ display: flex;
4522
+ flex-direction: column;
4523
+ }
4524
+ .ln-order-summary__row {
4525
+ display: flex;
4526
+ justify-content: space-between;
4527
+ font: 400 1rem/1.5rem var(--f-ui);
4528
+ color: var(--c-muted);
4529
+ font-variant-numeric: tabular-nums;
4530
+ }
4531
+ .ln-order-summary__row > :last-child {
4532
+ color: var(--text);
4533
+ }
4534
+ .ln-order-summary__label {
4535
+ color: var(--c-muted);
4536
+ }
4537
+ .ln-order-summary__value {
4538
+ color: var(--text);
4539
+ font-variant-numeric: tabular-nums;
4540
+ }
4541
+ .ln-order-summary__discount > :last-child {
4542
+ color: var(--success-text);
4543
+ }
4544
+ .ln-order-summary__coupon {
4545
+ display: flex;
4546
+ gap: var(--s2);
4547
+ align-items: center;
4548
+ }
4549
+ .ln-order-summary__total {
4550
+ display: flex;
4551
+ justify-content: space-between;
4552
+ padding-top: calc(1.5rem - var(--bd1));
4553
+ border-top: var(--bd1) solid var(--border);
4554
+ font: 600 1.25rem/1.5rem var(--f-ui);
4555
+ font-variant-numeric: tabular-nums;
4556
+ margin-bottom: 1.5rem;
4557
+ }
4558
+ .ln-order-summary__note {
4559
+ font: 400 0.875rem/1.5rem var(--f-ui);
4560
+ color: var(--c-subtle);
4561
+ }
4562
+ .ln-order-summary__actions {
4563
+ display: flex;
4564
+ flex-direction: column;
4565
+ gap: var(--s2);
4566
+ }
4567
+ .ln-order-summary--sticky {
4568
+ position: sticky;
4569
+ top: var(--s3);
4570
+ }
4571
+ .ln-order-summary--sunken {
4572
+ background-color: var(--surface-sunken);
4573
+ padding: var(--s4);
4574
+ border-radius: var(--r-md);
4575
+ }
4576
+ .ln-order-summary--compact {
4577
+ gap: 0.25rem;
4578
+ }
4579
+ }
4580
+ @layer blocks {
4581
+ .ln-table {
4582
+ overflow-x: auto;
4583
+ border-radius: var(--radius);
4584
+ background: var(--surface);
4585
+ }
4586
+ .ln-table__grid {
4587
+ width: 100%;
4588
+ border-collapse: collapse;
4589
+ font: 400 0.875rem/1.5rem var(--f-ui);
4590
+ }
4591
+ .ln-table__header {
4592
+ text-align: left;
4593
+ vertical-align: middle;
4594
+ padding: 0.75rem 1rem;
4595
+ font: 500 0.75rem/1rem var(--f-ui);
4596
+ letter-spacing: 0.06em;
4597
+ text-transform: uppercase;
4598
+ color: var(--c-muted);
4599
+ border-bottom: var(--bd1) solid var(--border);
4600
+ box-shadow: none;
4601
+ white-space: nowrap;
4602
+ }
4603
+ .ln-table__header--numeric {
4604
+ text-align: right;
4605
+ font-variant-numeric: tabular-nums;
4606
+ }
4607
+ .ln-table__cell {
4608
+ padding: calc(0.5rem - var(--bd1)) 1rem 0.5rem;
4609
+ border-top: var(--bd1) solid var(--border);
4610
+ box-shadow: none;
4611
+ white-space: nowrap;
4612
+ vertical-align: middle;
4613
+ }
4614
+ .ln-table__cell--numeric {
4615
+ text-align: right;
4616
+ font-variant-numeric: tabular-nums;
4617
+ }
4618
+ .ln-table__cell--mono {
4619
+ font: 500 0.8125rem/1.5rem var(--f-mono);
4620
+ }
4621
+ .ln-table__cell--truncate {
4622
+ max-width: 200px;
4623
+ overflow: hidden;
4624
+ text-overflow: ellipsis;
4625
+ white-space: nowrap;
4626
+ }
4627
+ .ln-table__cell--nowrap {
4628
+ white-space: nowrap;
4629
+ }
4630
+ .ln-table__row:hover .ln-table__cell {
4631
+ background: color-mix(in srgb, var(--surface-raised) 60%, transparent);
4632
+ }
4633
+ .ln-table__row[aria-selected=true] .ln-table__cell {
4634
+ background: var(--primary-subtle);
4635
+ }
4636
+ .ln-table__row--danger .ln-table__cell {
4637
+ background-color: var(--danger-subtle);
4638
+ }
4639
+ .ln-table__row--warning .ln-table__cell {
4640
+ background-color: var(--warning-subtle);
4641
+ }
4642
+ .ln-table__row--success .ln-table__cell {
4643
+ background-color: var(--success-subtle);
4644
+ }
4645
+ .ln-table tfoot td {
4646
+ padding: 0;
4647
+ border-top: 0;
4648
+ box-shadow: none;
4649
+ }
4650
+ .ln-table__foot {
4651
+ display: flex;
4652
+ flex-wrap: wrap;
4653
+ gap: 1rem;
4654
+ justify-content: space-between;
4655
+ align-items: center;
4656
+ padding: calc(0.5rem - var(--bd1)) 1rem 0.5rem;
4657
+ border-top: var(--bd1) solid var(--border);
4658
+ font: 400 0.875rem/1.5rem var(--f-ui);
4659
+ color: var(--c-muted);
4660
+ }
4661
+ .ln-table__caption {
4662
+ padding: 0.75rem 1rem;
4663
+ font: 400 0.875rem/1.25rem var(--f-ui);
4664
+ color: var(--c-muted);
4665
+ text-align: start;
4666
+ }
4667
+ .ln-table__actions {
4668
+ display: flex;
4669
+ gap: 0.5rem;
4670
+ align-items: center;
4671
+ }
4672
+ .ln-table__sort {
4673
+ display: inline-flex;
4674
+ align-items: center;
4675
+ gap: var(--s-h);
4676
+ background: none;
4677
+ border: none;
4678
+ padding: 0;
4679
+ font: inherit;
4680
+ font-weight: 500;
4681
+ text-transform: inherit;
4682
+ letter-spacing: inherit;
4683
+ color: inherit;
4684
+ cursor: pointer;
4685
+ }
4686
+ .ln-table__sort:hover {
4687
+ color: var(--primary);
4688
+ }
4689
+ .ln-table__sort[aria-sort=ascending]::after {
4690
+ content: "↑";
4691
+ }
4692
+ .ln-table__sort[aria-sort=descending]::after {
4693
+ content: "↓";
4694
+ }
4695
+ .ln-table__select {
4696
+ width: 3rem;
4697
+ padding-right: 0;
4698
+ }
4699
+ .ln-table__select .ln-choice__input {
4700
+ margin: 0.125rem 0;
4701
+ }
4702
+ .ln-table__empty {
4703
+ text-align: center;
4704
+ padding: var(--s4);
4705
+ color: var(--c-muted);
4706
+ }
4707
+ .ln-table--divided .ln-table__cell {
4708
+ border-top: var(--bd1) solid var(--border);
4709
+ }
4710
+ .ln-table--striped .ln-table__row:nth-child(even) .ln-table__cell {
4711
+ background-color: var(--surface-sunken);
4712
+ }
4713
+ .ln-table--bordered {
4714
+ border: var(--bd1) solid var(--border);
4715
+ }
4716
+ .ln-table--bordered .ln-table__header,
4717
+ .ln-table--bordered .ln-table__cell {
4718
+ border: 0.5px solid var(--border);
4719
+ }
4720
+ .ln-table--compact .ln-table__cell {
4721
+ padding: 0.25rem 1rem;
4722
+ }
4723
+ .ln-table--compact .ln-table__header {
4724
+ padding: 0.5rem 1rem;
4725
+ }
4726
+ .ln-table--spacious .ln-table__cell {
4727
+ padding: 0.75rem 1rem;
4728
+ }
4729
+ .ln-table--sticky-header .ln-table__header {
4730
+ position: sticky;
4731
+ top: 0;
4732
+ z-index: 10;
4733
+ }
4734
+ .ln-table--sticky-first .ln-table__header:first-child,
4735
+ .ln-table--sticky-first .ln-table__cell:first-child {
4736
+ position: sticky;
4737
+ left: 0;
4738
+ z-index: 5;
4739
+ background-color: var(--surface);
4740
+ }
4741
+ @media (max-width: 768px) {
4742
+ .ln-table--stack thead {
4743
+ display: none;
4744
+ }
4745
+ .ln-table--stack .ln-table__row {
4746
+ display: block;
4747
+ padding: var(--s3);
4748
+ padding-bottom: calc(var(--s3) - var(--bd1));
4749
+ border-bottom: var(--bd1) solid var(--border);
4750
+ }
4751
+ .ln-table--stack .ln-table__cell {
4752
+ display: flex;
4753
+ justify-content: space-between;
4754
+ padding: var(--s1) 0;
4755
+ border-top: 0;
4756
+ }
4757
+ .ln-table--stack .ln-table__cell::before {
4758
+ content: attr(data-label);
4759
+ font-weight: 600;
4760
+ color: var(--c-muted);
4761
+ margin-right: var(--s2);
4762
+ }
4763
+ }
4764
+ }
4765
+ @layer blocks {
4766
+ .ln-stat {
4767
+ padding: 1.5rem;
4768
+ background: var(--surface);
4769
+ border-radius: var(--r-xs);
4770
+ outline: var(--bd1) solid var(--border);
4771
+ outline-offset: calc(-1 * var(--bd1));
4772
+ }
4773
+ .ln-stat__icon {
4774
+ display: inline-flex;
4775
+ align-items: center;
4776
+ justify-content: center;
4777
+ width: 40px;
4778
+ height: 40px;
4779
+ border-radius: var(--r-md);
4780
+ background-color: var(--surface-sunken);
4781
+ color: var(--c-muted);
4782
+ margin-bottom: var(--s1);
4783
+ }
4784
+ .ln-stat__label {
4785
+ display: block;
4786
+ font: 500 0.875rem/1.5rem var(--f-ui);
4787
+ color: var(--c-muted);
4788
+ }
4789
+ .ln-stat__value {
4790
+ display: block;
4791
+ font: 600 2rem/2.5rem var(--f-ui);
4792
+ font-variant-numeric: tabular-nums;
4793
+ }
4794
+ .ln-stat__unit {
4795
+ font-size: var(--t-body-s);
4796
+ font-weight: 400;
4797
+ line-height: 1rem;
4798
+ color: var(--c-muted);
4799
+ margin-left: var(--s-h);
4800
+ }
4801
+ .ln-stat__delta {
4802
+ display: flex;
4803
+ gap: 0.5rem;
4804
+ align-items: center;
4805
+ font: 500 0.875rem/1.5rem var(--f-ui);
4806
+ font-variant-numeric: tabular-nums;
4807
+ }
4808
+ .ln-stat__delta > :last-child {
4809
+ color: var(--c-subtle);
4810
+ font-weight: 400;
4811
+ }
4812
+ .ln-stat__delta--positive {
4813
+ color: var(--success-text);
4814
+ }
4815
+ .ln-stat__delta--negative {
4816
+ color: var(--danger-text);
4817
+ }
4818
+ .ln-stat__meta {
4819
+ font-size: var(--t-meta-s);
4820
+ line-height: var(--t-meta-lh);
4821
+ color: var(--c-subtle);
4822
+ }
4823
+ .ln-stat__chart {
4824
+ height: 40px;
4825
+ margin-top: var(--s1);
4826
+ }
4827
+ .ln-stat--sm .ln-stat__value {
4828
+ font-size: var(--t-h4-s);
4829
+ line-height: var(--t-h4-lh);
4830
+ }
4831
+ .ln-stat--lg .ln-stat__value {
4832
+ font-size: var(--t-h1-s);
4833
+ line-height: var(--t-h1-lh);
4834
+ }
4835
+ .ln-stat--flat {
4836
+ padding: 0;
4837
+ background: none;
4838
+ border-radius: 0;
4839
+ outline: 0;
4840
+ }
4841
+ .ln-stat--inline {
4842
+ display: flex;
4843
+ align-items: center;
4844
+ gap: var(--s3);
4845
+ }
4846
+ .ln-stat--inline .ln-stat__value {
4847
+ font-size: var(--t-h3-s);
4848
+ line-height: var(--t-h3-lh);
4849
+ }
4850
+ }
4851
+ @layer blocks {
4852
+ .ln-data-list {
4853
+ display: flex;
4854
+ flex-direction: column;
4855
+ font: var(--t-body-sm-s)/var(--t-body-sm-lh) var(--f-ui);
4856
+ }
4857
+ .ln-data-list__item {
4858
+ display: flex;
4859
+ flex-direction: column;
4860
+ gap: var(--s-h);
4861
+ padding-block: var(--s2);
4862
+ }
4863
+ .ln-data-list__term {
4864
+ font-weight: 500;
4865
+ color: var(--c-muted);
4866
+ font-size: var(--t-meta-s);
4867
+ line-height: var(--t-meta-lh);
4868
+ }
4869
+ .ln-data-list__value {
4870
+ color: var(--text);
4871
+ }
4872
+ .ln-data-list__action {
4873
+ color: var(--primary);
4874
+ text-decoration: none;
4875
+ font-weight: 500;
4876
+ cursor: pointer;
4877
+ }
4878
+ .ln-data-list__action:hover {
4879
+ text-decoration: underline;
4880
+ }
4881
+ .ln-data-list--horizontal .ln-data-list__item {
4882
+ flex-direction: row;
4883
+ align-items: baseline;
4884
+ justify-content: space-between;
4885
+ gap: var(--s3);
4886
+ }
4887
+ .ln-data-list--horizontal .ln-data-list__term {
4888
+ flex-shrink: 0;
4889
+ min-width: 120px;
4890
+ }
4891
+ .ln-data-list--horizontal .ln-data-list__value {
4892
+ text-align: end;
4893
+ }
4894
+ .ln-data-list--divided .ln-data-list__item {
4895
+ border-bottom: var(--bd1) solid var(--border);
4896
+ padding-bottom: calc(var(--s2) - var(--bd1));
4897
+ }
4898
+ .ln-data-list--divided .ln-data-list__item:last-child {
4899
+ border-bottom: 0;
4900
+ padding-bottom: var(--s2);
4901
+ }
4902
+ .ln-data-list--striped .ln-data-list__item:nth-child(even) {
4903
+ background-color: var(--surface-sunken);
4904
+ padding-inline: var(--s2);
4905
+ border-radius: var(--r-sm);
4906
+ }
4907
+ .ln-data-list--compact .ln-data-list__item {
4908
+ padding-block: var(--s1);
4909
+ }
4910
+ .ln-data-list--cols-2 {
4911
+ display: grid;
4912
+ grid-template-columns: 1fr 1fr;
4913
+ gap: 0 var(--s4);
4914
+ }
4915
+ }
4916
+ @layer blocks {
4917
+ .ln-toolbar {
4918
+ display: flex;
4919
+ align-items: center;
4920
+ justify-content: space-between;
4921
+ gap: var(--s2);
4922
+ padding-block: var(--s2);
4923
+ }
4924
+ .ln-toolbar__start {
4925
+ display: flex;
4926
+ align-items: center;
4927
+ gap: var(--s2);
4928
+ }
4929
+ .ln-toolbar__end {
4930
+ display: flex;
4931
+ align-items: center;
4932
+ gap: var(--s2);
4933
+ }
4934
+ .ln-toolbar__group {
4935
+ display: flex;
4936
+ align-items: center;
4937
+ gap: var(--s1);
4938
+ }
4939
+ .ln-toolbar__search {
4940
+ max-width: 240px;
4941
+ }
4942
+ .ln-toolbar__count {
4943
+ font: var(--t-body-sm-s)/var(--t-body-sm-lh) var(--f-ui);
4944
+ color: var(--c-muted);
4945
+ white-space: nowrap;
4946
+ }
4947
+ .ln-toolbar__divider {
4948
+ width: 0;
4949
+ height: 24px;
4950
+ border-left: var(--bd1) solid var(--border);
4951
+ margin-inline: var(--s1);
4952
+ }
4953
+ .ln-toolbar--bulk {
4954
+ background-color: var(--primary-subtle);
4955
+ padding: var(--s2) var(--s3);
4956
+ border-radius: var(--r-md);
4957
+ }
4958
+ .ln-toolbar--sticky {
4959
+ position: sticky;
4960
+ top: 0;
4961
+ z-index: 10;
4962
+ background-color: var(--surface);
4963
+ }
4964
+ .ln-toolbar--compact {
4965
+ padding-block: var(--s1);
4966
+ }
4967
+ }
4968
+ @layer blocks {
4969
+ .ln-timeline {
4970
+ list-style: none;
4971
+ }
4972
+ .ln-timeline__item {
4973
+ display: grid;
4974
+ grid-template-columns: 1.5rem 1fr;
4975
+ gap: 0 0.75rem;
4976
+ position: relative;
4977
+ padding-bottom: 1rem;
4978
+ }
4979
+ .ln-timeline__item:not(:last-child)::before {
4980
+ content: "";
4981
+ position: absolute;
4982
+ left: 0.6875rem;
4983
+ top: 1.5rem;
4984
+ bottom: 0;
4985
+ width: 0.125rem;
4986
+ background: var(--border);
4987
+ }
4988
+ .ln-timeline__marker {
4989
+ width: 1.5rem;
4990
+ height: 1.5rem;
4991
+ border-radius: 50%;
4992
+ display: grid;
4993
+ place-items: center;
4994
+ background: var(--surface-raised);
4995
+ border: var(--bd1) solid var(--border-control);
4996
+ }
4997
+ .ln-timeline__marker::after {
4998
+ content: "";
4999
+ width: 0.5rem;
5000
+ height: 0.5rem;
5001
+ border-radius: 50%;
5002
+ background: var(--_m, var(--c-muted));
5003
+ }
5004
+ .ln-timeline__marker--success {
5005
+ --_m: var(--success-text);
5006
+ }
5007
+ .ln-timeline__marker--primary {
5008
+ --_m: var(--primary-text);
5009
+ }
5010
+ .ln-timeline__marker--warning {
5011
+ --_m: var(--warning-text);
5012
+ }
5013
+ .ln-timeline__marker--danger {
5014
+ --_m: var(--danger-text);
5015
+ }
5016
+ .ln-timeline__marker--info {
5017
+ --_m: var(--info-text);
5018
+ }
5019
+ .ln-timeline__icon {
5020
+ width: 0.75rem;
5021
+ height: 0.75rem;
5022
+ }
5023
+ .ln-timeline__content {
5024
+ min-width: 0;
5025
+ }
5026
+ .ln-timeline__title {
5027
+ font: 500 0.875rem/1.5rem var(--f-ui);
5028
+ }
5029
+ .ln-timeline__time {
5030
+ font: 400 0.75rem/1rem var(--f-mono);
5031
+ color: var(--c-subtle);
5032
+ }
5033
+ .ln-timeline__body {
5034
+ font-size: var(--t-body-sm-s);
5035
+ line-height: var(--t-body-sm-lh);
5036
+ color: var(--c-muted);
5037
+ margin-top: var(--s1);
5038
+ }
5039
+ .ln-timeline--compact .ln-timeline__item {
5040
+ padding-bottom: 0.5rem;
5041
+ }
5042
+ }