Spaces:
Sleeping
Sleeping
| @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&display=swap'); | |
| @import url('https://fonts.googleapis.com/css2?family=Computer+Modern+Serif:wght@400;500;600;700&display=swap'); | |
| :root { | |
| --bg: #ffffff; | |
| --text: #0b0b0d; | |
| --muted: #6b7280; | |
| --border: #e5e7eb; | |
| --panel: #f7f7f8; | |
| --shadow: 0 14px 40px rgba(15, 23, 42, 0.08); | |
| --font-ui: 'Computer Modern Serif', serif; | |
| --font-brand: 'Playfair Display', serif; | |
| --font-mono: 'Computer Modern Serif', serif; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| margin: 0; | |
| font-family: var(--font-ui); | |
| color: var(--text); | |
| background: var(--bg); | |
| } | |
| #root { | |
| min-height: 100vh; | |
| } | |
| .app-shell { | |
| display: flex; | |
| min-height: 100vh; | |
| } | |
| .sidebar { | |
| width: 280px; | |
| background: #ffffff; | |
| border-right: 1px solid var(--border); | |
| padding: 24px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| transition: width 0.2s ease, padding 0.2s ease; | |
| } | |
| .sidebar.collapsed { | |
| width: 72px; | |
| padding: 16px 10px; | |
| overflow: hidden; | |
| } | |
| .sidebar.collapsed .brand { | |
| display: none; | |
| } | |
| .sidebar.collapsed .conversation-item { | |
| padding: 10px; | |
| } | |
| .sidebar.collapsed .conversation-item span, | |
| .sidebar.collapsed .conversation-item small { | |
| display: none; | |
| } | |
| .sidebar.collapsed .conversation-list, | |
| .sidebar.collapsed .primary { | |
| display: none; | |
| } | |
| .sidebar.collapsed .sidebar-header { | |
| align-items: center; | |
| } | |
| .sidebar-header { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| } | |
| .brand-row { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| } | |
| .mobile-header-row { | |
| display: none; | |
| } | |
| .icon-button { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| border: 1px solid var(--border); | |
| background: #ffffff; | |
| color: var(--text); | |
| padding: 8px 12px; | |
| border-radius: 999px; | |
| font-size: 0.9rem; | |
| } | |
| .sidebar.collapsed .icon-button { | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| .icon-button .icon { | |
| font-size: 1rem; | |
| } | |
| .conversation-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| overflow-y: auto; | |
| } | |
| .conversation-item { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| padding: 12px 14px; | |
| border-radius: 14px; | |
| border: 1px solid transparent; | |
| background: #ffffff; | |
| text-align: left; | |
| cursor: pointer; | |
| font-family: var(--font-ui); | |
| position: relative; | |
| } | |
| .conversation-item.active { | |
| border-color: var(--border); | |
| background: var(--panel); | |
| } | |
| .conversation-title { | |
| font-family: var(--font-ui); | |
| font-weight: 600; | |
| } | |
| .chat-title { | |
| font-family: var(--font-brand); | |
| font-size: 1.6rem; | |
| font-weight: 600; | |
| margin: 0; | |
| } | |
| .conversation-item small { | |
| color: var(--muted); | |
| } | |
| .conversation-item small { | |
| color: var(--muted); | |
| } | |
| .conversation-actions { | |
| display: none; | |
| position: absolute; | |
| right: 8px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| gap: 4px; | |
| } | |
| .conversation-item:hover .conversation-actions, | |
| .conversation-item.active .conversation-actions { | |
| display: flex; | |
| } | |
| .action-btn { | |
| background: transparent; | |
| border: 1px solid var(--border); | |
| border-radius: 6px; | |
| padding: 4px 6px; | |
| font-size: 0.8rem; | |
| cursor: pointer; | |
| } | |
| .action-btn.delete { | |
| color: #dc2626; | |
| } | |
| .action-btn.delete:hover { | |
| background: #fef2f2; | |
| border-color: #dc2626; | |
| } | |
| .chat-panel { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| min-width: 0; | |
| } | |
| .chat-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 20px; | |
| padding: 24px 32px 8px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .chat-title { | |
| font-family: var(--font-brand); | |
| font-size: 1.6rem; | |
| font-weight: 600; | |
| margin: 0; | |
| } | |
| .header-spacer { | |
| flex: 1; | |
| } | |
| .sign-out-button { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 8px; | |
| border: 1px solid transparent; | |
| background: transparent; | |
| color: var(--muted); | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .sign-out-button:hover { | |
| background: var(--panel); | |
| color: #dc2626; | |
| border-color: #fecaca; | |
| } | |
| .sign-out-button:active { | |
| transform: scale(0.95); | |
| } | |
| .conversation-title { | |
| font-family: var(--font-ui); | |
| font-weight: 600; | |
| font-size: 0.9rem; | |
| } | |
| .message-list { | |
| flex: 1; | |
| padding: 24px 32px 32px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| overflow-y: auto; | |
| } | |
| .message-bubble { | |
| max-width: 68%; | |
| padding: 14px 20px; | |
| border-radius: 20px; | |
| background: var(--panel); | |
| line-height: 1.6; | |
| font-family: var(--font-mono); | |
| font-size: 0.95rem; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); | |
| animation: messageFade 0.3s ease-out; | |
| transition: transform 0.2s ease; | |
| } | |
| @keyframes messageFade { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .message-bubble:hover { | |
| transform: scale(1.01); | |
| } | |
| .message-text { | |
| white-space: normal; | |
| word-break: break-word; | |
| } | |
| .message-text p { | |
| margin: 0 0 12px 0; | |
| } | |
| .message-text ul { | |
| margin: 12px 0; | |
| padding-left: 24px; | |
| } | |
| .message-text li { | |
| margin-bottom: 8px; | |
| } | |
| .message-text strong { | |
| font-weight: 600; | |
| } | |
| .message-text em { | |
| font-style: italic; | |
| } | |
| .message-text a { | |
| color: inherit; | |
| text-decoration: underline; | |
| text-underline-offset: 3px; | |
| } | |
| .message-text pre { | |
| background: rgba(0, 0, 0, 0.05); | |
| border-radius: 4px; | |
| padding: 10px; | |
| overflow-x: auto; | |
| margin: 12px 0; | |
| font-size: 0.9rem; | |
| } | |
| .message-text .inline-code { | |
| background: rgba(0, 0, 0, 0.06); | |
| border-radius: 4px; | |
| padding: 2px 6px; | |
| font-family: 'Consolas', 'Monaco', 'Courier New', monospace; | |
| font-size: 0.85em; | |
| color: #e11d48; | |
| } | |
| .message-text .heading { | |
| margin: 16px 0 8px 0; | |
| font-weight: 700; | |
| line-height: 1.3; | |
| } | |
| .message-text .heading-1 { | |
| font-size: 1.4rem; | |
| margin-top: 20px; | |
| border-bottom: 2px solid #e5e7eb; | |
| padding-bottom: 4px; | |
| } | |
| .message-text .heading-2 { | |
| font-size: 1.15rem; | |
| color: #1f2937; | |
| } | |
| .message-text .heading-3 { | |
| font-size: 1.05rem; | |
| color: #374151; | |
| } | |
| .message-text .list-bullet { | |
| margin: 8px 0; | |
| padding-left: 24px; | |
| } | |
| .message-text .list-bullet li { | |
| margin-bottom: 6px; | |
| } | |
| .message-text .list-numbered { | |
| margin: 8px 0; | |
| padding-left: 24px; | |
| } | |
| .message-text .list-numbered li { | |
| margin-bottom: 6px; | |
| } | |
| .message-text .blockquote { | |
| border-left: 3px solid #d1d5db; | |
| margin: 12px 0; | |
| padding: 8px 16px; | |
| background: rgba(0, 0, 0, 0.02); | |
| border-radius: 0 6px 6px 0; | |
| color: #4b5563; | |
| font-style: italic; | |
| } | |
| .message-text .table-wrapper { | |
| margin: 12px 0; | |
| overflow-x: auto; | |
| border-radius: 8px; | |
| border: 1px solid #e5e7eb; | |
| } | |
| .message-text .data-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.9rem; | |
| } | |
| .message-text .data-table th { | |
| background: #f3f4f6; | |
| font-weight: 600; | |
| text-align: left; | |
| padding: 8px 12px; | |
| border-bottom: 2px solid #e5e7eb; | |
| } | |
| .message-text .data-table td { | |
| padding: 6px 12px; | |
| border-bottom: 1px solid #f3f4f6; | |
| } | |
| .message-text .data-table tr:last-child td { | |
| border-bottom: none; | |
| } | |
| .message-text .data-table tr:hover td { | |
| background: #fafafa; | |
| } | |
| .message-text .code-block-wrapper { | |
| margin: 12px 0; | |
| border-radius: 8px; | |
| overflow: hidden; | |
| border: 1px solid #e5e7eb; | |
| } | |
| .message-text .code-lang { | |
| background: #f3f4f6; | |
| padding: 4px 12px; | |
| font-size: 0.75rem; | |
| color: #6b7280; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| border-bottom: 1px solid #e5e7eb; | |
| } | |
| .message-text .code-block { | |
| background: #f9fafb; | |
| padding: 14px; | |
| margin: 0; | |
| overflow-x: auto; | |
| font-size: 0.85rem; | |
| line-height: 1.5; | |
| border-radius: 0; | |
| } | |
| .message-text .para { | |
| margin: 0 0 12px 0; | |
| line-height: 1.6; | |
| } | |
| .message-bubble.user { | |
| align-self: flex-end; | |
| background: #111827; | |
| color: #ffffff; | |
| border-bottom-right-radius: 4px; | |
| box-shadow: 0 4px 12px rgba(17, 24, 39, 0.15); | |
| } | |
| .message-bubble.assistant { | |
| align-self: flex-start; | |
| border-bottom-left-radius: 4px; | |
| border: 1px solid var(--border); | |
| } | |
| .thinking { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 10px; | |
| color: var(--muted); | |
| font-size: 0.95rem; | |
| } | |
| .thinking .dot { | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 999px; | |
| background: #111827; | |
| animation: pulse 1.2s ease-in-out infinite; | |
| } | |
| @keyframes pulse { | |
| 0% { | |
| transform: scale(1); | |
| opacity: 0.4; | |
| } | |
| 50% { | |
| transform: scale(1.2); | |
| opacity: 1; | |
| } | |
| 100% { | |
| transform: scale(1); | |
| opacity: 0.4; | |
| } | |
| } | |
| .composer { | |
| padding: 18px 32px 28px; | |
| border-top: 1px solid var(--border); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| background: #ffffff; | |
| } | |
| @keyframes spin { | |
| from { | |
| transform: rotate(0deg); | |
| } | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| .documents-container { | |
| position: relative; | |
| } | |
| .doc-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 8px; | |
| border: 1px solid var(--border); | |
| background: #ffffff; | |
| cursor: pointer; | |
| font-size: 1.2rem; | |
| transition: all 0.2s ease; | |
| position: relative; | |
| } | |
| .doc-btn:hover { | |
| background: var(--panel); | |
| border-color: #111827; | |
| } | |
| .doc-btn.active { | |
| background: #111827; | |
| color: #ffffff; | |
| border-color: #111827; | |
| } | |
| .doc-btn.has-selection { | |
| background: #e0e7ff; | |
| border-color: #4f46e5; | |
| } | |
| .doc-btn-icon { | |
| display: block; | |
| } | |
| .doc-badge { | |
| position: absolute; | |
| top: -8px; | |
| right: -8px; | |
| background: #dc2626; | |
| color: #ffffff; | |
| border-radius: 999px; | |
| width: 20px; | |
| height: 20px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| } | |
| .documents-box { | |
| background: #ffffff; | |
| border: 1px solid var(--border); | |
| border-radius: 12px; | |
| padding: 16px; | |
| width: 320px; | |
| box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); | |
| z-index: 70; | |
| } | |
| .documents-box-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 12px; | |
| } | |
| .header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .selected-count { | |
| background: #111827; | |
| color: #ffffff; | |
| padding: 2px 6px; | |
| border-radius: 3px; | |
| font-size: 0.8rem; | |
| } | |
| .clear-btn { | |
| background: transparent; | |
| border: 1px solid #e5e7eb; | |
| border-radius: 4px; | |
| padding: 4px 8px; | |
| font-size: 0.8rem; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .clear-btn:hover { | |
| background: #f3f4f6; | |
| border-color: #111827; | |
| } | |
| textarea { | |
| flex: 1; | |
| resize: none; | |
| border-radius: 14px; | |
| border: 1px solid var(--border); | |
| padding: 12px 14px; | |
| font-family: var(--font-ui); | |
| font-size: 1rem; | |
| color: var(--text); | |
| } | |
| textarea:focus { | |
| outline: none; | |
| border-color: #111827; | |
| } | |
| button { | |
| border: none; | |
| cursor: pointer; | |
| font-family: var(--font-ui); | |
| } | |
| button.primary { | |
| background: #111827; | |
| color: #ffffff; | |
| padding: 12px 18px; | |
| border-radius: 999px; | |
| font-weight: 600; | |
| } | |
| .send-icon { | |
| display: none; | |
| } | |
| button.primary:disabled { | |
| opacity: 0.6; | |
| cursor: not-allowed; | |
| } | |
| button.ghost { | |
| background: transparent; | |
| color: var(--text); | |
| border: 1px solid var(--border); | |
| padding: 8px 12px; | |
| border-radius: 999px; | |
| } | |
| .slash-commands-dropdown { | |
| width: 320px; | |
| } | |
| .mobile-only { | |
| display: none; | |
| } | |
| .desktop-only { | |
| display: inline-flex; | |
| } | |
| .desktop-new-chat { | |
| display: inline-flex; | |
| } | |
| .desktop-only { | |
| display: inline-flex; | |
| } | |
| @media (max-width: 900px) { | |
| .sidebar-header > .primary.new-chat-btn { | |
| display: flex; | |
| } | |
| .sidebar-header > .primary:not(.new-chat-btn) { | |
| display: none; | |
| } | |
| .sidebar { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| bottom: 0; | |
| width: 280px; | |
| height: 100vh; | |
| background: #ffffff; | |
| z-index: 20; | |
| padding: 24px; | |
| } | |
| .sidebar:not(.open) { | |
| display: none; | |
| } | |
| .brand-row { | |
| display: none; | |
| } | |
| .mobile-header-row { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| width: 100%; | |
| margin-bottom: 12px; | |
| } | |
| .new-chat-btn { | |
| flex: 1; | |
| margin-right: 8px; | |
| } | |
| .sidebar-backdrop { | |
| display: block; | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(0, 0, 0, 0.25); | |
| z-index: 10; | |
| } | |
| .mobile-only { | |
| display: inline-flex; | |
| } | |
| .desktop-only { | |
| display: none; | |
| } | |
| .icon-label { | |
| display: none; | |
| } | |
| .chat-header { | |
| flex-direction: row; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 16px 16px 8px ; | |
| } | |
| .chat-header button { | |
| flex-shrink: 0; | |
| } | |
| .chat-title { | |
| font-size: 1.1rem; | |
| } | |
| .message-list { | |
| padding: 16px 16px 20px ; | |
| gap: 12px; | |
| } | |
| .message-bubble { | |
| max-width: 100%; | |
| padding: 12px 14px; | |
| font-size: 0.95rem; | |
| } | |
| .thinking { | |
| font-size: 0.9rem; | |
| } | |
| .composer { | |
| gap: 8px; | |
| padding: 12px 16px 16px ; | |
| } | |
| textarea { | |
| min-height: 44px; | |
| font-size: 16px; | |
| } | |
| button.primary { | |
| padding: 0; | |
| width: 44px; | |
| height: 44px; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| flex-shrink: 0; | |
| } | |
| .send-label { | |
| display: none; | |
| } | |
| .send-icon { | |
| display: inline; | |
| } | |
| .slash-commands-dropdown { | |
| width: calc(100vw - 32px) ; | |
| left: 0 ; | |
| max-height: 40vh; | |
| overflow-y: auto; | |
| } | |
| } | |
| /* βββ Loading Screen βββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .loading-screen { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 100vh; | |
| background: var(--bg); | |
| } | |
| .loading-spinner { | |
| width: 32px; | |
| height: 32px; | |
| border: 3px solid var(--border); | |
| border-top-color: #111827; | |
| border-radius: 50%; | |
| animation: spin 0.7s linear infinite; | |
| } | |