/* 全局样式 */ * { margin: 0; padding: 0; box-sizing: border-box; } html, body { height: 100%; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; } #app { height: 100vh; display: flex; flex-direction: column; } .container-fluid { flex: 1; overflow: hidden; } .row { height: calc(100vh - 56px); } /* 聊天容器 */ .chat-container { display: flex; flex-direction: column; height: 100%; padding: 0; } /* 消息列表 */ .messages-container { flex: 1; overflow-y: auto; padding: 20px; background-color: #f8f9fa; } /* 消息样式 */ .message { margin-bottom: 20px; animation: fadeIn 0.3s ease-in; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .message-content { max-width: 80%; padding: 12px 16px; border-radius: 8px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } .user-message .message-content { background-color: #007bff; color: white; margin-left: auto; } .assistant-message .message-content { background-color: white; color: #333; } .message-header { display: flex; justify-content: space-between; margin-bottom: 8px; font-size: 0.9em; } .user-message .message-header { color: rgba(255, 255, 255, 0.9); } .assistant-message .message-header { color: #666; } .message-time { font-size: 0.85em; opacity: 0.7; } .message-body pre { white-space: pre-wrap; word-wrap: break-word; font-family: inherit; font-size: 0.95em; line-height: 1.6; } /* 图表容器 */ .chart-container { width: 100%; height: 400px; background-color: #fff; border-radius: 4px; border: 1px solid #dee2e6; } /* 输入框容器 */ .input-container { padding: 20px; background-color: white; border-top: 1px solid #dee2e6; } .input-group input { border-radius: 20px 0 0 20px; padding: 12px 20px; } .input-group button { border-radius: 0 20px 20px 0; padding: 12px 30px; } /* 技能面板 */ .skill-panel { background-color: #f8f9fa; border-left: 1px solid #dee2e6; padding: 20px; overflow-y: auto; } .skill-item { padding: 12px; background-color: white; border-radius: 8px; border: 1px solid #dee2e6; } .skill-item:hover { box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } /* 滚动条样式 */ .messages-container::-webkit-scrollbar, .skill-panel::-webkit-scrollbar { width: 8px; } .messages-container::-webkit-scrollbar-track, .skill-panel::-webkit-scrollbar-track { background: #f1f1f1; } .messages-container::-webkit-scrollbar-thumb, .skill-panel::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } .messages-container::-webkit-scrollbar-thumb:hover, .skill-panel::-webkit-scrollbar-thumb:hover { background: #555; } /* 响应式设计 */ @media (max-width: 768px) { .message-content { max-width: 90%; } .skill-panel { position: fixed; top: 56px; right: 0; width: 300px; height: calc(100vh - 56px); z-index: 1000; box-shadow: -2px 0 8px rgba(0, 0, 0, 0.1); } } /* 加载动画 */ .spinner-border-sm { width: 1rem; height: 1rem; border-width: 0.15em; }