/* 聊天 */
#pane-chat{padding:0;height:calc(100vh - 73px);overflow:hidden}
.chat-layout{display:grid;grid-template-columns:304px minmax(0,1fr);height:100%;min-height:0;background:var(--surface);border-top:1px solid var(--line)}
.chat-sidebar{min-height:0;padding:18px 14px 18px 18px;display:flex;flex-direction:column;gap:14px;border-right:1px solid var(--line);background:var(--surface)}
.chat-sidebar::before{content:"历史对话";display:block;padding:2px 4px 0;color:var(--txt-faint);font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.conv-new-btn{width:100%;justify-content:center;padding:12px 16px;font-size:13.5px;border-radius:16px;box-shadow:none}
.conv-list{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:8px;padding:2px 4px 8px 0}
.conv-list:empty::before{content:"暂无对话，点击上方新建开始聊天";display:block;margin:8px 2px;padding:18px 14px;border:1px dashed var(--glass-brd);border-radius:16px;color:var(--txt-faint);font-size:13px;line-height:1.65;text-align:center;background:var(--field-bg)}
.conv-item{display:flex;align-items:center;gap:10px;padding:12px;border-radius:17px;border:1px solid var(--glass-brd);background:var(--field-bg);transition:border-color .16s var(--ease),background .16s var(--ease)}
.conv-item:hover{background:var(--field-bg-focus);border-color:rgba(255,138,61,.24)}
.conv-item.active{border-color:rgba(255,138,61,.40);background:rgba(255,138,61,.12)}
.conv-item-main{flex:1;min-width:0;cursor:none}
.conv-item-title{font-size:13.5px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em;color:var(--txt)}
.conv-item-meta{font-size:11.5px;color:var(--txt-faint);margin-top:4px}
.conv-del{width:30px;height:30px;border:none;border-radius:12px;background:var(--field-bg);color:var(--txt-faint);font-size:18px;line-height:1;opacity:0;transition:opacity .16s var(--ease),background .16s var(--ease),color .16s var(--ease);cursor:none;flex-shrink:0}
.conv-item:hover .conv-del,.conv-item.active .conv-del{opacity:1}
.conv-del:hover{background:rgba(255,93,126,.18);color:#ffd4dc}
.chat-wrap{position:relative;min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;padding:0 clamp(22px,4vw,72px)}
.chat-wrap::before{display:none}
.msgs{position:relative;z-index:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:22px;padding:34px 0 24px;scrollbar-width:thin;scrollbar-color:rgba(255,138,61,.45) transparent}
.msgs::-webkit-scrollbar,.conv-list::-webkit-scrollbar{width:6px}.msgs::-webkit-scrollbar-thumb,.conv-list::-webkit-scrollbar-thumb{background:rgba(255,138,61,.35);border-radius:99px}
.chat-empty{min-height:100%;display:grid;place-items:center;padding:34px 18px;text-align:center;color:var(--txt-dim)}
.chat-empty-card{width:min(640px,100%);padding:42px 38px;border-radius:28px;background:var(--glass);border:1px solid var(--glass-brd);box-shadow:none}
.chat-empty-icon{width:70px;height:70px;margin:0 auto 22px;border-radius:24px;display:grid;place-items:center;background:linear-gradient(135deg,var(--amber),var(--violet));box-shadow:none;font-size:30px;color:#fff}
.chat-empty h2{font-size:clamp(28px,4vw,44px);line-height:1.08;letter-spacing:-.045em;color:var(--txt);margin-bottom:12px}
.chat-empty h2 span{color:var(--amber)}
.chat-empty p{font-size:15px;line-height:1.75;max-width:470px;margin:0 auto;color:var(--txt-dim)}
.empty-chips{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:24px}.empty-chips button{border:1px solid var(--glass-brd);background:var(--field-bg);color:var(--txt-dim);border-radius:999px;padding:10px 14px;font-family:var(--font);font-size:13px;cursor:none;transition:.22s var(--ease)}.empty-chips button:hover{border-color:rgba(255,138,61,.48);background:rgba(255,138,61,.10);color:var(--amber)}
.msg{display:flex;gap:14px;max-width:min(820px,84%)}
.msg.me{align-self:flex-end;flex-direction:row-reverse}
.msg .msg-body{display:flex;flex-direction:column;gap:9px;min-width:0}
.msg .ava{width:40px;height:40px;border-radius:15px;flex-shrink:0;display:grid;place-items:center;font-size:17px;font-weight:800;overflow:hidden}.msg .ava img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.msg.ai .ava{background:linear-gradient(135deg,var(--amber),var(--violet))}
.msg.me .ava{background:linear-gradient(135deg,var(--teal),var(--violet))}
.bubble{padding:16px 20px;border-radius:20px;font-size:15px;line-height:1.66}
.bubble h1,.bubble h2,.bubble h3,.bubble h4,.bubble h5,.bubble h6{line-height:1.25;margin:18px 0 10px;font-weight:800;letter-spacing:-.02em}
.bubble h1{font-size:28px}.bubble h2{font-size:23px}.bubble h3{font-size:19px}.bubble h4{font-size:16px}.bubble h5,.bubble h6{font-size:15px;color:var(--txt-dim)}
.bubble p{margin:9px 0}.bubble ul,.bubble ol{margin:9px 0 9px 22px}.bubble li{margin:4px 0}.bubble blockquote{margin:12px 0;padding:10px 14px;border-left:3px solid var(--amber);background:rgba(255,138,61,.08);border-radius:10px;color:var(--txt-dim)}
.bubble pre{white-space:pre-wrap;background:rgba(0,0,0,.08);padding:13px 15px;border-radius:13px;overflow:auto;margin:10px 0}.bubble pre code{background:transparent;padding:0;border-radius:0}.bubble code{background:rgba(255,138,61,.10);padding:2px 6px;border-radius:6px}
.bubble table,.kb-preview-content table{width:100%;border-collapse:collapse;margin:12px 0;overflow:hidden;border-radius:12px}.bubble th,.bubble td,.kb-preview-content th,.kb-preview-content td{border:1px solid var(--table-brd,rgba(255,138,61,.45));padding:8px 10px;text-align:left}.bubble th,.kb-preview-content th{background:rgba(255,138,61,.16);color:var(--amber)}.bubble tbody tr:nth-child(even) td,.kb-preview-content tbody tr:nth-child(even) td{background:rgba(255,138,61,.05)}
.bubble hr{border:none;border-top:1px dashed var(--line);margin:16px 0}
.msg.ai .bubble{background:var(--glass);border:1px solid var(--glass-brd);border-top-left-radius:5px}
.chat-img{max-width:220px;max-height:220px;object-fit:cover;border-radius:16px;margin-top:10px;border:1px solid var(--glass-brd);cursor:none;transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.chat-img:hover{transform:translateY(-3px) scale(1.02);box-shadow:0 18px 44px var(--shadow)}
.img-preview{position:fixed;inset:0;z-index:80;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.72);backdrop-filter:blur(14px);padding:28px}
.img-preview.show{display:flex}
.img-preview img{max-width:min(92vw,1100px);max-height:88vh;border-radius:22px;box-shadow:0 30px 100px var(--shadow);border:1px solid var(--glass-brd)}
.img-preview button{position:absolute;top:24px;right:28px;width:44px;height:44px;border-radius:16px;border:1px solid var(--glass-brd);background:rgba(255,255,255,.08);color:#fff;font-size:24px;cursor:none}
.msg.me .bubble{background:linear-gradient(120deg,var(--amber),var(--amber-deep));color:#1a120a;border-top-right-radius:5px;font-weight:500}
.bubble .tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;
  padding:3px 9px;border-radius:100px;margin-bottom:9px;letter-spacing:.03em}
.tag.kb{background:rgba(31,214,179,.16);color:var(--teal)}
.tag.web{background:rgba(108,92,231,.2);color:var(--violet-glow)}
.tag.ai{background:rgba(255,138,61,.16);color:var(--amber)}
.answer-meta{align-self:flex-start;display:flex;flex-wrap:wrap;gap:7px;max-width:100%;padding:8px 10px;border-radius:14px;background:var(--field-bg);border:1px solid var(--glass-brd);color:var(--txt-faint);font-size:12px;line-height:1.2;box-shadow:0 12px 28px var(--shadow);backdrop-filter:blur(12px)}
.answer-meta span{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:999px;background:var(--field-bg);color:var(--txt-dim)}
.answer-meta b{color:var(--amber);font-weight:700}
.bubble .src{margin-top:11px;padding-top:11px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--txt-faint)}
.thinking-panel{min-width:min(560px,72vw);color:var(--txt-dim)}
.thinking-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;background:transparent;color:var(--txt);padding:0 0 8px;font-weight:800;text-align:left;cursor:none}
.thinking-title{display:inline-flex;align-items:center;gap:8px}.thinking-title::before{content:'✧';color:var(--amber);font-size:15px}.thinking-toggle{color:var(--txt-faint);transition:transform .2s var(--ease)}.thinking-panel.collapsed .thinking-toggle{transform:rotate(-90deg)}
.thinking-list{display:grid;gap:8px;margin:0!important;padding:7px 0 0 0!important;list-style:none;border-top:1px solid var(--line)}.thinking-panel.collapsed .thinking-list{display:none}.thinking-item{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:start;font-size:13.5px;line-height:1.6;color:var(--txt-dim)}
.thinking-dot{width:18px;height:18px;display:grid;place-items:center;color:var(--txt-faint);font-size:13px;line-height:1.4}.thinking-item.call .thinking-dot{color:var(--amber)}.thinking-item.result .thinking-dot{color:var(--teal)}.thinking-item.model .thinking-dot{color:var(--violet)}
.thinking-media{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.thinking-img{width:92px;height:92px;object-fit:cover;border-radius:14px;border:1px solid var(--line);box-shadow:0 12px 28px var(--shadow);background:rgba(255,255,255,.04)}.thinking-panel.running .thinking-title::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 0 rgba(255,138,61,.45);animation:thinkPulse 1.4s infinite}@keyframes thinkPulse{70%{box-shadow:0 0 0 8px rgba(255,138,61,0)}100%{box-shadow:0 0 0 0 rgba(255,138,61,0)}}
.typing span{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--amber);margin:0 2px;animation:bob 1s infinite ease-in-out}
.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}
@keyframes bob{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-7px);opacity:1}}

.composer{position:relative;z-index:2;padding:12px 0 24px;background:var(--surface-strong)}
.composer .box{display:flex;gap:12px;align-items:flex-end;padding:12px 12px 12px 16px;border-radius:24px;position:relative;max-width:920px;margin:0 auto;background:var(--glass);border-color:var(--glass-brd);box-shadow:0 18px 54px -28px var(--shadow)}
.composer .box.dragging{outline:2px dashed var(--amber);background:rgba(255,138,61,.08)}
.attach-btn{width:40px;height:40px;border-radius:14px;border:1px solid var(--glass-brd);background:var(--field-bg);color:var(--txt);cursor:none;font-size:18px;display:grid;place-items:center;flex-shrink:0;transition:.22s var(--ease)}
.attach-btn:hover{border-color:rgba(255,138,61,.45);background:rgba(255,138,61,.10);color:var(--amber)}
.attach-list{display:none;gap:8px;flex-wrap:wrap;margin:0 auto 10px;max-width:920px}.attach-list.show{display:flex}
.attach-item{position:relative;width:70px;height:70px;border-radius:14px;overflow:hidden;border:1px solid var(--glass-brd);background:var(--field-bg)}
.attach-item img{width:100%;height:100%;object-fit:cover}.attach-item button{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:none;background:rgba(0,0,0,.62);color:#fff;cursor:none}
.composer textarea{flex:1;background:transparent;border:none;resize:none;color:var(--txt);font-size:15px;
  font-family:var(--font);max-height:130px;line-height:1.5;cursor:none}
.composer textarea:focus{outline:none}
.send{width:48px;height:48px;border-radius:16px;flex-shrink:0;display:grid;place-items:center;font-size:18px;color:#1a120a;
  background:linear-gradient(135deg,var(--amber),var(--amber-deep));border:none;cursor:none;transition:transform .3s var(--ease),box-shadow .3s var(--ease);box-shadow:0 14px 34px -16px var(--amber-deep)}
.send:hover{box-shadow:0 18px 42px -14px var(--amber-deep)}
.send.stop{background:linear-gradient(135deg,var(--rose),#d72e53);color:#fff;box-shadow:0 14px 34px -16px rgba(215,46,83,.72)}
.thinking-item.step .thinking-dot{color:var(--amber)}
body.theme-light .composer .box{background:rgba(255,255,255,.86);border:1px solid rgba(214,180,145,.58);box-shadow:0 18px 48px -30px rgba(116,76,38,.34),inset 0 1px 0 rgba(255,255,255,.82)}
body.theme-light .composer textarea{color:#2a1d13}
body.theme-light .composer textarea::placeholder{color:rgba(84,62,43,.48)}
body.theme-light .composer .attach-btn{background:#fff7ed;color:#a75a22;border-color:rgba(214,180,145,.65)}
body.theme-light .composer .attach-btn:hover{background:#fff0df;color:var(--amber-deep);border-color:rgba(255,138,61,.55)}
body.theme-light .composer .send{box-shadow:0 12px 28px -14px rgba(224,86,31,.62)}
body.theme-light .chat-empty-card{background:rgba(255,250,243,.82)}
body.theme-light #pane-kb .kb-ai-panel .composer .box{background:rgba(255,255,255,.86);border:1px solid rgba(214,180,145,.62);box-shadow:0 18px 48px -30px rgba(116,76,38,.36),inset 0 1px 0 rgba(255,255,255,.82)}
body.theme-light #pane-kb .kb-ai-panel .composer textarea{color:#2a1d13}
body.theme-light #pane-kb .kb-ai-panel .composer textarea::placeholder{color:rgba(84,62,43,.48)}
body.theme-light #pane-kb .kb-ai-panel .composer .attach-btn{background:#fff7ed;color:#a75a22;border-color:rgba(214,180,145,.65)}
body.theme-light #pane-kb .kb-ai-panel .composer .attach-btn:hover{background:#fff0df;color:var(--amber-deep);border-color:rgba(255,138,61,.55)}
body.theme-light #pane-kb .kb-ai-panel .composer .send{box-shadow:0 12px 28px -14px rgba(224,86,31,.62)}

.suggest{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:9px;margin:0 auto 12px;max-width:920px}
.suggest:empty{display:none}
.suggest button{padding:9px 15px;border-radius:100px;background:var(--field-bg);border:1px solid var(--glass-brd);
  color:var(--txt-dim);font-size:13px;font-family:var(--font);cursor:none;transition:.3s}
.suggest button:hover{border-color:var(--amber);color:var(--amber)}
