@salesmind-ai/design-system 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/README.md +2 -0
  2. package/dist/Anton-Regular-MLEXVTB2.woff2 +0 -0
  3. package/dist/admin/index.cjs +5 -61
  4. package/dist/admin/index.css +0 -3918
  5. package/dist/admin/index.css.map +1 -1
  6. package/dist/admin/index.d.cts +1 -422
  7. package/dist/admin/index.d.ts +1 -422
  8. package/dist/admin/index.js +1 -5
  9. package/dist/blog/index.cjs +13 -34
  10. package/dist/blog/index.css +0 -579
  11. package/dist/blog/index.css.map +1 -1
  12. package/dist/blog/index.d.cts +1 -54
  13. package/dist/blog/index.d.ts +1 -54
  14. package/dist/blog/index.js +5 -6
  15. package/dist/charts/index.cjs +0 -46
  16. package/dist/charts/index.d.cts +1 -452
  17. package/dist/charts/index.d.ts +1 -452
  18. package/dist/charts/index.js +1 -3
  19. package/dist/{chunk-HDVAMYSG.js → chunk-27Y5ESMM.js} +7 -2
  20. package/dist/chunk-27Y5ESMM.js.map +1 -0
  21. package/dist/{chunk-YTYDQBVY.cjs → chunk-2VVRZBUR.cjs} +4 -4
  22. package/dist/{chunk-GQELL2MF.cjs → chunk-3NS6X2R4.cjs} +20 -203
  23. package/dist/chunk-3NS6X2R4.cjs.map +1 -0
  24. package/dist/{chunk-XEX2AEZK.cjs → chunk-65DTHLVX.cjs} +66 -186
  25. package/dist/chunk-65DTHLVX.cjs.map +1 -0
  26. package/dist/{chunk-QALDZ7WQ.js → chunk-6BUS7RMS.js} +21 -198
  27. package/dist/chunk-6BUS7RMS.js.map +1 -0
  28. package/dist/{chunk-BJZ2DKS5.cjs → chunk-6QIQCUYC.cjs} +11 -10
  29. package/dist/chunk-6QIQCUYC.cjs.map +1 -0
  30. package/dist/{chunk-H2Y6BSTL.cjs → chunk-7EUR3AKV.cjs} +1 -1
  31. package/dist/chunk-7EUR3AKV.cjs.map +1 -0
  32. package/dist/{chunk-VFJZQQZU.js → chunk-AMNY5TS3.js} +11 -10
  33. package/dist/chunk-AMNY5TS3.js.map +1 -0
  34. package/dist/{chunk-YJ6C3EKW.js → chunk-CLXLQCNQ.js} +52 -168
  35. package/dist/chunk-CLXLQCNQ.js.map +1 -0
  36. package/dist/{chunk-H2KQ3WSH.cjs → chunk-CVLD5RQK.cjs} +12 -14
  37. package/dist/chunk-CVLD5RQK.cjs.map +1 -0
  38. package/dist/chunk-EPD4ZEPY.cjs +344 -0
  39. package/dist/chunk-EPD4ZEPY.cjs.map +1 -0
  40. package/dist/chunk-FXYOSA4E.cjs +118 -0
  41. package/dist/chunk-FXYOSA4E.cjs.map +1 -0
  42. package/dist/{chunk-ECXBTUH6.cjs → chunk-GPHQGLR5.cjs} +27 -204
  43. package/dist/chunk-GPHQGLR5.cjs.map +1 -0
  44. package/dist/{chunk-Y26OHHMX.js → chunk-HHQ6J7B6.js} +513 -888
  45. package/dist/chunk-HHQ6J7B6.js.map +1 -0
  46. package/dist/chunk-JPUJWI7F.cjs +73 -0
  47. package/dist/chunk-JPUJWI7F.cjs.map +1 -0
  48. package/dist/{chunk-6UNG76Y2.js → chunk-K526GN7P.js} +2 -2
  49. package/dist/{chunk-SICKWUWB.js → chunk-KJHPOB3J.js} +1 -1
  50. package/dist/chunk-KJHPOB3J.js.map +1 -0
  51. package/dist/chunk-KXVFFEGD.js +60 -0
  52. package/dist/chunk-KXVFFEGD.js.map +1 -0
  53. package/dist/chunk-LQB7QLD3.js +288 -0
  54. package/dist/chunk-LQB7QLD3.js.map +1 -0
  55. package/dist/chunk-LUD52ZJF.cjs +726 -0
  56. package/dist/chunk-LUD52ZJF.cjs.map +1 -0
  57. package/dist/{chunk-7UZ5DETZ.js → chunk-MBAG654R.js} +4 -216
  58. package/dist/chunk-MBAG654R.js.map +1 -0
  59. package/dist/chunk-OMP6FAZ6.cjs +183 -0
  60. package/dist/chunk-OMP6FAZ6.cjs.map +1 -0
  61. package/dist/{chunk-WYH4TKS5.js → chunk-PBYRTNQ5.js} +6 -8
  62. package/dist/chunk-PBYRTNQ5.js.map +1 -0
  63. package/dist/chunk-PYREXCZK.js +679 -0
  64. package/dist/chunk-PYREXCZK.js.map +1 -0
  65. package/dist/{chunk-6D22TFLA.cjs → chunk-R3ZECV5P.cjs} +9 -4
  66. package/dist/chunk-R3ZECV5P.cjs.map +1 -0
  67. package/dist/{chunk-P5BOFE5A.js → chunk-RSLA2FJN.js} +28 -183
  68. package/dist/chunk-RSLA2FJN.js.map +1 -0
  69. package/dist/chunk-S46SKHMD.js +173 -0
  70. package/dist/chunk-S46SKHMD.js.map +1 -0
  71. package/dist/chunk-SFXTB7JL.js +190 -0
  72. package/dist/chunk-SFXTB7JL.js.map +1 -0
  73. package/dist/chunk-SGYXYMKZ.cjs +214 -0
  74. package/dist/chunk-SGYXYMKZ.cjs.map +1 -0
  75. package/dist/chunk-UGKYP6F3.cjs +296 -0
  76. package/dist/chunk-UGKYP6F3.cjs.map +1 -0
  77. package/dist/chunk-WB6XDNU7.js +115 -0
  78. package/dist/chunk-WB6XDNU7.js.map +1 -0
  79. package/dist/{chunk-LTPTW2US.cjs → chunk-WE4QIIVN.cjs} +592 -974
  80. package/dist/chunk-WE4QIIVN.cjs.map +1 -0
  81. package/dist/core/index.cjs +144 -626
  82. package/dist/core/index.css +178 -3567
  83. package/dist/core/index.css.map +1 -1
  84. package/dist/core/index.d.cts +940 -902
  85. package/dist/core/index.d.ts +940 -902
  86. package/dist/core/index.js +6 -12
  87. package/dist/i18n/index.cjs +54 -49
  88. package/dist/i18n/index.d.cts +46 -11
  89. package/dist/i18n/index.d.ts +46 -11
  90. package/dist/i18n/index.js +2 -1
  91. package/dist/index-BJ8rBqrO.d.cts +1100 -0
  92. package/dist/index-BxMqCbqE.d.ts +1100 -0
  93. package/dist/index.cjs +507 -1001
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.css +6057 -16713
  96. package/dist/index.css.map +1 -1
  97. package/dist/index.d.cts +306 -21
  98. package/dist/index.d.ts +306 -21
  99. package/dist/index.js +274 -39
  100. package/dist/index.js.map +1 -1
  101. package/dist/marketing/index.cjs +33 -76
  102. package/dist/marketing/index.css +1896 -3234
  103. package/dist/marketing/index.css.map +1 -1
  104. package/dist/marketing/index.d.cts +3 -1351
  105. package/dist/marketing/index.d.ts +3 -1351
  106. package/dist/marketing/index.js +5 -8
  107. package/dist/motion/index.cjs +3 -20
  108. package/dist/motion/index.css +0 -580
  109. package/dist/motion/index.css.map +1 -1
  110. package/dist/motion/index.d.cts +1 -37
  111. package/dist/motion/index.d.ts +1 -37
  112. package/dist/motion/index.js +1 -2
  113. package/dist/nav/index.cjs +10 -35
  114. package/dist/nav/index.css +28 -580
  115. package/dist/nav/index.css.map +1 -1
  116. package/dist/nav/index.d.cts +2 -60
  117. package/dist/nav/index.d.ts +2 -60
  118. package/dist/nav/index.js +1 -2
  119. package/dist/report/index.cjs +1166 -175
  120. package/dist/report/index.cjs.map +1 -1
  121. package/dist/report/index.d.cts +208 -5
  122. package/dist/report/index.d.ts +208 -5
  123. package/dist/report/index.js +1141 -3
  124. package/dist/report/index.js.map +1 -1
  125. package/dist/sections/index.cjs +8 -10
  126. package/dist/sections/index.cjs.map +1 -1
  127. package/dist/sections/index.css +0 -206
  128. package/dist/sections/index.css.map +1 -1
  129. package/dist/sections/index.js +2 -4
  130. package/dist/sections/index.js.map +1 -1
  131. package/dist/social-media/index.cjs +4 -0
  132. package/dist/social-media/index.cjs.map +1 -0
  133. package/dist/social-media/index.d.cts +2 -0
  134. package/dist/social-media/index.d.ts +2 -0
  135. package/dist/social-media/index.js +3 -0
  136. package/dist/social-media/index.js.map +1 -0
  137. package/dist/social-proof/index.cjs +4 -36
  138. package/dist/social-proof/index.css +3 -1106
  139. package/dist/social-proof/index.css.map +1 -1
  140. package/dist/social-proof/index.d.cts +26 -171
  141. package/dist/social-proof/index.d.ts +26 -171
  142. package/dist/social-proof/index.js +1 -5
  143. package/dist/styles/styles.css +657 -2990
  144. package/dist/theme/index.cjs +12 -16
  145. package/dist/theme/index.css +1 -245
  146. package/dist/theme/index.css.map +1 -1
  147. package/dist/theme/index.d.cts +4 -1
  148. package/dist/theme/index.d.ts +4 -1
  149. package/dist/theme/index.js +2 -2
  150. package/dist/web/client/index.cjs +10 -10
  151. package/dist/web/client/index.css +118 -0
  152. package/dist/web/client/index.css.map +1 -1
  153. package/dist/web/client/index.js +2 -2
  154. package/dist/web/index.cjs +10 -10
  155. package/dist/web/index.css +118 -0
  156. package/dist/web/index.css.map +1 -1
  157. package/dist/web/index.js +2 -2
  158. package/package.json +10 -4
  159. package/dist/AppearancePanel-UT57J69V.d.cts +0 -51
  160. package/dist/AppearancePanel-UT57J69V.d.ts +0 -51
  161. package/dist/ExportMenu-A2TLFiVv.d.cts +0 -311
  162. package/dist/ExportMenu-C8qck5AT.d.ts +0 -311
  163. package/dist/Select-BdZmK0Lt.d.cts +0 -66
  164. package/dist/Select-BdZmK0Lt.d.ts +0 -66
  165. package/dist/chart-types-BGVVO-zl.d.cts +0 -208
  166. package/dist/chart-types-BGVVO-zl.d.ts +0 -208
  167. package/dist/charts/index.css +0 -1167
  168. package/dist/charts/index.css.map +0 -1
  169. package/dist/chunk-3BAQDW3V.cjs +0 -1207
  170. package/dist/chunk-3BAQDW3V.cjs.map +0 -1
  171. package/dist/chunk-3NKRFUAR.js +0 -37
  172. package/dist/chunk-3NKRFUAR.js.map +0 -1
  173. package/dist/chunk-3TGSIILM.cjs +0 -201
  174. package/dist/chunk-3TGSIILM.cjs.map +0 -1
  175. package/dist/chunk-4GM5BGBN.cjs +0 -801
  176. package/dist/chunk-4GM5BGBN.cjs.map +0 -1
  177. package/dist/chunk-5LA3T22E.cjs +0 -562
  178. package/dist/chunk-5LA3T22E.cjs.map +0 -1
  179. package/dist/chunk-5SN66B2X.js +0 -2542
  180. package/dist/chunk-5SN66B2X.js.map +0 -1
  181. package/dist/chunk-6D22TFLA.cjs.map +0 -1
  182. package/dist/chunk-6H4DSTXR.js +0 -786
  183. package/dist/chunk-6H4DSTXR.js.map +0 -1
  184. package/dist/chunk-6HKQ5ILL.cjs +0 -1624
  185. package/dist/chunk-6HKQ5ILL.cjs.map +0 -1
  186. package/dist/chunk-7PX2AZ6Y.js +0 -39
  187. package/dist/chunk-7PX2AZ6Y.js.map +0 -1
  188. package/dist/chunk-7UZ5DETZ.js.map +0 -1
  189. package/dist/chunk-B6AVAX4F.js +0 -1415
  190. package/dist/chunk-B6AVAX4F.js.map +0 -1
  191. package/dist/chunk-BJZ2DKS5.cjs.map +0 -1
  192. package/dist/chunk-BUTQSDQH.js +0 -200
  193. package/dist/chunk-BUTQSDQH.js.map +0 -1
  194. package/dist/chunk-C2BCDNAV.js +0 -24
  195. package/dist/chunk-C2BCDNAV.js.map +0 -1
  196. package/dist/chunk-CJ2MKVAF.cjs +0 -46
  197. package/dist/chunk-CJ2MKVAF.cjs.map +0 -1
  198. package/dist/chunk-E7D6EKJ4.cjs +0 -44
  199. package/dist/chunk-E7D6EKJ4.cjs.map +0 -1
  200. package/dist/chunk-ECXBTUH6.cjs.map +0 -1
  201. package/dist/chunk-FAFAP4L5.js +0 -183
  202. package/dist/chunk-FAFAP4L5.js.map +0 -1
  203. package/dist/chunk-G2XGBO5V.cjs +0 -2565
  204. package/dist/chunk-G2XGBO5V.cjs.map +0 -1
  205. package/dist/chunk-GQELL2MF.cjs.map +0 -1
  206. package/dist/chunk-H2KQ3WSH.cjs.map +0 -1
  207. package/dist/chunk-H2Y6BSTL.cjs.map +0 -1
  208. package/dist/chunk-HCZW5AJN.cjs +0 -234
  209. package/dist/chunk-HCZW5AJN.cjs.map +0 -1
  210. package/dist/chunk-HDVAMYSG.js.map +0 -1
  211. package/dist/chunk-HN4PHABT.js +0 -126
  212. package/dist/chunk-HN4PHABT.js.map +0 -1
  213. package/dist/chunk-LTPTW2US.cjs.map +0 -1
  214. package/dist/chunk-MDB2WCRQ.cjs +0 -137
  215. package/dist/chunk-MDB2WCRQ.cjs.map +0 -1
  216. package/dist/chunk-MQRB634A.cjs +0 -34
  217. package/dist/chunk-MQRB634A.cjs.map +0 -1
  218. package/dist/chunk-NN3TUHIH.js +0 -28
  219. package/dist/chunk-NN3TUHIH.js.map +0 -1
  220. package/dist/chunk-OWS2KAXZ.js +0 -701
  221. package/dist/chunk-OWS2KAXZ.js.map +0 -1
  222. package/dist/chunk-P5BOFE5A.js.map +0 -1
  223. package/dist/chunk-PUPSK3DI.cjs +0 -216
  224. package/dist/chunk-PUPSK3DI.cjs.map +0 -1
  225. package/dist/chunk-Q2MFGYTE.cjs +0 -1449
  226. package/dist/chunk-Q2MFGYTE.cjs.map +0 -1
  227. package/dist/chunk-Q75DBVDY.cjs +0 -68
  228. package/dist/chunk-Q75DBVDY.cjs.map +0 -1
  229. package/dist/chunk-QALDZ7WQ.js.map +0 -1
  230. package/dist/chunk-QWE2RNCS.js +0 -1195
  231. package/dist/chunk-QWE2RNCS.js.map +0 -1
  232. package/dist/chunk-RQUFZAZ7.js +0 -1608
  233. package/dist/chunk-RQUFZAZ7.js.map +0 -1
  234. package/dist/chunk-SICKWUWB.js.map +0 -1
  235. package/dist/chunk-TCFC7XTB.js +0 -212
  236. package/dist/chunk-TCFC7XTB.js.map +0 -1
  237. package/dist/chunk-UTVXGAQP.cjs +0 -2437
  238. package/dist/chunk-UTVXGAQP.cjs.map +0 -1
  239. package/dist/chunk-UVEMY3FQ.cjs +0 -717
  240. package/dist/chunk-UVEMY3FQ.cjs.map +0 -1
  241. package/dist/chunk-VFJZQQZU.js.map +0 -1
  242. package/dist/chunk-WH7PYHZY.cjs +0 -35
  243. package/dist/chunk-WH7PYHZY.cjs.map +0 -1
  244. package/dist/chunk-WYH4TKS5.js.map +0 -1
  245. package/dist/chunk-XEX2AEZK.cjs.map +0 -1
  246. package/dist/chunk-XPTVHPCN.js +0 -2320
  247. package/dist/chunk-XPTVHPCN.js.map +0 -1
  248. package/dist/chunk-XWPDRMZG.js +0 -62
  249. package/dist/chunk-XWPDRMZG.js.map +0 -1
  250. package/dist/chunk-Y26OHHMX.js.map +0 -1
  251. package/dist/chunk-YJ6C3EKW.js.map +0 -1
  252. package/dist/motion-C651Ry6d.d.cts +0 -832
  253. package/dist/motion-C651Ry6d.d.ts +0 -832
  254. package/dist/report/index.css +0 -1239
  255. package/dist/report/index.css.map +0 -1
  256. /package/dist/{chunk-6UNG76Y2.js.map → chunk-2VVRZBUR.cjs.map} +0 -0
  257. /package/dist/{chunk-YTYDQBVY.cjs.map → chunk-K526GN7P.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
  :root {
3
3
  --color-accent: rgb(var(--accent-rgb));
4
4
  --color-accent-secondary: rgb(var(--accent-secondary-rgb));
5
- --void-grid-size: 80px;
5
+ --void-grid-size: var(--grid-cell-web);
6
6
  --void-grid-grain-opacity: 0.025;
7
7
  --void-float-distance: 24px;
8
8
  --density-multiplier: 1;
@@ -30,6 +30,13 @@
30
30
  Monaco,
31
31
  "Cascadia Code",
32
32
  monospace;
33
+ --font-anton-source: "Anton";
34
+ --font-anton-fallback:
35
+ -apple-system,
36
+ BlinkMacSystemFont,
37
+ "Helvetica Neue",
38
+ sans-serif;
39
+ --font-family-display: var(--font-anton-source), var(--font-anton-fallback);
33
40
  --font-size-2xs: 0.625rem;
34
41
  --font-size-xs: 0.75rem;
35
42
  --font-size-sm: 0.875rem;
@@ -121,6 +128,58 @@
121
128
  --illus-layout-gap: 80px;
122
129
  --illus-layout-gap-sm: 48px;
123
130
  --illus-layout-padding: 24px;
131
+ --embed-min-height-mobile: 900px;
132
+ --embed-min-height-tablet: 860px;
133
+ --embed-min-height-desktop: 830px;
134
+ --aurora-pink-raw: oklch(0.65 0.25 5);
135
+ --aurora-pink-low: oklch(0.65 0.175 5);
136
+ --aurora-pink-high: oklch(0.65 0.30 5);
137
+ --aurora-gold-raw: oklch(0.78 0.18 85);
138
+ --aurora-gold-low: oklch(0.78 0.126 85);
139
+ --aurora-gold-high: oklch(0.78 0.216 85);
140
+ --aurora-plum-raw: oklch(0.45 0.22 320);
141
+ --aurora-plum-low: oklch(0.45 0.154 320);
142
+ --aurora-plum-high: oklch(0.45 0.264 320);
143
+ --aurora-primary: var(--aurora-pink-raw);
144
+ --aurora-secondary: var(--aurora-gold-raw);
145
+ --aurora-tertiary: var(--aurora-plum-raw);
146
+ --vignette-radial-stops:
147
+ transparent 0%,
148
+ transparent 50%,
149
+ rgba(0,0,0,0.6) 100%;
150
+ --vignette-gradient: radial-gradient(ellipse at center, var(--vignette-radial-stops));
151
+ --vignette-light:
152
+ radial-gradient(
153
+ ellipse at center,
154
+ transparent 0%,
155
+ transparent 50%,
156
+ rgba(0,0,0,0.3) 100%);
157
+ --vignette-base:
158
+ radial-gradient(
159
+ ellipse at center,
160
+ transparent 0%,
161
+ transparent 50%,
162
+ rgba(0,0,0,0.6) 100%);
163
+ --vignette-heavy:
164
+ radial-gradient(
165
+ ellipse at center,
166
+ transparent 0%,
167
+ transparent 50%,
168
+ rgba(0,0,0,0.85) 100%);
169
+ --grid-cell-web: 64px;
170
+ --grid-cell-social-1200: 120px;
171
+ --grid-cell-services-1000: 120px;
172
+ --grid-line-color: rgba(255,255,255,0.04);
173
+ --grid-overlay-mask:
174
+ linear-gradient(
175
+ to bottom,
176
+ transparent 0%,
177
+ rgba(0,0,0,0.5) 8%,
178
+ rgba(0,0,0,0.5) 92%,
179
+ transparent 100%);
180
+ --glass-1: var(--glass-base);
181
+ --glass-2: var(--glass-elevated);
182
+ --glass-3: var(--glass-heavy);
124
183
  }
125
184
  :root,
126
185
  :root[data-theme=dark] {
@@ -137,6 +196,8 @@
137
196
  --glass-base: rgba(255, 255, 255, 0.06);
138
197
  --glass-base-hover: rgba(255, 255, 255, 0.09);
139
198
  --glass-base-active: rgba(255, 255, 255, 0.12);
199
+ --glass-elevated: rgba(255, 255, 255, 0.10);
200
+ --glass-heavy: rgba(255, 255, 255, 0.16);
140
201
  --glass-blur: 40px;
141
202
  --glass-saturate: 160%;
142
203
  --glass-brightness: 90%;
@@ -248,6 +309,8 @@
248
309
  --glass-base: rgba(255, 255, 255, 0.08);
249
310
  --glass-base-hover: rgba(255, 255, 255, 0.12);
250
311
  --glass-base-active: rgba(255, 255, 255, 0.16);
312
+ --glass-elevated: rgba(255, 255, 255, 0.12);
313
+ --glass-heavy: rgba(255, 255, 255, 0.20);
251
314
  --glass-backdrop: blur(40px) saturate(100%) brightness(70%);
252
315
  --glass-backdrop-light: blur(20px) saturate(100%) brightness(80%);
253
316
  --glass-backdrop-heavy: blur(60px) saturate(100%) brightness(60%);
@@ -305,6 +368,8 @@
305
368
  --glass-base: rgba(255, 255, 255, 0.65);
306
369
  --glass-base-hover: rgba(255, 255, 255, 0.75);
307
370
  --glass-base-active: rgba(255, 255, 255, 0.85);
371
+ --glass-elevated: rgba(255, 255, 255, 0.75);
372
+ --glass-heavy: rgba(255, 255, 255, 0.85);
308
373
  --glass-blur: 24px;
309
374
  --glass-saturate: 180%;
310
375
  --glass-brightness: 110%;
@@ -416,6 +481,8 @@
416
481
  --glass-base: rgba(255, 255, 255, 0.9);
417
482
  --glass-base-hover: rgba(255, 255, 255, 0.95);
418
483
  --glass-base-active: rgba(255, 255, 255, 1);
484
+ --glass-elevated: rgba(255, 255, 255, 0.90);
485
+ --glass-heavy: rgba(255, 255, 255, 1);
419
486
  --glass-blur: 16px;
420
487
  --glass-saturate: 100%;
421
488
  --glass-brightness: 100%;
@@ -751,6 +818,15 @@ a:hover {
751
818
  scrollbar-width: thin;
752
819
  scrollbar-color: var(--surface-alpha-2) transparent;
753
820
  }
821
+ :root {
822
+ --glass-white-95: rgba(255, 255, 255, 0.95);
823
+ --glass-white-98: rgba(255, 255, 255, 0.98);
824
+ --glass-white-border-low: rgba(255, 255, 255, 0.16);
825
+ --glass-white-border-mid: rgba(255, 255, 255, 0.22);
826
+ --glass-white-alpha-10: rgba(255, 255, 255, 0.10);
827
+ --glass-white-alpha-20: rgba(255, 255, 255, 0.20);
828
+ --glass-white-alpha-30: rgba(255, 255, 255, 0.30);
829
+ }
754
830
  @media (prefers-reduced-motion: reduce) {
755
831
  *,
756
832
  *::before,
@@ -985,6 +1061,112 @@ a:hover {
985
1061
  background: var(--fallback-surface);
986
1062
  }
987
1063
  }
1064
+ @supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
1065
+ .glass--tier-1 {
1066
+ background: var(--glass-1);
1067
+ backdrop-filter: blur(20px) saturate(160%);
1068
+ -webkit-backdrop-filter: blur(20px) saturate(160%);
1069
+ }
1070
+ .glass--tier-2 {
1071
+ background: var(--glass-2);
1072
+ backdrop-filter: blur(28px) saturate(170%);
1073
+ -webkit-backdrop-filter: blur(28px) saturate(170%);
1074
+ }
1075
+ .glass--tier-3 {
1076
+ background: var(--glass-3);
1077
+ backdrop-filter: blur(36px) saturate(180%);
1078
+ -webkit-backdrop-filter: blur(36px) saturate(180%);
1079
+ }
1080
+ @supports (backdrop-filter: blur(40px)) {
1081
+ @media (prefers-color-scheme: dark) {
1082
+ .glass--tier-1.glass--enhanced {
1083
+ backdrop-filter: blur(40px) saturate(180%);
1084
+ -webkit-backdrop-filter: blur(40px) saturate(180%);
1085
+ }
1086
+ .glass--tier-2.glass--enhanced {
1087
+ backdrop-filter: blur(48px) saturate(190%);
1088
+ -webkit-backdrop-filter: blur(48px) saturate(190%);
1089
+ }
1090
+ .glass--tier-3.glass--enhanced {
1091
+ backdrop-filter: blur(56px) saturate(200%);
1092
+ -webkit-backdrop-filter: blur(56px) saturate(200%);
1093
+ }
1094
+ }
1095
+ }
1096
+ }
1097
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
1098
+ .glass--tier-1,
1099
+ .glass--tier-2,
1100
+ .glass--tier-3 {
1101
+ background: rgba(20, 20, 24, 0.92);
1102
+ }
1103
+ }
1104
+ @media (prefers-reduced-motion: reduce), (prefers-reduced-transparency: reduce) {
1105
+ .glass--tier-1,
1106
+ .glass--tier-2,
1107
+ .glass--tier-3 {
1108
+ backdrop-filter: none;
1109
+ -webkit-backdrop-filter: none;
1110
+ background: rgba(20, 20, 24, 0.95);
1111
+ }
1112
+ }
1113
+
1114
+ /* src/styles/brand-gradients.css */
1115
+ .ds-grad--aurora-headline {
1116
+ background-image:
1117
+ linear-gradient(
1118
+ 135deg,
1119
+ var(--aurora-primary),
1120
+ var(--aurora-secondary));
1121
+ background-clip: text;
1122
+ -webkit-background-clip: text;
1123
+ color: transparent;
1124
+ -webkit-text-fill-color: transparent;
1125
+ }
1126
+ .ds-grad--brand-pink-glow {
1127
+ background-image:
1128
+ linear-gradient(
1129
+ 135deg,
1130
+ var(--brand-pink),
1131
+ var(--brand-pink-glow));
1132
+ background-clip: text;
1133
+ -webkit-background-clip: text;
1134
+ color: transparent;
1135
+ -webkit-text-fill-color: transparent;
1136
+ }
1137
+ .ds-grad--plum-deep {
1138
+ background-image:
1139
+ linear-gradient(
1140
+ 135deg,
1141
+ var(--aurora-plum-raw),
1142
+ var(--aurora-plum-low));
1143
+ background-clip: text;
1144
+ -webkit-background-clip: text;
1145
+ color: transparent;
1146
+ -webkit-text-fill-color: transparent;
1147
+ }
1148
+ .ds-grad--pipeline-flow {
1149
+ background-image:
1150
+ linear-gradient(
1151
+ 135deg,
1152
+ var(--aurora-primary) 0%,
1153
+ var(--aurora-secondary) 50%,
1154
+ var(--aurora-tertiary) 100%);
1155
+ background-clip: text;
1156
+ -webkit-background-clip: text;
1157
+ color: transparent;
1158
+ -webkit-text-fill-color: transparent;
1159
+ }
1160
+ @media (forced-colors: active) {
1161
+ .ds-grad--aurora-headline,
1162
+ .ds-grad--brand-pink-glow,
1163
+ .ds-grad--plum-deep,
1164
+ .ds-grad--pipeline-flow {
1165
+ color: CanvasText;
1166
+ background: none;
1167
+ -webkit-text-fill-color: CanvasText;
1168
+ }
1169
+ }
988
1170
 
989
1171
  /* src/components/VoidBackground/VoidBackground.css */
990
1172
  .void {
@@ -1053,7 +1235,7 @@ a:hover {
1053
1235
  to bottom,
1054
1236
  var(--void-grid-color) 1px,
1055
1237
  transparent 1px);
1056
- background-size: var(--void-grid-size) var(--void-grid-size);
1238
+ background-size: var(--grid-cell-web) var(--grid-cell-web);
1057
1239
  mask-image:
1058
1240
  radial-gradient(
1059
1241
  ellipse 70% 60% at 50% 40%,
@@ -1412,197 +1594,133 @@ a:hover {
1412
1594
  var(--glass-highlight-light) 0%,
1413
1595
  rgba(var(--status-error-rgb, 239, 68, 68), 0.08) 100%);
1414
1596
  }
1415
- .ds-button--loading {
1416
- position: relative;
1417
- cursor: not-allowed;
1418
- opacity: 0.8;
1419
- }
1420
- .ds-button__spinner {
1421
- position: absolute;
1422
- top: 50%;
1423
- left: 50%;
1424
- transform: translate(-50%, -50%);
1425
- animation: ds-button-spin 1s linear infinite;
1426
- }
1427
- .ds-button__content {
1428
- display: inline-flex;
1429
- align-items: center;
1430
- justify-content: center;
1431
- gap: inherit;
1432
- visibility: visible;
1433
- }
1434
- .ds-button__content--hidden {
1435
- visibility: hidden;
1436
- }
1437
- @keyframes ds-button-spin {
1438
- from {
1439
- transform: translate(-50%, -50%) rotate(0deg);
1440
- }
1441
- to {
1442
- transform: translate(-50%, -50%) rotate(360deg);
1443
- }
1444
- }
1445
-
1446
- /* src/components/TextField/TextField.css */
1447
- .ds-textfield {
1448
- display: flex;
1449
- flex-direction: column;
1450
- gap: var(--space-2);
1451
- }
1452
- .ds-textfield__label {
1453
- font-family: var(--font-family);
1454
- font-size: var(--font-size-sm);
1455
- font-weight: var(--font-weight-medium);
1456
- color: var(--text-secondary);
1457
- transition: color var(--transition-base);
1458
- }
1459
- .ds-textfield:focus-within .ds-textfield__label {
1460
- color: var(--text-primary);
1461
- }
1462
- .ds-textfield__input {
1463
- position: relative;
1464
- font-family: var(--font-family);
1465
- font-size: var(--font-size-base);
1466
- padding: var(--space-3) var(--space-4);
1467
- border: none;
1468
- border-radius: var(--radius-button);
1597
+ .ds-button--aurora-primary {
1598
+ background:
1599
+ linear-gradient(
1600
+ 135deg,
1601
+ var(--aurora-pink-raw),
1602
+ var(--aurora-gold-raw));
1469
1603
  color: var(--text-primary);
1470
- outline: none;
1471
- width: 100%;
1472
- box-sizing: border-box;
1473
- background: var(--glass-base-active);
1474
- backdrop-filter: blur(20px) saturate(140%);
1475
- -webkit-backdrop-filter: blur(20px) saturate(140%);
1476
- box-shadow: var(--shadow-md), var(--shadow-inset-border-subtle);
1477
- transition: background var(--transition-glass), box-shadow var(--transition-glass);
1604
+ box-shadow:
1605
+ var(--shadow-interactive-rest),
1606
+ var(--glass-shadow-inner),
1607
+ inset 0 0 0 1px var(--glass-white-border-low),
1608
+ 0 0 30px rgba(var(--brand-pink-rgb, 221, 56, 84), 0.25);
1609
+ backdrop-filter: none;
1610
+ -webkit-backdrop-filter: none;
1478
1611
  }
1479
- .ds-textfield__input::before {
1480
- content: "";
1481
- position: absolute;
1482
- inset: 0;
1483
- border-radius: inherit;
1484
- padding: var(--space-px);
1612
+ .ds-button--aurora-primary::before {
1485
1613
  background:
1486
1614
  linear-gradient(
1487
1615
  180deg,
1488
- var(--rim-light-top) 0%,
1489
- var(--rim-light-bottom) 100%);
1490
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1491
- mask-composite: exclude;
1492
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1493
- -webkit-mask-composite: xor;
1494
- pointer-events: none;
1616
+ var(--glass-highlight-strong) 0%,
1617
+ rgba(var(--brand-pink-rgb, 221, 56, 84), 0.2) 100%);
1495
1618
  }
1496
- .ds-textfield__input-wrapper {
1497
- position: relative;
1619
+ .ds-button--aurora-primary:hover:not(:disabled) {
1620
+ background:
1621
+ linear-gradient(
1622
+ 135deg,
1623
+ var(--aurora-pink-high),
1624
+ var(--aurora-gold-high));
1625
+ box-shadow:
1626
+ var(--shadow-interactive-hover),
1627
+ var(--glass-shadow-inner),
1628
+ inset 0 0 0 1px var(--glass-white-border-mid),
1629
+ 0 0 40px rgba(var(--brand-pink-rgb, 221, 56, 84), 0.35);
1630
+ transform: translateY(-1px);
1498
1631
  }
1499
- .ds-textfield__input-wrapper::before {
1500
- content: "";
1501
- position: absolute;
1502
- inset: 0;
1503
- border-radius: var(--radius-button);
1504
- padding: var(--space-px);
1632
+ .ds-button--aurora-primary:hover:not(:disabled)::before {
1505
1633
  background:
1506
1634
  linear-gradient(
1507
1635
  180deg,
1508
- var(--rim-light-top) 0%,
1509
- var(--rim-light-bottom) 100%);
1510
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1511
- mask-composite: exclude;
1512
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1513
- -webkit-mask-composite: xor;
1514
- pointer-events: none;
1515
- transition: background var(--transition-glass);
1516
- }
1517
- .ds-textfield__input::placeholder {
1518
- color: var(--text-tertiary);
1636
+ var(--glass-highlight-bright) 0%,
1637
+ rgba(var(--brand-pink-rgb, 221, 56, 84), 0.25) 100%);
1519
1638
  }
1520
- .ds-textfield__input:hover:not(:disabled):not(:focus) {
1521
- background: var(--glass-base-hover);
1639
+ .ds-button--aurora-primary:active:not(:disabled) {
1640
+ transform: translateY(0);
1641
+ box-shadow:
1642
+ var(--shadow-interactive-active),
1643
+ var(--glass-shadow-inner),
1644
+ inset 0 0 0 1px var(--glass-white-border-low),
1645
+ 0 0 20px rgba(var(--brand-pink-rgb, 221, 56, 84), 0.2);
1522
1646
  }
1523
- .ds-textfield__input-wrapper:hover:not(:has(:disabled)):not(:has(:focus))::before {
1647
+ .ds-button--aurora-secondary {
1524
1648
  background:
1525
1649
  linear-gradient(
1526
- 180deg,
1527
- var(--rim-light-hover-top) 0%,
1528
- var(--rim-light-hover-bottom) 100%);
1529
- }
1530
- .ds-textfield__input:focus {
1531
- background: var(--glass-base-hover);
1650
+ 135deg,
1651
+ var(--aurora-plum-raw),
1652
+ var(--aurora-pink-raw));
1653
+ color: var(--text-primary);
1532
1654
  box-shadow:
1533
- var(--shadow-lg),
1655
+ var(--shadow-interactive-rest),
1534
1656
  var(--glass-shadow-inner),
1535
- 0 0 0 2px rgba(var(--brand-pink-rgb), 0.3);
1657
+ inset 0 0 0 1px var(--glass-white-border-low),
1658
+ 0 0 24px rgba(var(--brand-pink-rgb, 221, 56, 84), 0.15);
1659
+ backdrop-filter: none;
1660
+ -webkit-backdrop-filter: none;
1536
1661
  }
1537
- .ds-textfield__input-wrapper:has(:focus)::before {
1662
+ .ds-button--aurora-secondary::before {
1538
1663
  background:
1539
1664
  linear-gradient(
1540
1665
  180deg,
1541
- rgba(var(--brand-pink-rgb), 0.4) 0%,
1542
- rgba(var(--brand-pink-rgb), 0.1) 100%);
1543
- }
1544
- .ds-textfield__input:disabled {
1545
- opacity: 0.4;
1546
- cursor: not-allowed;
1547
- }
1548
- .ds-textfield__input--adorned {
1549
- padding-right: var(--space-12);
1550
- }
1551
- .ds-textfield__adornment {
1552
- position: absolute;
1553
- right: var(--space-2);
1554
- top: 50%;
1555
- transform: translateY(-50%);
1556
- display: flex;
1557
- align-items: center;
1558
- justify-content: center;
1559
- z-index: 2;
1666
+ var(--glass-highlight-medium) 0%,
1667
+ rgba(var(--brand-pink-rgb, 221, 56, 84), 0.15) 100%);
1560
1668
  }
1561
- .ds-textfield__input--error {
1669
+ .ds-button--aurora-secondary:hover:not(:disabled) {
1670
+ background:
1671
+ linear-gradient(
1672
+ 135deg,
1673
+ var(--aurora-plum-high),
1674
+ var(--aurora-pink-high));
1562
1675
  box-shadow:
1563
- var(--shadow-md),
1564
- var(--shadow-inset-border-error),
1565
- 0 0 0 1px rgba(var(--status-error-rgb), 0.5);
1676
+ var(--shadow-interactive-hover),
1677
+ var(--glass-shadow-inner),
1678
+ inset 0 0 0 1px var(--glass-white-border-mid),
1679
+ 0 0 32px rgba(var(--brand-pink-rgb, 221, 56, 84), 0.25);
1680
+ transform: translateY(-1px);
1566
1681
  }
1567
- .ds-textfield__input-wrapper:has(.ds-textfield__input--error)::before {
1682
+ .ds-button--aurora-secondary:hover:not(:disabled)::before {
1568
1683
  background:
1569
1684
  linear-gradient(
1570
1685
  180deg,
1571
- rgba(var(--status-error-rgb), 0.4) 0%,
1572
- rgba(var(--status-error-rgb), 0.1) 100%);
1686
+ var(--glass-highlight-strong) 0%,
1687
+ rgba(var(--brand-pink-rgb, 221, 56, 84), 0.2) 100%);
1573
1688
  }
1574
- .ds-textfield__input--error:focus {
1689
+ .ds-button--aurora-secondary:active:not(:disabled) {
1690
+ transform: translateY(0);
1575
1691
  box-shadow:
1576
- var(--shadow-lg),
1692
+ var(--shadow-interactive-active),
1577
1693
  var(--glass-shadow-inner),
1578
- 0 0 0 2px rgba(var(--status-error-rgb), 0.4);
1694
+ inset 0 0 0 1px var(--glass-white-border-low);
1579
1695
  }
1580
- .ds-textfield__helper {
1581
- font-family: var(--font-family);
1582
- font-size: var(--font-size-xs);
1583
- color: var(--text-tertiary);
1696
+ .ds-button--loading {
1697
+ position: relative;
1698
+ cursor: not-allowed;
1699
+ opacity: 0.8;
1584
1700
  }
1585
- .ds-textfield__helper--error {
1586
- color: var(--status-error);
1701
+ .ds-button__spinner {
1702
+ position: absolute;
1703
+ top: 50%;
1704
+ left: 50%;
1705
+ transform: translate(-50%, -50%);
1706
+ animation: ds-button-spin 1s linear infinite;
1587
1707
  }
1588
- @media (prefers-contrast: more) {
1589
- .ds-textfield__input {
1590
- background: var(--hc-surface-input);
1591
- border: 1px solid var(--hc-border);
1592
- }
1593
- .ds-textfield__input-wrapper::before {
1594
- display: none;
1595
- }
1596
- .ds-textfield__input:focus {
1597
- border-color: var(--brand-pink);
1598
- }
1599
- .ds-textfield__input--error {
1600
- border-color: var(--status-error);
1601
- }
1708
+ .ds-button__content {
1709
+ display: inline-flex;
1710
+ align-items: center;
1711
+ justify-content: center;
1712
+ gap: inherit;
1713
+ visibility: visible;
1602
1714
  }
1603
- @supports not (backdrop-filter: blur(1px)) {
1604
- .ds-textfield__input {
1605
- background: var(--fallback-surface);
1715
+ .ds-button__content--hidden {
1716
+ visibility: hidden;
1717
+ }
1718
+ @keyframes ds-button-spin {
1719
+ from {
1720
+ transform: translate(-50%, -50%) rotate(0deg);
1721
+ }
1722
+ to {
1723
+ transform: translate(-50%, -50%) rotate(360deg);
1606
1724
  }
1607
1725
  }
1608
1726
 
@@ -1885,36 +2003,21 @@ a:hover {
1885
2003
  }
1886
2004
  }
1887
2005
 
1888
- /* src/components/Dialog/Dialog.css */
1889
- .ds-dialog__backdrop {
1890
- position: fixed;
1891
- inset: 0;
1892
- background: rgba(var(--void-base-rgb), 0.8);
1893
- backdrop-filter: blur(8px) saturate(120%);
1894
- -webkit-backdrop-filter: blur(8px) saturate(120%);
1895
- animation: ds-backdrop-fade-in 0.25s ease-out;
1896
- z-index: var(--z-modal-backdrop);
1897
- }
1898
- .ds-dialog__content {
2006
+ /* src/components/Sidebar/Sidebar.css */
2007
+ .ds-sidebar {
1899
2008
  position: fixed;
1900
- top: 50%;
1901
- left: 50%;
1902
- transform: translate(-50%, -50%);
1903
- width: calc(100vw - var(--float-distance) * 2);
1904
- max-width: 480px;
1905
- max-height: calc(100vh - var(--float-distance) * 2);
1906
- overflow-y: auto;
1907
- z-index: var(--z-modal);
1908
- outline: none;
2009
+ top: var(--float-distance);
2010
+ bottom: var(--float-distance);
2011
+ width: var(--sidebar-width, 280px);
2012
+ z-index: var(--z-glass-panel);
1909
2013
  background: var(--glass-base);
1910
2014
  backdrop-filter: var(--glass-backdrop);
1911
2015
  -webkit-backdrop-filter: var(--glass-backdrop);
1912
2016
  border-radius: var(--radius-panel);
1913
- padding: var(--space-8);
1914
- box-shadow: var(--shadow-xl), var(--glass-shadow-inner);
1915
- animation: ds-dialog-scale-in 0.25s cubic-bezier(0.16, 1, 0.3, 1);
2017
+ box-shadow: var(--glass-shadow-combined);
2018
+ transition: transform var(--transition-slow), opacity var(--transition-slow);
1916
2019
  }
1917
- .ds-dialog__content::before {
2020
+ .ds-sidebar::before {
1918
2021
  content: "";
1919
2022
  position: absolute;
1920
2023
  inset: 0;
@@ -1923,289 +2026,43 @@ a:hover {
1923
2026
  background:
1924
2027
  linear-gradient(
1925
2028
  180deg,
1926
- var(--rim-light-hover-top) 0%,
1927
- var(--rim-light-top) 100%);
2029
+ var(--rim-light-top) 0%,
2030
+ var(--rim-light-bottom) 100%);
1928
2031
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1929
2032
  mask-composite: exclude;
1930
2033
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1931
2034
  -webkit-mask-composite: xor;
1932
2035
  pointer-events: none;
1933
2036
  }
1934
- .ds-dialog__header {
2037
+ .ds-sidebar--left {
2038
+ left: var(--float-distance);
2039
+ }
2040
+ .ds-sidebar--right {
2041
+ right: var(--float-distance);
2042
+ }
2043
+ .ds-sidebar--collapsed.ds-sidebar--left {
2044
+ transform: translateX(calc(-100% - var(--float-distance)));
2045
+ }
2046
+ .ds-sidebar--collapsed.ds-sidebar--right {
2047
+ transform: translateX(calc(100% + var(--float-distance)));
2048
+ }
2049
+ .ds-sidebar__content {
1935
2050
  display: flex;
1936
2051
  flex-direction: column;
1937
- gap: var(--space-2);
1938
- margin-bottom: var(--space-6);
2052
+ height: 100%;
2053
+ padding: var(--space-4);
2054
+ overflow-y: auto;
2055
+ overflow-x: hidden;
1939
2056
  }
1940
- .ds-dialog__header .ds-dialog__title {
1941
- margin: 0;
2057
+ .ds-sidebar__content::-webkit-scrollbar {
2058
+ width: 6px;
1942
2059
  }
1943
- .ds-dialog__header .ds-dialog__description {
1944
- margin: 0;
2060
+ .ds-sidebar__content::-webkit-scrollbar-track {
2061
+ background: transparent;
1945
2062
  }
1946
- .ds-dialog__title {
1947
- margin: 0 0 var(--space-2);
1948
- font-family: var(--font-family);
1949
- font-size: var(--font-size-xl);
1950
- font-weight: var(--font-weight-semibold);
1951
- color: var(--text-primary);
1952
- line-height: var(--line-height-tight);
1953
- }
1954
- .ds-dialog__description {
1955
- margin: 0 0 var(--space-6);
1956
- font-family: var(--font-family);
1957
- font-size: var(--font-size-base);
1958
- color: var(--text-secondary);
1959
- line-height: var(--line-height-normal);
1960
- }
1961
- .ds-dialog__close {
1962
- position: absolute;
1963
- top: var(--space-4);
1964
- right: var(--space-4);
1965
- width: 2rem;
1966
- height: 2rem;
1967
- display: flex;
1968
- align-items: center;
1969
- justify-content: center;
1970
- border: none;
1971
- cursor: pointer;
1972
- color: var(--text-secondary);
1973
- background: var(--glass-base);
1974
- backdrop-filter: blur(12px);
1975
- -webkit-backdrop-filter: blur(12px);
1976
- border-radius: var(--radius-badge);
1977
- transition: background var(--transition-glass), color var(--transition-glass);
1978
- }
1979
- .ds-dialog__close:hover {
1980
- background: var(--glass-base-hover);
1981
- color: var(--text-primary);
1982
- }
1983
- .ds-dialog__close:focus-visible {
1984
- box-shadow: var(--focus-ring);
1985
- outline: none;
1986
- }
1987
- .ds-dialog__footer {
1988
- display: flex;
1989
- justify-content: flex-end;
1990
- gap: var(--space-3);
1991
- margin-top: var(--space-6);
1992
- }
1993
- @keyframes ds-backdrop-fade-in {
1994
- from {
1995
- opacity: 0;
1996
- }
1997
- to {
1998
- opacity: 1;
1999
- }
2000
- }
2001
- @keyframes ds-dialog-scale-in {
2002
- from {
2003
- opacity: 0;
2004
- transform: translate(-50%, -48%) scale(0.96);
2005
- }
2006
- to {
2007
- opacity: 1;
2008
- transform: translate(-50%, -50%) scale(1);
2009
- }
2010
- }
2011
- .ds-dialog__backdrop[data-exiting] {
2012
- animation: ds-backdrop-fade-out 0.2s ease-in forwards;
2013
- }
2014
- .ds-dialog__content[data-exiting] {
2015
- animation: ds-dialog-scale-out 0.2s ease-in forwards;
2016
- }
2017
- @keyframes ds-backdrop-fade-out {
2018
- from {
2019
- opacity: 1;
2020
- }
2021
- to {
2022
- opacity: 0;
2023
- }
2024
- }
2025
- @keyframes ds-dialog-scale-out {
2026
- from {
2027
- opacity: 1;
2028
- transform: translate(-50%, -50%) scale(1);
2029
- }
2030
- to {
2031
- opacity: 0;
2032
- transform: translate(-50%, -48%) scale(0.96);
2033
- }
2034
- }
2035
- .ds-dialog__content--sm {
2036
- max-width: 360px;
2037
- padding: var(--space-6);
2038
- }
2039
- .ds-dialog__content--lg {
2040
- max-width: 640px;
2041
- }
2042
- .ds-dialog__content--xl {
2043
- max-width: 800px;
2044
- }
2045
- .ds-dialog__content--fullscreen {
2046
- max-width: calc(100vw - var(--float-distance) * 2);
2047
- max-height: calc(100vh - var(--float-distance) * 2);
2048
- width: calc(100vw - var(--float-distance) * 2);
2049
- height: calc(100vh - var(--float-distance) * 2);
2050
- }
2051
- @media (prefers-contrast: more) {
2052
- .ds-dialog__backdrop {
2053
- background: var(--overlay-backdrop-heavy);
2054
- backdrop-filter: none;
2055
- }
2056
- .ds-dialog__content {
2057
- background: var(--hc-surface);
2058
- border: 1px solid var(--hc-border);
2059
- }
2060
- .ds-dialog__content::before {
2061
- display: none;
2062
- }
2063
- }
2064
- @media (prefers-reduced-motion: reduce) {
2065
- .ds-dialog__backdrop,
2066
- .ds-dialog__content {
2067
- animation: none;
2068
- }
2069
- }
2070
- @supports not (backdrop-filter: blur(1px)) {
2071
- .ds-dialog__backdrop {
2072
- background: var(--fallback-backdrop);
2073
- }
2074
- .ds-dialog__content {
2075
- background: var(--fallback-surface);
2076
- }
2077
- }
2078
-
2079
- /* src/components/Tooltip/Tooltip.css */
2080
- .ds-tooltip__content {
2081
- position: relative;
2082
- font-family: var(--font-family);
2083
- font-size: var(--font-size-sm);
2084
- color: var(--text-primary);
2085
- padding: var(--space-2) var(--space-3);
2086
- border-radius: var(--radius-badge);
2087
- max-width: 280px;
2088
- z-index: var(--z-tooltip);
2089
- background: var(--glass-base-hover);
2090
- backdrop-filter: blur(24px) saturate(160%) brightness(90%);
2091
- -webkit-backdrop-filter: blur(24px) saturate(160%) brightness(90%);
2092
- box-shadow: var(--glass-shadow-outer), var(--glass-shadow-inner);
2093
- animation: ds-tooltip-fade-in 0.15s ease-out;
2094
- }
2095
- .ds-tooltip__content::before {
2096
- content: "";
2097
- position: absolute;
2098
- inset: 0;
2099
- border-radius: inherit;
2100
- padding: var(--space-px);
2101
- background:
2102
- linear-gradient(
2103
- 180deg,
2104
- var(--rim-light-hover-top) 0%,
2105
- var(--rim-light-top) 100%);
2106
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2107
- mask-composite: exclude;
2108
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2109
- -webkit-mask-composite: xor;
2110
- pointer-events: none;
2111
- }
2112
- .ds-tooltip__arrow {
2113
- width: 12px;
2114
- height: 6px;
2115
- fill: var(--glass-base-hover);
2116
- filter: drop-shadow(var(--shadow-md));
2117
- }
2118
- @keyframes ds-tooltip-fade-in {
2119
- from {
2120
- opacity: 0;
2121
- transform: scale(0.96);
2122
- }
2123
- to {
2124
- opacity: 1;
2125
- transform: scale(1);
2126
- }
2127
- }
2128
- @media (prefers-contrast: more) {
2129
- .ds-tooltip__content {
2130
- background: var(--hc-surface);
2131
- border: 1px solid var(--hc-border-strong);
2132
- backdrop-filter: none;
2133
- }
2134
- .ds-tooltip__content::before {
2135
- display: none;
2136
- }
2137
- }
2138
- @media (prefers-reduced-motion: reduce) {
2139
- .ds-tooltip__content {
2140
- animation: none;
2141
- }
2142
- }
2143
- @supports not (backdrop-filter: blur(1px)) {
2144
- .ds-tooltip__content {
2145
- background: var(--fallback-surface);
2146
- }
2147
- }
2148
-
2149
- /* src/components/Sidebar/Sidebar.css */
2150
- .ds-sidebar {
2151
- position: fixed;
2152
- top: var(--float-distance);
2153
- bottom: var(--float-distance);
2154
- width: var(--sidebar-width, 280px);
2155
- z-index: var(--z-glass-panel);
2156
- background: var(--glass-base);
2157
- backdrop-filter: var(--glass-backdrop);
2158
- -webkit-backdrop-filter: var(--glass-backdrop);
2159
- border-radius: var(--radius-panel);
2160
- box-shadow: var(--glass-shadow-combined);
2161
- transition: transform var(--transition-slow), opacity var(--transition-slow);
2162
- }
2163
- .ds-sidebar::before {
2164
- content: "";
2165
- position: absolute;
2166
- inset: 0;
2167
- border-radius: inherit;
2168
- padding: var(--space-px);
2169
- background:
2170
- linear-gradient(
2171
- 180deg,
2172
- var(--rim-light-top) 0%,
2173
- var(--rim-light-bottom) 100%);
2174
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2175
- mask-composite: exclude;
2176
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2177
- -webkit-mask-composite: xor;
2178
- pointer-events: none;
2179
- }
2180
- .ds-sidebar--left {
2181
- left: var(--float-distance);
2182
- }
2183
- .ds-sidebar--right {
2184
- right: var(--float-distance);
2185
- }
2186
- .ds-sidebar--collapsed.ds-sidebar--left {
2187
- transform: translateX(calc(-100% - var(--float-distance)));
2188
- }
2189
- .ds-sidebar--collapsed.ds-sidebar--right {
2190
- transform: translateX(calc(100% + var(--float-distance)));
2191
- }
2192
- .ds-sidebar__content {
2193
- display: flex;
2194
- flex-direction: column;
2195
- height: 100%;
2196
- padding: var(--space-4);
2197
- overflow-y: auto;
2198
- overflow-x: hidden;
2199
- }
2200
- .ds-sidebar__content::-webkit-scrollbar {
2201
- width: 6px;
2202
- }
2203
- .ds-sidebar__content::-webkit-scrollbar-track {
2204
- background: transparent;
2205
- }
2206
- .ds-sidebar__content::-webkit-scrollbar-thumb {
2207
- background: var(--surface-alpha-2);
2208
- border-radius: var(--radius-pill);
2063
+ .ds-sidebar__content::-webkit-scrollbar-thumb {
2064
+ background: var(--surface-alpha-2);
2065
+ border-radius: var(--radius-pill);
2209
2066
  }
2210
2067
  .ds-sidebar__content::-webkit-scrollbar-thumb:hover {
2211
2068
  background: var(--surface-alpha-3);
@@ -2331,2629 +2188,439 @@ a:hover {
2331
2188
  }
2332
2189
  }
2333
2190
 
2334
- /* src/components/FloatingTabBar/FloatingTabBar.css */
2335
- .ds-floating-tab-bar {
2336
- position: fixed;
2337
- left: 50%;
2338
- transform: translateX(-50%);
2191
+ /* src/components/Shell/Shell.css */
2192
+ .ds-shell {
2193
+ position: relative;
2194
+ width: 100%;
2195
+ min-height: 100%;
2339
2196
  display: flex;
2340
- align-items: center;
2341
- gap: var(--space-1);
2342
- padding: var(--space-2);
2343
- z-index: var(--z-ornament);
2344
- background: var(--glass-base-hover);
2345
- backdrop-filter: var(--glass-backdrop);
2346
- -webkit-backdrop-filter: var(--glass-backdrop);
2347
- border-radius: var(--radius-card);
2348
- box-shadow: var(--glass-shadow-elevated-combined);
2349
2197
  }
2350
- .ds-floating-tab-bar::before {
2351
- content: "";
2352
- position: absolute;
2353
- inset: 0;
2354
- border-radius: inherit;
2355
- padding: var(--space-px);
2356
- background:
2357
- linear-gradient(
2358
- 180deg,
2359
- var(--rim-light-hover-top) 0%,
2360
- var(--rim-light-top) 100%);
2361
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2362
- mask-composite: exclude;
2363
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2364
- -webkit-mask-composite: xor;
2365
- pointer-events: none;
2198
+ .ds-shell__content {
2199
+ flex: 1;
2200
+ width: 100%;
2201
+ padding: var(--space-6);
2202
+ padding-top: calc(var(--float-distance) + var(--space-4));
2203
+ padding-bottom: calc(var(--float-distance) + var(--space-4));
2204
+ box-sizing: border-box;
2366
2205
  }
2367
- .ds-floating-tab-bar--top {
2368
- top: var(--float-distance);
2206
+ .ds-shell--left .ds-shell__content {
2207
+ padding-left: calc(var(--sidebar-width, 280px) + var(--float-distance) * 2);
2208
+ padding-right: var(--float-distance);
2369
2209
  }
2370
- .ds-floating-tab-bar--bottom {
2371
- bottom: var(--float-distance);
2210
+ .ds-shell--right .ds-shell__content {
2211
+ padding-right: calc(var(--sidebar-width, 280px) + var(--float-distance) * 2);
2212
+ padding-left: var(--float-distance);
2372
2213
  }
2373
- .ds-tab-item {
2374
- position: relative;
2375
- display: flex;
2214
+ .ds-shell--bottom {
2376
2215
  flex-direction: column;
2377
- align-items: center;
2378
- justify-content: center;
2379
- gap: var(--space-1);
2380
- padding: var(--space-2) var(--space-4);
2381
- min-width: 64px;
2382
- border: none;
2383
- border-radius: var(--radius-button);
2384
- background: transparent;
2385
- color: var(--text-tertiary);
2386
- font-family: var(--font-family);
2387
- font-size: var(--font-size-xs);
2388
- font-weight: var(--font-weight-medium);
2389
- cursor: pointer;
2390
- transition:
2391
- background var(--transition-glass),
2392
- color var(--transition-glass),
2393
- box-shadow var(--transition-glass),
2394
- transform var(--transition-glass);
2395
2216
  }
2396
- .ds-tab-item::before {
2397
- content: "";
2398
- position: absolute;
2399
- inset: 0;
2400
- border-radius: inherit;
2401
- padding: var(--space-px);
2402
- background:
2403
- linear-gradient(
2404
- 180deg,
2405
- var(--rim-light-top) 0%,
2406
- var(--rim-light-bottom) 100%);
2407
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2408
- mask-composite: exclude;
2409
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2410
- -webkit-mask-composite: xor;
2411
- pointer-events: none;
2412
- opacity: 0;
2413
- transition: opacity var(--transition-glass);
2414
- }
2415
- .ds-tab-item:hover {
2416
- background: var(--glass-base);
2417
- color: var(--text-secondary);
2418
- }
2419
- .ds-tab-item:hover::before {
2420
- opacity: 1;
2421
- }
2422
- .ds-tab-item:focus-visible {
2423
- outline: none;
2424
- box-shadow: var(--focus-ring);
2425
- }
2426
- .ds-tab-item--active {
2427
- background: rgba(var(--brand-pink-rgb), 0.2);
2428
- color: var(--text-primary);
2429
- box-shadow: var(--glass-shadow-inner), 0 0 24px rgba(var(--brand-pink-rgb), 0.15);
2430
- }
2431
- .ds-tab-item--active::before {
2432
- opacity: 1;
2433
- background:
2434
- linear-gradient(
2435
- 180deg,
2436
- rgba(var(--brand-pink-rgb), 0.4) 0%,
2437
- rgba(var(--brand-pink-rgb), 0.1) 100%);
2438
- }
2439
- .ds-tab-item--active:hover {
2440
- background: rgba(var(--brand-pink-rgb), 0.25);
2441
- }
2442
- .ds-tab-item__icon {
2443
- display: flex;
2444
- align-items: center;
2445
- justify-content: center;
2446
- width: 1.5rem;
2447
- height: 1.5rem;
2448
- }
2449
- .ds-tab-item__icon svg {
2450
- width: 100%;
2451
- height: 100%;
2452
- }
2453
- .ds-tab-item__label {
2454
- white-space: nowrap;
2455
- }
2456
- .ds-floating-tab-bar--compact .ds-tab-item {
2457
- padding: var(--space-3);
2458
- min-width: auto;
2459
- }
2460
- .ds-floating-tab-bar--compact .ds-tab-item__label {
2461
- display: none;
2462
- }
2463
- @media (prefers-contrast: more) {
2464
- .ds-floating-tab-bar {
2465
- background: var(--hc-surface);
2466
- border: 1px solid var(--hc-border);
2467
- }
2468
- .ds-floating-tab-bar::before {
2469
- display: none;
2470
- }
2471
- .ds-tab-item--active {
2472
- background: rgba(var(--brand-pink-rgb), 0.4);
2473
- border: 1px solid rgba(var(--brand-pink-rgb), 0.6);
2474
- }
2475
- }
2476
- @supports not (backdrop-filter: blur(1px)) {
2477
- .ds-floating-tab-bar {
2478
- background: var(--fallback-surface);
2479
- }
2480
- }
2481
-
2482
- /* src/components/StatusBadge/StatusBadge.css */
2483
- .ds-status-badge {
2484
- display: inline-flex;
2485
- align-items: center;
2486
- gap: var(--space-2);
2487
- font-family: var(--font-family);
2488
- font-weight: var(--font-weight-medium);
2489
- color: var(--text-primary);
2490
- border-radius: var(--radius-badge);
2491
- white-space: nowrap;
2492
- background: var(--glass-base);
2493
- backdrop-filter: blur(12px) saturate(140%);
2494
- -webkit-backdrop-filter: blur(12px) saturate(140%);
2495
- }
2496
- .ds-status-badge--sm {
2497
- font-size: var(--font-size-xs);
2498
- padding: var(--space-1) var(--space-2);
2499
- }
2500
- .ds-status-badge--md {
2501
- font-size: var(--font-size-sm);
2502
- padding: var(--space-1) var(--space-3);
2503
- }
2504
- .ds-status-badge--default {
2505
- box-shadow: var(--shadow-inset-border-subtle), var(--shadow-sm);
2506
- }
2507
- .ds-status-badge--success {
2508
- background: rgba(var(--status-success-rgb), 0.08);
2509
- box-shadow:
2510
- inset 0 0 0 1px rgba(var(--status-success-rgb), 0.4),
2511
- var(--shadow-sm),
2512
- 0 0 12px rgba(var(--status-success-rgb), 0.1);
2513
- color: var(--status-success);
2514
- }
2515
- .ds-status-badge--warning {
2516
- background: rgba(var(--status-warning-rgb), 0.08);
2517
- box-shadow:
2518
- inset 0 0 0 1px rgba(var(--status-warning-rgb), 0.4),
2519
- var(--shadow-sm),
2520
- 0 0 12px rgba(var(--status-warning-rgb), 0.1);
2521
- color: var(--status-warning);
2522
- }
2523
- .ds-status-badge--error {
2524
- background: rgba(var(--status-error-rgb), 0.08);
2525
- box-shadow:
2526
- inset 0 0 0 1px rgba(var(--status-error-rgb), 0.4),
2527
- var(--shadow-sm),
2528
- 0 0 12px rgba(var(--status-error-rgb), 0.1);
2529
- color: var(--status-error);
2530
- }
2531
- .ds-status-badge--info {
2532
- background: rgba(var(--status-info-rgb), 0.08);
2533
- box-shadow:
2534
- inset 0 0 0 1px rgba(var(--status-info-rgb), 0.4),
2535
- var(--shadow-sm),
2536
- 0 0 12px rgba(var(--status-info-rgb), 0.1);
2537
- color: var(--status-info);
2538
- }
2539
- .ds-status-badge__dot {
2540
- width: 6px;
2541
- height: 6px;
2542
- border-radius: 50%;
2543
- flex-shrink: 0;
2544
- }
2545
- .ds-status-badge--default .ds-status-badge__dot {
2546
- background: var(--text-secondary);
2547
- box-shadow: 0 0 6px var(--glass-highlight-strong);
2548
- }
2549
- .ds-status-badge--success .ds-status-badge__dot {
2550
- background: var(--status-success);
2551
- box-shadow: 0 0 8px rgba(var(--status-success-rgb), 0.5);
2552
- }
2553
- .ds-status-badge--warning .ds-status-badge__dot {
2554
- background: var(--status-warning);
2555
- box-shadow: 0 0 8px rgba(var(--status-warning-rgb), 0.5);
2556
- }
2557
- .ds-status-badge--error .ds-status-badge__dot {
2558
- background: var(--status-error);
2559
- box-shadow: 0 0 8px rgba(var(--status-error-rgb), 0.5);
2560
- }
2561
- .ds-status-badge--info .ds-status-badge__dot {
2562
- background: var(--status-info);
2563
- box-shadow: 0 0 8px rgba(var(--status-info-rgb), 0.5);
2564
- }
2565
- .ds-status-badge--dot:empty {
2566
- padding: var(--space-1);
2567
- }
2568
- .ds-status-badge--dot:empty .ds-status-badge__dot {
2569
- width: 8px;
2570
- height: 8px;
2571
- }
2572
- @media (prefers-contrast: more) {
2573
- .ds-status-badge {
2574
- border: 1px solid currentColor;
2575
- }
2576
- .ds-status-badge--default {
2577
- border-color: var(--hc-border-strong);
2578
- }
2579
- }
2580
- @supports not (backdrop-filter: blur(1px)) {
2581
- .ds-status-badge {
2582
- background: var(--fallback-surface);
2583
- }
2584
- .ds-status-badge--success {
2585
- background: var(--fallback-surface);
2586
- }
2587
- .ds-status-badge--warning {
2588
- background: var(--fallback-surface);
2589
- }
2590
- .ds-status-badge--error {
2591
- background: var(--fallback-surface);
2592
- }
2593
- .ds-status-badge--info {
2594
- background: var(--fallback-surface);
2595
- }
2596
- }
2597
-
2598
- /* src/components/Shell/Shell.css */
2599
- .ds-shell {
2600
- position: relative;
2601
- width: 100%;
2602
- min-height: 100%;
2603
- display: flex;
2604
- }
2605
- .ds-shell__content {
2606
- flex: 1;
2607
- width: 100%;
2608
- padding: var(--space-6);
2609
- padding-top: calc(var(--float-distance) + var(--space-4));
2610
- padding-bottom: calc(var(--float-distance) + var(--space-4));
2611
- box-sizing: border-box;
2612
- }
2613
- .ds-shell--left .ds-shell__content {
2614
- padding-left: calc(var(--sidebar-width, 280px) + var(--float-distance) * 2);
2615
- padding-right: var(--float-distance);
2616
- }
2617
- .ds-shell--right .ds-shell__content {
2618
- padding-right: calc(var(--sidebar-width, 280px) + var(--float-distance) * 2);
2619
- padding-left: var(--float-distance);
2620
- }
2621
- .ds-shell--bottom {
2622
- flex-direction: column;
2623
- }
2624
- .ds-shell--bottom .ds-shell__content {
2625
- padding-left: var(--float-distance);
2626
- padding-right: var(--float-distance);
2627
- padding-bottom: calc(80px + var(--float-distance) * 2);
2628
- }
2629
- @media (max-width: 768px) {
2630
- .ds-shell--left .ds-shell__content,
2631
- .ds-shell--right .ds-shell__content {
2632
- padding-left: var(--float-distance);
2633
- padding-right: var(--float-distance);
2634
- }
2635
- .ds-shell__content {
2636
- padding-bottom: calc(var(--float-distance) + env(safe-area-inset-bottom, 0px));
2637
- }
2638
- }
2639
-
2640
- /* src/components/AppearancePanel/AppearancePanel.css */
2641
- @media (max-width: 768px) {
2642
- .ds-appearance-panel {
2643
- position: fixed;
2644
- bottom: 0;
2645
- left: 0;
2646
- right: 0;
2647
- max-width: 100%;
2648
- border-radius: var(--radius-panel) var(--radius-panel) 0 0;
2649
- z-index: var(--z-modal);
2650
- animation: ds-panel-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
2651
- max-height: 60vh;
2652
- overflow-y: auto;
2653
- padding-bottom: env(safe-area-inset-bottom, 24px);
2654
- }
2655
- .ds-appearance-panel::before {
2656
- border-radius: var(--radius-panel) var(--radius-panel) 0 0;
2657
- }
2658
- }
2659
- @keyframes ds-panel-slide-up {
2660
- from {
2661
- transform: translateY(100%);
2662
- }
2663
- to {
2664
- transform: translateY(0);
2665
- }
2666
- }
2667
- .ds-appearance-panel {
2668
- position: relative;
2669
- padding: var(--space-6);
2670
- border-radius: var(--radius-card);
2671
- max-width: 400px;
2672
- max-height: 85vh;
2673
- overflow-y: auto;
2674
- background: var(--glass-base);
2675
- backdrop-filter: var(--glass-backdrop);
2676
- -webkit-backdrop-filter: var(--glass-backdrop);
2677
- box-shadow: var(--glass-shadow-combined);
2678
- }
2679
- .ds-appearance-panel::before {
2680
- content: "";
2681
- position: absolute;
2682
- inset: 0;
2683
- border-radius: inherit;
2684
- padding: var(--space-px);
2685
- background:
2686
- linear-gradient(
2687
- 180deg,
2688
- var(--rim-light-top) 0%,
2689
- var(--rim-light-bottom) 100%);
2690
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2691
- mask-composite: exclude;
2692
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2693
- -webkit-mask-composite: xor;
2694
- pointer-events: none;
2695
- }
2696
- .ds-appearance-panel__title {
2697
- font-family: var(--font-family);
2698
- font-size: var(--font-size-lg);
2699
- font-weight: var(--font-weight-semibold);
2700
- color: var(--text-primary);
2701
- margin: 0 0 var(--space-6);
2702
- }
2703
- .ds-appearance-panel__section {
2704
- border: none;
2705
- padding: 0;
2706
- margin: 0 0 var(--space-6);
2707
- }
2708
- .ds-appearance-panel__section:last-of-type {
2709
- margin-bottom: var(--space-4);
2710
- }
2711
- .ds-appearance-panel__legend {
2712
- font-family: var(--font-family);
2713
- font-size: var(--font-size-xs);
2714
- font-weight: var(--font-weight-semibold);
2715
- color: var(--text-tertiary);
2716
- text-transform: uppercase;
2717
- letter-spacing: var(--letter-spacing-wide);
2718
- margin-bottom: var(--space-3);
2719
- }
2720
- .ds-appearance-panel__options {
2721
- display: flex;
2722
- flex-direction: column;
2723
- gap: var(--space-2);
2724
- }
2725
- .ds-appearance-panel__options--row {
2726
- flex-direction: row;
2727
- gap: var(--space-3);
2728
- }
2729
- .ds-appearance-panel__options--row .ds-appearance-panel__option {
2730
- flex: 1;
2731
- }
2732
- .ds-appearance-panel__option {
2733
- display: flex;
2734
- align-items: center;
2735
- gap: var(--space-3);
2736
- padding: var(--space-3) var(--space-4);
2737
- border-radius: var(--radius-button);
2738
- cursor: pointer;
2739
- transition: background var(--transition-glass);
2740
- background: transparent;
2741
- }
2742
- .ds-appearance-panel__option:hover {
2743
- background: var(--glass-base-hover);
2744
- }
2745
- .ds-appearance-panel__option--active {
2746
- background: rgba(var(--accent-rgb), 0.15);
2747
- }
2748
- .ds-appearance-panel__option--active:hover {
2749
- background: rgba(var(--accent-rgb), 0.2);
2750
- }
2751
- .ds-appearance-panel__option--toggle {
2752
- flex-direction: column;
2753
- align-items: flex-start;
2754
- gap: var(--space-1);
2755
- padding: var(--space-3);
2756
- text-align: center;
2757
- }
2758
- .ds-appearance-panel__option--toggle .ds-appearance-panel__option-content {
2759
- width: 100%;
2760
- text-align: center;
2761
- }
2762
- .ds-appearance-panel__radio {
2763
- appearance: none;
2764
- width: 16px;
2765
- height: 16px;
2766
- border-radius: 50%;
2767
- border: 2px solid var(--text-tertiary);
2768
- transition: all var(--transition-glass);
2769
- flex-shrink: 0;
2770
- }
2771
- .ds-appearance-panel__option--toggle .ds-appearance-panel__radio {
2772
- position: absolute;
2773
- opacity: 0;
2774
- pointer-events: none;
2775
- }
2776
- .ds-appearance-panel__option--active .ds-appearance-panel__radio {
2777
- border-color: rgba(var(--accent-rgb), 1);
2778
- background: rgba(var(--accent-rgb), 1);
2779
- box-shadow: 0 0 8px rgba(var(--accent-rgb), 0.4);
2780
- }
2781
- .ds-appearance-panel__option-content {
2782
- display: flex;
2783
- flex-direction: column;
2784
- gap: var(--space-0-5);
2785
- }
2786
- .ds-appearance-panel__option-label {
2787
- font-family: var(--font-family);
2788
- font-size: var(--font-size-base);
2789
- color: var(--text-primary);
2790
- }
2791
- .ds-appearance-panel__option-description {
2792
- font-family: var(--font-family);
2793
- font-size: var(--font-size-xs);
2794
- color: var(--text-tertiary);
2795
- }
2796
- .ds-appearance-panel__color-picker {
2797
- margin-top: var(--space-4);
2798
- padding: var(--space-4);
2799
- border-radius: var(--radius-button);
2800
- background: var(--glass-base);
2801
- border: 1px solid rgba(var(--accent-rgb), 0.2);
2802
- }
2803
- .ds-appearance-panel__color-label {
2804
- display: block;
2805
- font-family: var(--font-family);
2806
- font-size: var(--font-size-xs);
2807
- font-weight: var(--font-weight-medium);
2808
- color: var(--text-secondary);
2809
- margin-bottom: var(--space-2);
2810
- }
2811
- .ds-appearance-panel__color-input-wrapper {
2812
- display: flex;
2813
- align-items: center;
2814
- gap: var(--space-3);
2815
- }
2816
- .ds-appearance-panel__color-input {
2817
- width: 48px;
2818
- height: 48px;
2819
- padding: 0;
2820
- border: none;
2821
- border-radius: var(--radius-badge);
2822
- cursor: pointer;
2823
- background: transparent;
2824
- overflow: hidden;
2825
- }
2826
- .ds-appearance-panel__color-input::-webkit-color-swatch-wrapper {
2827
- padding: 0;
2828
- }
2829
- .ds-appearance-panel__color-input::-webkit-color-swatch {
2830
- border: 2px solid var(--rim-light-top);
2831
- border-radius: var(--radius-badge);
2832
- box-shadow: var(--shadow-md);
2833
- }
2834
- .ds-appearance-panel__color-input::-moz-color-swatch {
2835
- border: 2px solid var(--rim-light-top);
2836
- border-radius: var(--radius-badge);
2837
- box-shadow: var(--shadow-md);
2838
- }
2839
- .ds-appearance-panel__color-input:focus-visible {
2840
- outline: none;
2841
- box-shadow: var(--focus-ring);
2842
- border-radius: var(--radius-badge);
2843
- }
2844
- .ds-appearance-panel__color-value {
2845
- font-family: var(--font-family-mono);
2846
- font-size: var(--font-size-sm);
2847
- color: var(--text-secondary);
2848
- padding: var(--space-2) var(--space-3);
2849
- background: var(--glass-base);
2850
- border-radius: var(--radius-badge);
2851
- border: 1px solid var(--rim-light-bottom);
2852
- }
2853
- .ds-appearance-panel__reset {
2854
- display: block;
2855
- width: 100%;
2856
- padding: var(--space-3) var(--space-4);
2857
- border: none;
2858
- border-radius: var(--radius-button);
2859
- background: var(--btn-secondary-bg);
2860
- color: var(--text-secondary);
2861
- font-family: var(--font-family);
2862
- font-size: var(--font-size-sm);
2863
- font-weight: var(--font-weight-medium);
2864
- cursor: pointer;
2865
- transition: all var(--transition-glass);
2866
- }
2867
- .ds-appearance-panel__reset:hover {
2868
- background: var(--btn-secondary-bg-hover);
2869
- color: var(--text-primary);
2870
- }
2871
- .ds-appearance-panel__reset:focus-visible {
2872
- box-shadow: var(--focus-ring);
2873
- outline: none;
2874
- }
2875
- @media (prefers-contrast: more) {
2876
- .ds-appearance-panel {
2877
- border: 1px solid var(--hc-border);
2878
- }
2879
- .ds-appearance-panel__color-picker {
2880
- border: 1px solid var(--hc-border);
2881
- }
2882
- }
2883
-
2884
- /* src/components/LocaleDropdown/LocaleDropdown.css */
2885
- .ds-locale-dropdown {
2886
- position: relative;
2887
- display: inline-flex;
2888
- flex-shrink: 0;
2889
- }
2890
- .ds-locale-dropdown__wrapper {
2891
- position: relative;
2892
- }
2893
- .ds-locale-dropdown__trigger {
2894
- display: inline-flex;
2895
- align-items: center;
2896
- gap: var(--space-1-5);
2897
- padding: var(--space-2) var(--space-2-5);
2898
- border: none;
2899
- border-radius: var(--radius-button);
2900
- background: transparent;
2901
- color: var(--text-secondary);
2902
- font-family: var(--font-family);
2903
- font-size: var(--font-size-xs);
2904
- font-weight: var(--font-weight-medium);
2905
- line-height: 1;
2906
- cursor: pointer;
2907
- white-space: nowrap;
2908
- transition: background var(--transition-fast), color var(--transition-fast);
2909
- }
2910
- .ds-locale-dropdown__trigger:hover {
2911
- background: var(--glass-base-hover);
2912
- color: var(--text-primary);
2913
- }
2914
- .ds-locale-dropdown__trigger:focus-visible {
2915
- outline: none;
2916
- box-shadow: var(--focus-ring);
2917
- }
2918
- .ds-locale-dropdown__trigger-icon {
2919
- display: flex;
2920
- align-items: center;
2921
- color: var(--text-tertiary);
2922
- flex-shrink: 0;
2923
- }
2924
- .ds-locale-dropdown__trigger-flag {
2925
- font-size: var(--font-size-xs);
2926
- line-height: 1;
2927
- display: inline-flex;
2928
- align-items: center;
2929
- height: 16px;
2930
- overflow: hidden;
2931
- }
2932
- .ds-locale-dropdown__trigger-chevron {
2933
- display: inline-flex;
2934
- align-items: center;
2935
- color: var(--text-tertiary);
2936
- flex-shrink: 0;
2937
- transition: transform 0.2s cubic-bezier(0.2, 0.8, 0.2, 1), color var(--transition-fast);
2938
- }
2939
- .ds-locale-dropdown__trigger-chevron[data-state=open] {
2940
- transform: rotate(180deg);
2941
- }
2942
- .ds-locale-dropdown__trigger:hover .ds-locale-dropdown__trigger-chevron {
2943
- color: var(--text-secondary);
2944
- }
2945
- .ds-locale-dropdown__panel {
2946
- position: absolute;
2947
- top: calc(100% + var(--space-2));
2948
- right: 0;
2949
- min-width: 180px;
2950
- padding: var(--space-1-5);
2951
- z-index: var(--z-dropdown);
2952
- transform-origin: top right;
2953
- overflow: hidden;
2954
- background: var(--void-base);
2955
- backdrop-filter: blur(24px) saturate(180%);
2956
- -webkit-backdrop-filter: blur(24px) saturate(180%);
2957
- border: 1px solid var(--rim-light-bottom);
2958
- border-radius: var(--radius-card);
2959
- box-shadow: var(--shadow-xl), 0 0 0 1px var(--rim-light-bottom);
2960
- opacity: 0;
2961
- transform: translateY(-8px) scale(0.95);
2962
- visibility: hidden;
2963
- pointer-events: none;
2964
- transition:
2965
- opacity 0.15s cubic-bezier(0.4, 0, 1, 1),
2966
- transform 0.15s cubic-bezier(0.4, 0, 1, 1),
2967
- visibility 0s 0.15s;
2968
- }
2969
- .ds-locale-dropdown__panel[data-state=open] {
2970
- opacity: 1;
2971
- transform: translateY(0) scale(1);
2972
- visibility: visible;
2973
- pointer-events: auto;
2974
- transition:
2975
- opacity 0.2s cubic-bezier(0.2, 0.8, 0.2, 1),
2976
- transform 0.2s cubic-bezier(0.2, 0.8, 0.2, 1),
2977
- visibility 0s 0s;
2978
- }
2979
- .ds-locale-dropdown--up .ds-locale-dropdown__panel {
2980
- top: auto;
2981
- bottom: calc(100% + var(--space-2));
2982
- transform-origin: bottom right;
2983
- }
2984
- .ds-locale-dropdown--up .ds-locale-dropdown__panel[data-state=closed] {
2985
- transform: translateY(8px) scale(0.95);
2986
- }
2987
- .ds-locale-dropdown--align-left .ds-locale-dropdown__panel {
2988
- right: auto;
2989
- left: 0;
2990
- transform-origin: top left;
2991
- }
2992
- .ds-locale-dropdown--align-center .ds-locale-dropdown__panel {
2993
- right: auto;
2994
- left: 50%;
2995
- transform-origin: top center;
2996
- }
2997
- .ds-locale-dropdown--align-center .ds-locale-dropdown__panel[data-state=closed] {
2998
- transform: translateX(-50%) translateY(-8px) scale(0.95);
2999
- }
3000
- .ds-locale-dropdown--align-center .ds-locale-dropdown__panel[data-state=open] {
3001
- transform: translateX(-50%) translateY(0) scale(1);
3002
- }
3003
- .ds-locale-dropdown--up.ds-locale-dropdown--align-left .ds-locale-dropdown__panel {
3004
- transform-origin: bottom left;
3005
- }
3006
- .ds-locale-dropdown--up.ds-locale-dropdown--align-center .ds-locale-dropdown__panel {
3007
- transform-origin: bottom center;
3008
- }
3009
- .ds-locale-dropdown--up.ds-locale-dropdown--align-center .ds-locale-dropdown__panel[data-state=closed] {
3010
- transform: translateX(-50%) translateY(8px) scale(0.95);
3011
- }
3012
- .ds-locale-dropdown__panel::before {
3013
- content: "";
3014
- position: absolute;
3015
- top: 0;
3016
- left: 0;
3017
- right: 0;
3018
- height: 1px;
3019
- border-radius: var(--radius-card) var(--radius-card) 0 0;
3020
- background:
3021
- linear-gradient(
3022
- 90deg,
3023
- transparent 0%,
3024
- var(--rim-light-top) 30%,
3025
- var(--rim-light-hover-top) 50%,
3026
- var(--rim-light-top) 70%,
3027
- transparent 100%);
3028
- opacity: 0.6;
3029
- pointer-events: none;
3030
- }
3031
- .ds-locale-dropdown__option {
3032
- display: flex;
3033
- align-items: center;
3034
- justify-content: space-between;
3035
- width: 100%;
3036
- padding: var(--space-2) var(--space-3);
3037
- border: none;
3038
- border-radius: var(--radius-button);
3039
- background: transparent;
3040
- color: var(--text-secondary);
3041
- font-family: var(--font-family);
3042
- font-size: var(--font-size-sm);
3043
- font-weight: var(--font-weight-regular);
3044
- cursor: pointer;
3045
- text-decoration: none;
3046
- text-align: left;
3047
- white-space: nowrap;
3048
- transition: background var(--transition-fast), color var(--transition-fast);
3049
- }
3050
- .ds-locale-dropdown__option:hover,
3051
- .ds-locale-dropdown__option--focused {
3052
- background: var(--glass-base-hover);
3053
- color: var(--text-primary);
3054
- }
3055
- .ds-locale-dropdown__option:focus-visible {
3056
- outline: none;
3057
- box-shadow: var(--focus-ring);
3058
- }
3059
- .ds-locale-dropdown__option--active {
3060
- background: rgba(var(--brand-pink-rgb), 0.08);
3061
- color: var(--text-primary);
3062
- font-weight: var(--font-weight-medium);
3063
- }
3064
- .ds-locale-dropdown__option--active:hover,
3065
- .ds-locale-dropdown__option--active.ds-locale-dropdown__option--focused {
3066
- background: rgba(var(--brand-pink-rgb), 0.14);
3067
- }
3068
- .ds-locale-dropdown__option-content {
3069
- display: flex;
3070
- align-items: center;
3071
- gap: var(--space-2);
3072
- }
3073
- .ds-locale-dropdown__option-flag {
3074
- font-size: var(--font-size-sm);
3075
- line-height: 1;
3076
- flex-shrink: 0;
3077
- }
3078
- .ds-locale-dropdown__option-label {
3079
- white-space: nowrap;
3080
- }
3081
- .ds-locale-dropdown__option-check {
3082
- display: flex;
3083
- align-items: center;
3084
- color: rgba(var(--brand-pink-rgb), 1);
3085
- flex-shrink: 0;
3086
- margin-left: var(--space-3);
3087
- }
3088
- @media (max-width: 1399px) {
3089
- .ds-locale-dropdown__trigger {
3090
- padding: var(--space-1-5) var(--space-2);
3091
- gap: var(--space-1);
3092
- }
3093
- .ds-locale-dropdown__trigger-flag {
3094
- display: none;
3095
- }
3096
- .ds-locale-dropdown__trigger-chevron {
3097
- display: none;
3098
- }
3099
- }
3100
- :root[data-theme=light] .ds-locale-dropdown__panel,
3101
- :root[data-theme=light-contrast] .ds-locale-dropdown__panel {
3102
- box-shadow: var(--shadow-sm), 0 0 0 1px var(--rim-light-bottom);
3103
- }
3104
- @media (prefers-reduced-motion: reduce) {
3105
- .ds-locale-dropdown__trigger {
3106
- transition: none;
3107
- }
3108
- .ds-locale-dropdown__trigger-chevron {
3109
- transition: none;
3110
- }
3111
- .ds-locale-dropdown__panel {
3112
- transition: none;
3113
- }
3114
- .ds-locale-dropdown__option {
3115
- transition: none;
3116
- }
3117
- }
3118
- @media (prefers-contrast: more) {
3119
- .ds-locale-dropdown__trigger {
3120
- outline: 1px solid var(--hc-border);
3121
- outline-offset: -1px;
3122
- }
3123
- .ds-locale-dropdown__panel {
3124
- border: 1px solid var(--hc-border);
3125
- background: var(--hc-surface);
3126
- }
3127
- .ds-locale-dropdown__option--active {
3128
- background: rgba(var(--brand-pink-rgb), 0.3);
3129
- border: 1px solid rgba(var(--brand-pink-rgb), 0.5);
3130
- }
3131
- }
3132
- @supports not (backdrop-filter: blur(1px)) {
3133
- .ds-locale-dropdown__panel {
3134
- background: var(--fallback-surface);
3135
- }
3136
- }
3137
-
3138
- /* src/components/Login/Login.css */
3139
- .ds-login {
3140
- position: relative;
3141
- display: flex;
3142
- flex-direction: column;
3143
- align-items: center;
3144
- justify-content: center;
3145
- width: 100%;
3146
- padding: var(--space-6);
3147
- }
3148
- .ds-login__accent {
3149
- position: absolute;
3150
- border-radius: 50%;
3151
- filter: blur(80px);
3152
- opacity: 0.5;
3153
- pointer-events: none;
3154
- animation: ds-login-float 20s ease-in-out infinite;
3155
- }
3156
- .ds-login__accent--1 {
3157
- width: 400px;
3158
- height: 400px;
3159
- background:
3160
- radial-gradient(
3161
- circle,
3162
- rgba(var(--accent-rgb), 0.4) 0%,
3163
- transparent 70%);
3164
- top: -100px;
3165
- right: -100px;
3166
- animation-delay: 0s;
3167
- }
3168
- .ds-login__accent--2 {
3169
- width: 300px;
3170
- height: 300px;
3171
- background:
3172
- radial-gradient(
3173
- circle,
3174
- rgba(var(--accent2-rgb), 0.3) 0%,
3175
- transparent 70%);
3176
- bottom: -50px;
3177
- left: -50px;
3178
- animation-delay: -10s;
3179
- }
3180
- @keyframes ds-login-float {
3181
- 0%, 100% {
3182
- transform: translate(0, 0) scale(1);
3183
- }
3184
- 25% {
3185
- transform: translate(20px, -30px) scale(1.05);
3186
- }
3187
- 50% {
3188
- transform: translate(-10px, 20px) scale(0.95);
3189
- }
3190
- 75% {
3191
- transform: translate(-30px, -10px) scale(1.02);
3192
- }
3193
- }
3194
- .ds-login__card {
3195
- position: relative;
3196
- width: 100%;
3197
- max-width: 420px;
3198
- padding: var(--space-8);
3199
- border-radius: var(--radius-panel);
3200
- background: var(--glass-base);
3201
- backdrop-filter: var(--glass-backdrop);
3202
- -webkit-backdrop-filter: var(--glass-backdrop);
3203
- box-shadow: var(--glass-shadow-elevated-combined);
3204
- animation: ds-login-card-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
3205
- opacity: 0;
3206
- transform: translateY(20px);
3207
- }
3208
- .ds-login__card::before {
3209
- content: "";
3210
- position: absolute;
3211
- inset: 0;
3212
- border-radius: inherit;
3213
- padding: 1px;
3214
- background:
3215
- linear-gradient(
3216
- 180deg,
3217
- var(--rim-light-hover-top) 0%,
3218
- var(--rim-light-bottom) 100%);
3219
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3220
- mask-composite: exclude;
3221
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3222
- -webkit-mask-composite: xor;
3223
- pointer-events: none;
3224
- }
3225
- @keyframes ds-login-card-enter {
3226
- to {
3227
- opacity: 1;
3228
- transform: translateY(0);
3229
- }
3230
- }
3231
- .ds-login__header {
3232
- text-align: center;
3233
- margin-bottom: var(--space-6);
3234
- }
3235
- .ds-login__logo {
3236
- display: flex;
3237
- justify-content: center;
3238
- margin-bottom: var(--space-4);
3239
- animation: ds-login-fade-in 0.5s ease-out 0.1s forwards;
3240
- opacity: 0;
3241
- }
3242
- .ds-login__logo--default {
3243
- display: flex;
3244
- }
3245
- .ds-login__logo-icon {
3246
- width: 56px;
3247
- height: 56px;
3248
- animation: ds-login-logo-pulse 3s ease-in-out infinite;
3249
- }
3250
- .ds-login__logo-icon svg {
3251
- width: 100%;
3252
- height: 100%;
3253
- filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
3254
- }
3255
- @keyframes ds-login-logo-pulse {
3256
- 0%, 100% {
3257
- transform: scale(1);
3258
- filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
3259
- }
3260
- 50% {
3261
- transform: scale(1.05);
3262
- filter: drop-shadow(0 6px 20px rgba(var(--accent-rgb), 0.5));
3263
- }
3264
- }
3265
- .ds-login__title {
3266
- font-family: var(--font-family);
3267
- font-size: var(--font-size-2xl);
3268
- font-weight: var(--font-weight-bold);
3269
- color: var(--text-primary);
3270
- margin: 0 0 var(--space-2);
3271
- animation: ds-login-fade-in 0.5s ease-out 0.2s forwards;
3272
- opacity: 0;
3273
- }
3274
- .ds-login__tagline {
3275
- font-family: var(--font-family);
3276
- font-size: var(--font-size-2xl);
3277
- font-weight: var(--font-weight-bold);
3278
- color: var(--text-primary);
3279
- margin: 0 0 var(--space-2);
3280
- line-height: var(--line-height-normal);
3281
- animation: ds-login-fade-in 0.5s ease-out 0.3s forwards;
3282
- opacity: 0;
3283
- }
3284
- @keyframes ds-login-fade-in {
3285
- to {
3286
- opacity: 1;
3287
- }
3288
- }
3289
- .ds-login__error {
3290
- display: flex;
3291
- align-items: center;
3292
- gap: var(--space-2);
3293
- padding: var(--space-3) var(--space-4);
3294
- margin-bottom: var(--space-4);
3295
- border-radius: var(--radius-button);
3296
- background: rgba(var(--status-error-rgb), 0.1);
3297
- border: 1px solid rgba(var(--status-error-rgb), 0.3);
3298
- color: var(--status-error);
3299
- font-size: var(--font-size-sm);
3300
- animation: ds-login-error-enter 0.4s ease-out;
3301
- }
3302
- @keyframes ds-login-error-enter {
3303
- 0% {
3304
- opacity: 0;
3305
- transform: translateX(-10px);
3306
- }
3307
- 50% {
3308
- transform: translateX(5px);
3309
- }
3310
- 100% {
3311
- opacity: 1;
3312
- transform: translateX(0);
3313
- }
3314
- }
3315
- .ds-login__social {
3316
- margin-bottom: var(--space-4);
3317
- animation: ds-login-fade-in 0.5s ease-out 0.4s forwards;
3318
- opacity: 0;
3319
- }
3320
- .ds-login__social-btn {
3321
- display: flex;
3322
- align-items: center;
3323
- justify-content: center;
3324
- gap: var(--space-3);
3325
- width: 100%;
3326
- padding: var(--space-3) var(--space-4);
3327
- margin-bottom: var(--space-3);
3328
- border: none;
3329
- border-radius: var(--radius-button);
3330
- background: var(--glass-base);
3331
- color: var(--text-primary);
3332
- font-family: var(--font-family);
3333
- font-size: var(--font-size-base);
3334
- font-weight: var(--font-weight-medium);
3335
- cursor: pointer;
3336
- position: relative;
3337
- transition:
3338
- background var(--transition-glass),
3339
- transform var(--transition-glass),
3340
- box-shadow var(--transition-glass);
3341
- }
3342
- .ds-login__social-btn::before {
3343
- content: "";
3344
- position: absolute;
3345
- inset: 0;
3346
- border-radius: inherit;
3347
- padding: 1px;
3348
- background:
3349
- linear-gradient(
3350
- 180deg,
3351
- var(--rim-light-top) 0%,
3352
- var(--rim-light-bottom) 100%);
3353
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3354
- mask-composite: exclude;
3355
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3356
- -webkit-mask-composite: xor;
3357
- pointer-events: none;
3358
- transition: background var(--transition-glass);
3359
- }
3360
- .ds-login__social-btn:hover:not(:disabled) {
3361
- background: var(--glass-base-hover);
3362
- transform: translateY(-2px);
3363
- box-shadow: var(--shadow-lg);
3364
- }
3365
- .ds-login__social-btn:hover:not(:disabled)::before {
3366
- background:
3367
- linear-gradient(
3368
- 180deg,
3369
- var(--rim-light-hover-top) 0%,
3370
- var(--rim-light-hover-bottom) 100%);
3371
- }
3372
- .ds-login__social-btn:disabled {
3373
- opacity: 0.5;
3374
- cursor: not-allowed;
3375
- }
3376
- .ds-login__divider {
3377
- display: flex;
3378
- align-items: center;
3379
- gap: var(--space-4);
3380
- margin: var(--space-4) 0;
3381
- color: var(--text-tertiary);
3382
- font-size: var(--font-size-sm);
3383
- }
3384
- .ds-login__divider::before,
3385
- .ds-login__divider::after {
3386
- content: "";
3387
- flex: 1;
3388
- height: 1px;
3389
- background:
3390
- linear-gradient(
3391
- 90deg,
3392
- transparent 0%,
3393
- var(--rim-light-top) 50%,
3394
- transparent 100%);
3395
- }
3396
- .ds-login__form {
3397
- animation: ds-login-fade-in 0.5s ease-out 0.5s forwards;
3398
- opacity: 0;
3399
- }
3400
- .ds-login__field {
3401
- margin-bottom: var(--space-4);
3402
- }
3403
- .ds-login__password-toggle {
3404
- position: static;
3405
- transform: none;
3406
- padding: var(--space-2);
3407
- border: none;
3408
- background: transparent;
3409
- color: var(--text-tertiary);
3410
- cursor: pointer;
3411
- border-radius: var(--radius-badge);
3412
- display: flex;
3413
- align-items: center;
3414
- justify-content: center;
3415
- transition: color var(--transition-glass), background var(--transition-glass);
3416
- }
3417
- .ds-login__password-toggle:hover {
3418
- color: var(--text-primary);
3419
- background: var(--glass-base-hover);
3420
- }
3421
- .ds-login__options {
3422
- display: flex;
3423
- align-items: center;
3424
- justify-content: space-between;
3425
- margin-bottom: var(--space-6);
3426
- flex-wrap: wrap;
3427
- gap: var(--space-2);
3428
- }
3429
- .ds-login__link {
3430
- padding: 0;
3431
- border: none;
3432
- background: transparent;
3433
- color: var(--text-secondary);
3434
- font-family: var(--font-family);
3435
- font-size: var(--font-size-sm);
3436
- cursor: pointer;
3437
- transition: color var(--transition-glass);
3438
- }
3439
- .ds-login__link:hover:not(:disabled) {
3440
- color: var(--text-primary);
3441
- }
3442
- .ds-login__link--accent {
3443
- color: rgb(var(--accent-rgb));
3444
- font-weight: var(--font-weight-medium);
3445
- }
3446
- .ds-login__link--accent:hover:not(:disabled) {
3447
- color: rgb(var(--accent-rgb));
3448
- text-decoration: underline;
3449
- }
3450
- .ds-login__link:disabled {
3451
- opacity: 0.5;
3452
- cursor: not-allowed;
3453
- }
3454
- .ds-login__submit {
3455
- width: 100%;
3456
- }
3457
- .ds-login__spinner {
3458
- display: inline-block;
3459
- width: 20px;
3460
- height: 20px;
3461
- border: 2px solid var(--hc-border);
3462
- border-top-color: var(--hc-control-knob);
3463
- border-radius: 50%;
3464
- animation: ds-login-spin 0.8s linear infinite;
3465
- }
3466
- @keyframes ds-login-spin {
3467
- to {
3468
- transform: rotate(360deg);
3469
- }
3470
- }
3471
- .ds-login__footer {
3472
- display: flex;
3473
- align-items: center;
3474
- justify-content: center;
3475
- gap: var(--space-2);
3476
- margin-top: var(--space-6);
3477
- padding-top: var(--space-6);
3478
- border-top: 1px solid var(--rim-light-bottom);
3479
- font-size: var(--font-size-sm);
3480
- color: var(--text-tertiary);
3481
- animation: ds-login-fade-in 0.5s ease-out 0.6s forwards;
3482
- opacity: 0;
3483
- }
3484
- @media (max-width: 480px) {
3485
- .ds-login {
3486
- padding: var(--space-4);
3487
- }
3488
- .ds-login__card {
3489
- padding: var(--space-6);
3490
- border-radius: var(--radius-card);
3491
- }
3492
- .ds-login__accent--1 {
3493
- width: 200px;
3494
- height: 200px;
3495
- top: -50px;
3496
- right: -50px;
3497
- }
3498
- .ds-login__accent--2 {
3499
- width: 150px;
3500
- height: 150px;
3501
- bottom: -30px;
3502
- left: -30px;
3503
- }
3504
- .ds-login__options {
3505
- flex-direction: column;
3506
- align-items: flex-start;
3507
- gap: var(--space-3);
3508
- }
3509
- }
3510
- @media (prefers-reduced-motion: reduce) {
3511
- .ds-login__card,
3512
- .ds-login__logo,
3513
- .ds-login__title,
3514
- .ds-login__tagline,
3515
- .ds-login__social,
3516
- .ds-login__form,
3517
- .ds-login__footer,
3518
- .ds-login__trust {
3519
- animation: none;
3520
- opacity: 1;
3521
- }
3522
- .ds-login__accent {
3523
- animation: none;
3524
- }
3525
- .ds-login__logo-icon {
3526
- animation: none;
3527
- }
3528
- .ds-login__spinner {
3529
- animation-duration: 1.5s;
3530
- }
3531
- }
3532
- @media (prefers-contrast: more) {
3533
- .ds-login__card {
3534
- border: 1px solid var(--hc-border);
3535
- }
3536
- .ds-login__social-btn {
3537
- border: 1px solid var(--hc-border-subtle);
3538
- }
3539
- .ds-login__social-btn::before {
3540
- display: none;
3541
- }
3542
- }
3543
-
3544
- /* src/components/ThemeSelector/ThemeSelector.css */
3545
- .ds-theme-selector {
3546
- display: inline-flex;
3547
- align-items: center;
3548
- border: 1px solid var(--rim-light-top);
3549
- border-radius: var(--radius-badge);
3550
- padding: var(--space-1);
3551
- gap: var(--space-1);
3552
- }
3553
- [data-theme=light] .ds-theme-selector,
3554
- [data-theme=light-contrast] .ds-theme-selector {
3555
- background-color: var(--void-base);
3556
- }
3557
- [data-theme=dark] .ds-theme-selector,
3558
- [data-theme=dark-contrast] .ds-theme-selector {
3559
- background: var(--glass-base);
3560
- backdrop-filter: var(--glass-backdrop);
3561
- -webkit-backdrop-filter: var(--glass-backdrop);
3562
- }
3563
- .ds-theme-selector__btn {
3564
- display: flex;
3565
- align-items: center;
3566
- gap: var(--space-2);
3567
- padding: var(--space-2) var(--space-3);
3568
- border: none;
3569
- background: transparent;
3570
- color: var(--text-secondary);
3571
- font-family: inherit;
3572
- font-size: var(--font-size-sm, 14px);
3573
- font-weight: 500;
3574
- border-radius: var(--radius-badge);
3575
- cursor: pointer;
3576
- transition: color var(--transition-fast), background-color var(--transition-fast);
3577
- line-height: 1;
3578
- white-space: nowrap;
3579
- }
3580
- .ds-theme-selector__btn:hover {
3581
- color: var(--text-primary);
3582
- background-color: var(--interactive-hover-bg);
3583
- }
3584
- .ds-theme-selector__btn--active {
3585
- background-color: rgba(var(--accent-rgb), .2);
3586
- box-shadow: none;
3587
- }
3588
- [data-theme=light] .ds-theme-selector__btn--active .ds-theme-selector__label,
3589
- [data-theme=light-contrast] .ds-theme-selector__btn--active .ds-theme-selector__label,
3590
- [data-theme=dark] .ds-theme-selector__btn--active .ds-theme-selector__label,
3591
- [data-theme=dark-contrast] .ds-theme-selector__btn--active .ds-theme-selector__label {
3592
- color: var(--text-secondary);
3593
- }
3594
- .ds-theme-selector__btn--active .ds-theme-selector__icon {
3595
- color: rgb(var(--accent-rgb));
3596
- }
3597
- .ds-theme-selector__icon {
3598
- width: 16px;
3599
- height: 16px;
3600
- color: inherit;
3601
- transition: color var(--transition-fast);
3602
- }
3603
-
3604
- /* src/components/ColorPicker/ColorPicker.css */
3605
- .ds-color-picker {
3606
- display: flex;
3607
- align-items: center;
3608
- gap: var(--space-1);
3609
- padding: var(--space-1);
3610
- border-radius: var(--radius-badge);
3611
- background: var(--interactive-hover-bg);
3612
- border: 1px solid var(--rim-light-bottom);
3613
- }
3614
- .ds-color-picker__swatch {
3615
- display: flex;
3616
- align-items: center;
3617
- justify-content: center;
3618
- padding: var(--space-1);
3619
- border: none;
3620
- border-radius: var(--radius-xs);
3621
- background: transparent;
3622
- cursor: pointer;
3623
- transition: background var(--transition-fast);
3624
- }
3625
- .ds-color-picker__swatch:hover {
3626
- background: var(--interactive-hover-bg);
3627
- }
3628
- .ds-color-picker__swatch--active {
3629
- background: var(--interactive-active-bg);
3630
- }
3631
- .ds-color-picker__dot {
3632
- width: 14px;
3633
- height: 14px;
3634
- border-radius: 50%;
3635
- background: var(--swatch-color);
3636
- border: 1.5px solid var(--rim-light-bottom);
3637
- transition: box-shadow var(--transition-fast);
3638
- }
3639
- .ds-color-picker__swatch--active .ds-color-picker__dot {
3640
- box-shadow: 0 0 0 2px var(--swatch-color);
3641
- }
3642
- .ds-color-picker__swatch--custom {
3643
- position: relative;
3644
- }
3645
- .ds-color-picker__native-input {
3646
- position: absolute;
3647
- inset: 0;
3648
- width: 100%;
3649
- height: 100%;
3650
- opacity: 0;
3651
- cursor: pointer;
3652
- border: none;
3653
- padding: 0;
3654
- }
3655
-
3656
- /* src/components/ChangeEmail/ChangeEmail.css */
3657
- .ds-change-email {
3658
- position: relative;
3659
- display: flex;
3660
- flex-direction: column;
3661
- align-items: center;
3662
- justify-content: center;
3663
- width: 100%;
3664
- padding: var(--space-6);
3665
- box-sizing: border-box;
3666
- }
3667
- .void__content .ds-change-email {
3668
- min-height: auto;
3669
- flex: 1;
3670
- }
3671
- .ds-change-email__accent {
3672
- position: absolute;
3673
- border-radius: 50%;
3674
- filter: blur(80px);
3675
- opacity: 0.5;
3676
- pointer-events: none;
3677
- animation: ds-change-email-float 20s ease-in-out infinite;
3678
- }
3679
- .ds-change-email__accent--1 {
3680
- width: 400px;
3681
- height: 400px;
3682
- background:
3683
- radial-gradient(
3684
- circle,
3685
- rgba(var(--accent-rgb), 0.4) 0%,
3686
- transparent 70%);
3687
- top: -100px;
3688
- right: -100px;
3689
- animation-delay: 0s;
3690
- }
3691
- .ds-change-email__accent--2 {
3692
- width: 300px;
3693
- height: 300px;
3694
- background:
3695
- radial-gradient(
3696
- circle,
3697
- rgba(var(--accent2-rgb), 0.3) 0%,
3698
- transparent 70%);
3699
- bottom: -50px;
3700
- left: -50px;
3701
- animation-delay: -10s;
3702
- }
3703
- .ds-change-email__container {
3704
- position: relative;
3705
- width: 100%;
3706
- max-width: 420px;
3707
- display: flex;
3708
- flex-direction: column;
3709
- align-items: center;
3710
- }
3711
- @keyframes ds-change-email-float {
3712
- 0%, 100% {
3713
- transform: translate(0, 0) scale(1);
3714
- }
3715
- 25% {
3716
- transform: translate(20px, -30px) scale(1.05);
3717
- }
3718
- 50% {
3719
- transform: translate(-10px, 20px) scale(0.95);
3720
- }
3721
- 75% {
3722
- transform: translate(-30px, -10px) scale(1.02);
3723
- }
3724
- }
3725
- .ds-change-email__card {
3726
- position: relative;
3727
- width: 100%;
3728
- max-width: 420px;
3729
- padding: var(--space-8);
3730
- border-radius: var(--radius-panel);
3731
- background: var(--glass-base);
3732
- backdrop-filter: var(--glass-backdrop);
3733
- -webkit-backdrop-filter: var(--glass-backdrop);
3734
- box-shadow: var(--glass-shadow-elevated-combined);
3735
- animation: ds-change-email-card-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
3736
- opacity: 0;
3737
- transform: translateY(20px);
3738
- }
3739
- .ds-change-email__card::before {
3740
- content: "";
3741
- position: absolute;
3742
- inset: 0;
3743
- border-radius: inherit;
3744
- padding: 1px;
3745
- background:
3746
- linear-gradient(
3747
- 180deg,
3748
- var(--rim-light-hover-top) 0%,
3749
- var(--rim-light-bottom) 100%);
3750
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3751
- mask-composite: exclude;
3752
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3753
- -webkit-mask-composite: xor;
3754
- pointer-events: none;
3755
- }
3756
- @keyframes ds-change-email-card-enter {
3757
- to {
3758
- opacity: 1;
3759
- transform: translateY(0);
3760
- }
3761
- }
3762
- .ds-change-email__header {
3763
- text-align: center;
3764
- margin-bottom: var(--space-6);
3765
- }
3766
- .ds-change-email__logo {
3767
- display: flex;
3768
- justify-content: center;
3769
- margin-bottom: var(--space-4);
3770
- animation: ds-change-email-fade-in 0.5s ease-out 0.1s forwards;
3771
- opacity: 0;
3772
- }
3773
- .ds-change-email__logo--default {
3774
- }
3775
- .ds-change-email__logo-icon {
3776
- width: 56px;
3777
- height: 56px;
3778
- animation: ds-change-email-logo-pulse 3s ease-in-out infinite;
3779
- }
3780
- .ds-change-email__logo-icon svg {
3781
- width: 100%;
3782
- height: 100%;
3783
- filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
3784
- }
3785
- @keyframes ds-change-email-logo-pulse {
3786
- 0%, 100% {
3787
- transform: scale(1);
3788
- filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
3789
- }
3790
- 50% {
3791
- transform: scale(1.05);
3792
- filter: drop-shadow(0 6px 20px rgba(var(--accent-rgb), 0.5));
3793
- }
3794
- }
3795
- .ds-change-email__title {
3796
- font-family: var(--font-family);
3797
- font-size: var(--font-size-2xl);
3798
- font-weight: var(--font-weight-bold);
3799
- color: var(--text-primary);
3800
- margin: 0 0 var(--space-2);
3801
- animation: ds-change-email-fade-in 0.5s ease-out 0.2s forwards;
3802
- opacity: 0;
3803
- }
3804
- .ds-change-email__tagline {
3805
- font-family: var(--font-family);
3806
- font-size: var(--font-size-sm);
3807
- color: var(--text-secondary);
3808
- margin: 0;
3809
- line-height: var(--line-height-normal);
3810
- animation: ds-change-email-fade-in 0.5s ease-out 0.3s forwards;
3811
- opacity: 0;
3812
- }
3813
- @keyframes ds-change-email-fade-in {
3814
- to {
3815
- opacity: 1;
3816
- }
3817
- }
3818
- .ds-change-email__error {
3819
- display: flex;
3820
- align-items: center;
3821
- gap: var(--space-2);
3822
- padding: var(--space-3) var(--space-4);
3823
- margin-bottom: var(--space-4);
3824
- border-radius: var(--radius-button);
3825
- background: rgba(var(--status-error-rgb), 0.1);
3826
- border: 1px solid rgba(var(--status-error-rgb), 0.3);
3827
- color: var(--status-error);
3828
- font-size: var(--font-size-sm);
3829
- animation: ds-change-email-error-enter 0.4s ease-out;
3830
- }
3831
- @keyframes ds-change-email-error-enter {
3832
- 0% {
3833
- opacity: 0;
3834
- transform: translateX(-10px);
3835
- }
3836
- 50% {
3837
- transform: translateX(5px);
3838
- }
3839
- 100% {
3840
- opacity: 1;
3841
- transform: translateX(0);
3842
- }
3843
- }
3844
- .ds-change-email__social {
3845
- margin-bottom: var(--space-4);
3846
- animation: ds-change-email-fade-in 0.5s ease-out 0.4s forwards;
3847
- opacity: 0;
3848
- }
3849
- .ds-change-email__social-btn {
3850
- display: flex;
3851
- align-items: center;
3852
- justify-content: center;
3853
- gap: var(--space-3);
3854
- width: 100%;
3855
- padding: var(--space-3) var(--space-4);
3856
- margin-bottom: var(--space-3);
3857
- border: none;
3858
- border-radius: var(--radius-button);
3859
- background: var(--glass-base);
3860
- color: var(--text-primary);
3861
- font-family: var(--font-family);
3862
- font-size: var(--font-size-base);
3863
- font-weight: var(--font-weight-medium);
3864
- cursor: pointer;
3865
- position: relative;
3866
- transition:
3867
- background var(--transition-glass),
3868
- transform var(--transition-glass),
3869
- box-shadow var(--transition-glass);
3870
- }
3871
- .ds-change-email__social-btn::before {
3872
- content: "";
3873
- position: absolute;
3874
- inset: 0;
3875
- border-radius: inherit;
3876
- padding: 1px;
3877
- background:
3878
- linear-gradient(
3879
- 180deg,
3880
- var(--rim-light-top) 0%,
3881
- var(--rim-light-bottom) 100%);
3882
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3883
- mask-composite: exclude;
3884
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3885
- -webkit-mask-composite: xor;
3886
- pointer-events: none;
3887
- transition: background var(--transition-glass);
3888
- }
3889
- .ds-change-email__social-btn:hover:not(:disabled) {
3890
- background: var(--glass-base-hover);
3891
- transform: translateY(-2px);
3892
- box-shadow: 0 8px 24px var(--shadow-color-heavy, rgba(0, 0, 0, 0.2));
3893
- }
3894
- .ds-change-email__social-btn:hover:not(:disabled)::before {
3895
- background:
3896
- linear-gradient(
3897
- 180deg,
3898
- var(--rim-light-hover-top) 0%,
3899
- var(--rim-light-hover-bottom) 100%);
3900
- }
3901
- .ds-change-email__social-btn:disabled {
3902
- opacity: 0.5;
3903
- cursor: not-allowed;
3904
- }
3905
- .ds-change-email__divider {
3906
- display: flex;
3907
- align-items: center;
3908
- gap: var(--space-4);
3909
- margin: var(--space-4) 0;
3910
- color: var(--text-tertiary);
3911
- font-family: var(--font-family);
3912
- font-size: var(--font-size-sm);
3913
- }
3914
- .ds-change-email__divider::before,
3915
- .ds-change-email__divider::after {
3916
- content: "";
3917
- flex: 1;
3918
- height: 1px;
3919
- background:
3920
- linear-gradient(
3921
- 90deg,
3922
- transparent 0%,
3923
- var(--rim-light-top) 50%,
3924
- transparent 100%);
3925
- }
3926
- .ds-change-email__form {
3927
- animation: ds-change-email-fade-in 0.5s ease-out 0.5s forwards;
3928
- opacity: 0;
3929
- }
3930
- .ds-change-email__field {
3931
- margin-bottom: var(--space-4);
3932
- }
3933
- .ds-change-email__password-toggle {
3934
- position: static;
3935
- transform: none;
3936
- padding: var(--space-2);
3937
- border: none;
3938
- background: transparent;
3939
- color: var(--text-tertiary);
3940
- cursor: pointer;
3941
- border-radius: var(--radius-badge);
3942
- display: flex;
3943
- align-items: center;
3944
- justify-content: center;
3945
- transition: color var(--transition-glass), background var(--transition-glass);
3946
- }
3947
- .ds-change-email__password-toggle:hover {
3948
- color: var(--text-primary);
3949
- background: var(--glass-base-hover);
3950
- }
3951
- .ds-change-email__options {
3952
- display: flex;
3953
- align-items: center;
3954
- justify-content: space-between;
3955
- margin-bottom: var(--space-6);
3956
- flex-wrap: wrap;
3957
- gap: var(--space-2);
3958
- }
3959
- .ds-change-email__link {
3960
- padding: 0;
3961
- border: none;
3962
- background: transparent;
3963
- color: var(--text-secondary);
3964
- font-family: var(--font-family);
3965
- font-size: var(--font-size-sm);
3966
- cursor: pointer;
3967
- transition: color var(--transition-glass);
3968
- }
3969
- .ds-change-email__link:hover:not(:disabled) {
3970
- color: var(--text-primary);
3971
- }
3972
- .ds-change-email__link--accent {
3973
- color: rgb(var(--accent-rgb));
3974
- font-weight: var(--font-weight-medium);
3975
- }
3976
- .ds-change-email__link--accent:hover:not(:disabled) {
3977
- color: rgb(var(--accent-rgb));
3978
- text-decoration: underline;
3979
- }
3980
- .ds-change-email__link:disabled {
3981
- opacity: 0.5;
3982
- cursor: not-allowed;
3983
- }
3984
- .ds-change-email__submit {
3985
- width: 100%;
3986
- }
3987
- .ds-change-email__spinner {
3988
- display: inline-block;
3989
- width: 20px;
3990
- height: 20px;
3991
- border: 2px solid var(--border-subtle, rgba(255, 255, 255, 0.3));
3992
- border-top-color: var(--text-primary, white);
3993
- border-radius: 50%;
3994
- animation: ds-change-email-spin 0.8s linear infinite;
3995
- }
3996
- @keyframes ds-change-email-spin {
3997
- to {
3998
- transform: rotate(360deg);
3999
- }
4000
- }
4001
- .ds-change-email__footer {
4002
- display: flex;
4003
- align-items: center;
4004
- justify-content: center;
4005
- gap: var(--space-2);
4006
- margin-top: var(--space-6);
4007
- padding-top: var(--space-6);
4008
- border-top: 1px solid var(--rim-light-bottom);
4009
- font-family: var(--font-family);
4010
- font-size: var(--font-size-sm);
4011
- color: var(--text-tertiary);
4012
- animation: ds-change-email-fade-in 0.5s ease-out 0.6s forwards;
4013
- opacity: 0;
4014
- }
4015
- .ds-change-email__trust {
4016
- padding-top: var(--space-6);
4017
- padding-bottom: var(--space-2);
4018
- text-align: center;
4019
- font-family: var(--font-family);
4020
- font-size: var(--font-size-xs);
4021
- color: var(--text-tertiary);
4022
- animation: ds-change-email-fade-in 0.5s ease-out 0.7s forwards;
4023
- opacity: 0;
4024
- }
4025
- @media (max-width: 480px) {
4026
- .ds-change-email {
4027
- padding: var(--space-4);
4028
- }
4029
- .ds-change-email__card {
4030
- padding: var(--space-6);
4031
- border-radius: var(--radius-card);
4032
- }
4033
- .ds-change-email__accent--1 {
4034
- width: 200px;
4035
- height: 200px;
4036
- top: -50px;
4037
- right: -50px;
4038
- }
4039
- .ds-change-email__accent--2 {
4040
- width: 150px;
4041
- height: 150px;
4042
- bottom: -30px;
4043
- left: -30px;
4044
- }
4045
- .ds-change-email__options {
4046
- flex-direction: column;
4047
- align-items: flex-start;
4048
- gap: var(--space-3);
4049
- }
4050
- }
4051
- @media (prefers-reduced-motion: reduce) {
4052
- .ds-change-email__card,
4053
- .ds-change-email__logo,
4054
- .ds-change-email__title,
4055
- .ds-change-email__tagline,
4056
- .ds-change-email__social,
4057
- .ds-change-email__form,
4058
- .ds-change-email__footer,
4059
- .ds-change-email__trust {
4060
- animation: none;
4061
- opacity: 1;
4062
- }
4063
- .ds-change-email__accent {
4064
- animation: none;
4065
- }
4066
- .ds-change-email__logo-icon {
4067
- animation: none;
4068
- }
4069
- .ds-change-email__spinner {
4070
- animation-duration: 1.5s;
4071
- }
4072
- }
4073
- @media (prefers-contrast: more) {
4074
- .ds-change-email__card {
4075
- border: 1px solid var(--hc-border);
4076
- }
4077
- .ds-change-email__social-btn {
4078
- border: 1px solid var(--hc-border-subtle);
4079
- }
4080
- .ds-change-email__social-btn::before {
4081
- display: none;
4082
- }
4083
- }
4084
-
4085
- /* src/components/Signup/Signup.css */
4086
- .ds-signup {
4087
- position: relative;
4088
- display: flex;
4089
- flex-direction: column;
4090
- align-items: center;
4091
- justify-content: center;
4092
- width: 100%;
4093
- padding: var(--space-6) var(--space-4);
4094
- box-sizing: border-box;
4095
- }
4096
- .ds-signup__accent {
4097
- position: absolute;
4098
- border-radius: 50%;
4099
- filter: blur(80px);
4100
- opacity: 0.5;
4101
- pointer-events: none;
4102
- animation: ds-signup-float 20s ease-in-out infinite;
4103
- }
4104
- .ds-signup__accent--1 {
4105
- width: 400px;
4106
- height: 400px;
4107
- background:
4108
- radial-gradient(
4109
- circle,
4110
- rgba(var(--accent-rgb), 0.4) 0%,
4111
- transparent 70%);
4112
- top: -100px;
4113
- right: -100px;
4114
- animation-delay: 0s;
4115
- }
4116
- .ds-signup__accent--2 {
4117
- width: 300px;
4118
- height: 300px;
4119
- background:
4120
- radial-gradient(
4121
- circle,
4122
- rgba(var(--accent2-rgb), 0.3) 0%,
4123
- transparent 70%);
4124
- bottom: -50px;
4125
- left: -50px;
4126
- animation-delay: -10s;
4127
- }
4128
- @keyframes ds-signup-float {
4129
- 0%, 100% {
4130
- transform: translate(0, 0) scale(1);
4131
- }
4132
- 25% {
4133
- transform: translate(20px, -30px) scale(1.05);
4134
- }
4135
- 50% {
4136
- transform: translate(-10px, 20px) scale(0.95);
4137
- }
4138
- 75% {
4139
- transform: translate(-30px, -10px) scale(1.02);
4140
- }
4141
- }
4142
- .ds-signup__card {
4143
- position: relative;
4144
- width: 100%;
4145
- max-width: 420px;
4146
- padding: var(--space-8);
4147
- border-radius: var(--radius-panel);
4148
- background: var(--glass-base);
4149
- backdrop-filter: var(--glass-backdrop);
4150
- -webkit-backdrop-filter: var(--glass-backdrop);
4151
- box-shadow: var(--glass-shadow-elevated-combined);
4152
- animation: ds-signup-card-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
4153
- opacity: 0;
4154
- transform: translateY(20px);
4155
- }
4156
- .ds-signup__card::before {
4157
- content: "";
4158
- position: absolute;
4159
- inset: 0;
4160
- border-radius: inherit;
4161
- padding: 1px;
4162
- background:
4163
- linear-gradient(
4164
- 180deg,
4165
- var(--rim-light-hover-top) 0%,
4166
- var(--rim-light-bottom) 100%);
4167
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
4168
- mask-composite: exclude;
4169
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
4170
- -webkit-mask-composite: xor;
4171
- pointer-events: none;
4172
- }
4173
- @keyframes ds-signup-card-enter {
4174
- to {
4175
- opacity: 1;
4176
- transform: translateY(0);
4177
- }
4178
- }
4179
- .ds-signup__card--success {
4180
- text-align: center;
4181
- }
4182
- .ds-signup__success-icon {
4183
- width: 64px;
4184
- height: 64px;
4185
- margin: 0 auto var(--space-6);
4186
- animation: ds-signup-success-icon 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
4187
- }
4188
- .ds-signup__success-icon svg {
4189
- width: 100%;
4190
- height: 100%;
4191
- }
4192
- @keyframes ds-signup-success-icon {
4193
- 0% {
4194
- transform: scale(0);
4195
- opacity: 0;
4196
- }
4197
- 50% {
4198
- transform: scale(1.2);
4199
- }
4200
- 100% {
4201
- transform: scale(1);
4202
- opacity: 1;
4203
- }
4204
- }
4205
- .ds-signup__success-title {
4206
- font-family: var(--font-family);
4207
- font-size: var(--font-size-2xl);
4208
- font-weight: var(--font-weight-bold);
4209
- color: var(--text-primary);
4210
- margin: 0 0 var(--space-2);
4211
- }
4212
- .ds-signup__success-message {
4213
- font-family: var(--font-family);
4214
- font-size: var(--font-size-base);
4215
- color: var(--text-secondary);
4216
- margin: 0 0 var(--space-6);
4217
- line-height: var(--line-height-normal);
4218
- }
4219
- .ds-signup__success-btn {
4220
- width: 100%;
4221
- }
4222
- .ds-signup__header {
4223
- text-align: center;
4224
- margin-bottom: var(--space-6);
4225
- }
4226
- .ds-signup__logo {
4227
- display: flex;
4228
- justify-content: center;
4229
- margin-bottom: var(--space-4);
4230
- animation: ds-signup-fade-in 0.5s ease-out 0.1s forwards;
4231
- opacity: 0;
4232
- }
4233
- .ds-signup__logo-icon {
4234
- width: 56px;
4235
- height: 56px;
4236
- animation: ds-signup-logo-pulse 3s ease-in-out infinite;
4237
- }
4238
- .ds-signup__logo-icon svg {
4239
- width: 100%;
4240
- height: 100%;
4241
- filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
4242
- }
4243
- @keyframes ds-signup-logo-pulse {
4244
- 0%, 100% {
4245
- transform: scale(1);
4246
- filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
4247
- }
4248
- 50% {
4249
- transform: scale(1.05);
4250
- filter: drop-shadow(0 6px 20px rgba(var(--accent-rgb), 0.5));
4251
- }
4252
- }
4253
- .ds-signup__title {
4254
- font-family: var(--font-family);
4255
- font-size: var(--font-size-2xl);
4256
- font-weight: var(--font-weight-bold);
4257
- color: var(--text-primary);
4258
- margin: 0 0 var(--space-2);
4259
- animation: ds-signup-fade-in 0.5s ease-out 0.2s forwards;
4260
- opacity: 0;
4261
- }
4262
- .ds-signup__tagline {
4263
- font-family: var(--font-family);
4264
- font-size: var(--font-size-sm);
4265
- color: var(--text-secondary);
4266
- margin: 0;
4267
- line-height: var(--line-height-normal);
4268
- animation: ds-signup-fade-in 0.5s ease-out 0.3s forwards;
4269
- opacity: 0;
4270
- }
4271
- @keyframes ds-signup-fade-in {
4272
- to {
4273
- opacity: 1;
4274
- }
4275
- }
4276
- .ds-signup__error {
4277
- display: flex;
4278
- align-items: center;
4279
- gap: var(--space-2);
4280
- padding: var(--space-3) var(--space-4);
4281
- margin-bottom: var(--space-4);
4282
- border-radius: var(--radius-button);
4283
- background: rgba(var(--status-error-rgb), 0.1);
4284
- border: 1px solid rgba(var(--status-error-rgb), 0.3);
4285
- color: var(--status-error);
4286
- font-size: var(--font-size-sm);
4287
- animation: ds-signup-error-enter 0.4s ease-out;
4288
- }
4289
- @keyframes ds-signup-error-enter {
4290
- 0% {
4291
- opacity: 0;
4292
- transform: translateX(-10px);
4293
- }
4294
- 50% {
4295
- transform: translateX(5px);
4296
- }
4297
- 100% {
4298
- opacity: 1;
4299
- transform: translateX(0);
4300
- }
4301
- }
4302
- .ds-signup__social {
4303
- margin-bottom: var(--space-4);
4304
- animation: ds-signup-fade-in 0.5s ease-out 0.4s forwards;
4305
- opacity: 0;
4306
- }
4307
- .ds-signup__social-btn {
4308
- display: flex;
4309
- align-items: center;
4310
- justify-content: center;
4311
- gap: var(--space-3);
4312
- width: 100%;
4313
- padding: var(--space-3) var(--space-4);
4314
- margin-bottom: var(--space-3);
4315
- border: none;
4316
- border-radius: var(--radius-button);
4317
- background: var(--glass-base);
4318
- color: var(--text-primary);
4319
- font-family: var(--font-family);
4320
- font-size: var(--font-size-base);
4321
- font-weight: var(--font-weight-medium);
4322
- cursor: pointer;
4323
- position: relative;
4324
- transition:
4325
- background var(--transition-glass),
4326
- transform var(--transition-glass),
4327
- box-shadow var(--transition-glass);
4328
- }
4329
- .ds-signup__social-btn::before {
4330
- content: "";
4331
- position: absolute;
4332
- inset: 0;
4333
- border-radius: inherit;
4334
- padding: 1px;
4335
- background:
4336
- linear-gradient(
4337
- 180deg,
4338
- var(--rim-light-top) 0%,
4339
- var(--rim-light-bottom) 100%);
4340
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
4341
- mask-composite: exclude;
4342
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
4343
- -webkit-mask-composite: xor;
4344
- pointer-events: none;
4345
- transition: background var(--transition-glass);
4346
- }
4347
- .ds-signup__social-btn:hover:not(:disabled) {
4348
- background: var(--glass-base-hover);
4349
- transform: translateY(-2px);
4350
- box-shadow: var(--shadow-lg);
4351
- }
4352
- .ds-signup__social-btn:disabled {
4353
- opacity: 0.5;
4354
- cursor: not-allowed;
4355
- }
4356
- .ds-signup__divider {
4357
- display: flex;
4358
- align-items: center;
4359
- gap: var(--space-4);
4360
- margin: var(--space-4) 0;
4361
- color: var(--text-tertiary);
4362
- font-size: var(--font-size-sm);
4363
- }
4364
- .ds-signup__divider::before,
4365
- .ds-signup__divider::after {
4366
- content: "";
4367
- flex: 1;
4368
- height: 1px;
4369
- background:
4370
- linear-gradient(
4371
- 90deg,
4372
- transparent 0%,
4373
- var(--rim-light-top) 50%,
4374
- transparent 100%);
4375
- }
4376
- .ds-signup__form {
4377
- animation: ds-signup-fade-in 0.5s ease-out 0.5s forwards;
4378
- opacity: 0;
4379
- }
4380
- .ds-signup__field {
4381
- margin-bottom: var(--space-4);
4382
- }
4383
- .ds-signup__phone-container {
4384
- display: flex;
4385
- align-items: center;
4386
- position: relative;
4387
- width: 100%;
4388
- }
4389
- .ds-signup__phone-container.ds-textfield__input {
4390
- display: flex;
4391
- align-items: center;
4392
- position: relative;
4393
- width: 100%;
4394
- padding: 0;
4395
- overflow: hidden;
4396
- }
4397
- .ds-signup__flag-select-wrapper {
4398
- position: relative;
4399
- display: flex;
4400
- align-items: center;
4401
- align-self: stretch;
4402
- }
4403
- .ds-signup__flag-select-native {
4404
- position: absolute;
4405
- inset: 0;
4406
- width: 100%;
4407
- height: 100%;
4408
- opacity: 0;
4409
- cursor: pointer;
4410
- z-index: 2;
4411
- }
4412
- .ds-signup__flag-display {
4413
- display: flex;
4414
- align-items: center;
4415
- gap: var(--space-2);
4416
- padding: var(--space-3) var(--space-3) var(--space-3) var(--space-4);
4417
- height: 100%;
4418
- background: transparent;
4419
- color: var(--text-primary);
4420
- border-right: 1px solid var(--border-subtle);
4421
- pointer-events: none;
4422
- }
4423
- .ds-signup__flag-icon {
4424
- font-size: var(--font-size-lg);
4425
- line-height: 1;
4426
- }
4427
- .ds-signup__phone-input-native {
4428
- flex-grow: 1;
4429
- border: none !important;
4430
- background: transparent !important;
4431
- border-radius: 0 !important;
4432
- box-shadow: none !important;
4433
- padding: var(--space-3) var(--space-4) var(--space-3) var(--space-3) !important;
4434
- color: inherit;
4435
- font-family: inherit;
4436
- font-size: inherit;
4437
- outline: none;
4438
- }
4439
- .ds-signup__phone-input-native:focus {
4440
- outline: none;
4441
- border-color: transparent !important;
4442
- box-shadow: none !important;
2217
+ .ds-shell--bottom .ds-shell__content {
2218
+ padding-left: var(--float-distance);
2219
+ padding-right: var(--float-distance);
2220
+ padding-bottom: calc(80px + var(--float-distance) * 2);
4443
2221
  }
4444
- .ds-signup__phone-container:disabled,
4445
- .ds-signup__phone-input-native:disabled {
4446
- opacity: 0.5;
4447
- cursor: not-allowed;
2222
+ @media (max-width: 768px) {
2223
+ .ds-shell--left .ds-shell__content,
2224
+ .ds-shell--right .ds-shell__content {
2225
+ padding-left: var(--float-distance);
2226
+ padding-right: var(--float-distance);
2227
+ }
2228
+ .ds-shell__content {
2229
+ padding-bottom: calc(var(--float-distance) + env(safe-area-inset-bottom, 0px));
2230
+ }
4448
2231
  }
4449
- .ds-signup__password-wrapper {
2232
+
2233
+ /* src/components/LocaleDropdown/LocaleDropdown.css */
2234
+ .ds-locale-dropdown {
4450
2235
  position: relative;
2236
+ display: inline-flex;
2237
+ flex-shrink: 0;
4451
2238
  }
4452
- .ds-signup__password-wrapper .ds-textfield__input {
4453
- padding-right: var(--space-12);
2239
+ .ds-locale-dropdown__wrapper {
2240
+ position: relative;
4454
2241
  }
4455
- .ds-signup__password-toggle {
4456
- position: absolute;
4457
- right: var(--space-3);
4458
- top: 60%;
4459
- transform: translateY(calc(-50% + 10px));
4460
- padding: var(--space-2);
2242
+ .ds-locale-dropdown__trigger {
2243
+ display: inline-flex;
2244
+ align-items: center;
2245
+ gap: var(--space-1-5);
2246
+ padding: var(--space-2) var(--space-2-5);
4461
2247
  border: none;
2248
+ border-radius: var(--radius-button);
4462
2249
  background: transparent;
4463
- color: var(--text-tertiary);
4464
- cursor: pointer;
4465
- border-radius: var(--radius-badge);
4466
- transition: color var(--transition-glass), background var(--transition-glass);
4467
- }
4468
- .ds-signup__password-toggle:hover {
4469
- color: var(--text-primary);
4470
- background: var(--glass-base-hover);
4471
- }
4472
- .ds-signup__strength {
4473
- display: flex;
4474
- align-items: center;
4475
- gap: var(--space-3);
4476
- margin-top: var(--space-2);
4477
- }
4478
- .ds-signup__strength-bar {
4479
- display: flex;
4480
- gap: var(--space-1);
4481
- flex: 1;
4482
- }
4483
- .ds-signup__strength-segment {
4484
- height: 4px;
4485
- flex: 1;
4486
- border-radius: 2px;
4487
- background: var(--glass-base-hover);
4488
- transition: background-color var(--transition-fast);
4489
- }
4490
- .ds-signup__strength-segment--active {
4491
- background: var(--status-success);
4492
- }
4493
- .ds-signup__strength-label {
2250
+ color: var(--text-secondary);
4494
2251
  font-family: var(--font-family);
4495
2252
  font-size: var(--font-size-xs);
4496
2253
  font-weight: var(--font-weight-medium);
2254
+ line-height: 1;
2255
+ cursor: pointer;
4497
2256
  white-space: nowrap;
4498
- transition: color var(--transition-fast);
4499
- }
4500
- .ds-signup__terms {
4501
- display: flex;
4502
- align-items: flex-start;
4503
- gap: var(--space-2);
4504
- margin-bottom: var(--space-6);
4505
- }
4506
- .ds-signup__terms-text {
4507
- font-family: var(--font-family);
4508
- font-size: var(--font-size-sm);
4509
- color: var(--text-secondary);
4510
- line-height: var(--line-height-normal);
2257
+ transition: background var(--transition-fast), color var(--transition-fast);
4511
2258
  }
4512
- .ds-signup__link {
4513
- padding: 0;
4514
- border: none;
4515
- background: transparent;
4516
- color: rgb(var(--accent-rgb));
4517
- font-family: var(--font-family);
4518
- font-size: inherit;
4519
- font-weight: var(--font-weight-medium);
4520
- cursor: pointer;
4521
- transition: color var(--transition-glass);
2259
+ .ds-locale-dropdown__trigger:hover {
2260
+ background: var(--glass-base-hover);
2261
+ color: var(--text-primary);
4522
2262
  }
4523
- .ds-signup__link:hover:not(:disabled) {
4524
- text-decoration: underline;
2263
+ .ds-locale-dropdown__trigger:focus-visible {
2264
+ outline: none;
2265
+ box-shadow: var(--focus-ring);
4525
2266
  }
4526
- .ds-signup__link:disabled {
4527
- opacity: 0.5;
4528
- cursor: not-allowed;
2267
+ .ds-locale-dropdown__trigger-icon {
2268
+ display: flex;
2269
+ align-items: center;
2270
+ color: var(--text-tertiary);
2271
+ flex-shrink: 0;
4529
2272
  }
4530
- .ds-signup__link--accent {
4531
- color: rgb(var(--accent-rgb));
2273
+ .ds-locale-dropdown__trigger-flag {
2274
+ font-size: var(--font-size-xs);
2275
+ line-height: 1;
2276
+ display: inline-flex;
2277
+ align-items: center;
2278
+ height: 16px;
2279
+ overflow: hidden;
4532
2280
  }
4533
- .ds-signup__submit {
4534
- width: 100%;
2281
+ .ds-locale-dropdown__trigger-chevron {
2282
+ display: inline-flex;
2283
+ align-items: center;
2284
+ color: var(--text-tertiary);
2285
+ flex-shrink: 0;
2286
+ transition: transform 0.2s cubic-bezier(0.2, 0.8, 0.2, 1), color var(--transition-fast);
4535
2287
  }
4536
- .ds-signup__spinner {
4537
- display: inline-block;
4538
- width: 20px;
4539
- height: 20px;
4540
- border: 2px solid var(--hc-border);
4541
- border-top-color: var(--hc-control-knob);
4542
- border-radius: 50%;
4543
- animation: ds-signup-spin 0.8s linear infinite;
2288
+ .ds-locale-dropdown__trigger-chevron[data-state=open] {
2289
+ transform: rotate(180deg);
4544
2290
  }
4545
- @keyframes ds-signup-spin {
4546
- to {
4547
- transform: rotate(360deg);
4548
- }
2291
+ .ds-locale-dropdown__trigger:hover .ds-locale-dropdown__trigger-chevron {
2292
+ color: var(--text-secondary);
4549
2293
  }
4550
- .ds-signup__footer {
4551
- display: flex;
4552
- align-items: center;
4553
- justify-content: center;
4554
- gap: var(--space-2);
4555
- margin-top: var(--space-6);
4556
- padding-top: var(--space-6);
4557
- border-top: 1px solid var(--rim-light-bottom);
4558
- font-size: var(--font-size-sm);
4559
- color: var(--text-tertiary);
4560
- animation: ds-signup-fade-in 0.5s ease-out 0.6s forwards;
2294
+ .ds-locale-dropdown__panel {
2295
+ position: absolute;
2296
+ top: calc(100% + var(--space-2));
2297
+ right: 0;
2298
+ min-width: 180px;
2299
+ padding: var(--space-1-5);
2300
+ z-index: var(--z-dropdown);
2301
+ transform-origin: top right;
2302
+ overflow: hidden;
2303
+ background: var(--void-base);
2304
+ backdrop-filter: blur(24px) saturate(180%);
2305
+ -webkit-backdrop-filter: blur(24px) saturate(180%);
2306
+ border: 1px solid var(--rim-light-bottom);
2307
+ border-radius: var(--radius-card);
2308
+ box-shadow: var(--shadow-xl), 0 0 0 1px var(--rim-light-bottom);
4561
2309
  opacity: 0;
2310
+ transform: translateY(-8px) scale(0.95);
2311
+ visibility: hidden;
2312
+ pointer-events: none;
2313
+ transition:
2314
+ opacity 0.15s cubic-bezier(0.4, 0, 1, 1),
2315
+ transform 0.15s cubic-bezier(0.4, 0, 1, 1),
2316
+ visibility 0s 0.15s;
4562
2317
  }
4563
- @media (max-width: 480px) {
4564
- .ds-signup {
4565
- padding: var(--space-4);
4566
- }
4567
- .ds-signup__card {
4568
- padding: var(--space-6);
4569
- border-radius: var(--radius-card);
4570
- }
4571
- .ds-signup__accent--1 {
4572
- width: 200px;
4573
- height: 200px;
4574
- top: -50px;
4575
- right: -50px;
4576
- }
4577
- .ds-signup__accent--2 {
4578
- width: 150px;
4579
- height: 150px;
4580
- bottom: -30px;
4581
- left: -30px;
4582
- }
2318
+ .ds-locale-dropdown__panel[data-state=open] {
2319
+ opacity: 1;
2320
+ transform: translateY(0) scale(1);
2321
+ visibility: visible;
2322
+ pointer-events: auto;
2323
+ transition:
2324
+ opacity 0.2s cubic-bezier(0.2, 0.8, 0.2, 1),
2325
+ transform 0.2s cubic-bezier(0.2, 0.8, 0.2, 1),
2326
+ visibility 0s 0s;
4583
2327
  }
4584
- @media (prefers-reduced-motion: reduce) {
4585
- .ds-signup__card,
4586
- .ds-signup__logo,
4587
- .ds-signup__title,
4588
- .ds-signup__tagline,
4589
- .ds-signup__social,
4590
- .ds-signup__form,
4591
- .ds-signup__footer,
4592
- .ds-signup__trust,
4593
- .ds-signup__success-icon {
4594
- animation: none;
4595
- opacity: 1;
4596
- }
4597
- .ds-signup__accent {
4598
- animation: none;
4599
- }
4600
- .ds-signup__logo-icon {
4601
- animation: none;
4602
- }
4603
- .ds-signup__spinner {
4604
- animation-duration: 1.5s;
4605
- }
2328
+ .ds-locale-dropdown--up .ds-locale-dropdown__panel {
2329
+ top: auto;
2330
+ bottom: calc(100% + var(--space-2));
2331
+ transform-origin: bottom right;
4606
2332
  }
4607
- @media (prefers-contrast: more) {
4608
- .ds-signup__card {
4609
- border: 1px solid var(--hc-border);
4610
- }
4611
- .ds-signup__social-btn {
4612
- border: 1px solid var(--hc-border-subtle);
4613
- }
4614
- .ds-signup__social-btn::before {
4615
- display: none;
4616
- }
2333
+ .ds-locale-dropdown--up .ds-locale-dropdown__panel[data-state=closed] {
2334
+ transform: translateY(8px) scale(0.95);
4617
2335
  }
4618
-
4619
- /* src/components/ForgotPassword/ForgotPassword.css */
4620
- .ds-forgot {
4621
- position: relative;
4622
- display: flex;
4623
- flex-direction: column;
4624
- align-items: center;
4625
- justify-content: center;
4626
- padding: var(--space-6);
2336
+ .ds-locale-dropdown--align-left .ds-locale-dropdown__panel {
2337
+ right: auto;
2338
+ left: 0;
2339
+ transform-origin: top left;
4627
2340
  }
4628
- .ds-forgot__accent {
4629
- position: absolute;
4630
- border-radius: 50%;
4631
- filter: blur(80px);
4632
- opacity: 0.5;
4633
- pointer-events: none;
4634
- animation: ds-forgot-float 20s ease-in-out infinite;
2341
+ .ds-locale-dropdown--align-center .ds-locale-dropdown__panel {
2342
+ right: auto;
2343
+ left: 50%;
2344
+ transform-origin: top center;
4635
2345
  }
4636
- .ds-forgot__accent--1 {
4637
- width: 400px;
4638
- height: 400px;
4639
- background:
4640
- radial-gradient(
4641
- circle,
4642
- rgba(var(--accent-rgb), 0.4) 0%,
4643
- transparent 70%);
4644
- top: -100px;
4645
- right: -100px;
4646
- animation-delay: 0s;
2346
+ .ds-locale-dropdown--align-center .ds-locale-dropdown__panel[data-state=closed] {
2347
+ transform: translateX(-50%) translateY(-8px) scale(0.95);
4647
2348
  }
4648
- .ds-forgot__accent--2 {
4649
- width: 300px;
4650
- height: 300px;
4651
- background:
4652
- radial-gradient(
4653
- circle,
4654
- rgba(var(--accent2-rgb), 0.3) 0%,
4655
- transparent 70%);
4656
- bottom: -50px;
4657
- left: -50px;
4658
- animation-delay: -10s;
2349
+ .ds-locale-dropdown--align-center .ds-locale-dropdown__panel[data-state=open] {
2350
+ transform: translateX(-50%) translateY(0) scale(1);
4659
2351
  }
4660
- @keyframes ds-forgot-float {
4661
- 0%, 100% {
4662
- transform: translate(0, 0) scale(1);
4663
- }
4664
- 25% {
4665
- transform: translate(20px, -30px) scale(1.05);
4666
- }
4667
- 50% {
4668
- transform: translate(-10px, 20px) scale(0.95);
4669
- }
4670
- 75% {
4671
- transform: translate(-30px, -10px) scale(1.02);
4672
- }
2352
+ .ds-locale-dropdown--up.ds-locale-dropdown--align-left .ds-locale-dropdown__panel {
2353
+ transform-origin: bottom left;
4673
2354
  }
4674
- .ds-forgot__card {
4675
- position: relative;
4676
- width: 100%;
4677
- max-width: 400px;
4678
- padding: var(--space-8);
4679
- border-radius: var(--radius-panel);
4680
- background: var(--glass-base);
4681
- backdrop-filter: var(--glass-backdrop);
4682
- -webkit-backdrop-filter: var(--glass-backdrop);
4683
- box-shadow: var(--glass-shadow-elevated-combined);
4684
- animation: ds-forgot-card-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
4685
- opacity: 0;
4686
- transform: translateY(20px);
2355
+ .ds-locale-dropdown--up.ds-locale-dropdown--align-center .ds-locale-dropdown__panel {
2356
+ transform-origin: bottom center;
2357
+ }
2358
+ .ds-locale-dropdown--up.ds-locale-dropdown--align-center .ds-locale-dropdown__panel[data-state=closed] {
2359
+ transform: translateX(-50%) translateY(8px) scale(0.95);
4687
2360
  }
4688
- .ds-forgot__card::before {
2361
+ .ds-locale-dropdown__panel::before {
4689
2362
  content: "";
4690
2363
  position: absolute;
4691
- inset: 0;
4692
- border-radius: inherit;
4693
- padding: 1px;
2364
+ top: 0;
2365
+ left: 0;
2366
+ right: 0;
2367
+ height: 1px;
2368
+ border-radius: var(--radius-card) var(--radius-card) 0 0;
4694
2369
  background:
4695
2370
  linear-gradient(
4696
- 180deg,
4697
- var(--rim-light-hover-top) 0%,
4698
- var(--rim-light-bottom) 100%);
4699
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
4700
- mask-composite: exclude;
4701
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
4702
- -webkit-mask-composite: xor;
4703
- pointer-events: none;
4704
- }
4705
- .ds-forgot__card--centered {
4706
- text-align: center;
4707
- }
4708
- @keyframes ds-forgot-card-enter {
4709
- to {
4710
- opacity: 1;
4711
- transform: translateY(0);
4712
- }
4713
- }
4714
- .ds-forgot__header {
4715
- text-align: center;
4716
- margin-bottom: var(--space-6);
2371
+ 90deg,
2372
+ transparent 0%,
2373
+ var(--rim-light-top) 30%,
2374
+ var(--rim-light-hover-top) 50%,
2375
+ var(--rim-light-top) 70%,
2376
+ transparent 100%);
2377
+ opacity: 0.6;
2378
+ pointer-events: none;
4717
2379
  }
4718
- .ds-forgot__logo {
2380
+ .ds-locale-dropdown__option {
4719
2381
  display: flex;
4720
- justify-content: center;
4721
- margin-bottom: var(--space-4);
4722
- animation: ds-forgot-fade-in 0.5s ease-out 0.1s forwards;
4723
- opacity: 0;
4724
- }
4725
- .ds-forgot__logo-icon {
4726
- width: 56px;
4727
- height: 56px;
4728
- }
4729
- .ds-forgot__logo-icon svg {
2382
+ align-items: center;
2383
+ justify-content: space-between;
4730
2384
  width: 100%;
4731
- height: 100%;
4732
- filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
4733
- }
4734
- .ds-forgot__title {
2385
+ padding: var(--space-2) var(--space-3);
2386
+ border: none;
2387
+ border-radius: var(--radius-button);
2388
+ background: transparent;
2389
+ color: var(--text-secondary);
4735
2390
  font-family: var(--font-family);
4736
- font-size: var(--font-size-2xl);
4737
- font-weight: var(--font-weight-bold);
2391
+ font-size: var(--font-size-sm);
2392
+ font-weight: var(--font-weight-regular);
2393
+ cursor: pointer;
2394
+ text-decoration: none;
2395
+ text-align: left;
2396
+ white-space: nowrap;
2397
+ transition: background var(--transition-fast), color var(--transition-fast);
2398
+ }
2399
+ .ds-locale-dropdown__option:hover,
2400
+ .ds-locale-dropdown__option--focused {
2401
+ background: var(--glass-base-hover);
4738
2402
  color: var(--text-primary);
4739
- margin: 0 0 var(--space-2);
4740
- animation: ds-forgot-fade-in 0.5s ease-out 0.2s forwards;
4741
- opacity: 0;
4742
2403
  }
4743
- .ds-forgot__tagline {
4744
- font-family: var(--font-family);
4745
- font-size: var(--font-size-sm);
4746
- color: var(--text-secondary);
4747
- margin: 0;
4748
- line-height: var(--line-height-normal);
4749
- animation: ds-forgot-fade-in 0.5s ease-out 0.3s forwards;
4750
- opacity: 0;
2404
+ .ds-locale-dropdown__option:focus-visible {
2405
+ outline: none;
2406
+ box-shadow: var(--focus-ring);
4751
2407
  }
4752
- .ds-forgot__tagline strong {
2408
+ .ds-locale-dropdown__option--active {
2409
+ background: rgba(var(--brand-pink-rgb), 0.08);
4753
2410
  color: var(--text-primary);
2411
+ font-weight: var(--font-weight-medium);
4754
2412
  }
4755
- @keyframes ds-forgot-fade-in {
4756
- to {
4757
- opacity: 1;
4758
- }
2413
+ .ds-locale-dropdown__option--active:hover,
2414
+ .ds-locale-dropdown__option--active.ds-locale-dropdown__option--focused {
2415
+ background: rgba(var(--brand-pink-rgb), 0.14);
4759
2416
  }
4760
- .ds-forgot__success-icon {
4761
- width: 64px;
4762
- height: 64px;
4763
- margin: 0 auto var(--space-6);
4764
- animation: ds-forgot-success-icon 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
2417
+ .ds-locale-dropdown__option-content {
2418
+ display: flex;
2419
+ align-items: center;
2420
+ gap: var(--space-2);
4765
2421
  }
4766
- .ds-forgot__success-icon svg {
4767
- width: 100%;
4768
- height: 100%;
2422
+ .ds-locale-dropdown__option-flag {
2423
+ font-size: var(--font-size-sm);
2424
+ line-height: 1;
2425
+ flex-shrink: 0;
4769
2426
  }
4770
- @keyframes ds-forgot-success-icon {
4771
- 0% {
4772
- transform: scale(0);
4773
- opacity: 0;
2427
+ .ds-locale-dropdown__option-label {
2428
+ white-space: nowrap;
2429
+ }
2430
+ .ds-locale-dropdown__option-check {
2431
+ display: flex;
2432
+ align-items: center;
2433
+ color: rgba(var(--brand-pink-rgb), 1);
2434
+ flex-shrink: 0;
2435
+ margin-left: var(--space-3);
2436
+ }
2437
+ @media (max-width: 1399px) {
2438
+ .ds-locale-dropdown__trigger {
2439
+ padding: var(--space-1-5) var(--space-2);
2440
+ gap: var(--space-1);
4774
2441
  }
4775
- 50% {
4776
- transform: scale(1.2);
2442
+ .ds-locale-dropdown__trigger-flag {
2443
+ display: none;
4777
2444
  }
4778
- 100% {
4779
- transform: scale(1);
4780
- opacity: 1;
2445
+ .ds-locale-dropdown__trigger-chevron {
2446
+ display: none;
4781
2447
  }
4782
2448
  }
4783
- .ds-forgot__error {
4784
- display: flex;
4785
- align-items: center;
4786
- gap: var(--space-2);
4787
- padding: var(--space-3) var(--space-4);
4788
- margin-bottom: var(--space-4);
4789
- border-radius: var(--radius-button);
4790
- background: rgba(var(--status-error-rgb), 0.1);
4791
- border: 1px solid rgba(var(--status-error-rgb), 0.3);
4792
- color: var(--status-error);
4793
- font-size: var(--font-size-sm);
4794
- animation: ds-forgot-error-enter 0.4s ease-out;
2449
+ :root[data-theme=light] .ds-locale-dropdown__panel,
2450
+ :root[data-theme=light-contrast] .ds-locale-dropdown__panel {
2451
+ box-shadow: var(--shadow-sm), 0 0 0 1px var(--rim-light-bottom);
4795
2452
  }
4796
- @keyframes ds-forgot-error-enter {
4797
- 0% {
4798
- opacity: 0;
4799
- transform: translateX(-10px);
2453
+ @media (prefers-reduced-motion: reduce) {
2454
+ .ds-locale-dropdown__trigger {
2455
+ transition: none;
2456
+ }
2457
+ .ds-locale-dropdown__trigger-chevron {
2458
+ transition: none;
4800
2459
  }
4801
- 50% {
4802
- transform: translateX(5px);
2460
+ .ds-locale-dropdown__panel {
2461
+ transition: none;
4803
2462
  }
4804
- 100% {
4805
- opacity: 1;
4806
- transform: translateX(0);
2463
+ .ds-locale-dropdown__option {
2464
+ transition: none;
4807
2465
  }
4808
2466
  }
4809
- .ds-forgot__form {
4810
- animation: ds-forgot-fade-in 0.5s ease-out 0.4s forwards;
4811
- opacity: 0;
2467
+ @media (prefers-contrast: more) {
2468
+ .ds-locale-dropdown__trigger {
2469
+ outline: 1px solid var(--hc-border);
2470
+ outline-offset: -1px;
2471
+ }
2472
+ .ds-locale-dropdown__panel {
2473
+ border: 1px solid var(--hc-border);
2474
+ background: var(--hc-surface);
2475
+ }
2476
+ .ds-locale-dropdown__option--active {
2477
+ background: rgba(var(--brand-pink-rgb), 0.3);
2478
+ border: 1px solid rgba(var(--brand-pink-rgb), 0.5);
2479
+ }
4812
2480
  }
4813
- .ds-forgot__field {
4814
- margin-bottom: var(--space-4);
2481
+ @supports not (backdrop-filter: blur(1px)) {
2482
+ .ds-locale-dropdown__panel {
2483
+ background: var(--fallback-surface);
2484
+ }
4815
2485
  }
4816
- .ds-forgot__password-wrapper {
4817
- position: relative;
2486
+
2487
+ /* src/components/ThemeSelector/ThemeSelector.css */
2488
+ .ds-theme-selector {
2489
+ display: inline-flex;
2490
+ align-items: center;
2491
+ border: 1px solid var(--rim-light-top);
2492
+ border-radius: var(--radius-badge);
2493
+ padding: var(--space-1);
2494
+ gap: var(--space-1);
4818
2495
  }
4819
- .ds-forgot__password-wrapper .ds-textfield__input {
4820
- padding-right: var(--space-12);
2496
+ [data-theme=light] .ds-theme-selector,
2497
+ [data-theme=light-contrast] .ds-theme-selector {
2498
+ background-color: var(--void-base);
4821
2499
  }
4822
- .ds-forgot__password-toggle {
4823
- position: absolute;
4824
- right: var(--space-3);
4825
- top: 60%;
4826
- transform: translateY(calc(-50% + 10px));
4827
- padding: var(--space-2);
2500
+ [data-theme=dark] .ds-theme-selector,
2501
+ [data-theme=dark-contrast] .ds-theme-selector {
2502
+ background: var(--glass-base);
2503
+ backdrop-filter: var(--glass-backdrop);
2504
+ -webkit-backdrop-filter: var(--glass-backdrop);
2505
+ }
2506
+ .ds-theme-selector__btn {
2507
+ display: flex;
2508
+ align-items: center;
2509
+ gap: var(--space-2);
2510
+ padding: var(--space-2) var(--space-3);
4828
2511
  border: none;
4829
2512
  background: transparent;
4830
- color: var(--text-tertiary);
4831
- cursor: pointer;
2513
+ color: var(--text-secondary);
2514
+ font-family: inherit;
2515
+ font-size: var(--font-size-sm, 14px);
2516
+ font-weight: 500;
4832
2517
  border-radius: var(--radius-badge);
4833
- transition: color var(--transition-glass), background var(--transition-glass);
2518
+ cursor: pointer;
2519
+ transition: color var(--transition-fast), background-color var(--transition-fast);
2520
+ line-height: 1;
2521
+ white-space: nowrap;
4834
2522
  }
4835
- .ds-forgot__password-toggle:hover {
2523
+ .ds-theme-selector__btn:hover {
4836
2524
  color: var(--text-primary);
4837
- background: var(--glass-base-hover);
4838
- }
4839
- .ds-forgot__submit {
4840
- width: 100%;
4841
- margin-top: var(--space-2);
4842
- }
4843
- .ds-forgot__spinner {
4844
- display: inline-block;
4845
- width: 20px;
4846
- height: 20px;
4847
- border: 2px solid var(--hc-border);
4848
- border-top-color: white;
4849
- border-radius: 50%;
4850
- animation: ds-forgot-spin 0.8s linear infinite;
2525
+ background-color: var(--interactive-hover-bg);
4851
2526
  }
4852
- @keyframes ds-forgot-spin {
4853
- to {
4854
- transform: rotate(360deg);
4855
- }
2527
+ .ds-theme-selector__btn--active {
2528
+ background-color: rgba(var(--accent-rgb), .2);
2529
+ box-shadow: none;
4856
2530
  }
4857
- .ds-forgot__hint {
4858
- margin-top: var(--space-6);
4859
- font-family: var(--font-family);
4860
- font-size: var(--font-size-sm);
4861
- color: var(--text-tertiary);
2531
+ [data-theme=light] .ds-theme-selector__btn--active .ds-theme-selector__label,
2532
+ [data-theme=light-contrast] .ds-theme-selector__btn--active .ds-theme-selector__label,
2533
+ [data-theme=dark] .ds-theme-selector__btn--active .ds-theme-selector__label,
2534
+ [data-theme=dark-contrast] .ds-theme-selector__btn--active .ds-theme-selector__label {
2535
+ color: var(--text-secondary);
4862
2536
  }
4863
- .ds-forgot__link {
4864
- padding: 0;
4865
- border: none;
4866
- background: transparent;
2537
+ .ds-theme-selector__btn--active .ds-theme-selector__icon {
4867
2538
  color: rgb(var(--accent-rgb));
4868
- font-family: var(--font-family);
4869
- font-size: inherit;
4870
- font-weight: var(--font-weight-medium);
4871
- cursor: pointer;
4872
- transition: color var(--transition-glass);
4873
- margin-left: var(--space-1);
4874
- }
4875
- .ds-forgot__link:hover:not(:disabled) {
4876
- text-decoration: underline;
4877
2539
  }
4878
- .ds-forgot__link:disabled {
4879
- opacity: 0.5;
4880
- cursor: not-allowed;
2540
+ .ds-theme-selector__icon {
2541
+ width: 16px;
2542
+ height: 16px;
2543
+ color: inherit;
2544
+ transition: color var(--transition-fast);
4881
2545
  }
4882
- .ds-forgot__footer {
2546
+
2547
+ /* src/components/ColorPicker/ColorPicker.css */
2548
+ .ds-color-picker {
4883
2549
  display: flex;
4884
- justify-content: center;
4885
- margin-top: var(--space-6);
4886
- padding-top: var(--space-6);
4887
- border-top: 1px solid var(--rim-light-bottom);
4888
- animation: ds-forgot-fade-in 0.5s ease-out 0.5s forwards;
4889
- opacity: 0;
2550
+ align-items: center;
2551
+ gap: var(--space-1);
2552
+ padding: var(--space-1);
2553
+ border-radius: var(--radius-badge);
2554
+ background: var(--interactive-hover-bg);
2555
+ border: 1px solid var(--rim-light-bottom);
4890
2556
  }
4891
- .ds-forgot__back {
2557
+ .ds-color-picker__swatch {
4892
2558
  display: flex;
4893
2559
  align-items: center;
4894
- gap: var(--space-2);
4895
- padding: var(--space-2) var(--space-3);
2560
+ justify-content: center;
2561
+ padding: var(--space-1);
4896
2562
  border: none;
4897
- border-radius: var(--radius-button);
2563
+ border-radius: var(--radius-xs);
4898
2564
  background: transparent;
4899
- color: var(--text-secondary);
4900
- font-family: var(--font-family);
4901
- font-size: var(--font-size-sm);
4902
- font-weight: var(--font-weight-medium);
4903
2565
  cursor: pointer;
4904
- transition: color var(--transition-glass), background var(--transition-glass);
2566
+ transition: background var(--transition-fast);
4905
2567
  }
4906
- .ds-forgot__back:hover:not(:disabled) {
4907
- color: var(--text-primary);
4908
- background: var(--glass-base-hover);
2568
+ .ds-color-picker__swatch:hover {
2569
+ background: var(--interactive-hover-bg);
4909
2570
  }
4910
- .ds-forgot__back:disabled {
4911
- opacity: 0.5;
4912
- cursor: not-allowed;
2571
+ .ds-color-picker__swatch--active {
2572
+ background: var(--interactive-active-bg);
4913
2573
  }
4914
- @media (max-width: 480px) {
4915
- .ds-forgot {
4916
- padding: var(--space-4);
4917
- }
4918
- .ds-forgot__card {
4919
- padding: var(--space-6);
4920
- border-radius: var(--radius-card);
4921
- }
4922
- .ds-forgot__accent--1 {
4923
- width: 200px;
4924
- height: 200px;
4925
- top: -50px;
4926
- right: -50px;
4927
- }
4928
- .ds-forgot__accent--2 {
4929
- width: 150px;
4930
- height: 150px;
4931
- bottom: -30px;
4932
- left: -30px;
4933
- }
2574
+ .ds-color-picker__dot {
2575
+ width: 14px;
2576
+ height: 14px;
2577
+ border-radius: 50%;
2578
+ background: var(--swatch-color);
2579
+ border: 1.5px solid var(--rim-light-bottom);
2580
+ transition: box-shadow var(--transition-fast);
4934
2581
  }
4935
- @media (prefers-reduced-motion: reduce) {
4936
- .ds-forgot__card,
4937
- .ds-forgot__logo,
4938
- .ds-forgot__title,
4939
- .ds-forgot__tagline,
4940
- .ds-forgot__form,
4941
- .ds-forgot__footer,
4942
- .ds-forgot__success-icon {
4943
- animation: none;
4944
- opacity: 1;
4945
- }
4946
- .ds-forgot__accent {
4947
- animation: none;
4948
- }
4949
- .ds-forgot__spinner {
4950
- animation-duration: 1.5s;
4951
- }
2582
+ .ds-color-picker__swatch--active .ds-color-picker__dot {
2583
+ box-shadow: 0 0 0 2px var(--swatch-color);
4952
2584
  }
4953
- @media (prefers-contrast: more) {
4954
- .ds-forgot__card {
4955
- border: 1px solid var(--hc-border);
4956
- }
2585
+ .ds-color-picker__swatch--custom {
2586
+ position: relative;
2587
+ }
2588
+ .ds-color-picker__native-input {
2589
+ position: absolute;
2590
+ inset: 0;
2591
+ width: 100%;
2592
+ height: 100%;
2593
+ opacity: 0;
2594
+ cursor: pointer;
2595
+ border: none;
2596
+ padding: 0;
4957
2597
  }
4958
2598
 
4959
2599
  /* src/styles/styles.css */
2600
+ @font-face {
2601
+ font-family: Anton;
2602
+ font-style: normal;
2603
+ font-weight: 400;
2604
+ font-display: swap;
2605
+ src: url("../Anton-Regular-MLEXVTB2.woff2") format("woff2");
2606
+ unicode-range:
2607
+ U+0000-00FF,
2608
+ U+0131,
2609
+ U+0152-0153,
2610
+ U+02BB-02BC,
2611
+ U+02C6,
2612
+ U+02DA,
2613
+ U+02DC,
2614
+ U+0304,
2615
+ U+0308,
2616
+ U+0329,
2617
+ U+2000-206F,
2618
+ U+20AC,
2619
+ U+2122,
2620
+ U+2191,
2621
+ U+2193,
2622
+ U+2212,
2623
+ U+2215,
2624
+ U+FEFF,
2625
+ U+FFFD;
2626
+ }