orquesta-agent 0.2.56 → 0.2.58

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,488 +1,308 @@
1
- /* Orquesta Agent Manager Dark Theme */
2
- :root {
3
- --bg-primary: #09090b;
4
- --bg-secondary: #18181b;
5
- --bg-card: #141417;
6
- --bg-card-hover: #1c1c20;
7
- --bg-input: #27272a;
8
- --border: #27272a;
9
- --border-hover: #3f3f46;
10
- --text-primary: #fafafa;
11
- --text-secondary: #a1a1aa;
12
- --text-muted: #71717a;
13
- --purple: #a855f7;
14
- --pink: #ec4899;
15
- --accent: var(--purple);
16
- --accent-glow: rgba(168, 85, 247, 0.12);
17
- --green: #22c55e;
18
- --green-glow: rgba(34, 197, 94, 0.15);
19
- --red: #ef4444;
20
- --red-glow: rgba(239, 68, 68, 0.15);
21
- --yellow: #eab308;
22
- --radius: 10px;
23
- --radius-sm: 6px;
24
- }
25
-
26
- * { margin: 0; padding: 0; box-sizing: border-box; }
1
+ /* Reset and base styles */
2
+ * {
3
+ margin: 0;
4
+ padding: 0;
5
+ box-sizing: border-box;
6
+ }
27
7
 
28
8
  body {
29
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
30
- background: var(--bg-primary);
31
- color: var(--text-primary);
32
- line-height: 1.5;
33
- min-height: 100vh;
34
- /* Subtle grid pattern like orquesta.live */
35
- background-image:
36
- linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
37
- linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
38
- background-size: 48px 48px;
9
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif;
10
+ background: #f5f7fa;
11
+ color: #2c3e50;
12
+ line-height: 1.6;
39
13
  }
40
14
 
41
15
  .container {
42
16
  max-width: 1200px;
43
17
  margin: 0 auto;
44
- padding: 24px;
18
+ padding: 20px;
45
19
  }
46
20
 
47
- /* ── Header ─────────────────────────────────────────── */
21
+ /* Header */
48
22
  .header {
23
+ background: white;
24
+ border-radius: 12px;
25
+ padding: 24px;
26
+ margin-bottom: 24px;
27
+ box-shadow: 0 2px 8px rgba(0,0,0,0.08);
28
+ }
29
+
30
+ .header-content {
49
31
  display: flex;
50
32
  justify-content: space-between;
51
33
  align-items: center;
52
- padding: 20px 24px;
53
- margin-bottom: 28px;
54
- background: linear-gradient(135deg, rgba(168,85,247,0.08) 0%, rgba(236,72,153,0.05) 100%);
55
- border: 1px solid rgba(168,85,247,0.15);
56
- border-radius: 14px;
57
- position: relative;
58
- overflow: hidden;
59
- }
60
-
61
- /* Gradient glow behind header */
62
- .header::before {
63
- content: '';
64
- position: absolute;
65
- top: -60%;
66
- left: 30%;
67
- width: 40%;
68
- height: 200%;
69
- background: radial-gradient(ellipse, rgba(168,85,247,0.1) 0%, transparent 70%);
70
- pointer-events: none;
71
- }
72
-
73
- .header-left {
74
- display: flex;
75
- align-items: center;
76
- gap: 14px;
77
- position: relative;
78
- }
79
-
80
- .logo-img {
81
- width: 36px;
82
- height: 36px;
83
- border-radius: 8px;
84
34
  }
85
35
 
86
36
  .header h1 {
87
- font-size: 24px;
88
- font-weight: 700;
89
- letter-spacing: -0.04em;
90
- line-height: 1;
91
- background: linear-gradient(135deg, #a855f7, #ec4899);
92
- -webkit-background-clip: text;
93
- -webkit-text-fill-color: transparent;
94
- background-clip: text;
95
- }
96
-
97
- .header-subtitle {
98
- font-size: 12px;
99
- color: var(--text-muted);
100
- font-weight: 400;
101
- margin-top: 3px;
37
+ font-size: 28px;
38
+ color: #2c3e50;
102
39
  }
103
40
 
104
- .header-right {
41
+ .header-info {
105
42
  display: flex;
106
- gap: 10px;
107
- align-items: center;
108
- position: relative;
109
- }
110
-
111
- /* ── System Health ──────────────────────────────────── */
112
- .health-grid {
113
- display: grid;
114
- grid-template-columns: repeat(4, 1fr);
115
43
  gap: 12px;
116
- margin-bottom: 24px;
44
+ align-items: center;
117
45
  }
118
46
 
119
- .health-card {
120
- background: var(--bg-card);
121
- border: 1px solid var(--border);
122
- border-radius: var(--radius);
47
+ /* System Info */
48
+ .system-info {
49
+ background: #f8f9fa;
50
+ border-radius: 8px;
123
51
  padding: 16px;
124
- transition: border-color 0.2s;
125
- }
126
-
127
- .health-card:hover {
128
- border-color: var(--border-hover);
129
- }
130
-
131
- .health-label {
132
- font-size: 11px;
133
- font-weight: 600;
134
- color: var(--text-muted);
135
- text-transform: uppercase;
136
- letter-spacing: 0.06em;
137
- margin-bottom: 8px;
138
- }
139
-
140
- .health-value {
141
- font-size: 28px;
142
- font-weight: 700;
143
- color: var(--text-primary);
144
- margin-bottom: 8px;
145
- letter-spacing: -0.03em;
52
+ margin-bottom: 24px;
53
+ display: flex;
54
+ gap: 24px;
55
+ flex-wrap: wrap;
146
56
  }
147
57
 
148
- .health-value small {
58
+ .system-item {
59
+ display: flex;
60
+ gap: 8px;
149
61
  font-size: 14px;
150
- font-weight: 400;
151
- color: var(--text-secondary);
152
- }
153
-
154
- .health-bar {
155
- width: 100%;
156
- height: 4px;
157
- background: var(--bg-input);
158
- border-radius: 2px;
159
- overflow: hidden;
160
- }
161
-
162
- .health-bar-fill {
163
- height: 100%;
164
- border-radius: 2px;
165
- transition: width 0.6s ease;
166
- }
167
-
168
- .health-bar-fill.green { background: var(--green); }
169
- .health-bar-fill.yellow { background: var(--yellow); }
170
- .health-bar-fill.red { background: var(--red); }
171
-
172
- .health-detail {
173
- font-size: 11px;
174
- color: var(--text-muted);
175
- margin-top: 6px;
176
62
  }
177
63
 
178
- /* ── Execution Modes ────────────────────────────────── */
179
- .modes-section {
180
- margin-bottom: 24px;
181
- }
182
-
183
- .modes-title {
184
- font-size: 11px;
64
+ .system-item .label {
185
65
  font-weight: 600;
186
- color: var(--text-muted);
187
- text-transform: uppercase;
188
- letter-spacing: 0.06em;
189
- margin-bottom: 10px;
190
- }
191
-
192
- .status-row {
193
- display: grid;
194
- grid-template-columns: repeat(3, 1fr);
195
- gap: 12px;
196
- }
197
-
198
- .mode-card {
199
- background: var(--bg-card);
200
- border: 1px solid var(--border);
201
- border-radius: var(--radius);
202
- padding: 14px 16px;
203
- transition: all 0.2s;
204
- }
205
-
206
- .mode-card:hover {
207
- border-color: var(--border-hover);
208
- }
209
-
210
- .mode-card.active {
211
- border-color: rgba(168,85,247,0.4);
212
- background: linear-gradient(135deg, rgba(168,85,247,0.06) 0%, rgba(236,72,153,0.03) 100%);
66
+ color: #6c757d;
213
67
  }
214
68
 
215
- .mode-header {
216
- display: flex;
217
- align-items: center;
218
- gap: 8px;
219
- margin-bottom: 4px;
220
- font-size: 14px;
221
- color: var(--text-primary);
69
+ /* Badge */
70
+ .badge {
71
+ display: inline-block;
72
+ padding: 4px 12px;
73
+ border-radius: 12px;
74
+ font-size: 12px;
75
+ font-weight: 600;
76
+ background: #e3f2fd;
77
+ color: #1976d2;
222
78
  }
223
79
 
224
- .mode-header .dot {
225
- width: 8px;
226
- height: 8px;
227
- border-radius: 50%;
228
- flex-shrink: 0;
80
+ .badge.success {
81
+ background: #e8f5e9;
82
+ color: #2e7d32;
229
83
  }
230
84
 
231
- .mode-header .dot.on { background: var(--green); box-shadow: 0 0 8px var(--green-glow); }
232
- .mode-header .dot.off { background: #3f3f46; }
233
- .mode-header .dot.warn { background: var(--yellow); }
234
-
235
- .mode-desc {
236
- font-size: 11px;
237
- color: var(--text-muted);
238
- margin-bottom: 6px;
239
- line-height: 1.4;
85
+ .badge.danger {
86
+ background: #ffebee;
87
+ color: #c62828;
240
88
  }
241
89
 
242
- .mode-status {
243
- font-size: 12px;
244
- color: var(--text-secondary);
245
- font-family: 'SF Mono', 'Fira Code', monospace;
90
+ .badge.warning {
91
+ background: #fff3e0;
92
+ color: #ef6c00;
246
93
  }
247
94
 
248
- /* ── Buttons ────────────────────────────────────────── */
95
+ /* Buttons */
249
96
  .btn {
250
97
  display: inline-flex;
251
98
  align-items: center;
252
99
  gap: 6px;
253
- padding: 8px 16px;
254
- border: 1px solid var(--border);
255
- border-radius: var(--radius-sm);
256
- font-size: 13px;
100
+ padding: 10px 20px;
101
+ border: none;
102
+ border-radius: 8px;
103
+ font-size: 14px;
257
104
  font-weight: 500;
258
105
  cursor: pointer;
259
- transition: all 0.15s;
260
- background: var(--bg-card);
261
- color: var(--text-secondary);
262
- font-family: inherit;
106
+ transition: all 0.2s;
263
107
  }
264
108
 
265
109
  .btn:hover {
266
- background: var(--bg-card-hover);
267
- border-color: var(--border-hover);
268
- color: var(--text-primary);
110
+ transform: translateY(-1px);
111
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
269
112
  }
270
113
 
271
114
  .btn-primary {
272
- background: linear-gradient(135deg, #a855f7, #9333ea);
273
- border-color: rgba(168,85,247,0.5);
115
+ background: #1976d2;
274
116
  color: white;
275
117
  }
276
118
 
277
119
  .btn-primary:hover {
278
- background: linear-gradient(135deg, #9333ea, #7e22ce);
279
- box-shadow: 0 0 20px rgba(168,85,247,0.2);
120
+ background: #1565c0;
121
+ }
122
+
123
+ .btn-secondary {
124
+ background: #e0e0e0;
125
+ color: #424242;
126
+ }
127
+
128
+ .btn-secondary:hover {
129
+ background: #bdbdbd;
280
130
  }
281
131
 
282
132
  .btn-success {
283
- background: rgba(34,197,94,0.1);
284
- border-color: rgba(34,197,94,0.3);
285
- color: var(--green);
133
+ background: #2e7d32;
134
+ color: white;
286
135
  }
287
136
 
288
- .btn-success:hover { background: rgba(34,197,94,0.2); }
137
+ .btn-success:hover {
138
+ background: #1b5e20;
139
+ }
289
140
 
290
141
  .btn-danger {
291
- background: rgba(239,68,68,0.1);
292
- border-color: rgba(239,68,68,0.3);
293
- color: var(--red);
142
+ background: #c62828;
143
+ color: white;
294
144
  }
295
145
 
296
- .btn-danger:hover { background: rgba(239,68,68,0.2); }
297
-
298
- .btn-sm { padding: 5px 10px; font-size: 12px; }
299
- .btn svg { width: 14px; height: 14px; flex-shrink: 0; }
146
+ .btn-danger:hover {
147
+ background: #b71c1c;
148
+ }
300
149
 
301
- /* ── Actions Bar ────────────────────────────────────── */
302
- .actions-bar {
303
- display: flex;
304
- justify-content: space-between;
305
- align-items: center;
306
- margin-bottom: 16px;
150
+ .btn-sm {
151
+ padding: 6px 12px;
152
+ font-size: 12px;
307
153
  }
308
154
 
309
- .actions-bar h2 {
155
+ .btn .icon {
310
156
  font-size: 16px;
311
- font-weight: 600;
312
- color: var(--text-primary);
313
157
  }
314
158
 
315
- /* ── Agent Cards ────────────────────────────────────── */
316
- .agents-grid {
317
- display: grid;
318
- gap: 12px;
159
+ /* Actions */
160
+ .actions {
161
+ margin-bottom: 24px;
319
162
  }
320
163
 
321
- .agent-card {
322
- background: var(--bg-card);
323
- border: 1px solid var(--border);
324
- border-radius: var(--radius);
325
- overflow: hidden;
326
- transition: border-color 0.2s;
164
+ /* Empty State */
165
+ .empty-state {
166
+ text-align: center;
167
+ padding: 60px 20px;
168
+ background: white;
169
+ border-radius: 12px;
170
+ box-shadow: 0 2px 8px rgba(0,0,0,0.08);
327
171
  }
328
172
 
329
- .agent-card:hover { border-color: var(--border-hover); }
330
-
331
- .agent-card.running { border-left: 3px solid var(--green); }
332
- .agent-card.stopped { border-left: 3px solid #3f3f46; }
333
- .agent-card.error { border-left: 3px solid var(--red); }
334
-
335
- .agent-card-header {
336
- display: flex;
337
- justify-content: space-between;
338
- align-items: center;
339
- padding: 16px 20px;
173
+ .empty-icon {
174
+ font-size: 64px;
175
+ margin-bottom: 16px;
176
+ opacity: 0.5;
340
177
  }
341
178
 
342
- .agent-card-left {
343
- display: flex;
344
- align-items: center;
345
- gap: 12px;
346
- min-width: 0;
179
+ .empty-state h3 {
180
+ font-size: 20px;
181
+ margin-bottom: 8px;
182
+ color: #2c3e50;
347
183
  }
348
184
 
349
- .agent-status-dot {
350
- width: 10px;
351
- height: 10px;
352
- border-radius: 50%;
353
- flex-shrink: 0;
185
+ .empty-state p {
186
+ color: #6c757d;
354
187
  }
355
188
 
356
- .agent-status-dot.running {
357
- background: var(--green);
358
- box-shadow: 0 0 8px var(--green-glow);
359
- animation: pulse 2s infinite;
189
+ /* Agents Container */
190
+ .agents-container {
191
+ display: grid;
192
+ gap: 16px;
193
+ grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
360
194
  }
361
195
 
362
- .agent-status-dot.stopped { background: #3f3f46; }
363
- .agent-status-dot.error { background: var(--red); box-shadow: 0 0 8px var(--red-glow); }
196
+ /* Agent Card */
197
+ .agent-card {
198
+ background: white;
199
+ border-radius: 12px;
200
+ padding: 20px;
201
+ box-shadow: 0 2px 8px rgba(0,0,0,0.08);
202
+ transition: all 0.2s;
203
+ }
364
204
 
365
- @keyframes pulse {
366
- 0%, 100% { opacity: 1; }
367
- 50% { opacity: 0.4; }
205
+ .agent-card:hover {
206
+ box-shadow: 0 4px 16px rgba(0,0,0,0.12);
368
207
  }
369
208
 
370
- .agent-name {
371
- font-size: 15px;
372
- font-weight: 600;
373
- color: var(--text-primary);
374
- white-space: nowrap;
375
- overflow: hidden;
376
- text-overflow: ellipsis;
209
+ .agent-header {
210
+ display: flex;
211
+ justify-content: space-between;
212
+ align-items: flex-start;
213
+ margin-bottom: 16px;
377
214
  }
378
215
 
379
- .agent-project-link {
380
- font-size: 12px;
381
- color: var(--purple);
382
- text-decoration: none;
216
+ .agent-title {
383
217
  display: flex;
384
218
  align-items: center;
385
- gap: 4px;
386
- transition: color 0.15s;
219
+ gap: 10px;
387
220
  }
388
221
 
389
- .agent-project-link:hover { color: var(--pink); }
222
+ .agent-title h3 {
223
+ font-size: 18px;
224
+ color: #2c3e50;
225
+ }
390
226
 
391
- .agent-card-right {
392
- display: flex;
393
- gap: 6px;
394
- flex-shrink: 0;
227
+ .status-dot {
228
+ width: 12px;
229
+ height: 12px;
230
+ border-radius: 50%;
231
+ display: inline-block;
395
232
  }
396
233
 
397
- .agent-card-meta {
398
- display: flex;
399
- gap: 20px;
400
- padding: 0 20px 14px;
401
- flex-wrap: wrap;
234
+ .status-dot.running {
235
+ background: #2e7d32;
236
+ box-shadow: 0 0 8px #2e7d32;
402
237
  }
403
238
 
404
- .meta-item { font-size: 12px; }
405
- .meta-item .meta-label { color: var(--text-muted); margin-right: 5px; }
406
- .meta-item .meta-value { color: var(--text-secondary); font-family: 'SF Mono', 'Fira Code', monospace; font-size: 11px; }
239
+ .status-dot.stopped {
240
+ background: #9e9e9e;
241
+ }
407
242
 
408
- /* ── Inline Logs ────────────────────────────────────── */
409
- .agent-logs {
410
- border-top: 1px solid var(--border);
411
- max-height: 0;
412
- overflow: hidden;
413
- transition: max-height 0.3s ease;
243
+ .status-dot.error {
244
+ background: #c62828;
245
+ box-shadow: 0 0 8px #c62828;
414
246
  }
415
247
 
416
- .agent-logs.open { max-height: 400px; }
248
+ .agent-info {
249
+ margin-bottom: 16px;
250
+ }
417
251
 
418
- .agent-logs-header {
252
+ .info-row {
419
253
  display: flex;
420
- justify-content: space-between;
421
- align-items: center;
422
- padding: 8px 20px;
423
- background: rgba(0,0,0,0.3);
254
+ gap: 8px;
255
+ margin-bottom: 8px;
256
+ font-size: 13px;
424
257
  }
425
258
 
426
- .agent-logs-header span {
427
- font-size: 11px;
259
+ .info-row .label {
428
260
  font-weight: 600;
429
- color: var(--text-muted);
430
- text-transform: uppercase;
431
- letter-spacing: 0.05em;
261
+ color: #6c757d;
262
+ min-width: 100px;
432
263
  }
433
264
 
434
- .logs-content {
435
- background: #0a0a0c;
436
- color: #a1a1aa;
437
- padding: 12px 20px;
438
- font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
439
- font-size: 11px;
440
- line-height: 1.7;
441
- max-height: 320px;
442
- overflow-y: auto;
443
- white-space: pre-wrap;
444
- word-wrap: break-word;
265
+ .info-row .value {
266
+ color: #2c3e50;
267
+ word-break: break-all;
445
268
  }
446
269
 
447
- .logs-content::-webkit-scrollbar { width: 5px; }
448
- .logs-content::-webkit-scrollbar-track { background: transparent; }
449
- .logs-content::-webkit-scrollbar-thumb { background: #27272a; border-radius: 3px; }
450
-
451
- /* ── Empty State ────────────────────────────────────── */
452
- .empty-state {
453
- text-align: center;
454
- padding: 80px 20px;
455
- border: 1px dashed var(--border);
456
- border-radius: var(--radius);
457
- background: linear-gradient(135deg, rgba(168,85,247,0.03) 0%, transparent 100%);
270
+ .agent-actions {
271
+ display: flex;
272
+ gap: 8px;
273
+ flex-wrap: wrap;
458
274
  }
459
275
 
460
- .empty-state svg { width: 48px; height: 48px; color: var(--text-muted); margin-bottom: 16px; }
461
- .empty-state h3 { font-size: 16px; font-weight: 600; color: var(--text-secondary); margin-bottom: 6px; }
462
- .empty-state p { font-size: 13px; color: var(--text-muted); margin-bottom: 20px; }
463
-
464
- /* ── Modal ──────────────────────────────────────────── */
276
+ /* Modal */
465
277
  .modal {
466
278
  display: none;
467
279
  position: fixed;
468
- inset: 0;
469
- background: rgba(0,0,0,0.7);
470
- backdrop-filter: blur(4px);
280
+ top: 0;
281
+ left: 0;
282
+ width: 100%;
283
+ height: 100%;
284
+ background: rgba(0,0,0,0.5);
471
285
  z-index: 1000;
472
286
  align-items: center;
473
287
  justify-content: center;
474
288
  }
475
289
 
476
- .modal.active { display: flex; }
290
+ .modal.active {
291
+ display: flex;
292
+ }
477
293
 
478
294
  .modal-content {
479
- background: var(--bg-secondary);
480
- border: 1px solid var(--border);
481
- border-radius: 14px;
295
+ background: white;
296
+ border-radius: 12px;
482
297
  width: 90%;
483
- max-width: 520px;
298
+ max-width: 600px;
484
299
  max-height: 90vh;
485
300
  overflow-y: auto;
301
+ box-shadow: 0 8px 32px rgba(0,0,0,0.2);
302
+ }
303
+
304
+ .modal-large {
305
+ max-width: 900px;
486
306
  }
487
307
 
488
308
  .modal-header {
@@ -490,55 +310,78 @@ body {
490
310
  justify-content: space-between;
491
311
  align-items: center;
492
312
  padding: 20px 24px;
493
- border-bottom: 1px solid var(--border);
313
+ border-bottom: 1px solid #e0e0e0;
494
314
  }
495
315
 
496
- .modal-header h2 { font-size: 17px; font-weight: 600; }
316
+ .modal-header h2 {
317
+ font-size: 20px;
318
+ color: #2c3e50;
319
+ }
497
320
 
498
321
  .modal-close {
499
322
  background: none;
500
323
  border: none;
501
- font-size: 20px;
502
- color: var(--text-muted);
324
+ font-size: 28px;
325
+ color: #9e9e9e;
503
326
  cursor: pointer;
504
- width: 28px;
505
- height: 28px;
327
+ line-height: 1;
328
+ padding: 0;
329
+ width: 32px;
330
+ height: 32px;
506
331
  display: flex;
507
332
  align-items: center;
508
333
  justify-content: center;
509
- border-radius: var(--radius-sm);
510
- transition: all 0.15s;
334
+ border-radius: 4px;
335
+ transition: all 0.2s;
511
336
  }
512
337
 
513
- .modal-close:hover { background: var(--bg-input); color: var(--text-primary); }
514
- .modal-body { padding: 24px; }
338
+ .modal-close:hover {
339
+ background: #f5f5f5;
340
+ color: #424242;
341
+ }
515
342
 
516
- /* ── Form ───────────────────────────────────────────── */
517
- .form-group { margin-bottom: 18px; }
518
- .form-group label { display: block; margin-bottom: 5px; font-weight: 500; color: var(--text-secondary); font-size: 13px; }
343
+ .modal-body {
344
+ padding: 24px;
345
+ }
346
+
347
+ /* Form */
348
+ .form-group {
349
+ margin-bottom: 20px;
350
+ }
351
+
352
+ .form-group label {
353
+ display: block;
354
+ margin-bottom: 6px;
355
+ font-weight: 600;
356
+ color: #2c3e50;
357
+ font-size: 14px;
358
+ }
519
359
 
520
360
  .form-group input[type="text"],
521
361
  .form-group input[type="password"],
522
362
  .form-group select {
523
363
  width: 100%;
524
- padding: 9px 12px;
525
- background: var(--bg-input);
526
- border: 1px solid var(--border);
527
- border-radius: var(--radius-sm);
528
- color: var(--text-primary);
529
- font-size: 13px;
364
+ padding: 10px 12px;
365
+ border: 1px solid #e0e0e0;
366
+ border-radius: 6px;
367
+ font-size: 14px;
530
368
  font-family: inherit;
531
- transition: all 0.15s;
369
+ transition: all 0.2s;
532
370
  }
533
371
 
534
372
  .form-group input:focus,
535
373
  .form-group select:focus {
536
374
  outline: none;
537
- border-color: var(--purple);
538
- box-shadow: 0 0 0 3px var(--accent-glow);
375
+ border-color: #1976d2;
376
+ box-shadow: 0 0 0 3px rgba(25,118,210,0.1);
539
377
  }
540
378
 
541
- .form-group small { display: block; margin-top: 4px; font-size: 11px; color: var(--text-muted); }
379
+ .form-group small {
380
+ display: block;
381
+ margin-top: 4px;
382
+ font-size: 12px;
383
+ color: #6c757d;
384
+ }
542
385
 
543
386
  .checkbox-label {
544
387
  display: flex;
@@ -546,60 +389,83 @@ body {
546
389
  gap: 8px;
547
390
  cursor: pointer;
548
391
  font-weight: normal;
549
- font-size: 13px;
550
- color: var(--text-secondary);
551
392
  }
552
393
 
553
- .checkbox-label input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--purple); cursor: pointer; }
394
+ .checkbox-label input[type="checkbox"] {
395
+ width: 18px;
396
+ height: 18px;
397
+ cursor: pointer;
398
+ }
554
399
 
555
400
  .form-actions {
556
401
  display: flex;
557
- gap: 10px;
402
+ gap: 12px;
558
403
  justify-content: flex-end;
559
404
  margin-top: 24px;
560
- padding-top: 20px;
561
- border-top: 1px solid var(--border);
405
+ padding-top: 24px;
406
+ border-top: 1px solid #e0e0e0;
562
407
  }
563
408
 
564
- /* ── Footer ─────────────────────────────────────────── */
565
- .footer {
566
- text-align: center;
567
- padding: 32px 0 16px;
568
- font-size: 12px;
569
- color: var(--text-muted);
409
+ /* Logs */
410
+ .logs-controls {
570
411
  display: flex;
571
- justify-content: center;
572
- gap: 8px;
412
+ gap: 12px;
413
+ margin-bottom: 16px;
414
+ align-items: center;
573
415
  }
574
416
 
575
- .footer a {
576
- color: var(--text-secondary);
577
- text-decoration: none;
578
- transition: color 0.15s;
417
+ .logs-content {
418
+ background: #1e1e1e;
419
+ color: #d4d4d4;
420
+ padding: 16px;
421
+ border-radius: 6px;
422
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
423
+ font-size: 13px;
424
+ line-height: 1.5;
425
+ max-height: 500px;
426
+ overflow-y: auto;
427
+ white-space: pre-wrap;
428
+ word-wrap: break-word;
579
429
  }
580
430
 
581
- .footer a:hover { color: var(--purple); }
431
+ .logs-content:empty::before {
432
+ content: 'No logs available';
433
+ color: #6c757d;
434
+ font-style: italic;
435
+ }
582
436
 
583
- /* ── Responsive ─────────────────────────────────────── */
437
+ /* Responsive */
584
438
  @media (max-width: 768px) {
585
- .container { padding: 16px; }
586
- .header { flex-direction: column; gap: 12px; align-items: flex-start; }
587
- .health-grid { grid-template-columns: repeat(2, 1fr); }
588
- .status-row { grid-template-columns: 1fr; }
589
- .agent-card-right .btn span.btn-label { display: none; }
590
- }
439
+ .agents-container {
440
+ grid-template-columns: 1fr;
441
+ }
591
442
 
592
- @media (max-width: 480px) {
593
- .health-grid { grid-template-columns: 1fr 1fr; }
594
- }
443
+ .header-content {
444
+ flex-direction: column;
445
+ gap: 16px;
446
+ align-items: flex-start;
447
+ }
448
+
449
+ .system-info {
450
+ flex-direction: column;
451
+ gap: 8px;
452
+ }
595
453
 
596
- /* ── Animations ─────────────────────────────────────── */
597
- @keyframes spin { to { transform: rotate(360deg); } }
598
- .spinning { animation: spin 1s linear infinite; }
454
+ .agent-actions {
455
+ flex-direction: column;
456
+ }
599
457
 
600
- @keyframes fadeIn {
601
- from { opacity: 0; transform: translateY(4px); }
602
- to { opacity: 1; transform: translateY(0); }
458
+ .agent-actions .btn {
459
+ width: 100%;
460
+ }
603
461
  }
604
462
 
605
- .agent-card { animation: fadeIn 0.2s ease; }
463
+ /* Loading spinner */
464
+ @keyframes spin {
465
+ to { transform: rotate(360deg); }
466
+ }
467
+
468
+ .loading {
469
+ animation: spin 1s linear infinite;
470
+ display: inline-block;
471
+ }