/* MVM² Senior UI Design System - Linear/Vercel Inspired */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); :root { --bg-color: #0f172a; --card-bg: rgba(30, 41, 59, 0.7); --primary: #6366f1; --primary-glow: rgba(99, 102, 241, 0.3); --success: #10b981; --success-glow: rgba(16, 185, 129, 0.2); --warning: #f59e0b; --warning-glow: rgba(245, 158, 11, 0.2); --border: rgba(255, 255, 255, 0.1); --text-main: #f8f9fa; --text-muted: #94a3b8; } body, .gradio-container { background-color: var(--bg-color) !important; color: var(--text-main) !important; font-family: 'Inter', sans-serif !important; } /* Glassmorphism Cards */ .glass-card { background: var(--card-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid var(--border); border-radius: 16px; padding: 24px; transition: all 0.3s ease; } .glass-card:hover { border-color: var(--primary); box-shadow: 0 0 20px var(--primary-glow); } /* Typography Enhancements */ h1 { font-weight: 700; letter-spacing: -0.025em; color: #fff; } h2 { font-weight: 600; color: var(--text-main); } .monospace { font-family: 'JetBrains Mono', monospace !important; font-size: 0.9em; } /* Custom Accordion Styling */ .reasoning-step { margin-bottom: 8px; padding: 12px; border-radius: 8px; background: rgba(255, 255, 255, 0.03); border-left: 4px solid var(--text-muted); transition: transform 0.2s ease; } .step-valid { border-left-color: var(--success); background: var(--success-glow); box-shadow: inset 0 0 10px rgba(16, 185, 129, 0.1); } .step-warning { border-left-color: var(--warning); background: var(--warning-glow); } /* Animated Gauges */ .gauge-container { display: flex; flex-direction: column; align-items: center; gap: 12px; } .circle-bg { fill: none; stroke: rgba(255,255,255,0.05); stroke-width: 8; } .circle-progress { fill: none; stroke-width: 8; stroke-linecap: round; transition: stroke-dashoffset 1s ease-in-out; } @keyframes dash { from { stroke-dashoffset: 251.2; } } /* Signal Intel Panel */ .signal-panel { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 20px; } /* Download Button Animation */ .download-btn { background: linear-gradient(135deg, var(--primary) 0%, #4338ca 100%) !important; border: none !important; color: white !important; font-weight: 600 !important; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important; } .download-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px var(--primary-glow); filter: brightness(1.1); } /* Preprocessing Preview */ .preview-img img { border-radius: 12px; border: 1px solid var(--border); filter: drop-shadow(0 4px 6px rgba(0,0,0,0.3)); } .status-box { margin-top: 20px !important; border-left: 4px solid var(--primary) !important; } /* Architecture Flow Animations */ .flow-line { stroke-dasharray: 1000; stroke-dashoffset: 1000; animation: none; } .active-pulse { stroke-dashoffset: 0; animation: pulse-flow 2s infinite linear; stroke: var(--primary) !important; opacity: 1; } @keyframes pulse-flow { 0% { stroke-dashoffset: 1000; opacity: 0.3; } 50% { opacity: 1; } 100% { stroke-dashoffset: 0; opacity: 0.3; } } .thinking circle { animation: thinking-pulse 1.5s infinite ease-in-out; } @keyframes thinking-pulse { 0%, 100% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.1); opacity: 1; filter: brightness(1.2); } } .thinking { transform-origin: 450px 175px; } /* Gradio Overrides */ .stButton button { border-radius: 10px !important; } .stMarkdown { color: var(--text-main) !important; } input, textarea { background: rgba(15, 23, 42, 0.6) !important; border: 1px solid var(--border) !important; color: white !important; border-radius: 8px !important; } input:focus, textarea:focus { border-color: var(--primary) !important; } /* Responsive Adjustments */ @media (max-width: 768px) { .signal-panel { grid-template-columns: 1fr; } }