*{margin:0;padding:0;box-sizing:border-box}
:root{
--bg0:#1b2838;--bg1:#1e2d40;--bg2:#243447;--bg3:#2a3b50;
--bgh:#324560;--tx:#dce4ec;--tx2:#8a9bb0;--tx3:#5a6d82;
--ac:#4a9eff;--ac2:rgba(74,158,255,.12);--ac3:#3a85db;
--bd:#2e4058;--bd2:#3a5068;
--ub:#1e3a5f;--ab:#1c2f42;
--err:#e05252;--ok:#3dc97a;--warn:#f0a030;
}
html,body{height:100%;overflow:hidden}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;background:var(--bg0);color:var(--tx);display:flex;flex-direction:column}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bd);border-radius:3px}
button{font-family:inherit}

.sidebar-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:200}.sidebar-mask.show{display:block}
.sidebar{position:fixed;top:0;left:-320px;width:300px;height:100%;background:var(--bg1);border-right:1px solid var(--bd);z-index:210;display:flex;flex-direction:column;transition:left .25s ease}.sidebar.show{left:0}
.sb-hd{padding:14px 16px;border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between}
.sb-hd-title{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}
.sb-close{background:none;border:none;color:var(--tx2);cursor:pointer;padding:4px;border-radius:4px;display:flex}.sb-close:hover{color:var(--tx);background:var(--bgh)}
.sb-new{margin:10px 12px;padding:9px;background:var(--ac);color:#fff;border:none;border-radius:7px;cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;gap:6px;transition:background .15s}.sb-new:hover{background:var(--ac3)}
.sb-list{flex:1;overflow-y:auto;padding:4px 0}
.sb-group{padding:8px 16px 4px;font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px}
.sb-item{display:flex;align-items:center;padding:9px 12px 9px 16px;cursor:pointer;font-size:13px;color:var(--tx2);transition:all .12s;gap:8px}
.sb-item:hover{background:var(--bgh);color:var(--tx)}.sb-item.act{background:var(--ac2);color:var(--ac)}
.sb-item .pin-ico{display:none;color:var(--warn);flex-shrink:0}.sb-item.pinned .pin-ico{display:flex}
.sb-item-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sb-item-menu{background:none;border:none;color:var(--tx3);cursor:pointer;padding:2px;border-radius:4px;display:flex;flex-shrink:0;transition:color .15s}
.sb-item-menu:hover{color:var(--tx);background:var(--bgh)}
.sb-footer{border-top:1px solid var(--bd);padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.sb-ft-btn{background:transparent;border:1px solid var(--bd);color:var(--tx2);padding:8px 12px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:6px;transition:all .15s;width:100%}.sb-ft-btn:hover{border-color:var(--ac);color:var(--ac)}

.sb-settings{border-top:1px solid var(--bd);padding:10px 12px}
.sb-set-btn{background:transparent;border:1px solid var(--bd);color:var(--tx2);padding:8px 12px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:6px;transition:all .15s;width:100%}.sb-set-btn:hover{border-color:var(--ac);color:var(--ac)}
.sb-set-panel{display:none;padding:10px 0 4px}.sb-set-panel.show{display:block}
.sb-set-label{font-size:11px;color:var(--tx3);padding:4px 4px 6px;display:block}
.color-row{display:flex;gap:6px;flex-wrap:wrap;padding:2px 0 8px}
.color-dot{width:28px;height:28px;border-radius:6px;cursor:pointer;border:2px solid transparent;transition:all .15s}.color-dot:hover{transform:scale(1.1)}.color-dot.act{border-color:var(--ac);box-shadow:0 0 0 2px var(--ac2)}
.sb-danger-btn{background:transparent;border:1px solid var(--err);color:var(--err);padding:8px 12px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:6px;transition:all .15s;width:100%;opacity:.7;margin-top:6px}.sb-danger-btn:hover{opacity:1;background:rgba(224,82,82,.1)}
.sb-danger-btn:disabled{opacity:.3;cursor:not-allowed}

.ctx-menu{display:none;position:fixed;background:var(--bg2);border:1px solid var(--bd);border-radius:8px;min-width:160px;z-index:300;box-shadow:0 8px 24px rgba(0,0,0,.5);padding:4px 0}.ctx-menu.show{display:block}
.ctx-opt{padding:8px 14px;font-size:13px;color:var(--tx2);cursor:pointer;display:flex;align-items:center;gap:8px;transition:all .1s}.ctx-opt:hover{background:var(--bgh);color:var(--tx)}.ctx-opt.danger{color:var(--err)}.ctx-opt.danger:hover{background:rgba(224,82,82,.1)}
.ctx-info{padding:6px 14px;font-size:11px;color:var(--tx3);border-top:1px solid var(--bd);margin-top:2px}

.modal-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:400;align-items:center;justify-content:center}.modal-mask.show{display:flex}
.modal{background:var(--bg2);border:1px solid var(--bd);border-radius:10px;padding:24px;width:340px;max-width:90vw;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.modal h3{font-size:15px;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.modal p{font-size:13px;color:var(--tx2);margin-bottom:16px;line-height:1.5}
.modal-acts{display:flex;gap:8px;justify-content:flex-end}
.modal-btn{padding:7px 18px;border-radius:6px;font-size:13px;cursor:pointer;border:1px solid var(--bd);background:transparent;color:var(--tx2);transition:all .15s}.modal-btn:hover{border-color:var(--tx3);color:var(--tx)}.modal-btn.primary{background:var(--ac);color:#fff;border-color:var(--ac)}.modal-btn.primary:hover{background:var(--ac3)}.modal-btn.danger{background:var(--err);color:#fff;border-color:var(--err)}.modal-btn.danger:hover{background:#c24545}
.rename-inp{width:100%;background:var(--bg3);border:1px solid var(--bd);color:var(--tx);padding:8px 10px;border-radius:6px;font-size:13px;outline:none;margin-bottom:16px;font-family:inherit}.rename-inp:focus{border-color:var(--ac)}
.export-list{max-height:260px;overflow-y:auto;padding:8px 0}
.export-item{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13px;color:var(--tx2);cursor:pointer}.export-item:hover{color:var(--tx)}.export-item input{accent-color:var(--ac)}
.export-acts{display:flex;gap:6px;margin-bottom:8px;font-size:12px}.export-acts button{background:none;border:none;color:var(--ac);cursor:pointer;font-size:12px}.export-acts button:hover{text-decoration:underline}

.hd{background:var(--bg1);border-bottom:1px solid var(--bd);padding:0 16px;height:52px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;z-index:50}
.hd-l{display:flex;align-items:center;gap:8px}
.hd h1{font-size:16px;font-weight:700;white-space:nowrap;color:var(--ac)}
.hd-r{display:flex;align-items:center;gap:6px}
.tb{display:flex;align-items:center;gap:5px;background:var(--bg2);border:1px solid var(--bd);color:var(--tx);padding:6px 11px;border-radius:6px;cursor:pointer;font-size:12px;transition:all .15s;white-space:nowrap;flex-shrink:0;user-select:none}.tb:hover{border-color:var(--ac);background:var(--bgh)}.tb .aw{transition:transform .2s;flex-shrink:0}.tb.on{border-color:var(--ac);background:var(--bgh)}.tb.on .aw{transform:rotate(180deg)}
.tb-s{background:transparent;border:1px solid var(--bd);color:var(--tx2);padding:6px 11px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:4px;transition:all .15s;white-space:nowrap;flex-shrink:0}.tb-s:hover{border-color:var(--tx3);color:var(--tx)}
.ham{background:none;border:none;color:var(--tx2);cursor:pointer;padding:4px;border-radius:5px;display:flex;transition:all .15s}.ham:hover{background:var(--bgh);color:var(--tx)}
.key-short{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle;color:var(--tx2);font-size:11px}

.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:100}.overlay.show{display:block}
.panel{display:none;position:fixed;top:56px;right:16px;background:var(--bg2);border:1px solid var(--bd);border-radius:10px;width:320px;max-height:calc(100vh - 80px);overflow-y:auto;z-index:110;box-shadow:0 12px 40px rgba(0,0,0,.5)}.panel.show{display:block}
.panel-title{padding:14px 16px 8px;font-size:13px;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:8px}
.panel-sec{padding:6px 16px 4px;font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.6px}
.panel-desc{padding:4px 16px 8px;font-size:12px;color:var(--tx3);line-height:1.5}
.panel-row{padding:6px 16px 12px;display:flex;gap:6px}
.panel-inp{flex:1;background:var(--bg3);border:1px solid var(--bd);color:var(--tx);padding:7px 10px;border-radius:6px;font-size:13px;outline:none;font-family:inherit}.panel-inp:focus{border-color:var(--ac)}.panel-inp::placeholder{color:var(--tx3)}
.panel-inp-sm{font-size:11px;padding:6px 9px}
.panel-apply{background:var(--ac);color:#fff;border:none;padding:7px 14px;border-radius:6px;font-size:12px;cursor:pointer;white-space:nowrap;flex-shrink:0}.panel-apply:hover{background:var(--ac3)}
.panel-opt{display:flex;align-items:center;gap:8px;padding:8px 16px;cursor:pointer;font-size:13px;color:var(--tx2);transition:all .12s}.panel-opt:hover{background:var(--bgh);color:var(--tx)}.panel-opt.act{color:var(--ac);background:var(--ac2)}
.panel-opt .ck{opacity:0;color:var(--ac);flex-shrink:0;margin-left:auto}.panel-opt.act .ck{opacity:1}
.panel-opt .m-logo{width:20px;height:20px;flex-shrink:0;border-radius:4px;object-fit:contain;background:transparent}
.panel-opt .m-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.panel-btn{margin:4px 16px 12px;padding:8px;background:transparent;border:1px solid var(--bd);color:var(--tx2);border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;gap:5px;transition:all .15s;width:calc(100% - 32px)}.panel-btn:hover{border-color:var(--ac);color:var(--ac)}
.panel-sep{height:1px;background:var(--bd);margin:4px 16px}
.spin{animation:sp .8s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}

.chat{flex:1;overflow-y:auto;padding:20px 20px 10px;display:flex;flex-direction:column;gap:16px}
.welcome{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--tx2);text-align:center;padding:40px 20px}
.welcome h2{font-size:18px;color:var(--tx);font-weight:600}
.welcome p{font-size:13px;max-width:420px;line-height:1.7;color:var(--tx3)}

.mr{display:flex;gap:10px;max-width:78%;animation:fu .25s ease;position:relative}
@keyframes fu{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.mr.user{align-self:flex-end;flex-direction:row-reverse}.mr.ai{align-self:flex-start}
.av{width:32px;height:32px;border-radius:7px;flex-shrink:0;display:flex;align-items:center;justify-content:center;margin-top:1px;overflow:hidden;background:transparent;position:relative}
.av.u{background:var(--ub)}
.av img{width:100%;height:100%;object-fit:contain;padding:3px}
.ai-label{font-size:11px;color:var(--tx3);margin-bottom:2px}
.bub-wrap{display:flex;flex-direction:column;min-width:0;flex:1}
.bub{padding:10px 14px;border-radius:10px;font-size:14px;line-height:1.75;word-break:break-word;overflow-wrap:break-word;min-width:0}
.mr.user .bub{background:var(--ub);color:#d4e4f7;border-top-right-radius:3px}
.mr.ai .bub{background:var(--ab);color:var(--tx);border-top-left-radius:3px;border:1px solid var(--bd)}
.msg-imgs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.msg-img{max-width:200px;max-height:150px;border-radius:6px;cursor:pointer;transition:transform .15s}
.msg-img:hover{transform:scale(1.02)}

/* 加载动画 */
.loading-dot{position:absolute;left:-14px;top:14px;width:8px;height:8px;border-radius:50%;background:var(--tx3);animation:pulse 1s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(.6);opacity:.4}50%{transform:scale(1.2);opacity:1}}

/* 消息框等待动画 */
.loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--tx3);border-radius:50%;border-top-color:var(--ac);animation:spin 1s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* 底部操作栏 */
.ai-actions{display:flex;align-items:center;gap:8px;margin-top:4px;padding:2px 0}
.ai-act-btn{background:none;border:none;color:var(--tx3);cursor:pointer;padding:3px;border-radius:4px;display:flex;align-items:center;gap:3px;font-size:11px;transition:all .15s}.ai-act-btn:hover{color:var(--ac);background:var(--bgh)}
.ai-nav{display:flex;align-items:center;gap:2px;font-size:11px;color:var(--tx3)}
.ai-nav button{background:none;border:none;color:var(--tx3);cursor:pointer;padding:2px;display:flex;border-radius:3px}.ai-nav button:hover{color:var(--ac);background:var(--bgh)}
.ai-nav span{min-width:30px;text-align:center}

.msg-copy{position:absolute;left:-30px;top:50%;transform:translateY(-50%);background:var(--bg2);border:1px solid var(--bd);color:var(--tx3);width:24px;height:24px;border-radius:5px;cursor:pointer;display:none;align-items:center;justify-content:center;transition:all .15s;padding:0}
.mr.user .msg-copy{left:auto;right:-30px}
.mr:hover .msg-copy{display:flex}
.msg-copy:hover{color:var(--ac);border-color:var(--ac)}
.msg-copy.ok{color:var(--ok);border-color:var(--ok)}

.ftags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.ftag{display:flex;align-items:center;gap:4px;background:var(--bgh);padding:3px 9px;border-radius:5px;font-size:11px;color:var(--tx2)}
.thblk{margin-bottom:8px}
.thtog{display:inline-flex;align-items:center;gap:5px;cursor:pointer;color:var(--tx3);font-size:12px;user-select:none;padding:2px 0}.thtog:hover{color:var(--ac)}
.thtog .tri{display:inline-flex;transition:transform .2s}.thtog .tri.op{transform:rotate(90deg)}
.thbd{display:none;margin-top:5px;padding:8px 11px;background:rgba(74,158,255,.05);border-left:2px solid rgba(74,158,255,.25);border-radius:0 5px 5px 0;font-size:12px;color:var(--tx3);line-height:1.65;white-space:pre-wrap;max-height:300px;overflow-y:auto}.thbd.show{display:block}

.iarea{background:var(--bg1);border-top:1px solid var(--bd);padding:12px 20px 14px;flex-shrink:0}
.iwrap{max-width:860px;margin:0 auto;display:flex;flex-direction:column;gap:7px}
.abar{display:flex;flex-wrap:wrap;gap:6px}
.achip{display:flex;align-items:center;gap:5px;background:var(--bg2);border:1px solid var(--bd);padding:4px 10px;border-radius:5px;font-size:12px;color:var(--tx2)}
.arm{cursor:pointer;display:flex;align-items:center;padding:1px;color:var(--tx3);transition:color .15s}.arm:hover{color:var(--err)}
.irow{display:flex;align-items:flex-end;gap:8px}
.bico{width:36px;height:36px;border:none;background:transparent;color:var(--tx3);cursor:pointer;border-radius:7px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.bico:hover{background:var(--bgh);color:var(--ac)}
textarea{flex:1;background:var(--bg3);border:1px solid var(--bd);border-radius:8px;padding:9px 13px;color:var(--tx);font-size:14px;resize:none;outline:none;font-family:inherit;line-height:1.5;min-height:40px;max-height:160px;transition:border-color .15s}textarea:focus{border-color:var(--ac)}textarea::placeholder{color:var(--tx3)}
.bsend{width:40px;height:40px;border:none;background:var(--ac);color:#fff;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.bsend:hover{background:var(--ac3)}.bsend:disabled{opacity:.35;cursor:not-allowed}
.bsend.stop{background:var(--err)}.bsend.stop:hover{background:#c24545}
.hid{display:none}

.md{font-size:14px;line-height:1.75}.md>*:first-child{margin-top:0!important}.md>*:last-child{margin-bottom:0!important}
.md h1{font-size:1.4em;font-weight:700;margin:20px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--bd)}.md h2{font-size:1.25em;font-weight:700;margin:18px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--bd)}.md h3{font-size:1.12em;font-weight:600;margin:14px 0 4px}.md h4,.md h5,.md h6{font-size:1em;font-weight:600;margin:10px 0 4px;color:var(--tx2)}
.md p{margin:6px 0;line-height:1.8}.md a{color:var(--ac);text-decoration:none}.md a:hover{text-decoration:underline}
.md strong{font-weight:700;color:#eef0f6}.md em{font-style:italic;color:var(--tx2)}.md del{text-decoration:line-through;color:var(--tx3)}.md mark{background:rgba(255,213,79,.25);color:var(--tx);padding:1px 4px;border-radius:2px}
.md blockquote{margin:8px 0;padding:6px 14px;border-left:3px solid var(--bd2);color:var(--tx2);background:rgba(255,255,255,.02);border-radius:0 4px 4px 0}.md blockquote p{margin:2px 0}
.md ul,.md ol{margin:6px 0;padding-left:22px}.md li{margin:3px 0;line-height:1.7}.md input[type=checkbox]{margin-right:5px;accent-color:var(--ac);pointer-events:none}
.md hr{border:none;border-top:1px solid var(--bd);margin:14px 0}
.md code{background:rgba(255,255,255,.08);padding:2px 6px;border-radius:4px;font-size:.86em;font-family:'SF Mono','Fira Code',Consolas,monospace;color:#e8b0b0}.md sup{font-size:.75em}
.cblk{margin:10px 0;border-radius:7px;overflow:hidden;border:1px solid var(--bd);background:#0c1520}
.cblk-hd{display:flex;justify-content:space-between;align-items:center;padding:5px 12px;background:rgba(255,255,255,.03);border-bottom:1px solid var(--bd);font-size:11px;color:var(--tx3);min-height:32px;flex-wrap:wrap;gap:4px}
.cblk-acts{display:flex;gap:3px}
.cbtn{background:transparent;border:1px solid var(--bd);color:var(--tx3);padding:3px 9px;border-radius:4px;cursor:pointer;font-size:11px;transition:all .15s;display:flex;align-items:center;gap:3px;white-space:nowrap}.cbtn:hover{color:var(--ac);border-color:var(--ac)}.cbtn.ok{color:var(--ok);border-color:var(--ok)}
.cblk pre{margin:0;background:transparent}.cblk pre code{display:block;padding:12px 14px;overflow-x:auto;background:transparent;color:#c9d1d9;border-radius:0;font-size:.84em;line-height:1.65}
.md .twrap{overflow-x:auto;margin:10px 0;border:1px solid var(--bd);border-radius:6px}.md table{border-collapse:collapse;width:100%;font-size:13px}.md thead th{background:var(--bgh);font-weight:600;text-align:left}.md th,.md td{border:1px solid var(--bd);padding:7px 12px}

@media(max-width:640px){.mr{max-width:93%}.hd{padding:0 10px}.chat{padding:12px}.iarea{padding:8px 12px 10px}.panel{right:8px;left:8px;width:auto}.sidebar{width:280px}.msg-copy{display:none!important}}