Spaces:
Running
Running
| .root { | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| gap: 12px; | |
| } | |
| .toolbar { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| flex-shrink: 0; | |
| } | |
| .docCount { font-size: .85rem; color: var(--muted); white-space: nowrap; } | |
| .catFilter { max-width: 240px; } | |
| .clearBtn { | |
| background: transparent; | |
| color: var(--muted); | |
| font-size: .8rem; | |
| padding: 5px 12px; | |
| border: 1px solid var(--border); | |
| margin-left: auto; | |
| } | |
| .clearBtn:hover { color: var(--error); border-color: var(--error); } | |
| .thread { | |
| flex: 1; | |
| overflow-y: auto; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| padding: 4px 2px; | |
| } | |
| .empty { | |
| color: var(--muted); | |
| font-size: .9rem; | |
| text-align: center; | |
| margin-top: 60px; | |
| } | |
| .msg { | |
| max-width: 82%; | |
| padding: 12px 16px; | |
| border-radius: 12px; | |
| line-height: 1.55; | |
| } | |
| .user { | |
| align-self: flex-end; | |
| background: var(--primary); | |
| color: #fff; | |
| border-bottom-right-radius: 3px; | |
| } | |
| .assistant { | |
| align-self: flex-start; | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| box-shadow: var(--shadow); | |
| border-bottom-left-radius: 3px; | |
| } | |
| .senderName { | |
| display: block; | |
| font-size: .72rem; | |
| font-weight: 700; | |
| color: #1e4fa8; | |
| margin-bottom: 4px; | |
| letter-spacing: .3px; | |
| } | |
| .text { white-space: pre-wrap; } | |
| /* ── Markdown renderer ── */ | |
| .markdown { font-size: .93rem; line-height: 1.65; } | |
| .markdown p { margin: 0 0 8px; } | |
| .markdown p:last-child { margin-bottom: 0; } | |
| .markdown ul, .markdown ol { padding-left: 20px; margin: 6px 0 8px; } | |
| .markdown li { margin-bottom: 3px; } | |
| .markdown strong { font-weight: 700; color: #1e293b; } | |
| .markdown em { font-style: italic; } | |
| .markdown h1, .markdown h2, .markdown h3 { | |
| font-weight: 700; | |
| margin: 12px 0 4px; | |
| color: #1e293b; | |
| } | |
| .markdown h1 { font-size: 1.05rem; } | |
| .markdown h2 { font-size: 1rem; } | |
| .markdown h3 { font-size: .95rem; } | |
| .markdown code { | |
| font-family: 'Consolas', 'Courier New', monospace; | |
| font-size: .82rem; | |
| background: #f1f5f9; | |
| border: 1px solid #e2e8f0; | |
| border-radius: 4px; | |
| padding: 1px 5px; | |
| } | |
| .markdown pre { | |
| background: #f8fafc; | |
| border: 1px solid #e2e8f0; | |
| border-radius: 6px; | |
| padding: 10px 12px; | |
| overflow-x: auto; | |
| margin: 8px 0; | |
| } | |
| .markdown pre code { | |
| background: none; | |
| border: none; | |
| padding: 0; | |
| font-size: .82rem; | |
| } | |
| .markdown blockquote { | |
| border-left: 3px solid #1e4fa8; | |
| margin: 8px 0; | |
| padding: 4px 12px; | |
| color: var(--muted); | |
| font-style: italic; | |
| } | |
| .markdown hr { | |
| border: none; | |
| border-top: 1px solid var(--border); | |
| margin: 10px 0; | |
| } | |
| .markdown table { border-collapse: collapse; width: 100%; margin: 8px 0; font-size: .85rem; } | |
| .markdown th, .markdown td { border: 1px solid var(--border); padding: 6px 10px; text-align: left; } | |
| .markdown th { background: #f1f5f9; font-weight: 600; } | |
| .meta { | |
| margin-top: 8px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| } | |
| .citations { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 4px; | |
| } | |
| .citation { | |
| font-size: .75rem; | |
| background: #f1f5f9; | |
| border: 1px solid var(--border); | |
| border-radius: 4px; | |
| padding: 2px 7px; | |
| color: var(--muted); | |
| } | |
| .pathBadge { | |
| font-size: .72rem; | |
| font-weight: 600; | |
| align-self: flex-start; | |
| padding: 2px 8px; | |
| border-radius: 4px; | |
| } | |
| .pathBadge[data-path='vector'] { background: #dbeafe; color: #1d4ed8; } | |
| .pathBadge[data-path='sql'] { background: #dcfce7; color: #166534; } | |
| .sqlDetails { font-size: .8rem; } | |
| .sqlDetails summary { cursor: pointer; color: var(--muted); } | |
| .sqlDetails pre { | |
| margin-top: 4px; | |
| padding: 8px; | |
| background: #f8fafc; | |
| border: 1px solid var(--border); | |
| border-radius: 6px; | |
| overflow-x: auto; | |
| font-size: .78rem; | |
| } | |
| .thinking { | |
| color: var(--muted); | |
| font-style: italic; | |
| animation: pulse 1.2s ease-in-out infinite; | |
| } | |
| @keyframes pulse { 0%,100% { opacity: 1 } 50% { opacity: .4 } } | |
| .inputRow { | |
| display: flex; | |
| gap: 8px; | |
| flex-shrink: 0; | |
| align-items: flex-end; | |
| } | |
| .textarea { | |
| flex: 1; | |
| resize: none; | |
| line-height: 1.5; | |
| } | |
| .sendBtn { | |
| background: var(--primary); | |
| color: #fff; | |
| font-weight: 600; | |
| flex-shrink: 0; | |
| padding: 10px 22px; | |
| align-self: flex-end; | |
| } | |
| .sendBtn:hover:not(:disabled) { background: var(--primary-h); } | |
| .sendBtn:disabled { opacity: .5; cursor: not-allowed; } | |