lnlink-server 1.0.1 → 1.0.2

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 (91) hide show
  1. package/README.md +461 -0
  2. package/{app.js → dist/app.js} +329 -321
  3. package/dist/binaries.json +25 -0
  4. package/{build-info.json → dist/build-info.json} +2 -1
  5. package/{index.js → dist/index.js} +690 -121
  6. package/dist/index.js.map +7 -0
  7. package/dist/node_modules/debug/.coveralls.yml +1 -0
  8. package/dist/node_modules/debug/.eslintrc +11 -0
  9. package/dist/node_modules/debug/.travis.yml +14 -0
  10. package/dist/node_modules/debug/CHANGELOG.md +362 -0
  11. package/dist/node_modules/debug/LICENSE +19 -0
  12. package/dist/node_modules/debug/Makefile +50 -0
  13. package/dist/node_modules/debug/README.md +312 -0
  14. package/dist/node_modules/debug/component.json +19 -0
  15. package/dist/node_modules/debug/karma.conf.js +70 -0
  16. package/dist/node_modules/debug/node.js +1 -0
  17. package/dist/node_modules/debug/package.json +49 -0
  18. package/dist/node_modules/debug/src/browser.js +185 -0
  19. package/dist/node_modules/debug/src/debug.js +202 -0
  20. package/dist/node_modules/debug/src/index.js +10 -0
  21. package/dist/node_modules/debug/src/inspector-log.js +15 -0
  22. package/dist/node_modules/debug/src/node.js +248 -0
  23. package/dist/node_modules/depd/History.md +96 -0
  24. package/dist/node_modules/depd/LICENSE +22 -0
  25. package/dist/node_modules/depd/Readme.md +280 -0
  26. package/dist/node_modules/depd/index.js +522 -0
  27. package/dist/node_modules/depd/lib/browser/index.js +77 -0
  28. package/dist/node_modules/depd/lib/compat/callsite-tostring.js +103 -0
  29. package/dist/node_modules/depd/lib/compat/event-listener-count.js +22 -0
  30. package/dist/node_modules/depd/lib/compat/index.js +79 -0
  31. package/dist/node_modules/depd/package.json +41 -0
  32. package/dist/node_modules/http-errors/HISTORY.md +132 -0
  33. package/dist/node_modules/http-errors/LICENSE +23 -0
  34. package/dist/node_modules/http-errors/README.md +135 -0
  35. package/dist/node_modules/http-errors/index.js +260 -0
  36. package/dist/node_modules/http-errors/package.json +48 -0
  37. package/dist/node_modules/inherits/LICENSE +16 -0
  38. package/dist/node_modules/inherits/README.md +42 -0
  39. package/dist/node_modules/inherits/inherits.js +7 -0
  40. package/dist/node_modules/inherits/inherits_browser.js +23 -0
  41. package/dist/node_modules/inherits/package.json +29 -0
  42. package/dist/node_modules/ms/index.js +152 -0
  43. package/dist/node_modules/ms/license.md +21 -0
  44. package/dist/node_modules/ms/package.json +37 -0
  45. package/dist/node_modules/ms/readme.md +51 -0
  46. package/dist/node_modules/setprototypeof/LICENSE +13 -0
  47. package/dist/node_modules/setprototypeof/README.md +26 -0
  48. package/dist/node_modules/setprototypeof/index.d.ts +2 -0
  49. package/dist/node_modules/setprototypeof/index.js +15 -0
  50. package/dist/node_modules/setprototypeof/package.json +25 -0
  51. package/dist/node_modules/statuses/HISTORY.md +65 -0
  52. package/dist/node_modules/statuses/LICENSE +23 -0
  53. package/dist/node_modules/statuses/README.md +127 -0
  54. package/dist/node_modules/statuses/codes.json +66 -0
  55. package/dist/node_modules/statuses/index.js +113 -0
  56. package/dist/node_modules/statuses/package.json +48 -0
  57. package/dist/package.json +62 -0
  58. package/dist/public/css/initOwner.css +705 -0
  59. package/dist/public/img/logo.svg +1 -0
  60. package/{public → dist/public}/init.html +5 -5
  61. package/dist/public/js/init.js +840 -0
  62. package/{setting.regtest.json → dist/setting.regtest.json} +2 -1
  63. package/package.json +51 -20
  64. package/binaries.json +0 -20
  65. package/index.js.map +0 -7
  66. package/public/css/initOwner.css +0 -553
  67. package/public/js/init.js +0 -454
  68. /package/{config.default.js → dist/config.default.js} +0 -0
  69. /package/{prisma → dist/prisma}/migrations/20250918020814_/migration.sql +0 -0
  70. /package/{prisma → dist/prisma}/migrations/20251114105314_auto_update/migration.sql +0 -0
  71. /package/{prisma → dist/prisma}/migrations/migration_lock.toml +0 -0
  72. /package/{prisma → dist/prisma}/schema.prisma +0 -0
  73. /package/{proto → dist/proto}/chainkit.proto +0 -0
  74. /package/{proto → dist/proto}/lightning.proto +0 -0
  75. /package/{proto → dist/proto}/lit-status.proto +0 -0
  76. /package/{proto → dist/proto}/looprpc/client.proto +0 -0
  77. /package/{proto → dist/proto}/price_oracle.proto +0 -0
  78. /package/{proto → dist/proto}/rfqrpc/rfq.proto +0 -0
  79. /package/{proto → dist/proto}/routerrpc/router.proto +0 -0
  80. /package/{proto → dist/proto}/signrpc/signer.proto +0 -0
  81. /package/{proto → dist/proto}/stateservice.proto +0 -0
  82. /package/{proto → dist/proto}/swapserverrpc/common.proto +0 -0
  83. /package/{proto → dist/proto}/tapchannel.proto +0 -0
  84. /package/{proto → dist/proto}/tapcommon.proto +0 -0
  85. /package/{proto → dist/proto}/taprootassets.proto +0 -0
  86. /package/{proto → dist/proto}/universe.proto +0 -0
  87. /package/{proto → dist/proto}/walletkit.proto +0 -0
  88. /package/{proto → dist/proto}/walletunlocker.proto +0 -0
  89. /package/{public → dist/public}/favicon.ico +0 -0
  90. /package/{setting.mainnet.json → dist/setting.mainnet.json} +0 -0
  91. /package/{setting.testnet.json → dist/setting.testnet.json} +0 -0
@@ -0,0 +1,705 @@
1
+ :root {
2
+ --lime-primary: #d0f224;
3
+ --bg-dark: #0f0f0f;
4
+ --card-bg: #1a1a1a;
5
+ --input-bg: #262626;
6
+ --text-primary: #ffffff;
7
+ --text-secondary: #a0a0a0;
8
+ --border-color: #333333;
9
+ }
10
+
11
+ * {
12
+ margin: 0;
13
+ padding: 0;
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ body {
18
+ background-color: var(--bg-dark);
19
+ color: var(--text-primary);
20
+ font-family: "Inter", "Segoe UI", sans-serif;
21
+ min-height: 100vh;
22
+ display: flex;
23
+ justify-content: center;
24
+ /* Removed align-items: center to prevent vertical centering */
25
+ align-items: flex-start;
26
+ }
27
+
28
+ .root {
29
+ width: 100%;
30
+ max-width: 800px;
31
+ margin: 30px auto;
32
+ padding: 30px;
33
+ /* No background for root itself based on some designs, but let's keep it if it's a card style */
34
+ /* If the design is a centered card on dark bg: */
35
+ background: transparent;
36
+ }
37
+
38
+ /* Header Logo Area */
39
+ .header-logo {
40
+ margin-bottom: 0 !important;
41
+ }
42
+
43
+ h2 {
44
+ font-weight: 600;
45
+ margin-bottom: 0.5rem;
46
+ font-size: 2rem;
47
+ }
48
+
49
+ p.text-muted {
50
+ color: var(--text-secondary) !important;
51
+ font-size: 0.95rem;
52
+ }
53
+ .network-type {
54
+ padding-bottom: 1.2rem;
55
+ border-bottom: 0.5px solid #262626;
56
+ }
57
+ /* Main Card Container */
58
+ .info-section {
59
+ background: var(--card-bg);
60
+ border-radius: 16px;
61
+ padding: 30px;
62
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
63
+ margin-top: 2rem;
64
+ }
65
+
66
+ /* Form Controls */
67
+ .form-label {
68
+ color: #e0e0e0 !important; /* Increased brightness for better visibility */
69
+ font-size: 0.85rem;
70
+ margin-bottom: 4px;
71
+ }
72
+
73
+ .form-control {
74
+ background-color: var(--input-bg);
75
+ border: 1px solid var(--input-bg);
76
+ color: var(--text-primary);
77
+ border-radius: 8px;
78
+ padding: 0 16px; /* Use flex alignment or line-height for vertical centering with fixed height */
79
+ height: 48px; /* Fixed height as requested */
80
+ display: flex;
81
+ align-items: center;
82
+ font-size: 0.95rem;
83
+ }
84
+
85
+ /* Readonly inputs specific style */
86
+ .form-control[readonly] {
87
+ background-color: var(--input-bg);
88
+ color: #666; /* Dimmer color for readonly fields */
89
+ opacity: 1;
90
+ }
91
+
92
+ /* Editable inputs should stand out slightly more if needed, or just standard white */
93
+ .form-control:not([readonly]) {
94
+ color: #fff;
95
+ }
96
+ .form-control:focus {
97
+ background-color: var(--input-bg);
98
+ border-color: var(--lime-primary);
99
+ box-shadow: none;
100
+ color: var(--text-primary);
101
+ outline: none;
102
+ z-index: 3; /* Ensure shadow is visible over adjacent elements */
103
+ }
104
+
105
+ /* Fix for Chrome/Edge autofill turning background white */
106
+ input:-webkit-autofill,
107
+ input:-webkit-autofill:hover,
108
+ input:-webkit-autofill:focus,
109
+ input:-webkit-autofill:active {
110
+ -webkit-box-shadow: none !important;
111
+ -webkit-text-fill-color: var(--text-primary) !important;
112
+ caret-color: var(--text-primary);
113
+ transition: background-color 5000s ease-in-out 0s;
114
+ }
115
+
116
+ /* Input Group for Icon */
117
+ .input-group {
118
+ position: relative;
119
+ display: flex;
120
+ align-items: center;
121
+ }
122
+
123
+ .input-group .form-control {
124
+ /* Ensure input takes full width but leaves space for icon if absolutely positioned,
125
+ or use flex layout. Here we use flex layout so no right padding needed on input unless abs pos. */
126
+ border-top-right-radius: 0;
127
+ border-bottom-right-radius: 0;
128
+ /* border-right: none; Seamless connection */
129
+ flex: 1;
130
+ }
131
+
132
+ .input-group .form-control:last-child {
133
+ border-top-right-radius: 8px;
134
+ border-bottom-right-radius: 8px;
135
+ /* border-right: 1px solid transparent; */
136
+ }
137
+
138
+ .input-icon {
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: center;
142
+ background-color: var(--input-bg);
143
+ color: var(--lime-primary);
144
+ padding: 0 12px;
145
+ cursor: pointer;
146
+ border-top-right-radius: 8px;
147
+ border-bottom-right-radius: 8px;
148
+ height: 48px; /* Match input height */
149
+ min-height: 48px; /* Ensure consistency */
150
+ transition: color 0.2s ease;
151
+ /* Simulate border to match input */
152
+ border-top: 1px solid transparent;
153
+ border-bottom: 1px solid transparent;
154
+ border-right: 1px solid transparent;
155
+ }
156
+
157
+ .input-icon:hover {
158
+ color: rgba(208, 242, 36, 0.9);
159
+ }
160
+
161
+ /* When input is focused, we need to handle the border of the icon to look like part of the focus ring
162
+ This is tricky with separate elements.
163
+ Simpler approach: Let the input have the focus ring, and the icon just sits there.
164
+ But the input has no right border.
165
+
166
+ Alternative: Wrap them in a div that handles the border/focus.
167
+
168
+ For now, let's keep it simple:
169
+ Give the icon the same background and make it look integrated.
170
+ */
171
+
172
+ /* Remove old btn styles within input-group */
173
+
174
+ .input-group .btn:hover {
175
+ background-color: var(--input-bg);
176
+ color: #fff;
177
+ }
178
+
179
+ /* Readonly inputs specific style if needed - already handled above but removing duplicate block */
180
+
181
+ /* Network Selector */
182
+ .network-selector {
183
+ background: transparent;
184
+ gap: 10px;
185
+ }
186
+
187
+ .btn-network {
188
+ flex: 1;
189
+ background-color: var(--input-bg);
190
+ color: var(--text-secondary);
191
+ border: 1px solid transparent;
192
+ border-radius: 8px;
193
+ padding: 10px 0;
194
+ font-weight: 500;
195
+ transition: all 0.2s;
196
+ }
197
+
198
+ .btn-network:hover {
199
+ background-color: #333;
200
+ color: var(--text-primary);
201
+ }
202
+
203
+ .btn-network.active {
204
+ background-color: var(--lime-primary);
205
+ color: #000; /* Black text for contrast on lime */
206
+ font-weight: 600;
207
+ }
208
+
209
+ /* Advanced Toggle */
210
+ .advanced-toggle {
211
+ color: var(--lime-primary);
212
+ font-size: 0.9rem;
213
+ display: inline-flex;
214
+ align-items: center;
215
+ gap: 5px;
216
+ i {
217
+ padding-top: 3px;
218
+ }
219
+ }
220
+
221
+ .advanced-toggle:hover {
222
+ color: #e0f878;
223
+ }
224
+
225
+ .customizable-badge {
226
+ background-color: rgba(208, 242, 36, 0.1);
227
+ color: var(--lime-primary);
228
+ border: 1px solid rgba(208, 242, 36, 0.2);
229
+ border-radius: 20px;
230
+ padding: 4px 12px;
231
+ font-size: 0.75rem;
232
+ font-weight: 500;
233
+ letter-spacing: 0.3px;
234
+ }
235
+
236
+ /* Config Sections */
237
+ .config-section h6 {
238
+ color: var(--lime-primary);
239
+ font-size: 0.9rem;
240
+ margin-top: 10px;
241
+ margin-bottom: 15px;
242
+ text-transform: uppercase;
243
+ letter-spacing: 0.5px;
244
+ }
245
+
246
+ /* Save Button */
247
+ .btn-lime {
248
+ background-color: var(--lime-primary);
249
+ color: #000;
250
+ border: none;
251
+ border-radius: 8px;
252
+ font-weight: 600;
253
+ font-size: 1rem;
254
+ padding: 12px;
255
+ transition: transform 0.1s;
256
+ }
257
+
258
+ .btn-lime:hover {
259
+ background-color: #bce600; /* Slightly darker lime */
260
+ color: #000;
261
+ }
262
+
263
+ .btn-lime:active {
264
+ background-color: #bce600;
265
+ color: #000;
266
+ transform: scale(0.98);
267
+ }
268
+
269
+ .btn-lime:focus {
270
+ background-color: #bce600;
271
+ color: #000;
272
+ box-shadow: 0 0 0 0.25rem rgba(208, 242, 36, 0.4);
273
+ }
274
+
275
+ .btn-lime:disabled,
276
+ .btn-lime[disabled] {
277
+ background-color: var(--lime-primary);
278
+ opacity: 0.7;
279
+ color: #000;
280
+ cursor: not-allowed;
281
+ }
282
+
283
+ /* Utilities */
284
+ .text-lime {
285
+ color: var(--lime-primary) !important;
286
+ }
287
+
288
+ /* Modal Overrides (Bootstrap) */
289
+ .modal-content {
290
+ background-color: var(--card-bg);
291
+ border: 1px solid var(--border-color);
292
+ color: var(--text-primary);
293
+ }
294
+
295
+ .modal-header {
296
+ border-bottom: 1px solid var(--border-color);
297
+ }
298
+
299
+ .modal-footer {
300
+ border-top: 1px solid var(--border-color);
301
+ }
302
+
303
+ .btn-close {
304
+ filter: invert(1);
305
+ }
306
+
307
+ /* Custom Scrollbar */
308
+ ::-webkit-scrollbar {
309
+ width: 8px;
310
+ }
311
+
312
+ ::-webkit-scrollbar-track {
313
+ background: var(--bg-dark);
314
+ }
315
+
316
+ ::-webkit-scrollbar-thumb {
317
+ background: #333;
318
+ border-radius: 4px;
319
+ }
320
+
321
+ ::-webkit-scrollbar-thumb:hover {
322
+ background: #444;
323
+ }
324
+
325
+ /* Loading Spinner */
326
+ @keyframes spin {
327
+ to {
328
+ transform: rotate(360deg);
329
+ }
330
+ }
331
+
332
+ .loading {
333
+ display: inline-block;
334
+ width: 1.5rem;
335
+ height: 1.5rem;
336
+ vertical-align: text-bottom;
337
+ border: 3px solid rgba(255, 255, 255, 0.1);
338
+ border-radius: 50%;
339
+ border-top-color: var(--lime-primary);
340
+ animation: spin 1s linear infinite;
341
+ margin-right: 0.5rem;
342
+ }
343
+
344
+ /* Adjust loading spinner inside buttons */
345
+ .btn .loading {
346
+ width: 1rem;
347
+ height: 1rem;
348
+ border-width: 2px;
349
+ }
350
+
351
+ /* Specific adjustment for Lime button (black text) */
352
+ .btn-lime .loading {
353
+ border-color: rgba(0, 0, 0, 0.1);
354
+ border-top-color: #000;
355
+ }
356
+
357
+ /* Main Loading Container (Vertically Centered) */
358
+ .loading-container {
359
+ display: flex;
360
+ flex-direction: column;
361
+ justify-content: center;
362
+ align-items: center;
363
+ min-height: 60vh;
364
+ width: 100%;
365
+ color: var(--text-secondary);
366
+ }
367
+
368
+ .loading-container .loading {
369
+ margin-right: 0;
370
+ margin-bottom: 1rem;
371
+ width: 2.5rem;
372
+ height: 2.5rem;
373
+ border-width: 4px;
374
+ }
375
+
376
+ /* Welcome Page Styles */
377
+ .welcome-container {
378
+ max-width: 600px;
379
+ margin: 0 auto;
380
+ /* padding: 2rem 0; */
381
+ text-align: left;
382
+ }
383
+
384
+ .welcome-title {
385
+ font-size: 2.4rem;
386
+ font-weight: 700;
387
+ color: #fff;
388
+ margin-bottom: 0.5rem;
389
+ }
390
+
391
+ .welcome-subtitle {
392
+ font-size: 1.2rem;
393
+ color: var(--text-secondary);
394
+ margin-bottom: 1.2rem;
395
+ }
396
+
397
+ .status-card {
398
+ background-color: #1e1e1e;
399
+ border-radius: 16px;
400
+ padding: 24px;
401
+ margin-bottom: 24px;
402
+ border: 1px solid rgba(255, 255, 255, 0.05);
403
+ }
404
+
405
+ .card-label {
406
+ display: block;
407
+ font-size: 0.9rem;
408
+ color: var(--text-secondary);
409
+ margin-bottom: 8px;
410
+ }
411
+
412
+ .card-label i {
413
+ margin-left: 4px;
414
+ font-size: 0.8rem;
415
+ cursor: help;
416
+ }
417
+
418
+ .read-only-input-group {
419
+ position: relative;
420
+ margin-bottom: 20px;
421
+ }
422
+
423
+ .read-only-input {
424
+ width: 100%;
425
+ background-color: #2a2a2a;
426
+ border: 1px solid #333;
427
+ border-radius: 8px;
428
+ padding: 12px 40px 12px 16px;
429
+ color: var(--text-primary);
430
+ font-family: monospace;
431
+ font-size: 0.95rem;
432
+ white-space: nowrap;
433
+ overflow: hidden;
434
+ text-overflow: ellipsis;
435
+ }
436
+
437
+ .copy-icon-btn {
438
+ position: absolute;
439
+ right: 12px;
440
+ top: 50%;
441
+ transform: translateY(-50%);
442
+ color: var(--lime-primary);
443
+ cursor: pointer;
444
+ background: none;
445
+ border: none;
446
+ padding: 4px;
447
+ }
448
+
449
+ .copy-icon-btn:hover {
450
+ color: #fff;
451
+ }
452
+
453
+ .service-status-section {
454
+ margin-bottom: 20px;
455
+ }
456
+
457
+ .status-grid {
458
+ display: flex;
459
+ gap: 16px;
460
+ }
461
+
462
+ .status-box {
463
+ flex: 1;
464
+ background-color: #2a2a2a;
465
+ border-radius: 8px;
466
+ padding: 12px 16px;
467
+ display: flex;
468
+ align-items: center;
469
+ justify-content: space-between;
470
+ }
471
+
472
+ .status-name {
473
+ display: flex;
474
+ align-items: center;
475
+ font-weight: 600;
476
+ color: #fff;
477
+ }
478
+
479
+ .status-dot {
480
+ width: 8px;
481
+ height: 8px;
482
+ border-radius: 50%;
483
+ margin-right: 8px;
484
+ }
485
+
486
+ .status-dot.running {
487
+ background-color: var(--lime-primary);
488
+ }
489
+
490
+ .status-dot.stopped {
491
+ background-color: var(--text-secondary);
492
+ }
493
+
494
+ .status-value {
495
+ font-size: 0.9rem;
496
+ }
497
+
498
+ .status-value.running {
499
+ color: var(--lime-primary);
500
+ }
501
+
502
+ .status-value.stopped {
503
+ color: var(--text-secondary);
504
+ }
505
+
506
+ .card-footer-row {
507
+ display: flex;
508
+ align-items: center;
509
+ margin-top: 24px;
510
+ gap: 12px;
511
+ }
512
+
513
+ .regtest-badge {
514
+ display: inline-block;
515
+ padding: 6px 16px;
516
+ border: 1px solid var(--lime-primary);
517
+ color: var(--lime-primary);
518
+ border-radius: 20px;
519
+ font-size: 0.9rem;
520
+ font-weight: 500;
521
+ }
522
+
523
+ .settings-icon-btn {
524
+ background: none;
525
+ border: none;
526
+ color: var(--text-secondary);
527
+ font-size: 1.2rem;
528
+ cursor: pointer;
529
+ padding: 4px;
530
+ transition: color 0.2s;
531
+ }
532
+
533
+ .settings-icon-btn:hover {
534
+ color: #fff;
535
+ /* animation: spin 2s linear infinite; */
536
+ }
537
+
538
+ .manage-btn {
539
+ width: 100%;
540
+ background-color: var(--lime-primary);
541
+ color: #000;
542
+ font-weight: 700;
543
+ padding: 16px;
544
+ border-radius: 12px;
545
+ border: none;
546
+ font-size: 1.1rem;
547
+ display: flex;
548
+ justify-content: center;
549
+ align-items: center;
550
+ cursor: pointer;
551
+ transition: opacity 0.2s;
552
+ }
553
+
554
+ .manage-btn:hover {
555
+ opacity: 0.9;
556
+ }
557
+
558
+ .manage-btn i {
559
+ margin-left: 8px;
560
+ }
561
+
562
+ /* Settings Modal Styles */
563
+ .settings-modal-overlay {
564
+ position: fixed;
565
+ top: 0;
566
+ left: 0;
567
+ width: 100%;
568
+ height: 100%;
569
+ background-color: rgba(0, 0, 0, 0.8);
570
+ z-index: 2000;
571
+ display: flex;
572
+ align-items: center;
573
+ justify-content: center;
574
+ backdrop-filter: blur(4px);
575
+ }
576
+
577
+ .settings-modal {
578
+ background-color: #1a1a1a;
579
+ width: 90%;
580
+ max-width: 800px;
581
+ max-height: 90vh;
582
+ border-radius: 12px;
583
+ display: flex;
584
+ flex-direction: column;
585
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
586
+ border: 1px solid rgba(255, 255, 255, 0.1);
587
+ }
588
+
589
+ .settings-header {
590
+ padding: 20px 24px;
591
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
592
+ display: flex;
593
+ justify-content: space-between;
594
+ align-items: center;
595
+ }
596
+
597
+ .settings-header h3 {
598
+ margin: 0;
599
+ font-size: 1.25rem;
600
+ font-weight: 600;
601
+ color: #fff;
602
+ }
603
+
604
+ .close-modal-btn {
605
+ background: none;
606
+ border: none;
607
+ color: var(--text-secondary);
608
+ font-size: 1.2rem;
609
+ cursor: pointer;
610
+ }
611
+
612
+ .close-modal-btn:hover {
613
+ color: #fff;
614
+ }
615
+
616
+ .settings-content {
617
+ padding: 24px;
618
+ overflow-y: auto;
619
+ }
620
+
621
+ .settings-section-title {
622
+ color: var(--lime-primary);
623
+ font-size: 0.9rem;
624
+ font-weight: 600;
625
+ margin-bottom: 16px;
626
+ margin-top: 24px;
627
+ }
628
+
629
+ .settings-section-title:first-child {
630
+ margin-top: 0;
631
+ }
632
+
633
+ .settings-grid {
634
+ display: grid;
635
+ grid-template-columns: 1fr 1fr;
636
+ gap: 16px;
637
+ }
638
+
639
+ .settings-field {
640
+ margin-bottom: 6px;
641
+ }
642
+
643
+ .settings-field label {
644
+ display: block;
645
+ font-size: 0.85rem;
646
+ color: var(--text-secondary);
647
+ margin-bottom: 8px;
648
+ }
649
+
650
+ .settings-input-group {
651
+ position: relative;
652
+ }
653
+
654
+ .settings-input {
655
+ width: 100%;
656
+ background-color: #2a2a2a;
657
+ border: none;
658
+ border-radius: 6px;
659
+ padding: 10px 12px;
660
+ color: #fff;
661
+ font-size: 0.95rem;
662
+ font-family: inherit;
663
+ }
664
+
665
+ .settings-input:focus {
666
+ outline: 1px solid var(--lime-primary);
667
+ }
668
+
669
+ .full-width {
670
+ grid-column: 1 / -1;
671
+ }
672
+
673
+ .password-toggle-icon {
674
+ position: absolute;
675
+ right: 12px;
676
+ top: 50%;
677
+ transform: translateY(-50%);
678
+ color: var(--text-secondary);
679
+ cursor: pointer;
680
+ font-size: 0.9rem;
681
+ }
682
+
683
+ /* Responsive */
684
+ @media (max-width: 768px) {
685
+ .status-grid {
686
+ flex-direction: column;
687
+ }
688
+
689
+ .settings-grid {
690
+ grid-template-columns: 1fr;
691
+ }
692
+
693
+ .welcome-title {
694
+ font-size: 2rem;
695
+ }
696
+
697
+ .root {
698
+ padding: 20px;
699
+ margin: 0;
700
+ }
701
+
702
+ .info-section {
703
+ padding: 20px;
704
+ }
705
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920" zoomAndPan="magnify" viewBox="0 0 1440 809.999993" height="1080" preserveAspectRatio="xMidYMid meet" version="1.0"><defs><g/><clipPath id="0f1d9a6e00"><path d="M 58.894531 335.554688 L 577.53125 335.554688 L 577.53125 474.4375 L 58.894531 474.4375 Z M 58.894531 335.554688 " clip-rule="nonzero"/></clipPath><clipPath id="12cc2c049d"><path d="M 577.386719 335.554688 L 577.386719 439.730469 C 534.175781 439.730469 534.175781 474.4375 490.96875 474.4375 C 447.75 474.4375 447.75 439.730469 404.542969 439.730469 C 361.332031 439.730469 361.332031 474.4375 318.125 474.4375 C 274.917969 474.4375 274.917969 439.730469 231.710938 439.730469 C 188.503906 439.730469 188.503906 474.4375 145.308594 474.4375 C 102.101562 474.4375 102.101562 439.730469 58.894531 439.730469 L 58.894531 335.554688 C 102.101562 335.554688 102.101562 370.261719 145.308594 370.261719 C 188.503906 370.261719 188.503906 335.554688 231.710938 335.554688 C 274.917969 335.554688 274.917969 370.261719 318.125 370.261719 C 361.332031 370.261719 361.332031 335.554688 404.542969 335.554688 C 447.75 335.554688 447.75 370.261719 490.96875 370.261719 C 534.175781 370.261719 534.175781 335.554688 577.386719 335.554688 Z M 577.386719 335.554688 " clip-rule="nonzero"/></clipPath><clipPath id="78e0a9ea58"><path d="M 0.894531 0.554688 L 519.441406 0.554688 L 519.441406 139.4375 L 0.894531 139.4375 Z M 0.894531 0.554688 " clip-rule="nonzero"/></clipPath><clipPath id="cb29bb9258"><path d="M 519.386719 0.554688 L 519.386719 104.730469 C 476.175781 104.730469 476.175781 139.4375 432.96875 139.4375 C 389.75 139.4375 389.75 104.730469 346.542969 104.730469 C 303.332031 104.730469 303.332031 139.4375 260.125 139.4375 C 216.917969 139.4375 216.917969 104.730469 173.710938 104.730469 C 130.503906 104.730469 130.503906 139.4375 87.308594 139.4375 C 44.101562 139.4375 44.101562 104.730469 0.894531 104.730469 L 0.894531 0.554688 C 44.101562 0.554688 44.101562 35.261719 87.308594 35.261719 C 130.503906 35.261719 130.503906 0.554688 173.710938 0.554688 C 216.917969 0.554688 216.917969 35.261719 260.125 35.261719 C 303.332031 35.261719 303.332031 0.554688 346.542969 0.554688 C 389.75 0.554688 389.75 35.261719 432.96875 35.261719 C 476.175781 35.261719 476.175781 0.554688 519.386719 0.554688 Z M 519.386719 0.554688 " clip-rule="nonzero"/></clipPath><clipPath id="dbc9c8f09d"><rect x="0" width="520" y="0" height="140"/></clipPath><clipPath id="7be31f8561"><rect x="0" width="757" y="0" height="156"/></clipPath></defs><g clip-path="url(#0f1d9a6e00)"><g clip-path="url(#12cc2c049d)"><g transform="matrix(1, 0, 0, 1, 58, 335)"><g clip-path="url(#dbc9c8f09d)"><g clip-path="url(#78e0a9ea58)"><g clip-path="url(#cb29bb9258)"><path fill="#cefb34" d="M 0.894531 0.554688 L 519.53125 0.554688 L 519.53125 139.4375 L 0.894531 139.4375 Z M 0.894531 0.554688 " fill-opacity="1" fill-rule="nonzero"/></g></g></g></g></g></g><g transform="matrix(1, 0, 0, 1, 621, 325)"><g clip-path="url(#7be31f8561)"><g fill="#cefb34" fill-opacity="1"><g transform="translate(1.495876, 117.610171)"><g><path d="M 11.5 -112.40625 L 32.59375 -112.40625 L 78.875 -38.734375 L 78.875 -112.40625 L 101.703125 -112.40625 L 101.703125 0 L 80.765625 0 L 34.328125 -73.046875 L 34.328125 0 L 11.5 0 Z M 11.5 -112.40625 "/></g></g></g><g fill="#cefb34" fill-opacity="1"><g transform="translate(114.653883, 117.610171)"><g><path d="M 48.484375 2.515625 C 35.265625 2.515625 25.03125 -1.257812 17.78125 -8.8125 C 10.539062 -16.375 6.921875 -27.1875 6.921875 -41.25 C 6.921875 -47.96875 7.890625 -54.03125 9.828125 -59.4375 C 11.773438 -64.84375 14.554688 -69.40625 18.171875 -73.125 C 21.796875 -76.851562 26.179688 -79.710938 31.328125 -81.703125 C 36.472656 -83.703125 42.191406 -84.703125 48.484375 -84.703125 C 54.890625 -84.703125 60.660156 -83.703125 65.796875 -81.703125 C 70.941406 -79.710938 75.328125 -76.851562 78.953125 -73.125 C 82.578125 -69.40625 85.332031 -64.84375 87.21875 -59.4375 C 89.101562 -54.03125 90.046875 -47.96875 90.046875 -41.25 C 90.046875 -34.425781 89.078125 -28.3125 87.140625 -22.90625 C 85.203125 -17.5 82.421875 -12.90625 78.796875 -9.125 C 75.171875 -5.351562 70.785156 -2.46875 65.640625 -0.46875 C 60.503906 1.519531 54.785156 2.515625 48.484375 2.515625 Z M 48.484375 -15.109375 C 54.785156 -15.109375 59.484375 -17.363281 62.578125 -21.875 C 65.671875 -26.394531 67.21875 -32.851562 67.21875 -41.25 C 67.21875 -49.644531 65.671875 -56.046875 62.578125 -60.453125 C 59.484375 -64.859375 54.785156 -67.0625 48.484375 -67.0625 C 42.191406 -67.0625 37.492188 -64.859375 34.390625 -60.453125 C 31.296875 -56.046875 29.75 -49.644531 29.75 -41.25 C 29.75 -32.75 31.269531 -26.265625 34.3125 -21.796875 C 37.363281 -17.335938 42.085938 -15.109375 48.484375 -15.109375 Z M 48.484375 -15.109375 "/></g></g></g><g fill="#cefb34" fill-opacity="1"><g transform="translate(211.601491, 117.610171)"><g><path d="M 66.75 -10.859375 C 60.457031 -1.941406 51.957031 2.515625 41.25 2.515625 C 29.707031 2.515625 21.097656 -1.363281 15.421875 -9.125 C 9.753906 -16.894531 6.921875 -27.65625 6.921875 -41.40625 C 6.921875 -47.8125 7.734375 -53.660156 9.359375 -58.953125 C 10.992188 -64.253906 13.332031 -68.820312 16.375 -72.65625 C 19.414062 -76.488281 23.140625 -79.453125 27.546875 -81.546875 C 31.953125 -83.648438 36.941406 -84.703125 42.515625 -84.703125 C 46.597656 -84.703125 50.660156 -83.96875 54.703125 -82.5 C 58.742188 -81.03125 62.550781 -78.195312 66.125 -74 L 66.125 -112.40625 L 88.171875 -112.40625 L 88.171875 0 L 66.75 0 Z M 66.28125 -42.03125 C 66.28125 -47.28125 65.832031 -51.476562 64.9375 -54.625 C 64.050781 -57.78125 62.609375 -60.351562 60.609375 -62.34375 C 58.722656 -64.226562 56.648438 -65.457031 54.390625 -66.03125 C 52.140625 -66.613281 49.910156 -66.90625 47.703125 -66.90625 C 45.285156 -66.90625 43 -66.429688 40.84375 -65.484375 C 38.695312 -64.546875 36.8125 -63.078125 35.1875 -61.078125 C 33.5625 -59.085938 32.273438 -56.460938 31.328125 -53.203125 C 30.378906 -49.953125 29.90625 -46.070312 29.90625 -41.5625 C 29.90625 -36.625 30.351562 -32.503906 31.25 -29.203125 C 32.144531 -25.898438 33.378906 -23.222656 34.953125 -21.171875 C 36.523438 -19.128906 38.359375 -17.660156 40.453125 -16.765625 C 42.554688 -15.867188 44.816406 -15.421875 47.234375 -15.421875 C 52.484375 -15.421875 56.785156 -16.945312 60.140625 -20 C 62.242188 -22.09375 63.789062 -24.632812 64.78125 -27.625 C 65.78125 -30.625 66.28125 -34.484375 66.28125 -39.203125 Z M 66.28125 -42.03125 "/></g></g></g><g fill="#cefb34" fill-opacity="1"><g transform="translate(309.493391, 117.610171)"><g><path d="M 85.015625 -25.65625 C 83.546875 -16.425781 79.84375 -9.421875 73.90625 -4.640625 C 67.976562 0.128906 59.347656 2.515625 48.015625 2.515625 C 34.367188 2.515625 24.109375 -1.257812 17.234375 -8.8125 C 10.359375 -16.375 6.921875 -27.082031 6.921875 -40.9375 C 6.921875 -47.863281 7.914062 -54.03125 9.90625 -59.4375 C 11.90625 -64.84375 14.710938 -69.429688 18.328125 -73.203125 C 21.953125 -76.984375 26.285156 -79.84375 31.328125 -81.78125 C 36.367188 -83.726562 41.929688 -84.703125 48.015625 -84.703125 C 60.609375 -84.703125 70.078125 -81.078125 76.421875 -73.828125 C 82.773438 -66.585938 85.953125 -56.832031 85.953125 -44.5625 L 85.953125 -35.734375 L 28.96875 -35.734375 C 29.175781 -29.117188 30.851562 -23.945312 34 -20.21875 C 37.15625 -16.5 41.878906 -14.640625 48.171875 -14.640625 C 56.890625 -14.640625 62.035156 -18.3125 63.609375 -25.65625 Z M 64.703125 -50.21875 C 64.703125 -55.882812 63.3125 -60.289062 60.53125 -63.4375 C 57.75 -66.59375 53.421875 -68.171875 47.546875 -68.171875 C 44.609375 -68.171875 42.035156 -67.695312 39.828125 -66.75 C 37.628906 -65.8125 35.765625 -64.523438 34.234375 -62.890625 C 32.710938 -61.265625 31.53125 -59.375 30.6875 -57.21875 C 29.851562 -55.070312 29.382812 -52.738281 29.28125 -50.21875 Z M 64.703125 -50.21875 "/></g></g></g><g fill="#cefb34" fill-opacity="1"><g transform="translate(402.191657, 117.610171)"><g><path d="M 11.5 -112.40625 L 85.328125 -112.40625 L 85.328125 -92.265625 L 34.953125 -92.265625 L 34.953125 -65.8125 L 82.34375 -65.8125 L 82.34375 -45.65625 L 34.953125 -45.65625 L 34.953125 0 L 11.5 0 Z M 11.5 -112.40625 "/></g></g></g><g fill="#cefb34" fill-opacity="1"><g transform="translate(494.103026, 117.610171)"><g><path d="M 9.921875 -112.40625 L 31.953125 -112.40625 L 31.953125 0 L 9.921875 0 Z M 9.921875 -112.40625 "/></g></g></g><g fill="#cefb34" fill-opacity="1"><g transform="translate(535.966731, 117.610171)"><g><path d="M 48.484375 2.515625 C 35.265625 2.515625 25.03125 -1.257812 17.78125 -8.8125 C 10.539062 -16.375 6.921875 -27.1875 6.921875 -41.25 C 6.921875 -47.96875 7.890625 -54.03125 9.828125 -59.4375 C 11.773438 -64.84375 14.554688 -69.40625 18.171875 -73.125 C 21.796875 -76.851562 26.179688 -79.710938 31.328125 -81.703125 C 36.472656 -83.703125 42.191406 -84.703125 48.484375 -84.703125 C 54.890625 -84.703125 60.660156 -83.703125 65.796875 -81.703125 C 70.941406 -79.710938 75.328125 -76.851562 78.953125 -73.125 C 82.578125 -69.40625 85.332031 -64.84375 87.21875 -59.4375 C 89.101562 -54.03125 90.046875 -47.96875 90.046875 -41.25 C 90.046875 -34.425781 89.078125 -28.3125 87.140625 -22.90625 C 85.203125 -17.5 82.421875 -12.90625 78.796875 -9.125 C 75.171875 -5.351562 70.785156 -2.46875 65.640625 -0.46875 C 60.503906 1.519531 54.785156 2.515625 48.484375 2.515625 Z M 48.484375 -15.109375 C 54.785156 -15.109375 59.484375 -17.363281 62.578125 -21.875 C 65.671875 -26.394531 67.21875 -32.851562 67.21875 -41.25 C 67.21875 -49.644531 65.671875 -56.046875 62.578125 -60.453125 C 59.484375 -64.859375 54.785156 -67.0625 48.484375 -67.0625 C 42.191406 -67.0625 37.492188 -64.859375 34.390625 -60.453125 C 31.296875 -56.046875 29.75 -49.644531 29.75 -41.25 C 29.75 -32.75 31.269531 -26.265625 34.3125 -21.796875 C 37.363281 -17.335938 42.085938 -15.109375 48.484375 -15.109375 Z M 48.484375 -15.109375 "/></g></g></g><g fill="#cefb34" fill-opacity="1"><g transform="translate(632.91434, 117.610171)"><g><path d="M 0.9375 -82.1875 L 24.875 -82.1875 L 36.375 -27.703125 L 52.109375 -81.546875 L 71.3125 -81.546875 L 86.28125 -27.703125 L 97.765625 -82.1875 L 120.75 -82.1875 L 96.828125 0 L 75.40625 0 L 60.765625 -54.15625 L 45.96875 0 L 24.875 0 Z M 0.9375 -82.1875 "/></g></g></g></g></g></svg>