:root{--bg-app: #f0f2f6;--bg-sidebar: #ffffff;--bg-main: #ffffff;--bg-surface: #f4f5f9;--bg-hover: #edeef3;--bg-active: #e8edfb;--bg-bubble-user: #2563eb;--bg-bubble-assistant: #ffffff;--bg-input: #ffffff;--bg-code: #1a1b2e;--border: #e3e5eb;--border-light: #eef0f4;--text-primary: #1a1d28;--text-secondary: #5c677d;--text-muted: #8d97ab;--text-on-accent: #ffffff;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-light: rgba(37,99,235,.1);--accent-ring: rgba(37,99,235,.28);--danger: #dc2626;--danger-light: rgba(220,38,38,.1);--success: #16a34a;--success-light: rgba(22,163,74,.1);--shadow-xs: 0 1px 2px rgba(0,0,0,.04);--shadow-sm: 0 1px 4px rgba(0,0,0,.05);--shadow-md: 0 4px 16px rgba(0,0,0,.06);--shadow-lg: 0 8px 32px rgba(0,0,0,.07);--shadow-xl: 0 16px 48px rgba(0,0,0,.09);--radius-xs: 6px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-xl: 22px;--radius-round: 9999px;--sidebar-w: 300px;--header-h: 60px;--transition: .2s cubic-bezier(.16, 1, .3, 1);--transition-slow: .35s cubic-bezier(.16, 1, .3, 1);--z-sidebar: 100;--z-overlay: 200;--z-panel: 300;--z-modal-backdrop: 400;--z-modal: 410;--z-toast: 500}[data-theme=dark]{--bg-app: #0d0d14;--bg-sidebar: #12121a;--bg-main: #0f0f17;--bg-surface: #181822;--bg-hover: #1e1e2a;--bg-active: #181f3a;--bg-bubble-user: #2563eb;--bg-bubble-assistant: #181822;--bg-input: #181822;--bg-code: #090912;--border: rgba(255,255,255,.07);--border-light: rgba(255,255,255,.04);--text-primary: #e0e0ea;--text-secondary: #82829c;--text-muted: #52526e;--accent: #3b82f6;--accent-hover: #60a5fa;--accent-light: rgba(59,130,246,.14);--accent-ring: rgba(59,130,246,.3);--danger: #f87171;--danger-light: rgba(248,113,113,.13);--success: #4ade80;--success-light: rgba(74,222,128,.13);--shadow-xs: 0 1px 2px rgba(0,0,0,.2);--shadow-sm: 0 1px 4px rgba(0,0,0,.25);--shadow-md: 0 4px 16px rgba(0,0,0,.28);--shadow-lg: 0 8px 32px rgba(0,0,0,.32);--shadow-xl: 0 16px 48px rgba(0,0,0,.38)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;background:var(--bg-app);color:var(--text-primary);transition:background var(--transition-slow),color var(--transition-slow)}.app{display:flex;height:100vh;width:100%}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-round)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:var(--z-sidebar);position:relative;transition:transform var(--transition-slow)}.sidebarHeader{padding:18px 16px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0}.sidebarBrand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text-primary)}.sidebarLogo{width:34px;height:34px;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--accent),#7c3aed);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 8px #2563eb33}.sidebarLogo svg{width:20px;height:20px;fill:#fff}.sidebarBrand span{font-family:Outfit,sans-serif;font-size:17px;font-weight:700;letter-spacing:-.03em}.newChatBtn{width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition);flex-shrink:0}.newChatBtn:hover{background:var(--accent-light);color:var(--accent);border-color:var(--accent)}.newChatBtn:active{transform:scale(.92)}.newChatBtn svg{width:16px;height:16px}.sidebarSearch{padding:8px 16px 6px;flex-shrink:0;position:relative}.searchIcon{position:absolute;left:28px;top:17px;color:var(--text-muted);pointer-events:none;display:flex;align-items:center}.searchIcon svg{width:14px;height:14px}.sidebarSearch input{width:100%;padding:9px 12px 9px 36px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary);font-size:13px;outline:none;transition:all var(--transition)}.sidebarSearch input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);background:var(--bg-input)}.sidebarSearch input::placeholder{color:var(--text-muted)}.conversationList{flex:1;overflow-y:auto;padding:4px 8px 8px}.convItem{display:flex;align-items:center;padding:12px 14px;border-radius:var(--radius-sm);cursor:pointer;margin-bottom:2px;transition:all var(--transition);position:relative;gap:10px}.convItem:hover{background:var(--bg-hover)}.convItem.active{background:var(--accent-light)}.convAvatar{width:30px;height:30px;border-radius:var(--radius-xs);background:var(--bg-surface);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-muted);transition:all var(--transition)}.convItem.active .convAvatar{background:var(--accent);color:#fff}.convAvatar svg{width:15px;height:15px}.convInfo{flex:1;min-width:0}.convTitle{font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.convMeta{font-size:11px;font-weight:400;color:var(--text-muted);margin-top:2px}.convDelete{opacity:0;width:26px;height:26px;border-radius:var(--radius-xs);border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition);flex-shrink:0}.convItem:hover .convDelete{opacity:1}.convDelete:hover{color:var(--danger);background:var(--danger-light)}.convDelete svg{width:14px;height:14px}.convEmpty{padding:28px 16px;text-align:center;color:var(--text-muted);font-size:13px}.sidebarFooter{padding:10px 12px 14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:4px;flex-shrink:0}.sidebarFooterBtn{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:13px;font-family:inherit;transition:all var(--transition);width:100%;text-align:left}.sidebarFooterBtn:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebarFooterBtn:active{transform:scale(.98)}.sidebarFooterBtn svg{width:16px;height:16px;flex-shrink:0;color:var(--text-muted);transition:color var(--transition)}.sidebarFooterBtn:hover svg{color:var(--text-secondary)}.mainContent{flex:1;display:flex;flex-direction:column;min-width:0;position:relative;background:var(--bg-main)}.chatHeader{height:var(--header-h);padding:0 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:var(--bg-main);flex-shrink:0}.chatHeaderLeft{display:flex;align-items:center;gap:12px;min-width:0}.sidebarToggle,.sidebarBack{display:none;width:34px;height:34px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;align-items:center;justify-content:center;transition:background var(--transition);flex-shrink:0}.sidebarToggle:hover,.sidebarBack:hover{background:var(--bg-hover)}.sidebarToggle:active,.sidebarBack:active{transform:scale(.95)}.sidebarToggle svg,.sidebarBack svg{width:18px;height:18px}.chatTitle{font-size:14px;font-weight:600;font-family:Outfit,sans-serif;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}.chatHeaderActions{display:flex;gap:4px}.chatHeaderActions button{width:34px;height:34px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition)}.chatHeaderActions button:hover{background:var(--bg-hover);color:var(--text-secondary)}.chatHeaderActions button:active{transform:scale(.92)}.chatHeaderActions button svg{width:16px;height:16px}.messagesContainer{flex:1;overflow-y:auto;overflow-x:hidden}.messages{max-width:760px;margin:0 auto;padding:24px 28px 16px;display:flex;flex-direction:column;gap:18px}.emptyState{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;-webkit-user-select:none;user-select:none}.emptyIcon{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#7c3aed);display:flex;align-items:center;justify-content:center;margin-bottom:24px;box-shadow:0 12px 40px #2563eb38;transition:transform var(--transition)}.emptyState:hover .emptyIcon{transform:scale(1.03)}.emptyIcon svg{width:36px;height:36px;fill:#fff}.emptyState h3{font-family:Outfit,sans-serif;font-size:22px;font-weight:700;color:var(--text-primary);margin-bottom:8px;letter-spacing:-.02em}.emptyState p{font-size:14px;color:var(--text-secondary);max-width:340px;line-height:1.6}.messageWrapper{display:flex;gap:12px;animation:msg-fade-in .3s var(--transition);position:relative}@keyframes msg-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.messageWrapper.user{justify-content:flex-end}.messageWrapper.user .messageAvatar{order:1}.messageWrapper.user+.messageWrapper.user,.messageWrapper.assistant+.messageWrapper.assistant{margin-top:-4px}.messageAvatar{width:34px;height:34px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:4px;transition:transform var(--transition)}.messageAvatar.user{background:var(--accent);color:#fff}.messageAvatar.assistant{background:linear-gradient(135deg,var(--accent),#7c3aed);color:#fff}.messageAvatar svg{width:17px;height:17px;fill:currentColor}.messageBody{max-width:calc(100% - 46px);min-width:0}.message{padding:12px 18px;border-radius:var(--radius-lg);font-size:15px;line-height:1.7;word-wrap:break-word;position:relative}.message.user{background:var(--bg-bubble-user);color:#fff;border-bottom-right-radius:6px;box-shadow:0 2px 8px #2563eb2e}.message.assistant{background:var(--bg-bubble-assistant);color:var(--text-primary);border:1px solid var(--border-light);border-bottom-left-radius:6px;box-shadow:var(--shadow-xs)}.message.error{background:var(--danger-light);color:var(--danger);border:1px solid rgba(220,38,38,.12);border-bottom-left-radius:6px}.messageFooter{display:flex;align-items:center;padding-top:5px;gap:8px;opacity:0;transition:opacity .15s ease}.messageWrapper.assistant .messageFooter{justify-content:flex-start}.messageWrapper.user .messageFooter{justify-content:flex-end}.messageWrapper:hover .messageFooter,.messageFooter:has(.copyBtn:focus-visible){opacity:1}.copyBtn{width:30px;height:30px;border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--bg-main);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-xs);transition:all .15s ease}.copyBtn:hover{color:var(--text-primary);border-color:var(--text-muted);background:var(--bg-surface)}.copyBtn.copied{color:var(--success);border-color:var(--success);background:var(--success-light)}.copyBtn svg{width:14px;height:14px}.msgTime{font-size:11px;color:var(--text-muted);padding-top:4px;-webkit-user-select:none;user-select:none}.message p{margin:0 0 8px}.message p:last-child{margin-bottom:0}.message ul,.message ol{padding-left:20px;margin:6px 0}.message blockquote{border-left:3px solid var(--accent);padding-left:12px;margin:8px 0;color:var(--text-secondary)}.message table{border-collapse:collapse;margin:8px 0;font-size:14px;width:100%}.message th,.message td{border:1px solid var(--border);padding:6px 10px;text-align:left}.message th{background:var(--bg-surface);font-weight:600}.message h1,.message h2,.message h3{margin:12px 0 6px;font-weight:600;font-family:Outfit,sans-serif}.message h1{font-size:18px}.message h2{font-size:16px}.message h3{font-size:15px}.message code{background:var(--bg-code);color:#f0c674;padding:2px 7px;border-radius:5px;font-size:13px;font-family:JetBrains Mono,SF Mono,Fira Code,monospace}.message pre{background:var(--bg-code);padding:16px 18px;border-radius:var(--radius-sm);overflow-x:auto;margin:10px 0;border:1px solid rgba(255,255,255,.06)}.message pre code{background:none;padding:0;font-size:13px;color:inherit}.message a{color:var(--accent);text-decoration:none;font-weight:500}.message a:hover{text-decoration:underline}.cursorBlink{display:inline-block;width:2px;height:15px;background:var(--accent);margin-left:2px;vertical-align:text-bottom;animation:blink .8s step-end infinite;border-radius:2px}@keyframes blink{50%{opacity:0}}.inputArea{padding:16px 28px 24px;background:var(--bg-main);border-top:1px solid var(--border);flex-shrink:0}.inputWrapper{max-width:760px;margin:0 auto;display:flex;gap:10px;align-items:flex-end;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-lg);padding:8px 8px 8px 20px;transition:all var(--transition);box-shadow:var(--shadow-xs)}.inputWrapper:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.inputWrapper textarea{flex:1;border:none;background:transparent;padding:7px 4px;font-size:15px;font-family:inherit;outline:none;resize:none;line-height:1.5;max-height:160px;color:var(--text-primary)}.inputWrapper textarea::placeholder{color:var(--text-muted)}.sendBtn{width:38px;height:38px;border-radius:var(--radius-sm);border:none;background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition);flex-shrink:0}.sendBtn:hover{background:var(--accent-hover);transform:scale(1.04)}.sendBtn:active{transform:scale(.94)}.sendBtn svg{width:17px;height:17px}.sendBtn.stop{background:var(--danger)}.sendBtn.stop:hover{background:#b91c1c}.kbOverlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:var(--z-overlay);visibility:hidden;opacity:0;pointer-events:none;transition:visibility .2s,opacity .2s ease}.kbOverlay.open{visibility:visible;opacity:1;pointer-events:auto}.kbPanel{position:fixed;top:0;right:-420px;width:420px;max-width:92vw;height:100vh;background:var(--bg-sidebar);border-left:1px solid var(--border);z-index:var(--z-panel);display:flex;flex-direction:column;transition:right var(--transition-slow);box-shadow:var(--shadow-xl)}.kbPanel.open{right:0}.kbHeader{display:flex;align-items:center;justify-content:space-between;padding:20px 22px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.kbHeader h2{font-family:Outfit,sans-serif;font-size:17px;font-weight:700;letter-spacing:-.02em}.kbClose{width:34px;height:34px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition)}.kbClose:hover{background:var(--bg-hover);color:var(--text-primary)}.kbClose:active{transform:scale(.92)}.kbClose svg{width:18px;height:18px}.kbBody{flex:1;overflow-y:auto;padding:22px}.kbSectionTitle{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:12px}.uploadArea{border:2px dashed var(--border);border-radius:var(--radius-md);padding:30px 20px;text-align:center;cursor:pointer;transition:all var(--transition);margin-bottom:24px;color:var(--text-muted);font-size:13px}.uploadArea:hover,.uploadArea.dragover{border-color:var(--accent);background:var(--accent-light)}.uploadIcon{margin-bottom:10px}.uploadIcon svg{width:36px;height:36px;color:var(--text-muted);stroke-width:1.5}.uploadArea input[type=file]{display:none}.docList{list-style:none}.docItem{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:6px;font-size:13px;transition:all var(--transition)}.docItem:hover{background:var(--bg-hover)}.docIcon{width:30px;height:30px;border-radius:var(--radius-xs);background:var(--bg-surface);display:flex;align-items:center;justify-content:center;color:var(--text-muted);flex-shrink:0}.docIcon svg{width:15px;height:15px}.docInfo{flex:1;min-width:0}.docName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:var(--text-primary)}.docMeta{font-size:11px;color:var(--text-muted);margin-top:2px}.docDeleteBtn{width:28px;height:28px;border-radius:var(--radius-xs);border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;opacity:0;transition:opacity .15s ease,color .15s ease,background .15s ease}.docItem:hover .docDeleteBtn{opacity:1}.docDeleteBtn:hover{color:var(--danger);background:var(--danger-light)}.docDeleteBtn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.docEmpty{text-align:center;color:var(--text-muted);padding:28px 0;font-size:13px}.docError{color:var(--danger);font-size:12px;margin-top:8px;display:none}.docError.visible{display:block}.scanBtn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:14px;padding:10px;background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-family:inherit;transition:all var(--transition)}.scanBtn:hover{background:var(--bg-hover);color:var(--text-primary)}.scanBtn:active{transform:scale(.98)}.scanBtn svg{width:14px;height:14px}.toastContainer{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{padding:11px 20px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;box-shadow:var(--shadow-lg);max-width:440px;color:#fff;pointer-events:auto;display:flex;align-items:center;gap:10px;line-height:1.4;border:1px solid rgba(255,255,255,.12);opacity:0;animation:toast-up .25s var(--transition) forwards}.toast.success{background:#059669}.toast.error{background:#dc2626}.toast.info{background:var(--accent)}@keyframes toast-up{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modalOverlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:var(--z-modal-backdrop);display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;pointer-events:none;transition:visibility .12s,opacity .12s ease}.modalOverlay.open{visibility:visible;opacity:1;pointer-events:auto}.modalDialog{background:var(--bg-main);border-radius:var(--radius-lg);padding:34px 30px 26px;width:360px;max-width:88vw;box-shadow:var(--shadow-xl);text-align:center;z-index:var(--z-modal);transform:scale(.95) translateY(8px);opacity:0;transition:transform .12s var(--transition),opacity .12s var(--transition)}.modalOverlay.open .modalDialog{transform:scale(1) translateY(0);opacity:1}.modalIcon{width:52px;height:52px;border-radius:50%;background:var(--danger-light);display:flex;align-items:center;justify-content:center;margin:0 auto 18px}.modalIcon svg{width:26px;height:26px;color:var(--danger);stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.modalTitle{font-family:Outfit,sans-serif;font-size:18px;font-weight:700;color:var(--text-primary);margin-bottom:8px}.modalMessage{font-size:14px;color:var(--text-secondary);line-height:1.5;margin-bottom:26px}.modalActions{display:flex;gap:10px}.modalActions button{flex:1;height:42px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--transition);border:none;font-family:inherit}.modalBtnCancel{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border)}.modalBtnCancel:hover{background:var(--bg-hover)}.modalBtnCancel:active{transform:scale(.97)}.modalBtnDanger{background:#dc2626;color:#fff}.modalBtnDanger:hover{background:#b91c1c}.modalBtnDanger:active{transform:scale(.97)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (max-width: 768px){.sidebar{position:fixed;left:0;top:0;height:100%;transform:translate(-100%);box-shadow:var(--shadow-xl)}.sidebar.open{transform:translate(0)}.sidebarToggle,.sidebarBack{display:flex!important}.messageWrapper{gap:8px}.message{font-size:14px;padding:10px 14px}.messages{padding:18px 16px;gap:16px}.inputArea{padding:12px 16px 20px}.inputWrapper{padding:6px 6px 6px 14px}.kbPanel{width:100%;max-width:100%}.chatHeader{padding:0 16px}}.icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
