fogact 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +244 -0
  3. package/README.zh-CN.md +244 -0
  4. package/bin/cli.js +9 -0
  5. package/bin/web-server.js +1434 -0
  6. package/config/upstream.example.json +14 -0
  7. package/frontend/activate.html +249 -0
  8. package/frontend/admin/admin-panel-v2.js +1899 -0
  9. package/frontend/admin/index.html +705 -0
  10. package/frontend/assets/market-ui.css +1876 -0
  11. package/frontend/color-test.html +136 -0
  12. package/frontend/index.html +191 -0
  13. package/frontend/user/assets/AnnouncementDetail-Dvxmwz0A.js +12 -0
  14. package/frontend/user/assets/Announcements-CS1tF2mx.js +11 -0
  15. package/frontend/user/assets/CardBind-CsCxihhP.js +21 -0
  16. package/frontend/user/assets/CardContent.vue_vue_type_script_setup_true_lang-D2L-uqSl.js +1 -0
  17. package/frontend/user/assets/CardDescription.vue_vue_type_script_setup_true_lang-D-v5Pl7F.js +1 -0
  18. package/frontend/user/assets/CardTitle.vue_vue_type_script_setup_true_lang-a0CCN6D5.js +1 -0
  19. package/frontend/user/assets/Dashboard-rPsmltm5.js +51 -0
  20. package/frontend/user/assets/DashboardLayout-BUCWGlXC.css +1 -0
  21. package/frontend/user/assets/DashboardLayout-DDkxHYFj.js +80 -0
  22. package/frontend/user/assets/Input.vue_vue_type_script_setup_true_lang-B0SyPmYb.js +6 -0
  23. package/frontend/user/assets/Label.vue_vue_type_script_setup_true_lang-CxYORSgN.js +1 -0
  24. package/frontend/user/assets/Progress.vue_vue_type_script_setup_true_lang-2_QbPsEQ.js +1 -0
  25. package/frontend/user/assets/QuotaPack-B_tJ7Psm.js +6 -0
  26. package/frontend/user/assets/Renewal-BSDhDmwv.js +6 -0
  27. package/frontend/user/assets/ScrollArea.vue_vue_type_script_setup_true_lang-DMYwcfpz.js +1 -0
  28. package/frontend/user/assets/Separator.vue_vue_type_script_setup_true_lang-Ckg8EXj_.js +1 -0
  29. package/frontend/user/assets/Settings-CBdAa3lw.js +11 -0
  30. package/frontend/user/assets/TooltipTrigger.vue_vue_type_script_setup_true_lang-DtSBjzGo.js +16 -0
  31. package/frontend/user/assets/Welcome-7IfzEli4.css +1 -0
  32. package/frontend/user/assets/Welcome-Dtfp6oER.js +1 -0
  33. package/frontend/user/assets/_plugin-vue_export-helper-5cjT4u0R.js +16 -0
  34. package/frontend/user/assets/activity-wYWtyqTJ.js +6 -0
  35. package/frontend/user/assets/announcement-35mOnjRL.js +16 -0
  36. package/frontend/user/assets/calendar-BFNuCata.js +6 -0
  37. package/frontend/user/assets/chart-vendor-CULJE59K.js +37 -0
  38. package/frontend/user/assets/chevron-down-kDbuU1Py.js +6 -0
  39. package/frontend/user/assets/chevron-right-BayASIm0.js +6 -0
  40. package/frontend/user/assets/eye-CY62vip0.js +6 -0
  41. package/frontend/user/assets/gauge-C5NQ-mV8.js +6 -0
  42. package/frontend/user/assets/index-B8QSyYhS.css +1 -0
  43. package/frontend/user/assets/index-Da98HOxL.js +91 -0
  44. package/frontend/user/assets/link-2-DT5R5nGO.js +6 -0
  45. package/frontend/user/assets/package-rUbExUEn.js +6 -0
  46. package/frontend/user/assets/plus-CQc6C8wG.js +11 -0
  47. package/frontend/user/assets/refresh-cw-Y9hCloPL.js +6 -0
  48. package/frontend/user/assets/useUserPageRefresh-BYZvpNR9.js +1 -0
  49. package/frontend/user/assets/zap-l5zbZqrM.js +11 -0
  50. package/frontend/user/index.html +67 -0
  51. package/install.sh +402 -0
  52. package/lib/commands/activate.js +144 -0
  53. package/lib/commands/restore.js +102 -0
  54. package/lib/commands/test.js +40 -0
  55. package/lib/config/claude.js +81 -0
  56. package/lib/config/codex.js +164 -0
  57. package/lib/config/upstream.js +79 -0
  58. package/lib/index.js +164 -0
  59. package/lib/platforms/claude-code.js +35 -0
  60. package/lib/platforms/codex-cli.js +35 -0
  61. package/lib/platforms/editor-codex.js +138 -0
  62. package/lib/platforms/index.js +32 -0
  63. package/lib/platforms/openclaw.js +118 -0
  64. package/lib/platforms/opencode.js +89 -0
  65. package/lib/services/activation-orchestrator.js +666 -0
  66. package/lib/services/backup-service.js +162 -0
  67. package/lib/services/cliproxy-api.js +174 -0
  68. package/lib/services/database.js +461 -0
  69. package/lib/services/newapi.js +97 -0
  70. package/lib/services/node-service.js +49 -0
  71. package/lib/utils/json-file.js +33 -0
  72. package/package.json +53 -0
@@ -0,0 +1,1876 @@
1
+ :root {
2
+ color-scheme: light;
3
+ --primary: #6d5dfc;
4
+ --market-bg: #f7f7fb;
5
+ --market-bg-soft: #ffffff;
6
+ --market-ink: #101014;
7
+ --market-muted: #6f707a;
8
+ --market-soft: #8b8d98;
9
+ --market-line: rgba(16, 16, 20, 0.09);
10
+ --market-line-strong: rgba(16, 16, 20, 0.14);
11
+ --market-panel: rgba(255, 255, 255, 0.78);
12
+ --market-panel-strong: rgba(255, 255, 255, 0.92);
13
+ --market-panel-muted: rgba(247, 247, 251, 0.78);
14
+ --market-primary: #6d5dfc;
15
+ --market-primary-2: #ff7a59;
16
+ --market-primary-3: #17c3b2;
17
+ --market-success: #16a34a;
18
+ --market-danger: #ef4444;
19
+ --market-warning: #f59e0b;
20
+ --market-radius-xl: 24px;
21
+ --market-radius-2xl: 32px;
22
+ --market-shadow: 0 24px 80px rgba(16, 16, 20, 0.11);
23
+ --market-shadow-soft: 0 14px 40px rgba(16, 16, 20, 0.08);
24
+ --market-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
25
+ --market-headline: Manrope, Inter, ui-sans-serif, system-ui, sans-serif;
26
+ }
27
+
28
+ html.dark,
29
+ html.dark:root,
30
+ body.market-dark {
31
+ color-scheme: dark;
32
+ --primary: #9b8cff;
33
+ --market-bg: #07070a;
34
+ --market-bg-soft: #101016;
35
+ --market-ink: #f7f7fb;
36
+ --market-muted: #a2a4af;
37
+ --market-soft: #787b89;
38
+ --market-line: rgba(255, 255, 255, 0.1);
39
+ --market-line-strong: rgba(255, 255, 255, 0.16);
40
+ --market-panel: rgba(20, 20, 28, 0.72);
41
+ --market-panel-strong: rgba(22, 22, 31, 0.9);
42
+ --market-panel-muted: rgba(255, 255, 255, 0.055);
43
+ --market-shadow: 0 24px 80px rgba(0, 0, 0, 0.42);
44
+ --market-shadow-soft: 0 14px 40px rgba(0, 0, 0, 0.28);
45
+ }
46
+
47
+ * {
48
+ box-sizing: border-box;
49
+ }
50
+
51
+ body.market-page,
52
+ body.market-admin,
53
+ body.market-user {
54
+ min-height: 100vh;
55
+ margin: 0;
56
+ color: var(--market-ink);
57
+ background:
58
+ radial-gradient(circle at 18% 10%, rgba(109, 93, 252, 0.18), transparent 30%),
59
+ radial-gradient(circle at 88% 4%, rgba(255, 122, 89, 0.18), transparent 28%),
60
+ radial-gradient(circle at 70% 88%, rgba(23, 195, 178, 0.16), transparent 30%),
61
+ linear-gradient(180deg, var(--market-bg), var(--market-bg-soft));
62
+ font-family: var(--market-font);
63
+ }
64
+
65
+ body.market-page,
66
+ body.market-admin,
67
+ body.market-user {
68
+ background:
69
+ radial-gradient(circle at 18% 10%, rgba(109, 93, 252, 0.18), transparent 30%),
70
+ radial-gradient(circle at 88% 4%, rgba(255, 122, 89, 0.18), transparent 28%),
71
+ radial-gradient(circle at 70% 88%, rgba(23, 195, 178, 0.16), transparent 30%),
72
+ linear-gradient(180deg, var(--market-bg), var(--market-bg-soft)) !important;
73
+ }
74
+
75
+ body.market-page::before,
76
+ body.market-admin::before,
77
+ body.market-user::before {
78
+ content: "";
79
+ position: fixed;
80
+ inset: 0;
81
+ z-index: -2;
82
+ pointer-events: none;
83
+ background-image:
84
+ linear-gradient(var(--market-line) 1px, transparent 1px),
85
+ linear-gradient(90deg, var(--market-line) 1px, transparent 1px);
86
+ background-size: 48px 48px;
87
+ mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.55), transparent 78%);
88
+ }
89
+
90
+ body.market-page::after,
91
+ body.market-admin::after,
92
+ body.market-user::after {
93
+ content: "";
94
+ position: fixed;
95
+ inset: 0;
96
+ z-index: -1;
97
+ pointer-events: none;
98
+ background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--market-bg) 72%, transparent));
99
+ }
100
+
101
+ .market-shell {
102
+ width: min(1180px, calc(100% - 40px));
103
+ margin: 0 auto;
104
+ }
105
+
106
+ .market-topbar {
107
+ position: sticky;
108
+ top: 16px;
109
+ z-index: 20;
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: space-between;
113
+ gap: 16px;
114
+ margin-top: 16px;
115
+ padding: 12px;
116
+ border: 1px solid var(--market-line);
117
+ border-radius: 24px;
118
+ background: color-mix(in srgb, var(--market-panel-strong) 88%, transparent);
119
+ box-shadow: var(--market-shadow-soft);
120
+ backdrop-filter: blur(26px) saturate(140%);
121
+ }
122
+
123
+ .market-brand {
124
+ display: inline-flex;
125
+ align-items: center;
126
+ gap: 10px;
127
+ min-width: 0;
128
+ color: var(--market-ink);
129
+ text-decoration: none;
130
+ }
131
+
132
+ .market-logo {
133
+ display: inline-flex;
134
+ align-items: center;
135
+ justify-content: center;
136
+ width: 36px;
137
+ height: 36px;
138
+ border: 1px solid var(--market-line-strong);
139
+ border-radius: 13px;
140
+ color: #fff;
141
+ background:
142
+ linear-gradient(135deg, var(--market-primary), color-mix(in srgb, var(--market-primary-2) 82%, #fff 18%));
143
+ box-shadow: 0 10px 30px rgba(109, 93, 252, 0.28);
144
+ font-weight: 900;
145
+ letter-spacing: -0.05em;
146
+ }
147
+
148
+ .market-brand-title {
149
+ display: block;
150
+ font-family: var(--market-headline);
151
+ font-weight: 820;
152
+ letter-spacing: -0.04em;
153
+ line-height: 1;
154
+ }
155
+
156
+ .market-brand-subtitle {
157
+ display: block;
158
+ margin-top: 3px;
159
+ color: var(--market-muted);
160
+ font-size: 12px;
161
+ line-height: 1;
162
+ }
163
+
164
+ .market-nav,
165
+ .market-actions {
166
+ display: flex;
167
+ align-items: center;
168
+ gap: 8px;
169
+ }
170
+
171
+ .market-nav a,
172
+ .market-button,
173
+ .market-chip {
174
+ display: inline-flex;
175
+ align-items: center;
176
+ justify-content: center;
177
+ gap: 8px;
178
+ min-height: 38px;
179
+ border: 1px solid transparent;
180
+ border-radius: 999px;
181
+ color: var(--market-muted);
182
+ text-decoration: none;
183
+ font-size: 14px;
184
+ font-weight: 650;
185
+ transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
186
+ }
187
+
188
+ .market-nav a {
189
+ padding: 0 14px;
190
+ }
191
+
192
+ .market-nav a:hover,
193
+ .market-chip:hover {
194
+ color: var(--market-ink);
195
+ background: var(--market-panel-muted);
196
+ border-color: var(--market-line);
197
+ }
198
+
199
+ .market-button {
200
+ padding: 0 16px;
201
+ border-color: var(--market-line);
202
+ background: var(--market-panel);
203
+ color: var(--market-ink);
204
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.35) inset;
205
+ cursor: pointer;
206
+ }
207
+
208
+ .market-button:hover {
209
+ transform: translateY(-1px);
210
+ border-color: var(--market-line-strong);
211
+ box-shadow: var(--market-shadow-soft);
212
+ }
213
+
214
+ .market-button-primary {
215
+ border-color: color-mix(in srgb, var(--market-primary) 70%, transparent);
216
+ color: #fff;
217
+ background: linear-gradient(135deg, var(--market-primary), var(--market-primary-2));
218
+ box-shadow: 0 14px 34px rgba(109, 93, 252, 0.28);
219
+ }
220
+
221
+ .market-button-primary:hover {
222
+ color: #fff;
223
+ }
224
+
225
+ .market-hero {
226
+ display: grid;
227
+ grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.75fr);
228
+ gap: 28px;
229
+ align-items: stretch;
230
+ padding: 78px 0 34px;
231
+ }
232
+
233
+ .market-hero-main,
234
+ .market-hero-side,
235
+ .market-card,
236
+ .market-panel {
237
+ position: relative;
238
+ overflow: hidden;
239
+ border: 1px solid var(--market-line);
240
+ background: var(--market-panel);
241
+ box-shadow: var(--market-shadow-soft);
242
+ backdrop-filter: blur(28px) saturate(140%);
243
+ }
244
+
245
+ .market-hero-main {
246
+ min-height: 460px;
247
+ padding: clamp(32px, 6vw, 62px);
248
+ border-radius: 36px;
249
+ }
250
+
251
+ .market-hero-main::before,
252
+ .market-card::before,
253
+ .market-auth-card::before {
254
+ content: "";
255
+ position: absolute;
256
+ inset: 0;
257
+ pointer-events: none;
258
+ background:
259
+ radial-gradient(circle at 12% 0%, rgba(255, 255, 255, 0.78), transparent 24%),
260
+ linear-gradient(135deg, rgba(255, 255, 255, 0.4), transparent 36%);
261
+ opacity: 0.55;
262
+ }
263
+
264
+ html.dark .market-hero-main::before,
265
+ html.dark .market-card::before,
266
+ html.dark .market-auth-card::before {
267
+ opacity: 0.09;
268
+ }
269
+
270
+ .market-kicker {
271
+ position: relative;
272
+ display: inline-flex;
273
+ align-items: center;
274
+ gap: 8px;
275
+ margin: 0 0 18px;
276
+ padding: 8px 12px;
277
+ border: 1px solid var(--market-line);
278
+ border-radius: 999px;
279
+ color: var(--market-muted);
280
+ background: var(--market-panel-muted);
281
+ font-size: 13px;
282
+ font-weight: 700;
283
+ }
284
+
285
+ .market-kicker-dot {
286
+ width: 8px;
287
+ height: 8px;
288
+ border-radius: 999px;
289
+ background: var(--market-success);
290
+ box-shadow: 0 0 0 5px color-mix(in srgb, var(--market-success) 18%, transparent);
291
+ }
292
+
293
+ .market-title {
294
+ position: relative;
295
+ max-width: 780px;
296
+ margin: 0;
297
+ font-family: var(--market-headline);
298
+ font-size: clamp(44px, 7vw, 86px);
299
+ line-height: 0.9;
300
+ letter-spacing: -0.078em;
301
+ }
302
+
303
+ .market-title span {
304
+ color: transparent;
305
+ background: linear-gradient(100deg, var(--market-primary), var(--market-primary-2) 56%, var(--market-primary-3));
306
+ -webkit-background-clip: text;
307
+ background-clip: text;
308
+ }
309
+
310
+ .market-copy {
311
+ position: relative;
312
+ max-width: 660px;
313
+ margin: 22px 0 0;
314
+ color: var(--market-muted);
315
+ font-size: 17px;
316
+ line-height: 1.75;
317
+ }
318
+
319
+ .market-search {
320
+ position: relative;
321
+ display: flex;
322
+ align-items: center;
323
+ gap: 12px;
324
+ max-width: 640px;
325
+ margin-top: 30px;
326
+ padding: 10px 12px 10px 18px;
327
+ border: 1px solid var(--market-line);
328
+ border-radius: 22px;
329
+ background: var(--market-panel-strong);
330
+ box-shadow: var(--market-shadow-soft);
331
+ }
332
+
333
+ .market-search input {
334
+ min-width: 0;
335
+ flex: 1;
336
+ border: 0;
337
+ outline: 0;
338
+ color: var(--market-ink);
339
+ background: transparent;
340
+ font: 600 15px/1.2 var(--market-font);
341
+ }
342
+
343
+ .market-search input::placeholder {
344
+ color: var(--market-soft);
345
+ }
346
+
347
+ .market-search-key {
348
+ display: inline-flex;
349
+ align-items: center;
350
+ justify-content: center;
351
+ min-width: 34px;
352
+ height: 28px;
353
+ border: 1px solid var(--market-line);
354
+ border-radius: 10px;
355
+ color: var(--market-muted);
356
+ background: var(--market-panel-muted);
357
+ font-size: 12px;
358
+ font-weight: 800;
359
+ }
360
+
361
+ .market-chip-row {
362
+ position: relative;
363
+ display: flex;
364
+ flex-wrap: wrap;
365
+ gap: 10px;
366
+ margin-top: 22px;
367
+ }
368
+
369
+ .market-chip {
370
+ min-height: 34px;
371
+ padding: 0 12px;
372
+ background: color-mix(in srgb, var(--market-panel) 76%, transparent);
373
+ border-color: var(--market-line);
374
+ cursor: default;
375
+ }
376
+
377
+ .market-hero-side {
378
+ display: flex;
379
+ flex-direction: column;
380
+ justify-content: space-between;
381
+ min-height: 460px;
382
+ padding: 22px;
383
+ border-radius: 36px;
384
+ }
385
+
386
+ .market-preview-stack {
387
+ display: grid;
388
+ gap: 14px;
389
+ }
390
+
391
+ .market-mini-card {
392
+ display: grid;
393
+ grid-template-columns: 48px 1fr auto;
394
+ gap: 14px;
395
+ align-items: center;
396
+ padding: 14px;
397
+ border: 1px solid var(--market-line);
398
+ border-radius: 22px;
399
+ background: var(--market-panel-strong);
400
+ }
401
+
402
+ .market-icon {
403
+ display: inline-flex;
404
+ align-items: center;
405
+ justify-content: center;
406
+ width: 48px;
407
+ height: 48px;
408
+ border: 1px solid var(--market-line);
409
+ border-radius: 16px;
410
+ color: var(--market-ink);
411
+ background: linear-gradient(145deg, color-mix(in srgb, var(--market-panel-strong) 82%, transparent), var(--market-panel-muted));
412
+ font-size: 20px;
413
+ font-weight: 900;
414
+ }
415
+
416
+ .market-mini-title {
417
+ margin: 0;
418
+ font-weight: 800;
419
+ letter-spacing: -0.02em;
420
+ }
421
+
422
+ .market-mini-copy {
423
+ margin: 4px 0 0;
424
+ color: var(--market-muted);
425
+ font-size: 13px;
426
+ }
427
+
428
+ .market-status-pill {
429
+ display: inline-flex;
430
+ align-items: center;
431
+ gap: 6px;
432
+ padding: 7px 10px;
433
+ border: 1px solid var(--market-line);
434
+ border-radius: 999px;
435
+ color: var(--market-muted);
436
+ background: var(--market-panel-muted);
437
+ font-size: 12px;
438
+ font-weight: 800;
439
+ white-space: nowrap;
440
+ }
441
+
442
+ .market-section-head {
443
+ display: flex;
444
+ align-items: end;
445
+ justify-content: space-between;
446
+ gap: 20px;
447
+ margin: 34px 0 18px;
448
+ }
449
+
450
+ .market-section-head h2 {
451
+ margin: 0;
452
+ font-family: var(--market-headline);
453
+ font-size: clamp(28px, 4vw, 44px);
454
+ line-height: 1;
455
+ letter-spacing: -0.06em;
456
+ }
457
+
458
+ .market-section-head p {
459
+ max-width: 520px;
460
+ margin: 8px 0 0;
461
+ color: var(--market-muted);
462
+ line-height: 1.6;
463
+ }
464
+
465
+ .market-grid {
466
+ display: grid;
467
+ grid-template-columns: repeat(3, minmax(0, 1fr));
468
+ gap: 18px;
469
+ padding-bottom: 64px;
470
+ }
471
+
472
+ .market-card {
473
+ display: flex;
474
+ min-height: 260px;
475
+ flex-direction: column;
476
+ padding: 18px;
477
+ border-radius: 28px;
478
+ color: var(--market-ink);
479
+ text-decoration: none;
480
+ transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
481
+ }
482
+
483
+ .market-card:hover {
484
+ transform: translateY(-5px);
485
+ border-color: color-mix(in srgb, var(--market-primary) 38%, var(--market-line));
486
+ box-shadow: var(--market-shadow);
487
+ }
488
+
489
+ .market-card-preview {
490
+ position: relative;
491
+ display: flex;
492
+ min-height: 128px;
493
+ align-items: center;
494
+ justify-content: center;
495
+ margin-bottom: 18px;
496
+ border: 1px solid var(--market-line);
497
+ border-radius: 22px;
498
+ background:
499
+ linear-gradient(135deg, color-mix(in srgb, var(--market-primary) 14%, transparent), transparent),
500
+ var(--market-panel-muted);
501
+ }
502
+
503
+ .market-card-preview::before,
504
+ .market-card-preview::after {
505
+ content: "";
506
+ position: absolute;
507
+ border-radius: 999px;
508
+ background: var(--market-panel-strong);
509
+ box-shadow: 0 12px 30px rgba(16, 16, 20, 0.09);
510
+ }
511
+
512
+ .market-card-preview::before {
513
+ width: 66%;
514
+ height: 16px;
515
+ top: 28px;
516
+ }
517
+
518
+ .market-card-preview::after {
519
+ width: 44%;
520
+ height: 16px;
521
+ bottom: 30px;
522
+ }
523
+
524
+ .market-card-symbol {
525
+ position: relative;
526
+ z-index: 1;
527
+ display: inline-flex;
528
+ align-items: center;
529
+ justify-content: center;
530
+ width: 58px;
531
+ height: 58px;
532
+ border: 1px solid var(--market-line-strong);
533
+ border-radius: 20px;
534
+ color: #fff;
535
+ background: linear-gradient(135deg, var(--market-primary), var(--market-primary-2));
536
+ box-shadow: 0 16px 34px rgba(109, 93, 252, 0.32);
537
+ font-size: 24px;
538
+ font-weight: 900;
539
+ }
540
+
541
+ .market-card h3 {
542
+ position: relative;
543
+ margin: 0;
544
+ font-family: var(--market-headline);
545
+ font-size: 20px;
546
+ letter-spacing: -0.035em;
547
+ }
548
+
549
+ .market-card p {
550
+ position: relative;
551
+ flex: 1;
552
+ margin: 8px 0 18px;
553
+ color: var(--market-muted);
554
+ font-size: 14px;
555
+ line-height: 1.65;
556
+ }
557
+
558
+ .market-card-footer {
559
+ position: relative;
560
+ display: flex;
561
+ align-items: center;
562
+ justify-content: space-between;
563
+ gap: 12px;
564
+ }
565
+
566
+ .market-tag {
567
+ display: inline-flex;
568
+ align-items: center;
569
+ min-height: 28px;
570
+ padding: 0 10px;
571
+ border: 1px solid var(--market-line);
572
+ border-radius: 999px;
573
+ color: var(--market-muted);
574
+ background: var(--market-panel-muted);
575
+ font-size: 12px;
576
+ font-weight: 750;
577
+ }
578
+
579
+ .market-arrow {
580
+ color: var(--market-soft);
581
+ font-size: 20px;
582
+ transition: transform 0.22s ease, color 0.22s ease;
583
+ }
584
+
585
+ .market-card:hover .market-arrow {
586
+ color: var(--market-primary);
587
+ transform: translateX(3px);
588
+ }
589
+
590
+ .market-activation {
591
+ display: grid;
592
+ grid-template-columns: minmax(0, 0.95fr) minmax(360px, 480px);
593
+ gap: 28px;
594
+ align-items: center;
595
+ min-height: 100vh;
596
+ padding: 34px 0;
597
+ }
598
+
599
+ .market-activation-copy {
600
+ padding: clamp(18px, 4vw, 38px);
601
+ }
602
+
603
+ .market-auth-card {
604
+ position: relative;
605
+ overflow: hidden;
606
+ padding: clamp(24px, 4vw, 34px);
607
+ border: 1px solid var(--market-line);
608
+ border-radius: 34px;
609
+ background: var(--market-panel);
610
+ box-shadow: var(--market-shadow);
611
+ backdrop-filter: blur(28px) saturate(140%);
612
+ }
613
+
614
+ .market-form-header,
615
+ .market-form,
616
+ .market-result-inner {
617
+ position: relative;
618
+ }
619
+
620
+ .market-form-header {
621
+ margin-bottom: 24px;
622
+ }
623
+
624
+ .market-form-header h1,
625
+ .market-result-inner h2 {
626
+ margin: 16px 0 8px;
627
+ font-family: var(--market-headline);
628
+ font-size: 28px;
629
+ letter-spacing: -0.05em;
630
+ }
631
+
632
+ .market-form-header p,
633
+ .market-result-inner p {
634
+ margin: 0;
635
+ color: var(--market-muted);
636
+ line-height: 1.6;
637
+ }
638
+
639
+ .market-form {
640
+ display: grid;
641
+ gap: 16px;
642
+ }
643
+
644
+ .market-field label {
645
+ display: flex;
646
+ align-items: center;
647
+ justify-content: space-between;
648
+ margin-bottom: 8px;
649
+ color: var(--market-ink);
650
+ font-size: 13px;
651
+ font-weight: 800;
652
+ }
653
+
654
+ .market-field input,
655
+ .market-field select,
656
+ .market-field textarea,
657
+ .market-input {
658
+ width: 100%;
659
+ min-height: 48px;
660
+ border: 1px solid var(--market-line);
661
+ border-radius: 17px;
662
+ outline: none;
663
+ padding: 0 15px;
664
+ color: var(--market-ink);
665
+ background: var(--market-panel-strong);
666
+ font: 650 14px/1.2 var(--market-font);
667
+ transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
668
+ }
669
+
670
+ .market-field textarea {
671
+ min-height: 110px;
672
+ padding-top: 13px;
673
+ line-height: 1.55;
674
+ }
675
+
676
+ .market-field input:focus,
677
+ .market-field select:focus,
678
+ .market-field textarea:focus,
679
+ .market-input:focus {
680
+ border-color: color-mix(in srgb, var(--market-primary) 55%, transparent);
681
+ box-shadow: 0 0 0 5px color-mix(in srgb, var(--market-primary) 14%, transparent);
682
+ }
683
+
684
+ .market-alert {
685
+ border: 1px solid color-mix(in srgb, var(--market-danger) 28%, transparent);
686
+ border-radius: 18px;
687
+ padding: 13px 14px;
688
+ color: color-mix(in srgb, var(--market-danger) 86%, var(--market-ink));
689
+ background: color-mix(in srgb, var(--market-danger) 10%, var(--market-panel-strong));
690
+ font-size: 14px;
691
+ font-weight: 700;
692
+ }
693
+
694
+ .market-link-row {
695
+ display: flex;
696
+ flex-wrap: wrap;
697
+ justify-content: center;
698
+ gap: 12px;
699
+ margin-top: 18px;
700
+ }
701
+
702
+ .market-link-row a {
703
+ color: var(--market-muted);
704
+ text-decoration: none;
705
+ font-size: 13px;
706
+ font-weight: 800;
707
+ }
708
+
709
+ .market-link-row a:hover {
710
+ color: var(--market-primary);
711
+ }
712
+
713
+ .market-result-list {
714
+ display: grid;
715
+ gap: 10px;
716
+ margin: 24px 0;
717
+ padding: 16px;
718
+ border: 1px solid var(--market-line);
719
+ border-radius: 22px;
720
+ background: var(--market-panel-muted);
721
+ }
722
+
723
+ .market-result-row {
724
+ display: flex;
725
+ align-items: center;
726
+ justify-content: space-between;
727
+ gap: 12px;
728
+ color: var(--market-muted);
729
+ font-size: 13px;
730
+ }
731
+
732
+ .market-result-row strong,
733
+ .market-result-row span:last-child {
734
+ color: var(--market-ink);
735
+ font-weight: 800;
736
+ }
737
+
738
+ .success-checkmark {
739
+ display: flex;
740
+ align-items: center;
741
+ justify-content: center;
742
+ width: 86px;
743
+ height: 86px;
744
+ margin: 0 auto 18px;
745
+ border: 1px solid color-mix(in srgb, var(--market-success) 30%, transparent);
746
+ border-radius: 28px;
747
+ background: color-mix(in srgb, var(--market-success) 13%, var(--market-panel-strong));
748
+ box-shadow: 0 18px 42px color-mix(in srgb, var(--market-success) 18%, transparent);
749
+ }
750
+
751
+ .success-checkmark .check-icon {
752
+ position: relative;
753
+ width: 42px;
754
+ height: 42px;
755
+ border: 3px solid var(--market-success);
756
+ border-radius: 999px;
757
+ }
758
+
759
+ .success-checkmark .icon-line {
760
+ position: absolute;
761
+ display: block;
762
+ height: 4px;
763
+ border-radius: 999px;
764
+ background: var(--market-success);
765
+ }
766
+
767
+ .success-checkmark .line-tip {
768
+ left: 8px;
769
+ top: 22px;
770
+ width: 14px;
771
+ transform: rotate(45deg);
772
+ }
773
+
774
+ .success-checkmark .line-long {
775
+ left: 17px;
776
+ top: 19px;
777
+ width: 24px;
778
+ transform: rotate(-45deg);
779
+ }
780
+
781
+ .hidden {
782
+ display: none !important;
783
+ }
784
+
785
+ @keyframes marketFloatIn {
786
+ from {
787
+ opacity: 0;
788
+ transform: translateY(16px) scale(0.985);
789
+ }
790
+ to {
791
+ opacity: 1;
792
+ transform: translateY(0) scale(1);
793
+ }
794
+ }
795
+
796
+ .animate-slide-in-up,
797
+ .animate-slide-in-right,
798
+ .animate-fade-in,
799
+ .animate-bounce-in,
800
+ .fade-in,
801
+ .motion-once {
802
+ animation: none !important;
803
+ }
804
+
805
+ .market-admin .animate-slide-in-up,
806
+ .market-admin .animate-slide-in-right,
807
+ .market-admin .animate-bounce-in,
808
+ .market-admin .animate-fade-in,
809
+ .market-admin .fade-in {
810
+ animation: none !important;
811
+ opacity: 1 !important;
812
+ transform: none !important;
813
+ }
814
+
815
+ .market-admin [style*="animation-delay"],
816
+ .market-admin [style*="animation-duration"] {
817
+ animation-delay: 0s !important;
818
+ animation-duration: 0s !important;
819
+ }
820
+
821
+ /* Admin shell polish */
822
+ body.market-admin {
823
+ overflow: hidden;
824
+ }
825
+
826
+ .market-admin #login-overlay {
827
+ background: transparent !important;
828
+ }
829
+
830
+ .market-admin #login-overlay > div > div {
831
+ position: relative;
832
+ overflow: hidden;
833
+ border: 1px solid var(--market-line) !important;
834
+ border-radius: 34px !important;
835
+ background: var(--market-panel) !important;
836
+ box-shadow: var(--market-shadow) !important;
837
+ backdrop-filter: blur(28px) saturate(140%);
838
+ }
839
+
840
+ .market-admin #dashboard-panel .interactive-card,
841
+ .market-admin #dashboard-panel #recent-activity > div,
842
+ .market-admin #dashboard-panel [class*="animate-"] {
843
+ animation: none !important;
844
+ opacity: 1 !important;
845
+ transform: none !important;
846
+ }
847
+
848
+ .market-admin #login-submit,
849
+ .market-admin .bg-primary {
850
+ background: linear-gradient(135deg, var(--market-primary), var(--market-primary-2)) !important;
851
+ }
852
+
853
+ .market-admin #app-container {
854
+ background: transparent !important;
855
+ }
856
+
857
+ .market-admin aside {
858
+ width: 280px !important;
859
+ margin: 16px 0 16px 16px;
860
+ height: calc(100% - 32px) !important;
861
+ border: 1px solid var(--market-line) !important;
862
+ border-radius: 30px;
863
+ background: color-mix(in srgb, var(--market-panel-strong) 90%, transparent) !important;
864
+ box-shadow: var(--market-shadow-soft);
865
+ backdrop-filter: blur(28px) saturate(140%);
866
+ }
867
+
868
+ .market-admin .ml-64 {
869
+ margin-left: 296px !important;
870
+ }
871
+
872
+ .market-admin header {
873
+ height: 74px !important;
874
+ margin: 16px 18px 0;
875
+ border: 1px solid var(--market-line) !important;
876
+ border-radius: 26px;
877
+ background: color-mix(in srgb, var(--market-panel-strong) 88%, transparent) !important;
878
+ box-shadow: var(--market-shadow-soft);
879
+ backdrop-filter: blur(28px) saturate(140%);
880
+ }
881
+
882
+ .market-admin main {
883
+ padding: 18px !important;
884
+ }
885
+
886
+ .market-admin .text-on-surface,
887
+ .market-admin .text-on-background {
888
+ color: var(--market-ink) !important;
889
+ }
890
+
891
+ .market-admin .text-on-surface-variant,
892
+ .market-admin .text-outline {
893
+ color: var(--market-muted) !important;
894
+ }
895
+
896
+ .market-admin .border-outline,
897
+ .market-admin .border-outline-variant {
898
+ border-color: var(--market-line) !important;
899
+ }
900
+
901
+ .market-admin .bg-surface,
902
+ .market-admin .bg-background,
903
+ .market-admin .bg-surface-container-lowest,
904
+ .market-admin .bg-surface-container-low,
905
+ .market-admin .bg-surface-container,
906
+ .market-admin .bg-surface-container-high,
907
+ .market-admin .bg-surface-container-highest {
908
+ background-color: var(--market-panel) !important;
909
+ }
910
+
911
+ .market-admin .tab-panel > .bg-surface-container-lowest,
912
+ .market-admin #dashboard-panel > .grid > div,
913
+ .market-admin #dashboard-panel .grid + .grid > div,
914
+ .market-admin .interactive-card {
915
+ border: 1px solid var(--market-line) !important;
916
+ border-radius: 28px !important;
917
+ background: var(--market-panel) !important;
918
+ box-shadow: var(--market-shadow-soft);
919
+ backdrop-filter: blur(24px) saturate(135%);
920
+ }
921
+
922
+ .market-admin .nav-item {
923
+ min-height: 42px;
924
+ border: 1px solid transparent;
925
+ border-radius: 16px !important;
926
+ }
927
+
928
+ .market-admin .nav-item:hover,
929
+ .market-admin .nav-item.active,
930
+ .market-admin .nav-item.bg-surface-container-lowest {
931
+ border-color: var(--market-line) !important;
932
+ color: var(--market-ink) !important;
933
+ background: var(--market-panel-muted) !important;
934
+ }
935
+
936
+ .market-admin .nav-item.active::before {
937
+ display: none;
938
+ }
939
+
940
+ .market-admin input,
941
+ .market-admin select,
942
+ .market-admin textarea {
943
+ border: 1px solid var(--market-line) !important;
944
+ border-radius: 16px !important;
945
+ color: var(--market-ink) !important;
946
+ background: var(--market-panel-strong) !important;
947
+ }
948
+
949
+ .market-admin input::placeholder,
950
+ .market-admin textarea::placeholder {
951
+ color: var(--market-soft) !important;
952
+ }
953
+
954
+ .market-admin button {
955
+ border-radius: 16px !important;
956
+ }
957
+
958
+ .market-admin table {
959
+ border-collapse: separate;
960
+ border-spacing: 0 10px;
961
+ }
962
+
963
+ .market-admin thead tr {
964
+ background: transparent !important;
965
+ }
966
+
967
+ .market-admin tbody tr {
968
+ background: var(--market-panel-strong) !important;
969
+ box-shadow: 0 10px 24px rgba(16, 16, 20, 0.055);
970
+ }
971
+
972
+ .market-admin tbody td:first-child,
973
+ .market-admin tbody th:first-child {
974
+ border-radius: 16px 0 0 16px;
975
+ }
976
+
977
+ .market-admin tbody td:last-child,
978
+ .market-admin tbody th:last-child {
979
+ border-radius: 0 16px 16px 0;
980
+ }
981
+
982
+ .market-admin .modal-backdrop {
983
+ backdrop-filter: blur(14px);
984
+ }
985
+
986
+ .market-admin .modal-content {
987
+ border: 1px solid var(--market-line) !important;
988
+ border-radius: 30px !important;
989
+ background: var(--market-panel-strong) !important;
990
+ box-shadow: var(--market-shadow) !important;
991
+ }
992
+
993
+ .market-admin .market-console-badge {
994
+ display: inline-flex;
995
+ align-items: center;
996
+ gap: 8px;
997
+ height: 32px;
998
+ padding: 0 12px;
999
+ border: 1px solid var(--market-line);
1000
+ border-radius: 999px;
1001
+ color: var(--market-muted);
1002
+ background: var(--market-panel-muted);
1003
+ font-size: 12px;
1004
+ font-weight: 800;
1005
+ }
1006
+
1007
+ .market-admin .text-primary {
1008
+ color: var(--market-primary) !important;
1009
+ }
1010
+
1011
+ .market-admin .text-secondary {
1012
+ color: var(--market-primary-3) !important;
1013
+ }
1014
+
1015
+ .market-admin .text-tertiary {
1016
+ color: var(--market-primary-2) !important;
1017
+ }
1018
+
1019
+ .market-admin .text-error {
1020
+ color: var(--market-danger) !important;
1021
+ }
1022
+
1023
+ .market-admin .bg-primary-fixed\/20,
1024
+ .market-admin .bg-primary\/20 {
1025
+ background-color: color-mix(in srgb, var(--market-primary) 18%, transparent) !important;
1026
+ }
1027
+
1028
+ .market-admin .bg-secondary-fixed\/20,
1029
+ .market-admin .bg-secondary\/20 {
1030
+ background-color: color-mix(in srgb, var(--market-primary-3) 18%, transparent) !important;
1031
+ }
1032
+
1033
+ .market-admin .bg-tertiary-fixed\/20,
1034
+ .market-admin .bg-tertiary\/20 {
1035
+ background-color: color-mix(in srgb, var(--market-primary-2) 18%, transparent) !important;
1036
+ }
1037
+
1038
+ .market-admin .bg-error-fixed\/20,
1039
+ .market-admin .bg-error\/20,
1040
+ .market-admin .bg-error-container\/20 {
1041
+ background-color: color-mix(in srgb, var(--market-danger) 14%, transparent) !important;
1042
+ }
1043
+
1044
+ /* Built user app polish */
1045
+ body.market-user {
1046
+ overflow-x: hidden;
1047
+ }
1048
+
1049
+ .market-user #app {
1050
+ position: relative;
1051
+ isolation: isolate;
1052
+ min-height: 100vh;
1053
+ }
1054
+
1055
+ .market-user [class~="bg-white"],
1056
+ .market-user [class~="bg-gray-50"],
1057
+ .market-user [class~="bg-slate-50"],
1058
+ .market-user [class~="bg-zinc-50"],
1059
+ .market-user [class~="bg-background"],
1060
+ .market-user [class~="bg-card"],
1061
+ .market-user [class~="bg-muted"],
1062
+ .market-user [class~="dark:bg-gray-950"],
1063
+ .market-user [class~="dark:bg-slate-950"],
1064
+ .market-user [class~="dark:bg-zinc-950"] {
1065
+ background-color: var(--market-panel) !important;
1066
+ backdrop-filter: blur(24px) saturate(135%);
1067
+ }
1068
+
1069
+ .market-user [class~="border"],
1070
+ .market-user [class*="border-gray"],
1071
+ .market-user [class*="border-slate"],
1072
+ .market-user [class*="border-zinc"],
1073
+ .market-user [class*="border-border"] {
1074
+ border-color: var(--market-line) !important;
1075
+ }
1076
+
1077
+ .market-user [class~="rounded-xl"],
1078
+ .market-user [class~="rounded-2xl"],
1079
+ .market-user [class~="rounded-3xl"] {
1080
+ border-radius: 24px !important;
1081
+ }
1082
+
1083
+ .market-user [class*="shadow"] {
1084
+ box-shadow: var(--market-shadow-soft) !important;
1085
+ }
1086
+
1087
+ .market-user [class~="text-gray-900"],
1088
+ .market-user [class~="text-slate-900"],
1089
+ .market-user [class~="text-zinc-900"],
1090
+ .market-user [class~="text-foreground"] {
1091
+ color: var(--market-ink) !important;
1092
+ }
1093
+
1094
+ .market-user [class~="text-gray-500"],
1095
+ .market-user [class~="text-gray-600"],
1096
+ .market-user [class~="text-slate-500"],
1097
+ .market-user [class~="text-slate-600"],
1098
+ .market-user [class~="text-muted-foreground"] {
1099
+ color: var(--market-muted) !important;
1100
+ }
1101
+
1102
+ .market-user button,
1103
+ .market-user a {
1104
+ transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
1105
+ }
1106
+
1107
+ .market-user button:hover,
1108
+ .market-user a:hover {
1109
+ transform: translateY(-1px);
1110
+ }
1111
+
1112
+ /* Distinct motion layer */
1113
+ .market-orbit-stage {
1114
+ position: absolute;
1115
+ inset: auto 28px 28px auto;
1116
+ width: min(48vw, 440px);
1117
+ height: min(48vw, 440px);
1118
+ pointer-events: none;
1119
+ opacity: 0.95;
1120
+ }
1121
+
1122
+ .market-orbit-stage::before,
1123
+ .market-orbit-stage::after {
1124
+ content: "";
1125
+ position: absolute;
1126
+ inset: 12%;
1127
+ border: 1px solid color-mix(in srgb, var(--market-ink) 12%, transparent);
1128
+ border-radius: 999px;
1129
+ animation: orbitSpin 18s linear infinite;
1130
+ }
1131
+
1132
+ .market-orbit-stage::after {
1133
+ inset: 25%;
1134
+ border-style: dashed;
1135
+ animation-duration: 12s;
1136
+ animation-direction: reverse;
1137
+ opacity: 0.72;
1138
+ }
1139
+
1140
+ .market-orbit-node {
1141
+ position: absolute;
1142
+ display: inline-flex;
1143
+ align-items: center;
1144
+ justify-content: center;
1145
+ width: 74px;
1146
+ height: 74px;
1147
+ border: 1px solid var(--market-line-strong);
1148
+ border-radius: 24px;
1149
+ color: #fff;
1150
+ background: linear-gradient(135deg, var(--node-a, var(--market-primary)), var(--node-b, var(--market-primary-2)));
1151
+ box-shadow: 0 20px 50px color-mix(in srgb, var(--node-a, var(--market-primary)) 28%, transparent);
1152
+ font-size: 28px;
1153
+ transform: translate3d(0, 0, 0) rotate(var(--tilt, 0deg));
1154
+ animation: nodeFloat var(--speed, 6s) ease-in-out infinite;
1155
+ }
1156
+
1157
+ .market-orbit-node:nth-child(1) {
1158
+ --node-a: #6d5dfc;
1159
+ --node-b: #b86bff;
1160
+ --tilt: -10deg;
1161
+ --speed: 6.5s;
1162
+ left: 6%;
1163
+ top: 18%;
1164
+ }
1165
+
1166
+ .market-orbit-node:nth-child(2) {
1167
+ --node-a: #ff7a59;
1168
+ --node-b: #ffd166;
1169
+ --tilt: 9deg;
1170
+ --speed: 7.5s;
1171
+ right: 11%;
1172
+ top: 7%;
1173
+ animation-delay: -1.8s;
1174
+ }
1175
+
1176
+ .market-orbit-node:nth-child(3) {
1177
+ --node-a: #17c3b2;
1178
+ --node-b: #5eead4;
1179
+ --tilt: 12deg;
1180
+ --speed: 8s;
1181
+ right: 5%;
1182
+ bottom: 21%;
1183
+ animation-delay: -3s;
1184
+ }
1185
+
1186
+ .market-orbit-node:nth-child(4) {
1187
+ --node-a: #101014;
1188
+ --node-b: #6d5dfc;
1189
+ --tilt: -8deg;
1190
+ --speed: 7s;
1191
+ left: 19%;
1192
+ bottom: 8%;
1193
+ animation-delay: -4.3s;
1194
+ }
1195
+
1196
+ .market-signal-line {
1197
+ position: absolute;
1198
+ left: 8%;
1199
+ right: 8%;
1200
+ top: 50%;
1201
+ height: 1px;
1202
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--market-primary) 55%, transparent), transparent);
1203
+ transform: rotate(-18deg);
1204
+ opacity: 0.72;
1205
+ overflow: hidden;
1206
+ }
1207
+
1208
+ .market-signal-line::after {
1209
+ content: "";
1210
+ position: absolute;
1211
+ inset: 0 auto 0 0;
1212
+ width: 38%;
1213
+ background: linear-gradient(90deg, transparent, #fff, transparent);
1214
+ animation: signalSweep 2.6s cubic-bezier(0.16, 1, 0.3, 1) infinite;
1215
+ }
1216
+
1217
+ .market-card-lab {
1218
+ min-height: 318px;
1219
+ padding: 0;
1220
+ background:
1221
+ radial-gradient(circle at var(--mx, 50%) var(--my, 20%), color-mix(in srgb, var(--accent, var(--market-primary)) 18%, transparent), transparent 38%),
1222
+ var(--market-panel) !important;
1223
+ transform-style: preserve-3d;
1224
+ isolation: isolate;
1225
+ }
1226
+
1227
+ .market-card-lab::after {
1228
+ content: "";
1229
+ position: absolute;
1230
+ inset: 0;
1231
+ z-index: 0;
1232
+ border-radius: inherit;
1233
+ background: linear-gradient(120deg, transparent 20%, color-mix(in srgb, #fff 34%, transparent) 44%, transparent 60%);
1234
+ transform: translateX(-120%);
1235
+ opacity: 0;
1236
+ }
1237
+
1238
+ .market-card-lab:hover::after {
1239
+ opacity: 1;
1240
+ animation: cardShine 0.9s cubic-bezier(0.16, 1, 0.3, 1);
1241
+ }
1242
+
1243
+ .market-card-lab:nth-child(1) {
1244
+ --accent: #6d5dfc;
1245
+ }
1246
+
1247
+ .market-card-lab:nth-child(2) {
1248
+ --accent: #ff7a59;
1249
+ margin-top: 34px;
1250
+ }
1251
+
1252
+ .market-card-lab:nth-child(3) {
1253
+ --accent: #17c3b2;
1254
+ margin-top: -18px;
1255
+ }
1256
+
1257
+ .market-card-canvas {
1258
+ position: relative;
1259
+ z-index: 1;
1260
+ min-height: 170px;
1261
+ overflow: hidden;
1262
+ border-bottom: 1px solid var(--market-line);
1263
+ background:
1264
+ linear-gradient(135deg, color-mix(in srgb, var(--accent) 18%, transparent), transparent),
1265
+ var(--market-panel-muted);
1266
+ }
1267
+
1268
+ .market-card-canvas::before {
1269
+ content: "";
1270
+ position: absolute;
1271
+ inset: 20px;
1272
+ border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent);
1273
+ border-radius: 24px;
1274
+ transform: rotate(-2deg);
1275
+ }
1276
+
1277
+ .market-card-content {
1278
+ position: relative;
1279
+ z-index: 1;
1280
+ display: flex;
1281
+ min-height: 148px;
1282
+ flex-direction: column;
1283
+ padding: 18px;
1284
+ }
1285
+
1286
+ .market-widget {
1287
+ position: absolute;
1288
+ border: 1px solid var(--market-line);
1289
+ background: var(--market-panel-strong);
1290
+ box-shadow: 0 16px 34px rgba(16, 16, 20, 0.11);
1291
+ backdrop-filter: blur(18px);
1292
+ }
1293
+
1294
+ .market-widget-meter {
1295
+ left: 28px;
1296
+ top: 30px;
1297
+ width: 132px;
1298
+ height: 82px;
1299
+ border-radius: 24px;
1300
+ animation: widgetFloat 6s ease-in-out infinite;
1301
+ }
1302
+
1303
+ .market-widget-meter::before,
1304
+ .market-widget-meter::after {
1305
+ content: "";
1306
+ position: absolute;
1307
+ left: 16px;
1308
+ right: 16px;
1309
+ height: 10px;
1310
+ border-radius: 999px;
1311
+ background: color-mix(in srgb, var(--accent) 26%, transparent);
1312
+ }
1313
+
1314
+ .market-widget-meter::before {
1315
+ top: 22px;
1316
+ }
1317
+
1318
+ .market-widget-meter::after {
1319
+ top: 46px;
1320
+ right: 44px;
1321
+ }
1322
+
1323
+ .market-widget-graph {
1324
+ right: 28px;
1325
+ bottom: 22px;
1326
+ display: flex;
1327
+ align-items: end;
1328
+ gap: 7px;
1329
+ width: 120px;
1330
+ height: 88px;
1331
+ padding: 16px;
1332
+ border-radius: 24px;
1333
+ animation: widgetFloat 7s ease-in-out infinite reverse;
1334
+ }
1335
+
1336
+ .market-widget-graph i {
1337
+ display: block;
1338
+ flex: 1;
1339
+ border-radius: 999px 999px 6px 6px;
1340
+ background: linear-gradient(180deg, var(--accent), color-mix(in srgb, var(--accent) 38%, transparent));
1341
+ animation: barPulse 1.8s ease-in-out infinite;
1342
+ }
1343
+
1344
+ .market-widget-graph i:nth-child(1) { height: 36%; animation-delay: -0.2s; }
1345
+ .market-widget-graph i:nth-child(2) { height: 72%; animation-delay: -0.6s; }
1346
+ .market-widget-graph i:nth-child(3) { height: 52%; animation-delay: -0.9s; }
1347
+ .market-widget-graph i:nth-child(4) { height: 88%; animation-delay: -1.2s; }
1348
+
1349
+ .market-widget-key {
1350
+ left: 32px;
1351
+ bottom: 28px;
1352
+ display: flex;
1353
+ align-items: center;
1354
+ gap: 8px;
1355
+ width: 170px;
1356
+ height: 42px;
1357
+ padding: 0 12px;
1358
+ border-radius: 999px;
1359
+ animation: widgetFloat 5.8s ease-in-out infinite;
1360
+ }
1361
+
1362
+ .market-widget-key::before {
1363
+ content: "";
1364
+ width: 10px;
1365
+ height: 10px;
1366
+ border-radius: 999px;
1367
+ background: var(--accent);
1368
+ box-shadow: 0 0 0 5px color-mix(in srgb, var(--accent) 18%, transparent);
1369
+ }
1370
+
1371
+ .market-widget-key::after {
1372
+ content: "CDK-••••-LIVE";
1373
+ color: var(--market-muted);
1374
+ font-size: 11px;
1375
+ font-weight: 900;
1376
+ letter-spacing: 0.08em;
1377
+ }
1378
+
1379
+ .market-widget-toggle {
1380
+ right: 32px;
1381
+ top: 34px;
1382
+ width: 90px;
1383
+ height: 46px;
1384
+ border-radius: 999px;
1385
+ animation: widgetFloat 7.2s ease-in-out infinite reverse;
1386
+ }
1387
+
1388
+ .market-widget-toggle::before {
1389
+ content: "";
1390
+ position: absolute;
1391
+ left: 7px;
1392
+ top: 7px;
1393
+ width: 32px;
1394
+ height: 32px;
1395
+ border-radius: 999px;
1396
+ background: linear-gradient(135deg, var(--accent), #fff);
1397
+ animation: toggleTravel 3.4s ease-in-out infinite;
1398
+ }
1399
+
1400
+ .market-widget-code {
1401
+ left: 30px;
1402
+ top: 30px;
1403
+ display: grid;
1404
+ gap: 9px;
1405
+ width: 180px;
1406
+ padding: 18px;
1407
+ border-radius: 24px;
1408
+ animation: widgetFloat 6.8s ease-in-out infinite;
1409
+ }
1410
+
1411
+ .market-widget-code span {
1412
+ display: block;
1413
+ height: 9px;
1414
+ border-radius: 999px;
1415
+ background: color-mix(in srgb, var(--accent) 24%, transparent);
1416
+ }
1417
+
1418
+ .market-widget-code span:nth-child(2) {
1419
+ width: 72%;
1420
+ }
1421
+
1422
+ .market-widget-code span:nth-child(3) {
1423
+ width: 46%;
1424
+ }
1425
+
1426
+ .market-widget-ring {
1427
+ right: 36px;
1428
+ bottom: 22px;
1429
+ display: grid;
1430
+ place-items: center;
1431
+ width: 100px;
1432
+ height: 100px;
1433
+ border-radius: 999px;
1434
+ animation: widgetFloat 7.8s ease-in-out infinite reverse;
1435
+ }
1436
+
1437
+ .market-widget-ring::before {
1438
+ content: "";
1439
+ width: 64px;
1440
+ height: 64px;
1441
+ border: 10px solid color-mix(in srgb, var(--accent) 22%, transparent);
1442
+ border-top-color: var(--accent);
1443
+ border-radius: 999px;
1444
+ animation: orbitSpin 3.8s linear infinite;
1445
+ }
1446
+
1447
+ .market-widget-terminal {
1448
+ left: 32px;
1449
+ bottom: 28px;
1450
+ display: grid;
1451
+ gap: 8px;
1452
+ width: 180px;
1453
+ padding: 16px;
1454
+ border-radius: 22px;
1455
+ animation: widgetFloat 6.2s ease-in-out infinite;
1456
+ }
1457
+
1458
+ .market-widget-terminal span {
1459
+ height: 8px;
1460
+ border-radius: 999px;
1461
+ background: color-mix(in srgb, var(--accent) 26%, transparent);
1462
+ }
1463
+
1464
+ .market-widget-terminal span:nth-child(1) { width: 54%; }
1465
+ .market-widget-terminal span:nth-child(2) { width: 82%; }
1466
+ .market-widget-terminal span:nth-child(3) { width: 38%; }
1467
+
1468
+ .market-widget-badge {
1469
+ right: 34px;
1470
+ top: 34px;
1471
+ display: inline-flex;
1472
+ align-items: center;
1473
+ justify-content: center;
1474
+ width: 86px;
1475
+ height: 86px;
1476
+ border-radius: 28px;
1477
+ color: #fff;
1478
+ background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 42%, #101014));
1479
+ font-size: 30px;
1480
+ animation: badgePop 4.8s ease-in-out infinite;
1481
+ }
1482
+
1483
+ .market-ambient-dock {
1484
+ position: relative;
1485
+ display: grid;
1486
+ grid-template-columns: repeat(4, 1fr);
1487
+ gap: 10px;
1488
+ margin-top: 22px;
1489
+ padding: 10px;
1490
+ border: 1px solid var(--market-line);
1491
+ border-radius: 24px;
1492
+ background: var(--market-panel);
1493
+ overflow: hidden;
1494
+ }
1495
+
1496
+ .market-ambient-dock::before {
1497
+ content: "";
1498
+ position: absolute;
1499
+ inset: 0;
1500
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--market-primary) 18%, transparent), transparent);
1501
+ transform: translateX(-100%);
1502
+ animation: dockSweep 4.8s ease-in-out infinite;
1503
+ }
1504
+
1505
+ .market-ambient-item {
1506
+ position: relative;
1507
+ display: grid;
1508
+ place-items: center;
1509
+ min-height: 62px;
1510
+ border: 1px solid var(--market-line);
1511
+ border-radius: 18px;
1512
+ background: var(--market-panel-strong);
1513
+ color: var(--market-muted);
1514
+ animation: ambientLift 6s ease-in-out infinite;
1515
+ }
1516
+
1517
+ .market-ambient-item:nth-child(2) { animation-delay: -1.1s; }
1518
+ .market-ambient-item:nth-child(3) { animation-delay: -2.2s; }
1519
+ .market-ambient-item:nth-child(4) { animation-delay: -3.3s; }
1520
+
1521
+ .market-flow {
1522
+ display: grid;
1523
+ gap: 14px;
1524
+ margin-top: 26px;
1525
+ }
1526
+
1527
+ .market-flow-step {
1528
+ position: relative;
1529
+ display: grid;
1530
+ grid-template-columns: 38px 1fr;
1531
+ gap: 12px;
1532
+ align-items: center;
1533
+ padding: 13px;
1534
+ border: 1px solid var(--market-line);
1535
+ border-radius: 20px;
1536
+ background: var(--market-panel);
1537
+ box-shadow: var(--market-shadow-soft);
1538
+ overflow: hidden;
1539
+ animation: none !important;
1540
+ }
1541
+
1542
+ .market-flow-step:nth-child(2) { animation-delay: 0.12s; }
1543
+ .market-flow-step:nth-child(3) { animation-delay: 0.24s; }
1544
+
1545
+ .market-flow-step::after {
1546
+ content: "";
1547
+ position: absolute;
1548
+ left: 31px;
1549
+ top: 50%;
1550
+ width: 2px;
1551
+ height: 54px;
1552
+ background: linear-gradient(var(--market-primary), transparent);
1553
+ transform: translateY(18px);
1554
+ }
1555
+
1556
+ .market-flow-step:last-child::after {
1557
+ display: none;
1558
+ }
1559
+
1560
+ .market-flow-index {
1561
+ display: grid;
1562
+ place-items: center;
1563
+ width: 38px;
1564
+ height: 38px;
1565
+ border-radius: 15px;
1566
+ color: #fff;
1567
+ background: linear-gradient(135deg, var(--market-primary), var(--market-primary-2));
1568
+ font-weight: 900;
1569
+ }
1570
+
1571
+ .market-flow-step strong {
1572
+ display: block;
1573
+ color: var(--market-ink);
1574
+ font-size: 14px;
1575
+ }
1576
+
1577
+ .market-flow-step span:last-child {
1578
+ display: block;
1579
+ margin-top: 3px;
1580
+ color: var(--market-muted);
1581
+ font-size: 12px;
1582
+ }
1583
+
1584
+ .market-auth-card {
1585
+ transform-style: preserve-3d;
1586
+ }
1587
+
1588
+ .market-auth-card:hover {
1589
+ transform: translateY(-4px) rotateX(1deg) rotateY(-1deg);
1590
+ }
1591
+
1592
+ .market-auth-card::after {
1593
+ content: "";
1594
+ position: absolute;
1595
+ inset: -1px;
1596
+ pointer-events: none;
1597
+ border-radius: inherit;
1598
+ background: linear-gradient(120deg, transparent 28%, color-mix(in srgb, var(--market-primary) 26%, transparent), transparent 70%);
1599
+ opacity: 0;
1600
+ transform: translateX(-40%);
1601
+ transition: opacity 0.25s ease;
1602
+ }
1603
+
1604
+ .market-auth-card:hover::after {
1605
+ opacity: 1;
1606
+ animation: authGlowSweep 1.2s cubic-bezier(0.16, 1, 0.3, 1);
1607
+ }
1608
+
1609
+ .market-field {
1610
+ position: relative;
1611
+ }
1612
+
1613
+ .market-field::after {
1614
+ content: "";
1615
+ position: absolute;
1616
+ left: 16px;
1617
+ right: 16px;
1618
+ bottom: 0;
1619
+ height: 2px;
1620
+ border-radius: 999px;
1621
+ background: linear-gradient(90deg, var(--market-primary), var(--market-primary-2));
1622
+ transform: scaleX(0);
1623
+ transform-origin: left;
1624
+ transition: transform 0.25s ease;
1625
+ }
1626
+
1627
+ .market-field:focus-within::after {
1628
+ transform: scaleX(1);
1629
+ }
1630
+
1631
+ .market-button-primary .material-symbols-outlined {
1632
+ animation: iconNudge 1.8s ease-in-out infinite;
1633
+ }
1634
+
1635
+ .market-mouse-light {
1636
+ position: fixed;
1637
+ left: var(--cursor-x, 50vw);
1638
+ top: var(--cursor-y, 50vh);
1639
+ z-index: -1;
1640
+ width: 420px;
1641
+ height: 420px;
1642
+ border-radius: 999px;
1643
+ background: radial-gradient(circle, color-mix(in srgb, var(--market-primary) 20%, transparent), transparent 62%);
1644
+ transform: translate(-50%, -50%);
1645
+ pointer-events: none;
1646
+ opacity: 0;
1647
+ transition: opacity 0.4s ease;
1648
+ }
1649
+
1650
+ body.is-pointer-active .market-mouse-light {
1651
+ opacity: 1;
1652
+ }
1653
+
1654
+ @keyframes orbitSpin {
1655
+ to { transform: rotate(360deg); }
1656
+ }
1657
+
1658
+ @keyframes nodeFloat {
1659
+ 0%, 100% { transform: translate3d(0, 0, 0) rotate(var(--tilt)); }
1660
+ 50% { transform: translate3d(0, -3px, 0) rotate(var(--tilt)); }
1661
+ }
1662
+
1663
+ @keyframes signalSweep {
1664
+ 0% { transform: translateX(-120%); }
1665
+ 100% { transform: translateX(360%); }
1666
+ }
1667
+
1668
+ @keyframes cardShine {
1669
+ from { transform: translateX(-120%); }
1670
+ to { transform: translateX(120%); }
1671
+ }
1672
+
1673
+ @keyframes widgetFloat {
1674
+ 0%, 100% { transform: translateY(0) rotate(0deg); }
1675
+ 50% { transform: translateY(-3px) rotate(0.4deg); }
1676
+ }
1677
+
1678
+ @keyframes barPulse {
1679
+ 0%, 100% { transform: scaleY(0.74); opacity: 0.72; }
1680
+ 50% { transform: scaleY(1); opacity: 1; }
1681
+ }
1682
+
1683
+ @keyframes toggleTravel {
1684
+ 0%, 100% { transform: translateX(0); }
1685
+ 50% { transform: translateX(44px); }
1686
+ }
1687
+
1688
+ @keyframes badgePop {
1689
+ 0%, 100% { transform: translateY(0) scale(1) rotate(-3deg); }
1690
+ 50% { transform: translateY(-2px) scale(1.01) rotate(2deg); }
1691
+ }
1692
+
1693
+ @keyframes dockSweep {
1694
+ 0%, 20% { transform: translateX(-120%); }
1695
+ 70%, 100% { transform: translateX(120%); }
1696
+ }
1697
+
1698
+ @keyframes ambientLift {
1699
+ 0%, 100% { transform: translateY(0); color: var(--market-muted); }
1700
+ 50% { transform: translateY(-2px); color: var(--market-primary); }
1701
+ }
1702
+
1703
+ @keyframes flowEnter {
1704
+ from { opacity: 0; transform: translateX(-14px); }
1705
+ to { opacity: 1; transform: translateX(0); }
1706
+ }
1707
+
1708
+ @keyframes authGlowSweep {
1709
+ from { transform: translateX(-65%); }
1710
+ to { transform: translateX(65%); }
1711
+ }
1712
+
1713
+ @keyframes iconNudge {
1714
+ 0%, 100% { transform: translateX(0) rotate(0deg); }
1715
+ 50% { transform: translateX(1px) rotate(3deg); }
1716
+ }
1717
+
1718
+ @media (prefers-reduced-motion: reduce) {
1719
+ *,
1720
+ *::before,
1721
+ *::after {
1722
+ animation-duration: 0.001ms !important;
1723
+ animation-iteration-count: 1 !important;
1724
+ scroll-behavior: auto !important;
1725
+ transition-duration: 0.001ms !important;
1726
+ }
1727
+ }
1728
+
1729
+ @media (max-width: 980px) {
1730
+ .market-orbit-stage {
1731
+ position: relative;
1732
+ inset: auto;
1733
+ width: min(100%, 420px);
1734
+ height: 300px;
1735
+ margin: 28px auto 0;
1736
+ }
1737
+
1738
+ .market-hero,
1739
+ .market-activation {
1740
+ grid-template-columns: 1fr;
1741
+ }
1742
+
1743
+ .market-hero-side {
1744
+ min-height: auto;
1745
+ }
1746
+
1747
+ .market-grid {
1748
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1749
+ }
1750
+
1751
+ .market-admin aside {
1752
+ width: 240px !important;
1753
+ }
1754
+
1755
+ .market-admin .ml-64 {
1756
+ margin-left: 256px !important;
1757
+ }
1758
+ }
1759
+
1760
+ @media (max-width: 720px) {
1761
+ .market-shell {
1762
+ width: min(100% - 24px, 1180px);
1763
+ }
1764
+
1765
+ .market-topbar,
1766
+ .market-section-head {
1767
+ align-items: stretch;
1768
+ flex-direction: column;
1769
+ }
1770
+
1771
+ .market-nav,
1772
+ .market-actions {
1773
+ width: 100%;
1774
+ flex-wrap: wrap;
1775
+ }
1776
+
1777
+ .market-nav a,
1778
+ .market-actions .market-button {
1779
+ flex: 1;
1780
+ }
1781
+
1782
+ .market-hero {
1783
+ padding-top: 36px;
1784
+ }
1785
+
1786
+ .market-hero-main,
1787
+ .market-hero-side,
1788
+ .market-auth-card {
1789
+ border-radius: 26px;
1790
+ }
1791
+
1792
+ .market-grid {
1793
+ grid-template-columns: 1fr;
1794
+ }
1795
+
1796
+ .market-card-lab:nth-child(2),
1797
+ .market-card-lab:nth-child(3) {
1798
+ margin-top: 0;
1799
+ }
1800
+
1801
+ .market-card-canvas {
1802
+ min-height: 150px;
1803
+ }
1804
+
1805
+ .market-orbit-stage {
1806
+ height: 240px;
1807
+ }
1808
+
1809
+ .market-orbit-node {
1810
+ width: 58px;
1811
+ height: 58px;
1812
+ border-radius: 20px;
1813
+ font-size: 22px;
1814
+ }
1815
+
1816
+ .market-mouse-light {
1817
+ display: none;
1818
+ }
1819
+
1820
+ .market-admin aside {
1821
+ display: none !important;
1822
+ }
1823
+
1824
+ .market-admin .ml-64 {
1825
+ margin-left: 0 !important;
1826
+ }
1827
+
1828
+ .market-admin header {
1829
+ margin: 12px;
1830
+ }
1831
+
1832
+ .market-admin main {
1833
+ padding: 12px !important;
1834
+ }
1835
+ }
1836
+
1837
+ .market-admin .nav-section {
1838
+ position: relative;
1839
+ }
1840
+
1841
+ .market-admin .nav-section .nav-item {
1842
+ position: relative;
1843
+ min-height: 44px;
1844
+ }
1845
+
1846
+ .market-admin .nav-section .nav-item.bg-surface-container-lowest::before {
1847
+ content: "";
1848
+ position: absolute;
1849
+ left: 8px;
1850
+ top: 12px;
1851
+ bottom: 12px;
1852
+ width: 3px;
1853
+ border-radius: 999px;
1854
+ background: var(--md-sys-color-primary, #6750a4);
1855
+ }
1856
+
1857
+ .market-admin .nav-section:nth-of-type(2),
1858
+ .market-admin .nav-section:nth-of-type(3) {
1859
+ padding: 10px 8px;
1860
+ border-radius: 20px;
1861
+ background:
1862
+ linear-gradient(135deg, rgba(103, 80, 164, 0.08), rgba(255, 255, 255, 0)),
1863
+ rgba(255, 255, 255, 0.28);
1864
+ border: 1px solid rgba(121, 116, 126, 0.12);
1865
+ }
1866
+
1867
+ .market-admin .nav-section:nth-of-type(3) {
1868
+ background:
1869
+ linear-gradient(135deg, rgba(0, 95, 175, 0.08), rgba(255, 255, 255, 0)),
1870
+ rgba(255, 255, 255, 0.28);
1871
+ }
1872
+
1873
+ .dark .market-admin .nav-section:nth-of-type(2),
1874
+ .dark .market-admin .nav-section:nth-of-type(3) {
1875
+ background: rgba(30, 28, 36, 0.58);
1876
+ }