:root{--bg:#faf8f5;--bg-sidebar:#f2ece2;--bg-elevated:#fff;--border:#e8dfd0;--text:#2c2620;--text-secondary:#8c8172;--text-faint:#b3aca0;--bubble-user:#f5e6d8;--bubble-user-text:#3a2e18;--bubble-assistant:#fff;--bubble-border:#f0eae0;--accent:#b08968;--accent-hover:#96744f;--danger:#c25b4a;--radius-lg:20px;--radius-md:14px;--radius-sm:8px;--sidebar-width:280px;--font:-apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", "Microsoft YaHei", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow-x:hidden}html{overflow-y:hidden}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{cursor:pointer;font-family:inherit}textarea,input,select{font-family:inherit;font-size:16px}.app{height:var(--app-height,100dvh);max-width:100vw;display:flex;position:relative;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;transition:transform .25s;display:flex}.sidebar-header{padding:16px;padding-top:calc(16px + env(safe-area-inset-top));padding-left:calc(16px + env(safe-area-inset-left));justify-content:space-between;align-items:center;gap:8px;display:flex}.app-title{color:var(--text);align-items:center;gap:6px;font-size:18px;font-weight:700;display:flex}.new-chat-btn{background:var(--accent);color:#fff;border-radius:var(--radius-md);border:none;width:calc(100% - 32px);margin:0 16px 12px;padding:10px 14px;font-size:14px;font-weight:600;transition:background .15s}.new-chat-btn:hover{background:var(--accent-hover)}.conversation-list{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding:4px 8px 8px;overflow-y:auto}.conversation-item{border-radius:var(--radius-sm);color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;margin-bottom:2px;padding:10px 12px;font-size:14px;display:flex;overflow:hidden}.conversation-item:hover{background:#0000000a}.conversation-item.active{background:var(--bg-elevated);font-weight:600;box-shadow:0 1px 2px #0000000f}.conversation-item .title{text-overflow:ellipsis;flex:1;overflow:hidden}.conversation-item .delete-btn{opacity:0;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:2px 6px;font-size:14px}.conversation-item:hover .delete-btn{opacity:1}.conversation-item .delete-btn:hover{color:var(--danger);background:#c25b4a1a}.sidebar-footer{padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom));padding-left:calc(16px + env(safe-area-inset-left));border-top:1px solid var(--border)}.settings-btn{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-secondary);text-align:left;background:0 0;padding:8px 10px;font-size:13px}.settings-btn:hover{color:var(--text);background:#00000008}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right));border-bottom:1px solid var(--border);background:var(--bg);align-items:center;gap:10px;display:flex}.menu-toggle{color:var(--text);background:0 0;border:none;padding:4px 8px;font-size:20px;display:none}.model-select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);padding:6px 10px;font-size:16px}.topbar-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:16px;font-weight:600;overflow:hidden}.chat-window{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:14px;padding:20px 16px 8px;display:flex;overflow-y:auto}.empty-state{opacity:.8;flex-direction:column;align-items:center;margin:auto;display:flex}.empty-state-text{color:var(--text-faint);margin:14px 0 0;font-size:15px}.message-row{max-width:100%;display:flex}.message-row.user{justify-content:flex-end}.message-row.assistant{justify-content:flex-start}.message-bubble{border-radius:var(--radius-lg);word-wrap:break-word;overflow-wrap:break-word;max-width:80%;padding:10px 14px;font-size:15px;line-height:1.55}.message-row.user .message-bubble{background:var(--bubble-user);color:var(--bubble-user-text);border-bottom-right-radius:6px}.message-row.assistant .message-bubble{background:var(--bubble-assistant);border:1px solid var(--bubble-border);border-bottom-left-radius:6px}.tool-indicator{color:var(--text-secondary);background:#0000000a;border-radius:999px;align-self:flex-start;margin:0 0 2px 4px;padding:4px 10px;font-size:12px}.error-bubble{color:var(--danger);border-radius:var(--radius-sm);background:#c25b4a14;align-self:center;padding:6px 12px;font-size:13px}.md p{margin:0 0 8px}.md p:last-child{margin-bottom:0}.md ul,.md ol{margin:4px 0 8px;padding-left:22px}.md li{margin-bottom:3px}.md strong{font-weight:700}.md code{background:#0000000f;border-radius:4px;padding:1px 5px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.9em}.md pre{color:#f2ece0;border-radius:var(--radius-sm);background:#2c2620;margin:8px 0;padding:12px 14px;overflow-x:auto}.md pre code{color:inherit;background:0 0;padding:0;font-size:13px}.md a{color:var(--accent)}.md img{max-width:100%;height:auto}.md blockquote{border-left:3px solid var(--border);color:var(--text-secondary);margin:6px 0;padding-left:12px}.md table{border-collapse:collapse;max-width:100%;margin:8px 0;font-size:13px;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--border);padding:4px 8px}.cursor-blink:after{content:"▍";color:var(--text-secondary);animation:1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.composer{padding:12px 16px;padding-bottom:max(16px, env(safe-area-inset-bottom));padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right));border-top:1px solid var(--border);background:var(--bg)}.composer-inner{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);align-items:flex-end;gap:8px;padding:8px 8px 8px 16px;display:flex}.composer textarea{resize:none;max-height:160px;color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:16px;line-height:1.4}.composer-send{background:var(--accent);color:#fff;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;transition:background .15s;display:flex}.composer-send:hover:not(:disabled){background:var(--accent-hover)}.composer-send:disabled{background:var(--border);color:var(--text-secondary);cursor:not-allowed}.modal-overlay{z-index:50;background:#1e180f59;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-panel{background:var(--bg-elevated);border-radius:var(--radius-lg);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;width:100%;max-width:560px;max-height:85vh;padding:20px 24px 24px;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-header h2{margin:0;font-size:17px}.modal-close{color:var(--text-secondary);background:0 0;border:none;padding:4px 8px;font-size:20px}.field-group{margin-bottom:18px}.field-group label{color:var(--text);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.field-hint{color:var(--text-secondary);margin-top:4px;font-size:12px}.field-group textarea,.field-group input[type=text],.field-group input[type=url]{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);background:var(--bg);padding:8px 10px;font-size:16px}.field-group textarea{resize:vertical;min-height:90px}.field-row{align-items:center;gap:10px;display:flex}.field-row input[type=range]{flex:1}.mcp-server{border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;gap:6px;margin-bottom:8px;padding:10px 12px;display:flex}.mcp-server-row{align-items:center;gap:8px;display:flex}.mcp-server-row input[type=text],.mcp-server-row input[type=url]{border:1px solid var(--border);border-radius:var(--radius-sm);flex:1;padding:6px 8px;font-size:16px}.icon-btn{color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;padding:4px 6px;font-size:15px}.icon-btn:hover{color:var(--danger)}.add-mcp-btn{border:1px dashed var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-secondary);background:0 0;padding:8px;font-size:13px}.add-mcp-btn:hover{border-color:var(--accent);color:var(--accent)}.modal-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.btn-primary{border-radius:var(--radius-sm);background:var(--accent);color:#fff;border:none;padding:8px 18px;font-size:14px;font-weight:600}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);background:0 0;padding:8px 18px;font-size:14px}@media (width<=768px){.menu-toggle{display:inline-flex}.sidebar{z-index:40;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:2px 0 12px #0000001a}.sidebar.open{transform:translate(0)}.sidebar-backdrop{z-index:30;background:#0000004d;position:fixed;inset:0}.message-bubble{max-width:88%}.modal-panel{max-height:92vh}}.password-gate{background:var(--bg);justify-content:center;align-items:center;height:100dvh;padding:16px;display:flex}.password-gate-card{background:var(--bg-elevated);border:1px solid var(--bubble-border);border-radius:var(--radius-lg);flex-direction:column;align-items:center;gap:10px;width:100%;max-width:300px;padding:32px 28px;display:flex;box-shadow:0 4px 20px #0000000d}.password-gate-title{color:var(--text);margin:2px 0 12px;font-size:17px;font-weight:700}.password-gate-card input{border:1px solid var(--border);border-radius:var(--radius-sm);text-align:center;width:100%;color:var(--text);background:var(--bg);padding:10px 12px;font-size:16px}.password-gate-card button{border-radius:var(--radius-sm);background:var(--accent);color:#fff;border:none;width:100%;padding:10px;font-size:14px;font-weight:600}.password-gate-card button:hover:not(:disabled){background:var(--accent-hover)}.password-gate-card button:disabled{background:var(--border);color:var(--text-secondary);cursor:not-allowed}.password-gate-error{color:var(--danger);margin:2px 0 0;font-size:13px}
