@dodlhuat/basix 1.2.0 → 1.2.2

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 (93) hide show
  1. package/README.md +266 -6
  2. package/css/accordion.scss +86 -87
  3. package/css/alert.scss +137 -137
  4. package/css/button.scss +48 -0
  5. package/css/calendar.scss +957 -0
  6. package/css/card.scss +65 -65
  7. package/css/chart.scss +270 -157
  8. package/css/chat-bubbles.scss +134 -68
  9. package/css/chips.scss +109 -19
  10. package/css/colors.scss +32 -32
  11. package/css/datepicker.scss +336 -336
  12. package/css/defaults.scss +90 -90
  13. package/css/docs.scss +529 -0
  14. package/css/editor.scss +36 -0
  15. package/css/file-uploader.scss +1 -1
  16. package/css/flyout-menu.scss +361 -361
  17. package/css/form.scss +0 -15
  18. package/css/gallery.scss +65 -6
  19. package/css/grid.scss +41 -40
  20. package/css/group-picker.scss +345 -0
  21. package/css/guitar-chords.css +250 -250
  22. package/css/icons.scss +330 -330
  23. package/css/parameters.scss +3 -3
  24. package/css/placeholder.scss +33 -33
  25. package/css/popover.scss +206 -0
  26. package/css/progress.scss +76 -32
  27. package/css/properties.scss +51 -36
  28. package/css/push-menu.scss +302 -174
  29. package/css/reset.scss +39 -39
  30. package/css/scrollbar.scss +62 -5
  31. package/css/sidebar-nav.scss +92 -0
  32. package/css/spinner.scss +65 -65
  33. package/css/stepper.scss +48 -12
  34. package/css/style.css +3155 -254
  35. package/css/style.css.map +1 -1
  36. package/css/style.min.css +1 -1
  37. package/css/style.scss +51 -45
  38. package/css/table.scss +199 -199
  39. package/css/tabs.scss +154 -123
  40. package/css/timeline.scss +83 -38
  41. package/css/timepicker.scss +100 -5
  42. package/css/toast.scss +81 -81
  43. package/css/virtual-dropdown.scss +35 -29
  44. package/js/calendar.js +532 -0
  45. package/js/calendar.ts +706 -0
  46. package/js/chart.js +573 -257
  47. package/js/chart.ts +692 -0
  48. package/js/code-viewer.js +10 -10
  49. package/js/code-viewer.ts +188 -188
  50. package/js/datepicker.ts +627 -627
  51. package/js/docs-nav.js +204 -0
  52. package/js/dropdown.ts +179 -179
  53. package/js/editor.js +50 -6
  54. package/js/editor.ts +483 -444
  55. package/js/file-uploader.js +1 -0
  56. package/js/file-uploader.ts +1 -0
  57. package/js/flyout-menu.js +14 -14
  58. package/js/flyout-menu.ts +249 -249
  59. package/js/form-builder.js +106 -106
  60. package/js/gallery.js +14 -8
  61. package/js/gallery.ts +245 -236
  62. package/js/group-picker.js +342 -0
  63. package/js/group-picker.ts +447 -0
  64. package/js/guitar-chords.js +268 -268
  65. package/js/lazy-loader.js +121 -121
  66. package/js/modal.ts +166 -166
  67. package/js/popover.js +163 -0
  68. package/js/popover.ts +219 -0
  69. package/js/position.js +108 -0
  70. package/js/position.ts +111 -0
  71. package/js/push-menu.js +113 -0
  72. package/js/push-menu.ts +284 -145
  73. package/js/request.js +50 -50
  74. package/js/scroll.ts +47 -47
  75. package/js/scrollbar.js +13 -0
  76. package/js/scrollbar.ts +324 -307
  77. package/js/select.ts +216 -216
  78. package/js/sidebar-nav.js +41 -0
  79. package/js/sidebar-nav.ts +66 -0
  80. package/js/table.ts +452 -452
  81. package/js/tabs.ts +279 -279
  82. package/js/theme.js +17 -6
  83. package/js/theme.ts +234 -224
  84. package/js/toast.ts +137 -137
  85. package/js/tooltip.js +6 -60
  86. package/js/tooltip.ts +184 -251
  87. package/js/tsconfig.json +18 -18
  88. package/js/utils.ts +83 -83
  89. package/js/virtual-dropdown.js +25 -25
  90. package/js/virtual-dropdown.ts +365 -365
  91. package/package.json +37 -39
  92. package/js/index.js +0 -816
  93. package/js/index.ts +0 -987
package/css/defaults.scss CHANGED
@@ -1,91 +1,91 @@
1
- @use "properties";
2
- @use "parameters" as *;
3
-
4
- html, body {
5
- overflow: auto;
6
- }
7
-
8
- body {
9
- position: relative;
10
- height: 100%;
11
- width: 100%;
12
- min-height: 100vh;
13
- }
14
-
15
- a {
16
- cursor: pointer;
17
- }
18
-
19
- .content {
20
- margin-left: calc(2 * $spacing);
21
- margin-right: calc(2 * $spacing);
22
- margin-top: calc($spacing * 4);
23
- }
24
-
25
- .hidden {
26
- display: none;
27
- }
28
-
29
- .float-right {
30
- float: right;
31
- }
32
-
33
- .float-left {
34
- float: left;
35
- }
36
-
37
- .block {
38
- display: block;
39
- width: 100%;
40
- }
41
-
42
- .vertical-align-center {
43
- align-items: center;
44
- display: flex;
45
- }
46
-
47
- .horizontal-align-center {
48
- text-align: center;
49
- }
50
-
51
- .center {
52
- align-items: center;
53
- justify-content: center;
54
- display: flex;
55
- }
56
-
57
- code.code {
58
- background: var(--divider);
59
- display: block;
60
- font-family: monospace;
61
- border-radius: $border-radius;
62
- font-size: calc($spacing * 1.3);
63
- margin: $spacing 0;
64
-
65
- .code-header {
66
- display: block;
67
- background: var(--disabled);
68
- border-top-left-radius: $border-radius;
69
- border-top-right-radius: $border-radius;
70
- padding: calc($spacing / 2) calc($spacing * 2);
71
- color: var(--primary-text);
72
- font-weight: bold;
73
- }
74
-
75
- .code-content {
76
- padding: calc($spacing * 2);
77
- white-space: break-spaces;
78
- }
79
- }
80
-
81
- .cursor-pointer {
82
- cursor: pointer;
83
- }
84
-
85
- .spacing-right {
86
- margin-right: $spacing;
87
- }
88
-
89
- .flex {
90
- display: flex;
1
+ @use "properties";
2
+ @use "parameters" as *;
3
+
4
+ html, body {
5
+ overflow: auto;
6
+ }
7
+
8
+ body {
9
+ position: relative;
10
+ height: 100%;
11
+ width: 100%;
12
+ min-height: 100vh;
13
+ }
14
+
15
+ a {
16
+ cursor: pointer;
17
+ }
18
+
19
+ .content {
20
+ margin-left: calc(2 * $spacing);
21
+ margin-right: calc(2 * $spacing);
22
+ margin-top: calc($spacing * 4);
23
+ }
24
+
25
+ .hidden {
26
+ display: none;
27
+ }
28
+
29
+ .float-right {
30
+ float: right;
31
+ }
32
+
33
+ .float-left {
34
+ float: left;
35
+ }
36
+
37
+ .block {
38
+ display: block;
39
+ width: 100%;
40
+ }
41
+
42
+ .vertical-align-center {
43
+ align-items: center;
44
+ display: flex;
45
+ }
46
+
47
+ .horizontal-align-center {
48
+ text-align: center;
49
+ }
50
+
51
+ .center {
52
+ align-items: center;
53
+ justify-content: center;
54
+ display: flex;
55
+ }
56
+
57
+ code.code {
58
+ background: var(--divider);
59
+ display: block;
60
+ font-family: monospace;
61
+ border-radius: $border-radius;
62
+ font-size: calc($spacing * 1.3);
63
+ margin: $spacing 0;
64
+
65
+ .code-header {
66
+ display: block;
67
+ background: var(--disabled);
68
+ border-top-left-radius: $border-radius;
69
+ border-top-right-radius: $border-radius;
70
+ padding: calc($spacing / 2) calc($spacing * 2);
71
+ color: var(--primary-text);
72
+ font-weight: bold;
73
+ }
74
+
75
+ .code-content {
76
+ padding: calc($spacing * 2);
77
+ white-space: break-spaces;
78
+ }
79
+ }
80
+
81
+ .cursor-pointer {
82
+ cursor: pointer;
83
+ }
84
+
85
+ .spacing-right {
86
+ margin-right: $spacing;
87
+ }
88
+
89
+ .flex {
90
+ display: flex;
91
91
  }
package/css/docs.scss ADDED
@@ -0,0 +1,529 @@
1
+ @use "parameters" as *;
2
+
3
+ // ── Sidebar content (logo + search) ──────────────────────────────────────────
4
+
5
+ .sidebar-nav {
6
+
7
+ .docs-sidebar-logo {
8
+ display: flex;
9
+ align-items: center;
10
+ gap: 0.5rem;
11
+ padding: 1.25rem 1rem;
12
+ border-bottom: 1px solid var(--divider);
13
+ font-weight: 700;
14
+ font-size: 1.1rem;
15
+ color: var(--primary-text);
16
+ text-decoration: none;
17
+ letter-spacing: -0.01em;
18
+
19
+ .docs-logo-badge {
20
+ font-size: 0.6rem;
21
+ font-weight: 700;
22
+ background: var(--accent-color);
23
+ color: #fff;
24
+ padding: 0.1rem 0.35rem;
25
+ border-radius: 0.25rem;
26
+ letter-spacing: 0.04em;
27
+ text-transform: uppercase;
28
+ }
29
+ }
30
+
31
+ .docs-sidebar-search {
32
+ padding: 0.75rem 1rem;
33
+ border-bottom: 1px solid var(--divider);
34
+
35
+ input {
36
+ width: 100%;
37
+ height: 2rem;
38
+ font-size: 0.8rem;
39
+ background: var(--secondary-background);
40
+ border: 1px solid var(--divider);
41
+ border-radius: $border-radius;
42
+ padding: 0 0.75rem;
43
+ color: var(--primary-text);
44
+ outline: none;
45
+
46
+ &::placeholder { color: var(--secondary-text); }
47
+ &:focus { border-color: var(--accent-color); }
48
+ }
49
+ }
50
+ }
51
+
52
+ .docs-nav {
53
+ flex: 1;
54
+ padding: 0.75rem 0 2rem;
55
+ overflow-y: auto;
56
+
57
+ ul {
58
+ list-style: none;
59
+ margin: 0;
60
+ padding: 0;
61
+ }
62
+
63
+ .docs-nav-section {
64
+ margin-bottom: 0.25rem;
65
+ }
66
+
67
+ .docs-nav-section-label {
68
+ font-size: 0.65rem;
69
+ font-weight: 700;
70
+ letter-spacing: 0.08em;
71
+ text-transform: uppercase;
72
+ color: var(--secondary-text);
73
+ padding: 0.85rem 1rem 0.3rem;
74
+ }
75
+
76
+ .docs-nav-item a {
77
+ display: block;
78
+ padding: 0.3rem 1rem 0.3rem 1.25rem;
79
+ font-size: 0.85rem;
80
+ color: var(--secondary-text);
81
+ text-decoration: none;
82
+ border-radius: 0;
83
+ transition: color 0.15s, background 0.15s;
84
+ border-left: 2px solid transparent;
85
+
86
+ &:hover {
87
+ color: var(--primary-text);
88
+ background: var(--secondary-background);
89
+ }
90
+
91
+ &.is-active {
92
+ color: var(--accent-color);
93
+ border-left-color: var(--accent-color);
94
+ background: color-mix(in srgb, var(--accent-color) 8%, transparent);
95
+ font-weight: 500;
96
+ }
97
+ }
98
+ }
99
+
100
+ .docs-topbar {
101
+ position: sticky;
102
+ top: 0;
103
+ height: 52px;
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: space-between;
107
+ padding: 0 2rem;
108
+ background: var(--primary-bg);
109
+ border-bottom: 1px solid var(--divider);
110
+ z-index: 90;
111
+ gap: 1rem;
112
+
113
+ .docs-breadcrumb {
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 0.4rem;
117
+ font-size: 0.8rem;
118
+ color: var(--secondary-text);
119
+
120
+ a {
121
+ color: var(--secondary-text);
122
+ text-decoration: none;
123
+ &:hover { color: var(--primary-text); }
124
+ }
125
+
126
+ .sep { opacity: 0.4; }
127
+ .current { color: var(--primary-text); font-weight: 500; }
128
+ }
129
+
130
+ .docs-topbar-actions {
131
+ display: flex;
132
+ align-items: center;
133
+ gap: 0.5rem;
134
+ }
135
+ }
136
+
137
+ .docs-content {
138
+ flex: 1;
139
+ padding: 2.5rem 2rem 4rem;
140
+ max-width: 860px;
141
+
142
+ h1 {
143
+ font-size: 1.75rem;
144
+ font-weight: 700;
145
+ letter-spacing: -0.02em;
146
+ margin: 0 0 0.5rem;
147
+ }
148
+
149
+ .docs-lead {
150
+ font-size: 1rem;
151
+ color: var(--secondary-text);
152
+ margin: 0 0 1rem;
153
+ line-height: 1.6;
154
+ max-width: 600px;
155
+ }
156
+
157
+ .docs-import {
158
+ display: inline-flex;
159
+ align-items: center;
160
+ gap: 0.5rem;
161
+ margin: 0 0 2rem;
162
+ padding: 0.4rem 0.75rem;
163
+ background: var(--secondary-background);
164
+ border: 1px solid var(--divider);
165
+ border-radius: $border-radius;
166
+ font-size: 0.8rem;
167
+ font-family: ui-monospace, "Cascadia Code", "SF Mono", monospace;
168
+ color: var(--accent-color);
169
+
170
+ &::before {
171
+ content: 'import';
172
+ color: var(--secondary-text);
173
+ font-style: italic;
174
+ font-family: inherit;
175
+ }
176
+ }
177
+
178
+ h2 {
179
+ font-size: 1.1rem;
180
+ font-weight: 600;
181
+ margin: 2.5rem 0 1rem;
182
+ padding-bottom: 0.5rem;
183
+ border-bottom: 1px solid var(--divider);
184
+ }
185
+
186
+ h3 {
187
+ font-size: 0.95rem;
188
+ font-weight: 600;
189
+ margin: 1.75rem 0 0.75rem;
190
+ }
191
+
192
+ p { line-height: 1.7; margin: 0 0 1rem; }
193
+
194
+ code {
195
+ font-size: 0.8em;
196
+ background: var(--secondary-background);
197
+ border: 1px solid var(--divider);
198
+ border-radius: 0.25rem;
199
+ padding: 0.1em 0.35em;
200
+ }
201
+
202
+ .docs-demo {
203
+ background: var(--secondary-background);
204
+ border: 1px solid var(--divider);
205
+ border-radius: $border-radius;
206
+ padding: 2rem;
207
+ margin: 1rem 0;
208
+
209
+ h1 { font-size: 2rem; font-weight: 800; }
210
+ h2 { font-size: 1.625rem; font-weight: 750; border: none; padding: 0; margin-top: 0; }
211
+ h3 { font-size: 1.375rem; font-weight: 700; }
212
+ h4 { font-size: 1.125rem; font-weight: 700; }
213
+ h5 { font-size: 1rem; font-weight: 600; }
214
+
215
+ &.centered {
216
+ display: flex;
217
+ align-items: center;
218
+ justify-content: center;
219
+ flex-wrap: wrap;
220
+ gap: 0.75rem;
221
+ }
222
+ }
223
+
224
+ .docs-props-table {
225
+ width: 100%;
226
+ border-collapse: collapse;
227
+ font-size: 0.82rem;
228
+ margin: 1rem 0 2rem;
229
+
230
+ th {
231
+ text-align: left;
232
+ padding: 0.5rem 0.75rem;
233
+ background: var(--secondary-background);
234
+ border: 1px solid var(--divider);
235
+ font-weight: 600;
236
+ color: var(--secondary-text);
237
+ font-size: 0.75rem;
238
+ text-transform: uppercase;
239
+ letter-spacing: 0.05em;
240
+ }
241
+
242
+ td {
243
+ padding: 0.5rem 0.75rem;
244
+ border: 1px solid var(--divider);
245
+ vertical-align: top;
246
+
247
+ code {
248
+ font-size: 0.78em;
249
+ background: color-mix(in srgb, var(--accent-color) 10%, transparent);
250
+ border-color: color-mix(in srgb, var(--accent-color) 20%, transparent);
251
+ color: var(--accent-color);
252
+ }
253
+ }
254
+
255
+ tr:hover td { background: var(--secondary-background); }
256
+ }
257
+ }
258
+
259
+ // ── Landing page ─────────────────────────────────────────────────────────────
260
+
261
+ .landing-hero {
262
+ padding: 5rem 2rem 4rem;
263
+ text-align: center;
264
+ background: var(--primary-bg);
265
+ border-bottom: 1px solid var(--divider);
266
+
267
+ .landing-eyebrow {
268
+ display: inline-flex;
269
+ align-items: center;
270
+ gap: 0.4rem;
271
+ font-size: 0.7rem;
272
+ font-weight: 700;
273
+ letter-spacing: 0.1em;
274
+ text-transform: uppercase;
275
+ color: var(--accent-color);
276
+ background: color-mix(in srgb, var(--accent-color) 10%, transparent);
277
+ border: 1px solid color-mix(in srgb, var(--accent-color) 25%, transparent);
278
+ border-radius: 2rem;
279
+ padding: 0.25rem 0.75rem;
280
+ margin-bottom: 1.5rem;
281
+ }
282
+
283
+ h1 {
284
+ font-size: clamp(2.5rem, 6vw, 4rem);
285
+ font-weight: 800;
286
+ letter-spacing: -0.03em;
287
+ margin: 0 0 1rem;
288
+ line-height: 1.1;
289
+ }
290
+
291
+ .landing-tagline {
292
+ font-size: clamp(1rem, 2.5vw, 1.2rem);
293
+ color: var(--secondary-text);
294
+ max-width: 520px;
295
+ margin: 0 auto 2rem;
296
+ line-height: 1.6;
297
+ }
298
+
299
+ .landing-actions {
300
+ display: flex;
301
+ align-items: center;
302
+ justify-content: center;
303
+ gap: 0.75rem;
304
+ flex-wrap: wrap;
305
+ }
306
+
307
+ .landing-install {
308
+ display: inline-flex;
309
+ align-items: center;
310
+ gap: 0.5rem;
311
+ background: var(--secondary-background);
312
+ border: 1px solid var(--divider);
313
+ border-radius: $border-radius;
314
+ padding: 0.5rem 1rem;
315
+ font-size: 0.85rem;
316
+ font-family: monospace;
317
+ color: var(--primary-text);
318
+ cursor: pointer;
319
+ transition: border-color 0.15s;
320
+
321
+ &:hover { border-color: var(--accent-color); }
322
+
323
+ .install-prefix { color: var(--secondary-text); }
324
+ }
325
+ }
326
+
327
+ .landing-features {
328
+ display: grid;
329
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
330
+ gap: 0;
331
+ border-bottom: 1px solid var(--divider);
332
+
333
+ .feature-item {
334
+ padding: 1.5rem 2rem;
335
+ border-right: 1px solid var(--divider);
336
+
337
+ &:last-child { border-right: none; }
338
+
339
+ .feature-icon {
340
+ font-size: 1.25rem;
341
+ margin-bottom: 0.5rem;
342
+ svg {
343
+ width: 1em;
344
+ height: 1em;
345
+ display: block;
346
+ }
347
+ }
348
+
349
+ .feature-title {
350
+ font-weight: 600;
351
+ font-size: 0.9rem;
352
+ margin-bottom: 0.2rem;
353
+ }
354
+
355
+ .feature-desc {
356
+ font-size: 0.78rem;
357
+ color: var(--secondary-text);
358
+ line-height: 1.5;
359
+ }
360
+ }
361
+ }
362
+
363
+ .landing-section {
364
+ padding: 3.5rem 2rem;
365
+ max-width: 1100px;
366
+ margin: 0 auto;
367
+ width: 100%;
368
+
369
+ &-title {
370
+ font-size: 1.4rem;
371
+ font-weight: 700;
372
+ letter-spacing: -0.02em;
373
+ margin: 0 0 0.4rem;
374
+ }
375
+
376
+ &-sub {
377
+ color: var(--secondary-text);
378
+ font-size: 0.9rem;
379
+ margin: 0 0 2rem;
380
+ }
381
+ }
382
+
383
+ .component-grid {
384
+ display: grid;
385
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
386
+ gap: 1rem;
387
+ }
388
+
389
+ .component-card {
390
+ display: flex;
391
+ flex-direction: column;
392
+ gap: 0.5rem;
393
+ padding: 1.25rem 1.25rem 1rem;
394
+ border: 1px solid var(--divider);
395
+ border-radius: $border-radius * 2;
396
+ text-decoration: none;
397
+ color: var(--primary-text);
398
+ background: var(--primary-bg);
399
+ transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
400
+
401
+ &:hover {
402
+ border-color: var(--accent-color);
403
+ box-shadow: 0 4px 16px color-mix(in srgb, var(--accent-color) 15%, transparent);
404
+ transform: translateY(-1px);
405
+ }
406
+
407
+ .cc-icon {
408
+ font-size: 1.4rem;
409
+ line-height: 1;
410
+ margin-bottom: 0.25rem;
411
+ svg {
412
+ width: 1em;
413
+ height: 1em;
414
+ display: block;
415
+ }
416
+ }
417
+
418
+ .cc-name {
419
+ font-weight: 600;
420
+ font-size: 0.9rem;
421
+ }
422
+
423
+ .cc-desc {
424
+ font-size: 0.78rem;
425
+ color: var(--secondary-text);
426
+ line-height: 1.5;
427
+ }
428
+
429
+ .cc-count {
430
+ font-size: 0.7rem;
431
+ color: var(--secondary-text);
432
+ margin-top: auto;
433
+ padding-top: 0.5rem;
434
+ border-top: 1px solid var(--divider);
435
+ }
436
+ }
437
+
438
+ .landing-quickstart {
439
+ background: var(--secondary-background);
440
+ border-top: 1px solid var(--divider);
441
+ border-bottom: 1px solid var(--divider);
442
+ padding: 3.5rem 2rem;
443
+
444
+ .qs-inner {
445
+ max-width: 700px;
446
+ margin: 0 auto;
447
+ }
448
+
449
+ h2 {
450
+ font-size: 1.4rem;
451
+ font-weight: 700;
452
+ letter-spacing: -0.02em;
453
+ margin: 0 0 0.4rem;
454
+ }
455
+
456
+ p {
457
+ color: var(--secondary-text);
458
+ font-size: 0.9rem;
459
+ margin: 0 0 1.5rem;
460
+ }
461
+
462
+ .qs-steps {
463
+ display: flex;
464
+ flex-direction: column;
465
+ gap: 1rem;
466
+ }
467
+
468
+ .qs-step {
469
+ display: flex;
470
+ gap: 1rem;
471
+ align-items: flex-start;
472
+
473
+ .qs-num {
474
+ flex-shrink: 0;
475
+ width: 1.5rem;
476
+ height: 1.5rem;
477
+ background: var(--accent-color);
478
+ color: #fff;
479
+ border-radius: 50%;
480
+ font-size: 0.7rem;
481
+ font-weight: 700;
482
+ display: flex;
483
+ align-items: center;
484
+ justify-content: center;
485
+ margin-top: 0.1rem;
486
+ }
487
+
488
+ .qs-text {
489
+ flex: 1;
490
+
491
+ strong { display: block; font-size: 0.9rem; margin-bottom: 0.25rem; }
492
+ p { margin: 0; font-size: 0.82rem; }
493
+ code {
494
+ display: block;
495
+ background: var(--primary-bg);
496
+ border: 1px solid var(--divider);
497
+ border-radius: $border-radius;
498
+ padding: 0.5rem 0.75rem;
499
+ font-size: 0.8rem;
500
+ margin-top: 0.4rem;
501
+ font-family: monospace;
502
+ color: var(--primary-text);
503
+ }
504
+ }
505
+ }
506
+ }
507
+
508
+ .landing-footer {
509
+ padding: 1.5rem 2rem;
510
+ border-top: 1px solid var(--divider);
511
+ display: flex;
512
+ align-items: center;
513
+ justify-content: space-between;
514
+ font-size: 0.78rem;
515
+ color: var(--secondary-text);
516
+ gap: 1rem;
517
+ flex-wrap: wrap;
518
+
519
+ a {
520
+ color: var(--secondary-text);
521
+ text-decoration: none;
522
+ &:hover { color: var(--primary-text); }
523
+ }
524
+
525
+ .footer-links {
526
+ display: flex;
527
+ gap: 1.25rem;
528
+ }
529
+ }