@lettealo/hanwha-life-ds 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +185 -0
  2. package/dist-lib/Guideline.png +0 -0
  3. package/dist-lib/Layout.png +0 -0
  4. package/dist-lib/Spacing.png +0 -0
  5. package/dist-lib/downloads/fonts/HanwhaB.woff2 +0 -0
  6. package/dist-lib/downloads/fonts/HanwhaGothicB.woff2 +0 -0
  7. package/dist-lib/downloads/fonts/HanwhaGothicEL.woff2 +0 -0
  8. package/dist-lib/downloads/fonts/HanwhaGothicL.woff2 +0 -0
  9. package/dist-lib/downloads/fonts/HanwhaGothicR.woff2 +0 -0
  10. package/dist-lib/downloads/fonts/HanwhaGothicT.woff2 +0 -0
  11. package/dist-lib/downloads/fonts/HanwhaL.woff2 +0 -0
  12. package/dist-lib/downloads/fonts/HanwhaR.woff2 +0 -0
  13. package/dist-lib/downloads/tokens.css +378 -0
  14. package/dist-lib/favicon.svg +5 -0
  15. package/dist-lib/icons.svg +24 -0
  16. package/dist-lib/index.cjs +7 -0
  17. package/dist-lib/index.css +2 -0
  18. package/dist-lib/index.mjs +1872 -0
  19. package/dist-lib/og.svg +40 -0
  20. package/dist-lib/robots.txt +2 -0
  21. package/dist-lib/types/components/Accordion/Accordion.d.ts +14 -0
  22. package/dist-lib/types/components/Accordion/Accordion.d.ts.map +1 -0
  23. package/dist-lib/types/components/Accordion/index.d.ts +2 -0
  24. package/dist-lib/types/components/Accordion/index.d.ts.map +1 -0
  25. package/dist-lib/types/components/AssetIcon/AssetIcon.d.ts +9 -0
  26. package/dist-lib/types/components/AssetIcon/AssetIcon.d.ts.map +1 -0
  27. package/dist-lib/types/components/AssetIcon/index.d.ts +2 -0
  28. package/dist-lib/types/components/AssetIcon/index.d.ts.map +1 -0
  29. package/dist-lib/types/components/Avatar/Avatar.d.ts +10 -0
  30. package/dist-lib/types/components/Avatar/Avatar.d.ts.map +1 -0
  31. package/dist-lib/types/components/Avatar/index.d.ts +3 -0
  32. package/dist-lib/types/components/Avatar/index.d.ts.map +1 -0
  33. package/dist-lib/types/components/Badge/Badge.d.ts +10 -0
  34. package/dist-lib/types/components/Badge/Badge.d.ts.map +1 -0
  35. package/dist-lib/types/components/Badge/index.d.ts +3 -0
  36. package/dist-lib/types/components/Badge/index.d.ts.map +1 -0
  37. package/dist-lib/types/components/BottomSheet/BottomSheet.d.ts +12 -0
  38. package/dist-lib/types/components/BottomSheet/BottomSheet.d.ts.map +1 -0
  39. package/dist-lib/types/components/BottomSheet/index.d.ts +2 -0
  40. package/dist-lib/types/components/BottomSheet/index.d.ts.map +1 -0
  41. package/dist-lib/types/components/Button/Button.d.ts +14 -0
  42. package/dist-lib/types/components/Button/Button.d.ts.map +1 -0
  43. package/dist-lib/types/components/Button/index.d.ts +2 -0
  44. package/dist-lib/types/components/Button/index.d.ts.map +1 -0
  45. package/dist-lib/types/components/Card/Card.d.ts +22 -0
  46. package/dist-lib/types/components/Card/Card.d.ts.map +1 -0
  47. package/dist-lib/types/components/Card/index.d.ts +2 -0
  48. package/dist-lib/types/components/Card/index.d.ts.map +1 -0
  49. package/dist-lib/types/components/Checkbox/Checkbox.d.ts +10 -0
  50. package/dist-lib/types/components/Checkbox/Checkbox.d.ts.map +1 -0
  51. package/dist-lib/types/components/Checkbox/index.d.ts +2 -0
  52. package/dist-lib/types/components/Checkbox/index.d.ts.map +1 -0
  53. package/dist-lib/types/components/CheckboxButton/CheckboxButton.d.ts +13 -0
  54. package/dist-lib/types/components/CheckboxButton/CheckboxButton.d.ts.map +1 -0
  55. package/dist-lib/types/components/CheckboxButton/index.d.ts +2 -0
  56. package/dist-lib/types/components/CheckboxButton/index.d.ts.map +1 -0
  57. package/dist-lib/types/components/Chip/Chip.d.ts +13 -0
  58. package/dist-lib/types/components/Chip/Chip.d.ts.map +1 -0
  59. package/dist-lib/types/components/Chip/ChipGroup.d.ts +7 -0
  60. package/dist-lib/types/components/Chip/ChipGroup.d.ts.map +1 -0
  61. package/dist-lib/types/components/Chip/index.d.ts +3 -0
  62. package/dist-lib/types/components/Chip/index.d.ts.map +1 -0
  63. package/dist-lib/types/components/DatePicker/DatePicker.d.ts +10 -0
  64. package/dist-lib/types/components/DatePicker/DatePicker.d.ts.map +1 -0
  65. package/dist-lib/types/components/DatePicker/index.d.ts +2 -0
  66. package/dist-lib/types/components/DatePicker/index.d.ts.map +1 -0
  67. package/dist-lib/types/components/Dropdown/Dropdown.d.ts +26 -0
  68. package/dist-lib/types/components/Dropdown/Dropdown.d.ts.map +1 -0
  69. package/dist-lib/types/components/Dropdown/index.d.ts +2 -0
  70. package/dist-lib/types/components/Dropdown/index.d.ts.map +1 -0
  71. package/dist-lib/types/components/EmptyState/EmptyState.d.ts +10 -0
  72. package/dist-lib/types/components/EmptyState/EmptyState.d.ts.map +1 -0
  73. package/dist-lib/types/components/EmptyState/index.d.ts +2 -0
  74. package/dist-lib/types/components/EmptyState/index.d.ts.map +1 -0
  75. package/dist-lib/types/components/ErrorBoundary.d.ts +17 -0
  76. package/dist-lib/types/components/ErrorBoundary.d.ts.map +1 -0
  77. package/dist-lib/types/components/Graphic/Graphic.d.ts +9 -0
  78. package/dist-lib/types/components/Graphic/Graphic.d.ts.map +1 -0
  79. package/dist-lib/types/components/Graphic/index.d.ts +2 -0
  80. package/dist-lib/types/components/Graphic/index.d.ts.map +1 -0
  81. package/dist-lib/types/components/HeroOrb/HeroOrb.d.ts +10 -0
  82. package/dist-lib/types/components/HeroOrb/HeroOrb.d.ts.map +1 -0
  83. package/dist-lib/types/components/HexOrb/HexOrb.d.ts +10 -0
  84. package/dist-lib/types/components/HexOrb/HexOrb.d.ts.map +1 -0
  85. package/dist-lib/types/components/Icon/Icon.d.ts +20 -0
  86. package/dist-lib/types/components/Icon/Icon.d.ts.map +1 -0
  87. package/dist-lib/types/components/Icon/index.d.ts +2 -0
  88. package/dist-lib/types/components/Icon/index.d.ts.map +1 -0
  89. package/dist-lib/types/components/IconButton/IconButton.d.ts +11 -0
  90. package/dist-lib/types/components/IconButton/IconButton.d.ts.map +1 -0
  91. package/dist-lib/types/components/IconButton/index.d.ts +2 -0
  92. package/dist-lib/types/components/IconButton/index.d.ts.map +1 -0
  93. package/dist-lib/types/components/List/List.d.ts +16 -0
  94. package/dist-lib/types/components/List/List.d.ts.map +1 -0
  95. package/dist-lib/types/components/List/index.d.ts +2 -0
  96. package/dist-lib/types/components/List/index.d.ts.map +1 -0
  97. package/dist-lib/types/components/Modal/Modal.d.ts +12 -0
  98. package/dist-lib/types/components/Modal/Modal.d.ts.map +1 -0
  99. package/dist-lib/types/components/Modal/index.d.ts +2 -0
  100. package/dist-lib/types/components/Modal/index.d.ts.map +1 -0
  101. package/dist-lib/types/components/Notification/Notification.d.ts +11 -0
  102. package/dist-lib/types/components/Notification/Notification.d.ts.map +1 -0
  103. package/dist-lib/types/components/Notification/index.d.ts +2 -0
  104. package/dist-lib/types/components/Notification/index.d.ts.map +1 -0
  105. package/dist-lib/types/components/PageToc.d.ts +5 -0
  106. package/dist-lib/types/components/PageToc.d.ts.map +1 -0
  107. package/dist-lib/types/components/Progress/Progress.d.ts +10 -0
  108. package/dist-lib/types/components/Progress/Progress.d.ts.map +1 -0
  109. package/dist-lib/types/components/Progress/index.d.ts +3 -0
  110. package/dist-lib/types/components/Progress/index.d.ts.map +1 -0
  111. package/dist-lib/types/components/Radio/Radio.d.ts +8 -0
  112. package/dist-lib/types/components/Radio/Radio.d.ts.map +1 -0
  113. package/dist-lib/types/components/Radio/index.d.ts +2 -0
  114. package/dist-lib/types/components/Radio/index.d.ts.map +1 -0
  115. package/dist-lib/types/components/ScreenRenderer/ScreenRenderer.d.ts +9 -0
  116. package/dist-lib/types/components/ScreenRenderer/ScreenRenderer.d.ts.map +1 -0
  117. package/dist-lib/types/components/Stepper/Stepper.d.ts +7 -0
  118. package/dist-lib/types/components/Stepper/Stepper.d.ts.map +1 -0
  119. package/dist-lib/types/components/Stepper/index.d.ts +2 -0
  120. package/dist-lib/types/components/Stepper/index.d.ts.map +1 -0
  121. package/dist-lib/types/components/Table/Table.d.ts +34 -0
  122. package/dist-lib/types/components/Table/Table.d.ts.map +1 -0
  123. package/dist-lib/types/components/Table/index.d.ts +3 -0
  124. package/dist-lib/types/components/Table/index.d.ts.map +1 -0
  125. package/dist-lib/types/components/Tabs/Tabs.d.ts +14 -0
  126. package/dist-lib/types/components/Tabs/Tabs.d.ts.map +1 -0
  127. package/dist-lib/types/components/Tabs/index.d.ts +2 -0
  128. package/dist-lib/types/components/Tabs/index.d.ts.map +1 -0
  129. package/dist-lib/types/components/TextButton/TextButton.d.ts +10 -0
  130. package/dist-lib/types/components/TextButton/TextButton.d.ts.map +1 -0
  131. package/dist-lib/types/components/TextButton/index.d.ts +2 -0
  132. package/dist-lib/types/components/TextButton/index.d.ts.map +1 -0
  133. package/dist-lib/types/components/TextField/TextField.d.ts +10 -0
  134. package/dist-lib/types/components/TextField/TextField.d.ts.map +1 -0
  135. package/dist-lib/types/components/TextField/index.d.ts +2 -0
  136. package/dist-lib/types/components/TextField/index.d.ts.map +1 -0
  137. package/dist-lib/types/components/Toast/Toast.d.ts +11 -0
  138. package/dist-lib/types/components/Toast/Toast.d.ts.map +1 -0
  139. package/dist-lib/types/components/Toast/index.d.ts +2 -0
  140. package/dist-lib/types/components/Toast/index.d.ts.map +1 -0
  141. package/dist-lib/types/components/Toggle/Toggle.d.ts +6 -0
  142. package/dist-lib/types/components/Toggle/Toggle.d.ts.map +1 -0
  143. package/dist-lib/types/components/Toggle/index.d.ts +2 -0
  144. package/dist-lib/types/components/Toggle/index.d.ts.map +1 -0
  145. package/dist-lib/types/components/Tooltip/Tooltip.d.ts +20 -0
  146. package/dist-lib/types/components/Tooltip/Tooltip.d.ts.map +1 -0
  147. package/dist-lib/types/components/Tooltip/index.d.ts +3 -0
  148. package/dist-lib/types/components/Tooltip/index.d.ts.map +1 -0
  149. package/dist-lib/types/data/dsSpec.d.ts +530 -0
  150. package/dist-lib/types/data/dsSpec.d.ts.map +1 -0
  151. package/dist-lib/types/index.d.ts +30 -0
  152. package/dist-lib/types/index.d.ts.map +1 -0
  153. package/dist-lib/types/lib/assets.d.ts +16 -0
  154. package/dist-lib/types/lib/assets.d.ts.map +1 -0
  155. package/dist-lib/types/lib/buildSystemPrompt.d.ts +8 -0
  156. package/dist-lib/types/lib/buildSystemPrompt.d.ts.map +1 -0
  157. package/dist-lib/types/lib/callClaude.d.ts +40 -0
  158. package/dist-lib/types/lib/callClaude.d.ts.map +1 -0
  159. package/dist-lib/types/lib/cn.d.ts +2 -0
  160. package/dist-lib/types/lib/cn.d.ts.map +1 -0
  161. package/dist-lib/types/lib/dsSystemPrompt.d.ts +9 -0
  162. package/dist-lib/types/lib/dsSystemPrompt.d.ts.map +1 -0
  163. package/dist-lib/types/lib/generateStore.d.ts +3 -0
  164. package/dist-lib/types/lib/generateStore.d.ts.map +1 -0
  165. package/dist-lib/types/types.d.ts +208 -0
  166. package/dist-lib/types/types.d.ts.map +1 -0
  167. package/package.json +76 -0
  168. package/src/assets/fonts/HanwhaB.woff2 +0 -0
  169. package/src/assets/fonts/HanwhaGothicB.woff2 +0 -0
  170. package/src/assets/fonts/HanwhaGothicEL.woff2 +0 -0
  171. package/src/assets/fonts/HanwhaGothicL.woff2 +0 -0
  172. package/src/assets/fonts/HanwhaGothicR.woff2 +0 -0
  173. package/src/assets/fonts/HanwhaGothicT.woff2 +0 -0
  174. package/src/assets/fonts/HanwhaL.woff2 +0 -0
  175. package/src/assets/fonts/HanwhaR.woff2 +0 -0
  176. package/src/assets/fonts/LIFEPLUS-BODY-Light_Hinted.ttf +0 -0
  177. package/src/assets/fonts/LIFEPLUS-BODY-Medium_Hinted.ttf +0 -0
  178. package/src/assets/fonts/LIFEPLUS-Bold.ttf +0 -0
  179. package/src/assets/fonts/LIFEPLUS-Light.ttf +0 -0
  180. package/src/assets/fonts/LIFEPLUS-Medium.ttf +0 -0
  181. package/src/styles/layout.css +69 -0
  182. package/src/styles/tokens.css +437 -0
@@ -0,0 +1,437 @@
1
+ /* =========================================================================
2
+ Hanwha Life Design System — colors_and_type.css
3
+ 모든 값은 HDS_color.pdf, HDS_brand.pdf, HDS_layout.pdf 기반
4
+ ========================================================================= */
5
+
6
+ /* ---------- 웹폰트 (WOFF2 + 한글 서브셋) ---------- */
7
+ @font-face {
8
+ font-family: "Hanwha Gothic";
9
+ src: url("../assets/fonts/HanwhaGothicT.woff2") format("woff2");
10
+ font-weight: 100;
11
+ font-display: swap;
12
+ }
13
+ @font-face {
14
+ font-family: "Hanwha Gothic";
15
+ src: url("../assets/fonts/HanwhaGothicEL.woff2") format("woff2");
16
+ font-weight: 200;
17
+ font-display: swap;
18
+ }
19
+ @font-face {
20
+ font-family: "Hanwha Gothic";
21
+ src: url("../assets/fonts/HanwhaGothicL.woff2") format("woff2");
22
+ font-weight: 300;
23
+ font-display: swap;
24
+ }
25
+ @font-face {
26
+ font-family: "Hanwha Gothic";
27
+ src: url("../assets/fonts/HanwhaGothicR.woff2") format("woff2");
28
+ font-weight: 400;
29
+ font-display: swap;
30
+ }
31
+ @font-face {
32
+ font-family: "Hanwha Gothic";
33
+ src: url("../assets/fonts/HanwhaGothicR.woff2") format("woff2");
34
+ font-weight: 500;
35
+ font-display: swap;
36
+ }
37
+ @font-face {
38
+ font-family: "Hanwha Gothic";
39
+ src: url("../assets/fonts/HanwhaGothicB.woff2") format("woff2");
40
+ font-weight: 600;
41
+ font-display: swap;
42
+ }
43
+ @font-face {
44
+ font-family: "Hanwha Gothic";
45
+ src: url("../assets/fonts/HanwhaGothicB.woff2") format("woff2");
46
+ font-weight: 700;
47
+ font-display: swap;
48
+ }
49
+
50
+ /* 한화체 — 브랜드 로고용 */
51
+ @font-face {
52
+ font-family: "Hanwha";
53
+ src: url("../assets/fonts/HanwhaL.woff2") format("woff2");
54
+ font-weight: 300;
55
+ font-display: swap;
56
+ }
57
+ @font-face {
58
+ font-family: "Hanwha";
59
+ src: url("../assets/fonts/HanwhaR.woff2") format("woff2");
60
+ font-weight: 400;
61
+ font-display: swap;
62
+ }
63
+ @font-face {
64
+ font-family: "Hanwha";
65
+ src: url("../assets/fonts/HanwhaB.woff2") format("woff2");
66
+ font-weight: 700;
67
+ font-display: swap;
68
+ }
69
+
70
+ /* LIFEPLUS */
71
+ @font-face {
72
+ font-family: "LIFEPLUS";
73
+ src: url("../assets/fonts/LIFEPLUS-Light.ttf") format("truetype");
74
+ font-weight: 300;
75
+ font-display: swap;
76
+ }
77
+ @font-face {
78
+ font-family: "LIFEPLUS";
79
+ src: url("../assets/fonts/LIFEPLUS-Medium.ttf") format("truetype");
80
+ font-weight: 500;
81
+ font-display: swap;
82
+ }
83
+ @font-face {
84
+ font-family: "LIFEPLUS";
85
+ src: url("../assets/fonts/LIFEPLUS-Bold.ttf") format("truetype");
86
+ font-weight: 700;
87
+ font-display: swap;
88
+ }
89
+ @font-face {
90
+ font-family: "LIFEPLUS Body";
91
+ src: url("../assets/fonts/LIFEPLUS-BODY-Light_Hinted.ttf") format("truetype");
92
+ font-weight: 300;
93
+ font-display: swap;
94
+ }
95
+ @font-face {
96
+ font-family: "LIFEPLUS Body";
97
+ src: url("../assets/fonts/LIFEPLUS-BODY-Medium_Hinted.ttf") format("truetype");
98
+ font-weight: 500;
99
+ font-display: swap;
100
+ }
101
+
102
+ :root {
103
+ /* ===================== Color — 기본 팔레트 ===================== */
104
+ /* Orange (Primary) */
105
+ --orange-100: #FFE0CC;
106
+ --orange-200: #FFC299;
107
+ --orange-300: #FFAF7F;
108
+ --orange-400: #FF8F4C;
109
+ --orange-500: #FA6600; /* Hanwha Orange — Primary */
110
+ --orange-600: #E15A00;
111
+ --orange-700: #BF4C00;
112
+ --orange-800: #9E3F00;
113
+ --orange-900: #803300;
114
+
115
+ /* Gray */
116
+ --gray-100: #F5F5F5;
117
+ --gray-200: #F0F0F0;
118
+ --gray-300: #E5E4E3;
119
+ --gray-400: #D0CFCE;
120
+ --gray-500: #B4B3B2;
121
+ --gray-600: #908F8E;
122
+ --gray-700: #7E7C7A;
123
+ --gray-800: #5E5C5A;
124
+ --gray-900: #403F3E;
125
+
126
+ /* Red */
127
+ --red-100: #FEE5D8;
128
+ --red-200: #FEC6B2;
129
+ --red-300: #FC9F8B;
130
+ --red-400: #F97A6E;
131
+ --red-500: #F53F3F;
132
+ --red-600: #D22E3C;
133
+ --red-700: #B01F38;
134
+ --red-800: #8E1433;
135
+ --red-900: #750C30;
136
+
137
+ /* Bluegreen */
138
+ --bluegreen-100: #D6F6ED;
139
+ --bluegreen-200: #8DEFDC;
140
+ --bluegreen-300: #55DFCF;
141
+ --bluegreen-400: #29C4BF;
142
+ --bluegreen-500: #009CA5;
143
+ --bluegreen-600: #008195;
144
+ --bluegreen-700: #00617D;
145
+ --bluegreen-800: #004664;
146
+ --bluegreen-900: #003353;
147
+
148
+ /* Deepyellow */
149
+ --deepyellow-100: #FEF6D4;
150
+ --deepyellow-200: #FEEBAA;
151
+ --deepyellow-300: #FCDC7F;
152
+ --deepyellow-400: #FACD5F;
153
+ --deepyellow-500: #F8B62B;
154
+ --deepyellow-600: #D5941F;
155
+ --deepyellow-700: #B27515;
156
+ --deepyellow-800: #8F590D;
157
+ --deepyellow-900: #774408;
158
+
159
+ /* Jadegreen */
160
+ --jadegreen-100: #E1FAEE;
161
+ --jadegreen-200: #C5F5E3;
162
+ --jadegreen-300: #A0E3CF;
163
+ --jadegreen-400: #7EC7B8;
164
+ --jadegreen-500: #53A299;
165
+ --jadegreen-600: #3C8B89;
166
+ --jadegreen-700: #296F74;
167
+ --jadegreen-800: #1A535D;
168
+ --jadegreen-900: #0F3E4D;
169
+
170
+ /* Indigoblue */
171
+ --indigoblue-100: #E0EBFC;
172
+ --indigoblue-200: #C1D6F9;
173
+ --indigoblue-300: #9EBAEE;
174
+ --indigoblue-400: #819EDE;
175
+ --indigoblue-500: #5979C9;
176
+ --indigoblue-600: #415CAC;
177
+ --indigoblue-700: #2C4390;
178
+ --indigoblue-800: #1C2D74;
179
+ --indigoblue-900: #111E60;
180
+
181
+ /* Magenta */
182
+ --magenta-100: #FCE1E3;
183
+ --magenta-200: #FAC5CD;
184
+ --magenta-300: #F1A4B8;
185
+ --magenta-400: #E489A9;
186
+ --magenta-500: #D36396;
187
+ --magenta-600: #B54884;
188
+ --magenta-700: #973174;
189
+ --magenta-800: #7A1F64;
190
+ --magenta-900: #651359;
191
+
192
+ /* Basic */
193
+ --basic-black: #272B2F;
194
+ --basic-white: #FFFFFF;
195
+
196
+ /* ===================== Semantic Tokens ===================== */
197
+ /* Background */
198
+ --bg-white: #FFFFFF;
199
+ --bg-neutral: var(--gray-100);
200
+ --bg-dimmed: rgba(0, 0, 0, 0.5);
201
+
202
+ /* Surface */
203
+ --surface-primary: var(--orange-500);
204
+ --surface-secondary: var(--gray-900);
205
+ --surface-neutral: var(--basic-white);
206
+ --surface-neutral-1: var(--gray-100);
207
+ --surface-neutral-2: var(--gray-200);
208
+ --surface-neutral-3: var(--gray-300);
209
+ --surface-neutral-4: var(--orange-100);
210
+
211
+ /* Text */
212
+ --text-primary: var(--orange-500);
213
+ --text-secondary: var(--orange-700);
214
+ --text-body: var(--basic-black);
215
+ --text-body-0: var(--basic-white);
216
+ --text-body-1: var(--gray-900);
217
+ --text-body-2: var(--gray-800);
218
+ --text-body-3: var(--gray-700);
219
+ --text-neutral-1: var(--gray-600);
220
+ --text-neutral-2: var(--gray-500);
221
+
222
+ /* Border */
223
+ --border-primary-1: var(--orange-500);
224
+ --border-primary-2: var(--orange-400);
225
+ --border-neutral-1: var(--gray-100);
226
+ --border-neutral-2: var(--gray-200);
227
+ --border-neutral-3: var(--gray-300);
228
+ --border-neutral-4: var(--gray-400);
229
+ --border-neutral-5: var(--gray-600);
230
+ --border-neutral-6: var(--gray-900);
231
+
232
+ /* Additional / Semantic */
233
+ --semantic-1: var(--bluegreen-500); /* info */
234
+ --semantic-2: var(--red-500); /* error */
235
+ --semantic-3: var(--deepyellow-500); /* warning */
236
+ --semantic-4: var(--gray-500); /* disabled */
237
+ --custom-1: var(--indigoblue-400);
238
+ --custom-2: var(--orange-400);
239
+ --custom-3: var(--deepyellow-400);
240
+
241
+ /* States */
242
+ --state-dark-1: rgba(0, 0, 0, 0.02);
243
+ --state-dark-2: rgba(0, 0, 0, 0.10);
244
+ --state-dark-3: rgba(0, 0, 0, 0.16);
245
+ --state-light-1: rgba(255, 255, 255, 0.60);
246
+ --state-selected: rgba(255, 224, 204, 0.50);
247
+
248
+ /* ===================== Typography ===================== */
249
+ --font-ko: "Hanwha Gothic", "Noto Sans KR", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
250
+ --font-multi: "Noto Sans", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
251
+ --font-sans: var(--font-ko);
252
+ --font-brand: "Hanwha", "Hanwha Gothic", "Noto Sans KR", sans-serif;
253
+
254
+ /* ----- fontWeight 토큰 ----- */
255
+ --weight-light: 300;
256
+ --weight-regular: 400;
257
+ --weight-medium: 500;
258
+ --weight-semibold: 600;
259
+ --weight-bold: 700;
260
+
261
+ /* ----- 타입 토큰 — PC 기본 (px / weight / line-height) ----- */
262
+ /* Weight convention — Bold=700, Regular=400, Light=300 */
263
+ --title1-size: 26px; --title1-weight: 700; --title1-lh: 1.5;
264
+ --title2-size: 24px; --title2-weight: 700; --title2-lh: 1.5;
265
+ --title3-size: 22px; --title3-weight: 700; --title3-lh: 1.5;
266
+ --title4-size: 20px; --title4-weight: 700; --title4-lh: 1.5;
267
+ --title5-size: 18px; --title5-weight: 700; --title5-lh: 1.5;
268
+
269
+ --subtitle1-size: 20px; --subtitle1-weight: 400; --subtitle1-lh: 1.5;
270
+ --subtitle2-size: 18px; --subtitle2-weight: 400; --subtitle2-lh: 1.5;
271
+ --subtitle3-size: 16px; --subtitle3-weight: 400; --subtitle3-lh: 1.5;
272
+
273
+ --body1-size: 18px; --body1-weight: 300; --body1-lh: 1.5;
274
+ --body2-size: 16px; --body2-weight: 300; --body2-lh: 1.5;
275
+ --body3-size: 14px; --body3-weight: 300; --body3-lh: 1.5;
276
+ --body4-size: 12px; --body4-weight: 300; --body4-lh: 1.5;
277
+
278
+ --caption-size: 14px; --caption-weight: 300; --caption-lh: 1.4;
279
+
280
+ --link-large-size: 18px; --link-large-weight: 300;
281
+ --link-medium-size: 16px; --link-medium-weight: 300;
282
+ --link-small-size: 14px; --link-small-weight: 300;
283
+
284
+ --input-large-size: 16px; --input-large-weight: 400;
285
+ --input-medium-size: 16px; --input-medium-weight: 300;
286
+ --input-small-size: 14px; --input-small-weight: 300;
287
+
288
+ /* ===================== Shape (Radius) ===================== */
289
+ /* Shape value scale — 4, 6, 8, 10, 12, 14, 16 */
290
+ --radius-4: 4px;
291
+ --radius-6: 6px;
292
+ --radius-8: 8px;
293
+ --radius-10: 10px;
294
+ --radius-12: 12px;
295
+ --radius-14: 14px;
296
+ --radius-16: 16px;
297
+
298
+ /* Basic scale (default = PC) */
299
+ --radius-small: 4px;
300
+ --radius-medium: 8px;
301
+ --radius-large: 12px;
302
+ --radius-xLarge: 16px;
303
+ --radius-full: 1000px;
304
+
305
+ /* Modal radius per breakpoint */
306
+ --radius-modal-pc-wide: 16px;
307
+ --radius-modal-pc: 16px;
308
+ --radius-modal-tablet: 14px;
309
+ --radius-modal-mobile: 0;
310
+
311
+ /* ===================== Spacing ===================== */
312
+ --space-0: 0;
313
+ --space-2: 2px;
314
+ --space-4: 4px;
315
+ --space-6: 6px;
316
+ --space-8: 8px;
317
+ --space-10: 10px;
318
+ --space-12: 12px;
319
+ --space-14: 14px;
320
+ --space-16: 16px;
321
+ --space-18: 18px;
322
+ --space-20: 20px;
323
+ --space-22: 22px;
324
+ --space-24: 24px;
325
+ --space-26: 26px;
326
+ --space-28: 28px;
327
+ --space-30: 30px;
328
+ --space-32: 32px;
329
+ --space-36: 36px;
330
+ --space-40: 40px;
331
+ --space-44: 44px;
332
+ --space-48: 48px;
333
+
334
+ /* Padding tokens (PC) */
335
+ --padding-zero: 0;
336
+ --padding-xxxxSmall: 2px;
337
+ --padding-xxxSmall: 4px;
338
+ --padding-xxSmall: 6px;
339
+ --padding-xSmall: 8px;
340
+ --padding-small: 10px;
341
+ --padding-medium: 12px;
342
+ --padding-large: 16px;
343
+ --padding-xLarge: 20px;
344
+ --padding-xxLarge: 24px;
345
+ --padding-xxxLarge: 28px;
346
+ --padding-xxxxLarge: 48px;
347
+
348
+ /* Layout (PC) */
349
+ --layout-gutter: 16px;
350
+ --layout-column: 12px;
351
+ --layout-padding-sub: 32px;
352
+ --layout-padding-top-bottom: 20px;
353
+
354
+ /* ===================== Elevation / Shadow ===================== */
355
+ --shadow-small: 0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 3px rgba(0, 0, 0, 0.06);
356
+ --shadow-medium: 0 4px 8px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.04);
357
+ --shadow-large: 0 12px 24px rgba(0, 0, 0, 0.08), 0 4px 8px rgba(0, 0, 0, 0.04);
358
+ }
359
+
360
+ /* ===================== Base + Semantic Elements ===================== */
361
+ html, body {
362
+ font-family: var(--font-sans);
363
+ color: var(--text-body);
364
+ background: var(--bg-white);
365
+ -webkit-font-smoothing: antialiased;
366
+ -moz-osx-font-smoothing: grayscale;
367
+ text-rendering: optimizeLegibility;
368
+ }
369
+
370
+ body { font-size: var(--body2-size); font-weight: var(--body2-weight); line-height: var(--body2-lh); }
371
+
372
+ /* Form element reset — browsers apply ~83% font-size by default */
373
+ button, input, select, textarea, optgroup {
374
+ font-family: inherit;
375
+ font-size: inherit;
376
+ font-weight: inherit;
377
+ line-height: inherit;
378
+ }
379
+
380
+ h1 { font-size: var(--title1-size); font-weight: 700; line-height: 1.5; letter-spacing: -0.01em; }
381
+ h2 { font-size: var(--title2-size); font-weight: 700; line-height: 1.5; letter-spacing: -0.01em; }
382
+ h3 { font-size: var(--title3-size); font-weight: 700; line-height: 1.5; }
383
+ h4 { font-size: var(--title4-size); font-weight: 700; line-height: 1.5; }
384
+ h5 { font-size: var(--title5-size); font-weight: 700; line-height: 1.5; }
385
+ p { font-size: var(--body2-size); font-weight: 300; line-height: 1.5; }
386
+ small { font-size: var(--body4-size); font-weight: 300; }
387
+ a { color: var(--text-primary); text-decoration: none; }
388
+ a:hover { text-decoration: underline; }
389
+
390
+ /* 타입 클래스 */
391
+ .title1 { font-size: var(--title1-size); font-weight: 700; line-height: 1.5; }
392
+ .title2 { font-size: var(--title2-size); font-weight: 700; line-height: 1.5; }
393
+ .title3 { font-size: var(--title3-size); font-weight: 700; line-height: 1.5; }
394
+ .title4 { font-size: var(--title4-size); font-weight: 700; line-height: 1.5; }
395
+ .title5 { font-size: var(--title5-size); font-weight: 700; line-height: 1.5; }
396
+ .subtitle1 { font-size: var(--subtitle1-size); font-weight: 400; line-height: 1.5; }
397
+ .subtitle2 { font-size: var(--subtitle2-size); font-weight: 400; line-height: 1.5; }
398
+ .subtitle3 { font-size: var(--subtitle3-size); font-weight: 400; line-height: 1.5; }
399
+ .body1 { font-size: var(--body1-size); font-weight: 300; line-height: 1.5; }
400
+ .body2 { font-size: var(--body2-size); font-weight: 300; line-height: 1.5; }
401
+ .body3 { font-size: var(--body3-size); font-weight: 300; line-height: 1.5; }
402
+ .body4 { font-size: var(--body4-size); font-weight: 300; line-height: 1.5; }
403
+ .caption { font-size: var(--caption-size); font-weight: 300; line-height: 1.4; color: var(--text-body-3); }
404
+
405
+ /* ===================== Responsive Type Tokens ===================== */
406
+ /* Tablet — 768 ~ 1280px */
407
+ @media (max-width: 1280px) and (min-width: 768px) {
408
+ :root {
409
+ --title1-size: 24px; --title2-size: 22px; --title3-size: 20px;
410
+ --title4-size: 18px; --title5-size: 1rem;
411
+ --subtitle1-size: 18px; --subtitle2-size: 1rem; --subtitle3-size: 0.875rem;
412
+ --body1-size: 1rem; --body2-size: 1rem; --body3-size: 0.875rem; --body4-size: 0.875rem;
413
+ --caption-size: 0.875rem;
414
+ --link-large-size: 1rem; --link-medium-size: 0.875rem; --link-small-size: 0.875rem;
415
+ --input-large-size: 1rem; --input-medium-size: 1rem; --input-small-size: 0.875rem;
416
+ /* Tablet radius scale — xLarge 14 대신 */
417
+ --radius-medium: 6px;
418
+ --radius-large: 10px;
419
+ --radius-xLarge: 14px;
420
+ }
421
+ }
422
+
423
+ /* Mobile — 0 ~ 767px */
424
+ @media (max-width: 767px) {
425
+ :root {
426
+ /* 대부분 PC와 동일하되 subtitle·input은 재정렬 */
427
+ --title1-size: 26px; --title2-size: 22px; --title3-size: 22px;
428
+ --title4-size: 20px; --title5-size: 18px;
429
+ --subtitle1-size: 20px; --subtitle2-size: 18px; --subtitle3-size: 16px;
430
+ --body1-size: 18px; --body2-size: 16px; --body3-size: 14px; --body4-size: 12px;
431
+ --caption-size: 14px;
432
+ --input-large-size: 18px;
433
+ --input-medium-size: 18px;
434
+ --input-small-size: 16px;
435
+ --link-large-size: 18px; --link-medium-size: 16px; --link-small-size: 14px;
436
+ }
437
+ }