@filipgutica/ui 0.3.0 → 1.1.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.
@@ -1,18 +1,68 @@
1
1
  @layer components {
2
+ /* Package-owned typography keeps controls consistent across consuming apps. */
3
+ .fg-button, .fg-input, .fg-select, .fg-checkbox, .fg-field,
4
+ .fg-radio-card, .fg-badge, .fg-alert, .fg-surface, .fg-card,
5
+ .fg-dialog__content, .fg-code-block {
6
+ font-family: var(--font-ui);
7
+ font-size: var(--text-md);
8
+ font-weight: var(--weight-regular);
9
+ line-height: var(--leading);
10
+ }
11
+
12
+ .fg-code-block {
13
+ min-width: 0;
14
+ max-width: 100%;
15
+ overflow: hidden;
16
+ border: 1px solid color-mix(in srgb, var(--color-code-text) 22%, var(--color-code));
17
+ border-radius: var(--radius-control);
18
+ background: var(--color-code);
19
+ color: var(--color-code-text);
20
+ }
21
+ .fg-code-block__header {
22
+ display: flex;
23
+ align-items: center;
24
+ gap: 0.75rem;
25
+ min-height: 2.5rem;
26
+ padding: 0.35rem 0.75rem;
27
+ border-bottom: 1px solid color-mix(in srgb, var(--color-code-text) 16%, transparent);
28
+ background: color-mix(in srgb, var(--color-code-text) 5%, var(--color-code));
29
+ font-size: 0.75rem;
30
+ }
31
+ .fg-code-block__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
32
+ .fg-code-block__language { opacity: 0.7; }
33
+ .fg-code-block__actions { display: flex; align-items: center; gap: 0.5rem; margin-left: auto; flex-shrink: 0; }
34
+ .fg-code-block__copy {
35
+ display: inline-flex;
36
+ align-items: center;
37
+ gap: 0.4rem;
38
+ padding: 0.25rem 0.4rem;
39
+ border: 0;
40
+ border-radius: 0.25rem;
41
+ background: transparent;
42
+ color: inherit;
43
+ font: inherit;
44
+ cursor: pointer;
45
+ }
46
+ .fg-code-block__copy:hover { background: color-mix(in srgb, currentColor 12%, transparent); }
47
+ .fg-code-block__copy svg { width: 1rem; height: 1rem; }
48
+ .fg-code-block__copy:focus-visible, .fg-code-block__pre:focus-visible { outline: 2px solid var(--color-focus); outline-offset: -2px; }
49
+ .fg-code-block__pre { margin: 0; padding: 1rem; overflow: auto; max-height: 32rem; tab-size: 2; }
50
+ .fg-code-block__pre, .fg-code-block__pre code { font-family: var(--font-mono); font-size: 0.8125rem; line-height: 1.65; }
51
+ .fg-code-block__pre code { display: block; color: inherit; }
52
+ .fg-code-block__line { display: flex; min-height: 1.65em; }
53
+ .fg-code-block__text { white-space: pre; }
54
+ .fg-code-block__number { min-width: 2.5em; padding-right: 1em; flex-shrink: 0; text-align: right; opacity: 0.5; user-select: none; }
55
+ .fg-code-block[data-wrap="true"] .fg-code-block__text { min-width: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
56
+ .fg-code-block__status:empty { display: none; }
57
+ .fg-code-block__status:not(:empty) { display: block; padding: 0.5rem 0.75rem; font-size: 0.75rem; }
2
58
  .fg-button,
3
59
  .fg-input,
4
60
  .fg-select,
5
61
  .fg-dialog__close {
6
- min-height: 2.75rem;
7
62
  border: 1px solid transparent;
8
63
  border-radius: var(--radius-control);
9
- font: inherit;
10
- transition:
11
- background-color var(--duration-fast) ease,
12
- border-color var(--duration-fast) ease,
13
- color var(--duration-fast) ease,
14
- box-shadow var(--duration-fast) ease,
15
- transform var(--duration-fast) ease;
64
+ font-family: var(--font-ui);
65
+ transition: transform var(--duration-fast) var(--ease-out);
16
66
  }
17
67
 
18
68
  .fg-button {
@@ -20,11 +70,10 @@
20
70
  align-items: center;
21
71
  justify-content: center;
22
72
  gap: 0.5rem;
23
- padding: 0.65rem 1rem;
24
73
  color: var(--color-button-text);
25
74
  background: var(--color-button-bg);
26
- box-shadow: var(--shadow-control);
27
- font-weight: 700;
75
+ box-shadow: none;
76
+ font-weight: 500;
28
77
  letter-spacing: -0.01em;
29
78
  line-height: 1.25;
30
79
  cursor: pointer;
@@ -35,7 +84,6 @@
35
84
  }
36
85
 
37
86
  .fg-button:active:not(:disabled) {
38
- transform: translateY(1px);
39
87
  box-shadow: none;
40
88
  }
41
89
 
@@ -62,16 +110,55 @@
62
110
  animation: fg-button-spin 700ms linear infinite;
63
111
  }
64
112
 
113
+ .fg-button[data-size="sm"],
114
+ .fg-input[data-size="sm"],
115
+ .fg-select[data-size="sm"] {
116
+ font-size: 0.8125rem;
117
+ }
118
+
119
+ .fg-button[data-size="md"],
120
+ .fg-input[data-size="md"],
121
+ .fg-select[data-size="md"] {
122
+ font-size: 0.875rem;
123
+ }
124
+
125
+ .fg-button[data-size="lg"],
126
+ .fg-input[data-size="lg"],
127
+ .fg-select[data-size="lg"] {
128
+ font-size: 1rem;
129
+ }
130
+
131
+ .fg-button[data-size="sm"] { min-height: var(--control-sm); }
132
+ .fg-button[data-size="md"] { min-height: var(--control-md); }
133
+ .fg-button[data-size="lg"] { min-height: var(--control-lg); }
134
+ .fg-input[data-size="sm"],
135
+ .fg-select[data-size="sm"] { height: var(--control-sm); }
136
+ .fg-input[data-size="md"],
137
+ .fg-select[data-size="md"] { height: var(--control-md); }
138
+ .fg-input[data-size="lg"],
139
+ .fg-select[data-size="lg"] { height: var(--control-lg); }
140
+
141
+ .fg-button[data-size="sm"] { padding: 0 0.6rem; }
142
+ .fg-button[data-size="md"] { padding: 0 0.75rem; }
143
+ .fg-button[data-size="lg"] { padding: 0 1rem; }
144
+
145
+ /* Deprecated UiButton aliases retained for existing consumers. */
65
146
  .fg-button[data-size="compact"] {
66
- min-height: 2.25rem;
67
- padding: 0.4rem 0.7rem;
147
+ min-height: var(--control-md);
148
+ padding: 0 0.7rem;
68
149
  font-size: 0.8125rem;
69
150
  }
70
151
 
152
+ .fg-button[data-size="default"] {
153
+ min-height: var(--control-lg);
154
+ padding: 0 1rem;
155
+ font-size: 1rem;
156
+ }
157
+
71
158
  .fg-button[data-variant="secondary"] {
72
159
  border-color: var(--color-border);
73
160
  color: var(--color-text);
74
- background: var(--color-surface-raised);
161
+ background: transparent;
75
162
  }
76
163
 
77
164
  .fg-button[data-variant="secondary"]:hover:not(:disabled),
@@ -96,12 +183,13 @@
96
183
  border-color: var(--color-error);
97
184
  color: var(--color-error);
98
185
  background: var(--color-error-surface);
99
- box-shadow: inset 0 0 0 1px var(--color-error);
186
+ box-shadow: none;
100
187
  }
101
188
 
102
189
  .fg-button[data-variant="text"] {
190
+ height: auto;
103
191
  min-height: auto;
104
- padding: 0;
192
+ padding: 0.25rem;
105
193
  color: var(--color-link);
106
194
  background: transparent;
107
195
  text-decoration: underline;
@@ -117,14 +205,88 @@
117
205
  .fg-input,
118
206
  .fg-select {
119
207
  width: 100%;
120
- padding: 0.5rem 0.7rem;
121
208
  border-color: var(--color-input-border);
122
209
  color: var(--color-input-text);
123
210
  background: var(--color-input-bg);
124
- box-shadow: var(--shadow-control);
211
+ box-shadow: none;
125
212
  line-height: 1.35;
126
213
  }
127
214
 
215
+ .fg-select {
216
+ appearance: none;
217
+ background-image:
218
+ linear-gradient(45deg, transparent 50%, currentColor 50%),
219
+ linear-gradient(135deg, currentColor 50%, transparent 50%);
220
+ background-position:
221
+ calc(100% - 0.8rem) 52%,
222
+ calc(100% - 0.55rem) 52%;
223
+ background-repeat: no-repeat;
224
+ background-size: 0.3rem 0.3rem;
225
+ }
226
+
227
+ /* Keep native form semantics; older browsers retain the native picker. */
228
+ @supports (appearance: base-select) {
229
+ .fg-select:not([multiple]):not([size]),
230
+ .fg-select:not([multiple]):not([size])::picker(select) {
231
+ appearance: base-select;
232
+ }
233
+ .fg-select:not([multiple]):not([size]) {
234
+ position: relative;
235
+ align-items: center;
236
+ background-image: none;
237
+ cursor: pointer;
238
+ }
239
+ .fg-select:not([multiple]):not([size]):disabled { cursor: not-allowed; }
240
+ .fg-select:not([multiple]):not([size])::picker-icon { display: none; }
241
+ .fg-select:not([multiple]):not([size])::after {
242
+ position: absolute;
243
+ right: var(--space-3);
244
+ width: var(--space-2);
245
+ height: var(--space-2);
246
+ border-right: 1.5px solid var(--color-muted);
247
+ border-bottom: 1.5px solid var(--color-muted);
248
+ transform: translateY(-2px) rotate(45deg);
249
+ content: "";
250
+ }
251
+ .fg-select:not([multiple]):not([size])::picker(select) {
252
+ min-width: anchor-size(width);
253
+ max-height: min(20rem, 50dvh);
254
+ overflow: auto;
255
+ margin-block: var(--space-1);
256
+ padding: var(--space-1);
257
+ border: 1px solid var(--color-border-subtle);
258
+ border-radius: var(--radius-panel);
259
+ color: var(--color-text);
260
+ background: var(--color-input-bg);
261
+ box-shadow: var(--shadow-dialog);
262
+ font: var(--weight-regular) var(--text-md) / var(--leading) var(--font-ui);
263
+ }
264
+ .fg-select:not([multiple]):not([size]) option {
265
+ min-height: var(--control-sm);
266
+ gap: var(--space-2);
267
+ padding: var(--space-2) var(--space-3);
268
+ border-radius: var(--radius-control);
269
+ color: var(--color-text);
270
+ background: transparent;
271
+ cursor: pointer;
272
+ }
273
+ .fg-select:not([multiple]):not([size]) option:checked { color: var(--color-row-selected-text); background: var(--color-row-selected); }
274
+ .fg-select:not([multiple]):not([size]) option:hover:not(:disabled), .fg-select:not([multiple]):not([size]) option:focus-visible { background: var(--color-row-hover); outline: 2px solid var(--color-focus); outline-offset: -2px; }
275
+ .fg-select:not([multiple]):not([size]) option:disabled { color: var(--color-muted); opacity: 0.58; cursor: not-allowed; }
276
+ .fg-select:not([multiple]):not([size]) option::checkmark { order: 1; margin-left: auto; color: var(--color-link); }
277
+ @media (pointer: coarse) {
278
+ .fg-select:not([multiple]):not([size]) option { min-height: var(--control-lg); }
279
+ }
280
+ }
281
+
282
+ .fg-input[data-size="sm"] { padding: 0 0.55rem; }
283
+ .fg-input[data-size="md"] { padding: 0 0.65rem; }
284
+ .fg-input[data-size="lg"] { padding: 0 0.7rem; }
285
+
286
+ .fg-select[data-size="sm"] { padding: 0 1.6rem 0 0.5rem; }
287
+ .fg-select[data-size="md"] { padding: 0 1.7rem 0 0.6rem; }
288
+ .fg-select[data-size="lg"] { padding: 0 1.8rem 0 0.7rem; }
289
+
128
290
  .fg-input::placeholder {
129
291
  color: var(--color-input-placeholder);
130
292
  opacity: 1;
@@ -144,7 +306,7 @@
144
306
  .fg-field__label {
145
307
  color: var(--color-text);
146
308
  font-size: 0.8125rem;
147
- font-weight: 700;
309
+ font-weight: 600;
148
310
  }
149
311
 
150
312
  .fg-field__description,
@@ -191,6 +353,110 @@
191
353
 
192
354
  .fg-checkbox__label { line-height: 1.4; }
193
355
 
356
+ .fg-checkbox[data-size="sm"] {
357
+ min-height: var(--control-sm);
358
+ align-items: center;
359
+ gap: 0.45rem;
360
+ font-size: 0.8125rem;
361
+ }
362
+
363
+ .fg-checkbox[data-size="md"] {
364
+ min-height: var(--control-md);
365
+ align-items: center;
366
+ gap: 0.55rem;
367
+ font-size: 0.875rem;
368
+ }
369
+
370
+ .fg-checkbox[data-size="lg"] {
371
+ min-height: var(--control-lg);
372
+ align-items: center;
373
+ gap: 0.65rem;
374
+ font-size: 1rem;
375
+ }
376
+
377
+ .fg-checkbox[data-size] .fg-checkbox__control { margin-top: 0; }
378
+
379
+ .fg-checkbox[data-size="sm"] .fg-checkbox__control {
380
+ width: 1rem;
381
+ height: 1rem;
382
+ border-radius: 0.25rem;
383
+ }
384
+
385
+ .fg-checkbox[data-size="md"] .fg-checkbox__control {
386
+ width: 1.125rem;
387
+ height: 1.125rem;
388
+ }
389
+
390
+ .fg-checkbox[data-size="lg"] .fg-checkbox__control {
391
+ width: 1.25rem;
392
+ height: 1.25rem;
393
+ }
394
+
395
+ .fg-checkbox[data-size="sm"] .fg-checkbox__indicator { font-size: 0.68rem; }
396
+ .fg-checkbox[data-size="md"] .fg-checkbox__indicator { font-size: 0.74rem; }
397
+ .fg-checkbox[data-size="lg"] .fg-checkbox__indicator { font-size: 0.8rem; }
398
+
399
+ .fg-radio-card-group {
400
+ display: grid;
401
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
402
+ gap: 0.75rem;
403
+ }
404
+
405
+ .fg-radio-card {
406
+ position: relative;
407
+ display: block;
408
+ min-width: 0;
409
+ padding: 0.75rem;
410
+ overflow: hidden;
411
+ border: 1px solid var(--color-border-subtle);
412
+ border-radius: var(--radius-panel);
413
+ color: var(--color-text);
414
+ background: var(--color-surface-raised);
415
+ box-shadow: none;
416
+ text-align: left;
417
+ cursor: pointer;
418
+ transition: transform var(--duration-fast) var(--ease-out);
419
+ }
420
+
421
+ .fg-radio-card:hover:not([data-disabled]) {
422
+ border-color: var(--color-border);
423
+ }
424
+
425
+ .fg-radio-card[data-state="checked"] {
426
+ border-color: var(--color-link);
427
+ outline: 1px solid var(--color-link);
428
+ outline-offset: -2px;
429
+ }
430
+
431
+ .fg-radio-card[data-disabled] {
432
+ cursor: not-allowed;
433
+ opacity: 0.58;
434
+ }
435
+
436
+ .fg-radio-card__content {
437
+ display: grid;
438
+ min-width: 0;
439
+ gap: 0.25rem;
440
+ padding-right: 1.75rem;
441
+ }
442
+
443
+ .fg-radio-card__indicator {
444
+ position: absolute;
445
+ z-index: 1;
446
+ top: 0.75rem;
447
+ right: 0.75rem;
448
+ display: block;
449
+ width: 1rem;
450
+ height: 1rem;
451
+ border: 1px solid var(--color-input-border);
452
+ border-radius: 50%;
453
+ background: var(--color-input-bg);
454
+ }
455
+
456
+ .fg-radio-card[data-state="checked"] .fg-radio-card__indicator {
457
+ border: 0.3rem solid var(--color-link);
458
+ }
459
+
194
460
  .fg-badge {
195
461
  display: inline-flex;
196
462
  align-items: center;
@@ -201,30 +467,30 @@
201
467
  color: var(--color-muted);
202
468
  background: var(--color-surface-muted);
203
469
  font-size: 0.75rem;
204
- font-weight: 700;
470
+ font-weight: 500;
205
471
  line-height: 1.25;
206
472
  }
207
473
 
208
474
  .fg-badge[data-tone="info"] { color: var(--color-info); background: var(--color-info-surface); }
209
475
  .fg-badge[data-tone="success"] { color: var(--color-success); background: var(--color-success-surface); }
210
476
  .fg-badge[data-tone="warning"] { color: var(--color-warning); background: var(--color-warning-surface); }
211
- .fg-badge[data-tone="danger"] { color: var(--color-error); background: var(--color-error-surface); }
477
+ .fg-badge[data-tone="danger"],
478
+ .fg-badge[data-tone="error"] { color: var(--color-error); background: var(--color-error-surface); }
212
479
 
213
480
  .fg-alert {
214
481
  display: flex;
215
482
  align-items: flex-start;
216
483
  gap: 0.75rem;
217
- padding: 0.85rem 1rem;
484
+ padding: 0.75rem 1rem;
218
485
  border: 1px solid var(--color-border-subtle);
219
- border-left: 3px solid var(--color-border);
220
486
  border-radius: var(--radius-control);
221
487
  color: var(--color-text);
222
488
  background: var(--color-surface);
223
489
  }
224
490
 
225
- .fg-alert[data-tone="info"] { border-left-color: var(--color-info); background: var(--color-info-surface); }
226
- .fg-alert[data-tone="success"] { border-left-color: var(--color-success); background: var(--color-success-surface); }
227
- .fg-alert[data-tone="warning"] { border-left-color: var(--color-warning); background: var(--color-warning-surface); }
491
+ .fg-alert[data-tone="info"] { border-color: color-mix(in srgb, var(--color-info) 35%, var(--color-border-subtle)); background: var(--color-info-surface); }
492
+ .fg-alert[data-tone="success"] { border-color: color-mix(in srgb, var(--color-success) 35%, var(--color-border-subtle)); background: var(--color-success-surface); }
493
+ .fg-alert[data-tone="warning"] { border-color: color-mix(in srgb, var(--color-warning) 35%, var(--color-border-subtle)); background: var(--color-warning-surface); }
228
494
  .fg-alert[data-tone="danger"],
229
495
  .fg-alert[data-tone="error"] {
230
496
  border-color: var(--color-error);
@@ -236,16 +502,60 @@
236
502
  border: 1px solid var(--color-border-subtle);
237
503
  border-radius: var(--radius-panel);
238
504
  background: var(--color-surface-raised);
239
- box-shadow: 0 1px 2px var(--color-shadow);
505
+ box-shadow: none;
240
506
  }
241
507
 
242
- .fg-surface[data-padding="compact"] { padding: 0.85rem; }
243
- .fg-surface[data-padding="default"] { padding: 1.2rem; }
508
+ .fg-surface[data-padding="compact"] { padding: 0.75rem; }
509
+ .fg-surface[data-padding="default"] { padding: 1rem; }
510
+
511
+ .fg-card {
512
+ min-width: 0;
513
+ overflow: hidden;
514
+ border: 1px solid var(--color-border-subtle);
515
+ border-radius: var(--radius-panel);
516
+ color: var(--color-text);
517
+ background: var(--color-surface-raised);
518
+ box-shadow: none;
519
+ }
520
+
521
+ .fg-card__header {
522
+ display: flex;
523
+ align-items: center;
524
+ justify-content: space-between;
525
+ gap: var(--space-3);
526
+ padding: var(--space-4);
527
+ }
528
+
529
+ .fg-card__title {
530
+ min-width: 0;
531
+ margin: 0;
532
+ color: var(--color-text);
533
+ font-size: var(--text-md);
534
+ font-weight: var(--weight-medium);
535
+ line-height: var(--leading);
536
+ overflow-wrap: anywhere;
537
+ }
538
+ .fg-card__actions { display: flex; flex: none; align-items: center; gap: var(--space-2); margin-left: auto; }
539
+ .fg-card__body { min-width: 0; padding: var(--space-4); }
540
+ .fg-card__header + .fg-card__body { padding-top: 0; }
541
+ .fg-card__footer {
542
+ display: flex;
543
+ flex-wrap: wrap;
544
+ align-items: center;
545
+ justify-content: space-between;
546
+ gap: var(--space-3);
547
+ margin-inline: var(--space-4);
548
+ padding-block: var(--space-3);
549
+ border-top: 1px solid var(--color-border-subtle);
550
+ color: var(--color-muted);
551
+ font-size: var(--text-sm);
552
+ }
244
553
 
245
554
  .fg-progress {
246
555
  position: relative;
247
556
  height: 0.55rem;
248
557
  overflow: hidden;
558
+ border: 1px solid var(--color-border-subtle);
249
559
  border-radius: var(--radius-pill);
250
560
  background: var(--color-surface-muted);
251
561
  }
@@ -258,6 +568,50 @@
258
568
  transition: transform var(--duration-fast) ease-out;
259
569
  }
260
570
 
571
+ .fg-slider {
572
+ position: relative;
573
+ display: flex;
574
+ width: 100%;
575
+ align-items: center;
576
+ touch-action: none;
577
+ user-select: none;
578
+ }
579
+
580
+ .fg-slider[data-size="sm"] { min-height: var(--control-sm); }
581
+ .fg-slider[data-size="md"] { min-height: var(--control-md); }
582
+ .fg-slider[data-size="lg"] { min-height: var(--control-lg); }
583
+
584
+ .fg-slider__track {
585
+ position: relative;
586
+ height: 0.375rem;
587
+ flex: 1;
588
+ overflow: hidden;
589
+ border-radius: var(--radius-pill);
590
+ background: var(--color-surface-muted);
591
+ }
592
+
593
+ .fg-slider__range {
594
+ position: absolute;
595
+ height: 100%;
596
+ border-radius: inherit;
597
+ background: var(--color-progress);
598
+ }
599
+
600
+ .fg-slider__thumb {
601
+ display: block;
602
+ border: 2px solid var(--color-progress);
603
+ border-radius: 50%;
604
+ background: var(--color-input-bg);
605
+ box-shadow: var(--shadow-control);
606
+ cursor: grab;
607
+ }
608
+
609
+ .fg-slider__thumb:active { cursor: grabbing; }
610
+ .fg-slider[data-size="sm"] .fg-slider__thumb { width: 1rem; height: 1rem; }
611
+ .fg-slider[data-size="md"] .fg-slider__thumb { width: 1.125rem; height: 1.125rem; }
612
+ .fg-slider[data-size="lg"] .fg-slider__thumb { width: 1.25rem; height: 1.25rem; }
613
+ .fg-slider[data-disabled] { cursor: not-allowed; opacity: 0.58; }
614
+
261
615
  .fg-dialog__overlay {
262
616
  position: fixed;
263
617
  inset: 0;
@@ -272,11 +626,11 @@
272
626
  top: 50%;
273
627
  left: 50%;
274
628
  display: grid;
275
- width: min(42rem, calc(100vw - 2rem));
629
+ width: min(32rem, calc(100vw - 2rem));
276
630
  max-height: min(42rem, calc(100vh - 2rem));
277
631
  overflow: hidden;
278
632
  transform: translate(-50%, -50%);
279
- border: 1px solid var(--color-border);
633
+ border: 1px solid var(--color-border-subtle);
280
634
  border-radius: var(--radius-panel);
281
635
  color: var(--color-text);
282
636
  background: var(--color-surface-raised);
@@ -289,16 +643,16 @@
289
643
  align-items: flex-start;
290
644
  justify-content: space-between;
291
645
  gap: 1rem;
292
- padding: 1rem 1.2rem;
646
+ padding: 1rem;
293
647
  }
294
648
 
295
649
  .fg-dialog__header { border-bottom: 1px solid var(--color-border-subtle); }
296
- .fg-dialog__footer { justify-content: flex-end; border-top: 1px solid var(--color-border-subtle); }
650
+ .fg-dialog__footer { justify-content: flex-end; border-top: 1px solid var(--color-border-subtle); background: var(--color-surface); }
297
651
 
298
652
  .fg-dialog__title {
299
653
  margin: 0;
300
- font-size: 1.1rem;
301
- font-weight: 760;
654
+ font-size: 1.125rem;
655
+ font-weight: 600;
302
656
  letter-spacing: -0.02em;
303
657
  }
304
658
 
@@ -311,13 +665,14 @@
311
665
  .fg-dialog__body {
312
666
  min-height: 0;
313
667
  overflow: auto;
314
- padding: 1.2rem;
668
+ padding: 1rem;
315
669
  }
316
670
 
317
671
  .fg-dialog__close {
318
672
  display: inline-grid;
319
673
  flex: none;
320
674
  width: 2.75rem;
675
+ min-height: var(--control-lg);
321
676
  padding: 0;
322
677
  place-items: center;
323
678
  color: var(--color-muted);
@@ -336,9 +691,11 @@
336
691
  .fg-input:focus-visible,
337
692
  .fg-select:focus-visible,
338
693
  .fg-checkbox__control:focus-visible,
694
+ .fg-radio-card:focus-visible,
695
+ .fg-slider__thumb:focus-visible,
339
696
  .fg-dialog__close:focus-visible,
340
697
  .fg-dialog__content:focus-visible {
341
- outline: 3px solid var(--color-focus);
698
+ outline: 2px solid var(--color-focus);
342
699
  outline-offset: 2px;
343
700
  }
344
701
 
@@ -346,8 +703,11 @@
346
703
  :root.high-contrast .fg-input,
347
704
  :root.high-contrast .fg-select,
348
705
  :root.high-contrast .fg-checkbox__control,
706
+ :root.high-contrast .fg-radio-card,
349
707
  :root.high-contrast .fg-alert,
350
708
  :root.high-contrast .fg-surface,
709
+ :root.high-contrast .fg-card,
710
+ :root.high-contrast .fg-code-block,
351
711
  :root.high-contrast .fg-dialog__content {
352
712
  border-width: 2px;
353
713
  border-color: var(--color-border);
@@ -369,6 +729,8 @@
369
729
  .fg-button,
370
730
  .fg-input,
371
731
  .fg-select,
732
+ .fg-radio-card,
733
+ .fg-slider__range,
372
734
  .fg-dialog__close,
373
735
  .fg-progress__indicator { transition: none; }
374
736