@salesmind-ai/design-system 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3027 @@
1
+ /* src/styles/tokens.css */
2
+ :root {
3
+ --void-grid-size: 80px;
4
+ --void-grain-opacity: 0.025;
5
+ --float-distance: 24px;
6
+ --density-multiplier: 1;
7
+ --radius-scale: 1;
8
+ --radius-panel: calc(32px * var(--radius-scale));
9
+ --radius-card: calc(24px * var(--radius-scale));
10
+ --radius-button: calc(12px * var(--radius-scale));
11
+ --radius-badge: calc(8px * var(--radius-scale));
12
+ --radius-pill: 9999px;
13
+ --font-family:
14
+ -apple-system,
15
+ BlinkMacSystemFont,
16
+ "SF Pro Display",
17
+ "Segoe UI",
18
+ Roboto,
19
+ "Helvetica Neue",
20
+ Arial,
21
+ sans-serif;
22
+ --font-family-mono:
23
+ "SF Mono",
24
+ SFMono-Regular,
25
+ ui-monospace,
26
+ Menlo,
27
+ Monaco,
28
+ "Cascadia Code",
29
+ monospace;
30
+ --font-size-xs: 0.75rem;
31
+ --font-size-sm: 0.875rem;
32
+ --font-size-base: 1rem;
33
+ --font-size-lg: 1.125rem;
34
+ --font-size-xl: 1.25rem;
35
+ --font-size-2xl: 1.5rem;
36
+ --font-size-3xl: 1.875rem;
37
+ --font-weight-normal: 400;
38
+ --font-weight-medium: 500;
39
+ --font-weight-semibold: 600;
40
+ --font-weight-bold: 700;
41
+ --line-height-tight: 1.25;
42
+ --line-height-normal: 1.5;
43
+ --line-height-relaxed: 1.75;
44
+ --space-1: calc(0.25rem * var(--density-multiplier));
45
+ --space-2: calc(0.5rem * var(--density-multiplier));
46
+ --space-3: calc(0.75rem * var(--density-multiplier));
47
+ --space-4: calc(1rem * var(--density-multiplier));
48
+ --space-5: calc(1.25rem * var(--density-multiplier));
49
+ --space-6: calc(1.5rem * var(--density-multiplier));
50
+ --space-8: calc(2rem * var(--density-multiplier));
51
+ --space-10: calc(2.5rem * var(--density-multiplier));
52
+ --space-12: calc(3rem * var(--density-multiplier));
53
+ --space-16: calc(4rem * var(--density-multiplier));
54
+ --space-20: calc(5rem * var(--density-multiplier));
55
+ --transition-fast: 150ms ease;
56
+ --transition-base: 200ms ease;
57
+ --transition-slow: 300ms ease;
58
+ --transition-glass: 200ms cubic-bezier(0.4, 0, 0.2, 1);
59
+ --z-void: 0;
60
+ --z-glass-panel: 10;
61
+ --z-ornament: 20;
62
+ --z-dropdown: 30;
63
+ --z-modal-backdrop: 40;
64
+ --z-modal: 50;
65
+ --z-tooltip: 60;
66
+ }
67
+ :root,
68
+ :root[data-theme=dark] {
69
+ --void-base: #08040a;
70
+ --void-base-rgb:
71
+ 8,
72
+ 4,
73
+ 10;
74
+ --void-grid-color: rgba(255, 255, 255, 0.04);
75
+ --text-primary: rgba(255, 255, 255, 0.95);
76
+ --text-secondary: rgba(255, 255, 255, 0.7);
77
+ --text-tertiary: rgba(255, 255, 255, 0.5);
78
+ --text-disabled: rgba(255, 255, 255, 0.3);
79
+ --glass-base: rgba(255, 255, 255, 0.01);
80
+ --glass-base-hover: rgba(255, 255, 255, 0.03);
81
+ --glass-base-active: rgba(255, 255, 255, 0.05);
82
+ --glass-blur: 40px;
83
+ --glass-saturate: 160%;
84
+ --glass-brightness: 90%;
85
+ --glass-backdrop: blur(var(--glass-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));
86
+ --glass-backdrop-light: blur(20px) saturate(140%) brightness(95%);
87
+ --glass-backdrop-heavy: blur(60px) saturate(180%) brightness(85%);
88
+ --rim-light-top: rgba(255, 255, 255, 0.12);
89
+ --rim-light-bottom: rgba(255, 255, 255, 0.03);
90
+ --rim-light-hover-top: rgba(255, 255, 255, 0.18);
91
+ --rim-light-hover-bottom: rgba(255, 255, 255, 0.06);
92
+ --rim-light-active-top: rgba(255, 255, 255, 0.22);
93
+ --rim-light-active-bottom: rgba(255, 255, 255, 0.08);
94
+ --glass-shadow-outer: 0 20px 50px rgba(0, 0, 0, 0.35);
95
+ --glass-shadow-inner: inset 0 1px 1px rgba(255, 255, 255, 0.1);
96
+ --glass-shadow-combined: var(--glass-shadow-outer), var(--glass-shadow-inner);
97
+ --glass-shadow-elevated: 0 30px 70px rgba(0, 0, 0, 0.45);
98
+ --glass-shadow-elevated-combined: var(--glass-shadow-elevated), var(--glass-shadow-inner);
99
+ }
100
+ :root[data-theme=dark-contrast] {
101
+ --void-base: #08040a;
102
+ --void-base-rgb:
103
+ 8,
104
+ 4,
105
+ 10;
106
+ --void-grid-color: rgba(255, 255, 255, 0.06);
107
+ --text-primary: rgba(255, 255, 255, 1);
108
+ --text-secondary: rgba(255, 255, 255, 0.9);
109
+ --text-tertiary: rgba(255, 255, 255, 0.75);
110
+ --text-disabled: rgba(255, 255, 255, 0.5);
111
+ --glass-base: rgba(255, 255, 255, 0.08);
112
+ --glass-base-hover: rgba(255, 255, 255, 0.12);
113
+ --glass-base-active: rgba(255, 255, 255, 0.16);
114
+ --glass-backdrop: blur(40px) saturate(100%) brightness(70%);
115
+ --glass-backdrop-light: blur(20px) saturate(100%) brightness(80%);
116
+ --glass-backdrop-heavy: blur(60px) saturate(100%) brightness(60%);
117
+ --rim-light-top: rgba(255, 255, 255, 0.35);
118
+ --rim-light-bottom: rgba(255, 255, 255, 0.12);
119
+ --rim-light-hover-top: rgba(255, 255, 255, 0.45);
120
+ --rim-light-hover-bottom: rgba(255, 255, 255, 0.18);
121
+ --rim-light-active-top: rgba(255, 255, 255, 0.55);
122
+ --rim-light-active-bottom: rgba(255, 255, 255, 0.22);
123
+ --glass-shadow-outer: 0 20px 50px rgba(0, 0, 0, 0.5);
124
+ --glass-shadow-inner: inset 0 1px 1px rgba(255, 255, 255, 0.15);
125
+ }
126
+ :root[data-theme=light] {
127
+ --void-base: #f4f5f7;
128
+ --void-base-rgb:
129
+ 244,
130
+ 245,
131
+ 247;
132
+ --void-grid-color: rgba(0, 0, 0, 0.04);
133
+ --text-primary: #171923;
134
+ --text-secondary: #4a5568;
135
+ --text-tertiary: #718096;
136
+ --text-disabled: #a0aec0;
137
+ --glass-base: rgba(255, 255, 255, 0.65);
138
+ --glass-base-hover: rgba(255, 255, 255, 0.75);
139
+ --glass-base-active: rgba(255, 255, 255, 0.85);
140
+ --glass-blur: 24px;
141
+ --glass-saturate: 180%;
142
+ --glass-brightness: 110%;
143
+ --glass-backdrop: blur(var(--glass-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));
144
+ --glass-backdrop-light: blur(16px) saturate(150%) brightness(105%);
145
+ --glass-backdrop-heavy: blur(40px) saturate(200%) brightness(100%);
146
+ --rim-light-top: rgba(255, 255, 255, 0.9);
147
+ --rim-light-bottom: rgba(255, 255, 255, 0.4);
148
+ --rim-light-hover-top: rgba(255, 255, 255, 1);
149
+ --rim-light-hover-bottom: rgba(255, 255, 255, 0.6);
150
+ --rim-light-active-top: rgba(255, 255, 255, 1);
151
+ --rim-light-active-bottom: rgba(255, 255, 255, 0.8);
152
+ --glass-shadow-outer: 0 10px 30px rgba(0, 0, 0, 0.08);
153
+ --glass-shadow-inner: inset 0 1px 0px rgba(255, 255, 255, 0.8);
154
+ --glass-shadow-combined: var(--glass-shadow-outer), var(--glass-shadow-inner);
155
+ --glass-shadow-elevated: 0 20px 40px rgba(0, 0, 0, 0.12);
156
+ --glass-shadow-elevated-combined: var(--glass-shadow-elevated), var(--glass-shadow-inner);
157
+ }
158
+ :root[data-theme=light-contrast] {
159
+ --void-base: #ffffff;
160
+ --void-base-rgb:
161
+ 255,
162
+ 255,
163
+ 255;
164
+ --void-grid-color: rgba(0, 0, 0, 0.08);
165
+ --text-primary: #000000;
166
+ --text-secondary: #1a1a1a;
167
+ --text-tertiary: #404040;
168
+ --text-disabled: #808080;
169
+ --glass-base: rgba(255, 255, 255, 0.9);
170
+ --glass-base-hover: rgba(255, 255, 255, 0.95);
171
+ --glass-base-active: rgba(255, 255, 255, 1);
172
+ --glass-blur: 16px;
173
+ --glass-saturate: 100%;
174
+ --glass-brightness: 100%;
175
+ --glass-backdrop: blur(var(--glass-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));
176
+ --rim-light-top: rgba(0, 0, 0, 0.08);
177
+ --rim-light-bottom: rgba(0, 0, 0, 0.02);
178
+ --rim-light-hover-top: rgba(0, 0, 0, 0.12);
179
+ --rim-light-hover-bottom: rgba(0, 0, 0, 0.04);
180
+ --glass-shadow-outer: 0 8px 24px rgba(0, 0, 0, 0.15);
181
+ --glass-shadow-inner: inset 0 1px 0px rgba(255, 255, 255, 1);
182
+ }
183
+ :root,
184
+ :root[data-brand=default] {
185
+ --accent-rgb:
186
+ 255,
187
+ 45,
188
+ 138;
189
+ --accent2-rgb:
190
+ 255,
191
+ 208,
192
+ 0;
193
+ --void-orb-pink: #ff2d8a;
194
+ --void-orb-pink-rgb:
195
+ 255,
196
+ 45,
197
+ 138;
198
+ --void-orb-yellow: #ffd000;
199
+ --void-orb-yellow-rgb:
200
+ 255,
201
+ 208,
202
+ 0;
203
+ --void-orb-purple: #4a1a6b;
204
+ --void-orb-purple-rgb:
205
+ 74,
206
+ 26,
207
+ 107;
208
+ --brand-pink: #ff2d8a;
209
+ --brand-pink-rgb:
210
+ 255,
211
+ 45,
212
+ 138;
213
+ --brand-pink-bright: #ff4da6;
214
+ --brand-pink-glow: rgba(255, 45, 138, 0.4);
215
+ --brand-yellow: #ffd000;
216
+ --brand-yellow-rgb:
217
+ 255,
218
+ 208,
219
+ 0;
220
+ --status-success: #00ff88;
221
+ --status-success-rgb:
222
+ 0,
223
+ 255,
224
+ 136;
225
+ --status-warning: #ffaa00;
226
+ --status-warning-rgb:
227
+ 255,
228
+ 170,
229
+ 0;
230
+ --status-error: #ff4466;
231
+ --status-error-rgb:
232
+ 255,
233
+ 68,
234
+ 102;
235
+ --status-info: #00aaff;
236
+ --status-info-rgb:
237
+ 0,
238
+ 170,
239
+ 255;
240
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.6);
241
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.7);
242
+ --btn-primary-glow: 0 0 30px rgba(var(--accent-rgb), 0.3);
243
+ --btn-primary-glow-hover: 0 0 40px rgba(var(--accent-rgb), 0.4);
244
+ --btn-secondary-bg: rgba(255, 255, 255, 0.05);
245
+ --btn-secondary-bg-hover: rgba(255, 255, 255, 0.08);
246
+ --focus-ring-color: rgba(var(--accent-rgb), 0.5);
247
+ --focus-ring: 0 0 0 2px var(--void-base), 0 0 0 4px var(--focus-ring-color);
248
+ }
249
+ [data-brand=resellerA] {
250
+ --accent-rgb:
251
+ 0,
252
+ 112,
253
+ 243;
254
+ --accent2-rgb:
255
+ 0,
256
+ 240,
257
+ 255;
258
+ --void-orb-pink: #0070f3;
259
+ --void-orb-pink-rgb:
260
+ 0,
261
+ 112,
262
+ 243;
263
+ --void-orb-yellow: #00f0ff;
264
+ --void-orb-yellow-rgb:
265
+ 0,
266
+ 240,
267
+ 255;
268
+ --void-orb-purple: #002040;
269
+ --void-orb-purple-rgb:
270
+ 0,
271
+ 32,
272
+ 64;
273
+ --brand-pink: #0070f3;
274
+ --brand-pink-rgb:
275
+ 0,
276
+ 112,
277
+ 243;
278
+ --brand-pink-bright: #3291ff;
279
+ --brand-pink-glow: rgba(0, 112, 243, 0.4);
280
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.6);
281
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.7);
282
+ --btn-primary-glow: 0 0 30px rgba(var(--accent-rgb), 0.3);
283
+ --btn-primary-glow-hover: 0 0 40px rgba(var(--accent-rgb), 0.4);
284
+ --focus-ring-color: rgba(var(--accent-rgb), 0.5);
285
+ }
286
+ [data-brand=resellerB] {
287
+ --accent-rgb:
288
+ 121,
289
+ 40,
290
+ 202;
291
+ --accent2-rgb:
292
+ 255,
293
+ 0,
294
+ 128;
295
+ --void-orb-pink: #7928ca;
296
+ --void-orb-pink-rgb:
297
+ 121,
298
+ 40,
299
+ 202;
300
+ --void-orb-yellow: #ff0080;
301
+ --void-orb-yellow-rgb:
302
+ 255,
303
+ 0,
304
+ 128;
305
+ --void-orb-purple: #2d0040;
306
+ --void-orb-purple-rgb:
307
+ 45,
308
+ 0,
309
+ 64;
310
+ --brand-pink: #7928ca;
311
+ --brand-pink-rgb:
312
+ 121,
313
+ 40,
314
+ 202;
315
+ --brand-pink-bright: #9e5cf7;
316
+ --brand-pink-glow: rgba(121, 40, 202, 0.4);
317
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.6);
318
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.7);
319
+ --btn-primary-glow: 0 0 30px rgba(var(--accent-rgb), 0.3);
320
+ --btn-primary-glow-hover: 0 0 40px rgba(var(--accent-rgb), 0.4);
321
+ --focus-ring-color: rgba(var(--accent-rgb), 0.5);
322
+ }
323
+ :root[data-theme=light][data-brand=default],
324
+ :root[data-theme=light-contrast][data-brand=default] {
325
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.85);
326
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.95);
327
+ --btn-secondary-bg: rgba(0, 0, 0, 0.05);
328
+ --btn-secondary-bg-hover: rgba(0, 0, 0, 0.08);
329
+ }
330
+ [data-theme=light][data-brand=resellerA],
331
+ [data-theme=light-contrast][data-brand=resellerA],
332
+ [data-brand=resellerA][data-theme=light],
333
+ [data-brand=resellerA][data-theme=light-contrast] {
334
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.85);
335
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.95);
336
+ --btn-secondary-bg: rgba(0, 0, 0, 0.05);
337
+ --btn-secondary-bg-hover: rgba(0, 0, 0, 0.08);
338
+ }
339
+ [data-theme=light][data-brand=resellerB],
340
+ [data-theme=light-contrast][data-brand=resellerB],
341
+ [data-brand=resellerB][data-theme=light],
342
+ [data-brand=resellerB][data-theme=light-contrast] {
343
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.85);
344
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.95);
345
+ --btn-secondary-bg: rgba(0, 0, 0, 0.05);
346
+ --btn-secondary-bg-hover: rgba(0, 0, 0, 0.08);
347
+ }
348
+ @media (prefers-contrast: more) {
349
+ :root {
350
+ --glass-base: rgba(255, 255, 255, 0.08);
351
+ --rim-light-top: rgba(255, 255, 255, 0.25);
352
+ --rim-light-bottom: rgba(255, 255, 255, 0.1);
353
+ }
354
+ }
355
+ @media (prefers-reduced-motion: reduce) {
356
+ :root {
357
+ --transition-fast: 0ms;
358
+ --transition-base: 0ms;
359
+ --transition-slow: 0ms;
360
+ --transition-glass: 0ms;
361
+ }
362
+ }
363
+ @media (max-width: 767px) {
364
+ :root {
365
+ --density-multiplier: 0.75;
366
+ --radius-scale: 0.75;
367
+ --float-distance: 16px;
368
+ }
369
+ }
370
+ @media (min-width: 768px) and (max-width: 1024px) {
371
+ :root {
372
+ --density-multiplier: 0.9;
373
+ --float-distance: 20px;
374
+ }
375
+ }
376
+ @media (min-width: 1441px) {
377
+ :root {
378
+ --float-distance: 32px;
379
+ }
380
+ }
381
+ :root,
382
+ :root[data-density=comfortable] {
383
+ --density-multiplier: 1;
384
+ }
385
+ :root[data-density=compact] {
386
+ --density-multiplier: 0.75;
387
+ }
388
+ :root,
389
+ :root[data-radius=playful] {
390
+ --radius-scale: 1;
391
+ }
392
+ :root[data-radius=sharp] {
393
+ --radius-scale: 0.25;
394
+ }
395
+ [data-brand=custom] {
396
+ --accent-rgb: var(--custom-accent-rgb, 255, 45, 138);
397
+ --accent2-rgb: var(--custom-accent2-rgb, 255, 208, 0);
398
+ --void-orb-pink: rgb(var(--accent-rgb));
399
+ --void-orb-pink-rgb: var(--accent-rgb);
400
+ --void-orb-yellow: rgb(var(--accent2-rgb));
401
+ --void-orb-yellow-rgb: var(--accent2-rgb);
402
+ --void-orb-purple: #4a1a6b;
403
+ --void-orb-purple-rgb:
404
+ 74,
405
+ 26,
406
+ 107;
407
+ --brand-pink: rgb(var(--accent-rgb));
408
+ --brand-pink-rgb: var(--accent-rgb);
409
+ --brand-pink-bright: rgb(var(--accent-rgb));
410
+ --brand-pink-glow: rgba(var(--accent-rgb), 0.4);
411
+ --brand-yellow: rgb(var(--accent2-rgb));
412
+ --brand-yellow-rgb: var(--accent2-rgb);
413
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.6);
414
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.7);
415
+ --btn-primary-glow: 0 0 30px rgba(var(--accent-rgb), 0.3);
416
+ --btn-primary-glow-hover: 0 0 40px rgba(var(--accent-rgb), 0.4);
417
+ --focus-ring-color: rgba(var(--accent-rgb), 0.5);
418
+ }
419
+ [data-theme=light][data-brand=custom],
420
+ [data-theme=light-contrast][data-brand=custom],
421
+ [data-brand=custom][data-theme=light],
422
+ [data-brand=custom][data-theme=light-contrast] {
423
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.85);
424
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.95);
425
+ --btn-secondary-bg: rgba(0, 0, 0, 0.05);
426
+ --btn-secondary-bg-hover: rgba(0, 0, 0, 0.08);
427
+ }
428
+ [data-brand=intelligentPurple] {
429
+ --accent-rgb:
430
+ 99,
431
+ 102,
432
+ 241;
433
+ --accent2-rgb:
434
+ 34,
435
+ 211,
436
+ 238;
437
+ --void-orb-pink: #6366f1;
438
+ --void-orb-pink-rgb:
439
+ 99,
440
+ 102,
441
+ 241;
442
+ --void-orb-yellow: #22d3ee;
443
+ --void-orb-yellow-rgb:
444
+ 34,
445
+ 211,
446
+ 238;
447
+ --void-orb-purple: #1e1b4b;
448
+ --void-orb-purple-rgb:
449
+ 30,
450
+ 27,
451
+ 75;
452
+ --brand-pink: #6366f1;
453
+ --brand-pink-rgb:
454
+ 99,
455
+ 102,
456
+ 241;
457
+ --brand-pink-bright: #818cf8;
458
+ --brand-pink-glow: rgba(99, 102, 241, 0.4);
459
+ --brand-yellow: #22d3ee;
460
+ --brand-yellow-rgb:
461
+ 34,
462
+ 211,
463
+ 238;
464
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.6);
465
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.7);
466
+ --btn-primary-glow: 0 0 30px rgba(var(--accent-rgb), 0.3);
467
+ --btn-primary-glow-hover: 0 0 40px rgba(var(--accent-rgb), 0.4);
468
+ --focus-ring-color: rgba(var(--accent-rgb), 0.5);
469
+ }
470
+ [data-theme=light][data-brand=intelligentPurple],
471
+ [data-theme=light-contrast][data-brand=intelligentPurple],
472
+ [data-brand=intelligentPurple][data-theme=light],
473
+ [data-brand=intelligentPurple][data-theme=light-contrast] {
474
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.85);
475
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.95);
476
+ --btn-secondary-bg: rgba(0, 0, 0, 0.05);
477
+ --btn-secondary-bg-hover: rgba(0, 0, 0, 0.08);
478
+ }
479
+ [data-brand=revenueTeal] {
480
+ --accent-rgb:
481
+ 14,
482
+ 165,
483
+ 233;
484
+ --accent2-rgb:
485
+ 245,
486
+ 158,
487
+ 11;
488
+ --void-orb-pink: #0ea5e9;
489
+ --void-orb-pink-rgb:
490
+ 14,
491
+ 165,
492
+ 233;
493
+ --void-orb-yellow: #f59e0b;
494
+ --void-orb-yellow-rgb:
495
+ 245,
496
+ 158,
497
+ 11;
498
+ --void-orb-purple: #0c4a6e;
499
+ --void-orb-purple-rgb:
500
+ 12,
501
+ 74,
502
+ 110;
503
+ --brand-pink: #0ea5e9;
504
+ --brand-pink-rgb:
505
+ 14,
506
+ 165,
507
+ 233;
508
+ --brand-pink-bright: #38bdf8;
509
+ --brand-pink-glow: rgba(14, 165, 233, 0.4);
510
+ --brand-yellow: #f59e0b;
511
+ --brand-yellow-rgb:
512
+ 245,
513
+ 158,
514
+ 11;
515
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.6);
516
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.7);
517
+ --btn-primary-glow: 0 0 30px rgba(var(--accent-rgb), 0.3);
518
+ --btn-primary-glow-hover: 0 0 40px rgba(var(--accent-rgb), 0.4);
519
+ --focus-ring-color: rgba(var(--accent-rgb), 0.5);
520
+ }
521
+ [data-theme=light][data-brand=revenueTeal],
522
+ [data-theme=light-contrast][data-brand=revenueTeal],
523
+ [data-brand=revenueTeal][data-theme=light],
524
+ [data-brand=revenueTeal][data-theme=light-contrast] {
525
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.85);
526
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.95);
527
+ --btn-secondary-bg: rgba(0, 0, 0, 0.05);
528
+ --btn-secondary-bg-hover: rgba(0, 0, 0, 0.08);
529
+ }
530
+ [data-brand=warmIntelligence] {
531
+ --accent-rgb:
532
+ 249,
533
+ 115,
534
+ 22;
535
+ --accent2-rgb:
536
+ 139,
537
+ 92,
538
+ 246;
539
+ --void-orb-pink: #f97316;
540
+ --void-orb-pink-rgb:
541
+ 249,
542
+ 115,
543
+ 22;
544
+ --void-orb-yellow: #8b5cf6;
545
+ --void-orb-yellow-rgb:
546
+ 139,
547
+ 92,
548
+ 246;
549
+ --void-orb-purple: #431407;
550
+ --void-orb-purple-rgb:
551
+ 67,
552
+ 20,
553
+ 7;
554
+ --brand-pink: #f97316;
555
+ --brand-pink-rgb:
556
+ 249,
557
+ 115,
558
+ 22;
559
+ --brand-pink-bright: #fb923c;
560
+ --brand-pink-glow: rgba(249, 115, 22, 0.4);
561
+ --brand-yellow: #8b5cf6;
562
+ --brand-yellow-rgb:
563
+ 139,
564
+ 92,
565
+ 246;
566
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.6);
567
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.7);
568
+ --btn-primary-glow: 0 0 30px rgba(var(--accent-rgb), 0.3);
569
+ --btn-primary-glow-hover: 0 0 40px rgba(var(--accent-rgb), 0.4);
570
+ --focus-ring-color: rgba(var(--accent-rgb), 0.5);
571
+ }
572
+ [data-theme=light][data-brand=warmIntelligence],
573
+ [data-theme=light-contrast][data-brand=warmIntelligence],
574
+ [data-brand=warmIntelligence][data-theme=light],
575
+ [data-brand=warmIntelligence][data-theme=light-contrast] {
576
+ --btn-primary-bg: rgba(var(--accent-rgb), 0.85);
577
+ --btn-primary-bg-hover: rgba(var(--accent-rgb), 0.95);
578
+ --btn-secondary-bg: rgba(0, 0, 0, 0.05);
579
+ --btn-secondary-bg-hover: rgba(0, 0, 0, 0.08);
580
+ }
581
+
582
+ /* src/styles/global.css */
583
+ *,
584
+ *::before,
585
+ *::after {
586
+ box-sizing: border-box;
587
+ }
588
+ * {
589
+ margin: 0;
590
+ }
591
+ html {
592
+ -webkit-font-smoothing: antialiased;
593
+ -moz-osx-font-smoothing: grayscale;
594
+ text-rendering: optimizeLegibility;
595
+ }
596
+ body {
597
+ font-family: var(--font-family);
598
+ font-size: var(--font-size-base);
599
+ line-height: var(--line-height-normal);
600
+ color: var(--text-primary);
601
+ background-color: var(--void-base);
602
+ min-height: 100vh;
603
+ }
604
+ h1,
605
+ h2,
606
+ h3,
607
+ h4,
608
+ h5,
609
+ h6 {
610
+ font-weight: var(--font-weight-semibold);
611
+ line-height: var(--line-height-tight);
612
+ color: var(--text-primary);
613
+ }
614
+ h1 {
615
+ font-size: var(--font-size-3xl);
616
+ }
617
+ h2 {
618
+ font-size: var(--font-size-2xl);
619
+ }
620
+ h3 {
621
+ font-size: var(--font-size-xl);
622
+ }
623
+ h4 {
624
+ font-size: var(--font-size-lg);
625
+ }
626
+ p {
627
+ color: var(--text-secondary);
628
+ }
629
+ a {
630
+ color: var(--brand-pink-bright);
631
+ text-decoration: none;
632
+ transition: color var(--transition-base);
633
+ }
634
+ a:hover {
635
+ color: var(--brand-pink);
636
+ }
637
+ ::selection {
638
+ background: rgba(var(--brand-pink-rgb), 0.3);
639
+ color: var(--text-primary);
640
+ }
641
+ :focus-visible {
642
+ outline: none;
643
+ box-shadow: var(--focus-ring);
644
+ }
645
+ ::-webkit-scrollbar {
646
+ width: 8px;
647
+ height: 8px;
648
+ }
649
+ ::-webkit-scrollbar-track {
650
+ background: transparent;
651
+ }
652
+ ::-webkit-scrollbar-thumb {
653
+ background: rgba(255, 255, 255, 0.1);
654
+ border-radius: var(--radius-pill);
655
+ }
656
+ ::-webkit-scrollbar-thumb:hover {
657
+ background: rgba(255, 255, 255, 0.2);
658
+ }
659
+ * {
660
+ scrollbar-width: thin;
661
+ scrollbar-color: rgba(255, 255, 255, 0.1) transparent;
662
+ }
663
+ @media (prefers-reduced-motion: reduce) {
664
+ *,
665
+ *::before,
666
+ *::after {
667
+ animation-duration: 0.01ms !important;
668
+ animation-iteration-count: 1 !important;
669
+ transition-duration: 0.01ms !important;
670
+ }
671
+ }
672
+
673
+ /* src/styles/glass.css */
674
+ .glass {
675
+ background: var(--glass-base);
676
+ backdrop-filter: var(--glass-backdrop);
677
+ -webkit-backdrop-filter: var(--glass-backdrop);
678
+ border: 1px solid transparent;
679
+ background-clip: padding-box;
680
+ box-shadow: var(--glass-shadow-combined);
681
+ border-radius: var(--radius-panel);
682
+ transition:
683
+ background var(--transition-glass),
684
+ box-shadow var(--transition-glass),
685
+ border-color var(--transition-glass),
686
+ transform var(--transition-glass);
687
+ }
688
+ .glass::before {
689
+ content: "";
690
+ position: absolute;
691
+ inset: 0;
692
+ border-radius: inherit;
693
+ padding: 1px;
694
+ background:
695
+ linear-gradient(
696
+ 180deg,
697
+ var(--rim-light-top) 0%,
698
+ var(--rim-light-bottom) 100%);
699
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
700
+ mask-composite: exclude;
701
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
702
+ -webkit-mask-composite: xor;
703
+ pointer-events: none;
704
+ z-index: 1;
705
+ }
706
+ .glass:hover {
707
+ background: var(--glass-base-hover);
708
+ }
709
+ .glass:hover::before {
710
+ background:
711
+ linear-gradient(
712
+ 180deg,
713
+ var(--rim-light-hover-top) 0%,
714
+ var(--rim-light-hover-bottom) 100%);
715
+ }
716
+ .glass:active {
717
+ background: var(--glass-base-active);
718
+ }
719
+ .glass:active::before {
720
+ background:
721
+ linear-gradient(
722
+ 180deg,
723
+ var(--rim-light-active-top) 0%,
724
+ var(--rim-light-active-bottom) 100%);
725
+ }
726
+ .glass--card {
727
+ border-radius: var(--radius-card);
728
+ }
729
+ .glass--button {
730
+ border-radius: var(--radius-button);
731
+ }
732
+ .glass--badge {
733
+ border-radius: var(--radius-badge);
734
+ }
735
+ .glass--pill {
736
+ border-radius: var(--radius-pill);
737
+ }
738
+ .glass--elevated {
739
+ box-shadow: var(--glass-shadow-elevated-combined);
740
+ }
741
+ .glass--elevated::before {
742
+ background:
743
+ linear-gradient(
744
+ 180deg,
745
+ var(--rim-light-hover-top) 0%,
746
+ var(--rim-light-top) 100%);
747
+ }
748
+ .glass--light {
749
+ backdrop-filter: var(--glass-backdrop-light);
750
+ -webkit-backdrop-filter: var(--glass-backdrop-light);
751
+ }
752
+ .glass--heavy {
753
+ backdrop-filter: var(--glass-backdrop-heavy);
754
+ -webkit-backdrop-filter: var(--glass-backdrop-heavy);
755
+ }
756
+ .glass--primary {
757
+ background: var(--btn-primary-bg);
758
+ box-shadow:
759
+ var(--glass-shadow-outer),
760
+ var(--glass-shadow-inner),
761
+ var(--btn-primary-glow);
762
+ }
763
+ .glass--primary:hover {
764
+ background: var(--btn-primary-bg-hover);
765
+ box-shadow:
766
+ var(--glass-shadow-outer),
767
+ var(--glass-shadow-inner),
768
+ var(--btn-primary-glow-hover);
769
+ }
770
+ .glass--primary::before {
771
+ background:
772
+ linear-gradient(
773
+ 180deg,
774
+ rgba(255, 255, 255, 0.2) 0%,
775
+ rgba(var(--brand-pink-rgb), 0.3) 100%);
776
+ }
777
+ .glass--secondary {
778
+ background: var(--btn-secondary-bg);
779
+ }
780
+ .glass--secondary:hover {
781
+ background: var(--btn-secondary-bg-hover);
782
+ }
783
+ .glass--success {
784
+ background: rgba(var(--status-success-rgb), 0.1);
785
+ }
786
+ .glass--success::before {
787
+ background:
788
+ linear-gradient(
789
+ 180deg,
790
+ rgba(var(--status-success-rgb), 0.3) 0%,
791
+ rgba(var(--status-success-rgb), 0.1) 100%);
792
+ }
793
+ .glass--warning {
794
+ background: rgba(var(--status-warning-rgb), 0.1);
795
+ }
796
+ .glass--warning::before {
797
+ background:
798
+ linear-gradient(
799
+ 180deg,
800
+ rgba(var(--status-warning-rgb), 0.3) 0%,
801
+ rgba(var(--status-warning-rgb), 0.1) 100%);
802
+ }
803
+ .glass--error {
804
+ background: rgba(var(--status-error-rgb), 0.1);
805
+ }
806
+ .glass--error::before {
807
+ background:
808
+ linear-gradient(
809
+ 180deg,
810
+ rgba(var(--status-error-rgb), 0.3) 0%,
811
+ rgba(var(--status-error-rgb), 0.1) 100%);
812
+ }
813
+ .glass--info {
814
+ background: rgba(var(--status-info-rgb), 0.1);
815
+ }
816
+ .glass--info::before {
817
+ background:
818
+ linear-gradient(
819
+ 180deg,
820
+ rgba(var(--status-info-rgb), 0.3) 0%,
821
+ rgba(var(--status-info-rgb), 0.1) 100%);
822
+ }
823
+ .glass-panel {
824
+ position: relative;
825
+ background: var(--glass-base);
826
+ backdrop-filter: var(--glass-backdrop);
827
+ -webkit-backdrop-filter: var(--glass-backdrop);
828
+ border-radius: var(--radius-panel);
829
+ box-shadow: var(--glass-shadow-combined);
830
+ padding: var(--space-6);
831
+ z-index: var(--z-glass-panel);
832
+ }
833
+ .glass-panel::before {
834
+ content: "";
835
+ position: absolute;
836
+ inset: 0;
837
+ border-radius: inherit;
838
+ padding: 1px;
839
+ background:
840
+ linear-gradient(
841
+ 180deg,
842
+ var(--rim-light-top) 0%,
843
+ var(--rim-light-bottom) 100%);
844
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
845
+ mask-composite: exclude;
846
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
847
+ -webkit-mask-composite: xor;
848
+ pointer-events: none;
849
+ }
850
+ .glass-ornament {
851
+ position: relative;
852
+ background: var(--glass-base-hover);
853
+ backdrop-filter: var(--glass-backdrop);
854
+ -webkit-backdrop-filter: var(--glass-backdrop);
855
+ border-radius: var(--radius-card);
856
+ box-shadow: var(--glass-shadow-elevated-combined);
857
+ padding: var(--space-4);
858
+ z-index: var(--z-ornament);
859
+ }
860
+ .glass-ornament::before {
861
+ content: "";
862
+ position: absolute;
863
+ inset: 0;
864
+ border-radius: inherit;
865
+ padding: 1px;
866
+ background:
867
+ linear-gradient(
868
+ 180deg,
869
+ var(--rim-light-hover-top) 0%,
870
+ var(--rim-light-top) 100%);
871
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
872
+ mask-composite: exclude;
873
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
874
+ -webkit-mask-composite: xor;
875
+ pointer-events: none;
876
+ }
877
+ @media (prefers-contrast: more) {
878
+ .glass,
879
+ .glass-panel,
880
+ .glass-ornament {
881
+ background: rgba(255, 255, 255, 0.1);
882
+ border: 1px solid rgba(255, 255, 255, 0.3);
883
+ }
884
+ .glass::before,
885
+ .glass-panel::before,
886
+ .glass-ornament::before {
887
+ display: none;
888
+ }
889
+ }
890
+ @supports not (backdrop-filter: blur(1px)) {
891
+ .glass,
892
+ .glass-panel,
893
+ .glass-ornament {
894
+ background: rgba(20, 10, 30, 0.9);
895
+ }
896
+ }
897
+
898
+ /* src/components/VoidBackground/VoidBackground.css */
899
+ .void {
900
+ position: relative;
901
+ width: 100%;
902
+ min-height: 100vh;
903
+ overflow: hidden;
904
+ isolation: isolate;
905
+ }
906
+ .void__base {
907
+ position: absolute;
908
+ inset: 0;
909
+ background-color: var(--void-base);
910
+ z-index: -4;
911
+ }
912
+ .void__orbs {
913
+ position: absolute;
914
+ inset: 0;
915
+ z-index: -3;
916
+ pointer-events: none;
917
+ }
918
+ .void__orb {
919
+ position: absolute;
920
+ border-radius: 50%;
921
+ mix-blend-mode: screen;
922
+ filter: blur(140px);
923
+ opacity: 0.6;
924
+ }
925
+ .void__orb--warm {
926
+ width: 800px;
927
+ height: 800px;
928
+ top: -10%;
929
+ right: -5%;
930
+ background:
931
+ radial-gradient(
932
+ circle at center,
933
+ rgba(var(--void-orb-yellow-rgb), 0.4) 0%,
934
+ rgba(var(--void-orb-pink-rgb), 0.3) 40%,
935
+ transparent 70%);
936
+ }
937
+ .void__orb--purple {
938
+ width: 600px;
939
+ height: 600px;
940
+ bottom: -15%;
941
+ left: -10%;
942
+ background:
943
+ radial-gradient(
944
+ circle at center,
945
+ rgba(var(--void-orb-purple-rgb), 0.5) 0%,
946
+ rgba(var(--void-orb-purple-rgb), 0.2) 50%,
947
+ transparent 70%);
948
+ }
949
+ .void__grid {
950
+ position: absolute;
951
+ inset: 0;
952
+ z-index: -2;
953
+ pointer-events: none;
954
+ background-image:
955
+ linear-gradient(
956
+ to right,
957
+ var(--void-grid-color) 1px,
958
+ transparent 1px),
959
+ linear-gradient(
960
+ to bottom,
961
+ var(--void-grid-color) 1px,
962
+ transparent 1px);
963
+ background-size: var(--void-grid-size) var(--void-grid-size);
964
+ mask-image:
965
+ radial-gradient(
966
+ ellipse 70% 60% at 50% 40%,
967
+ black 0%,
968
+ transparent 100%);
969
+ -webkit-mask-image:
970
+ radial-gradient(
971
+ ellipse 70% 60% at 50% 40%,
972
+ black 0%,
973
+ transparent 100%);
974
+ }
975
+ .void__grain {
976
+ position: absolute;
977
+ inset: 0;
978
+ z-index: -1;
979
+ pointer-events: none;
980
+ opacity: var(--void-grain-opacity);
981
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
982
+ background-repeat: repeat;
983
+ background-size: 200px 200px;
984
+ }
985
+ .void__content {
986
+ position: relative;
987
+ z-index: 1;
988
+ min-height: 100vh;
989
+ padding: var(--float-distance);
990
+ }
991
+ .void--inline {
992
+ min-height: auto;
993
+ }
994
+ .void--inline .void__content {
995
+ min-height: auto;
996
+ }
997
+ @media (prefers-reduced-motion: reduce) {
998
+ .void__orb {
999
+ animation: none;
1000
+ }
1001
+ }
1002
+
1003
+ /* src/components/Button/Button.css */
1004
+ .ds-button {
1005
+ position: relative;
1006
+ display: inline-flex;
1007
+ align-items: center;
1008
+ justify-content: center;
1009
+ gap: var(--space-2);
1010
+ border: none;
1011
+ cursor: pointer;
1012
+ font-family: var(--font-family);
1013
+ font-weight: var(--font-weight-medium);
1014
+ border-radius: var(--radius-button);
1015
+ color: var(--text-primary);
1016
+ outline: none;
1017
+ backdrop-filter: blur(12px) saturate(140%);
1018
+ -webkit-backdrop-filter: blur(12px) saturate(140%);
1019
+ transition:
1020
+ background var(--transition-glass),
1021
+ box-shadow var(--transition-glass),
1022
+ transform var(--transition-glass);
1023
+ }
1024
+ .ds-button::before {
1025
+ content: "";
1026
+ position: absolute;
1027
+ inset: 0;
1028
+ border-radius: inherit;
1029
+ padding: 1px;
1030
+ background:
1031
+ linear-gradient(
1032
+ 180deg,
1033
+ var(--rim-light-top) 0%,
1034
+ var(--rim-light-bottom) 100%);
1035
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1036
+ mask-composite: exclude;
1037
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1038
+ -webkit-mask-composite: xor;
1039
+ pointer-events: none;
1040
+ transition: background var(--transition-glass);
1041
+ }
1042
+ .ds-button:focus-visible {
1043
+ box-shadow: var(--focus-ring);
1044
+ }
1045
+ .ds-button:disabled {
1046
+ opacity: 0.4;
1047
+ cursor: not-allowed;
1048
+ transform: none !important;
1049
+ }
1050
+ .ds-button--primary {
1051
+ background: var(--btn-primary-bg);
1052
+ box-shadow:
1053
+ 0 8px 32px rgba(0, 0, 0, 0.3),
1054
+ var(--glass-shadow-inner),
1055
+ var(--btn-primary-glow);
1056
+ }
1057
+ .ds-button--primary::before {
1058
+ background:
1059
+ linear-gradient(
1060
+ 180deg,
1061
+ rgba(255, 255, 255, 0.25) 0%,
1062
+ rgba(var(--brand-pink-rgb), 0.2) 100%);
1063
+ }
1064
+ .ds-button--primary:hover:not(:disabled) {
1065
+ background: var(--btn-primary-bg-hover);
1066
+ box-shadow:
1067
+ 0 12px 40px rgba(0, 0, 0, 0.35),
1068
+ var(--glass-shadow-inner),
1069
+ var(--btn-primary-glow-hover);
1070
+ transform: translateY(-1px);
1071
+ }
1072
+ .ds-button--primary:hover:not(:disabled)::before {
1073
+ background:
1074
+ linear-gradient(
1075
+ 180deg,
1076
+ rgba(255, 255, 255, 0.35) 0%,
1077
+ rgba(var(--brand-pink-rgb), 0.25) 100%);
1078
+ }
1079
+ .ds-button--primary:active:not(:disabled) {
1080
+ transform: translateY(0);
1081
+ box-shadow:
1082
+ 0 4px 20px rgba(0, 0, 0, 0.3),
1083
+ var(--glass-shadow-inner),
1084
+ var(--btn-primary-glow);
1085
+ }
1086
+ .ds-button--secondary {
1087
+ background: var(--btn-secondary-bg);
1088
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25), var(--glass-shadow-inner);
1089
+ }
1090
+ .ds-button--secondary:hover:not(:disabled) {
1091
+ background: var(--btn-secondary-bg-hover);
1092
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3), var(--glass-shadow-inner);
1093
+ transform: translateY(-1px);
1094
+ }
1095
+ .ds-button--secondary:hover:not(:disabled)::before {
1096
+ background:
1097
+ linear-gradient(
1098
+ 180deg,
1099
+ var(--rim-light-hover-top) 0%,
1100
+ var(--rim-light-hover-bottom) 100%);
1101
+ }
1102
+ .ds-button--secondary:active:not(:disabled) {
1103
+ transform: translateY(0);
1104
+ background: var(--glass-base-active);
1105
+ }
1106
+ .ds-button--outline {
1107
+ background: transparent;
1108
+ box-shadow: none;
1109
+ backdrop-filter: none;
1110
+ -webkit-backdrop-filter: none;
1111
+ color: var(--text-secondary);
1112
+ transition:
1113
+ background var(--transition-glass),
1114
+ color var(--transition-glass),
1115
+ box-shadow var(--transition-glass),
1116
+ transform var(--transition-glass);
1117
+ }
1118
+ .ds-button--outline::before {
1119
+ background:
1120
+ linear-gradient(
1121
+ 180deg,
1122
+ rgba(255, 255, 255, 0.15) 0%,
1123
+ rgba(255, 255, 255, 0.05) 100%);
1124
+ }
1125
+ .ds-button--outline:hover:not(:disabled) {
1126
+ background: rgba(var(--brand-pink-rgb), 0.05);
1127
+ color: var(--text-primary);
1128
+ backdrop-filter: blur(12px) saturate(140%);
1129
+ -webkit-backdrop-filter: blur(12px) saturate(140%);
1130
+ box-shadow:
1131
+ 0 8px 32px rgba(0, 0, 0, 0.2),
1132
+ var(--glass-shadow-inner),
1133
+ 0 0 16px rgba(var(--brand-pink-rgb), 0.1);
1134
+ transform: translateY(-1px);
1135
+ }
1136
+ .ds-button--outline:hover:not(:disabled)::before {
1137
+ background:
1138
+ linear-gradient(
1139
+ 180deg,
1140
+ rgba(var(--brand-pink-rgb), 0.3) 0%,
1141
+ rgba(var(--brand-pink-rgb), 0.1) 100%);
1142
+ }
1143
+ .ds-button--outline:active:not(:disabled) {
1144
+ transform: translateY(0);
1145
+ background: rgba(var(--brand-pink-rgb), 0.1);
1146
+ }
1147
+ .ds-button--sm {
1148
+ font-size: var(--font-size-sm);
1149
+ padding: var(--space-2) var(--space-4);
1150
+ height: 2rem;
1151
+ }
1152
+ .ds-button--md {
1153
+ font-size: var(--font-size-base);
1154
+ padding: var(--space-2) var(--space-5);
1155
+ height: 2.5rem;
1156
+ }
1157
+ .ds-button--lg {
1158
+ font-size: var(--font-size-lg);
1159
+ padding: var(--space-3) var(--space-6);
1160
+ height: 3rem;
1161
+ }
1162
+ .ds-button--icon {
1163
+ padding: 0;
1164
+ aspect-ratio: 1;
1165
+ }
1166
+ .ds-button--icon.ds-button--sm {
1167
+ width: 2rem;
1168
+ }
1169
+ .ds-button--icon.ds-button--md {
1170
+ width: 2.5rem;
1171
+ }
1172
+ .ds-button--icon.ds-button--lg {
1173
+ width: 3rem;
1174
+ }
1175
+ @media (prefers-contrast: more) {
1176
+ .ds-button {
1177
+ border: 1px solid rgba(255, 255, 255, 0.3);
1178
+ }
1179
+ .ds-button::before {
1180
+ display: none;
1181
+ }
1182
+ .ds-button--primary {
1183
+ background: rgba(var(--brand-pink-rgb), 0.8);
1184
+ }
1185
+ .ds-button--secondary {
1186
+ background: rgba(255, 255, 255, 0.15);
1187
+ }
1188
+ }
1189
+ @supports not (backdrop-filter: blur(1px)) {
1190
+ .ds-button--primary {
1191
+ background: rgba(var(--brand-pink-rgb), 0.85);
1192
+ }
1193
+ .ds-button--secondary {
1194
+ background: rgba(60, 40, 80, 0.9);
1195
+ }
1196
+ }
1197
+
1198
+ /* src/components/TextField/TextField.css */
1199
+ .ds-textfield {
1200
+ display: flex;
1201
+ flex-direction: column;
1202
+ gap: var(--space-2);
1203
+ }
1204
+ .ds-textfield__label {
1205
+ font-family: var(--font-family);
1206
+ font-size: var(--font-size-sm);
1207
+ font-weight: var(--font-weight-medium);
1208
+ color: var(--text-secondary);
1209
+ transition: color var(--transition-base);
1210
+ }
1211
+ .ds-textfield:focus-within .ds-textfield__label {
1212
+ color: var(--text-primary);
1213
+ }
1214
+ .ds-textfield__input {
1215
+ position: relative;
1216
+ font-family: var(--font-family);
1217
+ font-size: var(--font-size-base);
1218
+ padding: var(--space-3) var(--space-4);
1219
+ border: none;
1220
+ border-radius: var(--radius-button);
1221
+ color: var(--text-primary);
1222
+ outline: none;
1223
+ background: var(--glass-base);
1224
+ backdrop-filter: blur(20px) saturate(140%);
1225
+ -webkit-backdrop-filter: blur(20px) saturate(140%);
1226
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.08);
1227
+ transition: background var(--transition-glass), box-shadow var(--transition-glass);
1228
+ }
1229
+ .ds-textfield__input::before {
1230
+ content: "";
1231
+ position: absolute;
1232
+ inset: 0;
1233
+ border-radius: inherit;
1234
+ padding: 1px;
1235
+ background:
1236
+ linear-gradient(
1237
+ 180deg,
1238
+ var(--rim-light-top) 0%,
1239
+ var(--rim-light-bottom) 100%);
1240
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1241
+ mask-composite: exclude;
1242
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1243
+ -webkit-mask-composite: xor;
1244
+ pointer-events: none;
1245
+ }
1246
+ .ds-textfield__input-wrapper {
1247
+ position: relative;
1248
+ }
1249
+ .ds-textfield__input-wrapper::before {
1250
+ content: "";
1251
+ position: absolute;
1252
+ inset: 0;
1253
+ border-radius: var(--radius-button);
1254
+ padding: 1px;
1255
+ background:
1256
+ linear-gradient(
1257
+ 180deg,
1258
+ var(--rim-light-top) 0%,
1259
+ var(--rim-light-bottom) 100%);
1260
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1261
+ mask-composite: exclude;
1262
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1263
+ -webkit-mask-composite: xor;
1264
+ pointer-events: none;
1265
+ transition: background var(--transition-glass);
1266
+ }
1267
+ .ds-textfield__input::placeholder {
1268
+ color: var(--text-tertiary);
1269
+ }
1270
+ .ds-textfield__input:hover:not(:disabled):not(:focus) {
1271
+ background: var(--glass-base-hover);
1272
+ }
1273
+ .ds-textfield__input-wrapper:hover:not(:has(:disabled)):not(:has(:focus))::before {
1274
+ background:
1275
+ linear-gradient(
1276
+ 180deg,
1277
+ var(--rim-light-hover-top) 0%,
1278
+ var(--rim-light-hover-bottom) 100%);
1279
+ }
1280
+ .ds-textfield__input:focus {
1281
+ background: var(--glass-base-hover);
1282
+ box-shadow:
1283
+ 0 8px 32px rgba(0, 0, 0, 0.25),
1284
+ inset 0 1px 1px rgba(255, 255, 255, 0.1),
1285
+ 0 0 0 2px rgba(var(--brand-pink-rgb), 0.3);
1286
+ }
1287
+ .ds-textfield__input-wrapper:has(:focus)::before {
1288
+ background:
1289
+ linear-gradient(
1290
+ 180deg,
1291
+ rgba(var(--brand-pink-rgb), 0.4) 0%,
1292
+ rgba(var(--brand-pink-rgb), 0.1) 100%);
1293
+ }
1294
+ .ds-textfield__input:disabled {
1295
+ opacity: 0.4;
1296
+ cursor: not-allowed;
1297
+ }
1298
+ .ds-textfield__input--error {
1299
+ box-shadow:
1300
+ 0 4px 20px rgba(0, 0, 0, 0.2),
1301
+ inset 0 1px 1px rgba(255, 255, 255, 0.08),
1302
+ 0 0 0 1px rgba(var(--status-error-rgb), 0.5);
1303
+ }
1304
+ .ds-textfield__input-wrapper:has(.ds-textfield__input--error)::before {
1305
+ background:
1306
+ linear-gradient(
1307
+ 180deg,
1308
+ rgba(var(--status-error-rgb), 0.4) 0%,
1309
+ rgba(var(--status-error-rgb), 0.1) 100%);
1310
+ }
1311
+ .ds-textfield__input--error:focus {
1312
+ box-shadow:
1313
+ 0 8px 32px rgba(0, 0, 0, 0.25),
1314
+ inset 0 1px 1px rgba(255, 255, 255, 0.1),
1315
+ 0 0 0 2px rgba(var(--status-error-rgb), 0.4);
1316
+ }
1317
+ .ds-textfield__helper {
1318
+ font-family: var(--font-family);
1319
+ font-size: var(--font-size-xs);
1320
+ color: var(--text-tertiary);
1321
+ }
1322
+ .ds-textfield__helper--error {
1323
+ color: var(--status-error);
1324
+ }
1325
+ @media (prefers-contrast: more) {
1326
+ .ds-textfield__input {
1327
+ background: rgba(255, 255, 255, 0.1);
1328
+ border: 1px solid rgba(255, 255, 255, 0.3);
1329
+ }
1330
+ .ds-textfield__input-wrapper::before {
1331
+ display: none;
1332
+ }
1333
+ .ds-textfield__input:focus {
1334
+ border-color: var(--brand-pink);
1335
+ }
1336
+ .ds-textfield__input--error {
1337
+ border-color: var(--status-error);
1338
+ }
1339
+ }
1340
+ @supports not (backdrop-filter: blur(1px)) {
1341
+ .ds-textfield__input {
1342
+ background: rgba(30, 20, 40, 0.9);
1343
+ }
1344
+ }
1345
+
1346
+ /* src/components/Checkbox/Checkbox.css */
1347
+ .ds-checkbox-wrapper {
1348
+ display: flex;
1349
+ align-items: center;
1350
+ gap: var(--space-3);
1351
+ }
1352
+ .ds-checkbox {
1353
+ all: unset;
1354
+ position: relative;
1355
+ width: 1.25rem;
1356
+ height: 1.25rem;
1357
+ border-radius: var(--radius-badge);
1358
+ display: flex;
1359
+ align-items: center;
1360
+ justify-content: center;
1361
+ cursor: pointer;
1362
+ flex-shrink: 0;
1363
+ background: var(--glass-base);
1364
+ backdrop-filter: blur(12px) saturate(140%);
1365
+ -webkit-backdrop-filter: blur(12px) saturate(140%);
1366
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.08);
1367
+ transition:
1368
+ background var(--transition-glass),
1369
+ box-shadow var(--transition-glass),
1370
+ transform var(--transition-glass);
1371
+ }
1372
+ .ds-checkbox::before {
1373
+ content: "";
1374
+ position: absolute;
1375
+ inset: 0;
1376
+ border-radius: inherit;
1377
+ padding: 1px;
1378
+ background:
1379
+ linear-gradient(
1380
+ 180deg,
1381
+ var(--rim-light-top) 0%,
1382
+ var(--rim-light-bottom) 100%);
1383
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1384
+ mask-composite: exclude;
1385
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1386
+ -webkit-mask-composite: xor;
1387
+ pointer-events: none;
1388
+ transition: background var(--transition-glass);
1389
+ }
1390
+ .ds-checkbox:hover:not([disabled]) {
1391
+ background: var(--glass-base-hover);
1392
+ transform: translateY(-1px);
1393
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), inset 0 1px 1px rgba(255, 255, 255, 0.1);
1394
+ }
1395
+ .ds-checkbox:hover:not([disabled])::before {
1396
+ background:
1397
+ linear-gradient(
1398
+ 180deg,
1399
+ var(--rim-light-hover-top) 0%,
1400
+ var(--rim-light-hover-bottom) 100%);
1401
+ }
1402
+ .ds-checkbox:focus-visible {
1403
+ box-shadow: var(--focus-ring);
1404
+ }
1405
+ .ds-checkbox[data-state=checked] {
1406
+ background: var(--btn-primary-bg);
1407
+ box-shadow:
1408
+ 0 2px 12px rgba(0, 0, 0, 0.25),
1409
+ inset 0 1px 1px rgba(255, 255, 255, 0.15),
1410
+ 0 0 20px rgba(var(--brand-pink-rgb), 0.25);
1411
+ }
1412
+ .ds-checkbox[data-state=checked]::before {
1413
+ background:
1414
+ linear-gradient(
1415
+ 180deg,
1416
+ rgba(255, 255, 255, 0.3) 0%,
1417
+ rgba(var(--brand-pink-rgb), 0.2) 100%);
1418
+ }
1419
+ .ds-checkbox[data-state=checked]:hover:not([disabled]) {
1420
+ background: var(--btn-primary-bg-hover);
1421
+ box-shadow:
1422
+ 0 4px 16px rgba(0, 0, 0, 0.3),
1423
+ inset 0 1px 1px rgba(255, 255, 255, 0.2),
1424
+ 0 0 30px rgba(var(--brand-pink-rgb), 0.3);
1425
+ }
1426
+ .ds-checkbox[disabled] {
1427
+ opacity: 0.4;
1428
+ cursor: not-allowed;
1429
+ transform: none !important;
1430
+ }
1431
+ .ds-checkbox__indicator {
1432
+ display: flex;
1433
+ align-items: center;
1434
+ justify-content: center;
1435
+ width: 100%;
1436
+ height: 100%;
1437
+ color: var(--text-primary);
1438
+ position: relative;
1439
+ z-index: 1;
1440
+ }
1441
+ .ds-checkbox__icon {
1442
+ width: 0.75rem;
1443
+ height: 0.75rem;
1444
+ animation: ds-checkbox-check-in 0.15s ease-out;
1445
+ }
1446
+ @keyframes ds-checkbox-check-in {
1447
+ from {
1448
+ opacity: 0;
1449
+ transform: scale(0.8);
1450
+ }
1451
+ to {
1452
+ opacity: 1;
1453
+ transform: scale(1);
1454
+ }
1455
+ }
1456
+ .ds-checkbox__label {
1457
+ font-family: var(--font-family);
1458
+ font-size: var(--font-size-base);
1459
+ color: var(--text-primary);
1460
+ cursor: pointer;
1461
+ user-select: none;
1462
+ line-height: var(--line-height-normal);
1463
+ }
1464
+ .ds-checkbox[disabled] + .ds-checkbox__label,
1465
+ .ds-checkbox-wrapper:has(.ds-checkbox[disabled]) .ds-checkbox__label {
1466
+ opacity: 0.4;
1467
+ cursor: not-allowed;
1468
+ }
1469
+ @media (prefers-contrast: more) {
1470
+ .ds-checkbox {
1471
+ background: rgba(255, 255, 255, 0.1);
1472
+ border: 1px solid rgba(255, 255, 255, 0.4);
1473
+ }
1474
+ .ds-checkbox::before {
1475
+ display: none;
1476
+ }
1477
+ .ds-checkbox[data-state=checked] {
1478
+ background: rgba(var(--brand-pink-rgb), 0.8);
1479
+ border-color: var(--brand-pink);
1480
+ }
1481
+ }
1482
+ @media (prefers-reduced-motion: reduce) {
1483
+ .ds-checkbox__icon {
1484
+ animation: none;
1485
+ }
1486
+ }
1487
+
1488
+ /* src/components/Switch/Switch.css */
1489
+ .ds-switch-wrapper {
1490
+ display: flex;
1491
+ align-items: center;
1492
+ gap: var(--space-3);
1493
+ }
1494
+ .ds-switch {
1495
+ all: unset;
1496
+ position: relative;
1497
+ width: 3rem;
1498
+ height: 1.75rem;
1499
+ border-radius: var(--radius-pill);
1500
+ cursor: pointer;
1501
+ -webkit-tap-highlight-color: transparent;
1502
+ background: var(--glass-base);
1503
+ backdrop-filter: blur(12px) saturate(140%);
1504
+ -webkit-backdrop-filter: blur(12px) saturate(140%);
1505
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), inset 0 1px 2px rgba(0, 0, 0, 0.15);
1506
+ transition: background var(--transition-glass), box-shadow var(--transition-glass);
1507
+ }
1508
+ .ds-switch::before {
1509
+ content: "";
1510
+ position: absolute;
1511
+ inset: 0;
1512
+ border-radius: inherit;
1513
+ padding: 1px;
1514
+ background:
1515
+ linear-gradient(
1516
+ 180deg,
1517
+ var(--rim-light-top) 0%,
1518
+ var(--rim-light-bottom) 100%);
1519
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1520
+ mask-composite: exclude;
1521
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1522
+ -webkit-mask-composite: xor;
1523
+ pointer-events: none;
1524
+ transition: background var(--transition-glass);
1525
+ }
1526
+ .ds-switch:hover:not([disabled]) {
1527
+ background: var(--glass-base-hover);
1528
+ }
1529
+ .ds-switch:hover:not([disabled])::before {
1530
+ background:
1531
+ linear-gradient(
1532
+ 180deg,
1533
+ var(--rim-light-hover-top) 0%,
1534
+ var(--rim-light-hover-bottom) 100%);
1535
+ }
1536
+ .ds-switch:focus-visible {
1537
+ box-shadow:
1538
+ 0 2px 8px rgba(0, 0, 0, 0.2),
1539
+ inset 0 1px 2px rgba(0, 0, 0, 0.15),
1540
+ var(--focus-ring);
1541
+ }
1542
+ .ds-switch[data-state=checked] {
1543
+ background: var(--btn-primary-bg);
1544
+ box-shadow:
1545
+ 0 2px 12px rgba(0, 0, 0, 0.25),
1546
+ inset 0 1px 2px rgba(0, 0, 0, 0.1),
1547
+ 0 0 24px rgba(var(--brand-pink-rgb), 0.25);
1548
+ }
1549
+ .ds-switch[data-state=checked]::before {
1550
+ background:
1551
+ linear-gradient(
1552
+ 180deg,
1553
+ rgba(255, 255, 255, 0.25) 0%,
1554
+ rgba(var(--brand-pink-rgb), 0.2) 100%);
1555
+ }
1556
+ .ds-switch[data-state=checked]:hover:not([disabled]) {
1557
+ background: var(--btn-primary-bg-hover);
1558
+ box-shadow:
1559
+ 0 4px 16px rgba(0, 0, 0, 0.3),
1560
+ inset 0 1px 2px rgba(0, 0, 0, 0.1),
1561
+ 0 0 32px rgba(var(--brand-pink-rgb), 0.3);
1562
+ }
1563
+ .ds-switch[disabled] {
1564
+ opacity: 0.4;
1565
+ cursor: not-allowed;
1566
+ }
1567
+ .ds-switch__thumb {
1568
+ display: block;
1569
+ position: relative;
1570
+ width: 1.375rem;
1571
+ height: 1.375rem;
1572
+ border-radius: var(--radius-pill);
1573
+ transform: translateX(3px);
1574
+ will-change: transform;
1575
+ background:
1576
+ linear-gradient(
1577
+ 180deg,
1578
+ rgba(255, 255, 255, 0.95) 0%,
1579
+ rgba(255, 255, 255, 0.85) 100%);
1580
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2);
1581
+ transition: transform var(--transition-glass), box-shadow var(--transition-glass);
1582
+ }
1583
+ .ds-switch[data-state=checked] .ds-switch__thumb {
1584
+ transform: translateX(calc(3rem - 1.375rem - 3px));
1585
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.35), 0 0 8px rgba(var(--brand-pink-rgb), 0.3);
1586
+ }
1587
+ .ds-switch:hover:not([disabled]) .ds-switch__thumb {
1588
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35), 0 1px 2px rgba(0, 0, 0, 0.2);
1589
+ }
1590
+ .ds-switch__label {
1591
+ font-family: var(--font-family);
1592
+ font-size: var(--font-size-base);
1593
+ color: var(--text-primary);
1594
+ cursor: pointer;
1595
+ user-select: none;
1596
+ line-height: var(--line-height-normal);
1597
+ }
1598
+ .ds-switch[disabled] + .ds-switch__label,
1599
+ .ds-switch-wrapper:has(.ds-switch[disabled]) .ds-switch__label {
1600
+ opacity: 0.4;
1601
+ cursor: not-allowed;
1602
+ }
1603
+ @media (prefers-contrast: more) {
1604
+ .ds-switch {
1605
+ background: rgba(255, 255, 255, 0.1);
1606
+ border: 1px solid rgba(255, 255, 255, 0.4);
1607
+ }
1608
+ .ds-switch::before {
1609
+ display: none;
1610
+ }
1611
+ .ds-switch[data-state=checked] {
1612
+ background: rgba(var(--brand-pink-rgb), 0.8);
1613
+ border-color: var(--brand-pink);
1614
+ }
1615
+ .ds-switch__thumb {
1616
+ background: white;
1617
+ }
1618
+ }
1619
+ @media (prefers-reduced-motion: reduce) {
1620
+ .ds-switch__thumb {
1621
+ transition: none;
1622
+ }
1623
+ }
1624
+
1625
+ /* src/components/Dialog/Dialog.css */
1626
+ .ds-dialog__backdrop {
1627
+ position: fixed;
1628
+ inset: 0;
1629
+ background: rgba(var(--void-base-rgb), 0.8);
1630
+ backdrop-filter: blur(8px) saturate(120%);
1631
+ -webkit-backdrop-filter: blur(8px) saturate(120%);
1632
+ animation: ds-backdrop-fade-in 0.25s ease-out;
1633
+ z-index: var(--z-modal-backdrop);
1634
+ }
1635
+ .ds-dialog__content {
1636
+ position: fixed;
1637
+ top: 50%;
1638
+ left: 50%;
1639
+ transform: translate(-50%, -50%);
1640
+ width: calc(100vw - var(--float-distance) * 2);
1641
+ max-width: 480px;
1642
+ max-height: calc(100vh - var(--float-distance) * 2);
1643
+ overflow-y: auto;
1644
+ z-index: var(--z-modal);
1645
+ outline: none;
1646
+ background: var(--glass-base);
1647
+ backdrop-filter: var(--glass-backdrop);
1648
+ -webkit-backdrop-filter: var(--glass-backdrop);
1649
+ border-radius: var(--radius-panel);
1650
+ padding: var(--space-8);
1651
+ box-shadow: 0 32px 80px rgba(0, 0, 0, 0.5), var(--glass-shadow-inner);
1652
+ animation: ds-dialog-scale-in 0.25s cubic-bezier(0.16, 1, 0.3, 1);
1653
+ }
1654
+ .ds-dialog__content::before {
1655
+ content: "";
1656
+ position: absolute;
1657
+ inset: 0;
1658
+ border-radius: inherit;
1659
+ padding: 1px;
1660
+ background:
1661
+ linear-gradient(
1662
+ 180deg,
1663
+ var(--rim-light-hover-top) 0%,
1664
+ var(--rim-light-top) 100%);
1665
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1666
+ mask-composite: exclude;
1667
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1668
+ -webkit-mask-composite: xor;
1669
+ pointer-events: none;
1670
+ }
1671
+ .ds-dialog__title {
1672
+ margin: 0 0 var(--space-2);
1673
+ font-family: var(--font-family);
1674
+ font-size: var(--font-size-xl);
1675
+ font-weight: var(--font-weight-semibold);
1676
+ color: var(--text-primary);
1677
+ line-height: var(--line-height-tight);
1678
+ }
1679
+ .ds-dialog__description {
1680
+ margin: 0 0 var(--space-6);
1681
+ font-family: var(--font-family);
1682
+ font-size: var(--font-size-base);
1683
+ color: var(--text-secondary);
1684
+ line-height: var(--line-height-normal);
1685
+ }
1686
+ .ds-dialog__close {
1687
+ position: absolute;
1688
+ top: var(--space-4);
1689
+ right: var(--space-4);
1690
+ width: 2rem;
1691
+ height: 2rem;
1692
+ display: flex;
1693
+ align-items: center;
1694
+ justify-content: center;
1695
+ border: none;
1696
+ cursor: pointer;
1697
+ color: var(--text-secondary);
1698
+ background: var(--glass-base);
1699
+ backdrop-filter: blur(12px);
1700
+ -webkit-backdrop-filter: blur(12px);
1701
+ border-radius: var(--radius-badge);
1702
+ transition: background var(--transition-glass), color var(--transition-glass);
1703
+ }
1704
+ .ds-dialog__close:hover {
1705
+ background: var(--glass-base-hover);
1706
+ color: var(--text-primary);
1707
+ }
1708
+ .ds-dialog__close:focus-visible {
1709
+ box-shadow: var(--focus-ring);
1710
+ outline: none;
1711
+ }
1712
+ .ds-dialog__footer {
1713
+ display: flex;
1714
+ justify-content: flex-end;
1715
+ gap: var(--space-3);
1716
+ margin-top: var(--space-6);
1717
+ }
1718
+ @keyframes ds-backdrop-fade-in {
1719
+ from {
1720
+ opacity: 0;
1721
+ }
1722
+ to {
1723
+ opacity: 1;
1724
+ }
1725
+ }
1726
+ @keyframes ds-dialog-scale-in {
1727
+ from {
1728
+ opacity: 0;
1729
+ transform: translate(-50%, -48%) scale(0.96);
1730
+ }
1731
+ to {
1732
+ opacity: 1;
1733
+ transform: translate(-50%, -50%) scale(1);
1734
+ }
1735
+ }
1736
+ .ds-dialog__backdrop[data-exiting] {
1737
+ animation: ds-backdrop-fade-out 0.2s ease-in forwards;
1738
+ }
1739
+ .ds-dialog__content[data-exiting] {
1740
+ animation: ds-dialog-scale-out 0.2s ease-in forwards;
1741
+ }
1742
+ @keyframes ds-backdrop-fade-out {
1743
+ from {
1744
+ opacity: 1;
1745
+ }
1746
+ to {
1747
+ opacity: 0;
1748
+ }
1749
+ }
1750
+ @keyframes ds-dialog-scale-out {
1751
+ from {
1752
+ opacity: 1;
1753
+ transform: translate(-50%, -50%) scale(1);
1754
+ }
1755
+ to {
1756
+ opacity: 0;
1757
+ transform: translate(-50%, -48%) scale(0.96);
1758
+ }
1759
+ }
1760
+ .ds-dialog__content--sm {
1761
+ max-width: 360px;
1762
+ padding: var(--space-6);
1763
+ }
1764
+ .ds-dialog__content--lg {
1765
+ max-width: 640px;
1766
+ }
1767
+ .ds-dialog__content--xl {
1768
+ max-width: 800px;
1769
+ }
1770
+ .ds-dialog__content--fullscreen {
1771
+ max-width: calc(100vw - var(--float-distance) * 2);
1772
+ max-height: calc(100vh - var(--float-distance) * 2);
1773
+ width: calc(100vw - var(--float-distance) * 2);
1774
+ height: calc(100vh - var(--float-distance) * 2);
1775
+ }
1776
+ @media (prefers-contrast: more) {
1777
+ .ds-dialog__backdrop {
1778
+ background: rgba(0, 0, 0, 0.9);
1779
+ backdrop-filter: none;
1780
+ }
1781
+ .ds-dialog__content {
1782
+ background: rgba(20, 10, 30, 0.98);
1783
+ border: 1px solid rgba(255, 255, 255, 0.3);
1784
+ }
1785
+ .ds-dialog__content::before {
1786
+ display: none;
1787
+ }
1788
+ }
1789
+ @media (prefers-reduced-motion: reduce) {
1790
+ .ds-dialog__backdrop,
1791
+ .ds-dialog__content {
1792
+ animation: none;
1793
+ }
1794
+ }
1795
+ @supports not (backdrop-filter: blur(1px)) {
1796
+ .ds-dialog__backdrop {
1797
+ background: rgba(8, 4, 10, 0.95);
1798
+ }
1799
+ .ds-dialog__content {
1800
+ background: rgba(30, 20, 45, 0.98);
1801
+ }
1802
+ }
1803
+
1804
+ /* src/components/Tooltip/Tooltip.css */
1805
+ .ds-tooltip__content {
1806
+ position: relative;
1807
+ font-family: var(--font-family);
1808
+ font-size: var(--font-size-sm);
1809
+ color: var(--text-primary);
1810
+ padding: var(--space-2) var(--space-3);
1811
+ border-radius: var(--radius-badge);
1812
+ max-width: 280px;
1813
+ z-index: var(--z-tooltip);
1814
+ background: rgba(255, 255, 255, 0.08);
1815
+ backdrop-filter: blur(24px) saturate(160%) brightness(90%);
1816
+ -webkit-backdrop-filter: blur(24px) saturate(160%) brightness(90%);
1817
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 1px rgba(255, 255, 255, 0.12);
1818
+ animation: ds-tooltip-fade-in 0.15s ease-out;
1819
+ }
1820
+ .ds-tooltip__content::before {
1821
+ content: "";
1822
+ position: absolute;
1823
+ inset: 0;
1824
+ border-radius: inherit;
1825
+ padding: 1px;
1826
+ background:
1827
+ linear-gradient(
1828
+ 180deg,
1829
+ var(--rim-light-hover-top) 0%,
1830
+ var(--rim-light-top) 100%);
1831
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1832
+ mask-composite: exclude;
1833
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1834
+ -webkit-mask-composite: xor;
1835
+ pointer-events: none;
1836
+ }
1837
+ .ds-tooltip__arrow {
1838
+ width: 12px;
1839
+ height: 6px;
1840
+ fill: rgba(255, 255, 255, 0.08);
1841
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
1842
+ }
1843
+ @keyframes ds-tooltip-fade-in {
1844
+ from {
1845
+ opacity: 0;
1846
+ transform: scale(0.96);
1847
+ }
1848
+ to {
1849
+ opacity: 1;
1850
+ transform: scale(1);
1851
+ }
1852
+ }
1853
+ @media (prefers-contrast: more) {
1854
+ .ds-tooltip__content {
1855
+ background: rgba(30, 20, 45, 0.98);
1856
+ border: 1px solid rgba(255, 255, 255, 0.4);
1857
+ backdrop-filter: none;
1858
+ }
1859
+ .ds-tooltip__content::before {
1860
+ display: none;
1861
+ }
1862
+ }
1863
+ @media (prefers-reduced-motion: reduce) {
1864
+ .ds-tooltip__content {
1865
+ animation: none;
1866
+ }
1867
+ }
1868
+ @supports not (backdrop-filter: blur(1px)) {
1869
+ .ds-tooltip__content {
1870
+ background: rgba(40, 25, 60, 0.98);
1871
+ }
1872
+ }
1873
+
1874
+ /* src/components/Sidebar/Sidebar.css */
1875
+ .ds-sidebar {
1876
+ position: fixed;
1877
+ top: var(--float-distance);
1878
+ bottom: var(--float-distance);
1879
+ width: var(--sidebar-width, 280px);
1880
+ z-index: var(--z-glass-panel);
1881
+ background: var(--glass-base);
1882
+ backdrop-filter: var(--glass-backdrop);
1883
+ -webkit-backdrop-filter: var(--glass-backdrop);
1884
+ border-radius: var(--radius-panel);
1885
+ box-shadow: var(--glass-shadow-combined);
1886
+ transition: transform var(--transition-slow), opacity var(--transition-slow);
1887
+ }
1888
+ .ds-sidebar::before {
1889
+ content: "";
1890
+ position: absolute;
1891
+ inset: 0;
1892
+ border-radius: inherit;
1893
+ padding: 1px;
1894
+ background:
1895
+ linear-gradient(
1896
+ 180deg,
1897
+ var(--rim-light-top) 0%,
1898
+ var(--rim-light-bottom) 100%);
1899
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1900
+ mask-composite: exclude;
1901
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1902
+ -webkit-mask-composite: xor;
1903
+ pointer-events: none;
1904
+ }
1905
+ .ds-sidebar--left {
1906
+ left: var(--float-distance);
1907
+ }
1908
+ .ds-sidebar--right {
1909
+ right: var(--float-distance);
1910
+ }
1911
+ .ds-sidebar--collapsed.ds-sidebar--left {
1912
+ transform: translateX(calc(-100% - var(--float-distance)));
1913
+ }
1914
+ .ds-sidebar--collapsed.ds-sidebar--right {
1915
+ transform: translateX(calc(100% + var(--float-distance)));
1916
+ }
1917
+ .ds-sidebar__content {
1918
+ display: flex;
1919
+ flex-direction: column;
1920
+ height: 100%;
1921
+ padding: var(--space-4);
1922
+ overflow-y: auto;
1923
+ overflow-x: hidden;
1924
+ }
1925
+ .ds-sidebar__content::-webkit-scrollbar {
1926
+ width: 6px;
1927
+ }
1928
+ .ds-sidebar__content::-webkit-scrollbar-track {
1929
+ background: transparent;
1930
+ }
1931
+ .ds-sidebar__content::-webkit-scrollbar-thumb {
1932
+ background: rgba(255, 255, 255, 0.1);
1933
+ border-radius: var(--radius-pill);
1934
+ }
1935
+ .ds-sidebar__content::-webkit-scrollbar-thumb:hover {
1936
+ background: rgba(255, 255, 255, 0.2);
1937
+ }
1938
+ .ds-sidebar__section {
1939
+ margin-bottom: var(--space-4);
1940
+ }
1941
+ .ds-sidebar__section:last-child {
1942
+ margin-bottom: 0;
1943
+ }
1944
+ .ds-sidebar__section-title {
1945
+ font-family: var(--font-family);
1946
+ font-size: var(--font-size-xs);
1947
+ font-weight: var(--font-weight-semibold);
1948
+ color: var(--text-tertiary);
1949
+ text-transform: uppercase;
1950
+ letter-spacing: 0.05em;
1951
+ margin: 0 0 var(--space-2) var(--space-3);
1952
+ }
1953
+ .ds-sidebar__item {
1954
+ display: flex;
1955
+ align-items: center;
1956
+ gap: var(--space-3);
1957
+ width: 100%;
1958
+ padding: var(--space-3) var(--space-3);
1959
+ border: none;
1960
+ border-radius: var(--radius-button);
1961
+ background: transparent;
1962
+ color: var(--text-secondary);
1963
+ font-family: var(--font-family);
1964
+ font-size: var(--font-size-base);
1965
+ font-weight: var(--font-weight-medium);
1966
+ text-align: left;
1967
+ cursor: pointer;
1968
+ position: relative;
1969
+ transition:
1970
+ background var(--transition-glass),
1971
+ color var(--transition-glass),
1972
+ box-shadow var(--transition-glass);
1973
+ }
1974
+ .ds-sidebar__item::before {
1975
+ content: "";
1976
+ position: absolute;
1977
+ inset: 0;
1978
+ border-radius: inherit;
1979
+ padding: 1px;
1980
+ background:
1981
+ linear-gradient(
1982
+ 180deg,
1983
+ var(--rim-light-top) 0%,
1984
+ var(--rim-light-bottom) 100%);
1985
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1986
+ mask-composite: exclude;
1987
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
1988
+ -webkit-mask-composite: xor;
1989
+ pointer-events: none;
1990
+ opacity: 0;
1991
+ transition: opacity var(--transition-glass);
1992
+ }
1993
+ .ds-sidebar__item:hover {
1994
+ background: var(--glass-base-hover);
1995
+ color: var(--text-primary);
1996
+ }
1997
+ .ds-sidebar__item:hover::before {
1998
+ opacity: 1;
1999
+ }
2000
+ .ds-sidebar__item:focus-visible {
2001
+ outline: none;
2002
+ box-shadow: var(--focus-ring);
2003
+ }
2004
+ .ds-sidebar__item--active {
2005
+ background: rgba(var(--brand-pink-rgb), 0.15);
2006
+ color: var(--text-primary);
2007
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1), 0 0 20px rgba(var(--brand-pink-rgb), 0.1);
2008
+ }
2009
+ .ds-sidebar__item--active::before {
2010
+ opacity: 1;
2011
+ background:
2012
+ linear-gradient(
2013
+ 180deg,
2014
+ rgba(var(--brand-pink-rgb), 0.3) 0%,
2015
+ rgba(var(--brand-pink-rgb), 0.1) 100%);
2016
+ }
2017
+ .ds-sidebar__item-icon {
2018
+ display: flex;
2019
+ align-items: center;
2020
+ justify-content: center;
2021
+ width: 1.25rem;
2022
+ height: 1.25rem;
2023
+ flex-shrink: 0;
2024
+ }
2025
+ .ds-sidebar__item-icon svg {
2026
+ width: 100%;
2027
+ height: 100%;
2028
+ }
2029
+ .ds-sidebar__item-label {
2030
+ flex: 1;
2031
+ white-space: nowrap;
2032
+ overflow: hidden;
2033
+ text-overflow: ellipsis;
2034
+ }
2035
+ @media (prefers-contrast: more) {
2036
+ .ds-sidebar {
2037
+ background: rgba(20, 10, 30, 0.98);
2038
+ border: 1px solid rgba(255, 255, 255, 0.3);
2039
+ }
2040
+ .ds-sidebar::before {
2041
+ display: none;
2042
+ }
2043
+ .ds-sidebar__item--active {
2044
+ background: rgba(var(--brand-pink-rgb), 0.3);
2045
+ border: 1px solid rgba(var(--brand-pink-rgb), 0.5);
2046
+ }
2047
+ }
2048
+ @media (prefers-reduced-motion: reduce) {
2049
+ .ds-sidebar {
2050
+ transition: none;
2051
+ }
2052
+ }
2053
+ @supports not (backdrop-filter: blur(1px)) {
2054
+ .ds-sidebar {
2055
+ background: rgba(20, 10, 30, 0.95);
2056
+ }
2057
+ }
2058
+
2059
+ /* src/components/FloatingTabBar/FloatingTabBar.css */
2060
+ .ds-floating-tab-bar {
2061
+ position: fixed;
2062
+ left: 50%;
2063
+ transform: translateX(-50%);
2064
+ display: flex;
2065
+ align-items: center;
2066
+ gap: var(--space-1);
2067
+ padding: var(--space-2);
2068
+ z-index: var(--z-ornament);
2069
+ background: var(--glass-base-hover);
2070
+ backdrop-filter: var(--glass-backdrop);
2071
+ -webkit-backdrop-filter: var(--glass-backdrop);
2072
+ border-radius: var(--radius-card);
2073
+ box-shadow: var(--glass-shadow-elevated-combined);
2074
+ }
2075
+ .ds-floating-tab-bar::before {
2076
+ content: "";
2077
+ position: absolute;
2078
+ inset: 0;
2079
+ border-radius: inherit;
2080
+ padding: 1px;
2081
+ background:
2082
+ linear-gradient(
2083
+ 180deg,
2084
+ var(--rim-light-hover-top) 0%,
2085
+ var(--rim-light-top) 100%);
2086
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2087
+ mask-composite: exclude;
2088
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2089
+ -webkit-mask-composite: xor;
2090
+ pointer-events: none;
2091
+ }
2092
+ .ds-floating-tab-bar--top {
2093
+ top: var(--float-distance);
2094
+ }
2095
+ .ds-floating-tab-bar--bottom {
2096
+ bottom: var(--float-distance);
2097
+ }
2098
+ .ds-tab-item {
2099
+ position: relative;
2100
+ display: flex;
2101
+ flex-direction: column;
2102
+ align-items: center;
2103
+ justify-content: center;
2104
+ gap: var(--space-1);
2105
+ padding: var(--space-2) var(--space-4);
2106
+ min-width: 64px;
2107
+ border: none;
2108
+ border-radius: var(--radius-button);
2109
+ background: transparent;
2110
+ color: var(--text-tertiary);
2111
+ font-family: var(--font-family);
2112
+ font-size: var(--font-size-xs);
2113
+ font-weight: var(--font-weight-medium);
2114
+ cursor: pointer;
2115
+ transition:
2116
+ background var(--transition-glass),
2117
+ color var(--transition-glass),
2118
+ box-shadow var(--transition-glass),
2119
+ transform var(--transition-glass);
2120
+ }
2121
+ .ds-tab-item::before {
2122
+ content: "";
2123
+ position: absolute;
2124
+ inset: 0;
2125
+ border-radius: inherit;
2126
+ padding: 1px;
2127
+ background:
2128
+ linear-gradient(
2129
+ 180deg,
2130
+ var(--rim-light-top) 0%,
2131
+ var(--rim-light-bottom) 100%);
2132
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2133
+ mask-composite: exclude;
2134
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2135
+ -webkit-mask-composite: xor;
2136
+ pointer-events: none;
2137
+ opacity: 0;
2138
+ transition: opacity var(--transition-glass);
2139
+ }
2140
+ .ds-tab-item:hover {
2141
+ background: var(--glass-base);
2142
+ color: var(--text-secondary);
2143
+ }
2144
+ .ds-tab-item:hover::before {
2145
+ opacity: 1;
2146
+ }
2147
+ .ds-tab-item:focus-visible {
2148
+ outline: none;
2149
+ box-shadow: var(--focus-ring);
2150
+ }
2151
+ .ds-tab-item--active {
2152
+ background: rgba(var(--brand-pink-rgb), 0.2);
2153
+ color: var(--text-primary);
2154
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1), 0 0 24px rgba(var(--brand-pink-rgb), 0.15);
2155
+ }
2156
+ .ds-tab-item--active::before {
2157
+ opacity: 1;
2158
+ background:
2159
+ linear-gradient(
2160
+ 180deg,
2161
+ rgba(var(--brand-pink-rgb), 0.4) 0%,
2162
+ rgba(var(--brand-pink-rgb), 0.1) 100%);
2163
+ }
2164
+ .ds-tab-item--active:hover {
2165
+ background: rgba(var(--brand-pink-rgb), 0.25);
2166
+ }
2167
+ .ds-tab-item__icon {
2168
+ display: flex;
2169
+ align-items: center;
2170
+ justify-content: center;
2171
+ width: 1.5rem;
2172
+ height: 1.5rem;
2173
+ }
2174
+ .ds-tab-item__icon svg {
2175
+ width: 100%;
2176
+ height: 100%;
2177
+ }
2178
+ .ds-tab-item__label {
2179
+ white-space: nowrap;
2180
+ }
2181
+ .ds-floating-tab-bar--compact .ds-tab-item {
2182
+ padding: var(--space-3);
2183
+ min-width: auto;
2184
+ }
2185
+ .ds-floating-tab-bar--compact .ds-tab-item__label {
2186
+ display: none;
2187
+ }
2188
+ @media (prefers-contrast: more) {
2189
+ .ds-floating-tab-bar {
2190
+ background: rgba(20, 10, 30, 0.98);
2191
+ border: 1px solid rgba(255, 255, 255, 0.3);
2192
+ }
2193
+ .ds-floating-tab-bar::before {
2194
+ display: none;
2195
+ }
2196
+ .ds-tab-item--active {
2197
+ background: rgba(var(--brand-pink-rgb), 0.4);
2198
+ border: 1px solid rgba(var(--brand-pink-rgb), 0.6);
2199
+ }
2200
+ }
2201
+ @supports not (backdrop-filter: blur(1px)) {
2202
+ .ds-floating-tab-bar {
2203
+ background: rgba(30, 20, 45, 0.98);
2204
+ }
2205
+ }
2206
+
2207
+ /* src/components/StatusBadge/StatusBadge.css */
2208
+ .ds-status-badge {
2209
+ display: inline-flex;
2210
+ align-items: center;
2211
+ gap: var(--space-2);
2212
+ font-family: var(--font-family);
2213
+ font-weight: var(--font-weight-medium);
2214
+ color: var(--text-primary);
2215
+ border-radius: var(--radius-badge);
2216
+ white-space: nowrap;
2217
+ background: var(--glass-base);
2218
+ backdrop-filter: blur(12px) saturate(140%);
2219
+ -webkit-backdrop-filter: blur(12px) saturate(140%);
2220
+ }
2221
+ .ds-status-badge--sm {
2222
+ font-size: var(--font-size-xs);
2223
+ padding: var(--space-1) var(--space-2);
2224
+ }
2225
+ .ds-status-badge--md {
2226
+ font-size: var(--font-size-sm);
2227
+ padding: var(--space-1) var(--space-3);
2228
+ }
2229
+ .ds-status-badge--default {
2230
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15), 0 2px 8px rgba(0, 0, 0, 0.15);
2231
+ }
2232
+ .ds-status-badge--success {
2233
+ background: rgba(var(--status-success-rgb), 0.08);
2234
+ box-shadow:
2235
+ inset 0 0 0 1px rgba(var(--status-success-rgb), 0.4),
2236
+ 0 2px 8px rgba(0, 0, 0, 0.15),
2237
+ 0 0 12px rgba(var(--status-success-rgb), 0.1);
2238
+ color: var(--status-success);
2239
+ }
2240
+ .ds-status-badge--warning {
2241
+ background: rgba(var(--status-warning-rgb), 0.08);
2242
+ box-shadow:
2243
+ inset 0 0 0 1px rgba(var(--status-warning-rgb), 0.4),
2244
+ 0 2px 8px rgba(0, 0, 0, 0.15),
2245
+ 0 0 12px rgba(var(--status-warning-rgb), 0.1);
2246
+ color: var(--status-warning);
2247
+ }
2248
+ .ds-status-badge--error {
2249
+ background: rgba(var(--status-error-rgb), 0.08);
2250
+ box-shadow:
2251
+ inset 0 0 0 1px rgba(var(--status-error-rgb), 0.4),
2252
+ 0 2px 8px rgba(0, 0, 0, 0.15),
2253
+ 0 0 12px rgba(var(--status-error-rgb), 0.1);
2254
+ color: var(--status-error);
2255
+ }
2256
+ .ds-status-badge--info {
2257
+ background: rgba(var(--status-info-rgb), 0.08);
2258
+ box-shadow:
2259
+ inset 0 0 0 1px rgba(var(--status-info-rgb), 0.4),
2260
+ 0 2px 8px rgba(0, 0, 0, 0.15),
2261
+ 0 0 12px rgba(var(--status-info-rgb), 0.1);
2262
+ color: var(--status-info);
2263
+ }
2264
+ .ds-status-badge__dot {
2265
+ width: 6px;
2266
+ height: 6px;
2267
+ border-radius: 50%;
2268
+ flex-shrink: 0;
2269
+ }
2270
+ .ds-status-badge--default .ds-status-badge__dot {
2271
+ background: var(--text-secondary);
2272
+ box-shadow: 0 0 6px rgba(255, 255, 255, 0.3);
2273
+ }
2274
+ .ds-status-badge--success .ds-status-badge__dot {
2275
+ background: var(--status-success);
2276
+ box-shadow: 0 0 8px rgba(var(--status-success-rgb), 0.5);
2277
+ }
2278
+ .ds-status-badge--warning .ds-status-badge__dot {
2279
+ background: var(--status-warning);
2280
+ box-shadow: 0 0 8px rgba(var(--status-warning-rgb), 0.5);
2281
+ }
2282
+ .ds-status-badge--error .ds-status-badge__dot {
2283
+ background: var(--status-error);
2284
+ box-shadow: 0 0 8px rgba(var(--status-error-rgb), 0.5);
2285
+ }
2286
+ .ds-status-badge--info .ds-status-badge__dot {
2287
+ background: var(--status-info);
2288
+ box-shadow: 0 0 8px rgba(var(--status-info-rgb), 0.5);
2289
+ }
2290
+ .ds-status-badge--dot:empty {
2291
+ padding: var(--space-1);
2292
+ }
2293
+ .ds-status-badge--dot:empty .ds-status-badge__dot {
2294
+ width: 8px;
2295
+ height: 8px;
2296
+ }
2297
+ @media (prefers-contrast: more) {
2298
+ .ds-status-badge {
2299
+ border: 1px solid currentColor;
2300
+ }
2301
+ .ds-status-badge--default {
2302
+ border-color: rgba(255, 255, 255, 0.5);
2303
+ }
2304
+ }
2305
+ @supports not (backdrop-filter: blur(1px)) {
2306
+ .ds-status-badge {
2307
+ background: rgba(30, 20, 45, 0.9);
2308
+ }
2309
+ .ds-status-badge--success {
2310
+ background: rgba(0, 40, 20, 0.9);
2311
+ }
2312
+ .ds-status-badge--warning {
2313
+ background: rgba(40, 30, 0, 0.9);
2314
+ }
2315
+ .ds-status-badge--error {
2316
+ background: rgba(40, 10, 15, 0.9);
2317
+ }
2318
+ .ds-status-badge--info {
2319
+ background: rgba(0, 25, 40, 0.9);
2320
+ }
2321
+ }
2322
+
2323
+ /* src/components/Shell/Shell.css */
2324
+ .ds-shell {
2325
+ position: relative;
2326
+ width: 100%;
2327
+ min-height: 100%;
2328
+ display: flex;
2329
+ }
2330
+ .ds-shell__content {
2331
+ flex: 1;
2332
+ width: 100%;
2333
+ padding: var(--space-6);
2334
+ padding-top: calc(var(--float-distance) + var(--space-4));
2335
+ padding-bottom: calc(var(--float-distance) + var(--space-4));
2336
+ box-sizing: border-box;
2337
+ }
2338
+ .ds-shell--left .ds-shell__content {
2339
+ padding-left: calc(280px + var(--float-distance) * 2);
2340
+ padding-right: var(--float-distance);
2341
+ }
2342
+ .ds-shell--right .ds-shell__content {
2343
+ padding-right: calc(280px + var(--float-distance) * 2);
2344
+ padding-left: var(--float-distance);
2345
+ }
2346
+ .ds-shell--bottom {
2347
+ flex-direction: column;
2348
+ }
2349
+ .ds-shell--bottom .ds-shell__content {
2350
+ padding-left: var(--float-distance);
2351
+ padding-right: var(--float-distance);
2352
+ padding-bottom: calc(80px + var(--float-distance) * 2);
2353
+ }
2354
+ @media (max-width: 768px) {
2355
+ .ds-shell--left .ds-shell__content,
2356
+ .ds-shell--right .ds-shell__content {
2357
+ padding-left: var(--float-distance);
2358
+ padding-right: var(--float-distance);
2359
+ }
2360
+ .ds-shell__content {
2361
+ padding-bottom: calc(var(--float-distance) + env(safe-area-inset-bottom, 0px));
2362
+ }
2363
+ }
2364
+
2365
+ /* src/components/AppearancePanel/AppearancePanel.css */
2366
+ @media (max-width: 768px) {
2367
+ .ds-appearance-panel {
2368
+ position: fixed;
2369
+ bottom: 0;
2370
+ left: 0;
2371
+ right: 0;
2372
+ max-width: 100%;
2373
+ border-radius: var(--radius-panel) var(--radius-panel) 0 0;
2374
+ z-index: var(--z-modal);
2375
+ animation: ds-panel-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
2376
+ max-height: 60vh;
2377
+ overflow-y: auto;
2378
+ padding-bottom: env(safe-area-inset-bottom, 24px);
2379
+ }
2380
+ .ds-appearance-panel::before {
2381
+ border-radius: var(--radius-panel) var(--radius-panel) 0 0;
2382
+ }
2383
+ }
2384
+ @keyframes ds-panel-slide-up {
2385
+ from {
2386
+ transform: translateY(100%);
2387
+ }
2388
+ to {
2389
+ transform: translateY(0);
2390
+ }
2391
+ }
2392
+ .ds-appearance-panel {
2393
+ position: relative;
2394
+ padding: var(--space-6);
2395
+ border-radius: var(--radius-card);
2396
+ max-width: 400px;
2397
+ max-height: 85vh;
2398
+ overflow-y: auto;
2399
+ background: var(--glass-base);
2400
+ backdrop-filter: var(--glass-backdrop);
2401
+ -webkit-backdrop-filter: var(--glass-backdrop);
2402
+ box-shadow: var(--glass-shadow-combined);
2403
+ }
2404
+ .ds-appearance-panel::before {
2405
+ content: "";
2406
+ position: absolute;
2407
+ inset: 0;
2408
+ border-radius: inherit;
2409
+ padding: 1px;
2410
+ background:
2411
+ linear-gradient(
2412
+ 180deg,
2413
+ var(--rim-light-top) 0%,
2414
+ var(--rim-light-bottom) 100%);
2415
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2416
+ mask-composite: exclude;
2417
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2418
+ -webkit-mask-composite: xor;
2419
+ pointer-events: none;
2420
+ }
2421
+ .ds-appearance-panel__title {
2422
+ font-family: var(--font-family);
2423
+ font-size: var(--font-size-lg);
2424
+ font-weight: var(--font-weight-semibold);
2425
+ color: var(--text-primary);
2426
+ margin: 0 0 var(--space-6);
2427
+ }
2428
+ .ds-appearance-panel__section {
2429
+ border: none;
2430
+ padding: 0;
2431
+ margin: 0 0 var(--space-6);
2432
+ }
2433
+ .ds-appearance-panel__section:last-of-type {
2434
+ margin-bottom: var(--space-4);
2435
+ }
2436
+ .ds-appearance-panel__legend {
2437
+ font-family: var(--font-family);
2438
+ font-size: var(--font-size-xs);
2439
+ font-weight: var(--font-weight-semibold);
2440
+ color: var(--text-tertiary);
2441
+ text-transform: uppercase;
2442
+ letter-spacing: 0.05em;
2443
+ margin-bottom: var(--space-3);
2444
+ }
2445
+ .ds-appearance-panel__options {
2446
+ display: flex;
2447
+ flex-direction: column;
2448
+ gap: var(--space-2);
2449
+ }
2450
+ .ds-appearance-panel__options--row {
2451
+ flex-direction: row;
2452
+ gap: var(--space-3);
2453
+ }
2454
+ .ds-appearance-panel__options--row .ds-appearance-panel__option {
2455
+ flex: 1;
2456
+ }
2457
+ .ds-appearance-panel__option {
2458
+ display: flex;
2459
+ align-items: center;
2460
+ gap: var(--space-3);
2461
+ padding: var(--space-3) var(--space-4);
2462
+ border-radius: var(--radius-button);
2463
+ cursor: pointer;
2464
+ transition: background var(--transition-glass);
2465
+ background: transparent;
2466
+ }
2467
+ .ds-appearance-panel__option:hover {
2468
+ background: var(--glass-base-hover);
2469
+ }
2470
+ .ds-appearance-panel__option--active {
2471
+ background: rgba(var(--accent-rgb), 0.15);
2472
+ }
2473
+ .ds-appearance-panel__option--active:hover {
2474
+ background: rgba(var(--accent-rgb), 0.2);
2475
+ }
2476
+ .ds-appearance-panel__option--toggle {
2477
+ flex-direction: column;
2478
+ align-items: flex-start;
2479
+ gap: var(--space-1);
2480
+ padding: var(--space-3);
2481
+ text-align: center;
2482
+ }
2483
+ .ds-appearance-panel__option--toggle .ds-appearance-panel__option-content {
2484
+ width: 100%;
2485
+ text-align: center;
2486
+ }
2487
+ .ds-appearance-panel__radio {
2488
+ appearance: none;
2489
+ width: 16px;
2490
+ height: 16px;
2491
+ border-radius: 50%;
2492
+ border: 2px solid var(--text-tertiary);
2493
+ transition: all var(--transition-glass);
2494
+ flex-shrink: 0;
2495
+ }
2496
+ .ds-appearance-panel__option--toggle .ds-appearance-panel__radio {
2497
+ position: absolute;
2498
+ opacity: 0;
2499
+ pointer-events: none;
2500
+ }
2501
+ .ds-appearance-panel__option--active .ds-appearance-panel__radio {
2502
+ border-color: rgba(var(--accent-rgb), 1);
2503
+ background: rgba(var(--accent-rgb), 1);
2504
+ box-shadow: 0 0 8px rgba(var(--accent-rgb), 0.4);
2505
+ }
2506
+ .ds-appearance-panel__option-content {
2507
+ display: flex;
2508
+ flex-direction: column;
2509
+ gap: 2px;
2510
+ }
2511
+ .ds-appearance-panel__option-label {
2512
+ font-family: var(--font-family);
2513
+ font-size: var(--font-size-base);
2514
+ color: var(--text-primary);
2515
+ }
2516
+ .ds-appearance-panel__option-description {
2517
+ font-family: var(--font-family);
2518
+ font-size: var(--font-size-xs);
2519
+ color: var(--text-tertiary);
2520
+ }
2521
+ .ds-appearance-panel__color-picker {
2522
+ margin-top: var(--space-4);
2523
+ padding: var(--space-4);
2524
+ border-radius: var(--radius-button);
2525
+ background: var(--glass-base);
2526
+ border: 1px solid rgba(var(--accent-rgb), 0.2);
2527
+ }
2528
+ .ds-appearance-panel__color-label {
2529
+ display: block;
2530
+ font-family: var(--font-family);
2531
+ font-size: var(--font-size-xs);
2532
+ font-weight: var(--font-weight-medium);
2533
+ color: var(--text-secondary);
2534
+ margin-bottom: var(--space-2);
2535
+ }
2536
+ .ds-appearance-panel__color-input-wrapper {
2537
+ display: flex;
2538
+ align-items: center;
2539
+ gap: var(--space-3);
2540
+ }
2541
+ .ds-appearance-panel__color-input {
2542
+ width: 48px;
2543
+ height: 48px;
2544
+ padding: 0;
2545
+ border: none;
2546
+ border-radius: var(--radius-badge);
2547
+ cursor: pointer;
2548
+ background: transparent;
2549
+ overflow: hidden;
2550
+ }
2551
+ .ds-appearance-panel__color-input::-webkit-color-swatch-wrapper {
2552
+ padding: 0;
2553
+ }
2554
+ .ds-appearance-panel__color-input::-webkit-color-swatch {
2555
+ border: 2px solid var(--rim-light-top);
2556
+ border-radius: var(--radius-badge);
2557
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
2558
+ }
2559
+ .ds-appearance-panel__color-input::-moz-color-swatch {
2560
+ border: 2px solid var(--rim-light-top);
2561
+ border-radius: var(--radius-badge);
2562
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
2563
+ }
2564
+ .ds-appearance-panel__color-input:focus-visible {
2565
+ outline: none;
2566
+ box-shadow: var(--focus-ring);
2567
+ border-radius: var(--radius-badge);
2568
+ }
2569
+ .ds-appearance-panel__color-value {
2570
+ font-family: var(--font-family-mono);
2571
+ font-size: var(--font-size-sm);
2572
+ color: var(--text-secondary);
2573
+ padding: var(--space-2) var(--space-3);
2574
+ background: var(--glass-base);
2575
+ border-radius: var(--radius-badge);
2576
+ border: 1px solid var(--rim-light-bottom);
2577
+ }
2578
+ .ds-appearance-panel__reset {
2579
+ display: block;
2580
+ width: 100%;
2581
+ padding: var(--space-3) var(--space-4);
2582
+ border: none;
2583
+ border-radius: var(--radius-button);
2584
+ background: var(--btn-secondary-bg);
2585
+ color: var(--text-secondary);
2586
+ font-family: var(--font-family);
2587
+ font-size: var(--font-size-sm);
2588
+ font-weight: var(--font-weight-medium);
2589
+ cursor: pointer;
2590
+ transition: all var(--transition-glass);
2591
+ }
2592
+ .ds-appearance-panel__reset:hover {
2593
+ background: var(--btn-secondary-bg-hover);
2594
+ color: var(--text-primary);
2595
+ }
2596
+ .ds-appearance-panel__reset:focus-visible {
2597
+ box-shadow: var(--focus-ring);
2598
+ outline: none;
2599
+ }
2600
+ @media (prefers-contrast: more) {
2601
+ .ds-appearance-panel {
2602
+ border: 1px solid rgba(255, 255, 255, 0.3);
2603
+ }
2604
+ .ds-appearance-panel__color-picker {
2605
+ border: 1px solid rgba(255, 255, 255, 0.3);
2606
+ }
2607
+ }
2608
+
2609
+ /* src/components/Login/Login.css */
2610
+ .ds-login {
2611
+ position: relative;
2612
+ display: flex;
2613
+ flex-direction: column;
2614
+ align-items: center;
2615
+ justify-content: center;
2616
+ min-height: 100vh;
2617
+ padding: var(--space-6);
2618
+ overflow: hidden;
2619
+ }
2620
+ .ds-login__accent {
2621
+ position: absolute;
2622
+ border-radius: 50%;
2623
+ filter: blur(80px);
2624
+ opacity: 0.5;
2625
+ pointer-events: none;
2626
+ animation: ds-login-float 20s ease-in-out infinite;
2627
+ }
2628
+ .ds-login__accent--1 {
2629
+ width: 400px;
2630
+ height: 400px;
2631
+ background:
2632
+ radial-gradient(
2633
+ circle,
2634
+ rgba(var(--accent-rgb), 0.4) 0%,
2635
+ transparent 70%);
2636
+ top: -100px;
2637
+ right: -100px;
2638
+ animation-delay: 0s;
2639
+ }
2640
+ .ds-login__accent--2 {
2641
+ width: 300px;
2642
+ height: 300px;
2643
+ background:
2644
+ radial-gradient(
2645
+ circle,
2646
+ rgba(var(--accent2-rgb), 0.3) 0%,
2647
+ transparent 70%);
2648
+ bottom: -50px;
2649
+ left: -50px;
2650
+ animation-delay: -10s;
2651
+ }
2652
+ @keyframes ds-login-float {
2653
+ 0%, 100% {
2654
+ transform: translate(0, 0) scale(1);
2655
+ }
2656
+ 25% {
2657
+ transform: translate(20px, -30px) scale(1.05);
2658
+ }
2659
+ 50% {
2660
+ transform: translate(-10px, 20px) scale(0.95);
2661
+ }
2662
+ 75% {
2663
+ transform: translate(-30px, -10px) scale(1.02);
2664
+ }
2665
+ }
2666
+ .ds-login__card {
2667
+ position: relative;
2668
+ width: 100%;
2669
+ max-width: 420px;
2670
+ padding: var(--space-8);
2671
+ border-radius: var(--radius-panel);
2672
+ background: var(--glass-base);
2673
+ backdrop-filter: var(--glass-backdrop);
2674
+ -webkit-backdrop-filter: var(--glass-backdrop);
2675
+ box-shadow: var(--glass-shadow-elevated-combined);
2676
+ animation: ds-login-card-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
2677
+ opacity: 0;
2678
+ transform: translateY(20px);
2679
+ }
2680
+ .ds-login__card::before {
2681
+ content: "";
2682
+ position: absolute;
2683
+ inset: 0;
2684
+ border-radius: inherit;
2685
+ padding: 1px;
2686
+ background:
2687
+ linear-gradient(
2688
+ 180deg,
2689
+ var(--rim-light-hover-top) 0%,
2690
+ var(--rim-light-bottom) 100%);
2691
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2692
+ mask-composite: exclude;
2693
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2694
+ -webkit-mask-composite: xor;
2695
+ pointer-events: none;
2696
+ }
2697
+ @keyframes ds-login-card-enter {
2698
+ to {
2699
+ opacity: 1;
2700
+ transform: translateY(0);
2701
+ }
2702
+ }
2703
+ .ds-login__header {
2704
+ text-align: center;
2705
+ margin-bottom: var(--space-6);
2706
+ }
2707
+ .ds-login__logo {
2708
+ display: flex;
2709
+ justify-content: center;
2710
+ margin-bottom: var(--space-4);
2711
+ animation: ds-login-fade-in 0.5s ease-out 0.1s forwards;
2712
+ opacity: 0;
2713
+ }
2714
+ .ds-login__logo--default {
2715
+ }
2716
+ .ds-login__logo-icon {
2717
+ width: 56px;
2718
+ height: 56px;
2719
+ animation: ds-login-logo-pulse 3s ease-in-out infinite;
2720
+ }
2721
+ .ds-login__logo-icon svg {
2722
+ width: 100%;
2723
+ height: 100%;
2724
+ filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
2725
+ }
2726
+ @keyframes ds-login-logo-pulse {
2727
+ 0%, 100% {
2728
+ transform: scale(1);
2729
+ filter: drop-shadow(0 4px 12px rgba(var(--accent-rgb), 0.3));
2730
+ }
2731
+ 50% {
2732
+ transform: scale(1.05);
2733
+ filter: drop-shadow(0 6px 20px rgba(var(--accent-rgb), 0.5));
2734
+ }
2735
+ }
2736
+ .ds-login__title {
2737
+ font-family: var(--font-family);
2738
+ font-size: var(--font-size-2xl);
2739
+ font-weight: var(--font-weight-bold);
2740
+ color: var(--text-primary);
2741
+ margin: 0 0 var(--space-2);
2742
+ animation: ds-login-fade-in 0.5s ease-out 0.2s forwards;
2743
+ opacity: 0;
2744
+ }
2745
+ .ds-login__tagline {
2746
+ font-family: var(--font-family);
2747
+ font-size: var(--font-size-sm);
2748
+ color: var(--text-secondary);
2749
+ margin: 0;
2750
+ line-height: var(--line-height-normal);
2751
+ animation: ds-login-fade-in 0.5s ease-out 0.3s forwards;
2752
+ opacity: 0;
2753
+ }
2754
+ @keyframes ds-login-fade-in {
2755
+ to {
2756
+ opacity: 1;
2757
+ }
2758
+ }
2759
+ .ds-login__error {
2760
+ display: flex;
2761
+ align-items: center;
2762
+ gap: var(--space-2);
2763
+ padding: var(--space-3) var(--space-4);
2764
+ margin-bottom: var(--space-4);
2765
+ border-radius: var(--radius-button);
2766
+ background: rgba(var(--status-error-rgb), 0.1);
2767
+ border: 1px solid rgba(var(--status-error-rgb), 0.3);
2768
+ color: var(--status-error);
2769
+ font-size: var(--font-size-sm);
2770
+ animation: ds-login-error-enter 0.4s ease-out;
2771
+ }
2772
+ @keyframes ds-login-error-enter {
2773
+ 0% {
2774
+ opacity: 0;
2775
+ transform: translateX(-10px);
2776
+ }
2777
+ 50% {
2778
+ transform: translateX(5px);
2779
+ }
2780
+ 100% {
2781
+ opacity: 1;
2782
+ transform: translateX(0);
2783
+ }
2784
+ }
2785
+ .ds-login__social {
2786
+ margin-bottom: var(--space-4);
2787
+ animation: ds-login-fade-in 0.5s ease-out 0.4s forwards;
2788
+ opacity: 0;
2789
+ }
2790
+ .ds-login__social-btn {
2791
+ display: flex;
2792
+ align-items: center;
2793
+ justify-content: center;
2794
+ gap: var(--space-3);
2795
+ width: 100%;
2796
+ padding: var(--space-3) var(--space-4);
2797
+ margin-bottom: var(--space-3);
2798
+ border: none;
2799
+ border-radius: var(--radius-button);
2800
+ background: var(--glass-base);
2801
+ color: var(--text-primary);
2802
+ font-family: var(--font-family);
2803
+ font-size: var(--font-size-base);
2804
+ font-weight: var(--font-weight-medium);
2805
+ cursor: pointer;
2806
+ position: relative;
2807
+ transition:
2808
+ background var(--transition-glass),
2809
+ transform var(--transition-glass),
2810
+ box-shadow var(--transition-glass);
2811
+ }
2812
+ .ds-login__social-btn::before {
2813
+ content: "";
2814
+ position: absolute;
2815
+ inset: 0;
2816
+ border-radius: inherit;
2817
+ padding: 1px;
2818
+ background:
2819
+ linear-gradient(
2820
+ 180deg,
2821
+ var(--rim-light-top) 0%,
2822
+ var(--rim-light-bottom) 100%);
2823
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2824
+ mask-composite: exclude;
2825
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
2826
+ -webkit-mask-composite: xor;
2827
+ pointer-events: none;
2828
+ transition: background var(--transition-glass);
2829
+ }
2830
+ .ds-login__social-btn:hover:not(:disabled) {
2831
+ background: var(--glass-base-hover);
2832
+ transform: translateY(-2px);
2833
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
2834
+ }
2835
+ .ds-login__social-btn:hover:not(:disabled)::before {
2836
+ background:
2837
+ linear-gradient(
2838
+ 180deg,
2839
+ var(--rim-light-hover-top) 0%,
2840
+ var(--rim-light-hover-bottom) 100%);
2841
+ }
2842
+ .ds-login__social-btn:disabled {
2843
+ opacity: 0.5;
2844
+ cursor: not-allowed;
2845
+ }
2846
+ .ds-login__divider {
2847
+ display: flex;
2848
+ align-items: center;
2849
+ gap: var(--space-4);
2850
+ margin: var(--space-4) 0;
2851
+ color: var(--text-tertiary);
2852
+ font-size: var(--font-size-sm);
2853
+ }
2854
+ .ds-login__divider::before,
2855
+ .ds-login__divider::after {
2856
+ content: "";
2857
+ flex: 1;
2858
+ height: 1px;
2859
+ background:
2860
+ linear-gradient(
2861
+ 90deg,
2862
+ transparent 0%,
2863
+ var(--rim-light-top) 50%,
2864
+ transparent 100%);
2865
+ }
2866
+ .ds-login__form {
2867
+ animation: ds-login-fade-in 0.5s ease-out 0.5s forwards;
2868
+ opacity: 0;
2869
+ }
2870
+ .ds-login__field {
2871
+ margin-bottom: var(--space-4);
2872
+ }
2873
+ .ds-login__password-wrapper {
2874
+ position: relative;
2875
+ }
2876
+ .ds-login__password-wrapper .ds-textfield__input {
2877
+ padding-right: 48px;
2878
+ }
2879
+ .ds-login__password-toggle {
2880
+ position: absolute;
2881
+ right: var(--space-3);
2882
+ top: 50%;
2883
+ transform: translateY(calc(-50% + 10px));
2884
+ padding: var(--space-2);
2885
+ border: none;
2886
+ background: transparent;
2887
+ color: var(--text-tertiary);
2888
+ cursor: pointer;
2889
+ border-radius: var(--radius-badge);
2890
+ transition: color var(--transition-glass), background var(--transition-glass);
2891
+ }
2892
+ .ds-login__password-toggle:hover {
2893
+ color: var(--text-primary);
2894
+ background: var(--glass-base-hover);
2895
+ }
2896
+ .ds-login__options {
2897
+ display: flex;
2898
+ align-items: center;
2899
+ justify-content: space-between;
2900
+ margin-bottom: var(--space-6);
2901
+ flex-wrap: wrap;
2902
+ gap: var(--space-2);
2903
+ }
2904
+ .ds-login__link {
2905
+ padding: 0;
2906
+ border: none;
2907
+ background: transparent;
2908
+ color: var(--text-secondary);
2909
+ font-family: var(--font-family);
2910
+ font-size: var(--font-size-sm);
2911
+ cursor: pointer;
2912
+ transition: color var(--transition-glass);
2913
+ }
2914
+ .ds-login__link:hover:not(:disabled) {
2915
+ color: var(--text-primary);
2916
+ }
2917
+ .ds-login__link--accent {
2918
+ color: rgb(var(--accent-rgb));
2919
+ font-weight: var(--font-weight-medium);
2920
+ }
2921
+ .ds-login__link--accent:hover:not(:disabled) {
2922
+ color: rgb(var(--accent-rgb));
2923
+ text-decoration: underline;
2924
+ }
2925
+ .ds-login__link:disabled {
2926
+ opacity: 0.5;
2927
+ cursor: not-allowed;
2928
+ }
2929
+ .ds-login__submit {
2930
+ width: 100%;
2931
+ }
2932
+ .ds-login__spinner {
2933
+ display: inline-block;
2934
+ width: 20px;
2935
+ height: 20px;
2936
+ border: 2px solid rgba(255, 255, 255, 0.3);
2937
+ border-top-color: white;
2938
+ border-radius: 50%;
2939
+ animation: ds-login-spin 0.8s linear infinite;
2940
+ }
2941
+ @keyframes ds-login-spin {
2942
+ to {
2943
+ transform: rotate(360deg);
2944
+ }
2945
+ }
2946
+ .ds-login__footer {
2947
+ display: flex;
2948
+ align-items: center;
2949
+ justify-content: center;
2950
+ gap: var(--space-2);
2951
+ margin-top: var(--space-6);
2952
+ padding-top: var(--space-6);
2953
+ border-top: 1px solid var(--rim-light-bottom);
2954
+ font-size: var(--font-size-sm);
2955
+ color: var(--text-tertiary);
2956
+ animation: ds-login-fade-in 0.5s ease-out 0.6s forwards;
2957
+ opacity: 0;
2958
+ }
2959
+ .ds-login__trust {
2960
+ margin-top: var(--space-8);
2961
+ font-size: var(--font-size-xs);
2962
+ color: var(--text-tertiary);
2963
+ animation: ds-login-fade-in 0.5s ease-out 0.7s forwards;
2964
+ opacity: 0;
2965
+ }
2966
+ @media (max-width: 480px) {
2967
+ .ds-login {
2968
+ padding: var(--space-4);
2969
+ }
2970
+ .ds-login__card {
2971
+ padding: var(--space-6);
2972
+ border-radius: var(--radius-card);
2973
+ }
2974
+ .ds-login__accent--1 {
2975
+ width: 200px;
2976
+ height: 200px;
2977
+ top: -50px;
2978
+ right: -50px;
2979
+ }
2980
+ .ds-login__accent--2 {
2981
+ width: 150px;
2982
+ height: 150px;
2983
+ bottom: -30px;
2984
+ left: -30px;
2985
+ }
2986
+ .ds-login__options {
2987
+ flex-direction: column;
2988
+ align-items: flex-start;
2989
+ gap: var(--space-3);
2990
+ }
2991
+ }
2992
+ @media (prefers-reduced-motion: reduce) {
2993
+ .ds-login__card,
2994
+ .ds-login__logo,
2995
+ .ds-login__title,
2996
+ .ds-login__tagline,
2997
+ .ds-login__social,
2998
+ .ds-login__form,
2999
+ .ds-login__footer,
3000
+ .ds-login__trust {
3001
+ animation: none;
3002
+ opacity: 1;
3003
+ }
3004
+ .ds-login__accent {
3005
+ animation: none;
3006
+ }
3007
+ .ds-login__logo-icon {
3008
+ animation: none;
3009
+ }
3010
+ .ds-login__spinner {
3011
+ animation-duration: 1.5s;
3012
+ }
3013
+ }
3014
+ @media (prefers-contrast: more) {
3015
+ .ds-login__card {
3016
+ border: 1px solid rgba(255, 255, 255, 0.3);
3017
+ }
3018
+ .ds-login__social-btn {
3019
+ border: 1px solid rgba(255, 255, 255, 0.2);
3020
+ }
3021
+ .ds-login__social-btn::before {
3022
+ display: none;
3023
+ }
3024
+ }
3025
+
3026
+ /* src/styles/styles.css */
3027
+ /*# sourceMappingURL=styles.css.map */