shell-mirror 1.5.110 → 1.5.112

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.
@@ -1,4 +1,21 @@
1
- /* Shell Mirror Dashboard Styles */
1
+ /* Shell Mirror Dashboard - Dark Theme (Kraken Pro Style) */
2
+
3
+ :root {
4
+ --bg-primary: #0a0b0d;
5
+ --bg-secondary: #141519;
6
+ --bg-tertiary: #1a1b20;
7
+ --bg-hover: #22232a;
8
+ --text-primary: #ffffff;
9
+ --text-secondary: #8a8f98;
10
+ --text-muted: #5a5f6a;
11
+ --accent: #5d5fef;
12
+ --accent-hover: #4a4cd6;
13
+ --success: #00c853;
14
+ --warning: #ff9800;
15
+ --danger: #ef4444;
16
+ --border: #2a2b30;
17
+ --border-light: #3a3b40;
18
+ }
2
19
 
3
20
  * {
4
21
  margin: 0;
@@ -6,93 +23,67 @@
6
23
  box-sizing: border-box;
7
24
  }
8
25
 
26
+ html {
27
+ background: #0a0b0d;
28
+ }
29
+
9
30
  body {
10
31
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
11
- line-height: 1.6;
12
- color: #333;
13
- background: #f5f7fa;
32
+ line-height: 1.5;
33
+ color: var(--text-primary);
34
+ background: var(--bg-primary) !important;
14
35
  min-height: 100vh;
15
36
  }
16
37
 
17
- /* Header */
38
+ /* Header - Minimal */
18
39
  .dashboard-header {
19
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
20
- color: white;
21
- padding: 20px 0;
22
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
40
+ background: var(--bg-secondary);
41
+ border-bottom: 1px solid var(--border);
42
+ padding: 12px 0;
23
43
  }
24
44
 
25
45
  .header-content {
26
- max-width: 1200px;
46
+ max-width: 800px;
27
47
  margin: 0 auto;
28
- padding: 0 20px;
48
+ padding: 0 16px;
29
49
  display: flex;
30
50
  justify-content: space-between;
31
51
  align-items: center;
32
52
  }
33
53
 
34
54
  .logo h1 {
35
- font-size: 1.8rem;
36
- font-weight: 700;
37
- margin-bottom: 2px;
55
+ font-size: 1.2rem;
56
+ font-weight: 600;
57
+ color: var(--text-primary);
38
58
  }
39
59
 
40
60
  .logo .subtitle {
41
- font-size: 0.9rem;
42
- opacity: 0.8;
61
+ display: none;
43
62
  }
44
63
 
45
64
  .header-right {
46
- display: flex;
47
- align-items: center;
48
- gap: 20px;
49
- }
50
-
51
- .user-section {
52
- display: flex;
53
- align-items: center;
54
- gap: 15px;
55
- }
56
-
57
- .dashboard-controls {
58
65
  display: flex;
59
66
  align-items: center;
60
67
  gap: 12px;
61
- padding: 8px 16px;
62
- background: rgba(255, 255, 255, 0.15);
63
- border-radius: 8px;
64
- backdrop-filter: blur(10px);
65
68
  }
66
69
 
67
- .help-button {
68
- background: rgba(255, 255, 255, 0.2);
69
- border: 1px solid rgba(255, 255, 255, 0.3);
70
- border-radius: 8px;
71
- color: white;
72
- padding: 8px 16px;
73
- cursor: pointer;
74
- transition: all 0.2s ease;
75
- font-size: 0.9rem;
76
- font-weight: 500;
70
+ .user-section {
77
71
  display: flex;
78
72
  align-items: center;
79
- gap: 6px;
80
- }
81
-
82
- .help-button:hover {
83
- background: rgba(255, 255, 255, 0.3);
84
- transform: translateY(-1px);
73
+ gap: 8px;
85
74
  }
86
75
 
76
+ /* User Dropdown */
87
77
  .user-info {
88
78
  display: flex;
89
79
  align-items: center;
90
- gap: 10px;
91
- position: relative;
80
+ gap: 8px;
92
81
  }
93
82
 
94
83
  .user-name {
84
+ font-size: 0.85rem;
95
85
  font-weight: 500;
86
+ color: var(--text-secondary);
96
87
  }
97
88
 
98
89
  .user-dropdown {
@@ -100,778 +91,378 @@ body {
100
91
  }
101
92
 
102
93
  .dropdown-btn {
103
- background: rgba(255, 255, 255, 0.2);
104
- border: 1px solid rgba(255, 255, 255, 0.3);
105
- border-radius: 8px;
106
- color: white;
107
- padding: 8px 12px;
94
+ background: var(--bg-tertiary);
95
+ border: 1px solid var(--border);
96
+ border-radius: 6px;
97
+ color: var(--text-secondary);
98
+ padding: 6px 10px;
108
99
  cursor: pointer;
109
- transition: all 0.2s ease;
100
+ transition: all 0.15s ease;
101
+ font-size: 0.85rem;
110
102
  }
111
103
 
112
104
  .dropdown-btn:hover {
113
- background: rgba(255, 255, 255, 0.3);
105
+ background: var(--bg-hover);
106
+ color: var(--text-primary);
114
107
  }
115
108
 
116
109
  .dropdown-content {
117
110
  display: none;
118
111
  position: absolute;
119
112
  right: 0;
120
- top: 100%;
121
- background: white;
122
- min-width: 150px;
123
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
113
+ top: calc(100% + 4px);
114
+ background: var(--bg-secondary);
115
+ border: 1px solid var(--border);
116
+ min-width: 140px;
124
117
  border-radius: 8px;
125
118
  overflow: hidden;
126
119
  z-index: 1000;
127
120
  }
128
121
 
129
122
  .dropdown-content a {
130
- color: #333;
131
- padding: 12px 16px;
123
+ color: var(--text-secondary);
124
+ padding: 10px 14px;
132
125
  text-decoration: none;
133
126
  display: block;
134
- transition: background 0.2s ease;
127
+ font-size: 0.85rem;
128
+ transition: all 0.15s ease;
135
129
  }
136
130
 
137
131
  .dropdown-content a:hover {
138
- background: #f8f9fa;
132
+ background: var(--bg-hover);
133
+ color: var(--text-primary);
139
134
  }
140
135
 
141
136
  .user-dropdown:hover .dropdown-content {
142
137
  display: block;
143
138
  }
144
139
 
145
- /* Dashboard Controls */
146
- .refresh-btn {
147
- background: rgba(255, 255, 255, 0.2);
148
- border: 1px solid rgba(255, 255, 255, 0.3);
149
- border-radius: 50%;
150
- color: white;
151
- width: 36px;
152
- height: 36px;
153
- cursor: pointer;
154
- transition: all 0.2s ease;
155
- display: flex;
156
- align-items: center;
157
- justify-content: center;
158
- font-size: 1rem;
159
- }
160
-
161
- .refresh-btn:hover:not(:disabled) {
162
- background: rgba(255, 255, 255, 0.3);
163
- transform: scale(1.05);
140
+ /* Hide unnecessary header elements */
141
+ .dashboard-controls,
142
+ .help-button,
143
+ .refresh-btn,
144
+ .cleanup-btn-inline,
145
+ .btn-text-action {
146
+ display: none !important;
164
147
  }
165
148
 
166
- .refresh-btn.loading {
167
- opacity: 0.7;
168
- cursor: not-allowed;
149
+ /* Main Content */
150
+ .dashboard-main {
151
+ max-width: 800px;
152
+ margin: 0 auto;
153
+ padding: 20px 16px;
169
154
  }
170
155
 
171
- .refresh-btn.loading .refresh-icon {
172
- animation: spin 1s linear infinite;
156
+ /* Hide Quick Actions completely */
157
+ .dashboard-grid {
158
+ display: block;
173
159
  }
174
160
 
175
- /* Inline Refresh Button */
176
- .refresh-btn-inline {
177
- background: #f8f9fa;
178
- border: 1px solid #e9ecef;
179
- border-radius: 50%;
180
- color: #666;
181
- width: 32px;
182
- height: 32px;
183
- cursor: pointer;
184
- transition: all 0.2s ease;
185
- display: flex;
186
- align-items: center;
187
- justify-content: center;
188
- font-size: 0.9rem;
161
+ /* Cards - Minimal */
162
+ .dashboard-card {
163
+ background: var(--bg-secondary);
164
+ border: 1px solid var(--border);
165
+ border-radius: 8px;
166
+ padding: 16px;
167
+ margin-bottom: 16px;
189
168
  }
190
169
 
191
- .refresh-btn-inline:hover:not(:disabled) {
192
- background: #e9ecef;
193
- color: #333;
194
- transform: scale(1.05);
170
+ .dashboard-card:hover {
171
+ box-shadow: none;
195
172
  }
196
173
 
197
- .refresh-btn-inline.loading {
198
- opacity: 0.7;
199
- cursor: not-allowed;
174
+ .dashboard-card.full-width {
175
+ display: block;
200
176
  }
201
177
 
202
- .refresh-btn-inline.loading .refresh-icon {
203
- animation: spin 1s linear infinite;
178
+ /* Card Header */
179
+ .card-header {
180
+ display: flex;
181
+ justify-content: space-between;
182
+ align-items: center;
183
+ margin-bottom: 12px;
204
184
  }
205
185
 
206
- /* Cleanup Button */
207
- .cleanup-btn-inline {
208
- background: #ffebee;
209
- border: 1px solid #f48fb1;
210
- border-radius: 50%;
211
- color: #d32f2f;
212
- width: 32px;
213
- height: 32px;
214
- cursor: pointer;
215
- transition: all 0.2s ease;
186
+ .card-title-section {
216
187
  display: flex;
217
188
  align-items: center;
218
- justify-content: center;
219
- font-size: 0.9rem;
189
+ gap: 8px;
220
190
  }
221
191
 
222
- .cleanup-btn-inline:hover:not(:disabled) {
223
- background: #f8bbd9;
224
- color: #b71c1c;
225
- transform: scale(1.05);
192
+ .card-header h2 {
193
+ font-size: 0.9rem;
194
+ font-weight: 600;
195
+ color: var(--text-secondary);
196
+ text-transform: uppercase;
197
+ letter-spacing: 0.5px;
226
198
  }
227
199
 
228
- /* Text Action Buttons (No Emoji) */
229
- .btn-text-action {
230
- background: #f8f9fa;
231
- border: 1px solid #dee2e6;
232
- border-radius: 6px;
233
- color: #495057;
234
- padding: 6px 12px;
235
- font-size: 0.8rem;
236
- font-weight: 500;
237
- cursor: pointer;
238
- transition: all 0.15s ease;
200
+ .agent-count {
201
+ display: none;
239
202
  }
240
203
 
241
- .btn-text-action:hover:not(:disabled) {
242
- background: #e9ecef;
243
- border-color: #ced4da;
244
- color: #212529;
204
+ .refresh-time {
205
+ font-size: 0.7rem;
206
+ color: var(--text-muted);
245
207
  }
246
208
 
247
- .btn-text-action.loading {
248
- opacity: 0.7;
249
- cursor: not-allowed;
209
+ /* Hide header action buttons */
210
+ .agent-actions-header {
211
+ display: none;
250
212
  }
251
213
 
252
- .btn-text-action.btn-cleanup {
253
- background: #fff5f5;
254
- border-color: #feb2b2;
255
- color: #c53030;
214
+ /* Agent Items */
215
+ .agent-item {
216
+ padding: 12px 0;
217
+ border-bottom: 1px solid var(--border);
256
218
  }
257
219
 
258
- .btn-text-action.btn-cleanup:hover:not(:disabled) {
259
- background: #fed7d7;
260
- border-color: #fc8181;
220
+ .agent-item:last-child {
221
+ border-bottom: none;
222
+ padding-bottom: 0;
261
223
  }
262
224
 
263
- /* Refresh Time in Card Header */
264
- .refresh-time {
265
- font-size: 0.75rem;
266
- color: #718096;
267
- font-weight: 400;
268
- margin-left: 8px;
225
+ .agent-item:first-child {
226
+ padding-top: 0;
269
227
  }
270
228
 
271
- /* Animated Loading Dots */
272
- .loading-dots {
273
- display: inline-flex;
274
- gap: 2px;
229
+ .agent-header {
230
+ display: flex;
231
+ justify-content: space-between;
232
+ align-items: center;
275
233
  }
276
234
 
277
- .loading-dots span {
278
- animation: loadingDot 1.4s infinite;
279
- opacity: 0.2;
235
+ .agent-info {
236
+ flex: 1;
280
237
  }
281
238
 
282
- .loading-dots span:nth-child(1) {
283
- animation-delay: 0s;
239
+ .agent-name-row {
240
+ display: flex;
241
+ align-items: center;
242
+ gap: 8px;
243
+ margin-bottom: 4px;
284
244
  }
285
245
 
286
- .loading-dots span:nth-child(2) {
287
- animation-delay: 0.2s;
246
+ .agent-name {
247
+ font-weight: 600;
248
+ font-size: 1rem;
249
+ color: var(--text-primary);
288
250
  }
289
251
 
290
- .loading-dots span:nth-child(3) {
291
- animation-delay: 0.4s;
252
+ .btn-delete-agent {
253
+ background: none;
254
+ border: none;
255
+ cursor: pointer;
256
+ font-size: 0.8rem;
257
+ opacity: 0.3;
258
+ transition: opacity 0.15s ease;
259
+ padding: 4px;
260
+ color: var(--text-secondary);
292
261
  }
293
262
 
294
- @keyframes loadingDot {
295
- 0%, 80%, 100% {
296
- opacity: 0.2;
297
- }
298
- 40% {
299
- opacity: 1;
300
- }
263
+ .btn-delete-agent:hover {
264
+ opacity: 1;
265
+ color: var(--danger);
301
266
  }
302
267
 
303
- .connection-status {
268
+ .agent-status {
269
+ display: inline-flex;
270
+ align-items: center;
271
+ gap: 6px;
304
272
  font-size: 0.8rem;
305
273
  font-weight: 500;
306
- white-space: nowrap;
307
- padding: 4px 8px;
308
- border-radius: 12px;
309
- background: rgba(255, 255, 255, 0.1);
310
- }
311
-
312
- .connection-status.connected {
313
- color: #4caf50;
314
- }
315
-
316
- .connection-status.disconnected {
317
- color: #ff9800;
274
+ color: var(--text-secondary);
318
275
  }
319
276
 
320
- .connection-status.error,
321
- .connection-status.failed {
322
- color: #f44336;
277
+ .agent-status.online {
278
+ color: var(--success);
279
+ background: none;
280
+ padding: 0;
323
281
  }
324
282
 
325
- .refresh-status {
326
- font-size: 0.75rem;
327
- opacity: 0.8;
328
- white-space: nowrap;
283
+ .agent-status.online::before {
284
+ content: '';
285
+ width: 8px;
286
+ height: 8px;
287
+ background: var(--success);
288
+ border-radius: 50%;
329
289
  }
330
290
 
331
- /* Buttons */
332
- .btn-primary {
333
- background: #4285F4;
334
- color: white;
335
- padding: 12px 24px;
336
- border: none;
337
- border-radius: 8px;
338
- font-weight: 600;
339
- cursor: pointer;
340
- transition: all 0.2s ease;
341
- display: inline-flex;
342
- align-items: center;
343
- text-decoration: none;
291
+ .agent-status.recent {
292
+ color: var(--warning);
293
+ background: none;
294
+ padding: 0;
344
295
  }
345
296
 
346
- .btn-primary:hover {
347
- background: #3367d6;
348
- transform: translateY(-1px);
297
+ .agent-status.recent::before {
298
+ content: '';
299
+ width: 8px;
300
+ height: 8px;
301
+ background: var(--warning);
302
+ border-radius: 50%;
349
303
  }
350
304
 
351
- .btn-primary.small {
352
- padding: 8px 16px;
353
- font-size: 0.9rem;
305
+ .agent-status.offline {
306
+ color: var(--danger);
307
+ background: none;
308
+ padding: 0;
354
309
  }
355
310
 
356
- /* Main Dashboard */
357
- .dashboard-main {
358
- max-width: 1200px;
359
- margin: 0 auto;
360
- padding: 40px 20px;
311
+ .agent-status.offline::before {
312
+ content: '';
313
+ width: 8px;
314
+ height: 8px;
315
+ background: var(--danger);
316
+ border-radius: 50%;
361
317
  }
362
318
 
363
- .dashboard-grid {
364
- display: grid;
365
- grid-template-columns: 1fr 300px;
366
- gap: 30px;
367
- margin-bottom: 30px;
319
+ .agent-session-count {
320
+ color: var(--text-muted);
321
+ font-weight: 400;
322
+ font-size: 0.75rem;
368
323
  }
369
324
 
370
- .dashboard-card {
371
- background: white;
372
- border-radius: 12px;
373
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
374
- padding: 24px;
375
- transition: all 0.2s ease;
325
+ .agent-last-seen {
326
+ display: none;
376
327
  }
377
328
 
378
- .dashboard-card:hover {
379
- box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
329
+ /* Inline Sessions */
330
+ .agent-sessions-inline {
331
+ margin-top: 12px;
332
+ padding-top: 0;
333
+ border-top: none;
380
334
  }
381
335
 
382
- .dashboard-card.full-width {
383
- grid-column: 1 / -1;
336
+ .sessions-label {
337
+ display: none;
384
338
  }
385
339
 
386
- .card-header {
340
+ .sessions-list {
387
341
  display: flex;
388
- justify-content: space-between;
389
- align-items: center;
390
- margin-bottom: 20px;
342
+ flex-direction: column;
343
+ gap: 6px;
344
+ margin-bottom: 8px;
391
345
  }
392
346
 
393
- .card-title-section {
347
+ .inline-session-item {
394
348
  display: flex;
395
349
  align-items: center;
396
- gap: 12px;
350
+ gap: 10px;
351
+ padding: 10px 12px;
352
+ background: var(--bg-tertiary);
353
+ border-radius: 6px;
354
+ border: 1px solid var(--border);
355
+ transition: all 0.15s ease;
397
356
  }
398
357
 
399
- .agent-actions-header {
400
- display: flex;
401
- align-items: center;
402
- gap: 8px;
358
+ .inline-session-item:hover {
359
+ background: var(--bg-hover);
360
+ border-color: var(--border-light);
403
361
  }
404
362
 
405
- .card-header h2 {
406
- font-size: 1.3rem;
407
- font-weight: 600;
408
- color: #333;
363
+ .session-status-dot {
364
+ width: 8px;
365
+ height: 8px;
366
+ border-radius: 50%;
367
+ flex-shrink: 0;
409
368
  }
410
369
 
411
- .agent-count {
412
- background: #e3f2fd;
413
- color: #1976d2;
414
- padding: 4px 8px;
415
- border-radius: 12px;
416
- font-size: 0.8rem;
370
+ .session-name {
417
371
  font-weight: 500;
372
+ font-size: 0.9rem;
373
+ flex: 1;
418
374
  }
419
375
 
420
- .card-content {
421
- color: #666;
376
+ .session-activity {
377
+ display: none;
422
378
  }
423
379
 
424
- /* Agent Items */
425
- .agent-item {
426
- display: flex;
427
- flex-direction: column;
428
- padding: 16px 0;
429
- border-bottom: 1px solid #f0f0f0;
380
+ .btn-session-connect {
381
+ padding: 6px 14px;
382
+ font-size: 0.8rem;
383
+ font-weight: 500;
384
+ border: none;
385
+ border-radius: 4px;
386
+ cursor: pointer;
387
+ transition: all 0.15s ease;
388
+ color: white;
430
389
  }
431
390
 
432
- .agent-header {
433
- display: flex;
434
- justify-content: space-between;
435
- align-items: center;
391
+ .btn-session-connect:hover {
392
+ transform: none;
393
+ filter: brightness(1.1);
394
+ }
395
+
396
+ /* New Session Button */
397
+ .btn-new-session {
398
+ background: transparent;
399
+ color: var(--accent);
400
+ border: 1px dashed var(--border-light);
401
+ border-radius: 6px;
402
+ padding: 10px 16px;
403
+ font-size: 0.85rem;
404
+ font-weight: 500;
405
+ cursor: pointer;
436
406
  width: 100%;
407
+ transition: all 0.15s ease;
437
408
  }
438
409
 
439
- .agent-item:last-child {
440
- border-bottom: none;
410
+ .btn-new-session:hover {
411
+ background: var(--bg-tertiary);
412
+ border-color: var(--accent);
413
+ border-style: solid;
441
414
  }
442
415
 
443
- .agent-info {
444
- flex: 1;
445
- }
446
-
447
- .agent-name {
448
- font-weight: 600;
449
- color: #333;
450
- margin-bottom: 4px;
451
- }
452
-
453
- .agent-status {
454
- display: inline-block;
455
- padding: 2px 8px;
456
- border-radius: 10px;
457
- font-size: 0.75rem;
458
- font-weight: 500;
459
- text-transform: uppercase;
460
- }
461
-
462
- .agent-status.online {
463
- background: #e8f5e8;
464
- color: #2e7d32;
465
- }
466
-
467
- .agent-status.recent {
468
- background: #fff3e0;
469
- color: #f57c00;
470
- }
471
-
472
- .agent-status.offline {
473
- background: #ffebee;
474
- color: #c62828;
475
- }
476
-
477
- .agent-last-seen {
478
- font-size: 0.8rem;
479
- color: #999;
480
- margin-top: 2px;
481
- }
482
-
483
- .agent-sessions {
484
- font-size: 0.8rem;
485
- color: #4285f4;
486
- margin-top: 2px;
487
- font-weight: 500;
488
- }
489
-
490
- /* Inline Session List Styles */
491
- .agent-sessions-inline {
492
- margin-top: 12px;
493
- padding-top: 12px;
494
- border-top: 1px solid #eee;
495
- width: 100%;
496
- }
497
-
498
- .sessions-label {
499
- font-size: 0.8rem;
500
- color: #666;
501
- font-weight: 500;
502
- margin-bottom: 8px;
503
- }
504
-
505
- .sessions-list {
506
- margin-bottom: 10px;
507
- }
508
-
509
- .inline-session-item {
510
- display: flex;
511
- align-items: center;
512
- gap: 10px;
513
- padding: 10px 12px;
514
- margin-bottom: 6px;
515
- background: #f8f9fa;
516
- border-radius: 8px;
517
- border: 1px solid #eee;
518
- transition: all 0.2s ease;
519
- }
520
-
521
- .inline-session-item:hover {
522
- background: #fff;
523
- border-color: #4285f4;
524
- }
525
-
526
- .session-status-dot {
527
- width: 8px;
528
- height: 8px;
529
- border-radius: 50%;
530
- flex-shrink: 0;
531
- }
532
-
533
- .session-status-dot.active {
534
- background: #34a853;
535
- }
536
-
537
- .session-status-dot.crashed {
538
- background: #ea4335;
539
- }
540
-
541
- .session-name {
542
- font-weight: 500;
543
- color: #333;
544
- flex: 1;
545
- font-size: 0.9rem;
546
- }
547
-
548
- .session-activity {
549
- font-size: 0.75rem;
550
- color: #888;
551
- margin-right: 8px;
552
- }
553
-
554
- .btn-session-connect {
555
- background: #4285f4;
556
- color: white;
557
- border: none;
558
- border-radius: 6px;
559
- padding: 6px 14px;
560
- font-size: 0.8rem;
561
- font-weight: 500;
562
- cursor: pointer;
563
- transition: all 0.2s ease;
564
- }
565
-
566
- .btn-session-connect:hover {
567
- background: #3367d6;
568
- transform: translateY(-1px);
569
- }
570
-
571
- .btn-new-session {
572
- background: #fff;
573
- color: #4285f4;
574
- border: 1px dashed #4285f4;
575
- border-radius: 8px;
576
- padding: 10px 16px;
577
- font-size: 0.85rem;
578
- font-weight: 500;
579
- cursor: pointer;
580
- width: 100%;
581
- transition: all 0.2s ease;
582
- }
583
-
584
- .btn-new-session:hover {
585
- background: #f0f7ff;
586
- border-style: solid;
416
+ /* Offline Agent */
417
+ .agent-item.agent-offline {
418
+ opacity: 0.5;
587
419
  }
588
420
 
589
421
  .agent-offline-message {
590
- margin-top: 12px;
591
- padding: 10px;
592
- background: #f5f5f5;
593
- border-radius: 6px;
594
- color: #999;
595
- font-size: 0.85rem;
422
+ margin-top: 8px;
423
+ padding: 8px;
424
+ background: var(--bg-tertiary);
425
+ border-radius: 4px;
426
+ color: var(--text-muted);
427
+ font-size: 0.8rem;
596
428
  text-align: center;
597
429
  }
598
430
 
599
- .agent-name-row {
600
- display: flex;
601
- align-items: center;
602
- gap: 8px;
603
- }
604
-
605
- .btn-delete-agent {
606
- background: none;
607
- border: none;
608
- cursor: pointer;
609
- font-size: 0.9rem;
610
- opacity: 0.4;
611
- transition: opacity 0.2s ease;
612
- padding: 2px 4px;
613
- }
614
-
615
- .btn-delete-agent:hover {
616
- opacity: 1;
617
- }
618
-
619
- .agent-session-count {
620
- font-weight: normal;
621
- font-size: 0.7rem;
622
- color: #666;
623
- margin-left: 6px;
624
- }
625
-
626
- .agent-actions {
627
- display: flex;
628
- gap: 8px;
629
- align-items: center;
630
- }
631
-
632
- .btn-connect {
633
- background: #4caf50;
634
- color: white;
635
- border: none;
636
- padding: 8px 16px;
637
- border-radius: 6px;
638
- font-weight: 500;
639
- cursor: pointer;
640
- transition: all 0.2s ease;
641
- font-size: 0.9rem;
642
- }
643
-
644
- .btn-connect:hover {
645
- background: #45a049;
646
- transform: translateY(-1px);
647
- }
648
-
649
- .btn-sessions {
650
- background: #4285f4;
431
+ /* Primary Button */
432
+ .btn-primary {
433
+ background: var(--accent);
651
434
  color: white;
435
+ padding: 10px 20px;
652
436
  border: none;
653
- padding: 8px 16px;
654
437
  border-radius: 6px;
655
438
  font-weight: 500;
656
439
  cursor: pointer;
657
- transition: all 0.2s ease;
658
- font-size: 0.9rem;
659
- }
660
-
661
- .btn-sessions:hover {
662
- background: #3367d6;
663
- transform: translateY(-1px);
664
- }
665
-
666
- /* Disabled/Offline Agent Styles */
667
- .agent-item.agent-offline {
668
- opacity: 0.7;
669
- }
670
-
671
- .btn-disabled {
672
- background: #f5f5f5 !important;
673
- color: #999 !important;
674
- cursor: not-allowed !important;
675
- border: 1px solid #e0e0e0 !important;
676
- }
677
-
678
- .btn-disabled:hover {
679
- background: #f5f5f5 !important;
680
- transform: none !important;
681
- color: #999 !important;
682
- }
683
-
684
- /* Quick Actions */
685
- .action-buttons {
686
- display: flex;
687
- flex-direction: column;
688
- gap: 12px;
689
- }
690
-
691
- .action-btn {
692
- display: flex;
693
- align-items: center;
694
- gap: 12px;
695
- padding: 16px;
696
- background: #f8f9fa;
697
- border: 1px solid #e9ecef;
698
- border-radius: 8px;
699
- cursor: pointer;
700
- transition: all 0.2s ease;
701
- text-align: left;
702
- }
703
-
704
- .action-btn:hover {
705
- background: #e9ecef;
706
- border-color: #dee2e6;
707
- }
708
-
709
- .action-icon {
710
- font-size: 1.2rem;
711
- }
712
-
713
- .action-text {
714
- font-weight: 500;
715
- color: #333;
716
- }
717
-
718
- /* Session Items */
719
- .session-item {
720
- display: flex;
721
- justify-content: space-between;
440
+ transition: all 0.15s ease;
441
+ display: inline-flex;
722
442
  align-items: center;
723
- padding: 16px 0;
724
- border-bottom: 1px solid #f0f0f0;
725
- }
726
-
727
- .session-item.compact {
728
- padding: 12px 0;
729
- }
730
-
731
- .session-item:last-child {
732
- border-bottom: none;
733
- }
734
-
735
- .session-info {
736
- flex: 1;
737
- }
738
-
739
- .session-agent {
740
- font-weight: 500;
741
- color: #333;
742
- font-family: monospace;
743
- font-size: 0.9rem;
744
- }
745
-
746
- .session-time {
747
- font-size: 0.8rem;
748
- color: #999;
749
- margin-top: 2px;
750
- }
751
-
752
- .session-details {
753
- display: flex;
754
- flex-direction: column;
755
- align-items: flex-end;
756
- gap: 4px;
757
- }
758
-
759
- .session-duration {
760
- font-size: 0.8rem;
761
- color: #666;
762
- }
763
-
764
- .session-status {
765
- padding: 2px 8px;
766
- border-radius: 10px;
767
- font-size: 0.7rem;
768
- font-weight: 500;
769
- text-transform: uppercase;
770
- }
771
-
772
- .session-status.completed {
773
- background: #e8f5e8;
774
- color: #2e7d32;
775
- }
776
-
777
- .session-status.active {
778
- background: #fff3e0;
779
- color: #f57c00;
780
- }
781
-
782
- .session-status.disconnected {
783
- background: #f5f5f5;
784
- color: #666;
785
- }
786
-
787
- /* Empty States */
788
- .no-data {
789
- text-align: center;
790
- color: #999;
791
- font-style: italic;
792
- }
793
-
794
- .no-data a {
795
- color: #4285F4;
796
443
  text-decoration: none;
444
+ font-size: 0.9rem;
797
445
  }
798
446
 
799
- .no-data a:hover {
800
- text-decoration: underline;
801
- }
802
-
803
- /* Centered Login Button Overlay */
804
- .login-button-overlay {
805
- position: fixed;
806
- top: 0;
807
- left: 0;
808
- width: 100%;
809
- height: 100%;
810
- background: rgba(0, 0, 0, 0.3);
811
- display: flex;
812
- align-items: center;
813
- justify-content: center;
814
- z-index: 1000;
815
- }
816
-
817
- .centered-login {
818
- text-align: center;
447
+ .btn-primary:hover {
448
+ background: var(--accent-hover);
449
+ transform: none;
819
450
  }
820
451
 
821
452
  .btn-primary.large {
822
- padding: 16px 32px;
823
- font-size: 1.1rem;
824
- border-radius: 12px;
825
- }
826
-
827
- /* Blurred Dashboard (for unauthenticated preview) */
828
- .dashboard-grid.blurred {
829
- filter: blur(3px);
830
- opacity: 0.7;
831
- pointer-events: none;
832
- }
833
-
834
- .skeleton-content {
835
- display: flex;
836
- flex-direction: column;
837
- gap: 12px;
838
- }
839
-
840
- .skeleton-agent,
841
- .skeleton-action,
842
- .skeleton-session {
843
- height: 60px;
844
- background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
845
- background-size: 200% 100%;
846
- animation: loading 1.5s infinite;
453
+ padding: 14px 28px;
454
+ font-size: 1rem;
847
455
  border-radius: 8px;
848
456
  }
849
457
 
850
- .skeleton-action {
851
- height: 50px;
852
- }
853
-
854
- .skeleton-session {
855
- height: 40px;
856
- }
857
-
858
- @keyframes loading {
859
- 0% {
860
- background-position: 200% 0;
861
- }
862
- 100% {
863
- background-position: -200% 0;
864
- }
865
- }
866
-
867
- /* Loading Overlay */
458
+ /* Loading */
868
459
  .loading-overlay {
869
460
  position: fixed;
870
461
  top: 0;
871
462
  left: 0;
872
463
  width: 100%;
873
464
  height: 100%;
874
- background: rgba(255, 255, 255, 0.9);
465
+ background: var(--bg-primary);
875
466
  display: flex;
876
467
  flex-direction: column;
877
468
  align-items: center;
@@ -880,520 +471,301 @@ body {
880
471
  }
881
472
 
882
473
  .loading-spinner {
883
- width: 40px;
884
- height: 40px;
885
- border: 4px solid #f3f3f3;
886
- border-top: 4px solid #4285F4;
474
+ width: 32px;
475
+ height: 32px;
476
+ border: 3px solid var(--border);
477
+ border-top: 3px solid var(--accent);
887
478
  border-radius: 50%;
888
- animation: spin 1s linear infinite;
889
- margin-bottom: 20px;
890
- }
891
-
892
- @keyframes spin {
893
- 0% { transform: rotate(0deg); }
894
- 100% { transform: rotate(360deg); }
895
- }
896
-
897
- /* Error State */
898
- .error-state {
899
- text-align: center;
900
- padding: 60px 20px;
901
- color: #666;
902
- }
903
-
904
- .error-state h2 {
479
+ animation: spin 0.8s linear infinite;
905
480
  margin-bottom: 16px;
906
- color: #333;
907
481
  }
908
482
 
909
- .error-state p {
910
- margin-bottom: 24px;
483
+ .loading-overlay p {
484
+ color: var(--text-secondary);
485
+ font-size: 0.9rem;
911
486
  }
912
487
 
913
- /* Responsive Design */
914
- @media (max-width: 768px) {
915
- .dashboard-grid {
916
- grid-template-columns: 1fr;
917
- gap: 20px;
918
- }
919
-
920
- .header-content {
921
- flex-direction: column;
922
- gap: 15px;
923
- text-align: center;
924
- }
925
-
926
- .header-right {
927
- flex-direction: column;
928
- gap: 10px;
929
- width: 100%;
930
- }
931
-
932
- .dashboard-controls {
933
- justify-content: center;
934
- flex-wrap: wrap;
935
- }
936
-
937
- .refresh-status,
938
- .connection-status {
939
- font-size: 0.7rem;
940
- }
941
-
942
- .agent-notification {
943
- right: 10px;
944
- left: 10px;
945
- text-align: center;
946
- }
947
-
948
- .dashboard-main {
949
- padding: 20px 15px;
950
- }
951
-
952
- .dashboard-card {
953
- padding: 20px;
954
- }
955
-
956
- .login-modal {
957
- padding: 30px 20px;
958
- }
959
-
960
- .dashboard-preview {
961
- grid-template-columns: 1fr;
962
- gap: 15px;
963
- }
964
-
965
- .agent-item,
966
- .session-item {
967
- flex-direction: column;
968
- align-items: flex-start;
969
- gap: 12px;
970
- }
971
-
972
- .session-details {
973
- align-items: flex-start;
974
- flex-direction: row;
975
- gap: 12px;
976
- }
977
-
978
- /* Mobile inline session styles */
979
- .inline-session-item {
980
- flex-wrap: wrap;
981
- gap: 8px;
982
- }
983
-
984
- .session-name {
985
- flex-basis: calc(100% - 30px);
986
- }
987
-
988
- .session-activity {
989
- order: 3;
990
- flex-basis: 50%;
991
- margin-right: 0;
992
- }
993
-
994
- .btn-session-connect {
995
- order: 4;
996
- padding: 8px 16px;
997
- }
488
+ @keyframes spin {
489
+ 0% { transform: rotate(0deg); }
490
+ 100% { transform: rotate(360deg); }
998
491
  }
999
492
 
1000
- /* Modal Styles */
1001
- .modal-overlay {
493
+ /* Login Overlay */
494
+ .login-button-overlay {
1002
495
  position: fixed;
1003
496
  top: 0;
1004
497
  left: 0;
1005
- right: 0;
1006
- bottom: 0;
1007
- background: rgba(0, 0, 0, 0.5);
498
+ width: 100%;
499
+ height: 100%;
500
+ background: rgba(0, 0, 0, 0.8);
1008
501
  display: flex;
1009
502
  align-items: center;
1010
503
  justify-content: center;
1011
- z-index: 2000;
1012
- }
1013
-
1014
- .modal {
1015
- background: white;
1016
- border-radius: 12px;
1017
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
1018
- max-width: 500px;
1019
- width: 90%;
1020
- max-height: 80vh;
1021
- overflow: hidden;
504
+ z-index: 1000;
1022
505
  }
1023
506
 
1024
- .modal-header {
1025
- padding: 20px 24px;
1026
- border-bottom: 1px solid #eee;
1027
- display: flex;
1028
- justify-content: space-between;
1029
- align-items: center;
507
+ .centered-login {
508
+ text-align: center;
1030
509
  }
1031
510
 
1032
- .modal-header h3 {
1033
- margin: 0;
1034
- font-size: 1.2rem;
1035
- font-weight: 600;
1036
- color: #333;
511
+ /* Empty State */
512
+ .no-data {
513
+ text-align: center;
514
+ color: var(--text-muted);
515
+ padding: 20px;
516
+ font-size: 0.9rem;
1037
517
  }
1038
518
 
1039
- .modal-close {
1040
- background: none;
1041
- border: none;
1042
- font-size: 1.5rem;
1043
- cursor: pointer;
1044
- padding: 0;
1045
- width: 30px;
1046
- height: 30px;
1047
- display: flex;
1048
- align-items: center;
1049
- justify-content: center;
1050
- border-radius: 50%;
1051
- color: #666;
519
+ .no-data a {
520
+ color: var(--accent);
521
+ text-decoration: none;
1052
522
  }
1053
523
 
1054
- .modal-close:hover {
1055
- background: #f5f5f5;
1056
- color: #333;
524
+ .no-data a:hover {
525
+ text-decoration: underline;
1057
526
  }
1058
527
 
1059
- .modal-body {
1060
- padding: 24px;
1061
- max-height: 60vh;
1062
- overflow-y: auto;
528
+ /* Empty Agent State - Minimal */
529
+ .empty-agent-state {
530
+ padding: 8px 0;
1063
531
  }
1064
532
 
1065
- /* Session List Styles */
1066
- .sessions-modal-content p {
1067
- margin-top: 0;
533
+ .empty-state-title {
534
+ color: var(--text-muted);
535
+ font-size: 0.9rem;
1068
536
  margin-bottom: 16px;
1069
- color: #666;
1070
- }
1071
-
1072
- .session-list {
1073
- margin-bottom: 20px;
1074
- }
1075
-
1076
- .session-list-item {
1077
- display: flex;
1078
- justify-content: space-between;
1079
- align-items: center;
1080
- padding: 12px;
1081
- border: 1px solid #eee;
1082
- border-radius: 8px;
1083
- margin-bottom: 8px;
1084
- cursor: pointer;
1085
- transition: all 0.2s ease;
1086
- }
1087
-
1088
- .session-list-item:hover {
1089
- background: #f8f9fa;
1090
- border-color: #4285f4;
1091
- }
1092
-
1093
- .session-list-info {
1094
- flex: 1;
1095
- }
1096
-
1097
- .session-list-name {
1098
- font-weight: 600;
1099
- color: #333;
1100
- margin-bottom: 4px;
537
+ text-align: center;
1101
538
  }
1102
539
 
1103
- .session-list-details {
540
+ .empty-state-steps {
1104
541
  display: flex;
542
+ flex-direction: column;
1105
543
  gap: 12px;
1106
- font-size: 0.8rem;
1107
- color: #666;
1108
- }
1109
-
1110
- .session-list-id {
1111
- font-family: monospace;
1112
- background: #f5f5f5;
1113
- padding: 2px 6px;
1114
- border-radius: 4px;
1115
- }
1116
-
1117
- .session-list-status {
1118
- padding: 4px 8px;
1119
- border-radius: 12px;
1120
- font-size: 0.75rem;
1121
- font-weight: 500;
1122
- text-transform: uppercase;
1123
- }
1124
-
1125
- .session-list-status.active {
1126
- background: #e8f5e8;
1127
- color: #2e7d32;
1128
- }
1129
-
1130
- .session-list-status.crashed {
1131
- background: #ffebee;
1132
- color: #c62828;
1133
- }
1134
-
1135
- .sessions-modal-actions {
1136
- border-top: 1px solid #eee;
1137
- padding-top: 16px;
1138
- text-align: center;
1139
- }
1140
-
1141
- /* Empty Agent State Styles */
1142
- .empty-agent-state {
1143
- padding: 20px;
1144
544
  }
1145
545
 
1146
- .empty-state-header {
1147
- text-align: center;
1148
- margin-bottom: 32px;
546
+ .command-step {
547
+ display: flex;
548
+ flex-direction: column;
549
+ gap: 6px;
1149
550
  }
1150
551
 
1151
- .empty-state-header h3 {
1152
- margin: 0 0 8px 0;
1153
- font-size: 1.4rem;
1154
- color: #333;
1155
- font-weight: 600;
552
+ .step-label {
553
+ font-size: 0.75rem;
554
+ font-weight: 500;
555
+ color: var(--text-muted);
556
+ text-transform: uppercase;
557
+ letter-spacing: 0.5px;
1156
558
  }
1157
559
 
1158
- .empty-state-header p {
1159
- margin: 0;
1160
- color: #666;
1161
- font-size: 1rem;
560
+ .command-box {
561
+ background: var(--bg-tertiary);
562
+ border: 1px solid var(--border);
563
+ border-radius: 6px;
564
+ padding: 10px 12px;
565
+ display: flex;
566
+ align-items: center;
567
+ justify-content: space-between;
568
+ gap: 10px;
1162
569
  }
1163
570
 
1164
- .empty-state-steps {
1165
- max-width: 600px;
1166
- margin: 0 auto;
571
+ .command-box code {
572
+ font-family: 'Monaco', 'Menlo', monospace;
573
+ font-size: 0.85rem;
574
+ color: var(--success);
575
+ flex: 1;
1167
576
  }
1168
577
 
1169
- .empty-state-step {
1170
- display: flex;
1171
- gap: 16px;
1172
- margin-bottom: 24px;
1173
- align-items: flex-start;
578
+ .copy-btn {
579
+ background: var(--bg-hover);
580
+ color: var(--text-secondary);
581
+ border: 1px solid var(--border);
582
+ border-radius: 4px;
583
+ padding: 4px 10px;
584
+ font-size: 0.75rem;
585
+ cursor: pointer;
586
+ transition: all 0.15s ease;
587
+ min-width: 50px;
588
+ text-align: center;
1174
589
  }
1175
590
 
1176
- .empty-step-number {
1177
- flex-shrink: 0;
1178
- width: 36px;
1179
- height: 36px;
1180
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
591
+ .copy-btn:hover {
592
+ background: var(--accent);
1181
593
  color: white;
1182
- border-radius: 50%;
594
+ border-color: var(--accent);
595
+ }
596
+
597
+ /* Modals */
598
+ .modal-overlay {
599
+ position: fixed;
600
+ top: 0;
601
+ left: 0;
602
+ right: 0;
603
+ bottom: 0;
604
+ background: rgba(0, 0, 0, 0.8);
1183
605
  display: flex;
1184
606
  align-items: center;
1185
607
  justify-content: center;
1186
- font-weight: 600;
1187
- font-size: 1.1rem;
1188
- }
1189
-
1190
- .empty-step-content {
1191
- flex: 1;
608
+ z-index: 2000;
1192
609
  }
1193
610
 
1194
- .empty-step-content h4 {
1195
- margin: 0 0 10px 0;
1196
- font-size: 1.05rem;
1197
- font-weight: 600;
1198
- color: #333;
611
+ .modal {
612
+ background: var(--bg-secondary);
613
+ border: 1px solid var(--border);
614
+ border-radius: 8px;
615
+ max-width: 400px;
616
+ width: 90%;
617
+ max-height: 80vh;
618
+ overflow: hidden;
1199
619
  }
1200
620
 
1201
- .inline-command-box {
1202
- background: #2d3748;
1203
- border-radius: 8px;
1204
- padding: 14px 16px;
621
+ .modal-header {
622
+ padding: 16px;
623
+ border-bottom: 1px solid var(--border);
1205
624
  display: flex;
1206
- align-items: center;
1207
625
  justify-content: space-between;
1208
- gap: 12px;
626
+ align-items: center;
1209
627
  }
1210
628
 
1211
- .inline-command-box code {
1212
- font-family: 'Monaco', 'Menlo', 'Courier New', monospace;
1213
- font-size: 0.95rem;
1214
- color: #48bb78;
1215
- flex: 1;
1216
- font-weight: 500;
629
+ .modal-header h3 {
630
+ font-size: 1rem;
631
+ font-weight: 600;
632
+ color: var(--text-primary);
1217
633
  }
1218
634
 
1219
- .inline-copy-btn {
1220
- background: #667eea;
1221
- color: white;
635
+ .modal-close {
636
+ background: none;
1222
637
  border: none;
1223
- border-radius: 6px;
1224
- padding: 7px 14px;
1225
- font-size: 0.85rem;
638
+ font-size: 1.2rem;
1226
639
  cursor: pointer;
1227
- transition: all 0.2s ease;
1228
- flex-shrink: 0;
1229
- font-weight: 500;
1230
- }
1231
-
1232
- .inline-copy-btn:hover {
1233
- background: #5568d3;
1234
- }
1235
-
1236
- .inline-copy-btn:active {
1237
- transform: scale(0.95);
640
+ color: var(--text-muted);
641
+ padding: 4px;
642
+ border-radius: 4px;
1238
643
  }
1239
644
 
1240
- .empty-state-footer {
1241
- text-align: center;
1242
- margin-top: 32px;
1243
- padding-top: 24px;
1244
- border-top: 1px solid #eee;
645
+ .modal-close:hover {
646
+ background: var(--bg-hover);
647
+ color: var(--text-primary);
1245
648
  }
1246
649
 
1247
- .empty-state-footer p {
1248
- margin: 0;
1249
- color: #666;
1250
- font-size: 0.95rem;
650
+ .modal-body {
651
+ padding: 16px;
1251
652
  }
1252
653
 
1253
- /* Help Modal Styles */
654
+ /* Help Modal Content */
1254
655
  .help-modal-content {
1255
- font-size: 0.95rem;
656
+ color: var(--text-secondary);
1256
657
  }
1257
658
 
1258
659
  .help-intro {
1259
- margin-top: 0;
1260
- margin-bottom: 24px;
1261
- color: #666;
1262
- font-size: 1rem;
660
+ margin-bottom: 16px;
661
+ font-size: 0.9rem;
1263
662
  }
1264
663
 
1265
664
  .help-step {
1266
665
  display: flex;
1267
- gap: 16px;
1268
- margin-bottom: 24px;
1269
- align-items: flex-start;
666
+ gap: 12px;
667
+ margin-bottom: 16px;
1270
668
  }
1271
669
 
1272
- .step-number {
1273
- flex-shrink: 0;
1274
- width: 32px;
1275
- height: 32px;
1276
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
670
+ .help-step .step-number {
671
+ width: 24px;
672
+ height: 24px;
673
+ background: var(--accent);
1277
674
  color: white;
1278
675
  border-radius: 50%;
1279
676
  display: flex;
1280
677
  align-items: center;
1281
678
  justify-content: center;
679
+ font-size: 0.8rem;
1282
680
  font-weight: 600;
1283
- font-size: 0.95rem;
681
+ flex-shrink: 0;
1284
682
  }
1285
683
 
1286
- .step-content {
684
+ .help-step .step-content {
1287
685
  flex: 1;
1288
686
  }
1289
687
 
1290
- .step-content h4 {
1291
- margin: 0 0 12px 0;
1292
- font-size: 1.05rem;
1293
- font-weight: 600;
1294
- color: #333;
688
+ .help-step .step-content h4 {
689
+ font-size: 0.9rem;
690
+ color: var(--text-primary);
691
+ margin-bottom: 8px;
1295
692
  }
1296
693
 
1297
- .command-box {
1298
- background: #f8f9fa;
1299
- border: 1px solid #e1e4e8;
1300
- border-radius: 8px;
1301
- padding: 12px 14px;
694
+ .help-step .command-box {
695
+ background: var(--bg-tertiary);
696
+ border: 1px solid var(--border);
697
+ border-radius: 6px;
698
+ padding: 10px 12px;
1302
699
  display: flex;
1303
700
  align-items: center;
1304
701
  justify-content: space-between;
1305
- gap: 12px;
1306
- margin-bottom: 8px;
1307
- }
1308
-
1309
- .command-box code {
1310
- font-family: 'Monaco', 'Menlo', 'Courier New', monospace;
1311
- font-size: 0.9rem;
1312
- color: #1a1a1a;
1313
- flex: 1;
702
+ gap: 10px;
1314
703
  }
1315
704
 
1316
- .copy-btn {
1317
- background: #667eea;
1318
- color: white;
1319
- border: none;
1320
- border-radius: 6px;
1321
- padding: 6px 12px;
705
+ .help-step .command-box code {
706
+ font-family: 'Monaco', 'Menlo', monospace;
1322
707
  font-size: 0.85rem;
1323
- cursor: pointer;
1324
- transition: all 0.2s ease;
1325
- flex-shrink: 0;
1326
- }
1327
-
1328
- .copy-btn:hover {
1329
- background: #5568d3;
1330
- }
1331
-
1332
- .copy-btn:active {
1333
- transform: scale(0.95);
708
+ color: var(--success);
1334
709
  }
1335
710
 
1336
711
  .help-note {
1337
- margin: 8px 0 0 0;
1338
- font-size: 0.85rem;
1339
- color: #666;
1340
- font-style: italic;
712
+ font-size: 0.8rem;
713
+ color: var(--text-muted);
714
+ margin-top: 6px;
1341
715
  }
1342
716
 
1343
717
  .help-troubleshooting {
1344
- margin-top: 32px;
1345
- padding: 16px;
1346
- background: #f8f9fa;
1347
- border-radius: 8px;
1348
- border-left: 4px solid #667eea;
718
+ margin-top: 20px;
719
+ padding-top: 16px;
720
+ border-top: 1px solid var(--border);
1349
721
  }
1350
722
 
1351
723
  .help-troubleshooting h4 {
1352
- margin: 0 0 12px 0;
1353
- font-size: 1rem;
1354
- font-weight: 600;
1355
- color: #333;
724
+ font-size: 0.85rem;
725
+ color: var(--text-primary);
726
+ margin-bottom: 10px;
1356
727
  }
1357
728
 
1358
729
  .help-troubleshooting ul {
1359
- margin: 0;
1360
- padding-left: 20px;
1361
- list-style-type: disc;
730
+ list-style: none;
731
+ font-size: 0.85rem;
1362
732
  }
1363
733
 
1364
734
  .help-troubleshooting li {
1365
- margin-bottom: 8px;
1366
- color: #555;
1367
- font-size: 0.9rem;
735
+ padding: 4px 0;
736
+ padding-left: 16px;
737
+ position: relative;
1368
738
  }
1369
739
 
1370
- .help-troubleshooting li:last-child {
1371
- margin-bottom: 0;
740
+ .help-troubleshooting li::before {
741
+ content: '•';
742
+ position: absolute;
743
+ left: 0;
744
+ color: var(--text-muted);
1372
745
  }
1373
746
 
1374
- /* Agent Notifications */
747
+ /* Notifications */
1375
748
  .agent-notification {
1376
749
  position: fixed;
1377
- top: 100px;
1378
- right: 20px;
1379
- background: white;
1380
- color: #333;
1381
- padding: 12px 20px;
1382
- border-radius: 8px;
1383
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1384
- font-size: 0.9rem;
1385
- font-weight: 500;
750
+ top: 60px;
751
+ right: 16px;
752
+ background: var(--bg-secondary);
753
+ border: 1px solid var(--border);
754
+ color: var(--text-primary);
755
+ padding: 10px 16px;
756
+ border-radius: 6px;
757
+ font-size: 0.85rem;
1386
758
  z-index: 3000;
1387
- animation: slideInRight 0.3s ease-out, fadeOut 0.3s ease-in 4.7s forwards;
1388
- border-left: 4px solid;
759
+ animation: slideInRight 0.2s ease-out;
760
+ border-left: 3px solid;
1389
761
  }
1390
762
 
1391
763
  .agent-notification.connected {
1392
- border-left-color: #4caf50;
764
+ border-left-color: var(--success);
1393
765
  }
1394
766
 
1395
767
  .agent-notification.disconnected {
1396
- border-left-color: #f44336;
768
+ border-left-color: var(--danger);
1397
769
  }
1398
770
 
1399
771
  @keyframes slideInRight {
@@ -1407,79 +779,205 @@ body {
1407
779
  }
1408
780
  }
1409
781
 
1410
- @keyframes fadeOut {
1411
- to {
1412
- opacity: 0;
1413
- transform: translateX(100%);
1414
- }
782
+ /* Animated Loading Dots */
783
+ .loading-dots {
784
+ display: inline-flex;
785
+ gap: 2px;
1415
786
  }
1416
787
 
1417
- /* API Error Display */
1418
- .api-error {
1419
- text-align: center;
1420
- padding: 20px;
1421
- background: #fff5f5;
1422
- border: 1px solid #fed7d7;
1423
- border-radius: 8px;
1424
- color: #c53030;
788
+ .loading-dots span {
789
+ animation: loadingDot 1.2s infinite;
790
+ opacity: 0.3;
1425
791
  }
1426
792
 
1427
- .api-error p {
1428
- margin-bottom: 15px;
1429
- font-weight: 500;
793
+ .loading-dots span:nth-child(2) { animation-delay: 0.15s; }
794
+ .loading-dots span:nth-child(3) { animation-delay: 0.3s; }
795
+
796
+ @keyframes loadingDot {
797
+ 0%, 80%, 100% { opacity: 0.3; }
798
+ 40% { opacity: 1; }
799
+ }
800
+
801
+ /* Mobile Responsive - Touch-friendly */
802
+ @media (max-width: 768px) {
803
+ .header-content {
804
+ padding: 0 12px;
805
+ }
806
+
807
+ .logo h1 {
808
+ font-size: 1.1rem;
809
+ }
810
+
811
+ .user-name {
812
+ display: none;
813
+ }
814
+
815
+ .dropdown-btn {
816
+ min-width: 44px;
817
+ min-height: 44px;
818
+ display: flex;
819
+ align-items: center;
820
+ justify-content: center;
821
+ }
822
+
823
+ .dashboard-main {
824
+ padding: 12px 8px;
825
+ padding-bottom: 60px; /* Space for footer */
826
+ }
827
+
828
+ .dashboard-card {
829
+ padding: 12px;
830
+ border-radius: 6px;
831
+ margin-bottom: 12px;
832
+ border-left: none;
833
+ border-right: none;
834
+ border-radius: 0;
835
+ }
836
+
837
+ .card-header h2 {
838
+ font-size: 0.85rem;
839
+ }
840
+
841
+ .agent-item {
842
+ padding: 14px 0;
843
+ }
844
+
845
+ .agent-name-row {
846
+ margin-bottom: 6px;
847
+ }
848
+
849
+ .agent-name {
850
+ font-size: 1rem;
851
+ }
852
+
853
+ .btn-delete-agent {
854
+ min-width: 44px;
855
+ min-height: 44px;
856
+ display: flex;
857
+ align-items: center;
858
+ justify-content: center;
859
+ }
860
+
861
+ .inline-session-item {
862
+ padding: 14px;
863
+ min-height: 52px;
864
+ }
865
+
866
+ .btn-session-connect {
867
+ padding: 10px 18px;
868
+ min-height: 44px;
869
+ font-size: 0.85rem;
870
+ }
871
+
872
+ .btn-new-session {
873
+ padding: 14px 16px;
874
+ min-height: 48px;
875
+ font-size: 0.9rem;
876
+ }
877
+
878
+ /* Empty state mobile */
879
+ .empty-agent-state {
880
+ padding: 4px 0;
881
+ }
882
+
883
+ .command-box {
884
+ padding: 12px;
885
+ }
886
+
887
+ .command-box code {
888
+ font-size: 0.8rem;
889
+ }
890
+
891
+ .copy-btn {
892
+ min-height: 36px;
893
+ padding: 8px 12px;
894
+ }
895
+
896
+ /* Modal mobile */
897
+ .modal {
898
+ width: 95%;
899
+ max-height: 90vh;
900
+ }
901
+
902
+ .modal-body {
903
+ padding: 12px;
904
+ }
1430
905
  }
1431
906
 
1432
- .api-error button {
1433
- margin-top: 10px;
907
+ /* Extra small screens */
908
+ @media (max-width: 375px) {
909
+ .dashboard-main {
910
+ padding: 8px 4px;
911
+ }
912
+
913
+ .dashboard-card {
914
+ padding: 10px 8px;
915
+ }
916
+
917
+ .agent-name {
918
+ font-size: 0.95rem;
919
+ }
920
+
921
+ .btn-session-connect {
922
+ padding: 8px 12px;
923
+ font-size: 0.8rem;
924
+ }
925
+
926
+ .session-name {
927
+ font-size: 0.85rem;
928
+ }
1434
929
  }
1435
930
 
1436
- /* Connection Testing States */
1437
- .btn-connect.testing {
1438
- background: #ffc107 !important;
1439
- color: #333 !important;
1440
- cursor: wait !important;
931
+ /* Hide these sections completely via CSS */
932
+ .dashboard-card:has(.action-buttons) {
933
+ display: none !important;
1441
934
  }
1442
935
 
1443
- /* Connection Error Notifications */
1444
- .connection-error-notification {
1445
- position: fixed;
1446
- top: 120px;
1447
- right: 20px;
1448
- background: #fff;
1449
- border-left: 4px solid #f44336;
1450
- border-radius: 8px;
1451
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1452
- padding: 16px 20px;
1453
- max-width: 350px;
1454
- z-index: 3000;
1455
- animation: slideInRight 0.3s ease-out;
936
+ /* Skeleton loading - dark theme */
937
+ .skeleton-content {
1456
938
  display: flex;
1457
- align-items: flex-start;
1458
- gap: 12px;
939
+ flex-direction: column;
940
+ gap: 8px;
1459
941
  }
1460
942
 
1461
- .connection-error-notification .error-content {
1462
- flex: 1;
1463
- font-size: 0.9rem;
1464
- line-height: 1.4;
943
+ .skeleton-agent,
944
+ .skeleton-action,
945
+ .skeleton-session {
946
+ height: 50px;
947
+ background: linear-gradient(90deg, var(--bg-tertiary) 25%, var(--bg-hover) 50%, var(--bg-tertiary) 75%);
948
+ background-size: 200% 100%;
949
+ animation: loading 1.5s infinite;
950
+ border-radius: 6px;
1465
951
  }
1466
952
 
1467
- .connection-error-notification button {
1468
- background: none;
1469
- border: none;
1470
- font-size: 1.2rem;
1471
- cursor: pointer;
1472
- color: #999;
1473
- padding: 0;
1474
- width: 20px;
1475
- height: 20px;
1476
- display: flex;
1477
- align-items: center;
1478
- justify-content: center;
1479
- border-radius: 50%;
953
+ @keyframes loading {
954
+ 0% { background-position: 200% 0; }
955
+ 100% { background-position: -200% 0; }
956
+ }
957
+
958
+ /* Blurred preview */
959
+ .dashboard-grid.blurred {
960
+ filter: blur(2px);
961
+ opacity: 0.5;
962
+ pointer-events: none;
963
+ }
964
+
965
+ /* API Error */
966
+ .api-error {
967
+ text-align: center;
968
+ padding: 16px;
969
+ background: var(--bg-tertiary);
970
+ border: 1px solid var(--danger);
971
+ border-radius: 6px;
972
+ color: var(--danger);
973
+ }
974
+
975
+ /* Connection status */
976
+ .connection-status {
977
+ font-size: 0.75rem;
978
+ color: var(--text-muted);
1480
979
  }
1481
980
 
1482
- .connection-error-notification button:hover {
1483
- background: #f5f5f5;
1484
- color: #333;
1485
- }
981
+ .connection-status.connected { color: var(--success); }
982
+ .connection-status.disconnected { color: var(--warning); }
983
+ .connection-status.error { color: var(--danger); }