:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f5f6f8;--surface:#fff;--border:#e2e5ea;--text:#1f2329;--text-secondary:#6b7280;--primary:#4d6bfe;--primary-hover:#3a58e8;--user-bubble:#4d6bfe;--assistant-bubble:#fff;--danger:#e5484d;--warn-bg:#fff7e6;--warn-border:#ffd591;--warn-text:#874d00;font-family:PingFang SC,Microsoft YaHei,system-ui,-apple-system,sans-serif;line-height:1.6}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}.app{flex-direction:column;height:100%;display:flex}.config-banner,.error-banner{border-bottom:1px solid var(--warn-border);padding:8px 16px;font-size:13px}.config-banner{background:var(--warn-bg);color:var(--warn-text)}.error-banner{color:#9b1c1c;background:#fde8e8;border-color:#f1b8b8}.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.layout{flex:1;min-height:0;display:flex}.main-col{flex-direction:column;flex:1;min-width:0;display:flex}.api-key-panel{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 24px}.api-key-title{color:var(--text);margin:0 0 4px;font-size:13px;font-weight:600}.api-key-desc{color:var(--text-secondary);margin:0 0 8px;font-size:12px}.api-key-active{color:#188a50;margin-bottom:8px;font-size:12px}.api-key-active code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.api-key-row{gap:8px;display:flex}.api-key-input{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;outline:none;flex:1;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}.api-key-input:focus{border-color:var(--primary)}.api-model-row{align-items:center;margin-top:8px}.api-model-label{color:var(--text-secondary);flex-shrink:0;font-size:12px}.api-model-select{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;outline:none;flex:1;padding:7px 10px;font-family:inherit;font-size:13px}.api-model-select:focus{border-color:var(--primary)}.btn-key-save{background:var(--primary);color:#fff;border-radius:8px;padding:8px 14px;font-size:13px}.btn-key-save:hover:not(:disabled){background:var(--primary-hover)}.btn-key-save:disabled{opacity:.5;cursor:not-allowed}.btn-key-clear{color:var(--text);background:#f1f2f4;border-radius:8px;padding:8px 14px;font-size:13px}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:260px;display:flex}.sidebar-header{border-bottom:1px solid var(--border);padding:16px;font-size:15px;font-weight:600}.brand{color:var(--primary)}.new-session-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;margin:12px;padding:9px 12px;font-size:14px}.new-session-btn:hover{background:var(--primary-hover)}.session-list{flex:1;margin:0;padding:0 8px 16px;list-style:none;overflow-y:auto}.session-item{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;margin-bottom:4px;padding:10px 12px;font-size:13px;display:flex}.session-item:hover{background:#eef0f3}.session-item.active{color:var(--primary);background:#e8edff}.session-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-empty{color:var(--text-secondary);padding:12px;font-size:13px}.chat{flex-direction:column;flex:1;min-width:0;display:flex}.chat-header{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 24px}.chat-title{margin:0;font-size:16px;font-weight:600}.message-list{flex:1;padding:20px 0;overflow-y:auto}.chat-placeholder{height:100%;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;display:flex}.chat-placeholder p{margin:0 0 8px;font-size:18px}.placeholder-sub{font-size:13px!important}.message{padding:8px 24px;display:flex}.message-user{justify-content:flex-end}.message-bubble{white-space:pre-wrap;word-break:break-word;border-radius:12px;max-width:76%;padding:10px 14px}.message-user .message-bubble{background:var(--user-bubble);color:#fff;border-bottom-right-radius:4px}.message-assistant .message-bubble{background:var(--assistant-bubble);border:1px solid var(--border);border-bottom-left-radius:4px}.message-content{font-size:14px;line-height:1.7}.tool-list{flex-direction:column;gap:8px;margin-top:10px;display:flex}.tool-card{border:1px solid var(--border);background:#fafbfc;border-radius:8px;padding:8px 10px}.tool-card-running{border-color:var(--primary)}.tool-card-header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.tool-badge{border-radius:999px;padding:1px 8px;font-size:11px}.badge-running{color:var(--primary);background:#e8edff}.badge-done{color:#188a50;background:#e6f7ee}.tool-name{font-size:13px;font-weight:600}.tool-args,.tool-result{white-space:pre-wrap;word-break:break-word;color:var(--text-secondary);margin:4px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.tool-result-wrap{border-top:1px dashed var(--border);margin-top:6px;padding-top:6px}.tool-result-label{color:var(--text-secondary);font-size:11px}.composer{background:var(--surface);border-top:1px solid var(--border);align-items:flex-end;gap:10px;padding:14px 24px 20px;display:flex}.composer-input{resize:none;border:1px solid var(--border);background:var(--bg);max-height:160px;color:var(--text);border-radius:10px;outline:none;flex:1;padding:10px 12px;font-family:inherit;font-size:14px}.composer-input:focus{border-color:var(--primary)}.btn{cursor:pointer;border:none;border-radius:10px;padding:10px 18px;font-size:14px}.btn-send{background:var(--primary);color:#fff}.btn-send:hover:not(:disabled){background:var(--primary-hover)}.btn-send:disabled{opacity:.5;cursor:not-allowed}.btn-stop{color:var(--text);background:#f1f2f4}.typing-dots{gap:4px;padding:4px 2px;display:inline-flex}.dot{background:var(--text-secondary);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite blink}.dot:nth-child(2){animation-delay:.2s}.dot:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.3}40%{opacity:1}}
