/* 공통 스타일 */ body { background-color: #f8f9fa; min-height: 100vh; display: flex; flex-direction: column; } footer { margin-top: auto; } /* 채팅 영역 스타일 */ .chat-messages { max-height: 500px; overflow-y: auto; padding-right: 5px; } /* 사용자 및 봇 메시지 공통 스타일 */ .chat-message { margin-bottom: 15px; } .message-avatar { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 15px; flex-shrink: 0; } .message-content { flex-grow: 1; background-color: #ffffff; border-radius: 12px; padding: 12px 15px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); position: relative; } /* 사용자 메시지 스타일 */ .user-message .message-content { background-color: #e9f5ff; border: 1px solid #cce5ff; } /* 봇 메시지 스타일 */ .bot-message .message-content { background-color: #ffffff; border: 1px solid #e9ecef; } /* 메시지 텍스트 스타일 */ .message-text { white-space: pre-wrap; word-break: break-word; } .message-text code { background-color: #f5f5f5; padding: 2px 4px; border-radius: 4px; font-family: 'Courier New', monospace; } .message-text pre { background-color: #f5f5f5; padding: 10px; border-radius: 5px; margin: 10px 0; overflow-x: auto; } .message-text blockquote { border-left: 4px solid #ced4da; padding-left: 15px; color: #6c757d; margin: 10px 0; } .message-metadata { font-size: 0.85rem; color: #6c757d; } /* 음성 입력 버튼 스타일 */ #micButton.recording { background-color: #dc3545; animation: pulse 1.5s infinite; } @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.7; } 100% { opacity: 1; } } /* 드롭존 스타일 */ .dropzone { border: 2px dashed #ccc; border-radius: 5px; background-color: #f8f9fa; min-height: 150px; } .dropzone:hover { border-color: #198754; } .dropzone .dz-preview { margin: 10px; } /* 소스 목록 스타일 */ .source-item { border-left: 3px solid #28a745; background-color: #f8f9fa; } .source-score { width: 40px; height: 40px; border-radius: 50%; background-color: #28a745; color: white; display: flex; align-items: center; justify-content: center; font-weight: bold; } /* 상자 애니메이션 효과 */ .fade-in { animation: fadeIn 0.5s; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* 스크롤바 스타일 */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; } ::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: #a1a1a1; } /* 모바일 반응형 스타일 */ @media (max-width: 768px) { .message-avatar { width: 35px; height: 35px; } .message-content { padding: 10px; } }