cduss commited on
Commit
f15e207
·
1 Parent(s): fe64d92

some cleaning

Browse files
Files changed (2) hide show
  1. index.html +1 -453
  2. style.css +441 -18
index.html CHANGED
@@ -7,459 +7,7 @@
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
10
- <style>
11
- :root {
12
- --pollen-coral: #FF6B35;
13
- --pollen-coral-light: #FF8A5C;
14
- --pollen-coral-dark: #E55A2B;
15
- --pollen-dark: #1A1A2E;
16
- --pollen-darker: #0F0F1A;
17
- --pollen-card: #16213E;
18
- --pollen-card-light: #1E2A4A;
19
- --text-primary: #FFFFFF;
20
- --text-secondary: #A0AEC0;
21
- --text-muted: #718096;
22
- --success: #48BB78;
23
- --warning: #ECC94B;
24
- --danger: #F56565;
25
- }
26
-
27
- * { box-sizing: border-box; margin: 0; padding: 0; }
28
-
29
- body {
30
- font-family: 'Inter', system-ui, -apple-system, sans-serif;
31
- background: var(--pollen-darker);
32
- color: var(--text-primary);
33
- min-height: 100vh;
34
- min-height: 100dvh;
35
- overflow-x: hidden;
36
- }
37
-
38
- /* Header */
39
- .header {
40
- background: rgba(0,0,0,0.4);
41
- backdrop-filter: blur(10px);
42
- padding: 8px 16px;
43
- display: flex;
44
- align-items: center;
45
- justify-content: space-between;
46
- border-bottom: 1px solid rgba(255,107,53,0.2);
47
- }
48
-
49
- .logo {
50
- display: flex;
51
- align-items: center;
52
- gap: 10px;
53
- }
54
-
55
- .logo img {
56
- width: 32px;
57
- height: 32px;
58
- border-radius: 6px;
59
- }
60
-
61
- .logo-text {
62
- font-weight: 700;
63
- font-size: 1em;
64
- color: var(--pollen-coral);
65
- }
66
-
67
- .logo-text span {
68
- color: var(--text-secondary);
69
- font-weight: 400;
70
- font-size: 0.85em;
71
- }
72
-
73
- .user-section {
74
- display: flex;
75
- align-items: center;
76
- gap: 8px;
77
- }
78
-
79
- .user-badge {
80
- background: var(--pollen-card);
81
- padding: 4px 12px;
82
- border-radius: 16px;
83
- font-size: 0.8em;
84
- }
85
-
86
- .btn-logout {
87
- background: transparent;
88
- border: 1px solid var(--text-muted);
89
- color: var(--text-secondary);
90
- padding: 4px 12px;
91
- border-radius: 12px;
92
- cursor: pointer;
93
- font-size: 0.75em;
94
- }
95
-
96
- /* Main Layout - Single Column */
97
- .app-container {
98
- display: flex;
99
- flex-direction: column;
100
- padding: 8px;
101
- gap: 8px;
102
- max-width: 800px;
103
- margin: 0 auto;
104
- }
105
-
106
- /* Video Section */
107
- .video-container {
108
- position: relative;
109
- background: #000;
110
- border-radius: 12px;
111
- overflow: hidden;
112
- aspect-ratio: 16/9;
113
- width: 100%;
114
- }
115
-
116
- video {
117
- width: 100%;
118
- height: 100%;
119
- object-fit: cover;
120
- background: linear-gradient(135deg, #0a0a15 0%, #1a1a2e 100%);
121
- }
122
-
123
- .video-overlay-top {
124
- position: absolute;
125
- top: 0;
126
- left: 0;
127
- right: 0;
128
- padding: 12px;
129
- background: linear-gradient(to bottom, rgba(0,0,0,0.7) 0%, transparent 100%);
130
- display: flex;
131
- justify-content: space-between;
132
- align-items: flex-start;
133
- }
134
-
135
- .connection-badge {
136
- display: flex;
137
- align-items: center;
138
- gap: 6px;
139
- background: rgba(0,0,0,0.5);
140
- padding: 6px 12px;
141
- border-radius: 16px;
142
- font-size: 0.8em;
143
- }
144
-
145
- .status-indicator {
146
- width: 8px;
147
- height: 8px;
148
- border-radius: 50%;
149
- background: var(--danger);
150
- }
151
-
152
- .status-indicator.connected {
153
- background: var(--success);
154
- box-shadow: 0 0 8px var(--success);
155
- }
156
-
157
- .status-indicator.connecting {
158
- background: var(--warning);
159
- animation: blink 0.8s infinite;
160
- }
161
-
162
- @keyframes blink {
163
- 0%, 100% { opacity: 1; }
164
- 50% { opacity: 0.4; }
165
- }
166
-
167
- .robot-name {
168
- background: rgba(0,0,0,0.5);
169
- padding: 6px 12px;
170
- border-radius: 16px;
171
- font-size: 0.8em;
172
- font-weight: 500;
173
- }
174
-
175
- .video-overlay-bottom {
176
- position: absolute;
177
- bottom: 0;
178
- left: 0;
179
- right: 0;
180
- padding: 12px;
181
- background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, transparent 100%);
182
- }
183
-
184
- .video-controls {
185
- display: flex;
186
- justify-content: center;
187
- gap: 8px;
188
- flex-wrap: wrap;
189
- }
190
-
191
- .btn {
192
- padding: 8px 16px;
193
- border: none;
194
- border-radius: 8px;
195
- font-weight: 600;
196
- font-size: 0.85em;
197
- cursor: pointer;
198
- transition: all 0.2s;
199
- }
200
-
201
- .btn-primary {
202
- background: var(--pollen-coral);
203
- color: white;
204
- }
205
-
206
- .btn-secondary {
207
- background: rgba(255,255,255,0.15);
208
- color: white;
209
- }
210
-
211
- .btn-danger {
212
- background: var(--danger);
213
- color: white;
214
- }
215
-
216
- .btn:disabled {
217
- opacity: 0.4;
218
- cursor: not-allowed;
219
- }
220
-
221
- .btn-mute {
222
- background: rgba(255,255,255,0.15);
223
- color: white;
224
- display: flex;
225
- align-items: center;
226
- gap: 6px;
227
- }
228
-
229
- .btn-mute.muted {
230
- background: var(--danger);
231
- }
232
-
233
- .btn-mute svg {
234
- width: 16px;
235
- height: 16px;
236
- }
237
-
238
- /* Panels */
239
- .panel {
240
- background: var(--pollen-card);
241
- border-radius: 12px;
242
- overflow: hidden;
243
- }
244
-
245
- .panel-header {
246
- padding: 10px 14px;
247
- background: rgba(0,0,0,0.2);
248
- font-weight: 600;
249
- font-size: 0.85em;
250
- color: var(--pollen-coral);
251
- }
252
-
253
- .panel-content {
254
- padding: 12px;
255
- }
256
-
257
- /* Sliders */
258
- .slider-row {
259
- display: flex;
260
- gap: 12px;
261
- align-items: center;
262
- margin-bottom: 12px;
263
- }
264
-
265
- .slider-row:last-child {
266
- margin-bottom: 0;
267
- }
268
-
269
- .slider-label {
270
- font-size: 0.8em;
271
- color: var(--text-secondary);
272
- min-width: 80px;
273
- }
274
-
275
- .slider {
276
- flex: 1;
277
- height: 8px;
278
- -webkit-appearance: none;
279
- background: var(--pollen-darker);
280
- border-radius: 4px;
281
- }
282
-
283
- .slider::-webkit-slider-thumb {
284
- -webkit-appearance: none;
285
- width: 20px;
286
- height: 20px;
287
- background: var(--pollen-coral);
288
- border-radius: 50%;
289
- cursor: pointer;
290
- }
291
-
292
- .slider-value {
293
- font-family: monospace;
294
- font-size: 0.8em;
295
- color: var(--pollen-coral);
296
- min-width: 45px;
297
- text-align: right;
298
- }
299
-
300
- /* Sound */
301
- .sound-row {
302
- display: flex;
303
- gap: 8px;
304
- margin-bottom: 10px;
305
- }
306
-
307
- .sound-input {
308
- flex: 1;
309
- padding: 8px 10px;
310
- background: var(--pollen-darker);
311
- border: 1px solid var(--pollen-card-light);
312
- border-radius: 6px;
313
- color: var(--text-primary);
314
- font-size: 0.85em;
315
- }
316
-
317
- .sound-presets {
318
- display: flex;
319
- flex-wrap: wrap;
320
- gap: 6px;
321
- margin-bottom: 12px;
322
- }
323
-
324
- .preset-chip {
325
- padding: 4px 10px;
326
- background: var(--pollen-darker);
327
- border: 1px solid var(--pollen-card-light);
328
- border-radius: 12px;
329
- color: var(--text-secondary);
330
- font-size: 0.7em;
331
- cursor: pointer;
332
- }
333
-
334
- .preset-chip:hover {
335
- border-color: var(--pollen-coral);
336
- color: var(--pollen-coral);
337
- }
338
-
339
- /* Robot Selector */
340
- .robot-list {
341
- display: flex;
342
- flex-direction: column;
343
- gap: 8px;
344
- }
345
-
346
- .robot-card {
347
- padding: 10px 14px;
348
- background: var(--pollen-darker);
349
- border: 2px solid transparent;
350
- border-radius: 8px;
351
- cursor: pointer;
352
- }
353
-
354
- .robot-card:hover {
355
- background: var(--pollen-card-light);
356
- }
357
-
358
- .robot-card.selected {
359
- border-color: var(--pollen-coral);
360
- }
361
-
362
- .robot-card .name {
363
- font-weight: 600;
364
- font-size: 0.9em;
365
- }
366
-
367
- .robot-card .id {
368
- font-size: 0.75em;
369
- color: var(--text-muted);
370
- font-family: monospace;
371
- }
372
-
373
- /* Desktop Layout - Side by Side */
374
- @media (min-width: 900px) {
375
- .app-container {
376
- display: grid;
377
- grid-template-columns: 1fr 1fr;
378
- grid-template-rows: auto auto auto auto;
379
- max-width: 1200px;
380
- gap: 12px;
381
- }
382
-
383
- .video-container {
384
- grid-column: 1;
385
- grid-row: 1 / 3;
386
- }
387
-
388
- #robotSelector {
389
- grid-column: 1;
390
- grid-row: 3;
391
- }
392
-
393
- .panel:nth-of-type(1) { /* Head Control */
394
- grid-column: 2;
395
- grid-row: 1;
396
- }
397
-
398
- .panel:nth-of-type(2) { /* Antennas */
399
- grid-column: 2;
400
- grid-row: 2;
401
- }
402
-
403
- .panel:nth-of-type(3) { /* Sound */
404
- grid-column: 2;
405
- grid-row: 3;
406
- }
407
- }
408
-
409
- /* Login View */
410
- .login-view {
411
- min-height: 100vh;
412
- min-height: 100dvh;
413
- display: flex;
414
- align-items: center;
415
- justify-content: center;
416
- padding: 20px;
417
- }
418
-
419
- .login-card {
420
- background: var(--pollen-card);
421
- padding: 40px;
422
- border-radius: 16px;
423
- text-align: center;
424
- max-width: 380px;
425
- }
426
-
427
- .login-logo {
428
- width: 72px;
429
- height: 72px;
430
- margin-bottom: 20px;
431
- border-radius: 12px;
432
- }
433
-
434
- .login-card h2 {
435
- color: var(--pollen-coral);
436
- margin-bottom: 10px;
437
- font-size: 1.5em;
438
- }
439
-
440
- .login-card p {
441
- color: var(--text-secondary);
442
- margin-bottom: 24px;
443
- font-size: 0.9em;
444
- line-height: 1.5;
445
- }
446
-
447
- .btn-hf {
448
- background: #FFD21E;
449
- color: #000;
450
- border: none;
451
- padding: 12px 28px;
452
- border-radius: 8px;
453
- font-size: 0.95em;
454
- font-weight: 700;
455
- cursor: pointer;
456
- display: inline-flex;
457
- align-items: center;
458
- gap: 8px;
459
- }
460
-
461
- .hidden { display: none !important; }
462
- </style>
463
  </head>
464
  <body>
465
  <!-- Login View -->
 
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
10
+ <link rel="stylesheet" href="style.css">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  </head>
12
  <body>
13
  <!-- Login View -->
style.css CHANGED
@@ -1,28 +1,451 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --pollen-coral: #FF6B35;
3
+ --pollen-coral-light: #FF8A5C;
4
+ --pollen-coral-dark: #E55A2B;
5
+ --pollen-dark: #1A1A2E;
6
+ --pollen-darker: #0F0F1A;
7
+ --pollen-card: #16213E;
8
+ --pollen-card-light: #1E2A4A;
9
+ --text-primary: #FFFFFF;
10
+ --text-secondary: #A0AEC0;
11
+ --text-muted: #718096;
12
+ --success: #48BB78;
13
+ --warning: #ECC94B;
14
+ --danger: #F56565;
15
+ }
16
+
17
+ * { box-sizing: border-box; margin: 0; padding: 0; }
18
+
19
  body {
20
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
21
+ background: var(--pollen-darker);
22
+ color: var(--text-primary);
23
+ min-height: 100vh;
24
+ min-height: 100dvh;
25
+ overflow-x: hidden;
26
+ }
27
+
28
+ /* Header */
29
+ .header {
30
+ background: rgba(0,0,0,0.4);
31
+ backdrop-filter: blur(10px);
32
+ padding: 8px 16px;
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: space-between;
36
+ border-bottom: 1px solid rgba(255,107,53,0.2);
37
+ }
38
+
39
+ .logo {
40
+ display: flex;
41
+ align-items: center;
42
+ gap: 10px;
43
+ }
44
+
45
+ .logo img {
46
+ width: 32px;
47
+ height: 32px;
48
+ border-radius: 6px;
49
+ }
50
+
51
+ .logo-text {
52
+ font-weight: 700;
53
+ font-size: 1em;
54
+ color: var(--pollen-coral);
55
+ }
56
+
57
+ .logo-text span {
58
+ color: var(--text-secondary);
59
+ font-weight: 400;
60
+ font-size: 0.85em;
61
+ }
62
+
63
+ .user-section {
64
+ display: flex;
65
+ align-items: center;
66
+ gap: 8px;
67
+ }
68
+
69
+ .user-badge {
70
+ background: var(--pollen-card);
71
+ padding: 4px 12px;
72
+ border-radius: 16px;
73
+ font-size: 0.8em;
74
+ }
75
+
76
+ .btn-logout {
77
+ background: transparent;
78
+ border: 1px solid var(--text-muted);
79
+ color: var(--text-secondary);
80
+ padding: 4px 12px;
81
+ border-radius: 12px;
82
+ cursor: pointer;
83
+ font-size: 0.75em;
84
+ }
85
+
86
+ /* Main Layout - Single Column */
87
+ .app-container {
88
+ display: flex;
89
+ flex-direction: column;
90
+ padding: 8px;
91
+ gap: 8px;
92
+ max-width: 800px;
93
+ margin: 0 auto;
94
+ }
95
+
96
+ /* Video Section */
97
+ .video-container {
98
+ position: relative;
99
+ background: #000;
100
+ border-radius: 12px;
101
+ overflow: hidden;
102
+ aspect-ratio: 16/9;
103
+ width: 100%;
104
+ }
105
+
106
+ video {
107
+ width: 100%;
108
+ height: 100%;
109
+ object-fit: cover;
110
+ background: linear-gradient(135deg, #0a0a15 0%, #1a1a2e 100%);
111
+ }
112
+
113
+ .video-overlay-top {
114
+ position: absolute;
115
+ top: 0;
116
+ left: 0;
117
+ right: 0;
118
+ padding: 12px;
119
+ background: linear-gradient(to bottom, rgba(0,0,0,0.7) 0%, transparent 100%);
120
+ display: flex;
121
+ justify-content: space-between;
122
+ align-items: flex-start;
123
+ }
124
+
125
+ .connection-badge {
126
+ display: flex;
127
+ align-items: center;
128
+ gap: 6px;
129
+ background: rgba(0,0,0,0.5);
130
+ padding: 6px 12px;
131
+ border-radius: 16px;
132
+ font-size: 0.8em;
133
+ }
134
+
135
+ .status-indicator {
136
+ width: 8px;
137
+ height: 8px;
138
+ border-radius: 50%;
139
+ background: var(--danger);
140
+ }
141
+
142
+ .status-indicator.connected {
143
+ background: var(--success);
144
+ box-shadow: 0 0 8px var(--success);
145
+ }
146
+
147
+ .status-indicator.connecting {
148
+ background: var(--warning);
149
+ animation: blink 0.8s infinite;
150
+ }
151
+
152
+ @keyframes blink {
153
+ 0%, 100% { opacity: 1; }
154
+ 50% { opacity: 0.4; }
155
+ }
156
+
157
+ .robot-name {
158
+ background: rgba(0,0,0,0.5);
159
+ padding: 6px 12px;
160
+ border-radius: 16px;
161
+ font-size: 0.8em;
162
+ font-weight: 500;
163
+ }
164
+
165
+ .video-overlay-bottom {
166
+ position: absolute;
167
+ bottom: 0;
168
+ left: 0;
169
+ right: 0;
170
+ padding: 12px;
171
+ background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, transparent 100%);
172
+ }
173
+
174
+ .video-controls {
175
+ display: flex;
176
+ justify-content: center;
177
+ gap: 8px;
178
+ flex-wrap: wrap;
179
+ }
180
+
181
+ .btn {
182
+ padding: 8px 16px;
183
+ border: none;
184
+ border-radius: 8px;
185
+ font-weight: 600;
186
+ font-size: 0.85em;
187
+ cursor: pointer;
188
+ transition: all 0.2s;
189
+ }
190
+
191
+ .btn-primary {
192
+ background: var(--pollen-coral);
193
+ color: white;
194
+ }
195
+
196
+ .btn-secondary {
197
+ background: rgba(255,255,255,0.15);
198
+ color: white;
199
  }
200
 
201
+ .btn-danger {
202
+ background: var(--danger);
203
+ color: white;
204
  }
205
 
206
+ .btn:disabled {
207
+ opacity: 0.4;
208
+ cursor: not-allowed;
 
 
209
  }
210
 
211
+ .btn-mute {
212
+ background: rgba(255,255,255,0.15);
213
+ color: white;
214
+ display: flex;
215
+ align-items: center;
216
+ gap: 6px;
217
  }
218
 
219
+ .btn-mute.muted {
220
+ background: var(--danger);
221
  }
222
+
223
+ .btn-mute svg {
224
+ width: 16px;
225
+ height: 16px;
226
+ }
227
+
228
+ /* Panels */
229
+ .panel {
230
+ background: var(--pollen-card);
231
+ border-radius: 12px;
232
+ overflow: hidden;
233
+ }
234
+
235
+ .panel-header {
236
+ padding: 10px 14px;
237
+ background: rgba(0,0,0,0.2);
238
+ font-weight: 600;
239
+ font-size: 0.85em;
240
+ color: var(--pollen-coral);
241
+ }
242
+
243
+ .panel-content {
244
+ padding: 12px;
245
+ }
246
+
247
+ /* Sliders */
248
+ .slider-row {
249
+ display: flex;
250
+ gap: 12px;
251
+ align-items: center;
252
+ margin-bottom: 12px;
253
+ }
254
+
255
+ .slider-row:last-child {
256
+ margin-bottom: 0;
257
+ }
258
+
259
+ .slider-label {
260
+ font-size: 0.8em;
261
+ color: var(--text-secondary);
262
+ min-width: 80px;
263
+ }
264
+
265
+ .slider {
266
+ flex: 1;
267
+ height: 8px;
268
+ -webkit-appearance: none;
269
+ background: var(--pollen-darker);
270
+ border-radius: 4px;
271
+ }
272
+
273
+ .slider::-webkit-slider-thumb {
274
+ -webkit-appearance: none;
275
+ width: 20px;
276
+ height: 20px;
277
+ background: var(--pollen-coral);
278
+ border-radius: 50%;
279
+ cursor: pointer;
280
+ }
281
+
282
+ .slider-value {
283
+ font-family: monospace;
284
+ font-size: 0.8em;
285
+ color: var(--pollen-coral);
286
+ min-width: 45px;
287
+ text-align: right;
288
+ }
289
+
290
+ /* Sound */
291
+ .sound-row {
292
+ display: flex;
293
+ gap: 8px;
294
+ margin-bottom: 10px;
295
+ }
296
+
297
+ .sound-input {
298
+ flex: 1;
299
+ padding: 8px 10px;
300
+ background: var(--pollen-darker);
301
+ border: 1px solid var(--pollen-card-light);
302
+ border-radius: 6px;
303
+ color: var(--text-primary);
304
+ font-size: 0.85em;
305
+ }
306
+
307
+ .sound-presets {
308
+ display: flex;
309
+ flex-wrap: wrap;
310
+ gap: 6px;
311
+ margin-bottom: 12px;
312
+ }
313
+
314
+ .preset-chip {
315
+ padding: 4px 10px;
316
+ background: var(--pollen-darker);
317
+ border: 1px solid var(--pollen-card-light);
318
+ border-radius: 12px;
319
+ color: var(--text-secondary);
320
+ font-size: 0.7em;
321
+ cursor: pointer;
322
+ }
323
+
324
+ .preset-chip:hover {
325
+ border-color: var(--pollen-coral);
326
+ color: var(--pollen-coral);
327
+ }
328
+
329
+ /* Robot Selector */
330
+ .robot-list {
331
+ display: flex;
332
+ flex-direction: column;
333
+ gap: 8px;
334
+ }
335
+
336
+ .robot-card {
337
+ padding: 10px 14px;
338
+ background: var(--pollen-darker);
339
+ border: 2px solid transparent;
340
+ border-radius: 8px;
341
+ cursor: pointer;
342
+ }
343
+
344
+ .robot-card:hover {
345
+ background: var(--pollen-card-light);
346
+ }
347
+
348
+ .robot-card.selected {
349
+ border-color: var(--pollen-coral);
350
+ }
351
+
352
+ .robot-card .name {
353
+ font-weight: 600;
354
+ font-size: 0.9em;
355
+ }
356
+
357
+ .robot-card .id {
358
+ font-size: 0.75em;
359
+ color: var(--text-muted);
360
+ font-family: monospace;
361
+ }
362
+
363
+ /* Desktop Layout - Side by Side */
364
+ @media (min-width: 900px) {
365
+ .app-container {
366
+ display: grid;
367
+ grid-template-columns: 1fr 1fr;
368
+ grid-template-rows: auto auto auto auto;
369
+ max-width: 1200px;
370
+ gap: 12px;
371
+ }
372
+
373
+ .video-container {
374
+ grid-column: 1;
375
+ grid-row: 1 / 3;
376
+ }
377
+
378
+ #robotSelector {
379
+ grid-column: 1;
380
+ grid-row: 3;
381
+ }
382
+
383
+ .panel:nth-of-type(1) { /* Head Control */
384
+ grid-column: 2;
385
+ grid-row: 1;
386
+ }
387
+
388
+ .panel:nth-of-type(2) { /* Antennas */
389
+ grid-column: 2;
390
+ grid-row: 2;
391
+ }
392
+
393
+ .panel:nth-of-type(3) { /* Sound */
394
+ grid-column: 2;
395
+ grid-row: 3;
396
+ }
397
+ }
398
+
399
+ /* Login View */
400
+ .login-view {
401
+ min-height: 100vh;
402
+ min-height: 100dvh;
403
+ display: flex;
404
+ align-items: center;
405
+ justify-content: center;
406
+ padding: 20px;
407
+ }
408
+
409
+ .login-card {
410
+ background: var(--pollen-card);
411
+ padding: 40px;
412
+ border-radius: 16px;
413
+ text-align: center;
414
+ max-width: 380px;
415
+ }
416
+
417
+ .login-logo {
418
+ width: 72px;
419
+ height: 72px;
420
+ margin-bottom: 20px;
421
+ border-radius: 12px;
422
+ }
423
+
424
+ .login-card h2 {
425
+ color: var(--pollen-coral);
426
+ margin-bottom: 10px;
427
+ font-size: 1.5em;
428
+ }
429
+
430
+ .login-card p {
431
+ color: var(--text-secondary);
432
+ margin-bottom: 24px;
433
+ font-size: 0.9em;
434
+ line-height: 1.5;
435
+ }
436
+
437
+ .btn-hf {
438
+ background: #FFD21E;
439
+ color: #000;
440
+ border: none;
441
+ padding: 12px 28px;
442
+ border-radius: 8px;
443
+ font-size: 0.95em;
444
+ font-weight: 700;
445
+ cursor: pointer;
446
+ display: inline-flex;
447
+ align-items: center;
448
+ gap: 8px;
449
+ }
450
+
451
+ .hidden { display: none !important; }