Files
agent-platform/agent_platform/static/style.css
T
Leopold 64b840c94c feat: agent platform initial commit
- FastAPI + HTMX UI: dashboard, agents CRUD, chat, audit, tools
- SQLite schema: agents, conversations, messages, audit, sessions
- Code-agent sync (agents/*.py -> DB on startup)
- MCP client with health check
- Token auth (Bearer + session)
- LiteLLM integration via llm.py
- Docker Compose: agent-platform + mcp-tools services
- Smoke tests pass: /health 200, /api/agents 200, / 401
2026-07-05 22:18:00 +02:00

250 lines
6.7 KiB
CSS
Raw 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.
/* Agent Platform Stylesheet */
:root {
--color-bg: #f7f8fa;
--color-surface: #ffffff;
--color-border: #e1e4e8;
--color-text: #1f2328;
--color-text-muted: #57606a;
--color-primary: #0969da;
--color-primary-hover: #0860c7;
--color-success: #1a7f37;
--color-danger: #cf222e;
--color-warning: #bf8700;
--radius: 6px;
--shadow: 0 1px 3px rgba(0,0,0,0.05);
--shadow-lg: 0 4px 12px rgba(0,0,0,0.08);
--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
font-family: var(--font);
font-size: 14px;
line-height: 1.5;
color: var(--color-text);
background: var(--color-bg);
display: flex;
flex-direction: column;
min-height: 100vh;
}
/* === Navbar === */
.navbar {
background: var(--color-surface);
border-bottom: 1px solid var(--color-border);
padding: 12px 24px;
display: flex;
align-items: center;
gap: 24px;
box-shadow: var(--shadow);
}
.nav-brand { font-weight: 700; font-size: 16px; color: var(--color-primary); }
.nav-links { display: flex; gap: 16px; flex: 1; }
.nav-link {
color: var(--color-text-muted);
text-decoration: none;
padding: 6px 12px;
border-radius: var(--radius);
transition: background 0.15s;
}
.nav-link:hover { background: var(--color-bg); color: var(--color-text); }
.nav-user { color: var(--color-text-muted); font-size: 13px; }
/* === Container === */
.container {
max-width: 1200px;
margin: 0 auto;
padding: 24px;
width: 100%;
flex: 1;
}
/* === Page Header === */
.page-header { margin-bottom: 24px; }
.page-header h1 { font-size: 28px; font-weight: 600; margin-bottom: 4px; }
.subtitle { color: var(--color-text-muted); }
/* === Card === */
.card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius);
padding: 20px;
margin-bottom: 16px;
box-shadow: var(--shadow);
}
.card h2 { font-size: 18px; font-weight: 600; margin-bottom: 12px; }
/* === Table === */
.table { width: 100%; border-collapse: collapse; }
.table th, .table td {
padding: 10px 12px;
text-align: left;
border-bottom: 1px solid var(--color-border);
}
.table th { background: var(--color-bg); font-weight: 600; font-size: 12px; text-transform: uppercase; color: var(--color-text-muted); }
.table tbody tr:hover { background: var(--color-bg); }
/* === Form === */
.form { display: flex; flex-direction: column; gap: 12px; }
.form-row { display: flex; gap: 12px; }
.form-row .form-group { flex: 1; }
.form-group { display: flex; flex-direction: column; gap: 4px; }
.form-group label { font-size: 13px; font-weight: 500; color: var(--color-text-muted); }
input, select, textarea {
font-family: inherit;
font-size: 14px;
padding: 8px 12px;
border: 1px solid var(--color-border);
border-radius: var(--radius);
background: var(--color-surface);
color: var(--color-text);
width: 100%;
}
input:focus, select:focus, textarea:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(9,105,218,0.15);
}
textarea { font-family: inherit; resize: vertical; }
/* === Button === */
.btn {
display: inline-block;
padding: 8px 16px;
border: 1px solid var(--color-border);
border-radius: var(--radius);
background: var(--color-surface);
color: var(--color-text);
text-decoration: none;
cursor: pointer;
font-size: 14px;
font-weight: 500;
transition: all 0.15s;
}
.btn:hover { background: var(--color-bg); border-color: var(--color-text-muted); }
.btn-primary {
background: var(--color-primary);
color: white;
border-color: var(--color-primary);
}
.btn-primary:hover { background: var(--color-primary-hover); }
.btn-danger {
background: var(--color-surface);
color: var(--color-danger);
border-color: var(--color-border);
}
.btn-danger:hover { background: var(--color-danger); color: white; border-color: var(--color-danger); }
.btn-sm { padding: 4px 10px; font-size: 12px; }
/* === Badge === */
.badge {
display: inline-block;
padding: 2px 8px;
border-radius: 12px;
font-size: 11px;
font-weight: 600;
background: var(--color-bg);
color: var(--color-text-muted);
border: 1px solid var(--color-border);
}
.badge-green { background: #dafbe1; color: var(--color-success); border-color: #1a7f3730; }
.badge-red { background: #ffebe9; color: var(--color-danger); border-color: #cf222e30; }
/* === Empty State === */
.empty-state {
text-align: center;
padding: 32px;
color: var(--color-text-muted);
}
/* === Code === */
code {
font-family: var(--mono);
font-size: 12.5px;
background: var(--color-bg);
padding: 2px 6px;
border-radius: 4px;
}
pre {
background: var(--color-bg);
padding: 12px;
border-radius: var(--radius);
overflow-x: auto;
font-size: 12px;
margin-top: 8px;
}
/* === Chat === */
.chat-container { min-height: 400px; }
.messages { display: flex; flex-direction: column; gap: 12px; }
.message {
padding: 10px 14px;
border-radius: var(--radius);
max-width: 80%;
}
.message-user {
background: var(--color-primary);
color: white;
align-self: flex-end;
}
.message-assistant {
background: var(--color-bg);
border: 1px solid var(--color-border);
align-self: flex-start;
}
.message-tool {
background: #fff8c5;
color: var(--color-warning);
border: 1px solid #d4a72c30;
align-self: center;
font-family: var(--mono);
font-size: 12px;
max-width: 90%;
}
.message-role {
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
margin-bottom: 4px;
opacity: 0.7;
}
.message-content { white-space: pre-wrap; word-wrap: break-word; }
/* === Tools Grid === */
.tools-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 12px;
}
.tool-card {
background: var(--color-bg);
border: 1px solid var(--color-border);
border-radius: var(--radius);
padding: 12px;
}
.tool-card h3 { margin-bottom: 6px; font-size: 14px; }
.tool-card p { color: var(--color-text-muted); font-size: 13px; }
/* === Footer === */
.footer {
text-align: center;
padding: 16px;
color: var(--color-text-muted);
border-top: 1px solid var(--color-border);
background: var(--color-surface);
}
/* === Responsive === */
@media (max-width: 640px) {
.navbar { flex-wrap: wrap; gap: 12px; padding: 12px; }
.nav-links { order: 3; width: 100%; }
.container { padding: 12px; }
.form-row { flex-direction: column; }
.message { max-width: 95%; }
}