feat: Modern professional design overhaul

From 'Russian hacker site' to 'Tech startup' aesthetic 🎨

Color Palette:
- Switched from dark purple (#7c6fff) to elegant indigo (#6366f1)
- Softer backgrounds with better contrast
- Professional teal accent (#14b8a6) instead of neon green
- Vibrant but tasteful status colors

Typography:
- New font: Plus Jakarta Sans (modern, professional)
- Better letter-spacing and line-height
- Improved hierarchy with font weights

Components:
- Cards: Soft shadows, subtle gradients, hover lift effect
- Buttons: Gradient backgrounds, prominent shadows, smooth animations
- Inputs: Backdrop blur, focus glow effects, refined borders
- Badges: Rounded corners, glow shadows, better contrast
- Navbar: Enhanced glass effect, professional spacing

Visual Effects:
- Smooth transitions (.25s cubic-bezier)
- Hover animations (translateY, shadows)
- Multi-layer radial gradients for depth
- Subtle glow effects on interactive elements

Agent Colors (brighter):
- Orchestrator: Vibrant purple (#8b5cf6)
- Researcher: Modern teal (#14b8a6)
- Negotiator: Bold red (#f43f5e)
- AR Manager: Warm amber (#f59e0b)

Result: Clean, modern, professional interface
This commit is contained in:
pdyde 2026-02-21 16:00:03 +01:00
parent d48537b1fd
commit f43bf1646d

View file

@ -1,41 +1,57 @@
/* ── Frankenbot Dark Theme v2 ──────────────────────────────────────────────── */
/* ── Frankenbot Modern Design v3 ───────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap');
:root {
--bg-base: #080b12;
--bg-surface: #0f1320;
--bg-elevated: #181d2e;
--bg-hover: #1f2640;
--bg-glass: rgba(15,19,32,.7);
--accent: #7c6fff;
--accent-light: #a89eff;
--accent-dim: #4a45a0;
--accent-glow: rgba(124,111,255,.3);
--accent2: #06d6a0;
--accent2-glow: rgba(6,214,160,.25);
--success: #06d6a0;
--warning: #fbbf24;
--danger: #f43f5e;
--info: #38bdf8;
--text-primary: #e8eaf6;
--text-secondary: #94a3b8;
--text-muted: #4e5a72;
--border: rgba(255,255,255,.07);
--border-accent: rgba(124,111,255,.35);
--shadow: 0 8px 32px rgba(0,0,0,.5);
--shadow-sm: 0 2px 12px rgba(0,0,0,.3);
--radius: 14px;
--radius-sm: 9px;
--radius-xs: 6px;
--transition: .18s cubic-bezier(.4,0,.2,1);
/* Modern Color Palette - Professional & Clean */
--bg-base: #0a0e1a;
--bg-surface: #141825;
--bg-elevated: #1e2336;
--bg-hover: #2a3147;
--bg-glass: rgba(20,24,37,.85);
/* Agent Colors */
--agent-orchestrator: #7c6fff;
--agent-researcher: #06d6a0;
/* Primary Brand Color - Elegant Purple/Blue */
--accent: #6366f1;
--accent-light: #818cf8;
--accent-dim: #4f46e5;
--accent-glow: rgba(99,102,241,.25);
/* Secondary - Modern Teal */
--accent2: #14b8a6;
--accent2-glow: rgba(20,184,166,.2);
/* Status Colors - Vibrant but Professional */
--success: #10b981;
--warning: #f59e0b;
--danger: #ef4444;
--info: #3b82f6;
/* Text Hierarchy */
--text-primary: #f1f5f9;
--text-secondary: #cbd5e1;
--text-muted: #64748b;
/* Borders & Shadows - Softer */
--border: rgba(148,163,184,.1);
--border-accent: rgba(99,102,241,.3);
--shadow: 0 20px 50px rgba(0,0,0,.4);
--shadow-md: 0 10px 30px rgba(0,0,0,.3);
--shadow-sm: 0 4px 15px rgba(0,0,0,.2);
/* Border Radius - More rounded */
--radius: 16px;
--radius-sm: 12px;
--radius-xs: 8px;
/* Smooth Transitions */
--transition: .25s cubic-bezier(.4,0,.2,1);
/* Agent Colors - Brighter, More Distinct */
--agent-orchestrator: #8b5cf6;
--agent-researcher: #14b8a6;
--agent-negotiator: #f43f5e;
--agent-ar_manager: #fbbf24;
--agent-default: #38bdf8;
--agent-ar_manager: #f59e0b;
--agent-default: #3b82f6;
}
/* ── Reset & Base ─────────────────────────────────────────────────────────── */
@ -47,13 +63,16 @@ body {
min-height: 100vh;
background: var(--bg-base);
background-image:
radial-gradient(ellipse 80% 50% at 50% -10%, rgba(124,111,255,.12) 0%, transparent 60%),
radial-gradient(ellipse 40% 30% at 90% 80%, rgba(6,214,160,.06) 0%, transparent 50%);
radial-gradient(ellipse 100% 60% at 50% -20%, rgba(99,102,241,.08) 0%, transparent 70%),
radial-gradient(ellipse 60% 40% at 10% 100%, rgba(20,184,166,.05) 0%, transparent 60%),
radial-gradient(ellipse 50% 50% at 90% 10%, rgba(139,92,246,.04) 0%, transparent 50%);
color: var(--text-primary);
font-family: 'Inter', 'Segoe UI', system-ui, sans-serif;
font-family: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif;
font-size: .9375rem;
line-height: 1.65;
line-height: 1.7;
font-weight: 400;
-webkit-font-smoothing: antialiased;
letter-spacing: -0.01em;
}
/* ── Scrollbar ────────────────────────────────────────────────────────────── */
@ -68,41 +87,46 @@ body {
.navbar {
background: var(--bg-glass) !important;
border-bottom: 1px solid var(--border);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
padding: .6rem 0;
backdrop-filter: blur(24px) saturate(180%);
-webkit-backdrop-filter: blur(24px) saturate(180%);
padding: .8rem 0;
position: sticky;
top: 0;
z-index: 1000;
box-shadow: 0 1px 3px rgba(0,0,0,.1);
}
.navbar-brand {
font-weight: 700;
font-size: 1rem;
font-size: 1.125rem;
color: var(--text-primary) !important;
letter-spacing: -.02em;
letter-spacing: -.03em;
display: flex;
align-items: center;
gap: .5rem;
gap: .625rem;
text-decoration: none;
transition: transform var(--transition);
}
.navbar-brand:hover {
transform: translateY(-1px);
}
.navbar-brand .brand-icon {
width: 28px;
height: 28px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border-radius: 8px;
width: 32px;
height: 32px;
background: linear-gradient(135deg, var(--accent) 0%, var(--accent2) 100%);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: .75rem;
box-shadow: 0 0 16px var(--accent-glow);
animation: brand-pulse 3s ease-in-out infinite;
font-size: .875rem;
box-shadow: 0 4px 12px var(--accent-glow);
}
@keyframes brand-pulse {
0%, 100% { box-shadow: 0 0 16px var(--accent-glow); }
50% { box-shadow: 0 0 28px var(--accent-glow), 0 0 8px var(--accent2-glow); }
0%, 100% { box-shadow: 0 4px 12px var(--accent-glow); }
50% { box-shadow: 0 6px 20px var(--accent-glow); }
}
.nav-link {
@ -177,22 +201,24 @@ body {
.card {
background: var(--bg-surface);
border: 1px solid var(--border);
border: 1px solid rgba(148,163,184,.12);
border-radius: var(--radius);
box-shadow: var(--shadow-sm);
box-shadow: 0 4px 20px rgba(0,0,0,.15), 0 0 0 1px rgba(99,102,241,.03);
color: var(--text-primary);
transition: border-color var(--transition), box-shadow var(--transition), transform var(--transition);
transition: all var(--transition);
overflow: hidden;
backdrop-filter: blur(10px);
}
.card:hover {
border-color: rgba(124,111,255,.2);
box-shadow: var(--shadow);
border-color: rgba(99,102,241,.25);
box-shadow: 0 8px 30px rgba(0,0,0,.25), 0 0 0 1px rgba(99,102,241,.1);
transform: translateY(-2px);
}
.card-header {
background: var(--bg-elevated) !important;
border-bottom: 1px solid var(--border) !important;
background: linear-gradient(135deg, var(--bg-elevated) 0%, var(--bg-surface) 100%) !important;
border-bottom: 1px solid rgba(148,163,184,.1) !important;
color: var(--text-primary) !important;
padding: .85rem 1.25rem;
font-weight: 600;
@ -293,26 +319,28 @@ body {
}
.btn-primary {
background: linear-gradient(135deg, var(--accent), #6058d0);
background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dim) 100%);
color: #fff;
box-shadow: 0 2px 12px rgba(124,111,255,.3);
box-shadow: 0 4px 14px rgba(99,102,241,.35), 0 2px 4px rgba(99,102,241,.2);
font-weight: 600;
}
.btn-primary:hover {
background: linear-gradient(135deg, var(--accent-light), var(--accent));
box-shadow: 0 4px 20px rgba(124,111,255,.45);
transform: translateY(-1px);
background: linear-gradient(135deg, var(--accent-light) 0%, var(--accent) 100%);
box-shadow: 0 6px 20px rgba(99,102,241,.5), 0 2px 6px rgba(99,102,241,.3);
transform: translateY(-2px);
color: #fff;
}
.btn-success {
background: linear-gradient(135deg, #059669, var(--success));
background: linear-gradient(135deg, #0d9488 0%, var(--success) 100%);
color: #fff;
box-shadow: 0 2px 12px rgba(6,214,160,.25);
box-shadow: 0 4px 14px rgba(16,185,129,.3);
font-weight: 600;
}
.btn-success:hover {
background: linear-gradient(135deg, #06d6a0, #059669);
box-shadow: 0 4px 20px rgba(6,214,160,.4);
transform: translateY(-1px);
background: linear-gradient(135deg, var(--accent2) 0%, #0d9488 100%);
box-shadow: 0 6px 20px rgba(20,184,166,.45);
transform: translateY(-2px);
color: #fff;
}
@ -386,22 +414,25 @@ body {
.form-control,
.form-select {
background: var(--bg-elevated);
border: 1px solid var(--border);
background: rgba(30,35,54,.6);
border: 1.5px solid rgba(148,163,184,.15);
border-radius: var(--radius-sm);
color: var(--text-primary);
padding: .55rem .9rem;
padding: .625rem 1rem;
font-size: .875rem;
transition: border-color var(--transition), box-shadow var(--transition);
font-weight: 500;
transition: all var(--transition);
backdrop-filter: blur(8px);
}
.form-control:focus,
.form-select:focus {
background: var(--bg-elevated);
background: rgba(30,35,54,.8);
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-glow);
box-shadow: 0 0 0 4px rgba(99,102,241,.12), 0 2px 8px rgba(99,102,241,.2);
color: var(--text-primary);
outline: none;
transform: translateY(-1px);
}
.form-control::placeholder { color: var(--text-muted); }
@ -458,21 +489,24 @@ textarea.form-control { resize: vertical; min-height: 80px; }
/* ── Badges ───────────────────────────────────────────────────────────────── */
.badge {
padding: .28em .65em;
border-radius: 5px;
font-size: .68rem;
padding: .35em .75em;
border-radius: 8px;
font-size: .7rem;
font-weight: 600;
letter-spacing: .05em;
letter-spacing: .04em;
text-transform: uppercase;
display: inline-flex;
align-items: center;
gap: .25rem;
}
.bg-primary { background: rgba(124,111,255,.25) !important; color: var(--accent-light) !important; border: 1px solid rgba(124,111,255,.3); }
.bg-success { background: rgba(6,214,160,.2) !important; color: #34d399 !important; border: 1px solid rgba(6,214,160,.3); }
.bg-warning { background: rgba(251,191,36,.2) !important; color: #fbbf24 !important; border: 1px solid rgba(251,191,36,.3); }
.bg-danger { background: rgba(244,63,94,.2) !important; color: #f87171 !important; border: 1px solid rgba(244,63,94,.3); }
.bg-info { background: rgba(56,189,248,.2) !important; color: #38bdf8 !important; border: 1px solid rgba(56,189,248,.3); }
.bg-secondary { background: var(--bg-elevated) !important; color: var(--text-muted) !important; border: 1px solid var(--border); }
.bg-dark { background: rgba(0,0,0,.4) !important; color: var(--text-secondary) !important; border: 1px solid var(--border); }
.bg-primary { background: rgba(99,102,241,.2) !important; color: #a5b4fc !important; border: 1px solid rgba(99,102,241,.35); box-shadow: 0 2px 8px rgba(99,102,241,.15); }
.bg-success { background: rgba(16,185,129,.2) !important; color: #6ee7b7 !important; border: 1px solid rgba(16,185,129,.35); box-shadow: 0 2px 8px rgba(16,185,129,.15); }
.bg-warning { background: rgba(245,158,11,.2) !important; color: #fcd34d !important; border: 1px solid rgba(245,158,11,.35); box-shadow: 0 2px 8px rgba(245,158,11,.15); }
.bg-danger { background: rgba(239,68,68,.2) !important; color: #fca5a5 !important; border: 1px solid rgba(239,68,68,.35); box-shadow: 0 2px 8px rgba(239,68,68,.15); }
.bg-info { background: rgba(59,130,246,.2) !important; color: #93c5fd !important; border: 1px solid rgba(59,130,246,.35); box-shadow: 0 2px 8px rgba(59,130,246,.15); }
.bg-secondary { background: rgba(100,116,139,.15) !important; color: var(--text-secondary) !important; border: 1px solid rgba(100,116,139,.25); }
.bg-dark { background: rgba(15,23,42,.6) !important; color: var(--text-secondary) !important; border: 1px solid rgba(100,116,139,.2); }
/* ── Alerts ───────────────────────────────────────────────────────────────── */