:root{--bg:#f4f6f8;--surface:#ffffff;--sidebar-bg:#0f1c22;--sidebar-text:rgba(255,255,255,0.82);--sidebar-muted:rgba(255,255,255,0.45);--sidebar-hover:rgba(255,255,255,0.08);--sidebar-active:rgba(255,255,255,0.13);--text:#111827;--muted:#6b7280;--line:#e5e7eb;--primary:#0d6b78;--primary-hover:#0a5763;--primary-soft:#e6f4f6;--user-bubble:#0d6b78;--user-text:#ffffff;--assistant-bubble:#ffffff;--assistant-border:#e5e7eb;--danger:#dc2626;--success:#16a34a;--shadow-sm:0 1px 3px rgba(0,0,0,0.07);--shadow-md:0 4px 16px rgba(0,0,0,0.08);--radius:12px}*,:after,:before{box-sizing:border-box}body,html{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}h1,h2,p{margin:0}.shell{display:grid;grid-template-columns:260px 1fr;height:100vh;overflow:hidden}.sidebar{background:var(--sidebar-bg);color:var(--sidebar-text);display:flex;flex-direction:column;gap:6px;padding:20px 14px}.brand{gap:11px;margin-bottom:10px;padding:0 6px}.brand,.brand-icon{align-items:center;display:flex}.brand-icon{background:var(--primary);border-radius:9px;color:#fff;height:36px;justify-content:center;width:36px;flex-shrink:0}.brand-text strong{display:block;font-size:15px;color:#fff}.brand-text span{color:var(--sidebar-muted);font-size:11px}.new-chat-btn{align-items:center;background:var(--sidebar-hover);border:1px solid rgba(255,255,255,.1);border-radius:9px;color:#fff;display:flex;font-size:13px;font-weight:600;gap:8px;height:40px;margin-bottom:6px;padding:0 12px;width:100%}.new-chat-btn:hover{background:var(--sidebar-active)}.sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1 1}.nav-item{align-items:center;background:transparent;border:none;border-radius:8px;color:var(--sidebar-text);display:flex;font-size:13px;font-weight:500;gap:9px;height:40px;padding:0 12px;text-align:left;width:100%}.nav-item:hover{background:var(--sidebar-hover);color:#fff}.nav-item.active{background:var(--sidebar-active);color:#fff}.nav-badge{background:var(--primary);border-radius:999px;color:#fff;font-size:10px;font-weight:700;margin-left:auto;min-width:20px;padding:1px 6px;text-align:center}.sidebar-footer{margin-top:auto;padding:4px 6px 0}.system-status{align-items:center;display:flex;font-size:12px;gap:7px;color:var(--sidebar-muted)}.status-dot{border-radius:999px;display:inline-block;height:8px;width:8px;flex-shrink:0}.system-status.ok .status-dot{background:#22c55e}.system-status.error .status-dot{background:#ef4444}.system-status.loading .status-dot{background:#94a3b8;animation:pulse 1.4s ease-in-out infinite}.main{min-height:0;overflow:hidden}.chat-view,.main{display:flex;flex-direction:column}.chat-view{height:100%}.messages-area{flex:1 1;overflow-y:auto;padding:32px 0 8px;scroll-behavior:smooth}.welcome{flex-direction:column;gap:12px;margin:0 auto;max-width:600px;padding:40px 24px;text-align:center}.welcome,.welcome-icon{align-items:center;display:flex}.welcome-icon{background:var(--primary-soft);border-radius:999px;color:var(--primary);height:60px;justify-content:center;width:60px}.welcome h1{font-size:24px;font-weight:700;color:var(--text)}.welcome>p{color:var(--muted);font-size:14px;line-height:1.6;max-width:440px}.welcome-hint{align-items:center;background:#fff8ed;border:1px solid #fde68a;border-radius:9px;color:#92400e;display:flex;font-size:13px;gap:7px;padding:10px 14px}.welcome-hint button{align-items:center;background:none;border:none;color:var(--primary);display:inline-flex;font-size:13px;font-weight:600;gap:2px;padding:0}.welcome-hint button:hover{text-decoration:underline}.message-list{display:flex;flex-direction:column;gap:24px;margin:0 auto;max-width:720px;padding:0 24px 24px}.message-row{align-items:flex-start;display:flex;gap:12px}.message-row.user{flex-direction:row-reverse}.avatar{align-items:center;background:var(--primary-soft);border-radius:999px;color:var(--primary);display:flex;flex-shrink:0;height:32px;justify-content:center;width:32px}.bubble-wrap{display:flex;flex-direction:column;gap:8px;max-width:82%}.message-row.user .bubble-wrap{align-items:flex-end}.bubble{border-radius:16px;font-size:14px;line-height:1.65;padding:12px 16px;white-space:pre-wrap;word-break:break-word}.message-row.user .bubble{background:var(--user-bubble);border-bottom-right-radius:4px;color:var(--user-text)}.message-row.assistant .bubble{background:var(--assistant-bubble);border:1px solid var(--assistant-border);border-bottom-left-radius:4px;box-shadow:var(--shadow-sm);color:var(--text)}.answer-content{display:flex;flex-direction:column;gap:10px;white-space:normal}.answer-content h3{color:var(--text);font-size:15px;font-weight:700;line-height:1.35;margin:2px 0 0}.answer-content p{margin:0}.answer-content ol,.answer-content ul{display:flex;flex-direction:column;gap:6px;margin:0;padding-left:20px}.answer-content li{padding-left:2px}.answer-content li>ul{margin-top:6px}.answer-content strong{font-weight:700}.answer-link{color:var(--primary);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.answer-table-wrap{border:1px solid var(--line);border-radius:8px;margin-top:2px;max-width:100%;overflow-x:auto}.answer-table{border-collapse:collapse;font-size:13px;min-width:100%;white-space:normal}.answer-table td,.answer-table th{border-bottom:1px solid var(--line);padding:9px 10px;text-align:left;vertical-align:top}.answer-table th{background:#f8fafc;color:#374151;font-size:12px;font-weight:700}.answer-table tr:last-child td{border-bottom:none}.bubble.thinking{align-items:center;display:flex;gap:5px;min-width:56px;padding:14px 18px}.bubble.thinking span{animation:bounce 1.1s ease-in-out infinite;background:var(--muted);border-radius:999px;display:inline-block;height:7px;width:7px}.bubble.thinking span:nth-child(2){animation-delay:.18s}.bubble.thinking span:nth-child(3){animation-delay:.36s}.citations{display:flex;flex-wrap:wrap;gap:6px}.citations-panel{color:var(--muted);font-size:12px;max-width:100%}.citations-panel summary{align-items:center;border-radius:8px;cursor:pointer;display:inline-flex;gap:6px;list-style:none;padding:3px 0;transition:color .12s}.citations-panel summary::-webkit-details-marker{display:none}.citations-panel summary:hover{color:var(--primary)}.citations-panel[open] summary{margin-bottom:8px}.citation-count{background:#eef2f7;border-radius:999px;color:#475569;font-size:10px;font-weight:700;height:18px;justify-content:center;min-width:18px;padding:0 6px}.citation-chip,.citation-count{align-items:center;display:inline-flex}.citation-chip{background:var(--primary-soft);border:1px solid #c3dfe3;border-radius:999px;color:var(--primary);font-size:11px;font-weight:500;gap:5px;max-width:100%;padding:4px 10px;transition:background .12s}.citation-chip:hover{background:#cde9ec}.citation-title{display:inline-block;max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-bar{background:var(--bg);border-top:1px solid var(--line);padding:16px 24px 20px}.input-form{align-items:flex-end;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-md);display:flex;gap:8px;margin:0 auto;max-width:720px;padding:10px 10px 10px 16px;transition:border-color .15s,box-shadow .15s}.input-form:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,107,120,.12),var(--shadow-md)}.hidden-file-input{display:none}.attach-btn{align-items:center;background:transparent;border:none;border-radius:10px;color:var(--muted);display:flex;flex-shrink:0;height:38px;justify-content:center;transition:background .15s,color .15s;width:38px}.attach-btn:hover:not(:disabled){background:var(--primary-soft);color:var(--primary)}.chat-input{background:transparent;border:none;color:var(--text);flex:1 1;font-size:14px;line-height:1.5;max-height:160px;min-height:24px;outline:none;padding:2px 0;resize:none}.chat-input::placeholder{color:var(--muted)}.send-btn{align-items:center;background:var(--primary);border:none;border-radius:10px;color:#fff;display:flex;flex-shrink:0;height:38px;justify-content:center;transition:background .15s;width:38px}.send-btn:hover:not(:disabled){background:var(--primary-hover)}.chat-upload-status{align-items:center;color:var(--muted);display:flex;font-size:12px;gap:6px;margin:8px auto 0;max-width:720px;padding:0 4px}.sources-view{display:flex;flex-direction:column;gap:28px;margin:0 auto;max-width:680px;overflow-y:auto;padding:36px 24px;width:100%}.sources-header h1{font-size:22px;font-weight:700}.sources-header p{color:var(--muted);font-size:14px;margin-top:6px}.sources-notice{align-items:center;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:10px;color:#15803d;display:flex;font-size:13px;gap:8px;padding:12px 16px}.sources-notice.error{background:#fef2f2;border-color:#fecaca;color:var(--danger)}.conversations-list{border-top:1px solid var(--line);display:flex;flex-direction:column;gap:2px;overflow-y:auto;padding:12px 8px 8px}.conversations-label{color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.08em;padding:0 8px 6px;text-transform:uppercase}.conversation-item{align-items:center;border-radius:8px;display:flex;gap:2px;padding:2px 4px 2px 0;transition:background .12s}.conversation-item:hover{background:var(--surface)}.conversation-item.active{background:rgba(13,107,120,.1)}.conv-main{align-items:center;background:transparent;border:none;color:var(--sidebar-text);cursor:pointer;display:flex;flex:1 1;font-size:13px;gap:8px;min-width:0;padding:5px 6px;text-align:left}.conversation-item.active .conv-main{color:#7dd3db;font-weight:600}.conv-main span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conv-main svg{color:var(--sidebar-muted);flex-shrink:0}.conversation-item.active .conv-main svg{color:#7dd3db}.conv-delete{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--sidebar-muted);cursor:pointer;display:none;flex-shrink:0;justify-content:center;padding:4px 5px;transition:color .12s,background .12s}.conversation-item:hover .conv-delete{display:flex}.conv-delete:hover{background:rgba(220,38,38,.15);color:#f87171}.sources-section{display:flex;flex-direction:column;gap:14px}.sources-section h2{color:var(--text);font-size:15px;font-weight:600}.empty-sources{align-items:center;background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);display:flex;flex-direction:column;gap:8px;padding:40px 24px;text-align:center}.empty-sources p{color:var(--text);font-weight:600;margin-top:8px}.empty-sources span{font-size:13px}.sources-list{display:flex;flex-direction:column;gap:10px}.source-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);gap:14px;justify-content:space-between;padding:16px}.source-card,.source-info{align-items:center;display:flex}.source-info{color:var(--primary);gap:12px;min-width:0}.source-info div{min-width:0}.source-info strong{font-size:14px}.source-info span,.source-info strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-info span{color:var(--muted);font-size:12px;margin-top:2px}.source-webhook-url{max-width:min(560px,58vw)}.webhook-pill{background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;color:#1d4ed8;font-size:12px;font-weight:700;height:32px;padding:0 12px}.update-btn,.webhook-pill{align-items:center;display:flex;flex-shrink:0;white-space:nowrap}.update-btn{background:var(--surface);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13px;font-weight:500;gap:6px;height:36px;padding:0 14px;transition:border-color .15s}.update-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.add-source-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);gap:16px;padding:20px}.add-source-form,label{display:flex;flex-direction:column}label{color:var(--muted);font-size:12px;font-weight:600;gap:6px;letter-spacing:.02em;text-transform:uppercase}input{background:var(--bg);border:1px solid var(--line);border-radius:9px;color:var(--text);font-size:14px;outline:none;padding:10px 12px;transition:border-color .15s,box-shadow .15s;width:100%}input:focus{background:#fff;border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,107,120,.1)}.source-actions{gap:8px}.delete-btn,.source-actions{align-items:center;display:flex}.delete-btn{background:transparent;border:1px solid var(--line);border-radius:9px;color:var(--muted);height:36px;justify-content:center;padding:0 10px;transition:background .15s,border-color .15s,color .15s}.delete-btn:hover:not(:disabled){background:#fee2e2;border-color:#fca5a5;color:#dc2626}.delete-btn:disabled{opacity:.4}.connect-btn{align-items:center;align-self:flex-start;background:var(--primary);border:none;border-radius:9px;color:#fff;display:flex;font-size:14px;font-weight:600;gap:7px;height:40px;padding:0 18px;transition:background .15s}.connect-btn:hover:not(:disabled){background:var(--primary-hover)}.upload-zone{align-items:center;border:2px dashed var(--line);border-radius:var(--radius);cursor:pointer;display:flex;flex-direction:column;gap:8px;padding:40px 24px;text-align:center;transition:border-color .15s,background .15s}.upload-zone.dragging,.upload-zone:hover:not(.disabled){background:var(--primary-soft);border-color:var(--primary)}.upload-zone.disabled{cursor:not-allowed;opacity:.6}.upload-zone-icon{color:var(--primary)}.upload-zone p{color:var(--text);font-size:15px;font-weight:500;margin:0}.upload-zone span{color:var(--muted);font-size:13px}.upload-link{color:var(--primary);font-weight:600;text-decoration:underline}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 12px center;border:1px solid var(--line);border-radius:9px;color:var(--text);cursor:pointer;font-size:14px;outline:none;padding:10px 36px 10px 12px;transition:border-color .15s,box-shadow .15s;width:100%}select:focus{background-color:#fff;border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,107,120,.1)}textarea.json-textarea{background:var(--bg);border:1px solid var(--line);border-radius:9px;color:var(--text);font-family:SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.6;outline:none;padding:10px 12px;resize:vertical;transition:border-color .15s,box-shadow .15s;width:100%}textarea.json-textarea:focus{background:#fff;border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,107,120,.1)}.field-optional{color:var(--muted);font-size:11px;font-weight:400;letter-spacing:0;text-transform:none}.auth-shell{align-items:center;background:var(--bg);display:flex;justify-content:center;min-height:100vh;padding:24px}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:20px;max-width:400px;padding:36px 32px;width:100%}.auth-brand{align-items:center;display:flex;gap:10px;margin-bottom:4px}.auth-title{color:var(--text);font-size:20px;font-weight:700;margin:0}.auth-error{background:#fee2e2;border:1px solid #fca5a5;border-radius:9px;color:#dc2626;font-size:13px;padding:10px 12px}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-submit-btn{align-items:center;background:var(--primary);border:none;border-radius:9px;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:600;height:42px;justify-content:center;margin-top:4px;transition:background .15s;width:100%}.auth-submit-btn:hover:not(:disabled){background:var(--primary-hover)}.auth-submit-btn:disabled{opacity:.6}.auth-switch{background:none;border:none;color:var(--primary);cursor:pointer;font-size:13px;padding:0;text-align:center;text-decoration:underline;width:100%}.auth-switch:hover{color:var(--primary-hover)}.sidebar-user{border-top:1px solid var(--line);gap:10px;padding:12px 16px}.sidebar-user,.user-avatar{align-items:center;display:flex}.user-avatar{background:var(--primary);border-radius:50%;color:#fff;flex-shrink:0;font-size:12px;font-weight:700;height:30px;justify-content:center;width:30px}.user-info{display:flex;flex-direction:column;flex:1 1;min-width:0;overflow:hidden}.user-info strong{color:var(--text);font-size:12px}.user-info span,.user-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info span{color:var(--muted);font-size:11px}.logout-btn{background:none;border:none;color:var(--muted);cursor:pointer;flex-shrink:0;padding:4px;transition:color .15s}.logout-btn:hover{color:#dc2626}.spin{animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:none}.input-form,.message-list{max-width:100%}.sources-view{padding:20px 16px}}