nyxora 1.6.13 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +2 -2
  3. package/bin/nyxora.mjs +8 -0
  4. package/package.json +1 -2
  5. package/packages/core/package.json +1 -1
  6. package/packages/core/src/agent/limitOrderManager.ts +2 -2
  7. package/packages/core/src/agent/reasoning.ts +36 -14
  8. package/packages/core/src/config/parser.ts +99 -9
  9. package/packages/core/src/gateway/cli.ts +28 -2
  10. package/packages/core/src/gateway/setup.ts +45 -10
  11. package/packages/core/src/gateway/telegram.ts +53 -12
  12. package/packages/core/src/system/skills/searchWeb.ts +187 -21
  13. package/packages/core/src/utils/formatter.ts +12 -5
  14. package/packages/core/src/web3/config.ts +7 -1
  15. package/packages/core/src/web3/skills/bridgeToken.ts +4 -3
  16. package/packages/core/src/web3/skills/checkAddress.ts +2 -2
  17. package/packages/core/src/web3/skills/checkPortfolio.ts +55 -39
  18. package/packages/core/src/web3/skills/checkSecurity.ts +3 -2
  19. package/packages/core/src/web3/skills/customTx.ts +2 -2
  20. package/packages/core/src/web3/skills/getBalance.ts +3 -3
  21. package/packages/core/src/web3/skills/marketAnalysis.ts +2 -2
  22. package/packages/core/src/web3/skills/mintNft.ts +2 -2
  23. package/packages/core/src/web3/skills/swapToken.ts +4 -3
  24. package/packages/core/src/web3/skills/transfer.ts +2 -2
  25. package/packages/core/src/web3/utils/tokens.ts +8 -0
  26. package/packages/dashboard/dist/assets/{index-24OeXn-k.css → index-BSk4CLkG.css} +1 -1
  27. package/packages/dashboard/dist/assets/{index-BuYfTEKE.js → index-Dc3Tu0Te.js} +21 -21
  28. package/packages/dashboard/dist/index.html +2 -2
  29. package/packages/dashboard/package.json +1 -1
  30. package/packages/mcp-server/package.json +1 -1
  31. package/packages/policy/package.json +1 -1
  32. package/packages/signer/package.json +1 -1
  33. package/launcher.js +0 -48
  34. package/packages/core/src/agent/reasoning.d.ts.map +0 -1
  35. package/packages/core/src/config/parser.d.ts.map +0 -1
  36. package/packages/core/src/gateway/cli.d.ts.map +0 -1
  37. package/packages/core/src/memory/logger.d.ts.map +0 -1
  38. package/packages/core/src/utils/safeLogger.js +0 -59
  39. package/packages/core/src/web3/config.d.ts.map +0 -1
  40. package/packages/core/src/web3/skills/getBalance.d.ts.map +0 -1
  41. package/packages/dashboard/public/favicon.svg +0 -10
  42. package/packages/dashboard/public/icons.svg +0 -24
  43. package/packages/dashboard/src/App.css +0 -184
  44. package/packages/dashboard/src/App.tsx +0 -588
  45. package/packages/dashboard/src/BalanceWidget.tsx +0 -65
  46. package/packages/dashboard/src/MarketWidget.tsx +0 -73
  47. package/packages/dashboard/src/NetworkSelector.tsx +0 -64
  48. package/packages/dashboard/src/NyxoraLogo.tsx +0 -25
  49. package/packages/dashboard/src/OsSkills.tsx +0 -352
  50. package/packages/dashboard/src/Overview.tsx +0 -157
  51. package/packages/dashboard/src/PendingTransactions.tsx +0 -75
  52. package/packages/dashboard/src/Settings.tsx +0 -338
  53. package/packages/dashboard/src/Skills.tsx +0 -200
  54. package/packages/dashboard/src/SwapWidget.tsx +0 -141
  55. package/packages/dashboard/src/TransactionWidget.tsx +0 -95
  56. package/packages/dashboard/src/assets/hero.png +0 -0
  57. package/packages/dashboard/src/assets/react.svg +0 -1
  58. package/packages/dashboard/src/assets/vite.svg +0 -1
  59. package/packages/dashboard/src/components/PillSelect.tsx +0 -65
  60. package/packages/dashboard/src/index.css +0 -807
  61. package/packages/dashboard/src/main.tsx +0 -10
  62. package/packages/dashboard/src/overview.css +0 -304
  63. package/packages/dashboard/src/utils/api.ts +0 -31
  64. package/packages/mcp-server/tsconfig.tsbuildinfo +0 -1
  65. package/test-address.ts +0 -11
  66. package/test-all-chains.ts +0 -19
  67. package/test-db.ts +0 -3
  68. package/test-portfolio.ts +0 -14
  69. package/tsconfig.tsbuildinfo +0 -1
@@ -1,807 +0,0 @@
1
- :root {
2
- /* Nord Theme - Dark Default */
3
- --bg-color: #3b4252; /* Main content background */
4
- --bg-secondary: #434c5e;
5
- --bg-sidebar: #2e3440; /* Sidebar darker background */
6
- --text-primary: #eceff4;
7
- --text-secondary: #d8dee9;
8
- --accent: #88c0d0; /* Frost Light Blue/Cyan */
9
- --accent-hover: #81a1c1;
10
- --glass-bg: rgba(46, 52, 64, 0.7);
11
- --glass-border: rgba(216, 222, 233, 0.1);
12
- --chat-user: #88c0d0;
13
- --chat-user-text: #2e3440; /* Dark text for contrast against cyan bubble */
14
- --chat-agent: #2e3440;
15
- --tool-bg: #4c566a;
16
- --success: #a3be8c;
17
- --danger: #bf616a;
18
- }
19
-
20
- * {
21
- box-sizing: border-box;
22
- margin: 0;
23
- padding: 0;
24
- }
25
-
26
- body {
27
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
28
- background-color: var(--bg-color);
29
- color: var(--text-primary);
30
- height: 100vh;
31
- overflow: hidden;
32
- }
33
-
34
- #root {
35
- display: flex;
36
- height: 100vh;
37
- width: 100vw;
38
- }
39
-
40
- /* SIDEBAR */
41
- .sidebar {
42
- width: 280px;
43
- background-color: var(--bg-sidebar);
44
- border-right: 1px solid var(--glass-border);
45
- display: flex;
46
- flex-direction: column;
47
- box-shadow: 10px 0 30px -10px rgba(0,0,0,0.5);
48
- z-index: 100;
49
- }
50
-
51
- .agent-identity-card {
52
- padding: 24px;
53
- display: flex;
54
- align-items: center;
55
- gap: 16px;
56
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
57
- margin-bottom: 8px;
58
- background: linear-gradient(180deg, rgba(59, 130, 246, 0.05) 0%, transparent 100%);
59
- }
60
-
61
- .agent-avatar {
62
- display: flex;
63
- justify-content: center;
64
- align-items: center;
65
- }
66
-
67
- .agent-info {
68
- display: flex;
69
- flex-direction: column;
70
- gap: 4px;
71
- }
72
-
73
- .agent-name {
74
- font-size: 1.1rem;
75
- font-weight: 700;
76
- color: white;
77
- letter-spacing: -0.025em;
78
- }
79
-
80
- .agent-status {
81
- display: flex;
82
- align-items: center;
83
- gap: 6px;
84
- font-size: 0.75rem;
85
- color: #4ade80;
86
- font-weight: 600;
87
- letter-spacing: 0.05em;
88
- }
89
-
90
- .status-dot {
91
- width: 8px;
92
- height: 8px;
93
- background-color: #4ade80;
94
- border-radius: 50%;
95
- box-shadow: 0 0 8px #4ade80;
96
- animation: pulse-green 2s infinite;
97
- }
98
-
99
- @keyframes pulse-green {
100
- 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(74, 222, 128, 0.7); }
101
- 70% { transform: scale(1); box-shadow: 0 0 0 6px rgba(74, 222, 128, 0); }
102
- 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(74, 222, 128, 0); }
103
- }
104
-
105
- .sidebar-scroll-area {
106
- flex: 1;
107
- overflow-y: auto;
108
- padding-bottom: 24px;
109
- }
110
-
111
- .sidebar-scroll-area::-webkit-scrollbar {
112
- width: 4px;
113
- }
114
- .sidebar-scroll-area::-webkit-scrollbar-thumb {
115
- background: rgba(255,255,255,0.05);
116
- }
117
-
118
- .sidebar-section {
119
- padding: 24px 24px 8px;
120
- font-size: 0.75rem;
121
- color: #8b9bb4;
122
- font-weight: 500;
123
- }
124
-
125
- .sidebar-nav {
126
- display: flex;
127
- flex-direction: column;
128
- gap: 4px;
129
- padding: 0 16px;
130
- }
131
-
132
- .nav-item {
133
- display: flex;
134
- align-items: center;
135
- gap: 10px;
136
- padding: 8px 12px;
137
- border-radius: 8px;
138
- color: #94a3b8;
139
- font-size: 0.8rem;
140
- font-weight: 500;
141
- cursor: pointer;
142
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
143
- border: 1px solid transparent;
144
- }
145
-
146
- .nav-icon {
147
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
148
- }
149
-
150
- .nav-item:hover {
151
- background-color: rgba(255, 255, 255, 0.03);
152
- color: white;
153
- transform: translateX(4px);
154
- }
155
-
156
- .nav-item:hover .nav-icon {
157
- transform: scale(1.1);
158
- color: #fff;
159
- }
160
-
161
- .sessions-list {
162
- gap: 0px !important;
163
- justify-content: flex-start !important;
164
- flex: none !important;
165
- height: max-content !important;
166
- }
167
-
168
- .session-item {
169
- justify-content: space-between;
170
- padding: 4px 10px !important;
171
- margin-bottom: 2px !important;
172
- margin-top: 0px !important;
173
- min-height: 28px !important;
174
- height: max-content !important;
175
- flex: none !important;
176
- }
177
-
178
- .delete-session-btn {
179
- background: transparent;
180
- border: none;
181
- color: #bf616a;
182
- cursor: pointer;
183
- opacity: 0;
184
- transition: opacity 0.2s ease, transform 0.2s ease;
185
- display: flex;
186
- align-items: center;
187
- justify-content: center;
188
- padding: 4px;
189
- border-radius: 6px;
190
- }
191
-
192
- .delete-session-btn:hover {
193
- background: rgba(191, 97, 106, 0.2);
194
- transform: scale(1.1);
195
- }
196
-
197
- .session-item:hover .delete-session-btn {
198
- opacity: 1;
199
- }
200
-
201
- .nav-item.active {
202
- background: linear-gradient(90deg, rgba(59,130,246,0.15) 0%, transparent 100%);
203
- color: white;
204
- border-left: 3px solid var(--accent);
205
- border-radius: 4px 12px 12px 4px;
206
- font-weight: 600;
207
- }
208
-
209
- .nav-item.active .nav-icon {
210
- color: var(--accent);
211
- }
212
-
213
- /* MAIN CONTENT */
214
- .main-content {
215
- flex: 1;
216
- display: flex;
217
- flex-direction: column;
218
- background-image:
219
- radial-gradient(at 0% 0%, rgba(59, 130, 246, 0.1) 0px, transparent 50%),
220
- radial-gradient(at 100% 100%, rgba(139, 92, 246, 0.1) 0px, transparent 50%);
221
- }
222
-
223
- /* TOPBAR */
224
- .topbar {
225
- height: 64px;
226
- border-bottom: 1px solid var(--glass-border);
227
- display: flex;
228
- align-items: center;
229
- justify-content: space-between;
230
- padding: 0 24px;
231
- background: var(--bg-color);
232
- }
233
-
234
- .topbar-left {
235
- display: flex;
236
- align-items: center;
237
- gap: 16px;
238
- font-size: 0.95rem;
239
- font-weight: 500;
240
- color: var(--text-secondary);
241
- }
242
-
243
- .topbar-right {
244
- display: flex;
245
- align-items: center;
246
- gap: 12px;
247
- }
248
-
249
- .custom-network-selector {
250
- position: relative;
251
- }
252
-
253
- .network-selector-pill {
254
- display: flex;
255
- align-items: center;
256
- gap: 8px;
257
- background: #88c0d0;
258
- border: none;
259
- color: #000000;
260
- font-weight: 600;
261
- font-size: 0.85rem;
262
- border-radius: 9999px;
263
- padding: 8px 16px;
264
- cursor: pointer;
265
- transition: all 0.2s;
266
- outline: none;
267
- font-family: inherit;
268
- }
269
-
270
- .network-selector-pill:hover {
271
- opacity: 0.9;
272
- box-shadow: 0 0 10px rgba(136, 192, 208, 0.4);
273
- }
274
-
275
- .network-selector-pill:focus-visible {
276
- box-shadow: 0 0 0 2px rgba(136, 192, 208, 0.5);
277
- }
278
-
279
- .network-icon {
280
- flex-shrink: 0;
281
- }
282
-
283
- .network-chevron {
284
- opacity: 0.7;
285
- margin-left: 4px;
286
- }
287
-
288
- .network-dropdown-menu {
289
- position: absolute;
290
- top: calc(100% + 8px);
291
- right: 0;
292
- background: var(--bg-secondary);
293
- border: 1px solid var(--glass-border);
294
- border-radius: 12px;
295
- padding: 6px;
296
- list-style: none;
297
- margin: 0;
298
- min-width: 180px;
299
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
300
- z-index: 100;
301
- animation: dropdownSlideIn 0.2s ease-out;
302
- }
303
-
304
- @keyframes dropdownSlideIn {
305
- from { opacity: 0; transform: translateY(-10px); }
306
- to { opacity: 1; transform: translateY(0); }
307
- }
308
-
309
- .network-dropdown-item {
310
- padding: 10px 14px;
311
- border-radius: 8px;
312
- cursor: pointer;
313
- font-size: 0.85rem;
314
- color: #e5e7eb;
315
- transition: background 0.1s;
316
- }
317
-
318
- .network-dropdown-item:hover {
319
- background: rgba(255, 255, 255, 0.05);
320
- }
321
-
322
- .network-dropdown-item.active {
323
- background: rgba(136, 192, 208, 0.1);
324
- color: #88c0d0;
325
- font-weight: 600;
326
- }
327
-
328
- /* SPLIT SCREEN WORKSPACE */
329
- .workspace-container {
330
- display: flex;
331
- height: calc(100vh - 64px);
332
- width: 100%;
333
- }
334
-
335
- .chat-wrapper {
336
- display: flex;
337
- flex-direction: column;
338
- padding: 24px 0;
339
- height: 100%;
340
- }
341
-
342
- .resizer {
343
- width: 6px;
344
- background: var(--glass-border);
345
- cursor: col-resize;
346
- transition: background 0.2s;
347
- z-index: 10;
348
- }
349
-
350
- .resizer:hover, .resizer:active {
351
- background: var(--accent);
352
- }
353
-
354
- .canvas-panel {
355
- flex: 1;
356
- display: flex;
357
- flex-direction: column;
358
- background: var(--bg-sidebar);
359
- padding: 32px;
360
- overflow-y: auto;
361
- position: relative;
362
- background-image: radial-gradient(at 50% 50%, rgba(59, 130, 246, 0.05) 0px, transparent 80%);
363
- }
364
-
365
- .canvas-header {
366
- display: flex;
367
- justify-content: space-between;
368
- align-items: center;
369
- margin-bottom: 32px;
370
- border-bottom: 1px solid rgba(255,255,255,0.05);
371
- padding-bottom: 16px;
372
- }
373
-
374
- .canvas-title {
375
- font-family: monospace;
376
- color: #94a3b8;
377
- font-size: 0.85rem;
378
- display: flex;
379
- align-items: center;
380
- gap: 8px;
381
- text-transform: uppercase;
382
- letter-spacing: 0.05em;
383
- }
384
-
385
- .canvas-empty {
386
- display: flex;
387
- flex-direction: column;
388
- align-items: center;
389
- justify-content: center;
390
- height: 100%;
391
- color: #475569;
392
- gap: 16px;
393
- }
394
-
395
- .chat-container {
396
- flex: 1;
397
- overflow-y: auto;
398
- padding: 0 24px;
399
- display: flex;
400
- flex-direction: column;
401
- gap: 20px;
402
- }
403
-
404
- .chat-container::-webkit-scrollbar {
405
- width: 6px;
406
- }
407
- .chat-container::-webkit-scrollbar-thumb {
408
- background: rgba(255, 255, 255, 0.1);
409
- border-radius: 4px;
410
- }
411
-
412
- .message-wrapper {
413
- display: flex;
414
- flex-direction: column;
415
- max-width: 85%;
416
- animation: fadeIn 0.3s ease-out forwards;
417
- }
418
-
419
- .message-wrapper.agent {
420
- align-self: flex-start;
421
- flex-direction: row;
422
- align-items: flex-end;
423
- gap: 8px;
424
- }
425
- .message-wrapper.user {
426
- align-self: flex-end;
427
- flex-direction: row-reverse;
428
- align-items: flex-end;
429
- gap: 8px;
430
- }
431
-
432
- .copy-btn {
433
- background: transparent;
434
- border: none;
435
- color: var(--text-secondary);
436
- cursor: pointer;
437
- padding: 6px;
438
- border-radius: 6px;
439
- opacity: 0;
440
- transition: opacity 0.2s, background 0.2s;
441
- display: flex;
442
- align-items: center;
443
- justify-content: center;
444
- }
445
- .copy-btn:hover {
446
- background: var(--bg-secondary);
447
- color: var(--text-primary);
448
- }
449
- .message-wrapper:hover .copy-btn {
450
- opacity: 1;
451
- }
452
-
453
- .message-bubble {
454
- padding: 14px 18px;
455
- border-radius: 18px;
456
- line-height: 1.6;
457
- font-size: 0.95rem;
458
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
459
- white-space: pre-wrap;
460
- }
461
-
462
- .user .message-bubble {
463
- background-color: var(--chat-user);
464
- color: var(--chat-user-text);
465
- border-bottom-right-radius: 4px;
466
- }
467
-
468
- .agent .message-bubble {
469
- background-color: var(--chat-agent);
470
- border: 1px solid var(--glass-border);
471
- border-bottom-left-radius: 4px;
472
- color: var(--text-primary);
473
- }
474
-
475
- .tool-call {
476
- font-size: 0.85rem;
477
- color: var(--text-secondary);
478
- background: var(--tool-bg);
479
- padding: 10px 14px;
480
- border-radius: 12px;
481
- margin-top: 10px;
482
- border: 1px solid var(--glass-border);
483
- display: flex;
484
- align-items: center;
485
- gap: 8px;
486
- }
487
-
488
- .tool-call code {
489
- color: var(--accent);
490
- font-family: monospace;
491
- }
492
-
493
- .input-area {
494
- padding: 20px 24px 0;
495
- }
496
-
497
- .input-form {
498
- display: flex;
499
- gap: 12px;
500
- background: var(--bg-secondary);
501
- border: 1px solid var(--glass-border);
502
- border-radius: 16px;
503
- padding: 8px;
504
- transition: all 0.2s;
505
- }
506
-
507
- .input-form:focus-within {
508
- border-color: var(--accent);
509
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
510
- }
511
-
512
- .chat-input {
513
- flex: 1;
514
- background: transparent;
515
- border: none;
516
- padding: 12px 16px;
517
- color: white;
518
- font-size: 0.95rem;
519
- font-family: inherit;
520
- outline: none;
521
- }
522
-
523
- .send-button {
524
- background: var(--accent);
525
- color: white;
526
- border: none;
527
- width: 44px;
528
- height: 44px;
529
- border-radius: 12px;
530
- display: flex;
531
- justify-content: center;
532
- align-items: center;
533
- cursor: pointer;
534
- transition: all 0.2s;
535
- }
536
-
537
- .voice-button {
538
- background: var(--bg-secondary);
539
- color: var(--text-secondary);
540
- border: 1px solid var(--glass-border);
541
- width: 44px;
542
- height: 44px;
543
- border-radius: 12px;
544
- display: flex;
545
- justify-content: center;
546
- align-items: center;
547
- cursor: pointer;
548
- transition: all 0.2s;
549
- }
550
-
551
- .voice-button:hover {
552
- color: white;
553
- border-color: #ef4444;
554
- }
555
-
556
- .voice-button.listening {
557
- background: rgba(239, 68, 68, 0.2);
558
- color: #ef4444;
559
- border-color: #ef4444;
560
- animation: pulse-red 1.5s infinite;
561
- }
562
-
563
- .voice-button.active-mode {
564
- border-color: #3b82f6;
565
- color: #3b82f6;
566
- }
567
-
568
- .voice-button.speaking {
569
- background: rgba(59, 130, 246, 0.2);
570
- color: #3b82f6;
571
- border-color: #3b82f6;
572
- animation: pulse-blue 1.5s infinite;
573
- }
574
-
575
- @keyframes pulse-red {
576
- 0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
577
- 70% { box-shadow: 0 0 0 10px rgba(239, 68, 68, 0); }
578
- 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
579
- }
580
-
581
- @keyframes pulse-blue {
582
- 0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4); }
583
- 70% { box-shadow: 0 0 0 10px rgba(59, 130, 246, 0); }
584
- 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); }
585
- }
586
-
587
- .send-button:hover:not(:disabled) {
588
- background: var(--accent-hover);
589
- transform: scale(1.05);
590
- }
591
-
592
- .send-button:disabled {
593
- opacity: 0.5;
594
- cursor: not-allowed;
595
- }
596
-
597
- .typing-indicator {
598
- display: flex;
599
- gap: 4px;
600
- padding: 14px 18px;
601
- background-color: var(--chat-agent);
602
- border: 1px solid var(--glass-border);
603
- border-radius: 18px;
604
- border-bottom-left-radius: 4px;
605
- width: fit-content;
606
- align-self: flex-start;
607
- }
608
-
609
- .dot {
610
- width: 6px;
611
- height: 6px;
612
- background: var(--text-secondary);
613
- border-radius: 50%;
614
- animation: bounce 1.4s infinite ease-in-out both;
615
- }
616
-
617
- .dot:nth-child(1) { animation-delay: -0.32s; }
618
- .dot:nth-child(2) { animation-delay: -0.16s; }
619
-
620
- @keyframes bounce {
621
- 0%, 80%, 100% { transform: scale(0); }
622
- 40% { transform: scale(1); }
623
- }
624
-
625
- @keyframes fadeIn {
626
- from { opacity: 0; transform: translateY(10px); }
627
- to { opacity: 1; transform: translateY(0); }
628
- }
629
-
630
- .prompt-suggestions {
631
- display: flex;
632
- gap: 12px;
633
- margin-bottom: 12px;
634
- overflow-x: auto;
635
- }
636
- .prompt-suggestions button {
637
- background: var(--bg-secondary);
638
- color: var(--text-secondary);
639
- border: 1px solid var(--glass-border);
640
- padding: 8px 16px;
641
- border-radius: 20px;
642
- font-size: 0.85rem;
643
- cursor: pointer;
644
- white-space: nowrap;
645
- transition: all 0.2s;
646
- }
647
- .prompt-suggestions button:hover {
648
- border-color: var(--accent);
649
- color: var(--text-primary);
650
- }
651
- .trending-tokens {
652
- display: flex;
653
- align-items: center;
654
- gap: 12px;
655
- margin-top: 12px;
656
- font-size: 0.8rem;
657
- color: var(--text-secondary);
658
- }
659
- .token-tag {
660
- background: var(--accent);
661
- color: var(--bg-color);
662
- padding: 4px 10px;
663
- border-radius: 12px;
664
- font-weight: 600;
665
- cursor: pointer;
666
- transition: transform 0.2s, filter 0.2s;
667
- }
668
-
669
- .token-tag:hover {
670
- transform: translateY(-2px);
671
- filter: brightness(1.2);
672
- }
673
-
674
- /* Nord Theme Forms */
675
- .nord-label {
676
- display: block;
677
- font-size: 0.75rem;
678
- font-weight: 700;
679
- color: #81a1c1;
680
- text-transform: uppercase;
681
- margin-bottom: 6px;
682
- letter-spacing: 0.05em;
683
- }
684
-
685
- .nord-pill-input {
686
- width: 100%;
687
- background-color: rgba(46, 52, 64, 0.7);
688
- border: 1px solid rgba(216, 222, 233, 0.1);
689
- color: #88c0d0;
690
- padding: 10px 20px;
691
- border-radius: 9999px;
692
- font-size: 0.9rem;
693
- font-weight: 600;
694
- outline: none;
695
- transition: all 0.2s ease;
696
- }
697
-
698
- .nord-pill-input:focus {
699
- border-color: #88c0d0;
700
- box-shadow: 0 0 10px rgba(136, 192, 208, 0.2);
701
- }
702
-
703
- .nord-pill-input::placeholder {
704
- color: #4c566a;
705
- }
706
-
707
- .nord-input {
708
- width: 100%;
709
- background-color: #2e3440;
710
- border: 1px solid #434c5e;
711
- color: #eceff4;
712
- padding: 10px 14px;
713
- border-radius: 6px;
714
- font-size: 0.9rem;
715
- outline: none;
716
- transition: all 0.2s ease;
717
- }
718
-
719
- .nord-input:focus {
720
- border-color: #88c0d0;
721
- box-shadow: 0 0 0 2px rgba(136, 192, 208, 0.2);
722
- }
723
-
724
- .nord-input::placeholder {
725
- color: #4c566a;
726
- }
727
-
728
- /* Custom Range Slider */
729
- .nord-slider {
730
- -webkit-appearance: none;
731
- appearance: none;
732
- width: 100%;
733
- height: 6px;
734
- background: #4c566a;
735
- border-radius: 3px;
736
- outline: none;
737
- margin-top: 10px;
738
- }
739
-
740
- .nord-slider::-webkit-slider-thumb {
741
- -webkit-appearance: none;
742
- appearance: none;
743
- width: 18px;
744
- height: 18px;
745
- border-radius: 50%;
746
- background: #eceff4;
747
- cursor: pointer;
748
- border: 2px solid #88c0d0;
749
- transition: all 0.2s ease;
750
- }
751
-
752
- .nord-slider::-webkit-slider-thumb:hover {
753
- transform: scale(1.1);
754
- background: #fff;
755
- }
756
-
757
- .nord-slider::-moz-range-thumb {
758
- width: 18px;
759
- height: 18px;
760
- border-radius: 50%;
761
- background: #eceff4;
762
- cursor: pointer;
763
- border: 2px solid #88c0d0;
764
- transition: all 0.2s ease;
765
- }
766
-
767
- /* Flat Matte Button */
768
- .nord-btn-primary {
769
- background-color: #81a1c1;
770
- color: #2e3440;
771
- border: none;
772
- border-radius: 6px;
773
- padding: 10px 20px;
774
- font-size: 0.9rem;
775
- font-weight: 600;
776
- cursor: pointer;
777
- transition: background-color 0.2s ease;
778
- display: flex;
779
- align-items: center;
780
- justify-content: center;
781
- }
782
-
783
- .nord-btn-primary:hover {
784
- background-color: #88c0d0;
785
- }
786
-
787
- .nord-btn-primary:disabled {
788
- background-color: #4c566a;
789
- color: #8fbcbb;
790
- cursor: not-allowed;
791
- }
792
-
793
- .nord-panel-header {
794
- display: flex;
795
- align-items: center;
796
- gap: 10px;
797
- margin-bottom: 20px;
798
- border-bottom: 1px solid rgba(216, 222, 233, 0.05);
799
- padding-bottom: 12px;
800
- }
801
-
802
- .nord-panel-header h3 {
803
- margin: 0;
804
- font-size: 1.1rem;
805
- color: #eceff4;
806
- font-weight: 600;
807
- }