mouse-vm 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.
@@ -0,0 +1,2651 @@
1
+ /* -------------------------------------------------------------
2
+ * VIRTUAL MOUSE - STYLESHEET
3
+ * Premium Dark-Glow Aesthetics (HSL-based, Neon Accents, Glassmorphic effects)
4
+ * ------------------------------------------------------------- */
5
+
6
+ /* Define CSS Variables */
7
+ :root {
8
+ --bg-color: #080d16;
9
+ /* Deep space slate */
10
+ --bg-card: #0e1524;
11
+ /* Darker card backing */
12
+ --bg-card-hover: #151d30;
13
+ /* Highlighted card backing */
14
+ --bg-input: #111a2d;
15
+ /* Input box dark background */
16
+ --border-color: rgba(255, 255, 255, 0.06);
17
+ --border-hover: rgba(34, 160, 255, 0.25);
18
+
19
+ /* Text Palette */
20
+ --text-primary: #f3f5f9;
21
+ /* Pure white-ish */
22
+ --text-secondary: #7e8fae;
23
+ /* Cool slate gray */
24
+ --text-muted: #4e5f7e;
25
+ /* Darker gray */
26
+
27
+ /* Accent & Glow Colors */
28
+ --color-accent: #22a0ff;
29
+ /* Bright neon blue */
30
+ --color-accent-rgb: 34, 160, 255;
31
+ --color-accent-glow: rgba(34, 160, 255, 0.35);
32
+
33
+ --color-cyan: #00f0ff;
34
+ /* Electric cyan */
35
+ --color-cyan-rgb: 0, 240, 255;
36
+ --color-cyan-glow: rgba(0, 240, 255, 0.4);
37
+
38
+ --color-success: #10b981;
39
+ /* Connected emerald green */
40
+ --color-success-glow: rgba(16, 185, 129, 0.3);
41
+
42
+ --color-danger: #ef4444;
43
+ /* Alert/Disconnect red */
44
+ --color-danger-glow: rgba(239, 68, 68, 0.3);
45
+
46
+ --font-main: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
47
+ --transition-speed: 0.3s;
48
+ --nav-height: 72px;
49
+ }
50
+
51
+ /* Reset and Global Styles */
52
+ * {
53
+ margin: 0;
54
+ padding: 0;
55
+ box-sizing: border-box;
56
+ -webkit-tap-highlight-color: transparent;
57
+ /* Remove mobile touch blue block */
58
+ }
59
+
60
+ html,
61
+ body {
62
+ width: 100%;
63
+ height: 100%;
64
+ background-color: #020408;
65
+ color: var(--text-primary);
66
+ font-family: var(--font-main);
67
+ overflow: hidden;
68
+ display: flex;
69
+ justify-content: center;
70
+ align-items: center;
71
+ }
72
+
73
+ /* App Container - Constrained to Mobile Frame Aspect Ratio on large screens */
74
+ .app-container {
75
+ position: relative;
76
+ width: 100%;
77
+ max-width: 440px;
78
+ /* Target typical phone widths */
79
+ height: 100%;
80
+ max-height: 950px;
81
+ background-color: var(--bg-color);
82
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.7), 0 0 1px 1px rgba(255, 255, 255, 0.05);
83
+ border-radius: 0;
84
+ overflow: hidden;
85
+ display: flex;
86
+ flex-direction: column;
87
+ }
88
+
89
+ @media (min-width: 480px) {
90
+ .app-container {
91
+ border-radius: 40px;
92
+ /* Give phone frame look on desktop */
93
+ height: 90vh;
94
+ margin: auto;
95
+ }
96
+ }
97
+
98
+ /* Header Styling */
99
+ .app-header {
100
+ height: 64px;
101
+ padding: 0 20px;
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: space-between;
105
+ border-bottom: 1px solid var(--border-color);
106
+ flex-shrink: 0;
107
+ background-color: rgba(8, 13, 22, 0.6);
108
+ backdrop-filter: blur(10px);
109
+ }
110
+
111
+ .app-header h2 {
112
+ font-size: 1.15rem;
113
+ font-weight: 600;
114
+ letter-spacing: -0.2px;
115
+ }
116
+
117
+ /* Screen Transitions */
118
+ .screen {
119
+ display: none;
120
+ flex: 1;
121
+ width: 100%;
122
+ height: calc(100% - var(--nav-height));
123
+ flex-direction: column;
124
+ overflow: hidden;
125
+ opacity: 0;
126
+ transform: translateY(15px);
127
+ transition: opacity var(--transition-speed) cubic-bezier(0.4, 0, 0.2, 1),
128
+ transform var(--transition-speed) cubic-bezier(0.4, 0, 0.2, 1);
129
+ }
130
+
131
+ .screen.active {
132
+ display: flex;
133
+ opacity: 1;
134
+ transform: translateY(0);
135
+ }
136
+
137
+ /* Scrollable Container for Screens */
138
+ .scroll-content {
139
+ flex: 1;
140
+ overflow-y: auto;
141
+ padding: 20px;
142
+ padding-bottom: calc(var(--nav-height) + 20px);
143
+ -webkit-overflow-scrolling: touch;
144
+ }
145
+
146
+ .scroll-content::-webkit-scrollbar {
147
+ width: 4px;
148
+ }
149
+
150
+ .scroll-content::-webkit-scrollbar-thumb {
151
+ background-color: var(--border-color);
152
+ border-radius: 4px;
153
+ }
154
+
155
+ /* Utility Components */
156
+ .icon-btn {
157
+ background: transparent;
158
+ border: none;
159
+ color: var(--text-secondary);
160
+ width: 38px;
161
+ height: 38px;
162
+ border-radius: 10px;
163
+ display: flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ cursor: pointer;
167
+ transition: all 0.2s ease;
168
+ }
169
+
170
+ .icon-btn:hover {
171
+ color: var(--text-primary);
172
+ background-color: var(--bg-card);
173
+ }
174
+
175
+ .icon-btn:active {
176
+ transform: scale(0.95);
177
+ }
178
+
179
+ /* ================= 1. Splash Screen ================= */
180
+ #screen-splash {
181
+ height: 100%;
182
+ justify-content: center;
183
+ align-items: center;
184
+ background: radial-gradient(circle at center, rgba(34, 160, 255, 0.08) 0%, var(--bg-color) 80%);
185
+ }
186
+
187
+ .splash-content {
188
+ display: flex;
189
+ flex-direction: column;
190
+ align-items: center;
191
+ text-align: center;
192
+ padding: 0 30px;
193
+ }
194
+
195
+ .logo-container {
196
+ position: relative;
197
+ width: 140px;
198
+ height: 190px;
199
+ margin-bottom: 40px;
200
+ display: flex;
201
+ justify-content: center;
202
+ align-items: center;
203
+ }
204
+
205
+ /* Wave ripples radiating from mouse logo */
206
+ .ripple {
207
+ position: absolute;
208
+ border: 2px solid var(--color-cyan);
209
+ border-radius: 50%;
210
+ opacity: 0;
211
+ pointer-events: none;
212
+ animation: pulse-ripple 3.5s infinite cubic-bezier(0.1, 0.8, 0.3, 1);
213
+ }
214
+
215
+ .ripple-1 {
216
+ animation-delay: 0s;
217
+ }
218
+
219
+ .ripple-2 {
220
+ animation-delay: 1.2s;
221
+ }
222
+
223
+ .ripple-3 {
224
+ animation-delay: 2.4s;
225
+ }
226
+
227
+ @keyframes pulse-ripple {
228
+ 0% {
229
+ width: 80px;
230
+ height: 80px;
231
+ opacity: 0.8;
232
+ transform: scale(0.8) translateY(-30px);
233
+ filter: drop-shadow(0 0 5px var(--color-cyan-glow));
234
+ }
235
+
236
+ 100% {
237
+ width: 250px;
238
+ height: 250px;
239
+ opacity: 0;
240
+ transform: scale(1.3) translateY(-30px);
241
+ filter: drop-shadow(0 0 20px rgba(0, 240, 255, 0));
242
+ }
243
+ }
244
+
245
+ .glowing-mouse-svg {
246
+ position: relative;
247
+ z-index: 5;
248
+ width: 80px;
249
+ height: 120px;
250
+ filter: drop-shadow(0 0 15px var(--color-cyan-glow));
251
+ animation: hover-float 4s ease-in-out infinite;
252
+ }
253
+
254
+ @keyframes hover-float {
255
+
256
+ 0%,
257
+ 100% {
258
+ transform: translateY(0);
259
+ }
260
+
261
+ 50% {
262
+ transform: translateY(-8px);
263
+ }
264
+ }
265
+
266
+ .splash-title {
267
+ font-size: 2.2rem;
268
+ font-weight: 700;
269
+ background: linear-gradient(135deg, #ffffff 30%, #7da2ff 100%);
270
+ -webkit-background-clip: text;
271
+ background-clip: text;
272
+ -webkit-text-fill-color: transparent;
273
+ margin-bottom: 12px;
274
+ letter-spacing: -0.5px;
275
+ filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.3));
276
+ }
277
+
278
+ .splash-tagline {
279
+ font-size: 0.95rem;
280
+ color: var(--text-secondary);
281
+ max-width: 220px;
282
+ line-height: 1.4;
283
+ margin-bottom: 50px;
284
+ }
285
+
286
+ /* Dots navigation indicator */
287
+ .carousel-dots {
288
+ display: flex;
289
+ gap: 8px;
290
+ }
291
+
292
+ .carousel-dots .dot {
293
+ width: 6px;
294
+ height: 6px;
295
+ border-radius: 50%;
296
+ background-color: var(--text-muted);
297
+ transition: all 0.3s ease;
298
+ }
299
+
300
+ .carousel-dots .dot.active {
301
+ width: 18px;
302
+ background-color: var(--color-accent);
303
+ border-radius: 3px;
304
+ box-shadow: 0 0 8px var(--color-accent-glow);
305
+ }
306
+
307
+
308
+ /* ================= 2. Connection Screen ================= */
309
+ .section-label {
310
+ font-size: 0.8rem;
311
+ font-weight: 500;
312
+ text-transform: uppercase;
313
+ color: var(--text-secondary);
314
+ letter-spacing: 1px;
315
+ margin-bottom: 14px;
316
+ }
317
+
318
+ /* Tabs switcher */
319
+ .connection-tabs {
320
+ display: grid;
321
+ grid-template-columns: 1fr 1fr 1fr;
322
+ gap: 6px;
323
+ background-color: rgba(14, 21, 36, 0.4);
324
+ border: 1px solid var(--border-color);
325
+ padding: 4px;
326
+ border-radius: 14px;
327
+ margin-bottom: 24px;
328
+ }
329
+
330
+ .tab-btn {
331
+ background: transparent;
332
+ border: none;
333
+ color: var(--text-secondary);
334
+ font-family: var(--font-main);
335
+ font-size: 0.85rem;
336
+ font-weight: 500;
337
+ padding: 10px 0;
338
+ border-radius: 10px;
339
+ cursor: pointer;
340
+ display: flex;
341
+ align-items: center;
342
+ justify-content: center;
343
+ gap: 8px;
344
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
345
+ }
346
+
347
+ .tab-btn.active {
348
+ color: var(--text-primary);
349
+ background-color: var(--bg-card);
350
+ border: 1px solid rgba(255, 255, 255, 0.05);
351
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2), 0 0 1px 1px rgba(34, 160, 255, 0.15);
352
+ }
353
+
354
+ .tab-icon {
355
+ transition: color 0.2s ease;
356
+ }
357
+
358
+ .tab-btn.active .tab-icon {
359
+ color: var(--color-accent);
360
+ }
361
+
362
+ /* Tab Panels */
363
+ .tab-panel {
364
+ display: none;
365
+ animation: fade-in 0.3s ease;
366
+ }
367
+
368
+ .tab-panel.active {
369
+ display: block;
370
+ }
371
+
372
+ @keyframes fade-in {
373
+ from {
374
+ opacity: 0;
375
+ transform: translateY(4px);
376
+ }
377
+
378
+ to {
379
+ opacity: 1;
380
+ transform: translateY(0);
381
+ }
382
+ }
383
+
384
+ /* Input boxes styling */
385
+ .input-group {
386
+ margin-bottom: 18px;
387
+ display: flex;
388
+ flex-direction: column;
389
+ gap: 8px;
390
+ }
391
+
392
+ .input-group label {
393
+ font-size: 0.85rem;
394
+ color: var(--text-secondary);
395
+ font-weight: 400;
396
+ }
397
+
398
+ .input-wrapper {
399
+ position: relative;
400
+ display: flex;
401
+ align-items: center;
402
+ }
403
+
404
+ .input-icon {
405
+ position: absolute;
406
+ left: 14px;
407
+ color: var(--text-secondary);
408
+ pointer-events: none;
409
+ transition: color 0.25s ease;
410
+ }
411
+
412
+ .input-wrapper input {
413
+ width: 100%;
414
+ background-color: var(--bg-input);
415
+ border: 1px solid var(--border-color);
416
+ border-radius: 12px;
417
+ padding: 14px 14px 14px 44px;
418
+ color: var(--text-primary);
419
+ font-family: var(--font-main);
420
+ font-size: 0.95rem;
421
+ font-weight: 400;
422
+ transition: all 0.25s ease;
423
+ }
424
+
425
+ .input-wrapper input:focus {
426
+ outline: none;
427
+ border-color: var(--color-accent);
428
+ background-color: var(--bg-card);
429
+ box-shadow: 0 0 10px rgba(34, 160, 255, 0.15);
430
+ }
431
+
432
+ .input-wrapper input:focus+.input-icon {
433
+ color: var(--color-accent);
434
+ }
435
+
436
+ /* Status state indicators */
437
+ .connection-status {
438
+ display: flex;
439
+ align-items: center;
440
+ gap: 8px;
441
+ margin: 24px 0;
442
+ font-size: 0.9rem;
443
+ color: var(--text-secondary);
444
+ }
445
+
446
+ .status-indicator {
447
+ width: 8px;
448
+ height: 8px;
449
+ border-radius: 50%;
450
+ display: inline-block;
451
+ }
452
+
453
+ .status-indicator.disconnect-state {
454
+ background-color: var(--color-danger);
455
+ box-shadow: 0 0 8px var(--color-danger);
456
+ }
457
+
458
+ .status-indicator.connect-state {
459
+ background-color: var(--color-success);
460
+ box-shadow: 0 0 8px var(--color-success-glow);
461
+ }
462
+
463
+ .status-indicator.connecting-state {
464
+ background-color: #eab308;
465
+ /* Yellow orange */
466
+ box-shadow: 0 0 8px rgba(234, 179, 8, 0.4);
467
+ animation: pulse-dot 1.5s infinite;
468
+ }
469
+
470
+ @keyframes pulse-dot {
471
+
472
+ 0%,
473
+ 100% {
474
+ opacity: 0.5;
475
+ }
476
+
477
+ 50% {
478
+ opacity: 1;
479
+ }
480
+ }
481
+
482
+ /* Button styling */
483
+ .primary-btn {
484
+ width: 100%;
485
+ background: linear-gradient(135deg, var(--color-accent) 0%, #1579cc 100%);
486
+ border: none;
487
+ color: #ffffff;
488
+ font-family: var(--font-main);
489
+ font-size: 0.95rem;
490
+ font-weight: 600;
491
+ padding: 14px 0;
492
+ border-radius: 12px;
493
+ cursor: pointer;
494
+ display: flex;
495
+ align-items: center;
496
+ justify-content: center;
497
+ gap: 10px;
498
+ box-shadow: 0 6px 20px var(--color-accent-glow);
499
+ transition: all 0.2s ease;
500
+ }
501
+
502
+ .primary-btn:hover {
503
+ filter: brightness(1.1);
504
+ box-shadow: 0 8px 24px rgba(34, 160, 255, 0.5);
505
+ }
506
+
507
+ .primary-btn:active {
508
+ transform: scale(0.98);
509
+ }
510
+
511
+ .outline-btn {
512
+ width: 100%;
513
+ background: transparent;
514
+ border: 1px solid var(--border-color);
515
+ color: var(--text-primary);
516
+ font-family: var(--font-main);
517
+ font-size: 0.95rem;
518
+ font-weight: 500;
519
+ padding: 12px 0;
520
+ border-radius: 12px;
521
+ cursor: pointer;
522
+ display: flex;
523
+ align-items: center;
524
+ justify-content: center;
525
+ gap: 10px;
526
+ transition: all 0.2s ease;
527
+ margin-bottom: 20px;
528
+ }
529
+
530
+ .outline-btn:hover {
531
+ border-color: var(--color-accent);
532
+ background-color: rgba(34, 160, 255, 0.05);
533
+ }
534
+
535
+ /* Bluetooth device list items */
536
+ .device-list {
537
+ display: flex;
538
+ flex-direction: column;
539
+ gap: 10px;
540
+ }
541
+
542
+ .device-item {
543
+ background-color: var(--bg-card);
544
+ border: 1px solid var(--border-color);
545
+ padding: 14px 16px;
546
+ border-radius: 12px;
547
+ display: flex;
548
+ align-items: center;
549
+ justify-content: space-between;
550
+ cursor: pointer;
551
+ transition: all 0.2s ease;
552
+ }
553
+
554
+ .device-item:hover {
555
+ border-color: var(--border-hover);
556
+ background-color: var(--bg-card-hover);
557
+ }
558
+
559
+ .device-info {
560
+ display: flex;
561
+ align-items: center;
562
+ gap: 14px;
563
+ }
564
+
565
+ .device-icon {
566
+ color: var(--text-secondary);
567
+ }
568
+
569
+ .device-item:hover .device-icon {
570
+ color: var(--color-accent);
571
+ }
572
+
573
+ .dev-name {
574
+ font-size: 0.95rem;
575
+ font-weight: 500;
576
+ color: var(--text-primary);
577
+ margin-bottom: 2px;
578
+ }
579
+
580
+ .dev-addr {
581
+ font-size: 0.75rem;
582
+ color: var(--text-secondary);
583
+ }
584
+
585
+ .chevron {
586
+ color: var(--text-muted);
587
+ }
588
+
589
+ .device-item:hover .chevron {
590
+ color: var(--text-primary);
591
+ }
592
+
593
+ /* USB view elements */
594
+ .usb-instructions {
595
+ display: flex;
596
+ flex-direction: column;
597
+ align-items: center;
598
+ text-align: center;
599
+ padding: 20px 10px;
600
+ }
601
+
602
+ .usb-icon-circle {
603
+ width: 72px;
604
+ height: 72px;
605
+ border-radius: 50%;
606
+ background-color: var(--bg-card);
607
+ border: 1px solid var(--border-color);
608
+ display: flex;
609
+ align-items: center;
610
+ justify-content: center;
611
+ margin-bottom: 20px;
612
+ color: var(--color-accent);
613
+ box-shadow: 0 0 20px rgba(34, 160, 255, 0.1);
614
+ }
615
+
616
+ .usb-plug-svg {
617
+ animation: usb-pulse 2s infinite ease-in-out;
618
+ }
619
+
620
+ @keyframes usb-pulse {
621
+
622
+ 0%,
623
+ 100% {
624
+ transform: scale(1);
625
+ filter: drop-shadow(0 0 2px var(--color-accent));
626
+ }
627
+
628
+ 50% {
629
+ transform: scale(1.06);
630
+ filter: drop-shadow(0 0 8px var(--color-accent));
631
+ }
632
+ }
633
+
634
+ .usb-instructions h3 {
635
+ font-size: 1.1rem;
636
+ font-weight: 600;
637
+ margin-bottom: 10px;
638
+ }
639
+
640
+ .usb-instructions p {
641
+ font-size: 0.85rem;
642
+ color: var(--text-secondary);
643
+ line-height: 1.5;
644
+ margin-bottom: 30px;
645
+ }
646
+
647
+
648
+ /* ================= 3. Mouse Control Screen ================= */
649
+ .active-header {
650
+ height: 72px;
651
+ /* Slightly taller for device status meta info */
652
+ }
653
+
654
+ .header-dev-desc {
655
+ display: flex;
656
+ align-items: center;
657
+ gap: 12px;
658
+ }
659
+
660
+ .connected-icon-box {
661
+ width: 38px;
662
+ height: 38px;
663
+ border-radius: 10px;
664
+ background-color: rgba(34, 160, 255, 0.1);
665
+ color: var(--color-accent);
666
+ display: flex;
667
+ align-items: center;
668
+ justify-content: center;
669
+ }
670
+
671
+ .header-dev-desc h3 {
672
+ font-size: 0.95rem;
673
+ font-weight: 600;
674
+ margin-bottom: 2px;
675
+ }
676
+
677
+ .header-dev-desc p {
678
+ font-size: 0.75rem;
679
+ color: var(--text-secondary);
680
+ }
681
+
682
+ .header-right-meta {
683
+ display: flex;
684
+ align-items: center;
685
+ gap: 8px;
686
+ }
687
+
688
+ .connection-status-pill {
689
+ background-color: rgba(16, 185, 129, 0.08);
690
+ border: 1px solid rgba(16, 185, 129, 0.2);
691
+ padding: 6px 12px;
692
+ border-radius: 20px;
693
+ display: flex;
694
+ align-items: center;
695
+ gap: 6px;
696
+ font-size: 0.75rem;
697
+ font-weight: 500;
698
+ color: var(--color-success);
699
+ }
700
+
701
+ .control-area {
702
+ flex: 1;
703
+ display: flex;
704
+ flex-direction: column;
705
+ padding: 10px 15px;
706
+ overflow: hidden;
707
+ }
708
+
709
+ /* Trackpad panel */
710
+ .trackpad {
711
+ flex: 1;
712
+ min-height: 120px;
713
+ border-radius: 24px;
714
+ border: 1.5px dashed rgba(34, 160, 255, 0.2);
715
+ background: radial-gradient(ellipse at bottom, rgba(14, 21, 36, 0.8) 0%, var(--bg-color) 80%);
716
+ background-image: radial-gradient(rgba(34, 160, 255, 0.08) 1.2px, transparent 1.2px);
717
+ background-size: 16px 16px;
718
+ margin-bottom: 12px;
719
+ position: relative;
720
+ overflow: hidden;
721
+ display: flex;
722
+ align-items: flex-end;
723
+ justify-content: center;
724
+ cursor: crosshair;
725
+ box-shadow: inset 0 2px 20px rgba(0, 0, 0, 0.5);
726
+ transition: border-color 0.2s ease;
727
+ }
728
+
729
+ .trackpad:active {
730
+ border-color: rgba(0, 240, 255, 0.4);
731
+ }
732
+
733
+ .touch-glowing-cursor {
734
+ position: absolute;
735
+ width: 32px;
736
+ height: 32px;
737
+ border-radius: 50%;
738
+ background: radial-gradient(circle, rgba(0, 240, 255, 0.8) 0%, rgba(34, 160, 255, 0.2) 60%, transparent 100%);
739
+ filter: drop-shadow(0 0 8px var(--color-cyan));
740
+ pointer-events: none;
741
+ opacity: 0;
742
+ transform: translate(-50%, -50%);
743
+ will-change: transform, left, top;
744
+ }
745
+
746
+ .trackpad-instructions {
747
+ font-size: 0.75rem;
748
+ color: var(--text-secondary);
749
+ background-color: rgba(14, 21, 36, 0.6);
750
+ border: 1px solid var(--border-color);
751
+ padding: 6px 12px;
752
+ border-radius: 20px;
753
+ margin-bottom: 16px;
754
+ pointer-events: none;
755
+ display: flex;
756
+ align-items: center;
757
+ gap: 6px;
758
+ z-index: 10;
759
+ }
760
+
761
+ .instruction-icon {
762
+ color: var(--color-accent);
763
+ }
764
+
765
+ /* Mouse buttons and scroll grid */
766
+ .mouse-actions-grid {
767
+ display: grid;
768
+ grid-template-columns: 1fr 1fr 66px;
769
+ gap: 10px;
770
+ margin-bottom: 10px;
771
+ height: 110px;
772
+ flex-shrink: 0;
773
+ }
774
+
775
+ .mouse-btn {
776
+ background-color: var(--bg-card);
777
+ border: 1px solid var(--border-color);
778
+ border-radius: 18px;
779
+ color: var(--text-primary);
780
+ cursor: pointer;
781
+ display: flex;
782
+ flex-direction: column;
783
+ align-items: center;
784
+ justify-content: center;
785
+ gap: 10px;
786
+ font-family: var(--font-main);
787
+ font-size: 0.85rem;
788
+ font-weight: 500;
789
+ transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
790
+ }
791
+
792
+ .mouse-btn:hover {
793
+ border-color: var(--border-hover);
794
+ background-color: var(--bg-card-hover);
795
+ }
796
+
797
+ .mouse-btn:active {
798
+ transform: scale(0.97);
799
+ border-color: var(--color-accent);
800
+ box-shadow: 0 0 10px rgba(34, 160, 255, 0.15);
801
+ }
802
+
803
+ .mouse-icon-visual {
804
+ color: var(--text-secondary);
805
+ transition: color 0.15s ease;
806
+ }
807
+
808
+ .mouse-btn:hover .mouse-icon-visual {
809
+ color: var(--color-accent);
810
+ }
811
+
812
+ .inner-mouse-svg {
813
+ width: 20px;
814
+ height: 30px;
815
+ }
816
+
817
+ /* Left Click Button highlight state */
818
+ .left-click-part,
819
+ .right-click-part {
820
+ transition: opacity 0.1s ease;
821
+ }
822
+
823
+ .mouse-btn:active .left-click-part {
824
+ opacity: 0.8;
825
+ }
826
+
827
+ .mouse-btn:active .right-click-part {
828
+ opacity: 0.8;
829
+ }
830
+
831
+ /* Scroll Wheel control */
832
+ .scroll-wheel-container {
833
+ background-color: var(--bg-card);
834
+ border: 1px solid var(--border-color);
835
+ border-radius: 18px;
836
+ display: flex;
837
+ flex-direction: column;
838
+ align-items: center;
839
+ justify-content: space-between;
840
+ padding: 6px 0;
841
+ position: relative;
842
+ user-select: none;
843
+ }
844
+
845
+ .scroll-arrow {
846
+ background: transparent;
847
+ border: none;
848
+ color: var(--text-muted);
849
+ width: 100%;
850
+ height: 22px;
851
+ cursor: pointer;
852
+ display: flex;
853
+ align-items: center;
854
+ justify-content: center;
855
+ transition: color 0.15s ease;
856
+ }
857
+
858
+ .scroll-arrow:hover {
859
+ color: var(--text-primary);
860
+ }
861
+
862
+ .scroll-arrow:active,
863
+ .scroll-arrow.auto-scrolling {
864
+ color: var(--color-accent);
865
+ transform: scale(1.2);
866
+ }
867
+
868
+ .scroll-arrow.hands-free-active {
869
+ color: #00f0ff !important;
870
+ animation: pulseScrollGlow 0.8s infinite alternate ease-in-out;
871
+ }
872
+
873
+ @keyframes pulseScrollGlow {
874
+ 0% {
875
+ transform: scale(1);
876
+ filter: drop-shadow(0 0 2px #00f0ff);
877
+ }
878
+
879
+ 100% {
880
+ transform: scale(1.3);
881
+ filter: drop-shadow(0 0 10px #00f0ff);
882
+ }
883
+ }
884
+
885
+ .scroll-indicator-slider {
886
+ flex: 1;
887
+ width: 100%;
888
+ position: relative;
889
+ display: flex;
890
+ flex-direction: column;
891
+ align-items: center;
892
+ justify-content: center;
893
+ cursor: pointer;
894
+ }
895
+
896
+ .scroll-indicator-slider:hover .scroll-label {
897
+ color: var(--color-accent);
898
+ }
899
+
900
+ .scroll-wheel-rail {
901
+ position: relative;
902
+ width: 4px;
903
+ height: 38px;
904
+ background-color: var(--bg-input);
905
+ border-radius: 2px;
906
+ overflow: visible;
907
+ }
908
+
909
+ .scroll-notch {
910
+ position: absolute;
911
+ left: -5px;
912
+ top: 50%;
913
+ transform: translateY(-50%);
914
+ width: 14px;
915
+ height: 14px;
916
+ border-radius: 50%;
917
+ background-color: var(--color-accent);
918
+ box-shadow: 0 0 6px var(--color-accent-glow);
919
+ cursor: grab;
920
+ transition: transform 0.1s ease;
921
+ touch-action: none;
922
+ }
923
+
924
+ .scroll-notch:active {
925
+ cursor: grabbing;
926
+ background-color: var(--color-cyan);
927
+ box-shadow: 0 0 10px var(--color-cyan);
928
+ }
929
+
930
+ .scroll-label {
931
+ font-size: 0.65rem;
932
+ color: var(--text-secondary);
933
+ margin-top: 4px;
934
+ text-transform: uppercase;
935
+ letter-spacing: 0.5px;
936
+ pointer-events: none;
937
+ transition: color 0.2s ease;
938
+ }
939
+
940
+
941
+ /* Aux Controls Card (Scroll Toggle + Keyboard trigger) */
942
+ .mouse-aux-grid {
943
+ display: grid;
944
+ grid-template-columns: 1.1fr 0.9fr;
945
+ gap: 10px;
946
+ height: 60px;
947
+ flex-shrink: 0;
948
+ }
949
+
950
+ .aux-card {
951
+ background-color: var(--bg-card);
952
+ border: 1px solid var(--border-color);
953
+ border-radius: 16px;
954
+ padding: 10px 14px;
955
+ display: flex;
956
+ align-items: center;
957
+ justify-content: space-between;
958
+ text-decoration: none;
959
+ }
960
+
961
+ .keyboard-card-btn {
962
+ border: 1px solid var(--border-color);
963
+ color: var(--text-primary);
964
+ font-family: var(--font-main);
965
+ font-size: 0.9rem;
966
+ font-weight: 500;
967
+ cursor: pointer;
968
+ justify-content: flex-start;
969
+ gap: 12px;
970
+ transition: all 0.2s ease;
971
+ }
972
+
973
+ .keyboard-card-btn:hover {
974
+ border-color: var(--border-hover);
975
+ background-color: var(--bg-card-hover);
976
+ }
977
+
978
+ .keyboard-card-btn:active {
979
+ transform: scale(0.97);
980
+ }
981
+
982
+ .keyboard-icon-box {
983
+ color: var(--text-secondary);
984
+ }
985
+
986
+ .keyboard-card-btn:hover .keyboard-icon-box {
987
+ color: var(--color-accent);
988
+ }
989
+
990
+ .card-text {
991
+ text-align: left;
992
+ }
993
+
994
+ .card-title {
995
+ font-size: 0.75rem;
996
+ color: var(--text-secondary);
997
+ margin-bottom: 2px;
998
+ }
999
+
1000
+ .card-subtitle {
1001
+ font-size: 0.85rem;
1002
+ font-weight: 600;
1003
+ color: var(--color-success);
1004
+ }
1005
+
1006
+ /* Toggle Switch standard style */
1007
+ .switch-toggle {
1008
+ position: relative;
1009
+ display: inline-block;
1010
+ width: 44px;
1011
+ height: 24px;
1012
+ }
1013
+
1014
+ .switch-toggle input {
1015
+ opacity: 0;
1016
+ width: 0;
1017
+ height: 0;
1018
+ }
1019
+
1020
+ .slider-round {
1021
+ position: absolute;
1022
+ cursor: pointer;
1023
+ top: 0;
1024
+ left: 0;
1025
+ right: 0;
1026
+ bottom: 0;
1027
+ background-color: var(--bg-input);
1028
+ border: 1px solid var(--border-color);
1029
+ transition: .3s;
1030
+ border-radius: 24px;
1031
+ }
1032
+
1033
+ .slider-round:before {
1034
+ position: absolute;
1035
+ content: "";
1036
+ height: 16px;
1037
+ width: 16px;
1038
+ left: 3px;
1039
+ bottom: 3px;
1040
+ background-color: var(--text-secondary);
1041
+ transition: .3s;
1042
+ border-radius: 50%;
1043
+ }
1044
+
1045
+ input:checked+.slider-round {
1046
+ background-color: rgba(34, 160, 255, 0.15);
1047
+ border-color: var(--color-accent);
1048
+ }
1049
+
1050
+ input:checked+.slider-round:before {
1051
+ transform: translateX(20px);
1052
+ background-color: var(--color-accent);
1053
+ box-shadow: 0 0 6px var(--color-accent-glow);
1054
+ }
1055
+
1056
+ /* Modal virtual keyboard entry overlay */
1057
+ .keyboard-overlay {
1058
+ position: absolute;
1059
+ left: 0;
1060
+ top: 0;
1061
+ width: 100%;
1062
+ height: 100%;
1063
+ background-color: rgba(2, 4, 8, 0.7);
1064
+ backdrop-filter: blur(8px);
1065
+ z-index: 200;
1066
+ display: none;
1067
+ justify-content: flex-end;
1068
+ flex-direction: column;
1069
+ animation: fade-in-overlay 0.3s ease;
1070
+ }
1071
+
1072
+ @keyframes fade-in-overlay {
1073
+ from {
1074
+ opacity: 0;
1075
+ }
1076
+
1077
+ to {
1078
+ opacity: 1;
1079
+ }
1080
+ }
1081
+
1082
+ .keyboard-sheet {
1083
+ background-color: var(--bg-card);
1084
+ border-top: 1px solid var(--border-color);
1085
+ border-radius: 24px 24px 0 0;
1086
+ padding: 24px 20px;
1087
+ transform: translateY(100%);
1088
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1089
+ box-shadow: 0 -8px 30px rgba(0, 0, 0, 0.5);
1090
+ }
1091
+
1092
+ .keyboard-overlay.open {
1093
+ display: flex;
1094
+ }
1095
+
1096
+ .keyboard-overlay.open .keyboard-sheet {
1097
+ transform: translateY(0);
1098
+ }
1099
+
1100
+ .keyboard-sheet-header {
1101
+ display: flex;
1102
+ justify-content: space-between;
1103
+ align-items: center;
1104
+ margin-bottom: 10px;
1105
+ }
1106
+
1107
+ .keyboard-sheet-header h4 {
1108
+ font-size: 1rem;
1109
+ font-weight: 600;
1110
+ color: var(--text-primary);
1111
+ }
1112
+
1113
+ .close-overlay-btn {
1114
+ background: transparent;
1115
+ border: none;
1116
+ color: var(--color-accent);
1117
+ font-family: var(--font-main);
1118
+ font-size: 0.9rem;
1119
+ font-weight: 600;
1120
+ cursor: pointer;
1121
+ }
1122
+
1123
+ .kb-helper-text {
1124
+ font-size: 0.75rem;
1125
+ color: var(--text-secondary);
1126
+ margin-bottom: 20px;
1127
+ line-height: 1.4;
1128
+ }
1129
+
1130
+ .kb-input-row {
1131
+ display: flex;
1132
+ gap: 10px;
1133
+ }
1134
+
1135
+ .kb-input-row input {
1136
+ flex: 1;
1137
+ background-color: var(--bg-input);
1138
+ border: 1px solid var(--border-color);
1139
+ border-radius: 10px;
1140
+ padding: 12px 14px;
1141
+ color: var(--text-primary);
1142
+ font-family: var(--font-main);
1143
+ font-size: 0.9rem;
1144
+ }
1145
+
1146
+ .kb-input-row input:focus {
1147
+ outline: none;
1148
+ border-color: var(--color-accent);
1149
+ }
1150
+
1151
+ .kb-action-key {
1152
+ background-color: var(--bg-input);
1153
+ border: 1px solid var(--border-color);
1154
+ color: var(--text-primary);
1155
+ font-family: var(--font-main);
1156
+ font-size: 0.85rem;
1157
+ font-weight: 500;
1158
+ padding: 0 16px;
1159
+ border-radius: 10px;
1160
+ cursor: pointer;
1161
+ transition: all 0.15s ease;
1162
+ }
1163
+
1164
+ .kb-action-key:active {
1165
+ background-color: var(--bg-card-hover);
1166
+ border-color: var(--color-accent);
1167
+ }
1168
+
1169
+
1170
+ /* ================= 4. Settings Screen ================= */
1171
+ .settings-group-label {
1172
+ font-size: 0.8rem;
1173
+ font-weight: 500;
1174
+ text-transform: uppercase;
1175
+ color: var(--text-secondary);
1176
+ letter-spacing: 1px;
1177
+ margin-top: 10px;
1178
+ margin-bottom: 12px;
1179
+ }
1180
+
1181
+ .settings-card {
1182
+ background-color: var(--bg-card);
1183
+ border: 1px solid var(--border-color);
1184
+ border-radius: 16px;
1185
+ overflow: hidden;
1186
+ margin-bottom: 24px;
1187
+ }
1188
+
1189
+ .setting-row {
1190
+ padding: 16px 20px;
1191
+ display: flex;
1192
+ align-items: center;
1193
+ justify-content: space-between;
1194
+ border-bottom: 1px solid var(--border-color);
1195
+ transition: background-color 0.2s ease;
1196
+ }
1197
+
1198
+ .setting-row:last-child {
1199
+ border-bottom: none;
1200
+ }
1201
+
1202
+ .custom-select {
1203
+ background-color: rgba(255, 255, 255, 0.06);
1204
+ color: var(--text-primary, #fff);
1205
+ border: 1px solid var(--border-color, rgba(255, 255, 255, 0.15));
1206
+ border-radius: 8px;
1207
+ padding: 8px 12px;
1208
+ font-size: 0.85rem;
1209
+ font-weight: 500;
1210
+ outline: none;
1211
+ cursor: pointer;
1212
+ transition: all 0.2s ease;
1213
+ }
1214
+
1215
+ .custom-select:focus,
1216
+ .custom-select:hover {
1217
+ background-color: rgba(255, 255, 255, 0.1);
1218
+ border-color: var(--color-accent, #00f0ff);
1219
+ }
1220
+
1221
+ .custom-select option {
1222
+ background-color: #121212;
1223
+ color: #fff;
1224
+ }
1225
+
1226
+ .setting-row.clickable {
1227
+ cursor: pointer;
1228
+ }
1229
+
1230
+ .setting-row.clickable:hover {
1231
+ background-color: var(--bg-card-hover);
1232
+ }
1233
+
1234
+ .setting-row.clickable:active {
1235
+ background-color: rgba(255, 255, 255, 0.02);
1236
+ }
1237
+
1238
+ .setting-label-icon {
1239
+ display: flex;
1240
+ align-items: center;
1241
+ gap: 14px;
1242
+ font-size: 0.95rem;
1243
+ font-weight: 500;
1244
+ }
1245
+
1246
+ .sett-icon {
1247
+ color: var(--text-secondary);
1248
+ }
1249
+
1250
+ .setting-row:hover .sett-icon {
1251
+ color: var(--color-accent);
1252
+ }
1253
+
1254
+ .sett-title {
1255
+ font-size: 0.95rem;
1256
+ font-weight: 500;
1257
+ margin-bottom: 2px;
1258
+ }
1259
+
1260
+ .sett-desc {
1261
+ font-size: 0.75rem;
1262
+ color: var(--text-secondary);
1263
+ }
1264
+
1265
+ /* Double column or complex grid settings rows */
1266
+ .setting-row-column {
1267
+ padding: 18px 20px;
1268
+ display: flex;
1269
+ flex-direction: column;
1270
+ gap: 12px;
1271
+ border-bottom: 1px solid var(--border-color);
1272
+ }
1273
+
1274
+ .setting-slider-header {
1275
+ display: flex;
1276
+ justify-content: space-between;
1277
+ align-items: center;
1278
+ }
1279
+
1280
+ .slider-value {
1281
+ font-size: 0.85rem;
1282
+ font-weight: 500;
1283
+ color: var(--color-accent);
1284
+ }
1285
+
1286
+ /* Custom range slider styling */
1287
+ .custom-slider {
1288
+ -webkit-appearance: none;
1289
+ appearance: none;
1290
+ width: 100%;
1291
+ height: 6px;
1292
+ background-color: var(--bg-input);
1293
+ border-radius: 3px;
1294
+ outline: none;
1295
+ }
1296
+
1297
+ .custom-slider::-webkit-slider-thumb {
1298
+ -webkit-appearance: none;
1299
+ appearance: none;
1300
+ width: 20px;
1301
+ height: 20px;
1302
+ border-radius: 50%;
1303
+ background-color: var(--color-accent);
1304
+ cursor: pointer;
1305
+ box-shadow: 0 0 10px var(--color-accent-glow);
1306
+ transition: transform 0.1s ease;
1307
+ }
1308
+
1309
+ .custom-slider::-webkit-slider-thumb:active {
1310
+ transform: scale(1.2);
1311
+ background-color: var(--color-cyan);
1312
+ }
1313
+
1314
+ .slider-ticks {
1315
+ display: flex;
1316
+ justify-content: space-between;
1317
+ padding: 0 4px;
1318
+ font-size: 0.7rem;
1319
+ color: var(--text-secondary);
1320
+ }
1321
+
1322
+ .about-version {
1323
+ font-size: 0.85rem;
1324
+ color: var(--text-secondary);
1325
+ font-weight: 500;
1326
+ }
1327
+
1328
+ .disconnect-btn-action {
1329
+ width: 100%;
1330
+ background-color: rgba(239, 68, 68, 0.08);
1331
+ border: 1px solid rgba(239, 68, 68, 0.2);
1332
+ color: var(--color-danger);
1333
+ font-family: var(--font-main);
1334
+ font-size: 0.95rem;
1335
+ font-weight: 600;
1336
+ padding: 14px 0;
1337
+ border-radius: 12px;
1338
+ cursor: pointer;
1339
+ display: flex;
1340
+ align-items: center;
1341
+ justify-content: center;
1342
+ gap: 10px;
1343
+ transition: all 0.2s ease;
1344
+ }
1345
+
1346
+ .disconnect-btn-action:hover {
1347
+ background-color: rgba(239, 68, 68, 0.15);
1348
+ box-shadow: 0 4px 15px rgba(239, 68, 68, 0.15);
1349
+ }
1350
+
1351
+ .disconnect-btn-action:active {
1352
+ transform: scale(0.98);
1353
+ }
1354
+
1355
+
1356
+ /* ================= Bottom Navigation Bar ================= */
1357
+ .bottom-navbar {
1358
+ position: absolute;
1359
+ bottom: 0;
1360
+ left: 0;
1361
+ width: 100%;
1362
+ height: var(--nav-height);
1363
+ background-color: rgba(14, 21, 36, 0.75);
1364
+ backdrop-filter: blur(12px) saturate(180%);
1365
+ border-top: 1px solid var(--border-color);
1366
+ display: flex;
1367
+ justify-content: space-around;
1368
+ align-items: center;
1369
+ padding: 0 10px;
1370
+ z-index: 100;
1371
+ transition: transform 0.3s ease;
1372
+ }
1373
+
1374
+ .bottom-navbar.hidden {
1375
+ transform: translateY(100%);
1376
+ }
1377
+
1378
+ .nav-item {
1379
+ background: transparent;
1380
+ border: none;
1381
+ color: var(--text-secondary);
1382
+ font-family: var(--font-main);
1383
+ font-size: 0.7rem;
1384
+ font-weight: 500;
1385
+ display: flex;
1386
+ flex-direction: column;
1387
+ align-items: center;
1388
+ gap: 5px;
1389
+ cursor: pointer;
1390
+ width: 60px;
1391
+ height: 100%;
1392
+ justify-content: center;
1393
+ transition: all 0.2s ease;
1394
+ }
1395
+
1396
+ .nav-icon {
1397
+ width: 22px;
1398
+ height: 22px;
1399
+ transition: transform 0.2s ease, color 0.2s ease;
1400
+ }
1401
+
1402
+ .nav-item:hover {
1403
+ color: var(--text-primary);
1404
+ }
1405
+
1406
+ .nav-item.active {
1407
+ color: var(--color-accent);
1408
+ }
1409
+
1410
+ .nav-item.active .nav-icon {
1411
+ transform: scale(1.08);
1412
+ filter: drop-shadow(0 0 6px var(--color-accent-glow));
1413
+ }
1414
+
1415
+ .nav-item:active {
1416
+ transform: scale(0.95);
1417
+ }
1418
+
1419
+ /* ================= PWA Install & Header Badges ================= */
1420
+ .install-pwa-btn {
1421
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.15), rgba(34, 160, 255, 0.2));
1422
+ border: 1px solid rgba(0, 240, 255, 0.4);
1423
+ color: var(--color-cyan);
1424
+ font-family: var(--font-main);
1425
+ font-size: 0.78rem;
1426
+ font-weight: 600;
1427
+ padding: 6px 12px;
1428
+ border-radius: 20px;
1429
+ display: flex;
1430
+ align-items: center;
1431
+ gap: 6px;
1432
+ cursor: pointer;
1433
+ transition: all 0.2s ease;
1434
+ box-shadow: 0 0 10px rgba(0, 240, 255, 0.2);
1435
+ }
1436
+
1437
+ .install-pwa-btn:hover {
1438
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.3), rgba(34, 160, 255, 0.35));
1439
+ transform: translateY(-1px);
1440
+ box-shadow: 0 0 15px rgba(0, 240, 255, 0.4);
1441
+ }
1442
+
1443
+ .install-pwa-btn.hidden {
1444
+ display: none !important;
1445
+ }
1446
+
1447
+ /* ================= Dual Connection Mode Options ================= */
1448
+ .dual-mode-banner {
1449
+ background: linear-gradient(135deg, rgba(14, 21, 36, 0.8), rgba(21, 29, 48, 0.9));
1450
+ border: 1px solid var(--border-color);
1451
+ border-radius: 16px;
1452
+ padding: 14px 16px;
1453
+ margin-bottom: 16px;
1454
+ }
1455
+
1456
+ .mode-badge {
1457
+ display: inline-block;
1458
+ font-size: 0.72rem;
1459
+ font-weight: 700;
1460
+ text-transform: uppercase;
1461
+ letter-spacing: 0.5px;
1462
+ color: var(--color-cyan);
1463
+ background-color: rgba(0, 240, 255, 0.12);
1464
+ padding: 3px 8px;
1465
+ border-radius: 6px;
1466
+ margin-bottom: 6px;
1467
+ }
1468
+
1469
+ .mode-subtitle {
1470
+ font-size: 0.84rem;
1471
+ color: var(--text-secondary);
1472
+ line-height: 1.3;
1473
+ }
1474
+
1475
+ .option-header-badge {
1476
+ display: flex;
1477
+ align-items: center;
1478
+ gap: 10px;
1479
+ margin: 14px 0 12px 0;
1480
+ font-size: 0.85rem;
1481
+ font-weight: 600;
1482
+ color: var(--text-primary);
1483
+ }
1484
+
1485
+ .option-header-badge.option-2 {
1486
+ margin-top: 18px;
1487
+ }
1488
+
1489
+ .badge-num {
1490
+ width: 22px;
1491
+ height: 22px;
1492
+ border-radius: 50%;
1493
+ background: linear-gradient(135deg, var(--color-cyan), var(--color-accent));
1494
+ color: #040810;
1495
+ font-size: 0.72rem;
1496
+ font-weight: 800;
1497
+ display: flex;
1498
+ align-items: center;
1499
+ justify-content: center;
1500
+ box-shadow: 0 0 8px var(--color-cyan-glow);
1501
+ }
1502
+
1503
+ .input-row-dual {
1504
+ display: grid;
1505
+ grid-template-columns: 1fr 1.1fr;
1506
+ gap: 12px;
1507
+ }
1508
+
1509
+ .pin-wrapper input {
1510
+ font-family: monospace;
1511
+ letter-spacing: 2px;
1512
+ font-weight: 700;
1513
+ color: var(--color-cyan);
1514
+ }
1515
+
1516
+ .option-divider {
1517
+ display: flex;
1518
+ align-items: center;
1519
+ text-align: center;
1520
+ margin: 20px 0 10px 0;
1521
+ }
1522
+
1523
+ .option-divider::before,
1524
+ .option-divider::after {
1525
+ content: '';
1526
+ flex: 1;
1527
+ border-bottom: 1px solid var(--border-color);
1528
+ }
1529
+
1530
+ .option-divider span {
1531
+ padding: 0 12px;
1532
+ font-size: 0.75rem;
1533
+ font-weight: 600;
1534
+ color: var(--text-muted);
1535
+ letter-spacing: 1px;
1536
+ }
1537
+
1538
+ .instant-access-btn {
1539
+ width: 100%;
1540
+ background: linear-gradient(135deg, rgba(34, 160, 255, 0.1), rgba(0, 240, 255, 0.05));
1541
+ border: 1px solid rgba(34, 160, 255, 0.35);
1542
+ border-radius: 14px;
1543
+ padding: 14px 16px;
1544
+ display: flex;
1545
+ align-items: center;
1546
+ gap: 14px;
1547
+ cursor: pointer;
1548
+ transition: all 0.25s ease;
1549
+ text-align: left;
1550
+ margin-top: 8px;
1551
+ }
1552
+
1553
+ .instant-access-btn:hover {
1554
+ background: linear-gradient(135deg, rgba(34, 160, 255, 0.2), rgba(0, 240, 255, 0.12));
1555
+ border-color: var(--color-cyan);
1556
+ box-shadow: 0 6px 20px rgba(0, 240, 255, 0.15);
1557
+ transform: translateY(-1px);
1558
+ }
1559
+
1560
+ .instant-access-btn:active {
1561
+ transform: scale(0.98);
1562
+ }
1563
+
1564
+ .instant-btn-icon {
1565
+ width: 42px;
1566
+ height: 42px;
1567
+ border-radius: 10px;
1568
+ background: rgba(34, 160, 255, 0.15);
1569
+ display: flex;
1570
+ align-items: center;
1571
+ justify-content: center;
1572
+ color: var(--color-cyan);
1573
+ flex-shrink: 0;
1574
+ }
1575
+
1576
+ .instant-btn-text {
1577
+ flex: 1;
1578
+ display: flex;
1579
+ flex-direction: column;
1580
+ gap: 2px;
1581
+ }
1582
+
1583
+ .instant-btn-text strong {
1584
+ font-size: 0.95rem;
1585
+ color: var(--text-primary);
1586
+ font-weight: 600;
1587
+ }
1588
+
1589
+ .instant-btn-text span {
1590
+ font-size: 0.76rem;
1591
+ color: var(--text-secondary);
1592
+ }
1593
+
1594
+ /* ================= Dedicated Keyboard & TextPad Screen ================= */
1595
+ #screen-keyboard {
1596
+ background-color: var(--bg-color);
1597
+ }
1598
+
1599
+ .kb-color-box {
1600
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.2), rgba(34, 160, 255, 0.25));
1601
+ color: var(--color-cyan);
1602
+ box-shadow: 0 0 10px rgba(0, 240, 255, 0.2);
1603
+ }
1604
+
1605
+ .kb-content-area {
1606
+ display: flex;
1607
+ flex-direction: column;
1608
+ gap: 14px;
1609
+ padding: 16px;
1610
+ padding-bottom: 90px;
1611
+ overflow-y: auto;
1612
+ }
1613
+
1614
+ .kb-tool-card {
1615
+ background: linear-gradient(145deg, rgba(14, 21, 36, 0.9), rgba(21, 29, 48, 0.85));
1616
+ border: 1px solid rgba(255, 255, 255, 0.08);
1617
+ border-radius: 18px;
1618
+ padding: 16px;
1619
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
1620
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1621
+ }
1622
+
1623
+ .kb-tool-card:focus-within {
1624
+ border-color: rgba(0, 240, 255, 0.4);
1625
+ box-shadow: 0 0 20px rgba(0, 240, 255, 0.15);
1626
+ }
1627
+
1628
+ .live-card-highlight {
1629
+ border: 1px solid rgba(0, 240, 255, 0.3);
1630
+ background: linear-gradient(145deg, rgba(8, 22, 44, 0.95), rgba(14, 21, 36, 0.9));
1631
+ }
1632
+
1633
+ .kb-card-header {
1634
+ display: flex;
1635
+ justify-content: space-between;
1636
+ align-items: center;
1637
+ margin-bottom: 8px;
1638
+ }
1639
+
1640
+ .kb-title-with-badge {
1641
+ display: flex;
1642
+ align-items: center;
1643
+ gap: 8px;
1644
+ }
1645
+
1646
+ .kb-title-with-badge h4 {
1647
+ font-size: 0.96rem;
1648
+ font-weight: 700;
1649
+ color: var(--text-primary);
1650
+ letter-spacing: -0.2px;
1651
+ }
1652
+
1653
+ .tool-dot {
1654
+ width: 8px;
1655
+ height: 8px;
1656
+ border-radius: 50%;
1657
+ flex-shrink: 0;
1658
+ }
1659
+
1660
+ .live-dot {
1661
+ background-color: var(--color-cyan);
1662
+ box-shadow: 0 0 10px var(--color-cyan-glow);
1663
+ animation: pulseGlow 1.8s infinite;
1664
+ }
1665
+
1666
+ @keyframes pulseGlow {
1667
+
1668
+ 0%,
1669
+ 100% {
1670
+ transform: scale(1);
1671
+ opacity: 1;
1672
+ }
1673
+
1674
+ 50% {
1675
+ transform: scale(1.4);
1676
+ opacity: 0.5;
1677
+ }
1678
+ }
1679
+
1680
+ .pad-dot {
1681
+ background-color: var(--color-accent);
1682
+ box-shadow: 0 0 10px var(--color-accent-glow);
1683
+ }
1684
+
1685
+ .key-dot {
1686
+ background-color: #c084fc;
1687
+ box-shadow: 0 0 10px rgba(192, 132, 252, 0.5);
1688
+ }
1689
+
1690
+ .live-status-pill {
1691
+ font-size: 0.72rem;
1692
+ font-weight: 700;
1693
+ color: var(--color-cyan);
1694
+ background-color: rgba(0, 240, 255, 0.12);
1695
+ padding: 3px 10px;
1696
+ border-radius: 20px;
1697
+ border: 1px solid rgba(0, 240, 255, 0.3);
1698
+ }
1699
+
1700
+ .keypad-helper-badge {
1701
+ font-size: 0.7rem;
1702
+ font-weight: 600;
1703
+ color: #c084fc;
1704
+ background-color: rgba(192, 132, 252, 0.12);
1705
+ padding: 3px 8px;
1706
+ border-radius: 12px;
1707
+ border: 1px solid rgba(192, 132, 252, 0.25);
1708
+ }
1709
+
1710
+ .kb-tool-desc {
1711
+ font-size: 0.8rem;
1712
+ color: var(--text-secondary);
1713
+ margin-bottom: 12px;
1714
+ line-height: 1.4;
1715
+ }
1716
+
1717
+ /* Tool 1: Live Input Box Row */
1718
+ .live-input-box-wrapper {
1719
+ display: flex;
1720
+ align-items: center;
1721
+ gap: 8px;
1722
+ background-color: var(--bg-input);
1723
+ border: 1.5px solid rgba(255, 255, 255, 0.1);
1724
+ border-radius: 14px;
1725
+ padding: 4px 6px 4px 12px;
1726
+ transition: all 0.25s ease;
1727
+ }
1728
+
1729
+ .live-input-box-wrapper:focus-within {
1730
+ border-color: var(--color-cyan);
1731
+ box-shadow: 0 0 16px rgba(0, 240, 255, 0.3);
1732
+ background-color: rgba(10, 20, 38, 0.95);
1733
+ }
1734
+
1735
+ .live-input-icon {
1736
+ color: var(--color-cyan);
1737
+ flex-shrink: 0;
1738
+ }
1739
+
1740
+ .live-input-box-wrapper input {
1741
+ flex: 1;
1742
+ min-width: 0;
1743
+ background: transparent;
1744
+ border: none;
1745
+ outline: none;
1746
+ color: #ffffff;
1747
+ font-family: var(--font-main);
1748
+ font-size: 0.95rem;
1749
+ font-weight: 500;
1750
+ padding: 10px 0;
1751
+ }
1752
+
1753
+ .live-input-box-wrapper input::placeholder {
1754
+ color: var(--text-muted);
1755
+ font-size: 0.85rem;
1756
+ }
1757
+
1758
+ .kb-quick-action-btn {
1759
+ border: none;
1760
+ font-family: var(--font-main);
1761
+ font-size: 0.76rem;
1762
+ font-weight: 700;
1763
+ padding: 8px 12px;
1764
+ border-radius: 10px;
1765
+ cursor: pointer;
1766
+ white-space: nowrap;
1767
+ display: flex;
1768
+ align-items: center;
1769
+ justify-content: center;
1770
+ transition: all 0.15s ease;
1771
+ user-select: none;
1772
+ }
1773
+
1774
+ .kb-enter-pill {
1775
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.25), rgba(34, 160, 255, 0.35));
1776
+ border: 1px solid rgba(0, 240, 255, 0.4);
1777
+ color: var(--color-cyan);
1778
+ }
1779
+
1780
+ .kb-enter-pill:active {
1781
+ transform: scale(0.92);
1782
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.4), rgba(34, 160, 255, 0.5));
1783
+ }
1784
+
1785
+ .kb-backspace-pill {
1786
+ background: rgba(239, 68, 68, 0.18);
1787
+ border: 1px solid rgba(239, 68, 68, 0.35);
1788
+ color: #f87171;
1789
+ }
1790
+
1791
+ .kb-backspace-pill:active {
1792
+ transform: scale(0.92);
1793
+ background: rgba(239, 68, 68, 0.3);
1794
+ }
1795
+
1796
+ /* Tool 2: Desktop TextPad */
1797
+ .textpad-clear-link {
1798
+ background: transparent;
1799
+ border: none;
1800
+ color: var(--text-muted);
1801
+ font-family: var(--font-main);
1802
+ font-size: 0.78rem;
1803
+ font-weight: 600;
1804
+ cursor: pointer;
1805
+ transition: color 0.2s ease;
1806
+ padding: 2px 6px;
1807
+ }
1808
+
1809
+ .textpad-clear-link:hover {
1810
+ color: var(--color-danger);
1811
+ }
1812
+
1813
+ .textpad-wrapper {
1814
+ margin-bottom: 12px;
1815
+ }
1816
+
1817
+ .textpad-wrapper textarea {
1818
+ width: 100%;
1819
+ background-color: var(--bg-input);
1820
+ border: 1.5px solid rgba(255, 255, 255, 0.08);
1821
+ border-radius: 14px;
1822
+ padding: 12px;
1823
+ color: var(--text-primary);
1824
+ font-family: var(--font-main);
1825
+ font-size: 0.9rem;
1826
+ line-height: 1.4;
1827
+ resize: none;
1828
+ min-height: 85px;
1829
+ outline: none;
1830
+ transition: all 0.25s ease;
1831
+ }
1832
+
1833
+ .textpad-wrapper textarea:focus {
1834
+ border-color: var(--color-accent);
1835
+ box-shadow: 0 0 16px rgba(34, 160, 255, 0.3);
1836
+ background-color: rgba(10, 20, 38, 0.95);
1837
+ }
1838
+
1839
+ .send-textpad-btn {
1840
+ width: 100%;
1841
+ margin-top: 0;
1842
+ background: linear-gradient(135deg, #00c6ff, #0072ff);
1843
+ box-shadow: 0 4px 15px rgba(0, 198, 255, 0.35);
1844
+ font-weight: 700;
1845
+ }
1846
+
1847
+ .send-textpad-btn:hover {
1848
+ box-shadow: 0 6px 20px rgba(0, 198, 255, 0.5);
1849
+ transform: translateY(-1px);
1850
+ }
1851
+
1852
+ /* Tool 3: Keypad & Modifiers */
1853
+ .keypad-card {
1854
+ padding-bottom: 18px;
1855
+ }
1856
+
1857
+ .keypad-section-label {
1858
+ font-size: 0.7rem;
1859
+ font-weight: 700;
1860
+ text-transform: uppercase;
1861
+ letter-spacing: 0.8px;
1862
+ color: var(--text-muted);
1863
+ margin: 12px 0 8px 0;
1864
+ }
1865
+
1866
+ .keycode-grid {
1867
+ display: grid;
1868
+ gap: 8px;
1869
+ }
1870
+
1871
+ .grid-5 {
1872
+ grid-template-columns: repeat(5, 1fr);
1873
+ }
1874
+
1875
+ .grid-4 {
1876
+ grid-template-columns: repeat(4, 1fr);
1877
+ }
1878
+
1879
+ .grid-3 {
1880
+ grid-template-columns: repeat(3, 1fr);
1881
+ }
1882
+
1883
+ .keycode-btn {
1884
+ background: rgba(17, 26, 45, 0.9);
1885
+ border: 1px solid rgba(255, 255, 255, 0.09);
1886
+ color: var(--text-primary);
1887
+ font-family: var(--font-main);
1888
+ font-size: 0.82rem;
1889
+ font-weight: 700;
1890
+ padding: 12px 4px;
1891
+ border-radius: 12px;
1892
+ cursor: pointer;
1893
+ display: flex;
1894
+ align-items: center;
1895
+ justify-content: center;
1896
+ transition: all 0.15s ease;
1897
+ user-select: none;
1898
+ min-height: 44px;
1899
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
1900
+ }
1901
+
1902
+ .keycode-btn:hover {
1903
+ background-color: var(--bg-card-hover);
1904
+ border-color: rgba(255, 255, 255, 0.2);
1905
+ }
1906
+
1907
+ .keycode-btn:active,
1908
+ .keycode-btn.pressed {
1909
+ transform: scale(0.92);
1910
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.35), rgba(34, 160, 255, 0.45));
1911
+ border-color: var(--color-cyan);
1912
+ box-shadow: 0 0 14px var(--color-cyan-glow);
1913
+ color: #ffffff;
1914
+ }
1915
+
1916
+ /* Action key nuances */
1917
+ .esc-btn {
1918
+ color: #f87171;
1919
+ }
1920
+
1921
+ .tab-btn-key {
1922
+ color: #60a5fa;
1923
+ }
1924
+
1925
+ .shift-btn {
1926
+ color: #c084fc;
1927
+ }
1928
+
1929
+ .alt-btn {
1930
+ color: #f43f5e;
1931
+ }
1932
+
1933
+ .win-btn {
1934
+ color: #38bdf8;
1935
+ }
1936
+
1937
+ .fn-btn {
1938
+ color: #fbbf24;
1939
+ }
1940
+
1941
+ .space-btn {
1942
+ color: #34d399;
1943
+ }
1944
+
1945
+ .enter-btn {
1946
+ color: var(--color-cyan);
1947
+ font-weight: 800;
1948
+ font-size: 0.8rem;
1949
+ }
1950
+
1951
+ .enter-btn-full {
1952
+ grid-column: span 4;
1953
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.15), rgba(34, 160, 255, 0.22));
1954
+ border: 1px solid rgba(0, 240, 255, 0.35);
1955
+ color: var(--color-cyan);
1956
+ font-weight: 800;
1957
+ font-size: 0.88rem;
1958
+ }
1959
+
1960
+
1961
+ .shortcut-key {
1962
+ color: var(--color-accent);
1963
+ font-size: 0.82rem;
1964
+ background: rgba(34, 160, 255, 0.08);
1965
+ border-color: rgba(34, 160, 255, 0.2);
1966
+ }
1967
+
1968
+ .shortcut-key:hover {
1969
+ background: rgba(34, 160, 255, 0.18);
1970
+ }
1971
+
1972
+ .alt-shortcut {
1973
+ color: #f43f5e;
1974
+ background: rgba(244, 63, 94, 0.08);
1975
+ border-color: rgba(244, 63, 94, 0.25);
1976
+ }
1977
+
1978
+ .alt-shortcut:hover {
1979
+ background: rgba(244, 63, 94, 0.18);
1980
+ }
1981
+
1982
+
1983
+ /* Navigation Arrows & D-Pad */
1984
+ .nav-arrows-container {
1985
+ display: flex;
1986
+ align-items: center;
1987
+ justify-content: center;
1988
+ gap: 12px;
1989
+ margin-top: 6px;
1990
+ }
1991
+
1992
+ .nav-side-buttons {
1993
+ display: flex;
1994
+ flex-direction: column;
1995
+ gap: 8px;
1996
+ flex: 1;
1997
+ }
1998
+
1999
+ .nav-sub-btn {
2000
+ font-size: 0.78rem;
2001
+ padding: 8px 4px;
2002
+ min-height: 36px;
2003
+ color: #e2e8f0;
2004
+ }
2005
+
2006
+ .dpad-container {
2007
+ display: flex;
2008
+ flex-direction: column;
2009
+ align-items: center;
2010
+ gap: 6px;
2011
+ flex: 1.3;
2012
+ }
2013
+
2014
+ .dpad-horizontal {
2015
+ display: flex;
2016
+ gap: 6px;
2017
+ width: 100%;
2018
+ justify-content: center;
2019
+ }
2020
+
2021
+ .arrow-btn {
2022
+ width: 72px;
2023
+ height: 60px;
2024
+ font-size: 1.5rem;
2025
+ color: var(--color-cyan);
2026
+ background: rgba(0, 240, 255, 0.08);
2027
+ border-color: rgba(0, 240, 255, 0.25);
2028
+ padding: 0;
2029
+ }
2030
+
2031
+ .arrow-btn:active,
2032
+ .arrow-btn.pressed {
2033
+ background: var(--color-cyan);
2034
+ color: #040810;
2035
+ box-shadow: 0 0 16px var(--color-cyan-glow);
2036
+ }
2037
+
2038
+ /* ================= Bluetooth Tab Styling ================= */
2039
+ .bt-action-box {
2040
+ margin-bottom: 12px;
2041
+ }
2042
+
2043
+ .bt-tethering-card {
2044
+ background: linear-gradient(135deg, rgba(14, 21, 36, 0.9), rgba(21, 29, 48, 0.9));
2045
+ border: 1px solid rgba(0, 240, 255, 0.25);
2046
+ border-radius: 16px;
2047
+ padding: 16px;
2048
+ margin-bottom: 14px;
2049
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.25);
2050
+ }
2051
+
2052
+ .bt-card-header {
2053
+ display: flex;
2054
+ align-items: flex-start;
2055
+ gap: 12px;
2056
+ margin-bottom: 12px;
2057
+ }
2058
+
2059
+ .bt-badge-icon {
2060
+ width: 38px;
2061
+ height: 38px;
2062
+ border-radius: 10px;
2063
+ background: rgba(0, 240, 255, 0.12);
2064
+ color: var(--color-cyan);
2065
+ display: flex;
2066
+ align-items: center;
2067
+ justify-content: center;
2068
+ flex-shrink: 0;
2069
+ }
2070
+
2071
+ .bt-card-header strong {
2072
+ font-size: 0.92rem;
2073
+ color: var(--text-primary);
2074
+ display: block;
2075
+ margin-bottom: 3px;
2076
+ }
2077
+
2078
+ .bt-card-header p {
2079
+ font-size: 0.78rem;
2080
+ color: var(--text-secondary);
2081
+ line-height: 1.35;
2082
+ }
2083
+
2084
+ .bt-connect-btn {
2085
+ width: 100%;
2086
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.15), rgba(34, 160, 255, 0.2));
2087
+ border: 1px solid var(--color-cyan);
2088
+ color: var(--color-cyan);
2089
+ font-weight: 600;
2090
+ padding: 11px;
2091
+ border-radius: 12px;
2092
+ cursor: pointer;
2093
+ transition: all 0.2s ease;
2094
+ }
2095
+
2096
+ .bt-connect-btn:hover {
2097
+ background: linear-gradient(135deg, rgba(0, 240, 255, 0.25), rgba(34, 160, 255, 0.35));
2098
+ box-shadow: 0 0 12px var(--color-cyan-glow);
2099
+ }
2100
+
2101
+ /* How to Connect & Troubleshooting Detailed Screens */
2102
+ .guide-scroll-area {
2103
+ padding: 16px 18px 90px 18px;
2104
+ }
2105
+
2106
+ .guide-intro-card {
2107
+ background: linear-gradient(135deg, rgba(34, 160, 255, 0.12), rgba(0, 240, 255, 0.05));
2108
+ border: 1px solid rgba(34, 160, 255, 0.25);
2109
+ border-radius: 16px;
2110
+ padding: 16px;
2111
+ margin-bottom: 20px;
2112
+ }
2113
+
2114
+ .guide-badge {
2115
+ display: inline-block;
2116
+ background: rgba(34, 160, 255, 0.2);
2117
+ color: var(--color-cyan);
2118
+ font-size: 0.72rem;
2119
+ font-weight: 600;
2120
+ padding: 4px 10px;
2121
+ border-radius: 12px;
2122
+ margin-bottom: 8px;
2123
+ text-transform: uppercase;
2124
+ letter-spacing: 0.5px;
2125
+ }
2126
+
2127
+ .faq-badge {
2128
+ background: rgba(255, 170, 0, 0.2);
2129
+ color: #ffaa00;
2130
+ }
2131
+
2132
+ .guide-subtitle {
2133
+ font-size: 0.85rem;
2134
+ color: var(--text-primary);
2135
+ line-height: 1.4;
2136
+ }
2137
+
2138
+ .guide-steps-list {
2139
+ display: flex;
2140
+ flex-direction: column;
2141
+ gap: 16px;
2142
+ }
2143
+
2144
+ .guide-step-card {
2145
+ background-color: var(--bg-card);
2146
+ border: 1px solid var(--border-color);
2147
+ border-radius: 16px;
2148
+ padding: 16px;
2149
+ display: flex;
2150
+ gap: 14px;
2151
+ align-items: flex-start;
2152
+ }
2153
+
2154
+ .step-number-badge {
2155
+ width: 32px;
2156
+ height: 32px;
2157
+ border-radius: 50%;
2158
+ background-color: var(--color-accent);
2159
+ color: #fff;
2160
+ font-size: 0.95rem;
2161
+ font-weight: 700;
2162
+ display: flex;
2163
+ align-items: center;
2164
+ justify-content: center;
2165
+ flex-shrink: 0;
2166
+ box-shadow: 0 0 10px var(--color-accent-glow);
2167
+ }
2168
+
2169
+ .step-content {
2170
+ flex: 1;
2171
+ }
2172
+
2173
+ .step-content h4 {
2174
+ font-size: 0.95rem;
2175
+ font-weight: 600;
2176
+ color: var(--text-primary);
2177
+ margin-bottom: 6px;
2178
+ }
2179
+
2180
+ .step-content p {
2181
+ font-size: 0.82rem;
2182
+ color: var(--text-secondary);
2183
+ line-height: 1.45;
2184
+ }
2185
+
2186
+ .step-subtext {
2187
+ margin-top: 6px;
2188
+ }
2189
+
2190
+ .code-snippet-box {
2191
+ background-color: var(--bg-input);
2192
+ border: 1px solid var(--border-color);
2193
+ border-radius: 8px;
2194
+ padding: 8px 12px;
2195
+ margin: 8px 0;
2196
+ font-family: monospace;
2197
+ font-size: 0.82rem;
2198
+ color: var(--color-cyan);
2199
+ word-break: break-all;
2200
+ }
2201
+
2202
+ .option-subblock {
2203
+ background-color: var(--bg-input);
2204
+ border-radius: 10px;
2205
+ padding: 10px;
2206
+ }
2207
+
2208
+ .option-pill {
2209
+ font-size: 0.72rem;
2210
+ font-weight: 600;
2211
+ color: var(--color-accent);
2212
+ margin-bottom: 4px;
2213
+ }
2214
+
2215
+ .gesture-bullets {
2216
+ margin-top: 8px;
2217
+ padding-left: 18px;
2218
+ font-size: 0.8rem;
2219
+ color: var(--text-secondary);
2220
+ line-height: 1.5;
2221
+ }
2222
+
2223
+ /* FAQ / Troubleshooting list */
2224
+ .faq-list {
2225
+ display: flex;
2226
+ flex-direction: column;
2227
+ gap: 14px;
2228
+ }
2229
+
2230
+ .faq-item {
2231
+ background-color: var(--bg-card);
2232
+ border: 1px solid var(--border-color);
2233
+ border-radius: 16px;
2234
+ padding: 16px;
2235
+ }
2236
+
2237
+ .faq-question {
2238
+ display: flex;
2239
+ align-items: center;
2240
+ gap: 10px;
2241
+ font-size: 0.9rem;
2242
+ font-weight: 600;
2243
+ color: var(--text-primary);
2244
+ margin-bottom: 10px;
2245
+ }
2246
+
2247
+ .faq-icon {
2248
+ color: var(--color-accent);
2249
+ flex-shrink: 0;
2250
+ }
2251
+
2252
+ .faq-answer {
2253
+ font-size: 0.82rem;
2254
+ color: var(--text-secondary);
2255
+ line-height: 1.5;
2256
+ }
2257
+
2258
+ .faq-answer ol,
2259
+ .faq-answer ul {
2260
+ margin-top: 6px;
2261
+ padding-left: 18px;
2262
+ }
2263
+
2264
+ .faq-answer li {
2265
+ margin-bottom: 4px;
2266
+ }
2267
+
2268
+ /* ================= Outside Expandable Connected Card & Option Accordion ================= */
2269
+ .expandable-card {
2270
+ background: linear-gradient(135deg, rgba(14, 25, 45, 0.95), rgba(20, 32, 58, 0.9));
2271
+ border: 1px solid rgba(0, 240, 255, 0.25);
2272
+ border-radius: 16px;
2273
+ margin-bottom: 16px;
2274
+ overflow: hidden;
2275
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25), 0 0 12px rgba(0, 240, 255, 0.08);
2276
+ transition: border-color 0.3s ease, box-shadow 0.3s ease;
2277
+ }
2278
+
2279
+ .expandable-card.is-expanded {
2280
+ border-color: rgba(0, 240, 255, 0.5);
2281
+ box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35), 0 0 16px rgba(0, 240, 255, 0.15);
2282
+ }
2283
+
2284
+ .expandable-card-header {
2285
+ width: 100%;
2286
+ display: flex;
2287
+ align-items: center;
2288
+ justify-content: space-between;
2289
+ padding: 12px 14px;
2290
+ background: transparent;
2291
+ border: none;
2292
+ cursor: pointer;
2293
+ color: var(--text-primary);
2294
+ text-align: left;
2295
+ }
2296
+
2297
+ .card-header-main {
2298
+ display: flex;
2299
+ align-items: center;
2300
+ gap: 10px;
2301
+ }
2302
+
2303
+ .card-header-text {
2304
+ display: flex;
2305
+ flex-direction: column;
2306
+ }
2307
+
2308
+ .card-header-text strong {
2309
+ font-size: 0.85rem;
2310
+ font-weight: 700;
2311
+ color: var(--text-primary);
2312
+ }
2313
+
2314
+ .card-header-text span {
2315
+ font-size: 0.73rem;
2316
+ color: var(--text-secondary);
2317
+ }
2318
+
2319
+ .card-expand-badge {
2320
+ display: flex;
2321
+ align-items: center;
2322
+ gap: 6px;
2323
+ font-size: 0.72rem;
2324
+ font-weight: 600;
2325
+ color: var(--color-cyan);
2326
+ background: rgba(0, 240, 255, 0.1);
2327
+ padding: 4px 10px;
2328
+ border-radius: 20px;
2329
+ border: 1px solid rgba(0, 240, 255, 0.2);
2330
+ }
2331
+
2332
+ .chevron-icon {
2333
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
2334
+ }
2335
+
2336
+ .expandable-card.is-expanded .chevron-icon,
2337
+ .options-accordion-btn.is-expanded .chevron-icon {
2338
+ transform: rotate(180deg);
2339
+ }
2340
+
2341
+ .expandable-card-content {
2342
+ max-height: 0;
2343
+ overflow: hidden;
2344
+ transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1), padding 0.35s ease;
2345
+ padding: 0 14px;
2346
+ }
2347
+
2348
+ .expandable-card.is-expanded .expandable-card-content {
2349
+ max-height: 380px;
2350
+ padding: 10px 14px 14px 14px;
2351
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
2352
+ }
2353
+
2354
+ .connected-meta-grid {
2355
+ display: grid;
2356
+ grid-template-columns: 1fr 1fr;
2357
+ gap: 8px 12px;
2358
+ margin-bottom: 12px;
2359
+ padding: 10px;
2360
+ background: rgba(8, 14, 26, 0.6);
2361
+ border-radius: 12px;
2362
+ border: 1px solid var(--border-color);
2363
+ }
2364
+
2365
+ .meta-item {
2366
+ display: flex;
2367
+ flex-direction: column;
2368
+ gap: 2px;
2369
+ }
2370
+
2371
+ .meta-item.full-width {
2372
+ grid-column: 1 / -1;
2373
+ }
2374
+
2375
+ .meta-label {
2376
+ font-size: 0.7rem;
2377
+ color: var(--text-muted);
2378
+ font-weight: 600;
2379
+ text-transform: uppercase;
2380
+ letter-spacing: 0.4px;
2381
+ }
2382
+
2383
+ .meta-val {
2384
+ font-size: 0.82rem;
2385
+ font-weight: 600;
2386
+ color: var(--text-primary);
2387
+ word-break: break-all;
2388
+ }
2389
+
2390
+ .pin-badge {
2391
+ display: inline-block;
2392
+ font-family: monospace;
2393
+ font-weight: 800;
2394
+ color: #00f0ff;
2395
+ background: rgba(0, 240, 255, 0.15);
2396
+ padding: 2px 8px;
2397
+ border-radius: 6px;
2398
+ width: fit-content;
2399
+ letter-spacing: 1px;
2400
+ box-shadow: 0 0 8px rgba(0, 240, 255, 0.2);
2401
+ }
2402
+
2403
+ .option-badge {
2404
+ display: inline-block;
2405
+ font-size: 0.75rem;
2406
+ font-weight: 700;
2407
+ color: var(--color-accent);
2408
+ background: rgba(34, 160, 255, 0.12);
2409
+ padding: 2px 8px;
2410
+ border-radius: 6px;
2411
+ width: fit-content;
2412
+ }
2413
+
2414
+ .card-quick-actions {
2415
+ display: flex;
2416
+ gap: 8px;
2417
+ }
2418
+
2419
+ .card-action-btn {
2420
+ flex: 1;
2421
+ display: flex;
2422
+ align-items: center;
2423
+ justify-content: center;
2424
+ gap: 6px;
2425
+ padding: 9px 12px;
2426
+ border-radius: 10px;
2427
+ font-size: 0.78rem;
2428
+ font-weight: 600;
2429
+ cursor: pointer;
2430
+ transition: all 0.2s ease;
2431
+ }
2432
+
2433
+ .card-action-btn.primary {
2434
+ background: linear-gradient(135deg, var(--color-cyan), var(--color-accent));
2435
+ color: #040810;
2436
+ border: none;
2437
+ }
2438
+
2439
+ .card-action-btn.primary:hover {
2440
+ opacity: 0.92;
2441
+ transform: translateY(-1px);
2442
+ }
2443
+
2444
+ .card-action-btn.secondary {
2445
+ background: rgba(255, 255, 255, 0.06);
2446
+ border: 1px solid var(--border-color);
2447
+ color: var(--text-primary);
2448
+ }
2449
+
2450
+ .card-action-btn.secondary:hover {
2451
+ background: rgba(255, 255, 255, 0.12);
2452
+ }
2453
+
2454
+ /* ================= Expandable Options Accordion Button ================= */
2455
+ .options-accordion-btn {
2456
+ width: 100%;
2457
+ display: flex;
2458
+ align-items: center;
2459
+ justify-content: space-between;
2460
+ background: rgba(255, 255, 255, 0.04);
2461
+ border: 1px dashed rgba(0, 240, 255, 0.3);
2462
+ border-radius: 12px;
2463
+ padding: 10px 14px;
2464
+ margin: 10px 0;
2465
+ color: var(--color-cyan);
2466
+ font-size: 0.8rem;
2467
+ font-weight: 600;
2468
+ cursor: pointer;
2469
+ transition: all 0.25 ease;
2470
+ }
2471
+
2472
+ .options-accordion-btn:hover {
2473
+ background: rgba(0, 240, 255, 0.08);
2474
+ border-style: solid;
2475
+ }
2476
+
2477
+ .acc-btn-left {
2478
+ display: flex;
2479
+ align-items: center;
2480
+ gap: 8px;
2481
+ }
2482
+
2483
+ .acc-icon {
2484
+ color: var(--color-cyan);
2485
+ flex-shrink: 0;
2486
+ }
2487
+
2488
+ .options-accordion-content {
2489
+ max-height: 0;
2490
+ overflow: hidden;
2491
+ transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
2492
+ }
2493
+
2494
+ .options-accordion-content.is-expanded {
2495
+ max-height: 320px;
2496
+ padding-top: 4px;
2497
+ }
2498
+
2499
+
2500
+ /* ================= Unified Keyboard Card Mode Toggle ================= */
2501
+ .unified-keyboard-card {
2502
+ transition: all 0.3s ease;
2503
+ }
2504
+
2505
+ .keyboard-mode-toggle {
2506
+ display: flex;
2507
+ background: rgba(8, 14, 26, 0.6);
2508
+ border: 1px solid var(--border-color);
2509
+ border-radius: 12px;
2510
+ padding: 4px;
2511
+ margin-bottom: 12px;
2512
+ }
2513
+
2514
+ .mode-toggle-btn {
2515
+ flex: 1;
2516
+ background: transparent;
2517
+ border: none;
2518
+ color: var(--text-secondary);
2519
+ padding: 10px;
2520
+ font-size: 0.85rem;
2521
+ font-weight: 700;
2522
+ border-radius: 8px;
2523
+ cursor: pointer;
2524
+ transition: all 0.25s ease;
2525
+ text-align: center;
2526
+ }
2527
+
2528
+ .mode-toggle-btn:hover {
2529
+ color: var(--text-primary);
2530
+ background: rgba(255, 255, 255, 0.05);
2531
+ }
2532
+
2533
+ .mode-toggle-btn.active {
2534
+ background: rgba(0, 240, 255, 0.15);
2535
+ color: var(--color-cyan);
2536
+ box-shadow: 0 0 10px rgba(0, 240, 255, 0.1);
2537
+ }
2538
+
2539
+ .keyboard-view {
2540
+ animation: fadeIn 0.3s ease-in-out;
2541
+ }
2542
+
2543
+ @keyframes fadeIn {
2544
+ from {
2545
+ opacity: 0;
2546
+ transform: translateY(5px);
2547
+ }
2548
+
2549
+ to {
2550
+ opacity: 1;
2551
+ transform: translateY(0);
2552
+ }
2553
+ }
2554
+
2555
+ /* --- File Transfer UI --- */
2556
+ .progress-bar-bg {
2557
+ width: 100%;
2558
+ height: 6px;
2559
+ background: rgba(255, 255, 255, 0.1);
2560
+ border-radius: 3px;
2561
+ overflow: hidden;
2562
+ }
2563
+
2564
+ .progress-bar-fill {
2565
+ width: 0%;
2566
+ height: 100%;
2567
+ background: var(--color-cyan);
2568
+ transition: width 0.2s ease-out;
2569
+ }
2570
+
2571
+ .file-list-container {
2572
+ max-height: 250px;
2573
+ overflow-y: auto;
2574
+ display: flex;
2575
+ flex-direction: column;
2576
+ gap: 8px;
2577
+ margin-top: 8px;
2578
+ }
2579
+
2580
+ .file-list-item {
2581
+ display: flex;
2582
+ justify-content: space-between;
2583
+ align-items: center;
2584
+ padding: 10px 14px;
2585
+ background: rgba(255, 255, 255, 0.05);
2586
+ border-radius: 8px;
2587
+ border: 1px solid rgba(255, 255, 255, 0.1);
2588
+ }
2589
+
2590
+ .file-list-item:hover {
2591
+ background: rgba(255, 255, 255, 0.08);
2592
+ }
2593
+
2594
+ .file-info {
2595
+ display: flex;
2596
+ flex-direction: column;
2597
+ overflow: hidden;
2598
+ flex: 1;
2599
+ margin-right: 12px;
2600
+ }
2601
+
2602
+ .file-name {
2603
+ font-size: 0.95rem;
2604
+ font-weight: 500;
2605
+ color: #f8fafc;
2606
+ white-space: nowrap;
2607
+ overflow: hidden;
2608
+ text-overflow: ellipsis;
2609
+ }
2610
+
2611
+ .file-size {
2612
+ font-size: 0.8rem;
2613
+ color: #94a3b8;
2614
+ margin-top: 2px;
2615
+ }
2616
+
2617
+ .file-actions {
2618
+ display: flex;
2619
+ gap: 12px;
2620
+ align-items: center;
2621
+ }
2622
+
2623
+ .file-action-btn {
2624
+ background: rgba(255, 255, 255, 0.1);
2625
+ border: none;
2626
+ color: #e2e8f0;
2627
+ width: 36px;
2628
+ height: 36px;
2629
+ border-radius: 8px;
2630
+ display: flex;
2631
+ align-items: center;
2632
+ justify-content: center;
2633
+ cursor: pointer;
2634
+ transition: all 0.2s;
2635
+ padding: 0;
2636
+ }
2637
+
2638
+ .file-action-btn svg {
2639
+ width: 18px;
2640
+ height: 18px;
2641
+ }
2642
+
2643
+ .file-action-btn:hover {
2644
+ background: var(--color-cyan);
2645
+ color: #0f172a;
2646
+ }
2647
+
2648
+ .file-action-btn.del-btn:hover {
2649
+ background: #ef4444;
2650
+ color: white;
2651
+ }