:root{--bg: #f5f7fb;--panel: #ffffff;--panel2: #eef2f8;--line: rgba(20, 40, 80, .13);--text: #1d2634;--muted: #62708a;--accent: #2a63e8;--chip: #e4ebf7;--ok: #16824a;--err: #c53030;--topbar-h: 70px;--bottombar-h: 74px}*{box-sizing:border-box}html{width:100%;height:100%;overflow:hidden;background:var(--bg)}body{margin:0;width:100vw;min-height:100vh;height:100dvh;overflow:hidden;font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text)}.app-shell{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;overflow:hidden;display:grid;grid-template-columns:240px minmax(0,1fr) 320px}nav{display:flex;flex-direction:column;border-right:1px solid var(--line);min-height:0;background:var(--panel)}nav .top{height:var(--topbar-h);padding:0 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;flex:none}#newChat{width:100%;height:40px;padding:0 10px;border-radius:10px;border:1px solid rgba(42,99,232,.35);background:linear-gradient(180deg,#3b74f2,#2a63e8);color:#fff;cursor:pointer;font-weight:600;font-size:13px}#sessionList{flex:1;min-height:0;overflow-y:auto;padding:8px;scrollbar-width:thin;scrollbar-color:rgba(98,112,138,.55) transparent}#sessionList::-webkit-scrollbar{width:8px}#sessionList::-webkit-scrollbar-track{background:transparent}#sessionList::-webkit-scrollbar-thumb{border-radius:999px;border-left:3px solid transparent;border-right:3px solid transparent;background:#62708a94;background-clip:content-box}#sessionList::-webkit-scrollbar-thumb:hover{background-color:#2a63e8b8}.sess{position:relative;padding:10px 26px 10px 12px;border-radius:10px;cursor:pointer;margin-bottom:4px;border:1px solid transparent}.sess:hover{background:var(--panel2)}.sess.active{background:var(--panel2);border-color:var(--line)}.sess .t{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sess .s{color:var(--muted);font-size:11px;margin-top:3px}.sess .s .running{color:var(--ok)}.sess .del{position:absolute;right:6px;top:8px;color:var(--muted);border:none;background:none;cursor:pointer;font-size:14px;padding:2px 5px;display:none}.sess:hover .del{display:block}.sess .del:hover{color:var(--err)}nav .bottom{height:var(--bottombar-h);padding:0 14px;border-top:1px solid var(--line);display:flex;align-items:center;flex:none}#openSettings{width:100%;height:36px;padding:0 8px;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--text);cursor:pointer;font-size:13px}#openSettings:hover{border-color:var(--accent);color:var(--accent)}main{display:flex;flex-direction:column;border-right:1px solid var(--line);min-width:0;min-height:0}header{height:var(--topbar-h);padding:0 18px;border-bottom:1px solid var(--line);flex:none;background:var(--panel);display:flex;flex-direction:column;justify-content:center}header h1{font-size:15px;margin:0}header .sub{color:var(--muted);font-size:12px;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#log{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:12px;min-height:0}.msg{max-width:82%;padding:10px 14px;border-radius:14px;line-height:1.6;white-space:pre-wrap;word-break:break-word;font-size:14px}.user{align-self:flex-end;background:var(--accent);color:#fff}.bot{align-self:flex-start;background:var(--panel);border:1px solid var(--line)}.msg.md{white-space:normal}.msg.md>:first-child{margin-top:0}.msg.md>:last-child{margin-bottom:0}.msg.md p,.msg.md ul,.msg.md ol,.msg.md table,.msg.md blockquote,.msg.md pre{margin:8px 0}.msg.md h1,.msg.md h2,.msg.md h3,.msg.md h4{margin:14px 0 6px;line-height:1.4}.msg.md h1{font-size:18px}.msg.md h2{font-size:16px}.msg.md h3{font-size:15px}.msg.md h4{font-size:14px}.msg.md ul,.msg.md ol{padding-left:22px}.msg.md li{margin:3px 0}.msg.md a{color:var(--accent);text-decoration:none}.msg.md a:hover{text-decoration:underline}.msg.md code{background:#2a63e814;color:#24509d;padding:1px 5px;border-radius:5px;font-size:.92em;word-break:break-all}.msg.md pre{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;overflow-x:auto}.msg.md pre code{background:none;color:var(--text);padding:0;word-break:normal}.msg.md blockquote{border-left:3px solid var(--chip);color:var(--muted);padding:2px 12px;margin-left:0}.msg.md table{border-collapse:collapse;font-size:13px;display:block;overflow-x:auto;max-width:100%}.msg.md th,.msg.md td{border:1px solid var(--line);padding:6px 10px;text-align:left}.msg.md th{background:var(--panel2)}.msg.md hr{border:none;border-top:1px solid var(--line);margin:12px 0}.msg.md img{max-width:100%;border-radius:8px}.error{align-self:flex-start;background:#fdecec;border:1px solid #f3b6b6;color:#8f1f1f}.empty-chat{flex:1;width:100%;min-height:100%;margin:0;display:grid;place-content:center;color:var(--muted);font-size:14px;text-align:center;line-height:2}details.trace{align-self:stretch;max-width:82%;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:8px 12px;font-size:12px}details.trace summary{cursor:pointer;color:var(--muted);-webkit-user-select:none;user-select:none}details.trace summary .spin{display:inline-block;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.trace .line{padding:3px 0 3px 8px;color:var(--muted);border-left:2px solid var(--chip);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trace .line .agent{color:var(--accent)}.trace .line .okmark{color:var(--ok)}.trace .line .errmark{color:var(--err)}form#form{height:var(--bottombar-h);display:flex;align-items:center;gap:10px;padding:0 18px;border-top:1px solid var(--line);flex:none;background:var(--panel)}input#input{flex:1;padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--panel2);color:var(--text);outline:none;font-size:14px}input#input:focus{border-color:var(--accent);background:#fff}button#send{height:44px;padding:0 22px;border-radius:12px;border:1px solid rgba(42,99,232,.35);background:linear-gradient(180deg,#3b74f2,#2a63e8);color:#fff;cursor:pointer;font-weight:600}button#send:disabled{opacity:.5;cursor:wait}button#send.stop{border-color:#d9484866;background:linear-gradient(180deg,#e05a5a,#cf4444)}input#input:disabled{background:#eef1f6;color:var(--muted);cursor:not-allowed}aside{display:flex;flex-direction:column;overflow:hidden;min-height:0;background:var(--bg)}.aside-head{height:var(--topbar-h);padding:0 16px;border-bottom:1px solid var(--line);flex:none;display:flex;align-items:center;background:var(--panel)}aside h2{font-size:14px;color:var(--muted);margin:0}#artifacts{flex:1;min-height:0;overflow-y:auto;padding:14px 16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px}.card .id{font-weight:700;font-size:13px}.card .meta{color:var(--muted);font-size:12px;margin-top:4px;line-height:1.5}.card a{color:var(--accent);text-decoration:none;font-size:13px}.badge{display:inline-block;border-radius:7px;padding:2px 8px;font-size:11px;margin-left:6px;line-height:1.45;font-weight:700}.badge-version{background:#e5ecfb;color:#294266}.badge-kind{background:#e9f4ef;color:#256046;text-transform:lowercase}.artifact-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.artifact-action{color:var(--accent);font-weight:600}.artifact-action.primary{color:#1d4ed8}.empty{color:var(--muted);font-size:13px}dialog#settingsDialog,dialog#loginDialog{border:1px solid var(--line);border-radius:14px;padding:0;width:min(480px,92vw);color:var(--text)}dialog#settingsDialog::backdrop,dialog#loginDialog::backdrop{background:#141e3259}#settingsForm,#loginForm{padding:20px 22px;display:flex;flex-direction:column;gap:14px}#settingsForm h3,#loginForm h3{margin:0 0 2px;font-size:16px}#settingsForm label,#loginForm label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600}#settingsForm input,#loginForm input{padding:9px 10px;border-radius:9px;border:1px solid var(--line);background:var(--panel2);font-size:13px;outline:none}#settingsForm input:focus,#loginForm input:focus{border-color:var(--accent);background:#fff}#settingsForm small{color:var(--muted);font-weight:400}#settingsForm .note,#loginForm .note{color:var(--muted);font-size:12px}#settingsForm .hint{color:var(--muted);font-size:11px;border-top:1px solid var(--line);padding-top:10px}#settingsForm .actions,#loginForm .actions{display:flex;justify-content:flex-end;gap:10px}#settingsForm .actions button,#loginForm .actions button{padding:8px 18px;border-radius:9px;border:1px solid var(--line);background:var(--panel2);color:var(--text);cursor:pointer;font-size:13px}#settingsForm .actions button.primary,#loginForm .actions button.primary{background:linear-gradient(180deg,#3b74f2,#2a63e8);border-color:#2a63e859;color:#fff;font-weight:600}
