@uniai-fe/uds-primitives 0.0.5 → 0.0.7

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.
@@ -0,0 +1,3614 @@
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=teritary]) {
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=teritary]) {
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
+ :where(.radix-themes, .theme-root, :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
+ /* size/radius */
1149
+ --theme-button-size-small-1: var(--theme-size-small-1);
1150
+ --theme-button-size-small-2: var(--theme-size-small-2);
1151
+ --theme-button-size-small-3: var(--theme-size-small-3);
1152
+ --theme-button-size-medium-1: var(--theme-size-medium-1);
1153
+ --theme-button-size-medium-2: var(--theme-size-medium-2);
1154
+ --theme-button-size-medium-3: var(--theme-size-medium-3);
1155
+ --theme-button-radius-medium-1: var(--theme-radius-medium-1);
1156
+ --theme-button-radius-medium-3: var(--theme-radius-medium-3);
1157
+ --theme-button-radius-large-1: var(--theme-radius-large-1);
1158
+ --theme-button-radius-large-2: var(--theme-radius-large-2);
1159
+ --theme-button-radius-small: var(--theme-radius-small);
1160
+ --theme-button-radius-xlarge: var(--theme-radius-xlarge);
1161
+ /* typography */
1162
+ --theme-button-font-body-medium-family: var(--font-body-medium-family);
1163
+ --theme-button-font-body-medium-size: var(--font-body-medium-size);
1164
+ --theme-button-font-body-medium-weight: var(--font-body-medium-weight);
1165
+ --theme-button-font-body-medium-line-height: var(
1166
+ --font-body-medium-line-height
1167
+ );
1168
+ --theme-button-font-body-medium-letter-spacing: var(
1169
+ --font-body-medium-letter-spacing
1170
+ );
1171
+ --theme-button-font-label-medium-size: var(--font-label-medium-size);
1172
+ --theme-button-font-label-medium-weight: var(--font-label-medium-weight);
1173
+ --theme-button-font-label-medium-line-height: var(
1174
+ --font-label-medium-line-height
1175
+ );
1176
+ --theme-button-font-label-medium-letter-spacing: var(
1177
+ --font-label-medium-letter-spacing
1178
+ );
1179
+ --theme-button-font-label-large-size: var(--font-label-large-size);
1180
+ --theme-button-font-label-large-weight: var(--font-label-large-weight);
1181
+ --theme-button-font-label-large-line-height: var(
1182
+ --font-label-large-line-height
1183
+ );
1184
+ --theme-button-font-label-large-letter-spacing: var(
1185
+ --font-label-large-letter-spacing
1186
+ );
1187
+ --theme-button-font-body-large-size: var(--font-body-large-size);
1188
+ --theme-button-font-body-large-weight: var(--font-body-large-weight);
1189
+ --theme-button-font-body-large-line-height: var(
1190
+ --font-body-large-line-height
1191
+ );
1192
+ --theme-button-font-body-large-letter-spacing: var(
1193
+ --font-body-large-letter-spacing
1194
+ );
1195
+ --theme-button-font-weight: 400;
1196
+ /* colors */
1197
+ --theme-button-color-neutral-base: var(--color-neutral-20);
1198
+ --theme-button-color-common-100: var(--color-common-100);
1199
+ --theme-button-color-primary-default: var(--color-primary-default);
1200
+ --theme-button-color-primary-strong: var(--color-primary-strong);
1201
+ --theme-button-color-primary-heavy: var(--color-primary-heavy);
1202
+ --theme-button-color-secondary-default: var(--color-secondary-default);
1203
+ --theme-button-color-secondary-strong: var(--color-secondary-strong);
1204
+ --theme-button-color-secondary-heavy: var(--color-secondary-heavy);
1205
+ --theme-button-color-tertiary-default: var(--color-tertiary-default);
1206
+ --theme-button-color-tertiary-strong: var(--color-tertiary-strong);
1207
+ --theme-button-color-tertiary-heavy: var(--color-tertiary-heavy);
1208
+ --theme-button-color-blue-90: var(--color-blue-90);
1209
+ --theme-button-color-blue-50: var(--color-blue-50);
1210
+ --theme-button-color-blue-45: var(--color-blue-45);
1211
+ --theme-button-overlay-solid-tertiary-bg: var(--color-bg-surface-strong);
1212
+ /* Confirm dialog cancel 버튼을 위한 solid tertiary 색상 정의 */
1213
+ --theme-button-tertiary-solid-bg: var(--color-bg-surface-neutral);
1214
+ --theme-button-tertiary-solid-hover-bg: var(--color-bg-surface-strong);
1215
+ --theme-button-tertiary-solid-pressed-bg: var(--color-bg-surface-strong);
1216
+ --theme-button-tertiary-solid-foreground: var(--color-label-neutral);
1217
+ --theme-button-secondary-solid-bg: var(--color-blue-95, #e5eeff);
1218
+ --theme-button-secondary-solid-hover-bg: #dbe9ff;
1219
+ --theme-button-secondary-solid-pressed-bg: #ccdeff;
1220
+ --theme-button-color-cool-gray-90: var(--color-cool-gray-90);
1221
+ --theme-button-color-cool-gray-95: var(--color-cool-gray-95);
1222
+ --theme-button-color-cool-gray-10: var(--color-cool-gray-10);
1223
+ --theme-button-color-bg-surface-standard: var(--color-bg-surface-standard);
1224
+ --theme-button-color-bg-alternative-cool-gray: var(
1225
+ --color-bg-alternative-cool-gray
1226
+ );
1227
+ --theme-button-color-bg-surface-strong: var(--color-bg-surface-strong);
1228
+ --theme-button-color-label-disabled: var(--color-label-disabled);
1229
+ /* overlays */
1230
+ --theme-button-overlay-solid-secondary-bg: var(--color-blue-90);
1231
+ --theme-button-overlay-outlined-primary-bg: var(--color-blue-90);
1232
+ --theme-button-overlay-outlined-secondary-bg: var(--color-cool-gray-95);
1233
+ --theme-button-overlay-outlined-tertiary-bg: var(--color-cool-gray-95);
1234
+ /* text-button backgrounds */
1235
+ --theme-button-text-default-hover-bg: var(--color-tertiary-default);
1236
+ --theme-button-text-default-pressed-bg: var(--color-tertiary-strong);
1237
+ --theme-button-text-secondary-hover-bg: var(--color-bg-alternative-cool-gray);
1238
+ --theme-button-text-secondary-pressed-bg: var(--color-secondary-strong);
1239
+ --theme-button-text-tertiary-hover-bg: var(--color-bg-alternative-cool-gray);
1240
+ --theme-button-text-tertiary-pressed-bg: var(--color-bg-surface-strong);
1241
+ }
1242
+
1243
+ /* Radix reset 이후에도 primitives 스타일이 유지되도록 공통 클래스에 스타일 부여 */
1244
+ .button {
1245
+ display: flex;
1246
+ align-items: center;
1247
+ justify-content: center;
1248
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1249
+ width: fit-content;
1250
+ min-width: var(--theme-button-min-width, var(--theme-size-small-2, 24px));
1251
+ min-height: var(--button-min-height, auto);
1252
+ padding-inline: var(--button-padding-inline, var(--theme-button-padding-4, var(--spacing-padding-4, 16px)));
1253
+ padding-block: var(--button-padding-block, var(--theme-button-padding-2, var(--spacing-padding-2, 4px)));
1254
+ border-radius: var(--button-border-radius, var(--theme-button-radius-medium-1, var(--theme-radius-medium-1, 8px)));
1255
+ border: 1px solid transparent;
1256
+ background-color: transparent;
1257
+ color: var(--theme-button-color-neutral-base, var(--color-neutral-20));
1258
+ box-shadow: none;
1259
+ font-family: var(--theme-button-font-body-medium-family, var(--font-body-medium-family, "Pretendard"));
1260
+ font-size: var(--theme-button-font-body-medium-size, var(--font-body-medium-size, 16px));
1261
+ font-weight: var(--theme-button-font-weight, 400); /* 버튼 텍스트는 스케일과 무관하게 weight 400 유지 */
1262
+ line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 24px));
1263
+ letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1264
+ /* Radix Theme pressed filter를 비활성화해 상태 색상이 그대로 노출되도록 한다. */
1265
+ --base-button-solid-active-filter: none;
1266
+ --base-button-solid-high-contrast-hover-filter: none;
1267
+ --base-button-solid-high-contrast-active-filter: none;
1268
+ --base-button-classic-active-filter: none;
1269
+ --base-button-classic-high-contrast-hover-filter: none;
1270
+ --base-button-classic-high-contrast-active-filter: none;
1271
+ filter: none;
1272
+ cursor: pointer;
1273
+ }
1274
+
1275
+ .button:where([data-block=true]) {
1276
+ width: 100%;
1277
+ }
1278
+
1279
+ .button:where([data-loading=true]) {
1280
+ pointer-events: none;
1281
+ cursor: progress;
1282
+ }
1283
+
1284
+ .button-icon,
1285
+ .button-label,
1286
+ .button-prefix,
1287
+ .button-suffix {
1288
+ display: inline-flex;
1289
+ align-items: center;
1290
+ justify-content: center;
1291
+ }
1292
+
1293
+ .button:where([data-variant=solid][data-intent=primary]) {
1294
+ background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1295
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1296
+ color: var(--theme-button-color-common-100, var(--color-common-100));
1297
+ }
1298
+ .button:where([data-variant=solid][data-intent=primary]):disabled, .button:where([data-variant=solid][data-intent=primary])[data-disabled=true] {
1299
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1300
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1301
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1302
+ }
1303
+ .button:where([data-variant=solid][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1304
+ background-color: var(--theme-button-color-blue-50, var(--color-blue-50));
1305
+ border-color: var(--theme-button-color-blue-50, var(--color-blue-50));
1306
+ }
1307
+ .button:where([data-variant=solid][data-intent=primary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
1308
+ background-color: var(--theme-button-color-blue-45, var(--color-blue-45));
1309
+ border-color: var(--theme-button-color-blue-45, var(--color-blue-45));
1310
+ }
1311
+
1312
+ .button:where([data-variant=outlined][data-intent=primary]) {
1313
+ background-color: transparent;
1314
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1315
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1316
+ }
1317
+ .button:where([data-variant=outlined][data-intent=primary]):disabled, .button:where([data-variant=outlined][data-intent=primary])[data-disabled=true] {
1318
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1319
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1320
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1321
+ }
1322
+ .button:where([data-variant=outlined][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1323
+ background-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1324
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1325
+ }
1326
+ .button:where([data-variant=outlined][data-intent=primary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
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
+
1331
+ .button:where([data-variant=text-button][data-intent=primary]) {
1332
+ border-color: transparent;
1333
+ background-color: transparent;
1334
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1335
+ }
1336
+ .button:where([data-variant=text-button][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=text-button][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1337
+ background-color: var(--theme-button-text-default-hover-bg, var(--color-tertiary-default));
1338
+ }
1339
+ .button:where([data-variant=text-button][data-intent=primary]):active:not(:disabled), .button:where([data-variant=text-button][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
1340
+ background-color: var(--theme-button-text-default-pressed-bg, var(--color-tertiary-strong));
1341
+ }
1342
+ .button:where([data-variant=text-button][data-intent=primary]):disabled, .button:where([data-variant=text-button][data-intent=primary])[data-disabled=true] {
1343
+ background-color: transparent;
1344
+ border-color: transparent;
1345
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1346
+ }
1347
+
1348
+ .button:where([data-variant=solid][data-intent=secondary]) {
1349
+ background-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1350
+ border-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1351
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1352
+ }
1353
+ .button:where([data-variant=solid][data-intent=secondary]):disabled, .button:where([data-variant=solid][data-intent=secondary])[data-disabled=true] {
1354
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1355
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1356
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1357
+ }
1358
+ .button:where([data-variant=solid][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1359
+ background-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1360
+ border-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1361
+ }
1362
+ .button:where([data-variant=solid][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1363
+ background-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1364
+ border-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1365
+ }
1366
+
1367
+ .button:where([data-variant=outlined][data-intent=secondary]) {
1368
+ background-color: transparent;
1369
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1370
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1371
+ }
1372
+ .button:where([data-variant=outlined][data-intent=secondary]):disabled, .button:where([data-variant=outlined][data-intent=secondary])[data-disabled=true] {
1373
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1374
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1375
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1376
+ }
1377
+ .button:where([data-variant=outlined][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1378
+ background-color: var(--theme-button-color-blue-90, var(--color-blue-90));
1379
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1380
+ }
1381
+ .button:where([data-variant=outlined][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1382
+ background-color: var(--theme-button-secondary-solid-bg, var(--color-blue-95, #e5eeff));
1383
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1384
+ }
1385
+
1386
+ .button:where([data-variant=text-button][data-intent=secondary]) {
1387
+ border-color: transparent;
1388
+ background-color: transparent;
1389
+ color: var(--theme-button-color-primary-default, var(--color-primary-default));
1390
+ }
1391
+ .button:where([data-variant=text-button][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=text-button][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1392
+ background-color: var(--theme-button-text-secondary-hover-bg, var(--color-bg-alternative-cool-gray));
1393
+ }
1394
+ .button:where([data-variant=text-button][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=text-button][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1395
+ background-color: var(--theme-button-text-secondary-pressed-bg, var(--color-secondary-strong));
1396
+ }
1397
+ .button:where([data-variant=text-button][data-intent=secondary]):disabled, .button:where([data-variant=text-button][data-intent=secondary])[data-disabled=true] {
1398
+ background-color: transparent;
1399
+ border-color: transparent;
1400
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1401
+ }
1402
+
1403
+ .button:where([data-variant=solid][data-intent=teritary]) {
1404
+ background-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1405
+ border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1406
+ color: var(--theme-button-tertiary-solid-foreground, var(--color-label-neutral));
1407
+ }
1408
+ .button:where([data-variant=solid][data-intent=teritary]):disabled, .button:where([data-variant=solid][data-intent=teritary])[data-disabled=true] {
1409
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1410
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1411
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1412
+ }
1413
+ .button:where([data-variant=solid][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1414
+ background-color: var(--theme-button-tertiary-solid-hover-bg, var(--color-bg-surface-static-cool-gray));
1415
+ border-color: var(--theme-button-tertiary-solid-hover-bg, var(--color-bg-surface-static-cool-gray));
1416
+ }
1417
+ .button:where([data-variant=solid][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1418
+ background-color: var(--theme-button-tertiary-solid-pressed-bg, var(--color-bg-surface-strong));
1419
+ border-color: var(--theme-button-tertiary-solid-pressed-bg, var(--color-bg-surface-strong));
1420
+ }
1421
+
1422
+ .button:where([data-variant=outlined][data-intent=teritary]) {
1423
+ background-color: transparent;
1424
+ color: var(--theme-button-color-cool-gray-10, var(--color-cool-gray-10));
1425
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1426
+ }
1427
+ .button:where([data-variant=outlined][data-intent=teritary]):disabled, .button:where([data-variant=outlined][data-intent=teritary])[data-disabled=true] {
1428
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1429
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1430
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1431
+ }
1432
+ .button:where([data-variant=outlined][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1433
+ background-color: var(--theme-button-color-cool-gray-95, var(--color-cool-gray-95));
1434
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1435
+ }
1436
+ .button:where([data-variant=outlined][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1437
+ background-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1438
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1439
+ }
1440
+
1441
+ .button:where([data-variant=text-button][data-intent=teritary]) {
1442
+ border-color: transparent;
1443
+ background-color: transparent;
1444
+ color: var(--theme-button-color-cool-gray-10, var(--color-cool-gray-10));
1445
+ }
1446
+ .button:where([data-variant=text-button][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=text-button][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1447
+ background-color: var(--theme-button-text-tertiary-hover-bg, var(--color-bg-alternative-cool-gray));
1448
+ }
1449
+ .button:where([data-variant=text-button][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=text-button][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1450
+ background-color: var(--theme-button-text-tertiary-pressed-bg, var(--color-bg-surface-strong));
1451
+ }
1452
+ .button:where([data-variant=text-button][data-intent=teritary]):disabled, .button:where([data-variant=text-button][data-intent=teritary])[data-disabled=true] {
1453
+ background-color: transparent;
1454
+ border-color: transparent;
1455
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1456
+ }
1457
+
1458
+ .button:where([data-size=small]) {
1459
+ padding-inline: var(--theme-button-padding-3, var(--spacing-padding-3, 12px));
1460
+ gap: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1461
+ padding-block: var(--theme-button-padding-1, var(--spacing-padding-1, 2px));
1462
+ font-size: var(--theme-button-font-label-medium-size, var(--font-label-medium-size, 14px));
1463
+ font-weight: var(--theme-button-font-weight, 400);
1464
+ line-height: var(--theme-button-font-label-medium-line-height, var(--font-label-medium-line-height, 1.5em));
1465
+ letter-spacing: var(--theme-button-font-label-medium-letter-spacing, var(--font-label-medium-letter-spacing, 0px));
1466
+ }
1467
+
1468
+ .button:where([data-size=medium]) {
1469
+ padding-inline: var(--theme-button-padding-4, var(--spacing-padding-4, 16px));
1470
+ gap: var(--theme-button-gap-2, var(--spacing-gap-2, 8px));
1471
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1472
+ font-size: var(--theme-button-font-label-large-size, var(--font-label-large-size, 16px));
1473
+ font-weight: var(--theme-button-font-weight, 400);
1474
+ line-height: var(--theme-button-font-label-large-line-height, var(--font-label-large-line-height, 1.5em));
1475
+ letter-spacing: var(--theme-button-font-label-large-letter-spacing, var(--font-label-large-letter-spacing, 0px));
1476
+ }
1477
+
1478
+ .button:where([data-size=large]) {
1479
+ padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 20px));
1480
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1481
+ padding-block: var(--theme-button-padding-3, var(--spacing-padding-3, 6px));
1482
+ font-size: var(--theme-button-font-body-medium-size, var(--font-body-medium-size, 17px));
1483
+ font-weight: var(--theme-button-font-weight, 400);
1484
+ line-height: var(--theme-button-font-body-medium-line-height, var(--font-body-medium-line-height, 1.5em));
1485
+ letter-spacing: var(--theme-button-font-body-medium-letter-spacing, var(--font-body-medium-letter-spacing, 0px));
1486
+ }
1487
+
1488
+ .button:where([data-size=xlarge]) {
1489
+ padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1490
+ gap: var(--theme-button-gap-3, var(--spacing-gap-3, 12px));
1491
+ padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1492
+ font-size: var(--theme-button-font-body-large-size, var(--font-body-large-size, 19px));
1493
+ font-weight: var(--theme-button-font-weight, 400);
1494
+ line-height: var(--theme-button-font-body-large-line-height, var(--font-body-large-line-height, 1.5em));
1495
+ letter-spacing: var(--theme-button-font-body-large-letter-spacing, var(--font-body-large-letter-spacing, 0px));
1496
+ }
1497
+
1498
+ .button:where([data-variant=solid][data-size=small]) {
1499
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1500
+ padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1501
+ }
1502
+
1503
+ .button:where([data-variant=solid][data-size=medium]) {
1504
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1505
+ padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1506
+ }
1507
+
1508
+ .button:where([data-variant=solid][data-size=large]) {
1509
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1510
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1511
+ }
1512
+
1513
+ .button:where([data-variant=solid][data-size=xlarge]) {
1514
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1515
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1516
+ }
1517
+
1518
+ .button:where([data-variant=outlined][data-size=small]) {
1519
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1520
+ padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1521
+ }
1522
+
1523
+ .button:where([data-variant=outlined][data-size=medium]) {
1524
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1525
+ padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1526
+ }
1527
+
1528
+ .button:where([data-variant=outlined][data-size=large]) {
1529
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1530
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1531
+ }
1532
+
1533
+ .button:where([data-variant=outlined][data-size=xlarge]) {
1534
+ padding-block: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1535
+ padding-inline: var(--theme-button-padding-9, var(--spacing-padding-9, 28px));
1536
+ }
1537
+
1538
+ .button:where([data-variant=text-button][data-size=small]) {
1539
+ padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1540
+ padding-inline: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1541
+ }
1542
+
1543
+ .button:where([data-variant=text-button][data-size=medium]) {
1544
+ padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1545
+ padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1546
+ }
1547
+
1548
+ .button:where([data-variant=text-button][data-size=large]) {
1549
+ padding-block: var(--theme-button-padding-4, var(--spacing-padding-4, 8px));
1550
+ padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 12px));
1551
+ }
1552
+
1553
+ .button:where([data-shape=round][data-size=small]) {
1554
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1555
+ padding-inline: var(--theme-button-padding-5, var(--spacing-padding-5, 20px));
1556
+ }
1557
+
1558
+ .button:where([data-shape=round][data-size=medium]) {
1559
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1560
+ padding-inline: var(--theme-button-padding-6, var(--spacing-padding-6, 24px));
1561
+ }
1562
+
1563
+ .button:where([data-shape=round][data-size=large]) {
1564
+ padding-block: var(--theme-button-padding-2, var(--spacing-padding-2, 4px));
1565
+ padding-inline: var(--theme-button-padding-7, var(--spacing-padding-7, 20px));
1566
+ }
1567
+
1568
+ .button:where([data-variant=solid][data-size=small]) {
1569
+ height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1570
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1571
+ }
1572
+
1573
+ .button:where([data-variant=solid][data-size=medium]) {
1574
+ height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1575
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1576
+ }
1577
+
1578
+ .button:where([data-variant=solid][data-size=large]) {
1579
+ height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1580
+ border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1581
+ }
1582
+
1583
+ .button:where([data-variant=solid][data-size=xlarge]) {
1584
+ height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1585
+ border-radius: var(--theme-button-radius-large-2, var(--theme-radius-large-2, 16px));
1586
+ }
1587
+
1588
+ .button:where([data-variant=outlined][data-size=small]) {
1589
+ height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1590
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1591
+ }
1592
+
1593
+ .button:where([data-variant=outlined][data-size=medium]) {
1594
+ height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1595
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1596
+ }
1597
+
1598
+ .button:where([data-variant=outlined][data-size=large]) {
1599
+ height: var(--theme-button-size-medium-2, var(--theme-size-medium-2, 48px));
1600
+ border-radius: var(--theme-button-radius-large-1, var(--theme-radius-large-1, 12px));
1601
+ }
1602
+
1603
+ .button:where([data-variant=outlined][data-size=xlarge]) {
1604
+ height: var(--theme-button-size-medium-3, var(--theme-size-medium-3, 56px));
1605
+ border-radius: var(--theme-button-radius-large-2, var(--theme-radius-large-2, 16px));
1606
+ }
1607
+
1608
+ .button:where([data-variant=text-button][data-size=small]) {
1609
+ height: var(--theme-button-size-small-1, var(--theme-size-small-1, 20px));
1610
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1611
+ }
1612
+
1613
+ .button:where([data-variant=text-button][data-size=medium]) {
1614
+ height: var(--theme-button-size-small-2, var(--theme-size-small-2, 24px));
1615
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1616
+ }
1617
+
1618
+ .button:where([data-variant=text-button][data-size=large]) {
1619
+ height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1620
+ border-radius: var(--theme-button-radius-medium-3, var(--theme-radius-medium-3, 8px));
1621
+ }
1622
+
1623
+ .button:where([data-shape=round][data-size=small]) {
1624
+ height: var(--theme-button-size-small-2, var(--theme-size-small-2, 24px));
1625
+ border-radius: var(--theme-button-size-small-2, var(--theme-size-small-2, 24px));
1626
+ }
1627
+
1628
+ .button:where([data-shape=round][data-size=medium]) {
1629
+ height: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1630
+ border-radius: var(--theme-button-size-small-3, var(--theme-size-small-3, 32px));
1631
+ }
1632
+
1633
+ .button:where([data-shape=round][data-size=large]) {
1634
+ height: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1635
+ border-radius: var(--theme-button-size-medium-1, var(--theme-size-medium-1, 40px));
1636
+ }
1637
+
1638
+ /* Radix Themes outline variant는 box-shadow가 default로 들어가므로 제거 */
1639
+ .button.rt-variant-outline,
1640
+ .button:where([data-variant=outlined]) {
1641
+ box-shadow: none;
1642
+ }
1643
+
1644
+ .button:where([data-variant=solid][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1645
+ background-color: transparent;
1646
+ border-color: transparent;
1647
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0);
1648
+ }
1649
+ .button:where([data-variant=solid][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1650
+ background-color: transparent;
1651
+ border-color: transparent;
1652
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0);
1653
+ }
1654
+
1655
+ .button:where([data-variant=solid][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1656
+ background-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1657
+ border-color: var(--theme-button-secondary-solid-hover-bg, #dbe9ff);
1658
+ box-shadow: none;
1659
+ }
1660
+ .button:where([data-variant=solid][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1661
+ background-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1662
+ border-color: var(--theme-button-secondary-solid-pressed-bg, #ccdeff);
1663
+ box-shadow: none;
1664
+ }
1665
+
1666
+ .button:where([data-variant=solid][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1667
+ background-color: var(--color-border-standard-strong, var(--color-bg-surface-strong));
1668
+ border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1669
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1670
+ }
1671
+ .button:where([data-variant=solid][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=solid][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1672
+ background-color: var(--color-border-standard-strong, var(--color-bg-surface-strong));
1673
+ border-color: var(--theme-button-tertiary-solid-bg, var(--color-bg-surface-neutral));
1674
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.48);
1675
+ }
1676
+
1677
+ .button:where([data-variant=outlined][data-intent=primary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=hover]:not(:disabled) {
1678
+ background-color: var(--theme-button-overlay-outlined-primary-bg, var(--color-blue-90));
1679
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1680
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1681
+ }
1682
+ .button:where([data-variant=outlined][data-intent=primary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=primary])[data-simulated-state=pressed]:not(:disabled) {
1683
+ background-color: var(--theme-button-overlay-outlined-primary-bg, var(--color-blue-90));
1684
+ border-color: var(--theme-button-color-primary-default, var(--color-primary-default));
1685
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1686
+ }
1687
+
1688
+ .button:where([data-variant=outlined][data-intent=secondary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=hover]:not(:disabled) {
1689
+ background-color: var(--theme-button-overlay-outlined-secondary-bg, var(--color-cool-gray-95));
1690
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1691
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1692
+ }
1693
+ .button:where([data-variant=outlined][data-intent=secondary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=secondary])[data-simulated-state=pressed]:not(:disabled) {
1694
+ background-color: var(--theme-button-overlay-outlined-secondary-bg, var(--color-cool-gray-95));
1695
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1696
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1697
+ }
1698
+
1699
+ .button:where([data-variant=outlined][data-intent=teritary]):hover:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=hover]:not(:disabled) {
1700
+ background-color: var(--theme-button-overlay-outlined-tertiary-bg, var(--color-cool-gray-95));
1701
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1702
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.68);
1703
+ }
1704
+ .button:where([data-variant=outlined][data-intent=teritary]):active:not(:disabled), .button:where([data-variant=outlined][data-intent=teritary])[data-simulated-state=pressed]:not(:disabled) {
1705
+ background-color: var(--theme-button-overlay-outlined-tertiary-bg, var(--color-cool-gray-95));
1706
+ border-color: var(--theme-button-color-cool-gray-90, var(--color-cool-gray-90));
1707
+ box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.28);
1708
+ }
1709
+
1710
+ .button:disabled,
1711
+ .button:where([data-disabled=true]) {
1712
+ background-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1713
+ border-color: var(--theme-button-color-bg-surface-standard, var(--color-bg-surface-standard));
1714
+ color: var(--theme-button-color-label-disabled, var(--color-label-disabled));
1715
+ cursor: not-allowed;
1716
+ }
1717
+
1718
+ .button:where([data-shape=round]) {
1719
+ border-radius: 9999px;
1720
+ }
1721
+
1722
+ .button:where([data-icon-slot=left]) .button-label {
1723
+ margin-left: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1724
+ }
1725
+
1726
+ .button:where([data-icon-slot=right]) .button-label {
1727
+ margin-right: var(--theme-button-gap-1, var(--spacing-gap-1, 4px));
1728
+ }
1729
+
1730
+ /* TODO(calendar): 스타일을 SOT 토큰 값으로 정의한다. */
1731
+ :where(.radix-themes, .theme-root, :root) {
1732
+ --theme-checkbox-frame-size-medium: 20px;
1733
+ --theme-checkbox-frame-size-large: 24px;
1734
+ --theme-checkbox-indicator-size-medium: 16px;
1735
+ --theme-checkbox-indicator-size-large: 20px;
1736
+ --theme-checkbox-control-radius-medium: var(--theme-radius-xsmall-3, 3px);
1737
+ --theme-checkbox-control-radius-large: var(--theme-radius-small-1, 4px);
1738
+ --theme-checkbox-border-width: 1.4px;
1739
+ --theme-checkbox-border-color: var(--color-border-standard-assistive);
1740
+ --theme-checkbox-border-selected: var(--color-primary-default);
1741
+ --theme-checkbox-surface: var(--color-common-100);
1742
+ --theme-checkbox-surface-selected: var(--color-primary-default);
1743
+ --theme-checkbox-surface-disabled: var(--color-neutral-95);
1744
+ --theme-checkbox-label-color: var(--color-label-strong);
1745
+ --theme-checkbox-label-disabled: var(--color-label-disabled);
1746
+ --theme-checkbox-helper-color: var(--color-label-neutral);
1747
+ --theme-checkbox-helper-disabled: var(--color-label-disabled);
1748
+ --theme-checkbox-icon-color: var(--color-common-100);
1749
+ --theme-checkbox-focus-ring: rgba(2, 84, 255, 0.32);
1750
+ --theme-checkbox-disabled-selected-opacity: 0.28;
1751
+ }
1752
+
1753
+ .checkbox {
1754
+ display: inline-flex;
1755
+ align-items: center;
1756
+ justify-content: center;
1757
+ inline-size: var(--theme-checkbox-frame-size-medium);
1758
+ block-size: var(--theme-checkbox-frame-size-medium);
1759
+ border-radius: var(--theme-checkbox-control-radius-medium);
1760
+ background-color: transparent;
1761
+ border: none;
1762
+ cursor: pointer;
1763
+ transition: background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease, box-shadow 0.15s ease;
1764
+ }
1765
+ .checkbox[data-size=medium] {
1766
+ inline-size: var(--theme-checkbox-frame-size-medium);
1767
+ block-size: var(--theme-checkbox-frame-size-medium);
1768
+ border-radius: var(--theme-checkbox-control-radius-medium);
1769
+ }
1770
+ .checkbox[data-size=large] {
1771
+ inline-size: var(--theme-checkbox-frame-size-large);
1772
+ block-size: var(--theme-checkbox-frame-size-large);
1773
+ border-radius: var(--theme-checkbox-control-radius-large);
1774
+ }
1775
+ .checkbox[data-disabled=true] {
1776
+ opacity: 0.6;
1777
+ cursor: not-allowed;
1778
+ }
1779
+
1780
+ .checkbox:focus-visible {
1781
+ box-shadow: 0 0 0 2px var(--theme-checkbox-focus-ring);
1782
+ }
1783
+
1784
+ .checkbox-indicator {
1785
+ inline-size: var(--theme-checkbox-indicator-size-medium);
1786
+ block-size: var(--theme-checkbox-indicator-size-medium);
1787
+ display: inline-flex;
1788
+ align-items: center;
1789
+ justify-content: center;
1790
+ color: var(--theme-checkbox-icon-color);
1791
+ border: var(--theme-checkbox-border-width) solid var(--theme-checkbox-border-color);
1792
+ border-radius: var(--theme-checkbox-control-radius-medium);
1793
+ background-color: var(--theme-checkbox-surface);
1794
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, opacity 0.15s ease;
1795
+ }
1796
+ .checkbox-indicator svg {
1797
+ display: block;
1798
+ inline-size: auto;
1799
+ block-size: auto;
1800
+ max-inline-size: 100%;
1801
+ max-block-size: 100%;
1802
+ }
1803
+
1804
+ .checkbox[data-size=large] .checkbox-indicator {
1805
+ inline-size: var(--theme-checkbox-indicator-size-large);
1806
+ block-size: var(--theme-checkbox-indicator-size-large);
1807
+ border-radius: var(--theme-checkbox-control-radius-large);
1808
+ }
1809
+
1810
+ .checkbox[data-state=checked] .checkbox-indicator,
1811
+ .checkbox[data-state=indeterminate] .checkbox-indicator {
1812
+ background-color: var(--theme-checkbox-surface-selected);
1813
+ border-color: var(--theme-checkbox-border-selected);
1814
+ }
1815
+
1816
+ .checkbox[data-disabled=true] .checkbox-indicator {
1817
+ background-color: var(--theme-checkbox-surface-disabled);
1818
+ border-color: var(--theme-checkbox-border-color);
1819
+ opacity: 1;
1820
+ }
1821
+
1822
+ .checkbox[data-disabled=true][data-state=checked] .checkbox-indicator,
1823
+ .checkbox[data-disabled=true][data-state=indeterminate] .checkbox-indicator {
1824
+ background-color: var(--theme-checkbox-surface-selected);
1825
+ border-color: var(--theme-checkbox-border-selected);
1826
+ opacity: var(--theme-checkbox-disabled-selected-opacity);
1827
+ }
1828
+
1829
+ .checkbox-field {
1830
+ display: flex;
1831
+ flex-direction: column;
1832
+ gap: var(--spacing-gap-1);
1833
+ color: var(--theme-checkbox-label-color);
1834
+ }
1835
+
1836
+ .checkbox-field[data-disabled=true] {
1837
+ color: var(--theme-checkbox-label-disabled);
1838
+ }
1839
+
1840
+ .checkbox-label-wrapper {
1841
+ display: inline-flex;
1842
+ align-items: center;
1843
+ gap: var(--spacing-gap-2);
1844
+ cursor: pointer;
1845
+ }
1846
+
1847
+ .checkbox-label-wrapper[data-disabled=true] {
1848
+ cursor: not-allowed;
1849
+ }
1850
+
1851
+ .checkbox-label-text {
1852
+ font-weight: var(--font-body-medium-weight);
1853
+ user-select: none;
1854
+ }
1855
+
1856
+ .checkbox-field[data-size=medium] .checkbox-label-text {
1857
+ font-size: var(--font-body-xsmall-size);
1858
+ line-height: var(--font-body-xsmall-line-height);
1859
+ }
1860
+
1861
+ .checkbox-field[data-size=large] .checkbox-label-text {
1862
+ font-size: var(--font-body-medium-size);
1863
+ line-height: var(--font-body-medium-line-height);
1864
+ }
1865
+
1866
+ .checkbox-helper {
1867
+ margin: 0;
1868
+ font-size: var(--font-caption-large-size);
1869
+ line-height: var(--font-caption-large-line-height);
1870
+ color: var(--theme-checkbox-helper-color);
1871
+ user-select: none;
1872
+ }
1873
+
1874
+ .checkbox-field[data-disabled=true] .checkbox-helper {
1875
+ color: var(--theme-checkbox-helper-disabled);
1876
+ }
1877
+
1878
+ /* Chip 기본 토큰 래핑 */
1879
+ :where(.radix-themes, .theme-root, :root) {
1880
+ --theme-chip-height: var(--theme-size-small-3, 32px);
1881
+ --theme-chip-padding-inline: var(--spacing-padding-5, 12px);
1882
+ --theme-chip-radius: var(--theme-radius-medium-3, 8px);
1883
+ --theme-chip-rounded-radius: var(--theme-radius-large-2, 16px);
1884
+ --theme-chip-font-family: var(--font-body-medium-family, "Pretendard");
1885
+ --theme-chip-font-size: var(--font-body-xsmall-size, 13px);
1886
+ --theme-chip-font-weight: var(--font-body-xsmall-weight, 400);
1887
+ }
1888
+
1889
+ .chip {
1890
+ --chip-gap: var(--spacing-gap-1, 4px);
1891
+ --chip-bg: transparent;
1892
+ --chip-border-color: transparent;
1893
+ --chip-label-color: var(--color-label-standard, #3d3f43);
1894
+ display: flex;
1895
+ align-items: center;
1896
+ justify-content: center;
1897
+ gap: var(--chip-gap);
1898
+ height: var(--theme-chip-height);
1899
+ padding-inline: var(--theme-chip-padding-inline);
1900
+ padding-block: 0;
1901
+ border-radius: var(--theme-chip-radius);
1902
+ border: 1px solid var(--chip-border-color);
1903
+ background-color: var(--chip-bg);
1904
+ color: var(--chip-label-color);
1905
+ font-family: var(--theme-chip-font-family);
1906
+ font-size: var(--theme-chip-font-size);
1907
+ font-weight: var(--theme-chip-font-weight);
1908
+ line-height: 1;
1909
+ letter-spacing: 0.2px;
1910
+ box-sizing: border-box;
1911
+ margin: 0;
1912
+ width: fit-content;
1913
+ transition: background-color 0.16s ease, color 0.16s ease, border-color 0.16s ease, opacity 0.16s ease;
1914
+ }
1915
+
1916
+ button.chip {
1917
+ appearance: none;
1918
+ cursor: pointer;
1919
+ }
1920
+
1921
+ figure.chip {
1922
+ margin: 0;
1923
+ }
1924
+
1925
+ .chip:focus-visible {
1926
+ outline: 2px solid var(--color-primary-default, #1a6aff);
1927
+ outline-offset: 2px;
1928
+ }
1929
+
1930
+ .chip:where([data-kind=filter]),
1931
+ .chip:where([data-kind=filter-rounded]) {
1932
+ --chip-bg: var(--color-bg-surface-standard, #f2f2f3);
1933
+ --chip-label-color: var(--color-label-neutral, #797e86);
1934
+ --chip-border-color: transparent;
1935
+ }
1936
+
1937
+ .chip:where([data-kind=filter][data-selected=true]),
1938
+ .chip:where([data-kind=filter-rounded][data-selected=true]) {
1939
+ --chip-bg: var(--color-bg-surface-heavy, #313235);
1940
+ --chip-label-color: var(--color-common-100, #ffffff);
1941
+ }
1942
+
1943
+ .chip:where([data-kind=filter-rounded]) {
1944
+ border-radius: var(--theme-chip-rounded-radius);
1945
+ }
1946
+
1947
+ .chip:where([data-kind=assist]) {
1948
+ --chip-bg: var(--color-bg-surface-static-neutral, #f2f2f2);
1949
+ --chip-label-color: var(--color-label-strong, #18191b);
1950
+ --chip-gap: var(--spacing-gap-2, 8px);
1951
+ --chip-border-color: transparent;
1952
+ }
1953
+
1954
+ .chip:where([data-kind=assist][data-selected=true]) {
1955
+ --chip-label-color: var(--color-primary-default, #1a6aff);
1956
+ }
1957
+
1958
+ .chip:where([data-kind=input]) {
1959
+ --chip-gap: var(--spacing-gap-1, 4px);
1960
+ --chip-bg: var(--color-common-100, #ffffff);
1961
+ --chip-label-color: var(--color-label-standard, #3d3f43);
1962
+ --chip-border-color: var(--color-border-standard-assistive, #e4e5e7);
1963
+ padding-inline-start: var(--spacing-padding-4, 8px);
1964
+ padding-inline-end: var(--spacing-padding-2, 4px);
1965
+ }
1966
+
1967
+ .chip:where([data-kind=input][data-selected=true]) {
1968
+ --chip-border-color: var(--color-border-standard-blue, #ccdeff);
1969
+ }
1970
+
1971
+ .chip-leading {
1972
+ display: inline-flex;
1973
+ align-items: center;
1974
+ justify-content: center;
1975
+ color: inherit;
1976
+ flex-shrink: 0;
1977
+ }
1978
+
1979
+ .chip-label {
1980
+ display: inline-flex;
1981
+ align-items: center;
1982
+ gap: var(--spacing-gap-1, 4px);
1983
+ color: inherit;
1984
+ line-height: 1;
1985
+ white-space: nowrap;
1986
+ }
1987
+
1988
+ .chip-remove-button {
1989
+ display: inline-flex;
1990
+ align-items: center;
1991
+ justify-content: center;
1992
+ width: 16px;
1993
+ height: 16px;
1994
+ border: none;
1995
+ background: transparent;
1996
+ color: var(--color-label-neutral, #797e86);
1997
+ cursor: pointer;
1998
+ padding: 0;
1999
+ transition: color 0.16s ease;
2000
+ }
2001
+
2002
+ .chip-remove-button:hover,
2003
+ .chip-remove-button:focus-visible {
2004
+ color: var(--color-label-strong, #18191b);
2005
+ }
2006
+
2007
+ .chip-remove-button svg {
2008
+ display: block;
2009
+ width: 100%;
2010
+ height: 100%;
2011
+ }
2012
+
2013
+ :where(.radix-themes, .theme-root, :root) {
2014
+ /* dialog essentials */
2015
+ --dialog-overlay-bg: rgba(5, 6, 12, 0.55);
2016
+ --dialog-panel-width: 360px;
2017
+ --dialog-panel-max-width: calc(100vw - var(--spacing-padding-10) * 2);
2018
+ --dialog-panel-bg: var(--color-bg-surface-static-white);
2019
+ --dialog-panel-radius: var(--theme-radius-large-1);
2020
+ --dialog-panel-shadow: 0px 18px 40px rgba(8, 11, 30, 0.18);
2021
+ --dialog-border-color: var(--color-border-standard-cool-gray);
2022
+ --dialog-title-color: var(--color-label-strong);
2023
+ --dialog-title-font-size: var(--font-heading-xsmall-size);
2024
+ --dialog-title-line-height: var(--font-heading-xsmall-line-height);
2025
+ --dialog-title-weight: var(--font-heading-xsmall-weight);
2026
+ --dialog-body-color: var(--color-label-standard);
2027
+ --dialog-body-font-size: var(--font-body-small-size);
2028
+ --dialog-body-line-height: var(--font-body-small-line-height);
2029
+ --dialog-description-color: var(--color-label-standard);
2030
+ --dialog-description-font-size: var(--font-body-small-size);
2031
+ --dialog-description-line-height: var(--font-body-small-line-height);
2032
+ /* alert(notice) defaults */
2033
+ --notice-dialog-section-padding-x: var(--spacing-padding-8);
2034
+ --notice-dialog-section-padding-y: var(--spacing-padding-10);
2035
+ --notice-dialog-action-height: 52px;
2036
+ /* confirm defaults */
2037
+ --confirm-dialog-header-padding-x: var(--spacing-padding-6);
2038
+ --confirm-dialog-header-padding-y: var(--spacing-padding-7);
2039
+ --confirm-dialog-body-padding-x: var(--spacing-padding-6);
2040
+ --confirm-dialog-body-padding-y: var(--spacing-padding-7);
2041
+ --confirm-dialog-footer-padding-x: var(--spacing-padding-6);
2042
+ --confirm-dialog-footer-padding-y: var(--spacing-padding-7);
2043
+ --confirm-dialog-actions-gap: var(--spacing-gap-5);
2044
+ }
2045
+
2046
+ .dialog-overlay {
2047
+ position: fixed;
2048
+ inset: 0;
2049
+ background-color: var(--dialog-overlay-bg);
2050
+ opacity: 0;
2051
+ transition: opacity 0.2s ease;
2052
+ will-change: opacity;
2053
+ }
2054
+ .dialog-overlay[data-state=open] {
2055
+ opacity: 1;
2056
+ }
2057
+ .dialog-overlay[data-state=closed] {
2058
+ opacity: 0;
2059
+ pointer-events: none;
2060
+ }
2061
+
2062
+ @media (prefers-reduced-motion: reduce) {
2063
+ .dialog-overlay {
2064
+ transition: none;
2065
+ }
2066
+ }
2067
+ .dialog-content {
2068
+ position: fixed;
2069
+ top: 50%;
2070
+ left: 50%;
2071
+ transform: translate(-50%, -50%);
2072
+ width: min(var(--dialog-panel-width), var(--dialog-panel-max-width));
2073
+ max-width: var(--dialog-panel-max-width);
2074
+ max-height: calc(100vh - var(--spacing-padding-10) * 2);
2075
+ background-color: var(--dialog-panel-bg);
2076
+ border-radius: var(--dialog-panel-radius);
2077
+ box-shadow: var(--dialog-panel-shadow);
2078
+ display: flex;
2079
+ flex-direction: column;
2080
+ overflow: hidden;
2081
+ overflow-y: auto;
2082
+ overscroll-behavior: contain;
2083
+ outline: none;
2084
+ border: none;
2085
+ gap: 0;
2086
+ opacity: 0;
2087
+ transition: opacity 0.2s ease, transform 0.2s ease;
2088
+ }
2089
+ .dialog-content[data-state=open] {
2090
+ opacity: 1;
2091
+ transform: translate(-50%, -50%);
2092
+ }
2093
+ .dialog-content[data-state=closed] {
2094
+ opacity: 0;
2095
+ transform: translate(-50%, calc(-50% + 12px));
2096
+ pointer-events: none;
2097
+ }
2098
+
2099
+ @media (prefers-reduced-motion: reduce) {
2100
+ .dialog-content {
2101
+ transition: none;
2102
+ }
2103
+ }
2104
+ .dialog-section {
2105
+ padding: 0;
2106
+ }
2107
+ .dialog-section[data-section=actions] {
2108
+ flex-shrink: 0;
2109
+ }
2110
+
2111
+ .dialog-title {
2112
+ margin: 0;
2113
+ color: var(--dialog-title-color);
2114
+ font-size: var(--dialog-title-font-size);
2115
+ line-height: var(--dialog-title-line-height);
2116
+ font-weight: var(--dialog-title-weight);
2117
+ }
2118
+
2119
+ .dialog-description {
2120
+ margin: 0;
2121
+ color: var(--dialog-description-color);
2122
+ font-size: var(--dialog-description-font-size);
2123
+ line-height: var(--dialog-description-line-height);
2124
+ }
2125
+
2126
+ .dialog-button {
2127
+ display: flex;
2128
+ align-items: center;
2129
+ justify-content: center;
2130
+ width: 100%;
2131
+ border: none;
2132
+ border-radius: 0;
2133
+ margin: 0;
2134
+ padding: 0;
2135
+ font-size: var(--font-body-medium-size);
2136
+ line-height: var(--font-body-medium-line-height);
2137
+ font-weight: var(--font-body-medium-weight);
2138
+ cursor: pointer;
2139
+ background: transparent;
2140
+ color: var(--color-label-strong);
2141
+ transition: background-color 0.15s ease, color 0.15s ease;
2142
+ }
2143
+
2144
+ .dialog-button[data-native-element=true] {
2145
+ appearance: none;
2146
+ }
2147
+
2148
+ .notice-dialog-header,
2149
+ .notice-dialog-body {
2150
+ padding: var(--notice-dialog-section-padding-y) var(--notice-dialog-section-padding-x);
2151
+ }
2152
+
2153
+ .notice-dialog-header {
2154
+ display: flex;
2155
+ flex-direction: column;
2156
+ gap: var(--spacing-gap-3);
2157
+ text-align: center;
2158
+ }
2159
+
2160
+ .notice-dialog-body {
2161
+ text-align: center;
2162
+ }
2163
+
2164
+ .notice-dialog-body p {
2165
+ margin: 0 0 var(--spacing-gap-2);
2166
+ color: var(--dialog-body-color);
2167
+ font-size: var(--dialog-body-font-size);
2168
+ line-height: 1.5em;
2169
+ font-weight: var(--font-body-small-weight);
2170
+ word-break: keep-all;
2171
+ }
2172
+
2173
+ .notice-dialog-body p:last-child {
2174
+ margin-bottom: 0;
2175
+ }
2176
+
2177
+ .notice-dialog-actions {
2178
+ border-top: 1px solid var(--dialog-border-color);
2179
+ display: flex;
2180
+ align-items: stretch;
2181
+ flex-direction: row;
2182
+ padding: 0;
2183
+ gap: 0;
2184
+ justify-content: center;
2185
+ overflow: hidden;
2186
+ --button-min-height: var(--notice-dialog-action-height);
2187
+ --button-padding-inline: 0;
2188
+ --button-padding-block: 0;
2189
+ --button-border-radius: 0;
2190
+ }
2191
+
2192
+ .notice-dialog-actions > * {
2193
+ flex: 1;
2194
+ }
2195
+
2196
+ .notice-dialog-actions .button {
2197
+ display: flex;
2198
+ align-items: center;
2199
+ justify-content: center;
2200
+ width: 100%;
2201
+ border: none;
2202
+ border-radius: 0;
2203
+ margin: 0;
2204
+ padding: 0;
2205
+ font-size: var(--font-body-medium-size);
2206
+ line-height: var(--font-body-medium-line-height);
2207
+ font-weight: var(--font-body-medium-weight);
2208
+ cursor: pointer;
2209
+ background: transparent;
2210
+ color: var(--color-label-strong);
2211
+ transition: background-color 0.15s ease, color 0.15s ease;
2212
+ background-color: var(--color-common-100);
2213
+ color: var(--color-primary-default);
2214
+ }
2215
+ .notice-dialog-actions .button:hover {
2216
+ background-color: var(--color-bg-surface-static-cool-gray);
2217
+ }
2218
+
2219
+ .notice-dialog-actions .button:not(:first-child),
2220
+ .notice-dialog-actions [data-native-element=true]:not(:first-child) {
2221
+ border-left: 1px solid var(--dialog-border-color);
2222
+ }
2223
+
2224
+ .confirm-dialog-header {
2225
+ padding: var(--confirm-dialog-header-padding-y) var(--confirm-dialog-header-padding-x);
2226
+ }
2227
+
2228
+ .confirm-dialog-body {
2229
+ padding: var(--confirm-dialog-body-padding-y) var(--confirm-dialog-body-padding-x);
2230
+ }
2231
+
2232
+ .confirm-dialog-header {
2233
+ display: flex;
2234
+ flex-direction: column;
2235
+ gap: var(--spacing-gap-2);
2236
+ text-align: center;
2237
+ }
2238
+
2239
+ .confirm-dialog-body {
2240
+ display: flex;
2241
+ flex-direction: column;
2242
+ align-items: center;
2243
+ gap: var(--spacing-gap-2);
2244
+ text-align: center;
2245
+ }
2246
+
2247
+ .confirm-dialog-body p {
2248
+ margin: 0;
2249
+ color: var(--dialog-body-color);
2250
+ font-size: var(--dialog-body-font-size);
2251
+ line-height: 1.5em;
2252
+ font-weight: var(--font-body-small-weight);
2253
+ word-break: keep-all;
2254
+ }
2255
+
2256
+ .confirm-dialog-description {
2257
+ margin: 0;
2258
+ color: var(--dialog-body-color);
2259
+ font-size: var(--dialog-body-font-size);
2260
+ line-height: 1.5em;
2261
+ font-weight: var(--font-body-small-weight);
2262
+ word-break: keep-all;
2263
+ }
2264
+
2265
+ .confirm-dialog-actions {
2266
+ display: flex;
2267
+ align-items: stretch;
2268
+ flex-direction: row;
2269
+ padding: var(--confirm-dialog-footer-padding-y) var(--confirm-dialog-footer-padding-x);
2270
+ gap: var(--confirm-dialog-actions-gap);
2271
+ justify-content: center;
2272
+ }
2273
+
2274
+ .confirm-dialog-actions > * {
2275
+ flex: 1;
2276
+ }
2277
+
2278
+ :where(.radix-themes, .theme-root, :root) {
2279
+ --drawer-overlay-bg: rgba(0, 0, 0, 0.44);
2280
+ --drawer-surface-bg: var(--color-bg-surface-static-white);
2281
+ --drawer-radius-large: var(--theme-radius-large-2);
2282
+ --drawer-radius-medium: var(--theme-radius-large-1);
2283
+ --drawer-body-color: var(--color-label-standard);
2284
+ --drawer-title-color: var(--color-label-strong);
2285
+ --drawer-gap: calc(var(--spacing-gap-9, 28px) + 2px);
2286
+ --drawer-padding-x: calc(var(--spacing-padding-10, 32px) - 2px);
2287
+ --drawer-padding-top: var(--spacing-padding-7, 20px);
2288
+ --drawer-padding-bottom: calc(
2289
+ var(--spacing-padding-11, 40px) + var(--spacing-padding-7, 20px)
2290
+ );
2291
+ --drawer-footer-gap: var(--spacing-gap-6, 16px);
2292
+ --drawer-section-gap: var(--spacing-gap-6, 16px);
2293
+ --drawer-handle-width: calc(
2294
+ var(--spacing-padding-11, 40px) + var(--spacing-padding-7, 20px)
2295
+ );
2296
+ --drawer-handle-height: var(--spacing-padding-2, 4px);
2297
+ --drawer-handle-bg: var(--color-border-standard-cool-gray);
2298
+ --drawer-close-size: 36px;
2299
+ --drawer-drag-offset: 0px;
2300
+ }
2301
+
2302
+ .drawer-overlay {
2303
+ position: fixed;
2304
+ inset: 0;
2305
+ background-color: var(--drawer-overlay-bg);
2306
+ opacity: 0;
2307
+ pointer-events: none;
2308
+ transition: opacity 0.25s ease;
2309
+ will-change: opacity;
2310
+ }
2311
+ .drawer-overlay[data-phase=entering], .drawer-overlay[data-phase=entered] {
2312
+ opacity: 1;
2313
+ pointer-events: auto;
2314
+ }
2315
+ .drawer-overlay[data-phase=exiting] {
2316
+ opacity: 0;
2317
+ pointer-events: auto;
2318
+ }
2319
+
2320
+ @media (prefers-reduced-motion: reduce) {
2321
+ .drawer-overlay {
2322
+ transition: none;
2323
+ }
2324
+ }
2325
+ .drawer-content {
2326
+ position: fixed;
2327
+ display: flex;
2328
+ flex-direction: column;
2329
+ background-color: var(--drawer-surface-bg);
2330
+ outline: none;
2331
+ border: none;
2332
+ box-shadow: none;
2333
+ color: var(--drawer-body-color);
2334
+ overscroll-behavior: contain;
2335
+ left: 50%;
2336
+ bottom: 0;
2337
+ transform: translate3d(-50%, 100%, 0);
2338
+ border-top-left-radius: var(--drawer-radius-large);
2339
+ border-top-right-radius: var(--drawer-radius-large);
2340
+ max-width: 640px;
2341
+ padding-bottom: env(safe-area-inset-bottom);
2342
+ max-width: min(640px, 100%);
2343
+ width: 100%;
2344
+ max-height: calc(100vh - var(--spacing-padding-8));
2345
+ transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease;
2346
+ opacity: 0;
2347
+ pointer-events: none;
2348
+ will-change: transform;
2349
+ }
2350
+
2351
+ .drawer-content[data-phase=entering],
2352
+ .drawer-content[data-phase=entered] {
2353
+ transform: translate3d(-50%, var(--drawer-drag-offset, 0px), 0);
2354
+ opacity: 1;
2355
+ pointer-events: auto;
2356
+ }
2357
+
2358
+ .drawer-content[data-phase=exiting] {
2359
+ transform: translate3d(-50%, calc(100% + var(--drawer-drag-offset, 0px)), 0);
2360
+ opacity: 1;
2361
+ pointer-events: none;
2362
+ }
2363
+
2364
+ .drawer-content[data-phase=exited] {
2365
+ transform: translate3d(-50%, 100%, 0);
2366
+ opacity: 0;
2367
+ pointer-events: none;
2368
+ }
2369
+
2370
+ .drawer-content[data-dragging=true] {
2371
+ transition: none;
2372
+ }
2373
+
2374
+ @media (prefers-reduced-motion: reduce) {
2375
+ .drawer-content {
2376
+ transition: none;
2377
+ }
2378
+ }
2379
+ .drawer-handle {
2380
+ display: flex;
2381
+ align-items: center;
2382
+ justify-content: center;
2383
+ border: none;
2384
+ background: transparent;
2385
+ padding: var(--drawer-padding-top) 0 var(--spacing-padding-6);
2386
+ cursor: grab;
2387
+ }
2388
+
2389
+ .drawer-handle:active {
2390
+ cursor: grabbing;
2391
+ }
2392
+
2393
+ .drawer-handle-bar {
2394
+ width: var(--drawer-handle-width);
2395
+ height: var(--drawer-handle-height);
2396
+ border-radius: var(--drawer-handle-height);
2397
+ background-color: var(--drawer-handle-bg);
2398
+ display: block;
2399
+ }
2400
+
2401
+ .drawer-close-button {
2402
+ position: absolute;
2403
+ top: var(--drawer-padding-top);
2404
+ right: var(--drawer-padding-x);
2405
+ width: 24px;
2406
+ height: 24px;
2407
+ border-radius: 0;
2408
+ border: none;
2409
+ background: transparent;
2410
+ display: flex;
2411
+ align-items: center;
2412
+ justify-content: center;
2413
+ cursor: pointer;
2414
+ padding: 0;
2415
+ color: var(--color-label-neutral, #7f8a94);
2416
+ }
2417
+
2418
+ .drawer-close-button svg {
2419
+ width: 24px;
2420
+ height: 24px;
2421
+ }
2422
+
2423
+ .drawer-inner {
2424
+ display: flex;
2425
+ flex-direction: column;
2426
+ gap: var(--drawer-gap);
2427
+ padding-inline: var(--drawer-padding-x);
2428
+ padding-bottom: var(--drawer-padding-bottom);
2429
+ padding-top: var(--drawer-padding-top);
2430
+ flex: 1 1 auto;
2431
+ min-height: 0;
2432
+ }
2433
+
2434
+ .drawer-section {
2435
+ display: flex;
2436
+ flex-direction: column;
2437
+ gap: var(--drawer-section-gap);
2438
+ color: var(--drawer-body-color);
2439
+ width: 100%;
2440
+ }
2441
+
2442
+ .drawer-header {
2443
+ text-align: left;
2444
+ padding-top: 0;
2445
+ }
2446
+
2447
+ .drawer-body {
2448
+ flex: 1 1 auto;
2449
+ overflow-y: auto;
2450
+ gap: var(--spacing-gap-5);
2451
+ font-size: var(--font-body-small-size);
2452
+ line-height: var(--font-body-small-line-height);
2453
+ color: var(--drawer-body-color);
2454
+ width: 100%;
2455
+ word-break: keep-all;
2456
+ }
2457
+
2458
+ .drawer-body > * {
2459
+ width: 100%;
2460
+ }
2461
+
2462
+ .drawer-body p {
2463
+ margin: 0;
2464
+ word-break: inherit;
2465
+ }
2466
+
2467
+ .drawer-footer {
2468
+ padding: var(--spacing-padding-8) 0 0;
2469
+ border-top: none;
2470
+ flex-shrink: 0;
2471
+ display: flex;
2472
+ flex-direction: column;
2473
+ gap: var(--drawer-footer-gap);
2474
+ width: 100%;
2475
+ }
2476
+
2477
+ .drawer-title {
2478
+ margin: 0;
2479
+ font-size: var(--font-heading-medium-size);
2480
+ line-height: var(--font-heading-medium-line-height);
2481
+ font-weight: var(--font-heading-medium-weight);
2482
+ color: var(--drawer-title-color);
2483
+ letter-spacing: var(--font-heading-medium-letter-spacing, normal);
2484
+ }
2485
+
2486
+ .drawer-description {
2487
+ margin: 0;
2488
+ color: var(--drawer-body-color);
2489
+ font-size: var(--font-body-xsmall-size);
2490
+ line-height: var(--font-body-xsmall-line-height);
2491
+ letter-spacing: var(--font-body-xsmall-letter-spacing, normal);
2492
+ }
2493
+
2494
+ .drawer-dismiss {
2495
+ display: none;
2496
+ }
2497
+
2498
+ /* TODO(dropdown): 스타일을 SOT 토큰 값으로 정의한다. */
2499
+ :where(.radix-themes, .theme-root, :root) {
2500
+ --theme-input-height-small: var(--theme-size-medium-1);
2501
+ --theme-input-height-medium: var(--theme-size-medium-2);
2502
+ --theme-input-height-large: var(--theme-size-medium-3);
2503
+ --theme-input-height-teritary: calc(var(--theme-size-medium-2) + 24px);
2504
+ --theme-input-padding-x: var(--spacing-padding-6);
2505
+ --theme-input-padding-y: var(--spacing-padding-4);
2506
+ --theme-input-gap: var(--spacing-gap-4);
2507
+ --theme-input-radius-default: var(--theme-radius-large-1);
2508
+ --theme-input-radius-teritary: var(--theme-radius-large-2);
2509
+ --theme-input-label-color: var(--color-label-standard);
2510
+ --theme-input-helper-color: var(--color-label-neutral);
2511
+ --theme-input-helper-disabled-color: var(--color-label-disabled);
2512
+ --theme-input-label-accent-color: var(--color-primary-default);
2513
+ --theme-input-label-error-color: var(--color-error);
2514
+ --theme-input-placeholder-color: var(--color-label-alternative);
2515
+ --theme-input-text-color: var(--color-label-strong);
2516
+ --theme-input-border-color: var(--color-border-standard-cool-gray);
2517
+ --theme-input-border-width-default: 1px;
2518
+ --theme-input-border-width-emphasis: 1.4px;
2519
+ --theme-input-border-active: #99bdff;
2520
+ --theme-input-border-success: #99bdff;
2521
+ --theme-input-border-error: rgba(218, 29, 11, 0.44);
2522
+ --theme-input-border-disabled: var(--color-border-standard-cool-gray);
2523
+ --theme-input-border-underline-disabled: var(
2524
+ --color-border-standard-assistive
2525
+ );
2526
+ --theme-input-surface: var(--color-common-100);
2527
+ --theme-input-surface-muted: var(--color-neutral-99);
2528
+ --theme-input-surface-disabled: var(--color-neutral-95);
2529
+ }
2530
+
2531
+ .input {
2532
+ display: flex;
2533
+ flex-direction: column;
2534
+ gap: var(--spacing-gap-3);
2535
+ width: 100%;
2536
+ }
2537
+ .input[data-block=true], .input--block {
2538
+ width: 100%;
2539
+ }
2540
+
2541
+ .input-label {
2542
+ color: var(--theme-input-label-color);
2543
+ font-size: var(--font-label-small-size);
2544
+ line-height: var(--font-label-small-line-height);
2545
+ font-weight: var(--font-label-small-weight);
2546
+ }
2547
+
2548
+ .input-label--visually-hidden {
2549
+ position: absolute;
2550
+ width: 1px;
2551
+ height: 1px;
2552
+ padding: 0;
2553
+ margin: -1px;
2554
+ overflow: hidden;
2555
+ clip: rect(0 0 0 0);
2556
+ clip-path: inset(50%);
2557
+ white-space: nowrap;
2558
+ border: 0;
2559
+ }
2560
+
2561
+ .input-box {
2562
+ width: 100%;
2563
+ }
2564
+
2565
+ .input-field {
2566
+ display: flex;
2567
+ align-items: center;
2568
+ width: 100%;
2569
+ gap: var(--theme-input-gap);
2570
+ border-radius: var(--theme-input-radius-default);
2571
+ border: var(--theme-input-border-width-default) solid var(--theme-input-border-color);
2572
+ background-color: var(--theme-input-surface);
2573
+ padding: var(--theme-input-padding-y) var(--theme-input-padding-x);
2574
+ min-height: var(--theme-input-height-medium);
2575
+ transition: border-color 0.15s ease, background-color 0.15s ease;
2576
+ box-sizing: border-box;
2577
+ outline: none;
2578
+ box-shadow: none;
2579
+ }
2580
+ .input-field[data-size=small] {
2581
+ min-height: var(--theme-input-height-small);
2582
+ }
2583
+ .input-field[data-size=large] {
2584
+ min-height: var(--theme-input-height-large);
2585
+ }
2586
+ .input-field[data-appearance=secondary] {
2587
+ border: none;
2588
+ border-bottom: var(--theme-input-border-width-default) solid var(--theme-input-border-color);
2589
+ border-radius: 0;
2590
+ padding-inline: 0;
2591
+ padding-block: var(--spacing-padding-4);
2592
+ background-color: transparent;
2593
+ }
2594
+ .input-field[data-appearance=teritary] {
2595
+ border-radius: var(--theme-input-radius-teritary);
2596
+ background-color: var(--theme-input-surface);
2597
+ min-height: var(--theme-input-height-teritary);
2598
+ flex-wrap: wrap;
2599
+ row-gap: var(--spacing-gap-1);
2600
+ column-gap: var(--theme-input-gap);
2601
+ }
2602
+ .input-field[data-appearance=teritary] .input-inline-label {
2603
+ flex-basis: 100%;
2604
+ }
2605
+ .input-field[data-appearance=teritary] .input-element {
2606
+ min-height: var(--theme-size-medium-2);
2607
+ width: auto;
2608
+ flex: 1 1 auto;
2609
+ }
2610
+ .input-field[data-appearance=teritary] .input-element + .input-affix {
2611
+ margin-left: auto;
2612
+ }
2613
+ .input-field:not([data-appearance=secondary])[data-state=active], .input-field:not([data-appearance=secondary])[data-state=focused] {
2614
+ border-color: var(--theme-input-border-active);
2615
+ border-width: var(--theme-input-border-width-emphasis);
2616
+ }
2617
+ .input-field:not([data-appearance=secondary])[data-state=success] {
2618
+ border-color: var(--theme-input-border-success);
2619
+ border-width: var(--theme-input-border-width-emphasis);
2620
+ }
2621
+ .input-field:not([data-appearance=secondary])[data-state=error] {
2622
+ border-color: var(--theme-input-border-error);
2623
+ border-width: var(--theme-input-border-width-emphasis);
2624
+ }
2625
+ .input-field:not([data-appearance=secondary])[data-state=disabled] {
2626
+ border-color: var(--theme-input-border-disabled);
2627
+ border-width: var(--theme-input-border-width-default);
2628
+ background-color: var(--theme-input-surface-disabled);
2629
+ }
2630
+ .input-field .input-element {
2631
+ flex: 1 1 auto;
2632
+ width: 100%;
2633
+ border: none;
2634
+ background: transparent;
2635
+ color: var(--theme-input-text-color);
2636
+ font-size: var(--font-body-medium-size);
2637
+ line-height: var(--font-body-medium-line-height);
2638
+ font-weight: var(--font-body-medium-weight);
2639
+ outline: none;
2640
+ box-shadow: none;
2641
+ min-width: 0;
2642
+ }
2643
+ .input-field .input-element::placeholder {
2644
+ color: var(--theme-input-placeholder-color);
2645
+ }
2646
+ .input-field .input-element:disabled {
2647
+ color: var(--color-label-disabled);
2648
+ }
2649
+ .input-field .input-element:disabled::placeholder {
2650
+ color: var(--color-label-disabled);
2651
+ }
2652
+ .input-field .input-element:focus, .input-field .input-element:focus-visible, .input-field .input-element:focus-within {
2653
+ outline: none;
2654
+ box-shadow: none;
2655
+ }
2656
+
2657
+ .input-inline-label {
2658
+ order: -2;
2659
+ flex-basis: 100%;
2660
+ font-size: var(--font-label-small-size);
2661
+ line-height: var(--font-label-small-line-height);
2662
+ color: var(--theme-input-label-color);
2663
+ }
2664
+
2665
+ .input-field[data-appearance=secondary] .input-element {
2666
+ padding-inline: 0;
2667
+ }
2668
+
2669
+ .input-field[data-appearance=teritary] .input-element {
2670
+ min-height: var(--theme-size-medium-2);
2671
+ }
2672
+
2673
+ .input-helper-text {
2674
+ color: var(--theme-input-helper-color);
2675
+ font-size: var(--font-label-small-size);
2676
+ line-height: var(--font-label-small-line-height);
2677
+ }
2678
+ [data-state=error] .input-helper-text {
2679
+ color: var(--theme-input-border-error);
2680
+ }
2681
+ [data-state=disabled] .input-helper-text {
2682
+ color: var(--theme-input-helper-disabled-color);
2683
+ }
2684
+
2685
+ .input-affix {
2686
+ display: inline-flex;
2687
+ align-items: center;
2688
+ justify-content: center;
2689
+ min-width: 20px;
2690
+ color: var(--theme-input-helper-color);
2691
+ }
2692
+ .input-affix--prefix {
2693
+ order: -1;
2694
+ margin-right: var(--spacing-gap-3);
2695
+ }
2696
+ .input-affix--suffix, .input-affix--reset, .input-affix--status {
2697
+ margin-left: var(--spacing-gap-3);
2698
+ }
2699
+ .input-affix--reset, .input-affix--status {
2700
+ color: var(--theme-input-text-color);
2701
+ }
2702
+ .input-affix--status[data-state=error] {
2703
+ color: var(--color-error);
2704
+ }
2705
+ .input-affix--status[data-state=success] {
2706
+ color: var(--color-primary-default);
2707
+ }
2708
+
2709
+ .input-field[data-appearance=secondary] {
2710
+ border-bottom-width: var(--theme-input-border-width-default);
2711
+ }
2712
+ .input-field[data-appearance=secondary][data-state=active], .input-field[data-appearance=secondary][data-state=focused] {
2713
+ border-bottom-color: var(--theme-input-border-active);
2714
+ border-bottom-width: var(--theme-input-border-width-emphasis);
2715
+ }
2716
+ .input-field[data-appearance=secondary][data-state=success] {
2717
+ border-bottom-color: var(--theme-input-border-success);
2718
+ border-bottom-width: var(--theme-input-border-width-emphasis);
2719
+ }
2720
+ .input-field[data-appearance=secondary][data-state=error] {
2721
+ border-bottom-color: var(--theme-input-border-error);
2722
+ border-bottom-width: var(--theme-input-border-width-emphasis);
2723
+ }
2724
+ .input-field[data-appearance=secondary][data-state=disabled] {
2725
+ border-bottom-color: var(--theme-input-border-underline-disabled);
2726
+ border-bottom-width: var(--theme-input-border-width-default);
2727
+ }
2728
+
2729
+ .input[data-state=active] .input-label,
2730
+ .input[data-state=active] .input-inline-label,
2731
+ .input[data-state=focused] .input-label,
2732
+ .input[data-state=focused] .input-inline-label,
2733
+ .input[data-state=success] .input-label,
2734
+ .input[data-state=success] .input-inline-label {
2735
+ color: var(--theme-input-label-accent-color);
2736
+ }
2737
+
2738
+ .input[data-state=error] .input-label,
2739
+ .input[data-state=error] .input-inline-label {
2740
+ color: var(--theme-input-label-error-color);
2741
+ }
2742
+ .input[data-state=error] .input-helper-text {
2743
+ color: var(--theme-input-label-error-color);
2744
+ }
2745
+
2746
+ .input[data-state=disabled] .input-label,
2747
+ .input[data-state=disabled] .input-inline-label,
2748
+ .input[data-state=disabled] .input-helper-text,
2749
+ .input[data-state=disabled] .input-affix {
2750
+ color: var(--theme-input-helper-disabled-color);
2751
+ }
2752
+ .input[data-state=disabled] .input-field {
2753
+ border-color: var(--theme-input-border-color);
2754
+ background-color: var(--theme-input-surface-disabled);
2755
+ }
2756
+ .input[data-state=disabled] .input-field[data-appearance=secondary] {
2757
+ background-color: transparent;
2758
+ }
2759
+
2760
+ .input-password-toggle,
2761
+ .input-action-button {
2762
+ border: none;
2763
+ background: transparent;
2764
+ color: var(--theme-input-label-accent-color);
2765
+ font-size: var(--font-label-small-size);
2766
+ line-height: var(--font-label-small-line-height);
2767
+ font-weight: var(--font-label-small-weight);
2768
+ padding: 0;
2769
+ cursor: pointer;
2770
+ }
2771
+ .input-password-toggle:disabled,
2772
+ .input-action-button:disabled {
2773
+ color: var(--theme-input-helper-disabled-color);
2774
+ cursor: not-allowed;
2775
+ }
2776
+
2777
+ .input-search-icon {
2778
+ font-size: var(--font-label-large-size);
2779
+ line-height: 1;
2780
+ }
2781
+
2782
+ .one-time-code {
2783
+ display: flex;
2784
+ flex-direction: column;
2785
+ gap: var(--spacing-gap-2);
2786
+ }
2787
+
2788
+ .one-time-code__label {
2789
+ font-size: var(--font-label-small-size);
2790
+ color: var(--theme-input-label-color);
2791
+ }
2792
+
2793
+ .one-time-code__fields {
2794
+ display: flex;
2795
+ gap: var(--spacing-gap-3);
2796
+ }
2797
+
2798
+ .one-time-code__input {
2799
+ width: 44px;
2800
+ height: 56px;
2801
+ border-radius: var(--theme-input-radius-default);
2802
+ border: var(--theme-input-border-width-default) solid var(--theme-input-border-color);
2803
+ text-align: center;
2804
+ font-size: var(--font-heading-medium-size);
2805
+ font-weight: var(--font-heading-medium-weight);
2806
+ color: var(--theme-input-text-color);
2807
+ }
2808
+ .one-time-code__input:focus {
2809
+ outline: none;
2810
+ border-color: var(--theme-input-border-active);
2811
+ border-width: var(--theme-input-border-width-emphasis);
2812
+ }
2813
+
2814
+ .one-time-code__helper {
2815
+ font-size: var(--font-label-small-size);
2816
+ color: var(--theme-input-helper-color);
2817
+ }
2818
+
2819
+ /* TODO(label): 스타일을 SOT 토큰 값으로 정의한다. */
2820
+ :where(.radix-themes, .theme-root, :root) {
2821
+ --theme-navigation-height: 86px;
2822
+ --theme-navigation-padding-inline: 32px;
2823
+ --theme-navigation-padding-block-start: 8px;
2824
+ --theme-navigation-padding-block-end: 20px;
2825
+ --theme-navigation-item-gap: 2px;
2826
+ --theme-navigation-icon-size: 24px;
2827
+ --theme-navigation-label-font-size: 12px;
2828
+ --theme-navigation-label-line-height: 1.4;
2829
+ --theme-navigation-label-font-weight: 500;
2830
+ --theme-navigation-label-letter-spacing: -0.12px;
2831
+ --theme-navigation-bg: var(--color-common-100, #ffffff);
2832
+ --theme-navigation-border: var(--color-border-standard-assistive, #e4e5e7);
2833
+ --theme-navigation-shadow: 0 -4px 16px rgba(0, 0, 0, 0.04);
2834
+ --theme-navigation-color: var(--color-label-strong, #3d3f43);
2835
+ --theme-navigation-color-active: var(--color-primary-default, #0061ff);
2836
+ --theme-navigation-color-disabled: var(--color-label-disabled, #c5c6cc);
2837
+ }
2838
+
2839
+ .bottom-navigation {
2840
+ width: 100%;
2841
+ position: relative;
2842
+ z-index: 10;
2843
+ background-color: var(--theme-navigation-bg);
2844
+ border-top: 1px solid var(--theme-navigation-border);
2845
+ box-shadow: var(--theme-navigation-shadow, 0 -4px 16px rgba(0, 0, 0, 0.04));
2846
+ padding-inline: var(--theme-navigation-padding-inline);
2847
+ padding-block-start: var(--theme-navigation-padding-block-start);
2848
+ padding-block-end: max(var(--theme-navigation-padding-block-end), env(safe-area-inset-bottom, 0px));
2849
+ min-height: var(--theme-navigation-height);
2850
+ }
2851
+
2852
+ .bottom-navigation[data-fixed=true] {
2853
+ position: fixed;
2854
+ inset-inline: 0;
2855
+ bottom: 0;
2856
+ z-index: 20;
2857
+ }
2858
+
2859
+ .bottom-navigation-list {
2860
+ display: flex;
2861
+ align-items: flex-start;
2862
+ justify-content: space-between;
2863
+ gap: 0;
2864
+ padding: 0;
2865
+ margin: 0;
2866
+ list-style: none;
2867
+ }
2868
+
2869
+ .bottom-navigation-item {
2870
+ flex: 1;
2871
+ min-width: 0;
2872
+ display: flex;
2873
+ justify-content: center;
2874
+ }
2875
+
2876
+ .bottom-navigation-trigger {
2877
+ display: inline-flex;
2878
+ flex-direction: column;
2879
+ align-items: center;
2880
+ gap: var(--theme-navigation-item-gap);
2881
+ min-width: 0;
2882
+ padding: 0;
2883
+ border: none;
2884
+ background: none;
2885
+ appearance: none;
2886
+ text-decoration: none;
2887
+ color: var(--theme-navigation-color);
2888
+ font: inherit;
2889
+ cursor: pointer;
2890
+ -webkit-tap-highlight-color: transparent;
2891
+ transition: color 0.16s ease;
2892
+ }
2893
+
2894
+ .bottom-navigation-trigger[data-active=true] {
2895
+ color: var(--theme-navigation-color-active);
2896
+ }
2897
+
2898
+ .bottom-navigation-trigger[data-disabled=true],
2899
+ .bottom-navigation-trigger:disabled {
2900
+ color: var(--theme-navigation-color-disabled);
2901
+ cursor: default;
2902
+ pointer-events: none;
2903
+ }
2904
+
2905
+ .bottom-navigation-trigger:focus-visible {
2906
+ outline: none;
2907
+ border-radius: var(--theme-radius-large-1, 12px);
2908
+ box-shadow: 0 0 0 2px var(--color-primary-focus, rgba(0, 97, 255, 0.2));
2909
+ }
2910
+
2911
+ .navigation-item-icon {
2912
+ display: inline-flex;
2913
+ align-items: center;
2914
+ justify-content: center;
2915
+ width: var(--theme-navigation-icon-size);
2916
+ height: var(--theme-navigation-icon-size);
2917
+ color: currentColor;
2918
+ }
2919
+ .navigation-item-icon svg {
2920
+ display: block;
2921
+ width: 100%;
2922
+ height: 100%;
2923
+ }
2924
+ .navigation-item-icon {
2925
+ /* SVG fill/stroke를 currentColor로 맞춰 selected 컬러만 제어한다. */
2926
+ }
2927
+ .navigation-item-icon svg [fill]:not([fill=none]) {
2928
+ fill: currentColor;
2929
+ }
2930
+ .navigation-item-icon svg [stroke]:not([stroke=none]) {
2931
+ stroke: currentColor;
2932
+ }
2933
+
2934
+ .navigation-item-label {
2935
+ display: block;
2936
+ font-size: var(--theme-navigation-label-font-size);
2937
+ font-weight: var(--theme-navigation-label-font-weight);
2938
+ line-height: var(--theme-navigation-label-line-height);
2939
+ letter-spacing: var(--theme-navigation-label-letter-spacing);
2940
+ color: currentColor;
2941
+ text-align: center;
2942
+ white-space: nowrap;
2943
+ overflow: hidden;
2944
+ text-overflow: ellipsis;
2945
+ max-width: 100%;
2946
+ }
2947
+
2948
+ /* Pagination native 구현 스타일 */
2949
+ .pagination {
2950
+ --pagination-gap: var(--spacing-gap-2, 8px);
2951
+ --pagination-number-height: var(--theme-size-small-2, 24px);
2952
+ --pagination-number-min-width: var(--theme-size-small-2, 24px);
2953
+ --pagination-number-radius: var(--theme-radius-medium-1, 6px);
2954
+ --pagination-color-active-bg: var(--color-cool-gray-10, #18191b);
2955
+ --pagination-color-active-label: var(--color-common-100, #ffffff);
2956
+ --pagination-color-inactive-label: var(--color-label-alternative, #afb1b6);
2957
+ --pagination-dot-size: 8px;
2958
+ --pagination-dot-bg: var(--color-cool-gray-85, #d2d3d7);
2959
+ --pagination-dot-active-bg: var(--color-primary-default, #0061ff);
2960
+ --pagination-carousel-height: 8px;
2961
+ --pagination-carousel-dot-width: 8px;
2962
+ --pagination-carousel-active-width: 20px;
2963
+ --pagination-count-bg: var(--color-cool-gray-10, #18191b);
2964
+ --pagination-count-divider: var(--color-common-100, #ffffff);
2965
+ --pagination-count-total: var(--color-label-alternative, #afb1b6);
2966
+ display: inline-flex;
2967
+ gap: var(--pagination-gap);
2968
+ align-items: center;
2969
+ padding: 0;
2970
+ margin: 0;
2971
+ list-style: none;
2972
+ }
2973
+
2974
+ .pagination[data-interactive=false] .pagination-button,
2975
+ .pagination-button:disabled {
2976
+ cursor: default;
2977
+ }
2978
+
2979
+ .pagination-item {
2980
+ list-style: none;
2981
+ }
2982
+
2983
+ .pagination-button {
2984
+ appearance: none;
2985
+ border: none;
2986
+ background: transparent;
2987
+ padding: 0;
2988
+ margin: 0;
2989
+ display: inline-flex;
2990
+ align-items: center;
2991
+ justify-content: center;
2992
+ cursor: pointer;
2993
+ color: inherit;
2994
+ font: inherit;
2995
+ transition: background-color 0.16s ease, color 0.16s ease, opacity 0.16s ease;
2996
+ }
2997
+
2998
+ .pagination--variant-list {
2999
+ gap: var(--spacing-gap-1, 4px);
3000
+ }
3001
+
3002
+ .pagination--variant-list .pagination-button {
3003
+ min-width: var(--pagination-number-min-width);
3004
+ height: var(--pagination-number-height);
3005
+ padding-inline: var(--spacing-padding-2, 8px);
3006
+ border-radius: var(--pagination-number-radius);
3007
+ background-color: transparent;
3008
+ color: var(--pagination-color-inactive-label);
3009
+ font-size: var(--font-label-medium-size, 12px);
3010
+ font-weight: var(--font-label-medium-weight, 400);
3011
+ line-height: var(--font-label-medium-line-height, 1.5);
3012
+ }
3013
+
3014
+ .pagination[data-interactive=true] .pagination--variant-list .pagination-button:not([data-active=true]):hover {
3015
+ background-color: var(--color-bg-alternative-cool-gray, #f0f1f5);
3016
+ color: var(--color-label-strong, #5b5c60);
3017
+ }
3018
+
3019
+ .pagination--variant-list .pagination-button[data-active=true] {
3020
+ background-color: var(--pagination-color-active-bg);
3021
+ color: var(--pagination-color-active-label);
3022
+ }
3023
+
3024
+ .pagination-number {
3025
+ min-width: 1ch;
3026
+ text-align: center;
3027
+ }
3028
+
3029
+ .pagination--variant-carousel {
3030
+ gap: 5px;
3031
+ min-height: var(--pagination-carousel-height);
3032
+ align-items: center;
3033
+ }
3034
+
3035
+ .pagination--variant-carousel .pagination-button {
3036
+ width: auto;
3037
+ height: var(--pagination-carousel-height);
3038
+ padding: 0;
3039
+ }
3040
+
3041
+ .pagination--variant-carousel .pagination-dot {
3042
+ display: inline-flex;
3043
+ width: var(--pagination-carousel-dot-width);
3044
+ height: var(--pagination-carousel-height);
3045
+ border-radius: calc(var(--pagination-carousel-height) / 2);
3046
+ background-color: var(--pagination-dot-bg);
3047
+ transition: width 0.16s ease, background-color 0.16s ease;
3048
+ }
3049
+
3050
+ .pagination--variant-carousel .pagination-button[data-active=true] .pagination-dot {
3051
+ width: var(--pagination-carousel-active-width);
3052
+ background-color: var(--pagination-dot-active-bg);
3053
+ }
3054
+
3055
+ .pagination--variant-count {
3056
+ gap: 0;
3057
+ }
3058
+
3059
+ .pagination--variant-count .pagination-button {
3060
+ border-radius: var(--theme-radius-large-2, 16px);
3061
+ padding-inline: var(--spacing-padding-4, 16px);
3062
+ background-color: var(--pagination-count-bg);
3063
+ color: var(--pagination-color-active-label);
3064
+ font-weight: var(--font-label-medium-weight, 400);
3065
+ line-height: 1.5;
3066
+ }
3067
+
3068
+ .pagination--variant-count.pagination--count-size-small .pagination-button {
3069
+ height: var(--theme-size-small-2, 24px);
3070
+ font-size: var(--font-label-medium-size, 12px);
3071
+ }
3072
+
3073
+ .pagination--variant-count.pagination--count-size-xsmall .pagination-button {
3074
+ height: var(--theme-size-small-1, 20px);
3075
+ font-size: var(--font-label-small-size, 11px);
3076
+ }
3077
+
3078
+ .pagination-count-current {
3079
+ color: var(--pagination-color-active-label);
3080
+ }
3081
+
3082
+ .pagination-count-divider {
3083
+ margin-inline: var(--spacing-gap-1, 4px);
3084
+ color: var(--pagination-count-divider);
3085
+ }
3086
+
3087
+ .pagination-count-total {
3088
+ color: var(--pagination-count-total);
3089
+ }
3090
+
3091
+ :where(.radix-themes, .theme-root) {
3092
+ --theme-radio-frame-size-medium: 20px;
3093
+ --theme-radio-frame-size-large: 24px;
3094
+ --theme-radio-indicator-size-medium: 16px;
3095
+ --theme-radio-indicator-size-large: 20px;
3096
+ --theme-radio-indicator-border-width: 1.4px;
3097
+ --theme-radio-indicator-border-width-selected-medium: 4px;
3098
+ --theme-radio-indicator-border-width-selected-large: 6px;
3099
+ --theme-radio-border-color: var(--color-border-standard-assistive);
3100
+ --theme-radio-border-selected: var(--color-primary-default);
3101
+ --theme-radio-surface-selected: var(--color-primary-default);
3102
+ --theme-radio-surface-disabled: var(--color-border-standard-assistive);
3103
+ --theme-radio-border-disabled: var(--color-border-standard-assistive);
3104
+ --theme-radio-disabled-selected-fill: var(--color-primary-default);
3105
+ --theme-radio-label-color: var(--color-label-strong);
3106
+ --theme-radio-label-disabled: var(--color-label-disabled);
3107
+ --theme-radio-helper-color: var(--color-label-neutral);
3108
+ --theme-radio-helper-disabled: var(--color-label-disabled);
3109
+ --theme-radio-card-background: var(--color-common-100);
3110
+ --theme-radio-card-title-color: var(--color-label-strong);
3111
+ --theme-radio-card-description-color: var(--color-label-neutral);
3112
+ --theme-radio-card-badge-background: var(--color-bg-surface-static-blue);
3113
+ --theme-radio-card-badge-color: var(--color-primary-default);
3114
+ --theme-radio-focus-ring: rgba(2, 84, 255, 0.32);
3115
+ --theme-radio-disabled-selected-opacity: 0.28;
3116
+ }
3117
+
3118
+ .radio {
3119
+ display: inline-flex;
3120
+ align-items: center;
3121
+ justify-content: center;
3122
+ inline-size: var(--theme-radio-frame-size-medium);
3123
+ block-size: var(--theme-radio-frame-size-medium);
3124
+ border: none;
3125
+ background-color: transparent;
3126
+ border-radius: 0;
3127
+ padding: 0;
3128
+ cursor: pointer;
3129
+ transition: box-shadow 0.15s ease, transform 0.15s ease;
3130
+ }
3131
+ .radio[data-size=large] {
3132
+ inline-size: var(--theme-radio-frame-size-large);
3133
+ block-size: var(--theme-radio-frame-size-large);
3134
+ }
3135
+ .radio[data-disabled=true] {
3136
+ cursor: not-allowed;
3137
+ opacity: 0.6;
3138
+ }
3139
+
3140
+ .radio:focus-visible {
3141
+ box-shadow: 0 0 0 2px var(--theme-radio-focus-ring);
3142
+ }
3143
+
3144
+ .radio-indicator {
3145
+ inline-size: var(--theme-radio-indicator-size-medium);
3146
+ block-size: var(--theme-radio-indicator-size-medium);
3147
+ border-radius: 9999px;
3148
+ border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3149
+ transition: border-color 0.15s ease;
3150
+ }
3151
+
3152
+ .radio[data-state=checked] .radio-indicator,
3153
+ .radio[data-size=medium][data-state=checked] .radio-indicator {
3154
+ border-width: var(--theme-radio-indicator-border-width-selected-medium);
3155
+ }
3156
+
3157
+ .radio[data-size=large] .radio-indicator {
3158
+ inline-size: var(--theme-radio-indicator-size-large);
3159
+ block-size: var(--theme-radio-indicator-size-large);
3160
+ }
3161
+ .radio[data-size=large][data-state=checked] .radio-indicator {
3162
+ border-width: var(--theme-radio-indicator-border-width-selected-large);
3163
+ }
3164
+
3165
+ .radio[data-state=checked] .radio-indicator {
3166
+ border-color: var(--theme-radio-border-selected);
3167
+ }
3168
+
3169
+ .radio[data-disabled=true] .radio-indicator {
3170
+ border-color: var(--theme-radio-border-disabled);
3171
+ background-color: var(--theme-radio-surface-disabled);
3172
+ opacity: 1;
3173
+ }
3174
+
3175
+ .radio[data-disabled=true][data-state=checked] .radio-indicator {
3176
+ border-color: var(--theme-radio-disabled-selected-fill);
3177
+ opacity: var(--theme-radio-disabled-selected-opacity);
3178
+ }
3179
+
3180
+ .radio-field {
3181
+ display: flex;
3182
+ flex-direction: column;
3183
+ gap: var(--spacing-gap-1);
3184
+ color: var(--theme-radio-label-color);
3185
+ }
3186
+
3187
+ .radio-field[data-disabled=true] {
3188
+ color: var(--theme-radio-label-disabled);
3189
+ }
3190
+
3191
+ .radio-label-wrapper {
3192
+ display: inline-flex;
3193
+ align-items: center;
3194
+ gap: var(--spacing-gap-2);
3195
+ cursor: pointer;
3196
+ }
3197
+
3198
+ .radio-label-wrapper[data-disabled=true] {
3199
+ cursor: not-allowed;
3200
+ }
3201
+
3202
+ .radio-label-text {
3203
+ font-weight: var(--font-body-medium-weight);
3204
+ user-select: none;
3205
+ }
3206
+
3207
+ .radio-field[data-size=medium] .radio-label-text {
3208
+ font-size: var(--font-body-xsmall-size);
3209
+ line-height: var(--font-body-xsmall-line-height);
3210
+ }
3211
+
3212
+ .radio-field[data-size=large] .radio-label-text {
3213
+ font-size: var(--font-body-medium-size);
3214
+ line-height: var(--font-body-medium-line-height);
3215
+ }
3216
+
3217
+ .radio-helper {
3218
+ margin: 0;
3219
+ font-size: var(--font-caption-large-size);
3220
+ line-height: var(--font-caption-large-line-height);
3221
+ color: var(--theme-radio-helper-color);
3222
+ user-select: none;
3223
+ }
3224
+
3225
+ .radio-field[data-disabled=true] .radio-helper {
3226
+ color: var(--theme-radio-helper-disabled);
3227
+ }
3228
+
3229
+ .radio-card-group {
3230
+ display: flex;
3231
+ flex-direction: column;
3232
+ gap: var(--spacing-gap-3);
3233
+ }
3234
+
3235
+ .radio-card {
3236
+ display: flex;
3237
+ align-items: center;
3238
+ justify-content: space-between;
3239
+ inline-size: 100%;
3240
+ gap: var(--spacing-gap-3);
3241
+ padding: 16px 24px;
3242
+ background-color: var(--theme-radio-card-background);
3243
+ transition: background-color 0.15s ease;
3244
+ cursor: pointer;
3245
+ }
3246
+ .radio-card[data-disabled=true] {
3247
+ cursor: not-allowed;
3248
+ opacity: 0.7;
3249
+ }
3250
+
3251
+ .radio-card-content {
3252
+ display: flex;
3253
+ flex-direction: column;
3254
+ gap: var(--spacing-gap-1);
3255
+ min-inline-size: 0;
3256
+ }
3257
+
3258
+ .radio-card-title-row {
3259
+ display: inline-flex;
3260
+ align-items: center;
3261
+ gap: var(--spacing-gap-1);
3262
+ min-inline-size: 0;
3263
+ }
3264
+
3265
+ .radio-card-title {
3266
+ font-size: var(--font-heading-small-size);
3267
+ line-height: var(--font-heading-small-line-height);
3268
+ font-weight: var(--font-heading-small-weight);
3269
+ letter-spacing: 0.2px;
3270
+ color: var(--theme-radio-card-title-color);
3271
+ white-space: nowrap;
3272
+ }
3273
+
3274
+ .radio-card-badge {
3275
+ display: none;
3276
+ align-items: center;
3277
+ justify-content: center;
3278
+ padding: 4px 6px;
3279
+ font-size: var(--font-caption-medium-size);
3280
+ line-height: var(--font-caption-medium-line-height);
3281
+ border-radius: 6px;
3282
+ background-color: var(--theme-radio-card-badge-background);
3283
+ color: var(--theme-radio-card-badge-color);
3284
+ }
3285
+
3286
+ .radio-card[data-state=checked] .radio-card-title {
3287
+ color: var(--theme-radio-card-badge-color);
3288
+ }
3289
+ .radio-card[data-state=checked] .radio-card-badge {
3290
+ display: inline-flex;
3291
+ }
3292
+
3293
+ .radio-card-description {
3294
+ margin: 0;
3295
+ font-size: var(--font-body-small-size);
3296
+ line-height: var(--font-body-small-line-height);
3297
+ color: var(--theme-radio-card-description-color);
3298
+ }
3299
+
3300
+ .radio-card-indicator-wrapper {
3301
+ display: inline-flex;
3302
+ align-items: center;
3303
+ justify-content: center;
3304
+ flex-shrink: 0;
3305
+ }
3306
+
3307
+ .radio-card-indicator {
3308
+ inline-size: var(--theme-radio-indicator-size-medium);
3309
+ block-size: var(--theme-radio-indicator-size-medium);
3310
+ border-radius: 9999px;
3311
+ border: var(--theme-radio-indicator-border-width) solid var(--theme-radio-border-color);
3312
+ transition: border-color 0.15s ease;
3313
+ }
3314
+
3315
+ .radio-card[data-size=large] .radio-card-indicator {
3316
+ inline-size: var(--theme-radio-indicator-size-large);
3317
+ block-size: var(--theme-radio-indicator-size-large);
3318
+ }
3319
+
3320
+ .radio-card[data-state=checked] .radio-card-indicator {
3321
+ border-color: var(--theme-radio-border-selected);
3322
+ border-width: var(--theme-radio-indicator-border-width-selected-medium);
3323
+ }
3324
+
3325
+ .radio-card[data-size=large][data-state=checked] .radio-card-indicator {
3326
+ border-width: var(--theme-radio-indicator-border-width-selected-large);
3327
+ }
3328
+
3329
+ /* TODO(scrollbar): 스타일을 SOT 토큰 값으로 정의한다. */
3330
+ .segmented-control {
3331
+ --segmented-height: 34px;
3332
+ --segmented-padding: 2px;
3333
+ --segmented-radius: 16px;
3334
+ --segmented-bg: var(--color-bg-alternative-cool-gray, #f2f2f3);
3335
+ --segmented-indicator-bg: var(--color-common-100, #ffffff);
3336
+ --segmented-indicator-shadow: 2px 2px 4px rgba(0, 0, 0, 0.02);
3337
+ --segmented-label-color: var(--color-label-neutral, #797e86);
3338
+ --segmented-label-active-color: var(--color-label-strong, #181a1b);
3339
+ --segmented-disabled-opacity: 0.4;
3340
+ --segmented-item-padding-x: 22px;
3341
+ --segmented-item-padding-y: 4px;
3342
+ --segmented-item-font-size: var(--font-heading-xxsmall-size, 15px);
3343
+ --segmented-item-font-weight: var(--font-heading-xxsmall-weight, 500);
3344
+ --segmented-item-line-height: var(--font-heading-xxsmall-line-height, 1.5);
3345
+ display: grid;
3346
+ grid-auto-flow: column;
3347
+ grid-auto-columns: 1fr;
3348
+ align-items: stretch;
3349
+ padding: var(--segmented-padding);
3350
+ border-radius: var(--segmented-radius);
3351
+ background: var(--segmented-bg);
3352
+ width: fit-content;
3353
+ height: var(--segmented-height);
3354
+ font-size: 0;
3355
+ isolation: isolate;
3356
+ }
3357
+
3358
+ .segmented-control:where(.rt-SegmentedControlRoot) {
3359
+ /* Radix Theme 기본 inline-grid를 덮어 동일한 sizing 시스템에서만 layout이 될 수 있도록 한다. */
3360
+ display: grid;
3361
+ }
3362
+
3363
+ .segmented-control:where([data-keep-selected=true]) {
3364
+ --segmented-disabled-opacity: 0.3;
3365
+ }
3366
+
3367
+ .segmented-control :where(.rt-SegmentedControlIndicator) {
3368
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3369
+ background: transparent;
3370
+ box-shadow: none;
3371
+ overflow: hidden;
3372
+ }
3373
+
3374
+ .segmented-control :where(.rt-SegmentedControlIndicator)::before {
3375
+ content: "";
3376
+ position: absolute;
3377
+ inset: var(--segmented-padding);
3378
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3379
+ background: var(--segmented-indicator-bg);
3380
+ box-shadow: var(--segmented-indicator-shadow);
3381
+ }
3382
+
3383
+ .segmented-control :where(.rt-SegmentedControlItemSeparator) {
3384
+ display: none;
3385
+ }
3386
+
3387
+ .segmented-control :where(.rt-SegmentedControlItem) {
3388
+ background: transparent;
3389
+ padding: 0;
3390
+ border: none;
3391
+ min-width: 0;
3392
+ display: flex;
3393
+ }
3394
+
3395
+ .segmented-control :where(.rt-SegmentedControlItemLabel) {
3396
+ gap: 0;
3397
+ height: fit-content;
3398
+ padding: 0;
3399
+ font-size: 0;
3400
+ }
3401
+
3402
+ .segmented-control-item {
3403
+ width: 100%;
3404
+ height: 100%;
3405
+ border: none;
3406
+ background: transparent;
3407
+ cursor: pointer;
3408
+ }
3409
+ .segmented-control-item .rt-SegmentedControlItemLabel {
3410
+ display: flex;
3411
+ align-items: center;
3412
+ justify-content: center;
3413
+ padding: var(--segmented-item-padding-y) var(--segmented-item-padding-x);
3414
+ border-radius: calc(var(--segmented-radius) - var(--segmented-padding));
3415
+ }
3416
+
3417
+ .segmented-control-item:where([data-disabled=true]) {
3418
+ cursor: not-allowed;
3419
+ opacity: var(--segmented-disabled-opacity);
3420
+ }
3421
+
3422
+ .segmented-control-item:where(:focus-visible) {
3423
+ outline: 2px solid var(--color-focus-ring, var(--color-primary-default));
3424
+ outline-offset: 2px;
3425
+ }
3426
+
3427
+ .segmented-control-item-label {
3428
+ font-size: var(--segmented-item-font-size);
3429
+ font-weight: var(--segmented-item-font-weight);
3430
+ line-height: var(--segmented-item-line-height);
3431
+ letter-spacing: 0.2px;
3432
+ color: var(--segmented-label-color);
3433
+ transition: color 0.2s ease;
3434
+ }
3435
+
3436
+ .segmented-control-item:where([data-state=on]) .segmented-control-item-label {
3437
+ color: var(--segmented-label-active-color);
3438
+ }
3439
+
3440
+ /* TODO(select): 스타일을 SOT 토큰 값으로 정의한다. */
3441
+ /* TODO(spinner): 스타일을 SOT 토큰 값으로 정의한다. */
3442
+ .tab-root {
3443
+ /* Figma node 694:4619 측정값을 CSS 변수로 고정해 Storybook과 실 서비스 간 시각 편차를 줄인다. */
3444
+ --tab-label-font-size: var(--font-heading-xsmall-size, 17px);
3445
+ --tab-label-font-weight: var(--font-heading-xsmall-weight, 600);
3446
+ --tab-label-line-height: var(--font-heading-xsmall-line-height, 1.5em);
3447
+ --tab-label-letter-spacing: var(--font-heading-xsmall-letter-spacing, 0px);
3448
+ --tab-gap: 10px;
3449
+ --tab-padding-y: 10px;
3450
+ --tab-padding-x: 20px;
3451
+ --tab-icon-gap: 6px;
3452
+ --tab-line-track-color: var(
3453
+ --color-border-divider,
3454
+ var(--color-cool-gray-85)
3455
+ );
3456
+ --tab-line-track-height: 1.6px;
3457
+ --tab-line-indicator-height: 2px;
3458
+ --tab-color-active-default: #1a6aff;
3459
+ --tab-color-active: var(--tab-color-active-default);
3460
+ --tab-color-hover: color-mix(in srgb, var(--tab-color-active), #000 15%);
3461
+ --tab-line-hover-color: var(--tab-color-hover, var(--tab-color-active));
3462
+ --tab-fill-hover-bg: var(--color-bg-alternative-cool-gray, #f2f2f3);
3463
+ --tab-fill-active-color: var(--color-common-100, #ffffff);
3464
+ --tab-inactive-color: var(--color-label-alternative, #afb1b6);
3465
+ --tab-disabled-opacity: 0.4;
3466
+ width: 100%;
3467
+ display: flex;
3468
+ flex-direction: column;
3469
+ gap: var(--spacing-gap-3);
3470
+ }
3471
+
3472
+ .tab-list {
3473
+ display: flex;
3474
+ align-items: stretch;
3475
+ gap: var(--tab-gap);
3476
+ width: fit-content;
3477
+ overflow-x: auto;
3478
+ scrollbar-width: none;
3479
+ }
3480
+
3481
+ .tab-list::-webkit-scrollbar {
3482
+ display: none;
3483
+ }
3484
+
3485
+ .tab-list:where([data-full-width=true]) {
3486
+ width: 100%;
3487
+ }
3488
+
3489
+ .tab-trigger {
3490
+ position: relative;
3491
+ display: flex;
3492
+ align-items: center;
3493
+ justify-content: center;
3494
+ gap: var(--tab-icon-gap);
3495
+ padding: var(--tab-padding-y) var(--tab-padding-x);
3496
+ background: transparent;
3497
+ border: none;
3498
+ cursor: pointer;
3499
+ transition: background-color 0.2s ease;
3500
+ }
3501
+
3502
+ .tab-trigger:where(:focus-visible) {
3503
+ outline: 2px solid var(--color-focus-ring, var(--color-primary-default));
3504
+ outline-offset: 2px;
3505
+ }
3506
+
3507
+ .tab-trigger:where([data-disabled=true]) {
3508
+ cursor: not-allowed;
3509
+ opacity: var(--tab-disabled-opacity);
3510
+ }
3511
+
3512
+ .tab-trigger-icon {
3513
+ display: flex;
3514
+ align-items: center;
3515
+ justify-content: center;
3516
+ }
3517
+
3518
+ .tab-trigger-label {
3519
+ display: flex;
3520
+ align-items: center;
3521
+ justify-content: center;
3522
+ font-size: var(--tab-label-font-size);
3523
+ font-weight: var(--tab-label-font-weight);
3524
+ line-height: var(--tab-label-line-height);
3525
+ letter-spacing: var(--tab-label-letter-spacing);
3526
+ color: var(--tab-inactive-color);
3527
+ transition: color 0.2s ease;
3528
+ }
3529
+
3530
+ .tab-list:where([data-variant=line]) {
3531
+ position: relative;
3532
+ width: 100%;
3533
+ }
3534
+
3535
+ .tab-list:where([data-variant=line])::before {
3536
+ content: "";
3537
+ position: absolute;
3538
+ inset: auto 0 0;
3539
+ height: var(--tab-line-track-height, 1px);
3540
+ background: var(--tab-line-track-color);
3541
+ z-index: 0;
3542
+ }
3543
+
3544
+ .tab-list:where([data-variant=line][data-full-width=true]) > .tab-trigger {
3545
+ flex: 1;
3546
+ }
3547
+
3548
+ .tab-trigger:where([data-variant=line])::after {
3549
+ content: "";
3550
+ position: absolute;
3551
+ left: 0;
3552
+ right: 0;
3553
+ bottom: -1px;
3554
+ height: var(--tab-line-indicator-height, 2px);
3555
+ background: transparent;
3556
+ transform: scaleX(0);
3557
+ transform-origin: center;
3558
+ z-index: 1;
3559
+ transition: transform 0.2s ease, background-color 0.2s ease;
3560
+ }
3561
+
3562
+ .tab-trigger:where([data-variant=line][data-state=active]) .tab-trigger-label {
3563
+ color: var(--tab-color-active);
3564
+ }
3565
+
3566
+ .tab-trigger:where([data-variant=line][data-state=active])::after {
3567
+ background: var(--tab-color-active);
3568
+ transform: scaleX(1);
3569
+ }
3570
+
3571
+ .tab-trigger:where([data-variant=line]):where(:not([data-state=active])):hover .tab-trigger-label {
3572
+ color: var(--tab-line-hover-color);
3573
+ }
3574
+
3575
+ .tab-list:where([data-variant=fill]) {
3576
+ width: fit-content;
3577
+ border: none;
3578
+ background: transparent;
3579
+ border-radius: 0;
3580
+ gap: 0;
3581
+ }
3582
+
3583
+ .tab-list:where([data-variant=fill][data-full-width=true]) {
3584
+ width: 100%;
3585
+ }
3586
+
3587
+ .tab-list:where([data-variant=fill][data-full-width=true]) > .tab-trigger {
3588
+ flex: 1;
3589
+ }
3590
+
3591
+ .tab-trigger:where([data-variant=fill]) {
3592
+ border-radius: 12px;
3593
+ min-width: 0;
3594
+ padding: var(--tab-padding-y) var(--tab-padding-x);
3595
+ }
3596
+
3597
+ .tab-trigger:where([data-variant=fill][data-state=active]) {
3598
+ background: var(--tab-color-active);
3599
+ }
3600
+
3601
+ .tab-trigger:where([data-variant=fill][data-state=active]) .tab-trigger-label {
3602
+ color: var(--tab-fill-active-color);
3603
+ }
3604
+
3605
+ .tab-trigger:where([data-variant=fill]):where(:not([data-state=active])):hover {
3606
+ background: var(--tab-fill-hover-bg);
3607
+ }
3608
+
3609
+ .tab-content {
3610
+ display: block;
3611
+ padding: var(--spacing-padding-6) 0;
3612
+ }
3613
+
3614
+ /* TODO(table): 스타일을 SOT 토큰 값으로 정의한다. */