.botcoder-browser-container { display: flex; height: 100vh; width: 100%; background-color: var(--surface, #1e293b); color: var(--text, #f8fafc); } .botcoder-browser-sidebar { width: 280px; background-color: var(--surface-hover, #334155); border-right: 1px solid var(--border, #475569); display: flex; flex-direction: column; } .botcoder-browser-header { padding: 16px; border-bottom: 1px solid var(--border, #475569); display: flex; justify-content: space-between; align-items: center; } .botcoder-browser-header h3 { margin: 0; font-size: 15px; font-weight: 600; } .botcoder-browser-actions { padding: 16px; display: flex; gap: 8px; border-bottom: 1px solid var(--border, #475569); } .botcoder-browser-actions .botcoder-btn { flex: 1; } #recordBtn.recording-active { background-color: #ef4444; color: white; border-color: #ef4444; animation: pulse-recording 2s infinite; } @keyframes pulse-recording { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } } .botcoder-browser-timeline { flex-grow: 1; overflow-y: auto; padding: 16px; font-size: 13px; border-bottom: 1px solid var(--border, #475569); } .timeline-action { display: flex; gap: 8px; padding: 6px 0; border-bottom: 1px dashed rgba(255,255,255,0.1); } .action-type { color: var(--accent, #3b82f6); font-weight: 500; } .action-details { color: var(--text, #f8fafc); flex-grow: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .botcoder-browser-gallery { height: 150px; padding: 12px; overflow-x: auto; display: flex; gap: 8px; background: var(--surface-active, #0f172a); } .screenshot-thumb { min-width: 100px; background: rgba(255,255,255,0.1); border: 1px solid var(--border, #475569); border-radius: 4px; display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--text-muted, #94a3b8); } .botcoder-browser-main { flex-grow: 1; display: flex; flex-direction: column; } .botcoder-browser-address-bar { padding: 10px 16px; background-color: var(--surface, #1e293b); border-bottom: 1px solid var(--border, #475569); display: flex; gap: 12px; align-items: center; } .botcoder-browser-nav { display: flex; gap: 4px; } .botcoder-browser-url { flex-grow: 1; background: var(--surface-active, #0f172a); border: 1px solid var(--border, #475569); padding: 8px 12px; border-radius: 4px; color: var(--text, #f8fafc); font-family: inherit; font-size: 13px; outline: none; } .botcoder-browser-url:focus { border-color: var(--accent, #3b82f6); } .botcoder-browser-preview { flex-grow: 1; background: #fff; /* Always white like a browser */ position: relative; overflow: hidden; } .botcoder-browser-canvas { width: 100%; height: 100%; border: none; /* Normally this would be an iframe or canvas pointing to VNC */ } .botcoder-btn { padding: 6px 16px; font-size: 13px; font-weight: 500; border: 1px solid var(--border, #475569); border-radius: 4px; background-color: transparent; color: var(--text, #f8fafc); cursor: pointer; } .botcoder-btn-primary { background-color: var(--accent, #3b82f6); border-color: var(--accent, #3b82f6); } .botcoder-btn-icon { background: none; border: 1px solid transparent; color: var(--text-muted, #94a3b8); cursor: pointer; border-radius: 4px; padding: 4px 8px; } .botcoder-btn-icon:hover { background: rgba(255,255,255,0.05); color: var(--text); }