:root{
  --bg:#0b0e1a;--s1:#111525;--s2:#181d31;--s3:#1f2540;
  --border:#252c48;--border2:#2e3760;
  --text:#e4eaff;--dim:#5a6490;--dim2:#8892bb;
  --accent:#6c8fff;--pink:#f472b6;--green:#3ddc97;
  --yellow:#fbbf24;--orange:#f97316;--red:#ef4565;--purple:#a78bfa;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:'Inter','PingFang SC','Microsoft YaHei',sans-serif;height:100vh;display:flex;flex-direction:column;overflow:hidden;}

/* ── 顶栏 ── */
header{background:var(--s1);border-bottom:1px solid var(--border);padding:10px 20px;display:flex;align-items:center;gap:12px;flex-shrink:0;}
header .logo{font-weight:700;font-size:15px;color:var(--accent);letter-spacing:.5px;}
header .badge{background:var(--s3);border:1px solid var(--border2);padding:3px 12px;border-radius:20px;font-size:12px;color:var(--dim2);}
header .sep{flex:1;}
.agent-tag{display:flex;align-items:center;gap:8px;font-size:13px;}
.agent-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);}
.status-sel{background:var(--s2);border:1px solid var(--border);color:var(--text);font-size:12px;padding:4px 10px;border-radius:6px;cursor:pointer;}
/* ── 模式切换器 ── */
.mode-switcher{display:flex;gap:4px;align-items:center;}
.mode-btn{display:flex;align-items:center;gap:5px;padding:5px 11px;border-radius:7px;border:1px solid var(--border2);background:var(--s2);color:var(--dim2);font-size:12px;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap;position:relative;}
.mode-btn:hover{background:var(--s3);color:var(--text);}
.mode-btn.active{color:#fff;border-color:transparent;}
.mode-btn.active.m-ai    {background:linear-gradient(135deg,#4f46e5,#6c8fff);box-shadow:0 0 10px rgba(108,143,255,.4);}
.mode-btn.active.m-human {background:linear-gradient(135deg,#0d9488,#3ddc97);box-shadow:0 0 10px rgba(61,220,151,.35);}
.mode-btn.active.m-review{background:linear-gradient(135deg,#b45309,#fbbf24);box-shadow:0 0 10px rgba(251,191,36,.35);}
.mode-btn.active.m-assist{background:linear-gradient(135deg,#7c3aed,#a78bfa);box-shadow:0 0 10px rgba(167,139,250,.35);}
.mode-btn .mi{font-size:13px;line-height:1;}
/* 模式 tooltip */
.mode-tip{position:absolute;top:calc(100% + 8px);right:50%;transform:translateX(50%);min-width:190px;background:#1b2240;border:1px solid var(--border2);border-radius:10px;padding:10px 13px;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .18s,visibility .18s;z-index:9999;box-shadow:0 8px 28px rgba(0,0,0,.55);}
.mode-btn:hover .mode-tip{opacity:1;visibility:visible;}
.mode-tip::before{content:'';position:absolute;bottom:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-bottom-color:#2e3760;}
.mode-tip-title{font-size:12.5px;font-weight:700;color:var(--text);margin-bottom:5px;}
.mode-tip-desc{font-size:11px;color:var(--dim2);line-height:1.65;}

/* ── 登录遮罩 ── */
#loginOverlay{position:fixed;inset:0;background:rgba(11,14,26,.97);display:flex;align-items:center;justify-content:center;z-index:999;}
.login-box{background:var(--s1);border:1px solid var(--border2);border-radius:16px;padding:40px 36px;width:360px;display:flex;flex-direction:column;gap:20px;}
.login-box h2{font-size:20px;font-weight:700;color:var(--text);text-align:center;}
.login-box .sub{font-size:12px;color:var(--dim2);text-align:center;margin-top:-12px;}
.form-group{display:flex;flex-direction:column;gap:6px;}
.form-group label{font-size:12px;color:var(--dim2);}
.form-input{background:var(--s2);border:1px solid var(--border2);color:var(--text);padding:10px 14px;border-radius:8px;font-size:14px;width:100%;}
.form-input:focus{outline:none;border-color:var(--accent);}
.btn-login{background:var(--accent);color:#fff;border:none;padding:12px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s;}
.btn-login:hover{opacity:.85;}
.login-hint{font-size:11px;color:var(--dim);text-align:center;}

/* ── 主布局 ── */
main{flex:1;display:grid;grid-template-columns:280px 1fr 280px;overflow:hidden;}

/* ── 左：会话队列 ── */
.conv-panel{background:var(--s1);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;}
.panel-hdr{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;}
.panel-hdr .title{font-size:13px;font-weight:600;}
.cnt-badge{background:var(--accent);color:#fff;font-size:10px;padding:1px 7px;border-radius:10px;margin-left:auto;}
.search-bar{padding:10px 12px;border-bottom:1px solid var(--border);}
.search-bar input{width:100%;background:var(--s2);border:1px solid var(--border);color:var(--text);padding:7px 10px;border-radius:7px;font-size:12px;}
.search-bar input:focus{outline:none;border-color:var(--accent);}
.conv-list{flex:1;overflow-y:auto;}
/* Telegram 状态条 */
.tg-bar{display:flex;align-items:center;gap:6px;padding:5px 12px;background:rgba(0,136,204,.08);border-bottom:1px solid rgba(0,136,204,.15);font-size:11px;}
.tg-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;transition:background .3s;}
.tg-dot.connecting{background:#fbbf24;animation:tgpulse .8s ease-in-out infinite alternate;}
.tg-dot.ok{background:#3ddc97;}
.tg-dot.err{background:#ef4565;}
@keyframes tgpulse{from{opacity:.4}to{opacity:1}}
.tg-label{flex:1;color:var(--dim2);}
.tg-unread{background:var(--accent);color:#fff;border-radius:10px;padding:0 6px;font-size:10px;font-weight:700;display:none;}
.tg-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#0088cc,#22d3ee);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff;flex-shrink:0;border:2px solid rgba(0,136,204,.4);overflow:hidden;}
.cv-tg-badge{font-size:9px;background:rgba(0,136,204,.2);color:#22d3ee;border:1px solid rgba(0,136,204,.3);padding:1px 6px;border-radius:8px;margin-left:4px;}
.conv-item{padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s;position:relative;}
.conv-item:hover{background:var(--s2);}
.conv-item.active{background:var(--s3);border-left:3px solid var(--accent);}
.conv-item.unread .conv-name::after{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-left:6px;vertical-align:middle;}
.conv-name{font-size:13px;font-weight:600;margin-bottom:4px;display:flex;align-items:center;}
.conv-preview{font-size:11px;color:var(--dim2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;}
.conv-meta{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--dim);}
.risk-tag{padding:1px 7px;border-radius:10px;font-size:10px;font-weight:600;}
.risk-高{background:rgba(239,69,101,.18);color:var(--red);}
.risk-中{background:rgba(251,191,36,.14);color:var(--yellow);}
.risk-低{background:rgba(61,220,151,.14);color:var(--green);}
.stage-dot{width:6px;height:6px;border-radius:50%;display:inline-block;}

/* ── 中：聊天区域 ── */
.chat-panel{display:flex;flex-direction:column;overflow:hidden;}
.chat-hdr{padding:12px 18px;border-bottom:1px solid var(--border);background:var(--s1);display:flex;align-items:center;gap:10px;flex-shrink:0;}
.chat-hdr .conv-id{font-size:13px;font-weight:600;}
.chat-hdr .conv-stage{font-size:11px;color:var(--dim2);}
.chat-hdr .hdr-actions{margin-left:auto;display:flex;gap:8px;}
.btn-sm{padding:5px 12px;border-radius:6px;border:1px solid var(--border2);background:var(--s2);color:var(--text);font-size:12px;cursor:pointer;transition:background .15s;}
.btn-sm:hover{background:var(--s3);}
.btn-sm.danger{border-color:rgba(239,69,101,.4);color:var(--red);}
.btn-sm.primary{background:var(--accent);border-color:var(--accent);color:#fff;}

.chat-msgs{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:14px;}
.msg{display:flex;gap:10px;max-width:75%;}
.msg.user{align-self:flex-start;}
.msg.ai{align-self:flex-start;}
.msg.agent{align-self:flex-end;flex-direction:row-reverse;}
.msg.system{align-self:center;max-width:90%;}
.msg-avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;}
.av-user{background:linear-gradient(135deg,#f472b6,#a78bfa);}
.av-ai{background:linear-gradient(135deg,#6c8fff,#00d2ff);}
.av-agent{background:linear-gradient(135deg,#3ddc97,#00d2ff);}
.msg-bubble{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:9px 13px;font-size:13px;line-height:1.6;}
.msg.agent .msg-bubble{background:rgba(108,143,255,.15);border-color:rgba(108,143,255,.35);}
.msg.system .msg-bubble{background:transparent;border:1px dashed var(--border2);color:var(--dim2);font-size:11px;text-align:center;width:100%;}
.msg-time{font-size:10px;color:var(--dim);margin-top:3px;}
.msg-role{font-size:10px;color:var(--dim2);margin-bottom:2px;}

.chat-system-notice{background:rgba(251,191,36,.07);border:1px solid rgba(251,191,36,.2);border-radius:8px;padding:10px 14px;margin:0 18px;font-size:12px;color:var(--yellow);display:flex;align-items:center;gap:8px;flex-shrink:0;}

.chat-input-area{padding:14px 18px;border-top:1px solid var(--border);background:var(--s1);flex-shrink:0;}
.input-toolbar{display:flex;gap:8px;margin-bottom:8px;}
/* 快捷回复 legacy 占位 */
.quick-reply-btn{display:none;}
/* ── 媒体附件工具栏 ── */
.media-toolbar{display:flex;gap:6px;margin-bottom:8px;align-items:center;}
.media-btn{display:flex;align-items:center;gap:5px;padding:5px 12px;border-radius:7px;border:1px solid var(--border2);background:var(--s2);color:var(--dim2);font-size:12px;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap;}
.media-btn:hover{background:var(--s3);color:var(--text);border-color:var(--accent);}
.media-btn .mb-icon{font-size:14px;}
/* ── 媒体选择弹窗 ── */
.media-picker-mask{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9990;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .18s,visibility .18s;}
.media-picker-mask.open{opacity:1;visibility:visible;}
.media-picker{width:640px;max-height:80vh;background:var(--s1);border:1px solid var(--border2);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.6);}
.mp-head{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);gap:10px;}
.mp-title{font-size:14px;font-weight:700;flex:1;}
.mp-close{background:none;border:none;color:var(--dim2);font-size:18px;cursor:pointer;padding:0 4px;line-height:1;}
.mp-close:hover{color:var(--text);}
.mp-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0;}
.mp-tab{flex:1;text-align:center;padding:10px;font-size:12px;font-weight:600;cursor:pointer;color:var(--dim2);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;}
.mp-tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.mp-body{flex:1;overflow-y:auto;padding:16px;}
/* 本地上传 */
.mp-upload-zone{border:2px dashed var(--border2);border-radius:10px;padding:36px 20px;text-align:center;cursor:pointer;transition:all .2s;color:var(--dim2);font-size:13px;}
.mp-upload-zone:hover,.mp-upload-zone.drag-over{border-color:var(--accent);background:rgba(108,143,255,.05);color:var(--text);}
.mp-upload-zone .muz-icon{font-size:36px;margin-bottom:10px;display:block;}
.mp-upload-zone .muz-sub{font-size:11px;color:var(--dim);margin-top:6px;}
.mp-upload-btn{margin-top:14px;background:var(--accent);border:none;color:#fff;padding:8px 22px;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;}
.mp-uploaded-list{margin-top:14px;display:flex;flex-direction:column;gap:6px;}
.mp-file-row{display:flex;align-items:center;gap:10px;background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;}
.mp-file-thumb{width:36px;height:36px;border-radius:6px;object-fit:cover;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
.mp-file-name{flex:1;font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mp-file-size{font-size:10px;color:var(--dim2);flex-shrink:0;}
.mp-file-use{background:var(--accent);border:none;color:#fff;padding:4px 12px;border-radius:5px;font-size:11px;cursor:pointer;flex-shrink:0;}
/* 服务器内容 */
.mp-server-search{width:100%;background:var(--s2);border:1px solid var(--border2);color:var(--text);padding:8px 12px;border-radius:7px;font-size:12px;margin-bottom:12px;}
.mp-server-search:focus{outline:none;border-color:var(--accent);}
.mp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;}
.mp-grid-item{border:1px solid var(--border);border-radius:8px;overflow:hidden;cursor:pointer;transition:all .15s;background:var(--s2);}
.mp-grid-item:hover{border-color:var(--accent);box-shadow:0 0 0 2px rgba(108,143,255,.2);}
.mp-grid-item.selected{border-color:var(--accent);box-shadow:0 0 0 2px rgba(108,143,255,.35);}
.mp-grid-thumb{width:100%;height:80px;object-fit:cover;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:28px;}
.mp-grid-name{font-size:10px;padding:5px 7px;color:var(--dim2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mp-script-item{background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;cursor:pointer;transition:all .15s;margin-bottom:6px;}
.mp-script-item:hover{border-color:var(--accent);background:var(--s3);}
.mp-script-item.selected{border-color:var(--accent);background:rgba(108,143,255,.07);}
.mp-script-tag{font-size:10px;color:var(--dim2);margin-bottom:4px;}
.mp-script-text{font-size:12px;color:var(--text);line-height:1.55;}
.mp-recent-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.mp-recent-hd span{font-size:11px;color:var(--dim2);}
.mp-recent-clear{background:none;border:1px solid var(--border2);color:var(--dim2);font-size:10px;padding:2px 9px;border-radius:5px;cursor:pointer;}
.mp-recent-clear:hover{color:var(--red);border-color:rgba(239,69,101,.4);}
.mp-empty{text-align:center;padding:48px 20px;color:var(--dim2);}
.mp-empty-icon{font-size:36px;margin-bottom:12px;}
.mp-empty-sub{font-size:11px;margin-top:6px;color:var(--dim);}
.mp-recent-badge{font-size:9px;background:var(--accent);color:#fff;border-radius:10px;padding:0 5px;margin-left:4px;vertical-align:middle;}
.mp-footer{padding:12px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0;}
.mp-cancel{background:var(--s2);border:1px solid var(--border2);color:var(--dim2);padding:7px 18px;border-radius:7px;font-size:12px;cursor:pointer;}
.mp-confirm{background:var(--accent);border:none;color:#fff;padding:7px 22px;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;}
.mp-confirm:disabled{opacity:.4;cursor:not-allowed;}
.input-row{display:flex;gap:8px;align-items:flex-end;}
.msg-textarea{flex:1;background:var(--s2);border:1px solid var(--border2);color:var(--text);padding:10px 14px;border-radius:8px;font-size:13px;resize:none;height:72px;font-family:inherit;line-height:1.5;}
.msg-textarea:focus{outline:none;border-color:var(--accent);}
.btn-send{background:var(--accent);border:none;color:#fff;padding:10px 18px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;height:72px;white-space:nowrap;}
.btn-send:hover{opacity:.85;}

/* ── 右：用户画像 ── */
.profile-panel{background:var(--s1);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;}
.profile-section{padding:14px 16px;border-bottom:1px solid var(--border);}
.profile-section h4{font-size:11px;font-weight:600;color:var(--dim2);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px;}
.user-hero{display:flex;align-items:center;gap:12px;}
.user-avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#f472b6,#a78bfa);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;}
.user-name{font-size:15px;font-weight:600;}
.user-id{font-size:11px;color:var(--dim2);margin-top:2px;}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;}
.stat-box{background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;}
.stat-label{font-size:10px;color:var(--dim2);margin-bottom:3px;}
.stat-val{font-size:16px;font-weight:700;}
.stage-pill{padding:4px 12px;border-radius:12px;font-size:11px;font-weight:600;display:inline-block;margin-top:6px;}
.sp-collecting{background:rgba(108,143,255,.2);color:var(--accent);}
/* ── 关系阶段卡片 ── */
.rs-progress-track{display:flex;align-items:flex-start;margin:10px 0 6px;position:relative;}
.rs-prog-node{display:flex;flex-direction:column;align-items:center;flex:1;position:relative;z-index:1;}
.rs-prog-dot{width:10px;height:10px;border-radius:50%;background:var(--s3);border:2px solid var(--border2);transition:all .3s;}
.rs-prog-dot.active{background:var(--accent);border-color:var(--accent);box-shadow:0 0 6px rgba(108,143,255,.5);}
.rs-prog-dot.done{background:var(--green);border-color:var(--green);}
.rs-prog-line{position:absolute;top:4px;left:50%;right:-50%;height:2px;background:var(--border2);z-index:0;width:100%;}
.rs-prog-line.done{background:var(--green);}
.rs-prog-label{font-size:9px;color:var(--dim2);margin-top:5px;white-space:nowrap;}
.rs-prog-label.active{color:var(--accent);font-weight:600;}
.rs-prog-label.done{color:var(--green);}
.rs-metric-row{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:8px 0;}
.rs-metric{background:var(--s2);border:1px solid var(--border);border-radius:7px;padding:7px 9px;}
.rs-metric-name{font-size:9px;color:var(--dim2);margin-bottom:4px;}
.rs-metric-bar{height:4px;background:var(--s3);border-radius:3px;overflow:hidden;}
.rs-metric-fill{height:100%;border-radius:3px;transition:width .4s;}
.rs-metric-val{font-size:11px;font-weight:600;margin-top:3px;}
.rs-checklist{margin:6px 0;display:flex;flex-direction:column;gap:3px;}
.rs-check{font-size:10px;display:flex;align-items:flex-start;gap:5px;line-height:1.5;}
.rs-check.met{color:var(--green);}
.rs-check.unmet{color:var(--dim2);}
.rs-risks{margin:6px 0;display:flex;flex-direction:column;gap:3px;}
.rs-risk{font-size:10px;color:var(--yellow);display:flex;align-items:flex-start;gap:5px;line-height:1.5;}
.rs-action-box{background:rgba(108,143,255,.1);border:1px solid rgba(108,143,255,.25);border-radius:7px;padding:8px 10px;margin-top:8px;font-size:11px;color:var(--accent);line-height:1.6;}
.rs-special-tag{display:inline-block;padding:2px 10px;border-radius:10px;font-size:10px;font-weight:600;margin-bottom:4px;}
.rs-tag-conflict{background:rgba(239,69,101,.15);color:var(--red);border:1px solid rgba(239,69,101,.3);}
.rs-tag-cooling{background:rgba(248,182,58,.15);color:var(--yellow);border:1px solid rgba(248,182,58,.3);}
.rs-tag-initial{background:rgba(108,143,255,.15);color:var(--accent);border:1px solid rgba(108,143,255,.3);}
.rs-tag-familiar{background:rgba(167,139,250,.15);color:#bd9dff;border:1px solid rgba(167,139,250,.3);}
.rs-tag-intimate{background:rgba(61,220,151,.15);color:var(--green);border:1px solid rgba(61,220,151,.3);}
.sp-qualified{background:rgba(61,220,151,.2);color:var(--green);}
.sp-deep_engage{background:rgba(167,139,250,.2);color:var(--purple);}
.sp-handover{background:rgba(239,69,101,.2);color:var(--red);}
.kv-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;padding:4px 0;border-bottom:1px solid var(--border);}
.kv-row:last-child{border-bottom:none;}
.kv-key{color:var(--dim2);}
.kv-val{font-weight:600;text-align:right;}
.tag-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px;}
.tag{background:var(--s2);border:1px solid var(--border);padding:2px 9px;border-radius:12px;font-size:11px;color:var(--dim2);}
/* ── AI 智能画像提取 ── */
.extract-btn{width:100%;background:linear-gradient(135deg,#3b4fd8,#6c8fff);border:none;color:#fff;padding:8px 0;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;margin-top:6px;display:flex;align-items:center;justify-content:center;gap:6px;transition:opacity .15s;}
.extract-btn:hover{opacity:.85;}
.extract-btn:disabled{opacity:.45;cursor:not-allowed;}
.extract-spin{display:inline-block;animation:xspin .7s linear infinite;}
@keyframes xspin{to{transform:rotate(360deg)}}
.extract-dim{display:grid;gap:8px;margin-top:10px;}
.extract-card{background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:9px 11px;}
.ec-hd{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.ec-icon{font-size:14px;}
.ec-label{font-size:10px;font-weight:700;color:var(--dim2);text-transform:uppercase;letter-spacing:.6px;flex:1;}
.ec-confidence{font-size:9px;color:var(--dim);background:var(--s3);padding:1px 6px;border-radius:8px;}
.ec-tags{display:flex;flex-wrap:wrap;gap:4px;}
.ec-tag{padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500;}
.ec-tag.hobby{background:rgba(108,143,255,.15);color:#8ba5ff;border:1px solid rgba(108,143,255,.25);}
.ec-tag.personality{background:rgba(167,139,250,.15);color:#bd9dff;border:1px solid rgba(167,139,250,.25);}
.ec-tag.emotion{background:rgba(61,220,151,.15);color:#4dd89a;border:1px solid rgba(61,220,151,.25);}
.ec-tag.intent{background:rgba(251,191,36,.15);color:#f5c842;border:1px solid rgba(251,191,36,.25);}
.ec-tag.pain{background:rgba(239,69,101,.15);color:#f06080;border:1px solid rgba(239,69,101,.25);}
.ec-tag.pref{background:rgba(20,184,166,.15);color:#2dd4bf;border:1px solid rgba(20,184,166,.25);}
.ec-empty{font-size:11px;color:var(--dim);padding:18px 0;text-align:center;line-height:1.8;}
.ec-ts{font-size:9px;color:var(--dim);margin-top:8px;text-align:right;}
.ec-new-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:5px;animation:ecdot 1s step-end infinite;vertical-align:middle;}
@keyframes ecdot{50%{opacity:0;}}
.action-col{display:flex;flex-direction:column;gap:7px;}
.btn-action{width:100%;padding:9px;border-radius:7px;border:1px solid var(--border2);background:var(--s2);color:var(--text);font-size:12px;cursor:pointer;text-align:left;transition:background .15s;}
.btn-action:hover{background:var(--s3);}
.btn-action.warn{border-color:rgba(251,191,36,.35);color:var(--yellow);}
.btn-action.danger{border-color:rgba(239,69,101,.3);color:var(--red);}

/* 滚动条 */
::-webkit-scrollbar{width:5px;}::-webkit-scrollbar-track{background:transparent;}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;}

/* toast */
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--s3);border:1px solid var(--border2);padding:10px 20px;border-radius:10px;font-size:13px;opacity:0;transition:opacity .3s;pointer-events:none;z-index:9999;white-space:nowrap;}
#toast.show{opacity:1;}

/* 空状态 */
.empty-chat{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--dim);font-size:13px;}
.empty-icon{font-size:40px;opacity:.3;}

/* ── 统计栏 ── */
.stats-bar{background:var(--s2);border-bottom:1px solid var(--border);padding:6px 20px;display:flex;gap:24px;font-size:11px;color:var(--dim2);flex-shrink:0;}
.stats-bar b{color:var(--text);font-weight:600;}

/* ── 队列 Tab ── */
.queue-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0;}
.q-tab{flex:1;text-align:center;padding:8px 4px;font-size:11px;cursor:pointer;color:var(--dim2);border-bottom:2px solid transparent;transition:all .15s;}
.q-tab.active{color:var(--accent);border-bottom-color:var(--accent);}

/* ── SLA 倒计时 ── */
.sla-bar{height:3px;border-radius:2px;margin-top:5px;transition:width .5s;}

/* ── 接待计时 ── */
.session-timer{background:var(--s3);border:1px solid var(--border);border-radius:6px;padding:2px 10px;font-size:11px;color:var(--dim2);display:flex;align-items:center;gap:5px;}
.timer-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse 1.4s infinite;}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* ── 内嵌审计面板 ── */
#auditDrawer{position:fixed;top:0;right:0;height:100vh;width:420px;background:var(--s1);border-left:1px solid var(--border2);z-index:998;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s;}
#auditDrawer.open{transform:translateX(0);}
.drawer-hdr{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;}
.drawer-hdr .title{font-size:14px;font-weight:600;flex:1;}
.drawer-body{flex:1;overflow-y:auto;padding:14px;}
.audit-row{background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:8px;}
.audit-action{font-size:12px;font-weight:600;color:var(--accent);margin-bottom:4px;}
.audit-meta{font-size:10px;color:var(--dim2);display:flex;gap:10px;}
.audit-diff{font-size:10px;background:var(--s3);border-radius:4px;padding:4px 8px;margin-top:6px;color:var(--dim2);word-break:break-all;}

/* ── 备注区 ── */
.note-textarea{width:100%;background:var(--s2);border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:7px;font-size:12px;resize:none;height:76px;font-family:inherit;line-height:1.5;}
.note-textarea:focus{outline:none;border-color:var(--accent);}
.btn-save-note{margin-top:6px;background:var(--s3);border:1px solid var(--border2);color:var(--dim2);padding:5px 14px;border-radius:6px;font-size:11px;cursor:pointer;}
.btn-save-note:hover{border-color:var(--accent);color:var(--accent);}

/* ── 快捷回复管理 ── */
.quick-mgr{display:flex;gap:6px;margin-top:6px;}
.quick-mgr input{flex:1;background:var(--s2);border:1px solid var(--border);color:var(--text);padding:5px 9px;border-radius:6px;font-size:11px;}
.quick-mgr input:focus{outline:none;border-color:var(--accent);}
.quick-mgr button{background:var(--s3);border:1px solid var(--border2);color:var(--dim2);padding:5px 12px;border-radius:6px;font-size:11px;cursor:pointer;}

/* ── 打字气泡 ── */
.typing-bubble{display:flex;gap:10px;align-self:flex-start;}
.typing-dots{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:10px 16px;display:flex;gap:4px;align-items:center;}
.typing-dots span{width:6px;height:6px;border-radius:50%;background:var(--dim2);animation:typing-anim 1.2s infinite;}
.typing-dots span:nth-child(2){animation-delay:.2s;}
.typing-dots span:nth-child(3){animation-delay:.4s;}
@keyframes typing-anim{0%,80%,100%{transform:scale(.8);opacity:.5}40%{transform:scale(1.1);opacity:1}}

/* ── 左侧双 Tab ── */
.left-tabs{display:flex;border-bottom:2px solid var(--border);flex-shrink:0;}
.left-tab{flex:1;text-align:center;padding:10px 4px;font-size:12px;font-weight:600;cursor:pointer;color:var(--dim2);border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.left-tab.active{color:var(--accent);border-bottom-color:var(--accent);}
/* 对话空状态 */
.conv-empty-hint{padding:40px 20px;text-align:center;color:var(--dim);font-size:12px;line-height:1.8;}
/* 渠道空状态 */
.ch-empty{padding:40px 20px;text-align:center;color:var(--dim);font-size:12px;line-height:1.8;}
/* 渠道卡片 */
.ch-card{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;}
.ch-card-hdr{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.ch-icon{font-size:20px;width:34px;height:34px;background:var(--s3);border-radius:8px;display:flex;align-items:center;justify-content:center;}
.ch-name{font-size:13px;font-weight:600;flex:1;}
.ch-status{font-size:10px;padding:2px 8px;border-radius:10px;}
.ch-status.on{background:rgba(61,220,151,.15);color:var(--green);}
.ch-status.off{background:rgba(90,100,144,.2);color:var(--dim2);}
.ch-link{font-size:10px;color:var(--dim2);word-break:break-all;background:var(--s3);border-radius:5px;padding:5px 8px;margin-bottom:8px;cursor:pointer;}
.ch-link:hover{color:var(--accent);}
.ch-stats{display:flex;gap:12px;font-size:11px;color:var(--dim2);}
.ch-stats b{color:var(--text);}
.ch-actions{display:flex;gap:6px;margin-top:10px;}
.ch-btn{flex:1;padding:5px;border-radius:5px;border:1px solid var(--border2);background:transparent;color:var(--dim2);font-size:11px;cursor:pointer;}
.ch-btn:hover{border-color:var(--accent);color:var(--accent);}
.ch-btn.danger:hover{border-color:var(--red);color:var(--red);}
/* 会话卡片渠道来源标签 */
.ch-source{display:inline-flex;align-items:center;gap:3px;font-size:9px;background:rgba(108,143,255,.12);color:var(--accent);padding:1px 6px;border-radius:8px;}

/* ── 添加渠道 Modal ── */
#addChannelModal{position:fixed;inset:0;background:rgba(11,14,26,.88);z-index:1000;display:none;align-items:center;justify-content:center;}
#addChannelModal.open{display:flex;}
.ch-modal{background:var(--s1);border:1px solid var(--border2);border-radius:16px;padding:28px;width:440px;display:flex;flex-direction:column;gap:16px;}
.ch-modal h3{font-size:15px;font-weight:700;}
.ch-type-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.ch-type-btn{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:14px 12px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;transition:all .15s;}
.ch-type-btn:hover,.ch-type-btn.selected{border-color:var(--accent);background:rgba(108,143,255,.08);}
.ch-type-btn .icon{font-size:24px;}
.ch-type-btn .label{font-size:12px;font-weight:600;}
.ch-type-btn .desc{font-size:10px;color:var(--dim2);text-align:center;}
.ch-form{display:flex;flex-direction:column;gap:10px;}
.ch-form label{font-size:11px;color:var(--dim2);}
.ch-form input{background:var(--s2);border:1px solid var(--border2);color:var(--text);padding:9px 12px;border-radius:7px;font-size:13px;width:100%;}
.ch-form input:focus{outline:none;border-color:var(--accent);}
.qr-preview{background:var(--s2);border:1px dashed var(--border2);border-radius:10px;padding:24px;text-align:center;color:var(--dim2);font-size:12px;}
.qr-code-box{width:100px;height:100px;background:#fff;border-radius:6px;margin:0 auto 8px;display:flex;align-items:center;justify-content:center;font-size:10px;color:#333;}
.ch-modal-footer{display:flex;justify-content:flex-end;gap:8px;}
/* ── 新用户来访横幅 ── */
#newConvBanner{background:linear-gradient(90deg,rgba(108,143,255,.12),rgba(61,220,151,.08));border-bottom:1px solid rgba(108,143,255,.3);padding:7px 20px;display:flex;align-items:center;gap:12px;font-size:12px;flex-shrink:0;animation:slideDown .3s ease;}
@keyframes slideDown{from{height:0;opacity:0;padding:0}to{}}
.banner-name{font-weight:600;color:var(--accent);}
.banner-btns{margin-left:auto;display:flex;gap:8px;}
.btn-accept{background:var(--green);color:#0b0e1a;border:none;padding:4px 14px;border-radius:5px;font-size:11px;font-weight:700;cursor:pointer;}
.btn-decline{background:transparent;border:1px solid var(--border2);color:var(--dim2);padding:4px 12px;border-radius:5px;font-size:11px;cursor:pointer;}

/* ── 输入工具栏增强 ── */
.toolbar-row{display:flex;align-items:center;gap:4px;margin-bottom:6px;border-bottom:1px solid var(--border);padding-bottom:6px;}
.tf-btn{background:none;border:none;color:var(--dim2);font-size:13px;padding:3px 7px;border-radius:4px;cursor:pointer;}
.tf-btn:hover{background:var(--s3);color:var(--text);}
.char-counter{font-size:10px;color:var(--dim);margin-left:auto;}
.char-counter.warn{color:var(--yellow);}
.char-counter.over{color:var(--red);}

/* ── 折叠区块 ── */
.collapse-hdr{display:flex;align-items:center;cursor:pointer;user-select:none;}
.collapse-hdr h4{flex:1;}
.collapse-arrow{font-size:10px;color:var(--dim);transition:transform .2s;}
.collapse-arrow.open{transform:rotate(90deg);}
.collapse-body{overflow:hidden;transition:max-height .25s ease;}
.collapse-body.closed{max-height:0!important;overflow:hidden;}

/* ── 历史会话 ── */
.hist-item{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:11px;cursor:pointer;}
.hist-item:hover .hist-id{color:var(--accent);}
.hist-icon{font-size:14px;}
.hist-id{color:var(--dim2);flex:1;}
.hist-date{color:var(--dim);}

/* ── 转接 Modal ── */
#transferModal{position:fixed;inset:0;background:rgba(11,14,26,.85);z-index:1000;display:none;align-items:center;justify-content:center;}
#transferModal.open{display:flex;}
.modal-box{background:var(--s1);border:1px solid var(--border2);border-radius:14px;padding:28px 28px 22px;width:380px;display:flex;flex-direction:column;gap:14px;}
.modal-box h3{font-size:15px;font-weight:700;}
.modal-box .sub{font-size:12px;color:var(--dim2);margin-top:-8px;}
.agent-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto;}
.agent-opt{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:background .1s;}
.agent-opt:hover{background:var(--s3);border-color:var(--accent);}
.agent-opt .ag-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.agent-opt .ag-name{font-size:13px;font-weight:600;}
.agent-opt .ag-load{font-size:11px;color:var(--dim2);margin-left:auto;}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;}

/* ── 快捷键帮助 ── */
#shortcutsOverlay{position:fixed;inset:0;background:rgba(11,14,26,.9);z-index:1001;display:none;align-items:center;justify-content:center;}
#shortcutsOverlay.open{display:flex;}
.shortcuts-box{background:var(--s1);border:1px solid var(--border2);border-radius:14px;padding:28px;width:420px;}
.shortcuts-box h3{font-size:14px;font-weight:700;margin-bottom:16px;}
.sc-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px;}
.sc-row:last-child{border:none;}
.sc-key{background:var(--s3);border:1px solid var(--border2);padding:2px 9px;border-radius:5px;font-family:monospace;font-size:11px;color:var(--accent);}
.shortcuts-box .close-btn{margin-top:16px;float:right;}

/* ── 消息日期分割线 ── */
.msg-date-sep{align-self:center;font-size:10px;color:var(--dim);background:var(--s2);border:1px solid var(--border);padding:2px 12px;border-radius:10px;margin:6px 0;}

/* ── 流程条 ── */
.pipeline-bar{background:var(--s1);border-bottom:1px solid var(--border);padding:0 16px;height:30px;display:flex;align-items:center;gap:0;flex-shrink:0;overflow-x:auto;}
.pipeline-bar::-webkit-scrollbar{display:none;}
.pp-step{font-size:10px;padding:2px 10px;border-radius:20px;border:1px solid transparent;white-space:nowrap;transition:all .25s;user-select:none;}
.pp-arrow{color:var(--border2);margin:0 3px;font-size:10px;}
.pp-step.idle{background:var(--s2);color:var(--dim);border-color:var(--border);}
.pp-step.done{opacity:.7;}
@keyframes ppGlow{0%,100%{box-shadow:none}50%{box-shadow:0 0 6px currentColor}}
.pp-step.active{animation:ppGlow .9s infinite;}
.pp-step.s-user   {--pc:var(--accent);}
.pp-step.s-obs    {--pc:var(--purple);}
.pp-step.s-dec    {--pc:var(--yellow);}
.pp-step.s-gen    {--pc:var(--pink);}
.pp-step.s-confirm{--pc:var(--green);}
.pp-step.active{background:rgba(from var(--pc,#6c8fff) r g b/.15);color:var(--pc,var(--accent));border-color:var(--pc,var(--accent));}
.pp-step.done  {background:rgba(from var(--pc,#6c8fff) r g b/.08);color:var(--pc,var(--accent));border-color:rgba(from var(--pc,#6c8fff) r g b/.35);}
/* 流程分隔 legacy 占位符 */
.flow-sep{display:none;}

/* ── AI 思考卡（三步合一）── */
.ai-think-card{align-self:flex-start;max-width:96%;min-width:280px;border:1px solid rgba(108,143,255,.5);border-left:3px solid var(--accent);border-radius:10px;background:#1a2040;font-size:11.5px;}
.ai-think-summary{display:flex;align-items:center;gap:0;cursor:pointer;background:#1e2848;padding:7px 12px;border-radius:10px 10px 0 0;user-select:none;min-height:32px;}
.ai-think-summary:hover{background:#232f55;}
.ai-think-head{font-size:10.5px;color:var(--accent);font-weight:600;margin-right:10px;white-space:nowrap;flex-shrink:0;}
.ai-think-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:6px;font-size:11px;white-space:nowrap;}
.ai-think-chip.obs{background:rgba(167,139,250,.22);color:var(--purple);}
.ai-think-chip.dec{background:rgba(244,114,182,.12);color:var(--pink);}
.ai-think-chip.gen{background:rgba(61,220,151,.12);color:var(--green);}
.ai-think-div{width:1px;height:14px;background:var(--border2);margin:0 6px;flex-shrink:0;}
.ai-think-toggle{font-size:9px;color:var(--dim2);margin-left:auto;padding-left:8px;flex-shrink:0;transition:transform .2s;}
.ai-think-toggle.open{transform:rotate(180deg);}
.ai-think-detail{border-top:1px solid var(--border2);background:#131829;overflow:hidden;max-height:0;transition:max-height .3s cubic-bezier(.4,0,.2,1);border-radius:0 0 10px 10px;}
.ai-think-detail.open{max-height:260px;}
.ai-think-row{padding:6px 12px;border-bottom:1px solid var(--border);font-size:11.5px;line-height:1.55;}
.ai-think-row:last-child{border-bottom:none;}
.ai-think-label{display:inline-block;font-size:10px;padding:1px 6px;border-radius:8px;margin-right:6px;margin-bottom:2px;}
.ai-think-label.obs{background:rgba(167,139,250,.2);color:var(--purple);}
.ai-think-label.dec{background:rgba(244,114,182,.2);color:var(--pink);}
.ai-think-label.gen{background:rgba(61,220,151,.2);color:var(--green);}
.ai-think-label.review{background:rgba(108,143,255,.2);color:var(--accent);}
/* 内联打字 */
.inline-typing{display:inline-flex;gap:3px;align-items:center;vertical-align:middle;}
.inline-typing span{width:4px;height:4px;border-radius:50%;background:var(--dim);animation:itBlink 1.2s infinite;}
.inline-typing span:nth-child(2){animation-delay:.2s;}
.inline-typing span:nth-child(3){animation-delay:.4s;}
@keyframes itBlink{0%,80%,100%{opacity:.3;transform:scale(1)}40%{opacity:1;transform:scale(1.15)}}
/* 情感 badge on user msg */
.emo-badge{display:inline-block;font-size:9.5px;padding:1px 7px;border-radius:10px;margin-left:6px;background:rgba(167,139,250,.18);color:var(--purple);vertical-align:middle;}

/* ── AI 草稿提示条 ── */
.ai-draft-panel{background:rgba(244,114,182,.06);border-top:1px solid rgba(244,114,182,.25);flex-shrink:0;overflow:hidden;transition:max-height .25s cubic-bezier(.4,0,.2,1);}
.ai-draft-panel.hidden{max-height:0;}
.ai-draft-panel.visible{max-height:48px;}
.adp-bar{height:48px;padding:0 14px;display:flex;align-items:center;gap:10px;}
.adp-icon{font-size:14px;flex-shrink:0;}
.adp-hint{font-size:11.5px;color:var(--dim2);flex:1;min-width:0;}
.adp-hint b{color:var(--pink);font-weight:600;}
.adp-hint em{color:var(--dim2);font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:340px;vertical-align:bottom;}
.adp-actions-bar{display:flex;gap:6px;flex-shrink:0;}
.adp-btn{padding:4px 12px;border-radius:6px;border:1px solid;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;}
.adp-btn.allow{background:rgba(61,220,151,.12);border-color:var(--green);color:var(--green);}
.adp-btn.allow:hover{background:rgba(61,220,151,.22);}
.adp-btn.self{background:transparent;border-color:var(--border2);color:var(--dim2);}
.adp-btn.self:hover{border-color:var(--red);color:var(--red);}

/* ── 右侧新增区块：功能开关 ── */
.feature-card{border:1px solid var(--border);border-radius:10px;padding:10px;background:var(--s2);margin-bottom:8px;}
.feat-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;}
.feat-row:last-child{margin-bottom:0;}
.feat-label{font-size:11px;color:var(--text);}
.feat-desc{font-size:10px;color:var(--dim2);}
.mini-switch{position:relative;display:inline-block;width:34px;height:20px;flex-shrink:0;}
.mini-switch input{opacity:0;width:0;height:0;}
.ms-slider{position:absolute;cursor:pointer;inset:0;background:var(--s3);border:1px solid var(--border2);transition:.2s;border-radius:999px;}
.ms-slider:before{content:"";position:absolute;height:14px;width:14px;left:2px;top:2px;background:var(--dim);transition:.2s;border-radius:50%;}
.mini-switch input:checked + .ms-slider{background:rgba(52,211,153,.25);border-color:rgba(52,211,153,.7);}
.mini-switch input:checked + .ms-slider:before{transform:translateX(14px);background:var(--green);}
/* 人设选择 */
.persona-sel{width:100%;margin-top:7px;background:var(--s3);border:1px solid var(--border2);color:var(--text);padding:6px 8px;border-radius:7px;font-size:11px;font-family:inherit;outline:none;cursor:pointer;}
.persona-sel:focus{border-color:var(--accent);}
/* 动作日志 */
.slog-item{font-size:11px;color:var(--dim2);line-height:1.65;border-bottom:1px solid var(--border);padding:4px 0;}
.slog-item:last-child{border-bottom:none;}
.slog-item .sl-time{color:var(--dim);margin-right:4px;}
/* 更强 toast */
.toast-ex{position:fixed;right:16px;bottom:16px;min-width:220px;max-width:320px;background:rgba(17,21,37,.96);border:1px solid var(--border2);border-left:3px solid var(--accent);border-radius:10px;padding:9px 12px;font-size:12px;line-height:1.5;box-shadow:0 8px 24px rgba(0,0,0,.35);z-index:9999;animation:toastExIn .22s ease-out;pointer-events:none;}
.toast-ex.warn{border-left-color:var(--yellow);}
.toast-ex.ok{border-left-color:var(--green);}
.toast-ex.red{border-left-color:var(--red);}
@keyframes toastExIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
/* TG 消息通知卡（可点击） */
.tg-notif{position:fixed;right:16px;min-width:240px;max-width:320px;background:rgba(11,14,26,.97);border:1px solid rgba(108,143,255,.35);border-left:3px solid #0088cc;border-radius:10px;padding:10px 14px 10px 12px;font-size:12px;line-height:1.5;box-shadow:0 8px 28px rgba(0,0,0,.5);z-index:10000;cursor:pointer;pointer-events:auto;animation:toastExIn .22s ease-out;transition:opacity .4s;}
.tg-notif:hover{background:rgba(30,35,60,.97);}