*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --sz: 15px; --c0: #000; --c1: #333; --primary: #10a37f; --secondary: #1a7f64; --dark: #202123; --light: #f7f7f8; --gray: #343541; --success: #10a37f; --accent: #e5e5e5; --border-radius: 12px; --border-radius-lg: 16px; --box-shadow: 0 0 15px rgba(0, 0, 0, 0.05); --transition: all 0.2s ease; --font-main: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; --bg-gradient: linear-gradient(180deg, #f0f4f9 0%, #ffffff 100%); --message-user: #10a37f; --message-ai: #7f56d9; --message-ai_2: #6731db; --message-ai_3: #5b1ae8; --message-error: #ef4444; } html, body { width: 100%; height: 100vh; overflow: hidden; } html { margin: 0; padding: 0; min-height: 100vh; width: 100vw; background: var(--gray); position: relative; overflow-x: hidden; color: var(--light); } html::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at 20% 30%, rgba(16, 163, 127, 0.05), transparent 40%), radial-gradient(circle at 80% 70%, rgba(127, 86, 217, 0.05), transparent 40%); z-index: -1; } body { margin: 0; padding: 0; min-height: 100vh; background-color: transparent; display: flex; justify-content: center; align-items: center; height: 100vh; width: 100vw; position: fixed; top: 0; left: 0; overflow-x: hidden; font-family: var(--font-main); } #root { width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; position: relative; } .chat-container { font-family: var(--font-main); width: 100%; max-width: 1000px; height: 100vh; margin: 0 auto; background: transparent; overflow: hidden; display: flex; flex-direction: column; justify-content: center; position: relative; z-index: 1; padding-bottom: 100px; } /* Header style for the container */ .chat-container::before { content: 'Which model should I use?'; display: block; padding: 18px; text-align: center; color: var(--light); font-size: 16px; font-weight: 600; background: transparent; position: relative; letter-spacing: 0.3px; } .chat-container::after { display: none; } .message { width: auto; max-width: 90%; margin: 0; padding: 16px 20px; border-radius: var(--border-radius); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); transition: var(--transition); position: relative; overflow: hidden; font-size: 15px; line-height: 1.5; } .message p { margin: 0 0 8px 0; } .message p:last-child { margin-bottom: 0; } /* Add a messages container for scrolling */ .messages-container { flex: 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 20px; scroll-behavior: smooth; height: calc(100% - 280px); min-height: 200px; background: transparent; } .messages-container::-webkit-scrollbar { width: 6px; } .messages-container::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.05); border-radius: 8px; } .messages-container::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.1); border-radius: 8px; } .messages-container::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.15); } .user-message { background: var(--dark); margin-left: auto; border-bottom-right-radius: 4px; color: var(--light); padding-left: 16px; border-left: 3px solid var(--message-user); } .feedback-message { background: var(--dark); margin-right: auto; border-bottom-left-radius: 4px; color: var(--light); max-width: 90%; padding-left: 16px; } /* Enhanced success animation */ @keyframes success-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.03); } 100% { transform: scale(1); } } @keyframes success-glow { 0% { box-shadow: 0 0 0 0 rgba(16, 163, 127, 0.6); } 50% { box-shadow: 0 0 20px rgba(16, 163, 127, 0.4); } 100% { box-shadow: 0 0 0 0 rgba(16, 163, 127, 0); } } .feedback-message.success { border-left: 3px solid var(--message-user); animation: success-pulse 0.7s ease-in-out, success-glow 1.5s ease-in-out infinite; } /* Enhanced error animation */ @keyframes shake { 0%, 100% { transform: translateX(0) rotate(0); } 15% { transform: translateX(-8px) rotate(-1deg); } 30% { transform: translateX(7px) rotate(0.8deg); } 45% { transform: translateX(-6px) rotate(-0.6deg); } 60% { transform: translateX(5px) rotate(0.4deg); } 75% { transform: translateX(-3px) rotate(-0.2deg); } 90% { transform: translateX(2px) rotate(0.1deg); } } @keyframes error-glow { 0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.6); } 50% { box-shadow: 0 0 20px rgba(239, 68, 68, 0.4); } 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); } } .feedback-message.error { border-left: 3px solid var(--message-error); animation: shake 0.7s ease-in-out, error-glow 1.5s ease-in-out infinite; } .error-explanation { font-size: 0.9em; opacity: 0.7; margin-top: 10px; font-style: italic; } .answer-reveal { margin-top: 15px; padding-top: 15px; border-top: 1px solid rgba(255, 255, 255, 0.1); } .reveal-button { margin-top: 15px; padding: 8px 16px; background: transparent; border: 1px solid var(--primary); color: var(--primary); border-radius: var(--border-radius); font-size: 14px; cursor: pointer; transition: var(--transition); } .reveal-button:hover { background: rgba(16, 163, 127, 0.1); } button { flex: 1; padding: 10px 16px; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: var(--border-radius); cursor: pointer; font-size: 14px; font-weight: 500; letter-spacing: 0.3px; transition: var(--transition); position: relative; overflow: hidden; background: var(--dark); color: var(--light); } button:hover { background: rgba(255, 255, 255, 0.05); } button:disabled { opacity: 0.5; cursor: not-allowed; background: rgba(255, 255, 255, 0.05); } .active { background: var(--primary); color: white; border-color: var(--primary); } button:not(.active) { background: var(--dark); color: var(--light); } .not-matching { position: relative; } .not-matching::after { content: 'ERROR'; position: absolute; top: -10px; right: -10px; background: red; color: white; padding: 4px 8px; border-radius: 10px; font-size: 12px; font-weight: bold; } .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.3); display: flex; justify-content: center; align-items: center; z-index: 1000; backdrop-filter: blur(3px); animation: fadeIn 0.4s cubic-bezier(0.4, 0, 0.2, 1); } @keyframes fadeIn { from { opacity: 0; backdrop-filter: blur(0); } to { opacity: 1; backdrop-filter: blur(3px); } } .modal { background: transparent; padding: 40px; max-width: 600px; width: 90%; font-family: var(--font-main); color: var(--light); position: relative; overflow: hidden; text-align: center; animation: slideUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes slideUp { from { transform: translateY(40px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .modal h2 { color: var(--light); margin-bottom: 24px; font-size: 24px; font-weight: 600; letter-spacing: 0.3px; opacity: 0.95; } .modal p { font-size: 16px; line-height: 1.6; margin-bottom: 32px; opacity: 0.9; font-weight: 400; } .modal button { background: var(--primary); color: white; border: none; padding: 12px 24px; border-radius: 8px; font-size: 15px; font-weight: 500; cursor: pointer; transition: all 0.2s ease; width: auto; margin: 0 auto; display: inline-flex; } .modal button:hover { background: var(--secondary); transform: translateY(-1px); } /* ...existing styles... */ .answer-button { position: absolute; right: -75px; top: 50%; transform: translateY(-50%); background: var(--primary); color: white; border: none; height: 36px; padding: 0 16px; border-radius: 8px; font-size: 14px; min-width: auto; } .answer-button:hover { background: var(--secondary); } .chat-input { padding-right: 100px; } /* ...rest of existing styles... */ [data-transform-origin=bottom] .ds-fade-in-zoom-in-enter, [data-transform-origin=bottom] .ds-fade-in-zoom-in-exit { transform-origin: bottom; } [data-transform-origin=bottom\ left] .ds-fade-in-zoom-in-enter, [data-transform-origin=bottom\ left] .ds-fade-in-zoom-in-exit { transform-origin: 0 100%; } [data-transform-origin=bottom\ right] .ds-fade-in-zoom-in-enter, [data-transform-origin=bottom\ right] .ds-fade-in-zoom-in-exit { transform-origin: 100% 100%; } [data-transform-origin=top] .ds-fade-in-zoom-in-enter, [data-transform-origin=top] .ds-fade-in-zoom-in-exit { transform-origin: top; } [data-transform-origin=top\ left] .ds-fade-in-zoom-in-enter, [data-transform-origin=top\ left] .ds-fade-in-zoom-in-exit { transform-origin: 0 0; } [data-transform-origin=top\ right] .ds-fade-in-zoom-in-enter, [data-transform-origin=top\ right] .ds-fade-in-zoom-in-exit { transform-origin: 100% 0; } [data-transform-origin=left] .ds-fade-in-zoom-in-enter, [data-transform-origin=left] .ds-fade-in-zoom-in-exit { transform-origin: 0; } [data-transform-origin=right] .ds-fade-in-zoom-in-enter, [data-transform-origin=right] .ds-fade-in-zoom-in-exit { transform-origin: 100%; } [data-transform-origin=center] .ds-fade-in-zoom-in-enter, [data-transform-origin=center] .ds-fade-in-zoom-in-exit { transform-origin: 50%; } .ds-fade-in-zoom-in-enter { opacity: 0; transform: scale(.96); } .ds-fade-in-zoom-in-active { opacity: 1; transition: opacity var(--ds-ease-in) var(--ds-transition-duration-fast), transform var(--ds-ease-in) var(--ds-transition-duration-fast); transform: scale(1); } .ds-fade-in-zoom-in-exit { opacity: 1; transform: scale(1); } .ds-fade-in-zoom-in-exit-active { opacity: 0; transition: opacity var(--ds-ease-out) var(--ds-transition-duration-fast), transform var(--ds-ease-out) var (--ds-transition-duration-fast); transform: scale(.96); } .standard-button, .answer-button { flex: 1; max-width: 120px; height: 44px; padding: 0 18px; border-radius: var(--border-radius); font-size: 14px; font-weight: 500; display: flex; align-items: center; justify-content: center; transition: var(--transition); } .standard-button { background: rgba(64, 65, 79, 0.9); color: var(--light); border: 1px solid rgba(255, 255, 255, 0.1); } .answer-button { background: var(--primary); color: white; border: none; } .standard-button.active { background: var(--primary); color: white; border-color: var(--primary); box-shadow: 0 0 0 1px rgba(16, 163, 127, 0.2); } .chat-input-container { position: relative; padding: 20px; background: transparent; width: 100%; display: flex; justify-content: center; } .chat-input-wrapper { position: relative; display: flex; flex-direction: column; gap: 12px; width: 100%; max-width: 600px; margin: 0 auto; } .button-group { display: flex; gap: 8px; margin-bottom: 4px; justify-content: center; } .input-with-button { position: relative; display: flex; width: 100%; } .chat-input { width: 100%; min-height: 50px; padding: 14px 16px; border-radius: var(--border-radius); border: 1px solid rgba(255, 255, 255, 0.2); background: rgba(64, 65, 79, 0.3); color: var(--light); font-size: 15px; line-height: 1.5; resize: none; outline: none; transition: var(--transition); font-family: var(--font-main); backdrop-filter: blur(8px); } .chat-input:focus { border-color: var(--primary); background: rgba(64, 65, 79, 0.4); box-shadow: 0 0 0 1px rgba(16, 163, 127, 0.2); } .chat-input::placeholder { color: rgba(255, 255, 255, 0.5); } .standard-button { background: transparent; color: var(--light); border: 1px solid rgba(255, 255, 255, 0.2); padding: 8px 16px; height: 36px; font-size: 13px; border-radius: 8px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); flex: 0 0 auto; min-width: 90px; } .standard-button:hover { transform: translateY(-2px); background: rgba(255, 255, 255, 0.15); border-color: rgba(255, 255, 255, 0.4); } .standard-button.active { animation: none; } .thinking { display: flex; gap: 8px; padding: 16px 20px; background: var(--dark); border-radius: var(--border-radius); margin-right: auto; align-items: center; position: relative; border-left: 3px solid var(--message-ai); padding-left: 16px; overflow: hidden; } .dot { width: 10px; height: 10px; background: rgba(255, 255, 255, 0.8); border-radius: 50%; animation: bounce 1.4s infinite cubic-bezier(0.455, 0.03, 0.515, 0.955); } .dot:nth-child(1) { animation-delay: -0.32s; background: var(--message-ai); } .dot:nth-child(2) { animation-delay: -0.16s; background: var(--message-ai); } .dot:nth-child(3) { animation-delay: 0s; background: var(--message-ai); } @keyframes bounce { 0%, 80%, 100% { transform: scale(0) translateY(0); opacity: 0.3; } 40% { transform: scale(1.2) translateY(-10px); opacity: 1; } } /* ...rest of existing code... */ /* Tooltip styles */ .tooltip-wrapper { position: relative; display: inline-block; } .tooltip { position: absolute; bottom: calc(100% + 10px); left: 50%; transform: translateX(-50%) translateY(15px); background: var(--dark); color: var(--light); padding: 12px 16px; border-radius: 8px; font-size: 13px; width: 200px; text-align: center; opacity: 0; visibility: hidden; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.1); pointer-events: none; z-index: 100; line-height: 1.4; } .tooltip::after { content: ''; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); border: 6px solid transparent; border-top-color: var(--dark); } .tooltip-wrapper:hover .tooltip { transform: translateX(-50%) translateY(0); opacity: 1; visibility: visible; } /* Input typing animation */ @keyframes typing { 0% { width: 0; opacity: 0; } 100% { width: 100%; opacity: 1; } } /* Default state - no animation */ .chat-input { opacity: 1; width: 100%; animation: none; } /* Only animate when new-prompt class is applied */ .chat-input.new-prompt { animation: typing 0.8s ease-out forwards; } /* ...rest of existing styles... */ /* Update button styles for independent selection */ .standard-button.active { background: var(--primary); color: white; border-color: var(--primary); box-shadow: 0 0 0 1px rgba(16, 163, 127, 0.2); } /* Remove the pulse animation from active buttons */ .standard-button.active { animation: none; } /* Message appear animation */ @keyframes messageAppear { 0% { opacity: 0; transform: translateY(20px) scale(0.96); } 100% { opacity: 1; transform: translateY(0) scale(1); } } /* Apply message animation only to user messages */ .user-message.message-appear { animation: messageAppear 0.5s cubic-bezier(0.2, 0.6, 0.3, 1) forwards; } /* Remove message-appear animation from feedback messages that have their own animations */ .feedback-message.success.message-appear { animation: success-pulse 0.7s ease-in-out, success-glow 1.5s ease-in-out infinite; } .feedback-message.error.message-appear { animation: shake 0.7s ease-in-out, error-glow 1.5s ease-in-out infinite; } /* Add a basic appearance for thinking animation */ .thinking.message-appear { animation: messageAppear 0.5s cubic-bezier(0.2, 0.6, 0.3, 1) forwards; } /* ...rest of existing styles... */ /* Corner images */ .corner-image { position: fixed; z-index: 0; pointer-events: none; /* So they don't interfere with interactions */ opacity: 0.7; transition: opacity 0.3s ease; } .corner-image:hover { opacity: 1; } .corner-image-top-left { top: 20px; left: 20px; max-width: 120px; max-height: 120px; animation: floatAnimation 6s ease-in-out infinite; } .corner-image-bottom-right { bottom: 20px; right: 20px; max-width: 140px; max-height: 140px; animation: floatAnimation 8s ease-in-out infinite reverse; } @keyframes floatAnimation { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-15px) rotate(5deg); } 100% { transform: translateY(0) rotate(0deg); } } /* Make sure images don't interfere with mobile layout */ @media (max-width: 768px) { .corner-image { max-width: 80px; max-height: 80px; } .corner-image-top-left { top: 10px; left: 10px; } .corner-image-bottom-right { bottom: 10px; right: 10px; } } /* Company logo in corner */ .company-logo { position: fixed; bottom: 20px; max-width: 280px; /* Much larger size */ max-height: 140px; /* Much larger size */ z-index: 5; opacity: 0.9; transition: opacity 0.3s ease, transform 0.3s ease; } .company-logo:hover { opacity: 1; transform: scale(1.05); /* Slight grow effect on hover */ } /* Make sure logo doesn't interfere with mobile layout */ @media (max-width: 768px) { .company-logo { max-width: 180px; /* Larger but still reasonable for mobile */ max-height: 90px; bottom: 10px; } } /* ...rest of existing styles... */ /* Add specific styling for the input tooltip */ .input-tooltip-wrapper { width: 100%; display: block; } .input-tooltip { width: 250px; bottom: calc(100% + 15px); } /* Ensure tooltip appears over the textarea */ .input-with-button .tooltip-wrapper { position: relative; width: 100%; } /* ...existing styles... */ /* Energy Animation at the top */ .energy-animation { position: fixed; top: -100px; left: 50%; transform: translateX(-50%); background: var(--dark); border-radius: var(--border-radius-lg); padding: 15px 25px; display: flex; align-items: center; gap: 15px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2); z-index: 1000; border: 1px solid rgba(255, 255, 255, 0.1); transition: top 0.6s cubic-bezier(0.2, 0.9, 0.3, 1.5); opacity: 0; } .energy-animation.show { top: 20px; opacity: 1; } .energy-icon { font-size: 28px; animation: pulse 2s infinite; } .energy-text { font-size: 16px; font-weight: 500; color: var(--light); max-width: 260px; } @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.2); opacity: 0.8; } 100% { transform: scale(1); opacity: 1; } } /* Responsive design for the animation */ @media (max-width: 768px) { .energy-animation { width: 90%; padding: 12px 18px; } .energy-text { font-size: 14px; } .energy-icon { font-size: 24px; } } /* ...existing styles... */ /* Message send animation */ @keyframes messageSend { 0% { opacity: 0; transform: translateY(30px) scale(0.9); } 70% { opacity: 1; transform: translateY(-5px) scale(1.02); } 100% { opacity: 1; transform: translateY(0) scale(1); } } .message-send-animation { animation: messageSend 0.7s cubic-bezier(0.2, 0.8, 0.2, 1) forwards; } /* Stagger animations for multiple messages */ .messages-container > div:nth-child(2) { animation-delay: 0.15s; } .messages-container > div:nth-child(3) { animation-delay: 0.3s; } /* ...existing styles... */ /* Company logos in corners - both at the bottom */ .company-logo { position: fixed; bottom: 20px; max-width: 280px; max-height: 140px; z-index: 5; opacity: 0.9; transition: opacity 0.3s ease, transform 0.3s ease; } .company-logo:hover { opacity: 1; transform: scale(1.05); /* Slight grow effect on hover */ } .company-logo-right { right: 20px; } .company-logo-left { left: 20px; } /* Make sure logos don't interfere with mobile layout */ @media (max-width: 768px) { .company-logo { max-width: 180px; max-height: 90px; bottom: 10px; } .company-logo-right { right: 10px; } .company-logo-left { left: 10px; } } /* ...existing styles... */