body{margin:0}:root{--bg:#f7f7f8;--card:#fff;--border:#e5e5e7;--text:#1f1f23;--muted:#8a8a93;--accent:#6d5efc;--accent-soft:#edeaff;--user-bubble:#6d5efc;--ok:#34c759;--running:#ff9f0a}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}.app{flex-direction:column;max-width:760px;height:100vh;margin:0 auto;display:flex}.header{border-bottom:1px solid var(--border);background:var(--card);padding:20px 20px 14px}.header h1{letter-spacing:2px;color:var(--accent);margin:0;font-size:20px}.header p{color:var(--muted);margin:4px 0 0;font-size:13px}.chat{flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow-y:auto}.empty{text-align:center;color:var(--muted);margin:auto}.empty .hint{font-size:13px}.msg{white-space:pre-wrap;word-break:break-word;border-radius:12px;max-width:85%;padding:12px 16px;font-size:15px;line-height:1.6}.msg.user{background:var(--user-bubble);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.msg.assistant{background:var(--card);border:1px solid var(--border);border-bottom-left-radius:4px;align-self:flex-start;width:100%}.answer{margin-top:8px}.error{color:#e5484d;margin-top:8px;font-size:13px}.loading{color:var(--muted);font-size:14px}.progress{flex-direction:column;gap:8px;display:flex}.progress-bar{background:var(--bg);border-radius:2px;height:4px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .3s}.progress-text{color:var(--muted);font-size:13px}.node-dots{flex-wrap:wrap;gap:5px;display:flex}.dot{background:var(--border);border-radius:50%;width:8px;height:8px}.dot.running{background:var(--running);box-shadow:0 0 0 3px #ff9f0a33}.dot.done{background:var(--ok)}.composer{border-top:1px solid var(--border);background:var(--card);gap:10px;padding:14px 20px;display:flex}.composer textarea{resize:none;border:1px solid var(--border);border-radius:10px;outline:none;flex:1;padding:10px 12px;font-family:inherit;font-size:15px;line-height:1.5}.composer textarea:focus{border-color:var(--accent)}.composer button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;align-self:flex-end;padding:10px 20px;font-size:15px}.composer button:disabled{background:var(--border);cursor:not-allowed}
