.sidebar { grid-row: 2; background: var(--bg-secondary); border-right: 1px solid var(--border-subtle); display: flex; flex-direction: column; transition: width var(--transition-base), opacity var(--transition-base); overflow: hidden; } .sidebar.open { width: var(--sidebar-width); } .sidebar.closed { width: 0; border-right: none; } .sidebar-content { display: flex; flex-direction: column; height: 100%; padding: var(--space-4); min-width: var(--sidebar-width); overflow-y: auto; } /* New Chat Button */ .new-chat-btn { display: flex; align-items: center; justify-content: center; gap: var(--space-2); width: 100%; padding: var(--space-3); background: var(--accent-gradient); color: white; border: none; border-radius: var(--radius-md); font-size: var(--text-sm); font-weight: 600; cursor: pointer; transition: all var(--transition-fast); margin-bottom: var(--space-4); } .new-chat-btn:hover { opacity: 0.9; transform: translateY(-1px); box-shadow: var(--shadow-md); } /* Section Headers */ .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-3); } .section-header.clickable { cursor: pointer; padding: var(--space-2) 0; user-select: none; } .section-header.clickable:hover h3 { color: var(--text-primary); } .section-header h3 { font-size: var(--text-xs); font-weight: 600; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.05em; display: flex; align-items: center; gap: var(--space-2); } .chevron { transition: transform var(--transition-fast); } .chevron.open { transform: rotate(90deg); } .doc-count { font-size: var(--text-xs); font-weight: 500; color: var(--text-tertiary); background: var(--bg-tertiary); padding: var(--space-1) var(--space-2); border-radius: var(--radius-full); } /* Chat History */ .chat-history-section { flex: 1; display: flex; flex-direction: column; min-height: 0; margin-bottom: var(--space-4); } .conversation-list { flex: 1; display: flex; flex-direction: column; gap: 2px; overflow-y: auto; } .empty-conversations { display: flex; flex-direction: column; align-items: center; padding: var(--space-6) var(--space-4); text-align: center; color: var(--text-tertiary); } .empty-conversations p { font-size: var(--text-sm); color: var(--text-secondary); margin-bottom: var(--space-1); } .empty-conversations span { font-size: var(--text-xs); } .conversation-item { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border-radius: var(--radius-md); cursor: pointer; transition: all var(--transition-fast); } .conversation-item:hover { background: var(--bg-tertiary); } .conversation-item.active { background: var(--bg-elevated); border-left: 2px solid var(--accent-primary); } .conv-icon { color: var(--text-tertiary); flex-shrink: 0; } .conversation-item.active .conv-icon { color: var(--accent-primary); } .conv-info { flex: 1; min-width: 0; display: flex; flex-direction: column; } .conv-title { font-size: var(--text-sm); color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.4; } .conv-time { font-size: 10px; color: var(--text-tertiary); } .conv-delete { opacity: 0; transition: opacity var(--transition-fast); flex-shrink: 0; } .conversation-item:hover .conv-delete { opacity: 1; } /* Documents Section */ .documents-section { border-top: 1px solid var(--border-subtle); padding-top: var(--space-3); } /* Upload Zone */ .upload-zone { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-4) var(--space-3); border: 2px dashed var(--border-subtle); border-radius: var(--radius-lg); cursor: pointer; transition: all var(--transition-base); margin-bottom: var(--space-3); } .upload-zone:hover { border-color: var(--accent-primary); background: rgba(99, 102, 241, 0.05); } .upload-zone.dragging { border-color: var(--accent-primary); background: rgba(99, 102, 241, 0.1); border-style: solid; } .upload-icon { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: var(--bg-glass); border-radius: var(--radius-lg); color: var(--accent-primary); margin-bottom: var(--space-2); } .upload-text { font-size: var(--text-sm); font-weight: 500; color: var(--text-primary); margin-bottom: var(--space-1); } .upload-hint { font-size: var(--text-xs); color: var(--text-tertiary); } /* Upload Progress */ .upload-progress { padding: var(--space-3); background: var(--bg-tertiary); border-radius: var(--radius-md); margin-bottom: var(--space-3); } .progress-info { display: flex; justify-content: space-between; margin-bottom: var(--space-2); } .progress-name { font-size: var(--text-xs); color: var(--text-primary); max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .progress-status { font-size: var(--text-xs); color: var(--accent-primary); } .progress-bar { height: 4px; background: var(--bg-elevated); border-radius: var(--radius-full); overflow: hidden; } .progress-fill { height: 100%; background: var(--accent-gradient); border-radius: var(--radius-full); transition: width var(--transition-base); } /* Document List */ .document-list { display: flex; flex-direction: column; gap: var(--space-2); } .empty-docs { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-4); text-align: center; color: var(--text-tertiary); } .empty-docs p { font-size: var(--text-sm); color: var(--text-secondary); margin-bottom: var(--space-1); } .empty-docs span { font-size: var(--text-xs); } /* Document Item */ .document-item { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-2) var(--space-3); background: var(--bg-tertiary); border-radius: var(--radius-md); transition: all var(--transition-fast); animation: fadeInUp var(--transition-base) ease; } .document-item:hover { background: var(--bg-elevated); } .doc-icon { color: var(--text-tertiary); flex-shrink: 0; } .doc-info { flex: 1; min-width: 0; display: flex; flex-direction: column; } .doc-name { font-size: var(--text-sm); color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .doc-meta { font-size: var(--text-xs); color: var(--text-tertiary); } .status-icon { flex-shrink: 0; } .status-icon.uploading { color: var(--accent-primary); } .status-icon.ready { color: var(--success); } .status-icon.error { color: var(--error); } .doc-delete { opacity: 0; transition: opacity var(--transition-fast); } .document-item:hover .doc-delete { opacity: 1; } /* Clear Data */ .clear-data-section { margin-top: auto; padding-top: var(--space-4); border-top: 1px solid var(--border-subtle); } .clear-data-btn { width: 100%; color: var(--error); justify-content: center; gap: var(--space-2); } .clear-data-btn:hover { background: var(--error-bg); } @media (max-width: 768px) { .sidebar { position: fixed; top: var(--topnav-height); left: 0; bottom: 0; z-index: 50; width: 280px !important; transform: translateX(-100%); } .sidebar.open { transform: translateX(0); box-shadow: var(--shadow-xl); } }