Spaces:
Sleeping
Sleeping
| .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 ; | |
| transform: translateX(-100%); | |
| } | |
| .sidebar.open { | |
| transform: translateX(0); | |
| box-shadow: var(--shadow-xl); | |
| } | |
| } |