@goodea/echolet 0.1.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.
Files changed (33) hide show
  1. package/dist/cli.js +39712 -0
  2. package/dist/cli.red-24474.js +37801 -0
  3. package/dist/tui.js +1478 -0
  4. package/package.json +46 -0
  5. package/web-dist/client/assets/concepts/amber_terminal_ui_1789858657697.jpg +0 -0
  6. package/web-dist/client/assets/concepts/avionics_cockpit_ui_1789858538190.jpg +0 -0
  7. package/web-dist/client/assets/concepts/bathyscaphe_sonar_ui_1789858725632.jpg +0 -0
  8. package/web-dist/client/assets/concepts/polar_expedition_ui_1789858484680.jpg +0 -0
  9. package/web-dist/client/assets/concepts/spy_briefcase_ui_1789858596025.jpg +0 -0
  10. package/web-dist/client/assets/skins/audiophile-hifi/chassis.jpg +0 -0
  11. package/web-dist/client/assets/skins/military-r250/chassis.jpg +0 -0
  12. package/web-dist/client/assets/skins/nixie-tube/chassis.jpg +0 -0
  13. package/web-dist/client/assets/skins/nordic-op1/chassis.png +0 -0
  14. package/web-dist/client/assets/skins/oscilloscope-crt/chassis.jpg +0 -0
  15. package/web-dist/client/assets/skins/vintage-radiola/chassis.jpg +0 -0
  16. package/web-dist/client/audiophile_tube_ui_1789836391373.jpg +0 -0
  17. package/web-dist/client/bundle.js +66 -0
  18. package/web-dist/client/cyberdeck_spectrum_ui_1789835241900.jpg +0 -0
  19. package/web-dist/client/echolet_obsidian_clean_1789834739350.jpg +0 -0
  20. package/web-dist/client/echolet_split_horizon_1789834765974.jpg +0 -0
  21. package/web-dist/client/echolet_tactical_terminal_1789834714340.jpg +0 -0
  22. package/web-dist/client/gallery.html +541 -0
  23. package/web-dist/client/glassmorphic_radio_ui_1789835283668.jpg +0 -0
  24. package/web-dist/client/index.html +17 -0
  25. package/web-dist/client/nixie_tube_messenger_1789836184230.jpg +0 -0
  26. package/web-dist/client/op1_minimal_skin_1789836795427.jpg +0 -0
  27. package/web-dist/client/soviet_tube_radio_1789836251332.jpg +0 -0
  28. package/web-dist/client/stealth_zerotrace_ui_1789835261306.jpg +0 -0
  29. package/web-dist/client/steampunk_brass_ui_1789836339337.jpg +0 -0
  30. package/web-dist/client/styles.css +3725 -0
  31. package/web-dist/client/tube_oscilloscope_ui_1789836294852.jpg +0 -0
  32. package/web-dist/client/vintage_radiola_ui_1789836216660.jpg +0 -0
  33. package/web-dist/server.js +460 -0
@@ -0,0 +1,3725 @@
1
+ /* ==========================================================================
2
+ ECHOLET ULTRA HIGH-FIDELITY SKEUOMORPHIC TUBE HARDWARE SYSTEM
3
+ ========================================================================== */
4
+
5
+ * {
6
+ box-sizing: border-box;
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+
11
+ body {
12
+ background-color: #080503;
13
+ color: #fdfbf7;
14
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
15
+ height: 100vh;
16
+ overflow: hidden;
17
+ -webkit-font-smoothing: antialiased;
18
+ }
19
+
20
+ /* Animations */
21
+ @keyframes tubeFlicker {
22
+ 0% { opacity: 0.92; filter: drop-shadow(0 0 8px #f59e0b); }
23
+ 50% { opacity: 1; filter: drop-shadow(0 0 16px #ea580c); }
24
+ 100% { opacity: 0.95; filter: drop-shadow(0 0 11px #f59e0b); }
25
+ }
26
+
27
+ @keyframes magicEyeSector {
28
+ 0% { transform: scaleX(0.75) rotate(-5deg); }
29
+ 50% { transform: scaleX(1.1) rotate(5deg); }
30
+ 100% { transform: scaleX(0.85) rotate(0deg); }
31
+ }
32
+
33
+ /* Outer Presentation Environment */
34
+ .radio-outer-wrap {
35
+ width: 100vw;
36
+ height: 100vh;
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ padding: 16px;
41
+ position: relative;
42
+ user-select: none;
43
+ }
44
+
45
+ /* Theme Environments (Tabletops) */
46
+ .skin-vintage-radiola {
47
+ background: radial-gradient(circle at 50% 35%, #2a150c 0%, #150904 60%, #060301 100%);
48
+ }
49
+
50
+ .skin-military-r250 {
51
+ background: radial-gradient(circle at 50% 35%, #273123 0%, #151b13 60%, #060905 100%);
52
+ }
53
+
54
+ .skin-audiophile-hifi {
55
+ background: radial-gradient(circle at 50% 35%, #1e293b 0%, #0f172a 60%, #020617 100%);
56
+ }
57
+
58
+ .skin-oscilloscope-crt {
59
+ background: radial-gradient(circle at 50% 35%, #1a271f 0%, #0e1712 60%, #040805 100%);
60
+ }
61
+
62
+ .skin-nixie-tube {
63
+ background: radial-gradient(circle at 50% 35%, #2c1a0e 0%, #170d07 60%, #070302 100%);
64
+ }
65
+
66
+ .skin-nordic-op1 {
67
+ background: radial-gradient(circle at 50% 35%, #f4f5f7 0%, #e5e7eb 65%, #cbd5e1 100%);
68
+ color: #111827;
69
+ }
70
+
71
+ /* ==========================================================================
72
+ THE PHYSICAL RADIO CABINET (THE CASING)
73
+ ========================================================================== */
74
+ .radio-cabinet {
75
+ width: 96vw;
76
+ max-width: 1380px;
77
+ height: 94vh;
78
+ max-height: 860px;
79
+ display: flex;
80
+ flex-direction: column;
81
+ position: relative;
82
+ overflow: hidden;
83
+ box-shadow: 0 35px 90px rgba(0, 0, 0, 0.95), 0 10px 30px rgba(0, 0, 0, 0.85);
84
+ }
85
+
86
+ /* 1. RADIOLA CABINET: POLISHED MAHOGANY WOOD */
87
+ .skin-vintage-radiola .radio-cabinet {
88
+ border-radius: 32px;
89
+ border: 14px solid #3a1a09;
90
+ background: linear-gradient(180deg, #45210e 0%, #2b1307 45%, #150903 100%);
91
+ box-shadow: 0 40px 100px rgba(0, 0, 0, 0.95), inset 0 3px 6px rgba(254, 215, 170, 0.35), inset 0 -4px 8px rgba(0, 0, 0, 0.8);
92
+ }
93
+
94
+ /* 2. MILITARY R-250 CABINET: HAMMERED ENAMEL METAL */
95
+ .skin-military-r250 .radio-cabinet {
96
+ border-radius: 14px;
97
+ border: 12px solid #3c4936;
98
+ background: linear-gradient(180deg, #303a2b 0%, #22291e 50%, #141912 100%);
99
+ box-shadow: 0 40px 100px rgba(0, 0, 0, 0.95), inset 0 2px 4px rgba(255, 255, 255, 0.25);
100
+ }
101
+
102
+ /* 3. AUDIOPHILE HI-FI CABINET: WALNUT CHEEKS & CHROME/BLACK */
103
+ .skin-audiophile-hifi .radio-cabinet {
104
+ border-radius: 14px;
105
+ border-left: 18px solid #3b2011;
106
+ border-right: 18px solid #3b2011;
107
+ border-top: 6px solid #475569;
108
+ border-bottom: 8px solid #1e293b;
109
+ background: #090d16;
110
+ box-shadow: 0 40px 100px rgba(0, 0, 0, 0.95), inset 0 2px 6px rgba(255, 255, 255, 0.6);
111
+ }
112
+
113
+ /* 4. CRT OSCILLOSCOPE CABINET */
114
+ .skin-oscilloscope-crt .radio-cabinet {
115
+ border-radius: 12px;
116
+ border: 10px solid #28372d;
117
+ background: #0d1611;
118
+ box-shadow: 0 40px 100px rgba(0, 0, 0, 0.95);
119
+ }
120
+
121
+ /* 5. NIXIE CABINET */
122
+ .skin-nixie-tube .radio-cabinet {
123
+ border-radius: 18px;
124
+ border: 12px solid #452613;
125
+ background: #150a04;
126
+ box-shadow: 0 40px 100px rgba(0, 0, 0, 0.95);
127
+ }
128
+
129
+ /* 6. NORDIC OP-1 CABINET: CNC MILLED ANODIZED ALUMINUM */
130
+ .skin-nordic-op1 .radio-cabinet {
131
+ border-radius: 28px;
132
+ border: 12px solid #d4d6db;
133
+ background: #e2e4e8;
134
+ box-shadow: 0 35px 80px rgba(0, 0, 0, 0.16), 0 10px 25px rgba(0, 0, 0, 0.1), inset 0 2px 4px #ffffff;
135
+ }
136
+
137
+ /* Chrome Handles for Military Cabinet */
138
+ .chassis-rack-handle {
139
+ position: absolute;
140
+ top: 18%;
141
+ bottom: 18%;
142
+ width: 12px;
143
+ background: linear-gradient(90deg, #94a3b8 0%, #f8fafc 50%, #475569 100%);
144
+ border-radius: 6px;
145
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.8), inset 0 1px 2px #fff;
146
+ z-index: 10;
147
+ }
148
+ .chassis-rack-handle.handle-left { left: -6px; }
149
+ .chassis-rack-handle.handle-right { right: -6px; }
150
+
151
+ /* ==========================================================================
152
+ TOP DECK HEADERS (MATCHING ARTWORK COMPOSITION)
153
+ ========================================================================== */
154
+
155
+ /* 1. RADIOLA TOP DECK */
156
+ .radiola-top-deck {
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: space-between;
160
+ padding: 10px 24px;
161
+ background: linear-gradient(180deg, #3d1b08 0%, #251004 100%);
162
+ border-bottom: 3px solid #57290c;
163
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.6);
164
+ gap: 16px;
165
+ }
166
+
167
+ .radiola-brand-group {
168
+ display: flex;
169
+ flex-direction: column;
170
+ }
171
+
172
+ .radiola-gold-script {
173
+ font-family: 'Brush Script MT', 'Marck Script', cursive, Georgia, serif;
174
+ font-size: 40px;
175
+ color: #fef08a;
176
+ text-shadow: 0 0 14px rgba(253, 230, 138, 0.6), 0 2px 4px #000;
177
+ line-height: 1;
178
+ }
179
+
180
+ .radiola-gold-sub {
181
+ font-family: 'Times New Roman', serif;
182
+ font-size: 9px;
183
+ letter-spacing: 1.5px;
184
+ color: #d97706;
185
+ font-weight: bold;
186
+ text-transform: uppercase;
187
+ margin-top: 2px;
188
+ }
189
+
190
+ /* Vertical Capsule Brass 6E5S Magic Eye */
191
+ .radiola-magiceye-capsule {
192
+ display: flex;
193
+ flex-direction: column;
194
+ align-items: center;
195
+ gap: 2px;
196
+ }
197
+
198
+ .radiola-magiceye-outer-bezel {
199
+ width: 34px;
200
+ height: 54px;
201
+ border-radius: 17px;
202
+ background: linear-gradient(180deg, #d97706 0%, #78350f 100%);
203
+ padding: 3px;
204
+ box-shadow: 0 4px 8px rgba(0,0,0,0.6), inset 0 1px 2px #fde68a;
205
+ }
206
+
207
+ .radiola-magiceye-lens {
208
+ width: 100%;
209
+ height: 100%;
210
+ border-radius: 14px;
211
+ background: #021a0a;
212
+ border: 1.5px solid #064e3b;
213
+ display: flex;
214
+ align-items: center;
215
+ justify-content: center;
216
+ overflow: hidden;
217
+ box-shadow: inset 0 0 8px #000;
218
+ }
219
+
220
+ .radiola-magiceye-phosphor {
221
+ width: 22px;
222
+ height: 22px;
223
+ border-radius: 50%;
224
+ background: radial-gradient(circle, #34d399 0%, #059669 65%, transparent 100%);
225
+ box-shadow: 0 0 14px #10b981, 0 0 25px #059669;
226
+ clip-path: polygon(50% 50%, 15% 0, 85% 0, 100% 100%, 0 100%);
227
+ animation: magicEyeSector 3.5s infinite alternate ease-in-out;
228
+ }
229
+
230
+ .radiola-magiceye-label {
231
+ font-family: 'Times New Roman', serif;
232
+ font-size: 8px;
233
+ font-weight: 900;
234
+ color: #fde68a;
235
+ }
236
+
237
+ /* The Great Illuminated Amber Glass Tuning Scale */
238
+ .radiola-scale-bezel {
239
+ flex: 1;
240
+ max-width: 580px;
241
+ height: 76px;
242
+ background: radial-gradient(ellipse at 50% 50%, #fef3c7 0%, #f59e0b 45%, #92400e 85%, #451a03 100%);
243
+ border: 3.5px solid #78350f;
244
+ border-radius: 8px;
245
+ box-shadow: 0 0 28px rgba(245, 158, 11, 0.45), inset 0 2px 6px rgba(0,0,0,0.7);
246
+ position: relative;
247
+ overflow: hidden;
248
+ padding: 6px 14px;
249
+ }
250
+
251
+ .radiola-scale-glare {
252
+ position: absolute;
253
+ top: 0;
254
+ left: 0;
255
+ right: 0;
256
+ height: 45%;
257
+ background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(255,255,255,0) 100%);
258
+ pointer-events: none;
259
+ }
260
+
261
+ .radiola-scale-inner {
262
+ display: flex;
263
+ flex-direction: column;
264
+ justify-content: space-between;
265
+ height: 100%;
266
+ font-family: 'Times New Roman', Georgia, serif;
267
+ color: #2b1204;
268
+ font-weight: bold;
269
+ user-select: none;
270
+ }
271
+
272
+ .scale-khz-row,
273
+ .scale-mhz-row {
274
+ display: flex;
275
+ justify-content: space-between;
276
+ font-size: 9px;
277
+ letter-spacing: 0.5px;
278
+ }
279
+
280
+ .scale-unit {
281
+ font-weight: 900;
282
+ color: #1a0a02;
283
+ }
284
+
285
+ .scale-cities-row {
286
+ display: flex;
287
+ justify-content: space-around;
288
+ font-size: 10px;
289
+ letter-spacing: 1.2px;
290
+ color: #1f0b02;
291
+ font-weight: 900;
292
+ }
293
+
294
+ .active-station-city {
295
+ color: #991b1b;
296
+ text-shadow: 0 0 4px rgba(153, 27, 27, 0.4);
297
+ }
298
+
299
+ .active-freq-number {
300
+ background: #991b1b;
301
+ color: #fef08a;
302
+ padding: 0 4px;
303
+ border-radius: 2px;
304
+ }
305
+
306
+ .radiola-needle-assembly {
307
+ position: absolute;
308
+ top: 0;
309
+ bottom: 0;
310
+ left: 54%;
311
+ width: 2px;
312
+ display: flex;
313
+ flex-direction: column;
314
+ align-items: center;
315
+ pointer-events: none;
316
+ }
317
+
318
+ .radiola-gold-needle {
319
+ width: 2.5px;
320
+ flex: 1;
321
+ background: linear-gradient(180deg, #fde68a 0%, #dc2626 50%, #991b1b 100%);
322
+ box-shadow: 0 0 6px #dc2626;
323
+ }
324
+
325
+ .radiola-needle-slider {
326
+ background: linear-gradient(180deg, #d97706 0%, #78350f 100%);
327
+ border: 1px solid #fde68a;
328
+ border-radius: 3px;
329
+ font-family: 'Times New Roman', serif;
330
+ font-size: 7px;
331
+ font-weight: bold;
332
+ color: #fff;
333
+ padding: 1px 5px;
334
+ margin-bottom: 2px;
335
+ white-space: nowrap;
336
+ }
337
+
338
+ /* Radiola Switches & Selector Group */
339
+ .radiola-switches-group {
340
+ display: flex;
341
+ align-items: center;
342
+ gap: 16px;
343
+ }
344
+
345
+ .radiola-toggle-unit {
346
+ display: flex;
347
+ flex-direction: column;
348
+ align-items: center;
349
+ gap: 2px;
350
+ }
351
+
352
+ .brass-toggle-lever {
353
+ width: 22px;
354
+ height: 38px;
355
+ background: #1c0e05;
356
+ border: 2px solid #92400e;
357
+ border-radius: 11px;
358
+ display: flex;
359
+ flex-direction: column;
360
+ align-items: center;
361
+ justify-content: center;
362
+ cursor: pointer;
363
+ box-shadow: inset 0 2px 4px #000;
364
+ position: relative;
365
+ }
366
+
367
+ .lever-nut {
368
+ width: 14px;
369
+ height: 14px;
370
+ border-radius: 50%;
371
+ background: radial-gradient(circle, #fde68a 0%, #b45309 80%);
372
+ box-shadow: 0 1px 2px #000;
373
+ }
374
+
375
+ .lever-arm {
376
+ width: 4px;
377
+ height: 16px;
378
+ background: linear-gradient(180deg, #fef08a 0%, #92400e 100%);
379
+ border-radius: 2px;
380
+ transition: transform 0.15s ease-out;
381
+ }
382
+
383
+ .brass-toggle-lever.on .lever-arm {
384
+ transform: translateY(-4px) rotate(15deg);
385
+ }
386
+
387
+ .brass-toggle-lever.off .lever-arm {
388
+ transform: translateY(4px) rotate(-15deg);
389
+ }
390
+
391
+ .toggle-sub-label {
392
+ font-family: 'Times New Roman', serif;
393
+ font-size: 8px;
394
+ font-weight: bold;
395
+ color: #fde68a;
396
+ }
397
+
398
+ .radiola-skin-selector-bezel {
399
+ display: flex;
400
+ flex-direction: column;
401
+ gap: 2px;
402
+ }
403
+
404
+ .radiola-selector-title {
405
+ font-family: 'Times New Roman', serif;
406
+ font-size: 8px;
407
+ letter-spacing: 1px;
408
+ color: #d97706;
409
+ font-weight: 900;
410
+ }
411
+
412
+ .radiola-wood-select {
413
+ background: #1b0c03;
414
+ color: #fde68a;
415
+ border: 1.5px solid #78350f;
416
+ border-radius: 4px;
417
+ padding: 5px 8px;
418
+ font-family: 'Times New Roman', Georgia, serif;
419
+ font-size: 11px;
420
+ font-weight: bold;
421
+ outline: none;
422
+ cursor: pointer;
423
+ box-shadow: inset 0 2px 4px #000;
424
+ }
425
+
426
+ /* 2. MILITARY R-250 TOP DECK */
427
+ .military-top-deck {
428
+ display: flex;
429
+ align-items: center;
430
+ justify-content: space-between;
431
+ padding: 8px 20px;
432
+ background: linear-gradient(180deg, #2c3627 0%, #1e251a 100%);
433
+ border-bottom: 3px solid #141a12;
434
+ box-shadow: 0 4px 14px rgba(0,0,0,0.6);
435
+ gap: 16px;
436
+ }
437
+
438
+ .military-top-left-panel {
439
+ display: flex;
440
+ flex-direction: column;
441
+ gap: 6px;
442
+ }
443
+
444
+ .mil-stencil-logo {
445
+ display: flex;
446
+ align-items: center;
447
+ gap: 8px;
448
+ }
449
+
450
+ .mil-antenna-glyph {
451
+ font-size: 20px;
452
+ color: #facc15;
453
+ }
454
+
455
+ .mil-stencil-texts {
456
+ display: flex;
457
+ flex-direction: column;
458
+ }
459
+
460
+ .mil-title-bold {
461
+ font-family: 'Courier New', monospace;
462
+ font-size: 17px;
463
+ font-weight: 900;
464
+ letter-spacing: 1px;
465
+ color: #fef08a;
466
+ }
467
+
468
+ .mil-subtitle {
469
+ font-family: 'Courier New', monospace;
470
+ font-size: 8px;
471
+ color: #a3e635;
472
+ letter-spacing: 0.5px;
473
+ }
474
+
475
+ .mil-led-cluster {
476
+ display: flex;
477
+ gap: 4px;
478
+ margin-left: 6px;
479
+ }
480
+
481
+ .mil-led-dot {
482
+ width: 7px;
483
+ height: 7px;
484
+ border-radius: 50%;
485
+ }
486
+ .mil-led-dot.amber { background: #f59e0b; box-shadow: 0 0 6px #f59e0b; }
487
+ .mil-led-dot.red { background: #ef4444; box-shadow: 0 0 6px #ef4444; }
488
+ .mil-led-dot.green { background: #22c55e; box-shadow: 0 0 6px #22c55e; }
489
+
490
+ .mil-toggles-row {
491
+ display: flex;
492
+ gap: 12px;
493
+ }
494
+
495
+ .mil-bat-switch {
496
+ display: flex;
497
+ flex-direction: column;
498
+ align-items: center;
499
+ gap: 2px;
500
+ }
501
+
502
+ .mil-jewel-lamp {
503
+ width: 8px;
504
+ height: 8px;
505
+ border-radius: 50%;
506
+ border: 1px solid #141a12;
507
+ }
508
+ .mil-jewel-lamp.on { background: #22c55e; box-shadow: 0 0 6px #22c55e; }
509
+ .mil-jewel-lamp.active { background: #facc15; box-shadow: 0 0 6px #facc15; }
510
+
511
+ .bat-toggle-stick {
512
+ width: 8px;
513
+ height: 18px;
514
+ background: linear-gradient(180deg, #f8fafc 0%, #64748b 80%);
515
+ border-radius: 3px;
516
+ box-shadow: 0 2px 4px #000;
517
+ }
518
+
519
+ .bat-label {
520
+ font-family: monospace;
521
+ font-size: 7.5px;
522
+ color: #cbd5e1;
523
+ }
524
+
525
+ /* Circular Optical Projection Dial (R-250) - Dark Glass Lens with Glowing Numbers */
526
+ .soviet-optical-assembly {
527
+ position: relative;
528
+ display: flex;
529
+ align-items: center;
530
+ justify-content: center;
531
+ }
532
+
533
+ .soviet-knurled-ring {
534
+ width: 102px;
535
+ height: 102px;
536
+ border-radius: 50%;
537
+ background: repeating-conic-gradient(#475569 0% 1%, #1e293b 1% 2%);
538
+ padding: 6px;
539
+ box-shadow: 0 6px 18px rgba(0,0,0,0.85), inset 0 2px 4px rgba(255,255,255,0.2);
540
+ }
541
+
542
+ .soviet-glass-lens {
543
+ width: 100%;
544
+ height: 100%;
545
+ border-radius: 50%;
546
+ background: radial-gradient(circle, #1c1917 0%, #0c0a09 70%, #000 100%);
547
+ border: 2.5px solid #78350f;
548
+ box-shadow: inset 0 0 16px #000;
549
+ display: flex;
550
+ flex-direction: column;
551
+ align-items: center;
552
+ justify-content: center;
553
+ position: relative;
554
+ overflow: hidden;
555
+ }
556
+
557
+ .soviet-lens-glare {
558
+ position: absolute;
559
+ top: 0;
560
+ left: 0;
561
+ right: 0;
562
+ height: 40%;
563
+ background: linear-gradient(180deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0) 100%);
564
+ pointer-events: none;
565
+ }
566
+
567
+ .soviet-reticle-cross {
568
+ position: absolute;
569
+ inset: 8px;
570
+ border: 1px dashed rgba(254, 240, 138, 0.25);
571
+ border-radius: 50%;
572
+ }
573
+
574
+ .soviet-frequency-text {
575
+ font-family: 'Courier New', monospace;
576
+ font-size: 17px;
577
+ font-weight: 900;
578
+ color: #fef08a;
579
+ text-shadow: 0 0 10px #f59e0b, 0 0 20px #ea580c;
580
+ letter-spacing: 1px;
581
+ z-index: 1;
582
+ }
583
+
584
+ .soviet-unit-text {
585
+ font-family: monospace;
586
+ font-size: 8.5px;
587
+ font-weight: bold;
588
+ color: #eab308;
589
+ z-index: 1;
590
+ }
591
+
592
+ .military-top-meters-panel {
593
+ display: flex;
594
+ align-items: center;
595
+ gap: 10px;
596
+ }
597
+
598
+ .soviet-square-meter-housing {
599
+ width: 130px;
600
+ height: 80px;
601
+ background: #1e261a;
602
+ border: 3px solid #141a12;
603
+ border-radius: 4px;
604
+ position: relative;
605
+ padding: 4px;
606
+ box-shadow: inset 0 2px 6px #000, 0 4px 8px rgba(0,0,0,0.5);
607
+ }
608
+
609
+ .soviet-round-meter-face {
610
+ width: 100%;
611
+ height: 100%;
612
+ border-radius: 50% 50% 4px 4px;
613
+ background: radial-gradient(circle at 50% 120%, #fef3c7 0%, #fde68a 60%, #d97706 100%);
614
+ border: 1.5px solid #78350f;
615
+ box-shadow: inset 0 2px 6px rgba(0,0,0,0.6);
616
+ overflow: hidden;
617
+ }
618
+
619
+ .hex-bolt {
620
+ position: absolute;
621
+ width: 4px;
622
+ height: 4px;
623
+ border-radius: 50%;
624
+ background: #94a3b8;
625
+ box-shadow: 0 1px 2px #000;
626
+ }
627
+ .hex-bolt.tl { top: 2px; left: 2px; }
628
+ .hex-bolt.tr { top: 2px; right: 2px; }
629
+ .hex-bolt.bl { bottom: 2px; left: 2px; }
630
+ .hex-bolt.br { bottom: 2px; right: 2px; }
631
+
632
+ .mil-selector-wrap {
633
+ display: flex;
634
+ flex-direction: column;
635
+ gap: 2px;
636
+ }
637
+
638
+ .mil-switch-title {
639
+ font-family: monospace;
640
+ font-size: 8px;
641
+ color: #a3e635;
642
+ font-weight: bold;
643
+ }
644
+
645
+ .military-bakelite-select {
646
+ background: #141a12;
647
+ color: #a3e635;
648
+ border: 1.5px solid #3c4936;
649
+ border-radius: 4px;
650
+ padding: 5px 8px;
651
+ font-family: monospace;
652
+ font-size: 10px;
653
+ outline: none;
654
+ cursor: pointer;
655
+ }
656
+
657
+ /* 3. AUDIOPHILE HI-FI MCINTOSH TOP DECK */
658
+ .hifi-top-deck {
659
+ display: flex;
660
+ align-items: center;
661
+ justify-content: space-between;
662
+ padding: 8px 24px;
663
+ background: linear-gradient(180deg, #64748b 0%, #cbd5e1 30%, #0f172a 100%);
664
+ border-bottom: 2px solid #334155;
665
+ box-shadow: 0 6px 20px rgba(0,0,0,0.8);
666
+ gap: 16px;
667
+ }
668
+
669
+ .hifi-center-brand {
670
+ display: flex;
671
+ flex-direction: column;
672
+ align-items: center;
673
+ }
674
+
675
+ .hifi-brand-gold-text {
676
+ font-family: 'Times New Roman', serif;
677
+ font-size: 26px;
678
+ font-weight: 900;
679
+ color: #fef08a;
680
+ letter-spacing: 3px;
681
+ text-shadow: 0 2px 8px rgba(0,0,0,0.9);
682
+ }
683
+
684
+ .hifi-brand-gold-sub {
685
+ font-family: sans-serif;
686
+ font-size: 8px;
687
+ letter-spacing: 1.5px;
688
+ color: #cbd5e1;
689
+ font-weight: bold;
690
+ }
691
+
692
+ .hifi-tubes-quartet {
693
+ display: flex;
694
+ gap: 10px;
695
+ background: rgba(0,0,0,0.4);
696
+ padding: 4px 12px;
697
+ border-radius: 8px;
698
+ box-shadow: inset 0 2px 6px #000;
699
+ }
700
+
701
+ .hifi-selector-column {
702
+ display: flex;
703
+ flex-direction: column;
704
+ gap: 2px;
705
+ }
706
+
707
+ .hifi-input-label {
708
+ font-family: monospace;
709
+ font-size: 8px;
710
+ color: #fef08a;
711
+ font-weight: bold;
712
+ }
713
+
714
+ .hifi-gold-select {
715
+ background: #0f172a;
716
+ color: #fef08a;
717
+ border: 1.5px solid #eab308;
718
+ border-radius: 4px;
719
+ padding: 5px 8px;
720
+ font-family: sans-serif;
721
+ font-size: 11px;
722
+ outline: none;
723
+ cursor: pointer;
724
+ }
725
+
726
+ /* 4. CRT OSCILLOSCOPE TOP DECK */
727
+ .crt-top-deck {
728
+ display: flex;
729
+ align-items: center;
730
+ justify-content: space-between;
731
+ padding: 8px 20px;
732
+ background: #111a14;
733
+ border-bottom: 3px solid #1e2d23;
734
+ gap: 14px;
735
+ }
736
+
737
+ .crt-caged-tubes-pair {
738
+ display: flex;
739
+ gap: 8px;
740
+ align-items: center;
741
+ }
742
+
743
+ .mesh-cage {
744
+ background: rgba(0,0,0,0.4);
745
+ border: 1px dashed rgba(255,150,0,0.45);
746
+ border-radius: 6px;
747
+ padding: 3px 5px;
748
+ }
749
+
750
+ .crt-circular-frame {
751
+ width: 106px;
752
+ height: 106px;
753
+ border-radius: 50%;
754
+ background: #04140b;
755
+ border: 3.5px solid #22c55e;
756
+ box-shadow: 0 0 18px rgba(34, 197, 94, 0.35), inset 0 0 12px #000;
757
+ display: flex;
758
+ flex-direction: column;
759
+ align-items: center;
760
+ justify-content: center;
761
+ position: relative;
762
+ overflow: hidden;
763
+ }
764
+
765
+ .crt-focus-label {
766
+ position: absolute;
767
+ bottom: 4px;
768
+ font-family: monospace;
769
+ font-size: 7px;
770
+ color: #4ade80;
771
+ }
772
+
773
+ .crt-jewel-stack {
774
+ display: flex;
775
+ flex-direction: column;
776
+ gap: 6px;
777
+ }
778
+
779
+ .jewel-lamp {
780
+ width: 11px;
781
+ height: 11px;
782
+ border-radius: 50%;
783
+ border: 1px solid rgba(0,0,0,0.7);
784
+ }
785
+ .jewel-lamp.red { background: #ef4444; box-shadow: 0 0 8px #ef4444; }
786
+ .jewel-lamp.amber { background: #f59e0b; box-shadow: 0 0 8px #f59e0b; }
787
+ .jewel-lamp.green { background: #10b981; box-shadow: 0 0 8px #10b981; }
788
+
789
+ .crt-dark-select,
790
+ .nixie-dark-select {
791
+ background: #080d09;
792
+ color: #4ade80;
793
+ border: 1.5px solid #22c55e;
794
+ border-radius: 4px;
795
+ padding: 5px 8px;
796
+ font-family: monospace;
797
+ font-size: 10px;
798
+ }
799
+
800
+ /* 5. NIXIE TOP DECK */
801
+ .nixie-top-deck {
802
+ display: flex;
803
+ align-items: center;
804
+ justify-content: space-between;
805
+ padding: 8px 24px;
806
+ background: linear-gradient(180deg, #26160d 0%, #150b06 100%);
807
+ border-bottom: 3px solid #3d2110;
808
+ gap: 16px;
809
+ }
810
+
811
+ .nixie-center-bank {
812
+ display: flex;
813
+ align-items: center;
814
+ gap: 16px;
815
+ }
816
+
817
+ .nixie-cluster-bar {
818
+ display: inline-flex;
819
+ gap: 3px;
820
+ background: #080402;
821
+ border: 2.5px solid #78350f;
822
+ border-radius: 6px;
823
+ padding: 4px 8px;
824
+ box-shadow: inset 0 2px 8px #000;
825
+ }
826
+
827
+ .nixie-char.digit {
828
+ width: 22px;
829
+ height: 34px;
830
+ background: #140803;
831
+ border: 1px solid #451a03;
832
+ border-radius: 4px;
833
+ display: flex;
834
+ align-items: center;
835
+ justify-content: center;
836
+ font-family: 'Courier New', monospace;
837
+ font-size: 18px;
838
+ font-weight: 900;
839
+ color: #ff6600;
840
+ text-shadow: 0 0 8px #ff4400, 0 0 16px #ff2200;
841
+ }
842
+
843
+ .nixie-char.punct {
844
+ color: #ff5500;
845
+ font-size: 18px;
846
+ font-weight: 900;
847
+ text-shadow: 0 0 6px #ff3300;
848
+ margin: 0 1px;
849
+ }
850
+
851
+ /* 6. NORDIC OP-1 TOP DECK */
852
+ .nordic-top-deck {
853
+ display: flex;
854
+ align-items: center;
855
+ justify-content: space-between;
856
+ padding: 8px 24px;
857
+ background: #202226;
858
+ border-bottom: 2.5px solid #373a40;
859
+ gap: 16px;
860
+ }
861
+
862
+ .nordic-top-left-cluster {
863
+ display: flex;
864
+ align-items: center;
865
+ gap: 16px;
866
+ }
867
+
868
+ .nordic-oled-display-unit {
869
+ width: 320px;
870
+ height: 64px;
871
+ background: #090a0d;
872
+ border: 2px solid #374151;
873
+ border-radius: 8px;
874
+ box-shadow: inset 0 2px 8px #000, 0 2px 4px rgba(0,0,0,0.4);
875
+ padding: 4px 10px;
876
+ display: flex;
877
+ flex-direction: column;
878
+ justify-content: space-between;
879
+ position: relative;
880
+ overflow: hidden;
881
+ }
882
+
883
+ .nordic-oled-top-meta-row {
884
+ display: flex;
885
+ justify-content: space-between;
886
+ align-items: center;
887
+ font-family: monospace;
888
+ font-size: 8px;
889
+ color: #94a3b8;
890
+ font-weight: bold;
891
+ }
892
+
893
+ .nordic-oled-center-freq-row {
894
+ display: flex;
895
+ justify-content: space-between;
896
+ align-items: center;
897
+ }
898
+
899
+ .nordic-oled-freq-large {
900
+ font-family: 'Courier New', monospace;
901
+ font-size: 20px;
902
+ font-weight: 900;
903
+ color: #f8fafc;
904
+ letter-spacing: 1.5px;
905
+ text-shadow: 0 0 8px rgba(248, 250, 252, 0.6);
906
+ }
907
+
908
+ .nordic-oled-band-tag {
909
+ font-family: monospace;
910
+ font-size: 9px;
911
+ background: #1e293b;
912
+ color: #38bdf8;
913
+ padding: 1px 6px;
914
+ border-radius: 4px;
915
+ font-weight: bold;
916
+ }
917
+
918
+ .nordic-live-spectrum-canvas {
919
+ width: 100%;
920
+ height: 22px;
921
+ }
922
+
923
+ .nordic-pushbuttons-row {
924
+ display: flex;
925
+ gap: 8px;
926
+ align-items: center;
927
+ }
928
+
929
+ .nordic-rubber-circle-btn {
930
+ width: 30px;
931
+ height: 30px;
932
+ border-radius: 50%;
933
+ border: 1.5px solid rgba(0,0,0,0.3);
934
+ cursor: pointer;
935
+ box-shadow: 0 3px 6px rgba(0,0,0,0.3), inset 0 1px 2px rgba(255,255,255,0.4);
936
+ transition: transform 0.08s ease, filter 0.1s;
937
+ }
938
+
939
+ .nordic-rubber-circle-btn:active {
940
+ transform: scale(0.92);
941
+ }
942
+
943
+ .nordic-rubber-circle-btn.btn-orange { background: #ea580c; }
944
+ .nordic-rubber-circle-btn.btn-ochre { background: #d97706; }
945
+ .nordic-rubber-circle-btn.btn-cyan { background: #0284c7; }
946
+ .nordic-rubber-circle-btn.btn-white { background: #f1f5f9; border-color: #cbd5e1; }
947
+
948
+ .nordic-clean-select {
949
+ background: #1e293b;
950
+ color: #f8fafc;
951
+ border: 1.5px solid #475569;
952
+ border-radius: 6px;
953
+ padding: 6px 10px;
954
+ font-family: monospace;
955
+ font-size: 11px;
956
+ font-weight: bold;
957
+ cursor: pointer;
958
+ outline: none;
959
+ }
960
+
961
+ /* ==========================================================================
962
+ MAIN CHASSIS: 3-COLUMN PHYSICAL HARDWARE ZONES
963
+ ========================================================================== */
964
+ .radio-main-body {
965
+ flex: 1;
966
+ display: flex;
967
+ overflow: hidden;
968
+ position: relative;
969
+ }
970
+
971
+ /* --------------------------------------------------------------------------
972
+ ZONE 1 (LEFT): CHANNELS & CONTACTS
973
+ -------------------------------------------------------------------------- */
974
+ .hardware-contacts-zone {
975
+ width: 280px;
976
+ display: flex;
977
+ flex-direction: column;
978
+ position: relative;
979
+ padding: 10px;
980
+ border-right: 3px solid rgba(0,0,0,0.5);
981
+ overflow: hidden;
982
+ }
983
+
984
+ /* Radiola: Woven Acoustic Tweed Cloth Grille Texture */
985
+ .skin-vintage-radiola .hardware-contacts-zone {
986
+ background: repeating-linear-gradient(
987
+ 45deg,
988
+ #cfb18c 0px,
989
+ #cfb18c 2px,
990
+ #9c7c58 2px,
991
+ #9c7c58 4px
992
+ );
993
+ box-shadow: inset -4px 0 10px rgba(0,0,0,0.5);
994
+ }
995
+
996
+ .radiola-vertical-brass-rails {
997
+ position: absolute;
998
+ top: 0;
999
+ bottom: 0;
1000
+ left: 0;
1001
+ right: 0;
1002
+ display: flex;
1003
+ justify-content: space-around;
1004
+ pointer-events: none;
1005
+ }
1006
+
1007
+ .brass-rail {
1008
+ width: 3px;
1009
+ height: 100%;
1010
+ background: linear-gradient(90deg, #b45309 0%, #fef08a 50%, #78350f 100%);
1011
+ box-shadow: 0 0 3px rgba(0,0,0,0.6);
1012
+ }
1013
+
1014
+ /* Military R-250: Stamped Metal Operator Panel */
1015
+ .skin-military-r250 .hardware-contacts-zone {
1016
+ background: linear-gradient(180deg, #242c20 0%, #1a2016 100%);
1017
+ border-right: 3px solid #141a12;
1018
+ }
1019
+
1020
+ /* Audiophile Hi-Fi: Brushed Black Aluminum */
1021
+ .skin-audiophile-hifi .hardware-contacts-zone {
1022
+ background: linear-gradient(180deg, #111827 0%, #0b0f19 100%);
1023
+ border-right: 2px solid #1e293b;
1024
+ }
1025
+
1026
+ .contacts-zone-header {
1027
+ font-family: 'Courier New', monospace;
1028
+ font-size: 10px;
1029
+ font-weight: 900;
1030
+ text-transform: uppercase;
1031
+ color: #fef08a;
1032
+ letter-spacing: 1px;
1033
+ text-align: center;
1034
+ padding-bottom: 6px;
1035
+ border-bottom: 1.5px solid rgba(254, 240, 138, 0.3);
1036
+ margin-bottom: 8px;
1037
+ z-index: 1;
1038
+ }
1039
+
1040
+ .contacts-items-container {
1041
+ flex: 1;
1042
+ overflow-y: auto;
1043
+ display: flex;
1044
+ flex-direction: column;
1045
+ gap: 8px;
1046
+ z-index: 1;
1047
+ }
1048
+
1049
+ /* The Skeuomorphic Push-Button / Aluminum Plate Contact Card */
1050
+ .hardware-contact-card {
1051
+ display: flex;
1052
+ align-items: center;
1053
+ justify-content: space-between;
1054
+ padding: 8px 12px;
1055
+ border-radius: 6px;
1056
+ cursor: pointer;
1057
+ position: relative;
1058
+ transition: all 0.15s ease-out;
1059
+ }
1060
+
1061
+ /* Radiola: Cream/Ivory Push-Button with Beveled Brass Nameplate */
1062
+ .skin-vintage-radiola .hardware-contact-card {
1063
+ background: linear-gradient(180deg, #fdfbf7 0%, #ecdcc9 60%, #dfcdb5 100%);
1064
+ border: 2px solid #b48c62;
1065
+ border-radius: 6px;
1066
+ box-shadow: 0 4px 8px rgba(0,0,0,0.6), inset 0 1px 2px #fff;
1067
+ color: #2b1204;
1068
+ padding: 10px 12px;
1069
+ }
1070
+ .skin-vintage-radiola .hardware-contact-card .contact-bold-name {
1071
+ font-family: 'Playfair Display', Georgia, serif;
1072
+ font-size: 12px;
1073
+ font-weight: 900;
1074
+ color: #2b1204;
1075
+ }
1076
+ .skin-vintage-radiola .hardware-contact-card.selected {
1077
+ background: linear-gradient(180deg, #fef08a 0%, #f59e0b 50%, #b45309 100%);
1078
+ border-color: #fef08a;
1079
+ box-shadow: 0 0 16px rgba(245, 158, 11, 0.7), inset 0 1px 2px #fff;
1080
+ color: #1a0802;
1081
+ transform: scale(0.98);
1082
+ }
1083
+
1084
+ .plaque-screw {
1085
+ width: 4px;
1086
+ height: 4px;
1087
+ border-radius: 50%;
1088
+ background: #78350f;
1089
+ }
1090
+
1091
+ /* Military R-250: Stamped Aluminum Plate with Screw Terminals */
1092
+ .skin-military-r250 .hardware-contact-card {
1093
+ background: linear-gradient(180deg, #475569 0%, #334155 100%);
1094
+ border: 1.5px solid #64748b;
1095
+ color: #f8fafc;
1096
+ box-shadow: 0 3px 6px rgba(0,0,0,0.6);
1097
+ }
1098
+ .skin-military-r250 .hardware-contact-card.selected {
1099
+ background: linear-gradient(180deg, #65a30d 0%, #3f6212 100%);
1100
+ border-color: #bef264;
1101
+ color: #fff;
1102
+ box-shadow: 0 0 12px rgba(101, 163, 13, 0.6);
1103
+ }
1104
+
1105
+ .mil-wire-terminal {
1106
+ display: flex;
1107
+ align-items: center;
1108
+ margin-right: 6px;
1109
+ }
1110
+ .terminal-screw {
1111
+ width: 6px;
1112
+ height: 6px;
1113
+ border-radius: 50%;
1114
+ background: #f8fafc;
1115
+ box-shadow: 0 1px 2px #000;
1116
+ }
1117
+ .copper-wire {
1118
+ width: 8px;
1119
+ height: 2px;
1120
+ background: #ea580c;
1121
+ }
1122
+
1123
+ .contact-details-box {
1124
+ flex: 1;
1125
+ padding: 0 6px;
1126
+ }
1127
+
1128
+ .contact-title-row {
1129
+ display: flex;
1130
+ justify-content: space-between;
1131
+ align-items: center;
1132
+ }
1133
+
1134
+ .contact-bold-name {
1135
+ font-family: 'Times New Roman', Georgia, serif;
1136
+ font-size: 11px;
1137
+ font-weight: 900;
1138
+ }
1139
+
1140
+ .skin-military-r250 .contact-bold-name {
1141
+ font-family: monospace;
1142
+ }
1143
+
1144
+ .mil-onair-tag {
1145
+ font-family: monospace;
1146
+ font-size: 7.5px;
1147
+ color: #22c55e;
1148
+ font-weight: bold;
1149
+ }
1150
+
1151
+ .contact-sub-id {
1152
+ font-family: monospace;
1153
+ font-size: 8.5px;
1154
+ opacity: 0.7;
1155
+ }
1156
+
1157
+ .contact-status-lamp {
1158
+ width: 9px;
1159
+ height: 9px;
1160
+ border-radius: 50%;
1161
+ background: #10b981;
1162
+ box-shadow: 0 0 6px #10b981;
1163
+ }
1164
+
1165
+ .contacts-bottom-actions {
1166
+ display: flex;
1167
+ flex-direction: column;
1168
+ gap: 6px;
1169
+ padding-top: 10px;
1170
+ z-index: 1;
1171
+ }
1172
+
1173
+ .hardware-action-button {
1174
+ padding: 8px;
1175
+ background: linear-gradient(180deg, #d97706 0%, #92400e 100%);
1176
+ border: 1.5px solid #fde68a;
1177
+ color: #fff;
1178
+ font-family: monospace;
1179
+ font-size: 11px;
1180
+ font-weight: bold;
1181
+ border-radius: 4px;
1182
+ cursor: pointer;
1183
+ box-shadow: 0 3px 6px rgba(0,0,0,0.6);
1184
+ }
1185
+ .hardware-action-button.secondary {
1186
+ background: #1c1917;
1187
+ border-color: #78350f;
1188
+ color: #fde68a;
1189
+ }
1190
+
1191
+ /* --------------------------------------------------------------------------
1192
+ ZONE 2 (CENTER): CHAT MESSAGES SCREEN
1193
+ -------------------------------------------------------------------------- */
1194
+ .hardware-chat-zone {
1195
+ flex: 1;
1196
+ display: flex;
1197
+ flex-direction: column;
1198
+ position: relative;
1199
+ overflow: hidden;
1200
+ }
1201
+
1202
+ /* Radiola: Warm Aged Parchment Card */
1203
+ .skin-vintage-radiola .hardware-chat-zone {
1204
+ background: radial-gradient(circle at 50% 50%, #f7f1e5 0%, #ecdecb 70%, #dfcdb5 100%);
1205
+ box-shadow: inset 0 0 30px rgba(120, 53, 15, 0.2);
1206
+ }
1207
+
1208
+ /* Military R-250: Recessed CRT Monitor with Grab Handles */
1209
+ .skin-military-r250 .hardware-chat-zone {
1210
+ background: #08120a;
1211
+ border: 4px solid #141a12;
1212
+ box-shadow: inset 0 0 30px #000;
1213
+ }
1214
+
1215
+ /* Hi-Fi: Dark Luxury Background */
1216
+ .skin-audiophile-hifi .hardware-chat-zone {
1217
+ background: #090e18;
1218
+ border-left: 1px solid #1e293b;
1219
+ border-right: 1px solid #1e293b;
1220
+ }
1221
+
1222
+ /* Vertical Stainless Steel Grab Handles for R-250 Monitor */
1223
+ .crt-grab-handle {
1224
+ position: absolute;
1225
+ top: 10%;
1226
+ bottom: 10%;
1227
+ width: 8px;
1228
+ background: linear-gradient(90deg, #cbd5e1 0%, #f8fafc 50%, #64748b 100%);
1229
+ border-radius: 4px;
1230
+ box-shadow: 0 4px 10px rgba(0,0,0,0.9);
1231
+ z-index: 10;
1232
+ }
1233
+ .crt-handle-left { left: 4px; }
1234
+ .crt-handle-right { right: 4px; }
1235
+
1236
+ /* Top Bezel in Chat Zone */
1237
+ .chat-top-bezel {
1238
+ padding: 10px 18px;
1239
+ display: flex;
1240
+ justify-content: space-between;
1241
+ align-items: center;
1242
+ border-bottom: 2px solid rgba(0,0,0,0.3);
1243
+ z-index: 2;
1244
+ }
1245
+
1246
+ .skin-vintage-radiola .chat-top-bezel {
1247
+ background: rgba(180, 83, 9, 0.08);
1248
+ border-bottom-color: #d4bda8;
1249
+ }
1250
+
1251
+ .chat-peer-title {
1252
+ font-family: 'Times New Roman', Georgia, serif;
1253
+ font-size: 14px;
1254
+ font-weight: 900;
1255
+ color: #2b1204;
1256
+ display: block;
1257
+ }
1258
+
1259
+ .skin-military-r250 .chat-peer-title {
1260
+ font-family: monospace;
1261
+ color: #bef264;
1262
+ }
1263
+
1264
+ .skin-audiophile-hifi .chat-peer-title {
1265
+ color: #fef08a;
1266
+ }
1267
+
1268
+ .chat-e2ee-hash {
1269
+ font-family: monospace;
1270
+ font-size: 9.5px;
1271
+ opacity: 0.7;
1272
+ color: inherit;
1273
+ }
1274
+
1275
+ .radiola-wax-seal {
1276
+ width: 32px;
1277
+ height: 32px;
1278
+ border-radius: 50%;
1279
+ background: radial-gradient(circle at 35% 35%, #dc2626 0%, #991b1b 75%, #450a0a 100%);
1280
+ border: 2px solid #7f1d1d;
1281
+ color: #fef2f2;
1282
+ font-size: 8px;
1283
+ font-family: serif;
1284
+ font-weight: 900;
1285
+ display: flex;
1286
+ align-items: center;
1287
+ justify-content: center;
1288
+ box-shadow: 0 2px 6px rgba(0,0,0,0.5);
1289
+ }
1290
+
1291
+ .soviet-secret-stamp {
1292
+ border: 2px solid #dc2626;
1293
+ color: #dc2626;
1294
+ padding: 2px 8px;
1295
+ font-family: 'Courier New', monospace;
1296
+ font-size: 10px;
1297
+ font-weight: 900;
1298
+ transform: rotate(-3deg);
1299
+ box-shadow: inset 0 0 3px rgba(220,38,38,0.4);
1300
+ }
1301
+
1302
+ .hifi-protocol-badge {
1303
+ font-family: monospace;
1304
+ font-size: 9.5px;
1305
+ color: #38bdf8;
1306
+ border: 1px solid #0284c7;
1307
+ padding: 3px 8px;
1308
+ border-radius: 4px;
1309
+ }
1310
+
1311
+ /* Chat Messages Stream */
1312
+ .chat-messages-container {
1313
+ flex: 1;
1314
+ overflow-y: auto;
1315
+ padding: 16px 20px;
1316
+ display: flex;
1317
+ flex-direction: column;
1318
+ gap: 14px;
1319
+ position: relative;
1320
+ }
1321
+
1322
+ .crt-scanline-grid {
1323
+ position: absolute;
1324
+ inset: 0;
1325
+ background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%);
1326
+ background-size: 100% 4px;
1327
+ pointer-events: none;
1328
+ z-index: 1;
1329
+ }
1330
+
1331
+ .empty-ether-notice {
1332
+ display: flex;
1333
+ flex-direction: column;
1334
+ align-items: center;
1335
+ justify-content: center;
1336
+ height: 100%;
1337
+ text-align: center;
1338
+ opacity: 0.8;
1339
+ }
1340
+ .ether-icon { font-size: 40px; margin-bottom: 8px; }
1341
+ .ether-bold { font-weight: 900; font-size: 14px; }
1342
+ .ether-sub { font-size: 11px; margin-top: 4px; }
1343
+
1344
+ .hardware-msg-row {
1345
+ display: flex;
1346
+ align-items: center;
1347
+ gap: 10px;
1348
+ width: 100%;
1349
+ z-index: 2;
1350
+ }
1351
+ .hardware-msg-row.outbound { justify-content: flex-end; }
1352
+ .hardware-msg-row.inbound { justify-content: flex-start; }
1353
+
1354
+ /* Radiola Toggle Switch beside Message */
1355
+ .radiola-msg-toggle-widget {
1356
+ display: flex;
1357
+ flex-direction: column;
1358
+ align-items: center;
1359
+ gap: 2px;
1360
+ }
1361
+ .toggle-brass-knob {
1362
+ width: 20px;
1363
+ height: 12px;
1364
+ background: linear-gradient(180deg, #d97706 0%, #78350f 100%);
1365
+ border: 1.5px solid #fde68a;
1366
+ border-radius: 6px;
1367
+ box-shadow: 0 2px 4px rgba(0,0,0,0.5);
1368
+ }
1369
+ .toggle-brass-knob.on { background: #22c55e; }
1370
+ .toggle-state-text {
1371
+ font-family: serif;
1372
+ font-size: 7.5px;
1373
+ font-weight: bold;
1374
+ color: #78350f;
1375
+ }
1376
+
1377
+ /* Message Bubble */
1378
+ .hardware-msg-bubble {
1379
+ max-width: 72%;
1380
+ padding: 10px 14px;
1381
+ border-radius: 8px;
1382
+ position: relative;
1383
+ box-shadow: 0 4px 10px rgba(0,0,0,0.4);
1384
+ }
1385
+
1386
+ /* Radiola Parchment Paper Bubbles */
1387
+ .skin-vintage-radiola .hardware-msg-row.inbound .hardware-msg-bubble {
1388
+ background: #fbf6ec;
1389
+ color: #2b1204;
1390
+ border: 1.5px solid #cbb297;
1391
+ font-family: Georgia, serif;
1392
+ }
1393
+ .skin-vintage-radiola .hardware-msg-row.outbound .hardware-msg-bubble {
1394
+ background: #ecdcc9;
1395
+ color: #1f0c02;
1396
+ border: 1.5px solid #b39578;
1397
+ font-family: Georgia, serif;
1398
+ }
1399
+
1400
+ /* Military R-250 Phosphor CRT Messages */
1401
+ .skin-military-r250 .hardware-msg-bubble {
1402
+ background: #0f1c12;
1403
+ border: 1.5px solid #22c55e;
1404
+ color: #a3e635;
1405
+ font-family: 'Courier New', monospace;
1406
+ box-shadow: 0 0 10px rgba(34, 197, 94, 0.2);
1407
+ }
1408
+ .mil-teletype-stamp-header {
1409
+ display: flex;
1410
+ justify-content: space-between;
1411
+ margin-bottom: 4px;
1412
+ font-size: 9px;
1413
+ color: #facc15;
1414
+ }
1415
+
1416
+ /* Hi-Fi Dark Luxury Bubbles */
1417
+ .skin-audiophile-hifi .hardware-msg-bubble {
1418
+ background: #0f172a;
1419
+ color: #f8fafc;
1420
+ border: 1.5px solid #d4af37;
1421
+ font-family: Georgia, serif;
1422
+ box-shadow: 0 4px 14px rgba(212, 175, 55, 0.2);
1423
+ }
1424
+
1425
+ .hardware-msg-text {
1426
+ font-size: 13px;
1427
+ line-height: 1.45;
1428
+ word-break: break-word;
1429
+ }
1430
+
1431
+ .hardware-msg-meta {
1432
+ display: flex;
1433
+ justify-content: space-between;
1434
+ margin-top: 6px;
1435
+ font-size: 9.5px;
1436
+ opacity: 0.75;
1437
+ }
1438
+
1439
+ /* Input Transmit Deck */
1440
+ .hardware-input-deck {
1441
+ padding: 12px 18px;
1442
+ background: rgba(0,0,0,0.4);
1443
+ border-top: 2px solid rgba(0,0,0,0.3);
1444
+ z-index: 2;
1445
+ }
1446
+
1447
+ .hardware-input-form {
1448
+ display: flex;
1449
+ gap: 10px;
1450
+ }
1451
+
1452
+ .hardware-input-field {
1453
+ flex: 1;
1454
+ background: #0e0703;
1455
+ border: 1.5px solid #78350f;
1456
+ border-radius: 6px;
1457
+ padding: 10px 14px;
1458
+ color: #fef08a;
1459
+ font-family: monospace;
1460
+ font-size: 13px;
1461
+ outline: none;
1462
+ box-shadow: inset 0 2px 6px #000;
1463
+ }
1464
+
1465
+ .hardware-input-field:focus {
1466
+ border-color: #f59e0b;
1467
+ }
1468
+
1469
+ .hardware-transmit-button {
1470
+ padding: 0 22px;
1471
+ background: linear-gradient(180deg, #d97706 0%, #92400e 100%);
1472
+ border: 1.5px solid #fde68a;
1473
+ color: #fff;
1474
+ font-family: monospace;
1475
+ font-size: 12px;
1476
+ font-weight: 900;
1477
+ border-radius: 6px;
1478
+ cursor: pointer;
1479
+ box-shadow: 0 4px 8px rgba(0,0,0,0.6);
1480
+ }
1481
+
1482
+ /* --------------------------------------------------------------------------
1483
+ ZONE 3 (RIGHT): HARDWARE CONTROLS & TUBES
1484
+ -------------------------------------------------------------------------- */
1485
+ .hardware-controls-zone {
1486
+ width: 290px;
1487
+ display: flex;
1488
+ flex-direction: column;
1489
+ padding: 10px;
1490
+ border-left: 3px solid rgba(0,0,0,0.5);
1491
+ background: rgba(0,0,0,0.3);
1492
+ }
1493
+
1494
+ .controls-zone-header {
1495
+ font-family: 'Courier New', monospace;
1496
+ font-size: 10px;
1497
+ font-weight: 900;
1498
+ text-transform: uppercase;
1499
+ color: #fef08a;
1500
+ letter-spacing: 1px;
1501
+ text-align: center;
1502
+ padding-bottom: 6px;
1503
+ border-bottom: 1.5px solid rgba(254, 240, 138, 0.3);
1504
+ margin-bottom: 8px;
1505
+ }
1506
+
1507
+ /* A. Radiola Right Hardware Layout */
1508
+ .radiola-right-hardware-layout {
1509
+ display: flex;
1510
+ flex-direction: column;
1511
+ gap: 12px;
1512
+ height: 100%;
1513
+ }
1514
+
1515
+ .radiola-verniers-column {
1516
+ display: flex;
1517
+ justify-content: space-around;
1518
+ }
1519
+
1520
+ .radiola-vernier-card {
1521
+ background: rgba(0,0,0,0.3);
1522
+ padding: 6px 10px;
1523
+ border-radius: 8px;
1524
+ border: 1px solid #78350f;
1525
+ }
1526
+
1527
+ /* Vertical Alcove with Two Stacked Tubes (Audio Output) */
1528
+ .radiola-tubes-alcove-frame {
1529
+ background: #120702;
1530
+ border: 2.5px solid #92400e;
1531
+ border-radius: 12px;
1532
+ padding: 8px;
1533
+ box-shadow: inset 0 4px 12px #000, 0 4px 10px rgba(0,0,0,0.7);
1534
+ display: flex;
1535
+ flex-direction: column;
1536
+ align-items: center;
1537
+ }
1538
+
1539
+ .radiola-alcove-header {
1540
+ font-family: 'Times New Roman', serif;
1541
+ font-size: 8px;
1542
+ font-weight: 900;
1543
+ letter-spacing: 1.5px;
1544
+ color: #fef08a;
1545
+ margin-bottom: 4px;
1546
+ }
1547
+
1548
+ .radiola-alcove-interior {
1549
+ display: flex;
1550
+ flex-direction: column;
1551
+ align-items: center;
1552
+ gap: 6px;
1553
+ }
1554
+
1555
+ .alcove-brass-divider {
1556
+ font-family: 'Times New Roman', serif;
1557
+ font-size: 6px;
1558
+ font-weight: bold;
1559
+ letter-spacing: 1px;
1560
+ color: #d97706;
1561
+ border-top: 1px solid #78350f;
1562
+ border-bottom: 1px solid #78350f;
1563
+ padding: 1px 8px;
1564
+ }
1565
+
1566
+ .radiola-bottom-mini-knobs {
1567
+ display: flex;
1568
+ justify-content: space-between;
1569
+ margin-top: auto;
1570
+ }
1571
+
1572
+ /* B. Military R-250 Right Hardware Layout */
1573
+ .military-right-hardware-layout {
1574
+ display: flex;
1575
+ flex-direction: column;
1576
+ gap: 12px;
1577
+ height: 100%;
1578
+ }
1579
+
1580
+ .mil-knobs-row {
1581
+ display: flex;
1582
+ justify-content: space-around;
1583
+ }
1584
+
1585
+ .mil-vernier-gear-box {
1586
+ background: #141a12;
1587
+ border: 1.5px solid #3c4936;
1588
+ border-radius: 6px;
1589
+ padding: 6px 8px;
1590
+ display: flex;
1591
+ flex-direction: column;
1592
+ gap: 4px;
1593
+ }
1594
+
1595
+ .vernier-gear-title {
1596
+ font-family: monospace;
1597
+ font-size: 8px;
1598
+ color: #cbd5e1;
1599
+ font-weight: bold;
1600
+ }
1601
+
1602
+ .vernier-slider-track {
1603
+ height: 20px;
1604
+ background: #0a0d09;
1605
+ border: 1px solid #22291e;
1606
+ border-radius: 4px;
1607
+ display: flex;
1608
+ align-items: center;
1609
+ position: relative;
1610
+ padding: 0 4px;
1611
+ }
1612
+
1613
+ .vernier-thumbwheel {
1614
+ width: 14px;
1615
+ height: 26px;
1616
+ background: repeating-linear-gradient(90deg, #f8fafc 0px, #64748b 2px);
1617
+ border-radius: 3px;
1618
+ box-shadow: 0 2px 4px #000;
1619
+ position: absolute;
1620
+ left: 45%;
1621
+ }
1622
+
1623
+ .vernier-scale-ticks {
1624
+ font-family: monospace;
1625
+ font-size: 7px;
1626
+ color: #64748b;
1627
+ letter-spacing: 3px;
1628
+ width: 100%;
1629
+ text-align: center;
1630
+ }
1631
+
1632
+ .soviet-cathode-bank {
1633
+ background: #121811;
1634
+ border: 2px solid #3c4936;
1635
+ border-radius: 6px;
1636
+ padding: 6px 8px;
1637
+ display: flex;
1638
+ flex-direction: column;
1639
+ align-items: center;
1640
+ gap: 4px;
1641
+ }
1642
+
1643
+ .soviet-cathode-title {
1644
+ font-family: monospace;
1645
+ font-size: 8px;
1646
+ color: #facc15;
1647
+ font-weight: 900;
1648
+ }
1649
+
1650
+ .soviet-cathode-row {
1651
+ display: flex;
1652
+ gap: 4px;
1653
+ }
1654
+
1655
+ .mini-cathode-tube {
1656
+ width: 18px;
1657
+ height: 30px;
1658
+ background: #080d07;
1659
+ border: 1px solid #475569;
1660
+ border-radius: 3px;
1661
+ display: flex;
1662
+ align-items: center;
1663
+ justify-content: center;
1664
+ box-shadow: 0 0 6px rgba(245, 158, 11, 0.4);
1665
+ }
1666
+
1667
+ .cathode-glow-digit {
1668
+ font-family: monospace;
1669
+ font-size: 14px;
1670
+ font-weight: 900;
1671
+ color: #ff6600;
1672
+ text-shadow: 0 0 6px #ff4400;
1673
+ }
1674
+
1675
+ .mil-bottom-controls-row {
1676
+ display: flex;
1677
+ justify-content: space-around;
1678
+ margin-top: auto;
1679
+ }
1680
+
1681
+ /* C. Audiophile Hi-Fi Right Hardware Layout */
1682
+ .hifi-right-hardware-layout {
1683
+ display: flex;
1684
+ flex-direction: column;
1685
+ gap: 14px;
1686
+ height: 100%;
1687
+ }
1688
+
1689
+ .hifi-gold-knobs-row {
1690
+ display: flex;
1691
+ justify-content: space-around;
1692
+ }
1693
+
1694
+ .mcintosh-bias-frame {
1695
+ background: #140d04;
1696
+ border: 1.5px solid #d4af37;
1697
+ border-radius: 6px;
1698
+ padding: 6px 8px;
1699
+ display: flex;
1700
+ flex-direction: column;
1701
+ align-items: center;
1702
+ gap: 4px;
1703
+ box-shadow: 0 0 12px rgba(212, 175, 55, 0.2);
1704
+ }
1705
+
1706
+ .mcintosh-bias-title {
1707
+ font-family: monospace;
1708
+ font-size: 8px;
1709
+ color: #fef08a;
1710
+ font-weight: bold;
1711
+ }
1712
+
1713
+ .mcintosh-bias-tubes {
1714
+ display: flex;
1715
+ gap: 8px;
1716
+ }
1717
+
1718
+ .mcintosh-binding-posts-row {
1719
+ display: flex;
1720
+ justify-content: space-around;
1721
+ margin-top: auto;
1722
+ background: rgba(0,0,0,0.4);
1723
+ padding: 8px;
1724
+ border-radius: 6px;
1725
+ border: 1px solid #334155;
1726
+ }
1727
+
1728
+ .binding-post-col {
1729
+ display: flex;
1730
+ flex-direction: column;
1731
+ align-items: center;
1732
+ gap: 4px;
1733
+ }
1734
+
1735
+ .binding-post-sub {
1736
+ font-family: monospace;
1737
+ font-size: 7px;
1738
+ color: #94a3b8;
1739
+ }
1740
+
1741
+ .posts-pair {
1742
+ display: flex;
1743
+ gap: 6px;
1744
+ }
1745
+
1746
+ .gold-binding-post {
1747
+ width: 14px;
1748
+ height: 14px;
1749
+ border-radius: 50%;
1750
+ border: 2px solid #fef08a;
1751
+ }
1752
+ .gold-binding-post.red { background: #dc2626; }
1753
+ .gold-binding-post.black { background: #18181b; }
1754
+
1755
+ /* D. CRT & Nixie Telemetry Stream */
1756
+ .telemetry-mini-stream {
1757
+ flex: 1;
1758
+ display: flex;
1759
+ flex-direction: column;
1760
+ background: #080503;
1761
+ border: 1px solid #451a03;
1762
+ border-radius: 6px;
1763
+ overflow: hidden;
1764
+ }
1765
+
1766
+ .term-stream-title {
1767
+ background: #1c0e05;
1768
+ padding: 3px 6px;
1769
+ font-family: monospace;
1770
+ font-size: 8px;
1771
+ color: #fbbf24;
1772
+ font-weight: bold;
1773
+ }
1774
+
1775
+ .term-stream-box {
1776
+ flex: 1;
1777
+ overflow-y: auto;
1778
+ padding: 6px;
1779
+ font-family: monospace;
1780
+ font-size: 9px;
1781
+ display: flex;
1782
+ flex-direction: column;
1783
+ gap: 2px;
1784
+ }
1785
+
1786
+ .term-msg-line.success { color: #4ade80; }
1787
+ .term-msg-line.crypto { color: #facc15; }
1788
+ .term-msg-line.warn { color: #fb923c; }
1789
+ .term-msg-line.error { color: #f87171; }
1790
+ .term-msg-line.info { color: #94a3b8; }
1791
+
1792
+ /* ==========================================================================
1793
+ GENERIC SKEUOMORPHIC CONTROLS
1794
+ ========================================================================== */
1795
+ .hardware-rotary-knob {
1796
+ display: flex;
1797
+ flex-direction: column;
1798
+ align-items: center;
1799
+ gap: 4px;
1800
+ cursor: pointer;
1801
+ }
1802
+
1803
+ .knob-face {
1804
+ border-radius: 50%;
1805
+ position: relative;
1806
+ box-shadow: 0 4px 10px rgba(0,0,0,0.7), inset 0 2px 4px rgba(255,255,255,0.4);
1807
+ }
1808
+
1809
+ .hardware-rotary-knob.brass .knob-face {
1810
+ background: radial-gradient(circle at 35% 35%, #fde68a 0%, #d97706 45%, #78350f 85%, #451a03 100%);
1811
+ border: 2px solid #b45309;
1812
+ }
1813
+
1814
+ .hardware-rotary-knob.bakelite .knob-face {
1815
+ background: radial-gradient(circle at 35% 35%, #44403c 0%, #1c1917 65%, #0c0a09 100%);
1816
+ border: 2px solid #292524;
1817
+ }
1818
+
1819
+ .hardware-rotary-knob.silver .knob-face {
1820
+ background: radial-gradient(circle at 35% 35%, #ffffff 0%, #cbd5e1 50%, #475569 90%, #1e293b 100%);
1821
+ border: 2px solid #94a3b8;
1822
+ }
1823
+
1824
+ .knob-indicator {
1825
+ position: absolute;
1826
+ top: 4px;
1827
+ left: 50%;
1828
+ transform: translateX(-50%);
1829
+ width: 3px;
1830
+ height: 30%;
1831
+ background: #fff;
1832
+ border-radius: 2px;
1833
+ box-shadow: 0 0 3px #000;
1834
+ }
1835
+
1836
+ .knob-label {
1837
+ font-family: monospace;
1838
+ font-size: 8px;
1839
+ font-weight: bold;
1840
+ text-transform: uppercase;
1841
+ color: #cbd5e1;
1842
+ }
1843
+
1844
+ /* E. Nordic OP-1 Right Hardware Layout */
1845
+ .nordic-right-hardware-layout {
1846
+ display: flex;
1847
+ flex-direction: column;
1848
+ gap: 12px;
1849
+ height: 100%;
1850
+ align-items: center;
1851
+ }
1852
+
1853
+ .nordic-encoders-2x2 {
1854
+ display: grid;
1855
+ grid-template-columns: 1fr 1fr;
1856
+ gap: 10px;
1857
+ width: 100%;
1858
+ justify-items: center;
1859
+ background: #f1f5f9;
1860
+ padding: 10px 6px;
1861
+ border-radius: 8px;
1862
+ border: 1px solid #cbd5e1;
1863
+ }
1864
+
1865
+ .nordic-jog-section {
1866
+ display: flex;
1867
+ flex-direction: column;
1868
+ align-items: center;
1869
+ gap: 4px;
1870
+ }
1871
+
1872
+ .nordic-jog-label {
1873
+ font-family: monospace;
1874
+ font-size: 8px;
1875
+ font-weight: 700;
1876
+ color: #475569;
1877
+ text-transform: uppercase;
1878
+ }
1879
+
1880
+ /* Specific Zone Skin Overrides */
1881
+
1882
+ /* Nordic OP-1 Zones */
1883
+ .skin-nordic-op1 .hardware-contacts-zone {
1884
+ background: #f8fafc;
1885
+ border-right: 2px solid #cbd5e1;
1886
+ }
1887
+ .skin-nordic-op1 .contacts-zone-header {
1888
+ color: #334155;
1889
+ border-bottom: 1.5px solid #cbd5e1;
1890
+ }
1891
+ .skin-nordic-op1 .hardware-contact-card {
1892
+ background: #ffffff;
1893
+ border: 1.5px solid #cbd5e1;
1894
+ color: #0f172a;
1895
+ box-shadow: 0 2px 4px rgba(0,0,0,0.06);
1896
+ }
1897
+ .skin-nordic-op1 .hardware-contact-card .contact-bold-name {
1898
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
1899
+ color: #0f172a;
1900
+ font-weight: 700;
1901
+ }
1902
+ .skin-nordic-op1 .hardware-contact-card.selected {
1903
+ background: #f1f5f9;
1904
+ border-color: #0284c7;
1905
+ box-shadow: 0 0 0 2px rgba(2, 132, 199, 0.3);
1906
+ }
1907
+ .skin-nordic-op1 .hardware-action-button {
1908
+ background: #0284c7;
1909
+ border: 1px solid #0369a1;
1910
+ color: #ffffff;
1911
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
1912
+ }
1913
+ .skin-nordic-op1 .hardware-action-button.secondary {
1914
+ background: #f1f5f9;
1915
+ border-color: #cbd5e1;
1916
+ color: #334155;
1917
+ }
1918
+ .skin-nordic-op1 .hardware-chat-zone {
1919
+ background: #ffffff;
1920
+ }
1921
+ .skin-nordic-op1 .chat-top-bezel {
1922
+ background: #f8fafc;
1923
+ border-bottom: 1px solid #e2e8f0;
1924
+ }
1925
+ .skin-nordic-op1 .chat-peer-title {
1926
+ color: #0f172a;
1927
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
1928
+ font-weight: 700;
1929
+ }
1930
+ .skin-nordic-op1 .chat-e2ee-hash {
1931
+ color: #64748b;
1932
+ }
1933
+ .skin-nordic-op1 .hardware-msg-row.inbound .hardware-msg-bubble {
1934
+ background: #f1f5f9;
1935
+ color: #0f172a;
1936
+ border: 1px solid #e2e8f0;
1937
+ border-radius: 8px;
1938
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
1939
+ }
1940
+ .skin-nordic-op1 .hardware-msg-row.outbound .hardware-msg-bubble {
1941
+ background: #0284c7;
1942
+ color: #ffffff;
1943
+ border: 1px solid #0369a1;
1944
+ border-radius: 8px;
1945
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
1946
+ }
1947
+ .skin-nordic-op1 .hardware-msg-row.outbound .hardware-msg-meta {
1948
+ color: #bae6fd;
1949
+ }
1950
+ .skin-nordic-op1 .hardware-input-deck {
1951
+ background: #f8fafc;
1952
+ border-top: 1px solid #e2e8f0;
1953
+ }
1954
+ .skin-nordic-op1 .hardware-input-field {
1955
+ background: #ffffff;
1956
+ border: 1.5px solid #cbd5e1;
1957
+ color: #0f172a;
1958
+ box-shadow: none;
1959
+ }
1960
+ .skin-nordic-op1 .hardware-input-field:focus {
1961
+ border-color: #0284c7;
1962
+ }
1963
+ .skin-nordic-op1 .hardware-transmit-button {
1964
+ background: #0284c7;
1965
+ border: 1px solid #0369a1;
1966
+ color: #ffffff;
1967
+ }
1968
+ .skin-nordic-op1 .hardware-controls-zone {
1969
+ background: #f8fafc;
1970
+ border-left: 2px solid #cbd5e1;
1971
+ }
1972
+ .skin-nordic-op1 .controls-zone-header {
1973
+ color: #334155;
1974
+ border-bottom: 1.5px solid #cbd5e1;
1975
+ }
1976
+ .skin-nordic-op1 .telemetry-mini-stream {
1977
+ background: #ffffff;
1978
+ border-color: #cbd5e1;
1979
+ }
1980
+ .skin-nordic-op1 .term-stream-title {
1981
+ background: #f1f5f9;
1982
+ color: #334155;
1983
+ }
1984
+
1985
+ /* CRT Oscilloscope Zones */
1986
+ .skin-oscilloscope-crt .hardware-contacts-zone {
1987
+ background: #07130a;
1988
+ border-right: 2px solid #1e2d23;
1989
+ }
1990
+ .skin-oscilloscope-crt .contacts-zone-header {
1991
+ color: #4ade80;
1992
+ border-bottom-color: #166534;
1993
+ }
1994
+ .skin-oscilloscope-crt .hardware-contact-card {
1995
+ background: #0c1c11;
1996
+ border: 1.5px solid #166534;
1997
+ color: #86efac;
1998
+ }
1999
+ .skin-oscilloscope-crt .hardware-contact-card.selected {
2000
+ background: #14532d;
2001
+ border-color: #4ade80;
2002
+ box-shadow: 0 0 10px rgba(74, 222, 128, 0.4);
2003
+ }
2004
+ .skin-oscilloscope-crt .hardware-chat-zone {
2005
+ background: #030a05;
2006
+ border-left: 1px solid #14281b;
2007
+ border-right: 1px solid #14281b;
2008
+ }
2009
+ .skin-oscilloscope-crt .chat-peer-title {
2010
+ color: #4ade80;
2011
+ font-family: monospace;
2012
+ }
2013
+ .skin-oscilloscope-crt .hardware-msg-bubble {
2014
+ background: #06180a;
2015
+ border: 1.5px solid #16a34a;
2016
+ color: #86efac;
2017
+ font-family: monospace;
2018
+ box-shadow: 0 0 8px rgba(22, 163, 74, 0.2);
2019
+ }
2020
+ .skin-oscilloscope-crt .hardware-input-deck {
2021
+ background: #06180a;
2022
+ border-top-color: #1e2d23;
2023
+ }
2024
+ .skin-oscilloscope-crt .hardware-input-field {
2025
+ background: #020c04;
2026
+ border-color: #16a34a;
2027
+ color: #4ade80;
2028
+ }
2029
+ .skin-oscilloscope-crt .hardware-transmit-button {
2030
+ background: linear-gradient(180deg, #16a34a 0%, #14532d 100%);
2031
+ border-color: #86efac;
2032
+ }
2033
+
2034
+ /* Nixie Tube Zones */
2035
+ .skin-nixie-tube .hardware-contacts-zone {
2036
+ background: #140904;
2037
+ border-right: 2px solid #3d2110;
2038
+ }
2039
+ .skin-nixie-tube .contacts-zone-header {
2040
+ color: #fb923c;
2041
+ border-bottom-color: #7c2d12;
2042
+ }
2043
+ .skin-nixie-tube .hardware-contact-card {
2044
+ background: #1f0d06;
2045
+ border: 1.5px solid #7c2d12;
2046
+ color: #fed7aa;
2047
+ }
2048
+ .skin-nixie-tube .hardware-contact-card.selected {
2049
+ background: #7c2d12;
2050
+ border-color: #f97316;
2051
+ box-shadow: 0 0 12px rgba(249, 115, 22, 0.5);
2052
+ }
2053
+ .skin-nixie-tube .hardware-chat-zone {
2054
+ background: #0b0502;
2055
+ }
2056
+ .skin-nixie-tube .chat-peer-title {
2057
+ color: #fdba74;
2058
+ font-family: monospace;
2059
+ }
2060
+ .skin-nixie-tube .hardware-msg-bubble {
2061
+ background: #1a0c05;
2062
+ border: 1.5px solid #ea580c;
2063
+ color: #fed7aa;
2064
+ font-family: monospace;
2065
+ box-shadow: 0 0 8px rgba(234, 88, 12, 0.25);
2066
+ }
2067
+ .skin-nixie-tube .hardware-input-deck {
2068
+ background: #140904;
2069
+ border-top-color: #3d2110;
2070
+ }
2071
+ .skin-nixie-tube .hardware-input-field {
2072
+ background: #0d0502;
2073
+ border-color: #ea580c;
2074
+ color: #fed7aa;
2075
+ }
2076
+ .skin-nixie-tube .hardware-transmit-button {
2077
+ background: linear-gradient(180deg, #ea580c 0%, #9a3412 100%);
2078
+ border-color: #fdba74;
2079
+ }
2080
+
2081
+ /* Modals */
2082
+ .hardware-modal-overlay {
2083
+ position: fixed;
2084
+ inset: 0;
2085
+ background: rgba(0,0,0,0.85);
2086
+ display: flex;
2087
+ align-items: center;
2088
+ justify-content: center;
2089
+ z-index: 100;
2090
+ }
2091
+
2092
+ .hardware-modal-card {
2093
+ background: #1c1109;
2094
+ border: 2px solid #b45309;
2095
+ border-radius: 8px;
2096
+ width: 90%;
2097
+ max-width: 480px;
2098
+ color: #fef3c7;
2099
+ overflow: hidden;
2100
+ box-shadow: 0 20px 50px #000;
2101
+ }
2102
+
2103
+ .hardware-modal-header {
2104
+ padding: 10px 16px;
2105
+ background: #2b180c;
2106
+ border-bottom: 1px solid #b45309;
2107
+ font-family: monospace;
2108
+ font-weight: bold;
2109
+ display: flex;
2110
+ justify-content: space-between;
2111
+ }
2112
+
2113
+ .modal-close-btn {
2114
+ background: none;
2115
+ border: none;
2116
+ color: #fef08a;
2117
+ cursor: pointer;
2118
+ font-size: 14px;
2119
+ }
2120
+
2121
+ .hardware-modal-body {
2122
+ padding: 16px;
2123
+ display: flex;
2124
+ flex-direction: column;
2125
+ gap: 8px;
2126
+ }
2127
+
2128
+ .modal-help-text {
2129
+ font-size: 11px;
2130
+ opacity: 0.85;
2131
+ }
2132
+
2133
+ .modal-json-textarea {
2134
+ width: 100%;
2135
+ height: 120px;
2136
+ background: #0a0603;
2137
+ border: 1px solid #78350f;
2138
+ border-radius: 4px;
2139
+ padding: 8px;
2140
+ color: #fef08a;
2141
+ font-family: monospace;
2142
+ font-size: 10px;
2143
+ }
2144
+
2145
+ .hardware-modal-footer {
2146
+ padding: 10px 16px;
2147
+ background: #2b180c;
2148
+ border-top: 1px solid #b45309;
2149
+ display: flex;
2150
+ justify-content: flex-end;
2151
+ gap: 8px;
2152
+ }
2153
+
2154
+ .hardware-btn-primary {
2155
+ padding: 6px 14px;
2156
+ background: linear-gradient(180deg, #d97706 0%, #92400e 100%);
2157
+ border: 1px solid #fde68a;
2158
+ color: #fff;
2159
+ font-family: monospace;
2160
+ font-size: 11px;
2161
+ font-weight: bold;
2162
+ border-radius: 4px;
2163
+ cursor: pointer;
2164
+ }
2165
+
2166
+ .hardware-btn-secondary {
2167
+ background: none;
2168
+ border: 1px solid #78350f;
2169
+ padding: 6px 12px;
2170
+ border-radius: 4px;
2171
+ color: #fef08a;
2172
+ font-family: monospace;
2173
+ font-size: 11px;
2174
+ cursor: pointer;
2175
+ }
2176
+
2177
+ /* ==========================================================================
2178
+ NORDIC MINIMALIST (TEENAGE ENGINEERING OP-1) COMPLETE DESIGN SYSTEM
2179
+ ========================================================================== */
2180
+
2181
+ /* Top Black High-Contrast OLED Deck */
2182
+ .nordic-oled-top-deck {
2183
+ background: #000000;
2184
+ border-radius: 14px 14px 0 0;
2185
+ margin: 12px 14px 0 14px;
2186
+ padding: 12px 20px 8px 20px;
2187
+ box-shadow: inset 0 0 12px rgba(0,0,0,0.9), 0 2px 6px rgba(0,0,0,0.25);
2188
+ display: flex;
2189
+ flex-direction: column;
2190
+ gap: 2px;
2191
+ }
2192
+
2193
+ .nordic-oled-header-row {
2194
+ display: flex;
2195
+ justify-content: space-between;
2196
+ align-items: flex-start;
2197
+ }
2198
+
2199
+ .nordic-brand-col {
2200
+ display: flex;
2201
+ flex-direction: column;
2202
+ }
2203
+
2204
+ .nordic-brand-name {
2205
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
2206
+ font-size: 15px;
2207
+ font-weight: 900;
2208
+ color: #ffffff;
2209
+ letter-spacing: 0.8px;
2210
+ }
2211
+
2212
+ .nordic-brand-sub {
2213
+ font-size: 9px;
2214
+ color: #9ca3af;
2215
+ margin-top: 1px;
2216
+ }
2217
+
2218
+ .nordic-frequency-display {
2219
+ font-family: 'Fira Code', 'Courier New', monospace;
2220
+ font-size: 32px;
2221
+ font-weight: 700;
2222
+ color: #ffffff;
2223
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.9);
2224
+ letter-spacing: 1px;
2225
+ }
2226
+
2227
+ .nordic-status-cluster {
2228
+ display: flex;
2229
+ align-items: center;
2230
+ gap: 10px;
2231
+ font-family: monospace;
2232
+ font-size: 11px;
2233
+ color: #e5e7eb;
2234
+ }
2235
+
2236
+ .nordic-skin-select {
2237
+ background: #18181b;
2238
+ color: #fafafa;
2239
+ border: 1px solid #3f3f46;
2240
+ border-radius: 4px;
2241
+ padding: 4px 8px;
2242
+ font-family: monospace;
2243
+ font-size: 10px;
2244
+ outline: none;
2245
+ cursor: pointer;
2246
+ }
2247
+
2248
+ .nordic-waveform-wrapper {
2249
+ height: 46px;
2250
+ display: flex;
2251
+ align-items: center;
2252
+ overflow: hidden;
2253
+ }
2254
+
2255
+ .nordic-waveform-canvas {
2256
+ width: 100%;
2257
+ height: 46px;
2258
+ }
2259
+
2260
+ /* --- Nordic Left Column (Channels & Contacts) --- */
2261
+ .nordic-left-column {
2262
+ width: 250px;
2263
+ background: #ffffff;
2264
+ margin: 10px 0 12px 14px;
2265
+ border-radius: 0 0 0 14px;
2266
+ border: 1.5px solid #d1d5db;
2267
+ border-right: none;
2268
+ display: flex;
2269
+ flex-direction: column;
2270
+ justify-content: space-between;
2271
+ padding: 14px 12px;
2272
+ position: relative;
2273
+ }
2274
+
2275
+ .nordic-left-inner {
2276
+ display: flex;
2277
+ gap: 14px;
2278
+ }
2279
+
2280
+ .nordic-color-buttons-stack {
2281
+ display: flex;
2282
+ flex-direction: column;
2283
+ gap: 12px;
2284
+ }
2285
+
2286
+ .nordic-color-knob {
2287
+ width: 26px;
2288
+ height: 26px;
2289
+ border-radius: 50%;
2290
+ box-shadow: 0 2px 5px rgba(0,0,0,0.25), inset 0 1px 2px rgba(255,255,255,0.7);
2291
+ cursor: pointer;
2292
+ position: relative;
2293
+ border: 1.5px solid rgba(0,0,0,0.12);
2294
+ transition: transform 0.1s ease;
2295
+ }
2296
+
2297
+ .nordic-color-knob:hover {
2298
+ transform: scale(1.05);
2299
+ }
2300
+
2301
+ .white-knob-notch {
2302
+ width: 2px;
2303
+ height: 9px;
2304
+ background: #18181b;
2305
+ position: absolute;
2306
+ top: 2px;
2307
+ left: 50%;
2308
+ transform: translateX(-50%);
2309
+ border-radius: 1px;
2310
+ }
2311
+
2312
+ .nordic-channels-section {
2313
+ flex: 1;
2314
+ display: flex;
2315
+ flex-direction: column;
2316
+ gap: 6px;
2317
+ }
2318
+
2319
+ .nordic-section-label {
2320
+ font-size: 11px;
2321
+ font-weight: 700;
2322
+ color: #4b5563;
2323
+ margin-bottom: 2px;
2324
+ }
2325
+
2326
+ .nordic-channel-pill {
2327
+ padding: 5px 10px;
2328
+ border-radius: 6px;
2329
+ font-size: 13px;
2330
+ font-weight: 600;
2331
+ color: #111827;
2332
+ cursor: pointer;
2333
+ }
2334
+
2335
+ .nordic-channel-pill.active {
2336
+ background: #e5e7eb;
2337
+ }
2338
+
2339
+ .nordic-divider {
2340
+ height: 1px;
2341
+ background: #e5e7eb;
2342
+ margin: 6px 0;
2343
+ }
2344
+
2345
+ .nordic-contacts-list {
2346
+ display: flex;
2347
+ flex-direction: column;
2348
+ gap: 6px;
2349
+ }
2350
+
2351
+ .nordic-contact-item {
2352
+ display: flex;
2353
+ justify-content: space-between;
2354
+ align-items: center;
2355
+ padding: 4px 6px;
2356
+ border-radius: 4px;
2357
+ cursor: pointer;
2358
+ font-size: 11px;
2359
+ font-weight: 600;
2360
+ letter-spacing: 0.5px;
2361
+ color: #374151;
2362
+ }
2363
+
2364
+ .nordic-contact-item.active {
2365
+ background: #f3f4f6;
2366
+ color: #111827;
2367
+ }
2368
+
2369
+ .nordic-status-dot {
2370
+ width: 7px;
2371
+ height: 7px;
2372
+ border-radius: 50%;
2373
+ background: #9ca3af;
2374
+ }
2375
+
2376
+ .nordic-status-dot.active {
2377
+ background: #4b5563;
2378
+ }
2379
+
2380
+ /* Speaker Grille */
2381
+ .nordic-speaker-grille {
2382
+ width: 32px;
2383
+ height: 52px;
2384
+ display: grid;
2385
+ grid-template-columns: repeat(4, 1fr);
2386
+ gap: 3.5px;
2387
+ padding: 4px;
2388
+ margin-top: auto;
2389
+ }
2390
+
2391
+ .speaker-dot {
2392
+ width: 4px;
2393
+ height: 4px;
2394
+ border-radius: 50%;
2395
+ background: #374151;
2396
+ box-shadow: inset 0 1px 1px #000;
2397
+ }
2398
+
2399
+ /* ============================================================================
2400
+ TRUE WINAMP PHOTOREALISTIC HARDWARE ENGINE: NORDIC OP-1
2401
+ ============================================================================ */
2402
+ .nordic-stage {
2403
+ min-height: 100vh;
2404
+ background: radial-gradient(circle at 50% 30%, #f1f3f5 0%, #d8dde3 100%);
2405
+ display: flex;
2406
+ align-items: center;
2407
+ justify-content: center;
2408
+ padding: 24px;
2409
+ box-sizing: border-box;
2410
+ }
2411
+
2412
+ .nordic-window-box {
2413
+ width: 1024px;
2414
+ background: #1f2124;
2415
+ border-radius: 12px 12px 28px 28px;
2416
+ box-shadow: 0 25px 60px rgba(15, 23, 42, 0.35), 0 4px 16px rgba(0, 0, 0, 0.15);
2417
+ overflow: hidden;
2418
+ display: flex;
2419
+ flex-direction: column;
2420
+ user-select: none;
2421
+ }
2422
+
2423
+ /* Winamp-style Window Header Bar */
2424
+ .nordic-window-titlebar {
2425
+ height: 34px;
2426
+ background: linear-gradient(180deg, #33363d 0%, #25272c 100%);
2427
+ border-bottom: 1px solid #141518;
2428
+ display: flex;
2429
+ align-items: center;
2430
+ justify-content: space-between;
2431
+ padding: 0 14px;
2432
+ font-family: 'Fira Code', monospace;
2433
+ font-size: 11px;
2434
+ }
2435
+
2436
+ .titlebar-left {
2437
+ display: flex;
2438
+ align-items: center;
2439
+ gap: 10px;
2440
+ font-weight: 600;
2441
+ color: #e2e8f0;
2442
+ }
2443
+
2444
+ .titlebar-e2ee {
2445
+ color: #22c55e;
2446
+ font-size: 10px;
2447
+ background: rgba(34, 197, 94, 0.12);
2448
+ padding: 2px 6px;
2449
+ border-radius: 3px;
2450
+ border: 1px solid rgba(34, 197, 94, 0.3);
2451
+ }
2452
+
2453
+ .titlebar-right {
2454
+ display: flex;
2455
+ align-items: center;
2456
+ gap: 8px;
2457
+ }
2458
+
2459
+ .titlebar-skin-select {
2460
+ background: #181a1d;
2461
+ color: #f8fafc;
2462
+ border: 1px solid #4b5563;
2463
+ border-radius: 4px;
2464
+ font-size: 11px;
2465
+ padding: 3px 8px;
2466
+ font-family: inherit;
2467
+ cursor: pointer;
2468
+ }
2469
+
2470
+ .titlebar-skin-select:hover {
2471
+ border-color: #94a3b8;
2472
+ }
2473
+
2474
+ .titlebar-btn {
2475
+ background: #2b2e35;
2476
+ border: 1px solid #475569;
2477
+ color: #cbd5e1;
2478
+ width: 22px;
2479
+ height: 22px;
2480
+ border-radius: 3px;
2481
+ display: flex;
2482
+ align-items: center;
2483
+ justify-content: center;
2484
+ font-size: 11px;
2485
+ cursor: pointer;
2486
+ transition: all 0.1s;
2487
+ }
2488
+
2489
+ .titlebar-btn:hover {
2490
+ background: #475569;
2491
+ color: #ffffff;
2492
+ }
2493
+
2494
+ .titlebar-btn.close:hover {
2495
+ background: #ef4444;
2496
+ border-color: #dc2626;
2497
+ }
2498
+
2499
+ /* Exact 1024x565 Hardware Canvas */
2500
+ .nordic-hardware-canvas {
2501
+ width: 1024px;
2502
+ height: 565px;
2503
+ position: relative;
2504
+ background-color: #e5e5e5;
2505
+ overflow: hidden;
2506
+ }
2507
+
2508
+ .nordic-chassis-bitmap {
2509
+ width: 1024px;
2510
+ height: 565px;
2511
+ position: absolute;
2512
+ top: 0;
2513
+ left: 0;
2514
+ pointer-events: none;
2515
+ user-select: none;
2516
+ }
2517
+
2518
+ /* 1. Top Black OLED Screen Overlays */
2519
+ .nordic-oled-viewport {
2520
+ position: absolute;
2521
+ left: 46px;
2522
+ top: 48px;
2523
+ width: 754px;
2524
+ height: 133px;
2525
+ background: #000000;
2526
+ border-radius: 8px;
2527
+ box-sizing: border-box;
2528
+ padding: 10px 18px 4px 18px;
2529
+ display: flex;
2530
+ flex-direction: column;
2531
+ justify-content: space-between;
2532
+ pointer-events: none;
2533
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.9), 0 0 1px rgba(255, 255, 255, 0.1);
2534
+ }
2535
+
2536
+ .nordic-oled-top-meta {
2537
+ display: flex;
2538
+ justify-content: space-between;
2539
+ align-items: flex-start;
2540
+ color: #ffffff;
2541
+ font-family: 'Fira Code', monospace;
2542
+ }
2543
+
2544
+ .nordic-oled-brand {
2545
+ display: flex;
2546
+ flex-direction: column;
2547
+ width: 220px;
2548
+ }
2549
+
2550
+ .nordic-oled-title {
2551
+ font-size: 13.5px;
2552
+ font-weight: 800;
2553
+ letter-spacing: 1px;
2554
+ color: #ffffff;
2555
+ }
2556
+
2557
+ .nordic-oled-sub {
2558
+ font-size: 8.5px;
2559
+ color: #9ca3af;
2560
+ letter-spacing: 0.4px;
2561
+ margin-top: 1px;
2562
+ }
2563
+
2564
+ .nordic-oled-freq {
2565
+ font-size: 27px;
2566
+ font-weight: 800;
2567
+ letter-spacing: 2px;
2568
+ color: #ffffff;
2569
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.95), 0 0 22px rgba(255, 255, 255, 0.45);
2570
+ text-align: center;
2571
+ flex: 1;
2572
+ }
2573
+
2574
+ .nordic-oled-stats {
2575
+ font-size: 11px;
2576
+ display: flex;
2577
+ gap: 12px;
2578
+ align-items: center;
2579
+ color: #e5e7eb;
2580
+ width: 200px;
2581
+ justify-content: flex-end;
2582
+ }
2583
+
2584
+ .nordic-oled-wave-box {
2585
+ width: 100%;
2586
+ height: 52px;
2587
+ display: flex;
2588
+ align-items: center;
2589
+ justify-content: center;
2590
+ }
2591
+
2592
+ .nordic-live-waveform-canvas {
2593
+ width: 100%;
2594
+ height: 100%;
2595
+ }
2596
+
2597
+ /* 2. Four Left Rubber Buttons Hotspots */
2598
+ .nordic-hotspot-rubber-btn {
2599
+ position: absolute;
2600
+ left: 63px;
2601
+ width: 38px;
2602
+ height: 38px;
2603
+ border-radius: 50%;
2604
+ cursor: pointer;
2605
+ background: transparent;
2606
+ transition: transform 0.08s ease, filter 0.12s ease;
2607
+ }
2608
+
2609
+ .nordic-hotspot-rubber-btn:hover {
2610
+ box-shadow: 0 0 10px rgba(255, 255, 255, 0.6);
2611
+ }
2612
+
2613
+ .nordic-hotspot-rubber-btn:active {
2614
+ transform: scale(0.92);
2615
+ box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.4);
2616
+ }
2617
+
2618
+ .btn-rubber-orange { top: 204px; }
2619
+ .btn-rubber-ochre { top: 250px; }
2620
+ .btn-rubber-cyan { top: 294px; }
2621
+ .btn-rubber-white { top: 338px; }
2622
+
2623
+ /* 3. Left Channels & Contacts List */
2624
+ .nordic-channels-viewport {
2625
+ position: absolute;
2626
+ left: 110px;
2627
+ top: 182px;
2628
+ width: 166px;
2629
+ height: 338px;
2630
+ background: #ffffff;
2631
+ border-right: 1.5px solid #e5e7eb;
2632
+ box-sizing: border-box;
2633
+ padding: 8px 10px 10px 10px;
2634
+ display: flex;
2635
+ flex-direction: column;
2636
+ font-family: 'Fira Code', -apple-system, BlinkMacSystemFont, sans-serif;
2637
+ user-select: none;
2638
+ }
2639
+
2640
+ .nordic-panel-heading {
2641
+ font-size: 11px;
2642
+ font-weight: 700;
2643
+ color: #374151;
2644
+ margin: 0 0 6px 4px;
2645
+ height: 16px;
2646
+ line-height: 16px;
2647
+ }
2648
+
2649
+ .nordic-channels-stack {
2650
+ display: flex;
2651
+ flex-direction: column;
2652
+ gap: 8px;
2653
+ }
2654
+
2655
+ .nordic-channel-clickable {
2656
+ height: 36px;
2657
+ line-height: 36px;
2658
+ padding: 0 10px;
2659
+ font-size: 13px;
2660
+ font-weight: 600;
2661
+ color: #111827;
2662
+ border-radius: 4px;
2663
+ cursor: pointer;
2664
+ box-sizing: border-box;
2665
+ transition: all 0.12s;
2666
+ }
2667
+
2668
+ .nordic-channel-clickable:hover {
2669
+ background: rgba(0, 0, 0, 0.05);
2670
+ }
2671
+
2672
+ .nordic-channel-clickable.active {
2673
+ background: #e5e7eb;
2674
+ color: #000000;
2675
+ font-weight: 700;
2676
+ }
2677
+
2678
+ .nordic-panel-divider {
2679
+ height: 1px;
2680
+ background: #e5e7eb;
2681
+ margin: 10px 0 8px 0;
2682
+ }
2683
+
2684
+ .nordic-contacts-stack {
2685
+ display: flex;
2686
+ flex-direction: column;
2687
+ gap: 6px;
2688
+ }
2689
+
2690
+ .nordic-contact-clickable {
2691
+ display: flex;
2692
+ align-items: center;
2693
+ justify-content: space-between;
2694
+ height: 26px;
2695
+ padding: 0 8px;
2696
+ border-radius: 4px;
2697
+ cursor: pointer;
2698
+ transition: all 0.12s;
2699
+ }
2700
+
2701
+ .nordic-contact-clickable:hover {
2702
+ background: rgba(0, 0, 0, 0.05);
2703
+ }
2704
+
2705
+ .nordic-contact-clickable.active {
2706
+ background: #f1f3f5;
2707
+ }
2708
+
2709
+ .nordic-contact-label {
2710
+ font-size: 11px;
2711
+ font-weight: 600;
2712
+ color: #1f2937;
2713
+ }
2714
+
2715
+ .nordic-contact-led {
2716
+ width: 7px;
2717
+ height: 7px;
2718
+ border-radius: 50%;
2719
+ background: #9ca3af;
2720
+ }
2721
+
2722
+ .nordic-contact-led.active {
2723
+ background: #10b981;
2724
+ box-shadow: 0 0 6px #10b981;
2725
+ }
2726
+
2727
+ .nordic-contact-led.standby {
2728
+ background: #d1d5db;
2729
+ }
2730
+
2731
+ /* 4. Center Chat Messages Viewport */
2732
+ .nordic-chat-live-viewport {
2733
+ position: absolute;
2734
+ left: 276px;
2735
+ top: 182px;
2736
+ width: 506px;
2737
+ height: 338px;
2738
+ background: #ffffff;
2739
+ border-radius: 0;
2740
+ display: flex;
2741
+ flex-direction: column;
2742
+ box-sizing: border-box;
2743
+ font-family: 'Fira Code', monospace;
2744
+ overflow: hidden;
2745
+ }
2746
+
2747
+ .nordic-chat-header-bar {
2748
+ padding: 10px 16px 6px 16px;
2749
+ font-size: 13px;
2750
+ font-weight: 700;
2751
+ color: #111827;
2752
+ background: #ffffff;
2753
+ display: flex;
2754
+ align-items: center;
2755
+ justify-content: space-between;
2756
+ }
2757
+
2758
+ .nordic-chat-scroller {
2759
+ flex: 1;
2760
+ overflow-y: auto;
2761
+ padding: 6px 16px;
2762
+ display: flex;
2763
+ flex-direction: column;
2764
+ gap: 10px;
2765
+ scrollbar-width: none;
2766
+ -ms-overflow-style: none;
2767
+ background: #ffffff;
2768
+ }
2769
+
2770
+ .nordic-chat-scroller::-webkit-scrollbar {
2771
+ display: none;
2772
+ width: 0;
2773
+ height: 0;
2774
+ }
2775
+
2776
+ .nordic-chat-empty {
2777
+ display: flex;
2778
+ flex-direction: column;
2779
+ align-items: center;
2780
+ justify-content: center;
2781
+ height: 100%;
2782
+ color: #6b7280;
2783
+ text-align: center;
2784
+ }
2785
+
2786
+ .empty-title {
2787
+ font-weight: 700;
2788
+ font-size: 12px;
2789
+ color: #374151;
2790
+ }
2791
+
2792
+ .empty-sub {
2793
+ font-size: 10px;
2794
+ margin-top: 2px;
2795
+ }
2796
+
2797
+ .nordic-card-row {
2798
+ display: flex;
2799
+ width: 100%;
2800
+ }
2801
+
2802
+ .nordic-card-row.outbound {
2803
+ justify-content: flex-end;
2804
+ }
2805
+
2806
+ .nordic-card-row.inbound {
2807
+ justify-content: flex-start;
2808
+ }
2809
+
2810
+ .nordic-live-card {
2811
+ max-width: 82%;
2812
+ background: #ffffff;
2813
+ border: 1.5px solid #222224;
2814
+ border-radius: 6px;
2815
+ padding: 6px 12px;
2816
+ box-shadow: none;
2817
+ }
2818
+
2819
+ .nordic-card-row.outbound .nordic-live-card {
2820
+ background: #ffffff;
2821
+ border: 1.5px solid #222224;
2822
+ }
2823
+
2824
+ .nordic-live-card-meta {
2825
+ display: flex;
2826
+ justify-content: space-between;
2827
+ align-items: center;
2828
+ font-size: 9.5px;
2829
+ font-weight: 600;
2830
+ color: #1f2937;
2831
+ margin-bottom: 2px;
2832
+ gap: 14px;
2833
+ }
2834
+
2835
+ .nordic-card-ticks {
2836
+ font-weight: bold;
2837
+ color: #111827;
2838
+ }
2839
+
2840
+ .nordic-live-card-body {
2841
+ font-size: 12px;
2842
+ font-weight: 500;
2843
+ color: #111827;
2844
+ line-height: 1.35;
2845
+ word-break: break-word;
2846
+ }
2847
+
2848
+ /* 5. Message Input Bar */
2849
+ .nordic-input-hotspot {
2850
+ height: 44px;
2851
+ padding: 6px 16px 8px 16px;
2852
+ display: flex;
2853
+ align-items: center;
2854
+ background: #ffffff;
2855
+ box-sizing: border-box;
2856
+ }
2857
+
2858
+ .nordic-input-field-live {
2859
+ flex: 1;
2860
+ height: 28px;
2861
+ border: 1.5px solid #222224;
2862
+ border-right: none;
2863
+ border-radius: 6px 0 0 6px;
2864
+ padding: 0 12px;
2865
+ font-family: 'Fira Code', monospace;
2866
+ font-size: 12px;
2867
+ color: #111827;
2868
+ outline: none;
2869
+ background: #ffffff;
2870
+ }
2871
+
2872
+ .nordic-input-field-live:focus {
2873
+ border-color: #000000;
2874
+ }
2875
+
2876
+ .nordic-send-arrow-btn {
2877
+ height: 28px;
2878
+ background: #ffffff;
2879
+ border: 1.5px solid #222224;
2880
+ border-left: none;
2881
+ border-radius: 0 6px 6px 0;
2882
+ font-size: 16px;
2883
+ font-weight: 900;
2884
+ color: #111827;
2885
+ cursor: pointer;
2886
+ padding: 0 12px;
2887
+ display: flex;
2888
+ align-items: center;
2889
+ justify-content: center;
2890
+ transition: background 0.1s, transform 0.08s;
2891
+ }
2892
+
2893
+ .nordic-send-arrow-btn:hover {
2894
+ background: #f3f4f6;
2895
+ }
2896
+
2897
+ .nordic-send-arrow-btn:active {
2898
+ background: #e5e7eb;
2899
+ transform: scale(0.95);
2900
+ }
2901
+
2902
+ .nordic-send-arrow-btn:disabled {
2903
+ opacity: 0.3;
2904
+ cursor: not-allowed;
2905
+ }
2906
+
2907
+ /* 6. Right Controls Hotspots (Knurled Encoders & Jog Wheel) */
2908
+ .nordic-knob-clickspot {
2909
+ position: absolute;
2910
+ width: 48px;
2911
+ height: 48px;
2912
+ border-radius: 50%;
2913
+ cursor: pointer;
2914
+ }
2915
+
2916
+ .spot-vol { left: 808px; top: 60px; }
2917
+ .spot-g { left: 880px; top: 60px; }
2918
+ .spot-gain { left: 808px; top: 136px; }
2919
+ .spot-tune { left: 880px; top: 136px; }
2920
+
2921
+ /* Large Jog Wheel Clickspot */
2922
+ .nordic-jog-clickspot {
2923
+ position: absolute;
2924
+ left: 808px;
2925
+ top: 218px;
2926
+ width: 120px;
2927
+ height: 120px;
2928
+ border-radius: 50%;
2929
+ cursor: pointer;
2930
+ }
2931
+
2932
+ /* Bottom Pushbuttons (TX, SCAN, REC) */
2933
+ .nordic-btn-clickspot {
2934
+ position: absolute;
2935
+ width: 38px;
2936
+ height: 38px;
2937
+ border-radius: 50%;
2938
+ cursor: pointer;
2939
+ background: transparent;
2940
+ transition: background 0.1s, transform 0.08s;
2941
+ }
2942
+
2943
+ .nordic-btn-clickspot:hover {
2944
+ background: rgba(255, 255, 255, 0.25);
2945
+ }
2946
+
2947
+ .nordic-btn-clickspot:active {
2948
+ background: rgba(0, 0, 0, 0.2);
2949
+ transform: scale(0.92);
2950
+ }
2951
+
2952
+ .spot-tx { left: 824px; top: 476px; }
2953
+ .spot-scan { left: 868px; top: 476px; }
2954
+ .spot-rec { left: 914px; top: 476px; }
2955
+
2956
+ /* ============================================================================
2957
+ TRUE WINAMP PHOTOREALISTIC HARDWARE ENGINE: VINTAGE RADIOLA 1950
2958
+ ============================================================================ */
2959
+ .radiola-stage {
2960
+ min-height: 100vh;
2961
+ background: radial-gradient(circle at 50% 30%, #3a2212 0%, #120b06 100%);
2962
+ display: flex;
2963
+ align-items: center;
2964
+ justify-content: center;
2965
+ padding: 24px;
2966
+ box-sizing: border-box;
2967
+ }
2968
+
2969
+ .radiola-window-box {
2970
+ width: 1100px;
2971
+ background: #26160b;
2972
+ border-radius: 12px;
2973
+ box-shadow: 0 30px 70px rgba(0,0,0,0.7), 0 6px 20px rgba(0,0,0,0.4);
2974
+ overflow: hidden;
2975
+ display: flex;
2976
+ flex-direction: column;
2977
+ user-select: none;
2978
+ border: 1px solid #4a2c16;
2979
+ }
2980
+
2981
+ .radiola-window-titlebar {
2982
+ height: 34px;
2983
+ background: linear-gradient(180deg, #422714 0%, #29180b 100%);
2984
+ border-bottom: 1px solid #1c1007;
2985
+ display: flex;
2986
+ align-items: center;
2987
+ justify-content: space-between;
2988
+ padding: 0 14px;
2989
+ font-family: 'Fira Code', monospace;
2990
+ font-size: 11px;
2991
+ }
2992
+
2993
+ .radiola-hardware-canvas {
2994
+ width: 1100px;
2995
+ height: 614px;
2996
+ position: relative;
2997
+ overflow: hidden;
2998
+ background: #000;
2999
+ }
3000
+
3001
+ .radiola-stage-inner {
3002
+ width: 1376px;
3003
+ height: 768px;
3004
+ transform: scale(0.8);
3005
+ transform-origin: top left;
3006
+ position: absolute;
3007
+ left: 0;
3008
+ top: 0;
3009
+ }
3010
+
3011
+ .radiola-chassis-bitmap {
3012
+ position: absolute;
3013
+ left: 0;
3014
+ top: 0;
3015
+ width: 1376px;
3016
+ height: 768px;
3017
+ object-fit: cover;
3018
+ }
3019
+
3020
+ .radiola-dial-hotspot {
3021
+ position: absolute;
3022
+ left: 425px;
3023
+ top: 68px;
3024
+ width: 755px;
3025
+ height: 114px;
3026
+ cursor: crosshair;
3027
+ }
3028
+
3029
+ .radiola-golden-needle {
3030
+ position: absolute;
3031
+ top: 0;
3032
+ width: 4px;
3033
+ height: 114px;
3034
+ transform: translateX(-50%);
3035
+ transition: left 0.1s ease-out;
3036
+ }
3037
+
3038
+ .needle-line {
3039
+ width: 3px;
3040
+ height: 114px;
3041
+ background: linear-gradient(180deg, #ffd700 0%, #b8860b 100%);
3042
+ box-shadow: 0 0 8px #ffd700, 2px 0 6px rgba(0,0,0,0.6);
3043
+ margin: 0 auto;
3044
+ }
3045
+
3046
+ .needle-badge {
3047
+ position: absolute;
3048
+ bottom: -8px;
3049
+ left: 50%;
3050
+ transform: translateX(-50%);
3051
+ background: #2c1a0e;
3052
+ border: 1px solid #d4af37;
3053
+ color: #ffd700;
3054
+ font-size: 10px;
3055
+ font-weight: 700;
3056
+ padding: 1px 6px;
3057
+ border-radius: 3px;
3058
+ white-space: nowrap;
3059
+ font-family: monospace;
3060
+ }
3061
+
3062
+ .radiola-magic-eye-hotspot {
3063
+ position: absolute;
3064
+ left: 330px;
3065
+ top: 74px;
3066
+ width: 66px;
3067
+ height: 110px;
3068
+ display: flex;
3069
+ align-items: center;
3070
+ justify-content: center;
3071
+ pointer-events: none;
3072
+ }
3073
+
3074
+ .radiola-magic-eye-iris {
3075
+ width: 34px;
3076
+ height: 34px;
3077
+ border-radius: 50%;
3078
+ background: radial-gradient(circle, #34d399 0%, #059669 60%, #064e3b 100%);
3079
+ box-shadow: 0 0 16px #34d399;
3080
+ opacity: 0.85;
3081
+ animation: eyePulse 2.5s infinite alternate;
3082
+ }
3083
+
3084
+ @keyframes eyePulse {
3085
+ 0% { transform: scale(0.92); opacity: 0.75; }
3086
+ 100% { transform: scale(1.06); opacity: 0.95; }
3087
+ }
3088
+
3089
+ .radiola-contacts-overlay {
3090
+ position: absolute;
3091
+ left: 110px;
3092
+ top: 250px;
3093
+ width: 250px;
3094
+ display: flex;
3095
+ flex-direction: column;
3096
+ gap: 27px;
3097
+ }
3098
+
3099
+ .radiola-contact-brass-btn {
3100
+ height: 48px;
3101
+ display: flex;
3102
+ align-items: center;
3103
+ justify-content: space-between;
3104
+ padding: 0 16px;
3105
+ background: linear-gradient(180deg, #ddb86c 0%, #be9031 50%, #946d1a 100%);
3106
+ border: 1.5px solid #5a3f0e;
3107
+ border-radius: 4px;
3108
+ box-shadow: 0 3px 6px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.45);
3109
+ cursor: pointer;
3110
+ transition: all 0.12s;
3111
+ }
3112
+
3113
+ .radiola-contact-brass-btn:hover {
3114
+ background: linear-gradient(180deg, #ebd188 0%, #caa141 50%, #a67c22 100%);
3115
+ transform: translateY(-1px);
3116
+ }
3117
+
3118
+ .radiola-contact-brass-btn.active {
3119
+ background: linear-gradient(180deg, #b08528 0%, #8c6416 50%, #684809 100%);
3120
+ border-color: #f59e0b;
3121
+ box-shadow: inset 0 2px 5px rgba(0,0,0,0.6), 0 0 12px rgba(245, 158, 11, 0.45);
3122
+ }
3123
+
3124
+ .brass-screw {
3125
+ width: 6px;
3126
+ height: 6px;
3127
+ border-radius: 50%;
3128
+ background: #5a3f0e;
3129
+ border: 1px solid #362406;
3130
+ }
3131
+
3132
+ .brass-contact-name {
3133
+ font-family: 'Georgia', serif;
3134
+ font-size: 13px;
3135
+ font-weight: 700;
3136
+ color: #1a0f05;
3137
+ letter-spacing: 0.5px;
3138
+ text-shadow: 0 1px 0 rgba(255,255,255,0.3);
3139
+ }
3140
+
3141
+ .brass-pilot-lamp {
3142
+ width: 9px;
3143
+ height: 9px;
3144
+ border-radius: 50%;
3145
+ background: #4a3411;
3146
+ border: 1px solid #2e1f06;
3147
+ }
3148
+
3149
+ .brass-pilot-lamp.lit {
3150
+ background: #f59e0b;
3151
+ box-shadow: 0 0 10px #f59e0b, 0 0 4px #fbbf24;
3152
+ border-color: #fef3c7;
3153
+ }
3154
+
3155
+ .radiola-parchment-chat-box {
3156
+ position: absolute;
3157
+ left: 422px;
3158
+ top: 222px;
3159
+ width: 595px;
3160
+ height: 468px;
3161
+ background: #fbf5e6;
3162
+ border-radius: 6px;
3163
+ box-shadow: inset 0 2px 10px rgba(90, 60, 20, 0.15);
3164
+ display: flex;
3165
+ flex-direction: column;
3166
+ overflow: hidden;
3167
+ box-sizing: border-box;
3168
+ }
3169
+
3170
+ .radiola-parchment-header {
3171
+ padding: 12px 20px 8px 20px;
3172
+ border-bottom: 1px dashed #d1c0a5;
3173
+ font-family: 'Georgia', serif;
3174
+ color: #3b2413;
3175
+ }
3176
+
3177
+ .parchment-header-title {
3178
+ font-size: 14px;
3179
+ font-weight: 700;
3180
+ }
3181
+
3182
+ .parchment-header-sub {
3183
+ font-size: 11px;
3184
+ color: #785838;
3185
+ margin-top: 2px;
3186
+ }
3187
+
3188
+ .radiola-parchment-scroller {
3189
+ flex: 1;
3190
+ overflow-y: auto;
3191
+ padding: 10px 18px;
3192
+ display: flex;
3193
+ flex-direction: column;
3194
+ gap: 12px;
3195
+ scrollbar-width: none;
3196
+ -ms-overflow-style: none;
3197
+ }
3198
+
3199
+ .radiola-parchment-scroller::-webkit-scrollbar {
3200
+ display: none;
3201
+ }
3202
+
3203
+ .parchment-msg-row {
3204
+ display: flex;
3205
+ width: 100%;
3206
+ }
3207
+
3208
+ .parchment-msg-row.outbound {
3209
+ justify-content: flex-end;
3210
+ }
3211
+
3212
+ .parchment-msg-row.inbound {
3213
+ justify-content: flex-start;
3214
+ }
3215
+
3216
+ .parchment-card {
3217
+ max-width: 82%;
3218
+ background: #fffdf7;
3219
+ border: 1.5px solid #d8caa7;
3220
+ border-radius: 8px;
3221
+ padding: 8px 14px;
3222
+ box-shadow: 0 2px 6px rgba(60, 40, 15, 0.08);
3223
+ }
3224
+
3225
+ .parchment-card-meta {
3226
+ display: flex;
3227
+ justify-content: space-between;
3228
+ align-items: center;
3229
+ font-size: 10px;
3230
+ color: #7a5c3d;
3231
+ margin-bottom: 3px;
3232
+ gap: 14px;
3233
+ font-family: 'Georgia', serif;
3234
+ font-style: italic;
3235
+ }
3236
+
3237
+ .parchment-seal {
3238
+ font-weight: 700;
3239
+ color: #9c6e3d;
3240
+ font-style: normal;
3241
+ }
3242
+
3243
+ .parchment-card-body {
3244
+ font-family: 'Georgia', serif;
3245
+ font-size: 13px;
3246
+ color: #2a190b;
3247
+ line-height: 1.4;
3248
+ }
3249
+
3250
+ .radiola-parchment-input-form {
3251
+ padding: 8px 18px 12px 18px;
3252
+ display: flex;
3253
+ gap: 8px;
3254
+ background: #f7eed8;
3255
+ border-top: 1px solid #decfaa;
3256
+ }
3257
+
3258
+ .radiola-parchment-input {
3259
+ flex: 1;
3260
+ height: 34px;
3261
+ padding: 0 12px;
3262
+ font-family: 'Georgia', serif;
3263
+ font-size: 13px;
3264
+ color: #2a190b;
3265
+ background: #fffdf8;
3266
+ border: 1.5px solid #c9b48c;
3267
+ border-radius: 4px;
3268
+ outline: none;
3269
+ }
3270
+
3271
+ .radiola-parchment-send-btn {
3272
+ height: 34px;
3273
+ padding: 0 16px;
3274
+ background: linear-gradient(180deg, #d8ad62 0%, #b8860b 100%);
3275
+ border: 1.5px solid #785303;
3276
+ border-radius: 4px;
3277
+ font-family: 'Georgia', serif;
3278
+ font-weight: 700;
3279
+ font-size: 11px;
3280
+ color: #fffdf5;
3281
+ text-shadow: 0 1px 2px rgba(0,0,0,0.5);
3282
+ cursor: pointer;
3283
+ transition: transform 0.08s;
3284
+ }
3285
+
3286
+ .radiola-vernier-clickspot {
3287
+ position: absolute;
3288
+ border-radius: 50%;
3289
+ cursor: pointer;
3290
+ }
3291
+
3292
+ .radiola-vernier-clickspot.upper {
3293
+ left: 1055px;
3294
+ top: 235px;
3295
+ width: 115px;
3296
+ height: 115px;
3297
+ }
3298
+
3299
+ .radiola-vernier-clickspot.lower {
3300
+ left: 1055px;
3301
+ top: 445px;
3302
+ width: 115px;
3303
+ height: 115px;
3304
+ }
3305
+
3306
+ .radiola-tube-chamber-glow {
3307
+ position: absolute;
3308
+ left: 1195px;
3309
+ top: 235px;
3310
+ width: 92px;
3311
+ height: 350px;
3312
+ pointer-events: none;
3313
+ }
3314
+
3315
+ .tube-filament {
3316
+ position: absolute;
3317
+ left: 50%;
3318
+ transform: translateX(-50%);
3319
+ width: 26px;
3320
+ height: 26px;
3321
+ border-radius: 50%;
3322
+ background: radial-gradient(circle, rgba(251, 191, 36, 0.7) 0%, rgba(245, 158, 11, 0) 70%);
3323
+ box-shadow: 0 0 18px #f59e0b;
3324
+ animation: filamentPulse 3s infinite alternate ease-in-out;
3325
+ }
3326
+
3327
+ .tube-filament.tube-top {
3328
+ top: 70px;
3329
+ }
3330
+
3331
+ .tube-filament.tube-bottom {
3332
+ top: 230px;
3333
+ animation-delay: 1.5s;
3334
+ }
3335
+
3336
+ @keyframes filamentPulse {
3337
+ 0% { opacity: 0.6; transform: translateX(-50%) scale(0.9); }
3338
+ 100% { opacity: 0.95; transform: translateX(-50%) scale(1.15); }
3339
+ }
3340
+
3341
+ /* ============================================================================
3342
+ TRUE WINAMP PHOTOREALISTIC HARDWARE ENGINE: SOVIET MILITARY R-250 «КИТ»
3343
+ ============================================================================ */
3344
+ .military-stage {
3345
+ min-height: 100vh;
3346
+ background: radial-gradient(circle at 50% 30%, #252e26 0%, #111712 100%);
3347
+ display: flex;
3348
+ align-items: center;
3349
+ justify-content: center;
3350
+ padding: 24px;
3351
+ box-sizing: border-box;
3352
+ }
3353
+
3354
+ .military-window-box {
3355
+ width: 1100px;
3356
+ background: #1c241e;
3357
+ border-radius: 12px;
3358
+ box-shadow: 0 30px 70px rgba(0,0,0,0.7), 0 6px 20px rgba(0,0,0,0.5);
3359
+ overflow: hidden;
3360
+ display: flex;
3361
+ flex-direction: column;
3362
+ user-select: none;
3363
+ border: 1.5px solid #364539;
3364
+ }
3365
+
3366
+ .military-window-titlebar {
3367
+ height: 34px;
3368
+ background: linear-gradient(180deg, #2d382f 0%, #1c241e 100%);
3369
+ border-bottom: 1px solid #131a14;
3370
+ display: flex;
3371
+ align-items: center;
3372
+ justify-content: space-between;
3373
+ padding: 0 14px;
3374
+ font-family: 'Fira Code', monospace;
3375
+ font-size: 11px;
3376
+ }
3377
+
3378
+ .military-hardware-canvas {
3379
+ width: 1100px;
3380
+ height: 614px;
3381
+ position: relative;
3382
+ overflow: hidden;
3383
+ background: #000;
3384
+ }
3385
+
3386
+ .military-stage-inner {
3387
+ width: 1376px;
3388
+ height: 768px;
3389
+ transform: scale(0.8);
3390
+ transform-origin: top left;
3391
+ position: absolute;
3392
+ left: 0;
3393
+ top: 0;
3394
+ }
3395
+
3396
+ .military-chassis-bitmap {
3397
+ position: absolute;
3398
+ left: 0;
3399
+ top: 0;
3400
+ width: 1376px;
3401
+ height: 768px;
3402
+ object-fit: cover;
3403
+ }
3404
+
3405
+ .military-optical-dial-hotspot {
3406
+ position: absolute;
3407
+ left: 596px;
3408
+ top: 82px;
3409
+ width: 152px;
3410
+ height: 152px;
3411
+ border-radius: 50%;
3412
+ background: radial-gradient(circle, #0e1c12 0%, #061109 85%, #020804 100%);
3413
+ cursor: pointer;
3414
+ display: flex;
3415
+ flex-direction: column;
3416
+ align-items: center;
3417
+ justify-content: center;
3418
+ pointer-events: auto;
3419
+ box-shadow: inset 0 0 16px rgba(0,0,0,0.9);
3420
+ border: 1px solid #1e3a24;
3421
+ }
3422
+
3423
+ .optical-dial-freq {
3424
+ font-family: 'Fira Code', monospace;
3425
+ font-size: 24px;
3426
+ font-weight: 900;
3427
+ color: #fef08a;
3428
+ text-shadow: 0 0 12px #fde047, 0 0 4px #eab308;
3429
+ margin-top: -2px;
3430
+ }
3431
+
3432
+ .optical-dial-unit {
3433
+ font-family: 'Fira Code', monospace;
3434
+ font-size: 10px;
3435
+ font-weight: 700;
3436
+ color: #ca8a04;
3437
+ letter-spacing: 1.5px;
3438
+ }
3439
+
3440
+ .military-meter-needle {
3441
+ position: absolute;
3442
+ width: 2px;
3443
+ height: 75px;
3444
+ background: #dc2626;
3445
+ transform-origin: bottom center;
3446
+ transition: transform 0.25s ease-out;
3447
+ box-shadow: 0 0 3px rgba(0,0,0,0.6);
3448
+ pointer-events: none;
3449
+ }
3450
+
3451
+ .military-meter-needle.voltage-meter {
3452
+ left: 950px;
3453
+ top: 118px;
3454
+ }
3455
+
3456
+ .military-meter-needle.signal-meter {
3457
+ left: 1180px;
3458
+ top: 118px;
3459
+ }
3460
+
3461
+ .military-operators-overlay {
3462
+ position: absolute;
3463
+ left: 88px;
3464
+ top: 395px;
3465
+ width: 258px;
3466
+ display: flex;
3467
+ flex-direction: column;
3468
+ gap: 24px;
3469
+ }
3470
+
3471
+ .military-op-card {
3472
+ height: 66px;
3473
+ display: flex;
3474
+ align-items: center;
3475
+ justify-content: space-between;
3476
+ padding: 0 12px;
3477
+ background: linear-gradient(180deg, #d3dad0 0%, #b4bdb0 50%, #9aa396 100%);
3478
+ border: 1.5px solid #475446;
3479
+ border-radius: 4px;
3480
+ box-shadow: 0 2px 6px rgba(0,0,0,0.45);
3481
+ cursor: pointer;
3482
+ transition: all 0.12s;
3483
+ }
3484
+
3485
+ .military-op-card:hover {
3486
+ background: linear-gradient(180deg, #e0e6dd 0%, #c4ccc0 50%, #abb5a7 100%);
3487
+ }
3488
+
3489
+ .military-op-card.active {
3490
+ background: linear-gradient(180deg, #b8c4b4 0%, #9ba797 50%, #7e8b7a 100%);
3491
+ border-color: #22c55e;
3492
+ box-shadow: 0 0 12px rgba(34, 197, 94, 0.5), inset 0 2px 4px rgba(0,0,0,0.3);
3493
+ }
3494
+
3495
+ .op-card-info {
3496
+ display: flex;
3497
+ flex-direction: column;
3498
+ }
3499
+
3500
+ .op-callsign {
3501
+ font-family: 'Fira Code', monospace;
3502
+ font-weight: 800;
3503
+ font-size: 15px;
3504
+ color: #141f16;
3505
+ }
3506
+
3507
+ .op-subtext {
3508
+ font-family: 'Fira Code', monospace;
3509
+ font-size: 10px;
3510
+ color: #3b4d3f;
3511
+ margin-top: 2px;
3512
+ }
3513
+
3514
+ .op-card-status {
3515
+ display: flex;
3516
+ flex-direction: column;
3517
+ align-items: center;
3518
+ gap: 4px;
3519
+ }
3520
+
3521
+ .op-lamp {
3522
+ width: 10px;
3523
+ height: 10px;
3524
+ border-radius: 50%;
3525
+ background: #6b7280;
3526
+ }
3527
+
3528
+ .op-lamp.on-air {
3529
+ background: #ef4444;
3530
+ box-shadow: 0 0 10px #ef4444;
3531
+ }
3532
+
3533
+ .op-lamp.standby {
3534
+ background: #10b981;
3535
+ box-shadow: 0 0 8px #10b981;
3536
+ }
3537
+
3538
+ .op-lamp-label {
3539
+ font-size: 8px;
3540
+ font-weight: 700;
3541
+ font-family: monospace;
3542
+ color: #1c261e;
3543
+ }
3544
+
3545
+ .military-crt-box {
3546
+ position: absolute;
3547
+ left: 380px;
3548
+ top: 268px;
3549
+ width: 630px;
3550
+ height: 424px;
3551
+ background: #07150c;
3552
+ border-radius: 6px;
3553
+ box-shadow: inset 0 0 30px rgba(0,0,0,0.9);
3554
+ display: flex;
3555
+ flex-direction: column;
3556
+ overflow: hidden;
3557
+ border: 2px solid #193322;
3558
+ }
3559
+
3560
+ .military-crt-header {
3561
+ padding: 10px 18px 6px 18px;
3562
+ border-bottom: 1px solid #143d22;
3563
+ font-family: 'Fira Code', monospace;
3564
+ font-size: 11px;
3565
+ font-weight: 700;
3566
+ color: #34d399;
3567
+ display: flex;
3568
+ justify-content: space-between;
3569
+ }
3570
+
3571
+ .military-stamp {
3572
+ position: absolute;
3573
+ pointer-events: none;
3574
+ border: 2.5px solid #dc2626;
3575
+ color: #dc2626;
3576
+ font-family: 'Impact', 'Arial Black', sans-serif;
3577
+ font-size: 22px;
3578
+ letter-spacing: 2px;
3579
+ padding: 2px 10px;
3580
+ border-radius: 4px;
3581
+ opacity: 0.55;
3582
+ }
3583
+
3584
+ .stamp-secret {
3585
+ right: 28px;
3586
+ top: 70px;
3587
+ transform: rotate(-8deg);
3588
+ }
3589
+
3590
+ .stamp-encrypted {
3591
+ right: 48px;
3592
+ bottom: 80px;
3593
+ transform: rotate(6deg);
3594
+ }
3595
+
3596
+ .military-crt-scroller {
3597
+ flex: 1;
3598
+ overflow-y: auto;
3599
+ padding: 12px 18px;
3600
+ display: flex;
3601
+ flex-direction: column;
3602
+ gap: 8px;
3603
+ font-family: 'Fira Code', monospace;
3604
+ font-size: 12px;
3605
+ color: #a7f3d0;
3606
+ scrollbar-width: none;
3607
+ -ms-overflow-style: none;
3608
+ }
3609
+
3610
+ .military-crt-scroller::-webkit-scrollbar {
3611
+ display: none;
3612
+ }
3613
+
3614
+ .military-log-row {
3615
+ line-height: 1.45;
3616
+ word-break: break-word;
3617
+ }
3618
+
3619
+ .military-log-time {
3620
+ color: #059669;
3621
+ margin-right: 8px;
3622
+ }
3623
+
3624
+ .military-log-peer {
3625
+ font-weight: 700;
3626
+ color: #6ee7b7;
3627
+ margin-right: 8px;
3628
+ }
3629
+
3630
+ .military-log-body {
3631
+ color: #ecfdf5;
3632
+ }
3633
+
3634
+ .military-input-form {
3635
+ display: flex;
3636
+ align-items: center;
3637
+ padding: 8px 16px;
3638
+ background: #0c1f13;
3639
+ border-top: 1px solid #164e28;
3640
+ gap: 8px;
3641
+ }
3642
+
3643
+ .military-prompt {
3644
+ font-family: 'Fira Code', monospace;
3645
+ font-weight: 900;
3646
+ color: #34d399;
3647
+ font-size: 13px;
3648
+ }
3649
+
3650
+ .military-cmd-input {
3651
+ flex: 1;
3652
+ height: 30px;
3653
+ background: #041008;
3654
+ border: 1px solid #166534;
3655
+ border-radius: 3px;
3656
+ padding: 0 10px;
3657
+ font-family: 'Fira Code', monospace;
3658
+ font-size: 12px;
3659
+ color: #6ee7b7;
3660
+ outline: none;
3661
+ }
3662
+
3663
+ .military-tx-btn {
3664
+ height: 30px;
3665
+ padding: 0 14px;
3666
+ background: #166534;
3667
+ border: 1px solid #22c55e;
3668
+ border-radius: 3px;
3669
+ font-family: 'Fira Code', monospace;
3670
+ font-weight: 800;
3671
+ font-size: 11px;
3672
+ color: #ffffff;
3673
+ cursor: pointer;
3674
+ transition: background 0.1s;
3675
+ }
3676
+
3677
+ .military-nixie-bank {
3678
+ position: absolute;
3679
+ left: 1055px;
3680
+ top: 572px;
3681
+ width: 226px;
3682
+ height: 50px;
3683
+ display: flex;
3684
+ align-items: center;
3685
+ justify-content: center;
3686
+ gap: 7px;
3687
+ pointer-events: none;
3688
+ }
3689
+
3690
+ .military-nixie-digit {
3691
+ width: 28px;
3692
+ height: 44px;
3693
+ background: transparent;
3694
+ display: flex;
3695
+ align-items: center;
3696
+ justify-content: center;
3697
+ }
3698
+
3699
+ .nixie-glow-num {
3700
+ font-family: 'Fira Code', monospace;
3701
+ font-size: 26px;
3702
+ font-weight: 900;
3703
+ color: #ff9800;
3704
+ text-shadow: 0 0 16px #ff5722, 0 0 8px #ff9800, 0 0 3px #ffffff;
3705
+ }
3706
+
3707
+ .military-knob-spot {
3708
+ position: absolute;
3709
+ width: 56px;
3710
+ height: 56px;
3711
+ border-radius: 50%;
3712
+ cursor: pointer;
3713
+ }
3714
+
3715
+ .spot-gross {
3716
+ left: 1070px;
3717
+ top: 310px;
3718
+ }
3719
+
3720
+ .spot-fine {
3721
+ left: 1205px;
3722
+ top: 310px;
3723
+ }
3724
+
3725
+