/* * Agents Management CSS * Styles for the remote agent management interface * Inherits CSS variables from core/variables.css */ /* Agent indicator in navigation */ .agent-indicator { display: flex; align-items: center; gap: 8px; padding: 6px 12px; background: rgba(0, 212, 255, 0.1); border: 1px solid rgba(0, 212, 255, 0.3); border-radius: 20px; cursor: pointer; transition: all 0.2s; } .agent-indicator:hover { background: rgba(0, 212, 255, 0.2); border-color: var(--accent-cyan); } .agent-indicator-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent-green); box-shadow: 0 0 6px var(--accent-green); } .agent-indicator-dot.remote { background: var(--accent-cyan); box-shadow: 0 0 6px var(--accent-cyan); } .agent-indicator-dot.multiple { background: var(--accent-orange); box-shadow: 0 0 6px var(--accent-orange); } .agent-indicator-label { font-size: 11px; color: var(--text-primary); font-family: var(--font-mono); } .agent-indicator-count { font-size: 10px; padding: 2px 6px; background: rgba(0, 212, 255, 0.2); border-radius: 10px; color: var(--accent-cyan); } /* Agent selector dropdown */ .agent-selector { position: relative; } .agent-selector-dropdown { position: absolute; top: 100%; right: 0; margin-top: 8px; min-width: 280px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); z-index: 1000; display: none; } .agent-selector-dropdown.show { display: block; } .agent-selector-header { display: flex; justify-content: space-between; align-items: center; padding: 12px 15px; border-bottom: 1px solid var(--border-color); } .agent-selector-header h4 { margin: 0; font-size: 12px; color: var(--accent-cyan); text-transform: uppercase; letter-spacing: 1px; } .agent-selector-manage { font-size: 11px; color: var(--accent-cyan); text-decoration: none; } .agent-selector-manage:hover { text-decoration: underline; } .agent-selector-list { max-height: 300px; overflow-y: auto; } .agent-selector-item { display: flex; align-items: center; gap: 10px; padding: 10px 15px; cursor: pointer; transition: background 0.2s; border-bottom: 1px solid var(--border-color); } .agent-selector-item:last-child { border-bottom: none; } .agent-selector-item:hover { background: rgba(0, 212, 255, 0.1); } .agent-selector-item.selected { background: rgba(0, 212, 255, 0.15); border-left: 3px solid var(--accent-cyan); } .agent-selector-item.local { border-left: 3px solid var(--accent-green); } .agent-selector-item-status { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .agent-selector-item-status.online { background: var(--accent-green); } .agent-selector-item-status.offline { background: var(--accent-red); } .agent-selector-item-info { flex: 1; min-width: 0; } .agent-selector-item-name { font-size: 13px; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .agent-selector-item-url { font-size: 10px; color: var(--text-secondary); font-family: var(--font-mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .agent-selector-item-check { color: var(--accent-green); opacity: 0; } .agent-selector-item.selected .agent-selector-item-check { opacity: 1; } /* Agent badge in data displays */ .agent-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; font-size: 10px; background: rgba(0, 212, 255, 0.1); color: var(--accent-cyan); border-radius: 10px; font-family: var(--font-mono); } .agent-badge.local, .agent-badge.agent-local { background: rgba(0, 255, 136, 0.1); color: var(--accent-green); } .agent-badge.agent-remote { background: rgba(0, 212, 255, 0.1); color: var(--accent-cyan); } /* WiFi table agent column */ .wifi-networks-table .col-agent { width: 100px; text-align: center; } .wifi-networks-table th.col-agent { font-size: 10px; } /* Bluetooth table agent column */ .bt-devices-table .col-agent { width: 100px; text-align: center; } .agent-badge-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; } /* Agent column in data tables */ .data-table .agent-col { width: 120px; max-width: 120px; } /* Multi-agent stream indicator */ .multi-agent-indicator { position: fixed; bottom: 20px; left: 20px; display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 20px; font-size: 11px; color: var(--text-secondary); z-index: 100; } .multi-agent-indicator.active { border-color: var(--accent-cyan); color: var(--accent-cyan); } .multi-agent-indicator-pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--accent-cyan); animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(0.8); } } /* Agent connection status toast */ .agent-toast { position: fixed; top: 80px; right: 20px; padding: 10px 15px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 6px; font-size: 12px; z-index: 1001; animation: slideInRight 0.3s ease; } .agent-toast.connected { border-color: var(--accent-green); color: var(--accent-green); } .agent-toast.disconnected { border-color: var(--accent-red); color: var(--accent-red); } @keyframes slideInRight { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* Responsive adjustments */ @media (max-width: 768px) { .agent-indicator { padding: 4px 8px; } .agent-indicator-label { display: none; } .agent-selector-dropdown { position: fixed; top: auto; bottom: 0; left: 0; right: 0; margin: 0; border-radius: 16px 16px 0 0; max-height: 60vh; } .agents-grid { grid-template-columns: 1fr; } }