@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap'); $primary-color: #3f51b5; $secondary-color: #f0f0f0; $text-color: #2e2e2e; $light-text-color: #6d6d6d; $border-color: #dcdcdc; $shadow-color: rgba(0, 0, 0, 0.1); $transition: all 0.2s ease-in-out; .chat-box { display: flex; flex-direction: column; height: 100%; background-color: #fff; font-family: 'Inter', sans-serif; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px $shadow-color; position: relative; .chat-header { background-color: $primary-color; color: #fff; padding: 16px; text-align: center; box-shadow: 0 1px 4px $shadow-color; h2 { margin: 0; font-size: 1.5em; font-weight: 500; } } .chat-messages { flex-grow: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 12px; &::-webkit-scrollbar { width: 8px; } &::-webkit-scrollbar-thumb { background-color: rgba(0, 0, 0, 0.1); border-radius: 4px; } } .chat-input { display: flex; padding: 12px; border-top: 1px solid $border-color; background-color: #fff; input { flex-grow: 1; padding: 12px 16px; border: 1px solid $border-color; border-radius: 24px; font-size: 15px; transition: $transition; &:focus { outline: none; border-color: $primary-color; box-shadow: 0 0 0 2px rgba($primary-color, 0.2); } &:disabled { background-color: $secondary-color; cursor: not-allowed; } } .submit-button { background-color: $primary-color; color: white; border: none; border-radius: 50%; width: 48px; height: 48px; margin-left: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: $transition; &:hover { background-color: darken($primary-color, 10%); } &:disabled { background-color: lighten($primary-color, 20%); cursor: not-allowed; } .spinner { width: 20px; height: 20px; border: 3px solid rgba(255, 255, 255, 0.3); border-top: 3px solid #fff; border-radius: 50%; animation: spin 0.6s linear infinite; } } } .citation-popup { position: fixed; bottom: 50px; left: 50%; transform: translateX(-50%); background-color: rgba(0, 0, 0, 0.8); color: white; padding: 10px 20px; border-radius: 10px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); z-index: 1000; animation: fadeIn 0.3s ease-in-out; p { margin: 0; font-size: 14px; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } } } .message { max-width: 75%; padding: 12px 16px; border-radius: 12px; font-size: 15px; line-height: 1.6; box-shadow: 0 1px 3px $shadow-color; word-wrap: break-word; display: flex; flex-direction: column; &.user { align-self: flex-end; background-color: $primary-color; color: #fff; border-bottom-right-radius: 4px; } &.assistant { align-self: flex-start; background-color: $secondary-color; color: $text-color; border-bottom-left-radius: 4px; } .toggle-info { margin-top: 10px; background-color: transparent; color: $primary-color; border: 1px solid $primary-color; border-radius: 8px; padding: 8px 12px; font-size: 14px; cursor: pointer; transition: $transition; margin-bottom: 16px; &:hover { background-color: rgba($primary-color, 0.1); } } .processing-info { margin-bottom: 12px; padding: 10px 15px; background-color: #f9f9f9; border-radius: 8px; box-shadow: 0 1px 3px $shadow-color; font-size: 14px; .processing-item { margin-bottom: 5px; font-size: 14px; color: $light-text-color; } } .message-content { background-color: inherit; padding: 10px; border-radius: 8px; font-size: 15px; line-height: 1.5; .citation-button { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background-color: rgba(0, 0, 0, 0.1); color: $text-color; font-size: 12px; font-weight: bold; margin-left: 5px; cursor: pointer; transition: $transition; &:hover { background-color: rgba($primary-color, 0.2); color: #fff; } } } } .follow-up-questions { margin-top: 12px; h4 { font-size: 15px; font-weight: 600; margin-bottom: 8px; } .questions-list { display: flex; flex-direction: column; gap: 8px; } .follow-up-button { background-color: #fff; color: $primary-color; border: 1px solid $primary-color; border-radius: 8px; padding: 10px 14px; font-size: 14px; cursor: pointer; transition: $transition; text-align: left; &:hover { background-color: $primary-color; color: #fff; } } } .uploading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, 0.8); display: flex; justify-content: center; align-items: center; z-index: 1000; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @media (max-width: 768px) { .chat-box { border-radius: 0; } .message { max-width: 90%; } }