@invisibleloop/pulse 0.1.38 → 0.2.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.
@@ -15,35 +15,28 @@
15
15
  All component styles reference --ui-* tokens only.
16
16
  Override these in :root to retheme the entire library at once. */
17
17
  :root {
18
- --ui-bg: var(--bg, #0d0d10);
19
- --ui-surface: var(--surface, #111116);
20
- --ui-surface-2: var(--surface-2, #18181f);
21
- --ui-border: var(--border, #38383f);
22
- --ui-text: var(--text, #e2e2ea);
23
- --ui-muted: var(--muted, #9090a0);
24
- --ui-accent: var(--accent, #9b8dff);
25
- --ui-accent-hover: var(--accent-hover, #b5aaff);
26
- --ui-accent-dim: var(--accent-dim, rgba(155, 141, 255, 0.12));
27
- --ui-accent-text: var(--accent-text, #ffffff);
28
- --ui-green: var(--green, #3dd68c);
29
- --ui-green-dim: rgba(61, 214, 140, 0.12);
30
- --ui-red: var(--red, #ff6b6b);
31
- --ui-red-dim: rgba(255, 107, 107, 0.12);
32
- --ui-yellow: #f5a623;
33
- --ui-yellow-dim: rgba(245, 166, 35, 0.12);
34
- --ui-blue: #60a5fa;
35
- --ui-blue-dim: rgba(96, 165, 250, 0.12);
36
- --ui-radius: var(--radius, 8px);
37
- --ui-radius-sm: 4px;
38
- --ui-font: var(
39
- --font,
40
- system-ui,
41
- -apple-system,
42
- BlinkMacSystemFont,
43
- "Segoe UI",
44
- sans-serif
45
- );
46
- --ui-mono: var(--mono, "Fira Code", "Cascadia Code", monospace);
18
+ --ui-bg: var(--bg, #0d0d10);
19
+ --ui-surface: var(--surface, #111116);
20
+ --ui-surface-2: var(--surface-2, #18181f);
21
+ --ui-border: var(--border, #38383f);
22
+ --ui-text: var(--text, #e2e2ea);
23
+ --ui-muted: var(--muted, #9090a0);
24
+ --ui-accent: var(--accent, #9b8dff);
25
+ --ui-accent-hover: var(--accent-hover, #b5aaff);
26
+ --ui-accent-dim: var(--accent-dim, rgba(155,141,255,.12));
27
+ --ui-accent-text: var(--accent-text, #ffffff);
28
+ --ui-green: var(--green, #3dd68c);
29
+ --ui-green-dim: rgba(61, 214, 140, .12);
30
+ --ui-red: var(--red, #ff6b6b);
31
+ --ui-red-dim: rgba(255, 107, 107, .12);
32
+ --ui-yellow: #f5a623;
33
+ --ui-yellow-dim: rgba(245, 166, 35, .12);
34
+ --ui-blue: #60a5fa;
35
+ --ui-blue-dim: rgba( 96, 165, 250, .12);
36
+ --ui-radius: var(--radius, 8px);
37
+ --ui-radius-sm: 4px;
38
+ --ui-font: var(--font, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
39
+ --ui-mono: var(--mono, 'Fira Code', 'Cascadia Code', monospace);
47
40
 
48
41
  /* Touch target minimum per WCAG 2.5.5 */
49
42
  --ui-touch-min: 44px;
@@ -54,35 +47,16 @@
54
47
  background matches the component surface colours out of the box.
55
48
  Projects can opt into a light theme via meta.theme: 'light' (sets
56
49
  data-theme="light" on <body>) or override :root tokens in app.css. */
57
- *,
58
- *::before,
59
- *::after {
60
- box-sizing: border-box;
61
- }
62
- h1,
63
- h2,
64
- h3,
65
- h4,
66
- h5,
67
- h6,
68
- p,
69
- ul,
70
- ol,
71
- li {
72
- margin: 0;
73
- }
74
- ul,
75
- ol {
76
- list-style: none;
77
- }
50
+ *, *::before, *::after { box-sizing: border-box; }
51
+ h1, h2, h3, h4, h5, h6, p, ul, ol, li { margin: 0; }
52
+ ul, ol { list-style: none; }
78
53
 
79
- html,
80
- body {
81
- margin: 0;
54
+ html, body {
55
+ margin: 0;
82
56
  background-color: var(--ui-bg);
83
- color: var(--ui-text);
84
- font-family: var(--ui-font);
85
- min-height: 100dvh;
57
+ color: var(--ui-text);
58
+ font-family: var(--ui-font);
59
+ min-height: 100dvh;
86
60
  }
87
61
 
88
62
  /* ─── Focus style ────────────────────────────────────────────────────────────
@@ -98,167 +72,142 @@ body {
98
72
 
99
73
  /* ─── Button ─────────────────────────────────────────────────────────────── */
100
74
  .ui-btn {
101
- box-sizing: border-box;
102
- display: inline-flex;
103
- align-items: center;
75
+ box-sizing: border-box;
76
+ display: inline-flex;
77
+ align-items: center;
104
78
  justify-content: center;
105
- gap: 0.45rem;
106
- padding: 0 1.2rem;
107
- height: var(--ui-touch-min);
108
- min-width: var(--ui-touch-min);
109
- border: 1px solid transparent;
110
- border-radius: var(--ui-radius);
111
- font-family: var(--ui-font);
112
- font-size: 0.9rem;
113
- font-weight: 600;
114
- line-height: 1;
79
+ gap: .45rem;
80
+ padding: 0 1.2rem;
81
+ height: var(--ui-touch-min);
82
+ min-width: var(--ui-touch-min);
83
+ border: 1px solid transparent;
84
+ border-radius: var(--ui-radius);
85
+ font-family: var(--ui-font);
86
+ font-size: .9rem;
87
+ font-weight: 600;
88
+ line-height: 1;
115
89
  text-decoration: none;
116
- white-space: nowrap;
117
- cursor: pointer;
118
- transition:
119
- background 0.15s,
120
- color 0.15s,
121
- border-color 0.15s,
122
- opacity 0.15s;
90
+ white-space: nowrap;
91
+ cursor: pointer;
92
+ transition: background .15s, color .15s, border-color .15s, opacity .15s;
123
93
  -webkit-font-smoothing: antialiased;
124
94
  }
125
95
 
126
96
  /* Variants */
127
97
  .ui-btn--primary {
128
98
  background: var(--ui-accent);
129
- color: var(--ui-bg);
99
+ color: var(--ui-bg);
130
100
  }
131
101
  .ui-btn--primary:hover:not(.ui-btn--disabled):not([disabled]) {
132
102
  background: var(--ui-accent-hover);
133
103
  }
134
104
 
135
105
  .ui-btn--secondary {
136
- background: var(--ui-surface-2);
137
- color: var(--ui-text);
106
+ background: var(--ui-surface-2);
107
+ color: var(--ui-text);
138
108
  border-color: var(--ui-muted);
139
109
  }
140
110
  .ui-btn--secondary:hover:not(.ui-btn--disabled):not([disabled]) {
141
- background: var(--ui-surface);
111
+ background: var(--ui-surface);
142
112
  border-color: var(--ui-text);
143
113
  }
144
114
 
145
115
  .ui-btn--ghost {
146
116
  background: transparent;
147
- color: var(--ui-muted);
148
- border: none;
117
+ color: var(--ui-muted);
118
+ border: none;
149
119
  }
150
120
  .ui-btn--ghost:hover:not(.ui-btn--disabled):not([disabled]) {
151
121
  background: var(--ui-surface-2);
152
- color: var(--ui-text);
122
+ color: var(--ui-text);
153
123
  }
154
124
 
155
125
  .ui-btn--danger {
156
126
  background: var(--ui-red-dim);
157
- color: var(--ui-red);
127
+ color: var(--ui-red);
158
128
  border-color: var(--ui-red);
159
129
  }
160
130
  .ui-btn--danger:hover:not(.ui-btn--disabled):not([disabled]) {
161
131
  background: var(--ui-red);
162
- color: var(--ui-bg);
132
+ color: var(--ui-bg);
163
133
  }
164
134
 
165
135
  /* Sizes */
166
136
  .ui-btn--sm {
167
- height: 36px;
168
- padding: 0 0.85rem;
169
- font-size: 0.82rem;
137
+ height: 36px;
138
+ padding: 0 .85rem;
139
+ font-size: .82rem;
170
140
  min-width: 36px;
171
141
  }
172
142
  .ui-btn--lg {
173
- height: 52px;
174
- padding: 0 1.75rem;
143
+ height: 52px;
144
+ padding: 0 1.75rem;
175
145
  font-size: 1rem;
176
146
  }
177
147
 
178
148
  /* Modifiers */
179
- .ui-btn--full {
180
- width: 100%;
181
- }
149
+ .ui-btn--full { width: 100%; }
182
150
  .ui-btn--disabled,
183
151
  .ui-btn[disabled] {
184
- opacity: 0.45;
185
- cursor: not-allowed;
152
+ opacity: .45;
153
+ cursor: not-allowed;
186
154
  pointer-events: none;
187
155
  }
188
156
 
189
157
  .ui-btn-icon {
190
- display: inline-flex;
158
+ display: inline-flex;
191
159
  align-items: center;
192
160
  flex-shrink: 0;
193
161
  }
194
162
 
195
163
  /* ─── Badge ──────────────────────────────────────────────────────────────── */
196
164
  .ui-badge {
197
- display: inline-flex;
198
- align-items: center;
199
- align-self: flex-start;
200
- padding: 0.3em 0.55em;
201
- border-radius: var(--ui-radius-sm);
202
- font-family: var(--ui-font);
203
- font-size: 0.72rem;
204
- font-weight: 600;
205
- line-height: 1;
206
- white-space: nowrap;
207
- letter-spacing: 0.02em;
208
- }
209
-
210
- .ui-badge--default {
211
- background: var(--ui-surface-2);
212
- color: var(--ui-muted);
213
- }
214
- .ui-badge--success {
215
- background: var(--ui-green-dim);
216
- color: var(--ui-green);
217
- }
218
- .ui-badge--warning {
219
- background: var(--ui-yellow-dim);
220
- color: var(--ui-yellow);
221
- }
222
- .ui-badge--error {
223
- background: var(--ui-red-dim);
224
- color: var(--ui-red);
225
- }
226
- .ui-badge--info {
227
- background: var(--ui-blue-dim);
228
- color: var(--ui-blue);
229
- }
165
+ display: inline-flex;
166
+ align-items: center;
167
+ align-self: flex-start;
168
+ padding: .3em .55em;
169
+ border-radius: var(--ui-radius-sm);
170
+ font-family: var(--ui-font);
171
+ font-size: .72rem;
172
+ font-weight: 600;
173
+ line-height: 1;
174
+ white-space: nowrap;
175
+ letter-spacing: .02em;
176
+ }
177
+
178
+ .ui-badge--default { background: var(--ui-surface-2); color: var(--ui-muted); }
179
+ .ui-badge--success { background: var(--ui-green-dim); color: var(--ui-green); }
180
+ .ui-badge--warning { background: var(--ui-yellow-dim);color: var(--ui-yellow); }
181
+ .ui-badge--error { background: var(--ui-red-dim); color: var(--ui-red); }
182
+ .ui-badge--info { background: var(--ui-blue-dim); color: var(--ui-blue); }
230
183
 
231
184
  /* ─── Card ───────────────────────────────────────────────────────────────── */
232
185
  .ui-card {
233
- background: var(--ui-surface);
234
- border: 1px solid var(--ui-border);
186
+ background: var(--ui-surface);
187
+ border: 1px solid var(--ui-border);
235
188
  border-radius: var(--ui-radius);
236
- overflow: hidden;
189
+ overflow: hidden;
237
190
  }
238
191
 
239
192
  .ui-card-header {
240
- padding: 1rem 1.25rem;
193
+ padding: 1rem 1.25rem;
241
194
  border-bottom: 1px solid var(--ui-border);
242
195
  }
243
196
 
244
197
  .ui-card-title {
245
- margin: 0;
246
- font-size: 0.95rem;
198
+ margin: 0;
199
+ font-size: .95rem;
247
200
  font-weight: 600;
248
- color: var(--ui-text);
201
+ color: var(--ui-text);
249
202
  line-height: 1.4;
250
203
  }
251
204
 
252
- .ui-card-body {
253
- padding: 1.25rem;
254
- }
205
+ .ui-card-body { padding: 1.25rem; }
255
206
 
256
- .ui-card--flush .ui-card-body {
257
- padding: 0;
258
- }
207
+ .ui-card--flush .ui-card-body { padding: 0; }
259
208
 
260
209
  .ui-card-footer {
261
- padding: 1rem 1.25rem;
210
+ padding: 1rem 1.25rem;
262
211
  border-top: 1px solid var(--ui-border);
263
212
  background: var(--ui-surface-2);
264
213
  }
@@ -268,101 +217,91 @@ body {
268
217
  ============================================================ */
269
218
 
270
219
  .ui-fieldset {
271
- border: 1px solid var(--ui-border);
220
+ border: 1px solid var(--ui-border);
272
221
  border-radius: var(--ui-radius);
273
- padding: 0;
274
- margin: 0;
222
+ padding: 0;
223
+ margin: 0;
275
224
  }
276
225
 
277
226
  .ui-fieldset-legend {
278
- margin-left: 1rem;
279
- padding: 0 0.375rem;
280
- font-size: 0.75rem;
281
- font-weight: 600;
282
- letter-spacing: 0.06em;
283
- text-transform: uppercase;
284
- color: var(--ui-muted);
285
- line-height: 1;
227
+ margin-left: 1rem;
228
+ padding: 0 0.375rem;
229
+ font-size: 0.75rem;
230
+ font-weight: 600;
231
+ letter-spacing: 0.06em;
232
+ text-transform: uppercase;
233
+ color: var(--ui-muted);
234
+ line-height: 1;
286
235
  }
287
236
 
288
237
  .ui-fieldset-body {
289
- display: flex;
238
+ display: flex;
290
239
  flex-direction: column;
291
- gap: 1rem;
292
- padding: 1.25rem;
240
+ gap: 1rem;
241
+ padding: 1.25rem;
293
242
  }
294
243
 
295
- .ui-fieldset--gap-xs .ui-fieldset-body {
296
- gap: 0.375rem;
297
- }
298
- .ui-fieldset--gap-sm .ui-fieldset-body {
299
- gap: 0.625rem;
300
- }
301
- .ui-fieldset--gap-lg .ui-fieldset-body {
302
- gap: 1.5rem;
303
- }
244
+ .ui-fieldset--gap-xs .ui-fieldset-body { gap: 0.375rem; }
245
+ .ui-fieldset--gap-sm .ui-fieldset-body { gap: 0.625rem; }
246
+ .ui-fieldset--gap-lg .ui-fieldset-body { gap: 1.5rem; }
304
247
 
305
248
  /* ─── Form fields (shared base) ──────────────────────────────────────────── */
306
249
  .ui-field {
307
- display: flex;
250
+ display: flex;
308
251
  flex-direction: column;
309
- gap: 0.4rem;
252
+ gap: .4rem;
310
253
  }
311
254
 
312
255
  .ui-label {
313
256
  font-family: var(--ui-font);
314
- font-size: 0.85rem;
257
+ font-size: .85rem;
315
258
  font-weight: 600;
316
- color: var(--ui-text);
259
+ color: var(--ui-text);
317
260
  line-height: 1.4;
318
261
  }
319
262
 
320
263
  .ui-required {
321
- color: var(--ui-red);
322
- margin-left: 0.15rem;
264
+ color: var(--ui-red);
265
+ margin-left: .15rem;
323
266
  }
324
267
 
325
268
  .ui-hint {
326
- font-size: 0.8rem;
327
- color: var(--ui-muted);
328
- margin: 0;
269
+ font-size: .8rem;
270
+ color: var(--ui-muted);
271
+ margin: 0;
329
272
  line-height: 1.5;
330
273
  }
331
274
 
332
275
  .ui-error {
333
- font-size: 0.8rem;
334
- color: var(--ui-red);
335
- margin: 0;
276
+ font-size: .8rem;
277
+ color: var(--ui-red);
278
+ margin: 0;
336
279
  line-height: 1.5;
337
280
  }
338
281
 
339
282
  /* ─── Input ──────────────────────────────────────────────────────────────── */
340
283
  .ui-input {
341
- width: 100%;
342
- height: var(--ui-touch-min);
343
- padding: 0 0.85rem;
344
- background: var(--ui-surface);
345
- border: 1px solid var(--ui-border);
284
+ width: 100%;
285
+ height: var(--ui-touch-min);
286
+ padding: 0 .85rem;
287
+ background: var(--ui-surface);
288
+ border: 1px solid var(--ui-border);
346
289
  border-radius: var(--ui-radius);
347
- font-family: var(--ui-font);
348
- font-size: 0.9rem;
349
- color: var(--ui-text);
350
- transition: border-color 0.15s;
351
- appearance: none;
290
+ font-family: var(--ui-font);
291
+ font-size: .9rem;
292
+ color: var(--ui-text);
293
+ transition: border-color .15s;
294
+ appearance: none;
352
295
  -webkit-appearance: none;
353
296
  }
354
297
 
355
- .ui-input::placeholder {
356
- color: var(--ui-muted);
357
- }
298
+ .ui-input::placeholder { color: var(--ui-muted); }
358
299
 
359
- .ui-input:hover:not(:disabled) {
360
- border-color: var(--ui-muted);
361
- }
300
+ .ui-input:hover:not(:disabled) { border-color: var(--ui-muted); }
362
301
 
363
302
  .ui-input:disabled {
364
- opacity: 0.5;
365
- cursor: not-allowed;
303
+ opacity: .5;
304
+ cursor: not-allowed;
366
305
  }
367
306
 
368
307
  .ui-field--error .ui-input {
@@ -372,315 +311,246 @@ body {
372
311
  /* ─── Search ─────────────────────────────────────────────────────────────── */
373
312
  .ui-search-wrap {
374
313
  position: relative;
375
- display: flex;
314
+ display: flex;
376
315
  align-items: center;
377
316
  }
378
317
 
379
318
  .ui-search-icon {
380
- position: absolute;
381
- left: 0.75rem;
382
- display: flex;
319
+ position: absolute;
320
+ left: .75rem;
321
+ display: flex;
383
322
  align-items: center;
384
- color: var(--ui-muted);
323
+ color: var(--ui-muted);
385
324
  pointer-events: none;
386
325
  }
387
326
 
388
327
  .ui-search-input {
389
- width: 100%;
390
- height: var(--ui-touch-min);
391
- padding: 0 2.5rem 0 2.5rem;
392
- background: var(--ui-surface);
393
- border: 1px solid var(--ui-border);
328
+ width: 100%;
329
+ height: var(--ui-touch-min);
330
+ padding: 0 2.5rem 0 2.5rem;
331
+ background: var(--ui-surface);
332
+ border: 1px solid var(--ui-border);
394
333
  border-radius: var(--ui-radius);
395
- font-family: var(--ui-font);
396
- font-size: 0.9rem;
397
- color: var(--ui-text);
398
- transition: border-color 0.15s;
399
- appearance: none;
334
+ font-family: var(--ui-font);
335
+ font-size: .9rem;
336
+ color: var(--ui-text);
337
+ transition: border-color .15s;
338
+ appearance: none;
400
339
  -webkit-appearance: none;
401
340
  }
402
341
 
403
- .ui-search-input::placeholder {
404
- color: var(--ui-muted);
405
- }
342
+ .ui-search-input::placeholder { color: var(--ui-muted); }
406
343
 
407
- .ui-search-input:hover:not(:disabled) {
408
- border-color: var(--ui-muted);
409
- }
344
+ .ui-search-input:hover:not(:disabled) { border-color: var(--ui-muted); }
410
345
 
411
- .ui-search-input:disabled {
412
- opacity: 0.5;
413
- cursor: not-allowed;
414
- }
346
+ .ui-search-input:disabled { opacity: .5; cursor: not-allowed; }
415
347
 
416
348
  /* Hide native browser cancel button — the component provides its own */
417
- .ui-search-input::-webkit-search-cancel-button {
418
- display: none;
419
- }
349
+ .ui-search-input::-webkit-search-cancel-button { display: none; }
420
350
 
421
351
  .ui-search-clear {
422
- position: absolute;
423
- right: 0.5rem;
424
- display: flex;
352
+ position: absolute;
353
+ right: .5rem;
354
+ display: flex;
425
355
  align-items: center;
426
356
  justify-content: center;
427
- width: 1.75rem;
428
- height: 1.75rem;
429
- padding: 0;
430
- background: transparent;
431
- border: none;
357
+ width: 1.75rem;
358
+ height: 1.75rem;
359
+ padding: 0;
360
+ background: transparent;
361
+ border: none;
432
362
  border-radius: var(--ui-radius-sm);
433
- color: var(--ui-muted);
434
- cursor: pointer;
435
- transition:
436
- color 0.15s,
437
- background 0.15s;
363
+ color: var(--ui-muted);
364
+ cursor: pointer;
365
+ transition: color .15s, background .15s;
438
366
  }
439
367
 
440
- .ui-search-clear:hover {
441
- color: var(--ui-text);
442
- background: var(--ui-surface-2);
443
- }
368
+ .ui-search-clear:hover { color: var(--ui-text); background: var(--ui-surface-2); }
444
369
 
445
370
  /* ─── Select ─────────────────────────────────────────────────────────────── */
446
371
  .ui-select-wrap {
447
372
  position: relative;
448
- display: flex;
373
+ display: flex;
449
374
  }
450
375
 
451
376
  .ui-select {
452
- width: 100%;
453
- height: var(--ui-touch-min);
454
- padding: 0 2.5rem 0 0.85rem;
455
- background: var(--ui-surface);
456
- border: 1px solid var(--ui-border);
377
+ width: 100%;
378
+ height: var(--ui-touch-min);
379
+ padding: 0 2.5rem 0 .85rem;
380
+ background: var(--ui-surface);
381
+ border: 1px solid var(--ui-border);
457
382
  border-radius: var(--ui-radius);
458
- font-family: var(--ui-font);
459
- font-size: 0.9rem;
460
- color: var(--ui-text);
461
- cursor: pointer;
462
- appearance: none;
383
+ font-family: var(--ui-font);
384
+ font-size: .9rem;
385
+ color: var(--ui-text);
386
+ cursor: pointer;
387
+ appearance: none;
463
388
  -webkit-appearance: none;
464
- transition: border-color 0.15s;
389
+ transition: border-color .15s;
465
390
  }
466
391
 
467
- .ui-select:hover:not(:disabled) {
468
- border-color: var(--ui-muted);
469
- }
392
+ .ui-select:hover:not(:disabled) { border-color: var(--ui-muted); }
470
393
 
471
394
  .ui-select:disabled {
472
- opacity: 0.5;
473
- cursor: not-allowed;
395
+ opacity: .5;
396
+ cursor: not-allowed;
474
397
  }
475
398
 
476
- .ui-field--error .ui-select {
477
- border-color: var(--ui-red);
478
- }
399
+ .ui-field--error .ui-select { border-color: var(--ui-red); }
479
400
 
480
401
  .ui-select-chevron {
481
- position: absolute;
482
- right: 0.85rem;
483
- top: 50%;
484
- transform: translateY(-50%);
485
- pointer-events: none;
486
- color: var(--ui-muted);
487
- display: flex;
488
- align-items: center;
402
+ position: absolute;
403
+ right: .85rem;
404
+ top: 50%;
405
+ transform: translateY(-50%);
406
+ pointer-events: none;
407
+ color: var(--ui-muted);
408
+ display: flex;
409
+ align-items: center;
489
410
  }
490
411
 
491
412
  /* ─── Textarea ───────────────────────────────────────────────────────────── */
492
413
  .ui-textarea {
493
- width: 100%;
494
- padding: 0.65rem 0.85rem;
495
- background: var(--ui-surface);
496
- border: 1px solid var(--ui-border);
414
+ width: 100%;
415
+ padding: .65rem .85rem;
416
+ background: var(--ui-surface);
417
+ border: 1px solid var(--ui-border);
497
418
  border-radius: var(--ui-radius);
498
- font-family: var(--ui-font);
499
- font-size: 0.9rem;
500
- color: var(--ui-text);
501
- resize: vertical;
502
- transition: border-color 0.15s;
503
- min-height: calc(var(--ui-touch-min) * 2);
504
- appearance: none;
419
+ font-family: var(--ui-font);
420
+ font-size: .9rem;
421
+ color: var(--ui-text);
422
+ resize: vertical;
423
+ transition: border-color .15s;
424
+ min-height: calc(var(--ui-touch-min) * 2);
425
+ appearance: none;
505
426
  }
506
427
 
507
- .ui-textarea::placeholder {
508
- color: var(--ui-muted);
509
- }
428
+ .ui-textarea::placeholder { color: var(--ui-muted); }
510
429
 
511
- .ui-textarea:hover:not(:disabled) {
512
- border-color: var(--ui-muted);
513
- }
430
+ .ui-textarea:hover:not(:disabled) { border-color: var(--ui-muted); }
514
431
 
515
432
  .ui-textarea:disabled {
516
- opacity: 0.5;
517
- cursor: not-allowed;
433
+ opacity: .5;
434
+ cursor: not-allowed;
518
435
  }
519
436
 
520
- .ui-field--error .ui-textarea {
521
- border-color: var(--ui-red);
522
- }
437
+ .ui-field--error .ui-textarea { border-color: var(--ui-red); }
523
438
 
524
439
  /* ─── Alert ──────────────────────────────────────────────────────────────── */
525
440
  .ui-alert {
526
- display: flex;
527
- align-items: flex-start;
528
- gap: 0.75rem;
529
- padding: 0.85rem 1rem;
441
+ display: flex;
442
+ align-items: flex-start;
443
+ gap: .75rem;
444
+ padding: .85rem 1rem;
530
445
  border-radius: var(--ui-radius);
531
- border: 1px solid transparent;
532
- font-size: 0.88rem;
533
- line-height: 1.6;
446
+ border: 1px solid transparent;
447
+ font-size: .88rem;
448
+ line-height: 1.6;
534
449
  }
535
450
 
536
- .ui-alert--info {
537
- background: var(--ui-blue-dim);
538
- border-color: var(--ui-blue);
539
- color: var(--ui-blue);
540
- }
541
- .ui-alert--success {
542
- background: var(--ui-green-dim);
543
- border-color: var(--ui-green);
544
- color: var(--ui-green);
545
- }
546
- .ui-alert--warning {
547
- background: var(--ui-yellow-dim);
548
- border-color: var(--ui-yellow);
549
- color: var(--ui-yellow);
550
- }
551
- .ui-alert--error {
552
- background: var(--ui-red-dim);
553
- border-color: var(--ui-red);
554
- color: var(--ui-red);
555
- }
451
+ .ui-alert--info { background: var(--ui-blue-dim); border-color: var(--ui-blue); color: var(--ui-blue); }
452
+ .ui-alert--success { background: var(--ui-green-dim); border-color: var(--ui-green); color: var(--ui-green); }
453
+ .ui-alert--warning { background: var(--ui-yellow-dim);border-color: var(--ui-yellow); color: var(--ui-yellow);}
454
+ .ui-alert--error { background: var(--ui-red-dim); border-color: var(--ui-red); color: var(--ui-red); }
556
455
 
557
456
  .ui-alert-icon {
558
- display: flex;
457
+ display: flex;
559
458
  align-items: center;
560
459
  flex-shrink: 0;
561
- margin-top: 0.1rem;
460
+ margin-top: .1rem;
562
461
  }
563
462
 
564
- .ui-alert-body {
565
- color: var(--ui-text);
566
- }
463
+ .ui-alert-body { color: var(--ui-text); }
567
464
 
568
- .ui-alert-title {
569
- font-weight: 600;
570
- }
465
+ .ui-alert-title { font-weight: 600; }
571
466
 
572
467
  /* ─── Stat ───────────────────────────────────────────────────────────────── */
573
468
  .ui-stat {
574
- display: flex;
469
+ display: flex;
575
470
  flex-direction: column;
576
- gap: 0.3rem;
471
+ gap: .3rem;
577
472
  }
578
473
 
579
474
  .ui-stat-label {
580
- font-size: 0.8rem;
581
- color: var(--ui-muted);
475
+ font-size: .8rem;
476
+ color: var(--ui-muted);
582
477
  font-weight: 500;
583
- margin: 0;
478
+ margin: 0;
584
479
  }
585
480
 
586
481
  .ui-stat-value {
587
- font-size: 2rem;
482
+ font-size: 2rem;
588
483
  font-weight: 700;
589
- color: var(--ui-text);
484
+ color: var(--ui-text);
590
485
  line-height: 1;
591
- margin: 0;
592
- letter-spacing: -0.02em;
486
+ margin: 0;
487
+ letter-spacing: -.02em;
593
488
  }
594
489
 
595
490
  .ui-stat-change {
596
- display: inline-flex;
491
+ display: inline-flex;
597
492
  align-items: center;
598
- gap: 0.3rem;
599
- font-size: 0.8rem;
493
+ gap: .3rem;
494
+ font-size: .8rem;
600
495
  font-weight: 600;
601
- margin: 0;
496
+ margin: 0;
602
497
  }
603
498
 
604
- .ui-stat-change--up {
605
- color: var(--ui-green);
606
- }
607
- .ui-stat-change--down {
608
- color: var(--ui-red);
609
- }
610
- .ui-stat-change--neutral {
611
- color: var(--ui-muted);
612
- }
499
+ .ui-stat-change--up { color: var(--ui-green); }
500
+ .ui-stat-change--down { color: var(--ui-red); }
501
+ .ui-stat-change--neutral { color: var(--ui-muted); }
613
502
 
614
- .ui-stat--center {
615
- align-items: center;
616
- text-align: center;
617
- }
503
+ .ui-stat--center { align-items: center; text-align: center; }
618
504
 
619
505
  /* ─── Avatar ─────────────────────────────────────────────────────────────── */
620
506
  .ui-avatar {
621
- display: inline-flex;
622
- align-items: center;
507
+ display: inline-flex;
508
+ align-items: center;
623
509
  justify-content: center;
624
- border-radius: 50%;
625
- overflow: hidden;
626
- background: var(--ui-accent-dim);
627
- color: var(--ui-accent);
628
- font-family: var(--ui-font);
629
- font-weight: 700;
630
- flex-shrink: 0;
631
- object-fit: cover;
510
+ border-radius: 50%;
511
+ overflow: hidden;
512
+ background: var(--ui-accent-dim);
513
+ color: var(--ui-accent);
514
+ font-family: var(--ui-font);
515
+ font-weight: 700;
516
+ flex-shrink: 0;
517
+ object-fit: cover;
632
518
  }
633
519
 
634
- .ui-avatar--sm {
635
- width: 28px;
636
- height: 28px;
637
- font-size: 0.65rem;
638
- }
639
- .ui-avatar--md {
640
- width: 40px;
641
- height: 40px;
642
- font-size: 0.85rem;
643
- }
644
- .ui-avatar--lg {
645
- width: 56px;
646
- height: 56px;
647
- font-size: 1.1rem;
648
- }
649
- .ui-avatar--xl {
650
- width: 80px;
651
- height: 80px;
652
- font-size: 1.5rem;
653
- }
520
+ .ui-avatar--sm { width: 28px; height: 28px; font-size: .65rem; }
521
+ .ui-avatar--md { width: 40px; height: 40px; font-size: .85rem; }
522
+ .ui-avatar--lg { width: 56px; height: 56px; font-size: 1.1rem; }
523
+ .ui-avatar--xl { width: 80px; height: 80px; font-size: 1.5rem; }
654
524
 
655
525
  /* ─── Empty state ────────────────────────────────────────────────────────── */
656
526
  .ui-empty {
657
- display: flex;
527
+ display: flex;
658
528
  flex-direction: column;
659
- align-items: center;
660
- text-align: center;
661
- gap: 0.75rem;
662
- padding: 3rem 1.5rem;
529
+ align-items: center;
530
+ text-align: center;
531
+ gap: .75rem;
532
+ padding: 3rem 1.5rem;
663
533
  }
664
534
 
665
535
  .ui-empty-title {
666
- font-size: 1.05rem;
536
+ font-size: 1.05rem;
667
537
  font-weight: 600;
668
- color: var(--ui-text);
669
- margin: 0;
538
+ color: var(--ui-text);
539
+ margin: 0;
670
540
  }
671
541
 
672
542
  .ui-empty-desc {
673
- font-size: 0.88rem;
674
- color: var(--ui-muted);
675
- max-width: 36ch;
676
- margin: 0;
543
+ font-size: .88rem;
544
+ color: var(--ui-muted);
545
+ max-width: 36ch;
546
+ margin: 0;
677
547
  line-height: 1.6;
678
548
  }
679
549
 
680
550
  /* ─── Table ──────────────────────────────────────────────────────────────── */
681
551
  .ui-table-wrap {
682
- overflow-x: auto;
683
- border: 1px solid var(--ui-border);
552
+ overflow-x: auto;
553
+ border: 1px solid var(--ui-border);
684
554
  border-radius: var(--ui-radius);
685
555
  /* Explicit outline for keyboard-scrollable region */
686
556
  }
@@ -691,314 +561,200 @@ body {
691
561
  }
692
562
 
693
563
  .ui-table {
694
- width: 100%;
564
+ width: 100%;
695
565
  border-collapse: collapse;
696
- font-size: 0.88rem;
566
+ font-size: .88rem;
697
567
  }
698
568
 
699
569
  .ui-table-caption {
700
570
  caption-side: top;
701
- text-align: left;
702
- padding: 0.75rem 1rem;
703
- font-size: 0.8rem;
704
- font-weight: 600;
705
- color: var(--ui-muted);
571
+ text-align: left;
572
+ padding: .75rem 1rem;
573
+ font-size: .8rem;
574
+ font-weight: 600;
575
+ color: var(--ui-muted);
706
576
  text-transform: uppercase;
707
- letter-spacing: 0.06em;
577
+ letter-spacing: .06em;
708
578
  border-bottom: 1px solid var(--ui-border);
709
579
  }
710
580
 
711
581
  .ui-table thead th {
712
- padding: 0.65rem 1rem;
713
- text-align: left;
714
- font-size: 0.78rem;
715
- font-weight: 600;
716
- color: var(--ui-muted);
582
+ padding: .65rem 1rem;
583
+ text-align: left;
584
+ font-size: .78rem;
585
+ font-weight: 600;
586
+ color: var(--ui-muted);
717
587
  text-transform: uppercase;
718
- letter-spacing: 0.06em;
719
- border-bottom: 1px solid var(--ui-border);
720
- background: var(--ui-surface-2);
721
- white-space: nowrap;
588
+ letter-spacing: .06em;
589
+ border-bottom: 1px solid var(--ui-border);
590
+ background: var(--ui-surface-2);
591
+ white-space: nowrap;
722
592
  }
723
593
 
724
594
  .ui-table tbody td {
725
- padding: 0.75rem 1rem;
595
+ padding: .75rem 1rem;
726
596
  border-bottom: 1px solid var(--ui-border);
727
- color: var(--ui-text);
597
+ color: var(--ui-text);
728
598
  vertical-align: top;
729
- line-height: 1.5;
599
+ line-height: 1.5;
730
600
  }
731
601
 
732
- .ui-table tbody tr:last-child td {
733
- border-bottom: none;
734
- }
602
+ .ui-table tbody tr:last-child td { border-bottom: none; }
735
603
 
736
- .ui-table tbody tr:nth-child(even) {
737
- background: var(--ui-surface-2);
738
- }
604
+ .ui-table tbody tr:nth-child(even) { background: var(--ui-surface-2); }
739
605
 
740
606
  /* ─── Container ──────────────────────────────────────────────────────────── */
741
- .ui-container {
742
- width: 100%;
743
- margin-left: auto;
744
- margin-right: auto;
745
- padding-left: 1.5rem;
746
- padding-right: 1.5rem;
747
- }
748
- .ui-container--sm {
749
- max-width: 640px;
750
- }
751
- .ui-container--md {
752
- max-width: 768px;
753
- }
754
- .ui-container--lg {
755
- max-width: 1100px;
756
- }
757
- .ui-container--xl {
758
- max-width: 1280px;
759
- }
607
+ .ui-container { width: 100%; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; }
608
+ .ui-container--sm { max-width: 640px; }
609
+ .ui-container--md { max-width: 768px; }
610
+ .ui-container--lg { max-width: 1100px; }
611
+ .ui-container--xl { max-width: 1280px; }
760
612
 
761
613
  /* ─── Section ────────────────────────────────────────────────────────────── */
762
- .ui-section {
763
- padding-top: 5rem;
764
- padding-bottom: 5rem;
765
- }
766
- .ui-section--sm {
767
- padding-top: 3rem;
768
- padding-bottom: 3rem;
769
- }
770
- .ui-section--lg {
771
- padding-top: 7rem;
772
- padding-bottom: 7rem;
773
- }
774
- .ui-section--alt {
775
- background: var(--ui-surface, var(--surface, #111116));
776
- }
777
- .ui-section--dark {
778
- background: var(--ui-surface-2, var(--surface-2, #18181f));
779
- }
614
+ .ui-section { padding-top: 5rem; padding-bottom: 5rem; }
615
+ .ui-section--sm { padding-top: 3rem; padding-bottom: 3rem; }
616
+ .ui-section--lg { padding-top: 7rem; padding-bottom: 7rem; }
617
+ .ui-section--alt { background: var(--ui-surface, var(--surface, #111116)); }
618
+ .ui-section--dark { background: var(--ui-surface-2, var(--surface-2, #18181f)); }
780
619
 
781
620
  /* ─── Grid ───────────────────────────────────────────────────────────────── */
782
- .ui-grid {
783
- display: grid;
784
- gap: 2rem;
785
- }
621
+ .ui-grid { display: grid; gap: 2rem; }
786
622
 
787
- .ui-grid--cols-1 {
788
- grid-template-columns: 1fr;
789
- }
790
- .ui-grid--cols-2 {
791
- grid-template-columns: repeat(2, 1fr);
792
- }
793
- .ui-grid--cols-3 {
794
- grid-template-columns: repeat(3, 1fr);
795
- }
796
- .ui-grid--cols-4 {
797
- grid-template-columns: repeat(4, 1fr);
798
- }
623
+ .ui-grid--cols-1 { grid-template-columns: 1fr; }
624
+ .ui-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
625
+ .ui-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
626
+ .ui-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
799
627
 
800
- .ui-grid--gap-sm {
801
- gap: 1rem;
802
- }
803
- .ui-grid--gap-lg {
804
- gap: 3rem;
805
- }
628
+ .ui-grid--gap-sm { gap: 1rem; }
629
+ .ui-grid--gap-lg { gap: 3rem; }
806
630
 
807
631
  /* ─── Stack ──────────────────────────────────────────────────────────────── */
808
- .ui-stack {
809
- display: flex;
810
- flex-direction: column;
811
- gap: 1rem;
812
- }
632
+ .ui-stack { display: flex; flex-direction: column; gap: 1rem; }
813
633
 
814
- .ui-stack--gap-xs {
815
- gap: 0.25rem;
816
- }
817
- .ui-stack--gap-sm {
818
- gap: 0.5rem;
819
- }
820
- .ui-stack--gap-lg {
821
- gap: 2rem;
822
- }
823
- .ui-stack--gap-xl {
824
- gap: 3rem;
825
- }
634
+ .ui-stack--gap-xs { gap: .25rem; }
635
+ .ui-stack--gap-sm { gap: .5rem; }
636
+ .ui-stack--gap-lg { gap: 2rem; }
637
+ .ui-stack--gap-xl { gap: 3rem; }
826
638
 
827
- .ui-stack--align-start {
828
- align-items: flex-start;
829
- }
830
- .ui-stack--align-center {
831
- align-items: center;
832
- }
833
- .ui-stack--align-end {
834
- align-items: flex-end;
835
- }
639
+ .ui-stack--align-start { align-items: flex-start; }
640
+ .ui-stack--align-center { align-items: center; }
641
+ .ui-stack--align-end { align-items: flex-end; }
836
642
 
837
643
  /* ─── Cluster ────────────────────────────────────────────────────────────── */
838
- .ui-cluster {
839
- display: flex;
840
- flex-wrap: wrap;
841
- align-items: center;
842
- gap: 1rem;
843
- }
644
+ .ui-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
844
645
 
845
- .ui-cluster--gap-xs {
846
- gap: 0.25rem;
847
- }
848
- .ui-cluster--gap-sm {
849
- gap: 0.5rem;
850
- }
851
- .ui-cluster--gap-lg {
852
- gap: 2rem;
853
- }
646
+ .ui-cluster--gap-xs { gap: .25rem; }
647
+ .ui-cluster--gap-sm { gap: .5rem; }
648
+ .ui-cluster--gap-lg { gap: 2rem; }
854
649
 
855
- .ui-cluster--justify-center {
856
- justify-content: center;
857
- }
858
- .ui-cluster--justify-end {
859
- justify-content: flex-end;
860
- }
861
- .ui-cluster--justify-between {
862
- justify-content: space-between;
863
- }
650
+ .ui-cluster--justify-center { justify-content: center; }
651
+ .ui-cluster--justify-end { justify-content: flex-end; }
652
+ .ui-cluster--justify-between { justify-content: space-between; }
864
653
 
865
- .ui-cluster--align-start {
866
- align-items: flex-start;
867
- }
868
- .ui-cluster--align-end {
869
- align-items: flex-end;
870
- }
654
+ .ui-cluster--align-start { align-items: flex-start; }
655
+ .ui-cluster--align-end { align-items: flex-end; }
871
656
 
872
- .ui-cluster--nowrap {
873
- flex-wrap: nowrap;
874
- }
657
+ .ui-cluster--nowrap { flex-wrap: nowrap; }
875
658
 
876
659
  /* ─── Divider ────────────────────────────────────────────────────────────── */
877
660
  hr.ui-divider {
878
- border: none;
879
- border-top: 1px solid var(--ui-border, var(--border, #222228));
880
- margin: 0;
661
+ border: none;
662
+ border-top: 1px solid var(--ui-border, var(--border, #222228));
663
+ margin: 0;
881
664
  }
882
665
 
883
666
  .ui-divider--label {
884
- display: flex;
667
+ display: flex;
885
668
  align-items: center;
886
- gap: 0.75rem;
669
+ gap: .75rem;
887
670
  }
888
671
 
889
672
  .ui-divider-line {
890
- flex: 1;
891
- height: 1px;
892
- background: var(--ui-border, var(--border, #222228));
893
- display: block;
673
+ flex: 1;
674
+ height: 1px;
675
+ background: var(--ui-border, var(--border, #222228));
676
+ display: block;
894
677
  }
895
678
 
896
679
  .ui-divider-text {
897
- font-size: 0.8rem;
898
- color: var(--ui-muted, var(--muted, #9090a0));
899
- white-space: nowrap;
900
- flex-shrink: 0;
680
+ font-size: .8rem;
681
+ color: var(--ui-muted, var(--muted, #9090a0));
682
+ white-space: nowrap;
683
+ flex-shrink: 0;
901
684
  }
902
685
 
903
686
  /* ─── Banner ─────────────────────────────────────────────────────────────── */
904
687
  .ui-banner {
905
- padding: 0.625rem 1.5rem;
906
- text-align: center;
907
- font-size: 0.875rem;
688
+ padding: .625rem 1.5rem;
689
+ text-align: center;
690
+ font-size: .875rem;
908
691
  font-weight: 500;
909
692
  line-height: 1.5;
910
693
  }
911
694
 
912
695
  .ui-banner--info {
913
- background: var(--ui-accent-dim, rgba(155, 141, 255, 0.12));
914
- color: var(--ui-accent, var(--accent, #9b8dff));
696
+ background: var(--ui-accent-dim, rgba(155,141,255,.12));
697
+ color: var(--ui-accent, var(--accent, #9b8dff));
915
698
  }
916
699
 
917
700
  .ui-banner--promo {
918
701
  background: var(--ui-accent, var(--accent, #9b8dff));
919
- color: #fff;
702
+ color: #fff;
920
703
  }
921
704
 
922
705
  .ui-banner--warning {
923
- background: rgba(255, 193, 7, 0.12);
924
- color: #ffc107;
706
+ background: rgba(255, 193, 7, .12);
707
+ color: #ffc107;
925
708
  }
926
709
 
927
710
  /* ─── Media ──────────────────────────────────────────────────────────────── */
928
711
  .ui-media {
929
- display: grid;
712
+ display: grid;
930
713
  grid-template-columns: 1fr 1fr;
931
- gap: 3rem;
932
- align-items: center;
714
+ gap: 3rem;
715
+ align-items: center;
933
716
  }
934
717
 
935
- .ui-media--reverse {
936
- direction: rtl;
937
- }
938
- .ui-media--reverse > * {
939
- direction: ltr;
940
- }
718
+ .ui-media--reverse { direction: rtl; }
719
+ .ui-media--reverse > * { direction: ltr; }
941
720
 
942
- .ui-media--align-start {
943
- align-items: flex-start;
944
- }
721
+ .ui-media--align-start { align-items: flex-start; }
945
722
 
946
- .ui-media--gap-sm {
947
- gap: 1.5rem;
948
- }
949
- .ui-media--gap-lg {
950
- gap: 5rem;
951
- }
723
+ .ui-media--gap-sm { gap: 1.5rem; }
724
+ .ui-media--gap-lg { gap: 5rem; }
952
725
 
953
- .ui-media-image {
954
- min-width: 0;
955
- }
956
- .ui-media-content {
957
- min-width: 0;
958
- }
726
+ .ui-media-image { min-width: 0; }
727
+ .ui-media-content { min-width: 0; }
959
728
 
960
729
  .ui-media-image img {
961
- width: 100%;
962
- height: auto;
730
+ width: 100%;
731
+ height: auto;
963
732
  border-radius: var(--ui-radius, 8px);
964
- display: block;
733
+ display: block;
965
734
  }
966
735
 
967
736
  /* ─── Hero ───────────────────────────────────────────────────────────────── */
968
- .ui-hero {
969
- padding: 5rem 1.5rem;
970
- text-align: center;
971
- }
972
- .ui-hero--left {
973
- text-align: left;
974
- }
975
- .ui-hero--sm {
976
- padding-top: 2.5rem;
977
- padding-bottom: 0;
978
- }
737
+ .ui-hero { padding: 5rem 1.5rem; text-align: center; }
738
+ .ui-hero--left { text-align: left; }
739
+ .ui-hero--sm { padding-top: 2.5rem; padding-bottom: 0; }
979
740
 
980
- .ui-hero-inner {
981
- max-width: 720px;
982
- margin: 0 auto;
983
- }
984
- .ui-hero--left .ui-hero-inner {
985
- margin: 0;
986
- }
741
+ .ui-hero-inner { max-width: 720px; margin: 0 auto; }
742
+ .ui-hero--left .ui-hero-inner { margin: 0; }
987
743
 
988
744
  .ui-hero-eyebrow {
989
- font-size: 0.78rem;
745
+ font-size: .78rem;
990
746
  font-weight: 600;
991
- letter-spacing: 0.08em;
747
+ letter-spacing: .08em;
992
748
  text-transform: uppercase;
993
749
  color: var(--ui-accent, var(--accent, #9b8dff));
994
- margin: 0 0 0.75rem;
750
+ margin: 0 0 .75rem;
995
751
  }
996
752
 
997
753
  .ui-hero-title {
998
754
  font-size: clamp(2.2rem, 6vw, 3.5rem);
999
755
  font-weight: 800;
1000
756
  line-height: 1.1;
1001
- letter-spacing: -0.02em;
757
+ letter-spacing: -.02em;
1002
758
  color: var(--ui-text, var(--text, #e2e2ea));
1003
759
  margin: 0 0 1.25rem;
1004
760
  }
@@ -1012,204 +768,122 @@ hr.ui-divider {
1012
768
 
1013
769
  .ui-hero-actions {
1014
770
  display: flex;
1015
- gap: 0.75rem;
771
+ gap: .75rem;
1016
772
  flex-wrap: wrap;
1017
773
  justify-content: center;
1018
774
  }
1019
- .ui-hero--left .ui-hero-actions {
1020
- justify-content: flex-start;
1021
- }
775
+ .ui-hero--left .ui-hero-actions { justify-content: flex-start; }
1022
776
 
1023
777
  /* ─── Testimonial ────────────────────────────────────────────────────────── */
1024
778
  .ui-testimonial {
1025
- background: var(--ui-surface, var(--surface, #111116));
1026
- border: 1px solid var(--ui-border, var(--border, #222228));
779
+ background: var(--ui-surface, var(--surface, #111116));
780
+ border: 1px solid var(--ui-border, var(--border, #222228));
1027
781
  border-radius: var(--ui-radius, 8px);
1028
- padding: 1.5rem;
1029
- margin: 0;
782
+ padding: 1.5rem;
783
+ margin: 0;
1030
784
  }
1031
785
 
1032
786
  .ui-testimonial-rating {
1033
- color: #f5a623;
1034
- font-size: 1rem;
1035
- letter-spacing: 0.1em;
1036
- margin: 0 0 0.75rem;
787
+ color: #f5a623;
788
+ font-size: 1rem;
789
+ letter-spacing: .1em;
790
+ margin: 0 0 .75rem;
1037
791
  }
1038
792
 
1039
- .ui-testimonial-quote {
1040
- margin: 0 0 1.25rem;
1041
- }
793
+ .ui-testimonial-quote { margin: 0 0 1.25rem; }
1042
794
  .ui-testimonial-quote p {
1043
- font-size: 0.95rem;
795
+ font-size: .95rem;
1044
796
  line-height: 1.65;
1045
- color: var(--ui-text, var(--text, #e2e2ea));
1046
- font-style: italic;
1047
- margin: 0;
797
+ color: var(--ui-text, var(--text, #e2e2ea));
798
+ font-style: italic;
799
+ margin: 0;
1048
800
  }
1049
801
 
1050
- .ui-testimonial-author {
1051
- display: flex;
1052
- align-items: center;
1053
- gap: 0.75rem;
1054
- }
802
+ .ui-testimonial-author { display: flex; align-items: center; gap: .75rem; }
1055
803
 
1056
804
  .ui-testimonial-avatar {
1057
- width: 40px;
1058
- height: 40px;
805
+ width: 40px;
806
+ height: 40px;
1059
807
  border-radius: 50%;
1060
- object-fit: cover;
808
+ object-fit: cover;
1061
809
  flex-shrink: 0;
1062
810
  }
1063
811
 
1064
812
  .ui-testimonial-avatar--initials {
1065
- background: var(--ui-muted-bg, rgba(128, 128, 128, 0.2));
1066
- color: var(--ui-text, var(--text, #e2e2ea));
1067
- font-size: 0.8rem;
1068
- font-weight: 700;
1069
- display: flex;
1070
- align-items: center;
813
+ background: var(--ui-muted-bg, rgba(128,128,128,.2));
814
+ color: var(--ui-text, var(--text, #e2e2ea));
815
+ font-size: .8rem;
816
+ font-weight: 700;
817
+ display: flex;
818
+ align-items: center;
1071
819
  justify-content: center;
1072
820
  }
1073
821
 
1074
- .ui-testimonial-meta {
1075
- display: flex;
1076
- flex-direction: column;
1077
- gap: 0.1rem;
1078
- }
1079
- .ui-testimonial-name {
1080
- font-size: 0.875rem;
1081
- font-weight: 600;
1082
- color: var(--ui-text, var(--text, #e2e2ea));
1083
- margin: 0;
1084
- }
1085
- .ui-testimonial-role {
1086
- font-size: 0.78rem;
1087
- color: var(--ui-muted, var(--muted, #9090a0));
1088
- margin: 0;
1089
- }
822
+ .ui-testimonial-meta { display: flex; flex-direction: column; gap: .1rem; }
823
+ .ui-testimonial-name { font-size: .875rem; font-weight: 600; color: var(--ui-text, var(--text, #e2e2ea)); margin: 0; }
824
+ .ui-testimonial-role { font-size: .78rem; color: var(--ui-muted, var(--muted, #9090a0)); margin: 0; }
1090
825
 
1091
826
  /* ─── Feature ────────────────────────────────────────────────────────────── */
1092
- .ui-feature {
1093
- display: flex;
1094
- flex-direction: column;
1095
- gap: 0.75rem;
1096
- }
827
+ .ui-feature { display: flex; flex-direction: column; gap: .75rem; }
1097
828
 
1098
829
  .ui-feature-icon {
1099
- display: block;
830
+ display: block;
1100
831
  flex-shrink: 0;
1101
832
  line-height: 1;
1102
833
  }
1103
834
 
1104
- .ui-feature-title {
1105
- font-size: 1rem;
1106
- font-weight: 600;
1107
- color: var(--ui-text, var(--text, #e2e2ea));
1108
- margin: 0;
1109
- }
1110
- .ui-feature-desc {
1111
- font-size: 0.9rem;
1112
- color: var(--ui-muted, var(--muted, #9090a0));
1113
- line-height: 1.6;
1114
- margin: 0;
1115
- }
835
+ .ui-feature-title { font-size: 1rem; font-weight: 600; color: var(--ui-text, var(--text, #e2e2ea)); margin: 0; }
836
+ .ui-feature-desc { font-size: .9rem; color: var(--ui-muted, var(--muted, #9090a0)); line-height: 1.6; margin: 0; }
1116
837
 
1117
- .ui-feature--center {
1118
- align-items: center;
1119
- text-align: center;
1120
- }
838
+ .ui-feature--center { align-items: center; text-align: center; }
1121
839
 
1122
840
  /* ─── Pricing ────────────────────────────────────────────────────────────── */
1123
841
  .ui-pricing {
1124
- box-sizing: border-box;
1125
- background: var(--ui-surface, var(--surface, #111116));
1126
- border: 1px solid var(--ui-border, var(--border, #222228));
1127
- border-radius: var(--ui-radius, 8px);
1128
- padding: 2rem;
1129
- display: flex;
842
+ box-sizing: border-box;
843
+ background: var(--ui-surface, var(--surface, #111116));
844
+ border: 1px solid var(--ui-border, var(--border, #222228));
845
+ border-radius: var(--ui-radius, 8px);
846
+ padding: 2rem;
847
+ display: flex;
1130
848
  flex-direction: column;
1131
- gap: 1.25rem;
1132
- position: relative;
1133
- width: 100%;
849
+ gap: 1.25rem;
850
+ position: relative;
851
+ width: 100%;
1134
852
  }
1135
853
 
1136
854
  .ui-pricing--highlighted {
1137
855
  border-color: var(--ui-accent, var(--accent, #9b8dff));
1138
- box-shadow: 0 0 0 1px var(--ui-accent, var(--accent, #9b8dff));
856
+ box-shadow: 0 0 0 1px var(--ui-accent, var(--accent, #9b8dff));
1139
857
  }
1140
858
 
1141
859
  .ui-pricing-badge {
1142
- position: absolute;
1143
- top: -12px;
1144
- left: 50%;
1145
- transform: translateX(-50%);
1146
- background: var(--ui-accent, var(--accent, #9b8dff));
1147
- color: var(--ui-accent-text, #0d0a20);
1148
- font-size: 0.72rem;
1149
- font-weight: 700;
1150
- letter-spacing: 0.05em;
1151
- text-transform: uppercase;
1152
- padding: 0.25rem 0.75rem;
1153
- border-radius: 99px;
1154
- margin: 0;
1155
- white-space: nowrap;
1156
- }
1157
-
1158
- .ui-pricing-header {
1159
- display: flex;
1160
- flex-direction: column;
1161
- gap: 0.25rem;
1162
- }
1163
- .ui-pricing-name {
1164
- font-size: 1.1rem;
1165
- font-weight: 700;
1166
- color: var(--ui-text, var(--text, #e2e2ea));
1167
- margin: 0;
1168
- }
1169
- .ui-pricing-desc {
1170
- font-size: 0.875rem;
1171
- color: var(--ui-muted, var(--muted, #9090a0));
1172
- margin: 0;
1173
- }
1174
-
1175
- .ui-pricing-price {
1176
- display: flex;
1177
- align-items: baseline;
1178
- gap: 0.3rem;
1179
- }
1180
- .ui-pricing-amount {
1181
- font-size: 2.25rem;
1182
- font-weight: 800;
1183
- color: var(--ui-text, var(--text, #e2e2ea));
1184
- line-height: 1;
1185
- letter-spacing: -0.02em;
1186
- }
1187
- .ui-pricing-period {
1188
- font-size: 0.875rem;
1189
- color: var(--ui-muted, var(--muted, #9090a0));
1190
- }
1191
-
1192
- .ui-pricing-features {
1193
- list-style: none;
1194
- padding: 0;
1195
- margin: 0;
1196
- display: flex;
1197
- flex-direction: column;
1198
- gap: 0.6rem;
1199
- }
1200
- .ui-pricing-feature {
1201
- font-size: 0.875rem;
1202
- color: var(--ui-text, var(--text, #e2e2ea));
1203
- display: flex;
1204
- align-items: flex-start;
1205
- gap: 0.5rem;
1206
- width: 100%;
1207
- }
1208
- .ui-pricing-check {
1209
- color: var(--ui-green, var(--green, #3dd68c));
1210
- font-weight: 700;
1211
- flex-shrink: 0;
1212
- }
860
+ position: absolute;
861
+ top: -12px;
862
+ left: 50%;
863
+ transform: translateX(-50%);
864
+ background: var(--ui-accent, var(--accent, #9b8dff));
865
+ color: var(--ui-accent-text, #0d0a20);
866
+ font-size: .72rem;
867
+ font-weight: 700;
868
+ letter-spacing: .05em;
869
+ text-transform: uppercase;
870
+ padding: .25rem .75rem;
871
+ border-radius: 99px;
872
+ margin: 0;
873
+ white-space: nowrap;
874
+ }
875
+
876
+ .ui-pricing-header { display: flex; flex-direction: column; gap: .25rem; }
877
+ .ui-pricing-name { font-size: 1.1rem; font-weight: 700; color: var(--ui-text, var(--text, #e2e2ea)); margin: 0; }
878
+ .ui-pricing-desc { font-size: .875rem; color: var(--ui-muted, var(--muted, #9090a0)); margin: 0; }
879
+
880
+ .ui-pricing-price { display: flex; align-items: baseline; gap: .3rem; }
881
+ .ui-pricing-amount { font-size: 2.25rem; font-weight: 800; color: var(--ui-text, var(--text, #e2e2ea)); line-height: 1; letter-spacing: -.02em; }
882
+ .ui-pricing-period { font-size: .875rem; color: var(--ui-muted, var(--muted, #9090a0)); }
883
+
884
+ .ui-pricing-features { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .6rem; }
885
+ .ui-pricing-feature { font-size: .875rem; color: var(--ui-text, var(--text, #e2e2ea)); display: flex; align-items: flex-start; gap: .5rem; width: 100%; }
886
+ .ui-pricing-check { color: var(--ui-green, var(--green, #3dd68c)); font-weight: 700; flex-shrink: 0; }
1213
887
 
1214
888
  /* ─── Pricing grid (responsive) ─────────────────────────────────────────── */
1215
889
  .ui-pricing-grid {
@@ -1220,608 +894,429 @@ hr.ui-divider {
1220
894
  width: 100%;
1221
895
  }
1222
896
  @media (min-width: 640px) {
1223
- .ui-pricing-grid--cols-2 {
1224
- grid-template-columns: repeat(2, 1fr);
1225
- }
1226
- .ui-pricing-grid--cols-3 {
1227
- grid-template-columns: repeat(3, 1fr);
1228
- }
1229
- }
1230
- .ui-pricing-action {
1231
- margin-top: auto;
897
+ .ui-pricing-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
898
+ .ui-pricing-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
1232
899
  }
900
+ .ui-pricing-action { margin-top: auto; }
1233
901
 
1234
902
  /* ─── Accordion ──────────────────────────────────────────────────────────── */
1235
- .ui-accordion {
1236
- display: flex;
1237
- flex-direction: column;
1238
- gap: 0.5rem;
1239
- width: 100%;
1240
- }
903
+ .ui-accordion { display: flex; flex-direction: column; gap: .5rem; width: 100%; }
1241
904
 
1242
905
  .ui-accordion-item {
1243
- background: var(--ui-surface, var(--surface, #111116));
1244
- border: 1px solid var(--ui-border, var(--border, #222228));
1245
- border-radius: var(--ui-radius, 8px);
1246
- overflow: hidden;
906
+ background: var(--ui-surface, var(--surface, #111116));
907
+ border: 1px solid var(--ui-border, var(--border, #222228));
908
+ border-radius: var(--ui-radius, 8px);
909
+ overflow: hidden;
1247
910
  }
1248
911
 
1249
912
  .ui-accordion-summary {
1250
- display: flex;
913
+ display: flex;
1251
914
  justify-content: space-between;
1252
- align-items: center;
1253
- padding: 1rem 1.25rem;
1254
- cursor: pointer;
1255
- font-size: 0.95rem;
1256
- font-weight: 500;
1257
- color: var(--ui-text, var(--text, #e2e2ea));
1258
- list-style: none;
1259
- user-select: none;
1260
- gap: 1rem;
1261
- }
1262
- .ui-accordion-summary::-webkit-details-marker {
1263
- display: none;
1264
- }
1265
- .ui-accordion-summary:hover {
1266
- color: var(--ui-accent, var(--accent, #9b8dff));
1267
- }
915
+ align-items: center;
916
+ padding: 1rem 1.25rem;
917
+ cursor: pointer;
918
+ font-size: .95rem;
919
+ font-weight: 500;
920
+ color: var(--ui-text, var(--text, #e2e2ea));
921
+ list-style: none;
922
+ user-select: none;
923
+ gap: 1rem;
924
+ }
925
+ .ui-accordion-summary::-webkit-details-marker { display: none; }
926
+ .ui-accordion-summary:hover { color: var(--ui-accent, var(--accent, #9b8dff)); }
1268
927
 
1269
928
  .ui-accordion-icon {
1270
- width: 16px;
1271
- height: 16px;
1272
- position: relative;
929
+ width: 16px;
930
+ height: 16px;
931
+ position: relative;
1273
932
  flex-shrink: 0;
1274
933
  }
1275
934
  .ui-accordion-icon::before,
1276
935
  .ui-accordion-icon::after {
1277
- content: "";
1278
- position: absolute;
1279
- background: currentColor;
936
+ content: '';
937
+ position: absolute;
938
+ background: currentColor;
1280
939
  border-radius: 2px;
1281
- transition: transform 0.2s;
1282
- }
1283
- .ui-accordion-icon::before {
1284
- width: 10px;
1285
- height: 1.5px;
1286
- top: 7px;
1287
- left: 3px;
1288
- }
1289
- .ui-accordion-icon::after {
1290
- width: 1.5px;
1291
- height: 10px;
1292
- top: 3px;
1293
- left: 7px;
1294
- }
1295
- .ui-accordion-item[open] .ui-accordion-icon::after {
1296
- transform: rotate(90deg);
940
+ transition: transform .2s;
1297
941
  }
942
+ .ui-accordion-icon::before { width: 10px; height: 1.5px; top: 7px; left: 3px; }
943
+ .ui-accordion-icon::after { width: 1.5px; height: 10px; top: 3px; left: 7px; }
944
+ .ui-accordion-item[open] .ui-accordion-icon::after { transform: rotate(90deg); }
1298
945
 
1299
- .ui-accordion-body {
1300
- padding: 0 1.25rem 1rem;
1301
- }
1302
- .ui-accordion-body p {
1303
- font-size: 0.9rem;
1304
- color: var(--ui-muted, var(--muted, #9090a0));
1305
- line-height: 1.7;
1306
- margin: 0;
1307
- }
946
+ .ui-accordion-body { padding: 0 1.25rem 1rem; }
947
+ .ui-accordion-body p { font-size: .9rem; color: var(--ui-muted, var(--muted, #9090a0)); line-height: 1.7; margin: 0; }
1308
948
 
1309
949
  /* ─── Tooltip ────────────────────────────────────────────────────────────── */
1310
950
  .ui-tooltip {
1311
951
  position: relative;
1312
- display: inline-block;
952
+ display: inline-block;
1313
953
  }
1314
954
 
1315
955
  .ui-tooltip::after {
1316
- content: attr(data-tip);
1317
- position: absolute;
1318
- bottom: calc(100% + 8px);
1319
- left: 50%;
1320
- transform: translateX(-50%) translateY(4px);
1321
- background: var(--ui-surface-2, var(--surface-2, #1a1a26));
1322
- color: var(--ui-text, var(--text, #e2e2ea));
1323
- font-size: 0.78rem;
1324
- font-weight: 500;
1325
- line-height: 1.4;
1326
- white-space: nowrap;
1327
- padding: 0.35rem 0.7rem;
1328
- border-radius: 6px;
1329
- border: 1px solid var(--ui-border, var(--border, #2a2a38));
956
+ content: attr(data-tip);
957
+ position: absolute;
958
+ bottom: calc(100% + 8px);
959
+ left: 50%;
960
+ transform: translateX(-50%) translateY(4px);
961
+ background: var(--ui-surface-2, var(--surface-2, #1a1a26));
962
+ color: var(--ui-text, var(--text, #e2e2ea));
963
+ font-size: .78rem;
964
+ font-weight: 500;
965
+ line-height: 1.4;
966
+ white-space: nowrap;
967
+ padding: .35rem .7rem;
968
+ border-radius: 6px;
969
+ border: 1px solid var(--ui-border, var(--border, #2a2a38));
1330
970
  pointer-events: none;
1331
- opacity: 0;
1332
- transition:
1333
- opacity 0.15s,
1334
- transform 0.15s;
1335
- z-index: var(--ui-z-tooltip, 200);
971
+ opacity: 0;
972
+ transition: opacity .15s, transform .15s;
973
+ z-index: var(--ui-z-tooltip, 200);
1336
974
  }
1337
975
 
1338
976
  .ui-tooltip::before {
1339
- content: "";
1340
- position: absolute;
1341
- bottom: calc(100% + 2px);
1342
- left: 50%;
1343
- transform: translateX(-50%);
1344
- border: 5px solid transparent;
977
+ content: '';
978
+ position: absolute;
979
+ bottom: calc(100% + 2px);
980
+ left: 50%;
981
+ transform: translateX(-50%);
982
+ border: 5px solid transparent;
1345
983
  border-top-color: var(--ui-border, var(--border, #2a2a38));
1346
- pointer-events: none;
1347
- opacity: 0;
1348
- transition: opacity 0.15s;
1349
- z-index: var(--ui-z-tooltip, 200);
984
+ pointer-events: none;
985
+ opacity: 0;
986
+ transition: opacity .15s;
987
+ z-index: var(--ui-z-tooltip, 200);
1350
988
  }
1351
989
 
1352
990
  .ui-tooltip:hover::after,
1353
991
  .ui-tooltip:focus-within::after {
1354
- opacity: 1;
992
+ opacity: 1;
1355
993
  transform: translateX(-50%) translateY(0);
1356
994
  }
1357
995
  .ui-tooltip:hover::before,
1358
- .ui-tooltip:focus-within::before {
1359
- opacity: 1;
1360
- }
996
+ .ui-tooltip:focus-within::before { opacity: 1; }
1361
997
 
1362
998
  /* bottom */
1363
- .ui-tooltip--bottom::after {
1364
- bottom: auto;
1365
- top: calc(100% + 8px);
1366
- transform: translateX(-50%) translateY(-4px);
1367
- }
1368
- .ui-tooltip--bottom::before {
1369
- bottom: auto;
1370
- top: calc(100% + 2px);
1371
- border-top-color: transparent;
1372
- border-bottom-color: var(--ui-border, var(--border, #2a2a38));
1373
- }
999
+ .ui-tooltip--bottom::after { bottom: auto; top: calc(100% + 8px); transform: translateX(-50%) translateY(-4px); }
1000
+ .ui-tooltip--bottom::before { bottom: auto; top: calc(100% + 2px); border-top-color: transparent; border-bottom-color: var(--ui-border, var(--border, #2a2a38)); }
1374
1001
  .ui-tooltip--bottom:hover::after,
1375
- .ui-tooltip--bottom:focus-within::after {
1376
- transform: translateX(-50%) translateY(0);
1377
- }
1002
+ .ui-tooltip--bottom:focus-within::after { transform: translateX(-50%) translateY(0); }
1378
1003
 
1379
1004
  /* left */
1380
- .ui-tooltip--left::after {
1381
- bottom: auto;
1382
- top: 50%;
1383
- left: auto;
1384
- right: calc(100% + 8px);
1385
- transform: translateY(-50%) translateX(4px);
1386
- }
1387
- .ui-tooltip--left::before {
1388
- bottom: auto;
1389
- top: 50%;
1390
- left: auto;
1391
- right: calc(100% + 2px);
1392
- transform: translateY(-50%);
1393
- border-top-color: transparent;
1394
- border-left-color: var(--ui-border, var(--border, #2a2a38));
1395
- }
1005
+ .ui-tooltip--left::after { bottom: auto; top: 50%; left: auto; right: calc(100% + 8px); transform: translateY(-50%) translateX(4px); }
1006
+ .ui-tooltip--left::before { bottom: auto; top: 50%; left: auto; right: calc(100% + 2px); transform: translateY(-50%); border-top-color: transparent; border-left-color: var(--ui-border, var(--border, #2a2a38)); }
1396
1007
  .ui-tooltip--left:hover::after,
1397
- .ui-tooltip--left:focus-within::after {
1398
- transform: translateY(-50%) translateX(0);
1399
- }
1008
+ .ui-tooltip--left:focus-within::after { transform: translateY(-50%) translateX(0); }
1400
1009
 
1401
1010
  /* right */
1402
- .ui-tooltip--right::after {
1403
- bottom: auto;
1404
- top: 50%;
1405
- left: calc(100% + 8px);
1406
- transform: translateY(-50%) translateX(-4px);
1407
- }
1408
- .ui-tooltip--right::before {
1409
- bottom: auto;
1410
- top: 50%;
1411
- left: calc(100% + 2px);
1412
- transform: translateY(-50%);
1413
- border-top-color: transparent;
1414
- border-right-color: var(--ui-border, var(--border, #2a2a38));
1415
- }
1011
+ .ui-tooltip--right::after { bottom: auto; top: 50%; left: calc(100% + 8px); transform: translateY(-50%) translateX(-4px); }
1012
+ .ui-tooltip--right::before { bottom: auto; top: 50%; left: calc(100% + 2px); transform: translateY(-50%); border-top-color: transparent; border-right-color: var(--ui-border, var(--border, #2a2a38)); }
1416
1013
  .ui-tooltip--right:hover::after,
1417
- .ui-tooltip--right:focus-within::after {
1418
- transform: translateY(-50%) translateX(0);
1419
- }
1014
+ .ui-tooltip--right:focus-within::after { transform: translateY(-50%) translateX(0); }
1420
1015
 
1421
1016
  /* ─── Modal ──────────────────────────────────────────────────────────────── */
1422
1017
  .ui-modal {
1423
- position: fixed;
1424
- inset: 0;
1425
- margin: auto;
1426
- width: min(560px, calc(100vw - 2rem));
1427
- max-height: min(80vh, calc(100dvh - 2rem));
1428
- padding: 0;
1429
- background: var(--ui-surface, var(--surface, #13131e));
1430
- border: 1px solid var(--ui-border, var(--border, #2a2a38));
1018
+ position: fixed;
1019
+ inset: 0;
1020
+ margin: auto;
1021
+ width: min(560px, calc(100vw - 2rem));
1022
+ max-height: min(80vh, calc(100dvh - 2rem));
1023
+ padding: 0;
1024
+ background: var(--ui-surface, var(--surface, #13131e));
1025
+ border: 1px solid var(--ui-border, var(--border, #2a2a38));
1431
1026
  border-radius: var(--ui-radius, 12px);
1432
- overflow: hidden;
1433
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
1027
+ overflow: hidden;
1028
+ box-shadow: 0 20px 60px rgba(0, 0, 0, .5);
1434
1029
  }
1435
1030
 
1436
- .ui-modal--sm {
1437
- width: min(400px, calc(100vw - 2rem));
1438
- }
1439
- .ui-modal--lg {
1440
- width: min(760px, calc(100vw - 2rem));
1441
- }
1442
- .ui-modal--xl {
1443
- width: min(1000px, calc(100vw - 2rem));
1444
- }
1031
+ .ui-modal--sm { width: min(400px, calc(100vw - 2rem)); }
1032
+ .ui-modal--lg { width: min(760px, calc(100vw - 2rem)); }
1033
+ .ui-modal--xl { width: min(1000px, calc(100vw - 2rem)); }
1445
1034
 
1446
1035
  .ui-modal::backdrop {
1447
- background: rgba(0, 0, 0, 0.6);
1036
+ background: rgba(0, 0, 0, .6);
1448
1037
  backdrop-filter: blur(2px);
1449
1038
  }
1450
1039
 
1451
1040
  .ui-modal-inner {
1452
- display: flex;
1041
+ display: flex;
1453
1042
  flex-direction: column;
1454
- max-height: inherit;
1455
- margin: 0;
1456
- border: none;
1457
- padding: 0;
1458
- background: transparent;
1043
+ max-height: inherit;
1044
+ margin: 0;
1045
+ border: none;
1046
+ padding: 0;
1047
+ background: transparent;
1459
1048
  }
1460
1049
 
1461
1050
  .ui-modal-header {
1462
- display: flex;
1463
- align-items: center;
1464
- gap: 1rem;
1465
- padding: 1.25rem 1.5rem;
1051
+ display: flex;
1052
+ align-items: center;
1053
+ gap: 1rem;
1054
+ padding: 1.25rem 1.5rem;
1466
1055
  border-bottom: 1px solid var(--ui-border, var(--border, #2a2a38));
1467
- flex-shrink: 0;
1056
+ flex-shrink: 0;
1468
1057
  }
1469
1058
 
1470
1059
  .ui-modal-title {
1471
- flex: 1;
1472
- font-size: 1.1rem;
1060
+ flex: 1;
1061
+ font-size: 1.1rem;
1473
1062
  font-weight: 700;
1474
- color: var(--ui-text, var(--text, #e2e2ea));
1475
- margin: 0;
1063
+ color: var(--ui-text, var(--text, #e2e2ea));
1064
+ margin: 0;
1476
1065
  }
1477
1066
 
1478
1067
  .ui-modal-close {
1479
- display: flex;
1480
- align-items: center;
1068
+ display: flex;
1069
+ align-items: center;
1481
1070
  justify-content: center;
1482
- width: 32px;
1483
- height: 32px;
1484
- padding: 0;
1485
- background: transparent;
1486
- border: none;
1487
- border-radius: 6px;
1488
- color: var(--ui-muted, var(--muted, #9090a0));
1489
- cursor: pointer;
1490
- transition:
1491
- color 0.15s,
1492
- background 0.15s;
1493
- flex-shrink: 0;
1071
+ width: 32px;
1072
+ height: 32px;
1073
+ padding: 0;
1074
+ background: transparent;
1075
+ border: none;
1076
+ border-radius: 6px;
1077
+ color: var(--ui-muted, var(--muted, #9090a0));
1078
+ cursor: pointer;
1079
+ transition: color .15s, background .15s;
1080
+ flex-shrink: 0;
1494
1081
  }
1495
1082
  .ui-modal-close:hover {
1496
- color: var(--ui-text, var(--text, #e2e2ea));
1083
+ color: var(--ui-text, var(--text, #e2e2ea));
1497
1084
  background: var(--ui-surface-2, var(--surface-2, #1a1a26));
1498
1085
  }
1499
1086
 
1500
1087
  .ui-modal-body {
1501
- flex: 1;
1088
+ flex: 1;
1502
1089
  overflow-y: auto;
1503
- padding: 1.5rem;
1504
- color: var(--ui-text, var(--text, #e2e2ea));
1090
+ padding: 1.5rem;
1091
+ color: var(--ui-text, var(--text, #e2e2ea));
1505
1092
  }
1506
1093
 
1507
1094
  .ui-modal-footer {
1508
- display: flex;
1509
- align-items: center;
1095
+ display: flex;
1096
+ align-items: center;
1510
1097
  justify-content: flex-end;
1511
- gap: 0.75rem;
1512
- padding: 1rem 1.5rem;
1513
- border-top: 1px solid var(--ui-border, var(--border, #2a2a38));
1514
- flex-shrink: 0;
1098
+ gap: .75rem;
1099
+ padding: 1rem 1.5rem;
1100
+ border-top: 1px solid var(--ui-border, var(--border, #2a2a38));
1101
+ flex-shrink: 0;
1515
1102
  }
1516
1103
 
1517
1104
  /* ─── Carousel ───────────────────────────────────────────────────────────── */
1518
1105
  .ui-carousel {
1519
- position: relative;
1520
- width: 100%;
1106
+ position: relative;
1107
+ width: 100%;
1521
1108
  border-radius: var(--ui-radius, 12px);
1522
- overflow: hidden;
1109
+ overflow: hidden;
1523
1110
  }
1524
1111
 
1525
1112
  .ui-carousel-track {
1526
- display: flex;
1527
- overflow-x: auto;
1528
- scroll-snap-type: x mandatory;
1529
- scroll-behavior: smooth;
1113
+ display: flex;
1114
+ overflow-x: auto;
1115
+ scroll-snap-type: x mandatory;
1116
+ scroll-behavior: smooth;
1530
1117
  -webkit-overflow-scrolling: touch;
1531
- scrollbar-width: none;
1532
- }
1533
- .ui-carousel-track::-webkit-scrollbar {
1534
- display: none;
1118
+ scrollbar-width: none;
1535
1119
  }
1120
+ .ui-carousel-track::-webkit-scrollbar { display: none; }
1536
1121
 
1537
1122
  .ui-carousel-slide {
1538
- flex: 0 0 100%;
1123
+ flex: 0 0 100%;
1539
1124
  scroll-snap-align: start;
1540
1125
  }
1541
1126
 
1542
1127
  .ui-carousel-btn {
1543
- position: absolute;
1544
- top: 50%;
1545
- transform: translateY(-50%);
1546
- z-index: 2;
1547
- display: flex;
1548
- align-items: center;
1128
+ position: absolute;
1129
+ top: 50%;
1130
+ transform: translateY(-50%);
1131
+ z-index: 2;
1132
+ display: flex;
1133
+ align-items: center;
1549
1134
  justify-content: center;
1550
- width: 40px;
1551
- height: 40px;
1552
- padding: 0;
1553
- background: var(--ui-surface, var(--surface, #13131e));
1554
- border: 1px solid var(--ui-border, var(--border, #2a2a38));
1555
- border-radius: 50%;
1556
- color: var(--ui-text, var(--text, #e2e2ea));
1557
- cursor: pointer;
1558
- transition:
1559
- background 0.15s,
1560
- opacity 0.15s;
1561
- }
1562
- .ui-carousel-btn:hover {
1563
- background: var(--ui-surface-2, var(--surface-2, #1a1a26));
1564
- }
1565
- .ui-carousel-btn[hidden] {
1566
- display: none;
1567
- }
1568
- .ui-carousel-prev {
1569
- left: 0.75rem;
1570
- }
1571
- .ui-carousel-next {
1572
- right: 0.75rem;
1573
- }
1135
+ width: 40px;
1136
+ height: 40px;
1137
+ padding: 0;
1138
+ background: var(--ui-surface, var(--surface, #13131e));
1139
+ border: 1px solid var(--ui-border, var(--border, #2a2a38));
1140
+ border-radius: 50%;
1141
+ color: var(--ui-text, var(--text, #e2e2ea));
1142
+ cursor: pointer;
1143
+ transition: background .15s, opacity .15s;
1144
+ }
1145
+ .ui-carousel-btn:hover { background: var(--ui-surface-2, var(--surface-2, #1a1a26)); }
1146
+ .ui-carousel-btn[hidden] { display: none; }
1147
+ .ui-carousel-prev { left: .75rem; }
1148
+ .ui-carousel-next { right: .75rem; }
1574
1149
 
1575
1150
  .ui-carousel-dots {
1576
- display: flex;
1151
+ display: flex;
1577
1152
  justify-content: center;
1578
- gap: 0.5rem;
1579
- padding: 0.75rem 0 0.5rem;
1153
+ gap: .5rem;
1154
+ padding: .75rem 0 .5rem;
1580
1155
  }
1581
1156
 
1582
1157
  .ui-carousel-dot {
1583
- width: 8px;
1584
- height: 8px;
1585
- padding: 0;
1586
- background: var(--ui-border, var(--border, #2a2a38));
1587
- border: none;
1158
+ width: 8px;
1159
+ height: 8px;
1160
+ padding: 0;
1161
+ background: var(--ui-border, var(--border, #2a2a38));
1162
+ border: none;
1588
1163
  border-radius: 50%;
1589
- cursor: pointer;
1590
- transition:
1591
- background 0.15s,
1592
- transform 0.15s;
1164
+ cursor: pointer;
1165
+ transition: background .15s, transform .15s;
1593
1166
  }
1594
1167
  .ui-carousel-dot.active,
1595
- .ui-carousel-dot:hover {
1596
- background: var(--ui-accent, var(--accent, #9b8dff));
1597
- }
1598
- .ui-carousel-dot.active {
1599
- transform: scale(1.35);
1600
- }
1168
+ .ui-carousel-dot:hover { background: var(--ui-accent, var(--accent, #9b8dff)); }
1169
+ .ui-carousel-dot.active { transform: scale(1.35); }
1601
1170
 
1602
1171
  /* ─── Nav ────────────────────────────────────────────────────────────────── */
1603
1172
  .ui-nav {
1604
- position: relative;
1605
- background: var(--ui-bg, var(--bg, #0d0d10));
1173
+ position: relative;
1174
+ background: var(--ui-bg, var(--bg, #0d0d10));
1606
1175
  border-bottom: 1px solid var(--ui-border, var(--border, #222228));
1607
1176
  }
1608
1177
 
1609
1178
  .ui-nav--sticky {
1610
- position: sticky;
1611
- top: 0;
1612
- z-index: 100;
1613
- backdrop-filter: blur(12px);
1179
+ position: sticky;
1180
+ top: 0;
1181
+ z-index: 100;
1182
+ backdrop-filter: blur(12px);
1614
1183
  -webkit-backdrop-filter: blur(12px);
1615
- background: var(--ui-nav-sticky-bg, rgba(13, 13, 16, 0.85));
1184
+ background: var(--ui-nav-sticky-bg, rgba(13, 13, 16, .85));
1616
1185
  }
1617
1186
 
1618
1187
  .ui-nav-inner {
1619
1188
  max-width: 1100px;
1620
- margin: 0 auto;
1621
- padding: 0.875rem 1.5rem;
1622
- display: flex;
1189
+ margin: 0 auto;
1190
+ padding: .875rem 1.5rem;
1191
+ display: flex;
1623
1192
  align-items: center;
1624
- gap: 2rem;
1193
+ gap: 2rem;
1625
1194
  }
1626
1195
 
1627
1196
  .ui-nav-logo {
1628
- font-size: 1rem;
1629
- font-weight: 700;
1630
- color: var(--ui-text, var(--text, #e2e2ea));
1197
+ font-size: 1rem;
1198
+ font-weight: 700;
1199
+ color: var(--ui-text, var(--text, #e2e2ea));
1631
1200
  text-decoration: none;
1632
- display: flex;
1633
- align-items: center;
1634
- gap: 0.5rem;
1635
- flex-shrink: 0;
1636
- }
1637
- .ui-nav-logo:hover {
1638
- color: var(--ui-accent, var(--accent, #9b8dff));
1201
+ display: flex;
1202
+ align-items: center;
1203
+ gap: .5rem;
1204
+ flex-shrink: 0;
1639
1205
  }
1206
+ .ui-nav-logo:hover { color: var(--ui-accent, var(--accent, #9b8dff)); }
1640
1207
 
1641
- .ui-nav-links {
1642
- display: flex;
1643
- gap: 1.5rem;
1644
- align-items: center;
1645
- flex: 1;
1646
- }
1208
+ .ui-nav-links { display: flex; gap: 1.5rem; align-items: center; flex: 1; }
1647
1209
 
1648
1210
  .ui-nav-link {
1649
- font-size: 0.875rem;
1650
- color: var(--ui-muted, var(--muted, #9090a0));
1211
+ font-size: .875rem;
1212
+ color: var(--ui-muted, var(--muted, #9090a0));
1651
1213
  text-decoration: none;
1652
- transition: color 0.15s;
1653
- min-height: 44px;
1654
- display: flex;
1655
- align-items: center;
1656
- }
1657
- .ui-nav-link:hover {
1658
- color: var(--ui-text, var(--text, #e2e2ea));
1214
+ transition: color .15s;
1215
+ min-height: 44px;
1216
+ display: flex;
1217
+ align-items: center;
1659
1218
  }
1219
+ .ui-nav-link:hover { color: var(--ui-text, var(--text, #e2e2ea)); }
1660
1220
 
1661
- .ui-nav-action {
1662
- margin-left: auto;
1663
- }
1221
+ .ui-nav-action { margin-left: auto; }
1664
1222
 
1665
- .ui-nav--burger-left .ui-nav-burger {
1666
- order: -1;
1667
- margin-left: 0;
1668
- margin-right: auto;
1669
- }
1223
+ .ui-nav--burger-left .ui-nav-burger { order: -1; margin-left: 0; margin-right: auto; }
1670
1224
 
1671
1225
  .ui-nav-burger {
1672
- display: none;
1673
- margin-left: auto;
1674
- padding: 0.35rem;
1675
- background: none;
1676
- border: none;
1677
- color: var(--ui-text, var(--text, #e2e2ea));
1678
- cursor: pointer;
1679
- align-items: center;
1226
+ display: none;
1227
+ margin-left: auto;
1228
+ padding: .35rem;
1229
+ background: none;
1230
+ border: none;
1231
+ color: var(--ui-text, var(--text, #e2e2ea));
1232
+ cursor: pointer;
1233
+ align-items: center;
1680
1234
  justify-content: center;
1681
- border-radius: var(--ui-radius-sm, 6px);
1682
- transition: background 0.15s;
1683
- }
1684
- .ui-nav-burger:hover {
1685
- background: var(--ui-surface, var(--surface, #111116));
1686
- }
1687
- .ui-nav-burger-close {
1688
- display: none;
1689
- }
1690
- .ui-nav--open .ui-nav-burger-open {
1691
- display: none;
1692
- }
1693
- .ui-nav--open .ui-nav-burger-close {
1694
- display: block;
1235
+ border-radius: var(--ui-radius-sm, 6px);
1236
+ transition: background .15s;
1695
1237
  }
1238
+ .ui-nav-burger:hover { background: var(--ui-surface, var(--surface, #111116)); }
1239
+ .ui-nav-burger-close { display: none; }
1240
+ .ui-nav--open .ui-nav-burger-open { display: none; }
1241
+ .ui-nav--open .ui-nav-burger-close { display: block; }
1696
1242
 
1697
1243
  .ui-nav-mobile {
1698
- display: none;
1699
- position: absolute;
1700
- top: 100%;
1701
- left: 0;
1702
- right: 0;
1703
- z-index: 99;
1704
- background: var(--ui-bg, var(--bg, #0d0d10));
1244
+ display: none;
1245
+ position: absolute;
1246
+ top: 100%;
1247
+ left: 0;
1248
+ right: 0;
1249
+ z-index: 99;
1250
+ background: var(--ui-bg, var(--bg, #0d0d10));
1705
1251
  border-bottom: 1px solid var(--ui-border, var(--border, #222228));
1706
- padding: 1rem 1.5rem;
1252
+ padding: 1rem 1.5rem;
1707
1253
  flex-direction: column;
1708
- gap: 0.25rem;
1709
- }
1710
- .ui-nav--open .ui-nav-mobile {
1711
- display: flex;
1254
+ gap: .25rem;
1712
1255
  }
1256
+ .ui-nav--open .ui-nav-mobile { display: flex; }
1713
1257
 
1714
1258
  .ui-nav-mobile nav {
1715
- display: flex;
1259
+ display: flex;
1716
1260
  flex-direction: column;
1717
1261
  }
1718
1262
  .ui-nav-mobile .ui-nav-link {
1719
- padding: 0.6rem 0;
1263
+ padding: .6rem 0;
1720
1264
  border-bottom: 1px solid var(--ui-border, var(--border, #222228));
1721
1265
  }
1722
- .ui-nav-mobile .ui-nav-link:last-child {
1723
- border-bottom: none;
1724
- }
1725
- .ui-nav-mobile-action {
1726
- padding-top: 0.75rem;
1727
- }
1266
+ .ui-nav-mobile .ui-nav-link:last-child { border-bottom: none; }
1267
+ .ui-nav-mobile-action { padding-top: .75rem; }
1728
1268
 
1729
1269
  /* ─── App Badge ──────────────────────────────────────────────────────────── */
1730
1270
  .ui-app-badge {
1731
- display: inline-flex;
1732
- align-items: center;
1733
- gap: 0.625rem;
1734
- background: var(--ui-text, var(--text, #e2e2ea));
1735
- color: var(--ui-bg, var(--bg, #0d0d10));
1736
- border-radius: 10px;
1737
- padding: 0.625rem 1.25rem;
1271
+ display: inline-flex;
1272
+ align-items: center;
1273
+ gap: .625rem;
1274
+ background: var(--ui-text, var(--text, #e2e2ea));
1275
+ color: var(--ui-bg, var(--bg, #0d0d10));
1276
+ border-radius: 10px;
1277
+ padding: .625rem 1.25rem;
1738
1278
  text-decoration: none;
1739
- transition: opacity 0.15s;
1740
- min-width: 148px;
1741
- }
1742
- .ui-app-badge:hover {
1743
- opacity: 0.85;
1279
+ transition: opacity .15s;
1280
+ min-width: 148px;
1744
1281
  }
1282
+ .ui-app-badge:hover { opacity: .85; }
1745
1283
 
1746
- .ui-app-badge-text {
1747
- display: flex;
1748
- flex-direction: column;
1749
- gap: 0.05rem;
1750
- }
1751
- .ui-app-badge-line1 {
1752
- font-size: 0.65rem;
1753
- font-weight: 400;
1754
- line-height: 1;
1755
- }
1756
- .ui-app-badge-line2 {
1757
- font-size: 0.95rem;
1758
- font-weight: 700;
1759
- line-height: 1;
1760
- }
1284
+ .ui-app-badge-text { display: flex; flex-direction: column; gap: .05rem; }
1285
+ .ui-app-badge-line1 { font-size: .65rem; font-weight: 400; line-height: 1; }
1286
+ .ui-app-badge-line2 { font-size: .95rem; font-weight: 700; line-height: 1; }
1761
1287
 
1762
1288
  /* ─── Mobile ─────────────────────────────────────────────────────────────── */
1763
1289
  @media (max-width: 640px) {
1764
1290
  .ui-btn--lg {
1765
- height: 48px;
1766
- padding: 0 1.25rem;
1767
- font-size: 0.95rem;
1291
+ height: 48px;
1292
+ padding: 0 1.25rem;
1293
+ font-size: .95rem;
1768
1294
  }
1769
1295
 
1770
- .ui-stat-value {
1771
- font-size: 1.6rem;
1772
- }
1296
+ .ui-stat-value { font-size: 1.6rem; }
1773
1297
 
1774
1298
  /* Full-width buttons in narrow containers */
1775
- .ui-btn--full {
1776
- font-size: 0.9rem;
1777
- }
1299
+ .ui-btn--full { font-size: .9rem; }
1778
1300
 
1779
1301
  /* Layout */
1780
- .ui-section {
1781
- padding-top: 3rem;
1782
- padding-bottom: 3rem;
1783
- }
1784
- .ui-section--sm {
1785
- padding-top: 2rem;
1786
- padding-bottom: 2rem;
1787
- }
1788
- .ui-section--lg {
1789
- padding-top: 4rem;
1790
- padding-bottom: 4rem;
1791
- }
1302
+ .ui-section { padding-top: 3rem; padding-bottom: 3rem; }
1303
+ .ui-section--sm { padding-top: 2rem; padding-bottom: 2rem; }
1304
+ .ui-section--lg { padding-top: 4rem; padding-bottom: 4rem; }
1792
1305
 
1793
1306
  .ui-grid--cols-2,
1794
1307
  .ui-grid--cols-3,
1795
- .ui-grid--cols-4 {
1796
- grid-template-columns: 1fr;
1797
- }
1308
+ .ui-grid--cols-4 { grid-template-columns: 1fr; }
1798
1309
 
1799
- .ui-media {
1800
- grid-template-columns: 1fr;
1801
- }
1802
- .ui-media--reverse {
1803
- direction: ltr;
1804
- }
1310
+ .ui-media { grid-template-columns: 1fr; }
1311
+ .ui-media--reverse { direction: ltr; }
1805
1312
 
1806
- .ui-hero {
1807
- padding: 3rem 1.25rem;
1808
- }
1809
- .ui-hero-title {
1810
- font-size: 2rem;
1811
- }
1812
- .ui-hero-subtitle {
1813
- font-size: 1rem;
1814
- }
1313
+ .ui-hero { padding: 3rem 1.25rem; }
1314
+ .ui-hero-title { font-size: 2rem; }
1315
+ .ui-hero-subtitle { font-size: 1rem; }
1815
1316
 
1816
- .ui-nav-links {
1817
- display: none;
1818
- }
1819
- .ui-nav-burger {
1820
- display: flex;
1821
- }
1822
- .ui-nav-inner {
1823
- gap: 0.75rem;
1824
- }
1317
+ .ui-nav-links { display: none; }
1318
+ .ui-nav-burger { display: flex; }
1319
+ .ui-nav-inner { gap: .75rem; }
1825
1320
  }
1826
1321
 
1827
1322
  /* ─── Utilities ──────────────────────────────────────────────────────────────
@@ -1832,12 +1327,10 @@ hr.ui-divider {
1832
1327
  /* Screen-reader only — visually hidden but accessible to assistive tech */
1833
1328
  .ui-sr-only {
1834
1329
  position: absolute;
1835
- width: 1px;
1836
- height: 1px;
1837
- padding: 0;
1838
- margin: -1px;
1330
+ width: 1px; height: 1px;
1331
+ padding: 0; margin: -1px;
1839
1332
  overflow: hidden;
1840
- clip: rect(0, 0, 0, 0);
1333
+ clip: rect(0,0,0,0);
1841
1334
  white-space: nowrap;
1842
1335
  border: 0;
1843
1336
  }
@@ -1845,716 +1338,381 @@ hr.ui-divider {
1845
1338
  /* Spacing scale: 1=4px 2=8px 3=12px 4=16px 5=20px 6=24px 8=32px 10=40px 12=48px 16=64px */
1846
1339
 
1847
1340
  /* Margin top */
1848
- .u-mt-0 {
1849
- margin-top: 0;
1850
- }
1851
- .u-mt-1 {
1852
- margin-top: 0.25rem;
1853
- }
1854
- .u-mt-2 {
1855
- margin-top: 0.5rem;
1856
- }
1857
- .u-mt-3 {
1858
- margin-top: 0.75rem;
1859
- }
1860
- .u-mt-4 {
1861
- margin-top: 1rem;
1862
- }
1863
- .u-mt-5 {
1864
- margin-top: 1.25rem;
1865
- }
1866
- .u-mt-6 {
1867
- margin-top: 1.5rem;
1868
- }
1869
- .u-mt-8 {
1870
- margin-top: 2rem;
1871
- }
1872
- .u-mt-10 {
1873
- margin-top: 2.5rem;
1874
- }
1875
- .u-mt-12 {
1876
- margin-top: 3rem;
1877
- }
1878
- .u-mt-16 {
1879
- margin-top: 4rem;
1880
- }
1341
+ .u-mt-0 { margin-top: 0; }
1342
+ .u-mt-1 { margin-top: .25rem; }
1343
+ .u-mt-2 { margin-top: .5rem; }
1344
+ .u-mt-3 { margin-top: .75rem; }
1345
+ .u-mt-4 { margin-top: 1rem; }
1346
+ .u-mt-5 { margin-top: 1.25rem; }
1347
+ .u-mt-6 { margin-top: 1.5rem; }
1348
+ .u-mt-8 { margin-top: 2rem; }
1349
+ .u-mt-10 { margin-top: 2.5rem; }
1350
+ .u-mt-12 { margin-top: 3rem; }
1351
+ .u-mt-16 { margin-top: 4rem; }
1881
1352
 
1882
1353
  /* Margin bottom */
1883
- .u-mb-0 {
1884
- margin-bottom: 0;
1885
- }
1886
- .u-mb-1 {
1887
- margin-bottom: 0.25rem;
1888
- }
1889
- .u-mb-2 {
1890
- margin-bottom: 0.5rem;
1891
- }
1892
- .u-mb-3 {
1893
- margin-bottom: 0.75rem;
1894
- }
1895
- .u-mb-4 {
1896
- margin-bottom: 1rem;
1897
- }
1898
- .u-mb-5 {
1899
- margin-bottom: 1.25rem;
1900
- }
1901
- .u-mb-6 {
1902
- margin-bottom: 1.5rem;
1903
- }
1904
- .u-mb-8 {
1905
- margin-bottom: 2rem;
1906
- }
1907
- .u-mb-10 {
1908
- margin-bottom: 2.5rem;
1909
- }
1910
- .u-mb-12 {
1911
- margin-bottom: 3rem;
1912
- }
1913
- .u-mb-16 {
1914
- margin-bottom: 4rem;
1915
- }
1354
+ .u-mb-0 { margin-bottom: 0; }
1355
+ .u-mb-1 { margin-bottom: .25rem; }
1356
+ .u-mb-2 { margin-bottom: .5rem; }
1357
+ .u-mb-3 { margin-bottom: .75rem; }
1358
+ .u-mb-4 { margin-bottom: 1rem; }
1359
+ .u-mb-5 { margin-bottom: 1.25rem; }
1360
+ .u-mb-6 { margin-bottom: 1.5rem; }
1361
+ .u-mb-8 { margin-bottom: 2rem; }
1362
+ .u-mb-10 { margin-bottom: 2.5rem; }
1363
+ .u-mb-12 { margin-bottom: 3rem; }
1364
+ .u-mb-16 { margin-bottom: 4rem; }
1916
1365
 
1917
1366
  /* Margin left / right / auto */
1918
- .u-ml-auto {
1919
- margin-left: auto;
1920
- }
1921
- .u-mr-auto {
1922
- margin-right: auto;
1923
- }
1924
- .u-mx-auto {
1925
- margin-left: auto;
1926
- margin-right: auto;
1927
- }
1367
+ .u-ml-auto { margin-left: auto; }
1368
+ .u-mr-auto { margin-right: auto; }
1369
+ .u-mx-auto { margin-left: auto; margin-right: auto; }
1928
1370
 
1929
1371
  /* Padding */
1930
- .u-p-0 {
1931
- padding: 0;
1932
- }
1933
- .u-p-1 {
1934
- padding: 0.25rem;
1935
- }
1936
- .u-p-2 {
1937
- padding: 0.5rem;
1938
- }
1939
- .u-p-3 {
1940
- padding: 0.75rem;
1941
- }
1942
- .u-p-4 {
1943
- padding: 1rem;
1944
- }
1945
- .u-p-5 {
1946
- padding: 1.25rem;
1947
- }
1948
- .u-p-6 {
1949
- padding: 1.5rem;
1950
- }
1951
- .u-p-8 {
1952
- padding: 2rem;
1953
- }
1954
-
1955
- .u-px-0 {
1956
- padding-left: 0;
1957
- padding-right: 0;
1958
- }
1959
- .u-px-2 {
1960
- padding-left: 0.5rem;
1961
- padding-right: 0.5rem;
1962
- }
1963
- .u-px-3 {
1964
- padding-left: 0.75rem;
1965
- padding-right: 0.75rem;
1966
- }
1967
- .u-px-4 {
1968
- padding-left: 1rem;
1969
- padding-right: 1rem;
1970
- }
1971
- .u-px-5 {
1972
- padding-left: 1.25rem;
1973
- padding-right: 1.25rem;
1974
- }
1975
- .u-px-6 {
1976
- padding-left: 1.5rem;
1977
- padding-right: 1.5rem;
1978
- }
1979
- .u-px-8 {
1980
- padding-left: 2rem;
1981
- padding-right: 2rem;
1982
- }
1983
-
1984
- .u-py-0 {
1985
- padding-top: 0;
1986
- padding-bottom: 0;
1987
- }
1988
- .u-py-2 {
1989
- padding-top: 0.5rem;
1990
- padding-bottom: 0.5rem;
1991
- }
1992
- .u-py-3 {
1993
- padding-top: 0.75rem;
1994
- padding-bottom: 0.75rem;
1995
- }
1996
- .u-py-4 {
1997
- padding-top: 1rem;
1998
- padding-bottom: 1rem;
1999
- }
2000
- .u-py-5 {
2001
- padding-top: 1.25rem;
2002
- padding-bottom: 1.25rem;
2003
- }
2004
- .u-py-6 {
2005
- padding-top: 1.5rem;
2006
- padding-bottom: 1.5rem;
2007
- }
2008
- .u-py-8 {
2009
- padding-top: 2rem;
2010
- padding-bottom: 2rem;
2011
- }
1372
+ .u-p-0 { padding: 0; }
1373
+ .u-p-1 { padding: .25rem; }
1374
+ .u-p-2 { padding: .5rem; }
1375
+ .u-p-3 { padding: .75rem; }
1376
+ .u-p-4 { padding: 1rem; }
1377
+ .u-p-5 { padding: 1.25rem; }
1378
+ .u-p-6 { padding: 1.5rem; }
1379
+ .u-p-8 { padding: 2rem; }
1380
+
1381
+ .u-px-0 { padding-left: 0; padding-right: 0; }
1382
+ .u-px-2 { padding-left: .5rem; padding-right: .5rem; }
1383
+ .u-px-3 { padding-left: .75rem; padding-right: .75rem; }
1384
+ .u-px-4 { padding-left: 1rem; padding-right: 1rem; }
1385
+ .u-px-5 { padding-left: 1.25rem;padding-right: 1.25rem; }
1386
+ .u-px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
1387
+ .u-px-8 { padding-left: 2rem; padding-right: 2rem; }
1388
+
1389
+ .u-py-0 { padding-top: 0; padding-bottom: 0; }
1390
+ .u-py-2 { padding-top: .5rem; padding-bottom: .5rem; }
1391
+ .u-py-3 { padding-top: .75rem; padding-bottom: .75rem; }
1392
+ .u-py-4 { padding-top: 1rem; padding-bottom: 1rem; }
1393
+ .u-py-5 { padding-top: 1.25rem;padding-bottom: 1.25rem; }
1394
+ .u-py-6 { padding-top: 1.5rem; padding-bottom: 1.5rem; }
1395
+ .u-py-8 { padding-top: 2rem; padding-bottom: 2rem; }
2012
1396
 
2013
1397
  /* Typography — size */
2014
- .u-text-xs {
2015
- font-size: 0.75rem;
2016
- line-height: 1.4;
2017
- }
2018
- .u-text-sm {
2019
- font-size: 0.875rem;
2020
- line-height: 1.5;
2021
- }
2022
- .u-text-base {
2023
- font-size: 1rem;
2024
- line-height: 1.6;
2025
- }
2026
- .u-text-lg {
2027
- font-size: 1.125rem;
2028
- line-height: 1.5;
2029
- }
2030
- .u-text-xl {
2031
- font-size: 1.25rem;
2032
- line-height: 1.4;
2033
- }
2034
- .u-text-2xl {
2035
- font-size: 1.5rem;
2036
- line-height: 1.3;
2037
- }
2038
- .u-text-3xl {
2039
- font-size: 1.875rem;
2040
- line-height: 1.2;
2041
- }
2042
- .u-text-4xl {
2043
- font-size: 2.25rem;
2044
- line-height: 1.15;
2045
- }
2046
- .u-text-5xl {
2047
- font-size: 3rem;
2048
- line-height: 1.1;
2049
- }
2050
- .u-text-6xl {
2051
- font-size: 4rem;
2052
- line-height: 1.05;
2053
- }
2054
- .u-text-7xl {
2055
- font-size: 5rem;
2056
- line-height: 1;
2057
- }
1398
+ .u-text-xs { font-size: .75rem; line-height: 1.4; }
1399
+ .u-text-sm { font-size: .875rem; line-height: 1.5; }
1400
+ .u-text-base { font-size: 1rem; line-height: 1.6; }
1401
+ .u-text-lg { font-size: 1.125rem;line-height: 1.5; }
1402
+ .u-text-xl { font-size: 1.25rem; line-height: 1.4; }
1403
+ .u-text-2xl { font-size: 1.5rem; line-height: 1.3; }
1404
+ .u-text-3xl { font-size: 1.875rem;line-height: 1.2; }
1405
+ .u-text-4xl { font-size: 2.25rem; line-height: 1.15; }
1406
+ .u-text-5xl { font-size: 3rem; line-height: 1.1; }
1407
+ .u-text-6xl { font-size: 4rem; line-height: 1.05; }
1408
+ .u-text-7xl { font-size: 5rem; line-height: 1; }
2058
1409
 
2059
1410
  /* Typography — weight */
2060
- .u-font-normal {
2061
- font-weight: 400;
2062
- }
2063
- .u-font-medium {
2064
- font-weight: 500;
2065
- }
2066
- .u-font-semibold {
2067
- font-weight: 600;
2068
- }
2069
- .u-font-bold {
2070
- font-weight: 700;
2071
- }
1411
+ .u-font-normal { font-weight: 400; }
1412
+ .u-font-medium { font-weight: 500; }
1413
+ .u-font-semibold { font-weight: 600; }
1414
+ .u-font-bold { font-weight: 700; }
2072
1415
 
2073
1416
  /* Typography — alignment */
2074
- .u-text-left {
2075
- text-align: left;
2076
- }
2077
- .u-text-center {
2078
- text-align: center;
2079
- }
2080
- .u-text-right {
2081
- text-align: right;
2082
- }
2083
- .u-text-balance {
2084
- text-wrap: balance;
2085
- }
1417
+ .u-text-left { text-align: left; }
1418
+ .u-text-center { text-align: center; }
1419
+ .u-text-right { text-align: right; }
1420
+ .u-text-balance { text-wrap: balance; }
2086
1421
 
2087
1422
  /* Typography — color (uses tokens so theme overrides apply) */
2088
- .u-text-default {
2089
- color: var(--ui-text);
2090
- }
2091
- .u-text-muted {
2092
- color: var(--ui-muted);
2093
- }
2094
- .u-text-accent {
2095
- color: var(--ui-accent);
2096
- }
2097
- .u-text-green {
2098
- color: var(--ui-green);
2099
- }
2100
- .u-text-red {
2101
- color: var(--ui-red);
2102
- }
2103
- .u-text-yellow {
2104
- color: var(--ui-yellow);
2105
- }
2106
- .u-text-blue {
2107
- color: var(--ui-blue);
2108
- }
1423
+ .u-text-default { color: var(--ui-text); }
1424
+ .u-text-muted { color: var(--ui-muted); }
1425
+ .u-text-accent { color: var(--ui-accent); }
1426
+ .u-text-green { color: var(--ui-green); }
1427
+ .u-text-red { color: var(--ui-red); }
1428
+ .u-text-yellow { color: var(--ui-yellow); }
1429
+ .u-text-blue { color: var(--ui-blue); }
2109
1430
 
2110
1431
  /* Typography — line height */
2111
- .u-leading-tight {
2112
- line-height: 1.25;
2113
- }
2114
- .u-leading-snug {
2115
- line-height: 1.375;
2116
- }
2117
- .u-leading-normal {
2118
- line-height: 1.5;
2119
- }
2120
- .u-leading-relaxed {
2121
- line-height: 1.625;
2122
- }
2123
- .u-leading-loose {
2124
- line-height: 2;
2125
- }
1432
+ .u-leading-tight { line-height: 1.25; }
1433
+ .u-leading-snug { line-height: 1.375; }
1434
+ .u-leading-normal { line-height: 1.5; }
1435
+ .u-leading-relaxed { line-height: 1.625; }
1436
+ .u-leading-loose { line-height: 2; }
2126
1437
 
2127
1438
  /* Width */
2128
- .u-w-full {
2129
- width: 100%;
2130
- }
2131
- .u-w-auto {
2132
- width: auto;
2133
- }
2134
- .u-max-w-xs {
2135
- max-width: 320px;
2136
- }
2137
- .u-max-w-sm {
2138
- max-width: 480px;
2139
- }
2140
- .u-max-w-md {
2141
- max-width: 640px;
2142
- }
2143
- .u-max-w-lg {
2144
- max-width: 800px;
2145
- }
2146
- .u-max-w-xl {
2147
- max-width: 1024px;
2148
- }
2149
- .u-max-w-prose {
2150
- max-width: 65ch;
2151
- }
1439
+ .u-w-full { width: 100%; }
1440
+ .u-w-auto { width: auto; }
1441
+ .u-max-w-xs { max-width: 320px; }
1442
+ .u-max-w-sm { max-width: 480px; }
1443
+ .u-max-w-md { max-width: 640px; }
1444
+ .u-max-w-lg { max-width: 800px; }
1445
+ .u-max-w-xl { max-width: 1024px; }
1446
+ .u-max-w-prose { max-width: 65ch; }
2152
1447
 
2153
1448
  /* Display */
2154
- .u-block {
2155
- display: block;
2156
- }
2157
- .u-inline {
2158
- display: inline;
2159
- }
2160
- .u-inline-block {
2161
- display: inline-block;
2162
- }
2163
- .u-hidden {
2164
- display: none;
2165
- }
1449
+ .u-block { display: block; }
1450
+ .u-inline { display: inline; }
1451
+ .u-inline-block { display: inline-block; }
1452
+ .u-hidden { display: none; }
2166
1453
 
2167
1454
  /* Flexbox */
2168
- .u-flex {
2169
- display: flex;
2170
- }
2171
- .u-flex-col {
2172
- display: flex;
2173
- flex-direction: column;
2174
- }
2175
- .u-flex-wrap {
2176
- flex-wrap: wrap;
2177
- }
2178
- .u-flex-1 {
2179
- flex: 1;
2180
- }
2181
- .u-shrink-0 {
2182
- flex-shrink: 0;
2183
- }
2184
-
2185
- .u-items-start {
2186
- align-items: flex-start;
2187
- }
2188
- .u-items-center {
2189
- align-items: center;
2190
- }
2191
- .u-items-end {
2192
- align-items: flex-end;
2193
- }
2194
- .u-items-stretch {
2195
- align-items: stretch;
2196
- }
2197
-
2198
- .u-justify-start {
2199
- justify-content: flex-start;
2200
- }
2201
- .u-justify-center {
2202
- justify-content: center;
2203
- }
2204
- .u-justify-end {
2205
- justify-content: flex-end;
2206
- }
2207
- .u-justify-between {
2208
- justify-content: space-between;
2209
- }
2210
-
2211
- .u-gap-1 {
2212
- gap: 0.25rem;
2213
- }
2214
- .u-gap-2 {
2215
- gap: 0.5rem;
2216
- }
2217
- .u-gap-3 {
2218
- gap: 0.75rem;
2219
- }
2220
- .u-gap-4 {
2221
- gap: 1rem;
2222
- }
2223
- .u-gap-5 {
2224
- gap: 1.25rem;
2225
- }
2226
- .u-gap-6 {
2227
- gap: 1.5rem;
2228
- }
2229
- .u-gap-8 {
2230
- gap: 2rem;
2231
- }
1455
+ .u-flex { display: flex; }
1456
+ .u-flex-col { display: flex; flex-direction: column; }
1457
+ .u-flex-wrap { flex-wrap: wrap; }
1458
+ .u-flex-1 { flex: 1; }
1459
+ .u-shrink-0 { flex-shrink: 0; }
1460
+
1461
+ .u-items-start { align-items: flex-start; }
1462
+ .u-items-center { align-items: center; }
1463
+ .u-items-end { align-items: flex-end; }
1464
+ .u-items-stretch { align-items: stretch; }
1465
+
1466
+ .u-justify-start { justify-content: flex-start; }
1467
+ .u-justify-center { justify-content: center; }
1468
+ .u-justify-end { justify-content: flex-end; }
1469
+ .u-justify-between { justify-content: space-between; }
1470
+
1471
+ .u-gap-1 { gap: .25rem; }
1472
+ .u-gap-2 { gap: .5rem; }
1473
+ .u-gap-3 { gap: .75rem; }
1474
+ .u-gap-4 { gap: 1rem; }
1475
+ .u-gap-5 { gap: 1.25rem; }
1476
+ .u-gap-6 { gap: 1.5rem; }
1477
+ .u-gap-8 { gap: 2rem; }
2232
1478
 
2233
1479
  /* Border radius */
2234
- .u-rounded {
2235
- border-radius: var(--ui-radius-sm);
2236
- }
2237
- .u-rounded-md {
2238
- border-radius: var(--ui-radius);
2239
- }
2240
- .u-rounded-lg {
2241
- border-radius: calc(var(--ui-radius) * 1.5);
2242
- }
2243
- .u-rounded-xl {
2244
- border-radius: calc(var(--ui-radius) * 2);
2245
- }
2246
- .u-rounded-full {
2247
- border-radius: 9999px;
2248
- }
1480
+ .u-rounded { border-radius: var(--ui-radius-sm); }
1481
+ .u-rounded-md { border-radius: var(--ui-radius); }
1482
+ .u-rounded-lg { border-radius: calc(var(--ui-radius) * 1.5); }
1483
+ .u-rounded-xl { border-radius: calc(var(--ui-radius) * 2); }
1484
+ .u-rounded-full { border-radius: 9999px; }
2249
1485
 
2250
1486
  /* Border */
2251
- .u-border {
2252
- border: 1px solid var(--ui-border);
2253
- }
2254
- .u-border-t {
2255
- border-top: 1px solid var(--ui-border);
2256
- }
2257
- .u-border-b {
2258
- border-bottom: 1px solid var(--ui-border);
2259
- }
1487
+ .u-border { border: 1px solid var(--ui-border); }
1488
+ .u-border-t { border-top: 1px solid var(--ui-border); }
1489
+ .u-border-b { border-bottom: 1px solid var(--ui-border); }
2260
1490
 
2261
1491
  /* Background */
2262
- .u-bg-surface {
2263
- background: var(--ui-surface);
2264
- }
2265
- .u-bg-surface2 {
2266
- background: var(--ui-surface-2);
2267
- }
2268
- .u-bg-accent {
2269
- background: var(--ui-accent);
2270
- }
1492
+ .u-bg-surface { background: var(--ui-surface); }
1493
+ .u-bg-surface2 { background: var(--ui-surface-2); }
1494
+ .u-bg-accent { background: var(--ui-accent); }
2271
1495
 
2272
1496
  /* Overflow */
2273
- .u-overflow-hidden {
2274
- overflow: hidden;
2275
- }
2276
- .u-overflow-auto {
2277
- overflow: auto;
2278
- }
1497
+ .u-overflow-hidden { overflow: hidden; }
1498
+ .u-overflow-auto { overflow: auto; }
2279
1499
 
2280
1500
  /* Position */
2281
- .u-relative {
2282
- position: relative;
2283
- }
2284
- .u-absolute {
2285
- position: absolute;
2286
- }
1501
+ .u-relative { position: relative; }
1502
+ .u-absolute { position: absolute; }
2287
1503
 
2288
1504
  /* Opacity */
2289
- .u-opacity-50 {
2290
- opacity: 0.5;
2291
- }
2292
- .u-opacity-75 {
2293
- opacity: 0.75;
2294
- }
1505
+ .u-opacity-50 { opacity: .5; }
1506
+ .u-opacity-75 { opacity: .75; }
2295
1507
 
2296
1508
  /* ─── Section header ─────────────────────────────────────────────────────────
2297
1509
  Optional heading block prepended to section() when eyebrow/title/subtitle
2298
1510
  props are supplied. Sits above the content slot. */
2299
- .ui-section-header {
2300
- width: 100%;
2301
- max-width: 1100px;
2302
- margin: 0 auto 2.5rem;
2303
- padding-left: 1.5rem;
2304
- padding-right: 1.5rem;
2305
- }
2306
- .ui-section-header--center {
2307
- text-align: center;
2308
- }
2309
- .ui-section-header--gap-none {
2310
- margin-bottom: 0;
2311
- }
2312
- .ui-section-header--gap-sm {
2313
- margin-bottom: 1.25rem;
2314
- }
2315
- .ui-section-header--gap-lg {
2316
- margin-bottom: 4rem;
2317
- }
1511
+ .ui-section-header { width: 100%; max-width: 1100px; margin: 0 auto 2.5rem; padding-left: 1.5rem; padding-right: 1.5rem; }
1512
+ .ui-section-header--center { text-align: center; }
1513
+ .ui-section-header--gap-none { margin-bottom: 0; }
1514
+ .ui-section-header--gap-sm { margin-bottom: 1.25rem; }
1515
+ .ui-section-header--gap-lg { margin-bottom: 4rem; }
2318
1516
 
2319
1517
  .ui-section-eyebrow {
2320
- display: block;
2321
- font-size: 0.75rem;
2322
- font-weight: 600;
2323
- letter-spacing: 0.08em;
1518
+ display: block;
1519
+ font-size: .75rem;
1520
+ font-weight: 600;
1521
+ letter-spacing: .08em;
2324
1522
  text-transform: uppercase;
2325
- color: var(--ui-accent);
2326
- margin: 0 0 2rem;
1523
+ color: var(--ui-accent);
1524
+ margin: 0 0 2rem;
2327
1525
  }
2328
1526
 
2329
1527
  .ui-section-title {
2330
- font-size: 2rem;
1528
+ font-size: 2rem;
2331
1529
  font-weight: 700;
2332
1530
  line-height: 1.15;
2333
- color: var(--ui-text);
2334
- margin: 0 0 1.25rem;
1531
+ color: var(--ui-text);
1532
+ margin: 0 0 1.25rem;
2335
1533
  }
2336
1534
 
2337
1535
  .ui-section-subtitle {
2338
- font-size: 1rem;
2339
- color: var(--ui-muted);
1536
+ font-size: 1rem;
1537
+ color: var(--ui-muted);
2340
1538
  line-height: 1.65;
2341
- margin: 0;
2342
- max-width: 58ch;
1539
+ margin: 0;
1540
+ max-width: 58ch;
2343
1541
  }
2344
1542
 
2345
- .ui-section-header--center .ui-section-subtitle {
2346
- margin-left: auto;
2347
- margin-right: auto;
2348
- }
1543
+ .ui-section-header--center .ui-section-subtitle { margin-left: auto; margin-right: auto; }
2349
1544
 
2350
1545
  @media (max-width: 640px) {
2351
- .ui-section-title {
2352
- font-size: 1.5rem;
2353
- }
2354
- .ui-section-header {
2355
- margin-bottom: 2rem;
2356
- }
1546
+ .ui-section-title { font-size: 1.5rem; }
1547
+ .ui-section-header { margin-bottom: 2rem; }
2357
1548
  }
2358
1549
 
2359
1550
  /* ─── CTA ────────────────────────────────────────────────────────────────────
2360
1551
  Call-to-action block. Sits inside section() + container(). */
2361
- .ui-cta {
2362
- text-align: center;
2363
- }
2364
- .ui-cta--left {
2365
- text-align: left;
2366
- }
1552
+ .ui-cta { text-align: center; }
1553
+ .ui-cta--left { text-align: left; }
2367
1554
 
2368
1555
  .ui-cta-eyebrow {
2369
- display: block;
2370
- font-size: 0.75rem;
2371
- font-weight: 600;
2372
- letter-spacing: 0.08em;
1556
+ display: block;
1557
+ font-size: .75rem;
1558
+ font-weight: 600;
1559
+ letter-spacing: .08em;
2373
1560
  text-transform: uppercase;
2374
- color: var(--ui-accent);
2375
- margin: 0 0 0.75rem;
1561
+ color: var(--ui-accent);
1562
+ margin: 0 0 .75rem;
2376
1563
  }
2377
1564
 
2378
1565
  .ui-cta-title {
2379
- font-size: 2.5rem;
1566
+ font-size: 2.5rem;
2380
1567
  font-weight: 700;
2381
1568
  line-height: 1.1;
2382
- color: var(--ui-text);
2383
- margin: 0 0 1rem;
1569
+ color: var(--ui-text);
1570
+ margin: 0 0 1rem;
2384
1571
  }
2385
1572
 
2386
1573
  .ui-cta-subtitle {
2387
- font-size: 1.05rem;
2388
- color: var(--ui-muted);
1574
+ font-size: 1.05rem;
1575
+ color: var(--ui-muted);
2389
1576
  line-height: 1.65;
2390
- max-width: 56ch;
2391
- margin: 0 auto 2rem;
1577
+ max-width: 56ch;
1578
+ margin: 0 auto 2rem;
2392
1579
  }
2393
1580
 
2394
- .ui-cta--left .ui-cta-subtitle {
2395
- margin-left: 0;
2396
- }
1581
+ .ui-cta--left .ui-cta-subtitle { margin-left: 0; }
2397
1582
 
2398
1583
  .ui-cta-actions {
2399
- display: flex;
2400
- gap: 1rem;
2401
- flex-wrap: wrap;
1584
+ display: flex;
1585
+ gap: 1rem;
1586
+ flex-wrap: wrap;
2402
1587
  justify-content: center;
2403
1588
  }
2404
1589
 
2405
- .ui-cta--left .ui-cta-actions {
2406
- justify-content: flex-start;
2407
- }
1590
+ .ui-cta--left .ui-cta-actions { justify-content: flex-start; }
2408
1591
 
2409
1592
  @media (max-width: 640px) {
2410
- .ui-cta-title {
2411
- font-size: 1.75rem;
2412
- }
2413
- .ui-cta-actions {
2414
- flex-direction: column;
2415
- align-items: stretch;
2416
- }
1593
+ .ui-cta-title { font-size: 1.75rem; }
1594
+ .ui-cta-actions { flex-direction: column; align-items: stretch; }
2417
1595
  }
2418
1596
 
2419
1597
  /* ─── Code Window ────────────────────────────────────────────────────────────
2420
1598
  macOS-style window chrome around a <pre><code> block. */
2421
1599
  .ui-code-window {
2422
- background: var(--ui-surface-2);
2423
- border: 1px solid var(--ui-border);
1600
+ background: var(--ui-surface-2);
1601
+ border: 1px solid var(--ui-border);
2424
1602
  border-radius: var(--ui-radius);
2425
- overflow: hidden;
1603
+ overflow: hidden;
2426
1604
  }
2427
1605
 
2428
1606
  .ui-code-window-chrome {
2429
- display: flex;
2430
- align-items: center;
2431
- gap: 0.4rem;
2432
- padding: 0.6rem 1rem;
2433
- background: var(--ui-surface);
2434
- border-bottom: 1px solid var(--ui-border);
1607
+ display: flex;
1608
+ align-items: center;
1609
+ gap: .4rem;
1610
+ padding: .6rem 1rem;
1611
+ background: var(--ui-surface);
1612
+ border-bottom: 1px solid var(--ui-border);
2435
1613
  }
2436
1614
 
2437
1615
  .ui-code-window-dot {
2438
- width: 10px;
2439
- height: 10px;
1616
+ width: 10px;
1617
+ height: 10px;
2440
1618
  border-radius: 50%;
2441
- flex-shrink: 0;
1619
+ flex-shrink: 0;
2442
1620
  }
2443
1621
 
2444
- .ui-code-window-dot:nth-child(1) {
2445
- background: #ff5f57;
2446
- }
2447
- .ui-code-window-dot:nth-child(2) {
2448
- background: #febc2e;
2449
- }
2450
- .ui-code-window-dot:nth-child(3) {
2451
- background: #28c840;
2452
- }
1622
+ .ui-code-window-dot:nth-child(1) { background: #ff5f57; }
1623
+ .ui-code-window-dot:nth-child(2) { background: #febc2e; }
1624
+ .ui-code-window-dot:nth-child(3) { background: #28c840; }
2453
1625
 
2454
1626
  .ui-code-window-filename {
2455
- font-size: 0.75rem;
1627
+ font-size: .75rem;
2456
1628
  font-family: var(--ui-mono);
2457
- color: rgba(255, 255, 255, 0.5);
2458
- margin-left: 0.35rem;
1629
+ color: #9898b2;
1630
+ margin-left: .35rem;
2459
1631
  }
2460
1632
 
2461
1633
  .ui-code-window-lang {
2462
- font-size: 0.7rem;
1634
+ font-size: .7rem;
2463
1635
  font-family: var(--ui-mono);
2464
- color: #9898b2;
1636
+ color: #9898b2;
2465
1637
  margin-left: auto;
2466
1638
  }
2467
1639
 
2468
1640
  .ui-code-window-pre {
2469
- margin: 0;
2470
- padding: 1.25rem 1.5rem;
2471
- overflow-x: auto;
1641
+ margin: 0;
1642
+ padding: 1.25rem 1.5rem;
1643
+ overflow-x: auto;
2472
1644
  font-family: var(--ui-mono);
2473
- font-size: 0.85rem;
1645
+ font-size: .85rem;
2474
1646
  line-height: 1.7;
2475
- color: var(--ui-text);
2476
- tab-size: 2;
1647
+ color: var(--ui-text);
1648
+ tab-size: 2;
2477
1649
  }
2478
1650
 
2479
- .ui-code-window-code {
2480
- font-family: inherit;
2481
- }
1651
+ .ui-code-window-code { font-family: inherit; }
2482
1652
 
2483
1653
  /* ─── Footer ─────────────────────────────────────────────────────────────────
2484
1654
  Site footer — logo, nav links, legal text. Stacks on mobile. */
2485
1655
  .ui-footer {
2486
- padding: 3rem 1.5rem;
1656
+ padding: 3rem 1.5rem;
2487
1657
  border-top: 1px solid var(--ui-border);
2488
1658
  }
2489
1659
 
2490
1660
  .ui-footer-inner {
2491
- max-width: 1200px;
2492
- margin: 0 auto;
2493
- display: flex;
1661
+ max-width: 1200px;
1662
+ margin: 0 auto;
1663
+ display: flex;
2494
1664
  align-items: center;
2495
- gap: 2rem;
2496
- flex-wrap: wrap;
1665
+ gap: 2rem;
1666
+ flex-wrap: wrap;
2497
1667
  }
2498
1668
 
2499
1669
  .ui-footer-logo {
2500
- font-size: 1rem;
2501
- font-weight: 600;
2502
- color: var(--ui-text);
1670
+ font-size: 1rem;
1671
+ font-weight: 600;
1672
+ color: var(--ui-text);
2503
1673
  text-decoration: none;
2504
- flex-shrink: 0;
2505
- transition: color 0.15s;
1674
+ flex-shrink: 0;
1675
+ transition: color .15s;
2506
1676
  }
2507
1677
 
2508
- .ui-footer-logo:hover {
2509
- color: var(--ui-accent);
2510
- }
1678
+ .ui-footer-logo:hover { color: var(--ui-accent); }
2511
1679
  .ui-footer-logo:focus-visible {
2512
- outline: 2px solid var(--ui-accent);
1680
+ outline: 2px solid var(--ui-accent);
2513
1681
  outline-offset: 2px;
2514
- border-radius: 2px;
1682
+ border-radius: 2px;
2515
1683
  }
2516
1684
 
2517
1685
  .ui-footer-links {
2518
- display: flex;
2519
- gap: 1.5rem;
1686
+ display: flex;
1687
+ gap: 1.5rem;
2520
1688
  flex-wrap: wrap;
2521
- flex: 1;
1689
+ flex: 1;
2522
1690
  }
2523
1691
 
2524
1692
  .ui-footer-link {
2525
- font-size: 0.875rem;
2526
- color: var(--ui-muted);
1693
+ font-size: .875rem;
1694
+ color: var(--ui-muted);
2527
1695
  text-decoration: none;
2528
- transition: color 0.15s;
1696
+ transition: color .15s;
2529
1697
  }
2530
1698
 
2531
- .ui-footer-link:hover {
2532
- color: var(--ui-text);
2533
- }
1699
+ .ui-footer-link:hover { color: var(--ui-text); }
2534
1700
  .ui-footer-link:focus-visible {
2535
- outline: 2px solid var(--ui-accent);
1701
+ outline: 2px solid var(--ui-accent);
2536
1702
  outline-offset: 2px;
2537
- border-radius: 2px;
1703
+ border-radius: 2px;
2538
1704
  }
2539
1705
 
2540
1706
  .ui-footer-legal {
2541
- font-size: 0.8rem;
2542
- color: var(--ui-muted);
2543
- margin: 0 0 0 auto;
1707
+ font-size: .8rem;
1708
+ color: var(--ui-muted);
1709
+ margin: 0 0 0 auto;
2544
1710
  }
2545
1711
 
2546
1712
  @media (max-width: 640px) {
2547
- .ui-footer-inner {
2548
- flex-direction: column;
2549
- align-items: flex-start;
2550
- gap: 1.25rem;
2551
- }
2552
- .ui-footer-legal {
2553
- margin-left: 0;
2554
- }
2555
- .ui-footer-links {
2556
- gap: 1rem;
2557
- }
1713
+ .ui-footer-inner { flex-direction: column; align-items: flex-start; gap: 1.25rem; }
1714
+ .ui-footer-legal { margin-left: 0; }
1715
+ .ui-footer-links { gap: 1rem; }
2558
1716
  }
2559
1717
 
2560
1718
  /* ─── Icon wrapper ───────────────────────────────────────────────────────────
@@ -2562,41 +1720,22 @@ hr.ui-divider {
2562
1720
  bg: 'circle' → border-radius: 50% | bg: 'square' → var(--ui-radius) */
2563
1721
 
2564
1722
  .ui-icon-wrap {
2565
- display: inline-flex;
2566
- align-items: center;
1723
+ display: inline-flex;
1724
+ align-items: center;
2567
1725
  justify-content: center;
2568
- padding: 0.55em;
2569
- flex-shrink: 0;
2570
- line-height: 1;
1726
+ padding: .55em;
1727
+ flex-shrink: 0;
1728
+ line-height: 1;
2571
1729
  }
2572
1730
 
2573
- .ui-icon-wrap--circle {
2574
- border-radius: 50%;
2575
- }
2576
- .ui-icon-wrap--square {
2577
- border-radius: var(--ui-radius);
2578
- }
1731
+ .ui-icon-wrap--circle { border-radius: 50%; }
1732
+ .ui-icon-wrap--square { border-radius: var(--ui-radius); }
2579
1733
 
2580
- .ui-icon-wrap--accent {
2581
- background: var(--ui-accent-dim);
2582
- color: var(--ui-accent);
2583
- }
2584
- .ui-icon-wrap--success {
2585
- background: var(--ui-green-dim);
2586
- color: var(--ui-green);
2587
- }
2588
- .ui-icon-wrap--warning {
2589
- background: var(--ui-yellow-dim);
2590
- color: var(--ui-yellow);
2591
- }
2592
- .ui-icon-wrap--error {
2593
- background: var(--ui-red-dim);
2594
- color: var(--ui-red);
2595
- }
2596
- .ui-icon-wrap--muted {
2597
- background: var(--ui-surface-2);
2598
- color: var(--ui-muted);
2599
- }
1734
+ .ui-icon-wrap--accent { background: var(--ui-accent-dim); color: var(--ui-accent); }
1735
+ .ui-icon-wrap--success { background: var(--ui-green-dim); color: var(--ui-green); }
1736
+ .ui-icon-wrap--warning { background: var(--ui-yellow-dim); color: var(--ui-yellow); }
1737
+ .ui-icon-wrap--error { background: var(--ui-red-dim); color: var(--ui-red); }
1738
+ .ui-icon-wrap--muted { background: var(--ui-surface-2); color: var(--ui-muted); }
2600
1739
 
2601
1740
  /* ─── Timeline ───────────────────────────────────────────────────────────────
2602
1741
  Shared rules (dot, label, body) apply to both orientations. */
@@ -2604,119 +1743,88 @@ hr.ui-divider {
2604
1743
  /* Shared base */
2605
1744
  .ui-timeline {
2606
1745
  list-style: none;
2607
- padding: 0;
2608
- margin: 0;
1746
+ padding: 0;
1747
+ margin: 0;
2609
1748
  }
2610
1749
 
2611
1750
  .ui-timeline-dot {
2612
- width: 10px;
2613
- height: 10px;
1751
+ width: 10px;
1752
+ height: 10px;
2614
1753
  border-radius: 50%;
2615
- flex-shrink: 0;
2616
- display: flex;
2617
- align-items: center;
1754
+ flex-shrink: 0;
1755
+ display: flex;
1756
+ align-items: center;
2618
1757
  justify-content: center;
2619
- position: relative;
2620
- z-index: 1;
1758
+ position: relative;
1759
+ z-index: 1;
2621
1760
  }
2622
1761
 
2623
1762
  /* Icon dot — larger, with dim background */
2624
1763
  .ui-timeline-dot--icon {
2625
- width: 2rem;
2626
- height: 2rem;
1764
+ width: 2rem;
1765
+ height: 2rem;
2627
1766
  border-radius: 50%;
2628
- font-size: 1rem;
1767
+ font-size: 1rem;
2629
1768
  }
2630
1769
 
2631
1770
  /* Dot colour variants */
2632
- .ui-timeline-dot--accent {
2633
- background: var(--ui-accent);
2634
- }
2635
- .ui-timeline-dot--success {
2636
- background: var(--ui-green);
2637
- }
2638
- .ui-timeline-dot--warning {
2639
- background: var(--ui-yellow);
2640
- }
2641
- .ui-timeline-dot--error {
2642
- background: var(--ui-red);
2643
- }
2644
- .ui-timeline-dot--muted {
2645
- background: var(--ui-surface-2);
2646
- outline: 2px solid var(--ui-border);
2647
- outline-offset: 0;
2648
- }
1771
+ .ui-timeline-dot--accent { background: var(--ui-accent); }
1772
+ .ui-timeline-dot--success { background: var(--ui-green); }
1773
+ .ui-timeline-dot--warning { background: var(--ui-yellow); }
1774
+ .ui-timeline-dot--error { background: var(--ui-red); }
1775
+ .ui-timeline-dot--muted { background: var(--ui-surface-2); outline: 2px solid var(--ui-border); outline-offset: 0; }
2649
1776
 
2650
1777
  /* Icon dot: dim background + coloured icon */
2651
- .ui-timeline-dot--icon.ui-timeline-dot--accent {
2652
- background: var(--ui-accent-dim);
2653
- color: var(--ui-accent);
2654
- }
2655
- .ui-timeline-dot--icon.ui-timeline-dot--success {
2656
- background: var(--ui-green-dim);
2657
- color: var(--ui-green);
2658
- }
2659
- .ui-timeline-dot--icon.ui-timeline-dot--warning {
2660
- background: var(--ui-yellow-dim);
2661
- color: var(--ui-yellow);
2662
- }
2663
- .ui-timeline-dot--icon.ui-timeline-dot--error {
2664
- background: var(--ui-red-dim);
2665
- color: var(--ui-red);
2666
- }
2667
- .ui-timeline-dot--icon.ui-timeline-dot--muted {
2668
- background: var(--ui-surface-2);
2669
- color: var(--ui-muted);
2670
- }
1778
+ .ui-timeline-dot--icon.ui-timeline-dot--accent { background: var(--ui-accent-dim); color: var(--ui-accent); }
1779
+ .ui-timeline-dot--icon.ui-timeline-dot--success { background: var(--ui-green-dim); color: var(--ui-green); }
1780
+ .ui-timeline-dot--icon.ui-timeline-dot--warning { background: var(--ui-yellow-dim); color: var(--ui-yellow); }
1781
+ .ui-timeline-dot--icon.ui-timeline-dot--error { background: var(--ui-red-dim); color: var(--ui-red); }
1782
+ .ui-timeline-dot--icon.ui-timeline-dot--muted { background: var(--ui-surface-2); color: var(--ui-muted); }
2671
1783
 
2672
1784
  .ui-timeline-label {
2673
- display: block;
2674
- font-size: 0.72rem;
2675
- font-weight: 600;
2676
- color: var(--ui-muted);
2677
- letter-spacing: 0.05em;
1785
+ display: block;
1786
+ font-size: .72rem;
1787
+ font-weight: 600;
1788
+ color: var(--ui-muted);
1789
+ letter-spacing: .05em;
2678
1790
  text-transform: uppercase;
2679
- margin-bottom: 0.35rem;
1791
+ margin-bottom: .35rem;
2680
1792
  }
2681
1793
 
2682
1794
  /* ── Vertical ── */
2683
1795
  .ui-timeline--vertical {
2684
- display: flex;
1796
+ display: flex;
2685
1797
  flex-direction: column;
2686
1798
  }
2687
1799
 
2688
1800
  .ui-timeline--vertical .ui-timeline-item {
2689
1801
  display: flex;
2690
- gap: 1rem;
1802
+ gap: 1rem;
2691
1803
  }
2692
1804
 
2693
1805
  .ui-timeline--vertical .ui-timeline-side {
2694
- display: flex;
1806
+ display: flex;
2695
1807
  flex-direction: column;
2696
- align-items: center;
2697
- flex-shrink: 0;
1808
+ align-items: center;
1809
+ flex-shrink: 0;
2698
1810
  }
2699
1811
 
2700
1812
  /* Connecting line segments run above and below the dot */
2701
1813
  .ui-timeline--vertical .ui-timeline-connector {
2702
- width: 2px;
1814
+ width: 2px;
2703
1815
  background: var(--ui-border);
2704
- flex: 1;
2705
- min-height: 0.75rem;
1816
+ flex: 1;
1817
+ min-height: .75rem;
2706
1818
  }
2707
1819
 
2708
1820
  /* No line above the first item or below the last */
2709
- .ui-timeline--vertical
2710
- .ui-timeline-item:first-child
2711
- .ui-timeline-connector--before,
2712
- .ui-timeline--vertical
2713
- .ui-timeline-item:last-child
2714
- .ui-timeline-connector--after {
1821
+ .ui-timeline--vertical .ui-timeline-item:first-child .ui-timeline-connector--before,
1822
+ .ui-timeline--vertical .ui-timeline-item:last-child .ui-timeline-connector--after {
2715
1823
  visibility: hidden;
2716
1824
  }
2717
1825
 
2718
1826
  .ui-timeline--vertical .ui-timeline-main {
2719
- flex: 1;
1827
+ flex: 1;
2720
1828
  padding-bottom: 1.75rem;
2721
1829
  }
2722
1830
 
@@ -2726,96 +1834,90 @@ hr.ui-divider {
2726
1834
 
2727
1835
  /* ── Horizontal ── */
2728
1836
  .ui-timeline--horizontal {
2729
- display: flex;
1837
+ display: flex;
2730
1838
  align-items: flex-start;
2731
- overflow-x: auto;
1839
+ overflow-x: auto;
2732
1840
  }
2733
1841
 
2734
1842
  .ui-timeline--horizontal .ui-timeline-item {
2735
- flex: 1;
2736
- min-width: 0;
2737
- display: flex;
1843
+ flex: 1;
1844
+ min-width: 0;
1845
+ display: flex;
2738
1846
  flex-direction: column;
2739
- align-items: center;
1847
+ align-items: center;
2740
1848
  }
2741
1849
 
2742
1850
  .ui-timeline--horizontal .ui-timeline-side {
2743
- display: flex;
2744
- align-items: center;
2745
- width: 100%;
2746
- margin-bottom: 0.75rem;
1851
+ display: flex;
1852
+ align-items: center;
1853
+ width: 100%;
1854
+ margin-bottom: .75rem;
2747
1855
  }
2748
1856
 
2749
1857
  .ui-timeline--horizontal .ui-timeline-connector {
2750
- flex: 1;
2751
- height: 2px;
1858
+ flex: 1;
1859
+ height: 2px;
2752
1860
  background: var(--ui-border);
2753
1861
  }
2754
1862
 
2755
1863
  /* No line before the first item or after the last */
2756
- .ui-timeline--horizontal
2757
- .ui-timeline-item:first-child
2758
- .ui-timeline-connector--before,
2759
- .ui-timeline--horizontal
2760
- .ui-timeline-item:last-child
2761
- .ui-timeline-connector--after {
1864
+ .ui-timeline--horizontal .ui-timeline-item:first-child .ui-timeline-connector--before,
1865
+ .ui-timeline--horizontal .ui-timeline-item:last-child .ui-timeline-connector--after {
2762
1866
  visibility: hidden;
2763
1867
  }
2764
1868
 
2765
1869
  .ui-timeline--horizontal .ui-timeline-main {
2766
1870
  text-align: center;
2767
- padding: 0 0.5rem;
2768
- width: 100%;
1871
+ padding: 0 .5rem;
1872
+ width: 100%;
2769
1873
  }
2770
1874
 
2771
1875
  /* ─── Switch ─────────────────────────────────────────────────────────────── */
2772
1876
  .ui-switch-input {
2773
1877
  position: absolute;
2774
- width: 1px;
2775
- height: 1px;
2776
- padding: 0;
2777
- margin: -1px;
1878
+ width: 1px;
1879
+ height: 1px;
1880
+ padding: 0;
1881
+ margin: -1px;
2778
1882
  overflow: hidden;
2779
- clip: rect(0, 0, 0, 0);
2780
- border: 0;
1883
+ clip: rect(0,0,0,0);
1884
+ border: 0;
2781
1885
  }
2782
1886
 
2783
1887
  .ui-switch-label {
2784
- display: inline-flex;
1888
+ display: inline-flex;
2785
1889
  align-items: center;
2786
- gap: 0.65rem;
2787
- cursor: pointer;
1890
+ gap: .65rem;
1891
+ cursor: pointer;
2788
1892
  user-select: none;
2789
1893
  }
2790
1894
 
2791
1895
  .ui-switch-label--disabled {
2792
- opacity: 0.5;
2793
- cursor: not-allowed;
1896
+ opacity: .5;
1897
+ cursor: not-allowed;
2794
1898
  }
2795
1899
 
2796
1900
  .ui-switch-track {
2797
- position: relative;
2798
- display: inline-flex;
2799
- align-items: center;
2800
- width: 3rem;
2801
- height: 1.75rem;
2802
- border-radius: 999px;
2803
- background: var(--ui-border);
2804
- transition: background 0.2s;
2805
- flex-shrink: 0;
1901
+ position: relative;
1902
+ display: inline-flex;
1903
+ align-items: center;
1904
+ width: 3rem;
1905
+ height: 1.75rem;
1906
+ border-radius: 999px;
1907
+ background: var(--ui-border);
1908
+ transition: background .2s;
1909
+ flex-shrink: 0;
2806
1910
  }
2807
1911
 
2808
1912
  .ui-switch-thumb {
2809
- position: absolute;
2810
- left: 0.2rem;
2811
- width: 1.35rem;
2812
- height: 1.35rem;
1913
+ position: absolute;
1914
+ left: .2rem;
1915
+ width: 1.35rem;
1916
+ height: 1.35rem;
2813
1917
  border-radius: 50%;
2814
- background: #fff;
2815
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
2816
- transition:
2817
- transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1),
2818
- background 0.2s;
1918
+ background: #fff;
1919
+ box-shadow: 0 1px 3px rgba(0,0,0,.3);
1920
+ transition: transform .2s cubic-bezier(.34,1.56,.64,1), background .2s;
2819
1921
  }
2820
1922
 
2821
1923
  .ui-switch-input:checked + .ui-switch-track {
@@ -2827,102 +1929,98 @@ hr.ui-divider {
2827
1929
  }
2828
1930
 
2829
1931
  .ui-switch-input:focus-visible + .ui-switch-track {
2830
- outline: 2px solid var(--ui-accent);
1932
+ outline: 2px solid var(--ui-accent);
2831
1933
  outline-offset: 2px;
2832
1934
  }
2833
1935
 
2834
1936
  .ui-switch-text {
2835
1937
  font-family: var(--ui-font);
2836
- font-size: 0.9rem;
2837
- color: var(--ui-text);
1938
+ font-size: .9rem;
1939
+ color: var(--ui-text);
2838
1940
  line-height: 1.4;
2839
1941
  }
2840
1942
 
2841
1943
  /* ─── Radio ──────────────────────────────────────────────────────────────── */
2842
1944
  .ui-radio-group {
2843
- border: 1px solid var(--ui-border);
1945
+ border: 1px solid var(--ui-border);
2844
1946
  border-radius: var(--ui-radius);
2845
- padding: 0;
2846
- margin: 0;
1947
+ padding: 0;
1948
+ margin: 0;
2847
1949
  }
2848
1950
 
2849
1951
  .ui-radio-group-body {
2850
- display: flex;
1952
+ display: flex;
2851
1953
  flex-direction: column;
2852
- gap: var(--radio-gap, 0.75rem);
2853
- padding: 1.25rem;
1954
+ gap: var(--radio-gap, .75rem);
1955
+ padding: 1.25rem;
2854
1956
  }
2855
1957
 
2856
1958
  /* ─── Checkbox ───────────────────────────────────────────────────────────── */
2857
1959
  .ui-checkbox {
2858
- display: inline-flex;
1960
+ display: inline-flex;
2859
1961
  align-items: flex-start;
2860
- gap: 0.6rem;
2861
- cursor: pointer;
1962
+ gap: .6rem;
1963
+ cursor: pointer;
2862
1964
  user-select: none;
2863
1965
  }
2864
1966
 
2865
1967
  .ui-checkbox--disabled {
2866
- opacity: 0.5;
2867
- cursor: not-allowed;
1968
+ opacity: .5;
1969
+ cursor: not-allowed;
2868
1970
  }
2869
1971
 
2870
1972
  .ui-checkbox-input {
2871
1973
  position: absolute;
2872
- width: 1px;
2873
- height: 1px;
2874
- padding: 0;
2875
- margin: -1px;
1974
+ width: 1px;
1975
+ height: 1px;
1976
+ padding: 0;
1977
+ margin: -1px;
2876
1978
  overflow: hidden;
2877
- clip: rect(0, 0, 0, 0);
2878
- border: 0;
1979
+ clip: rect(0,0,0,0);
1980
+ border: 0;
2879
1981
  }
2880
1982
 
2881
1983
  .ui-checkbox-box {
2882
- position: relative;
2883
- display: inline-flex;
2884
- align-items: center;
1984
+ position: relative;
1985
+ display: inline-flex;
1986
+ align-items: center;
2885
1987
  justify-content: center;
2886
- width: 1.125rem;
2887
- height: 1.125rem;
2888
- border-radius: 0.25rem;
2889
- border: 2px solid var(--ui-border);
2890
- background: var(--ui-surface);
2891
- flex-shrink: 0;
2892
- margin-top: 0.125rem;
2893
- transition:
2894
- border-color 0.15s,
2895
- background 0.15s;
1988
+ width: 1.125rem;
1989
+ height: 1.125rem;
1990
+ border-radius: .25rem;
1991
+ border: 2px solid var(--ui-border);
1992
+ background: var(--ui-surface);
1993
+ flex-shrink: 0;
1994
+ margin-top: .125rem;
1995
+ transition: border-color .15s, background .15s;
2896
1996
  }
2897
1997
 
2898
1998
  .ui-checkbox-box::after {
2899
- content: "";
2900
- position: absolute;
2901
- width: 0.3rem;
2902
- height: 0.55rem;
2903
- border-right: 2px solid var(--ui-bg);
2904
- border-bottom: 2px solid var(--ui-bg);
2905
- transform: rotate(45deg) scale(0);
1999
+ content: '';
2000
+ position: absolute;
2001
+ width: .3rem;
2002
+ height: .55rem;
2003
+ border-right: 2px solid var(--ui-bg);
2004
+ border-bottom: 2px solid var(--ui-bg);
2005
+ transform: rotate(45deg) scale(0);
2906
2006
  transform-origin: center;
2907
- margin-top: -0.1rem;
2908
- opacity: 0;
2909
- transition:
2910
- opacity 0.1s,
2911
- transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
2007
+ margin-top: -.1rem;
2008
+ opacity: 0;
2009
+ transition: opacity .1s, transform .15s cubic-bezier(.34, 1.56, .64, 1);
2912
2010
  }
2913
2011
 
2914
2012
  .ui-checkbox-input:checked + .ui-checkbox-box {
2915
2013
  border-color: var(--ui-accent);
2916
- background: var(--ui-accent);
2014
+ background: var(--ui-accent);
2917
2015
  }
2918
2016
 
2919
2017
  .ui-checkbox-input:checked + .ui-checkbox-box::after {
2920
- opacity: 1;
2018
+ opacity: 1;
2921
2019
  transform: rotate(45deg) scale(1);
2922
2020
  }
2923
2021
 
2924
2022
  .ui-checkbox-input:focus-visible + .ui-checkbox-box {
2925
- outline: 2px solid var(--ui-accent);
2023
+ outline: 2px solid var(--ui-accent);
2926
2024
  outline-offset: 2px;
2927
2025
  }
2928
2026
 
@@ -2932,84 +2030,80 @@ hr.ui-divider {
2932
2030
 
2933
2031
  .ui-checkbox-label {
2934
2032
  font-family: var(--ui-font);
2935
- font-size: 0.9rem;
2936
- color: var(--ui-text);
2033
+ font-size: .9rem;
2034
+ color: var(--ui-text);
2937
2035
  line-height: 1.4;
2938
2036
  }
2939
2037
 
2940
2038
  /* ─── Radio ──────────────────────────────────────────────────────────────── */
2941
2039
  .ui-radio {
2942
- display: inline-flex;
2040
+ display: inline-flex;
2943
2041
  align-items: center;
2944
- gap: 0.6rem;
2945
- cursor: pointer;
2042
+ gap: .6rem;
2043
+ cursor: pointer;
2946
2044
  user-select: none;
2947
2045
  }
2948
2046
 
2949
2047
  .ui-radio--disabled {
2950
- opacity: 0.5;
2951
- cursor: not-allowed;
2048
+ opacity: .5;
2049
+ cursor: not-allowed;
2952
2050
  }
2953
2051
 
2954
2052
  .ui-radio-input {
2955
2053
  position: absolute;
2956
- width: 1px;
2957
- height: 1px;
2958
- padding: 0;
2959
- margin: -1px;
2054
+ width: 1px;
2055
+ height: 1px;
2056
+ padding: 0;
2057
+ margin: -1px;
2960
2058
  overflow: hidden;
2961
- clip: rect(0, 0, 0, 0);
2962
- border: 0;
2059
+ clip: rect(0,0,0,0);
2060
+ border: 0;
2963
2061
  }
2964
2062
 
2965
2063
  .ui-radio-dot {
2966
- position: relative;
2967
- display: inline-flex;
2968
- align-items: center;
2064
+ position: relative;
2065
+ display: inline-flex;
2066
+ align-items: center;
2969
2067
  justify-content: center;
2970
- width: 1.25rem;
2971
- height: 1.25rem;
2068
+ width: 1.25rem;
2069
+ height: 1.25rem;
2972
2070
  border-radius: 50%;
2973
- border: 2px solid var(--ui-border);
2974
- background: var(--ui-surface);
2975
- flex-shrink: 0;
2976
- transition:
2977
- border-color 0.15s,
2978
- background 0.15s;
2071
+ border: 2px solid var(--ui-border);
2072
+ background: var(--ui-surface);
2073
+ flex-shrink: 0;
2074
+ transition: border-color .15s, background .15s;
2979
2075
  }
2980
2076
 
2981
2077
  .ui-radio-dot::after {
2982
- content: "";
2983
- width: 0.5rem;
2984
- height: 0.5rem;
2078
+ content: '';
2079
+ width: .5rem;
2080
+ height: .5rem;
2985
2081
  border-radius: 50%;
2986
- background: var(--ui-bg);
2987
- opacity: 0;
2988
- transform: scale(0);
2989
- transition:
2990
- opacity 0.15s,
2991
- transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
2082
+ background: var(--ui-bg);
2083
+ opacity: 0;
2084
+ transform: scale(0);
2085
+ transition: opacity .15s, transform .2s cubic-bezier(.34,1.56,.64,1);
2992
2086
  }
2993
2087
 
2994
2088
  .ui-radio-input:checked + .ui-radio-dot {
2995
2089
  border-color: var(--ui-accent);
2996
- background: var(--ui-accent);
2090
+ background: var(--ui-accent);
2997
2091
  }
2998
2092
 
2999
2093
  .ui-radio-input:checked + .ui-radio-dot::after {
3000
- opacity: 1;
2094
+ opacity: 1;
3001
2095
  transform: scale(1);
3002
2096
  }
3003
2097
 
3004
2098
  .ui-radio-input:focus-visible + .ui-radio-dot {
3005
- outline: 2px solid var(--ui-accent);
2099
+ outline: 2px solid var(--ui-accent);
3006
2100
  outline-offset: 2px;
3007
2101
  }
3008
2102
 
3009
2103
  .ui-radio-label {
3010
2104
  font-family: var(--ui-font);
3011
- font-size: 0.9rem;
3012
- color: var(--ui-text);
2105
+ font-size: .9rem;
2106
+ color: var(--ui-text);
3013
2107
  line-height: 1.4;
3014
2108
  }
3015
2109
 
@@ -3019,46 +2113,44 @@ hr.ui-divider {
3019
2113
 
3020
2114
  /* ─── Rating ─────────────────────────────────────────────────────────────── */
3021
2115
  .ui-rating {
3022
- display: inline-flex;
2116
+ display: inline-flex;
3023
2117
  align-items: center;
3024
- gap: 0.1em;
3025
- font-size: var(--rating-size, 1.5rem);
3026
- color: var(--ui-muted);
2118
+ gap: .1em;
2119
+ font-size: var(--rating-size, 1.5rem);
2120
+ color: var(--ui-muted);
3027
2121
  line-height: 1;
3028
2122
  }
3029
2123
 
3030
2124
  /* Read-only stars */
3031
2125
  .ui-rating-star--filled,
3032
- .ui-rating-star--half {
3033
- color: var(--ui-yellow);
3034
- }
2126
+ .ui-rating-star--half { color: var(--ui-yellow); }
3035
2127
 
3036
2128
  /* Interactive stars container — row-reverse makes high→low DOM order appear as 1…max */
3037
2129
  .ui-rating-stars {
3038
- display: inline-flex;
2130
+ display: inline-flex;
3039
2131
  flex-direction: row-reverse;
3040
- gap: 0.1em;
3041
- font-size: var(--rating-size, 1.5rem);
3042
- line-height: 1;
2132
+ gap: .1em;
2133
+ font-size: var(--rating-size, 1.5rem);
2134
+ line-height: 1;
3043
2135
  }
3044
2136
 
3045
2137
  /* Each input is nested inside its label — hidden but in the tab order */
3046
2138
  .ui-rating-input {
3047
2139
  position: absolute;
3048
- width: 1px;
3049
- height: 1px;
3050
- padding: 0;
3051
- margin: -1px;
2140
+ width: 1px;
2141
+ height: 1px;
2142
+ padding: 0;
2143
+ margin: -1px;
3052
2144
  overflow: hidden;
3053
- clip: rect(0, 0, 0, 0);
3054
- border: 0;
2145
+ clip: rect(0,0,0,0);
2146
+ border: 0;
3055
2147
  }
3056
2148
 
3057
2149
  /* Star labels — only flex items, no invisible elements between them */
3058
2150
  .ui-rating-stars .ui-rating-star {
3059
- color: var(--ui-muted);
3060
- cursor: pointer;
3061
- transition: color 0.1s;
2151
+ color: var(--ui-muted);
2152
+ cursor: pointer;
2153
+ transition: color .1s;
3062
2154
  user-select: none;
3063
2155
  }
3064
2156
 
@@ -3070,122 +2162,95 @@ hr.ui-divider {
3070
2162
  }
3071
2163
 
3072
2164
  /* Hover: reset everything, then re-highlight up to the hovered star */
3073
- .ui-rating-stars:hover .ui-rating-star {
3074
- color: var(--ui-muted);
3075
- }
2165
+ .ui-rating-stars:hover .ui-rating-star { color: var(--ui-muted); }
3076
2166
  .ui-rating-stars .ui-rating-star:hover,
3077
- .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star {
3078
- color: var(--ui-yellow);
3079
- }
2167
+ .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star { color: var(--ui-yellow); }
3080
2168
 
3081
2169
  /* Focus ring on the label when its input is keyboard-focused */
3082
2170
  .ui-rating-star:focus-within {
3083
- outline: 2px solid var(--ui-accent);
2171
+ outline: 2px solid var(--ui-accent);
3084
2172
  outline-offset: 2px;
3085
- border-radius: 2px;
2173
+ border-radius: 2px;
3086
2174
  }
3087
2175
 
3088
2176
  /* Disabled */
3089
2177
  fieldset[disabled] .ui-rating-star {
3090
- cursor: not-allowed;
3091
- opacity: 0.5;
3092
- }
3093
- fieldset[disabled] .ui-rating-stars:hover .ui-rating-star {
3094
- color: revert;
2178
+ cursor: not-allowed;
2179
+ opacity: .5;
3095
2180
  }
2181
+ fieldset[disabled] .ui-rating-stars:hover .ui-rating-star { color: revert; }
3096
2182
  fieldset[disabled] .ui-rating-stars .ui-rating-star:hover,
3097
- fieldset[disabled] .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star {
3098
- color: revert;
3099
- }
2183
+ fieldset[disabled] .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star { color: revert; }
3100
2184
 
3101
2185
  /* ─── Spinner ────────────────────────────────────────────────────────────── */
3102
2186
  @keyframes ui-spin {
3103
- to {
3104
- transform: rotate(360deg);
3105
- }
2187
+ to { transform: rotate(360deg); }
3106
2188
  }
3107
2189
 
3108
2190
  .ui-spinner {
3109
- display: inline-block;
3110
- width: var(--spinner-size, 1.5rem);
3111
- height: var(--spinner-size, 1.5rem);
3112
- border: 2px solid
3113
- color-mix(in srgb, var(--spinner-color, var(--ui-accent)) 20%, transparent);
2191
+ display: inline-block;
2192
+ width: var(--spinner-size, 1.5rem);
2193
+ height: var(--spinner-size, 1.5rem);
2194
+ border: 2px solid color-mix(in srgb, var(--spinner-color, var(--ui-accent)) 20%, transparent);
3114
2195
  border-top-color: var(--spinner-color, var(--ui-accent));
3115
2196
  border-radius: 50%;
3116
- animation: ui-spin 0.7s linear infinite;
3117
- flex-shrink: 0;
2197
+ animation: ui-spin .7s linear infinite;
2198
+ flex-shrink: 0;
3118
2199
  }
3119
2200
 
3120
2201
  /* ─── Progress ───────────────────────────────────────────────────────────── */
3121
- .ui-progress {
3122
- width: 100%;
3123
- }
2202
+ .ui-progress { width: 100%; }
3124
2203
 
3125
2204
  .ui-progress-header {
3126
- display: flex;
2205
+ display: flex;
3127
2206
  justify-content: space-between;
3128
- align-items: baseline;
3129
- margin-bottom: 0.4rem;
3130
- gap: 1rem;
2207
+ align-items: baseline;
2208
+ margin-bottom: .4rem;
2209
+ gap: 1rem;
3131
2210
  }
3132
2211
 
3133
2212
  .ui-progress-label {
3134
- font-size: 0.8rem;
2213
+ font-size: .8rem;
3135
2214
  font-weight: 600;
3136
- color: var(--ui-text);
2215
+ color: var(--ui-text);
3137
2216
  }
3138
2217
 
3139
2218
  .ui-progress-value {
3140
- font-size: 0.8rem;
3141
- color: var(--ui-muted);
2219
+ font-size: .8rem;
2220
+ color: var(--ui-muted);
3142
2221
  font-variant-numeric: tabular-nums;
3143
2222
  }
3144
2223
 
3145
2224
  .ui-progress-track {
3146
- width: 100%;
3147
- height: var(--progress-height, 0.5rem);
3148
- background: var(--ui-border);
2225
+ width: 100%;
2226
+ height: var(--progress-height, .5rem);
2227
+ background: var(--ui-border);
3149
2228
  border-radius: 999px;
3150
- overflow: hidden;
2229
+ overflow: hidden;
3151
2230
  }
3152
2231
 
3153
2232
  .ui-progress-fill {
3154
- height: 100%;
2233
+ height: 100%;
3155
2234
  border-radius: 999px;
3156
- transition: width 0.3s ease;
2235
+ transition: width .3s ease;
3157
2236
  }
3158
2237
 
3159
2238
  /* Variants */
3160
- .ui-progress--accent .ui-progress-fill {
3161
- background: var(--ui-accent);
3162
- }
3163
- .ui-progress--success .ui-progress-fill {
3164
- background: var(--ui-green);
3165
- }
3166
- .ui-progress--warning .ui-progress-fill {
3167
- background: var(--ui-yellow);
3168
- }
3169
- .ui-progress--error .ui-progress-fill {
3170
- background: var(--ui-red);
3171
- }
2239
+ .ui-progress--accent .ui-progress-fill { background: var(--ui-accent); }
2240
+ .ui-progress--success .ui-progress-fill { background: var(--ui-green); }
2241
+ .ui-progress--warning .ui-progress-fill { background: var(--ui-yellow); }
2242
+ .ui-progress--error .ui-progress-fill { background: var(--ui-red); }
3172
2243
 
3173
2244
  /* Indeterminate — animates a fill bar back and forth */
3174
2245
  @keyframes ui-progress-indeterminate {
3175
- 0% {
3176
- transform: translateX(-100%) scaleX(0.4);
3177
- }
3178
- 50% {
3179
- transform: translateX(60%) scaleX(0.6);
3180
- }
3181
- 100% {
3182
- transform: translateX(200%) scaleX(0.4);
3183
- }
2246
+ 0% { transform: translateX(-100%) scaleX(.4); }
2247
+ 50% { transform: translateX( 60%) scaleX(.6); }
2248
+ 100% { transform: translateX( 200%) scaleX(.4); }
3184
2249
  }
3185
2250
 
3186
2251
  .ui-progress--indeterminate .ui-progress-fill {
3187
- width: 50%;
3188
- animation: ui-progress-indeterminate 1.4s ease infinite;
2252
+ width: 50%;
2253
+ animation: ui-progress-indeterminate 1.4s ease infinite;
3189
2254
  transform-origin: left center;
3190
2255
  }
3191
2256
 
@@ -3226,8 +2291,8 @@ fieldset[disabled] .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star {
3226
2291
  border-radius: 50%;
3227
2292
  background: var(--ui-accent);
3228
2293
  margin-top: -8px;
3229
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
3230
- transition: transform 0.15s;
2294
+ box-shadow: 0 1px 4px rgba(0,0,0,.3);
2295
+ transition: transform .15s;
3231
2296
  }
3232
2297
  .ui-slider::-moz-range-thumb {
3233
2298
  width: 20px;
@@ -3235,110 +2300,89 @@ fieldset[disabled] .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star {
3235
2300
  border-radius: 50%;
3236
2301
  background: var(--ui-accent);
3237
2302
  border: none;
3238
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
3239
- }
3240
- .ui-slider::-webkit-slider-thumb:hover {
3241
- transform: scale(1.15);
3242
- }
3243
- .ui-slider:focus-visible {
3244
- outline: none;
2303
+ box-shadow: 0 1px 4px rgba(0,0,0,.3);
3245
2304
  }
2305
+ .ui-slider::-webkit-slider-thumb:hover { transform: scale(1.15); }
2306
+ .ui-slider:focus-visible { outline: none; }
3246
2307
  .ui-slider:focus-visible::-webkit-slider-thumb {
3247
2308
  outline: 2px solid var(--ui-accent);
3248
2309
  outline-offset: 3px;
3249
2310
  }
3250
- .ui-slider:disabled {
3251
- opacity: 0.5;
3252
- cursor: not-allowed;
3253
- }
2311
+ .ui-slider:disabled { opacity: .5; cursor: not-allowed; }
3254
2312
 
3255
2313
  .ui-label--row {
3256
- display: flex;
2314
+ display: flex;
3257
2315
  justify-content: space-between;
3258
- align-items: baseline;
2316
+ align-items: baseline;
3259
2317
  }
3260
2318
  .ui-slider-output {
3261
- font-size: 0.8125rem;
3262
- color: var(--ui-muted);
2319
+ font-size: .8125rem;
2320
+ color: var(--ui-muted);
3263
2321
  font-variant-numeric: tabular-nums;
3264
- min-width: 3ch;
3265
- text-align: right;
2322
+ min-width: 3ch;
2323
+ text-align: right;
3266
2324
  }
3267
2325
 
3268
2326
  /* ─── File Upload ────────────────────────────────────────────────────────── */
3269
2327
 
3270
2328
  .ui-upload {
3271
- position: relative;
3272
- display: flex;
3273
- align-items: center;
2329
+ position: relative;
2330
+ display: flex;
2331
+ align-items: center;
3274
2332
  justify-content: center;
3275
- padding: 2rem 1.5rem;
3276
- background: var(--ui-surface);
3277
- border: 1.5px dashed var(--ui-border);
3278
- border-radius: var(--ui-radius);
3279
- cursor: pointer;
3280
- transition:
3281
- border-color 0.15s,
3282
- background 0.15s;
3283
- outline: none;
3284
- user-select: none;
2333
+ padding: 2rem 1.5rem;
2334
+ background: var(--ui-surface);
2335
+ border: 1.5px dashed var(--ui-border);
2336
+ border-radius: var(--ui-radius);
2337
+ cursor: pointer;
2338
+ transition: border-color .15s, background .15s;
2339
+ outline: none;
2340
+ user-select: none;
3285
2341
  }
3286
2342
 
3287
2343
  .ui-upload:hover:not(.ui-upload--disabled),
3288
2344
  .ui-upload:focus-visible {
3289
2345
  border-color: var(--ui-accent);
3290
- background: color-mix(in srgb, var(--ui-accent) 5%, var(--ui-surface));
2346
+ background: color-mix(in srgb, var(--ui-accent) 5%, var(--ui-surface));
3291
2347
  }
3292
2348
 
3293
2349
  .ui-upload--active {
3294
2350
  border-color: var(--ui-accent);
3295
- background: color-mix(in srgb, var(--ui-accent) 8%, var(--ui-surface));
2351
+ background: color-mix(in srgb, var(--ui-accent) 8%, var(--ui-surface));
3296
2352
  }
3297
2353
 
3298
- .ui-upload--error {
3299
- border-color: var(--ui-red);
3300
- }
3301
- .ui-upload--selected {
3302
- border-color: var(--ui-accent);
3303
- }
3304
- .ui-upload--selected .ui-upload-text {
3305
- color: var(--ui-text);
3306
- font-weight: 500;
3307
- }
2354
+ .ui-upload--error { border-color: var(--ui-red); }
2355
+ .ui-upload--selected { border-color: var(--ui-accent); }
2356
+ .ui-upload--selected .ui-upload-text { color: var(--ui-text); font-weight: 500; }
3308
2357
 
3309
2358
  .ui-upload--disabled {
3310
- opacity: 0.5;
3311
- cursor: not-allowed;
2359
+ opacity: .5;
2360
+ cursor: not-allowed;
3312
2361
  }
3313
2362
 
3314
2363
  .ui-upload-body {
3315
- display: flex;
3316
- flex-direction: column;
3317
- align-items: center;
3318
- gap: 0.6rem;
3319
- pointer-events: none;
2364
+ display: flex;
2365
+ flex-direction: column;
2366
+ align-items: center;
2367
+ gap: .6rem;
2368
+ pointer-events: none;
3320
2369
  }
3321
2370
 
3322
- .ui-upload-icon {
3323
- color: var(--ui-muted);
3324
- display: block;
3325
- }
2371
+ .ui-upload-icon { color: var(--ui-muted); display: block; }
3326
2372
 
3327
2373
  .ui-upload:hover:not(.ui-upload--disabled) .ui-upload-icon,
3328
- .ui-upload--active .ui-upload-icon {
3329
- color: var(--ui-accent);
3330
- }
2374
+ .ui-upload--active .ui-upload-icon { color: var(--ui-accent); }
3331
2375
 
3332
2376
  .ui-upload-text {
3333
- font-size: 0.875rem;
3334
- color: var(--ui-muted);
3335
- text-align: center;
2377
+ font-size: .875rem;
2378
+ color: var(--ui-muted);
2379
+ text-align: center;
3336
2380
  line-height: 1.5;
3337
2381
  }
3338
2382
 
3339
2383
  .ui-upload-browse {
3340
- color: var(--ui-accent);
3341
- text-decoration: underline;
2384
+ color: var(--ui-accent);
2385
+ text-decoration: underline;
3342
2386
  text-underline-offset: 2px;
3343
2387
  }
3344
2388
 
@@ -3348,260 +2392,207 @@ fieldset[disabled] .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star {
3348
2392
 
3349
2393
  /* ─── Segmented ─────────────────────────────────────────────────────────── */
3350
2394
  .ui-segmented {
3351
- display: inline-flex;
3352
- background: var(--ui-surface-2);
2395
+ display: inline-flex;
2396
+ background: var(--ui-surface-2);
3353
2397
  border-radius: var(--ui-radius);
3354
- padding: 3px;
3355
- gap: 2px;
2398
+ padding: 3px;
2399
+ gap: 2px;
3356
2400
  }
3357
2401
  .ui-segmented-input {
3358
2402
  position: absolute;
3359
- width: 1px;
3360
- height: 1px;
3361
- padding: 0;
3362
- margin: -1px;
3363
- overflow: hidden;
3364
- clip: rect(0, 0, 0, 0);
3365
- border: 0;
2403
+ width: 1px; height: 1px;
2404
+ padding: 0; margin: -1px;
2405
+ overflow: hidden; clip: rect(0,0,0,0); border: 0;
3366
2406
  }
3367
2407
  .ui-segmented-label {
3368
- display: inline-flex;
3369
- align-items: center;
3370
- padding: 0.4rem 0.9rem;
2408
+ display: inline-flex;
2409
+ align-items: center;
2410
+ padding: .4rem .9rem;
3371
2411
  border-radius: calc(var(--ui-radius) - 2px);
3372
- font-size: 0.85rem;
3373
- font-weight: 500;
3374
- color: var(--ui-muted);
3375
- cursor: pointer;
3376
- user-select: none;
3377
- white-space: nowrap;
3378
- transition:
3379
- background 0.15s,
3380
- color 0.15s,
3381
- box-shadow 0.15s;
3382
- }
3383
- .ui-segmented--sm .ui-segmented-label {
3384
- font-size: 0.75rem;
3385
- padding: 0.25rem 0.65rem;
3386
- }
3387
- .ui-segmented--lg .ui-segmented-label {
3388
- font-size: 0.95rem;
3389
- padding: 0.55rem 1.1rem;
3390
- }
2412
+ font-size: .85rem;
2413
+ font-weight: 500;
2414
+ color: var(--ui-muted);
2415
+ cursor: pointer;
2416
+ user-select: none;
2417
+ white-space: nowrap;
2418
+ transition: background .15s, color .15s, box-shadow .15s;
2419
+ }
2420
+ .ui-segmented--sm .ui-segmented-label { font-size: .75rem; padding: .25rem .65rem; }
2421
+ .ui-segmented--lg .ui-segmented-label { font-size: .95rem; padding: .55rem 1.1rem; }
3391
2422
  .ui-segmented-input:checked + .ui-segmented-label {
3392
- background: var(--ui-surface);
3393
- color: var(--ui-text);
3394
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
2423
+ background: var(--ui-surface);
2424
+ color: var(--ui-text);
2425
+ box-shadow: 0 1px 3px rgba(0,0,0,.25);
3395
2426
  }
3396
2427
  .ui-segmented-input:focus-visible + .ui-segmented-label {
3397
- outline: 2px solid var(--ui-accent);
2428
+ outline: 2px solid var(--ui-accent);
3398
2429
  outline-offset: 1px;
3399
2430
  }
3400
2431
 
3401
2432
  /* ─── Breadcrumbs ────────────────────────────────────────────────────────── */
3402
2433
  .ui-breadcrumbs-list {
3403
- display: flex;
3404
- flex-wrap: wrap;
2434
+ display: flex;
2435
+ flex-wrap: wrap;
3405
2436
  align-items: center;
3406
- gap: 0.25rem;
3407
- list-style: none;
3408
- padding: 0;
3409
- margin: 0;
3410
- font-size: 0.85rem;
2437
+ gap: .25rem;
2438
+ list-style: none;
2439
+ padding: 0;
2440
+ margin: 0;
2441
+ font-size: .85rem;
3411
2442
  }
3412
2443
  .ui-breadcrumbs-item {
3413
- display: flex;
2444
+ display: flex;
3414
2445
  align-items: center;
3415
- gap: 0.25rem;
2446
+ gap: .25rem;
3416
2447
  }
3417
2448
  .ui-breadcrumbs-link {
3418
- color: var(--ui-muted);
2449
+ color: var(--ui-muted);
3419
2450
  text-decoration: none;
3420
- transition: color 0.15s;
3421
- }
3422
- .ui-breadcrumbs-link:hover {
3423
- color: var(--ui-text);
3424
- }
3425
- .ui-breadcrumbs-current {
3426
- color: var(--ui-text);
3427
- }
3428
- .ui-breadcrumbs-sep {
3429
- color: var(--ui-border);
3430
- user-select: none;
2451
+ transition: color .15s;
3431
2452
  }
2453
+ .ui-breadcrumbs-link:hover { color: var(--ui-text); }
2454
+ .ui-breadcrumbs-current { color: var(--ui-text); }
2455
+ .ui-breadcrumbs-sep { color: var(--ui-border); user-select: none; }
3432
2456
 
3433
2457
  /* ─── Stepper ────────────────────────────────────────────────────────────── */
3434
2458
  .ui-stepper {
3435
- display: flex;
2459
+ display: flex;
3436
2460
  align-items: flex-start;
3437
- width: 100%;
2461
+ width: 100%;
3438
2462
  }
3439
2463
  .ui-stepper-item {
3440
- flex: 1;
3441
- display: flex;
3442
- flex-direction: column;
3443
- align-items: center;
3444
- position: relative;
2464
+ flex: 1;
2465
+ display: flex;
2466
+ flex-direction: column;
2467
+ align-items: center;
2468
+ position: relative;
3445
2469
  }
3446
2470
  .ui-stepper-item:not(:last-child)::after {
3447
- content: "";
2471
+ content: '';
3448
2472
  position: absolute;
3449
- top: 13px;
3450
- left: 50%;
3451
- width: 100%;
3452
- height: 2px;
2473
+ top: 13px;
2474
+ left: 50%;
2475
+ width: 100%;
2476
+ height: 2px;
3453
2477
  background: var(--ui-border);
3454
2478
  }
3455
- .ui-stepper-item--complete:not(:last-child)::after {
3456
- background: var(--ui-accent);
3457
- }
2479
+ .ui-stepper-item--complete:not(:last-child)::after { background: var(--ui-accent); }
3458
2480
  .ui-stepper-dot {
3459
- position: relative;
3460
- z-index: 1;
3461
- width: 28px;
3462
- height: 28px;
3463
- border-radius: 50%;
3464
- display: flex;
3465
- align-items: center;
2481
+ position: relative;
2482
+ z-index: 1;
2483
+ width: 28px;
2484
+ height: 28px;
2485
+ border-radius: 50%;
2486
+ display: flex;
2487
+ align-items: center;
3466
2488
  justify-content: center;
3467
- font-size: 0.75rem;
3468
- font-weight: 700;
3469
- background: var(--ui-surface-2);
3470
- border: 2px solid var(--ui-border);
3471
- color: var(--ui-muted);
3472
- transition:
3473
- background 0.2s,
3474
- border-color 0.2s,
3475
- color 0.2s;
2489
+ font-size: .75rem;
2490
+ font-weight: 700;
2491
+ background: var(--ui-surface-2);
2492
+ border: 2px solid var(--ui-border);
2493
+ color: var(--ui-muted);
2494
+ transition: background .2s, border-color .2s, color .2s;
3476
2495
  }
3477
2496
  .ui-stepper-item--complete .ui-stepper-dot {
3478
- background: var(--ui-accent);
2497
+ background: var(--ui-accent);
3479
2498
  border-color: var(--ui-accent);
3480
- color: var(--ui-bg);
2499
+ color: var(--ui-bg);
3481
2500
  }
3482
2501
  .ui-stepper-item--active .ui-stepper-dot {
3483
2502
  border-color: var(--ui-accent);
3484
- color: var(--ui-accent);
2503
+ color: var(--ui-accent);
3485
2504
  }
3486
2505
  .ui-stepper-label {
3487
- margin-top: 0.5rem;
3488
- font-size: 0.72rem;
3489
- color: var(--ui-muted);
2506
+ margin-top: .5rem;
2507
+ font-size: .72rem;
2508
+ color: var(--ui-muted);
3490
2509
  text-align: center;
3491
2510
  line-height: 1.3;
3492
- padding: 0 0.25rem;
3493
- }
3494
- .ui-stepper-item--active .ui-stepper-label {
3495
- color: var(--ui-text);
3496
- font-weight: 600;
3497
- }
3498
- .ui-stepper-item--complete .ui-stepper-label {
3499
- color: var(--ui-muted);
2511
+ padding: 0 .25rem;
3500
2512
  }
2513
+ .ui-stepper-item--active .ui-stepper-label { color: var(--ui-text); font-weight: 600; }
2514
+ .ui-stepper-item--complete .ui-stepper-label { color: var(--ui-muted); }
3501
2515
 
3502
2516
  /* ─── Image ──────────────────────────────────────────────────────────────── */
3503
2517
  .ui-image {
3504
2518
  display: block;
3505
2519
  }
3506
2520
  .ui-image-crop {
3507
- overflow: hidden;
2521
+ overflow: hidden;
3508
2522
  border-radius: var(--ui-radius);
3509
2523
  }
3510
2524
  .ui-image-wrap {
3511
- display: block;
3512
- overflow: hidden;
2525
+ display: block;
2526
+ overflow: hidden;
3513
2527
  border-radius: var(--ui-radius);
3514
2528
  }
3515
2529
  .ui-image-img--cover {
3516
- display: block;
3517
- width: 100%;
3518
- height: auto;
2530
+ display: block;
2531
+ width: 100%;
2532
+ height: auto;
3519
2533
  object-fit: cover;
3520
2534
  }
3521
2535
  .ui-image-img {
3522
- display: block;
2536
+ display: block;
3523
2537
  max-width: 100%;
3524
- height: auto;
3525
- }
3526
- .ui-image--rounded .ui-image-crop {
3527
- border-radius: var(--ui-radius-lg, 1rem);
3528
- }
3529
- .ui-image--rounded .ui-image-wrap {
3530
- border-radius: var(--ui-radius-lg, 1rem);
3531
- }
3532
- .ui-image--pill .ui-image-crop {
3533
- border-radius: 999px;
3534
- }
3535
- .ui-image--pill .ui-image-wrap {
3536
- border-radius: 999px;
2538
+ height: auto;
3537
2539
  }
2540
+ .ui-image--rounded .ui-image-crop { border-radius: var(--ui-radius-lg, 1rem); }
2541
+ .ui-image--rounded .ui-image-wrap { border-radius: var(--ui-radius-lg, 1rem); }
2542
+ .ui-image--pill .ui-image-crop { border-radius: 999px; }
2543
+ .ui-image--pill .ui-image-wrap { border-radius: 999px; }
3538
2544
  .ui-image-caption {
3539
- margin: 0.5rem 0 0;
3540
- font-size: 0.8rem;
3541
- color: var(--ui-muted);
2545
+ margin: .5rem 0 0;
2546
+ font-size: .8rem;
2547
+ color: var(--ui-muted);
3542
2548
  line-height: 1.5;
3543
2549
  }
3544
2550
 
3545
2551
  /* ─── Pullquote ──────────────────────────────────────────────────────────── */
3546
2552
  .ui-pullquote {
3547
2553
  border-left: 3px solid var(--ui-accent);
3548
- padding: 0.75rem 0 0.75rem 1.5rem;
3549
- margin: 0;
3550
- }
3551
- .ui-pullquote blockquote {
3552
- margin: 0;
3553
- padding: 0;
2554
+ padding: .75rem 0 .75rem 1.5rem;
2555
+ margin: 0;
3554
2556
  }
2557
+ .ui-pullquote blockquote { margin: 0; padding: 0; }
3555
2558
  .ui-pullquote-text {
3556
- font-size: 1.15rem;
2559
+ font-size: 1.15rem;
3557
2560
  line-height: 1.6;
3558
- color: var(--ui-text);
3559
- font-style: italic;
3560
- margin: 0;
3561
- }
3562
- .ui-pullquote--lg .ui-pullquote-text {
3563
- font-size: 1.5rem;
2561
+ color: var(--ui-text);
2562
+ font-style: italic;
2563
+ margin: 0;
3564
2564
  }
2565
+ .ui-pullquote--lg .ui-pullquote-text { font-size: 1.5rem; }
3565
2566
  .ui-pullquote-cite {
3566
- display: block;
3567
- margin-top: 0.75rem;
3568
- font-size: 0.85rem;
3569
- color: var(--ui-muted);
2567
+ display: block;
2568
+ margin-top: .75rem;
2569
+ font-size: .85rem;
2570
+ color: var(--ui-muted);
3570
2571
  font-style: normal;
3571
2572
  }
3572
2573
 
3573
2574
  /* ─── List ───────────────────────────────────────────────────────────────────
3574
2575
  Styled list component. Use instead of raw <ul>/<ol>. */
3575
2576
  .ui-list {
3576
- display: flex;
2577
+ display: flex;
3577
2578
  flex-direction: column;
3578
- padding-left: 1.5em;
3579
- color: var(--ui-text);
3580
- }
3581
- .ui-list--unordered {
3582
- list-style-type: disc;
3583
- }
3584
- .ui-list--ordered {
3585
- list-style-type: decimal;
3586
- }
3587
- .ui-list-item {
3588
- line-height: 1.6;
2579
+ padding-left: 1.5em;
2580
+ color: var(--ui-text);
3589
2581
  }
2582
+ .ui-list--unordered { list-style-type: disc; }
2583
+ .ui-list--ordered { list-style-type: decimal; }
2584
+ .ui-list-item { line-height: 1.6; }
3590
2585
 
3591
2586
  /* ─── Prose ──────────────────────────────────────────────────────────────────
3592
2587
  Typography wrapper for rich text: CMS output, markdown-rendered HTML,
3593
2588
  blog/article bodies. Styles all descendant elements without class names. */
3594
2589
  .ui-prose {
3595
- color: var(--ui-text);
2590
+ color: var(--ui-text);
3596
2591
  line-height: 1.75;
3597
- font-size: 1rem;
3598
- }
3599
- .ui-prose--sm {
3600
- font-size: 0.875rem;
3601
- }
3602
- .ui-prose--lg {
3603
- font-size: 1.125rem;
2592
+ font-size: 1rem;
3604
2593
  }
2594
+ .ui-prose--sm { font-size: .875rem; }
2595
+ .ui-prose--lg { font-size: 1.125rem; }
3605
2596
 
3606
2597
  .ui-prose h1,
3607
2598
  .ui-prose h2,
@@ -3609,161 +2600,117 @@ fieldset[disabled] .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star {
3609
2600
  .ui-prose h4,
3610
2601
  .ui-prose h5,
3611
2602
  .ui-prose h6 {
3612
- color: var(--ui-text);
3613
- font-weight: 700;
3614
- line-height: 1.3;
3615
- margin-top: 2em;
3616
- margin-bottom: 0.6em;
3617
- }
3618
- .ui-prose h1 {
3619
- font-size: 2rem;
3620
- }
3621
- .ui-prose h2 {
3622
- font-size: 1.5rem;
3623
- }
3624
- .ui-prose h3 {
3625
- font-size: 1.25rem;
3626
- font-weight: 600;
3627
- }
3628
- .ui-prose h4 {
3629
- font-size: 1rem;
3630
- font-weight: 600;
3631
- }
3632
- .ui-prose h5 {
3633
- font-size: 0.875rem;
3634
- font-weight: 600;
3635
- }
3636
- .ui-prose h6 {
3637
- font-size: 0.875rem;
3638
- font-weight: 600;
3639
- color: var(--ui-muted);
2603
+ color: var(--ui-text);
2604
+ font-weight: 700;
2605
+ line-height: 1.3;
2606
+ margin-top: 2em;
2607
+ margin-bottom: .6em;
3640
2608
  }
2609
+ .ui-prose h1 { font-size: 2rem; }
2610
+ .ui-prose h2 { font-size: 1.5rem; }
2611
+ .ui-prose h3 { font-size: 1.25rem; font-weight: 600; }
2612
+ .ui-prose h4 { font-size: 1rem; font-weight: 600; }
2613
+ .ui-prose h5 { font-size: .875rem; font-weight: 600; }
2614
+ .ui-prose h6 { font-size: .875rem; font-weight: 600; color: var(--ui-muted); }
3641
2615
 
3642
- .ui-prose :is(h1, h2, h3, h4, h5, h6):first-child {
3643
- margin-top: 0;
3644
- }
2616
+ .ui-prose :is(h1, h2, h3, h4, h5, h6):first-child { margin-top: 0; }
3645
2617
 
3646
- .ui-prose p {
3647
- margin-bottom: 1.25em;
3648
- }
3649
- .ui-prose p:last-child {
3650
- margin-bottom: 0;
3651
- }
2618
+ .ui-prose p { margin-bottom: 1.25em; }
2619
+ .ui-prose p:last-child { margin-bottom: 0; }
3652
2620
 
3653
2621
  .ui-prose a {
3654
- color: var(--ui-accent);
2622
+ color: var(--ui-accent);
3655
2623
  text-decoration: underline;
3656
2624
  text-underline-offset: 2px;
3657
2625
  }
3658
- .ui-prose a:hover {
3659
- color: var(--ui-accent-hover);
3660
- }
2626
+ .ui-prose a:hover { color: var(--ui-accent-hover); }
3661
2627
 
3662
- .ui-prose strong {
3663
- font-weight: 700;
3664
- }
3665
- .ui-prose em {
3666
- font-style: italic;
3667
- }
2628
+ .ui-prose strong { font-weight: 700; }
2629
+ .ui-prose em { font-style: italic; }
3668
2630
 
3669
2631
  .ui-prose ul,
3670
2632
  .ui-prose ol {
3671
- padding-left: 1.5em;
2633
+ padding-left: 1.5em;
3672
2634
  margin-bottom: 1.25em;
3673
2635
  }
3674
- .ui-prose ul {
3675
- list-style-type: disc;
3676
- }
3677
- .ui-prose ol {
3678
- list-style-type: decimal;
3679
- }
3680
- .ui-prose ul ul {
3681
- list-style-type: circle;
3682
- }
3683
- .ui-prose li {
3684
- margin-bottom: 0.375em;
3685
- }
2636
+ .ui-prose ul { list-style-type: disc; }
2637
+ .ui-prose ol { list-style-type: decimal; }
2638
+ .ui-prose ul ul { list-style-type: circle; }
2639
+ .ui-prose li { margin-bottom: .375em; }
3686
2640
  .ui-prose li > ul,
3687
- .ui-prose li > ol {
3688
- margin-top: 0.375em;
3689
- margin-bottom: 0.375em;
3690
- }
2641
+ .ui-prose li > ol { margin-top: .375em; margin-bottom: .375em; }
3691
2642
 
3692
2643
  .ui-prose blockquote {
3693
2644
  border-left: 3px solid var(--ui-border);
3694
- padding: 0.5em 0 0.5em 1.25em;
3695
- margin: 1.5em 0;
3696
- color: var(--ui-muted);
3697
- font-style: italic;
3698
- }
3699
- .ui-prose blockquote p {
3700
- margin-bottom: 0;
2645
+ padding: .5em 0 .5em 1.25em;
2646
+ margin: 1.5em 0;
2647
+ color: var(--ui-muted);
2648
+ font-style: italic;
3701
2649
  }
2650
+ .ui-prose blockquote p { margin-bottom: 0; }
3702
2651
 
3703
2652
  .ui-prose code {
3704
- background: var(--ui-surface-2);
3705
- color: var(--ui-accent);
3706
- padding: 0.1em 0.35em;
2653
+ background: var(--ui-surface-2);
2654
+ color: var(--ui-accent);
2655
+ padding: .1em .35em;
3707
2656
  border-radius: var(--ui-radius-sm);
3708
- font-size: 0.875em;
3709
- font-family: var(--ui-mono);
2657
+ font-size: .875em;
2658
+ font-family: var(--ui-mono);
3710
2659
  }
3711
2660
  .ui-prose pre {
3712
- background: var(--ui-surface-2);
3713
- border: 1px solid var(--ui-border);
2661
+ background: var(--ui-surface-2);
2662
+ border: 1px solid var(--ui-border);
3714
2663
  border-radius: var(--ui-radius);
3715
- padding: 1em 1.25em;
3716
- overflow-x: auto;
2664
+ padding: 1em 1.25em;
2665
+ overflow-x: auto;
3717
2666
  margin-bottom: 1.25em;
3718
- font-family: var(--ui-mono);
3719
- font-size: 0.875em;
3720
- line-height: 1.7;
2667
+ font-family: var(--ui-mono);
2668
+ font-size: .875em;
2669
+ line-height: 1.7;
3721
2670
  }
3722
2671
  .ui-prose pre code {
3723
2672
  background: none;
3724
- color: inherit;
3725
- padding: 0;
3726
- font-size: inherit;
2673
+ color: inherit;
2674
+ padding: 0;
2675
+ font-size: inherit;
3727
2676
  }
3728
2677
 
3729
2678
  .ui-prose hr {
3730
- border: none;
2679
+ border: none;
3731
2680
  border-top: 1px solid var(--ui-border);
3732
- margin: 2em 0;
2681
+ margin: 2em 0;
3733
2682
  }
3734
2683
 
3735
2684
  .ui-prose img {
3736
- max-width: 100%;
2685
+ max-width: 100%;
3737
2686
  border-radius: var(--ui-radius);
3738
- height: auto;
3739
- }
3740
- .ui-prose figure {
3741
- margin: 1.5em 0;
2687
+ height: auto;
3742
2688
  }
2689
+ .ui-prose figure { margin: 1.5em 0; }
3743
2690
  .ui-prose figcaption {
3744
- font-size: 0.875em;
3745
- color: var(--ui-muted);
3746
- margin-top: 0.5em;
2691
+ font-size: .875em;
2692
+ color: var(--ui-muted);
2693
+ margin-top: .5em;
3747
2694
  text-align: center;
3748
2695
  }
3749
2696
 
3750
2697
  .ui-prose table {
3751
- width: 100%;
2698
+ width: 100%;
3752
2699
  border-collapse: collapse;
3753
- margin-bottom: 1.25em;
3754
- font-size: 0.9375em;
2700
+ margin-bottom: 1.25em;
2701
+ font-size: .9375em;
3755
2702
  }
3756
2703
  .ui-prose th {
3757
- text-align: left;
3758
- padding: 0.5em 0.75em;
2704
+ text-align: left;
2705
+ padding: .5em .75em;
3759
2706
  border-bottom: 2px solid var(--ui-border);
3760
- font-weight: 600;
3761
- color: var(--ui-text);
2707
+ font-weight: 600;
2708
+ color: var(--ui-text);
3762
2709
  }
3763
2710
  .ui-prose td {
3764
- padding: 0.5em 0.75em;
2711
+ padding: .5em .75em;
3765
2712
  border-bottom: 1px solid var(--ui-border);
3766
- color: var(--ui-text);
2713
+ color: var(--ui-text);
3767
2714
  }
3768
2715
 
3769
2716
  /* ─── Light theme ────────────────────────────────────────────────────────────
@@ -3771,22 +2718,22 @@ fieldset[disabled] .ui-rating-stars .ui-rating-star:hover ~ .ui-rating-star {
3771
2718
  All --ui-* tokens are overridden; component markup stays identical. */
3772
2719
  [data-theme="light"],
3773
2720
  .ui-theme-light {
3774
- --ui-bg: #ffffff;
3775
- --ui-surface: #f8f8fc;
3776
- --ui-surface-2: #f0f0f8;
3777
- --ui-border: #d8d8e8;
3778
- --ui-text: #111118;
3779
- --ui-muted: #60607a;
3780
- --ui-accent: #6b5ce7;
3781
- --ui-accent-hover: #5847d6;
3782
- --ui-accent-dim: rgba(107, 92, 231, 0.12);
3783
- --ui-green: #166534;
3784
- --ui-green-dim: rgba(22, 163, 74, 0.12);
3785
- --ui-red: #991b1b;
3786
- --ui-red-dim: rgba(220, 38, 38, 0.12);
3787
- --ui-yellow: #92400e;
3788
- --ui-yellow-dim: rgba(217, 119, 6, 0.12);
3789
- --ui-blue: #1e40af;
3790
- --ui-blue-dim: rgba(30, 64, 175, 0.12);
3791
- --ui-nav-sticky-bg: rgba(255, 255, 255, 0.85);
2721
+ --ui-bg: #ffffff;
2722
+ --ui-surface: #f8f8fc;
2723
+ --ui-surface-2: #f0f0f8;
2724
+ --ui-border: #d8d8e8;
2725
+ --ui-text: #111118;
2726
+ --ui-muted: #60607a;
2727
+ --ui-accent: #6b5ce7;
2728
+ --ui-accent-hover: #5847d6;
2729
+ --ui-accent-dim: rgba(107, 92, 231, .12);
2730
+ --ui-green: #166534;
2731
+ --ui-green-dim: rgba(22, 163, 74, .12);
2732
+ --ui-red: #991b1b;
2733
+ --ui-red-dim: rgba(220, 38, 38, .12);
2734
+ --ui-yellow: #92400e;
2735
+ --ui-yellow-dim: rgba(217, 119, 6, .12);
2736
+ --ui-blue: #1e40af;
2737
+ --ui-blue-dim: rgba( 30, 64, 175, .12);
2738
+ --ui-nav-sticky-bg: rgba(255, 255, 255, .85);
3792
2739
  }