@uniai-fe/uds-templates 0.0.7 → 0.0.9

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