/* ======================================== AI STATION - PERPLEXITY STYLE UI ======================================== */ /* === ROOT VARIABLES === */ :root { /* Palette principale (blu professionale) */ --primary-color: #6366F1; --primary-hover: #4F46E5; --primary-light: #818CF8; /* Background dark mode */ --bg-primary: #0F172A; --bg-secondary: #1E293B; --bg-tertiary: #334155; /* Text colors */ --text-primary: #F1F5F9; --text-secondary: #94A3B8; --text-muted: #64748B; /* Accent colors */ --accent-green: #10B981; --accent-red: #EF4444; --accent-yellow: #F59E0B; /* Shadows */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5); /* Border radius */ --radius-sm: 0.375rem; --radius-md: 0.5rem; --radius-lg: 0.75rem; --radius-xl: 1rem; } /* === BODY & LAYOUT === */ body { background: var(--bg-primary) !important; color: var(--text-primary) !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* === HEADER === */ #app-header { background: var(--bg-secondary) !important; border-bottom: 1px solid var(--bg-tertiary) !important; backdrop-filter: blur(10px); box-shadow: var(--shadow-sm); } /* Logo styling */ #app-header img[alt="logo"] { border-radius: var(--radius-md); transition: transform 0.2s ease; } #app-header img[alt="logo"]:hover { transform: scale(1.05); } /* === SIDEBAR === */ #chat-history-sidebar { background: var(--bg-secondary) !important; border-right: 1px solid var(--bg-tertiary) !important; } /* Thread items in sidebar */ .thread-item { border-radius: var(--radius-md) !important; margin: 0.25rem 0.5rem !important; transition: all 0.2s ease !important; } .thread-item:hover { background: var(--bg-tertiary) !important; transform: translateX(4px); } .thread-item.active { background: var(--primary-color) !important; color: white !important; } /* === CHAT CONTAINER === */ #chat-container { background: var(--bg-primary) !important; max-width: 1200px; margin: 0 auto; padding: 1.5rem; } /* === MESSAGES === */ /* User message */ .user-message { background: var(--bg-tertiary) !important; border-radius: var(--radius-lg) !important; padding: 1rem 1.25rem !important; margin: 0.75rem 0 !important; box-shadow: var(--shadow-sm); border-left: 3px solid var(--primary-color); } /* Assistant message */ .assistant-message { background: var(--bg-secondary) !important; border-radius: var(--radius-lg) !important; padding: 1rem 1.25rem !important; margin: 0.75rem 0 !important; box-shadow: var(--shadow-md); } /* Message avatars */ .message-avatar { border-radius: 50% !important; box-shadow: var(--shadow-sm); border: 2px solid var(--bg-tertiary); } /* === CODE BLOCKS === */ pre { background: #1E1E1E !important; border-radius: var(--radius-md) !important; padding: 1rem !important; border: 1px solid var(--bg-tertiary) !important; box-shadow: var(--shadow-md); overflow-x: auto; } code { font-family: 'Monaco', 'Menlo', 'Courier New', monospace !important; font-size: 0.9rem !important; color: #E5E7EB !important; } /* Inline code */ :not(pre) > code { background: var(--bg-tertiary) !important; padding: 0.2rem 0.4rem !important; border-radius: var(--radius-sm) !important; color: var(--primary-light) !important; } /* === TABLES === */ table { width: 100% !important; border-collapse: separate !important; border-spacing: 0 !important; border-radius: var(--radius-md) !important; overflow: hidden !important; box-shadow: var(--shadow-md); margin: 1rem 0 !important; } thead { background: var(--bg-tertiary) !important; } thead th { padding: 0.75rem 1rem !important; text-align: left !important; font-weight: 600 !important; color: var(--text-primary) !important; border-bottom: 2px solid var(--primary-color) !important; } tbody tr { background: var(--bg-secondary) !important; transition: background 0.2s ease; } tbody tr:hover { background: var(--bg-tertiary) !important; } tbody td { padding: 0.75rem 1rem !important; border-bottom: 1px solid var(--bg-tertiary) !important; color: var(--text-secondary) !important; } /* === INPUT AREA === */ #chat-input-container { background: var(--bg-secondary) !important; border-radius: var(--radius-xl) !important; padding: 1rem !important; box-shadow: var(--shadow-lg); border: 1px solid var(--bg-tertiary) !important; } #chat-input { background: var(--bg-tertiary) !important; color: var(--text-primary) !important; border: none !important; border-radius: var(--radius-lg) !important; padding: 0.75rem 1rem !important; font-size: 1rem !important; resize: none !important; transition: all 0.2s ease; } #chat-input:focus { outline: 2px solid var(--primary-color) !important; outline-offset: 2px; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } /* Send button */ #send-button { background: var(--primary-color) !important; color: white !important; border-radius: var(--radius-md) !important; padding: 0.75rem 1.5rem !important; font-weight: 600 !important; transition: all 0.2s ease !important; border: none !important; box-shadow: var(--shadow-md); } #send-button:hover { background: var(--primary-hover) !important; transform: translateY(-2px); box-shadow: var(--shadow-lg); } #send-button:active { transform: translateY(0); } /* === SETTINGS PANEL === */ .settings-panel { background: var(--bg-secondary) !important; border-radius: var(--radius-lg) !important; padding: 1.5rem !important; box-shadow: var(--shadow-lg); border: 1px solid var(--bg-tertiary) !important; } .settings-item { margin: 1rem 0 !important; padding: 0.75rem !important; background: var(--bg-tertiary) !important; border-radius: var(--radius-md) !important; transition: background 0.2s ease; } .settings-item:hover { background: rgba(99, 102, 241, 0.1) !important; } /* Sliders */ input[type="range"] { -webkit-appearance: none; appearance: none; width: 100%; height: 6px; border-radius: 3px; background: var(--bg-tertiary); outline: none; } input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 18px; height: 18px; border-radius: 50%; background: var(--primary-color); cursor: pointer; box-shadow: var(--shadow-md); transition: all 0.2s ease; } input[type="range"]::-webkit-slider-thumb:hover { background: var(--primary-hover); transform: scale(1.1); } /* === BUTTONS === */ button { border-radius: var(--radius-md) !important; font-weight: 500 !important; transition: all 0.2s ease !important; } button:hover { transform: translateY(-1px); } /* Primary button */ .button-primary { background: var(--primary-color) !important; color: white !important; } /* Secondary button */ .button-secondary { background: var(--bg-tertiary) !important; color: var(--text-primary) !important; } /* === FILE UPLOAD === */ .file-upload-area { border: 2px dashed var(--bg-tertiary) !important; border-radius: var(--radius-lg) !important; padding: 2rem !important; background: var(--bg-secondary) !important; transition: all 0.3s ease !important; } .file-upload-area:hover { border-color: var(--primary-color) !important; background: rgba(99, 102, 241, 0.05) !important; } .file-upload-area.dragging { border-color: var(--primary-color) !important; background: rgba(99, 102, 241, 0.1) !important; transform: scale(1.02); } /* === BADGES & TAGS === */ .badge { display: inline-block; padding: 0.25rem 0.75rem; border-radius: var(--radius-sm); font-size: 0.875rem; font-weight: 600; margin: 0.25rem; } .badge-admin { background: var(--accent-red); color: white; } .badge-business { background: var(--accent-green); color: white; } .badge-engineering { background: var(--primary-color); color: white; } .badge-architecture { background: var(--accent-yellow); color: var(--bg-primary); } /* === LOADING ANIMATION === */ .loading-dots { display: inline-flex; gap: 0.25rem; } .loading-dots span { width: 8px; height: 8px; border-radius: 50%; background: var(--primary-color); animation: pulse 1.4s ease-in-out infinite; } .loading-dots span:nth-child(2) { animation-delay: 0.2s; } .loading-dots span:nth-child(3) { animation-delay: 0.4s; } @keyframes pulse { 0%, 100% { opacity: 0.3; transform: scale(0.8); } 50% { opacity: 1; transform: scale(1); } } /* === SCROLLBAR CUSTOM === */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--bg-secondary); } ::-webkit-scrollbar-thumb { background: var(--bg-tertiary); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--primary-color); } /* === RESPONSIVE === */ @media (max-width: 768px) { #chat-container { padding: 0.75rem; } .user-message, .assistant-message { padding: 0.75rem !important; } #app-header { padding: 0.75rem !important; } } /* === ANIMATIONS === */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .message { animation: fadeIn 0.3s ease; } /* === TOOLTIPS === */ .tooltip { position: relative; display: inline-block; } .tooltip .tooltiptext { visibility: hidden; background-color: var(--bg-tertiary); color: var(--text-primary); text-align: center; border-radius: var(--radius-sm); padding: 0.5rem 0.75rem; position: absolute; z-index: 1; bottom: 125%; left: 50%; transform: translateX(-50%); opacity: 0; transition: opacity 0.3s; font-size: 0.875rem; white-space: nowrap; box-shadow: var(--shadow-md); } .tooltip:hover .tooltiptext { visibility: visible; opacity: 1; }