:root{--bg:#f7f7f5;--bg-sidebar:#efefeb;--surface:#fff;--text:#1a1a1a;--text-muted:#6b6b6b;--accent:#3d6b7a;--accent-hover:#325c68;--border:#e0e0da;--user-bubble:#e8f0f2;--error:#b54a4a;--radius:10px;--font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,textarea{font-family:inherit}.app-shell{display:flex;height:100vh;min-height:0}.sidebar{width:240px;flex-shrink:0;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:1.25rem 1rem;gap:1rem}.brand{font-weight:650;font-size:.95rem;letter-spacing:.02em;color:var(--text);line-height:1.35;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.brand-sub{display:block;font-weight:400;font-size:.72rem;color:var(--text-muted);margin-top:.35rem}.section-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-top:.25rem}.model-list{display:flex;flex-direction:column;gap:4px}.model-btn{text-align:left;padding:.55rem .65rem;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:var(--text);font-size:.875rem;cursor:pointer;transition:background .15s,border-color .15s}.model-btn:hover:not(:disabled){background:rgba(61,107,122,.08)}.model-btn.active{background:var(--surface);border-color:var(--accent);box-shadow:0 1px 2px rgba(0,0,0,.04);font-weight:600}.model-btn:disabled{opacity:.45;cursor:not-allowed}.sidebar-tools{display:flex;flex-direction:column;gap:10px;margin-top:auto;padding-top:1rem;border-top:1px solid var(--border)}.toggle-row{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.toggle-row input{accent-color:var(--accent)}.btn-ghost{padding:.45rem .65rem;font-size:.8rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer}.btn-ghost:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-ghost:disabled{opacity:.5;cursor:not-allowed}.main{flex:1 1;min-width:0;display:flex;flex-direction:column;min-height:0}.main-header{flex-shrink:0;padding:1rem 1.5rem;border-bottom:1px solid var(--border);background:var(--surface)}.main-header h2{margin:0;font-size:1rem;font-weight:600}.main-header p{margin:.25rem 0 0;font-size:.78rem;color:var(--text-muted)}.messages{flex:1 1;overflow-y:auto;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1rem}.msg{max-width:720px}.msg-role{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.35rem}.msg-body{font-size:.92rem;line-height:1.55;white-space:pre-wrap;word-break:break-word}.msg.user .msg-body{background:var(--user-bubble);padding:.75rem 1rem;border-radius:var(--radius);border:1px solid var(--border)}.msg.assistant .msg-body{padding:.15rem 0}.reasoning{margin-top:.65rem;padding:.65rem .85rem;font-size:.8rem;color:var(--text-muted);background:rgba(61,107,122,.06);border-radius:8px;border-left:3px solid var(--accent)}.composer{flex-shrink:0;padding:1rem 1.5rem 1.25rem;background:var(--surface);border-top:1px solid var(--border)}.composer-inner{max-width:800px;display:flex;gap:10px;align-items:flex-end}.composer textarea{flex:1 1;min-height:44px;max-height:160px;resize:vertical;padding:.65rem .85rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;line-height:1.45}.composer textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(61,107,122,.15)}.composer button[type=submit]{padding:.65rem 1.1rem;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-weight:600;font-size:.875rem;cursor:pointer;height:44px}.composer button[type=submit]:hover:not(:disabled){background:var(--accent-hover)}.composer button[type=submit]:disabled{opacity:.45;cursor:not-allowed}.error-banner{margin:0 1.5rem;padding:.5rem .75rem;font-size:.82rem;color:var(--error);background:rgba(181,74,74,.08);border-bottom:1px solid rgba(181,74,74,.2)}.placeholder{flex:1 1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.9rem}