/* 思考中动画 */ .thinking-dots { display: inline-flex; align-items: center; gap: 4px; } .thinking-dots span { width: 8px; height: 8px; background-color: #8b5cf6; border-radius: 50%; animation: thinking 1.4s ease-in-out infinite; } .thinking-dots span:nth-child(1) { animation-delay: -0.32s; } .thinking-dots span:nth-child(2) { animation-delay: -0.16s; } @keyframes thinking { 0%, 80%, 100% { transform: scale(0); opacity: 0.5; } 40% { transform: scale(1); opacity: 1; } } /* 打字光标 */ .typing-cursor { display: inline-block; width: 2px; height: 16px; background-color: #8b5cf6; animation: blink 1s infinite; margin-left: 2px; vertical-align: text-bottom; } @keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } } /* Markdown样式 */ .markdown-body { font-size: 14px; line-height: 1.6; color: #374151; } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { margin-top: 16px; margin-bottom: 8px; font-weight: 600; } .markdown-body h1 { font-size: 1.5em; border-bottom: 1px solid #e5e7eb; padding-bottom: 8px; } .markdown-body h2 { font-size: 1.3em; } .markdown-body h3 { font-size: 1.15em; } .markdown-body pre { margin: 12px 0; } .markdown-body table { border-collapse: collapse; width: 100%; margin: 12px 0; } .markdown-body table th, .markdown-body table td { border: 1px solid #e5e7eb; padding: 8px 12px; } .markdown-body table th { background-color: #f9fafb; font-weight: 600; } .markdown-body hr { border: none; border-top: 1px solid #e5e7eb; margin: 16px 0; } /* 消息样式 */ .bot-message { word-wrap: break-word; word-break: break-word; } /* 自定义滚动条 */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f3f4f6; border-radius: 4px; } ::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #9ca3af; } /* 插件面板 Tabs 撑满高度 */ .ant-tabs { display: flex; flex-direction: column; } .ant-tabs-content-holder { flex: 1; overflow: hidden; } .ant-tabs-content { height: 100%; } .ant-tabs-tabpane { height: 100%; padding: 12px 16px; overflow: auto; }