orquesta-agent 0.2.58 → 0.2.59

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