Files
core d708c8b58c Initial commit: Browser Pilot - Agentic Browser Control Extension
- Side Panel with Chat UI, Quick Actions, Dev Tools
- 22 browser automation tools (DOM, JS, screenshots, navigation)
- MCP server (zero-dep, Node 18+) for external AI clients
- Supports OpenRouter, Ollama, Anthropic, OpenAI, custom endpoints
- Chrome/Brave MV3 extension with content script console capture
2026-07-28 11:04:37 +02:00

416 lines
8.7 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Browser Pilot Side Panel Styles */
:root {
--bg: #0d1117;
--bg2: #161b22;
--bg3: #21262d;
--border: #30363d;
--text: #e6edf3;
--text2: #8b949e;
--accent: #ff6b35;
--accent2: #ff8c5a;
--green: #3fb950;
--red: #f85149;
--blue: #58a6ff;
--radius: 8px;
--font: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
--mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: var(--font);
background: var(--bg);
color: var(--text);
height: 100vh;
display: flex;
flex-direction: column;
overflow: hidden;
font-size: 13px;
}
/* Header */
.header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
background: var(--bg2);
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.header-left { display: flex; align-items: center; gap: 8px; }
.logo { font-size: 18px; }
.title { font-weight: 600; font-size: 14px; }
.header-right { display: flex; align-items: center; gap: 8px; }
.provider-select {
background: var(--bg3);
border: 1px solid var(--border);
color: var(--text);
border-radius: 4px;
padding: 3px 6px;
font-size: 11px;
}
.status-dot {
width: 8px; height: 8px;
border-radius: 50%;
background: var(--red);
transition: background 0.3s;
}
.status-dot.connected { background: var(--green); }
.icon-btn {
background: none;
border: none;
cursor: pointer;
font-size: 16px;
padding: 2px;
}
/* Tabs */
.tabs {
display: flex;
background: var(--bg2);
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.tab {
flex: 1;
padding: 8px;
background: none;
border: none;
color: var(--text2);
font-size: 12px;
font-weight: 500;
cursor: pointer;
border-bottom: 2px solid transparent;
transition: all 0.2s;
}
.tab:hover { color: var(--text); background: var(--bg3); }
.tab.active { color: var(--accent); border-bottom-color: var(--accent); }
/* Tab Content */
.tab-content {
display: none;
flex: 1;
overflow: hidden;
flex-direction: column;
}
.tab-content.active { display: flex; }
/* Messages */
.messages {
flex: 1;
overflow-y: auto;
padding: 12px;
display: flex;
flex-direction: column;
gap: 10px;
}
.message {
max-width: 95%;
padding: 10px 12px;
border-radius: var(--radius);
font-size: 13px;
line-height: 1.5;
word-wrap: break-word;
}
.message.assistant {
background: var(--bg2);
border: 1px solid var(--border);
align-self: flex-start;
}
.message.user {
background: var(--accent);
color: white;
align-self: flex-end;
border-radius: var(--radius) var(--radius) 4px var(--radius);
}
.message.tool {
background: var(--bg3);
border: 1px solid var(--border);
font-family: var(--mono);
font-size: 11px;
color: var(--text2);
align-self: flex-start;
max-width: 100%;
}
.message.error {
background: #2d1b1b;
border: 1px solid var(--red);
color: var(--red);
}
.message-content { white-space: pre-wrap; }
.message-content strong { color: var(--accent); }
.message-content code {
background: var(--bg3);
padding: 1px 4px;
border-radius: 3px;
font-family: var(--mono);
font-size: 11px;
}
.tool-label {
font-size: 10px;
color: var(--accent);
font-weight: 600;
margin-bottom: 4px;
text-transform: uppercase;
}
/* Input Area */
.input-area {
padding: 10px 12px;
border-top: 1px solid var(--border);
background: var(--bg2);
flex-shrink: 0;
}
.input-row {
display: flex;
gap: 8px;
align-items: flex-end;
}
.input-row textarea {
flex: 1;
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text);
padding: 8px 12px;
font-family: var(--font);
font-size: 13px;
resize: none;
max-height: 120px;
line-height: 1.4;
}
.input-row textarea:focus { outline: none; border-color: var(--accent); }
.send-btn {
width: 36px; height: 36px;
border-radius: 50%;
background: var(--accent);
border: none;
color: white;
font-size: 14px;
cursor: pointer;
flex-shrink: 0;
transition: background 0.2s;
}
.send-btn:hover { background: var(--accent2); }
.send-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.input-options {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 6px;
}
.checkbox-label {
font-size: 11px;
color: var(--text2);
display: flex;
align-items: center;
gap: 4px;
cursor: pointer;
}
.stop-btn {
background: var(--red);
color: white;
border: none;
border-radius: 4px;
padding: 4px 10px;
font-size: 11px;
cursor: pointer;
}
.hidden { display: none !important; }
/* Actions Tab */
.actions-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
padding: 12px;
}
.action-btn {
background: var(--bg2);
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text);
padding: 12px 10px;
font-size: 12px;
cursor: pointer;
transition: all 0.2s;
text-align: left;
}
.action-btn:hover { border-color: var(--accent); background: var(--bg3); }
.action-result {
flex: 1;
overflow-y: auto;
padding: 12px;
font-family: var(--mono);
font-size: 11px;
white-space: pre-wrap;
color: var(--text2);
}
/* Dev Tab */
.dev-section {
padding: 12px;
border-bottom: 1px solid var(--border);
}
.dev-section h3 {
font-size: 12px;
color: var(--accent);
margin-bottom: 8px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.code-input, .code-input-line {
width: 100%;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 4px;
color: var(--text);
font-family: var(--mono);
font-size: 12px;
padding: 8px;
resize: vertical;
}
.code-input-line { resize: none; height: 32px; }
.code-input:focus, .code-input-line:focus { outline: none; border-color: var(--accent); }
.exec-btn {
margin-top: 6px;
background: var(--bg3);
border: 1px solid var(--border);
color: var(--text);
border-radius: 4px;
padding: 5px 12px;
font-size: 11px;
cursor: pointer;
}
.exec-btn:hover { border-color: var(--accent); }
.code-output {
margin-top: 8px;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 4px;
padding: 8px;
font-family: var(--mono);
font-size: 11px;
color: var(--green);
max-height: 200px;
overflow-y: auto;
white-space: pre-wrap;
word-break: break-all;
}
.code-output.small { font-size: 10px; color: var(--text2); }
.mcp-status {
display: flex;
align-items: center;
gap: 8px;
font-size: 12px;
margin-bottom: 8px;
}
.mcp-dot {
width: 8px; height: 8px;
border-radius: 50%;
background: var(--green);
}
.mcp-dot.offline { background: var(--red); }
/* Modal */
.modal {
position: fixed;
inset: 0;
background: rgba(0,0,0,0.7);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
}
.modal-content {
background: var(--bg2);
border: 1px solid var(--border);
border-radius: 12px;
width: 90%;
max-width: 400px;
max-height: 90vh;
overflow-y: auto;
padding: 20px;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
}
.modal-header h2 { font-size: 16px; }
.close-btn {
background: none;
border: none;
color: var(--text2);
font-size: 18px;
cursor: pointer;
}
.form-group { margin-bottom: 12px; }
.form-group label {
display: block;
font-size: 11px;
color: var(--text2);
margin-bottom: 4px;
font-weight: 500;
}
.form-group input, .form-group textarea {
width: 100%;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 4px;
color: var(--text);
padding: 8px;
font-size: 12px;
font-family: var(--mono);
}
.form-group input:focus, .form-group textarea:focus { outline: none; border-color: var(--accent); }
.save-btn {
width: 100%;
background: var(--accent);
color: white;
border: none;
border-radius: var(--radius);
padding: 10px;
font-size: 13px;
font-weight: 600;
cursor: pointer;
margin-top: 8px;
}
.save-btn:hover { background: var(--accent2); }
/* Scrollbar */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--text2); }
/* Loading animation */
.typing-indicator {
display: flex;
gap: 4px;
padding: 4px 0;
}
.typing-indicator span {
width: 6px; height: 6px;
background: var(--text2);
border-radius: 50%;
animation: bounce 1.4s infinite;
}
.typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
.typing-indicator span:nth-child(3) { animation-delay: 0.4s; }
@keyframes bounce {
0%, 60%, 100% { transform: translateY(0); }
30% { transform: translateY(-4px); }
}
/* Screenshot in chat */
.message img {
max-width: 100%;
border-radius: 4px;
margin-top: 6px;
border: 1px solid var(--border);
}