@uniai-fe/uds-primitives 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +126 -3
  2. package/dist/styles.css +3571 -0
  3. package/package.json +20 -8
  4. package/src/components/badge/markup/Badge.tsx +10 -0
  5. package/src/components/badge/styles/index.scss +2 -2
  6. package/src/components/badge/types/index.ts +1 -1
  7. package/src/components/button/index.scss +3 -1
  8. package/src/components/button/index.tsx +9 -1
  9. package/src/components/button/markup/ButtonDefault.tsx +162 -0
  10. package/src/components/button/markup/ButtonRounded.tsx +48 -0
  11. package/src/components/button/markup/ButtonText.tsx +49 -0
  12. package/src/components/button/markup/index.ts +3 -0
  13. package/src/components/button/styles/{index.scss → button.scss} +148 -362
  14. package/src/components/button/styles/round-button.scss +56 -0
  15. package/src/components/button/styles/text-button.scss +96 -0
  16. package/src/components/button/types/index.ts +110 -35
  17. package/src/components/button/types/templates.ts +33 -0
  18. package/src/components/button/utils/index.ts +19 -19
  19. package/src/components/checkbox/markup/Checkbox.tsx +20 -2
  20. package/src/components/checkbox/types/checkbox.ts +16 -0
  21. package/src/components/chip/markup/Chip.tsx +8 -0
  22. package/src/components/dialog/markup/{confirm-dialog.tsx → ConfirmDialog.tsx} +23 -0
  23. package/src/components/dialog/markup/{notice-dialog.tsx → NoticeDialog.tsx} +18 -0
  24. package/src/components/dialog/markup/index.tsx +2 -2
  25. package/src/components/dialog/types/index.ts +43 -0
  26. package/src/components/drawer/markup/{drawer.tsx → Drawer.tsx} +58 -0
  27. package/src/components/drawer/markup/index.tsx +1 -1
  28. package/src/components/drawer/types/index.ts +24 -0
  29. package/src/components/input/markup/text/Base.tsx +32 -3
  30. package/src/components/input/markup/text/Identification.tsx +15 -2
  31. package/src/components/input/markup/text/Password.tsx +35 -2
  32. package/src/components/input/markup/text/Phone.tsx +38 -2
  33. package/src/components/input/markup/text/Search.tsx +30 -1
  34. package/src/components/input/styles/index.scss +6 -6
  35. package/src/components/input/types/index.ts +22 -1
  36. package/src/components/input/utils/index.ts +6 -0
  37. package/src/components/navigation/index.tsx +5 -0
  38. package/src/components/navigation/markup/mobile/BottomNavigation.tsx +11 -0
  39. package/src/components/navigation/types/index.ts +22 -0
  40. package/src/components/pagination/markup/Carousel.tsx +1 -0
  41. package/src/components/pagination/markup/Count.tsx +1 -0
  42. package/src/components/pagination/markup/Pagination.tsx +2 -0
  43. package/src/components/radio/markup/Radio.tsx +16 -2
  44. package/src/components/radio/markup/RadioCard.tsx +8 -0
  45. package/src/components/radio/markup/RadioCardGroup.tsx +8 -0
  46. package/src/components/radio/types/radio.ts +39 -0
  47. package/src/components/segmented-control/markup/SegmentedControl.tsx +12 -0
  48. package/src/components/segmented-control/types/index.ts +16 -0
  49. package/src/components/tab/markup/TabContent.tsx +5 -0
  50. package/src/components/tab/markup/TabList.tsx +19 -2
  51. package/src/components/tab/markup/TabRoot.tsx +50 -4
  52. package/src/components/tab/markup/TabTrigger.tsx +9 -1
  53. package/src/components/tab/styles/index.scss +28 -10
  54. package/src/components/tab/types/index.ts +10 -0
  55. package/src/components/tab/utils/tab-context.ts +8 -2
  56. package/src/index.scss +22 -1
  57. package/src/theme/ThemeProvider.tsx +2 -2
  58. package/styles.scss +1 -0
  59. package/src/components/button/markup/Button.tsx +0 -175
  60. package/src/components/button/markup/index.tsx +0 -1
@@ -0,0 +1,3571 @@
1
+ @charset "UTF-8";
2
+ @layer theme.init {
3
+ :root {
4
+ -webkit-tap-highlight-color: transparent;
5
+ text-size-adjust: none;
6
+ overflow-wrap: break-word;
7
+ word-break: break-word;
8
+ }
9
+ *,
10
+ *::before,
11
+ *::after {
12
+ margin: 0;
13
+ padding: 0;
14
+ border: 0;
15
+ box-sizing: border-box;
16
+ }
17
+ * {
18
+ letter-spacing: -0.05em;
19
+ flex-shrink: 0;
20
+ overscroll-behavior-y: none;
21
+ }
22
+ *:focus,
23
+ *:focus-within,
24
+ *:focus-visible {
25
+ outline: none;
26
+ }
27
+ html {
28
+ width: 100%;
29
+ font-size: 10px;
30
+ font-family: var(--font-family-sans);
31
+ background-color: #fff;
32
+ touch-action: manipulation;
33
+ }
34
+ body {
35
+ width: 100%;
36
+ position: relative;
37
+ background: none;
38
+ }
39
+ h1,
40
+ h2,
41
+ h3,
42
+ h4,
43
+ h5,
44
+ h6 {
45
+ margin: 0;
46
+ padding: 0;
47
+ font-weight: 500;
48
+ line-height: 1em;
49
+ }
50
+ strong,
51
+ b {
52
+ font-weight: 700;
53
+ line-height: 1em;
54
+ }
55
+ p,
56
+ span,
57
+ i,
58
+ sup,
59
+ sub,
60
+ del,
61
+ ins,
62
+ s {
63
+ margin: 0;
64
+ padding: 0;
65
+ line-height: 1em;
66
+ word-break: keep-all;
67
+ }
68
+ i,
69
+ address,
70
+ cite,
71
+ em,
72
+ q {
73
+ font-weight: 400;
74
+ font-style: normal;
75
+ }
76
+ blockquote,
77
+ abbr,
78
+ dfn {
79
+ font-weight: 400;
80
+ }
81
+ pre,
82
+ code,
83
+ samp,
84
+ kbd,
85
+ var {
86
+ font-family: "Consolas", "Monaco", "Menlo", "DejaVu Sans Mono", SFMono-Regular, "Liberation Mono", "Courier New", monospace;
87
+ }
88
+ blockquote,
89
+ q {
90
+ quotes: none;
91
+ }
92
+ blockquote::before,
93
+ blockquote::after,
94
+ q::before,
95
+ q::after {
96
+ content: "";
97
+ }
98
+ img,
99
+ svg {
100
+ max-width: 100%;
101
+ object-fit: contain;
102
+ perspective: 1;
103
+ }
104
+ li,
105
+ dt,
106
+ dd {
107
+ list-style: none;
108
+ }
109
+ table {
110
+ width: 100%;
111
+ border-collapse: collapse;
112
+ border-spacing: 0;
113
+ table-layout: fixed;
114
+ }
115
+ label {
116
+ display: block;
117
+ }
118
+ legend,
119
+ caption {
120
+ display: none;
121
+ }
122
+ article,
123
+ aside,
124
+ footer,
125
+ header,
126
+ main,
127
+ nav,
128
+ section,
129
+ time,
130
+ audio,
131
+ canvas,
132
+ figure,
133
+ figcaption,
134
+ video,
135
+ meter,
136
+ progress,
137
+ details,
138
+ summary {
139
+ display: block;
140
+ }
141
+ figure {
142
+ position: relative;
143
+ width: fit-content;
144
+ height: fit-content;
145
+ font-size: 0;
146
+ }
147
+ a {
148
+ display: block;
149
+ color: #333;
150
+ text-decoration: none;
151
+ cursor: pointer;
152
+ }
153
+ input,
154
+ select,
155
+ button,
156
+ textarea {
157
+ display: block;
158
+ max-width: 100%;
159
+ background: transparent;
160
+ border-radius: 0;
161
+ box-shadow: none;
162
+ outline: none;
163
+ caret-color: transparent;
164
+ appearance: none;
165
+ }
166
+ button {
167
+ cursor: pointer;
168
+ font-family: inherit;
169
+ user-select: none;
170
+ }
171
+ textarea {
172
+ resize: none;
173
+ }
174
+ select {
175
+ user-select: none;
176
+ }
177
+ select::-ms-expand {
178
+ opacity: 0;
179
+ }
180
+ input::placeholder,
181
+ textarea::placeholder {
182
+ opacity: 1;
183
+ color: #959595;
184
+ }
185
+ input:focus::placeholder,
186
+ textarea:focus::placeholder {
187
+ color: transparent;
188
+ }
189
+ [type=button],
190
+ [type=reset],
191
+ [type=submit] {
192
+ appearance: button;
193
+ }
194
+ [type=search] {
195
+ appearance: textfield;
196
+ outline-offset: -2px;
197
+ }
198
+ :-webkit-inner-spin-button,
199
+ ::-webkit-outer-spin-button {
200
+ height: auto;
201
+ }
202
+ ::-webkit-search-decoration,
203
+ ::-webkit-search-cancel-button {
204
+ appearance: none;
205
+ }
206
+ ::-webkit-file-upload-button {
207
+ appearance: button;
208
+ }
209
+ input[type=date],
210
+ input[type=number] {
211
+ appearance: none;
212
+ }
213
+ input[type=date]::-webkit-inner-spin-button,
214
+ input[type=number]::-webkit-inner-spin-button {
215
+ display: none;
216
+ }
217
+ input[type=date]::-webkit-calendar-picker-indicator,
218
+ input[type=number]::-webkit-calendar-picker-indicator {
219
+ opacity: 0;
220
+ }
221
+ input[type=date]::-webkit-clear-button,
222
+ input[type=number]::-webkit-clear-button {
223
+ display: none;
224
+ }
225
+ input[type=date]::-ms-clear,
226
+ input[type=number]::-ms-clear {
227
+ display: none;
228
+ }
229
+ input[type=range]::-webkit-slider-thumb {
230
+ appearance: none;
231
+ }
232
+ input[type=checkbox] {
233
+ appearance: checkbox;
234
+ }
235
+ button:disabled {
236
+ cursor: default;
237
+ }
238
+ progress {
239
+ appearance: none;
240
+ border: 1px solid #e1e1e1;
241
+ }
242
+ progress::-webkit-progress-bar {
243
+ background-color: #fff;
244
+ }
245
+ progress::-webkit-progress-value {
246
+ background-color: grey;
247
+ }
248
+ @media (orientation: landscape) {
249
+ html.mobile-device {
250
+ font-size: 1vw;
251
+ }
252
+ }
253
+ @media (orientation: portrait) {
254
+ html.mobile-device {
255
+ font-size: 1vw;
256
+ }
257
+ }
258
+ }
259
+ @layer theme.init {
260
+ html,
261
+ body {
262
+ width: 100%;
263
+ height: 100%;
264
+ position: fixed;
265
+ top: 0;
266
+ left: 0;
267
+ overflow: auto;
268
+ z-index: 0;
269
+ }
270
+ }
271
+ @layer theme.tokens.color {
272
+ :root {
273
+ --color-common-100: #fff;
274
+ --color-common-0: #000;
275
+ --color-neutral-10: #1a1a1a;
276
+ --color-neutral-20: #333333;
277
+ --color-neutral-30: #4d4d4d;
278
+ --color-neutral-40: #666666;
279
+ --color-neutral-45: #737373;
280
+ --color-neutral-50: #808080;
281
+ --color-neutral-55: #8c8c8c;
282
+ --color-neutral-60: #999999;
283
+ --color-neutral-70: #b3b3b3;
284
+ --color-neutral-80: #cccccc;
285
+ --color-neutral-90: #e6e6e6;
286
+ --color-neutral-95: #f2f2f2;
287
+ --color-neutral-99: #fcfcfc;
288
+ --color-cool-gray-10: #18191b;
289
+ --color-cool-gray-20: #313235;
290
+ --color-cool-gray-25: #3d3f43;
291
+ --color-cool-gray-30: #494b50;
292
+ --color-cool-gray-35: #55585e;
293
+ --color-cool-gray-40: #61656b;
294
+ --color-cool-gray-45: #6d7178;
295
+ --color-cool-gray-50: #797e86;
296
+ --color-cool-gray-55: #878b92;
297
+ --color-cool-gray-60: #94989e;
298
+ --color-cool-gray-65: #a1a5aa;
299
+ --color-cool-gray-70: #afb1b6;
300
+ --color-cool-gray-75: #bcbec2;
301
+ --color-cool-gray-80: #cacbce;
302
+ --color-cool-gray-85: #d7d8db;
303
+ --color-cool-gray-90: #e4e5e7;
304
+ --color-cool-gray-95: #f2f2f3;
305
+ --color-cool-gray-99: #fcfcfd;
306
+ --color-blue-10: #001233;
307
+ --color-blue-20: #002466;
308
+ --color-blue-30: #003699;
309
+ --color-blue-40: #0047cc;
310
+ --color-blue-45: #0050e5;
311
+ --color-blue-50: #0059ff;
312
+ --color-blue-55: #1a6aff;
313
+ --color-blue-60: #337aff;
314
+ --color-blue-70: #669cff;
315
+ --color-blue-80: #99bdff;
316
+ --color-blue-90: #ccdeff;
317
+ --color-blue-95: #e5eeff;
318
+ --color-blue-99: #fafcff;
319
+ --color-purple-10: #120033;
320
+ --color-purple-20: #240066;
321
+ --color-purple-30: #360099;
322
+ --color-purple-40: #4800cc;
323
+ --color-purple-45: #5200e5;
324
+ --color-purple-50: #5b00ff;
325
+ --color-purple-55: #6c1bff;
326
+ --color-purple-60: #7b33ff;
327
+ --color-purple-70: #9c66ff;
328
+ --color-purple-80: #bd99ff;
329
+ --color-purple-90: #deccff;
330
+ --color-purple-95: #efe5ff;
331
+ --color-purple-99: #fcfaff;
332
+ --color-magenta-10: #32012e;
333
+ --color-magenta-20: #64025b;
334
+ --color-magenta-30: #950489;
335
+ --color-magenta-40: #c705b6;
336
+ --color-magenta-45: #e005cd;
337
+ --color-magenta-50: #f906e4;
338
+ --color-magenta-55: #fa1fe7;
339
+ --color-magenta-60: #fa38e9;
340
+ --color-magenta-70: #fb6aef;
341
+ --color-magenta-80: #fd9bf4;
342
+ --color-magenta-90: #fecdfa;
343
+ --color-magenta-95: #fee6fc;
344
+ --color-magenta-99: #fffafe;
345
+ --color-pink-10: #320116;
346
+ --color-pink-20: #63032b;
347
+ --color-pink-30: #950441;
348
+ --color-pink-40: #c70556;
349
+ --color-pink-45: #e00661;
350
+ --color-pink-50: #f8076c;
351
+ --color-pink-55: #f91f7a;
352
+ --color-pink-60: #fa3889;
353
+ --color-pink-70: #fb6aa7;
354
+ --color-pink-80: #fc9cc4;
355
+ --color-pink-90: #fecde2;
356
+ --color-pink-95: #fee6f0;
357
+ --color-pink-99: #fffafc;
358
+ --color-red-10: #310602;
359
+ --color-red-20: #610d05;
360
+ --color-red-30: #921307;
361
+ --color-red-40: #c21a0a;
362
+ --color-red-45: #da1d0b;
363
+ --color-red-50: #f2200d;
364
+ --color-red-55: #f43625;
365
+ --color-red-60: #f54d3d;
366
+ --color-red-70: #f7796e;
367
+ --color-red-80: #faa69e;
368
+ --color-red-90: #fcd2cf;
369
+ --color-red-95: #fde8e7;
370
+ --color-red-99: #fffafa;
371
+ --color-orange-10: #331100;
372
+ --color-orange-20: #662200;
373
+ --color-orange-30: #993300;
374
+ --color-orange-40: #cc4400;
375
+ --color-orange-45: #e54d00;
376
+ --color-orange-50: #ff5500;
377
+ --color-orange-55: #ff661a;
378
+ --color-orange-60: #ff7733;
379
+ --color-orange-70: #ff9966;
380
+ --color-orange-80: #ffbb99;
381
+ --color-orange-90: #ffddcc;
382
+ --color-orange-95: #ffeee5;
383
+ --color-orange-99: #fffcfa;
384
+ --color-yellow-10: #302903;
385
+ --color-yellow-20: #615205;
386
+ --color-yellow-30: #917a08;
387
+ --color-yellow-40: #c2a30a;
388
+ --color-yellow-45: #dab80b;
389
+ --color-yellow-50: #f2cc0d;
390
+ --color-yellow-55: #f4d125;
391
+ --color-yellow-60: #f5d63d;
392
+ --color-yellow-70: #f7e06e;
393
+ --color-yellow-80: #faeb9e;
394
+ --color-yellow-90: #fcf5cf;
395
+ --color-yellow-95: #fefae7;
396
+ --color-yellow-99: #fffefa;
397
+ --color-lime-10: #2b3300;
398
+ --color-lime-20: #556600;
399
+ --color-lime-30: #809900;
400
+ --color-lime-40: #aacc00;
401
+ --color-lime-45: #bfe500;
402
+ --color-lime-50: #d5ff00;
403
+ --color-lime-55: #d9ff1a;
404
+ --color-lime-60: #ddff33;
405
+ --color-lime-70: #e6ff66;
406
+ --color-lime-80: #eeff99;
407
+ --color-lime-90: #f7ffcc;
408
+ --color-lime-95: #fbffe5;
409
+ --color-lime-99: #fefffa;
410
+ --color-green-10: #062d13;
411
+ --color-green-20: #0d5926;
412
+ --color-green-30: #138639;
413
+ --color-green-40: #1ab24d;
414
+ --color-green-45: #1dc956;
415
+ --color-green-50: #20df60;
416
+ --color-green-55: #36e270;
417
+ --color-green-60: #4de580;
418
+ --color-green-70: #79ec9f;
419
+ --color-green-80: #a6f2bf;
420
+ --color-green-90: #d2f9df;
421
+ --color-green-95: #e9fcef;
422
+ --color-green-99: #fbfefc;
423
+ --color-bright-green-10: #213003;
424
+ --color-bright-green-20: #426105;
425
+ --color-bright-green-30: #639108;
426
+ --color-bright-green-40: #84c10b;
427
+ --color-bright-green-45: #95da0c;
428
+ --color-bright-green-50: #a5f20d;
429
+ --color-bright-green-55: #aef325;
430
+ --color-bright-green-60: #b7f43e;
431
+ --color-bright-green-70: #c9f76e;
432
+ --color-bright-green-80: #dbfa9e;
433
+ --color-bright-green-90: #edfccf;
434
+ --color-bright-green-95: #f6fee7;
435
+ --color-bright-green-99: #fdfffa;
436
+ --color-teal-10: #062d20;
437
+ --color-teal-20: #0d5940;
438
+ --color-teal-30: #13865f;
439
+ --color-teal-40: #1ab27f;
440
+ --color-teal-45: #1dc98f;
441
+ --color-teal-50: #20df9f;
442
+ --color-teal-55: #36e2a9;
443
+ --color-teal-60: #4de5b2;
444
+ --color-teal-70: #79ecc5;
445
+ --color-teal-80: #a6f2d9;
446
+ --color-teal-90: #d2f9ec;
447
+ --color-teal-95: #e9fcf5;
448
+ --color-teal-99: #fbfefd;
449
+ --color-cyan-10: #002f33;
450
+ --color-cyan-20: #005e66;
451
+ --color-cyan-30: #008c99;
452
+ --color-cyan-40: #00bbcc;
453
+ --color-cyan-45: #00d2e5;
454
+ --color-cyan-50: #00eaff;
455
+ --color-cyan-55: #1aecff;
456
+ --color-cyan-60: #33eeff;
457
+ --color-cyan-70: #66f2ff;
458
+ --color-cyan-80: #99f7ff;
459
+ --color-cyan-90: #ccfbff;
460
+ --color-cyan-95: #e5fdff;
461
+ --color-cyan-99: #faffff;
462
+ }
463
+ }
464
+ @layer theme.tokens.color {
465
+ :root,
466
+ .theme-light {
467
+ --color-primary-default: var(--color-blue-55);
468
+ --color-primary-strong: var(--color-blue-45);
469
+ --color-primary-heavy: var(--color-blue-30);
470
+ --color-secondary-default: var(--color-blue-95);
471
+ --color-secondary-strong: var(--color-blue-90);
472
+ --color-secondary-heavy: var(--color-blue-80);
473
+ --color-tertiary-default: var(--color-cool-gray-95);
474
+ --color-tertiary-strong: var(--color-cool-gray-90);
475
+ --color-tertiary-heavy: var(--color-cool-gray-80);
476
+ }
477
+ }
478
+ @layer theme.tokens.color {
479
+ :root,
480
+ .theme-light {
481
+ --color-label-strong: var(--color-cool-gray-10);
482
+ --color-label-standard: var(--color-cool-gray-20);
483
+ --color-label-neutral: var(--color-cool-gray-50);
484
+ --color-label-alternative: var(--color-cool-gray-70);
485
+ --color-label-assistive: var(--color-cool-gray-80);
486
+ --color-label-disabled: var(--color-cool-gray-80);
487
+ }
488
+ }
489
+ @layer theme.tokens.color {
490
+ :root,
491
+ .theme-light {
492
+ --color-border-standard-cool-gray: var(--color-cool-gray-90);
493
+ --color-border-standard-blue: var(--color-blue-90);
494
+ --color-border-standard-strong: var(--color-cool-gray-75);
495
+ --color-border-standard-heavy: var(--color-cool-gray-20);
496
+ --color-border-standard-alternative: var(--color-cool-gray-80);
497
+ --color-border-standard-assistive: var(--color-cool-gray-90);
498
+ }
499
+ }
500
+ @layer theme.tokens.color {
501
+ :root,
502
+ .theme-light {
503
+ --color-bg-standard-cool-gray: var(--color-cool-gray-99);
504
+ --color-bg-alternative-cool-gray: var(--color-cool-gray-95);
505
+ --color-bg-standard-neutral: var(--color-neutral-99);
506
+ --color-bg-alternative-neutral: var(--color-neutral-95);
507
+ }
508
+ }
509
+ @layer theme.tokens.color {
510
+ :root,
511
+ .theme-light {
512
+ --color-bg-surface-static-white: var(--color-common-100);
513
+ --color-bg-surface-static-cool-gray: var(--color-cool-gray-99);
514
+ --color-bg-surface-static-blue: var(--color-blue-95);
515
+ --color-bg-surface-neutral: var(--color-neutral-95);
516
+ --color-bg-surface-standard: var(--color-cool-gray-95);
517
+ --color-bg-surface-strong: var(--color-neutral-80);
518
+ --color-bg-surface-heavy: var(--color-cool-gray-20);
519
+ }
520
+ }
521
+ @layer theme.tokens.color {
522
+ :root,
523
+ .theme-light {
524
+ --color-interaction-static: var(--color-common-100);
525
+ --color-interaction-disabled: var(--color-cool-gray-95);
526
+ }
527
+ }
528
+ @layer theme.tokens.color {
529
+ :root,
530
+ .theme-light {
531
+ --color-danger: var(--color-red-40);
532
+ --color-error: var(--color-red-45);
533
+ --color-warning: var(--color-yellow-50);
534
+ --color-success: var(--color-green-40);
535
+ --color-information: var(--color-blue-60);
536
+ --color-new: var(--color-red-50);
537
+ }
538
+ }
539
+ @layer theme.tokens.spacing {
540
+ :root {
541
+ --spacing-padding-1: 2px;
542
+ --spacing-padding-2: 4px;
543
+ --spacing-padding-3: 6px;
544
+ --spacing-padding-4: 8px;
545
+ --spacing-padding-5: 12px;
546
+ --spacing-padding-6: 16px;
547
+ --spacing-padding-7: 20px;
548
+ --spacing-padding-8: 24px;
549
+ --spacing-padding-9: 28px;
550
+ --spacing-padding-10: 32px;
551
+ --spacing-padding-11: 40px;
552
+ }
553
+ }
554
+ @layer theme.tokens.spacing {
555
+ :root {
556
+ --spacing-gap-1: 2px;
557
+ --spacing-gap-2: 4px;
558
+ --spacing-gap-3: 6px;
559
+ --spacing-gap-4: 8px;
560
+ --spacing-gap-5: 12px;
561
+ --spacing-gap-6: 16px;
562
+ --spacing-gap-7: 20px;
563
+ --spacing-gap-8: 24px;
564
+ --spacing-gap-9: 28px;
565
+ --spacing-gap-10: 32px;
566
+ --spacing-gap-11: 36px;
567
+ --spacing-gap-12: 40px;
568
+ --spacing-gap-13: 48px;
569
+ --spacing-gap-14: 64px;
570
+ --spacing-gap-15: 80px;
571
+ }
572
+ }
573
+ @layer theme.tokens.layout {
574
+ :root {
575
+ --theme-breakpoint-xsmall-start: 0px;
576
+ --theme-breakpoint-small-start: 768px;
577
+ --theme-breakpoint-medium-start: 992px;
578
+ --theme-breakpoint-large-start: 1200px;
579
+ }
580
+ }
581
+ @layer theme.tokens.layout {
582
+ :root {
583
+ --theme-size-xxsmall: 4px;
584
+ --theme-size-xsmall-1: 8px;
585
+ --theme-size-xsmall-2: 12px;
586
+ --theme-size-xsmall-3: 16px;
587
+ --theme-size-small-1: 20px;
588
+ --theme-size-small-2: 24px;
589
+ --theme-size-small-3: 32px;
590
+ --theme-size-medium-1: 40px;
591
+ --theme-size-medium-2: 48px;
592
+ --theme-size-medium-3: 56px;
593
+ --theme-size-medium-4: 64px;
594
+ --theme-size-large-1: 72px;
595
+ --theme-size-large-2: 80px;
596
+ --theme-size-xlarge-1: 96px;
597
+ --theme-size-xlarge-2: 120px;
598
+ }
599
+ }
600
+ @layer theme.tokens.layout {
601
+ :root {
602
+ --theme-radius-4x4: 1px;
603
+ --theme-radius-8x8: 2px;
604
+ --theme-radius-12x12: 2px;
605
+ --theme-radius-16x16: 2px;
606
+ --theme-radius-20x20: 4px;
607
+ --theme-radius-24x24: 4px;
608
+ --theme-radius-32x32: 4px;
609
+ --theme-radius-40x40: 6px;
610
+ --theme-radius-48x48: 6px;
611
+ --theme-radius-56x56: 8px;
612
+ --theme-radius-64x64: 10px;
613
+ --theme-radius-72x72: 12px;
614
+ --theme-radius-80x80: 16px;
615
+ --theme-radius-96x96: 16px;
616
+ --theme-radius-120x120: 16px;
617
+ --theme-radius-xxsmall: 1px;
618
+ --theme-radius-xsmall: 2px;
619
+ --theme-radius-small: 4px;
620
+ --theme-radius-medium-1: 6px;
621
+ --theme-radius-medium-2: 6px;
622
+ --theme-radius-medium-3: 8px;
623
+ --theme-radius-medium-4: 10px;
624
+ --theme-radius-large-1: 12px;
625
+ --theme-radius-large-2: 16px;
626
+ --theme-radius-xlarge: 16px;
627
+ }
628
+ }
629
+ @layer theme.tokens.typography {
630
+ :root {
631
+ --font-family-pretendard:
632
+ "Pretendard JP Variable", "Pretendard JP", "Pretendard Variable",
633
+ "Pretendard", "Noto Sans KR", "-apple-system", "BlinkMacSystemFont",
634
+ "Apple SD Gothic Neo", "Segoe UI", "Roboto", "Helvetica",
635
+ "Helvetica Neue", "Apple Color Emoji", "Segoe UI Emoji",
636
+ "Segoe UI Symbol", "Malgun Gothic", "맑은 고딕", "돋움", "dotum",
637
+ "Oxygen", "Oxygen-Sans", "Ubuntu", "Cantarell", "sans-serif";
638
+ --font-family-inter:
639
+ "InterVariable", "Inter", "-apple-system", "BlinkMacSystemFont",
640
+ "Segoe UI", "Roboto", "Helvetica", "Helvetica Neue", "Apple Color Emoji",
641
+ "Segoe UI Emoji", "Segoe UI Symbol", "Malgun Gothic", "맑은 고딕", "돋움",
642
+ "dotum", "Oxygen", "Oxygen-Sans", "Ubuntu", "Cantarell", "sans-serif";
643
+ --font-family-system:
644
+ "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica",
645
+ "Helvetica Neue", "Apple Color Emoji", "Segoe UI Emoji",
646
+ "Segoe UI Symbol", "Malgun Gothic", "맑은 고딕", "돋움", "dotum",
647
+ "Oxygen", "Oxygen-Sans", "Ubuntu", "Cantarell", "sans-serif";
648
+ --font-family-sans: var(--font-family-pretendard);
649
+ }
650
+ }
651
+ @layer theme.tokens.typography {
652
+ :root {
653
+ --font-display-large-size: 60px;
654
+ --font-display-large-line-height: 1.4em;
655
+ --font-display-large-letter-spacing: -0.2px;
656
+ --font-display-large-weight: 700;
657
+ --font-display-medium-size: 44px;
658
+ --font-display-medium-line-height: 1.4em;
659
+ --font-display-medium-letter-spacing: -0.2px;
660
+ --font-display-medium-weight: 700;
661
+ --font-display-small-size: 36px;
662
+ --font-display-small-line-height: 1.4em;
663
+ --font-display-small-letter-spacing: -0.2px;
664
+ --font-display-small-weight: 600;
665
+ }
666
+ }
667
+ @layer theme.tokens.typography {
668
+ :root {
669
+ --font-heading-xlarge-size: 40px;
670
+ --font-heading-xlarge-line-height: 1.4em;
671
+ --font-heading-xlarge-letter-spacing: -0.2px;
672
+ --font-heading-xlarge-weight: 600;
673
+ --font-heading-large-size: 32px;
674
+ --font-heading-large-line-height: 1.4em;
675
+ --font-heading-large-letter-spacing: -0.2px;
676
+ --font-heading-large-weight: 600;
677
+ --font-heading-medium-size: 24px;
678
+ --font-heading-medium-line-height: 1.4em;
679
+ --font-heading-medium-letter-spacing: 0px;
680
+ --font-heading-medium-weight: 600;
681
+ --font-heading-small-size: 19px;
682
+ --font-heading-small-line-height: 1.4em;
683
+ --font-heading-small-letter-spacing: 0px;
684
+ --font-heading-small-weight: 600;
685
+ --font-heading-xsmall-size: 17px;
686
+ --font-heading-xsmall-line-height: 1.5em;
687
+ --font-heading-xsmall-letter-spacing: 0px;
688
+ --font-heading-xsmall-weight: 600;
689
+ --font-heading-xxsmall-size: 15px;
690
+ --font-heading-xxsmall-line-height: 1.5em;
691
+ --font-heading-xxsmall-letter-spacing: 0px;
692
+ --font-heading-xxsmall-weight: 600;
693
+ }
694
+ }
695
+ @layer theme.tokens.typography {
696
+ :root {
697
+ --font-body-large-size: 19px;
698
+ --font-body-large-line-height: 1.5em;
699
+ --font-body-large-letter-spacing: 0px;
700
+ --font-body-large-weight: 600;
701
+ --font-body-medium-size: 17px;
702
+ --font-body-medium-line-height: 1.5em;
703
+ --font-body-medium-letter-spacing: 0px;
704
+ --font-body-medium-weight: 500;
705
+ --font-body-small-size: 15px;
706
+ --font-body-small-line-height: 1.5em;
707
+ --font-body-small-letter-spacing: 0px;
708
+ --font-body-small-weight: 400;
709
+ --font-body-xsmall-size: 13px;
710
+ --font-body-xsmall-line-height: 1.5em;
711
+ --font-body-xsmall-letter-spacing: 0px;
712
+ --font-body-xsmall-weight: 400;
713
+ }
714
+ }
715
+ @layer theme.tokens.typography {
716
+ :root {
717
+ --font-label-large-size: 16px;
718
+ --font-label-large-line-height: 1.5em;
719
+ --font-label-large-letter-spacing: 0px;
720
+ --font-label-large-weight: 400;
721
+ --font-label-medium-size: 14px;
722
+ --font-label-medium-line-height: 1.5em;
723
+ --font-label-medium-letter-spacing: 0px;
724
+ --font-label-medium-weight: 400;
725
+ --font-label-small-size: 13px;
726
+ --font-label-small-line-height: 1.5em;
727
+ --font-label-small-letter-spacing: 0px;
728
+ --font-label-small-weight: 500;
729
+ }
730
+ }
731
+ @layer theme.tokens.typography {
732
+ :root {
733
+ --font-caption-large-size: 12px;
734
+ --font-caption-large-line-height: 1.5em;
735
+ --font-caption-large-letter-spacing: 0px;
736
+ --font-caption-large-weight: 600;
737
+ --font-caption-medium-size: 11px;
738
+ --font-caption-medium-line-height: 1.5em;
739
+ --font-caption-medium-letter-spacing: 0px;
740
+ --font-caption-medium-weight: 500;
741
+ }
742
+ }
743
+ /**
744
+ * Radix Theme가 사용하는 CSS 변수에 foundation 토큰을 연결하기 위한 placeholder.
745
+ * - 추후 토큰 매핑이 확정되면, 실제 색상/타이포/간격 값을 아래에 정의한다.
746
+ */
747
+ /* ThemeProvider 기본 className(theme-root)와 Radix Theme 루트(.radix-themes)에 scope 지정 */
748
+ :where(.radix-themes, .theme-root, :root) {
749
+ /* Foundation 기본 폰트로 통일 */
750
+ --default-font-family: var(--font-body-medium-family, "Pretendard");
751
+ /* 서피스/라벨/피드백 계층을 foundation 시멘틱 토큰으로 변환 */
752
+ --color-background: var(--color-bg-surface-static-white);
753
+ --color-panel-solid: var(--color-bg-surface-static-white);
754
+ --color-panel-translucent: var(--color-bg-surface-neutral);
755
+ --color-surface: var(--color-bg-surface-standard);
756
+ --color-overlay: var(--color-border-standard-heavy);
757
+ --color-interaction-static: var(--color-interaction-static);
758
+ --color-interaction-disabled: var(--color-interaction-disabled);
759
+ --color-border: var(--color-border-standard-cool-gray);
760
+ --color-border-strong: var(--color-border-standard-strong);
761
+ --color-border-heavy: var(--color-border-standard-heavy);
762
+ /* Primary(blue) 팔레트를 foundation blue 단계로 재정의 */
763
+ --blue-1: var(--color-blue-99);
764
+ --blue-2: var(--color-blue-95);
765
+ --blue-3: var(--color-blue-90);
766
+ --blue-4: var(--color-blue-80);
767
+ --blue-5: var(--color-blue-70);
768
+ --blue-6: var(--color-blue-60);
769
+ --blue-7: var(--color-blue-55);
770
+ --blue-8: var(--color-blue-50);
771
+ --blue-9: var(--color-blue-45);
772
+ --blue-10: var(--color-blue-40);
773
+ --blue-11: var(--color-blue-30);
774
+ --blue-12: var(--color-blue-20);
775
+ --blue-contrast: var(--color-common-100);
776
+ --blue-surface: var(--color-bg-surface-static-blue);
777
+ --blue-indicator: var(--color-primary-default);
778
+ --blue-track: var(--color-secondary-strong);
779
+ /* Secondary(sky) 팔레트 → foundation secondary 토큰 */
780
+ --sky-1: var(--color-blue-99);
781
+ --sky-2: var(--color-blue-95);
782
+ --sky-3: var(--color-blue-90);
783
+ --sky-4: var(--color-blue-80);
784
+ --sky-5: var(--color-blue-70);
785
+ --sky-6: var(--color-blue-60);
786
+ --sky-7: var(--color-blue-55);
787
+ --sky-8: var(--color-blue-50);
788
+ --sky-9: var(--color-secondary-strong);
789
+ --sky-10: var(--color-secondary-heavy);
790
+ --sky-11: var(--color-secondary-default);
791
+ --sky-12: var(--color-blue-45);
792
+ --sky-contrast: var(--color-primary-heavy);
793
+ --sky-surface: var(--color-bg-surface-static-blue);
794
+ --sky-indicator: var(--color-secondary-strong);
795
+ --sky-track: var(--color-secondary-heavy);
796
+ /* Tertiary(gray) 팔레트 → cool gray 단계 */
797
+ --gray-1: var(--color-cool-gray-99);
798
+ --gray-2: var(--color-cool-gray-95);
799
+ --gray-3: var(--color-cool-gray-90);
800
+ --gray-4: var(--color-cool-gray-85);
801
+ --gray-5: var(--color-cool-gray-80);
802
+ --gray-6: var(--color-cool-gray-75);
803
+ --gray-7: var(--color-cool-gray-70);
804
+ --gray-8: var(--color-cool-gray-65);
805
+ --gray-9: var(--color-cool-gray-60);
806
+ --gray-10: var(--color-cool-gray-55);
807
+ --gray-11: var(--color-cool-gray-45);
808
+ --gray-12: var(--color-cool-gray-20);
809
+ --gray-contrast: var(--color-label-strong);
810
+ --gray-surface: var(--color-bg-surface-standard);
811
+ --gray-indicator: var(--color-label-neutral);
812
+ --gray-track: var(--color-label-assistive);
813
+ /* 공간 단위(spacing)는 foundation gap/padding 토큰으로 재정의 */
814
+ --space-1: var(--spacing-gap-1);
815
+ --space-2: var(--spacing-gap-2);
816
+ --space-3: var(--spacing-gap-3);
817
+ --space-4: var(--spacing-gap-4);
818
+ --space-5: var(--spacing-gap-8);
819
+ --space-6: var(--spacing-gap-10);
820
+ --space-7: var(--spacing-gap-11);
821
+ --space-8: var(--spacing-gap-12);
822
+ --space-9: var(--spacing-gap-14);
823
+ /* 글꼴 스케일을 foundation 타이포 토큰으로 매핑 */
824
+ --font-size-1: var(--font-caption-large-size);
825
+ --font-size-2: var(--font-label-medium-size);
826
+ --font-size-3: var(--font-label-large-size);
827
+ --font-size-4: var(--font-heading-xsmall-size);
828
+ --font-size-5: var(--font-heading-small-size);
829
+ --font-size-6: var(--font-heading-medium-size);
830
+ --font-size-7: var(--font-heading-large-size);
831
+ --font-size-8: var(--font-heading-xlarge-size);
832
+ --font-size-9: var(--font-display-large-size);
833
+ --line-height-1: var(--font-caption-large-line-height);
834
+ --line-height-2: var(--font-label-medium-line-height);
835
+ --line-height-3: var(--font-label-large-line-height);
836
+ --line-height-4: var(--font-heading-xsmall-line-height);
837
+ --line-height-5: var(--font-heading-small-line-height);
838
+ --line-height-6: var(--font-heading-medium-line-height);
839
+ --line-height-7: var(--font-heading-large-line-height);
840
+ --line-height-8: var(--font-heading-xlarge-line-height);
841
+ --line-height-9: var(--font-display-large-line-height);
842
+ --letter-spacing-1: var(--font-caption-large-letter-spacing);
843
+ --letter-spacing-2: var(--font-label-medium-letter-spacing);
844
+ --letter-spacing-3: var(--font-label-large-letter-spacing);
845
+ --letter-spacing-4: var(--font-heading-xsmall-letter-spacing);
846
+ --letter-spacing-5: var(--font-heading-small-letter-spacing);
847
+ --letter-spacing-6: var(--font-heading-medium-letter-spacing);
848
+ --letter-spacing-7: var(--font-heading-large-letter-spacing);
849
+ --letter-spacing-8: var(--font-heading-xlarge-letter-spacing);
850
+ --letter-spacing-9: var(--font-display-large-letter-spacing);
851
+ --font-weight-light: var(--font-label-small-weight);
852
+ --font-weight-regular: var(--font-body-small-weight);
853
+ --font-weight-medium: var(--font-body-medium-weight);
854
+ --font-weight-bold: var(--font-display-large-weight);
855
+ --default-font-family: var(--font-body-medium-family, "Pretendard");
856
+ --default-font-size: var(--font-body-medium-size);
857
+ --default-font-style: normal;
858
+ --default-font-weight: var(--font-body-medium-weight);
859
+ --default-line-height: var(--font-body-medium-line-height);
860
+ --default-letter-spacing: var(--font-body-medium-letter-spacing);
861
+ --default-leading-trim-start: 0.42em;
862
+ --default-leading-trim-end: 0.36em;
863
+ --heading-font-family: var(--font-body-medium-family, "Pretendard");
864
+ --heading-font-size-adjust: 1;
865
+ --heading-font-style: normal;
866
+ --heading-leading-trim-start: var(--default-leading-trim-start);
867
+ --heading-leading-trim-end: var(--default-leading-trim-end);
868
+ --heading-letter-spacing: var(--font-heading-small-letter-spacing);
869
+ --heading-line-height-1: var(--font-heading-xxsmall-line-height);
870
+ --heading-line-height-2: var(--font-heading-xsmall-line-height);
871
+ --heading-line-height-3: var(--font-heading-small-line-height);
872
+ --heading-line-height-4: var(--font-heading-medium-line-height);
873
+ --heading-line-height-5: var(--font-heading-large-line-height);
874
+ --heading-line-height-6: var(--font-heading-xlarge-line-height);
875
+ --heading-line-height-7: var(--font-display-small-line-height, 1.4em);
876
+ --heading-line-height-8: var(--font-display-medium-line-height);
877
+ --heading-line-height-9: var(--font-display-large-line-height);
878
+ --code-font-family:
879
+ "Menlo", "Consolas", "Bitstream Vera Sans Mono", monospace;
880
+ --code-font-style: normal;
881
+ --code-letter-spacing: -0.007em;
882
+ --strong-font-family: var(--font-body-medium-family, "Pretendard");
883
+ --strong-font-weight: var(--font-display-medium-weight, 700);
884
+ --em-font-family: "Times New Roman", "Times", serif;
885
+ --quote-font-family: "Times New Roman", "Times", serif;
886
+ --tab-active-letter-spacing: var(--font-label-medium-letter-spacing);
887
+ --tab-inactive-letter-spacing: var(--font-label-medium-letter-spacing);
888
+ --tab-active-word-spacing: 0em;
889
+ --tab-inactive-word-spacing: 0em;
890
+ /* 입력/텍스트 요소에서 커서 컬러는 본문 텍스트와 동일하게 유지한다. */
891
+ }
892
+ :where(.radix-themes, .theme-root, :root) input,
893
+ :where(.radix-themes, .theme-root, :root) textarea {
894
+ caret-color: var(--color-label-strong);
895
+ }
896
+ :where(.radix-themes, .theme-root, :root) {
897
+ /* 커서/컨테이너 기본값 */
898
+ --cursor-button: default;
899
+ --cursor-checkbox: default;
900
+ --cursor-disabled: not-allowed;
901
+ --cursor-link: pointer;
902
+ --cursor-menu-item: default;
903
+ --cursor-radio: default;
904
+ --cursor-slider-thumb: default;
905
+ --cursor-slider-thumb-active: default;
906
+ --cursor-switch: default;
907
+ --container-1: 448px;
908
+ --container-2: 688px;
909
+ --container-3: 880px;
910
+ --container-4: 1136px;
911
+ --scrollarea-scrollbar-horizontal-margin-top: var(--space-1);
912
+ --scrollarea-scrollbar-horizontal-margin-bottom: var(--space-1);
913
+ --scrollarea-scrollbar-horizontal-margin-left: var(--space-1);
914
+ --scrollarea-scrollbar-horizontal-margin-right: var(--space-1);
915
+ --scrollarea-scrollbar-vertical-margin-top: var(--space-1);
916
+ --scrollarea-scrollbar-vertical-margin-bottom: var(--space-1);
917
+ --scrollarea-scrollbar-vertical-margin-left: var(--space-1);
918
+ --scrollarea-scrollbar-vertical-margin-right: var(--space-1);
919
+ --segmented-control-transition-duration: 100ms;
920
+ --spinner-animation-duration: 800ms;
921
+ --spinner-opacity: 0.65;
922
+ overflow-wrap: break-word;
923
+ font-family: var(--default-font-family);
924
+ font-size: var(--default-font-size);
925
+ font-weight: var(--default-font-weight);
926
+ font-style: var(--default-font-style);
927
+ line-height: var(--default-line-height);
928
+ letter-spacing: var(--default-letter-spacing);
929
+ -webkit-text-size-adjust: none;
930
+ text-size-adjust: none;
931
+ -webkit-font-smoothing: antialiased;
932
+ -moz-osx-font-smoothing: grayscale;
933
+ color: var(--gray-12);
934
+ }
935
+
936
+ /* Radix Themes reset(`.rt-reset`)이 foundation reset보다 우선하지 않도록 기본 박스 모델 재정의 */
937
+ :where(.radix-themes, .theme-root) :is(.rt-reset, .rt-reset::before, .rt-reset::after) {
938
+ box-sizing: border-box;
939
+ margin: 0;
940
+ padding: 0;
941
+ border: 0;
942
+ }
943
+
944
+ /* 모든 primitives component SCSS를 한 번에 노출해 서비스 import 부담을 줄인다. */
945
+ /* TODO(alternate): 스타일을 SOT 토큰 값으로 정의한다. */
946
+ /* Badge 토큰을 foundation 변수에 맞춰 한 번 더 래핑해 override 여지를 둔다. */
947
+ :where(.radix-themes, .theme-root, :root) {
948
+ --theme-badge-height-xsmall: var(--theme-size-small-1, 20px);
949
+ --theme-badge-height-small: var(--theme-size-small-2, 24px);
950
+ --theme-badge-padding-inline-xsmall: var(--spacing-padding-3, 6px);
951
+ --theme-badge-padding-inline-small: var(--spacing-padding-4, 8px);
952
+ --theme-badge-radius: var(--theme-radius-medium-1, 6px);
953
+ --theme-badge-font-family: var(--font-caption-medium-family, inherit);
954
+ --theme-badge-font-size: var(--font-caption-medium-size, 11px);
955
+ --theme-badge-font-weight: var(--font-caption-medium-weight, 400);
956
+ --theme-badge-line-height: var(--font-caption-medium-line-height, 1.5);
957
+ --theme-badge-letter-spacing: var(--font-caption-medium-letter-spacing, 0);
958
+ --theme-badge-dot-size: var(--spacing-gap-3, 8px);
959
+ }
960
+
961
+ .badge {
962
+ --badge-height: var(--theme-badge-height-xsmall);
963
+ --badge-padding-inline: var(--theme-badge-padding-inline-xsmall);
964
+ --badge-gap: var(--spacing-gap-1, 4px);
965
+ --badge-fill-bg-color: var(--color-primary-default, #1a6aff);
966
+ --badge-fill-label-color: var(--color-common-100, #ffffff);
967
+ --badge-outline-border-color: var(--color-primary-default, #1a6aff);
968
+ --badge-outline-label-color: var(--color-primary-default, #1a6aff);
969
+ --badge-dot-color: var(--color-primary-default, #1a6aff);
970
+ --badge-dot-size: var(--theme-badge-dot-size);
971
+ display: flex;
972
+ align-items: center;
973
+ justify-content: center;
974
+ gap: var(--badge-gap);
975
+ height: var(--badge-height);
976
+ padding-inline: var(--badge-padding-inline);
977
+ padding-block: 0;
978
+ border-radius: var(--theme-badge-radius);
979
+ border: 0;
980
+ font-family: var(--theme-badge-font-family);
981
+ font-size: var(--theme-badge-font-size);
982
+ font-weight: var(--theme-badge-font-weight);
983
+ line-height: 1;
984
+ letter-spacing: var(--theme-badge-letter-spacing);
985
+ white-space: nowrap;
986
+ box-sizing: border-box;
987
+ margin: 0;
988
+ width: fit-content;
989
+ }
990
+
991
+ .badge:where([data-size=small]) {
992
+ --badge-height: var(--theme-badge-height-small);
993
+ --badge-padding-inline: var(--theme-badge-padding-inline-small);
994
+ }
995
+
996
+ .badge:where([data-style=fill]) {
997
+ background-color: var(--badge-fill-bg-color);
998
+ color: var(--badge-fill-label-color);
999
+ border-color: transparent;
1000
+ }
1001
+
1002
+ .badge:where([data-style=outlined]) {
1003
+ background-color: var(--color-bg-surface-static-white, #ffffff);
1004
+ border-width: 1px;
1005
+ border-style: solid;
1006
+ border-color: var(--badge-outline-border-color);
1007
+ color: var(--badge-outline-label-color);
1008
+ }
1009
+
1010
+ .badge:where([data-style=dot]) {
1011
+ padding: 0;
1012
+ border-width: 0;
1013
+ width: var(--badge-dot-size);
1014
+ height: var(--badge-dot-size);
1015
+ min-width: 0;
1016
+ border-radius: var(--badge-dot-size);
1017
+ background-color: transparent;
1018
+ }
1019
+
1020
+ .badge-dot {
1021
+ width: var(--badge-dot-size);
1022
+ height: var(--badge-dot-size);
1023
+ border-radius: 999px;
1024
+ background-color: var(--badge-dot-color);
1025
+ flex-shrink: 0;
1026
+ }
1027
+
1028
+ .badge-label {
1029
+ display: inline-flex;
1030
+ align-items: center;
1031
+ color: inherit;
1032
+ line-height: 1;
1033
+ }
1034
+
1035
+ .badge:where([data-style=dot]) .badge-label {
1036
+ font-size: 0;
1037
+ line-height: 0;
1038
+ height: 0;
1039
+ width: 0;
1040
+ overflow: hidden;
1041
+ }
1042
+
1043
+ /* fill intent 별 배경/라벨 컬러 정의 */
1044
+ .badge:where([data-style=fill][data-intent=primary]) {
1045
+ --badge-fill-bg-color: var(--color-primary-default, #1a6aff);
1046
+ --badge-fill-label-color: var(--color-common-100, #ffffff);
1047
+ }
1048
+
1049
+ .badge:where([data-style=fill][data-intent=secondary]) {
1050
+ --badge-fill-bg-color: var(--color-secondary-default, #e5eeff);
1051
+ --badge-fill-label-color: var(--color-primary-default, #1a6aff);
1052
+ }
1053
+
1054
+ .badge:where([data-style=fill][data-intent=tertiary]) {
1055
+ --badge-fill-bg-color: var(--color-cool-gray-10, #18191b);
1056
+ --badge-fill-label-color: var(--color-common-100, #ffffff);
1057
+ }
1058
+
1059
+ .badge:where([data-style=fill][data-intent=gray]) {
1060
+ --badge-fill-bg-color: var(--color-bg-surface-neutral, #f2f2f2);
1061
+ --badge-fill-label-color: var(--color-label-neutral, #797e86);
1062
+ }
1063
+
1064
+ .badge:where([data-style=fill][data-intent=green]) {
1065
+ --badge-fill-bg-color: var(--color-green-95, #e9fcef);
1066
+ --badge-fill-label-color: var(--color-green-45, #1dc956);
1067
+ }
1068
+
1069
+ .badge:where([data-style=fill][data-intent=yellow]) {
1070
+ --badge-fill-bg-color: var(--color-yellow-95, #fefae7);
1071
+ --badge-fill-label-color: var(--color-yellow-45, #dab80b);
1072
+ }
1073
+
1074
+ .badge:where([data-style=fill][data-intent=orange]) {
1075
+ --badge-fill-bg-color: var(--color-orange-95, #ffeee5);
1076
+ --badge-fill-label-color: var(--color-orange-55, #ff661a);
1077
+ }
1078
+
1079
+ .badge:where([data-style=fill][data-intent=red]) {
1080
+ --badge-fill-bg-color: var(--color-red-95, #fde8e7);
1081
+ --badge-fill-label-color: var(--color-red-55, #f43625);
1082
+ }
1083
+
1084
+ /* outlined intent 별 border/label 컬러 정의 */
1085
+ .badge:where([data-style=outlined][data-intent=primary]) {
1086
+ --badge-outline-border-color: var(--color-primary-default, #1a6aff);
1087
+ --badge-outline-label-color: var(--color-primary-default, #1a6aff);
1088
+ }
1089
+
1090
+ .badge:where([data-style=outlined][data-intent=secondary]) {
1091
+ --badge-outline-border-color: var(--color-border-standard-blue, #ccdeff);
1092
+ --badge-outline-label-color: var(--color-primary-strong, #0050e5);
1093
+ }
1094
+
1095
+ .badge:where([data-style=outlined][data-intent=tertiary]) {
1096
+ --badge-outline-border-color: var(--color-border-standard-heavy, #313235);
1097
+ --badge-outline-label-color: var(--color-label-strong, #18191b);
1098
+ }
1099
+
1100
+ .badge:where([data-style=outlined][data-intent=gray]) {
1101
+ --badge-outline-border-color: var(--color-border-standard-assistive, #e4e5e7);
1102
+ --badge-outline-label-color: var(--color-label-standard, #3d3f43);
1103
+ }
1104
+
1105
+ .badge:where([data-style=outlined][data-intent=green]) {
1106
+ --badge-outline-border-color: var(--color-green-45, #1dc956);
1107
+ --badge-outline-label-color: var(--color-green-45, #1dc956);
1108
+ }
1109
+
1110
+ .badge:where([data-style=outlined][data-intent=yellow]) {
1111
+ --badge-outline-border-color: var(--color-yellow-60, #f5d63d);
1112
+ --badge-outline-label-color: var(--color-yellow-45, #dab80b);
1113
+ }
1114
+
1115
+ .badge:where([data-style=outlined][data-intent=orange]) {
1116
+ --badge-outline-border-color: var(--color-orange-70, #ff9966);
1117
+ --badge-outline-label-color: var(--color-orange-55, #ff661a);
1118
+ }
1119
+
1120
+ .badge:where([data-style=outlined][data-intent=red]) {
1121
+ --badge-outline-border-color: var(--color-red-70, #f7796e);
1122
+ --badge-outline-label-color: var(--color-red-55, #f43625);
1123
+ }
1124
+
1125
+ /* dot tone 별 포인트 컬러 */
1126
+ .badge:where([data-style=dot][data-tone=primary]) {
1127
+ --badge-dot-color: var(--color-primary-default, #1a6aff);
1128
+ }
1129
+
1130
+ .badge:where([data-style=dot][data-tone=feedback]) {
1131
+ --badge-dot-color: var(--color-red-55, #f43625);
1132
+ }
1133
+
1134
+ :root {
1135
+ /* spacing */
1136
+ --theme-button-gap-1: var(--spacing-gap-1);
1137
+ --theme-button-gap-2: var(--spacing-gap-2);
1138
+ --theme-button-gap-3: var(--spacing-gap-3);
1139
+ --theme-button-padding-1: var(--spacing-padding-1);
1140
+ --theme-button-padding-2: var(--spacing-padding-2);
1141
+ --theme-button-padding-3: var(--spacing-padding-3);
1142
+ --theme-button-padding-4: var(--spacing-padding-4);
1143
+ --theme-button-padding-5: var(--spacing-padding-5);
1144
+ --theme-button-padding-6: var(--spacing-padding-6);
1145
+ --theme-button-padding-7: var(--spacing-padding-7);
1146
+ --theme-button-padding-9: var(--spacing-padding-9);
1147
+ --theme-button-min-width: var(--theme-size-small-2);
1148
+ --theme-button-text-padding-block: var(--spacing-padding-4, 8px);
1149
+ --theme-button-text-padding-inline-small: var(--spacing-padding-4, 8px);
1150
+ --theme-button-text-padding-inline-medium: var(--spacing-padding-5, 12px);
1151
+ --theme-button-text-padding-inline-large: var(--spacing-padding-5, 12px);
1152
+ --theme-button-text-min-height-small: var(--theme-size-small-1, 20px);
1153
+ --theme-button-text-min-height-medium: var(--theme-size-small-2, 24px);
1154
+ --theme-button-text-min-height-large: var(--theme-size-small-3, 32px);
1155
+ --theme-button-text-radius: var(--theme-radius-small, 4px);
1156
+ --theme-button-round-padding-inline-small: var(--spacing-padding-5, 12px);
1157
+ --theme-button-round-padding-inline-medium: var(--spacing-padding-6, 16px);
1158
+ --theme-button-round-padding-inline-large: var(--spacing-padding-7, 20px);
1159
+ --theme-button-round-padding-block: var(--spacing-padding-2, 4px);
1160
+ --theme-button-round-min-height-small: var(--theme-size-small-2, 24px);
1161
+ --theme-button-round-min-height-medium: var(--theme-size-small-3, 32px);
1162
+ --theme-button-round-min-height-large: var(--theme-size-medium-1, 40px);
1163
+ --theme-button-round-radius-small: var(--theme-radius-xlarge-2, 16px);
1164
+ --theme-button-round-radius-medium: var(--theme-radius-xlarge-2, 16px);
1165
+ --theme-button-round-radius-large: 30px;
1166
+ /* size/radius */
1167
+ --theme-button-size-small-1: var(--theme-size-small-1);
1168
+ --theme-button-size-small-2: var(--theme-size-small-2);
1169
+ --theme-button-size-small-3: var(--theme-size-small-3);
1170
+ --theme-button-size-medium-1: var(--theme-size-medium-1);
1171
+ --theme-button-size-medium-2: var(--theme-size-medium-2);
1172
+ --theme-button-size-medium-3: var(--theme-size-medium-3);
1173
+ --theme-button-radius-medium-1: var(--theme-radius-medium-1);
1174
+ --theme-button-radius-medium-3: var(--theme-radius-medium-3);
1175
+ --theme-button-radius-large-1: var(--theme-radius-large-1);
1176
+ --theme-button-radius-large-2: var(--theme-radius-large-2);
1177
+ --theme-button-radius-small: var(--theme-radius-small);
1178
+ --theme-button-radius-xlarge: var(--theme-radius-xlarge);
1179
+ /* typography */
1180
+ --theme-button-font-body-medium-family: var(--font-body-medium-family);
1181
+ --theme-button-font-body-medium-size: var(--font-body-medium-size);
1182
+ --theme-button-font-body-medium-weight: var(--font-body-medium-weight);
1183
+ --theme-button-font-body-medium-line-height: var(
1184
+ --font-body-medium-line-height
1185
+ );
1186
+ --theme-button-font-body-medium-letter-spacing: var(
1187
+ --font-body-medium-letter-spacing
1188
+ );
1189
+ --theme-button-font-label-medium-size: var(--font-label-medium-size);
1190
+ --theme-button-font-label-medium-weight: var(--font-label-medium-weight);
1191
+ --theme-button-font-label-medium-line-height: var(
1192
+ --font-label-medium-line-height
1193
+ );
1194
+ --theme-button-font-label-medium-letter-spacing: var(
1195
+ --font-label-medium-letter-spacing
1196
+ );
1197
+ --theme-button-font-label-large-size: var(--font-label-large-size);
1198
+ --theme-button-font-label-large-weight: var(--font-label-large-weight);
1199
+ --theme-button-font-label-large-line-height: var(
1200
+ --font-label-large-line-height
1201
+ );
1202
+ --theme-button-font-label-large-letter-spacing: var(
1203
+ --font-label-large-letter-spacing
1204
+ );
1205
+ --theme-button-font-body-large-size: var(--font-body-large-size);
1206
+ --theme-button-font-body-large-weight: var(--font-body-large-weight);
1207
+ --theme-button-font-body-large-line-height: var(
1208
+ --font-body-large-line-height
1209
+ );
1210
+ --theme-button-font-body-large-letter-spacing: var(
1211
+ --font-body-large-letter-spacing
1212
+ );
1213
+ --theme-button-font-weight: 400;
1214
+ /* colors */
1215
+ --theme-button-color-neutral-base: var(--color-neutral-20);
1216
+ --theme-button-color-common-100: var(--color-common-100);
1217
+ --theme-button-color-primary-default: var(--color-primary-default);
1218
+ --theme-button-color-primary-strong: var(--color-primary-strong);
1219
+ --theme-button-color-primary-heavy: var(--color-primary-heavy);
1220
+ --theme-button-color-secondary-default: var(--color-secondary-default);
1221
+ --theme-button-color-secondary-strong: var(--color-secondary-strong);
1222
+ --theme-button-color-secondary-heavy: var(--color-secondary-heavy);
1223
+ --theme-button-color-tertiary-default: var(--color-tertiary-default);
1224
+ --theme-button-color-tertiary-strong: var(--color-tertiary-strong);
1225
+ --theme-button-color-tertiary-heavy: var(--color-tertiary-heavy);
1226
+ --theme-button-color-blue-90: var(--color-blue-90);
1227
+ --theme-button-color-blue-50: var(--color-blue-50);
1228
+ --theme-button-color-blue-45: var(--color-blue-45);
1229
+ --theme-button-overlay-solid-tertiary-bg: var(--color-bg-surface-strong);
1230
+ /* Confirm dialog cancel 버튼을 위한 solid tertiary 색상 정의 */
1231
+ --theme-button-tertiary-solid-bg: var(--color-bg-surface-neutral);
1232
+ --theme-button-tertiary-solid-hover-bg: var(--color-bg-surface-strong);
1233
+ --theme-button-tertiary-solid-pressed-bg: var(--color-bg-surface-strong);
1234
+ --theme-button-tertiary-solid-foreground: var(--color-label-neutral);
1235
+ --theme-button-secondary-solid-bg: var(--color-blue-95, #e5eeff);
1236
+ --theme-button-secondary-solid-hover-bg: #dbe9ff;
1237
+ --theme-button-secondary-solid-pressed-bg: #ccdeff;
1238
+ --theme-button-color-cool-gray-90: var(--color-cool-gray-90);
1239
+ --theme-button-color-cool-gray-95: var(--color-cool-gray-95);
1240
+ --theme-button-color-cool-gray-10: var(--color-cool-gray-10);
1241
+ --theme-button-color-bg-surface-standard: var(--color-bg-surface-standard);
1242
+ --theme-button-color-bg-alternative-cool-gray: var(
1243
+ --color-bg-alternative-cool-gray
1244
+ );
1245
+ --theme-button-color-bg-surface-strong: var(--color-bg-surface-strong);
1246
+ --theme-button-color-label-disabled: var(--color-label-disabled);
1247
+ /* overlays */
1248
+ --theme-button-overlay-solid-secondary-bg: var(--color-blue-90);
1249
+ --theme-button-overlay-outlined-primary-bg: var(--color-blue-90);
1250
+ --theme-button-overlay-outlined-secondary-bg: var(--color-cool-gray-95);
1251
+ --theme-button-overlay-outlined-tertiary-bg: var(--color-cool-gray-95);
1252
+ }
1253
+
1254
+ /* Primitives 버튼 공통 스타일 */
1255
+ .button {
1256
+ display: flex;
1257
+ align-items: center;
1258
+ justify-content: center;
1259
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1260
+ width: fit-content;
1261
+ min-width: var(--theme-button-min-width, var(--theme-size-small-2, 24px));
1262
+ min-height: var(--button-min-height, auto);
1263
+ padding-inline: var(--button-padding-inline, var(--theme-button-padding-4, var(--spacing-padding-4, 16px)));
1264
+ padding-block: var(--button-padding-block, var(--theme-button-padding-2, var(--spacing-padding-2, 4px)));
1265
+ border-radius: var(--button-border-radius, var(--theme-button-radius-medium-1, var(--theme-radius-medium-1, 8px)));
1266
+ border: 1px solid transparent;
1267
+ background-color: transparent;
1268
+ color: var(--theme-button-color-neutral-base, var(--color-neutral-20));
1269
+ box-shadow: none;
1270
+ font-family: var(--theme-button-font-body-medium-family, var(--font-body-medium-family, "Pretendard"));
1271
+ font-size: var(--theme-button-font-body-medium-size, var(--font-body-medium-size, 16px));
1272
+ font-weight: var(--theme-button-font-weight, 400); /* 버튼 텍스트는 스케일과 무관하게 weight 400 유지 */
1273
+ line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 24px));
1274
+ letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1275
+ filter: none;
1276
+ cursor: pointer;
1277
+ }
1278
+
1279
+ .button.button-block {
1280
+ width: 100%;
1281
+ }
1282
+
1283
+ .button[aria-busy=true] {
1284
+ pointer-events: none;
1285
+ cursor: progress;
1286
+ }
1287
+
1288
+ .button-icon,
1289
+ .button-label,
1290
+ .button-left,
1291
+ .button-right {
1292
+ display: inline-flex;
1293
+ align-items: center;
1294
+ justify-content: center;
1295
+ }
1296
+
1297
+ .button.button-fill-solid.button-priority-primary {
1298
+ background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1299
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1300
+ color: var(--theme-button-color-common-100, var(--color-common-100));
1301
+ }
1302
+ .button.button-fill-solid.button-priority-primary:disabled, .button.button-fill-solid.button-priority-primary[aria-disabled=true] {
1303
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1304
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1305
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1306
+ }
1307
+ .button.button-fill-solid.button-priority-primary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-primary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1308
+ background-color: var(--theme-button-color-blue-50, var(--color-blue-50));
1309
+ border-color: var(--theme-button-color-blue-50, var(--color-blue-50));
1310
+ }
1311
+ .button.button-fill-solid.button-priority-primary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-primary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1312
+ background-color: var(--theme-button-color-blue-45, var(--color-blue-45));
1313
+ border-color: var(--theme-button-color-blue-45, var(--color-blue-45));
1314
+ }
1315
+
1316
+ .button.button-fill-outlined.button-priority-primary {
1317
+ background-color: transparent;
1318
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1319
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1320
+ }
1321
+ .button.button-fill-outlined.button-priority-primary:disabled, .button.button-fill-outlined.button-priority-primary[aria-disabled=true] {
1322
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1323
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1324
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1325
+ }
1326
+ .button.button-fill-outlined.button-priority-primary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1327
+ background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1328
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1329
+ }
1330
+ .button.button-fill-outlined.button-priority-primary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1331
+ background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1332
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1333
+ }
1334
+
1335
+ .button.button-fill-solid.button-priority-secondary {
1336
+ background-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1337
+ border-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1338
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1339
+ }
1340
+ .button.button-fill-solid.button-priority-secondary:disabled, .button.button-fill-solid.button-priority-secondary[aria-disabled=true] {
1341
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1342
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1343
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1344
+ }
1345
+ .button.button-fill-solid.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1346
+ background-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1347
+ border-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1348
+ }
1349
+ .button.button-fill-solid.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1350
+ background-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1351
+ border-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1352
+ }
1353
+
1354
+ .button.button-fill-outlined.button-priority-secondary {
1355
+ background-color: transparent;
1356
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1357
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1358
+ }
1359
+ .button.button-fill-outlined.button-priority-secondary:disabled, .button.button-fill-outlined.button-priority-secondary[aria-disabled=true] {
1360
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1361
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1362
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1363
+ }
1364
+ .button.button-fill-outlined.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1365
+ background-color: var(--theme-button-color-blue-90, var(--color-blue-90));
1366
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1367
+ }
1368
+ .button.button-fill-outlined.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1369
+ background-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1370
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1371
+ }
1372
+
1373
+ .button.button-fill-solid.button-priority-tertiary {
1374
+ background-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1375
+ border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1376
+ color: var(--theme-button-tertiary-solid-foreground, var(--color-label-neutral));
1377
+ }
1378
+ .button.button-fill-solid.button-priority-tertiary:disabled, .button.button-fill-solid.button-priority-tertiary[aria-disabled=true] {
1379
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1380
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1381
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1382
+ }
1383
+ .button.button-fill-solid.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1384
+ background-color: var(--theme-button-tertiary-solid-hover-bg, var(--color-bg-surface-static-cool-gray));
1385
+ border-color: var(--theme-button-tertiary-solid-hover-bg, var(--color-bg-surface-static-cool-gray));
1386
+ }
1387
+ .button.button-fill-solid.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1388
+ background-color: var(--theme-button-tertiary-solid-pressed-bg, var(--color-bg-surface-strong));
1389
+ border-color: var(--theme-button-tertiary-solid-pressed-bg, var(--color-bg-surface-strong));
1390
+ }
1391
+
1392
+ .button.button-fill-outlined.button-priority-tertiary {
1393
+ background-color: transparent;
1394
+ color: var(--theme-button-color-cool-gray-10, var(--color-cool-gray-10));
1395
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1396
+ }
1397
+ .button.button-fill-outlined.button-priority-tertiary:disabled, .button.button-fill-outlined.button-priority-tertiary[aria-disabled=true] {
1398
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1399
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1400
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1401
+ }
1402
+ .button.button-fill-outlined.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1403
+ background-color: var(--theme-button-color-cool-gray-95, var(--color-cool-gray-95));
1404
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1405
+ }
1406
+ .button.button-fill-outlined.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1407
+ background-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1408
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1409
+ }
1410
+
1411
+ .button.button-size-small {
1412
+ padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1413
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1414
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1415
+ font-size: var(--theme-button-font-label-medium-size, var(--font-label-medium-size, 14px));
1416
+ font-weight: var(--theme-button-font-label-medium-weight, var(--font-label-medium-weight, 400));
1417
+ line-height: var(--theme-button-font-label-medium-line-height, var(--font-label-medium-line-height, 1.5em));
1418
+ letter-spacing: var(--theme-button-font-label-medium-letter-spacing, var(--font-label-medium-letter-spacing, 0px));
1419
+ min-height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1420
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1421
+ }
1422
+
1423
+ .button.button-size-medium {
1424
+ padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1425
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1426
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1427
+ font-size: var(--theme-button-font-label-large-size, var(--font-label-large-size, 16px));
1428
+ font-weight: var(--theme-button-font-label-large-weight, var(--font-label-large-weight, 400));
1429
+ line-height: var(--theme-button-font-label-large-line-height, var(--font-label-large-line-height, 1.5em));
1430
+ letter-spacing: var(--theme-button-font-label-large-letter-spacing, var(--font-label-large-letter-spacing, 0px));
1431
+ min-height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1432
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1433
+ }
1434
+
1435
+ .button.button-size-large {
1436
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1437
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1438
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1439
+ font-size: var(--theme-button-font-body-medium-size, var(--font-body-medium-size, 17px));
1440
+ font-weight: var(--theme-button-font-body-medium-weight, var(--font-body-medium-weight, 500));
1441
+ line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 1.5em));
1442
+ letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1443
+ min-height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1444
+ border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1445
+ }
1446
+
1447
+ .button.button-size-xlarge {
1448
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1449
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1450
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1451
+ font-size: var(--theme-button-font-body-large-size, var(--font-body-large-size, 19px));
1452
+ font-weight: var(--theme-button-font-body-large-weight, var(--font-body-large-weight, 600));
1453
+ line-height: var(--theme-button-font-body-large-line-height, var(--font-body-large-line-height, 1.5em));
1454
+ letter-spacing: var(--theme-button-font-body-large-letter-spacing, var(--font-body-large-letter-spacing, 0px));
1455
+ min-height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1456
+ border-radius: var(--theme-button-radius-large-2, var(--theme-radius-large-2, 16px));
1457
+ }
1458
+
1459
+ .button.button-size-small {
1460
+ padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1461
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1462
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1463
+ font-size: var(--theme-button-font-label-medium-size, var(--font-label-medium-size, 14px));
1464
+ font-weight: var(--theme-button-font-label-medium-weight, var(--font-label-medium-weight, 400));
1465
+ line-height: var(--theme-button-font-label-medium-line-height, var(--font-label-medium-line-height, 1.5em));
1466
+ letter-spacing: var(--theme-button-font-label-medium-letter-spacing, var(--font-label-medium-letter-spacing, 0px));
1467
+ min-height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1468
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1469
+ }
1470
+
1471
+ .button.button-size-medium {
1472
+ padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1473
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1474
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1475
+ font-size: var(--theme-button-font-label-large-size, var(--font-label-large-size, 16px));
1476
+ font-weight: var(--theme-button-font-label-large-weight, var(--font-label-large-weight, 400));
1477
+ line-height: var(--theme-button-font-label-large-line-height, var(--font-label-large-line-height, 1.5em));
1478
+ letter-spacing: var(--theme-button-font-label-large-letter-spacing, var(--font-label-large-letter-spacing, 0px));
1479
+ min-height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1480
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1481
+ }
1482
+
1483
+ .button.button-size-large {
1484
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1485
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1486
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1487
+ font-size: var(--theme-button-font-body-medium-size, var(--font-body-medium-size, 17px));
1488
+ font-weight: var(--theme-button-font-body-medium-weight, var(--font-body-medium-weight, 500));
1489
+ line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 1.5em));
1490
+ letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1491
+ min-height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1492
+ border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1493
+ }
1494
+
1495
+ .button.button-size-xlarge {
1496
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1497
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1498
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1499
+ font-size: var(--theme-button-font-body-large-size, var(--font-body-large-size, 19px));
1500
+ font-weight: var(--theme-button-font-body-large-weight, var(--font-body-large-weight, 600));
1501
+ line-height: var(--theme-button-font-body-large-line-height, var(--font-body-large-line-height, 1.5em));
1502
+ letter-spacing: var(--theme-button-font-body-large-letter-spacing, var(--font-body-large-letter-spacing, 0px));
1503
+ min-height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1504
+ border-radius: var(--theme-button-radius-large-2, var(--theme-radius-large-2, 16px));
1505
+ }
1506
+
1507
+ .button.button-fill-outlined {
1508
+ box-shadow: none;
1509
+ }
1510
+
1511
+ .button.button-fill-solid.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1512
+ background-color: transparent;
1513
+ border-color: transparent;
1514
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0);
1515
+ }
1516
+ .button.button-fill-solid.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1517
+ background-color: transparent;
1518
+ border-color: transparent;
1519
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0);
1520
+ }
1521
+
1522
+ .button.button-fill-solid.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1523
+ background-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1524
+ border-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1525
+ box-shadow: none;
1526
+ }
1527
+ .button.button-fill-solid.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1528
+ background-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1529
+ border-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1530
+ box-shadow: none;
1531
+ }
1532
+
1533
+ .button.button-fill-solid.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1534
+ background-color: var(--color-border-standard-strong, var(--color-bg-surface-strong));
1535
+ border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1536
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1537
+ }
1538
+ .button.button-fill-solid.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-solid.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1539
+ background-color: var(--color-border-standard-strong, var(--color-bg-surface-strong));
1540
+ border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1541
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.48);
1542
+ }
1543
+
1544
+ .button.button-fill-outlined.button-priority-primary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1545
+ background-color: var(--theme-button-overlay-outlined-primary-bg, var(--color-blue-90));
1546
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1547
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1548
+ }
1549
+ .button.button-fill-outlined.button-priority-primary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-primary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1550
+ background-color: var(--theme-button-overlay-outlined-primary-bg, var(--color-blue-90));
1551
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1552
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1553
+ }
1554
+
1555
+ .button.button-fill-outlined.button-priority-secondary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1556
+ background-color: var(--theme-button-overlay-outlined-secondary-bg, var(--color-cool-gray-95));
1557
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1558
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1559
+ }
1560
+ .button.button-fill-outlined.button-priority-secondary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-secondary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1561
+ background-color: var(--theme-button-overlay-outlined-secondary-bg, var(--color-cool-gray-95));
1562
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1563
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1564
+ }
1565
+
1566
+ .button.button-fill-outlined.button-priority-tertiary:hover:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=hover]:not(:disabled):not([aria-disabled=true]) {
1567
+ background-color: var(--theme-button-overlay-outlined-tertiary-bg, var(--color-cool-gray-95));
1568
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1569
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1570
+ }
1571
+ .button.button-fill-outlined.button-priority-tertiary:active:not(:disabled):not([aria-disabled=true]), .button.button-fill-outlined.button-priority-tertiary[data-user-action=pressed]:not(:disabled):not([aria-disabled=true]) {
1572
+ background-color: var(--theme-button-overlay-outlined-tertiary-bg, var(--color-cool-gray-95));
1573
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1574
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1575
+ }
1576
+
1577
+ .button:disabled,
1578
+ .button[aria-disabled=true] {
1579
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1580
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1581
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1582
+ cursor: not-allowed;
1583
+ }
1584
+
1585
+ .button.button-icon-left .button-label {
1586
+ margin-left: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1587
+ }
1588
+
1589
+ .button.button-icon-right .button-label {
1590
+ margin-right: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1591
+ }
1592
+
1593
+ .button.button-template-text {
1594
+ min-width: auto;
1595
+ border-color: transparent;
1596
+ background-color: transparent;
1597
+ padding-block: var(--theme-button-text-padding-block, var(--spacing-padding-4, 8px));
1598
+ padding-inline: var(--theme-button-text-padding-inline-small, var(--spacing-padding-4, 8px));
1599
+ border-width: 0;
1600
+ gap: var(--spacing-gap-1, 4px);
1601
+ border-radius: var(--theme-button-text-radius, var(--theme-radius-small, 4px));
1602
+ }
1603
+
1604
+ .button.button-template-text-size-small {
1605
+ min-height: var(--theme-button-text-min-height-small, var(--theme-size-small-1, 20px));
1606
+ padding-inline: var(--theme-button-text-padding-inline-small, var(--spacing-padding-4, 8px));
1607
+ }
1608
+
1609
+ .button.button-template-text-size-medium {
1610
+ min-height: var(--theme-button-text-min-height-medium, var(--theme-size-small-2, 24px));
1611
+ padding-inline: var(--theme-button-text-padding-inline-medium, var(--spacing-padding-5, 12px));
1612
+ }
1613
+
1614
+ .button.button-template-text-size-large {
1615
+ min-height: var(--theme-button-text-min-height-large, var(--theme-size-small-3, 32px));
1616
+ padding-inline: var(--theme-button-text-padding-inline-large, var(--spacing-padding-5, 12px));
1617
+ }
1618
+
1619
+ .button.button-template-text:disabled {
1620
+ background-color: transparent;
1621
+ border-color: transparent;
1622
+ }
1623
+
1624
+ .button.button-template-text.button-priority-secondary {
1625
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1626
+ }
1627
+ .button.button-template-text.button-priority-secondary:hover:not(:disabled), .button.button-template-text.button-priority-secondary[data-user-action=hover]:not(:disabled) {
1628
+ background-color: var(--color-bg-alternative-cool-gray, var(--color-cool-gray-95));
1629
+ }
1630
+ .button.button-template-text.button-priority-secondary:active:not(:disabled), .button.button-template-text.button-priority-secondary[data-user-action=pressed]:not(:disabled) {
1631
+ background-color: var(--color-secondary-strong, var(--color-blue-90));
1632
+ }
1633
+
1634
+ .button.button-template-text.button-priority-tertiary {
1635
+ color: var(--theme-button-color-cool-gray-10, var(--color-cool-gray-10));
1636
+ }
1637
+ .button.button-template-text.button-priority-tertiary:hover:not(:disabled), .button.button-template-text.button-priority-tertiary[data-user-action=hover]:not(:disabled) {
1638
+ background-color: var(--color-bg-alternative-cool-gray, var(--color-cool-gray-95));
1639
+ }
1640
+ .button.button-template-text.button-priority-tertiary:active:not(:disabled), .button.button-template-text.button-priority-tertiary[data-user-action=pressed]:not(:disabled) {
1641
+ background-color: var(--color-bg-surface-strong, var(--color-cool-gray-20));
1642
+ }
1643
+
1644
+ .button.button-template-round {
1645
+ min-width: auto;
1646
+ padding-block: var(--theme-button-round-padding-block, var(--spacing-padding-2, 4px));
1647
+ padding-inline: var(--theme-button-round-padding-inline-medium, var(--spacing-padding-6, 16px));
1648
+ gap: var(--spacing-gap-2, 8px);
1649
+ }
1650
+
1651
+ .button.button-template-round-size-small {
1652
+ min-height: var(--theme-button-round-min-height-small, var(--theme-size-small-2, 24px));
1653
+ padding-inline: var(--theme-button-round-padding-inline-small, var(--spacing-padding-5, 12px));
1654
+ border-radius: var(--theme-button-round-radius-small, var(--theme-radius-xlarge-2, 16px));
1655
+ }
1656
+
1657
+ .button.button-template-round-size-medium {
1658
+ min-height: var(--theme-button-round-min-height-medium, var(--theme-size-small-3, 32px));
1659
+ padding-inline: var(--theme-button-round-padding-inline-medium, var(--spacing-padding-6, 16px));
1660
+ border-radius: var(--theme-button-round-radius-medium, var(--theme-radius-xlarge-2, 16px));
1661
+ }
1662
+
1663
+ .button.button-template-round-size-large {
1664
+ min-height: var(--theme-button-round-min-height-large, var(--theme-size-medium-1, 40px));
1665
+ padding-inline: var(--theme-button-round-padding-inline-large, var(--spacing-padding-7, 20px));
1666
+ border-radius: var(--theme-button-round-radius-large, 30px);
1667
+ }
1668
+
1669
+ /* TODO(calendar): 스타일을 SOT 토큰 값으로 정의한다. */
1670
+ :where(.radix-themes, .theme-root, :root) {
1671
+ --theme-checkbox-frame-size-medium: 20px;
1672
+ --theme-checkbox-frame-size-large: 24px;
1673
+ --theme-checkbox-indicator-size-medium: 16px;
1674
+ --theme-checkbox-indicator-size-large: 20px;
1675
+ --theme-checkbox-control-radius-medium: var(--theme-radius-xsmall-3, 3px);
1676
+ --theme-checkbox-control-radius-large: var(--theme-radius-small-1, 4px);
1677
+ --theme-checkbox-border-width: 1.4px;
1678
+ --theme-checkbox-border-color: var(--color-border-standard-assistive);
1679
+ --theme-checkbox-border-selected: var(--color-primary-default);
1680
+ --theme-checkbox-surface: var(--color-common-100);
1681
+ --theme-checkbox-surface-selected: var(--color-primary-default);
1682
+ --theme-checkbox-surface-disabled: var(--color-neutral-95);
1683
+ --theme-checkbox-label-color: var(--color-label-strong);
1684
+ --theme-checkbox-label-disabled: var(--color-label-disabled);
1685
+ --theme-checkbox-helper-color: var(--color-label-neutral);
1686
+ --theme-checkbox-helper-disabled: var(--color-label-disabled);
1687
+ --theme-checkbox-icon-color: var(--color-common-100);
1688
+ --theme-checkbox-focus-ring: rgba(2, 84, 255, 0.32);
1689
+ --theme-checkbox-disabled-selected-opacity: 0.28;
1690
+ }
1691
+
1692
+ .checkbox {
1693
+ display: inline-flex;
1694
+ align-items: center;
1695
+ justify-content: center;
1696
+ inline-size: var(--theme-checkbox-frame-size-medium);
1697
+ block-size: var(--theme-checkbox-frame-size-medium);
1698
+ border-radius: var(--theme-checkbox-control-radius-medium);
1699
+ background-color: transparent;
1700
+ border: none;
1701
+ cursor: pointer;
1702
+ transition: background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease, box-shadow 0.15s ease;
1703
+ }
1704
+ .checkbox[data-size=medium] {
1705
+ inline-size: var(--theme-checkbox-frame-size-medium);
1706
+ block-size: var(--theme-checkbox-frame-size-medium);
1707
+ border-radius: var(--theme-checkbox-control-radius-medium);
1708
+ }
1709
+ .checkbox[data-size=large] {
1710
+ inline-size: var(--theme-checkbox-frame-size-large);
1711
+ block-size: var(--theme-checkbox-frame-size-large);
1712
+ border-radius: var(--theme-checkbox-control-radius-large);
1713
+ }
1714
+ .checkbox[data-disabled=true] {
1715
+ opacity: 0.6;
1716
+ cursor: not-allowed;
1717
+ }
1718
+
1719
+ .checkbox:focus-visible {
1720
+ box-shadow: 0 0 0 2px var(--theme-checkbox-focus-ring);
1721
+ }
1722
+
1723
+ .checkbox-indicator {
1724
+ inline-size: var(--theme-checkbox-indicator-size-medium);
1725
+ block-size: var(--theme-checkbox-indicator-size-medium);
1726
+ display: inline-flex;
1727
+ align-items: center;
1728
+ justify-content: center;
1729
+ color: var(--theme-checkbox-icon-color);
1730
+ border: var(--theme-checkbox-border-width) solid var(--theme-checkbox-border-color);
1731
+ border-radius: var(--theme-checkbox-control-radius-medium);
1732
+ background-color: var(--theme-checkbox-surface);
1733
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, opacity 0.15s ease;
1734
+ }
1735
+ .checkbox-indicator svg {
1736
+ display: block;
1737
+ inline-size: auto;
1738
+ block-size: auto;
1739
+ max-inline-size: 100%;
1740
+ max-block-size: 100%;
1741
+ }
1742
+
1743
+ .checkbox[data-size=large] .checkbox-indicator {
1744
+ inline-size: var(--theme-checkbox-indicator-size-large);
1745
+ block-size: var(--theme-checkbox-indicator-size-large);
1746
+ border-radius: var(--theme-checkbox-control-radius-large);
1747
+ }
1748
+
1749
+ .checkbox[data-state=checked] .checkbox-indicator,
1750
+ .checkbox[data-state=indeterminate] .checkbox-indicator {
1751
+ background-color: var(--theme-checkbox-surface-selected);
1752
+ border-color: var(--theme-checkbox-border-selected);
1753
+ }
1754
+
1755
+ .checkbox[data-disabled=true] .checkbox-indicator {
1756
+ background-color: var(--theme-checkbox-surface-disabled);
1757
+ border-color: var(--theme-checkbox-border-color);
1758
+ opacity: 1;
1759
+ }
1760
+
1761
+ .checkbox[data-disabled=true][data-state=checked] .checkbox-indicator,
1762
+ .checkbox[data-disabled=true][data-state=indeterminate] .checkbox-indicator {
1763
+ background-color: var(--theme-checkbox-surface-selected);
1764
+ border-color: var(--theme-checkbox-border-selected);
1765
+ opacity: var(--theme-checkbox-disabled-selected-opacity);
1766
+ }
1767
+
1768
+ .checkbox-field {
1769
+ display: flex;
1770
+ flex-direction: column;
1771
+ gap: var(--spacing-gap-1);
1772
+ color: var(--theme-checkbox-label-color);
1773
+ }
1774
+
1775
+ .checkbox-field[data-disabled=true] {
1776
+ color: var(--theme-checkbox-label-disabled);
1777
+ }
1778
+
1779
+ .checkbox-label-wrapper {
1780
+ display: inline-flex;
1781
+ align-items: center;
1782
+ gap: var(--spacing-gap-2);
1783
+ cursor: pointer;
1784
+ }
1785
+
1786
+ .checkbox-label-wrapper[data-disabled=true] {
1787
+ cursor: not-allowed;
1788
+ }
1789
+
1790
+ .checkbox-label-text {
1791
+ font-weight: var(--font-body-medium-weight);
1792
+ user-select: none;
1793
+ }
1794
+
1795
+ .checkbox-field[data-size=medium] .checkbox-label-text {
1796
+ font-size: var(--font-body-xsmall-size);
1797
+ line-height: var(--font-body-xsmall-line-height);
1798
+ }
1799
+
1800
+ .checkbox-field[data-size=large] .checkbox-label-text {
1801
+ font-size: var(--font-body-medium-size);
1802
+ line-height: var(--font-body-medium-line-height);
1803
+ }
1804
+
1805
+ .checkbox-helper {
1806
+ margin: 0;
1807
+ font-size: var(--font-caption-large-size);
1808
+ line-height: var(--font-caption-large-line-height);
1809
+ color: var(--theme-checkbox-helper-color);
1810
+ user-select: none;
1811
+ }
1812
+
1813
+ .checkbox-field[data-disabled=true] .checkbox-helper {
1814
+ color: var(--theme-checkbox-helper-disabled);
1815
+ }
1816
+
1817
+ /* Chip 기본 토큰 래핑 */
1818
+ :where(.radix-themes, .theme-root, :root) {
1819
+ --theme-chip-height: var(--theme-size-small-3, 32px);
1820
+ --theme-chip-padding-inline: var(--spacing-padding-5, 12px);
1821
+ --theme-chip-radius: var(--theme-radius-medium-3, 8px);
1822
+ --theme-chip-rounded-radius: var(--theme-radius-large-2, 16px);
1823
+ --theme-chip-font-family: var(--font-body-medium-family, "Pretendard");
1824
+ --theme-chip-font-size: var(--font-body-xsmall-size, 13px);
1825
+ --theme-chip-font-weight: var(--font-body-xsmall-weight, 400);
1826
+ }
1827
+
1828
+ .chip {
1829
+ --chip-gap: var(--spacing-gap-1, 4px);
1830
+ --chip-bg: transparent;
1831
+ --chip-border-color: transparent;
1832
+ --chip-label-color: var(--color-label-standard, #3d3f43);
1833
+ display: flex;
1834
+ align-items: center;
1835
+ justify-content: center;
1836
+ gap: var(--chip-gap);
1837
+ height: var(--theme-chip-height);
1838
+ padding-inline: var(--theme-chip-padding-inline);
1839
+ padding-block: 0;
1840
+ border-radius: var(--theme-chip-radius);
1841
+ border: 1px solid var(--chip-border-color);
1842
+ background-color: var(--chip-bg);
1843
+ color: var(--chip-label-color);
1844
+ font-family: var(--theme-chip-font-family);
1845
+ font-size: var(--theme-chip-font-size);
1846
+ font-weight: var(--theme-chip-font-weight);
1847
+ line-height: 1;
1848
+ letter-spacing: 0.2px;
1849
+ box-sizing: border-box;
1850
+ margin: 0;
1851
+ width: fit-content;
1852
+ transition: background-color 0.16s ease, color 0.16s ease, border-color 0.16s ease, opacity 0.16s ease;
1853
+ }
1854
+
1855
+ button.chip {
1856
+ appearance: none;
1857
+ cursor: pointer;
1858
+ }
1859
+
1860
+ figure.chip {
1861
+ margin: 0;
1862
+ }
1863
+
1864
+ .chip:focus-visible {
1865
+ outline: 2px solid var(--color-primary-default, #1a6aff);
1866
+ outline-offset: 2px;
1867
+ }
1868
+
1869
+ .chip:where([data-kind=filter]),
1870
+ .chip:where([data-kind=filter-rounded]) {
1871
+ --chip-bg: var(--color-bg-surface-standard, #f2f2f3);
1872
+ --chip-label-color: var(--color-label-neutral, #797e86);
1873
+ --chip-border-color: transparent;
1874
+ }
1875
+
1876
+ .chip:where([data-kind=filter][data-selected=true]),
1877
+ .chip:where([data-kind=filter-rounded][data-selected=true]) {
1878
+ --chip-bg: var(--color-bg-surface-heavy, #313235);
1879
+ --chip-label-color: var(--color-common-100, #ffffff);
1880
+ }
1881
+
1882
+ .chip:where([data-kind=filter-rounded]) {
1883
+ border-radius: var(--theme-chip-rounded-radius);
1884
+ }
1885
+
1886
+ .chip:where([data-kind=assist]) {
1887
+ --chip-bg: var(--color-bg-surface-static-neutral, #f2f2f2);
1888
+ --chip-label-color: var(--color-label-strong, #18191b);
1889
+ --chip-gap: var(--spacing-gap-2, 8px);
1890
+ --chip-border-color: transparent;
1891
+ }
1892
+
1893
+ .chip:where([data-kind=assist][data-selected=true]) {
1894
+ --chip-label-color: var(--color-primary-default, #1a6aff);
1895
+ }
1896
+
1897
+ .chip:where([data-kind=input]) {
1898
+ --chip-gap: var(--spacing-gap-1, 4px);
1899
+ --chip-bg: var(--color-common-100, #ffffff);
1900
+ --chip-label-color: var(--color-label-standard, #3d3f43);
1901
+ --chip-border-color: var(--color-border-standard-assistive, #e4e5e7);
1902
+ padding-inline-start: var(--spacing-padding-4, 8px);
1903
+ padding-inline-end: var(--spacing-padding-2, 4px);
1904
+ }
1905
+
1906
+ .chip:where([data-kind=input][data-selected=true]) {
1907
+ --chip-border-color: var(--color-border-standard-blue, #ccdeff);
1908
+ }
1909
+
1910
+ .chip-leading {
1911
+ display: inline-flex;
1912
+ align-items: center;
1913
+ justify-content: center;
1914
+ color: inherit;
1915
+ flex-shrink: 0;
1916
+ }
1917
+
1918
+ .chip-label {
1919
+ display: inline-flex;
1920
+ align-items: center;
1921
+ gap: var(--spacing-gap-1, 4px);
1922
+ color: inherit;
1923
+ line-height: 1;
1924
+ white-space: nowrap;
1925
+ }
1926
+
1927
+ .chip-remove-button {
1928
+ display: inline-flex;
1929
+ align-items: center;
1930
+ justify-content: center;
1931
+ width: 16px;
1932
+ height: 16px;
1933
+ border: none;
1934
+ background: transparent;
1935
+ color: var(--color-label-neutral, #797e86);
1936
+ cursor: pointer;
1937
+ padding: 0;
1938
+ transition: color 0.16s ease;
1939
+ }
1940
+
1941
+ .chip-remove-button:hover,
1942
+ .chip-remove-button:focus-visible {
1943
+ color: var(--color-label-strong, #18191b);
1944
+ }
1945
+
1946
+ .chip-remove-button svg {
1947
+ display: block;
1948
+ width: 100%;
1949
+ height: 100%;
1950
+ }
1951
+
1952
+ :where(.radix-themes, .theme-root, :root) {
1953
+ /* dialog essentials */
1954
+ --dialog-overlay-bg: rgba(5, 6, 12, 0.55);
1955
+ --dialog-panel-width: 360px;
1956
+ --dialog-panel-max-width: calc(100vw - var(--spacing-padding-10) * 2);
1957
+ --dialog-panel-bg: var(--color-bg-surface-static-white);
1958
+ --dialog-panel-radius: var(--theme-radius-large-1);
1959
+ --dialog-panel-shadow: 0px 18px 40px rgba(8, 11, 30, 0.18);
1960
+ --dialog-border-color: var(--color-border-standard-cool-gray);
1961
+ --dialog-title-color: var(--color-label-strong);
1962
+ --dialog-title-font-size: var(--font-heading-xsmall-size);
1963
+ --dialog-title-line-height: var(--font-heading-xsmall-line-height);
1964
+ --dialog-title-weight: var(--font-heading-xsmall-weight);
1965
+ --dialog-body-color: var(--color-label-standard);
1966
+ --dialog-body-font-size: var(--font-body-small-size);
1967
+ --dialog-body-line-height: var(--font-body-small-line-height);
1968
+ --dialog-description-color: var(--color-label-standard);
1969
+ --dialog-description-font-size: var(--font-body-small-size);
1970
+ --dialog-description-line-height: var(--font-body-small-line-height);
1971
+ /* alert(notice) defaults */
1972
+ --notice-dialog-section-padding-x: var(--spacing-padding-8);
1973
+ --notice-dialog-section-padding-y: var(--spacing-padding-10);
1974
+ --notice-dialog-action-height: 52px;
1975
+ /* confirm defaults */
1976
+ --confirm-dialog-header-padding-x: var(--spacing-padding-6);
1977
+ --confirm-dialog-header-padding-y: var(--spacing-padding-7);
1978
+ --confirm-dialog-body-padding-x: var(--spacing-padding-6);
1979
+ --confirm-dialog-body-padding-y: var(--spacing-padding-7);
1980
+ --confirm-dialog-footer-padding-x: var(--spacing-padding-6);
1981
+ --confirm-dialog-footer-padding-y: var(--spacing-padding-7);
1982
+ --confirm-dialog-actions-gap: var(--spacing-gap-5);
1983
+ }
1984
+
1985
+ .dialog-overlay {
1986
+ position: fixed;
1987
+ inset: 0;
1988
+ background-color: var(--dialog-overlay-bg);
1989
+ opacity: 0;
1990
+ transition: opacity 0.2s ease;
1991
+ will-change: opacity;
1992
+ }
1993
+ .dialog-overlay[data-state=open] {
1994
+ opacity: 1;
1995
+ }
1996
+ .dialog-overlay[data-state=closed] {
1997
+ opacity: 0;
1998
+ pointer-events: none;
1999
+ }
2000
+
2001
+ @media (prefers-reduced-motion: reduce) {
2002
+ .dialog-overlay {
2003
+ transition: none;
2004
+ }
2005
+ }
2006
+ .dialog-content {
2007
+ position: fixed;
2008
+ top: 50%;
2009
+ left: 50%;
2010
+ transform: translate(-50%, -50%);
2011
+ width: min(var(--dialog-panel-width), var(--dialog-panel-max-width));
2012
+ max-width: var(--dialog-panel-max-width);
2013
+ max-height: calc(100vh - var(--spacing-padding-10) * 2);
2014
+ background-color: var(--dialog-panel-bg);
2015
+ border-radius: var(--dialog-panel-radius);
2016
+ box-shadow: var(--dialog-panel-shadow);
2017
+ display: flex;
2018
+ flex-direction: column;
2019
+ overflow: hidden;
2020
+ overflow-y: auto;
2021
+ overscroll-behavior: contain;
2022
+ outline: none;
2023
+ border: none;
2024
+ gap: 0;
2025
+ opacity: 0;
2026
+ transition: opacity 0.2s ease, transform 0.2s ease;
2027
+ }
2028
+ .dialog-content[data-state=open] {
2029
+ opacity: 1;
2030
+ transform: translate(-50%, -50%);
2031
+ }
2032
+ .dialog-content[data-state=closed] {
2033
+ opacity: 0;
2034
+ transform: translate(-50%, calc(-50% + 12px));
2035
+ pointer-events: none;
2036
+ }
2037
+
2038
+ @media (prefers-reduced-motion: reduce) {
2039
+ .dialog-content {
2040
+ transition: none;
2041
+ }
2042
+ }
2043
+ .dialog-section {
2044
+ padding: 0;
2045
+ }
2046
+ .dialog-section[data-section=actions] {
2047
+ flex-shrink: 0;
2048
+ }
2049
+
2050
+ .dialog-title {
2051
+ margin: 0;
2052
+ color: var(--dialog-title-color);
2053
+ font-size: var(--dialog-title-font-size);
2054
+ line-height: var(--dialog-title-line-height);
2055
+ font-weight: var(--dialog-title-weight);
2056
+ }
2057
+
2058
+ .dialog-description {
2059
+ margin: 0;
2060
+ color: var(--dialog-description-color);
2061
+ font-size: var(--dialog-description-font-size);
2062
+ line-height: var(--dialog-description-line-height);
2063
+ }
2064
+
2065
+ .dialog-button {
2066
+ display: flex;
2067
+ align-items: center;
2068
+ justify-content: center;
2069
+ width: 100%;
2070
+ border: none;
2071
+ border-radius: 0;
2072
+ margin: 0;
2073
+ padding: 0;
2074
+ font-size: var(--font-body-medium-size);
2075
+ line-height: var(--font-body-medium-line-height);
2076
+ font-weight: var(--font-body-medium-weight);
2077
+ cursor: pointer;
2078
+ background: transparent;
2079
+ color: var(--color-label-strong);
2080
+ transition: background-color 0.15s ease, color 0.15s ease;
2081
+ }
2082
+
2083
+ .dialog-button[data-native-element=true] {
2084
+ appearance: none;
2085
+ }
2086
+
2087
+ .notice-dialog-header,
2088
+ .notice-dialog-body {
2089
+ padding: var(--notice-dialog-section-padding-y) var(--notice-dialog-section-padding-x);
2090
+ }
2091
+
2092
+ .notice-dialog-header {
2093
+ display: flex;
2094
+ flex-direction: column;
2095
+ gap: var(--spacing-gap-3);
2096
+ text-align: center;
2097
+ }
2098
+
2099
+ .notice-dialog-body {
2100
+ text-align: center;
2101
+ }
2102
+
2103
+ .notice-dialog-body p {
2104
+ margin: 0 0 var(--spacing-gap-2);
2105
+ color: var(--dialog-body-color);
2106
+ font-size: var(--dialog-body-font-size);
2107
+ line-height: 1.5em;
2108
+ font-weight: var(--font-body-small-weight);
2109
+ word-break: keep-all;
2110
+ }
2111
+
2112
+ .notice-dialog-body p:last-child {
2113
+ margin-bottom: 0;
2114
+ }
2115
+
2116
+ .notice-dialog-actions {
2117
+ border-top: 1px solid var(--dialog-border-color);
2118
+ display: flex;
2119
+ align-items: stretch;
2120
+ flex-direction: row;
2121
+ padding: 0;
2122
+ gap: 0;
2123
+ justify-content: center;
2124
+ overflow: hidden;
2125
+ --button-min-height: var(--notice-dialog-action-height);
2126
+ --button-padding-inline: 0;
2127
+ --button-padding-block: 0;
2128
+ --button-border-radius: 0;
2129
+ }
2130
+
2131
+ .notice-dialog-actions > * {
2132
+ flex: 1;
2133
+ }
2134
+
2135
+ .notice-dialog-actions .button {
2136
+ display: flex;
2137
+ align-items: center;
2138
+ justify-content: center;
2139
+ width: 100%;
2140
+ border: none;
2141
+ border-radius: 0;
2142
+ margin: 0;
2143
+ padding: 0;
2144
+ font-size: var(--font-body-medium-size);
2145
+ line-height: var(--font-body-medium-line-height);
2146
+ font-weight: var(--font-body-medium-weight);
2147
+ cursor: pointer;
2148
+ background: transparent;
2149
+ color: var(--color-label-strong);
2150
+ transition: background-color 0.15s ease, color 0.15s ease;
2151
+ background-color: var(--color-common-100);
2152
+ color: var(--color-primary-default);
2153
+ }
2154
+ .notice-dialog-actions .button:hover {
2155
+ background-color: var(--color-bg-surface-static-cool-gray);
2156
+ }
2157
+
2158
+ .notice-dialog-actions .button:not(:first-child),
2159
+ .notice-dialog-actions [data-native-element=true]:not(:first-child) {
2160
+ border-left: 1px solid var(--dialog-border-color);
2161
+ }
2162
+
2163
+ .confirm-dialog-header {
2164
+ padding: var(--confirm-dialog-header-padding-y) var(--confirm-dialog-header-padding-x);
2165
+ }
2166
+
2167
+ .confirm-dialog-body {
2168
+ padding: var(--confirm-dialog-body-padding-y) var(--confirm-dialog-body-padding-x);
2169
+ }
2170
+
2171
+ .confirm-dialog-header {
2172
+ display: flex;
2173
+ flex-direction: column;
2174
+ gap: var(--spacing-gap-2);
2175
+ text-align: center;
2176
+ }
2177
+
2178
+ .confirm-dialog-body {
2179
+ display: flex;
2180
+ flex-direction: column;
2181
+ align-items: center;
2182
+ gap: var(--spacing-gap-2);
2183
+ text-align: center;
2184
+ }
2185
+
2186
+ .confirm-dialog-body p {
2187
+ margin: 0;
2188
+ color: var(--dialog-body-color);
2189
+ font-size: var(--dialog-body-font-size);
2190
+ line-height: 1.5em;
2191
+ font-weight: var(--font-body-small-weight);
2192
+ word-break: keep-all;
2193
+ }
2194
+
2195
+ .confirm-dialog-description {
2196
+ margin: 0;
2197
+ color: var(--dialog-body-color);
2198
+ font-size: var(--dialog-body-font-size);
2199
+ line-height: 1.5em;
2200
+ font-weight: var(--font-body-small-weight);
2201
+ word-break: keep-all;
2202
+ }
2203
+
2204
+ .confirm-dialog-actions {
2205
+ display: flex;
2206
+ align-items: stretch;
2207
+ flex-direction: row;
2208
+ padding: var(--confirm-dialog-footer-padding-y) var(--confirm-dialog-footer-padding-x);
2209
+ gap: var(--confirm-dialog-actions-gap);
2210
+ justify-content: center;
2211
+ }
2212
+
2213
+ .confirm-dialog-actions > * {
2214
+ flex: 1;
2215
+ }
2216
+
2217
+ :where(.radix-themes, .theme-root, :root) {
2218
+ --drawer-overlay-bg: rgba(0, 0, 0, 0.44);
2219
+ --drawer-surface-bg: var(--color-bg-surface-static-white);
2220
+ --drawer-radius-large: var(--theme-radius-large-2);
2221
+ --drawer-radius-medium: var(--theme-radius-large-1);
2222
+ --drawer-body-color: var(--color-label-standard);
2223
+ --drawer-title-color: var(--color-label-strong);
2224
+ --drawer-gap: calc(var(--spacing-gap-9, 28px) + 2px);
2225
+ --drawer-padding-x: calc(var(--spacing-padding-10, 32px) - 2px);
2226
+ --drawer-padding-top: var(--spacing-padding-7, 20px);
2227
+ --drawer-padding-bottom: calc(
2228
+ var(--spacing-padding-11, 40px) + var(--spacing-padding-7, 20px)
2229
+ );
2230
+ --drawer-footer-gap: var(--spacing-gap-6, 16px);
2231
+ --drawer-section-gap: var(--spacing-gap-6, 16px);
2232
+ --drawer-handle-width: calc(
2233
+ var(--spacing-padding-11, 40px) + var(--spacing-padding-7, 20px)
2234
+ );
2235
+ --drawer-handle-height: var(--spacing-padding-2, 4px);
2236
+ --drawer-handle-bg: var(--color-border-standard-cool-gray);
2237
+ --drawer-close-size: 36px;
2238
+ --drawer-drag-offset: 0px;
2239
+ }
2240
+
2241
+ .drawer-overlay {
2242
+ position: fixed;
2243
+ inset: 0;
2244
+ background-color: var(--drawer-overlay-bg);
2245
+ opacity: 0;
2246
+ pointer-events: none;
2247
+ transition: opacity 0.25s ease;
2248
+ will-change: opacity;
2249
+ }
2250
+ .drawer-overlay[data-phase=entering], .drawer-overlay[data-phase=entered] {
2251
+ opacity: 1;
2252
+ pointer-events: auto;
2253
+ }
2254
+ .drawer-overlay[data-phase=exiting] {
2255
+ opacity: 0;
2256
+ pointer-events: auto;
2257
+ }
2258
+
2259
+ @media (prefers-reduced-motion: reduce) {
2260
+ .drawer-overlay {
2261
+ transition: none;
2262
+ }
2263
+ }
2264
+ .drawer-content {
2265
+ position: fixed;
2266
+ display: flex;
2267
+ flex-direction: column;
2268
+ background-color: var(--drawer-surface-bg);
2269
+ outline: none;
2270
+ border: none;
2271
+ box-shadow: none;
2272
+ color: var(--drawer-body-color);
2273
+ overscroll-behavior: contain;
2274
+ left: 50%;
2275
+ bottom: 0;
2276
+ transform: translate3d(-50%, 100%, 0);
2277
+ border-top-left-radius: var(--drawer-radius-large);
2278
+ border-top-right-radius: var(--drawer-radius-large);
2279
+ max-width: 640px;
2280
+ padding-bottom: env(safe-area-inset-bottom);
2281
+ max-width: min(640px, 100%);
2282
+ width: 100%;
2283
+ max-height: calc(100vh - var(--spacing-padding-8));
2284
+ transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease;
2285
+ opacity: 0;
2286
+ pointer-events: none;
2287
+ will-change: transform;
2288
+ }
2289
+
2290
+ .drawer-content[data-phase=entering],
2291
+ .drawer-content[data-phase=entered] {
2292
+ transform: translate3d(-50%, var(--drawer-drag-offset, 0px), 0);
2293
+ opacity: 1;
2294
+ pointer-events: auto;
2295
+ }
2296
+
2297
+ .drawer-content[data-phase=exiting] {
2298
+ transform: translate3d(-50%, calc(100% + var(--drawer-drag-offset, 0px)), 0);
2299
+ opacity: 1;
2300
+ pointer-events: none;
2301
+ }
2302
+
2303
+ .drawer-content[data-phase=exited] {
2304
+ transform: translate3d(-50%, 100%, 0);
2305
+ opacity: 0;
2306
+ pointer-events: none;
2307
+ }
2308
+
2309
+ .drawer-content[data-dragging=true] {
2310
+ transition: none;
2311
+ }
2312
+
2313
+ @media (prefers-reduced-motion: reduce) {
2314
+ .drawer-content {
2315
+ transition: none;
2316
+ }
2317
+ }
2318
+ .drawer-handle {
2319
+ display: flex;
2320
+ align-items: center;
2321
+ justify-content: center;
2322
+ border: none;
2323
+ background: transparent;
2324
+ padding: var(--drawer-padding-top) 0 var(--spacing-padding-6);
2325
+ cursor: grab;
2326
+ }
2327
+
2328
+ .drawer-handle:active {
2329
+ cursor: grabbing;
2330
+ }
2331
+
2332
+ .drawer-handle-bar {
2333
+ width: var(--drawer-handle-width);
2334
+ height: var(--drawer-handle-height);
2335
+ border-radius: var(--drawer-handle-height);
2336
+ background-color: var(--drawer-handle-bg);
2337
+ display: block;
2338
+ }
2339
+
2340
+ .drawer-close-button {
2341
+ position: absolute;
2342
+ top: var(--drawer-padding-top);
2343
+ right: var(--drawer-padding-x);
2344
+ width: 24px;
2345
+ height: 24px;
2346
+ border-radius: 0;
2347
+ border: none;
2348
+ background: transparent;
2349
+ display: flex;
2350
+ align-items: center;
2351
+ justify-content: center;
2352
+ cursor: pointer;
2353
+ padding: 0;
2354
+ color: var(--color-label-neutral, #7f8a94);
2355
+ }
2356
+
2357
+ .drawer-close-button svg {
2358
+ width: 24px;
2359
+ height: 24px;
2360
+ }
2361
+
2362
+ .drawer-inner {
2363
+ display: flex;
2364
+ flex-direction: column;
2365
+ gap: var(--drawer-gap);
2366
+ padding-inline: var(--drawer-padding-x);
2367
+ padding-bottom: var(--drawer-padding-bottom);
2368
+ padding-top: var(--drawer-padding-top);
2369
+ flex: 1 1 auto;
2370
+ min-height: 0;
2371
+ }
2372
+
2373
+ .drawer-section {
2374
+ display: flex;
2375
+ flex-direction: column;
2376
+ gap: var(--drawer-section-gap);
2377
+ color: var(--drawer-body-color);
2378
+ width: 100%;
2379
+ }
2380
+
2381
+ .drawer-header {
2382
+ text-align: left;
2383
+ padding-top: 0;
2384
+ }
2385
+
2386
+ .drawer-body {
2387
+ flex: 1 1 auto;
2388
+ overflow-y: auto;
2389
+ gap: var(--spacing-gap-5);
2390
+ font-size: var(--font-body-small-size);
2391
+ line-height: var(--font-body-small-line-height);
2392
+ color: var(--drawer-body-color);
2393
+ width: 100%;
2394
+ word-break: keep-all;
2395
+ }
2396
+
2397
+ .drawer-body > * {
2398
+ width: 100%;
2399
+ }
2400
+
2401
+ .drawer-body p {
2402
+ margin: 0;
2403
+ word-break: inherit;
2404
+ }
2405
+
2406
+ .drawer-footer {
2407
+ padding: var(--spacing-padding-8) 0 0;
2408
+ border-top: none;
2409
+ flex-shrink: 0;
2410
+ display: flex;
2411
+ flex-direction: column;
2412
+ gap: var(--drawer-footer-gap);
2413
+ width: 100%;
2414
+ }
2415
+
2416
+ .drawer-title {
2417
+ margin: 0;
2418
+ font-size: var(--font-heading-medium-size);
2419
+ line-height: var(--font-heading-medium-line-height);
2420
+ font-weight: var(--font-heading-medium-weight);
2421
+ color: var(--drawer-title-color);
2422
+ letter-spacing: var(--font-heading-medium-letter-spacing, normal);
2423
+ }
2424
+
2425
+ .drawer-description {
2426
+ margin: 0;
2427
+ color: var(--drawer-body-color);
2428
+ font-size: var(--font-body-xsmall-size);
2429
+ line-height: var(--font-body-xsmall-line-height);
2430
+ letter-spacing: var(--font-body-xsmall-letter-spacing, normal);
2431
+ }
2432
+
2433
+ .drawer-dismiss {
2434
+ display: none;
2435
+ }
2436
+
2437
+ /* TODO(dropdown): 스타일을 SOT 토큰 값으로 정의한다. */
2438
+ :where(.radix-themes, .theme-root, :root) {
2439
+ --theme-input-height-small: var(--theme-size-medium-1);
2440
+ --theme-input-height-medium: var(--theme-size-medium-2);
2441
+ --theme-input-height-large: var(--theme-size-medium-3);
2442
+ --theme-input-height-tertiary: calc(var(--theme-size-medium-2) + 24px);
2443
+ --theme-input-padding-x: var(--spacing-padding-6);
2444
+ --theme-input-padding-y: var(--spacing-padding-4);
2445
+ --theme-input-gap: var(--spacing-gap-4);
2446
+ --theme-input-radius-default: var(--theme-radius-large-1);
2447
+ --theme-input-radius-tertiary: var(--theme-radius-large-2);
2448
+ --theme-input-label-color: var(--color-label-standard);
2449
+ --theme-input-helper-color: var(--color-label-neutral);
2450
+ --theme-input-helper-disabled-color: var(--color-label-disabled);
2451
+ --theme-input-label-accent-color: var(--color-primary-default);
2452
+ --theme-input-label-error-color: var(--color-error);
2453
+ --theme-input-placeholder-color: var(--color-label-alternative);
2454
+ --theme-input-text-color: var(--color-label-strong);
2455
+ --theme-input-border-color: var(--color-border-standard-cool-gray);
2456
+ --theme-input-border-width-default: 1px;
2457
+ --theme-input-border-width-emphasis: 1.4px;
2458
+ --theme-input-border-active: #99bdff;
2459
+ --theme-input-border-success: #99bdff;
2460
+ --theme-input-border-error: rgba(218, 29, 11, 0.44);
2461
+ --theme-input-border-disabled: var(--color-border-standard-cool-gray);
2462
+ --theme-input-border-underline-disabled: var(
2463
+ --color-border-standard-assistive
2464
+ );
2465
+ --theme-input-surface: var(--color-common-100);
2466
+ --theme-input-surface-muted: var(--color-neutral-99);
2467
+ --theme-input-surface-disabled: var(--color-neutral-95);
2468
+ }
2469
+
2470
+ .input {
2471
+ display: flex;
2472
+ flex-direction: column;
2473
+ gap: var(--spacing-gap-3);
2474
+ width: 100%;
2475
+ }
2476
+ .input[data-block=true], .input--block {
2477
+ width: 100%;
2478
+ }
2479
+
2480
+ .input-label {
2481
+ color: var(--theme-input-label-color);
2482
+ font-size: var(--font-label-small-size);
2483
+ line-height: var(--font-label-small-line-height);
2484
+ font-weight: var(--font-label-small-weight);
2485
+ }
2486
+
2487
+ .input-label--visually-hidden {
2488
+ position: absolute;
2489
+ width: 1px;
2490
+ height: 1px;
2491
+ padding: 0;
2492
+ margin: -1px;
2493
+ overflow: hidden;
2494
+ clip: rect(0 0 0 0);
2495
+ clip-path: inset(50%);
2496
+ white-space: nowrap;
2497
+ border: 0;
2498
+ }
2499
+
2500
+ .input-box {
2501
+ width: 100%;
2502
+ }
2503
+
2504
+ .input-field {
2505
+ display: flex;
2506
+ align-items: center;
2507
+ width: 100%;
2508
+ gap: var(--theme-input-gap);
2509
+ border-radius: var(--theme-input-radius-default);
2510
+ border: var(--theme-input-border-width-default) solid var(--theme-input-border-color);
2511
+ background-color: var(--theme-input-surface);
2512
+ padding: var(--theme-input-padding-y) var(--theme-input-padding-x);
2513
+ min-height: var(--theme-input-height-medium);
2514
+ transition: border-color 0.15s ease, background-color 0.15s ease;
2515
+ box-sizing: border-box;
2516
+ outline: none;
2517
+ box-shadow: none;
2518
+ }
2519
+ .input-field[data-size=small] {
2520
+ min-height: var(--theme-input-height-small);
2521
+ }
2522
+ .input-field[data-size=large] {
2523
+ min-height: var(--theme-input-height-large);
2524
+ }
2525
+ .input-field[data-appearance=secondary] {
2526
+ border: none;
2527
+ border-bottom: var(--theme-input-border-width-default) solid var(--theme-input-border-color);
2528
+ border-radius: 0;
2529
+ padding-inline: 0;
2530
+ padding-block: var(--spacing-padding-4);
2531
+ background-color: transparent;
2532
+ }
2533
+ .input-field[data-appearance=tertiary] {
2534
+ border-radius: var(--theme-input-radius-tertiary);
2535
+ background-color: var(--theme-input-surface);
2536
+ min-height: var(--theme-input-height-tertiary);
2537
+ flex-wrap: wrap;
2538
+ row-gap: var(--spacing-gap-1);
2539
+ column-gap: var(--theme-input-gap);
2540
+ }
2541
+ .input-field[data-appearance=tertiary] .input-inline-label {
2542
+ flex-basis: 100%;
2543
+ }
2544
+ .input-field[data-appearance=tertiary] .input-element {
2545
+ min-height: var(--theme-size-medium-2);
2546
+ width: auto;
2547
+ flex: 1 1 auto;
2548
+ }
2549
+ .input-field[data-appearance=tertiary] .input-element + .input-affix {
2550
+ margin-left: auto;
2551
+ }
2552
+ .input-field:not([data-appearance=secondary])[data-state=active], .input-field:not([data-appearance=secondary])[data-state=focused] {
2553
+ border-color: var(--theme-input-border-active);
2554
+ border-width: var(--theme-input-border-width-emphasis);
2555
+ }
2556
+ .input-field:not([data-appearance=secondary])[data-state=success] {
2557
+ border-color: var(--theme-input-border-success);
2558
+ border-width: var(--theme-input-border-width-emphasis);
2559
+ }
2560
+ .input-field:not([data-appearance=secondary])[data-state=error] {
2561
+ border-color: var(--theme-input-border-error);
2562
+ border-width: var(--theme-input-border-width-emphasis);
2563
+ }
2564
+ .input-field:not([data-appearance=secondary])[data-state=disabled] {
2565
+ border-color: var(--theme-input-border-disabled);
2566
+ border-width: var(--theme-input-border-width-default);
2567
+ background-color: var(--theme-input-surface-disabled);
2568
+ }
2569
+ .input-field .input-element {
2570
+ flex: 1 1 auto;
2571
+ width: 100%;
2572
+ border: none;
2573
+ background: transparent;
2574
+ color: var(--theme-input-text-color);
2575
+ font-size: var(--font-body-medium-size);
2576
+ line-height: var(--font-body-medium-line-height);
2577
+ font-weight: var(--font-body-medium-weight);
2578
+ outline: none;
2579
+ box-shadow: none;
2580
+ min-width: 0;
2581
+ }
2582
+ .input-field .input-element::placeholder {
2583
+ color: var(--theme-input-placeholder-color);
2584
+ }
2585
+ .input-field .input-element:disabled {
2586
+ color: var(--color-label-disabled);
2587
+ }
2588
+ .input-field .input-element:disabled::placeholder {
2589
+ color: var(--color-label-disabled);
2590
+ }
2591
+ .input-field .input-element:focus, .input-field .input-element:focus-visible, .input-field .input-element:focus-within {
2592
+ outline: none;
2593
+ box-shadow: none;
2594
+ }
2595
+
2596
+ .input-inline-label {
2597
+ order: -2;
2598
+ flex-basis: 100%;
2599
+ font-size: var(--font-label-small-size);
2600
+ line-height: var(--font-label-small-line-height);
2601
+ color: var(--theme-input-label-color);
2602
+ }
2603
+
2604
+ .input-field[data-appearance=secondary] .input-element {
2605
+ padding-inline: 0;
2606
+ }
2607
+
2608
+ .input-field[data-appearance=tertiary] .input-element {
2609
+ min-height: var(--theme-size-medium-2);
2610
+ }
2611
+
2612
+ .input-helper-text {
2613
+ color: var(--theme-input-helper-color);
2614
+ font-size: var(--font-label-small-size);
2615
+ line-height: var(--font-label-small-line-height);
2616
+ }
2617
+ [data-state=error] .input-helper-text {
2618
+ color: var(--theme-input-border-error);
2619
+ }
2620
+ [data-state=disabled] .input-helper-text {
2621
+ color: var(--theme-input-helper-disabled-color);
2622
+ }
2623
+
2624
+ .input-affix {
2625
+ display: inline-flex;
2626
+ align-items: center;
2627
+ justify-content: center;
2628
+ min-width: 20px;
2629
+ color: var(--theme-input-helper-color);
2630
+ }
2631
+ .input-affix--prefix {
2632
+ order: -1;
2633
+ margin-right: var(--spacing-gap-3);
2634
+ }
2635
+ .input-affix--suffix, .input-affix--reset, .input-affix--status {
2636
+ margin-left: var(--spacing-gap-3);
2637
+ }
2638
+ .input-affix--reset, .input-affix--status {
2639
+ color: var(--theme-input-text-color);
2640
+ }
2641
+ .input-affix--status[data-state=error] {
2642
+ color: var(--color-error);
2643
+ }
2644
+ .input-affix--status[data-state=success] {
2645
+ color: var(--color-primary-default);
2646
+ }
2647
+
2648
+ .input-field[data-appearance=secondary] {
2649
+ border-bottom-width: var(--theme-input-border-width-default);
2650
+ }
2651
+ .input-field[data-appearance=secondary][data-state=active], .input-field[data-appearance=secondary][data-state=focused] {
2652
+ border-bottom-color: var(--theme-input-border-active);
2653
+ border-bottom-width: var(--theme-input-border-width-emphasis);
2654
+ }
2655
+ .input-field[data-appearance=secondary][data-state=success] {
2656
+ border-bottom-color: var(--theme-input-border-success);
2657
+ border-bottom-width: var(--theme-input-border-width-emphasis);
2658
+ }
2659
+ .input-field[data-appearance=secondary][data-state=error] {
2660
+ border-bottom-color: var(--theme-input-border-error);
2661
+ border-bottom-width: var(--theme-input-border-width-emphasis);
2662
+ }
2663
+ .input-field[data-appearance=secondary][data-state=disabled] {
2664
+ border-bottom-color: var(--theme-input-border-underline-disabled);
2665
+ border-bottom-width: var(--theme-input-border-width-default);
2666
+ }
2667
+
2668
+ .input[data-state=active] .input-label,
2669
+ .input[data-state=active] .input-inline-label,
2670
+ .input[data-state=focused] .input-label,
2671
+ .input[data-state=focused] .input-inline-label,
2672
+ .input[data-state=success] .input-label,
2673
+ .input[data-state=success] .input-inline-label {
2674
+ color: var(--theme-input-label-accent-color);
2675
+ }
2676
+
2677
+ .input[data-state=error] .input-label,
2678
+ .input[data-state=error] .input-inline-label {
2679
+ color: var(--theme-input-label-error-color);
2680
+ }
2681
+ .input[data-state=error] .input-helper-text {
2682
+ color: var(--theme-input-label-error-color);
2683
+ }
2684
+
2685
+ .input[data-state=disabled] .input-label,
2686
+ .input[data-state=disabled] .input-inline-label,
2687
+ .input[data-state=disabled] .input-helper-text,
2688
+ .input[data-state=disabled] .input-affix {
2689
+ color: var(--theme-input-helper-disabled-color);
2690
+ }
2691
+ .input[data-state=disabled] .input-field {
2692
+ border-color: var(--theme-input-border-color);
2693
+ background-color: var(--theme-input-surface-disabled);
2694
+ }
2695
+ .input[data-state=disabled] .input-field[data-appearance=secondary] {
2696
+ background-color: transparent;
2697
+ }
2698
+
2699
+ .input-password-toggle,
2700
+ .input-action-button {
2701
+ border: none;
2702
+ background: transparent;
2703
+ color: var(--theme-input-label-accent-color);
2704
+ font-size: var(--font-label-small-size);
2705
+ line-height: var(--font-label-small-line-height);
2706
+ font-weight: var(--font-label-small-weight);
2707
+ padding: 0;
2708
+ cursor: pointer;
2709
+ }
2710
+ .input-password-toggle:disabled,
2711
+ .input-action-button:disabled {
2712
+ color: var(--theme-input-helper-disabled-color);
2713
+ cursor: not-allowed;
2714
+ }
2715
+
2716
+ .input-search-icon {
2717
+ font-size: var(--font-label-large-size);
2718
+ line-height: 1;
2719
+ }
2720
+
2721
+ .one-time-code {
2722
+ display: flex;
2723
+ flex-direction: column;
2724
+ gap: var(--spacing-gap-2);
2725
+ }
2726
+
2727
+ .one-time-code__label {
2728
+ font-size: var(--font-label-small-size);
2729
+ color: var(--theme-input-label-color);
2730
+ }
2731
+
2732
+ .one-time-code__fields {
2733
+ display: flex;
2734
+ gap: var(--spacing-gap-3);
2735
+ }
2736
+
2737
+ .one-time-code__input {
2738
+ width: 44px;
2739
+ height: 56px;
2740
+ border-radius: var(--theme-input-radius-default);
2741
+ border: var(--theme-input-border-width-default) solid var(--theme-input-border-color);
2742
+ text-align: center;
2743
+ font-size: var(--font-heading-medium-size);
2744
+ font-weight: var(--font-heading-medium-weight);
2745
+ color: var(--theme-input-text-color);
2746
+ }
2747
+ .one-time-code__input:focus {
2748
+ outline: none;
2749
+ border-color: var(--theme-input-border-active);
2750
+ border-width: var(--theme-input-border-width-emphasis);
2751
+ }
2752
+
2753
+ .one-time-code__helper {
2754
+ font-size: var(--font-label-small-size);
2755
+ color: var(--theme-input-helper-color);
2756
+ }
2757
+
2758
+ /* TODO(label): 스타일을 SOT 토큰 값으로 정의한다. */
2759
+ :where(.radix-themes, .theme-root, :root) {
2760
+ --theme-navigation-height: 86px;
2761
+ --theme-navigation-padding-inline: 32px;
2762
+ --theme-navigation-padding-block-start: 8px;
2763
+ --theme-navigation-padding-block-end: 20px;
2764
+ --theme-navigation-item-gap: 2px;
2765
+ --theme-navigation-icon-size: 24px;
2766
+ --theme-navigation-label-font-size: 12px;
2767
+ --theme-navigation-label-line-height: 1.4;
2768
+ --theme-navigation-label-font-weight: 500;
2769
+ --theme-navigation-label-letter-spacing: -0.12px;
2770
+ --theme-navigation-bg: var(--color-common-100, #ffffff);
2771
+ --theme-navigation-border: var(--color-border-standard-assistive, #e4e5e7);
2772
+ --theme-navigation-shadow: 0 -4px 16px rgba(0, 0, 0, 0.04);
2773
+ --theme-navigation-color: var(--color-label-strong, #3d3f43);
2774
+ --theme-navigation-color-active: var(--color-primary-default, #0061ff);
2775
+ --theme-navigation-color-disabled: var(--color-label-disabled, #c5c6cc);
2776
+ }
2777
+
2778
+ .bottom-navigation {
2779
+ width: 100%;
2780
+ position: relative;
2781
+ z-index: 10;
2782
+ background-color: var(--theme-navigation-bg);
2783
+ border-top: 1px solid var(--theme-navigation-border);
2784
+ box-shadow: var(--theme-navigation-shadow, 0 -4px 16px rgba(0, 0, 0, 0.04));
2785
+ padding-inline: var(--theme-navigation-padding-inline);
2786
+ padding-block-start: var(--theme-navigation-padding-block-start);
2787
+ padding-block-end: max(var(--theme-navigation-padding-block-end), env(safe-area-inset-bottom, 0px));
2788
+ min-height: var(--theme-navigation-height);
2789
+ }
2790
+
2791
+ .bottom-navigation[data-fixed=true] {
2792
+ position: fixed;
2793
+ inset-inline: 0;
2794
+ bottom: 0;
2795
+ z-index: 20;
2796
+ }
2797
+
2798
+ .bottom-navigation-list {
2799
+ display: flex;
2800
+ align-items: flex-start;
2801
+ justify-content: space-between;
2802
+ gap: 0;
2803
+ padding: 0;
2804
+ margin: 0;
2805
+ list-style: none;
2806
+ }
2807
+
2808
+ .bottom-navigation-item {
2809
+ flex: 1;
2810
+ min-width: 0;
2811
+ display: flex;
2812
+ justify-content: center;
2813
+ }
2814
+
2815
+ .bottom-navigation-trigger {
2816
+ display: inline-flex;
2817
+ flex-direction: column;
2818
+ align-items: center;
2819
+ gap: var(--theme-navigation-item-gap);
2820
+ min-width: 0;
2821
+ padding: 0;
2822
+ border: none;
2823
+ background: none;
2824
+ appearance: none;
2825
+ text-decoration: none;
2826
+ color: var(--theme-navigation-color);
2827
+ font: inherit;
2828
+ cursor: pointer;
2829
+ -webkit-tap-highlight-color: transparent;
2830
+ transition: color 0.16s ease;
2831
+ }
2832
+
2833
+ .bottom-navigation-trigger[data-active=true] {
2834
+ color: var(--theme-navigation-color-active);
2835
+ }
2836
+
2837
+ .bottom-navigation-trigger[data-disabled=true],
2838
+ .bottom-navigation-trigger:disabled {
2839
+ color: var(--theme-navigation-color-disabled);
2840
+ cursor: default;
2841
+ pointer-events: none;
2842
+ }
2843
+
2844
+ .bottom-navigation-trigger:focus-visible {
2845
+ outline: none;
2846
+ border-radius: var(--theme-radius-large-1, 12px);
2847
+ box-shadow: 0 0 0 2px var(--color-primary-focus, rgba(0, 97, 255, 0.2));
2848
+ }
2849
+
2850
+ .navigation-item-icon {
2851
+ display: inline-flex;
2852
+ align-items: center;
2853
+ justify-content: center;
2854
+ width: var(--theme-navigation-icon-size);
2855
+ height: var(--theme-navigation-icon-size);
2856
+ color: currentColor;
2857
+ }
2858
+ .navigation-item-icon svg {
2859
+ display: block;
2860
+ width: 100%;
2861
+ height: 100%;
2862
+ }
2863
+ .navigation-item-icon {
2864
+ /* SVG fill/stroke를 currentColor로 맞춰 selected 컬러만 제어한다. */
2865
+ }
2866
+ .navigation-item-icon svg [fill]:not([fill=none]) {
2867
+ fill: currentColor;
2868
+ }
2869
+ .navigation-item-icon svg [stroke]:not([stroke=none]) {
2870
+ stroke: currentColor;
2871
+ }
2872
+
2873
+ .navigation-item-label {
2874
+ display: block;
2875
+ font-size: var(--theme-navigation-label-font-size);
2876
+ font-weight: var(--theme-navigation-label-font-weight);
2877
+ line-height: var(--theme-navigation-label-line-height);
2878
+ letter-spacing: var(--theme-navigation-label-letter-spacing);
2879
+ color: currentColor;
2880
+ text-align: center;
2881
+ white-space: nowrap;
2882
+ overflow: hidden;
2883
+ text-overflow: ellipsis;
2884
+ max-width: 100%;
2885
+ }
2886
+
2887
+ /* Pagination native 구현 스타일 */
2888
+ .pagination {
2889
+ --pagination-gap: var(--spacing-gap-2, 8px);
2890
+ --pagination-number-height: var(--theme-size-small-2, 24px);
2891
+ --pagination-number-min-width: var(--theme-size-small-2, 24px);
2892
+ --pagination-number-radius: var(--theme-radius-medium-1, 6px);
2893
+ --pagination-color-active-bg: var(--color-cool-gray-10, #18191b);
2894
+ --pagination-color-active-label: var(--color-common-100, #ffffff);
2895
+ --pagination-color-inactive-label: var(--color-label-alternative, #afb1b6);
2896
+ --pagination-dot-size: 8px;
2897
+ --pagination-dot-bg: var(--color-cool-gray-85, #d2d3d7);
2898
+ --pagination-dot-active-bg: var(--color-primary-default, #0061ff);
2899
+ --pagination-carousel-height: 8px;
2900
+ --pagination-carousel-dot-width: 8px;
2901
+ --pagination-carousel-active-width: 20px;
2902
+ --pagination-count-bg: var(--color-cool-gray-10, #18191b);
2903
+ --pagination-count-divider: var(--color-common-100, #ffffff);
2904
+ --pagination-count-total: var(--color-label-alternative, #afb1b6);
2905
+ display: inline-flex;
2906
+ gap: var(--pagination-gap);
2907
+ align-items: center;
2908
+ padding: 0;
2909
+ margin: 0;
2910
+ list-style: none;
2911
+ }
2912
+
2913
+ .pagination[data-interactive=false] .pagination-button,
2914
+ .pagination-button:disabled {
2915
+ cursor: default;
2916
+ }
2917
+
2918
+ .pagination-item {
2919
+ list-style: none;
2920
+ }
2921
+
2922
+ .pagination-button {
2923
+ appearance: none;
2924
+ border: none;
2925
+ background: transparent;
2926
+ padding: 0;
2927
+ margin: 0;
2928
+ display: inline-flex;
2929
+ align-items: center;
2930
+ justify-content: center;
2931
+ cursor: pointer;
2932
+ color: inherit;
2933
+ font: inherit;
2934
+ transition: background-color 0.16s ease, color 0.16s ease, opacity 0.16s ease;
2935
+ }
2936
+
2937
+ .pagination--variant-list {
2938
+ gap: var(--spacing-gap-1, 4px);
2939
+ }
2940
+
2941
+ .pagination--variant-list .pagination-button {
2942
+ min-width: var(--pagination-number-min-width);
2943
+ height: var(--pagination-number-height);
2944
+ padding-inline: var(--spacing-padding-2, 8px);
2945
+ border-radius: var(--pagination-number-radius);
2946
+ background-color: transparent;
2947
+ color: var(--pagination-color-inactive-label);
2948
+ font-size: var(--font-label-medium-size, 12px);
2949
+ font-weight: var(--font-label-medium-weight, 400);
2950
+ line-height: var(--font-label-medium-line-height, 1.5);
2951
+ }
2952
+
2953
+ .pagination[data-interactive=true] .pagination--variant-list .pagination-button:not([data-active=true]):hover {
2954
+ background-color: var(--color-bg-alternative-cool-gray, #f0f1f5);
2955
+ color: var(--color-label-strong, #5b5c60);
2956
+ }
2957
+
2958
+ .pagination--variant-list .pagination-button[data-active=true] {
2959
+ background-color: var(--pagination-color-active-bg);
2960
+ color: var(--pagination-color-active-label);
2961
+ }
2962
+
2963
+ .pagination-number {
2964
+ min-width: 1ch;
2965
+ text-align: center;
2966
+ }
2967
+
2968
+ .pagination--variant-carousel {
2969
+ gap: 5px;
2970
+ min-height: var(--pagination-carousel-height);
2971
+ align-items: center;
2972
+ }
2973
+
2974
+ .pagination--variant-carousel .pagination-button {
2975
+ width: auto;
2976
+ height: var(--pagination-carousel-height);
2977
+ padding: 0;
2978
+ }
2979
+
2980
+ .pagination--variant-carousel .pagination-dot {
2981
+ display: inline-flex;
2982
+ width: var(--pagination-carousel-dot-width);
2983
+ height: var(--pagination-carousel-height);
2984
+ border-radius: calc(var(--pagination-carousel-height) / 2);
2985
+ background-color: var(--pagination-dot-bg);
2986
+ transition: width 0.16s ease, background-color 0.16s ease;
2987
+ }
2988
+
2989
+ .pagination--variant-carousel .pagination-button[data-active=true] .pagination-dot {
2990
+ width: var(--pagination-carousel-active-width);
2991
+ background-color: var(--pagination-dot-active-bg);
2992
+ }
2993
+
2994
+ .pagination--variant-count {
2995
+ gap: 0;
2996
+ }
2997
+
2998
+ .pagination--variant-count .pagination-button {
2999
+ border-radius: var(--theme-radius-large-2, 16px);
3000
+ padding-inline: var(--spacing-padding-4, 16px);
3001
+ background-color: var(--pagination-count-bg);
3002
+ color: var(--pagination-color-active-label);
3003
+ font-weight: var(--font-label-medium-weight, 400);
3004
+ line-height: 1.5;
3005
+ }
3006
+
3007
+ .pagination--variant-count.pagination--count-size-small .pagination-button {
3008
+ height: var(--theme-size-small-2, 24px);
3009
+ font-size: var(--font-label-medium-size, 12px);
3010
+ }
3011
+
3012
+ .pagination--variant-count.pagination--count-size-xsmall .pagination-button {
3013
+ height: var(--theme-size-small-1, 20px);
3014
+ font-size: var(--font-label-small-size, 11px);
3015
+ }
3016
+
3017
+ .pagination-count-current {
3018
+ color: var(--pagination-color-active-label);
3019
+ }
3020
+
3021
+ .pagination-count-divider {
3022
+ margin-inline: var(--spacing-gap-1, 4px);
3023
+ color: var(--pagination-count-divider);
3024
+ }
3025
+
3026
+ .pagination-count-total {
3027
+ color: var(--pagination-count-total);
3028
+ }
3029
+
3030
+ :where(.radix-themes, .theme-root) {
3031
+ --theme-radio-frame-size-medium: 20px;
3032
+ --theme-radio-frame-size-large: 24px;
3033
+ --theme-radio-indicator-size-medium: 16px;
3034
+ --theme-radio-indicator-size-large: 20px;
3035
+ --theme-radio-indicator-border-width: 1.4px;
3036
+ --theme-radio-indicator-border-width-selected-medium: 4px;
3037
+ --theme-radio-indicator-border-width-selected-large: 6px;
3038
+ --theme-radio-border-color: var(--color-border-standard-assistive);
3039
+ --theme-radio-border-selected: var(--color-primary-default);
3040
+ --theme-radio-surface-selected: var(--color-primary-default);
3041
+ --theme-radio-surface-disabled: var(--color-border-standard-assistive);
3042
+ --theme-radio-border-disabled: var(--color-border-standard-assistive);
3043
+ --theme-radio-disabled-selected-fill: var(--color-primary-default);
3044
+ --theme-radio-label-color: var(--color-label-strong);
3045
+ --theme-radio-label-disabled: var(--color-label-disabled);
3046
+ --theme-radio-helper-color: var(--color-label-neutral);
3047
+ --theme-radio-helper-disabled: var(--color-label-disabled);
3048
+ --theme-radio-card-background: var(--color-common-100);
3049
+ --theme-radio-card-title-color: var(--color-label-strong);
3050
+ --theme-radio-card-description-color: var(--color-label-neutral);
3051
+ --theme-radio-card-badge-background: var(--color-bg-surface-static-blue);
3052
+ --theme-radio-card-badge-color: var(--color-primary-default);
3053
+ --theme-radio-focus-ring: rgba(2, 84, 255, 0.32);
3054
+ --theme-radio-disabled-selected-opacity: 0.28;
3055
+ }
3056
+
3057
+ .radio {
3058
+ display: inline-flex;
3059
+ align-items: center;
3060
+ justify-content: center;
3061
+ inline-size: var(--theme-radio-frame-size-medium);
3062
+ block-size: var(--theme-radio-frame-size-medium);
3063
+ border: none;
3064
+ background-color: transparent;
3065
+ border-radius: 0;
3066
+ padding: 0;
3067
+ cursor: pointer;
3068
+ transition: box-shadow 0.15s ease, transform 0.15s ease;
3069
+ }
3070
+ .radio[data-size=large] {
3071
+ inline-size: var(--theme-radio-frame-size-large);
3072
+ block-size: var(--theme-radio-frame-size-large);
3073
+ }
3074
+ .radio[data-disabled=true] {
3075
+ cursor: not-allowed;
3076
+ opacity: 0.6;
3077
+ }
3078
+
3079
+ .radio:focus-visible {
3080
+ box-shadow: 0 0 0 2px var(--theme-radio-focus-ring);
3081
+ }
3082
+
3083
+ .radio-indicator {
3084
+ inline-size: var(--theme-radio-indicator-size-medium);
3085
+ block-size: var(--theme-radio-indicator-size-medium);
3086
+ border-radius: 9999px;
3087
+ border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3088
+ transition: border-color 0.15s ease;
3089
+ }
3090
+
3091
+ .radio[data-state=checked] .radio-indicator,
3092
+ .radio[data-size=medium][data-state=checked] .radio-indicator {
3093
+ border-width: var(--theme-radio-indicator-border-width-selected-medium);
3094
+ }
3095
+
3096
+ .radio[data-size=large] .radio-indicator {
3097
+ inline-size: var(--theme-radio-indicator-size-large);
3098
+ block-size: var(--theme-radio-indicator-size-large);
3099
+ }
3100
+ .radio[data-size=large][data-state=checked] .radio-indicator {
3101
+ border-width: var(--theme-radio-indicator-border-width-selected-large);
3102
+ }
3103
+
3104
+ .radio[data-state=checked] .radio-indicator {
3105
+ border-color: var(--theme-radio-border-selected);
3106
+ }
3107
+
3108
+ .radio[data-disabled=true] .radio-indicator {
3109
+ border-color: var(--theme-radio-border-disabled);
3110
+ background-color: var(--theme-radio-surface-disabled);
3111
+ opacity: 1;
3112
+ }
3113
+
3114
+ .radio[data-disabled=true][data-state=checked] .radio-indicator {
3115
+ border-color: var(--theme-radio-disabled-selected-fill);
3116
+ opacity: var(--theme-radio-disabled-selected-opacity);
3117
+ }
3118
+
3119
+ .radio-field {
3120
+ display: flex;
3121
+ flex-direction: column;
3122
+ gap: var(--spacing-gap-1);
3123
+ color: var(--theme-radio-label-color);
3124
+ }
3125
+
3126
+ .radio-field[data-disabled=true] {
3127
+ color: var(--theme-radio-label-disabled);
3128
+ }
3129
+
3130
+ .radio-label-wrapper {
3131
+ display: inline-flex;
3132
+ align-items: center;
3133
+ gap: var(--spacing-gap-2);
3134
+ cursor: pointer;
3135
+ }
3136
+
3137
+ .radio-label-wrapper[data-disabled=true] {
3138
+ cursor: not-allowed;
3139
+ }
3140
+
3141
+ .radio-label-text {
3142
+ font-weight: var(--font-body-medium-weight);
3143
+ user-select: none;
3144
+ }
3145
+
3146
+ .radio-field[data-size=medium] .radio-label-text {
3147
+ font-size: var(--font-body-xsmall-size);
3148
+ line-height: var(--font-body-xsmall-line-height);
3149
+ }
3150
+
3151
+ .radio-field[data-size=large] .radio-label-text {
3152
+ font-size: var(--font-body-medium-size);
3153
+ line-height: var(--font-body-medium-line-height);
3154
+ }
3155
+
3156
+ .radio-helper {
3157
+ margin: 0;
3158
+ font-size: var(--font-caption-large-size);
3159
+ line-height: var(--font-caption-large-line-height);
3160
+ color: var(--theme-radio-helper-color);
3161
+ user-select: none;
3162
+ }
3163
+
3164
+ .radio-field[data-disabled=true] .radio-helper {
3165
+ color: var(--theme-radio-helper-disabled);
3166
+ }
3167
+
3168
+ .radio-card-group {
3169
+ display: flex;
3170
+ flex-direction: column;
3171
+ gap: var(--spacing-gap-3);
3172
+ }
3173
+
3174
+ .radio-card {
3175
+ display: flex;
3176
+ align-items: center;
3177
+ justify-content: space-between;
3178
+ inline-size: 100%;
3179
+ gap: var(--spacing-gap-3);
3180
+ padding: 16px 24px;
3181
+ background-color: var(--theme-radio-card-background);
3182
+ transition: background-color 0.15s ease;
3183
+ cursor: pointer;
3184
+ }
3185
+ .radio-card[data-disabled=true] {
3186
+ cursor: not-allowed;
3187
+ opacity: 0.7;
3188
+ }
3189
+
3190
+ .radio-card-content {
3191
+ display: flex;
3192
+ flex-direction: column;
3193
+ gap: var(--spacing-gap-1);
3194
+ min-inline-size: 0;
3195
+ }
3196
+
3197
+ .radio-card-title-row {
3198
+ display: inline-flex;
3199
+ align-items: center;
3200
+ gap: var(--spacing-gap-1);
3201
+ min-inline-size: 0;
3202
+ }
3203
+
3204
+ .radio-card-title {
3205
+ font-size: var(--font-heading-small-size);
3206
+ line-height: var(--font-heading-small-line-height);
3207
+ font-weight: var(--font-heading-small-weight);
3208
+ letter-spacing: 0.2px;
3209
+ color: var(--theme-radio-card-title-color);
3210
+ white-space: nowrap;
3211
+ }
3212
+
3213
+ .radio-card-badge {
3214
+ display: none;
3215
+ align-items: center;
3216
+ justify-content: center;
3217
+ padding: 4px 6px;
3218
+ font-size: var(--font-caption-medium-size);
3219
+ line-height: var(--font-caption-medium-line-height);
3220
+ border-radius: 6px;
3221
+ background-color: var(--theme-radio-card-badge-background);
3222
+ color: var(--theme-radio-card-badge-color);
3223
+ }
3224
+
3225
+ .radio-card[data-state=checked] .radio-card-title {
3226
+ color: var(--theme-radio-card-badge-color);
3227
+ }
3228
+ .radio-card[data-state=checked] .radio-card-badge {
3229
+ display: inline-flex;
3230
+ }
3231
+
3232
+ .radio-card-description {
3233
+ margin: 0;
3234
+ font-size: var(--font-body-small-size);
3235
+ line-height: var(--font-body-small-line-height);
3236
+ color: var(--theme-radio-card-description-color);
3237
+ }
3238
+
3239
+ .radio-card-indicator-wrapper {
3240
+ display: inline-flex;
3241
+ align-items: center;
3242
+ justify-content: center;
3243
+ flex-shrink: 0;
3244
+ }
3245
+
3246
+ .radio-card-indicator {
3247
+ inline-size: var(--theme-radio-indicator-size-medium);
3248
+ block-size: var(--theme-radio-indicator-size-medium);
3249
+ border-radius: 9999px;
3250
+ border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3251
+ transition: border-color 0.15s ease;
3252
+ }
3253
+
3254
+ .radio-card[data-size=large] .radio-card-indicator {
3255
+ inline-size: var(--theme-radio-indicator-size-large);
3256
+ block-size: var(--theme-radio-indicator-size-large);
3257
+ }
3258
+
3259
+ .radio-card[data-state=checked] .radio-card-indicator {
3260
+ border-color: var(--theme-radio-border-selected);
3261
+ border-width: var(--theme-radio-indicator-border-width-selected-medium);
3262
+ }
3263
+
3264
+ .radio-card[data-size=large][data-state=checked] .radio-card-indicator {
3265
+ border-width: var(--theme-radio-indicator-border-width-selected-large);
3266
+ }
3267
+
3268
+ /* TODO(scrollbar): 스타일을 SOT 토큰 값으로 정의한다. */
3269
+ .segmented-control {
3270
+ --segmented-height: 34px;
3271
+ --segmented-padding: 2px;
3272
+ --segmented-radius: 16px;
3273
+ --segmented-bg: var(--color-bg-alternative-cool-gray, #f2f2f3);
3274
+ --segmented-indicator-bg: var(--color-common-100, #ffffff);
3275
+ --segmented-indicator-shadow: 2px 2px 4px rgba(0, 0, 0, 0.02);
3276
+ --segmented-label-color: var(--color-label-neutral, #797e86);
3277
+ --segmented-label-active-color: var(--color-label-strong, #181a1b);
3278
+ --segmented-disabled-opacity: 0.4;
3279
+ --segmented-item-padding-x: 22px;
3280
+ --segmented-item-padding-y: 4px;
3281
+ --segmented-item-font-size: var(--font-heading-xxsmall-size, 15px);
3282
+ --segmented-item-font-weight: var(--font-heading-xxsmall-weight, 500);
3283
+ --segmented-item-line-height: var(--font-heading-xxsmall-line-height, 1.5);
3284
+ display: grid;
3285
+ grid-auto-flow: column;
3286
+ grid-auto-columns: 1fr;
3287
+ align-items: stretch;
3288
+ padding: var(--segmented-padding);
3289
+ border-radius: var(--segmented-radius);
3290
+ background: var(--segmented-bg);
3291
+ width: fit-content;
3292
+ height: var(--segmented-height);
3293
+ font-size: 0;
3294
+ isolation: isolate;
3295
+ }
3296
+
3297
+ .segmented-control:where(.rt-SegmentedControlRoot) {
3298
+ /* Radix Theme 기본 inline-grid를 덮어 동일한 sizing 시스템에서만 layout이 될 수 있도록 한다. */
3299
+ display: grid;
3300
+ }
3301
+
3302
+ .segmented-control:where([data-keep-selected=true]) {
3303
+ --segmented-disabled-opacity: 0.3;
3304
+ }
3305
+
3306
+ .segmented-control :where(.rt-SegmentedControlIndicator) {
3307
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3308
+ background: transparent;
3309
+ box-shadow: none;
3310
+ overflow: hidden;
3311
+ }
3312
+
3313
+ .segmented-control :where(.rt-SegmentedControlIndicator)::before {
3314
+ content: "";
3315
+ position: absolute;
3316
+ inset: var(--segmented-padding);
3317
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3318
+ background: var(--segmented-indicator-bg);
3319
+ box-shadow: var(--segmented-indicator-shadow);
3320
+ }
3321
+
3322
+ .segmented-control :where(.rt-SegmentedControlItemSeparator) {
3323
+ display: none;
3324
+ }
3325
+
3326
+ .segmented-control :where(.rt-SegmentedControlItem) {
3327
+ background: transparent;
3328
+ padding: 0;
3329
+ border: none;
3330
+ min-width: 0;
3331
+ display: flex;
3332
+ }
3333
+
3334
+ .segmented-control :where(.rt-SegmentedControlItemLabel) {
3335
+ gap: 0;
3336
+ height: fit-content;
3337
+ padding: 0;
3338
+ font-size: 0;
3339
+ }
3340
+
3341
+ .segmented-control-item {
3342
+ width: 100%;
3343
+ height: 100%;
3344
+ border: none;
3345
+ background: transparent;
3346
+ cursor: pointer;
3347
+ }
3348
+ .segmented-control-item .rt-SegmentedControlItemLabel {
3349
+ display: flex;
3350
+ align-items: center;
3351
+ justify-content: center;
3352
+ padding: var(--segmented-item-padding-y) var(--segmented-item-padding-x);
3353
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3354
+ }
3355
+
3356
+ .segmented-control-item:where([data-disabled=true]) {
3357
+ cursor: not-allowed;
3358
+ opacity: var(--segmented-disabled-opacity);
3359
+ }
3360
+
3361
+ .segmented-control-item:where(:focus-visible) {
3362
+ outline: 2px solid var(--color-focus-ring, var(--color-primary-default));
3363
+ outline-offset: 2px;
3364
+ }
3365
+
3366
+ .segmented-control-item-label {
3367
+ font-size: var(--segmented-item-font-size);
3368
+ font-weight: var(--segmented-item-font-weight);
3369
+ line-height: var(--segmented-item-line-height);
3370
+ letter-spacing: 0.2px;
3371
+ color: var(--segmented-label-color);
3372
+ transition: color 0.2s ease;
3373
+ }
3374
+
3375
+ .segmented-control-item:where([data-state=on]) .segmented-control-item-label {
3376
+ color: var(--segmented-label-active-color);
3377
+ }
3378
+
3379
+ /* TODO(select): 스타일을 SOT 토큰 값으로 정의한다. */
3380
+ /* TODO(spinner): 스타일을 SOT 토큰 값으로 정의한다. */
3381
+ .tab-root {
3382
+ /* Figma node 694:4619 측정값을 CSS 변수로 고정해 Storybook과 실 서비스 간 시각 편차를 줄인다. */
3383
+ --tab-label-font-size: var(--font-heading-xsmall-size, 17px);
3384
+ --tab-label-font-weight: var(--font-heading-xsmall-weight, 600);
3385
+ --tab-label-line-height: 1.4;
3386
+ --tab-label-letter-spacing: 0px;
3387
+ --tab-gap: var(--spacing-gap-2, 8px);
3388
+ --tab-padding-y: 10px;
3389
+ --tab-padding-x: var(--spacing-padding-8, 24px);
3390
+ --tab-icon-gap: 6px;
3391
+ --tab-line-track-color: var(--color-border-divider, #f2f2f3);
3392
+ --tab-line-track-height: 1px;
3393
+ --tab-line-indicator-height: 2px;
3394
+ --tab-color-active-default: #1a6aff;
3395
+ --tab-color-active: var(--tab-color-active-default);
3396
+ --tab-color-hover: color-mix(in srgb, var(--tab-color-active), #000 15%);
3397
+ --tab-line-hover-color: var(--tab-color-hover, var(--tab-color-active));
3398
+ --tab-fill-hover-bg: var(--color-bg-alternative-cool-gray, #f2f2f3);
3399
+ --tab-fill-active-color: var(--color-common-100, #ffffff);
3400
+ --tab-inactive-color: var(--color-label-alternative, #afb1b6);
3401
+ --tab-disabled-opacity: 0.4;
3402
+ --tab-height: 48px;
3403
+ width: 100%;
3404
+ display: flex;
3405
+ flex-direction: column;
3406
+ gap: var(--spacing-gap-3);
3407
+ }
3408
+
3409
+ .tab-root:where([data-scale=small]) {
3410
+ --tab-label-font-size: var(--font-heading-xxsmall-size, 15px);
3411
+ --tab-label-font-weight: var(--font-heading-xxsmall-weight, 600);
3412
+ --tab-height: 40px;
3413
+ --tab-padding-x: var(--spacing-padding-4, 8px);
3414
+ }
3415
+
3416
+ .tab-root:where([data-scale=medium]) {
3417
+ --tab-label-font-size: var(--font-heading-xsmall-size, 17px);
3418
+ --tab-label-font-weight: var(--font-heading-xsmall-weight, 600);
3419
+ --tab-height: 48px;
3420
+ }
3421
+
3422
+ .tab-root:where([data-scale=large]) {
3423
+ --tab-label-font-size: var(--font-heading-small-size, 19px);
3424
+ --tab-label-font-weight: var(--font-heading-small-weight, 600);
3425
+ --tab-height: 56px;
3426
+ --tab-padding-x: var(--spacing-padding-8, 24px);
3427
+ }
3428
+
3429
+ .tab-list {
3430
+ display: flex;
3431
+ align-items: stretch;
3432
+ gap: var(--tab-gap);
3433
+ width: fit-content;
3434
+ overflow-x: auto;
3435
+ scrollbar-width: none;
3436
+ }
3437
+
3438
+ .tab-list::-webkit-scrollbar {
3439
+ display: none;
3440
+ }
3441
+
3442
+ .tab-list:where([data-full-width=true]) {
3443
+ width: 100%;
3444
+ }
3445
+
3446
+ .tab-trigger {
3447
+ position: relative;
3448
+ display: flex;
3449
+ align-items: center;
3450
+ justify-content: center;
3451
+ gap: var(--tab-icon-gap);
3452
+ min-height: var(--tab-height);
3453
+ padding: var(--tab-padding-y) var(--tab-padding-x);
3454
+ background: transparent;
3455
+ border: none;
3456
+ cursor: pointer;
3457
+ transition: background-color 0.2s ease;
3458
+ }
3459
+
3460
+ .tab-trigger:where(:focus-visible) {
3461
+ outline: 2px solid var(--color-focus-ring, var(--color-primary-default));
3462
+ outline-offset: 2px;
3463
+ }
3464
+
3465
+ .tab-trigger:where([data-disabled=true]) {
3466
+ cursor: not-allowed;
3467
+ opacity: var(--tab-disabled-opacity);
3468
+ }
3469
+
3470
+ .tab-trigger-icon {
3471
+ display: flex;
3472
+ align-items: center;
3473
+ justify-content: center;
3474
+ }
3475
+
3476
+ .tab-trigger-label {
3477
+ display: flex;
3478
+ align-items: center;
3479
+ justify-content: center;
3480
+ font-size: var(--tab-label-font-size);
3481
+ font-weight: var(--tab-label-font-weight);
3482
+ line-height: var(--tab-label-line-height);
3483
+ letter-spacing: var(--tab-label-letter-spacing);
3484
+ color: var(--tab-inactive-color);
3485
+ transition: color 0.2s ease;
3486
+ }
3487
+
3488
+ .tab-list:where([data-variant=line]) {
3489
+ position: relative;
3490
+ width: 100%;
3491
+ }
3492
+
3493
+ .tab-list:where([data-variant=line])::before {
3494
+ content: "";
3495
+ position: absolute;
3496
+ inset: auto 0 0;
3497
+ height: var(--tab-line-track-height, 1px);
3498
+ background: var(--tab-line-track-color);
3499
+ z-index: 0;
3500
+ }
3501
+
3502
+ .tab-list:where([data-variant=line][data-full-width=true]) > .tab-trigger {
3503
+ flex: 1;
3504
+ }
3505
+
3506
+ .tab-trigger:where([data-variant=line])::after {
3507
+ content: "";
3508
+ position: absolute;
3509
+ left: 0;
3510
+ right: 0;
3511
+ bottom: -1px;
3512
+ height: var(--tab-line-indicator-height, 2px);
3513
+ background: transparent;
3514
+ transform: scaleX(0);
3515
+ transform-origin: center;
3516
+ z-index: 1;
3517
+ transition: transform 0.2s ease, background-color 0.2s ease;
3518
+ }
3519
+
3520
+ .tab-trigger:where([data-variant=line][data-state=active]) .tab-trigger-label {
3521
+ color: var(--tab-color-active);
3522
+ }
3523
+
3524
+ .tab-trigger:where([data-variant=line][data-state=active])::after {
3525
+ background: var(--tab-color-active);
3526
+ transform: scaleX(1);
3527
+ }
3528
+
3529
+ .tab-trigger:where([data-variant=line]):where(:not([data-state=active])):hover .tab-trigger-label {
3530
+ color: var(--tab-line-hover-color);
3531
+ }
3532
+
3533
+ .tab-list:where([data-variant=fill]) {
3534
+ width: fit-content;
3535
+ border: none;
3536
+ background: transparent;
3537
+ border-radius: 0;
3538
+ gap: 0;
3539
+ }
3540
+
3541
+ .tab-list:where([data-variant=fill][data-full-width=true]) {
3542
+ width: 100%;
3543
+ }
3544
+
3545
+ .tab-list:where([data-variant=fill][data-full-width=true]) > .tab-trigger {
3546
+ flex: 1;
3547
+ }
3548
+
3549
+ .tab-trigger:where([data-variant=fill]) {
3550
+ border-radius: 12px;
3551
+ min-width: 0;
3552
+ }
3553
+
3554
+ .tab-trigger:where([data-variant=fill][data-state=active]) {
3555
+ background: var(--tab-color-active);
3556
+ }
3557
+
3558
+ .tab-trigger:where([data-variant=fill][data-state=active]) .tab-trigger-label {
3559
+ color: var(--tab-fill-active-color);
3560
+ }
3561
+
3562
+ .tab-trigger:where([data-variant=fill]):where(:not([data-state=active])):hover {
3563
+ background: var(--tab-fill-hover-bg);
3564
+ }
3565
+
3566
+ .tab-content {
3567
+ display: block;
3568
+ padding: var(--spacing-padding-6) 0;
3569
+ }
3570
+
3571
+ /* TODO(table): 스타일을 SOT 토큰 값으로 정의한다. */