/* 全局样式 */ :root { --primary-color: #667eea; --primary-dark: #5a67d8; --background-color: #f5f5f5; --card-background: #ffffff; --border-color: #e0e0e0; --text-primary: #000000; --text-secondary: #6b7280; } body { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background-color: var(--background-color); } /* 聊天界面样式 */ .chat-container { height: 100vh; display: flex; flex-direction: column; background-color: var(--background-color); } /* 顶部导航样式 */ .header { background-color: var(--primary-color); color: white; padding: 16px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .header-content { max-width: 1200px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; } .header-title { margin: 0; font-size: 20px; font-weight: 600; } .header-subtitle { margin: 4px 0 0 0; font-size: 14px; opacity: 0.9; } /* 主内容区域样式 */ .main-content { flex: 1; display: flex; max-width: 1200px; width: 100%; margin: 0 auto; height: 100%; } /* 侧边栏样式 */ .sidebar { width: 25%; min-width: 280px; background-color: var(--card-background); border-right: 1px solid var(--border-color); display: flex; flex-direction: column; } .sidebar-header { padding: 16px; } .sidebar-title { margin: 0 0 16px 0; font-size: 16px; font-weight: 600; } /* 聊天内容区样式 */ .chat-area { flex: 1; display: flex; flex-direction: column; background-color: var(--card-background); } .messages-container { flex: 1; overflow-y: auto; padding: 16px; } /* 消息样式 */ .message-row { display: flex; margin-bottom: 16px; align-items: flex-end; } .message-row.user { justify-content: flex-end; } .message-row.bot { justify-content: flex-start; } .message-content { max-width: 70%; display: flex; align-items: flex-end; } .avatar { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 16px; } .avatar.bot { background-color: var(--primary-color); margin-right: 8px; } .avatar.user { background-color: var(--primary-dark); margin-left: 8px; } .message-bubble { padding: 12px 16px; border-radius: 18px; position: relative; } .message-bubble.user { background-color: var(--primary-color); color: white; } .message-bubble.bot { background-color: var(--background-color); color: var(--text-primary); } .message-time { display: block; margin-top: 4px; font-size: 12px; opacity: 0.7; } /* 输入区样式 */ .input-area { padding: 16px; border-top: 1px solid var(--border-color); background-color: var(--card-background); } .input-container { display: flex; align-items: flex-end; } /* 加载状态样式 */ .loading-indicator { display: flex; justify-content: flex-start; margin-bottom: 16px; align-items: center; } .loading-dots { display: flex; align-items: center; padding: 12px 16px; background-color: var(--background-color); border-radius: 18px; } .loading-dot { width: 8px; height: 8px; border-radius: 50%; background-color: var(--primary-color); margin: 0 2px; animation: pulse 1.4s infinite ease-in-out; } .loading-dot:nth-child(2) { animation-delay: 0.2s; } .loading-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes pulse { 0%, 60%, 100% { transform: scale(0.8); opacity: 0.7; } 30% { transform: scale(1); opacity: 1; } } /* 移动端适配 */ @media (max-width: 640px) { .sidebar { display: none; } .message-content { max-width: 85%; } }