:root{--bg:#0d1117;--panel:#161b22;--panel-2:#1c2330;--border:#2a3140;--text:#e6edf3;--muted:#8b949e;--accent:#4f8ef7;--user-bubble:#274b8f;--assistant-bubble:#22293a;--danger:#f85149}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}.container{display:flex;flex-direction:column;height:100dvh;max-width:860px;margin:0 auto;border-left:1px solid var(--border);border-right:1px solid var(--border);background:var(--bg)}.header{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--panel);flex-shrink:0}.header .dot{width:9px;height:9px;border-radius:50%;background:#3fb950;box-shadow:0 0 6px #3fb95088}.header .dot.off{background:var(--danger);box-shadow:none}.header h1{font-size:16px;margin:0;font-weight:600}.header .sub{color:var(--muted);font-size:12px}.banner{padding:8px 18px;font-size:12px;color:#d29922;background:#2d2410;border-bottom:1px solid var(--border);flex-shrink:0}.messages{flex:1 1;overflow-y:auto;padding:18px 16px;gap:14px}.messages,.msg{display:flex;flex-direction:column}.msg{max-width:78%}.msg.user{align-self:flex-end;align-items:flex-end}.msg.assistant{align-self:flex-start;align-items:flex-start}.msg .who{font-size:11px;color:var(--muted);margin-bottom:4px}.bubble{padding:10px 14px;border-radius:14px;line-height:1.6;font-size:14px}.msg.user .bubble{background:var(--user-bubble);border-bottom-right-radius:4px}.msg.assistant .bubble{background:var(--assistant-bubble);border:1px solid var(--border);border-bottom-left-radius:4px}.bubble.empty-text{display:none}.attachments{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;justify-content:inherit}.msg.user .attachments{justify-content:flex-end}.attachment img{max-width:240px;max-height:240px;border-radius:10px;border:1px solid var(--border);display:block;cursor:zoom-in}.attachment a.file{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:13px;text-decoration:none}.attachment a.file:hover{border-color:var(--accent)}.attachment .size{color:var(--muted);font-size:11px}.time{font-size:10px;color:var(--muted);margin-top:4px}.composer{border-top:1px solid var(--border);background:var(--panel);padding:12px 14px;flex-shrink:0}.pending-files{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.pending-chip{font-size:12px;background:var(--panel-2);border:1px solid var(--border);padding:4px 10px;border-radius:999px}.pending-chip button{background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px;padding:0}.pending-chip button:hover{color:var(--danger)}.composer-row{display:flex;gap:8px;align-items:flex-end}.composer textarea{flex:1 1;resize:none;background:var(--panel-2);border:1px solid var(--border);border-radius:12px;color:var(--text);padding:10px 12px;font-size:14px;font-family:inherit;line-height:1.5;max-height:140px;outline:none}.composer textarea:focus{border-color:var(--accent)}.icon-btn,.send-btn{border:none;border-radius:12px;cursor:pointer;font-size:14px;height:42px}.icon-btn{width:42px;background:var(--panel-2);border:1px solid var(--border);color:var(--text)}.icon-btn:hover{border-color:var(--accent)}.send-btn{padding:0 20px;background:var(--accent);color:#fff;font-weight:600}.send-btn:disabled{opacity:.5;cursor:not-allowed}.key-gate{flex:1 1;display:flex;align-items:center;justify-content:center;padding:20px}.key-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:28px;width:100%;max-width:380px;display:flex;flex-direction:column;gap:12px}.key-card h2{margin:0;font-size:16px}.key-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.6}.key-card input{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:10px 12px;font-size:14px;outline:none}.key-card input:focus{border-color:var(--accent)}.key-card .err{color:var(--danger);font-size:12px}.status-line{font-size:11px;color:var(--muted);margin-top:6px;min-height:14px}.status-line.error{color:var(--danger)}.empty-hint{color:var(--muted);font-size:13px;text-align:center;margin:auto;line-height:1.8}.container{position:relative}.messages{scroll-behavior:auto;overscroll-behavior:contain}.bubble{white-space:pre-wrap;word-break:break-word}.bubble a{color:#9cc3ff;text-decoration:underline;word-break:break-all}.day-sep{align-self:center;font-size:12px;color:var(--muted);padding:2px 10px;margin:8px 0;border-radius:10px;background:var(--panel)}.attachment.media img,.attachment.media video{max-width:min(320px,70vw);max-height:360px;border-radius:10px;display:block;background:#000}.attachment audio{max-width:min(320px,70vw)}.file-sub{display:block;font-size:11px;color:var(--muted);margin-top:3px;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}.attachment .file{display:inline-flex;align-items:center;gap:8px;max-width:320px}.file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg.outgoing .bubble{opacity:.85}.msg.outgoing.failed .bubble{outline:1px solid var(--danger)}.attachment.local{display:flex;flex-direction:column}.thumb{width:120px;height:90px;object-fit:cover;border-radius:8px;background:var(--panel-2);display:flex;align-items:center;justify-content:center;font-size:28px}.pending-chip .thumb{width:36px;height:36px;font-size:18px;border-radius:6px}.pending-chip{display:inline-flex;align-items:center;gap:6px;max-width:260px}.chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.send-state{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-top:4px}.send-state.failed{color:var(--danger)}.send-state button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:2px 10px;font-size:12px;cursor:pointer}.progress{width:120px;height:4px;border-radius:2px;background:var(--panel-2);overflow:hidden}.progress>div{height:100%;transition:width .2s}.jump,.progress>div{background:var(--accent)}.jump{right:20px;bottom:96px;color:#fff;border:none;border-radius:16px;padding:6px 14px;font-size:13px;cursor:pointer;box-shadow:0 2px 8px #0006;z-index:5}.drop-mask,.jump{position:absolute}.drop-mask{inset:0;background:#0d1117cc;border:2px dashed var(--accent);display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--text);z-index:10;pointer-events:none}@media (max-width:600px){.container{border:none}.attachment.media img,.attachment.media video{max-width:75vw}.jump{bottom:110px}}.msg{content-visibility:auto;contain-intrinsic-size:auto 120px}.attachment.media img{height:auto}.agentbar{display:flex;align-items:center;gap:8px;padding:6px 14px;font-size:12.5px;border-bottom:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.03);color:var(--muted)}.agentbar .agentdot{width:8px;height:8px;border-radius:50%;background:#888;flex:none}.agentbar.ok .agentdot{background:#3ccf6e}.agentbar.work .agentdot{background:#f2b33d;animation:agentpulse 1s infinite alternate}.agentbar.wait .agentdot{background:#f07a3a;animation:agentpulse .6s infinite alternate}.agentbar.ok{color:#9fe0b4}.agentbar.work{color:#f2d08a}.agentbar.wait{color:#f5a77a}.agentbar .agentage{margin-left:auto;opacity:.6;font-size:11px}@keyframes agentpulse{0%{opacity:1}to{opacity:.3}}