zj-plugin-intelligent 1.2.8-beta.7 → 1.2.8-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1432,7 +1432,7 @@ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../.
1432
1432
  /*! no static exports found */
1433
1433
  /***/ (function(module, exports, __webpack_require__) {
1434
1434
 
1435
- eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\n.chat-main[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n min-width: 0;\\r\\n min-height: 0;\\n}\\r\\n\\r\\n/* ── Header ── */\\n.chat-header[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\r\\n padding: 10px 20px;\\r\\n background: #fff;\\r\\n border-bottom: 1px solid #e8e8e8;\\r\\n flex-shrink: 0;\\r\\n z-index: 10;\\n}\\n.header-left[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\r\\n min-width: 0;\\r\\n flex: 1;\\n}\\n.header-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n flex-shrink: 0;\\n}\\n.agent-info[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\n}\\n.agent-icon[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 8px;\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px;\\r\\n font-weight: 600;\\r\\n flex-shrink: 0;\\n}\\n.agent-info:nth-child(4n + 2) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\n}\\n.agent-info:nth-child(4n + 3) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #fa8c16, #ffa940);\\n}\\n.agent-info:nth-child(4n + 4) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #722ed1, #b37feb);\\n}\\n.agent-text[data-v-9693c11e] {\\r\\n min-width: 0;\\n}\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1.3;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n max-width: min(300px, 45vw);\\n}\\n.header-right[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\n.manage-link[data-v-9693c11e] {\\r\\n font-size: 13px;\\r\\n color: #1677ff;\\r\\n text-decoration: none;\\n}\\n.manage-link[data-v-9693c11e]:hover {\\r\\n color: #4096ff;\\n}\\r\\n\\r\\n/* ── Chat Body ── */\\n.chat-body[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n overflow-y: auto;\\r\\n padding: 16px clamp(12px, 3vw, 40px);\\r\\n scroll-behavior: auto;\\r\\n position: relative;\\r\\n -webkit-overflow-scrolling: touch;\\r\\n background: url(https://qiguanbang.obs.cn-east-3.myhuaweicloud.com/production/image/AlAgent/agentbackground.png) 100% no-repeat;\\r\\n background-size: 100% 100%;\\r\\n background-position: center;\\r\\n background-size: cover;\\r\\n min-height: 0;\\n}\\n.welcome[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n height: 100%;\\r\\n color: #bbb;\\r\\n margin: 0 -20px;\\n}\\n.welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 12px;\\r\\n opacity: 0.7;\\n}\\n.welcome-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\n}\\n.welcome-default .welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 16px;\\n}\\n.welcome-title[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n margin-bottom: 8px;\\n}\\r\\n\\r\\n/* ── Message Row ── */\\n.msg-row[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n padding: 20px 16px;\\r\\n box-sizing: border-box;\\r\\n align-items: center;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 10px;\\r\\n max-width: 85%;\\r\\n width: min(100%, 860px) !important;\\r\\n max-width: 860px;\\n}\\n.msg-row.user .msg-main[data-v-9693c11e] {\\r\\n flex-direction: row-reverse;\\n}\\n.msg-row.assistant[data-v-9693c11e] {\\r\\n justify-content: center;\\n}\\n.load-more[data-v-9693c11e] {\\r\\n text-align: center;\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n padding: 4px 0;\\n}\\n.msg-time[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #bbb;\\r\\n margin-top: 2px;\\r\\n padding-left: 4px;\\n}\\n.msg-row.user .msg-time[data-v-9693c11e] {\\r\\n text-align: right;\\r\\n padding-right: 4px;\\n}\\n.msg-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 4px;\\r\\n margin-top: 4px;\\r\\n padding-left: 4px;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\n}\\n.ai-badge[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #999;\\r\\n /* background: #f5f5f5; */\\r\\n padding: 1px 6px;\\r\\n border-radius: 3px;\\r\\n white-space: nowrap;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n margin-left: auto;\\n}\\n.action-btn[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n cursor: pointer;\\r\\n padding: 2px 6px 2px 0;\\r\\n border-radius: 4px;\\r\\n transition: all 0.2s;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.action-btn[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\r\\n background: #f0f5ff;\\n}\\r\\n\\r\\n/* ── STT 语音转文字状态 ── */\\n.stt-status-block[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n font-size: 14px;\\r\\n line-height: 1.5;\\n}\\n.stt-bubble-wrap[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\n}\\n.stt-outside-icon[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n right: 100%;\\r\\n top: 50%;\\r\\n margin-top: -9px;\\r\\n margin-right: 20px;\\n}\\n.stt-spinner[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n border: 2.5px solid #d9d9d9;\\r\\n border-top-color: #1677ff;\\r\\n border-right-color: #4096ff;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n flex-shrink: 0;\\r\\n box-sizing: border-box;\\n}\\n@-webkit-keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n@keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n.stt-error-icon[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n font-size: 12px;\\r\\n font-weight: 700;\\r\\n border-radius: 50%;\\r\\n line-height: 1;\\r\\n flex-shrink: 0;\\n}\\n.stt-bubble-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\r\\n color: #fff;\\r\\n white-space: nowrap;\\r\\n margin: 6px 0;\\n}\\n.msg-avatar[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 13px;\\r\\n font-weight: 700;\\r\\n flex-shrink: 0;\\r\\n color: #fff;\\n}\\n.msg-avatar.user[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\n}\\n.msg-avatar.assistant[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\r\\n color: #fff;\\n}\\n.msg-agent-label[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n margin-bottom: 2px;\\n}\\n.msg-content[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\r\\n box-sizing: border-box;\\r\\n overflow: hidden;\\n}\\r\\n\\r\\n/* ── Bubble ── */\\n.bubble[data-v-9693c11e] {\\r\\n max-width: 100%;\\r\\n min-width: 30px;\\r\\n width: -webkit-fit-content;\\r\\n width: -moz-fit-content;\\r\\n width: fit-content;\\r\\n padding: 8px 14px;\\r\\n border-radius: 12px;\\r\\n line-height: 1.4;\\r\\n font-size: 15px;\\r\\n word-break: break-word;\\r\\n white-space: normal;\\r\\n text-align: left;\\r\\n overflow-wrap: anywhere;\\n}\\n.bubble[data-v-9693c11e]:has(.typing) {\\r\\n padding: 16px 20px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border-bottom-right-radius: 4px;\\r\\n box-shadow: 0 2px 8px rgba(22, 119, 255, 0.15);\\r\\n float: none;\\r\\n margin-left: auto;\\r\\n max-width: min(100%, 520px);\\n}\\n.bubble.assistant[data-v-9693c11e] {\\r\\n background: #fff;\\r\\n color: #333;\\r\\n border-bottom-left-radius: 4px;\\r\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\n}\\n.bubble[data-v-9693c11e] table {\\r\\n border-collapse: collapse;\\r\\n width: 100%;\\r\\n margin: 6px 0;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] th,\\r\\n.bubble[data-v-9693c11e] td {\\r\\n border: 1px solid #e8e8e8;\\r\\n padding: 5px 8px;\\r\\n text-align: left;\\n}\\n.bubble[data-v-9693c11e] th {\\r\\n background: #fafafa;\\r\\n font-weight: 600;\\n}\\n.bubble[data-v-9693c11e] code {\\r\\n padding: 1px 5px;\\r\\n border-radius: 3px;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] pre {\\r\\n background: #f6f8fa;\\r\\n color: #333;\\r\\n padding: 12px;\\r\\n border-radius: 6px;\\r\\n overflow-x: auto;\\r\\n font-size: 13px;\\r\\n border: 1px solid #e8e8e8;\\r\\n margin: 8px 0;\\r\\n line-height: 1.5;\\r\\n white-space: pre;\\n}\\n.bubble[data-v-9693c11e] ul,\\r\\n.bubble[data-v-9693c11e] ol {\\r\\n padding-left: 20px;\\r\\n margin: 4px 0;\\n}\\n.bubble[data-v-9693c11e] li {\\r\\n margin: 2px 0;\\n}\\n.bubble[data-v-9693c11e] p {\\r\\n margin: 6px 0;\\n}\\r\\n\\r\\n/* ── Thinking ── */\\n.thinking-details[data-v-9693c11e] {\\r\\n margin-bottom: 10px;\\r\\n border: 1px solid #e8e8e8;\\r\\n border-radius: 8px;\\r\\n overflow: hidden;\\r\\n background: #fafafa;\\n}\\n.thinking-summary[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #888;\\r\\n cursor: pointer;\\r\\n padding: 6px 10px;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.thinking-summary[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\n}\\n.thinking-body[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n padding: 8px 12px;\\r\\n line-height: 1.6;\\r\\n border-top: 1px solid #f0f0f0;\\r\\n text-align: left;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.final-content[data-v-9693c11e] {\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n line-height: 1.6;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif;\\r\\n font-weight: normal;\\r\\n letter-spacing: normal;\\r\\n text-transform: none;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n overflow-wrap: anywhere;\\r\\n -webkit-text-size-adjust: 100%;\\n}\\n.tokui-shell .tokui-stream > *[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream p[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ul[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ol[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream li[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream table[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream code[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream pre[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream th[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream td[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__label,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n box-sizing: border-box;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n line-height: 1.6 !important;\\r\\n letter-spacing: normal !important;\\r\\n text-transform: none !important;\\r\\n color: inherit;\\r\\n margin: 0;\\r\\n padding: 0;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-desc__label {\\r\\n font-size: 13px !important;\\r\\n color: #8c8c8c !important;\\r\\n line-height: 1.4 !important;\\r\\n margin-bottom: 2px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n display: inline-block;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag {\\r\\n display: inline-flex !important;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n padding: 2px 8px !important;\\r\\n border-radius: 999px !important;\\r\\n font-size: 12px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #1677ff !important;\\r\\n background: #e6f4ff !important;\\r\\n border: 1px solid #bae0ff !important;\\r\\n white-space: nowrap;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header {\\r\\n display: flex !important;\\r\\n align-items: center !important;\\r\\n padding: 10px 12px !important;\\r\\n margin: 0 !important;\\r\\n font-size: 14px !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n background: transparent !important;\\r\\n border: none !important;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h3,\\r\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h4 {\\r\\n font-size: 15px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n margin: 0 !important;\\r\\n color: inherit !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3 {\\r\\n font-size: 16px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n margin: 10px 0 6px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n display: block !important;\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #8c8c8c !important;\\r\\n margin: 0 0 4px !important;\\n}\\n.thinking-body[data-v-9693c11e] p {\\r\\n margin: 4px 0;\\n}\\r\\n\\r\\n/* ── Typing ── */\\n.typing[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n min-height: 24px;\\r\\n justify-content: flex-start;\\r\\n padding: 4px 0;\\n}\\n.typing .phrase[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #888;\\r\\n white-space: nowrap;\\r\\n -webkit-animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n letter-spacing: 0.5px;\\n}\\n.typing .dots[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 5px;\\r\\n align-items: center;\\r\\n justify-content: center;\\n}\\n.typing .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background: #bbb;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\r\\n animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(2) {\\r\\n -webkit-animation-delay: 0.16s;\\r\\n animation-delay: 0.16s;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(3) {\\r\\n -webkit-animation-delay: 0.32s;\\r\\n animation-delay: 0.32s;\\n}\\n@-webkit-keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@-webkit-keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\n@keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Wait Timer ── */\\n.typing.wait-5 .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-animation-duration: 1s;\\r\\n animation-duration: 1s;\\n}\\n.typing.wait-5 .phrase[data-v-9693c11e] {\\r\\n color: #888;\\n}\\n.typing.wait-10 .dots span[data-v-9693c11e] {\\r\\n width: 9px;\\r\\n height: 9px;\\r\\n -webkit-animation-duration: 0.8s;\\r\\n animation-duration: 0.8s;\\r\\n background: #909399;\\n}\\n.typing.wait-10 .phrase[data-v-9693c11e] {\\r\\n color: #909399;\\n}\\n.typing.wait-10 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\n}\\n.typing.wait-15 .dots span[data-v-9693c11e] {\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n -webkit-animation-duration: 0.6s;\\r\\n animation-duration: 0.6s;\\r\\n background: #1677ff;\\n}\\n.typing.wait-15 .phrase[data-v-9693c11e] {\\r\\n color: #1677ff;\\n}\\n.typing.wait-15 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\n}\\n@-webkit-keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\n@keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\r\\n\\r\\n/* ── Tool Calls ── */\\n.tool-calls[data-v-9693c11e] {\\r\\n margin-top: 8px;\\n}\\n.tool-item[data-v-9693c11e] {\\r\\n background: #f5f5f5;\\r\\n border-radius: 6px;\\r\\n padding: 6px 10px;\\r\\n margin-bottom: 4px;\\r\\n font-size: 12px;\\n}\\n.tool-badge[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n margin-bottom: 2px;\\r\\n font-size: 11px;\\r\\n color: #fa8c16;\\r\\n font-weight: 500;\\n}\\n.tool-item pre[data-v-9693c11e] {\\r\\n margin: 0;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-all;\\r\\n font-size: 12px;\\r\\n color: #666;\\r\\n max-height: 120px;\\r\\n overflow-y: auto;\\n}\\r\\n\\r\\n/* ── Scroll Buttons ── */\\n.scroll-btns[data-v-9693c11e] {\\r\\n position: sticky;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: 20px;\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n margin-top: 10px;\\r\\n pointer-events: none;\\n}\\n.scroll-btn[data-v-9693c11e] {\\r\\n pointer-events: auto;\\r\\n width: 38px;\\r\\n height: 38px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\n}\\n.scroll-btn i[data-v-9693c11e] {\\r\\n font-size: 16px;\\r\\n color: #333;\\n}\\r\\n\\r\\n/* ── Footer ── */\\n.chat-footer[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\r\\n border-top: none;\\r\\n padding: 30px 0;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n margin: 0 auto;\\r\\n width: 100%;\\n}\\n.input-area[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: flex-end;\\r\\n gap: 6px;\\r\\n background: #fff;\\r\\n border-radius: 24px;\\r\\n margin: 0 24px;\\r\\n padding: 18px 20px;\\r\\n border: 1px solid #b3d8ff;\\r\\n transition: border-color 0.2s;\\r\\n flex-wrap: wrap;\\r\\n width: min(100%, 1000px) !important;\\r\\n box-sizing: border-box;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: #1677ff;\\r\\n background: #fff;\\r\\n box-shadow: none;\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n content: \\\"Enter 发送,Ctrl+Enter 换行\\\";\\r\\n position: absolute;\\r\\n right: 100px;\\r\\n bottom: 28px;\\r\\n font-size: 14px;\\r\\n color: #8c8c8c;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-wrap[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: calc(100% + 30px);\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n border: 1px solid #e5e7eb;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n pointer-events: auto;\\r\\n position: relative;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);\\n}\\n.scroll-bottom-btn svg[data-v-9693c11e] {\\r\\n color: #4e5969;\\n}\\n.scroll-bottom-btn[data-v-9693c11e]:hover {\\r\\n transform: scale(1.1);\\n}\\n.loading-circle[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n inset: 3px;\\r\\n border-radius: 50%;\\r\\n border: 1.5px solid transparent;\\r\\n border-top: 1.5px solid #1677ff;\\r\\n -webkit-animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\r\\n animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\n}\\n@-webkit-keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n@keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n border: none;\\r\\n outline: none;\\r\\n background: transparent;\\r\\n resize: none;\\r\\n font-size: 16px;\\r\\n line-height: 24px;\\r\\n min-height: 38px;\\r\\n height: 100px;\\r\\n max-height: 100px;\\r\\n overflow-y: auto;\\r\\n padding: 0;\\r\\n box-sizing: border-box;\\r\\n font-family: inherit;\\r\\n color: #333;\\r\\n flex: 1 1 320px;\\r\\n min-width: 0;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: auto;\\r\\n height: 40px;\\r\\n padding: 0 21px;\\r\\n border-radius: 6px;\\r\\n border: none;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n font-size: 14px;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: \\\"发送\\\";\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn.active[data-v-9693c11e]:hover {\\r\\n background: #4096ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 35px;\\r\\n height: 35px;\\r\\n border-radius: 50%;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\n}\\n.stop-btn[data-v-9693c11e]:hover {\\r\\n background: #ff7875;\\n}\\r\\n\\r\\n/* ── Voice ── */\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n/* ── Voice Recording Overlay ── */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Chat Agent Avatar ── */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e] {\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n\\r\\n/* ── Agent List Avatar ── */\\n.agent-list-avatar[data-v-9693c11e] {\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n color: #fff;\\r\\n font-size: 22px;\\r\\n font-weight: 600;\\r\\n border-radius: 8px;\\n}\\n.agent-list-avatar.has-agent-img[data-v-9693c11e] {\\r\\n width: 97px;\\r\\n height: 126px;\\r\\n background-size: cover;\\n}\\n.agent-list-avatar[data-v-9693c11e]:not(.has-agent-img) {\\r\\n width: 76px;\\r\\n height: 108px;\\r\\n transform: translateX(9px);\\n}\\n.session-avatar[data-v-9693c11e] {\\r\\n width: 44px !important;\\r\\n height: 44px !important;\\r\\n border-radius: 50% !important;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px !important;\\r\\n font-weight: 600;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n overflow: hidden;\\n}\\n.avatar-pic[data-v-9693c11e] {\\r\\n width: 85%;\\r\\n height: 85%;\\r\\n -o-object-fit: contain;\\r\\n object-fit: contain;\\n}\\r\\n\\r\\n/* ── Mobile Buttons ── */\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n.mobile-back-btn[data-v-9693c11e],\\r\\n.mobile-header-btn[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border: none;\\r\\n border-radius: 10px;\\r\\n background: #f5f7fa;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.mobile-menu-btn i[data-v-9693c11e],\\r\\n.mobile-back-btn i[data-v-9693c11e],\\r\\n.mobile-header-btn i[data-v-9693c11e] {\\r\\n font-size: 18px;\\n}\\n.mobile-back-btn i[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\n}\\r\\n/* ── 聊天空白欢迎页(匹配蓝湖移动端聊天首页) ── */\\n.chat-empty-welcome[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n padding: 40px 20px;\\r\\n box-sizing: border-box;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 0px;\\r\\n max-width: 600px;\\r\\n margin: 80px auto;\\n}\\r\\n\\r\\n/* 顶部渐变欢迎卡片 */\\n.welcome-card[data-v-9693c11e] {\\r\\n position: relative;\\r\\n background: linear-gradient(296deg, #D6EDFF 20%, #E8EBFF 80%);\\r\\nborder-radius: 16px 16px 0px 0px;\\r\\n padding: 24px 24px 24px 150px;\\r\\n overflow: visible;\\n}\\r\\n/* 左侧探出头像容器 */\\n.welcome-avatar-box[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 0px;\\r\\n width: 110px;\\r\\n height: 137px;\\n}\\n.welcome-avatar[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n border-radius: 12px;\\r\\n background-size: cover;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 20px;\\r\\n color: #fff;\\r\\n font-weight: 600;\\n}\\n.welcome-avatar.has-chat-agent-img[data-v-9693c11e] {\\r\\n background: transparent;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\n}\\n.welcome-text-group[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 6px;\\n}\\n.welcome-text-group .text-sm[data-v-9693c11e] {\\r\\nfont-weight: 400;font-size: 12px;color: #666666;\\r\\ntext-align: left;\\r\\nfont-style: normal;\\n}\\n.welcome-text-group .text-lg[data-v-9693c11e] {\\r\\n \\r\\n font-weight: 500;\\r\\nfont-size: 16px;\\r\\ncolor: #000000;\\n}\\r\\n\\r\\n/* 猜你想问容器 */\\n.guess-box[data-v-9693c11e] {\\r\\n border-top: 1px solid #fff;\\r\\n background: linear-gradient(180deg, #B8DCFF 0%, #DFF0FF 50%, #FFFFFF 100%);\\r\\n border-radius: 0 0 16px 16px;\\r\\n padding: 20px;\\n}\\n.guess-title[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 6px;\\r\\n font-size: 16px;\\r\\n font-weight: 500;\\r\\n color: #222;\\r\\n margin-bottom: 16px;\\n}\\n.tag-wrap[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n gap: 10px;\\n}\\n.quick-tag[data-v-9693c11e] {\\r\\n padding: 8px 14px;\\r\\n background: #F2FAFF;\\r\\n border-radius: 8px;\\r\\n font-size: 14px;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n border: 1px solid #e0eaff;\\r\\n transition: all 0.2s;\\r\\n white-space: nowrap;\\n}\\r\\n/* .quick-tag:hover {\\r\\n background: #f0f7ff;\\r\\n border-color: #1677ff;\\r\\n} */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e]{\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n/* ── Responsive ── */\\n@media screen and (max-width: 768px) {\\n.chat-header[data-v-9693c11e] {\\r\\n padding: 10px 12px;\\r\\n background: transparent;\\r\\n border-bottom: none;\\n}\\n.chat-header .chat-agent-avatar-wrapper[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .agent-desc[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .header-left[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n justify-content: center;\\r\\n position: relative;\\n}\\n.chat-header .header-left .mobile-back-btn[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 12px;\\r\\n background: transparent;\\n}\\n.chat-header .header-actions .mobile-header-btn[data-v-9693c11e] {\\r\\n background: transparent;\\n}\\n.chat-body[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n background-position: center top;\\n}\\n.msg-row[data-v-9693c11e] {\\r\\n padding: 12px 0;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\n}\\n.bubble[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n max-width: 88%;\\n}\\n.chat-footer[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n flex-shrink: 0;\\r\\n background: #f5f5f5;\\r\\n box-sizing: border-box;\\n}\\r\\n /* 安全区域由 .chat-footer 统一处理,.chat-body 不需要重复加 padding */\\n.input-area[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n margin: 0;\\r\\n padding: 6px 6px 6px 4px;\\r\\n border-radius: 24px;\\r\\n border: none;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\r\\n flex-wrap: nowrap;\\r\\n align-items: center;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: transparent;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n display: none;\\n}\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n flex-basis: 0;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n max-height: 100px;\\r\\n font-size: 15px;\\r\\n background: #EBEBEB;\\r\\n border-radius: 18px;\\r\\n padding: 0 14px;\\r\\n line-height: 36px;\\r\\n margin: 0 4px;\\r\\n color: #333;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n padding: 0;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: block;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: none;\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.send-btn[data-v-9693c11e]:active {\\r\\n transform: scale(0.92);\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\n}\\n.guess-box[data-v-9693c11e] {\\r\\n padding: 16px;\\n}\\r\\n\\r\\n /* H5 语音模式 */\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n /* 语音录制浮层 */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n}\\n@media screen and (max-width: 480px) {\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n max-width: calc(100vw - 132px);\\n}\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n .mobile-header-btn[data-v-9693c11e] {\\r\\n width: 32px;\\r\\n height: 32px;\\n}\\n}\\r\\n\\r\\n/* ═══════════════════════════════════════════════════════════════\\r\\n Android 兼容性修复 — TokUI desc 组件 flex/grid 布局\\r\\n ═══════════════════════════════════════════════════════════════\\r\\n 问题:部分 Android WebView 对 CSS Grid 支持不完整,且 overflow-wrap:anywhere\\r\\n 会破坏 flex:1 的收缩行为,导致 tokui-desc__value 换行到 label 下方。\\r\\n 修复:显式声明 flex 方向 + 防止 flex 子项溢出。 */\\r\\n\\r\\n/* ── 默认 grid 模式:降级为 flexbox 模拟 grid(兼容旧版 Android WebView) ── */\\n.tokui-shell .tokui-stream .tokui-desc[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-wrap: wrap !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc__item[data-v-9693c11e] {\\r\\n flex: 0 0 calc(100% / var(--tokui-desc-cols, 3));\\r\\n box-sizing: border-box;\\r\\n min-width: 0;\\n}\\r\\n\\r\\n/* ── 水平模式:强制 flex-row,防止 Android 上 value 掉到 label 下方 ── */\\n.tokui-shell .tokui-stream .tokui-desc--horizontal[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: column !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__item[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: row !important;\\r\\n flex-wrap: nowrap !important;\\r\\n align-items: baseline !important;\\r\\n flex: none !important;\\r\\n width: 100% !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__label[data-v-9693c11e] {\\r\\n flex: 0 0 auto !important;\\r\\n flex-shrink: 0 !important;\\r\\n min-width: var(--tokui-desc-label-w, 100px);\\r\\n white-space: nowrap !important;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: 0 !important;\\r\\n padding-right: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__value[data-v-9693c11e] {\\r\\n flex: 1 1 0% !important;\\r\\n min-width: 0 !important;\\r\\n width: auto !important;\\r\\n overflow-wrap: break-word !important;\\r\\n word-break: break-word;\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/components/chatMain/ChatDetail.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
1435
+ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\n.chat-main[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n min-width: 0;\\r\\n min-height: 0;\\n}\\r\\n\\r\\n/* ── Header ── */\\n.chat-header[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\r\\n padding: 10px 20px;\\r\\n background: #fff;\\r\\n border-bottom: 1px solid #e8e8e8;\\r\\n flex-shrink: 0;\\r\\n z-index: 10;\\n}\\n.header-left[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\r\\n min-width: 0;\\r\\n flex: 1;\\n}\\n.header-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n flex-shrink: 0;\\n}\\n.agent-info[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\n}\\n.agent-icon[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 8px;\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px;\\r\\n font-weight: 600;\\r\\n flex-shrink: 0;\\n}\\n.agent-info:nth-child(4n + 2) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\n}\\n.agent-info:nth-child(4n + 3) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #fa8c16, #ffa940);\\n}\\n.agent-info:nth-child(4n + 4) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #722ed1, #b37feb);\\n}\\n.agent-text[data-v-9693c11e] {\\r\\n min-width: 0;\\n}\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1.3;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n max-width: min(300px, 45vw);\\n}\\n.header-right[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\n.manage-link[data-v-9693c11e] {\\r\\n font-size: 13px;\\r\\n color: #1677ff;\\r\\n text-decoration: none;\\n}\\n.manage-link[data-v-9693c11e]:hover {\\r\\n color: #4096ff;\\n}\\r\\n\\r\\n/* ── Chat Body ── */\\n.chat-body[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n overflow-y: auto;\\r\\n padding: 16px clamp(12px, 3vw, 40px);\\r\\n scroll-behavior: auto;\\r\\n position: relative;\\r\\n -webkit-overflow-scrolling: touch;\\r\\n background: url(https://qiguanbang.obs.cn-east-3.myhuaweicloud.com/production/image/AlAgent/agentbackground.png) 100% no-repeat;\\r\\n background-size: 100% 100%;\\r\\n background-position: center;\\r\\n background-size: cover;\\r\\n min-height: 0;\\n}\\n.welcome[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n height: 100%;\\r\\n color: #bbb;\\r\\n margin: 0 -20px;\\n}\\n.welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 12px;\\r\\n opacity: 0.7;\\n}\\n.welcome-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\n}\\n.welcome-default .welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 16px;\\n}\\n.welcome-title[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n margin-bottom: 8px;\\n}\\r\\n\\r\\n/* ── Message Row ── */\\n.msg-row[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n padding: 20px 16px;\\r\\n box-sizing: border-box;\\r\\n align-items: center;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 10px;\\r\\n max-width: 85%;\\r\\n width: min(100%, 860px) !important;\\r\\n max-width: 860px;\\n}\\n.msg-row.user .msg-main[data-v-9693c11e] {\\r\\n flex-direction: row-reverse;\\n}\\n.msg-row.assistant[data-v-9693c11e] {\\r\\n justify-content: center;\\n}\\n.load-more[data-v-9693c11e] {\\r\\n text-align: center;\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n padding: 4px 0;\\n}\\n.msg-time[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #bbb;\\r\\n margin-top: 2px;\\r\\n padding-left: 4px;\\n}\\n.msg-row.user .msg-time[data-v-9693c11e] {\\r\\n text-align: right;\\r\\n padding-right: 4px;\\n}\\n.msg-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 4px;\\r\\n margin-top: 4px;\\r\\n padding-left: 4px;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\n}\\n.ai-badge[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #999;\\r\\n /* background: #f5f5f5; */\\r\\n padding: 1px 6px;\\r\\n border-radius: 3px;\\r\\n white-space: nowrap;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n margin-left: auto;\\n}\\n.action-btn[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n cursor: pointer;\\r\\n padding: 2px 6px 2px 0;\\r\\n border-radius: 4px;\\r\\n transition: all 0.2s;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.action-btn[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\r\\n background: #f0f5ff;\\n}\\r\\n\\r\\n/* ── STT 语音转文字状态 ── */\\n.stt-status-block[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n font-size: 14px;\\r\\n line-height: 1.5;\\n}\\n.stt-bubble-wrap[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\n}\\n.stt-outside-icon[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n right: 100%;\\r\\n top: 50%;\\r\\n margin-top: -9px;\\r\\n margin-right: 20px;\\n}\\n.stt-spinner[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n border: 2.5px solid #d9d9d9;\\r\\n border-top-color: #1677ff;\\r\\n border-right-color: #4096ff;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n flex-shrink: 0;\\r\\n box-sizing: border-box;\\n}\\n@-webkit-keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n@keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n.stt-error-icon[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n font-size: 12px;\\r\\n font-weight: 700;\\r\\n border-radius: 50%;\\r\\n line-height: 1;\\r\\n flex-shrink: 0;\\n}\\n.stt-bubble-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\r\\n color: #fff;\\r\\n white-space: nowrap;\\r\\n margin: 6px 0;\\n}\\n.msg-avatar[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 13px;\\r\\n font-weight: 700;\\r\\n flex-shrink: 0;\\r\\n color: #fff;\\n}\\n.msg-avatar.user[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\n}\\n.msg-avatar.assistant[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\r\\n color: #fff;\\n}\\n.msg-agent-label[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n margin-bottom: 2px;\\n}\\n.msg-content[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\r\\n box-sizing: border-box;\\r\\n overflow: hidden;\\n}\\r\\n\\r\\n/* ── Bubble ── */\\n.bubble[data-v-9693c11e] {\\r\\n max-width: 100%;\\r\\n min-width: 30px;\\r\\n width: -webkit-fit-content;\\r\\n width: -moz-fit-content;\\r\\n width: fit-content;\\r\\n padding: 8px 14px;\\r\\n border-radius: 12px;\\r\\n line-height: 1.4;\\r\\n font-size: 15px;\\r\\n word-break: break-word;\\r\\n white-space: normal;\\r\\n text-align: left;\\r\\n overflow-wrap: anywhere;\\n}\\n.bubble[data-v-9693c11e]:has(.typing) {\\r\\n padding: 16px 20px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border-bottom-right-radius: 4px;\\r\\n box-shadow: 0 2px 8px rgba(22, 119, 255, 0.15);\\r\\n float: none;\\r\\n margin-left: auto;\\r\\n max-width: min(100%, 520px);\\n}\\n.bubble.assistant[data-v-9693c11e] {\\r\\n background: #fff;\\r\\n color: #333;\\r\\n border-bottom-left-radius: 4px;\\r\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\n}\\n.bubble[data-v-9693c11e] table {\\r\\n border-collapse: collapse;\\r\\n width: 100%;\\r\\n margin: 6px 0;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] th,\\r\\n.bubble[data-v-9693c11e] td {\\r\\n border: 1px solid #e8e8e8;\\r\\n padding: 5px 8px;\\r\\n text-align: left;\\n}\\n.bubble[data-v-9693c11e] th {\\r\\n background: #fafafa;\\r\\n font-weight: 600;\\n}\\n.bubble[data-v-9693c11e] code {\\r\\n padding: 1px 5px;\\r\\n border-radius: 3px;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] pre {\\r\\n background: #f6f8fa;\\r\\n color: #333;\\r\\n padding: 12px;\\r\\n border-radius: 6px;\\r\\n overflow-x: auto;\\r\\n font-size: 13px;\\r\\n border: 1px solid #e8e8e8;\\r\\n margin: 8px 0;\\r\\n line-height: 1.5;\\r\\n white-space: pre;\\n}\\n.bubble[data-v-9693c11e] ul,\\r\\n.bubble[data-v-9693c11e] ol {\\r\\n padding-left: 20px;\\r\\n margin: 4px 0;\\n}\\n.bubble[data-v-9693c11e] li {\\r\\n margin: 2px 0;\\n}\\n.bubble[data-v-9693c11e] p {\\r\\n margin: 6px 0;\\n}\\r\\n\\r\\n/* ── Thinking ── */\\n.thinking-details[data-v-9693c11e] {\\r\\n margin-bottom: 10px;\\r\\n border: 1px solid #e8e8e8;\\r\\n border-radius: 8px;\\r\\n overflow: hidden;\\r\\n background: #fafafa;\\n}\\n.thinking-summary[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #888;\\r\\n cursor: pointer;\\r\\n padding: 6px 10px;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.thinking-summary[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\n}\\n.thinking-body[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n padding: 8px 12px;\\r\\n line-height: 1.6;\\r\\n border-top: 1px solid #f0f0f0;\\r\\n text-align: left;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.final-content[data-v-9693c11e] {\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n line-height: 1.6;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif;\\r\\n font-weight: normal;\\r\\n letter-spacing: normal;\\r\\n text-transform: none;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n overflow-wrap: anywhere;\\r\\n -webkit-text-size-adjust: 100%;\\n}\\n.tokui-shell .tokui-stream > *[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream p[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ul[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ol[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream li[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream table[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream code[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream pre[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream th[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream td[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__label,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n box-sizing: border-box;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n line-height: 1.6 !important;\\r\\n letter-spacing: normal !important;\\r\\n text-transform: none !important;\\r\\n color: inherit;\\r\\n margin: 0;\\r\\n padding: 0;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-desc__label {\\r\\n font-size: 13px !important;\\r\\n color: #8c8c8c !important;\\r\\n line-height: 1.4 !important;\\r\\n margin-bottom: 2px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n display: inline-block;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag {\\r\\n display: inline-flex !important;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n padding: 2px 8px !important;\\r\\n border-radius: 999px !important;\\r\\n font-size: 12px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #1677ff !important;\\r\\n background: #e6f4ff !important;\\r\\n border: 1px solid #bae0ff !important;\\r\\n white-space: nowrap;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header {\\r\\n display: flex !important;\\r\\n align-items: center !important;\\r\\n padding: 10px 12px !important;\\r\\n margin: 0 !important;\\r\\n font-size: 14px !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n background: transparent !important;\\r\\n border: none !important;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h3,\\r\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h4 {\\r\\n font-size: 15px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n margin: 0 !important;\\r\\n color: inherit !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3 {\\r\\n font-size: 16px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n margin: 10px 0 6px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n display: block !important;\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #8c8c8c !important;\\r\\n margin: 0 0 4px !important;\\n}\\n.thinking-body[data-v-9693c11e] p {\\r\\n margin: 4px 0;\\n}\\r\\n\\r\\n/* ── Typing ── */\\n.typing[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n min-height: 24px;\\r\\n justify-content: flex-start;\\r\\n padding: 4px 0;\\n}\\n.typing .phrase[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #888;\\r\\n white-space: nowrap;\\r\\n -webkit-animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n letter-spacing: 0.5px;\\n}\\n.typing .dots[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 5px;\\r\\n align-items: center;\\r\\n justify-content: center;\\n}\\n.typing .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background: #bbb;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\r\\n animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(2) {\\r\\n -webkit-animation-delay: 0.16s;\\r\\n animation-delay: 0.16s;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(3) {\\r\\n -webkit-animation-delay: 0.32s;\\r\\n animation-delay: 0.32s;\\n}\\n@-webkit-keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@-webkit-keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\n@keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Wait Timer ── */\\n.typing.wait-5 .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-animation-duration: 1s;\\r\\n animation-duration: 1s;\\n}\\n.typing.wait-5 .phrase[data-v-9693c11e] {\\r\\n color: #888;\\n}\\n.typing.wait-10 .dots span[data-v-9693c11e] {\\r\\n width: 9px;\\r\\n height: 9px;\\r\\n -webkit-animation-duration: 0.8s;\\r\\n animation-duration: 0.8s;\\r\\n background: #909399;\\n}\\n.typing.wait-10 .phrase[data-v-9693c11e] {\\r\\n color: #909399;\\n}\\n.typing.wait-10 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\n}\\n.typing.wait-15 .dots span[data-v-9693c11e] {\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n -webkit-animation-duration: 0.6s;\\r\\n animation-duration: 0.6s;\\r\\n background: #1677ff;\\n}\\n.typing.wait-15 .phrase[data-v-9693c11e] {\\r\\n color: #1677ff;\\n}\\n.typing.wait-15 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\n}\\n@-webkit-keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\n@keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\r\\n\\r\\n/* ── Tool Calls ── */\\n.tool-calls[data-v-9693c11e] {\\r\\n margin-top: 8px;\\n}\\n.tool-item[data-v-9693c11e] {\\r\\n background: #f5f5f5;\\r\\n border-radius: 6px;\\r\\n padding: 6px 10px;\\r\\n margin-bottom: 4px;\\r\\n font-size: 12px;\\n}\\n.tool-badge[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n margin-bottom: 2px;\\r\\n font-size: 11px;\\r\\n color: #fa8c16;\\r\\n font-weight: 500;\\n}\\n.tool-item pre[data-v-9693c11e] {\\r\\n margin: 0;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-all;\\r\\n font-size: 12px;\\r\\n color: #666;\\r\\n max-height: 120px;\\r\\n overflow-y: auto;\\n}\\r\\n\\r\\n/* ── Scroll Buttons ── */\\n.scroll-btns[data-v-9693c11e] {\\r\\n position: sticky;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: 20px;\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n margin-top: 10px;\\r\\n pointer-events: none;\\n}\\n.scroll-btn[data-v-9693c11e] {\\r\\n pointer-events: auto;\\r\\n width: 38px;\\r\\n height: 38px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\n}\\n.scroll-btn i[data-v-9693c11e] {\\r\\n font-size: 16px;\\r\\n color: #333;\\n}\\r\\n\\r\\n/* ── Footer ── */\\n.chat-footer[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\r\\n border-top: none;\\r\\n padding: 30px 0;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n margin: 0 auto;\\r\\n width: 100%;\\n}\\n.input-area[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: flex-end;\\r\\n gap: 6px;\\r\\n background: #fff;\\r\\n border-radius: 24px;\\r\\n margin: 0 24px;\\r\\n padding: 18px 20px;\\r\\n border: 1px solid #b3d8ff;\\r\\n transition: border-color 0.2s;\\r\\n flex-wrap: wrap;\\r\\n width: min(100%, 1000px) !important;\\r\\n box-sizing: border-box;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: #1677ff;\\r\\n background: #fff;\\r\\n box-shadow: none;\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n content: \\\"Enter 发送,Ctrl+Enter 换行\\\";\\r\\n position: absolute;\\r\\n right: 100px;\\r\\n bottom: 28px;\\r\\n font-size: 14px;\\r\\n color: #8c8c8c;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-wrap[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: calc(100% + 30px);\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n border: 1px solid #e5e7eb;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n pointer-events: auto;\\r\\n position: relative;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);\\n}\\n.scroll-bottom-btn svg[data-v-9693c11e] {\\r\\n color: #4e5969;\\n}\\n.scroll-bottom-btn[data-v-9693c11e]:hover {\\r\\n transform: scale(1.1);\\n}\\n.loading-circle[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n inset: 3px;\\r\\n border-radius: 50%;\\r\\n border: 1.5px solid transparent;\\r\\n border-top: 1.5px solid #1677ff;\\r\\n -webkit-animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\r\\n animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\n}\\n@-webkit-keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n@keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n border: none;\\r\\n outline: none;\\r\\n background: transparent;\\r\\n resize: none;\\r\\n font-size: 16px;\\r\\n line-height: 24px;\\r\\n min-height: 38px;\\r\\n height: 100px;\\r\\n max-height: 100px;\\r\\n overflow-y: auto;\\r\\n padding: 0;\\r\\n box-sizing: border-box;\\r\\n font-family: inherit;\\r\\n color: #333;\\r\\n flex: 1 1 320px;\\r\\n min-width: 0;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: auto;\\r\\n height: 40px;\\r\\n padding: 0 21px;\\r\\n border-radius: 6px;\\r\\n border: none;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n font-size: 14px;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: \\\"发送\\\";\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn.active[data-v-9693c11e]:hover {\\r\\n background: #4096ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 35px;\\r\\n height: 35px;\\r\\n border-radius: 50%;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\n}\\n.stop-btn[data-v-9693c11e]:hover {\\r\\n background: #ff7875;\\n}\\r\\n\\r\\n/* ── Voice ── */\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n/* ── Voice Recording Overlay ── */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Chat Agent Avatar ── */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e] {\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n\\r\\n/* ── Agent List Avatar ── */\\n.agent-list-avatar[data-v-9693c11e] {\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n color: #fff;\\r\\n font-size: 22px;\\r\\n font-weight: 600;\\r\\n border-radius: 8px;\\n}\\n.agent-list-avatar.has-agent-img[data-v-9693c11e] {\\r\\n width: 97px;\\r\\n height: 126px;\\r\\n background-size: cover;\\n}\\n.agent-list-avatar[data-v-9693c11e]:not(.has-agent-img) {\\r\\n width: 76px;\\r\\n height: 108px;\\r\\n transform: translateX(9px);\\n}\\n.session-avatar[data-v-9693c11e] {\\r\\n width: 44px !important;\\r\\n height: 44px !important;\\r\\n border-radius: 50% !important;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px !important;\\r\\n font-weight: 600;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n overflow: hidden;\\n}\\n.avatar-pic[data-v-9693c11e] {\\r\\n width: 85%;\\r\\n height: 85%;\\r\\n -o-object-fit: contain;\\r\\n object-fit: contain;\\n}\\r\\n\\r\\n/* ── Mobile Buttons ── */\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n.mobile-back-btn[data-v-9693c11e],\\r\\n.mobile-header-btn[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border: none;\\r\\n border-radius: 10px;\\r\\n background: #f5f7fa;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.mobile-menu-btn i[data-v-9693c11e],\\r\\n.mobile-back-btn i[data-v-9693c11e],\\r\\n.mobile-header-btn i[data-v-9693c11e] {\\r\\n font-size: 18px;\\n}\\n.mobile-back-btn i[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\n}\\r\\n/* ── 聊天空白欢迎页(匹配蓝湖移动端聊天首页) ── */\\n.chat-empty-welcome[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n padding: 40px 20px;\\r\\n box-sizing: border-box;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 0px;\\r\\n max-width: 600px;\\r\\n margin: 80px auto;\\n}\\r\\n\\r\\n/* 顶部渐变欢迎卡片 */\\n.welcome-card[data-v-9693c11e] {\\r\\n position: relative;\\r\\n background: linear-gradient(296deg, #D6EDFF 20%, #E8EBFF 80%);\\r\\nborder-radius: 16px 16px 0px 0px;\\r\\n padding: 24px 24px 24px 150px;\\r\\n overflow: visible;\\n}\\r\\n/* 左侧探出头像容器 */\\n.welcome-avatar-box[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 0px;\\r\\n width: 110px;\\r\\n height: 137px;\\n}\\n.welcome-avatar[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n border-radius: 12px;\\r\\n background-size: cover;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 20px;\\r\\n color: #fff;\\r\\n font-weight: 600;\\n}\\n.welcome-avatar.has-chat-agent-img[data-v-9693c11e] {\\r\\n background: transparent;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\n}\\n.welcome-text-group[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 6px;\\n}\\n.welcome-text-group .text-sm[data-v-9693c11e] {\\r\\nfont-weight: 400;font-size: 12px;color: #666666;\\r\\ntext-align: left;\\r\\nfont-style: normal;\\n}\\n.welcome-text-group .text-lg[data-v-9693c11e] {\\r\\n \\r\\n font-weight: 500;\\r\\nfont-size: 16px;\\r\\ncolor: #000000;\\n}\\r\\n\\r\\n/* 猜你想问容器 */\\n.guess-box[data-v-9693c11e] {\\r\\n border-top: 1px solid #fff;\\r\\n background: linear-gradient(180deg, #B8DCFF 0%, #DFF0FF 50%, #FFFFFF 100%);\\r\\n border-radius: 0 0 16px 16px;\\r\\n padding: 20px;\\n}\\n.guess-title[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 6px;\\r\\n font-size: 16px;\\r\\n font-weight: 500;\\r\\n color: #222;\\r\\n margin-bottom: 16px;\\n}\\n.tag-wrap[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n gap: 10px;\\n}\\n.quick-tag[data-v-9693c11e] {\\r\\n padding: 8px 14px;\\r\\n background: #F2FAFF;\\r\\n border-radius: 8px;\\r\\n font-size: 14px;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n border: 1px solid #e0eaff;\\r\\n transition: all 0.2s;\\r\\n white-space: nowrap;\\n}\\r\\n/* .quick-tag:hover {\\r\\n background: #f0f7ff;\\r\\n border-color: #1677ff;\\r\\n} */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e]{\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n/* ── Responsive ── */\\n@media screen and (max-width: 768px) {\\n.chat-header[data-v-9693c11e] {\\r\\n padding: 10px 12px;\\r\\n background: transparent;\\r\\n border-bottom: none;\\n}\\n.chat-header .chat-agent-avatar-wrapper[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .agent-desc[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .header-left[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n justify-content: center;\\r\\n position: relative;\\n}\\n.chat-header .header-left .mobile-back-btn[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 12px;\\r\\n background: transparent;\\n}\\n.chat-header .header-actions .mobile-header-btn[data-v-9693c11e] {\\r\\n background: transparent;\\n}\\n.chat-body[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n background-position: center top;\\n}\\n.msg-row[data-v-9693c11e] {\\r\\n padding: 12px 0;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\n}\\n.bubble[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n max-width: 88%;\\n}\\n.chat-footer[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n flex-shrink: 0;\\r\\n background: #f5f5f5;\\r\\n box-sizing: border-box;\\n}\\r\\n /* 安全区域由 .chat-footer 统一处理,.chat-body 不需要重复加 padding */\\n.input-area[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n margin: 0;\\r\\n padding: 6px 6px 6px 4px;\\r\\n border-radius: 24px;\\r\\n border: none;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\r\\n flex-wrap: nowrap;\\r\\n align-items: center;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: transparent;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n display: none;\\n}\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n flex-basis: 0;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n max-height: 100px;\\r\\n font-size: 15px;\\r\\n background: #EBEBEB;\\r\\n border-radius: 18px;\\r\\n padding: 0 14px;\\r\\n line-height: 36px;\\r\\n margin: 0 4px;\\r\\n color: #333;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n padding: 0;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: block;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: none;\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.send-btn[data-v-9693c11e]:active {\\r\\n transform: scale(0.92);\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\n}\\n.guess-box[data-v-9693c11e] {\\r\\n padding: 16px;\\n}\\r\\n\\r\\n /* H5 语音模式 */\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n /* 语音录制浮层 */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n}\\n@media screen and (max-width: 480px) {\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n max-width: calc(100vw - 132px);\\n}\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n .mobile-header-btn[data-v-9693c11e] {\\r\\n width: 32px;\\r\\n height: 32px;\\n}\\n}\\r\\n\\r\\n/* ═══════════════════════════════════════════════════════════════\\r\\n Android 兼容性修复 — TokUI desc 组件 flex/grid 布局\\r\\n ═══════════════════════════════════════════════════════════════\\r\\n 问题:部分 Android WebView 对 CSS Grid 支持不完整,且 overflow-wrap:anywhere\\r\\n 会破坏 flex:1 的收缩行为,导致 tokui-desc__value 换行到 label 下方。\\r\\n 修复:显式声明 flex 方向 + 防止 flex 子项溢出。 */\\r\\n\\r\\n/* ── 默认 grid 模式:降级为 flexbox 模拟 grid(兼容旧版 Android WebView) ── */\\n.tokui-shell .tokui-stream .tokui-desc[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-wrap: wrap !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc__item[data-v-9693c11e] {\\r\\n flex: 0 0 calc(100% / var(--tokui-desc-cols, 3));\\r\\n box-sizing: border-box;\\r\\n min-width: 0;\\n}\\r\\n\\r\\n/* ── 水平模式:item 内部 label/value 强制水平并排 ──\\r\\n 注意:容器 (.tokui-desc) 的 flex-wrap 布局继承自上方通用规则,\\r\\n 仅覆盖 item 内部从块级排列改为 flex 行排列。 */\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__item[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: row !important;\\r\\n flex-wrap: nowrap !important;\\r\\n align-items: baseline !important;\\r\\n width: 100% !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__label[data-v-9693c11e] {\\r\\n flex: 0 0 auto !important;\\r\\n flex-shrink: 0 !important;\\r\\n min-width: var(--tokui-desc-label-w, 100px);\\r\\n white-space: nowrap !important;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: 0 !important;\\r\\n padding-right: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__value[data-v-9693c11e] {\\r\\n flex: 1 1 0% !important;\\r\\n min-width: 0 !important;\\r\\n width: auto !important;\\r\\n overflow-wrap: break-word !important;\\r\\n word-break: break-word;\\n}\\r\\n\\r\\n/* ── 移动端:tokui-row 列改为纵向堆叠,避免窄屏挤压 ── */\\n@media screen and (max-width: 768px) {\\n.tokui-shell .tokui-stream .tokui-row[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: column !important;\\r\\n gap: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-col[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n grid-column: unset !important;\\n}\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/components/chatMain/ChatDetail.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
1436
1436
 
1437
1437
  /***/ }),
1438
1438
 
@@ -11033,7 +11033,7 @@ eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\
11033
11033
  /*! exports provided: name, version, main, private, scripts, dependencies, devDependencies, browserslist, directories, keywords, license, files, default */
11034
11034
  /***/ (function(module) {
11035
11035
 
11036
- eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"zj-plugin-intelligent\\\",\\\"version\\\":\\\"1.2.8-beta.7\\\",\\\"main\\\":\\\"lib/ZjPluginIntelligent.umd.min.js\\\",\\\"private\\\":false,\\\"scripts\\\":{\\\"serve\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve\\\",\\\"build\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build\\\",\\\"lib\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\",\\\"lib:test\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode test --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\"},\\\"dependencies\\\":{\\\"@jboltai/tokui\\\":\\\"^0.1.6\\\",\\\"crypto-js\\\":\\\"^4.2.0\\\",\\\"html2canvas\\\":\\\"^1.4.1\\\",\\\"markdown-it\\\":\\\"^14.1.0\\\"},\\\"devDependencies\\\":{\\\"@babel/preset-env\\\":\\\"^7.14.9\\\",\\\"@vue/cli-plugin-babel\\\":\\\"~4.5.0\\\",\\\"@vue/cli-plugin-eslint\\\":\\\"^4.5.13\\\",\\\"@vue/cli-plugin-vuex\\\":\\\"~4.5.0\\\",\\\"@vue/cli-service\\\":\\\"~4.5.0\\\",\\\"axios\\\":\\\"^0.27.2\\\",\\\"babel-eslint\\\":\\\"^10.1.0\\\",\\\"babel-plugin-component\\\":\\\"^1.1.1\\\",\\\"compression-webpack-plugin\\\":\\\"^6.0.3\\\",\\\"core-js\\\":\\\"^3.6.5\\\",\\\"element-ui\\\":\\\"^2.15.4\\\",\\\"eslint\\\":\\\"^7.30.0\\\",\\\"eslint-plugin-vue\\\":\\\"^7.13.0\\\",\\\"js-cookie\\\":\\\"^2.2.1\\\",\\\"obs-upload\\\":\\\"^1.0.4\\\",\\\"pako\\\":\\\"^2.1.0\\\",\\\"reconnecting-websocket\\\":\\\"^4.4.0\\\",\\\"sass\\\":\\\"^1.71.0\\\",\\\"sass-loader\\\":\\\"^8.0.2\\\",\\\"snowflake-id\\\":\\\"^1.1.0\\\",\\\"vue\\\":\\\"^2.6.11\\\",\\\"vue-template-compiler\\\":\\\"^2.6.11\\\",\\\"vuex\\\":\\\"^3.4.0\\\",\\\"webpack-bundle-analyzer\\\":\\\"^4.4.2\\\"},\\\"browserslist\\\":[\\\"> 1%\\\",\\\"last 2 versions\\\",\\\"not dead\\\"],\\\"directories\\\":{\\\"lib\\\":\\\"lib\\\"},\\\"keywords\\\":[],\\\"license\\\":\\\"ISC\\\",\\\"files\\\":[\\\"lib\\\"]}\");\n\n//# sourceURL=webpack://ZjPluginIntelligent/./package.json?");
11036
+ eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"zj-plugin-intelligent\\\",\\\"version\\\":\\\"1.2.8-beta.8\\\",\\\"main\\\":\\\"lib/ZjPluginIntelligent.umd.min.js\\\",\\\"private\\\":false,\\\"scripts\\\":{\\\"serve\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve\\\",\\\"build\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build\\\",\\\"lib\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\",\\\"lib:test\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode test --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\"},\\\"dependencies\\\":{\\\"@jboltai/tokui\\\":\\\"^0.1.6\\\",\\\"crypto-js\\\":\\\"^4.2.0\\\",\\\"html2canvas\\\":\\\"^1.4.1\\\",\\\"markdown-it\\\":\\\"^14.1.0\\\"},\\\"devDependencies\\\":{\\\"@babel/preset-env\\\":\\\"^7.14.9\\\",\\\"@vue/cli-plugin-babel\\\":\\\"~4.5.0\\\",\\\"@vue/cli-plugin-eslint\\\":\\\"^4.5.13\\\",\\\"@vue/cli-plugin-vuex\\\":\\\"~4.5.0\\\",\\\"@vue/cli-service\\\":\\\"~4.5.0\\\",\\\"axios\\\":\\\"^0.27.2\\\",\\\"babel-eslint\\\":\\\"^10.1.0\\\",\\\"babel-plugin-component\\\":\\\"^1.1.1\\\",\\\"compression-webpack-plugin\\\":\\\"^6.0.3\\\",\\\"core-js\\\":\\\"^3.6.5\\\",\\\"element-ui\\\":\\\"^2.15.4\\\",\\\"eslint\\\":\\\"^7.30.0\\\",\\\"eslint-plugin-vue\\\":\\\"^7.13.0\\\",\\\"js-cookie\\\":\\\"^2.2.1\\\",\\\"obs-upload\\\":\\\"^1.0.4\\\",\\\"pako\\\":\\\"^2.1.0\\\",\\\"reconnecting-websocket\\\":\\\"^4.4.0\\\",\\\"sass\\\":\\\"^1.71.0\\\",\\\"sass-loader\\\":\\\"^8.0.2\\\",\\\"snowflake-id\\\":\\\"^1.1.0\\\",\\\"vue\\\":\\\"^2.6.11\\\",\\\"vue-template-compiler\\\":\\\"^2.6.11\\\",\\\"vuex\\\":\\\"^3.4.0\\\",\\\"webpack-bundle-analyzer\\\":\\\"^4.4.2\\\"},\\\"browserslist\\\":[\\\"> 1%\\\",\\\"last 2 versions\\\",\\\"not dead\\\"],\\\"directories\\\":{\\\"lib\\\":\\\"lib\\\"},\\\"keywords\\\":[],\\\"license\\\":\\\"ISC\\\",\\\"files\\\":[\\\"lib\\\"]}\");\n\n//# sourceURL=webpack://ZjPluginIntelligent/./package.json?");
11037
11037
 
11038
11038
  /***/ }),
11039
11039
 
@@ -12009,7 +12009,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
12009
12009
  /***/ (function(module, exports, __webpack_require__) {
12010
12010
 
12011
12011
  "use strict";
12012
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setAuth = setAuth;\nexports.setToken = setToken;\nexports.getAuth = getAuth;\nexports.setBaseURL = setBaseURL;\nexports.signQueryParams = signQueryParams;\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(__webpack_require__(/*! axios */ \"./node_modules/axios/index.js\"));\n\nvar _cookie = __webpack_require__(/*! @lib/utils/cookie.js */ \"./src/lib/utils/cookie.js\");\n\nvar _message = __webpack_require__(/*! @lib/utils/message.js */ \"./src/lib/utils/message.js\");\n\n/*\r\n * @Author: 高瑞廷 2419056691@qq.com\r\n * @Date: 2026-06-04 11:27:13\r\n * @LastEditors: 高瑞廷 2419056691@qq.com\r\n * @LastEditTime: 2026-07-30 14:51:53\r\n * @FilePath: \\zjkj-nodejs-npm_customer-client\\src\\lib\\utils\\request.js\r\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r\n */\nvar runtimeAK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_AK || '';\nvar runtimeSK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_SK || '';\nvar runtimeToken = '';\nvar _user = '';\nvar _companyNo = '';\nvar runtimeBaseURL = \"https://ai.jybtech.cn\" || false;\n\nvar CryptoJS = __webpack_require__(/*! crypto-js */ \"./node_modules/crypto-js/index.js\");\n\nvar service = _axios.default.create({\n baseURL: runtimeBaseURL,\n timeout: 15000\n});\n\nfunction hmacSha256Base64(rawSignStr, sk) {\n var hmac = CryptoJS.HmacSHA256(rawSignStr, sk); // 转为 Base64\n\n return CryptoJS.enc.Base64.stringify(hmac);\n}\n\nfunction setAuth(ak, sk, user, companyNo, token) {\n runtimeAK = ak || '';\n runtimeSK = sk || '';\n _user = user;\n _companyNo = companyNo;\n runtimeToken = token || '';\n}\n\nfunction setToken(token) {\n runtimeToken = token || '';\n}\n\nfunction getAuth() {\n return {\n ak: runtimeAK,\n sk: runtimeSK,\n token: runtimeToken,\n user: _user,\n companyNo: _companyNo\n };\n}\n\nfunction setBaseURL(url) {\n runtimeBaseURL = url || '';\n service.defaults.baseURL = runtimeBaseURL;\n}\n\nfunction signQueryParams(params, secretKey) {\n var keys = Object.keys(params).filter(function (k) {\n return k !== 'ak' && k !== 'sign';\n }).sort();\n var raw = keys.map(function (k) {\n return \"\".concat(k, \"=\").concat(params[k] || '');\n }).join('&');\n return hmacSha256Base64(raw, secretKey);\n}\n\nservice.interceptors.request.use(function (config) {\n // 流式接口跳过 Header 签名\n if (config.url.includes('/chat/stream')) {\n return config;\n }\n\n var ts = Date.now().toString();\n var token = runtimeToken || (0, _cookie.getToken)();\n var externalUser = _user || '';\n var signParts = []; // 1. 第一位:token(有值才加入)\n\n if (_companyNo) {\n signParts.push(\"companyNo=\".concat(_companyNo));\n }\n\n if (token) {\n signParts.push(\"token=\".concat(token));\n } // 2. 第二位:user(有值才加入)\n\n\n if (externalUser) {\n signParts.push(\"user=\".concat(externalUser));\n } // 3. 第三位:ts(必选,永远存在)\n\n\n signParts.push(\"ts=\".concat(ts)); // 拼接最终待签字符串\n\n var signStr = signParts.join('&'); // 计算签名\n\n var sign = hmacSha256Base64(signStr, runtimeSK);\n\n if (_companyNo) {\n config.headers['X-Company-No'] = _companyNo;\n } // 设置请求头\n\n\n config.headers['X-AK'] = runtimeAK;\n config.headers['X-Ts'] = ts;\n config.headers['X-Sign'] = sign;\n\n if (token) {\n config.headers['X-Auth-Token'] = \"\".concat(token);\n config.headers.Authorization = \"Bearer \".concat(token);\n }\n\n config.headers['X-External-User'] = externalUser;\n config.headers['Content-Type'] = 'application/json'; // console.log('排序后key:', sortedKeys)\n\n return config;\n}, function (error) {\n return Promise.reject(error);\n});\nservice.interceptors.response.use(function (response) {\n var res = response.data;\n\n if (res.code === 200) {\n return res;\n } else if (res.code === 40101) {\n (0, _message.showMessage)('登录已过期,请重新登录');\n return Promise.reject(new Error(res.message));\n } else {\n (0, _message.showMessage)(res.message || '请求失败');\n return Promise.reject(new Error(res.message));\n }\n}, function (error) {\n (0, _message.showMessage)(error.message || '网络异常');\n return Promise.reject(error);\n});\nvar _default = service;\nexports.default = _default;\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/utils/request.js?");
12012
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setAuth = setAuth;\nexports.setToken = setToken;\nexports.getAuth = getAuth;\nexports.setBaseURL = setBaseURL;\nexports.signQueryParams = signQueryParams;\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(__webpack_require__(/*! axios */ \"./node_modules/axios/index.js\"));\n\nvar _cookie = __webpack_require__(/*! @lib/utils/cookie.js */ \"./src/lib/utils/cookie.js\");\n\nvar _message = __webpack_require__(/*! @lib/utils/message.js */ \"./src/lib/utils/message.js\");\n\n/*\r\n * @Author: 高瑞廷 2419056691@qq.com\r\n * @Date: 2026-06-04 11:27:13\r\n * @LastEditors: 高瑞廷 2419056691@qq.com\r\n * @LastEditTime: 2026-07-30 15:11:50\r\n * @FilePath: \\zjkj-nodejs-npm_customer-client\\src\\lib\\utils\\request.js\r\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r\n */\nvar runtimeAK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_AK || '';\nvar runtimeSK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_SK || '';\nvar runtimeToken = '';\nvar _user = '';\nvar _companyNo = '';\nvar runtimeBaseURL = \"https://ai.jybtech.cn\" || false;\n\nvar CryptoJS = __webpack_require__(/*! crypto-js */ \"./node_modules/crypto-js/index.js\");\n\nvar service = _axios.default.create({\n baseURL: runtimeBaseURL,\n timeout: 15000\n});\n\nfunction hmacSha256Base64(rawSignStr, sk) {\n var hmac = CryptoJS.HmacSHA256(rawSignStr, sk); // 转为 Base64\n\n return CryptoJS.enc.Base64.stringify(hmac);\n}\n\nfunction setAuth(ak, sk, user, companyNo, token) {\n runtimeAK = ak || '';\n runtimeSK = sk || '';\n _user = user;\n _companyNo = companyNo;\n runtimeToken = token || '';\n}\n\nfunction setToken(token) {\n runtimeToken = token || '';\n}\n\nfunction getAuth() {\n return {\n ak: runtimeAK,\n sk: runtimeSK,\n token: runtimeToken,\n user: _user,\n companyNo: _companyNo\n };\n}\n\nfunction setBaseURL(url) {\n runtimeBaseURL = url || '';\n service.defaults.baseURL = runtimeBaseURL;\n}\n\nfunction signQueryParams(params, secretKey) {\n var keys = Object.keys(params).filter(function (k) {\n return k !== 'ak' && k !== 'sign';\n }).sort();\n var raw = keys.map(function (k) {\n return \"\".concat(k, \"=\").concat(params[k] || '');\n }).join('&');\n return hmacSha256Base64(raw, secretKey);\n}\n\nservice.interceptors.request.use(function (config) {\n // 流式接口跳过 Header 签名\n if (config.url.includes('/chat/stream')) {\n return config;\n }\n\n var ts = Date.now().toString();\n var token = runtimeToken || (0, _cookie.getToken)();\n var externalUser = _user || '';\n var signParts = []; // 1. 第一位:token(有值才加入)\n\n if (_companyNo) {\n signParts.push(\"companyNo=\".concat(_companyNo));\n }\n\n if (token) {\n signParts.push(\"token=\".concat(token));\n } // 2. 第二位:user(有值才加入)\n\n\n if (externalUser) {\n signParts.push(\"user=\".concat(externalUser));\n } // 3. 第三位:ts(必选,永远存在)\n\n\n signParts.push(\"ts=\".concat(ts)); // 拼接最终待签字符串\n\n var signStr = signParts.join('&'); // 计算签名\n\n var sign = hmacSha256Base64(signStr, runtimeSK);\n\n if (_companyNo) {\n config.headers['X-Company-No'] = _companyNo;\n } // 设置请求头\n\n\n config.headers['X-AK'] = runtimeAK;\n config.headers['X-Ts'] = ts;\n config.headers['X-Sign'] = sign;\n\n if (token) {\n config.headers['X-Auth-Token'] = \"\".concat(token);\n config.headers.Authorization = \"Bearer \".concat(token);\n }\n\n config.headers['X-External-User'] = externalUser;\n config.headers['Content-Type'] = 'application/json'; // console.log('排序后key:', sortedKeys)\n\n return config;\n}, function (error) {\n return Promise.reject(error);\n});\nservice.interceptors.response.use(function (response) {\n var res = response.data;\n\n if (res.code === 200) {\n return res;\n } else if (res.code === 40101) {\n (0, _message.showMessage)('登录已过期,请重新登录');\n return Promise.reject(new Error(res.message));\n } else {\n (0, _message.showMessage)(res.message || '请求失败');\n return Promise.reject(new Error(res.message));\n }\n}, function (error) {\n (0, _message.showMessage)(error.message || '网络异常');\n return Promise.reject(error);\n});\nvar _default = service;\nexports.default = _default;\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/utils/request.js?");
12013
12013
 
12014
12014
  /***/ }),
12015
12015
 
@@ -1441,7 +1441,7 @@ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../.
1441
1441
  /*! no static exports found */
1442
1442
  /***/ (function(module, exports, __webpack_require__) {
1443
1443
 
1444
- eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\n.chat-main[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n min-width: 0;\\r\\n min-height: 0;\\n}\\r\\n\\r\\n/* ── Header ── */\\n.chat-header[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\r\\n padding: 10px 20px;\\r\\n background: #fff;\\r\\n border-bottom: 1px solid #e8e8e8;\\r\\n flex-shrink: 0;\\r\\n z-index: 10;\\n}\\n.header-left[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\r\\n min-width: 0;\\r\\n flex: 1;\\n}\\n.header-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n flex-shrink: 0;\\n}\\n.agent-info[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\n}\\n.agent-icon[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 8px;\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px;\\r\\n font-weight: 600;\\r\\n flex-shrink: 0;\\n}\\n.agent-info:nth-child(4n + 2) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\n}\\n.agent-info:nth-child(4n + 3) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #fa8c16, #ffa940);\\n}\\n.agent-info:nth-child(4n + 4) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #722ed1, #b37feb);\\n}\\n.agent-text[data-v-9693c11e] {\\r\\n min-width: 0;\\n}\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1.3;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n max-width: min(300px, 45vw);\\n}\\n.header-right[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\n.manage-link[data-v-9693c11e] {\\r\\n font-size: 13px;\\r\\n color: #1677ff;\\r\\n text-decoration: none;\\n}\\n.manage-link[data-v-9693c11e]:hover {\\r\\n color: #4096ff;\\n}\\r\\n\\r\\n/* ── Chat Body ── */\\n.chat-body[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n overflow-y: auto;\\r\\n padding: 16px clamp(12px, 3vw, 40px);\\r\\n scroll-behavior: auto;\\r\\n position: relative;\\r\\n -webkit-overflow-scrolling: touch;\\r\\n background: url(https://qiguanbang.obs.cn-east-3.myhuaweicloud.com/production/image/AlAgent/agentbackground.png) 100% no-repeat;\\r\\n background-size: 100% 100%;\\r\\n background-position: center;\\r\\n background-size: cover;\\r\\n min-height: 0;\\n}\\n.welcome[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n height: 100%;\\r\\n color: #bbb;\\r\\n margin: 0 -20px;\\n}\\n.welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 12px;\\r\\n opacity: 0.7;\\n}\\n.welcome-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\n}\\n.welcome-default .welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 16px;\\n}\\n.welcome-title[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n margin-bottom: 8px;\\n}\\r\\n\\r\\n/* ── Message Row ── */\\n.msg-row[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n padding: 20px 16px;\\r\\n box-sizing: border-box;\\r\\n align-items: center;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 10px;\\r\\n max-width: 85%;\\r\\n width: min(100%, 860px) !important;\\r\\n max-width: 860px;\\n}\\n.msg-row.user .msg-main[data-v-9693c11e] {\\r\\n flex-direction: row-reverse;\\n}\\n.msg-row.assistant[data-v-9693c11e] {\\r\\n justify-content: center;\\n}\\n.load-more[data-v-9693c11e] {\\r\\n text-align: center;\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n padding: 4px 0;\\n}\\n.msg-time[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #bbb;\\r\\n margin-top: 2px;\\r\\n padding-left: 4px;\\n}\\n.msg-row.user .msg-time[data-v-9693c11e] {\\r\\n text-align: right;\\r\\n padding-right: 4px;\\n}\\n.msg-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 4px;\\r\\n margin-top: 4px;\\r\\n padding-left: 4px;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\n}\\n.ai-badge[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #999;\\r\\n /* background: #f5f5f5; */\\r\\n padding: 1px 6px;\\r\\n border-radius: 3px;\\r\\n white-space: nowrap;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n margin-left: auto;\\n}\\n.action-btn[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n cursor: pointer;\\r\\n padding: 2px 6px 2px 0;\\r\\n border-radius: 4px;\\r\\n transition: all 0.2s;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.action-btn[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\r\\n background: #f0f5ff;\\n}\\r\\n\\r\\n/* ── STT 语音转文字状态 ── */\\n.stt-status-block[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n font-size: 14px;\\r\\n line-height: 1.5;\\n}\\n.stt-bubble-wrap[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\n}\\n.stt-outside-icon[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n right: 100%;\\r\\n top: 50%;\\r\\n margin-top: -9px;\\r\\n margin-right: 20px;\\n}\\n.stt-spinner[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n border: 2.5px solid #d9d9d9;\\r\\n border-top-color: #1677ff;\\r\\n border-right-color: #4096ff;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n flex-shrink: 0;\\r\\n box-sizing: border-box;\\n}\\n@-webkit-keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n@keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n.stt-error-icon[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n font-size: 12px;\\r\\n font-weight: 700;\\r\\n border-radius: 50%;\\r\\n line-height: 1;\\r\\n flex-shrink: 0;\\n}\\n.stt-bubble-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\r\\n color: #fff;\\r\\n white-space: nowrap;\\r\\n margin: 6px 0;\\n}\\n.msg-avatar[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 13px;\\r\\n font-weight: 700;\\r\\n flex-shrink: 0;\\r\\n color: #fff;\\n}\\n.msg-avatar.user[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\n}\\n.msg-avatar.assistant[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\r\\n color: #fff;\\n}\\n.msg-agent-label[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n margin-bottom: 2px;\\n}\\n.msg-content[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\r\\n box-sizing: border-box;\\r\\n overflow: hidden;\\n}\\r\\n\\r\\n/* ── Bubble ── */\\n.bubble[data-v-9693c11e] {\\r\\n max-width: 100%;\\r\\n min-width: 30px;\\r\\n width: -webkit-fit-content;\\r\\n width: -moz-fit-content;\\r\\n width: fit-content;\\r\\n padding: 8px 14px;\\r\\n border-radius: 12px;\\r\\n line-height: 1.4;\\r\\n font-size: 15px;\\r\\n word-break: break-word;\\r\\n white-space: normal;\\r\\n text-align: left;\\r\\n overflow-wrap: anywhere;\\n}\\n.bubble[data-v-9693c11e]:has(.typing) {\\r\\n padding: 16px 20px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border-bottom-right-radius: 4px;\\r\\n box-shadow: 0 2px 8px rgba(22, 119, 255, 0.15);\\r\\n float: none;\\r\\n margin-left: auto;\\r\\n max-width: min(100%, 520px);\\n}\\n.bubble.assistant[data-v-9693c11e] {\\r\\n background: #fff;\\r\\n color: #333;\\r\\n border-bottom-left-radius: 4px;\\r\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\n}\\n.bubble[data-v-9693c11e] table {\\r\\n border-collapse: collapse;\\r\\n width: 100%;\\r\\n margin: 6px 0;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] th,\\r\\n.bubble[data-v-9693c11e] td {\\r\\n border: 1px solid #e8e8e8;\\r\\n padding: 5px 8px;\\r\\n text-align: left;\\n}\\n.bubble[data-v-9693c11e] th {\\r\\n background: #fafafa;\\r\\n font-weight: 600;\\n}\\n.bubble[data-v-9693c11e] code {\\r\\n padding: 1px 5px;\\r\\n border-radius: 3px;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] pre {\\r\\n background: #f6f8fa;\\r\\n color: #333;\\r\\n padding: 12px;\\r\\n border-radius: 6px;\\r\\n overflow-x: auto;\\r\\n font-size: 13px;\\r\\n border: 1px solid #e8e8e8;\\r\\n margin: 8px 0;\\r\\n line-height: 1.5;\\r\\n white-space: pre;\\n}\\n.bubble[data-v-9693c11e] ul,\\r\\n.bubble[data-v-9693c11e] ol {\\r\\n padding-left: 20px;\\r\\n margin: 4px 0;\\n}\\n.bubble[data-v-9693c11e] li {\\r\\n margin: 2px 0;\\n}\\n.bubble[data-v-9693c11e] p {\\r\\n margin: 6px 0;\\n}\\r\\n\\r\\n/* ── Thinking ── */\\n.thinking-details[data-v-9693c11e] {\\r\\n margin-bottom: 10px;\\r\\n border: 1px solid #e8e8e8;\\r\\n border-radius: 8px;\\r\\n overflow: hidden;\\r\\n background: #fafafa;\\n}\\n.thinking-summary[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #888;\\r\\n cursor: pointer;\\r\\n padding: 6px 10px;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.thinking-summary[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\n}\\n.thinking-body[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n padding: 8px 12px;\\r\\n line-height: 1.6;\\r\\n border-top: 1px solid #f0f0f0;\\r\\n text-align: left;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.final-content[data-v-9693c11e] {\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n line-height: 1.6;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif;\\r\\n font-weight: normal;\\r\\n letter-spacing: normal;\\r\\n text-transform: none;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n overflow-wrap: anywhere;\\r\\n -webkit-text-size-adjust: 100%;\\n}\\n.tokui-shell .tokui-stream > *[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream p[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ul[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ol[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream li[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream table[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream code[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream pre[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream th[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream td[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__label,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n box-sizing: border-box;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n line-height: 1.6 !important;\\r\\n letter-spacing: normal !important;\\r\\n text-transform: none !important;\\r\\n color: inherit;\\r\\n margin: 0;\\r\\n padding: 0;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-desc__label {\\r\\n font-size: 13px !important;\\r\\n color: #8c8c8c !important;\\r\\n line-height: 1.4 !important;\\r\\n margin-bottom: 2px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n display: inline-block;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag {\\r\\n display: inline-flex !important;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n padding: 2px 8px !important;\\r\\n border-radius: 999px !important;\\r\\n font-size: 12px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #1677ff !important;\\r\\n background: #e6f4ff !important;\\r\\n border: 1px solid #bae0ff !important;\\r\\n white-space: nowrap;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header {\\r\\n display: flex !important;\\r\\n align-items: center !important;\\r\\n padding: 10px 12px !important;\\r\\n margin: 0 !important;\\r\\n font-size: 14px !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n background: transparent !important;\\r\\n border: none !important;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h3,\\r\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h4 {\\r\\n font-size: 15px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n margin: 0 !important;\\r\\n color: inherit !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3 {\\r\\n font-size: 16px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n margin: 10px 0 6px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n display: block !important;\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #8c8c8c !important;\\r\\n margin: 0 0 4px !important;\\n}\\n.thinking-body[data-v-9693c11e] p {\\r\\n margin: 4px 0;\\n}\\r\\n\\r\\n/* ── Typing ── */\\n.typing[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n min-height: 24px;\\r\\n justify-content: flex-start;\\r\\n padding: 4px 0;\\n}\\n.typing .phrase[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #888;\\r\\n white-space: nowrap;\\r\\n -webkit-animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n letter-spacing: 0.5px;\\n}\\n.typing .dots[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 5px;\\r\\n align-items: center;\\r\\n justify-content: center;\\n}\\n.typing .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background: #bbb;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\r\\n animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(2) {\\r\\n -webkit-animation-delay: 0.16s;\\r\\n animation-delay: 0.16s;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(3) {\\r\\n -webkit-animation-delay: 0.32s;\\r\\n animation-delay: 0.32s;\\n}\\n@-webkit-keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@-webkit-keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\n@keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Wait Timer ── */\\n.typing.wait-5 .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-animation-duration: 1s;\\r\\n animation-duration: 1s;\\n}\\n.typing.wait-5 .phrase[data-v-9693c11e] {\\r\\n color: #888;\\n}\\n.typing.wait-10 .dots span[data-v-9693c11e] {\\r\\n width: 9px;\\r\\n height: 9px;\\r\\n -webkit-animation-duration: 0.8s;\\r\\n animation-duration: 0.8s;\\r\\n background: #909399;\\n}\\n.typing.wait-10 .phrase[data-v-9693c11e] {\\r\\n color: #909399;\\n}\\n.typing.wait-10 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\n}\\n.typing.wait-15 .dots span[data-v-9693c11e] {\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n -webkit-animation-duration: 0.6s;\\r\\n animation-duration: 0.6s;\\r\\n background: #1677ff;\\n}\\n.typing.wait-15 .phrase[data-v-9693c11e] {\\r\\n color: #1677ff;\\n}\\n.typing.wait-15 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\n}\\n@-webkit-keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\n@keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\r\\n\\r\\n/* ── Tool Calls ── */\\n.tool-calls[data-v-9693c11e] {\\r\\n margin-top: 8px;\\n}\\n.tool-item[data-v-9693c11e] {\\r\\n background: #f5f5f5;\\r\\n border-radius: 6px;\\r\\n padding: 6px 10px;\\r\\n margin-bottom: 4px;\\r\\n font-size: 12px;\\n}\\n.tool-badge[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n margin-bottom: 2px;\\r\\n font-size: 11px;\\r\\n color: #fa8c16;\\r\\n font-weight: 500;\\n}\\n.tool-item pre[data-v-9693c11e] {\\r\\n margin: 0;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-all;\\r\\n font-size: 12px;\\r\\n color: #666;\\r\\n max-height: 120px;\\r\\n overflow-y: auto;\\n}\\r\\n\\r\\n/* ── Scroll Buttons ── */\\n.scroll-btns[data-v-9693c11e] {\\r\\n position: sticky;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: 20px;\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n margin-top: 10px;\\r\\n pointer-events: none;\\n}\\n.scroll-btn[data-v-9693c11e] {\\r\\n pointer-events: auto;\\r\\n width: 38px;\\r\\n height: 38px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\n}\\n.scroll-btn i[data-v-9693c11e] {\\r\\n font-size: 16px;\\r\\n color: #333;\\n}\\r\\n\\r\\n/* ── Footer ── */\\n.chat-footer[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\r\\n border-top: none;\\r\\n padding: 30px 0;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n margin: 0 auto;\\r\\n width: 100%;\\n}\\n.input-area[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: flex-end;\\r\\n gap: 6px;\\r\\n background: #fff;\\r\\n border-radius: 24px;\\r\\n margin: 0 24px;\\r\\n padding: 18px 20px;\\r\\n border: 1px solid #b3d8ff;\\r\\n transition: border-color 0.2s;\\r\\n flex-wrap: wrap;\\r\\n width: min(100%, 1000px) !important;\\r\\n box-sizing: border-box;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: #1677ff;\\r\\n background: #fff;\\r\\n box-shadow: none;\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n content: \\\"Enter 发送,Ctrl+Enter 换行\\\";\\r\\n position: absolute;\\r\\n right: 100px;\\r\\n bottom: 28px;\\r\\n font-size: 14px;\\r\\n color: #8c8c8c;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-wrap[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: calc(100% + 30px);\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n border: 1px solid #e5e7eb;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n pointer-events: auto;\\r\\n position: relative;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);\\n}\\n.scroll-bottom-btn svg[data-v-9693c11e] {\\r\\n color: #4e5969;\\n}\\n.scroll-bottom-btn[data-v-9693c11e]:hover {\\r\\n transform: scale(1.1);\\n}\\n.loading-circle[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n inset: 3px;\\r\\n border-radius: 50%;\\r\\n border: 1.5px solid transparent;\\r\\n border-top: 1.5px solid #1677ff;\\r\\n -webkit-animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\r\\n animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\n}\\n@-webkit-keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n@keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n border: none;\\r\\n outline: none;\\r\\n background: transparent;\\r\\n resize: none;\\r\\n font-size: 16px;\\r\\n line-height: 24px;\\r\\n min-height: 38px;\\r\\n height: 100px;\\r\\n max-height: 100px;\\r\\n overflow-y: auto;\\r\\n padding: 0;\\r\\n box-sizing: border-box;\\r\\n font-family: inherit;\\r\\n color: #333;\\r\\n flex: 1 1 320px;\\r\\n min-width: 0;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: auto;\\r\\n height: 40px;\\r\\n padding: 0 21px;\\r\\n border-radius: 6px;\\r\\n border: none;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n font-size: 14px;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: \\\"发送\\\";\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn.active[data-v-9693c11e]:hover {\\r\\n background: #4096ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 35px;\\r\\n height: 35px;\\r\\n border-radius: 50%;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\n}\\n.stop-btn[data-v-9693c11e]:hover {\\r\\n background: #ff7875;\\n}\\r\\n\\r\\n/* ── Voice ── */\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n/* ── Voice Recording Overlay ── */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Chat Agent Avatar ── */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e] {\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n\\r\\n/* ── Agent List Avatar ── */\\n.agent-list-avatar[data-v-9693c11e] {\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n color: #fff;\\r\\n font-size: 22px;\\r\\n font-weight: 600;\\r\\n border-radius: 8px;\\n}\\n.agent-list-avatar.has-agent-img[data-v-9693c11e] {\\r\\n width: 97px;\\r\\n height: 126px;\\r\\n background-size: cover;\\n}\\n.agent-list-avatar[data-v-9693c11e]:not(.has-agent-img) {\\r\\n width: 76px;\\r\\n height: 108px;\\r\\n transform: translateX(9px);\\n}\\n.session-avatar[data-v-9693c11e] {\\r\\n width: 44px !important;\\r\\n height: 44px !important;\\r\\n border-radius: 50% !important;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px !important;\\r\\n font-weight: 600;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n overflow: hidden;\\n}\\n.avatar-pic[data-v-9693c11e] {\\r\\n width: 85%;\\r\\n height: 85%;\\r\\n -o-object-fit: contain;\\r\\n object-fit: contain;\\n}\\r\\n\\r\\n/* ── Mobile Buttons ── */\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n.mobile-back-btn[data-v-9693c11e],\\r\\n.mobile-header-btn[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border: none;\\r\\n border-radius: 10px;\\r\\n background: #f5f7fa;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.mobile-menu-btn i[data-v-9693c11e],\\r\\n.mobile-back-btn i[data-v-9693c11e],\\r\\n.mobile-header-btn i[data-v-9693c11e] {\\r\\n font-size: 18px;\\n}\\n.mobile-back-btn i[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\n}\\r\\n/* ── 聊天空白欢迎页(匹配蓝湖移动端聊天首页) ── */\\n.chat-empty-welcome[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n padding: 40px 20px;\\r\\n box-sizing: border-box;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 0px;\\r\\n max-width: 600px;\\r\\n margin: 80px auto;\\n}\\r\\n\\r\\n/* 顶部渐变欢迎卡片 */\\n.welcome-card[data-v-9693c11e] {\\r\\n position: relative;\\r\\n background: linear-gradient(296deg, #D6EDFF 20%, #E8EBFF 80%);\\r\\nborder-radius: 16px 16px 0px 0px;\\r\\n padding: 24px 24px 24px 150px;\\r\\n overflow: visible;\\n}\\r\\n/* 左侧探出头像容器 */\\n.welcome-avatar-box[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 0px;\\r\\n width: 110px;\\r\\n height: 137px;\\n}\\n.welcome-avatar[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n border-radius: 12px;\\r\\n background-size: cover;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 20px;\\r\\n color: #fff;\\r\\n font-weight: 600;\\n}\\n.welcome-avatar.has-chat-agent-img[data-v-9693c11e] {\\r\\n background: transparent;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\n}\\n.welcome-text-group[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 6px;\\n}\\n.welcome-text-group .text-sm[data-v-9693c11e] {\\r\\nfont-weight: 400;font-size: 12px;color: #666666;\\r\\ntext-align: left;\\r\\nfont-style: normal;\\n}\\n.welcome-text-group .text-lg[data-v-9693c11e] {\\r\\n \\r\\n font-weight: 500;\\r\\nfont-size: 16px;\\r\\ncolor: #000000;\\n}\\r\\n\\r\\n/* 猜你想问容器 */\\n.guess-box[data-v-9693c11e] {\\r\\n border-top: 1px solid #fff;\\r\\n background: linear-gradient(180deg, #B8DCFF 0%, #DFF0FF 50%, #FFFFFF 100%);\\r\\n border-radius: 0 0 16px 16px;\\r\\n padding: 20px;\\n}\\n.guess-title[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 6px;\\r\\n font-size: 16px;\\r\\n font-weight: 500;\\r\\n color: #222;\\r\\n margin-bottom: 16px;\\n}\\n.tag-wrap[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n gap: 10px;\\n}\\n.quick-tag[data-v-9693c11e] {\\r\\n padding: 8px 14px;\\r\\n background: #F2FAFF;\\r\\n border-radius: 8px;\\r\\n font-size: 14px;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n border: 1px solid #e0eaff;\\r\\n transition: all 0.2s;\\r\\n white-space: nowrap;\\n}\\r\\n/* .quick-tag:hover {\\r\\n background: #f0f7ff;\\r\\n border-color: #1677ff;\\r\\n} */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e]{\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n/* ── Responsive ── */\\n@media screen and (max-width: 768px) {\\n.chat-header[data-v-9693c11e] {\\r\\n padding: 10px 12px;\\r\\n background: transparent;\\r\\n border-bottom: none;\\n}\\n.chat-header .chat-agent-avatar-wrapper[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .agent-desc[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .header-left[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n justify-content: center;\\r\\n position: relative;\\n}\\n.chat-header .header-left .mobile-back-btn[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 12px;\\r\\n background: transparent;\\n}\\n.chat-header .header-actions .mobile-header-btn[data-v-9693c11e] {\\r\\n background: transparent;\\n}\\n.chat-body[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n background-position: center top;\\n}\\n.msg-row[data-v-9693c11e] {\\r\\n padding: 12px 0;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\n}\\n.bubble[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n max-width: 88%;\\n}\\n.chat-footer[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n flex-shrink: 0;\\r\\n background: #f5f5f5;\\r\\n box-sizing: border-box;\\n}\\r\\n /* 安全区域由 .chat-footer 统一处理,.chat-body 不需要重复加 padding */\\n.input-area[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n margin: 0;\\r\\n padding: 6px 6px 6px 4px;\\r\\n border-radius: 24px;\\r\\n border: none;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\r\\n flex-wrap: nowrap;\\r\\n align-items: center;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: transparent;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n display: none;\\n}\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n flex-basis: 0;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n max-height: 100px;\\r\\n font-size: 15px;\\r\\n background: #EBEBEB;\\r\\n border-radius: 18px;\\r\\n padding: 0 14px;\\r\\n line-height: 36px;\\r\\n margin: 0 4px;\\r\\n color: #333;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n padding: 0;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: block;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: none;\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.send-btn[data-v-9693c11e]:active {\\r\\n transform: scale(0.92);\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\n}\\n.guess-box[data-v-9693c11e] {\\r\\n padding: 16px;\\n}\\r\\n\\r\\n /* H5 语音模式 */\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n /* 语音录制浮层 */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n}\\n@media screen and (max-width: 480px) {\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n max-width: calc(100vw - 132px);\\n}\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n .mobile-header-btn[data-v-9693c11e] {\\r\\n width: 32px;\\r\\n height: 32px;\\n}\\n}\\r\\n\\r\\n/* ═══════════════════════════════════════════════════════════════\\r\\n Android 兼容性修复 — TokUI desc 组件 flex/grid 布局\\r\\n ═══════════════════════════════════════════════════════════════\\r\\n 问题:部分 Android WebView 对 CSS Grid 支持不完整,且 overflow-wrap:anywhere\\r\\n 会破坏 flex:1 的收缩行为,导致 tokui-desc__value 换行到 label 下方。\\r\\n 修复:显式声明 flex 方向 + 防止 flex 子项溢出。 */\\r\\n\\r\\n/* ── 默认 grid 模式:降级为 flexbox 模拟 grid(兼容旧版 Android WebView) ── */\\n.tokui-shell .tokui-stream .tokui-desc[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-wrap: wrap !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc__item[data-v-9693c11e] {\\r\\n flex: 0 0 calc(100% / var(--tokui-desc-cols, 3));\\r\\n box-sizing: border-box;\\r\\n min-width: 0;\\n}\\r\\n\\r\\n/* ── 水平模式:强制 flex-row,防止 Android 上 value 掉到 label 下方 ── */\\n.tokui-shell .tokui-stream .tokui-desc--horizontal[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: column !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__item[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: row !important;\\r\\n flex-wrap: nowrap !important;\\r\\n align-items: baseline !important;\\r\\n flex: none !important;\\r\\n width: 100% !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__label[data-v-9693c11e] {\\r\\n flex: 0 0 auto !important;\\r\\n flex-shrink: 0 !important;\\r\\n min-width: var(--tokui-desc-label-w, 100px);\\r\\n white-space: nowrap !important;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: 0 !important;\\r\\n padding-right: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__value[data-v-9693c11e] {\\r\\n flex: 1 1 0% !important;\\r\\n min-width: 0 !important;\\r\\n width: auto !important;\\r\\n overflow-wrap: break-word !important;\\r\\n word-break: break-word;\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/components/chatMain/ChatDetail.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
1444
+ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\n.chat-main[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n min-width: 0;\\r\\n min-height: 0;\\n}\\r\\n\\r\\n/* ── Header ── */\\n.chat-header[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\r\\n padding: 10px 20px;\\r\\n background: #fff;\\r\\n border-bottom: 1px solid #e8e8e8;\\r\\n flex-shrink: 0;\\r\\n z-index: 10;\\n}\\n.header-left[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\r\\n min-width: 0;\\r\\n flex: 1;\\n}\\n.header-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n flex-shrink: 0;\\n}\\n.agent-info[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\n}\\n.agent-icon[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 8px;\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px;\\r\\n font-weight: 600;\\r\\n flex-shrink: 0;\\n}\\n.agent-info:nth-child(4n + 2) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\n}\\n.agent-info:nth-child(4n + 3) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #fa8c16, #ffa940);\\n}\\n.agent-info:nth-child(4n + 4) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #722ed1, #b37feb);\\n}\\n.agent-text[data-v-9693c11e] {\\r\\n min-width: 0;\\n}\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1.3;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n max-width: min(300px, 45vw);\\n}\\n.header-right[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\n.manage-link[data-v-9693c11e] {\\r\\n font-size: 13px;\\r\\n color: #1677ff;\\r\\n text-decoration: none;\\n}\\n.manage-link[data-v-9693c11e]:hover {\\r\\n color: #4096ff;\\n}\\r\\n\\r\\n/* ── Chat Body ── */\\n.chat-body[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n overflow-y: auto;\\r\\n padding: 16px clamp(12px, 3vw, 40px);\\r\\n scroll-behavior: auto;\\r\\n position: relative;\\r\\n -webkit-overflow-scrolling: touch;\\r\\n background: url(https://qiguanbang.obs.cn-east-3.myhuaweicloud.com/production/image/AlAgent/agentbackground.png) 100% no-repeat;\\r\\n background-size: 100% 100%;\\r\\n background-position: center;\\r\\n background-size: cover;\\r\\n min-height: 0;\\n}\\n.welcome[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n height: 100%;\\r\\n color: #bbb;\\r\\n margin: 0 -20px;\\n}\\n.welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 12px;\\r\\n opacity: 0.7;\\n}\\n.welcome-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\n}\\n.welcome-default .welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 16px;\\n}\\n.welcome-title[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n margin-bottom: 8px;\\n}\\r\\n\\r\\n/* ── Message Row ── */\\n.msg-row[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n padding: 20px 16px;\\r\\n box-sizing: border-box;\\r\\n align-items: center;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 10px;\\r\\n max-width: 85%;\\r\\n width: min(100%, 860px) !important;\\r\\n max-width: 860px;\\n}\\n.msg-row.user .msg-main[data-v-9693c11e] {\\r\\n flex-direction: row-reverse;\\n}\\n.msg-row.assistant[data-v-9693c11e] {\\r\\n justify-content: center;\\n}\\n.load-more[data-v-9693c11e] {\\r\\n text-align: center;\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n padding: 4px 0;\\n}\\n.msg-time[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #bbb;\\r\\n margin-top: 2px;\\r\\n padding-left: 4px;\\n}\\n.msg-row.user .msg-time[data-v-9693c11e] {\\r\\n text-align: right;\\r\\n padding-right: 4px;\\n}\\n.msg-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 4px;\\r\\n margin-top: 4px;\\r\\n padding-left: 4px;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\n}\\n.ai-badge[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #999;\\r\\n /* background: #f5f5f5; */\\r\\n padding: 1px 6px;\\r\\n border-radius: 3px;\\r\\n white-space: nowrap;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n margin-left: auto;\\n}\\n.action-btn[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n cursor: pointer;\\r\\n padding: 2px 6px 2px 0;\\r\\n border-radius: 4px;\\r\\n transition: all 0.2s;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.action-btn[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\r\\n background: #f0f5ff;\\n}\\r\\n\\r\\n/* ── STT 语音转文字状态 ── */\\n.stt-status-block[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n font-size: 14px;\\r\\n line-height: 1.5;\\n}\\n.stt-bubble-wrap[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\n}\\n.stt-outside-icon[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n right: 100%;\\r\\n top: 50%;\\r\\n margin-top: -9px;\\r\\n margin-right: 20px;\\n}\\n.stt-spinner[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n border: 2.5px solid #d9d9d9;\\r\\n border-top-color: #1677ff;\\r\\n border-right-color: #4096ff;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n flex-shrink: 0;\\r\\n box-sizing: border-box;\\n}\\n@-webkit-keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n@keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n.stt-error-icon[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n font-size: 12px;\\r\\n font-weight: 700;\\r\\n border-radius: 50%;\\r\\n line-height: 1;\\r\\n flex-shrink: 0;\\n}\\n.stt-bubble-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\r\\n color: #fff;\\r\\n white-space: nowrap;\\r\\n margin: 6px 0;\\n}\\n.msg-avatar[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 13px;\\r\\n font-weight: 700;\\r\\n flex-shrink: 0;\\r\\n color: #fff;\\n}\\n.msg-avatar.user[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\n}\\n.msg-avatar.assistant[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\r\\n color: #fff;\\n}\\n.msg-agent-label[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n margin-bottom: 2px;\\n}\\n.msg-content[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\r\\n box-sizing: border-box;\\r\\n overflow: hidden;\\n}\\r\\n\\r\\n/* ── Bubble ── */\\n.bubble[data-v-9693c11e] {\\r\\n max-width: 100%;\\r\\n min-width: 30px;\\r\\n width: -webkit-fit-content;\\r\\n width: -moz-fit-content;\\r\\n width: fit-content;\\r\\n padding: 8px 14px;\\r\\n border-radius: 12px;\\r\\n line-height: 1.4;\\r\\n font-size: 15px;\\r\\n word-break: break-word;\\r\\n white-space: normal;\\r\\n text-align: left;\\r\\n overflow-wrap: anywhere;\\n}\\n.bubble[data-v-9693c11e]:has(.typing) {\\r\\n padding: 16px 20px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border-bottom-right-radius: 4px;\\r\\n box-shadow: 0 2px 8px rgba(22, 119, 255, 0.15);\\r\\n float: none;\\r\\n margin-left: auto;\\r\\n max-width: min(100%, 520px);\\n}\\n.bubble.assistant[data-v-9693c11e] {\\r\\n background: #fff;\\r\\n color: #333;\\r\\n border-bottom-left-radius: 4px;\\r\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\n}\\n.bubble[data-v-9693c11e] table {\\r\\n border-collapse: collapse;\\r\\n width: 100%;\\r\\n margin: 6px 0;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] th,\\r\\n.bubble[data-v-9693c11e] td {\\r\\n border: 1px solid #e8e8e8;\\r\\n padding: 5px 8px;\\r\\n text-align: left;\\n}\\n.bubble[data-v-9693c11e] th {\\r\\n background: #fafafa;\\r\\n font-weight: 600;\\n}\\n.bubble[data-v-9693c11e] code {\\r\\n padding: 1px 5px;\\r\\n border-radius: 3px;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] pre {\\r\\n background: #f6f8fa;\\r\\n color: #333;\\r\\n padding: 12px;\\r\\n border-radius: 6px;\\r\\n overflow-x: auto;\\r\\n font-size: 13px;\\r\\n border: 1px solid #e8e8e8;\\r\\n margin: 8px 0;\\r\\n line-height: 1.5;\\r\\n white-space: pre;\\n}\\n.bubble[data-v-9693c11e] ul,\\r\\n.bubble[data-v-9693c11e] ol {\\r\\n padding-left: 20px;\\r\\n margin: 4px 0;\\n}\\n.bubble[data-v-9693c11e] li {\\r\\n margin: 2px 0;\\n}\\n.bubble[data-v-9693c11e] p {\\r\\n margin: 6px 0;\\n}\\r\\n\\r\\n/* ── Thinking ── */\\n.thinking-details[data-v-9693c11e] {\\r\\n margin-bottom: 10px;\\r\\n border: 1px solid #e8e8e8;\\r\\n border-radius: 8px;\\r\\n overflow: hidden;\\r\\n background: #fafafa;\\n}\\n.thinking-summary[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #888;\\r\\n cursor: pointer;\\r\\n padding: 6px 10px;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.thinking-summary[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\n}\\n.thinking-body[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n padding: 8px 12px;\\r\\n line-height: 1.6;\\r\\n border-top: 1px solid #f0f0f0;\\r\\n text-align: left;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.final-content[data-v-9693c11e] {\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n line-height: 1.6;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif;\\r\\n font-weight: normal;\\r\\n letter-spacing: normal;\\r\\n text-transform: none;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n overflow-wrap: anywhere;\\r\\n -webkit-text-size-adjust: 100%;\\n}\\n.tokui-shell .tokui-stream > *[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream p[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ul[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ol[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream li[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream table[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream code[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream pre[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream th[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream td[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__label,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n box-sizing: border-box;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n line-height: 1.6 !important;\\r\\n letter-spacing: normal !important;\\r\\n text-transform: none !important;\\r\\n color: inherit;\\r\\n margin: 0;\\r\\n padding: 0;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-desc__label {\\r\\n font-size: 13px !important;\\r\\n color: #8c8c8c !important;\\r\\n line-height: 1.4 !important;\\r\\n margin-bottom: 2px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n display: inline-block;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag {\\r\\n display: inline-flex !important;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n padding: 2px 8px !important;\\r\\n border-radius: 999px !important;\\r\\n font-size: 12px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #1677ff !important;\\r\\n background: #e6f4ff !important;\\r\\n border: 1px solid #bae0ff !important;\\r\\n white-space: nowrap;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header {\\r\\n display: flex !important;\\r\\n align-items: center !important;\\r\\n padding: 10px 12px !important;\\r\\n margin: 0 !important;\\r\\n font-size: 14px !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n background: transparent !important;\\r\\n border: none !important;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h3,\\r\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h4 {\\r\\n font-size: 15px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n margin: 0 !important;\\r\\n color: inherit !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3 {\\r\\n font-size: 16px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n margin: 10px 0 6px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n display: block !important;\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #8c8c8c !important;\\r\\n margin: 0 0 4px !important;\\n}\\n.thinking-body[data-v-9693c11e] p {\\r\\n margin: 4px 0;\\n}\\r\\n\\r\\n/* ── Typing ── */\\n.typing[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n min-height: 24px;\\r\\n justify-content: flex-start;\\r\\n padding: 4px 0;\\n}\\n.typing .phrase[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #888;\\r\\n white-space: nowrap;\\r\\n -webkit-animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n letter-spacing: 0.5px;\\n}\\n.typing .dots[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 5px;\\r\\n align-items: center;\\r\\n justify-content: center;\\n}\\n.typing .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background: #bbb;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\r\\n animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(2) {\\r\\n -webkit-animation-delay: 0.16s;\\r\\n animation-delay: 0.16s;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(3) {\\r\\n -webkit-animation-delay: 0.32s;\\r\\n animation-delay: 0.32s;\\n}\\n@-webkit-keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@-webkit-keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\n@keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Wait Timer ── */\\n.typing.wait-5 .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-animation-duration: 1s;\\r\\n animation-duration: 1s;\\n}\\n.typing.wait-5 .phrase[data-v-9693c11e] {\\r\\n color: #888;\\n}\\n.typing.wait-10 .dots span[data-v-9693c11e] {\\r\\n width: 9px;\\r\\n height: 9px;\\r\\n -webkit-animation-duration: 0.8s;\\r\\n animation-duration: 0.8s;\\r\\n background: #909399;\\n}\\n.typing.wait-10 .phrase[data-v-9693c11e] {\\r\\n color: #909399;\\n}\\n.typing.wait-10 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\n}\\n.typing.wait-15 .dots span[data-v-9693c11e] {\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n -webkit-animation-duration: 0.6s;\\r\\n animation-duration: 0.6s;\\r\\n background: #1677ff;\\n}\\n.typing.wait-15 .phrase[data-v-9693c11e] {\\r\\n color: #1677ff;\\n}\\n.typing.wait-15 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\n}\\n@-webkit-keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\n@keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\r\\n\\r\\n/* ── Tool Calls ── */\\n.tool-calls[data-v-9693c11e] {\\r\\n margin-top: 8px;\\n}\\n.tool-item[data-v-9693c11e] {\\r\\n background: #f5f5f5;\\r\\n border-radius: 6px;\\r\\n padding: 6px 10px;\\r\\n margin-bottom: 4px;\\r\\n font-size: 12px;\\n}\\n.tool-badge[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n margin-bottom: 2px;\\r\\n font-size: 11px;\\r\\n color: #fa8c16;\\r\\n font-weight: 500;\\n}\\n.tool-item pre[data-v-9693c11e] {\\r\\n margin: 0;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-all;\\r\\n font-size: 12px;\\r\\n color: #666;\\r\\n max-height: 120px;\\r\\n overflow-y: auto;\\n}\\r\\n\\r\\n/* ── Scroll Buttons ── */\\n.scroll-btns[data-v-9693c11e] {\\r\\n position: sticky;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: 20px;\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n margin-top: 10px;\\r\\n pointer-events: none;\\n}\\n.scroll-btn[data-v-9693c11e] {\\r\\n pointer-events: auto;\\r\\n width: 38px;\\r\\n height: 38px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\n}\\n.scroll-btn i[data-v-9693c11e] {\\r\\n font-size: 16px;\\r\\n color: #333;\\n}\\r\\n\\r\\n/* ── Footer ── */\\n.chat-footer[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\r\\n border-top: none;\\r\\n padding: 30px 0;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n margin: 0 auto;\\r\\n width: 100%;\\n}\\n.input-area[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: flex-end;\\r\\n gap: 6px;\\r\\n background: #fff;\\r\\n border-radius: 24px;\\r\\n margin: 0 24px;\\r\\n padding: 18px 20px;\\r\\n border: 1px solid #b3d8ff;\\r\\n transition: border-color 0.2s;\\r\\n flex-wrap: wrap;\\r\\n width: min(100%, 1000px) !important;\\r\\n box-sizing: border-box;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: #1677ff;\\r\\n background: #fff;\\r\\n box-shadow: none;\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n content: \\\"Enter 发送,Ctrl+Enter 换行\\\";\\r\\n position: absolute;\\r\\n right: 100px;\\r\\n bottom: 28px;\\r\\n font-size: 14px;\\r\\n color: #8c8c8c;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-wrap[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: calc(100% + 30px);\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n border: 1px solid #e5e7eb;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n pointer-events: auto;\\r\\n position: relative;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);\\n}\\n.scroll-bottom-btn svg[data-v-9693c11e] {\\r\\n color: #4e5969;\\n}\\n.scroll-bottom-btn[data-v-9693c11e]:hover {\\r\\n transform: scale(1.1);\\n}\\n.loading-circle[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n inset: 3px;\\r\\n border-radius: 50%;\\r\\n border: 1.5px solid transparent;\\r\\n border-top: 1.5px solid #1677ff;\\r\\n -webkit-animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\r\\n animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\n}\\n@-webkit-keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n@keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n border: none;\\r\\n outline: none;\\r\\n background: transparent;\\r\\n resize: none;\\r\\n font-size: 16px;\\r\\n line-height: 24px;\\r\\n min-height: 38px;\\r\\n height: 100px;\\r\\n max-height: 100px;\\r\\n overflow-y: auto;\\r\\n padding: 0;\\r\\n box-sizing: border-box;\\r\\n font-family: inherit;\\r\\n color: #333;\\r\\n flex: 1 1 320px;\\r\\n min-width: 0;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: auto;\\r\\n height: 40px;\\r\\n padding: 0 21px;\\r\\n border-radius: 6px;\\r\\n border: none;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n font-size: 14px;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: \\\"发送\\\";\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn.active[data-v-9693c11e]:hover {\\r\\n background: #4096ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 35px;\\r\\n height: 35px;\\r\\n border-radius: 50%;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\n}\\n.stop-btn[data-v-9693c11e]:hover {\\r\\n background: #ff7875;\\n}\\r\\n\\r\\n/* ── Voice ── */\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n/* ── Voice Recording Overlay ── */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Chat Agent Avatar ── */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e] {\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n\\r\\n/* ── Agent List Avatar ── */\\n.agent-list-avatar[data-v-9693c11e] {\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n color: #fff;\\r\\n font-size: 22px;\\r\\n font-weight: 600;\\r\\n border-radius: 8px;\\n}\\n.agent-list-avatar.has-agent-img[data-v-9693c11e] {\\r\\n width: 97px;\\r\\n height: 126px;\\r\\n background-size: cover;\\n}\\n.agent-list-avatar[data-v-9693c11e]:not(.has-agent-img) {\\r\\n width: 76px;\\r\\n height: 108px;\\r\\n transform: translateX(9px);\\n}\\n.session-avatar[data-v-9693c11e] {\\r\\n width: 44px !important;\\r\\n height: 44px !important;\\r\\n border-radius: 50% !important;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px !important;\\r\\n font-weight: 600;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n overflow: hidden;\\n}\\n.avatar-pic[data-v-9693c11e] {\\r\\n width: 85%;\\r\\n height: 85%;\\r\\n -o-object-fit: contain;\\r\\n object-fit: contain;\\n}\\r\\n\\r\\n/* ── Mobile Buttons ── */\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n.mobile-back-btn[data-v-9693c11e],\\r\\n.mobile-header-btn[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border: none;\\r\\n border-radius: 10px;\\r\\n background: #f5f7fa;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.mobile-menu-btn i[data-v-9693c11e],\\r\\n.mobile-back-btn i[data-v-9693c11e],\\r\\n.mobile-header-btn i[data-v-9693c11e] {\\r\\n font-size: 18px;\\n}\\n.mobile-back-btn i[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\n}\\r\\n/* ── 聊天空白欢迎页(匹配蓝湖移动端聊天首页) ── */\\n.chat-empty-welcome[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n padding: 40px 20px;\\r\\n box-sizing: border-box;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 0px;\\r\\n max-width: 600px;\\r\\n margin: 80px auto;\\n}\\r\\n\\r\\n/* 顶部渐变欢迎卡片 */\\n.welcome-card[data-v-9693c11e] {\\r\\n position: relative;\\r\\n background: linear-gradient(296deg, #D6EDFF 20%, #E8EBFF 80%);\\r\\nborder-radius: 16px 16px 0px 0px;\\r\\n padding: 24px 24px 24px 150px;\\r\\n overflow: visible;\\n}\\r\\n/* 左侧探出头像容器 */\\n.welcome-avatar-box[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 0px;\\r\\n width: 110px;\\r\\n height: 137px;\\n}\\n.welcome-avatar[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n border-radius: 12px;\\r\\n background-size: cover;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 20px;\\r\\n color: #fff;\\r\\n font-weight: 600;\\n}\\n.welcome-avatar.has-chat-agent-img[data-v-9693c11e] {\\r\\n background: transparent;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\n}\\n.welcome-text-group[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 6px;\\n}\\n.welcome-text-group .text-sm[data-v-9693c11e] {\\r\\nfont-weight: 400;font-size: 12px;color: #666666;\\r\\ntext-align: left;\\r\\nfont-style: normal;\\n}\\n.welcome-text-group .text-lg[data-v-9693c11e] {\\r\\n \\r\\n font-weight: 500;\\r\\nfont-size: 16px;\\r\\ncolor: #000000;\\n}\\r\\n\\r\\n/* 猜你想问容器 */\\n.guess-box[data-v-9693c11e] {\\r\\n border-top: 1px solid #fff;\\r\\n background: linear-gradient(180deg, #B8DCFF 0%, #DFF0FF 50%, #FFFFFF 100%);\\r\\n border-radius: 0 0 16px 16px;\\r\\n padding: 20px;\\n}\\n.guess-title[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 6px;\\r\\n font-size: 16px;\\r\\n font-weight: 500;\\r\\n color: #222;\\r\\n margin-bottom: 16px;\\n}\\n.tag-wrap[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n gap: 10px;\\n}\\n.quick-tag[data-v-9693c11e] {\\r\\n padding: 8px 14px;\\r\\n background: #F2FAFF;\\r\\n border-radius: 8px;\\r\\n font-size: 14px;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n border: 1px solid #e0eaff;\\r\\n transition: all 0.2s;\\r\\n white-space: nowrap;\\n}\\r\\n/* .quick-tag:hover {\\r\\n background: #f0f7ff;\\r\\n border-color: #1677ff;\\r\\n} */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e]{\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n/* ── Responsive ── */\\n@media screen and (max-width: 768px) {\\n.chat-header[data-v-9693c11e] {\\r\\n padding: 10px 12px;\\r\\n background: transparent;\\r\\n border-bottom: none;\\n}\\n.chat-header .chat-agent-avatar-wrapper[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .agent-desc[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .header-left[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n justify-content: center;\\r\\n position: relative;\\n}\\n.chat-header .header-left .mobile-back-btn[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 12px;\\r\\n background: transparent;\\n}\\n.chat-header .header-actions .mobile-header-btn[data-v-9693c11e] {\\r\\n background: transparent;\\n}\\n.chat-body[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n background-position: center top;\\n}\\n.msg-row[data-v-9693c11e] {\\r\\n padding: 12px 0;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\n}\\n.bubble[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n max-width: 88%;\\n}\\n.chat-footer[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n flex-shrink: 0;\\r\\n background: #f5f5f5;\\r\\n box-sizing: border-box;\\n}\\r\\n /* 安全区域由 .chat-footer 统一处理,.chat-body 不需要重复加 padding */\\n.input-area[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n margin: 0;\\r\\n padding: 6px 6px 6px 4px;\\r\\n border-radius: 24px;\\r\\n border: none;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\r\\n flex-wrap: nowrap;\\r\\n align-items: center;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: transparent;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n display: none;\\n}\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n flex-basis: 0;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n max-height: 100px;\\r\\n font-size: 15px;\\r\\n background: #EBEBEB;\\r\\n border-radius: 18px;\\r\\n padding: 0 14px;\\r\\n line-height: 36px;\\r\\n margin: 0 4px;\\r\\n color: #333;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n padding: 0;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: block;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: none;\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.send-btn[data-v-9693c11e]:active {\\r\\n transform: scale(0.92);\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\n}\\n.guess-box[data-v-9693c11e] {\\r\\n padding: 16px;\\n}\\r\\n\\r\\n /* H5 语音模式 */\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n /* 语音录制浮层 */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n}\\n@media screen and (max-width: 480px) {\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n max-width: calc(100vw - 132px);\\n}\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n .mobile-header-btn[data-v-9693c11e] {\\r\\n width: 32px;\\r\\n height: 32px;\\n}\\n}\\r\\n\\r\\n/* ═══════════════════════════════════════════════════════════════\\r\\n Android 兼容性修复 — TokUI desc 组件 flex/grid 布局\\r\\n ═══════════════════════════════════════════════════════════════\\r\\n 问题:部分 Android WebView 对 CSS Grid 支持不完整,且 overflow-wrap:anywhere\\r\\n 会破坏 flex:1 的收缩行为,导致 tokui-desc__value 换行到 label 下方。\\r\\n 修复:显式声明 flex 方向 + 防止 flex 子项溢出。 */\\r\\n\\r\\n/* ── 默认 grid 模式:降级为 flexbox 模拟 grid(兼容旧版 Android WebView) ── */\\n.tokui-shell .tokui-stream .tokui-desc[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-wrap: wrap !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc__item[data-v-9693c11e] {\\r\\n flex: 0 0 calc(100% / var(--tokui-desc-cols, 3));\\r\\n box-sizing: border-box;\\r\\n min-width: 0;\\n}\\r\\n\\r\\n/* ── 水平模式:item 内部 label/value 强制水平并排 ──\\r\\n 注意:容器 (.tokui-desc) 的 flex-wrap 布局继承自上方通用规则,\\r\\n 仅覆盖 item 内部从块级排列改为 flex 行排列。 */\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__item[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: row !important;\\r\\n flex-wrap: nowrap !important;\\r\\n align-items: baseline !important;\\r\\n width: 100% !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__label[data-v-9693c11e] {\\r\\n flex: 0 0 auto !important;\\r\\n flex-shrink: 0 !important;\\r\\n min-width: var(--tokui-desc-label-w, 100px);\\r\\n white-space: nowrap !important;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: 0 !important;\\r\\n padding-right: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__value[data-v-9693c11e] {\\r\\n flex: 1 1 0% !important;\\r\\n min-width: 0 !important;\\r\\n width: auto !important;\\r\\n overflow-wrap: break-word !important;\\r\\n word-break: break-word;\\n}\\r\\n\\r\\n/* ── 移动端:tokui-row 列改为纵向堆叠,避免窄屏挤压 ── */\\n@media screen and (max-width: 768px) {\\n.tokui-shell .tokui-stream .tokui-row[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: column !important;\\r\\n gap: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-col[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n grid-column: unset !important;\\n}\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/components/chatMain/ChatDetail.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
1445
1445
 
1446
1446
  /***/ }),
1447
1447
 
@@ -11042,7 +11042,7 @@ eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\
11042
11042
  /*! exports provided: name, version, main, private, scripts, dependencies, devDependencies, browserslist, directories, keywords, license, files, default */
11043
11043
  /***/ (function(module) {
11044
11044
 
11045
- eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"zj-plugin-intelligent\\\",\\\"version\\\":\\\"1.2.8-beta.7\\\",\\\"main\\\":\\\"lib/ZjPluginIntelligent.umd.min.js\\\",\\\"private\\\":false,\\\"scripts\\\":{\\\"serve\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve\\\",\\\"build\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build\\\",\\\"lib\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\",\\\"lib:test\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode test --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\"},\\\"dependencies\\\":{\\\"@jboltai/tokui\\\":\\\"^0.1.6\\\",\\\"crypto-js\\\":\\\"^4.2.0\\\",\\\"html2canvas\\\":\\\"^1.4.1\\\",\\\"markdown-it\\\":\\\"^14.1.0\\\"},\\\"devDependencies\\\":{\\\"@babel/preset-env\\\":\\\"^7.14.9\\\",\\\"@vue/cli-plugin-babel\\\":\\\"~4.5.0\\\",\\\"@vue/cli-plugin-eslint\\\":\\\"^4.5.13\\\",\\\"@vue/cli-plugin-vuex\\\":\\\"~4.5.0\\\",\\\"@vue/cli-service\\\":\\\"~4.5.0\\\",\\\"axios\\\":\\\"^0.27.2\\\",\\\"babel-eslint\\\":\\\"^10.1.0\\\",\\\"babel-plugin-component\\\":\\\"^1.1.1\\\",\\\"compression-webpack-plugin\\\":\\\"^6.0.3\\\",\\\"core-js\\\":\\\"^3.6.5\\\",\\\"element-ui\\\":\\\"^2.15.4\\\",\\\"eslint\\\":\\\"^7.30.0\\\",\\\"eslint-plugin-vue\\\":\\\"^7.13.0\\\",\\\"js-cookie\\\":\\\"^2.2.1\\\",\\\"obs-upload\\\":\\\"^1.0.4\\\",\\\"pako\\\":\\\"^2.1.0\\\",\\\"reconnecting-websocket\\\":\\\"^4.4.0\\\",\\\"sass\\\":\\\"^1.71.0\\\",\\\"sass-loader\\\":\\\"^8.0.2\\\",\\\"snowflake-id\\\":\\\"^1.1.0\\\",\\\"vue\\\":\\\"^2.6.11\\\",\\\"vue-template-compiler\\\":\\\"^2.6.11\\\",\\\"vuex\\\":\\\"^3.4.0\\\",\\\"webpack-bundle-analyzer\\\":\\\"^4.4.2\\\"},\\\"browserslist\\\":[\\\"> 1%\\\",\\\"last 2 versions\\\",\\\"not dead\\\"],\\\"directories\\\":{\\\"lib\\\":\\\"lib\\\"},\\\"keywords\\\":[],\\\"license\\\":\\\"ISC\\\",\\\"files\\\":[\\\"lib\\\"]}\");\n\n//# sourceURL=webpack://ZjPluginIntelligent/./package.json?");
11045
+ eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"zj-plugin-intelligent\\\",\\\"version\\\":\\\"1.2.8-beta.8\\\",\\\"main\\\":\\\"lib/ZjPluginIntelligent.umd.min.js\\\",\\\"private\\\":false,\\\"scripts\\\":{\\\"serve\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve\\\",\\\"build\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build\\\",\\\"lib\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\",\\\"lib:test\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode test --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\"},\\\"dependencies\\\":{\\\"@jboltai/tokui\\\":\\\"^0.1.6\\\",\\\"crypto-js\\\":\\\"^4.2.0\\\",\\\"html2canvas\\\":\\\"^1.4.1\\\",\\\"markdown-it\\\":\\\"^14.1.0\\\"},\\\"devDependencies\\\":{\\\"@babel/preset-env\\\":\\\"^7.14.9\\\",\\\"@vue/cli-plugin-babel\\\":\\\"~4.5.0\\\",\\\"@vue/cli-plugin-eslint\\\":\\\"^4.5.13\\\",\\\"@vue/cli-plugin-vuex\\\":\\\"~4.5.0\\\",\\\"@vue/cli-service\\\":\\\"~4.5.0\\\",\\\"axios\\\":\\\"^0.27.2\\\",\\\"babel-eslint\\\":\\\"^10.1.0\\\",\\\"babel-plugin-component\\\":\\\"^1.1.1\\\",\\\"compression-webpack-plugin\\\":\\\"^6.0.3\\\",\\\"core-js\\\":\\\"^3.6.5\\\",\\\"element-ui\\\":\\\"^2.15.4\\\",\\\"eslint\\\":\\\"^7.30.0\\\",\\\"eslint-plugin-vue\\\":\\\"^7.13.0\\\",\\\"js-cookie\\\":\\\"^2.2.1\\\",\\\"obs-upload\\\":\\\"^1.0.4\\\",\\\"pako\\\":\\\"^2.1.0\\\",\\\"reconnecting-websocket\\\":\\\"^4.4.0\\\",\\\"sass\\\":\\\"^1.71.0\\\",\\\"sass-loader\\\":\\\"^8.0.2\\\",\\\"snowflake-id\\\":\\\"^1.1.0\\\",\\\"vue\\\":\\\"^2.6.11\\\",\\\"vue-template-compiler\\\":\\\"^2.6.11\\\",\\\"vuex\\\":\\\"^3.4.0\\\",\\\"webpack-bundle-analyzer\\\":\\\"^4.4.2\\\"},\\\"browserslist\\\":[\\\"> 1%\\\",\\\"last 2 versions\\\",\\\"not dead\\\"],\\\"directories\\\":{\\\"lib\\\":\\\"lib\\\"},\\\"keywords\\\":[],\\\"license\\\":\\\"ISC\\\",\\\"files\\\":[\\\"lib\\\"]}\");\n\n//# sourceURL=webpack://ZjPluginIntelligent/./package.json?");
11046
11046
 
11047
11047
  /***/ }),
11048
11048
 
@@ -12018,7 +12018,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
12018
12018
  /***/ (function(module, exports, __webpack_require__) {
12019
12019
 
12020
12020
  "use strict";
12021
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setAuth = setAuth;\nexports.setToken = setToken;\nexports.getAuth = getAuth;\nexports.setBaseURL = setBaseURL;\nexports.signQueryParams = signQueryParams;\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(__webpack_require__(/*! axios */ \"./node_modules/axios/index.js\"));\n\nvar _cookie = __webpack_require__(/*! @lib/utils/cookie.js */ \"./src/lib/utils/cookie.js\");\n\nvar _message = __webpack_require__(/*! @lib/utils/message.js */ \"./src/lib/utils/message.js\");\n\n/*\r\n * @Author: 高瑞廷 2419056691@qq.com\r\n * @Date: 2026-06-04 11:27:13\r\n * @LastEditors: 高瑞廷 2419056691@qq.com\r\n * @LastEditTime: 2026-07-30 14:51:53\r\n * @FilePath: \\zjkj-nodejs-npm_customer-client\\src\\lib\\utils\\request.js\r\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r\n */\nvar runtimeAK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_AK || '';\nvar runtimeSK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_SK || '';\nvar runtimeToken = '';\nvar _user = '';\nvar _companyNo = '';\nvar runtimeBaseURL = \"https://ai.jybtech.cn\" || false;\n\nvar CryptoJS = __webpack_require__(/*! crypto-js */ \"./node_modules/crypto-js/index.js\");\n\nvar service = _axios.default.create({\n baseURL: runtimeBaseURL,\n timeout: 15000\n});\n\nfunction hmacSha256Base64(rawSignStr, sk) {\n var hmac = CryptoJS.HmacSHA256(rawSignStr, sk); // 转为 Base64\n\n return CryptoJS.enc.Base64.stringify(hmac);\n}\n\nfunction setAuth(ak, sk, user, companyNo, token) {\n runtimeAK = ak || '';\n runtimeSK = sk || '';\n _user = user;\n _companyNo = companyNo;\n runtimeToken = token || '';\n}\n\nfunction setToken(token) {\n runtimeToken = token || '';\n}\n\nfunction getAuth() {\n return {\n ak: runtimeAK,\n sk: runtimeSK,\n token: runtimeToken,\n user: _user,\n companyNo: _companyNo\n };\n}\n\nfunction setBaseURL(url) {\n runtimeBaseURL = url || '';\n service.defaults.baseURL = runtimeBaseURL;\n}\n\nfunction signQueryParams(params, secretKey) {\n var keys = Object.keys(params).filter(function (k) {\n return k !== 'ak' && k !== 'sign';\n }).sort();\n var raw = keys.map(function (k) {\n return \"\".concat(k, \"=\").concat(params[k] || '');\n }).join('&');\n return hmacSha256Base64(raw, secretKey);\n}\n\nservice.interceptors.request.use(function (config) {\n // 流式接口跳过 Header 签名\n if (config.url.includes('/chat/stream')) {\n return config;\n }\n\n var ts = Date.now().toString();\n var token = runtimeToken || (0, _cookie.getToken)();\n var externalUser = _user || '';\n var signParts = []; // 1. 第一位:token(有值才加入)\n\n if (_companyNo) {\n signParts.push(\"companyNo=\".concat(_companyNo));\n }\n\n if (token) {\n signParts.push(\"token=\".concat(token));\n } // 2. 第二位:user(有值才加入)\n\n\n if (externalUser) {\n signParts.push(\"user=\".concat(externalUser));\n } // 3. 第三位:ts(必选,永远存在)\n\n\n signParts.push(\"ts=\".concat(ts)); // 拼接最终待签字符串\n\n var signStr = signParts.join('&'); // 计算签名\n\n var sign = hmacSha256Base64(signStr, runtimeSK);\n\n if (_companyNo) {\n config.headers['X-Company-No'] = _companyNo;\n } // 设置请求头\n\n\n config.headers['X-AK'] = runtimeAK;\n config.headers['X-Ts'] = ts;\n config.headers['X-Sign'] = sign;\n\n if (token) {\n config.headers['X-Auth-Token'] = \"\".concat(token);\n config.headers.Authorization = \"Bearer \".concat(token);\n }\n\n config.headers['X-External-User'] = externalUser;\n config.headers['Content-Type'] = 'application/json'; // console.log('排序后key:', sortedKeys)\n\n return config;\n}, function (error) {\n return Promise.reject(error);\n});\nservice.interceptors.response.use(function (response) {\n var res = response.data;\n\n if (res.code === 200) {\n return res;\n } else if (res.code === 40101) {\n (0, _message.showMessage)('登录已过期,请重新登录');\n return Promise.reject(new Error(res.message));\n } else {\n (0, _message.showMessage)(res.message || '请求失败');\n return Promise.reject(new Error(res.message));\n }\n}, function (error) {\n (0, _message.showMessage)(error.message || '网络异常');\n return Promise.reject(error);\n});\nvar _default = service;\nexports.default = _default;\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/utils/request.js?");
12021
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setAuth = setAuth;\nexports.setToken = setToken;\nexports.getAuth = getAuth;\nexports.setBaseURL = setBaseURL;\nexports.signQueryParams = signQueryParams;\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(__webpack_require__(/*! axios */ \"./node_modules/axios/index.js\"));\n\nvar _cookie = __webpack_require__(/*! @lib/utils/cookie.js */ \"./src/lib/utils/cookie.js\");\n\nvar _message = __webpack_require__(/*! @lib/utils/message.js */ \"./src/lib/utils/message.js\");\n\n/*\r\n * @Author: 高瑞廷 2419056691@qq.com\r\n * @Date: 2026-06-04 11:27:13\r\n * @LastEditors: 高瑞廷 2419056691@qq.com\r\n * @LastEditTime: 2026-07-30 15:11:50\r\n * @FilePath: \\zjkj-nodejs-npm_customer-client\\src\\lib\\utils\\request.js\r\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r\n */\nvar runtimeAK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_AK || '';\nvar runtimeSK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_SK || '';\nvar runtimeToken = '';\nvar _user = '';\nvar _companyNo = '';\nvar runtimeBaseURL = \"https://ai.jybtech.cn\" || false;\n\nvar CryptoJS = __webpack_require__(/*! crypto-js */ \"./node_modules/crypto-js/index.js\");\n\nvar service = _axios.default.create({\n baseURL: runtimeBaseURL,\n timeout: 15000\n});\n\nfunction hmacSha256Base64(rawSignStr, sk) {\n var hmac = CryptoJS.HmacSHA256(rawSignStr, sk); // 转为 Base64\n\n return CryptoJS.enc.Base64.stringify(hmac);\n}\n\nfunction setAuth(ak, sk, user, companyNo, token) {\n runtimeAK = ak || '';\n runtimeSK = sk || '';\n _user = user;\n _companyNo = companyNo;\n runtimeToken = token || '';\n}\n\nfunction setToken(token) {\n runtimeToken = token || '';\n}\n\nfunction getAuth() {\n return {\n ak: runtimeAK,\n sk: runtimeSK,\n token: runtimeToken,\n user: _user,\n companyNo: _companyNo\n };\n}\n\nfunction setBaseURL(url) {\n runtimeBaseURL = url || '';\n service.defaults.baseURL = runtimeBaseURL;\n}\n\nfunction signQueryParams(params, secretKey) {\n var keys = Object.keys(params).filter(function (k) {\n return k !== 'ak' && k !== 'sign';\n }).sort();\n var raw = keys.map(function (k) {\n return \"\".concat(k, \"=\").concat(params[k] || '');\n }).join('&');\n return hmacSha256Base64(raw, secretKey);\n}\n\nservice.interceptors.request.use(function (config) {\n // 流式接口跳过 Header 签名\n if (config.url.includes('/chat/stream')) {\n return config;\n }\n\n var ts = Date.now().toString();\n var token = runtimeToken || (0, _cookie.getToken)();\n var externalUser = _user || '';\n var signParts = []; // 1. 第一位:token(有值才加入)\n\n if (_companyNo) {\n signParts.push(\"companyNo=\".concat(_companyNo));\n }\n\n if (token) {\n signParts.push(\"token=\".concat(token));\n } // 2. 第二位:user(有值才加入)\n\n\n if (externalUser) {\n signParts.push(\"user=\".concat(externalUser));\n } // 3. 第三位:ts(必选,永远存在)\n\n\n signParts.push(\"ts=\".concat(ts)); // 拼接最终待签字符串\n\n var signStr = signParts.join('&'); // 计算签名\n\n var sign = hmacSha256Base64(signStr, runtimeSK);\n\n if (_companyNo) {\n config.headers['X-Company-No'] = _companyNo;\n } // 设置请求头\n\n\n config.headers['X-AK'] = runtimeAK;\n config.headers['X-Ts'] = ts;\n config.headers['X-Sign'] = sign;\n\n if (token) {\n config.headers['X-Auth-Token'] = \"\".concat(token);\n config.headers.Authorization = \"Bearer \".concat(token);\n }\n\n config.headers['X-External-User'] = externalUser;\n config.headers['Content-Type'] = 'application/json'; // console.log('排序后key:', sortedKeys)\n\n return config;\n}, function (error) {\n return Promise.reject(error);\n});\nservice.interceptors.response.use(function (response) {\n var res = response.data;\n\n if (res.code === 200) {\n return res;\n } else if (res.code === 40101) {\n (0, _message.showMessage)('登录已过期,请重新登录');\n return Promise.reject(new Error(res.message));\n } else {\n (0, _message.showMessage)(res.message || '请求失败');\n return Promise.reject(new Error(res.message));\n }\n}, function (error) {\n (0, _message.showMessage)(error.message || '网络异常');\n return Promise.reject(error);\n});\nvar _default = service;\nexports.default = _default;\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/utils/request.js?");
12022
12022
 
12023
12023
  /***/ }),
12024
12024
 
@@ -1441,7 +1441,7 @@ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../.
1441
1441
  /*! no static exports found */
1442
1442
  /***/ (function(module, exports, __webpack_require__) {
1443
1443
 
1444
- eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\n.chat-main[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n min-width: 0;\\r\\n min-height: 0;\\n}\\r\\n\\r\\n/* ── Header ── */\\n.chat-header[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\r\\n padding: 10px 20px;\\r\\n background: #fff;\\r\\n border-bottom: 1px solid #e8e8e8;\\r\\n flex-shrink: 0;\\r\\n z-index: 10;\\n}\\n.header-left[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\r\\n min-width: 0;\\r\\n flex: 1;\\n}\\n.header-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n flex-shrink: 0;\\n}\\n.agent-info[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\n}\\n.agent-icon[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 8px;\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px;\\r\\n font-weight: 600;\\r\\n flex-shrink: 0;\\n}\\n.agent-info:nth-child(4n + 2) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\n}\\n.agent-info:nth-child(4n + 3) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #fa8c16, #ffa940);\\n}\\n.agent-info:nth-child(4n + 4) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #722ed1, #b37feb);\\n}\\n.agent-text[data-v-9693c11e] {\\r\\n min-width: 0;\\n}\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1.3;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n max-width: min(300px, 45vw);\\n}\\n.header-right[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\n.manage-link[data-v-9693c11e] {\\r\\n font-size: 13px;\\r\\n color: #1677ff;\\r\\n text-decoration: none;\\n}\\n.manage-link[data-v-9693c11e]:hover {\\r\\n color: #4096ff;\\n}\\r\\n\\r\\n/* ── Chat Body ── */\\n.chat-body[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n overflow-y: auto;\\r\\n padding: 16px clamp(12px, 3vw, 40px);\\r\\n scroll-behavior: auto;\\r\\n position: relative;\\r\\n -webkit-overflow-scrolling: touch;\\r\\n background: url(https://qiguanbang.obs.cn-east-3.myhuaweicloud.com/production/image/AlAgent/agentbackground.png) 100% no-repeat;\\r\\n background-size: 100% 100%;\\r\\n background-position: center;\\r\\n background-size: cover;\\r\\n min-height: 0;\\n}\\n.welcome[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n height: 100%;\\r\\n color: #bbb;\\r\\n margin: 0 -20px;\\n}\\n.welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 12px;\\r\\n opacity: 0.7;\\n}\\n.welcome-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\n}\\n.welcome-default .welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 16px;\\n}\\n.welcome-title[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n margin-bottom: 8px;\\n}\\r\\n\\r\\n/* ── Message Row ── */\\n.msg-row[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n padding: 20px 16px;\\r\\n box-sizing: border-box;\\r\\n align-items: center;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 10px;\\r\\n max-width: 85%;\\r\\n width: min(100%, 860px) !important;\\r\\n max-width: 860px;\\n}\\n.msg-row.user .msg-main[data-v-9693c11e] {\\r\\n flex-direction: row-reverse;\\n}\\n.msg-row.assistant[data-v-9693c11e] {\\r\\n justify-content: center;\\n}\\n.load-more[data-v-9693c11e] {\\r\\n text-align: center;\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n padding: 4px 0;\\n}\\n.msg-time[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #bbb;\\r\\n margin-top: 2px;\\r\\n padding-left: 4px;\\n}\\n.msg-row.user .msg-time[data-v-9693c11e] {\\r\\n text-align: right;\\r\\n padding-right: 4px;\\n}\\n.msg-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 4px;\\r\\n margin-top: 4px;\\r\\n padding-left: 4px;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\n}\\n.ai-badge[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #999;\\r\\n /* background: #f5f5f5; */\\r\\n padding: 1px 6px;\\r\\n border-radius: 3px;\\r\\n white-space: nowrap;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n margin-left: auto;\\n}\\n.action-btn[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n cursor: pointer;\\r\\n padding: 2px 6px 2px 0;\\r\\n border-radius: 4px;\\r\\n transition: all 0.2s;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.action-btn[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\r\\n background: #f0f5ff;\\n}\\r\\n\\r\\n/* ── STT 语音转文字状态 ── */\\n.stt-status-block[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n font-size: 14px;\\r\\n line-height: 1.5;\\n}\\n.stt-bubble-wrap[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\n}\\n.stt-outside-icon[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n right: 100%;\\r\\n top: 50%;\\r\\n margin-top: -9px;\\r\\n margin-right: 20px;\\n}\\n.stt-spinner[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n border: 2.5px solid #d9d9d9;\\r\\n border-top-color: #1677ff;\\r\\n border-right-color: #4096ff;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n flex-shrink: 0;\\r\\n box-sizing: border-box;\\n}\\n@-webkit-keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n@keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n.stt-error-icon[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n font-size: 12px;\\r\\n font-weight: 700;\\r\\n border-radius: 50%;\\r\\n line-height: 1;\\r\\n flex-shrink: 0;\\n}\\n.stt-bubble-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\r\\n color: #fff;\\r\\n white-space: nowrap;\\r\\n margin: 6px 0;\\n}\\n.msg-avatar[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 13px;\\r\\n font-weight: 700;\\r\\n flex-shrink: 0;\\r\\n color: #fff;\\n}\\n.msg-avatar.user[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\n}\\n.msg-avatar.assistant[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\r\\n color: #fff;\\n}\\n.msg-agent-label[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n margin-bottom: 2px;\\n}\\n.msg-content[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\r\\n box-sizing: border-box;\\r\\n overflow: hidden;\\n}\\r\\n\\r\\n/* ── Bubble ── */\\n.bubble[data-v-9693c11e] {\\r\\n max-width: 100%;\\r\\n min-width: 30px;\\r\\n width: -webkit-fit-content;\\r\\n width: -moz-fit-content;\\r\\n width: fit-content;\\r\\n padding: 8px 14px;\\r\\n border-radius: 12px;\\r\\n line-height: 1.4;\\r\\n font-size: 15px;\\r\\n word-break: break-word;\\r\\n white-space: normal;\\r\\n text-align: left;\\r\\n overflow-wrap: anywhere;\\n}\\n.bubble[data-v-9693c11e]:has(.typing) {\\r\\n padding: 16px 20px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border-bottom-right-radius: 4px;\\r\\n box-shadow: 0 2px 8px rgba(22, 119, 255, 0.15);\\r\\n float: none;\\r\\n margin-left: auto;\\r\\n max-width: min(100%, 520px);\\n}\\n.bubble.assistant[data-v-9693c11e] {\\r\\n background: #fff;\\r\\n color: #333;\\r\\n border-bottom-left-radius: 4px;\\r\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\n}\\n.bubble[data-v-9693c11e] table {\\r\\n border-collapse: collapse;\\r\\n width: 100%;\\r\\n margin: 6px 0;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] th,\\r\\n.bubble[data-v-9693c11e] td {\\r\\n border: 1px solid #e8e8e8;\\r\\n padding: 5px 8px;\\r\\n text-align: left;\\n}\\n.bubble[data-v-9693c11e] th {\\r\\n background: #fafafa;\\r\\n font-weight: 600;\\n}\\n.bubble[data-v-9693c11e] code {\\r\\n padding: 1px 5px;\\r\\n border-radius: 3px;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] pre {\\r\\n background: #f6f8fa;\\r\\n color: #333;\\r\\n padding: 12px;\\r\\n border-radius: 6px;\\r\\n overflow-x: auto;\\r\\n font-size: 13px;\\r\\n border: 1px solid #e8e8e8;\\r\\n margin: 8px 0;\\r\\n line-height: 1.5;\\r\\n white-space: pre;\\n}\\n.bubble[data-v-9693c11e] ul,\\r\\n.bubble[data-v-9693c11e] ol {\\r\\n padding-left: 20px;\\r\\n margin: 4px 0;\\n}\\n.bubble[data-v-9693c11e] li {\\r\\n margin: 2px 0;\\n}\\n.bubble[data-v-9693c11e] p {\\r\\n margin: 6px 0;\\n}\\r\\n\\r\\n/* ── Thinking ── */\\n.thinking-details[data-v-9693c11e] {\\r\\n margin-bottom: 10px;\\r\\n border: 1px solid #e8e8e8;\\r\\n border-radius: 8px;\\r\\n overflow: hidden;\\r\\n background: #fafafa;\\n}\\n.thinking-summary[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #888;\\r\\n cursor: pointer;\\r\\n padding: 6px 10px;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.thinking-summary[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\n}\\n.thinking-body[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n padding: 8px 12px;\\r\\n line-height: 1.6;\\r\\n border-top: 1px solid #f0f0f0;\\r\\n text-align: left;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.final-content[data-v-9693c11e] {\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n line-height: 1.6;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif;\\r\\n font-weight: normal;\\r\\n letter-spacing: normal;\\r\\n text-transform: none;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n overflow-wrap: anywhere;\\r\\n -webkit-text-size-adjust: 100%;\\n}\\n.tokui-shell .tokui-stream > *[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream p[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ul[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ol[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream li[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream table[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream code[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream pre[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream th[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream td[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__label,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n box-sizing: border-box;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n line-height: 1.6 !important;\\r\\n letter-spacing: normal !important;\\r\\n text-transform: none !important;\\r\\n color: inherit;\\r\\n margin: 0;\\r\\n padding: 0;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-desc__label {\\r\\n font-size: 13px !important;\\r\\n color: #8c8c8c !important;\\r\\n line-height: 1.4 !important;\\r\\n margin-bottom: 2px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n display: inline-block;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag {\\r\\n display: inline-flex !important;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n padding: 2px 8px !important;\\r\\n border-radius: 999px !important;\\r\\n font-size: 12px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #1677ff !important;\\r\\n background: #e6f4ff !important;\\r\\n border: 1px solid #bae0ff !important;\\r\\n white-space: nowrap;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header {\\r\\n display: flex !important;\\r\\n align-items: center !important;\\r\\n padding: 10px 12px !important;\\r\\n margin: 0 !important;\\r\\n font-size: 14px !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n background: transparent !important;\\r\\n border: none !important;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h3,\\r\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h4 {\\r\\n font-size: 15px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n margin: 0 !important;\\r\\n color: inherit !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3 {\\r\\n font-size: 16px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n margin: 10px 0 6px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n display: block !important;\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #8c8c8c !important;\\r\\n margin: 0 0 4px !important;\\n}\\n.thinking-body[data-v-9693c11e] p {\\r\\n margin: 4px 0;\\n}\\r\\n\\r\\n/* ── Typing ── */\\n.typing[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n min-height: 24px;\\r\\n justify-content: flex-start;\\r\\n padding: 4px 0;\\n}\\n.typing .phrase[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #888;\\r\\n white-space: nowrap;\\r\\n -webkit-animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n letter-spacing: 0.5px;\\n}\\n.typing .dots[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 5px;\\r\\n align-items: center;\\r\\n justify-content: center;\\n}\\n.typing .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background: #bbb;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\r\\n animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(2) {\\r\\n -webkit-animation-delay: 0.16s;\\r\\n animation-delay: 0.16s;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(3) {\\r\\n -webkit-animation-delay: 0.32s;\\r\\n animation-delay: 0.32s;\\n}\\n@-webkit-keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@-webkit-keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\n@keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Wait Timer ── */\\n.typing.wait-5 .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-animation-duration: 1s;\\r\\n animation-duration: 1s;\\n}\\n.typing.wait-5 .phrase[data-v-9693c11e] {\\r\\n color: #888;\\n}\\n.typing.wait-10 .dots span[data-v-9693c11e] {\\r\\n width: 9px;\\r\\n height: 9px;\\r\\n -webkit-animation-duration: 0.8s;\\r\\n animation-duration: 0.8s;\\r\\n background: #909399;\\n}\\n.typing.wait-10 .phrase[data-v-9693c11e] {\\r\\n color: #909399;\\n}\\n.typing.wait-10 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\n}\\n.typing.wait-15 .dots span[data-v-9693c11e] {\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n -webkit-animation-duration: 0.6s;\\r\\n animation-duration: 0.6s;\\r\\n background: #1677ff;\\n}\\n.typing.wait-15 .phrase[data-v-9693c11e] {\\r\\n color: #1677ff;\\n}\\n.typing.wait-15 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\n}\\n@-webkit-keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\n@keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\r\\n\\r\\n/* ── Tool Calls ── */\\n.tool-calls[data-v-9693c11e] {\\r\\n margin-top: 8px;\\n}\\n.tool-item[data-v-9693c11e] {\\r\\n background: #f5f5f5;\\r\\n border-radius: 6px;\\r\\n padding: 6px 10px;\\r\\n margin-bottom: 4px;\\r\\n font-size: 12px;\\n}\\n.tool-badge[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n margin-bottom: 2px;\\r\\n font-size: 11px;\\r\\n color: #fa8c16;\\r\\n font-weight: 500;\\n}\\n.tool-item pre[data-v-9693c11e] {\\r\\n margin: 0;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-all;\\r\\n font-size: 12px;\\r\\n color: #666;\\r\\n max-height: 120px;\\r\\n overflow-y: auto;\\n}\\r\\n\\r\\n/* ── Scroll Buttons ── */\\n.scroll-btns[data-v-9693c11e] {\\r\\n position: sticky;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: 20px;\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n margin-top: 10px;\\r\\n pointer-events: none;\\n}\\n.scroll-btn[data-v-9693c11e] {\\r\\n pointer-events: auto;\\r\\n width: 38px;\\r\\n height: 38px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\n}\\n.scroll-btn i[data-v-9693c11e] {\\r\\n font-size: 16px;\\r\\n color: #333;\\n}\\r\\n\\r\\n/* ── Footer ── */\\n.chat-footer[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\r\\n border-top: none;\\r\\n padding: 30px 0;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n margin: 0 auto;\\r\\n width: 100%;\\n}\\n.input-area[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: flex-end;\\r\\n gap: 6px;\\r\\n background: #fff;\\r\\n border-radius: 24px;\\r\\n margin: 0 24px;\\r\\n padding: 18px 20px;\\r\\n border: 1px solid #b3d8ff;\\r\\n transition: border-color 0.2s;\\r\\n flex-wrap: wrap;\\r\\n width: min(100%, 1000px) !important;\\r\\n box-sizing: border-box;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: #1677ff;\\r\\n background: #fff;\\r\\n box-shadow: none;\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n content: \\\"Enter 发送,Ctrl+Enter 换行\\\";\\r\\n position: absolute;\\r\\n right: 100px;\\r\\n bottom: 28px;\\r\\n font-size: 14px;\\r\\n color: #8c8c8c;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-wrap[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: calc(100% + 30px);\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n border: 1px solid #e5e7eb;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n pointer-events: auto;\\r\\n position: relative;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);\\n}\\n.scroll-bottom-btn svg[data-v-9693c11e] {\\r\\n color: #4e5969;\\n}\\n.scroll-bottom-btn[data-v-9693c11e]:hover {\\r\\n transform: scale(1.1);\\n}\\n.loading-circle[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n inset: 3px;\\r\\n border-radius: 50%;\\r\\n border: 1.5px solid transparent;\\r\\n border-top: 1.5px solid #1677ff;\\r\\n -webkit-animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\r\\n animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\n}\\n@-webkit-keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n@keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n border: none;\\r\\n outline: none;\\r\\n background: transparent;\\r\\n resize: none;\\r\\n font-size: 16px;\\r\\n line-height: 24px;\\r\\n min-height: 38px;\\r\\n height: 100px;\\r\\n max-height: 100px;\\r\\n overflow-y: auto;\\r\\n padding: 0;\\r\\n box-sizing: border-box;\\r\\n font-family: inherit;\\r\\n color: #333;\\r\\n flex: 1 1 320px;\\r\\n min-width: 0;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: auto;\\r\\n height: 40px;\\r\\n padding: 0 21px;\\r\\n border-radius: 6px;\\r\\n border: none;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n font-size: 14px;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: \\\"发送\\\";\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn.active[data-v-9693c11e]:hover {\\r\\n background: #4096ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 35px;\\r\\n height: 35px;\\r\\n border-radius: 50%;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\n}\\n.stop-btn[data-v-9693c11e]:hover {\\r\\n background: #ff7875;\\n}\\r\\n\\r\\n/* ── Voice ── */\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n/* ── Voice Recording Overlay ── */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Chat Agent Avatar ── */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e] {\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n\\r\\n/* ── Agent List Avatar ── */\\n.agent-list-avatar[data-v-9693c11e] {\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n color: #fff;\\r\\n font-size: 22px;\\r\\n font-weight: 600;\\r\\n border-radius: 8px;\\n}\\n.agent-list-avatar.has-agent-img[data-v-9693c11e] {\\r\\n width: 97px;\\r\\n height: 126px;\\r\\n background-size: cover;\\n}\\n.agent-list-avatar[data-v-9693c11e]:not(.has-agent-img) {\\r\\n width: 76px;\\r\\n height: 108px;\\r\\n transform: translateX(9px);\\n}\\n.session-avatar[data-v-9693c11e] {\\r\\n width: 44px !important;\\r\\n height: 44px !important;\\r\\n border-radius: 50% !important;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px !important;\\r\\n font-weight: 600;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n overflow: hidden;\\n}\\n.avatar-pic[data-v-9693c11e] {\\r\\n width: 85%;\\r\\n height: 85%;\\r\\n -o-object-fit: contain;\\r\\n object-fit: contain;\\n}\\r\\n\\r\\n/* ── Mobile Buttons ── */\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n.mobile-back-btn[data-v-9693c11e],\\r\\n.mobile-header-btn[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border: none;\\r\\n border-radius: 10px;\\r\\n background: #f5f7fa;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.mobile-menu-btn i[data-v-9693c11e],\\r\\n.mobile-back-btn i[data-v-9693c11e],\\r\\n.mobile-header-btn i[data-v-9693c11e] {\\r\\n font-size: 18px;\\n}\\n.mobile-back-btn i[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\n}\\r\\n/* ── 聊天空白欢迎页(匹配蓝湖移动端聊天首页) ── */\\n.chat-empty-welcome[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n padding: 40px 20px;\\r\\n box-sizing: border-box;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 0px;\\r\\n max-width: 600px;\\r\\n margin: 80px auto;\\n}\\r\\n\\r\\n/* 顶部渐变欢迎卡片 */\\n.welcome-card[data-v-9693c11e] {\\r\\n position: relative;\\r\\n background: linear-gradient(296deg, #D6EDFF 20%, #E8EBFF 80%);\\r\\nborder-radius: 16px 16px 0px 0px;\\r\\n padding: 24px 24px 24px 150px;\\r\\n overflow: visible;\\n}\\r\\n/* 左侧探出头像容器 */\\n.welcome-avatar-box[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 0px;\\r\\n width: 110px;\\r\\n height: 137px;\\n}\\n.welcome-avatar[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n border-radius: 12px;\\r\\n background-size: cover;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 20px;\\r\\n color: #fff;\\r\\n font-weight: 600;\\n}\\n.welcome-avatar.has-chat-agent-img[data-v-9693c11e] {\\r\\n background: transparent;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\n}\\n.welcome-text-group[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 6px;\\n}\\n.welcome-text-group .text-sm[data-v-9693c11e] {\\r\\nfont-weight: 400;font-size: 12px;color: #666666;\\r\\ntext-align: left;\\r\\nfont-style: normal;\\n}\\n.welcome-text-group .text-lg[data-v-9693c11e] {\\r\\n \\r\\n font-weight: 500;\\r\\nfont-size: 16px;\\r\\ncolor: #000000;\\n}\\r\\n\\r\\n/* 猜你想问容器 */\\n.guess-box[data-v-9693c11e] {\\r\\n border-top: 1px solid #fff;\\r\\n background: linear-gradient(180deg, #B8DCFF 0%, #DFF0FF 50%, #FFFFFF 100%);\\r\\n border-radius: 0 0 16px 16px;\\r\\n padding: 20px;\\n}\\n.guess-title[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 6px;\\r\\n font-size: 16px;\\r\\n font-weight: 500;\\r\\n color: #222;\\r\\n margin-bottom: 16px;\\n}\\n.tag-wrap[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n gap: 10px;\\n}\\n.quick-tag[data-v-9693c11e] {\\r\\n padding: 8px 14px;\\r\\n background: #F2FAFF;\\r\\n border-radius: 8px;\\r\\n font-size: 14px;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n border: 1px solid #e0eaff;\\r\\n transition: all 0.2s;\\r\\n white-space: nowrap;\\n}\\r\\n/* .quick-tag:hover {\\r\\n background: #f0f7ff;\\r\\n border-color: #1677ff;\\r\\n} */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e]{\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n/* ── Responsive ── */\\n@media screen and (max-width: 768px) {\\n.chat-header[data-v-9693c11e] {\\r\\n padding: 10px 12px;\\r\\n background: transparent;\\r\\n border-bottom: none;\\n}\\n.chat-header .chat-agent-avatar-wrapper[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .agent-desc[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .header-left[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n justify-content: center;\\r\\n position: relative;\\n}\\n.chat-header .header-left .mobile-back-btn[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 12px;\\r\\n background: transparent;\\n}\\n.chat-header .header-actions .mobile-header-btn[data-v-9693c11e] {\\r\\n background: transparent;\\n}\\n.chat-body[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n background-position: center top;\\n}\\n.msg-row[data-v-9693c11e] {\\r\\n padding: 12px 0;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\n}\\n.bubble[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n max-width: 88%;\\n}\\n.chat-footer[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n flex-shrink: 0;\\r\\n background: #f5f5f5;\\r\\n box-sizing: border-box;\\n}\\r\\n /* 安全区域由 .chat-footer 统一处理,.chat-body 不需要重复加 padding */\\n.input-area[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n margin: 0;\\r\\n padding: 6px 6px 6px 4px;\\r\\n border-radius: 24px;\\r\\n border: none;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\r\\n flex-wrap: nowrap;\\r\\n align-items: center;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: transparent;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n display: none;\\n}\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n flex-basis: 0;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n max-height: 100px;\\r\\n font-size: 15px;\\r\\n background: #EBEBEB;\\r\\n border-radius: 18px;\\r\\n padding: 0 14px;\\r\\n line-height: 36px;\\r\\n margin: 0 4px;\\r\\n color: #333;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n padding: 0;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: block;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: none;\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.send-btn[data-v-9693c11e]:active {\\r\\n transform: scale(0.92);\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\n}\\n.guess-box[data-v-9693c11e] {\\r\\n padding: 16px;\\n}\\r\\n\\r\\n /* H5 语音模式 */\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n /* 语音录制浮层 */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n}\\n@media screen and (max-width: 480px) {\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n max-width: calc(100vw - 132px);\\n}\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n .mobile-header-btn[data-v-9693c11e] {\\r\\n width: 32px;\\r\\n height: 32px;\\n}\\n}\\r\\n\\r\\n/* ═══════════════════════════════════════════════════════════════\\r\\n Android 兼容性修复 — TokUI desc 组件 flex/grid 布局\\r\\n ═══════════════════════════════════════════════════════════════\\r\\n 问题:部分 Android WebView 对 CSS Grid 支持不完整,且 overflow-wrap:anywhere\\r\\n 会破坏 flex:1 的收缩行为,导致 tokui-desc__value 换行到 label 下方。\\r\\n 修复:显式声明 flex 方向 + 防止 flex 子项溢出。 */\\r\\n\\r\\n/* ── 默认 grid 模式:降级为 flexbox 模拟 grid(兼容旧版 Android WebView) ── */\\n.tokui-shell .tokui-stream .tokui-desc[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-wrap: wrap !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc__item[data-v-9693c11e] {\\r\\n flex: 0 0 calc(100% / var(--tokui-desc-cols, 3));\\r\\n box-sizing: border-box;\\r\\n min-width: 0;\\n}\\r\\n\\r\\n/* ── 水平模式:强制 flex-row,防止 Android 上 value 掉到 label 下方 ── */\\n.tokui-shell .tokui-stream .tokui-desc--horizontal[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: column !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__item[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: row !important;\\r\\n flex-wrap: nowrap !important;\\r\\n align-items: baseline !important;\\r\\n flex: none !important;\\r\\n width: 100% !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__label[data-v-9693c11e] {\\r\\n flex: 0 0 auto !important;\\r\\n flex-shrink: 0 !important;\\r\\n min-width: var(--tokui-desc-label-w, 100px);\\r\\n white-space: nowrap !important;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: 0 !important;\\r\\n padding-right: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__value[data-v-9693c11e] {\\r\\n flex: 1 1 0% !important;\\r\\n min-width: 0 !important;\\r\\n width: auto !important;\\r\\n overflow-wrap: break-word !important;\\r\\n word-break: break-word;\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/components/chatMain/ChatDetail.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
1444
+ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"\\n.chat-main[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n min-width: 0;\\r\\n min-height: 0;\\n}\\r\\n\\r\\n/* ── Header ── */\\n.chat-header[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\r\\n padding: 10px 20px;\\r\\n background: #fff;\\r\\n border-bottom: 1px solid #e8e8e8;\\r\\n flex-shrink: 0;\\r\\n z-index: 10;\\n}\\n.header-left[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\r\\n min-width: 0;\\r\\n flex: 1;\\n}\\n.header-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n flex-shrink: 0;\\n}\\n.agent-info[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 10px;\\n}\\n.agent-icon[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 8px;\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px;\\r\\n font-weight: 600;\\r\\n flex-shrink: 0;\\n}\\n.agent-info:nth-child(4n + 2) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\n}\\n.agent-info:nth-child(4n + 3) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #fa8c16, #ffa940);\\n}\\n.agent-info:nth-child(4n + 4) .agent-icon-avatar[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #722ed1, #b37feb);\\n}\\n.agent-text[data-v-9693c11e] {\\r\\n min-width: 0;\\n}\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1.3;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n max-width: min(300px, 45vw);\\n}\\n.header-right[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\n.manage-link[data-v-9693c11e] {\\r\\n font-size: 13px;\\r\\n color: #1677ff;\\r\\n text-decoration: none;\\n}\\n.manage-link[data-v-9693c11e]:hover {\\r\\n color: #4096ff;\\n}\\r\\n\\r\\n/* ── Chat Body ── */\\n.chat-body[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n overflow-y: auto;\\r\\n padding: 16px clamp(12px, 3vw, 40px);\\r\\n scroll-behavior: auto;\\r\\n position: relative;\\r\\n -webkit-overflow-scrolling: touch;\\r\\n background: url(https://qiguanbang.obs.cn-east-3.myhuaweicloud.com/production/image/AlAgent/agentbackground.png) 100% no-repeat;\\r\\n background-size: 100% 100%;\\r\\n background-position: center;\\r\\n background-size: cover;\\r\\n min-height: 0;\\n}\\n.welcome[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n height: 100%;\\r\\n color: #bbb;\\r\\n margin: 0 -20px;\\n}\\n.welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 12px;\\r\\n opacity: 0.7;\\n}\\n.welcome-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\n}\\n.welcome-default .welcome-icon[data-v-9693c11e] {\\r\\n margin-bottom: 16px;\\n}\\n.welcome-title[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n margin-bottom: 8px;\\n}\\r\\n\\r\\n/* ── Message Row ── */\\n.msg-row[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n padding: 20px 16px;\\r\\n box-sizing: border-box;\\r\\n align-items: center;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n gap: 10px;\\r\\n max-width: 85%;\\r\\n width: min(100%, 860px) !important;\\r\\n max-width: 860px;\\n}\\n.msg-row.user .msg-main[data-v-9693c11e] {\\r\\n flex-direction: row-reverse;\\n}\\n.msg-row.assistant[data-v-9693c11e] {\\r\\n justify-content: center;\\n}\\n.load-more[data-v-9693c11e] {\\r\\n text-align: center;\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n padding: 4px 0;\\n}\\n.msg-time[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #bbb;\\r\\n margin-top: 2px;\\r\\n padding-left: 4px;\\n}\\n.msg-row.user .msg-time[data-v-9693c11e] {\\r\\n text-align: right;\\r\\n padding-right: 4px;\\n}\\n.msg-actions[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 4px;\\r\\n margin-top: 4px;\\r\\n padding-left: 4px;\\r\\n align-items: center;\\r\\n justify-content: space-between;\\n}\\n.ai-badge[data-v-9693c11e] {\\r\\n font-size: 11px;\\r\\n color: #999;\\r\\n /* background: #f5f5f5; */\\r\\n padding: 1px 6px;\\r\\n border-radius: 3px;\\r\\n white-space: nowrap;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n margin-left: auto;\\n}\\n.action-btn[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n cursor: pointer;\\r\\n padding: 2px 6px 2px 0;\\r\\n border-radius: 4px;\\r\\n transition: all 0.2s;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.action-btn[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\r\\n background: #f0f5ff;\\n}\\r\\n\\r\\n/* ── STT 语音转文字状态 ── */\\n.stt-status-block[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n font-size: 14px;\\r\\n line-height: 1.5;\\n}\\n.stt-bubble-wrap[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\n}\\n.stt-outside-icon[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n right: 100%;\\r\\n top: 50%;\\r\\n margin-top: -9px;\\r\\n margin-right: 20px;\\n}\\n.stt-spinner[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n border: 2.5px solid #d9d9d9;\\r\\n border-top-color: #1677ff;\\r\\n border-right-color: #4096ff;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n animation: stt-spin-data-v-9693c11e 0.6s linear infinite;\\r\\n flex-shrink: 0;\\r\\n box-sizing: border-box;\\n}\\n@-webkit-keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n@keyframes stt-spin-data-v-9693c11e {\\nto { transform: rotate(360deg);\\n}\\n}\\n.stt-error-icon[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n font-size: 12px;\\r\\n font-weight: 700;\\r\\n border-radius: 50%;\\r\\n line-height: 1;\\r\\n flex-shrink: 0;\\n}\\n.stt-bubble-text[data-v-9693c11e] {\\r\\n font-size: 15px;\\r\\n line-height: 1.4;\\r\\n color: #fff;\\r\\n white-space: nowrap;\\r\\n margin: 6px 0;\\n}\\n.msg-avatar[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 13px;\\r\\n font-weight: 700;\\r\\n flex-shrink: 0;\\r\\n color: #fff;\\n}\\n.msg-avatar.user[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #1677ff, #4096ff);\\r\\n color: #fff;\\n}\\n.msg-avatar.assistant[data-v-9693c11e] {\\r\\n background: linear-gradient(135deg, #52c41a, #73d13d);\\r\\n color: #fff;\\n}\\n.msg-agent-label[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #999;\\r\\n margin-bottom: 2px;\\n}\\n.msg-content[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\r\\n box-sizing: border-box;\\r\\n overflow: hidden;\\n}\\r\\n\\r\\n/* ── Bubble ── */\\n.bubble[data-v-9693c11e] {\\r\\n max-width: 100%;\\r\\n min-width: 30px;\\r\\n width: -webkit-fit-content;\\r\\n width: -moz-fit-content;\\r\\n width: fit-content;\\r\\n padding: 8px 14px;\\r\\n border-radius: 12px;\\r\\n line-height: 1.4;\\r\\n font-size: 15px;\\r\\n word-break: break-word;\\r\\n white-space: normal;\\r\\n text-align: left;\\r\\n overflow-wrap: anywhere;\\n}\\n.bubble[data-v-9693c11e]:has(.typing) {\\r\\n padding: 16px 20px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border-bottom-right-radius: 4px;\\r\\n box-shadow: 0 2px 8px rgba(22, 119, 255, 0.15);\\r\\n float: none;\\r\\n margin-left: auto;\\r\\n max-width: min(100%, 520px);\\n}\\n.bubble.assistant[data-v-9693c11e] {\\r\\n background: #fff;\\r\\n color: #333;\\r\\n border-bottom-left-radius: 4px;\\r\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\n}\\n.bubble[data-v-9693c11e] table {\\r\\n border-collapse: collapse;\\r\\n width: 100%;\\r\\n margin: 6px 0;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] th,\\r\\n.bubble[data-v-9693c11e] td {\\r\\n border: 1px solid #e8e8e8;\\r\\n padding: 5px 8px;\\r\\n text-align: left;\\n}\\n.bubble[data-v-9693c11e] th {\\r\\n background: #fafafa;\\r\\n font-weight: 600;\\n}\\n.bubble[data-v-9693c11e] code {\\r\\n padding: 1px 5px;\\r\\n border-radius: 3px;\\r\\n font-size: 14px;\\n}\\n.bubble[data-v-9693c11e] pre {\\r\\n background: #f6f8fa;\\r\\n color: #333;\\r\\n padding: 12px;\\r\\n border-radius: 6px;\\r\\n overflow-x: auto;\\r\\n font-size: 13px;\\r\\n border: 1px solid #e8e8e8;\\r\\n margin: 8px 0;\\r\\n line-height: 1.5;\\r\\n white-space: pre;\\n}\\n.bubble[data-v-9693c11e] ul,\\r\\n.bubble[data-v-9693c11e] ol {\\r\\n padding-left: 20px;\\r\\n margin: 4px 0;\\n}\\n.bubble[data-v-9693c11e] li {\\r\\n margin: 2px 0;\\n}\\n.bubble[data-v-9693c11e] p {\\r\\n margin: 6px 0;\\n}\\r\\n\\r\\n/* ── Thinking ── */\\n.thinking-details[data-v-9693c11e] {\\r\\n margin-bottom: 10px;\\r\\n border: 1px solid #e8e8e8;\\r\\n border-radius: 8px;\\r\\n overflow: hidden;\\r\\n background: #fafafa;\\n}\\n.thinking-summary[data-v-9693c11e] {\\r\\n font-size: 12px;\\r\\n color: #888;\\r\\n cursor: pointer;\\r\\n padding: 6px 10px;\\r\\n -webkit-user-select: none;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\n}\\n.thinking-summary[data-v-9693c11e]:hover {\\r\\n color: #1677ff;\\n}\\n.thinking-body[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n padding: 8px 12px;\\r\\n line-height: 1.6;\\r\\n border-top: 1px solid #f0f0f0;\\r\\n text-align: left;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.final-content[data-v-9693c11e] {\\r\\n word-break: break-word;\\r\\n overflow-wrap: break-word;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n line-height: 1.6;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif;\\r\\n font-weight: normal;\\r\\n letter-spacing: normal;\\r\\n text-transform: none;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n color: inherit;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n overflow-wrap: anywhere;\\r\\n -webkit-text-size-adjust: 100%;\\n}\\n.tokui-shell .tokui-stream > *[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream p[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ul[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream ol[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream li[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream table[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream code[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream pre[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream th[data-v-9693c11e],\\r\\n.tokui-shell .tokui-stream td[data-v-9693c11e] {\\r\\n font-size: 14px !important;\\r\\n line-height: 1.6 !important;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n letter-spacing: normal !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__label,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3,\\r\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n box-sizing: border-box;\\r\\n font-family: \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Microsoft YaHei\\\", Arial, sans-serif !important;\\r\\n font-weight: normal !important;\\r\\n line-height: 1.6 !important;\\r\\n letter-spacing: normal !important;\\r\\n text-transform: none !important;\\r\\n color: inherit;\\r\\n margin: 0;\\r\\n padding: 0;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-desc__label {\\r\\n font-size: 13px !important;\\r\\n color: #8c8c8c !important;\\r\\n line-height: 1.4 !important;\\r\\n margin-bottom: 2px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-desc__value {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-dv-text {\\r\\n font-size: 14px !important;\\r\\n color: inherit !important;\\r\\n line-height: 1.6 !important;\\r\\n display: inline-block;\\r\\n overflow-wrap: anywhere;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-tag {\\r\\n display: inline-flex !important;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n padding: 2px 8px !important;\\r\\n border-radius: 999px !important;\\r\\n font-size: 12px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #1677ff !important;\\r\\n background: #e6f4ff !important;\\r\\n border: 1px solid #bae0ff !important;\\r\\n white-space: nowrap;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header {\\r\\n display: flex !important;\\r\\n align-items: center !important;\\r\\n padding: 10px 12px !important;\\r\\n margin: 0 !important;\\r\\n font-size: 14px !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n background: transparent !important;\\r\\n border: none !important;\\n}\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h3,\\r\\n.tokui-shell[data-v-9693c11e] .tokui-card-header .tokui-h4 {\\r\\n font-size: 15px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n margin: 0 !important;\\r\\n color: inherit !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-h3 {\\r\\n font-size: 16px !important;\\r\\n font-weight: 600 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: inherit !important;\\r\\n margin: 10px 0 6px !important;\\n}\\n.tokui-shell .tokui-stream[data-v-9693c11e] .tokui-label {\\r\\n display: block !important;\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important;\\r\\n line-height: 1.4 !important;\\r\\n color: #8c8c8c !important;\\r\\n margin: 0 0 4px !important;\\n}\\n.thinking-body[data-v-9693c11e] p {\\r\\n margin: 4px 0;\\n}\\r\\n\\r\\n/* ── Typing ── */\\n.typing[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n align-items: center;\\r\\n gap: 8px;\\r\\n min-height: 24px;\\r\\n justify-content: flex-start;\\r\\n padding: 4px 0;\\n}\\n.typing .phrase[data-v-9693c11e] {\\r\\n font-size: 14px;\\r\\n color: #888;\\r\\n white-space: nowrap;\\r\\n -webkit-animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n animation: phraseFade-data-v-9693c11e 0.5s ease;\\r\\n letter-spacing: 0.5px;\\n}\\n.typing .dots[data-v-9693c11e] {\\r\\n display: flex;\\r\\n gap: 5px;\\r\\n align-items: center;\\r\\n justify-content: center;\\n}\\n.typing .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background: #bbb;\\r\\n border-radius: 50%;\\r\\n -webkit-animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\r\\n animation: dtTyping-data-v-9693c11e 1.3s infinite ease-in-out;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(2) {\\r\\n -webkit-animation-delay: 0.16s;\\r\\n animation-delay: 0.16s;\\n}\\n.typing .dots span[data-v-9693c11e]:nth-child(3) {\\r\\n -webkit-animation-delay: 0.32s;\\r\\n animation-delay: 0.32s;\\n}\\n@-webkit-keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@keyframes phraseFade-data-v-9693c11e {\\nfrom {\\r\\n opacity: 0.2;\\r\\n transform: translateY(4px);\\n}\\nto {\\r\\n opacity: 1;\\r\\n transform: translateY(0);\\n}\\n}\\n@-webkit-keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\n@keyframes dtTyping-data-v-9693c11e {\\n0%,\\r\\n 60%,\\r\\n 100% {\\r\\n transform: translateY(0);\\r\\n opacity: 0.3;\\n}\\n30% {\\r\\n transform: translateY(-5px);\\r\\n opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Wait Timer ── */\\n.typing.wait-5 .dots span[data-v-9693c11e] {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-animation-duration: 1s;\\r\\n animation-duration: 1s;\\n}\\n.typing.wait-5 .phrase[data-v-9693c11e] {\\r\\n color: #888;\\n}\\n.typing.wait-10 .dots span[data-v-9693c11e] {\\r\\n width: 9px;\\r\\n height: 9px;\\r\\n -webkit-animation-duration: 0.8s;\\r\\n animation-duration: 0.8s;\\r\\n background: #909399;\\n}\\n.typing.wait-10 .phrase[data-v-9693c11e] {\\r\\n color: #909399;\\n}\\n.typing.wait-10 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 1s infinite ease-in-out;\\n}\\n.typing.wait-15 .dots span[data-v-9693c11e] {\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n -webkit-animation-duration: 0.6s;\\r\\n animation-duration: 0.6s;\\r\\n background: #1677ff;\\n}\\n.typing.wait-15 .phrase[data-v-9693c11e] {\\r\\n color: #1677ff;\\n}\\n.typing.wait-15 .dots[data-v-9693c11e] {\\r\\n -webkit-animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\r\\n animation: dtPulse-data-v-9693c11e 0.6s infinite ease-in-out;\\n}\\n@-webkit-keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\n@keyframes dtPulse-data-v-9693c11e {\\n0%,\\r\\n 100% {\\r\\n transform: scale(1);\\n}\\n50% {\\r\\n transform: scale(1.05);\\n}\\n}\\r\\n\\r\\n/* ── Tool Calls ── */\\n.tool-calls[data-v-9693c11e] {\\r\\n margin-top: 8px;\\n}\\n.tool-item[data-v-9693c11e] {\\r\\n background: #f5f5f5;\\r\\n border-radius: 6px;\\r\\n padding: 6px 10px;\\r\\n margin-bottom: 4px;\\r\\n font-size: 12px;\\n}\\n.tool-badge[data-v-9693c11e] {\\r\\n display: inline-block;\\r\\n margin-bottom: 2px;\\r\\n font-size: 11px;\\r\\n color: #fa8c16;\\r\\n font-weight: 500;\\n}\\n.tool-item pre[data-v-9693c11e] {\\r\\n margin: 0;\\r\\n white-space: pre-wrap;\\r\\n word-break: break-all;\\r\\n font-size: 12px;\\r\\n color: #666;\\r\\n max-height: 120px;\\r\\n overflow-y: auto;\\n}\\r\\n\\r\\n/* ── Scroll Buttons ── */\\n.scroll-btns[data-v-9693c11e] {\\r\\n position: sticky;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: 20px;\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n margin-top: 10px;\\r\\n pointer-events: none;\\n}\\n.scroll-btn[data-v-9693c11e] {\\r\\n pointer-events: auto;\\r\\n width: 38px;\\r\\n height: 38px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\n}\\n.scroll-btn i[data-v-9693c11e] {\\r\\n font-size: 16px;\\r\\n color: #333;\\n}\\r\\n\\r\\n/* ── Footer ── */\\n.chat-footer[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\r\\n border-top: none;\\r\\n padding: 30px 0;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n margin: 0 auto;\\r\\n width: 100%;\\n}\\n.input-area[data-v-9693c11e] {\\r\\n position: relative;\\r\\n display: flex;\\r\\n align-items: flex-end;\\r\\n gap: 6px;\\r\\n background: #fff;\\r\\n border-radius: 24px;\\r\\n margin: 0 24px;\\r\\n padding: 18px 20px;\\r\\n border: 1px solid #b3d8ff;\\r\\n transition: border-color 0.2s;\\r\\n flex-wrap: wrap;\\r\\n width: min(100%, 1000px) !important;\\r\\n box-sizing: border-box;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: #1677ff;\\r\\n background: #fff;\\r\\n box-shadow: none;\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n content: \\\"Enter 发送,Ctrl+Enter 换行\\\";\\r\\n position: absolute;\\r\\n right: 100px;\\r\\n bottom: 28px;\\r\\n font-size: 14px;\\r\\n color: #8c8c8c;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-wrap[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n transform: translateX(-50%);\\r\\n bottom: calc(100% + 30px);\\r\\n z-index: 99;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n pointer-events: none;\\n}\\n.scroll-bottom-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border-radius: 50%;\\r\\n background: #fff;\\r\\n border: 1px solid #e5e7eb;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n pointer-events: auto;\\r\\n position: relative;\\r\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);\\n}\\n.scroll-bottom-btn svg[data-v-9693c11e] {\\r\\n color: #4e5969;\\n}\\n.scroll-bottom-btn[data-v-9693c11e]:hover {\\r\\n transform: scale(1.1);\\n}\\n.loading-circle[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n inset: 3px;\\r\\n border-radius: 50%;\\r\\n border: 1.5px solid transparent;\\r\\n border-top: 1.5px solid #1677ff;\\r\\n -webkit-animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\r\\n animation: circle-spin-data-v-9693c11e 1.5s linear infinite;\\n}\\n@-webkit-keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n@keyframes circle-spin-data-v-9693c11e {\\nfrom {\\r\\n transform: rotate(0deg);\\n}\\nto {\\r\\n transform: rotate(360deg);\\n}\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n border: none;\\r\\n outline: none;\\r\\n background: transparent;\\r\\n resize: none;\\r\\n font-size: 16px;\\r\\n line-height: 24px;\\r\\n min-height: 38px;\\r\\n height: 100px;\\r\\n max-height: 100px;\\r\\n overflow-y: auto;\\r\\n padding: 0;\\r\\n box-sizing: border-box;\\r\\n font-family: inherit;\\r\\n color: #333;\\r\\n flex: 1 1 320px;\\r\\n min-width: 0;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 16px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: auto;\\r\\n height: 40px;\\r\\n padding: 0 21px;\\r\\n border-radius: 6px;\\r\\n border: none;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n font-size: 14px;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: \\\"发送\\\";\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn.active[data-v-9693c11e]:hover {\\r\\n background: #4096ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 35px;\\r\\n height: 35px;\\r\\n border-radius: 50%;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #ff4d4f;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n transition: all 0.2s;\\n}\\n.stop-btn[data-v-9693c11e]:hover {\\r\\n background: #ff7875;\\n}\\r\\n\\r\\n/* ── Voice ── */\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n/* ── Voice Recording Overlay ── */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\r\\n\\r\\n/* ── Chat Agent Avatar ── */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e] {\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n\\r\\n/* ── Agent List Avatar ── */\\n.agent-list-avatar[data-v-9693c11e] {\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n color: #fff;\\r\\n font-size: 22px;\\r\\n font-weight: 600;\\r\\n border-radius: 8px;\\n}\\n.agent-list-avatar.has-agent-img[data-v-9693c11e] {\\r\\n width: 97px;\\r\\n height: 126px;\\r\\n background-size: cover;\\n}\\n.agent-list-avatar[data-v-9693c11e]:not(.has-agent-img) {\\r\\n width: 76px;\\r\\n height: 108px;\\r\\n transform: translateX(9px);\\n}\\n.session-avatar[data-v-9693c11e] {\\r\\n width: 44px !important;\\r\\n height: 44px !important;\\r\\n border-radius: 50% !important;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 16px !important;\\r\\n font-weight: 600;\\r\\n color: #fff;\\r\\n flex-shrink: 0;\\r\\n overflow: hidden;\\n}\\n.avatar-pic[data-v-9693c11e] {\\r\\n width: 85%;\\r\\n height: 85%;\\r\\n -o-object-fit: contain;\\r\\n object-fit: contain;\\n}\\r\\n\\r\\n/* ── Mobile Buttons ── */\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n.mobile-back-btn[data-v-9693c11e],\\r\\n.mobile-header-btn[data-v-9693c11e] {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n border: none;\\r\\n border-radius: 10px;\\r\\n background: #f5f7fa;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.mobile-menu-btn i[data-v-9693c11e],\\r\\n.mobile-back-btn i[data-v-9693c11e],\\r\\n.mobile-header-btn i[data-v-9693c11e] {\\r\\n font-size: 18px;\\n}\\n.mobile-back-btn i[data-v-9693c11e] {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\n}\\r\\n/* ── 聊天空白欢迎页(匹配蓝湖移动端聊天首页) ── */\\n.chat-empty-welcome[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n padding: 40px 20px;\\r\\n box-sizing: border-box;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 0px;\\r\\n max-width: 600px;\\r\\n margin: 80px auto;\\n}\\r\\n\\r\\n/* 顶部渐变欢迎卡片 */\\n.welcome-card[data-v-9693c11e] {\\r\\n position: relative;\\r\\n background: linear-gradient(296deg, #D6EDFF 20%, #E8EBFF 80%);\\r\\nborder-radius: 16px 16px 0px 0px;\\r\\n padding: 24px 24px 24px 150px;\\r\\n overflow: visible;\\n}\\r\\n/* 左侧探出头像容器 */\\n.welcome-avatar-box[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 0px;\\r\\n width: 110px;\\r\\n height: 137px;\\n}\\n.welcome-avatar[data-v-9693c11e] {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n border-radius: 12px;\\r\\n background-size: cover;\\r\\n background-position: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n font-size: 20px;\\r\\n color: #fff;\\r\\n font-weight: 600;\\n}\\n.welcome-avatar.has-chat-agent-img[data-v-9693c11e] {\\r\\n background: transparent;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center;\\n}\\n.welcome-text-group[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 6px;\\n}\\n.welcome-text-group .text-sm[data-v-9693c11e] {\\r\\nfont-weight: 400;font-size: 12px;color: #666666;\\r\\ntext-align: left;\\r\\nfont-style: normal;\\n}\\n.welcome-text-group .text-lg[data-v-9693c11e] {\\r\\n \\r\\n font-weight: 500;\\r\\nfont-size: 16px;\\r\\ncolor: #000000;\\n}\\r\\n\\r\\n/* 猜你想问容器 */\\n.guess-box[data-v-9693c11e] {\\r\\n border-top: 1px solid #fff;\\r\\n background: linear-gradient(180deg, #B8DCFF 0%, #DFF0FF 50%, #FFFFFF 100%);\\r\\n border-radius: 0 0 16px 16px;\\r\\n padding: 20px;\\n}\\n.guess-title[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 6px;\\r\\n font-size: 16px;\\r\\n font-weight: 500;\\r\\n color: #222;\\r\\n margin-bottom: 16px;\\n}\\n.tag-wrap[data-v-9693c11e] {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n gap: 10px;\\n}\\n.quick-tag[data-v-9693c11e] {\\r\\n padding: 8px 14px;\\r\\n background: #F2FAFF;\\r\\n border-radius: 8px;\\r\\n font-size: 14px;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n border: 1px solid #e0eaff;\\r\\n transition: all 0.2s;\\r\\n white-space: nowrap;\\n}\\r\\n/* .quick-tag:hover {\\r\\n background: #f0f7ff;\\r\\n border-color: #1677ff;\\r\\n} */\\n.chat-agent-avatar-wrapper div[data-v-9693c11e]{\\r\\n width: 44px;\\r\\n height: 44px;\\n}\\r\\n/* ── Responsive ── */\\n@media screen and (max-width: 768px) {\\n.chat-header[data-v-9693c11e] {\\r\\n padding: 10px 12px;\\r\\n background: transparent;\\r\\n border-bottom: none;\\n}\\n.chat-header .chat-agent-avatar-wrapper[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .agent-desc[data-v-9693c11e] {\\r\\n display: none;\\n}\\n.chat-header .header-left[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n justify-content: center;\\r\\n position: relative;\\n}\\n.chat-header .header-left .mobile-back-btn[data-v-9693c11e] {\\r\\n position: absolute;\\r\\n left: 12px;\\r\\n background: transparent;\\n}\\n.chat-header .header-actions .mobile-header-btn[data-v-9693c11e] {\\r\\n background: transparent;\\n}\\n.chat-body[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n background-position: center top;\\n}\\n.msg-row[data-v-9693c11e] {\\r\\n padding: 12px 0;\\n}\\n.msg-main[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n max-width: 100%;\\n}\\n.bubble[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.bubble.user[data-v-9693c11e] {\\r\\n max-width: 88%;\\n}\\n.chat-footer[data-v-9693c11e] {\\r\\n padding: 12px;\\r\\n flex-shrink: 0;\\r\\n background: #f5f5f5;\\r\\n box-sizing: border-box;\\n}\\r\\n /* 安全区域由 .chat-footer 统一处理,.chat-body 不需要重复加 padding */\\n.input-area[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n margin: 0;\\r\\n padding: 6px 6px 6px 4px;\\r\\n border-radius: 24px;\\r\\n border: none;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\r\\n flex-wrap: nowrap;\\r\\n align-items: center;\\n}\\n.input-area[data-v-9693c11e]:focus-within {\\r\\n border-color: transparent;\\r\\n background: #f5f5f5;\\r\\n box-shadow: 0 2px 8px rgba(0,0,0,0.06);\\n}\\n.input-area[data-v-9693c11e]::after {\\r\\n display: none;\\n}\\n.voice-btn[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n border: none;\\r\\n background: transparent;\\r\\n border-radius: 50%;\\r\\n color: #333;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\r\\n transition: background 0.2s;\\r\\n padding: 0;\\n}\\n.voice-btn[data-v-9693c11e]:active {\\r\\n background: rgba(0,0,0,0.05);\\n}\\n.voice-btn[data-v-9693c11e]:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\n}\\n.chat-textarea[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n flex-basis: 0;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n max-height: 100px;\\r\\n font-size: 15px;\\r\\n background: #EBEBEB;\\r\\n border-radius: 18px;\\r\\n padding: 0 14px;\\r\\n line-height: 36px;\\r\\n margin: 0 4px;\\r\\n color: #333;\\n}\\n.chat-textarea[data-v-9693c11e]::-moz-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]:-ms-input-placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.chat-textarea[data-v-9693c11e]::placeholder {\\r\\n color: #999;\\r\\n font-size: 15px;\\n}\\n.send-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\r\\n padding: 0;\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: #1677ff;\\r\\n color: #fff;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n flex-shrink: 0;\\n}\\n.send-btn svg[data-v-9693c11e] {\\r\\n display: block;\\n}\\n.send-btn[data-v-9693c11e]::after {\\r\\n content: none;\\n}\\n.send-btn.active[data-v-9693c11e] {\\r\\n background: #1677ff;\\n}\\n.send-btn[data-v-9693c11e]:disabled {\\r\\n background: #88bfff;\\r\\n cursor: not-allowed;\\n}\\n.send-btn[data-v-9693c11e]:active {\\r\\n transform: scale(0.92);\\n}\\n.stop-btn[data-v-9693c11e] {\\r\\n width: 36px;\\r\\n height: 36px;\\r\\n min-width: 36px;\\n}\\n.guess-box[data-v-9693c11e] {\\r\\n padding: 16px;\\n}\\r\\n\\r\\n /* H5 语音模式 */\\n.hold-talk-btn[data-v-9693c11e] {\\r\\n flex: 1;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n gap: 6px;\\r\\n height: 36px;\\r\\n min-height: 36px;\\r\\n margin: 0 4px;\\r\\n border-radius: 18px;\\r\\n background: #EBEBEB;\\r\\n border: none;\\r\\n font-size: 14px;\\r\\n color: #666;\\r\\n cursor: pointer;\\r\\n -moz-user-select: none;\\r\\n -ms-user-select: none;\\r\\n user-select: none;\\r\\n -webkit-user-select: none;\\r\\n transition: background 0.15s;\\n}\\n.hold-talk-btn[data-v-9693c11e]:active {\\r\\n background: #ddd;\\n}\\n.hold-talk-btn.recording[data-v-9693c11e] {\\r\\n background: #e8f0fe;\\r\\n color: #333;\\n}\\n.hold-talk-btn .hold-talk-icon[data-v-9693c11e] {\\r\\n flex-shrink: 0;\\n}\\r\\n\\r\\n /* 语音录制浮层 */\\n.voice-recording-overlay[data-v-9693c11e] {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n z-index: 1000;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background: rgba(0,0,0,0.35);\\r\\n -webkit-animation: fadeIn-data-v-9693c11e 0.15s ease;\\r\\n animation: fadeIn-data-v-9693c11e 0.15s ease;\\n}\\n.voice-recording-card[data-v-9693c11e] {\\r\\n width: 200px;\\r\\n padding: 32px 24px 24px;\\r\\n background: #fff;\\r\\n border-radius: 20px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n gap: 16px;\\r\\n box-shadow: 0 8px 32px rgba(0,0,0,0.15);\\n}\\n.voice-recording-wave[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n height: 40px;\\n}\\n.voice-recording-wave span[data-v-9693c11e] {\\r\\n width: 4px;\\r\\n background: #1677ff;\\r\\n border-radius: 2px;\\r\\n -webkit-animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\r\\n animation: waveAnim-data-v-9693c11e 0.6s ease-in-out infinite alternate;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(1) { height: 16px; -webkit-animation-delay: 0s; animation-delay: 0s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(2) { height: 28px; -webkit-animation-delay: 0.1s; animation-delay: 0.1s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(3) { height: 40px; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(4) { height: 28px; -webkit-animation-delay: 0.3s; animation-delay: 0.3s;\\n}\\n.voice-recording-wave span[data-v-9693c11e]:nth-child(5) { height: 16px; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;\\n}\\n@-webkit-keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n@keyframes waveAnim-data-v-9693c11e {\\n0% { transform: scaleY(0.6);\\n}\\n100% { transform: scaleY(1);\\n}\\n}\\n.voice-recording-duration[data-v-9693c11e] {\\r\\n font-size: 32px;\\r\\n font-weight: 600;\\r\\n color: #333;\\r\\n line-height: 1;\\n}\\n.voice-recording-duration .unit[data-v-9693c11e] {\\r\\n font-size: 18px;\\r\\n font-weight: 400;\\r\\n color: #999;\\r\\n margin-left: 2px;\\n}\\n.voice-recording-hint[data-v-9693c11e] {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 4px;\\r\\n font-size: 13px;\\r\\n color: #999;\\n}\\n.voice-recording-hint.cancel[data-v-9693c11e] {\\r\\n color: #ff4d4f;\\n}\\n@-webkit-keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n@keyframes fadeIn-data-v-9693c11e {\\nfrom { opacity: 0;\\n}\\nto { opacity: 1;\\n}\\n}\\n}\\n@media screen and (max-width: 480px) {\\n.agent-name[data-v-9693c11e] {\\r\\n font-size: 14px;\\n}\\n.agent-desc[data-v-9693c11e] {\\r\\n max-width: calc(100vw - 132px);\\n}\\n.mobile-menu-btn[data-v-9693c11e],\\r\\n .mobile-header-btn[data-v-9693c11e] {\\r\\n width: 32px;\\r\\n height: 32px;\\n}\\n}\\r\\n\\r\\n/* ═══════════════════════════════════════════════════════════════\\r\\n Android 兼容性修复 — TokUI desc 组件 flex/grid 布局\\r\\n ═══════════════════════════════════════════════════════════════\\r\\n 问题:部分 Android WebView 对 CSS Grid 支持不完整,且 overflow-wrap:anywhere\\r\\n 会破坏 flex:1 的收缩行为,导致 tokui-desc__value 换行到 label 下方。\\r\\n 修复:显式声明 flex 方向 + 防止 flex 子项溢出。 */\\r\\n\\r\\n/* ── 默认 grid 模式:降级为 flexbox 模拟 grid(兼容旧版 Android WebView) ── */\\n.tokui-shell .tokui-stream .tokui-desc[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-wrap: wrap !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc__item[data-v-9693c11e] {\\r\\n flex: 0 0 calc(100% / var(--tokui-desc-cols, 3));\\r\\n box-sizing: border-box;\\r\\n min-width: 0;\\n}\\r\\n\\r\\n/* ── 水平模式:item 内部 label/value 强制水平并排 ──\\r\\n 注意:容器 (.tokui-desc) 的 flex-wrap 布局继承自上方通用规则,\\r\\n 仅覆盖 item 内部从块级排列改为 flex 行排列。 */\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__item[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: row !important;\\r\\n flex-wrap: nowrap !important;\\r\\n align-items: baseline !important;\\r\\n width: 100% !important;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__label[data-v-9693c11e] {\\r\\n flex: 0 0 auto !important;\\r\\n flex-shrink: 0 !important;\\r\\n min-width: var(--tokui-desc-label-w, 100px);\\r\\n white-space: nowrap !important;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: 0 !important;\\r\\n padding-right: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-desc--horizontal .tokui-desc__value[data-v-9693c11e] {\\r\\n flex: 1 1 0% !important;\\r\\n min-width: 0 !important;\\r\\n width: auto !important;\\r\\n overflow-wrap: break-word !important;\\r\\n word-break: break-word;\\n}\\r\\n\\r\\n/* ── 移动端:tokui-row 列改为纵向堆叠,避免窄屏挤压 ── */\\n@media screen and (max-width: 768px) {\\n.tokui-shell .tokui-stream .tokui-row[data-v-9693c11e] {\\r\\n display: flex !important;\\r\\n flex-direction: column !important;\\r\\n gap: 8px;\\n}\\n.tokui-shell .tokui-stream .tokui-col[data-v-9693c11e] {\\r\\n width: 100% !important;\\r\\n grid-column: unset !important;\\n}\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/components/chatMain/ChatDetail.vue?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--6-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");
1445
1445
 
1446
1446
  /***/ }),
1447
1447
 
@@ -11042,7 +11042,7 @@ eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\
11042
11042
  /*! exports provided: name, version, main, private, scripts, dependencies, devDependencies, browserslist, directories, keywords, license, files, default */
11043
11043
  /***/ (function(module) {
11044
11044
 
11045
- eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"zj-plugin-intelligent\\\",\\\"version\\\":\\\"1.2.8-beta.7\\\",\\\"main\\\":\\\"lib/ZjPluginIntelligent.umd.min.js\\\",\\\"private\\\":false,\\\"scripts\\\":{\\\"serve\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve\\\",\\\"build\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build\\\",\\\"lib\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\",\\\"lib:test\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode test --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\"},\\\"dependencies\\\":{\\\"@jboltai/tokui\\\":\\\"^0.1.6\\\",\\\"crypto-js\\\":\\\"^4.2.0\\\",\\\"html2canvas\\\":\\\"^1.4.1\\\",\\\"markdown-it\\\":\\\"^14.1.0\\\"},\\\"devDependencies\\\":{\\\"@babel/preset-env\\\":\\\"^7.14.9\\\",\\\"@vue/cli-plugin-babel\\\":\\\"~4.5.0\\\",\\\"@vue/cli-plugin-eslint\\\":\\\"^4.5.13\\\",\\\"@vue/cli-plugin-vuex\\\":\\\"~4.5.0\\\",\\\"@vue/cli-service\\\":\\\"~4.5.0\\\",\\\"axios\\\":\\\"^0.27.2\\\",\\\"babel-eslint\\\":\\\"^10.1.0\\\",\\\"babel-plugin-component\\\":\\\"^1.1.1\\\",\\\"compression-webpack-plugin\\\":\\\"^6.0.3\\\",\\\"core-js\\\":\\\"^3.6.5\\\",\\\"element-ui\\\":\\\"^2.15.4\\\",\\\"eslint\\\":\\\"^7.30.0\\\",\\\"eslint-plugin-vue\\\":\\\"^7.13.0\\\",\\\"js-cookie\\\":\\\"^2.2.1\\\",\\\"obs-upload\\\":\\\"^1.0.4\\\",\\\"pako\\\":\\\"^2.1.0\\\",\\\"reconnecting-websocket\\\":\\\"^4.4.0\\\",\\\"sass\\\":\\\"^1.71.0\\\",\\\"sass-loader\\\":\\\"^8.0.2\\\",\\\"snowflake-id\\\":\\\"^1.1.0\\\",\\\"vue\\\":\\\"^2.6.11\\\",\\\"vue-template-compiler\\\":\\\"^2.6.11\\\",\\\"vuex\\\":\\\"^3.4.0\\\",\\\"webpack-bundle-analyzer\\\":\\\"^4.4.2\\\"},\\\"browserslist\\\":[\\\"> 1%\\\",\\\"last 2 versions\\\",\\\"not dead\\\"],\\\"directories\\\":{\\\"lib\\\":\\\"lib\\\"},\\\"keywords\\\":[],\\\"license\\\":\\\"ISC\\\",\\\"files\\\":[\\\"lib\\\"]}\");\n\n//# sourceURL=webpack://ZjPluginIntelligent/./package.json?");
11045
+ eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"zj-plugin-intelligent\\\",\\\"version\\\":\\\"1.2.8-beta.8\\\",\\\"main\\\":\\\"lib/ZjPluginIntelligent.umd.min.js\\\",\\\"private\\\":false,\\\"scripts\\\":{\\\"serve\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve\\\",\\\"build\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build\\\",\\\"lib\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\",\\\"lib:test\\\":\\\"set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode test --target lib --name ZjPluginIntelligent --dest lib src/lib/index.js\\\"},\\\"dependencies\\\":{\\\"@jboltai/tokui\\\":\\\"^0.1.6\\\",\\\"crypto-js\\\":\\\"^4.2.0\\\",\\\"html2canvas\\\":\\\"^1.4.1\\\",\\\"markdown-it\\\":\\\"^14.1.0\\\"},\\\"devDependencies\\\":{\\\"@babel/preset-env\\\":\\\"^7.14.9\\\",\\\"@vue/cli-plugin-babel\\\":\\\"~4.5.0\\\",\\\"@vue/cli-plugin-eslint\\\":\\\"^4.5.13\\\",\\\"@vue/cli-plugin-vuex\\\":\\\"~4.5.0\\\",\\\"@vue/cli-service\\\":\\\"~4.5.0\\\",\\\"axios\\\":\\\"^0.27.2\\\",\\\"babel-eslint\\\":\\\"^10.1.0\\\",\\\"babel-plugin-component\\\":\\\"^1.1.1\\\",\\\"compression-webpack-plugin\\\":\\\"^6.0.3\\\",\\\"core-js\\\":\\\"^3.6.5\\\",\\\"element-ui\\\":\\\"^2.15.4\\\",\\\"eslint\\\":\\\"^7.30.0\\\",\\\"eslint-plugin-vue\\\":\\\"^7.13.0\\\",\\\"js-cookie\\\":\\\"^2.2.1\\\",\\\"obs-upload\\\":\\\"^1.0.4\\\",\\\"pako\\\":\\\"^2.1.0\\\",\\\"reconnecting-websocket\\\":\\\"^4.4.0\\\",\\\"sass\\\":\\\"^1.71.0\\\",\\\"sass-loader\\\":\\\"^8.0.2\\\",\\\"snowflake-id\\\":\\\"^1.1.0\\\",\\\"vue\\\":\\\"^2.6.11\\\",\\\"vue-template-compiler\\\":\\\"^2.6.11\\\",\\\"vuex\\\":\\\"^3.4.0\\\",\\\"webpack-bundle-analyzer\\\":\\\"^4.4.2\\\"},\\\"browserslist\\\":[\\\"> 1%\\\",\\\"last 2 versions\\\",\\\"not dead\\\"],\\\"directories\\\":{\\\"lib\\\":\\\"lib\\\"},\\\"keywords\\\":[],\\\"license\\\":\\\"ISC\\\",\\\"files\\\":[\\\"lib\\\"]}\");\n\n//# sourceURL=webpack://ZjPluginIntelligent/./package.json?");
11046
11046
 
11047
11047
  /***/ }),
11048
11048
 
@@ -12018,7 +12018,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n
12018
12018
  /***/ (function(module, exports, __webpack_require__) {
12019
12019
 
12020
12020
  "use strict";
12021
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setAuth = setAuth;\nexports.setToken = setToken;\nexports.getAuth = getAuth;\nexports.setBaseURL = setBaseURL;\nexports.signQueryParams = signQueryParams;\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(__webpack_require__(/*! axios */ \"./node_modules/axios/index.js\"));\n\nvar _cookie = __webpack_require__(/*! @lib/utils/cookie.js */ \"./src/lib/utils/cookie.js\");\n\nvar _message = __webpack_require__(/*! @lib/utils/message.js */ \"./src/lib/utils/message.js\");\n\n/*\r\n * @Author: 高瑞廷 2419056691@qq.com\r\n * @Date: 2026-06-04 11:27:13\r\n * @LastEditors: 高瑞廷 2419056691@qq.com\r\n * @LastEditTime: 2026-07-30 14:51:53\r\n * @FilePath: \\zjkj-nodejs-npm_customer-client\\src\\lib\\utils\\request.js\r\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r\n */\nvar runtimeAK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_AK || '';\nvar runtimeSK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_SK || '';\nvar runtimeToken = '';\nvar _user = '';\nvar _companyNo = '';\nvar runtimeBaseURL = \"https://ai.jybtech.cn\" || false;\n\nvar CryptoJS = __webpack_require__(/*! crypto-js */ \"./node_modules/crypto-js/index.js\");\n\nvar service = _axios.default.create({\n baseURL: runtimeBaseURL,\n timeout: 15000\n});\n\nfunction hmacSha256Base64(rawSignStr, sk) {\n var hmac = CryptoJS.HmacSHA256(rawSignStr, sk); // 转为 Base64\n\n return CryptoJS.enc.Base64.stringify(hmac);\n}\n\nfunction setAuth(ak, sk, user, companyNo, token) {\n runtimeAK = ak || '';\n runtimeSK = sk || '';\n _user = user;\n _companyNo = companyNo;\n runtimeToken = token || '';\n}\n\nfunction setToken(token) {\n runtimeToken = token || '';\n}\n\nfunction getAuth() {\n return {\n ak: runtimeAK,\n sk: runtimeSK,\n token: runtimeToken,\n user: _user,\n companyNo: _companyNo\n };\n}\n\nfunction setBaseURL(url) {\n runtimeBaseURL = url || '';\n service.defaults.baseURL = runtimeBaseURL;\n}\n\nfunction signQueryParams(params, secretKey) {\n var keys = Object.keys(params).filter(function (k) {\n return k !== 'ak' && k !== 'sign';\n }).sort();\n var raw = keys.map(function (k) {\n return \"\".concat(k, \"=\").concat(params[k] || '');\n }).join('&');\n return hmacSha256Base64(raw, secretKey);\n}\n\nservice.interceptors.request.use(function (config) {\n // 流式接口跳过 Header 签名\n if (config.url.includes('/chat/stream')) {\n return config;\n }\n\n var ts = Date.now().toString();\n var token = runtimeToken || (0, _cookie.getToken)();\n var externalUser = _user || '';\n var signParts = []; // 1. 第一位:token(有值才加入)\n\n if (_companyNo) {\n signParts.push(\"companyNo=\".concat(_companyNo));\n }\n\n if (token) {\n signParts.push(\"token=\".concat(token));\n } // 2. 第二位:user(有值才加入)\n\n\n if (externalUser) {\n signParts.push(\"user=\".concat(externalUser));\n } // 3. 第三位:ts(必选,永远存在)\n\n\n signParts.push(\"ts=\".concat(ts)); // 拼接最终待签字符串\n\n var signStr = signParts.join('&'); // 计算签名\n\n var sign = hmacSha256Base64(signStr, runtimeSK);\n\n if (_companyNo) {\n config.headers['X-Company-No'] = _companyNo;\n } // 设置请求头\n\n\n config.headers['X-AK'] = runtimeAK;\n config.headers['X-Ts'] = ts;\n config.headers['X-Sign'] = sign;\n\n if (token) {\n config.headers['X-Auth-Token'] = \"\".concat(token);\n config.headers.Authorization = \"Bearer \".concat(token);\n }\n\n config.headers['X-External-User'] = externalUser;\n config.headers['Content-Type'] = 'application/json'; // console.log('排序后key:', sortedKeys)\n\n return config;\n}, function (error) {\n return Promise.reject(error);\n});\nservice.interceptors.response.use(function (response) {\n var res = response.data;\n\n if (res.code === 200) {\n return res;\n } else if (res.code === 40101) {\n (0, _message.showMessage)('登录已过期,请重新登录');\n return Promise.reject(new Error(res.message));\n } else {\n (0, _message.showMessage)(res.message || '请求失败');\n return Promise.reject(new Error(res.message));\n }\n}, function (error) {\n (0, _message.showMessage)(error.message || '网络异常');\n return Promise.reject(error);\n});\nvar _default = service;\nexports.default = _default;\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/utils/request.js?");
12021
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setAuth = setAuth;\nexports.setToken = setToken;\nexports.getAuth = getAuth;\nexports.setBaseURL = setBaseURL;\nexports.signQueryParams = signQueryParams;\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(__webpack_require__(/*! axios */ \"./node_modules/axios/index.js\"));\n\nvar _cookie = __webpack_require__(/*! @lib/utils/cookie.js */ \"./src/lib/utils/cookie.js\");\n\nvar _message = __webpack_require__(/*! @lib/utils/message.js */ \"./src/lib/utils/message.js\");\n\n/*\r\n * @Author: 高瑞廷 2419056691@qq.com\r\n * @Date: 2026-06-04 11:27:13\r\n * @LastEditors: 高瑞廷 2419056691@qq.com\r\n * @LastEditTime: 2026-07-30 15:11:50\r\n * @FilePath: \\zjkj-nodejs-npm_customer-client\\src\\lib\\utils\\request.js\r\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r\n */\nvar runtimeAK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_AK || '';\nvar runtimeSK = Object({\"NODE_ENV\":\"test\",\"VUE_APP_API\":\"https://api.qgbtech.cn\",\"VUE_APP_BASE_API\":\"https://ai.jybtech.cn\",\"VUE_APP_NAME\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_BASE_SK || '';\nvar runtimeToken = '';\nvar _user = '';\nvar _companyNo = '';\nvar runtimeBaseURL = \"https://ai.jybtech.cn\" || false;\n\nvar CryptoJS = __webpack_require__(/*! crypto-js */ \"./node_modules/crypto-js/index.js\");\n\nvar service = _axios.default.create({\n baseURL: runtimeBaseURL,\n timeout: 15000\n});\n\nfunction hmacSha256Base64(rawSignStr, sk) {\n var hmac = CryptoJS.HmacSHA256(rawSignStr, sk); // 转为 Base64\n\n return CryptoJS.enc.Base64.stringify(hmac);\n}\n\nfunction setAuth(ak, sk, user, companyNo, token) {\n runtimeAK = ak || '';\n runtimeSK = sk || '';\n _user = user;\n _companyNo = companyNo;\n runtimeToken = token || '';\n}\n\nfunction setToken(token) {\n runtimeToken = token || '';\n}\n\nfunction getAuth() {\n return {\n ak: runtimeAK,\n sk: runtimeSK,\n token: runtimeToken,\n user: _user,\n companyNo: _companyNo\n };\n}\n\nfunction setBaseURL(url) {\n runtimeBaseURL = url || '';\n service.defaults.baseURL = runtimeBaseURL;\n}\n\nfunction signQueryParams(params, secretKey) {\n var keys = Object.keys(params).filter(function (k) {\n return k !== 'ak' && k !== 'sign';\n }).sort();\n var raw = keys.map(function (k) {\n return \"\".concat(k, \"=\").concat(params[k] || '');\n }).join('&');\n return hmacSha256Base64(raw, secretKey);\n}\n\nservice.interceptors.request.use(function (config) {\n // 流式接口跳过 Header 签名\n if (config.url.includes('/chat/stream')) {\n return config;\n }\n\n var ts = Date.now().toString();\n var token = runtimeToken || (0, _cookie.getToken)();\n var externalUser = _user || '';\n var signParts = []; // 1. 第一位:token(有值才加入)\n\n if (_companyNo) {\n signParts.push(\"companyNo=\".concat(_companyNo));\n }\n\n if (token) {\n signParts.push(\"token=\".concat(token));\n } // 2. 第二位:user(有值才加入)\n\n\n if (externalUser) {\n signParts.push(\"user=\".concat(externalUser));\n } // 3. 第三位:ts(必选,永远存在)\n\n\n signParts.push(\"ts=\".concat(ts)); // 拼接最终待签字符串\n\n var signStr = signParts.join('&'); // 计算签名\n\n var sign = hmacSha256Base64(signStr, runtimeSK);\n\n if (_companyNo) {\n config.headers['X-Company-No'] = _companyNo;\n } // 设置请求头\n\n\n config.headers['X-AK'] = runtimeAK;\n config.headers['X-Ts'] = ts;\n config.headers['X-Sign'] = sign;\n\n if (token) {\n config.headers['X-Auth-Token'] = \"\".concat(token);\n config.headers.Authorization = \"Bearer \".concat(token);\n }\n\n config.headers['X-External-User'] = externalUser;\n config.headers['Content-Type'] = 'application/json'; // console.log('排序后key:', sortedKeys)\n\n return config;\n}, function (error) {\n return Promise.reject(error);\n});\nservice.interceptors.response.use(function (response) {\n var res = response.data;\n\n if (res.code === 200) {\n return res;\n } else if (res.code === 40101) {\n (0, _message.showMessage)('登录已过期,请重新登录');\n return Promise.reject(new Error(res.message));\n } else {\n (0, _message.showMessage)(res.message || '请求失败');\n return Promise.reject(new Error(res.message));\n }\n}, function (error) {\n (0, _message.showMessage)(error.message || '网络异常');\n return Promise.reject(error);\n});\nvar _default = service;\nexports.default = _default;\n\n//# sourceURL=webpack://ZjPluginIntelligent/./src/lib/utils/request.js?");
12022
12022
 
12023
12023
  /***/ }),
12024
12024
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zj-plugin-intelligent",
3
- "version": "1.2.8-beta.7",
3
+ "version": "1.2.8-beta.8",
4
4
  "main": "lib/ZjPluginIntelligent.umd.min.js",
5
5
  "private": false,
6
6
  "scripts": {