lobstakit-cloud 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,579 @@
1
+ /* LobstaKit Custom Styles — Lobsta Brand Palette */
2
+
3
+ /* Card Component */
4
+ .card {
5
+ background-color: #171717;
6
+ border: 1px solid #262626;
7
+ border-radius: 0.75rem;
8
+ padding: 1.5rem;
9
+ }
10
+
11
+ /* Button Components */
12
+ .btn {
13
+ padding: 0.5rem 1rem;
14
+ border-radius: 0.5rem;
15
+ font-weight: 500;
16
+ transition: all 0.2s;
17
+ display: inline-flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ cursor: pointer;
21
+ border: none;
22
+ font-size: 0.875rem;
23
+ }
24
+ .btn:disabled {
25
+ opacity: 0.5;
26
+ cursor: not-allowed;
27
+ }
28
+ .btn:focus {
29
+ outline: none;
30
+ box-shadow: 0 0 0 2px #0A0A0A, 0 0 0 4px #DC2626;
31
+ }
32
+
33
+ .btn-primary {
34
+ background-color: #DC2626;
35
+ color: #fff;
36
+ }
37
+ .btn-primary:hover:not(:disabled) {
38
+ background-color: #991B1B;
39
+ }
40
+
41
+ .btn-secondary {
42
+ background-color: #262626;
43
+ color: #fff;
44
+ }
45
+ .btn-secondary:hover:not(:disabled) {
46
+ background-color: #404040;
47
+ }
48
+
49
+ .btn-success {
50
+ background-color: #22c55e;
51
+ color: #fff;
52
+ }
53
+ .btn-success:hover:not(:disabled) {
54
+ background-color: #16a34a;
55
+ }
56
+
57
+ .btn-warning {
58
+ background-color: #f59e0b;
59
+ color: #fff;
60
+ }
61
+ .btn-warning:hover:not(:disabled) {
62
+ background-color: #d97706;
63
+ }
64
+
65
+ .btn-danger {
66
+ background-color: #ef4444;
67
+ color: #fff;
68
+ }
69
+ .btn-danger:hover:not(:disabled) {
70
+ background-color: #dc2626;
71
+ }
72
+
73
+ .btn-sm {
74
+ padding: 0.25rem 0.75rem;
75
+ font-size: 0.875rem;
76
+ }
77
+
78
+ /* Input Components */
79
+ .input {
80
+ background-color: #0A0A0A;
81
+ border: 1px solid #262626;
82
+ border-radius: 0.5rem;
83
+ padding: 0.5rem 1rem;
84
+ color: #fff;
85
+ transition: all 0.2s;
86
+ }
87
+ .input::placeholder {
88
+ color: #737373;
89
+ }
90
+ .input:focus {
91
+ outline: none;
92
+ box-shadow: 0 0 0 2px #DC2626;
93
+ border-color: transparent;
94
+ }
95
+
96
+ /* Select styling */
97
+ select.input {
98
+ appearance: none;
99
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='%23737373'%3E%3Cpath d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
100
+ background-repeat: no-repeat;
101
+ background-position: right 12px center;
102
+ padding-right: 36px;
103
+ cursor: pointer;
104
+ }
105
+ select.input option {
106
+ background: #171717;
107
+ color: #fff;
108
+ }
109
+
110
+ /* Step Indicator */
111
+ .step-indicator {
112
+ display: flex;
113
+ align-items: center;
114
+ gap: 0.5rem;
115
+ padding: 0.5rem 0.75rem;
116
+ border-radius: 0.5rem;
117
+ background-color: #171717;
118
+ border: 1px solid #262626;
119
+ transition: all 0.2s;
120
+ cursor: pointer;
121
+ color: #e5e7eb;
122
+ white-space: nowrap;
123
+ }
124
+
125
+ .step-indicator.active {
126
+ background-color: rgba(220, 38, 38, 0.15);
127
+ border-color: #DC2626;
128
+ color: #EF4444;
129
+ }
130
+
131
+ .step-indicator.completed {
132
+ background-color: rgba(34, 197, 94, 0.15);
133
+ border-color: #22c55e;
134
+ color: #22c55e;
135
+ }
136
+
137
+ .step-indicator .step-number {
138
+ width: 1.5rem;
139
+ height: 1.5rem;
140
+ border-radius: 9999px;
141
+ background-color: #262626;
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: center;
145
+ font-size: 0.875rem;
146
+ font-weight: 700;
147
+ }
148
+
149
+ .step-indicator.active .step-number {
150
+ background-color: #DC2626;
151
+ color: #fff;
152
+ }
153
+
154
+ .step-indicator.completed .step-number {
155
+ background-color: #22c55e;
156
+ color: #fff;
157
+ }
158
+
159
+ /* Step line active state */
160
+ .step-line.active {
161
+ background-color: #DC2626;
162
+ }
163
+
164
+ /* Status Badge */
165
+ .status-badge {
166
+ font-weight: 500;
167
+ }
168
+
169
+ /* Toast Animations */
170
+ @keyframes slideIn {
171
+ from { transform: translateX(100%); opacity: 0; }
172
+ to { transform: translateX(0); opacity: 1; }
173
+ }
174
+ @keyframes slideOut {
175
+ from { transform: translateX(0); opacity: 1; }
176
+ to { transform: translateX(100%); opacity: 0; }
177
+ }
178
+ .toast {
179
+ animation: slideIn 0.3s ease-out;
180
+ }
181
+ .toast.hiding {
182
+ animation: slideOut 0.3s ease-in forwards;
183
+ }
184
+
185
+ /* Step content fade animation */
186
+ @keyframes fadeIn {
187
+ from { opacity: 0; transform: translateY(8px); }
188
+ to { opacity: 1; transform: translateY(0); }
189
+ }
190
+ .step-content:not(.hidden) {
191
+ animation: fadeIn 0.3s ease-out;
192
+ }
193
+
194
+ /* Scrollbar Styling */
195
+ ::-webkit-scrollbar {
196
+ width: 8px;
197
+ height: 8px;
198
+ }
199
+ ::-webkit-scrollbar-track {
200
+ background: rgba(255, 255, 255, 0.05);
201
+ border-radius: 4px;
202
+ }
203
+ ::-webkit-scrollbar-thumb {
204
+ background: rgba(255, 255, 255, 0.2);
205
+ border-radius: 4px;
206
+ }
207
+ ::-webkit-scrollbar-thumb:hover {
208
+ background: rgba(255, 255, 255, 0.3);
209
+ }
210
+
211
+ /* Loading Spinner */
212
+ .spinner {
213
+ border: 2px solid rgba(255, 255, 255, 0.1);
214
+ border-top-color: currentColor;
215
+ border-radius: 50%;
216
+ width: 1em;
217
+ height: 1em;
218
+ animation: spin 0.8s linear infinite;
219
+ }
220
+ @keyframes spin {
221
+ to { transform: rotate(360deg); }
222
+ }
223
+
224
+ /* Pulse animation for status dots */
225
+ @keyframes pulse {
226
+ 0%, 100% { opacity: 1; }
227
+ 50% { opacity: 0.5; }
228
+ }
229
+ .animate-pulse {
230
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
231
+ }
232
+
233
+ /* Key Type Segmented Toggle */
234
+ .key-type-toggle {
235
+ display: grid;
236
+ grid-template-columns: 1fr 1fr;
237
+ gap: 0.5rem;
238
+ }
239
+
240
+ .key-type-option {
241
+ display: flex;
242
+ flex-direction: column;
243
+ align-items: center;
244
+ gap: 0.125rem;
245
+ padding: 0.625rem 0.75rem;
246
+ border-radius: 0.5rem;
247
+ border: 1px solid #262626;
248
+ background-color: #0A0A0A;
249
+ cursor: pointer;
250
+ transition: all 0.2s;
251
+ text-align: center;
252
+ }
253
+
254
+ .key-type-option:hover {
255
+ border-color: #404040;
256
+ background-color: #1a1a1a;
257
+ }
258
+
259
+ .key-type-option.selected {
260
+ border-color: #DC2626;
261
+ background-color: rgba(220, 38, 38, 0.1);
262
+ }
263
+
264
+ .key-type-option .key-type-title {
265
+ font-size: 0.8125rem;
266
+ font-weight: 600;
267
+ color: #e5e7eb;
268
+ }
269
+
270
+ .key-type-option.selected .key-type-title {
271
+ color: #fff;
272
+ }
273
+
274
+ .key-type-option .key-type-desc {
275
+ font-size: 0.6875rem;
276
+ color: #737373;
277
+ }
278
+
279
+ .key-type-option.selected .key-type-desc {
280
+ color: #EF4444;
281
+ }
282
+
283
+ .key-type-instructions {
284
+ margin-top: 0.75rem;
285
+ padding: 0.75rem;
286
+ background-color: #0A0A0A;
287
+ border: 1px solid #262626;
288
+ border-radius: 0.5rem;
289
+ }
290
+
291
+ /* Channel Cards Grid */
292
+ .channel-grid {
293
+ display: grid;
294
+ grid-template-columns: repeat(3, 1fr);
295
+ gap: 0.75rem;
296
+ }
297
+
298
+ @media (max-width: 768px) {
299
+ .channel-grid {
300
+ grid-template-columns: 1fr;
301
+ }
302
+ }
303
+
304
+ @media (min-width: 769px) and (max-width: 1024px) {
305
+ .channel-grid {
306
+ grid-template-columns: repeat(2, 1fr);
307
+ }
308
+ }
309
+
310
+ .channel-card {
311
+ display: flex;
312
+ flex-direction: column;
313
+ align-items: center;
314
+ text-align: center;
315
+ gap: 0.5rem;
316
+ padding: 1rem 0.75rem;
317
+ border-radius: 0.75rem;
318
+ border: 1px solid #262626;
319
+ background-color: #171717;
320
+ cursor: pointer;
321
+ transition: all 0.2s;
322
+ }
323
+
324
+ .channel-card:hover:not(.disabled) {
325
+ border-color: #404040;
326
+ background-color: #1a1a1a;
327
+ }
328
+
329
+ .channel-card.selected {
330
+ border-color: #DC2626;
331
+ background-color: rgba(220, 38, 38, 0.1);
332
+ }
333
+
334
+ .channel-card.disabled {
335
+ opacity: 0.4;
336
+ cursor: not-allowed;
337
+ pointer-events: none;
338
+ }
339
+
340
+ .channel-card-icon {
341
+ font-size: 1.75rem;
342
+ line-height: 1;
343
+ }
344
+
345
+ .channel-card-content {
346
+ display: flex;
347
+ flex-direction: column;
348
+ gap: 0.25rem;
349
+ }
350
+
351
+ .channel-card-title {
352
+ font-size: 0.875rem;
353
+ font-weight: 600;
354
+ color: #e5e7eb;
355
+ }
356
+
357
+ .channel-card.selected .channel-card-title {
358
+ color: #fff;
359
+ }
360
+
361
+ .channel-card-desc {
362
+ font-size: 0.75rem;
363
+ color: #737373;
364
+ line-height: 1.3;
365
+ }
366
+
367
+ .channel-card.selected .channel-card-desc {
368
+ color: #a3a3a3;
369
+ }
370
+
371
+ .channel-card-sub {
372
+ font-size: 0.6875rem;
373
+ color: #525252;
374
+ line-height: 1.3;
375
+ }
376
+
377
+ .channel-badge-recommended {
378
+ display: inline-block;
379
+ font-size: 0.625rem;
380
+ font-weight: 500;
381
+ color: #22c55e;
382
+ background-color: rgba(34, 197, 94, 0.15);
383
+ padding: 0.125rem 0.375rem;
384
+ border-radius: 9999px;
385
+ vertical-align: middle;
386
+ margin-left: 0.25rem;
387
+ }
388
+
389
+ .channel-badge-soon {
390
+ display: inline-block;
391
+ font-size: 0.625rem;
392
+ font-weight: 500;
393
+ color: #737373;
394
+ background-color: rgba(115, 115, 115, 0.15);
395
+ padding: 0.125rem 0.375rem;
396
+ border-radius: 9999px;
397
+ vertical-align: middle;
398
+ margin-left: 0.25rem;
399
+ }
400
+
401
+ /* Dashboard Channel Cards */
402
+ .channel-row {
403
+ display: flex;
404
+ align-items: center;
405
+ justify-content: space-between;
406
+ padding: 0.75rem 1rem;
407
+ background-color: #0A0A0A;
408
+ border: 1px solid #262626;
409
+ border-radius: 0.5rem;
410
+ gap: 0.75rem;
411
+ }
412
+
413
+ .channel-row-info {
414
+ display: flex;
415
+ align-items: center;
416
+ gap: 0.75rem;
417
+ flex: 1;
418
+ min-width: 0;
419
+ }
420
+
421
+ .channel-row-icon {
422
+ font-size: 1.25rem;
423
+ flex-shrink: 0;
424
+ }
425
+
426
+ .channel-row-name {
427
+ font-size: 0.875rem;
428
+ font-weight: 500;
429
+ color: #e5e7eb;
430
+ }
431
+
432
+ .channel-row-detail {
433
+ font-size: 0.75rem;
434
+ color: #737373;
435
+ }
436
+
437
+ .channel-row-status {
438
+ flex-shrink: 0;
439
+ }
440
+
441
+ .channel-status-badge {
442
+ display: inline-flex;
443
+ align-items: center;
444
+ gap: 0.25rem;
445
+ font-size: 0.75rem;
446
+ font-weight: 500;
447
+ padding: 0.25rem 0.625rem;
448
+ border-radius: 9999px;
449
+ }
450
+
451
+ .channel-status-badge.connected {
452
+ background-color: rgba(34, 197, 94, 0.15);
453
+ color: #22c55e;
454
+ }
455
+
456
+ .channel-status-badge.not-configured {
457
+ background-color: rgba(115, 115, 115, 0.1);
458
+ color: #737373;
459
+ }
460
+
461
+ .channel-row-actions {
462
+ flex-shrink: 0;
463
+ }
464
+
465
+ .channel-inline-form {
466
+ margin-top: 0.75rem;
467
+ padding: 1rem;
468
+ background-color: #0A0A0A;
469
+ border: 1px solid #262626;
470
+ border-radius: 0.5rem;
471
+ }
472
+
473
+ /* Toggle Switch */
474
+ .toggle-switch {
475
+ position: relative;
476
+ width: 2.75rem;
477
+ height: 1.5rem;
478
+ flex-shrink: 0;
479
+ }
480
+
481
+ .toggle-switch input {
482
+ opacity: 0;
483
+ width: 0;
484
+ height: 0;
485
+ }
486
+
487
+ .toggle-slider {
488
+ position: absolute;
489
+ cursor: pointer;
490
+ top: 0;
491
+ left: 0;
492
+ right: 0;
493
+ bottom: 0;
494
+ background-color: #404040;
495
+ border-radius: 9999px;
496
+ transition: all 0.3s;
497
+ }
498
+
499
+ .toggle-slider::before {
500
+ content: '';
501
+ position: absolute;
502
+ height: 1.125rem;
503
+ width: 1.125rem;
504
+ left: 0.1875rem;
505
+ bottom: 0.1875rem;
506
+ background-color: #fff;
507
+ border-radius: 50%;
508
+ transition: all 0.3s;
509
+ }
510
+
511
+ .toggle-switch input:checked + .toggle-slider {
512
+ background-color: #DC2626;
513
+ }
514
+
515
+ .toggle-switch input:checked + .toggle-slider::before {
516
+ transform: translateX(1.25rem);
517
+ }
518
+
519
+ .toggle-switch input:disabled + .toggle-slider {
520
+ opacity: 0.5;
521
+ cursor: not-allowed;
522
+ }
523
+
524
+ /* Download Model Button */
525
+ .btn-download-model {
526
+ padding: 0.375rem 0.875rem;
527
+ border-radius: 0.5rem;
528
+ font-weight: 500;
529
+ font-size: 0.8125rem;
530
+ cursor: pointer;
531
+ border: 1px solid #DC2626;
532
+ background-color: transparent;
533
+ color: #DC2626;
534
+ transition: all 0.2s;
535
+ white-space: nowrap;
536
+ flex-shrink: 0;
537
+ }
538
+ .btn-download-model:hover:not(:disabled) {
539
+ background-color: #DC2626;
540
+ color: #fff;
541
+ }
542
+ .btn-download-model:disabled {
543
+ opacity: 0.5;
544
+ cursor: not-allowed;
545
+ }
546
+
547
+ /* Download Progress Bar */
548
+ .download-progress-bar {
549
+ width: 100%;
550
+ height: 6px;
551
+ background-color: #262626;
552
+ border-radius: 3px;
553
+ overflow: hidden;
554
+ }
555
+ .download-progress-fill {
556
+ height: 100%;
557
+ background-color: #DC2626;
558
+ border-radius: 3px;
559
+ transition: width 0.3s ease;
560
+ }
561
+
562
+ /* Card header badge — prevent overflow/stacking on mobile */
563
+ .card-header-badge {
564
+ flex-shrink: 0;
565
+ white-space: nowrap;
566
+ line-height: 1.25;
567
+ gap: 0.25rem;
568
+ }
569
+
570
+ /* Mobile responsive adjustments */
571
+ @media (max-width: 640px) {
572
+ .card {
573
+ padding: 1rem;
574
+ }
575
+ .btn {
576
+ padding: 0.5rem 0.75rem;
577
+ font-size: 0.875rem;
578
+ }
579
+ }