|
|
.App { |
|
|
display: flex; |
|
|
height: 100vh; |
|
|
width: 100vw; |
|
|
background-color: #f8fafc; |
|
|
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
|
|
|
.sidebar { |
|
|
width: 280px; |
|
|
background: #ffffff; |
|
|
border-right: 1px solid #e2e8f0; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
transition: all 0.3s ease; |
|
|
z-index: 100; |
|
|
} |
|
|
|
|
|
.sidebar-closed .sidebar { |
|
|
margin-left: -280px; |
|
|
} |
|
|
|
|
|
.sidebar-header { |
|
|
padding: 20px; |
|
|
} |
|
|
|
|
|
.new-chat-btn { |
|
|
width: 100%; |
|
|
padding: 12px; |
|
|
background: #6366f1; |
|
|
color: white; |
|
|
border: none; |
|
|
border-radius: 12px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
gap: 10px; |
|
|
font-weight: 600; |
|
|
cursor: pointer; |
|
|
transition: all 0.2s; |
|
|
} |
|
|
|
|
|
.new-chat-btn:hover { |
|
|
background: #4f46e5; |
|
|
transform: translateY(-1px); |
|
|
} |
|
|
|
|
|
.sidebar-content { |
|
|
flex: 1; |
|
|
overflow-y: auto; |
|
|
padding: 10px 20px; |
|
|
} |
|
|
|
|
|
.sidebar-section { |
|
|
margin-bottom: 24px; |
|
|
} |
|
|
|
|
|
.section-title { |
|
|
font-size: 12px; |
|
|
font-weight: 700; |
|
|
color: #94a3b8; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.05em; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
margin-bottom: 12px; |
|
|
} |
|
|
|
|
|
.sessions-list { |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
gap: 4px; |
|
|
} |
|
|
|
|
|
.session-item { |
|
|
padding: 10px 12px; |
|
|
border-radius: 10px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 12px; |
|
|
cursor: pointer; |
|
|
transition: all 0.2s; |
|
|
color: #475569; |
|
|
position: relative; |
|
|
group: hover; |
|
|
} |
|
|
|
|
|
.session-item:hover { |
|
|
background: #f1f5f9; |
|
|
color: #1e293b; |
|
|
} |
|
|
|
|
|
.session-item.active { |
|
|
background: #eff6ff; |
|
|
color: #2563eb; |
|
|
font-weight: 500; |
|
|
} |
|
|
|
|
|
.session-title { |
|
|
font-size: 14px; |
|
|
white-space: nowrap; |
|
|
overflow: hidden; |
|
|
text-overflow: ellipsis; |
|
|
flex: 1; |
|
|
} |
|
|
|
|
|
.delete-session-btn { |
|
|
opacity: 0; |
|
|
background: transparent; |
|
|
border: none; |
|
|
color: #94a3b8; |
|
|
padding: 4px; |
|
|
border-radius: 4px; |
|
|
cursor: pointer; |
|
|
transition: all 0.2s; |
|
|
} |
|
|
|
|
|
.session-item:hover .delete-session-btn { |
|
|
opacity: 1; |
|
|
} |
|
|
|
|
|
.delete-session-btn:hover { |
|
|
background: #fee2e2; |
|
|
color: #ef4444; |
|
|
} |
|
|
|
|
|
.no-sessions { |
|
|
font-size: 13px; |
|
|
color: #94a3b8; |
|
|
text-align: center; |
|
|
padding: 20px 0; |
|
|
} |
|
|
|
|
|
.sidebar-footer { |
|
|
padding: 20px; |
|
|
border-top: 1px solid #e2e8f0; |
|
|
} |
|
|
|
|
|
.user-profile { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 12px; |
|
|
} |
|
|
|
|
|
.user-avatar { |
|
|
width: 36px; |
|
|
height: 36px; |
|
|
background: #6366f1; |
|
|
color: white; |
|
|
border-radius: 10px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
font-weight: 700; |
|
|
} |
|
|
|
|
|
.user-info { |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
} |
|
|
|
|
|
.user-name { |
|
|
font-size: 14px; |
|
|
font-weight: 600; |
|
|
color: #1e293b; |
|
|
} |
|
|
|
|
|
.user-status { |
|
|
font-size: 12px; |
|
|
color: #22c55e; |
|
|
} |
|
|
|
|
|
|
|
|
.main-content { |
|
|
flex: 1; |
|
|
display: flex; |
|
|
justify-content: center; |
|
|
align-items: center; |
|
|
padding: 20px; |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
|
|
|
.chat-container { |
|
|
background: white; |
|
|
border-radius: 24px; |
|
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.05); |
|
|
width: 100%; |
|
|
max-width: 1000px; |
|
|
height: 100%; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
overflow: hidden; |
|
|
border: 1px solid #e2e8f0; |
|
|
} |
|
|
|
|
|
.header-left { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 16px; |
|
|
} |
|
|
|
|
|
.sidebar-toggle { |
|
|
color: #64748b; |
|
|
} |
|
|
|
|
|
.chat-header { |
|
|
background: white; |
|
|
padding: 16px 24px; |
|
|
display: flex; |
|
|
justify-content: space-between; |
|
|
align-items: center; |
|
|
border-bottom: 1px solid #f1f5f9; |
|
|
} |
|
|
|
|
|
.header-content h1 { |
|
|
font-size: 18px; |
|
|
margin: 0 0 2px 0; |
|
|
color: #1e293b; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
font-weight: 700; |
|
|
} |
|
|
|
|
|
.header-icon { |
|
|
color: #6366f1; |
|
|
} |
|
|
|
|
|
.header-content p { |
|
|
font-size: 12px; |
|
|
color: #64748b; |
|
|
margin: 0; |
|
|
font-weight: 500; |
|
|
} |
|
|
|
|
|
.header-actions { |
|
|
display: flex; |
|
|
gap: 8px; |
|
|
align-items: center; |
|
|
} |
|
|
|
|
|
.uploaded-file-badge { |
|
|
background: #eff6ff; |
|
|
color: #3b82f6; |
|
|
padding: 6px 12px; |
|
|
border-radius: 20px; |
|
|
font-size: 12px; |
|
|
font-weight: 600; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 6px; |
|
|
border: 1px solid #dbeafe; |
|
|
max-width: 200px; |
|
|
} |
|
|
|
|
|
.file-name { |
|
|
white-space: nowrap; |
|
|
overflow: hidden; |
|
|
text-overflow: ellipsis; |
|
|
} |
|
|
|
|
|
.remove-file-btn { |
|
|
background: transparent; |
|
|
border: none; |
|
|
color: #93c5fd; |
|
|
cursor: pointer; |
|
|
padding: 2px; |
|
|
border-radius: 50%; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
transition: all 0.2s; |
|
|
margin-left: 4px; |
|
|
flex-shrink: 0; |
|
|
} |
|
|
|
|
|
.remove-file-btn:hover { |
|
|
background: #dbeafe; |
|
|
color: #2563eb; |
|
|
} |
|
|
|
|
|
.btn-icon { |
|
|
background: transparent; |
|
|
border: none; |
|
|
color: #64748b; |
|
|
width: 36px; |
|
|
height: 36px; |
|
|
border-radius: 10px; |
|
|
cursor: pointer; |
|
|
transition: all 0.2s; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
} |
|
|
|
|
|
.btn-icon:hover { |
|
|
background: #f1f5f9; |
|
|
color: #1e293b; |
|
|
} |
|
|
|
|
|
.messages-container { |
|
|
flex: 1; |
|
|
overflow-y: auto; |
|
|
padding: 24px; |
|
|
background: #ffffff; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
gap: 24px; |
|
|
} |
|
|
|
|
|
.message { |
|
|
display: flex; |
|
|
gap: 16px; |
|
|
animation: fadeIn 0.3s ease-out; |
|
|
max-width: 85%; |
|
|
} |
|
|
|
|
|
.message.user { |
|
|
align-self: flex-end; |
|
|
flex-direction: row-reverse; |
|
|
} |
|
|
|
|
|
.message.assistant { |
|
|
align-self: flex-start; |
|
|
} |
|
|
|
|
|
.message.system { |
|
|
align-self: center; |
|
|
max-width: 100%; |
|
|
background: #f8fafc; |
|
|
padding: 8px 16px; |
|
|
border-radius: 12px; |
|
|
border: 1px solid #e2e8f0; |
|
|
font-size: 13px; |
|
|
color: #64748b; |
|
|
} |
|
|
|
|
|
.message.error { |
|
|
align-self: center; |
|
|
max-width: 100%; |
|
|
background: #fef2f2; |
|
|
color: #ef4444; |
|
|
padding: 10px 20px; |
|
|
border-radius: 20px; |
|
|
border: 1px solid #fee2e2; |
|
|
} |
|
|
|
|
|
@keyframes fadeIn { |
|
|
from { opacity: 0; transform: translateY(10px); } |
|
|
to { opacity: 1; transform: translateY(0); } |
|
|
} |
|
|
|
|
|
.message-avatar { |
|
|
width: 36px; |
|
|
height: 36px; |
|
|
border-radius: 10px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
flex-shrink: 0; |
|
|
} |
|
|
|
|
|
.message.assistant .message-avatar { |
|
|
background: #e0e7ff; |
|
|
color: #6366f1; |
|
|
} |
|
|
|
|
|
.message.user .message-avatar { |
|
|
background: #f1f5f9; |
|
|
color: #475569; |
|
|
} |
|
|
|
|
|
.message.system .message-avatar { |
|
|
display: none; |
|
|
} |
|
|
|
|
|
.message.error .message-avatar { |
|
|
background: transparent; |
|
|
color: #ef4444; |
|
|
} |
|
|
|
|
|
.message-content { |
|
|
padding: 12px 16px; |
|
|
border-radius: 16px; |
|
|
font-size: 15px; |
|
|
line-height: 1.6; |
|
|
position: relative; |
|
|
word-wrap: break-word; |
|
|
} |
|
|
|
|
|
.message.user .message-content { |
|
|
background: #6366f1; |
|
|
color: white; |
|
|
border-bottom-right-radius: 4px; |
|
|
} |
|
|
|
|
|
.message.assistant .message-content { |
|
|
background: #f8fafc; |
|
|
color: #1e293b; |
|
|
border: 1px solid #e2e8f0; |
|
|
border-bottom-left-radius: 4px; |
|
|
} |
|
|
|
|
|
|
|
|
.message-content p { |
|
|
margin: 0 0 10px 0; |
|
|
} |
|
|
|
|
|
.message-content p:last-child { |
|
|
margin-bottom: 0; |
|
|
} |
|
|
|
|
|
.message-content strong { |
|
|
font-weight: 600; |
|
|
} |
|
|
|
|
|
.message-content ul, .message-content ol { |
|
|
margin: 10px 0; |
|
|
padding-left: 24px; |
|
|
} |
|
|
|
|
|
.message-content li { |
|
|
margin-bottom: 6px; |
|
|
} |
|
|
|
|
|
.message-content code { |
|
|
font-family: 'Menlo', 'Monaco', 'Courier New', monospace; |
|
|
font-size: 0.9em; |
|
|
padding: 2px 6px; |
|
|
border-radius: 4px; |
|
|
} |
|
|
|
|
|
.message.assistant .message-content code { |
|
|
background: #e2e8f0; |
|
|
color: #1e293b; |
|
|
} |
|
|
|
|
|
.message.user .message-content code { |
|
|
background: rgba(255, 255, 255, 0.2); |
|
|
color: white; |
|
|
} |
|
|
|
|
|
.message-content pre { |
|
|
background: #1e293b; |
|
|
color: #f8fafc; |
|
|
padding: 12px; |
|
|
border-radius: 8px; |
|
|
overflow-x: auto; |
|
|
margin: 10px 0; |
|
|
} |
|
|
|
|
|
.message-content pre code { |
|
|
background: transparent; |
|
|
color: inherit; |
|
|
padding: 0; |
|
|
} |
|
|
|
|
|
.message-content blockquote { |
|
|
border-left: 4px solid #cbd5e1; |
|
|
margin: 10px 0; |
|
|
padding-left: 12px; |
|
|
color: #64748b; |
|
|
font-style: italic; |
|
|
} |
|
|
|
|
|
|
|
|
.message-content.loading { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 10px; |
|
|
color: #64748b; |
|
|
font-style: italic; |
|
|
} |
|
|
|
|
|
.spinner { |
|
|
animation: spin 1s linear infinite; |
|
|
} |
|
|
|
|
|
@keyframes spin { |
|
|
from { transform: rotate(0deg); } |
|
|
to { transform: rotate(360deg); } |
|
|
} |
|
|
|
|
|
|
|
|
.example-queries { |
|
|
padding: 12px 24px; |
|
|
display: flex; |
|
|
gap: 8px; |
|
|
overflow-x: auto; |
|
|
background: white; |
|
|
border-top: 1px solid #f1f5f9; |
|
|
scrollbar-width: none; |
|
|
} |
|
|
|
|
|
.example-queries::-webkit-scrollbar { |
|
|
display: none; |
|
|
} |
|
|
|
|
|
.example-query { |
|
|
background: white; |
|
|
border: 1px solid #e2e8f0; |
|
|
padding: 6px 12px; |
|
|
border-radius: 10px; |
|
|
font-size: 13px; |
|
|
color: #475569; |
|
|
cursor: pointer; |
|
|
white-space: nowrap; |
|
|
transition: all 0.2s; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 6px; |
|
|
} |
|
|
|
|
|
.example-query:hover { |
|
|
background: #f8fafc; |
|
|
border-color: #cbd5e1; |
|
|
color: #1e293b; |
|
|
transform: translateY(-1px); |
|
|
} |
|
|
|
|
|
.example-query svg { |
|
|
color: #6366f1; |
|
|
} |
|
|
|
|
|
|
|
|
.input-container { |
|
|
padding: 20px 24px; |
|
|
background: white; |
|
|
border-top: 1px solid #f1f5f9; |
|
|
display: flex; |
|
|
gap: 12px; |
|
|
align-items: center; |
|
|
} |
|
|
|
|
|
.chat-input { |
|
|
flex: 1; |
|
|
padding: 12px 16px; |
|
|
border: 1px solid #e2e8f0; |
|
|
border-radius: 12px; |
|
|
font-size: 15px; |
|
|
outline: none; |
|
|
transition: all 0.2s; |
|
|
background: #f8fafc; |
|
|
} |
|
|
|
|
|
.chat-input:focus { |
|
|
border-color: #6366f1; |
|
|
background: white; |
|
|
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); |
|
|
} |
|
|
|
|
|
.send-button { |
|
|
background: #6366f1; |
|
|
color: white; |
|
|
border: none; |
|
|
width: 44px; |
|
|
height: 44px; |
|
|
border-radius: 12px; |
|
|
cursor: pointer; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
transition: all 0.2s; |
|
|
} |
|
|
|
|
|
.send-button:hover:not(:disabled) { |
|
|
background: #4f46e5; |
|
|
transform: translateY(-1px); |
|
|
} |
|
|
|
|
|
.send-button:disabled { |
|
|
background: #e2e8f0; |
|
|
cursor: not-allowed; |
|
|
} |
|
|
|
|
|
|
|
|
@media (max-width: 768px) { |
|
|
.sidebar { |
|
|
position: fixed; |
|
|
height: 100vh; |
|
|
box-shadow: 20px 0 50px rgba(0,0,0,0.1); |
|
|
} |
|
|
|
|
|
.main-content { |
|
|
padding: 0; |
|
|
} |
|
|
|
|
|
.chat-container { |
|
|
border-radius: 0; |
|
|
border: none; |
|
|
} |
|
|
|
|
|
.message { |
|
|
max-width: 90%; |
|
|
} |
|
|
} |
|
|
|
|
|
|