/* --- START OF FILE styles.css --- */ /* Global styles */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important; /* Windows standard font */ } body { background-color: #f5f5f7; color: #1d1d1f; min-height: 100vh; display: flex; flex-direction: column; overflow-x: hidden; /* Prevent horizontal scroll */ } .header { background-color: rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); text-align: center; padding: 1rem 0; border-bottom: 1px solid rgba(0, 0, 0, 0.05); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.02); position: sticky; top: 0; z-index: 100; } h1 { font-size: 1.5rem; font-weight: 500; letter-spacing: 0.5px; color: #1d1d1f; } h2 { font-size: 1.25rem; font-weight: 500; color: #1d1d1f; margin-bottom: 1.5rem; text-align: center; } /* Layout reorganization - Move SQL gallery to left and balance sizes */ .main-container { display: flex; flex-direction: row; align-items: flex-start; justify-content: space-between; flex: 1; padding: 1rem 2rem; max-width: 1600px; margin: 0 auto; width: 100%; gap: 1rem; } /* Left sidebar with both galleries */ .sidebar-container { display: flex; flex-direction: column; width: 12% !important; /* Adjusted */ max-width: 180px !important; /* Added */ gap: 1rem; background-color: transparent; border-radius: 0; box-shadow: none; padding: 0.75rem; } .prompt-gallery, .sql-prompt-gallery { width: 100% !important; max-width: none !important; margin: 0; padding: 0; background-color: transparent; box-shadow: none; text-align: center; margin-bottom: 1rem; } /* Regular prompts at top of sidebar */ .prompt-gallery { width: 100% !important; max-width: none !important; margin: 0; padding: 0; background-color: transparent; box-shadow: none; text-align: center; margin-bottom: 1rem; } .prompt-gallery h3 { font-size: 0.9rem; font-weight: 500; color: #333; margin-bottom: 0.75rem; } .prompt-suggestions { display: flex; flex-direction: column; justify-content: flex-start; gap: 0.5rem; } .prompt-suggestion { background-color: transparent; color: #0071e3; border: none; border-radius: 20px; padding: 0.5rem 0.75rem; font-size: 0.8rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; text-align: left; } .prompt-suggestion:hover { background-color: rgba(0, 113, 227, 0.1); transform: translateY(-1px); } /* SQL gallery below regular prompts in sidebar */ .sql-prompt-gallery { width: 100% !important; margin-top: 0 !important; /* Reset margin-top */ padding: 0; /* Remove padding from individual gallery */ background-color: transparent; /* Already transparent, ensure it stays this way */ box-shadow: none; /* Already none, ensure it stays this way */ text-align: center; } .sql-prompt-gallery h3 { font-size: 0.9rem; font-weight: 500; color: #333; margin-bottom: 0.75rem; } /* Make SQL suggestions display vertically like regular prompts */ .sql-prompt-suggestions { display: flex; flex-direction: column !important; flex-wrap: nowrap !important; justify-content: flex-start !important; gap: 0.5rem; } .sql-prompt-suggestion { background-color: transparent; color: #005bb5; border: none; border-radius: 20px; padding: 0.5rem 0.75rem; font-size: 0.8rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; text-align: left !important; } .sql-prompt-suggestion:hover { background-color: rgba(0, 91, 181, 0.1); transform: translateY(-1px); } /* Balance info display and chat transcript sizes */ .info-display-container { width: 60% !important; /* Changed from 40% */ max-width: none !important; display: flex; flex-direction: column; gap: 1rem; } .info-display { height: 90vh !important; /* Changed from 80vh */ min-height: 800px !important; /* Changed from 700px */ max-height: 90vh !important; /* Changed from 80vh */ padding: 1.25rem !important; background-color: white; border-radius: 1.5rem !important; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.1) !important; overflow: hidden; display: flex; flex-direction: column; flex-grow: 1; } .chat-box-container { width: 30% !important; /* Adjusted from 40% to compensate */ max-width: none !important; display: flex; flex-direction: column; background-color: white; border-radius: 1.5rem !important; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.1) !important; padding: 1.25rem !important; height: 85vh !important; /* Changed from 80vh */ min-height: 800px !important; /* Changed from 700px */ max-height: 85vh !important; /* Changed from 80vh */ overflow: hidden; } .robot-interface { width: 14% !important; /* Adjusted from 16% to compensate */ display: flex; flex-direction: column; align-items: center; position: relative; } #info-container { flex-grow: 1; max-height: calc(100% - 8rem); /* Account for file upload control */ overflow-y: auto; padding-right: 0.5rem; scrollbar-width: thin; padding-bottom: 1rem; } .info-card { background-color: #f5f5f7; border-radius: 0.75rem; padding: 0.75rem; margin-bottom: 0.5rem; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); border-left: 3px solid #0071e3; transition: all 0.3s ease; opacity: 0; transform: translateY(20px); } .info-card.show { opacity: 1; transform: translateY(0); } .info-card p { margin-bottom: 0.2rem; color: #424245; font-size: 0.85rem; line-height: 1.5; } .event-tag { display: inline-block; padding: 0.15rem 0.5rem; border-radius: 4px; font-size: 0.6rem; font-weight: 600; letter-spacing: 0.5px; margin-bottom: 0.4rem; text-transform: uppercase; background-color: rgba(0, 113, 227, 0.08); color: #0071e3; } .event-tag.amount { background-color: rgba(46, 204, 113, 0.15); color: #2ecc71; } .event-tag.count { background-color: rgba(52, 152, 219, 0.15); color: #3498db; } .event-tag.drug { background-color: rgba(155, 89, 182, 0.08); color: #9b59b6; } .event-tag.recipient { background-color: rgba(230, 126, 34, 0.08); color: #e67e22; } .event-tag.company { background-color: rgba(241, 196, 15, 0.08); color: #f1c40f; } .event-tag.state { background-color: rgba(26, 188, 156, 0.15); color: #1abc9c; } .event-tag.error { background-color: rgba(231, 76, 60, 0.15); color: #e74c3c; } .event-tag.success { background-color: rgba(46, 204, 113, 0.15); color: #2ecc71; } .event-tag.info { background-color: rgba(108, 117, 125, 0.15); color: #6c757d; } .event-tag.file { background-color: rgba(40, 167, 69, 0.15); color: #28a745; } .event-tag.sql { background-color: rgba(0, 113, 227, 0.15); color: #0071e3; } .event-tag.pptx { background-color: rgba(209, 68, 36, 0.15); color: #d14424; } .info-card h3 { font-size: 1rem; margin-bottom: 0.3rem; color: #1d1d1f; font-weight: 600; } .robot-container { width: 260px; height: 320px; position: relative; margin: 1rem auto; animation: breathe 3s infinite ease-in-out; margin-bottom: 2rem; /* Added for spacing */ } .robot-antenna { position: absolute; width: 6px; height: 36px; background-color: #333; top: 0; left: 50%; transform: translateX(-50%); border-radius: 3px; z-index: 1; } .robot-antenna-dot { position: absolute; width: 16px; height: 16px; background-color: #0071e3; border-radius: 50%; top: 34px; left: 50%; transform: translateX(-50%); z-index: 2; } .robot-head { position: absolute; width: 160px; height: 140px; background-color: white; border: 4px solid #e1e1e6; border-radius: 1.5rem; top: 48px; left: 50%; transform: translateX(-50%); z-index: 2; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1); } .robot-eye { position: absolute; width: 36px; height: 36px; background-color: #0071e3; border-radius: 50%; top: 36px; animation: pulsate 2s infinite; } .robot-eye.left { left: 30px; } .robot-eye.right { right: 30px; } /* Original .robot-mouth, .robot-mouth:hover, .robot-container.talking .robot-mouth are replaced by enhanced versions later */ .robot-body { position: absolute; width: 180px; height: 120px; background-color: #f5f5f7; border: 4px solid #e1e1e6; border-radius: 1.5rem; top: 190px; left: 50%; transform: translateX(-50%); z-index: 1; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08); } .robot-indicator { width: 24px !important; /* Increase from original 16px */ height: 24px !important; /* Increase from original 16px */ top: 15px !important; /* Adjust position as needed */ right: 15px !important; /* Adjust position as needed */ box-shadow: 0 0 12px rgba(0, 0, 0, 0.2) !important; /* Enhanced shadow */ z-index: 10 !important; /* Ensure it's visible */ position: absolute; background-color: #86868b; border-radius: 50%; transition: background-color 0.3s ease, box-shadow 0.3s ease; } .robot-chest-pattern { position: absolute; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; top: 24px; left: 24px; } .pattern-dot { width: 24px; height: 24px; background-color: #d1d1d6; border-radius: 6px; } .robot-container.listening .robot-eye { background-color: #34c759; animation: pulsate 2s infinite; } .robot-container.listening .robot-indicator { background-color: #34c759 !important; /* Green for listening */ box-shadow: 0 0 15px rgba(52, 199, 89, 0.8) !important; /* Enhanced glow effect */ } /* .robot-container.talking .robot-mouth replaced by enhanced version later */ .robot-container.talking .robot-eye { animation: blink 0.5s infinite alternate; background-color: #ff3b30; } .robot-container.talking .robot-indicator { background-color: #ff3b30 !important; /* Red for talking */ box-shadow: 0 0 15px rgba(255, 59, 48, 0.8) !important; /* Enhanced glow effect */ } .robot-container.thinking .robot-eye { animation: thinking 1.5s infinite; } .robot-container.thinking .robot-indicator { background-color: #ff9500 !important; /* Orange for thinking */ box-shadow: 0 0 15px rgba(255, 149, 0, 0.8) !important; /* Enhanced glow effect */ animation: jump 0.8s infinite alternate !important; /* Keep the animation */ } .robot-container.thinking .robot-chest-pattern .pattern-dot { animation: glow 2s infinite; animation-delay: calc(var(--dot-index, 0) * 0.2s); } .robot-container.thinking .pattern-dot:nth-child(1) { --dot-index: 0; } .robot-container.thinking .pattern-dot:nth-child(2) { --dot-index: 1; } .robot-container.thinking .pattern-dot:nth-child(3) { --dot-index: 2; } .robot-container.thinking .pattern-dot:nth-child(4) { --dot-index: 3; } .robot-container.thinking .pattern-dot:nth-child(5) { --dot-index: 4; } .robot-container.thinking .pattern-dot:nth-child(6) { --dot-index: 5; } .thought-bubble-container { position: absolute; top: 100px; right: -100px; z-index: 100; width: 220px; } .thought-bubble { background-color: #f0f8ff; border-radius: 1.25rem; padding: 1rem; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); position: relative; text-align: center; border: 2px solid #0071e3; } #thought-content { display: block; margin-bottom: 8px; font-weight: 500; color: #0071e3; } .thinking-dots { display: flex; justify-content: center; gap: 6px; margin-top: 8px; } .thinking-dots .dot { width: 10px; height: 10px; background-color: #0071e3; border-radius: 50%; animation: dotPulse 1.5s infinite; } .thinking-dots .dot:nth-child(2) { animation-delay: 0.2s; } .thinking-dots .dot:nth-child(3) { animation-delay: 0.4s; } .thinking-animation { animation: float 3s ease-in-out infinite; } .chart-container { width: 100%; height: 380px; margin: 1rem 0; border-radius: 0.75rem; overflow: hidden; background-color: #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); border: 1px solid #f0f0f0; position: relative; padding: 1rem; } .chart-container svg { overflow: visible; } .chart-container text { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } .bar { transition: all 0.3s ease; cursor: pointer; } .bar:hover { filter: brightness(1.1); } .pie-segment { transition: all 0.3s ease; cursor: pointer; } .pie-segment:hover { transform: scale(1.05); filter: brightness(1.05); } .bar-label { font-size: 12px; font-weight: 500; text-anchor: middle; fill: #666; pointer-events: none; } .axis-label { font-size: 14px; font-weight: 600; text-anchor: middle; fill: #333; } #chart-tooltip { position: absolute; background-color: rgba(33, 37, 41, 0.9); color: white; padding: 8px 12px; border-radius: 6px; font-size: 12px; pointer-events: none; z-index: 1000; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); opacity: 0; transform: translateY(10px); transition: opacity 0.2s ease, transform 0.2s ease; white-space: nowrap; } .info-card.visualization { border-left: 5px solid #4caf50; padding: 1.5rem; background-color: white; border-radius: 12px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); margin-bottom: 1.5rem; max-width: 90%; margin-left: auto; margin-right: auto; } .info-card.visualization h3 { text-align: center; font-size: 1.3rem; font-weight: 600; color: #2c3e50; margin-bottom: 0.5rem; } .info-card.visualization .chart-container { margin-top: 0.75rem; box-shadow: none; border: none; padding: 0; } .chart-controls { display: flex; justify-content: center; gap: 0.75rem; margin-top: 1rem; } .chart-control-button { background-color: #f8f9fa; border: 1px solid #dee2e6; border-radius: 20px; padding: 0.5rem 1rem; font-size: 0.85rem; color: #495057; cursor: pointer; transition: all 0.2s ease; display: inline-flex; align-items: center; gap: 0.3rem; } .chart-control-button svg { width: 14px; height: 14px; } .chart-control-button:hover { background-color: #e9ecef; border-color: #ced4da; } .chart-control-button.active { background-color: #0071e3; color: white; border-color: #0071e3; } .chart-control-button.active svg { fill: white; } @keyframes pulsate { 0% { background-color: #0071e3; transform: scale(1); } 50% { background-color: #409cff; transform: scale(1.1); } 100% { background-color: #0071e3; transform: scale(1); } } @keyframes talk { 0% { height: 6px; } 50% { height: 14px; } 100% { height: 6px; } } @keyframes thinking { 0% { background-color: #0071e3; transform: scale(1) translateX(0); } 25% { background-color: #ff9500; transform: scale(1.05) translateX(-2px); } 50% { background-color: #0071e3; transform: scale(1.1) translateX(2px); } 75% { background-color: #ff9500; transform: scale(1.05) translateX(-1px); } 100% { background-color: #0071e3; transform: scale(1) translateX(0); } } @keyframes glow { from { box-shadow: 0 0 10px rgba(48, 207, 208, 0.8); } to { box-shadow: 0 0 20px rgba(48, 207, 208, 1); } } @keyframes dotPulse { 0% { transform: scale(1); opacity: 0.7; } 50% { transform: scale(1.5); opacity: 1; } 100% { transform: scale(1); opacity: 0.7; } } @keyframes float { 0% { transform: translateY(0px); } 50% { transform: translateY(-5px); } 100% { transform: translateY(0px); } } @keyframes blink { from { opacity: 1; } to { opacity: 0.6; } } @keyframes jump { 0% { transform: translateY(0); } 100% { transform: translateY(-4px); } } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(52, 199, 89, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(52, 199, 89, 0); } 100% { box-shadow: 0 0 0 0 rgba(52, 199, 89, 0); } } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInSuccess { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes knowledge-bounce { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1.0); } } @keyframes knowledge-pulse { 0% { transform: scale(1) translateX(-50%); opacity: 1; } 50% { transform: scale(1.2) translateX(-45%); opacity: 0.8; } 100% { transform: scale(1) translateX(-50%); opacity: 1; } } @keyframes knowledge-blink { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } @keyframes knowledge-glow { 0% { background-color: #e9d8fd; } 50% { background-color: #d6a2e8; } 100% { background-color: #e9d8fd; } } @keyframes jiggle { 0% { transform: translateX(0) scale(1); } 25% { transform: translateX(-3px) scale(1.1); } 50% { transform: translateX(3px) scale(1.15); } 75% { transform: translateX(-2px) scale(1.1); } 100% { transform: translateX(0) scale(1); } } .status-container { display: none !important; /* Hide completely */ } #status-indicator { width: 16px; height: 16px; border-radius: 50%; margin: 0 auto; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); transition: all 0.3s ease; } #status-indicator.idle { background-color: #86868b; } #status-indicator.listening { background-color: #34c759; box-shadow: 0 0 10px rgba(52, 199, 89, 0.6); } #status-indicator.speaking { background-color: #ff3b30; box-shadow: 0 0 10px rgba(255, 59, 48, 0.6); } #status-indicator.thinking { background-color: #ff9500; box-shadow: 0 0 10px rgba(255, 149, 0, 0.6); animation: jump 0.8s infinite alternate; } #status-indicator.voice-detected { transform: scale(1.3); transition: transform 0.15s ease; } .status-text { display: none; } .controls { display: none !important; /* Remove controls area */ } .primary-button, .secondary-button, .media-button, .save-button, .danger-button { display: flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.75rem 1.5rem; border-radius: 20px; font-size: 0.95rem; font-weight: 500; border: none; cursor: pointer; transition: all 0.2s ease; min-width: 180px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .primary-button { background-color: #0071e3; color: white; } .primary-button:hover { background-color: #0077ed; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 113, 227, 0.3); } .secondary-button { background-color: #333; color: white; } .secondary-button:hover { background-color: #444; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); } .danger-button { background-color: #e74c3c; color: white; } .danger-button:hover { background-color: #c0392b; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(231, 76, 60, 0.3); } .button-icon { width: 20px; height: 20px; display: inline-block; background-size: contain; background-repeat: no-repeat; background-position: center; } .mic-icon { background-image: url('data:image/svg+xml;utf8,'); } .stop-icon { background-image: url('data:image/svg+xml;utf8,'); } .settings-icon { background-image: url('data:image/svg+xml;utf8,'); } .stop-ai-icon { background-image: url('data:image/svg+xml;utf8,'); } .upload-icon { background-image: url('data:image/svg+xml;utf8,'); } .upgrade-icon { background-image: url('data:image/svg+xml;utf8,'); width: 18px; height: 18px; } .restart-icon { background-image: url('data:image/svg+xml;utf8,'); width: 18px; height: 18px; } .refresh-icon { width: 16px; height: 16px; background-image: url('data:image/svg+xml;utf8,'); background-size: contain; background-repeat: no-repeat; background-position: center; } .send-icon { background-image: url('data:image/svg+xml;utf8,'); width: 20px; height: 20px; } .settings-panel, .user-info-panel { background-color: white; border-radius: 1rem; padding: 1.5rem; width: 100%; max-width: 500px; margin-top: 1.5rem; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1); } .settings-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; } .settings-header h3 { font-size: 1.25rem; font-weight: 500; color: #1d1d1f; } .close-button { background: none; border: none; font-size: 1.75rem; color: #86868b; cursor: pointer; min-width: auto; padding: 0; transition: color 0.2s ease; } .close-button:hover { color: #fa324c; background: none; transform: none; box-shadow: none; } .settings-content { display: flex; flex-direction: column; gap: 1rem; } .settings-group { margin-bottom: 1rem; } .settings-content h4 { font-size: 1.125rem; font-weight: 500; color: #1d1d1f; margin: 1.5rem 0 0.75rem; } label { display: block; margin-bottom: 0.5rem; font-weight: 500; font-size: 0.95rem; color: #424245; } select, input { width: 100%; padding: 0.875rem 1rem; border-radius: 0.75rem; border: 1px solid #d2d2d7; font-size: 1rem; margin-bottom: 0.5rem; background-color: white; transition: border-color 0.2s ease; } select:focus, input:focus { outline: none; border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.1); } .range-container { display: flex; align-items: center; gap: 1rem; } input[type="range"] { margin-bottom: 0; flex: 1; } #rate-value { min-width: 2.5rem; text-align: center; font-weight: 500; } .save-button { background-color: #0071e3; color: white; width: 100%; margin-top: 1rem; } .save-button:hover { background-color: #0077ed; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 113, 227, 0.4); } .media-player { margin-top: 1rem; width: 100%; border-radius: 0.75rem; overflow: hidden; display: none; } audio, video { width: 100%; border-radius: 0.5rem; background-color: #f5f5f7; } video { max-height: 240px; background-color: #000; } .file-upload-controls { display: flex; gap: 1rem; z-index: 10; margin-top: auto; padding-top: 1.5rem; justify-content: center; } .file-upload-button { flex: 1; max-width: 180px; display: flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.75rem 1.5rem; border-radius: 20px; font-size: 1rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; background-color: #0071e3; color: white; box-shadow: 0 2px 8px rgba(0, 113, 227, 0.2); } .file-upload-button:hover { background-color: #0077ed; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 113, 227, 0.3); } .file-info { font-size: 0.9rem; color: #0071e3; margin-top: 0.5rem; display: flex; align-items: center; gap: 0.5rem; } .file-info-icon { width: 16px; height: 16px; display: inline-block; background-size: contain; background-repeat: no-repeat; background-position: center; } .csv-icon { background-image: url('data:image/svg+xml;utf8,'); } .pdf-icon { background-image: url('data:image/svg+xml;utf8,'); } .info-card.file-upload { border-left: 4px solid #34c759; } .info-card.key-info { border-left: 4px solid #ff9500; background-color: #fff8f0; } .key-info-list { list-style: none; padding: 0; margin: 0.5rem 0; display: flex; flex-wrap: wrap; gap: 0.5rem; } .info-item { display: inline-block; padding: 0.35rem 0.75rem; border-radius: 1rem; font-weight: 600; font-size: 0.95rem; margin: 0; } .info-item.number { background-color: #e3f2fd; color: #0071e3; } .info-item.money { background-color: #e8f5e9; color: #4caf50; } .info-item.percentage { background-color: #f3e5f5; color: #9c27b0; } .info-item.date { background-color: #fff8e1; color: #ff9800; } .info-item.name { background-color: #e8eaf6; color: #3f51b5; } .info-item.text { background-color: #e0e0e0; color: #424242; } .info-item.id { background-color: #fce4ec; color: #e91e63; } .info-context { display: none; } .info-card.query-result { padding: 0.9rem; text-align: center; max-width: 280px; margin: 0.5rem auto 0.75rem; background-color: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); border: none; border-left: 3px solid #0071e3; transition: all 0.2s ease; animation: slideInCard 0.25s ease-out; } .info-card.query-result .query-content { font-size: 1.3rem; font-weight: 500; margin-top: 0.3rem; word-break: break-word; color: #2c3e50; line-height: 1.2; } .info-card.query-result.type-amount { border-left-color: #2ecc71; } .info-card.query-result.type-amount .query-content { color: #27ae60; } .info-card.query-result.type-count { border-left-color: #3498db; } .info-card.query-result.type-count .query-content { color: #2980b9; } .info-card.query-result.type-drug { border-left-color: #685c6d; } .info-card.query-result.type-drug .query-content { color: #8e44ad; } .info-card.query-result.type-recipient { border-left-color: #e67e22; } .info-card.query-result.type-recipient .query-content { color: #d35400; } .info-card.query-result.type-company { border-left-color: #f1c40f; } .info-card.query-result.type-company .query-content { color: #f39c12; } .info-card.query-result.type-state { border-left-color: #1abc9c; } .info-card.query-result.type-state .query-content { color: #16a085; } .info-card.query-result.type-date { border-left-color: #1abc9c; } .info-card.query-result.type-date .query-content { color: #16a085; } .info-card.query-result.type-error { border-left-color: #e74c3c; background-color: #fff8f8; } .info-card.query-result.type-error .query-content { color: #c0392b; } .info-card.query-result.type-success { border-left-color: #2ecc71; background-color: #f8fff8; } .info-card.query-result.type-success .query-content { color: #27ae60; } .info-card.query-result:hover { transform: translateY(-3px); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1); } .info-card.welcome { background-color: white; border-radius: 12px; border: none; padding: 2rem; text-align: center; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); border-left: none; } .welcome-content h3 { font-size: 1.5rem; font-weight: 500; color: #1d1d1f; margin-bottom: 0.5rem; } .welcome-content p { font-size: 1rem; color: #6e6e73; margin-bottom: 0.5rem; max-width: 400px; margin-left: auto; margin-right: auto; } .upload-hint { margin-top: 1rem; font-size: 0.9rem; color: #0071e3; } #welcome-card.hidden { display: none; } .speech-bubble { position: absolute; bottom: -55px; left: 50%; transform: translateX(-50%); background-color: #4CAF50; color: white; padding: 0.75rem 1.25rem; border-radius: 1rem; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); z-index: 50; opacity: 0; transition: opacity 0.4s ease, transform 0.4s ease; white-space: nowrap; font-size: 0.9rem; font-weight: 500; } .speech-bubble::after { content: ''; position: absolute; top: -10px; left: 50%; transform: translateX(-50%); border-width: 0 10px 10px 10px; border-style: solid; border-color: transparent transparent #4CAF50 transparent; } .speech-bubble.show-bubble { opacity: 1; transform: translateX(-50%) translateY(-10px); } #stop-button { display: none !important; /* Hide the stop button visually, we'll use the mouth instead */ } #start-button { display: none !important; } #start-listening-btn { display: none !important; } .sql-code-info-card { background-color: #f8f9fa; border-radius: 12px; padding: 1rem; margin-bottom: 1rem; text-align: left; border-left: 5px solid #0071e3; opacity: 1 !important; transform: translateY(0) !important; } .sql-code-info-card h3 { font-size: 1rem; font-weight: 500; color: #333; margin-bottom: 0.5rem; } .sql-code-display { background-color: #282c34; color: #abb2bf; padding: 0.75rem; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', monospace; font-size: 0.85rem; line-height: 1.4; white-space: pre; } .sql-code-info-card .sql-action-button { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.4rem 0.8rem; border-radius: 6px; font-size: 0.8rem; font-weight: 500; border: none; cursor: pointer; transition: all 0.2s ease; } .sql-code-info-card .sql-action-button:hover { transform: translateY(-1px); } .sql-code-info-card .sql-action-button:first-of-type { background-color: #0071e3; color: white; } .sql-code-info-card .sql-action-button:first-of-type:hover { background-color: #0077ed; } .sql-code-info-card .sql-action-button.execute { background-color: #28a745; color: white; } .sql-code-info-card .sql-action-button.execute:hover { background-color: #218838; } .sql-code-info-card .sql-action-button .button-icon.copy-icon { background-image: url('data:image/svg+xml;utf8,'); width: 16px; height: 16px; display: inline-block; background-size: contain; background-repeat: no-repeat; background-position: center; vertical-align: middle; margin-right: 4px; } .top-controls { position: absolute; top: 20px; right: 20px; z-index: 100; } .upgrade-button { background-color: #ff9500; color: white; padding: 0.6rem 1.2rem; border-radius: 20px; font-size: 0.9rem; font-weight: 600; border: none; cursor: pointer; display: flex; align-items: center; gap: 0.5rem; box-shadow: 0 2px 10px rgba(255, 149, 0, 0.3); transition: all 0.3s ease; } .upgrade-button:hover { background-color: #ff8000; transform: translateY(-2px); box-shadow: 0 4px 15px rgba(255, 149, 0, 0.5); } .robot-message { position: absolute; top: 100px; left: 50%; transform: translateX(-50%); width: 80%; max-width: 500px; background-color: rgba(0, 0, 0, 0.7); color: white; padding: 1rem 1.5rem; border-radius: 12px; text-align: center; font-style: italic; font-size: 0.9rem; line-height: 1.5; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); z-index: 100; animation: fadeIn 1s ease-out; } .robot-container.upgraded .robot-head { background: linear-gradient(135deg, #2b5876, #4e4376); border: 4px solid #30cfd0; box-shadow: 0 0 20px rgba(48, 207, 208, 0.5); } .robot-container.upgraded .robot-body { background: linear-gradient(135deg, #4e4376, #2b5876); border: 4px solid #30cfd0; box-shadow: 0 0 20px rgba(48, 207, 208, 0.5); } .robot-container.upgraded .robot-antenna { background-color: #30cfd0; } .robot-container.upgraded .robot-antenna-dot { background-color: #7F5A83; box-shadow: 0 0 15px rgba(127, 90, 131, 0.8); animation: pulse 2s infinite; } .robot-container.upgraded .robot-eye { background-color: #30cfd0; box-shadow: 0 0 15px rgba(48, 207, 208, 0.8); animation: glow 2s infinite alternate; } .robot-container.upgraded .robot-mouth { background-color: #7F5A83; height: 8px; border-radius: 4px; } .robot-container.upgraded .robot-indicator { background-color: #30cfd0; box-shadow: 0 0 10px rgba(48, 207, 208, 0.8); } .robot-container.upgraded .pattern-dot { background-color: #7F5A83; box-shadow: 0 0 10px rgba(127, 90, 131, 0.5); animation: dotPulse 2s infinite; animation-delay: calc(var(--dot-index, 0) * 0.2s); } /* Updated file and knowledge indicators */ /* .file-indicator and .knowledge-indicator styles are now part of .under-robot-indicators */ .file-indicator .file-icon { width: 16px; /* Updated */ height: 16px; /* Updated */ display: inline-block; margin-right: 6px; /* Updated */ vertical-align: middle; background-size: contain; background-repeat: no-repeat; background-position: center; } .file-indicator .csv-icon { background-image: url('data:image/svg+xml;utf8,'); } .file-indicator .pdf-icon { background-image: url('data:image/svg+xml;utf8,'); } .file-indicator .pptx-icon { background-image: url('data:image/svg+xml;utf8,'); } .file-indicator .docx-icon { background-image: url('data:image/svg+xml;utf8,'); } .knowledge-indicator .knowledge-icon { width: 16px; /* Updated */ height: 16px; /* Updated */ display: inline-block; margin-right: 6px; /* Updated */ vertical-align: middle; background-size: contain; background-repeat: no-repeat; background-position: center; } .knowledge-indicator .clinical-icon { background-image: url('data:image/svg+xml;utf8,'); } .speech-bubble.knowledge-prompt { background-color: #e9d8fd; border-color: #c5a5f5; color: #9d59c4; display: flex; flex-direction: column; align-items: center; text-align: center; bottom: -70px; min-width: 280px; max-width: 300px; white-space: normal; padding: 0.8rem 1rem; } .speech-bubble.knowledge-prompt::after { border-color: transparent transparent #e9d8fd transparent; } .knowledge-prompt .bubble-buttons { margin-top: 0.5rem; display: flex; gap: 0.5rem; } .knowledge-prompt .bubble-button { background-color: white; border: 1px solid #c5a5f5; color: #5a32a3; padding: 0.3rem 0.7rem; font-size: 0.8rem; border-radius: 15px; cursor: pointer; transition: all 0.2s ease; } .knowledge-prompt .bubble-button:hover { background-color: #f8f0ff; transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .knowledge-prompt .yes-button { border-color: #6f42c1; color: #6f42c1; } .knowledge-prompt .no-button { border-color: #888; color: #555; } .knowledge-loading-indicator { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); display: flex; gap: 5px; z-index: 60; } .knowledge-loading-circle { width: 8px; height: 8px; background-color: #d6a2e8; border-radius: 50%; animation: knowledge-bounce 1.4s infinite ease-in-out both; } .knowledge-loading-circle:nth-child(1) { animation-delay: -0.32s; } .knowledge-loading-circle:nth-child(2) { animation-delay: -0.16s; } .robot-container.loading-knowledge .robot-antenna-dot { background-color: #d6a2e8; animation: knowledge-pulse 1.5s infinite; } .robot-container.loading-knowledge .robot-eye { background-color: #d6a2e8; animation: knowledge-blink 1.5s infinite; } .robot-container.loading-knowledge .robot-indicator { background-color: #d6a2e8; } .robot-container.loading-knowledge .pattern-dot:nth-child(odd) { animation: knowledge-glow 2s infinite; } .robot-container.loading-knowledge .pattern-dot:nth-child(even) { animation: knowledge-glow 2s infinite; animation-delay: 0.5s; } .prompt-gallery.visible, .sql-prompt-gallery.visible { opacity: 1; transform: translateY(0); } .prompt-suggestion.visible, .sql-prompt-suggestion.visible { opacity: 1; transform: translateX(0); } .robot-container.clinical-loaded .robot-head { background: linear-gradient(135deg, #f8f8f9, #f0f0f2); border: 4px solid #e8e6f0; box-shadow: 0 0 10px rgba(0, 0, 0, 0.08); } .robot-container.clinical-loaded .robot-body { background: linear-gradient(135deg, #f0f0f2, #f8f8f9); border: 4px solid #e8e6f0; box-shadow: 0 0 10px rgba(0, 0, 0, 0.08); } .robot-container.clinical-loaded .robot-antenna { background-color: #9b9baa; } .robot-container.clinical-loaded .robot-antenna-dot { background-color: #c5c5d0; box-shadow: 0 0 8px rgba(197, 197, 208, 0.4); } .robot-container.clinical-loaded .robot-eye { background-color: #9b9baa; box-shadow: 0 0 8px rgba(155, 155, 170, 0.4); } .robot-container.clinical-loaded .robot-indicator { background-color: #9b9baa; box-shadow: 0 0 6px rgba(155, 155, 170, 0.4); } .robot-container.clinical-loaded .pattern-dot { background-color: #c5c5d0; box-shadow: 0 0 6px rgba(197, 197, 208, 0.3); } .status-indicator.voice-active { animation: jiggle 0.2s ease-in-out !important; } .sql-action-button.databricks { background-color: #FF3621 !important; color: white !important; } .sql-action-button.databricks:hover { background-color: #E32111 !important; transform: translateY(-1px) !important; box-shadow: 0 2px 5px rgba(255, 54, 33, 0.3) !important; } .sql-action-button.cloud { background-color: #4285F4 !important; color: white !important; padding: 0.4rem 0.8rem !important; font-size: 0.8rem !important; border-radius: 6px !important; border: none !important; cursor: pointer !important; transition: all 0.2s ease !important; display: inline-flex !important; align-items: center !important; gap: 0.3rem !important; } .sql-action-button.cloud:hover { background-color: #3367D6 !important; transform: translateY(-1px) !important; box-shadow: 0 2px 5px rgba(66, 133, 244, 0.3) !important; } .sql-action-button .cloud-icon { background-image: url('data:image/svg+xml;utf8,'); width: 16px; height: 16px; display: inline-block; background-size: contain; background-repeat: no-repeat; background-position: center; vertical-align: middle; margin-right: 4px; } .upload-success-message { animation: fadeInSuccess 0.5s ease forwards; } .chat-box-container h3 { padding: 0.75rem 1rem; margin: 0; border-bottom: 1px solid #f0f0f5; font-size: 1.25rem !important; font-weight: 600 !important; text-align: center; color: #333 !important; margin-bottom: 1rem !important; } .chat-controls { display: flex; padding: 0.75rem; gap: 0.5rem; border-bottom: 1px solid #f0f0f5; background-color: #f8f9fa; justify-content: flex-end; margin-bottom: 0.75rem !important; } .speech-control-button { flex: 2; padding: 0.75rem 1rem; background-color: #34c759; color: white; border: none; border-radius: 1.5rem; cursor: pointer; font-size: 1rem; font-weight: 500; display: flex; align-items: center; justify-content: center; gap: 0.5rem; transition: all 0.2s ease; } .speech-control-button:hover { background-color: #2fb350; transform: translateY(-1px); box-shadow: 0 4px 8px rgba(52, 199, 89, 0.2); } .speech-control-button.active { background-color: #ff3b30; } .speech-control-button.active .button-icon.mic-icon { animation: pulse 1.5s infinite; } .speech-control-button.thinking { background-color: #ff9500; } .restart-button { flex: 1; padding: 0.75rem 1.25rem !important; background-color: #dc3545 !important; color: white; border: none; border-radius: 1.5rem; cursor: pointer; font-size: 1rem !important; font-weight: 500 !important; display: flex; align-items: center; justify-content: center; gap: 0.5rem; transition: all 0.2s ease !important; } .restart-button:hover { background-color: #c82333 !important; transform: translateY(-2px) !important; box-shadow: 0 4px 8px rgba(220, 53, 69, 0.3) !important; } .chat-messages { flex: 1; overflow-y: auto; padding: 1.25rem !important; display: flex; flex-direction: column; gap: 1rem !important; background-color: #f8f9fb; border-radius: 1rem; margin: 0.75rem 0 !important; max-height: calc(100% - 8rem); /* Account for header and input */ scrollbar-width: thin; } .transcript-placeholder { text-align: center; color: #666 !important; padding: 2rem !important; font-style: italic; font-size: 1.1rem !important; } .chat-message { padding: 1rem 1.25rem !important; border-radius: 1.25rem !important; max-width: 90% !important; position: relative; animation: fadeIn 0.3s ease-out; font-size: 1.1rem !important; line-height: 1.5 !important; margin-bottom: 0.75rem; } .chat-message.user { align-self: flex-end; background-color: #e1f5fe; border-bottom-right-radius: 0.25rem; color: #0071e3; } .chat-message.assistant, .chat-message.bot { align-self: flex-start; background-color: #fff; border-bottom-left-radius: 0.25rem; box-shadow: 0 1px 3px rgba(0,0,0,0.05); color: #333; } .chat-message-sender { font-size: 0.7rem; font-weight: 600; margin-bottom: 0.25rem; color: #555; } .chat-message-content { font-size: 0.9rem; line-height: 1.4; word-break: break-word; white-space: pre-wrap; } .chat-message.user .chat-message-sender { color: #0071e3; } .chat-message.assistant .chat-message-sender { color: #34c759; } .info-controls { display: flex; justify-content: flex-end; margin-bottom: 0.5rem; } .refresh-button { flex: 1; max-width: 180px; display: flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.75rem 1.5rem; border-radius: 20px; font-size: 1rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; background-color: #dc3545; color: white; border: none; box-shadow: 0 2px 8px rgba(220, 53, 69, 0.2); } .refresh-button:hover { background-color: #c82333; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(220, 53, 69, 0.3); } .chat-input-container { display: flex; align-items: center; gap: 0.75rem !important; margin-top: 1rem !important; padding: 0 0.75rem !important; } #chat-input { flex-grow: 1; padding: 1rem 1.25rem !important; border: 1px solid #e1e1e6; border-radius: 1.5rem !important; font-size: 1.1rem !important; background-color: #f8f9fa; transition: all 0.2s ease; width: 100%; } #chat-input:focus { border-color: #0071e3; outline: none; box-shadow: 0 0 0 2px rgba(0, 113, 227, 0.2); background-color: white; } .chat-send-btn { background-color: #0071e3; color: white; border: none; border-radius: 1.5rem !important; padding: 1rem 1.5rem !important; font-size: 1.1rem !important; font-weight: 500; cursor: pointer; transition: background-color 0.2s ease, transform 0.2s ease; display: flex; align-items: center; gap: 0.5rem !important; } .chat-send-btn:hover { background-color: #005bb5; transform: translateY(-1px); } .voice-toggle-btn { display: none !important; } /* Hide the microphone button near the text input */ .robot-mic-control { display: none !important; /* Remove the robot-mic-btn as we'll use the ears instead */ } .sql-results-table { width: 100%; border-collapse: collapse; margin-top: 0.5rem; font-size: 0.85rem; box-shadow: 0 2px 5px rgba(0,0,0,0.05); } .sql-results-table thead th { padding: 0.5rem; background-color: #e9ecef; border-bottom: 2px solid #dee2e6; font-weight: 600; text-align: left; position: sticky; top: 0; z-index: 10; } .sql-results-table tbody tr:nth-child(even) { background-color: #f8f9fa; } .sql-results-table tbody tr:hover { background-color: #e9ecef; } .sql-results-table td { padding: 0.5rem; border-bottom: 1px solid #dee2e6; } .info-card.sql-results { border-left: 5px solid #28a745 !important; text-align: left !important; padding: 1rem !important; margin-bottom: 1rem !important; background-color: #fff !important; border-radius: 12px !important; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.07) !important; max-width: 100% !important; overflow-x: auto !important; max-height: 60vh !important; overflow-y: auto !important; } .sql-action-button.export { background-color: #17a2b8 !important; color: white !important; padding: 0.4rem 0.8rem !important; font-size: 0.8rem !important; border-radius: 6px !important; border: none !important; cursor: pointer !important; transition: all 0.2s ease !important; display: inline-flex !important; align-items: center !important; gap: 0.3rem !important; margin-top: 1rem !important; } .sql-action-button.export:hover { background-color: #138496 !important; transform: translateY(-1px) !important; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1) !important; } @media (max-width: 1200px) { .main-container { flex-direction: column; align-items: center; padding: 1rem; gap: 1.5rem; } .sidebar-container { width: 100% !important; max-width: 800px; display: flex; flex-direction: row; gap: 1rem; order: 1; } .prompt-gallery, .sql-prompt-gallery { width: 50% !important; margin: 0; } .chat-box-container { width: 100% !important; max-width: 800px; order: 2; height: 60vh !important; min-height: 400px !important; max-height: 60vh !important; } .info-display-container { width: 100% !important; max-width: 800px; order: 3; } .info-display { height: 60vh !important; min-height: 400px !important; max-height: 60vh !important; } .robot-interface { width: 100% !important; max-width: 400px; order: 4; } .file-upload-controls { flex-direction: row; justify-content: center; gap: 1rem; } .file-upload-button, .refresh-button { max-width: 200px; width: auto; flex: 1; } } @media (max-width: 768px) { body { font-size: 14px; } .header { padding: 0.75rem 0; } h1 { font-size: 1.25rem; } .main-container { padding: 0.75rem; gap: 1rem; } .sidebar-container { flex-direction: column; gap: 0.75rem; padding: 0.5rem; } .prompt-gallery, .sql-prompt-gallery { width: 100% !important; padding: 0.75rem; background-color: white; border-radius: 1rem; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .prompt-gallery h3, .sql-prompt-gallery h3 { font-size: 0.85rem; margin-bottom: 0.5rem; } .prompt-suggestion, .sql-prompt-suggestion { font-size: 0.75rem; padding: 0.4rem 0.6rem; margin-bottom: 0.4rem; } .chat-box-container { height: 50vh !important; min-height: 350px !important; max-height: 50vh !important; padding: 1rem !important; } .chat-box-container h3 { font-size: 1rem !important; margin-bottom: 0.75rem !important; } .chat-messages { padding: 0.75rem !important; gap: 0.5rem !important; margin: 0.5rem 0 !important; border-radius: 0.75rem; } .chat-message { padding: 0.75rem 1rem !important; font-size: 0.9rem !important; border-radius: 1rem !important; margin-bottom: 0.5rem; } .transcript-placeholder { padding: 1.5rem !important; font-size: 0.9rem !important; } .chat-input-container { gap: 0.5rem !important; padding: 0 0.5rem !important; margin-top: 0.75rem !important; } #chat-input { padding: 0.75rem 1rem !important; font-size: 0.9rem !important; border-radius: 1.25rem !important; } .chat-send-btn { padding: 0.75rem 1rem !important; font-size: 0.9rem !important; border-radius: 1.25rem !important; } .chat-send-btn span:last-child { display: none; } .info-display-container { order: 3; } .info-display { height: 50vh !important; min-height: 350px !important; max-height: 50vh !important; padding: 1rem !important; border-radius: 1rem !important; } #info-container { max-height: calc(100% - 6rem); padding-right: 0.25rem; padding-bottom: 0.5rem; } .info-card { padding: 0.6rem; margin-bottom: 0.4rem; border-radius: 0.6rem; } .info-card h3 { font-size: 0.9rem; margin-bottom: 0.25rem; } .info-card p { font-size: 0.8rem; margin-bottom: 0.15rem; } .file-upload-controls { flex-direction: column; gap: 0.75rem; align-items: center; width: 100%; padding-top: 1rem; } .file-upload-button, .refresh-button { width: 100%; max-width: 280px; padding: 0.65rem 1.25rem; font-size: 0.9rem; } .robot-interface { order: 4; margin-top: 1rem; } .robot-container { width: 180px; height: 220px; margin: 0.75rem auto 1rem; } .robot-head { width: 100px; height: 90px; top: 30px; } .robot-eye { width: 22px; height: 22px; top: 22px; } .robot-eye.left { left: 16px; } .robot-eye.right { right: 16px; } .robot-mouth { width: 50px; height: 0px; bottom: 15px; } .robot-body { width: 110px; height: 80px; top: 120px; } .robot-chest-pattern { top: 15px; left: 15px; gap: 5px; } .pattern-dot { width: 16px; height: 16px; } .robot-indicator { width: 16px !important; height: 16px !important; top: 10px !important; right: 10px !important; } .robot-ear { width: 18px; height: 40px; top: 45px; } .robot-ear.left { left: 15px; } .robot-ear.right { right: 15px; } .robot-ear::after { width: 10px; height: 18px; top: 11px; } .robot-control-buttons { gap: 6px; margin-bottom: 10px; } .robot-control-btn { padding: 6px 10px; font-size: 0.75rem; border-radius: 8px; gap: 3px; } .robot-control-btn .button-icon { width: 14px; height: 14px; } .under-robot-indicators { gap: 0.75rem; margin-top: 1rem; margin-bottom: 1rem; } .indicators-row { flex-direction: column; gap: 0.5rem; } .under-robot-indicators .file-indicator, .under-robot-indicators .knowledge-indicator { width: 100%; max-width: 280px; padding: 0.6rem 0.8rem; font-size: 0.8rem; margin: 0 auto; } .under-robot-indicators .file-indicator strong, .under-robot-indicators .knowledge-indicator strong { font-size: 0.85rem; margin-bottom: 0.4rem; } .under-robot-indicators .file-icon, .under-robot-indicators .knowledge-icon { width: 14px; height: 14px; margin-right: 6px; } #start-listening-btn { padding: 0.6rem 1.25rem !important; font-size: 0.85rem !important; margin-bottom: 0.75rem !important; margin-top: 0.5rem !important; max-width: 200px; width: 100%; } .speech-bubble { bottom: -40px; font-size: 0.8rem; padding: 0.6rem 1rem; max-width: 250px; min-width: 180px; } .popup-window { width: 95%; height: 80%; max-width: none; max-height: 80vh; } .popup-header { padding: 12px 15px; } .popup-header h3 { font-size: 1rem; } .popup-content { padding: 15px; } } @media (max-width: 480px) { .main-container { padding: 0.5rem; gap: 0.75rem; } .sidebar-container { padding: 0.25rem; } .prompt-gallery, .sql-prompt-gallery { padding: 0.5rem; } .chat-box-container, .info-display { height: 45vh !important; min-height: 300px !important; max-height: 45vh !important; padding: 0.75rem !important; } .robot-container { width: 150px; height: 180px; } .robot-head { width: 80px; height: 70px; top: 25px; } .robot-body { width: 90px; height: 65px; top: 95px; } .robot-eye { width: 18px; height: 18px; top: 18px; } .robot-eye.left { left: 12px; } .robot-eye.right { right: 12px; } .robot-mouth { width: 10px; height: 0px; bottom: 5px; } .robot-ear { width: 14px; height: 30px; top: 35px; } .robot-ear.left { left: 10px; } .robot-ear.right { right: 10px; } .robot-chest-pattern { top: 12px; left: 12px; gap: 4px; } .pattern-dot { width: 12px; height: 12px; } .under-robot-indicators .file-indicator, .under-robot-indicators .knowledge-indicator { padding: 0.5rem 0.6rem; font-size: 0.75rem; } .file-upload-button, .refresh-button { padding: 0.6rem 1rem; font-size: 0.85rem; } .prompt-suggestion, .sql-prompt-suggestion { font-size: 0.7rem; padding: 0.35rem 0.5rem; } } /* Robot Control Buttons */ .robot-control-buttons { display: flex; justify-content: center; gap: 10px; margin-bottom: 15px; width: 100%; } .robot-control-btn { background-color: #f5f5f7; border: 1px solid #e1e1e6; border-radius: 10px; padding: 8px 15px; display: flex; align-items: center; justify-content: center; gap: 5px; cursor: pointer; transition: all 0.2s ease; font-size: 0.9rem; color: #333; font-weight: 500; } .robot-control-btn:hover { background-color: #e1e1e6; transform: translateY(-2px); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.1); } .robot-control-btn .button-icon { width: 16px; height: 16px; background-size: contain; background-repeat: no-repeat; background-position: center; } .folder-icon { background-image: url('data:image/svg+xml;utf8,'); } .inbox-icon { background-image: url('data:image/svg+xml;utf8,'); } .output-icon { background-image: url('data:image/svg+xml;utf8,'); } /* Popup Windows */ .popup-window { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.95); width: 80%; max-width: 600px; height: 70%; max-height: 500px; background-color: white; border-radius: 12px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15); z-index: 1000; display: none; opacity: 0; overflow: hidden; transition: opacity 0.3s ease, transform 0.3s ease; } .popup-window.active { display: flex; flex-direction: column; opacity: 1; transform: translate(-50%, -50%) scale(1); } .popup-header { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; border-bottom: 1px solid #e1e1e6; } .popup-header h3 { margin: 0; font-size: 1.2rem; font-weight: 600; } .popup-close-btn { background: none; border: none; font-size: 1.5rem; line-height: 1; cursor: pointer; color: #999; transition: color 0.2s ease; } .popup-close-btn:hover { color: #333; } .popup-content { flex-grow: 1; padding: 20px; overflow-y: auto; } /* File Explorer Popup */ .file-explorer-path { background-color: #f5f5f7; padding: 10px 15px; border-radius: 8px; font-family: monospace; margin-bottom: 15px; font-size: 0.9rem; border: 1px solid #e1e1e6; } .file-explorer-files { display: flex; flex-direction: column; gap: 10px; } .file-item { display: flex; align-items: center; padding: 8px 12px; border-radius: 6px; cursor: pointer; transition: background-color 0.2s ease; } .file-item:hover { background-color: #f0f0f5; } .file-item-icon { width: 24px; height: 24px; margin-right: 10px; } .file-item-name { font-size: 0.95rem; } .file-explorer-empty, .inbox-empty, .output-empty { text-align: center; color: #999; padding: 30px 0; font-style: italic; } /* Overlay for the popup background */ .popup-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 999; display: none; } .popup-overlay.active { display: block; } /* Ensure file and knowledge indicators appear below the stop AI button and don't overlap */ /* .controls definition already updated to display: none !important; */ /* Style for the file indicator to position it properly below the controls */ /* .file-indicator already updated with margin-bottom */ /* Style for the knowledge indicator to position it below the file indicator */ /* .knowledge-indicator already updated with margin-bottom */ /* Ensure proper spacing in the robot interface */ .robot-interface .controls { /* This .controls is specific to robot-interface, ensure it's also hidden or managed */ margin-bottom: 1rem; display: none !important; /* Explicitly hide if it's a different instance of controls */ } /* Enhanced robot ear styles - more realistic but same size */ .robot-ear { position: absolute; width: 25px; height: 55px; background-color: #ffffff; top: 65px; border-radius: 16px 16px 5px 5px; z-index: 1; transition: all 0.4s ease; cursor: pointer; box-shadow: 0 2px 8px rgb(255, 255, 255); border: 1px solid #c0c0c0; overflow: hidden; } /* Add ear canal effect */ .robot-ear::after { content: ""; position: absolute; width: 14px; height: 25px; background-color: #d8d8d8; border-radius: 7px; top: 15px; left: 50%; transform: translateX(-50%); } .robot-ear.left { left: 25px; transform-origin: bottom right; transform: rotate(-45deg) scaleY(0.7); } .robot-ear.right { right: 25px; transform-origin: bottom left; transform: rotate(45deg) scaleY(0.7); } /* Improved ear states for microphone active/inactive */ .robot-container.listening .robot-ear.left { transform: rotate(-15deg) scaleY(1); background-color: #34c759; box-shadow: 0 0 12px rgba(52, 199, 89, 0.5); border-color: #2aa048; } .robot-container.listening .robot-ear.right { transform: rotate(15deg) scaleY(1); background-color: #34c759; box-shadow: 0 0 12px rgba(52, 199, 89, 0.5); border-color: #2aa048; } /* Ear hover effect */ .robot-ear:hover { filter: brightness(1.2); } /* Larger hit areas for ears and mouth using pseudo-elements */ /* Expanded clickable area for left ear */ .robot-ear.left::before { content: ""; position: absolute; width: 60px; height: 80px; top: -10px; left: -15px; cursor: pointer; z-index: -1; } /* Expanded clickable area for right ear */ .robot-ear.right::before { content: ""; position: absolute; width: 60px; height: 80px; top: -10px; right: -15px; cursor: pointer; z-index: -1; } /* Enhanced mouth with canal look - keep same overall size */ .robot-mouth { position: absolute; width: 50px; height: 5px; background-color: #333; bottom: 10px; left: 50%; transform: translateX(-50%); border-radius: 10px; transition: all 0.2s ease; cursor: pointer; border: 2px solid #222; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } /* Expanded clickable area for mouth */ .robot-mouth::before { content: ""; position: absolute; width: 120px; height: 40px; top: -15px; left: 50%; transform: translateX(-50%); cursor: pointer; z-index: -1; } .robot-mouth:hover { background-color: #ff3b30; height: 12px; box-shadow: 0 0 10px rgba(255, 59, 48, 0.5); border-color: #d32f2f; } /* Custom ear open/close animation for active state */ .robot-container.listening .robot-ear::after { background-color: #268c41; } /* Adding ear canal glow effect when active */ .robot-container.listening .robot-ear.left::after, .robot-container.listening .robot-ear.right::after { box-shadow: 0 0 8px rgba(52, 199, 89, 0.8) inset; } /* Updated talking mouth animation */ .robot-container.talking .robot-mouth { animation: talk 0.3s infinite; background-color: #ff3b30; border-color: #d32f2f; box-shadow: 0 0 15px rgba(255, 59, 48, 0.5); } /* Container for both indicators to stack them vertically */ /* .indicators-container was removed, using .under-robot-indicators instead */ /* Make knowledge indicator visible when it has the visible class, even if it has no visible children */ /* .knowledge-indicator.visible is handled below */ /* Ensure clinical trials indicator is properly styled */ #clinical-trials-indicator { display: flex; align-items: center; gap: 0.5rem; } /* Fine-tune spacing within indicators */ /* .file-indicator strong, .knowledge-indicator strong handled by .under-robot-indicators */ .file-indicator-fixed { position: fixed; bottom: 20px; right: 20px; background-color: rgba(255, 255, 255, 0.95); border-radius: 12px; padding: 1rem 1.25rem; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); font-size: 0.85rem; color: #333; display: none; max-width: 300px; text-align: left; z-index: 100; } .file-indicator-fixed.visible { display: block; } /* Bottom indicators container - This was an alternative, .under-robot-indicators is the current one */ /* .bottom-indicators-container { ... } */ /* Adjust under-robot-indicators to accommodate feedback */ .under-robot-indicators { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 10px; margin-top: 1.5rem; margin-bottom: 1.5rem; } /* File and knowledge indicators row */ .indicators-row { display: flex; flex-direction: row; justify-content: space-between; gap: 10px; width: 100%; } .under-robot-indicators .file-indicator, .under-robot-indicators .knowledge-indicator { background-color: rgba(255, 255, 255, 0.95); border-radius: 12px; padding: 0.75rem 1rem; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); font-size: 0.85rem; color: #333; display: none; width: 48%; text-align: left; margin: 0; box-sizing: border-box; min-height: 60px; } /* When indicators should be visible */ .under-robot-indicators .file-indicator.visible, .under-robot-indicators .knowledge-indicator.visible { display: block; } /* Make the headings identical */ .under-robot-indicators .file-indicator strong, .under-robot-indicators .knowledge-indicator strong { display: block; margin-bottom: 0.5rem; font-size: 0.9rem; font-weight: 600; color: #333; } /* Knowledge indicator should always be hidden by default */ .knowledge-indicator { display: none !important; } /* Only show knowledge indicator when it has visible class */ .knowledge-indicator.visible { display: block !important; } /* Style the indicator items consistently */ .under-robot-indicators .file-indicator span, .under-robot-indicators .knowledge-indicator span { display: flex; align-items: center; margin-bottom: 4px; font-size: 0.85rem; line-height: 1.4; word-break: break-word; /* Ensure no text overflow */ } /* Fix the icons to be the same size and position */ .under-robot-indicators .file-icon, .under-robot-indicators .knowledge-icon { width: 16px; height: 16px; margin-right: 8px; display: inline-block; vertical-align: middle; background-size: contain; background-repeat: no-repeat; background-position: center; } /* File preview section styles */ .file-preview-container { margin-top: 1rem; padding: 1rem; background-color: #f8f9fa; border-radius: 0.75rem; border: 1px solid #e1e1e6; max-height: 200px; overflow-y: auto; } .file-preview-container h4 { font-size: 0.9rem; font-weight: 600; color: #333; margin-bottom: 0.5rem; } .file-preview-content { font-family: monospace; font-size: 0.8rem; white-space: pre-wrap; color: #555; } /* Highlight the file indicator more prominently */ .under-robot-indicators .file-indicator.visible { border: 2px solid #4CAF50; animation: pulse-border 2s infinite; } @keyframes pulse-border { 0% { border-color: #4CAF50; } 50% { border-color: #81C784; } 100% { border-color: #4CAF50; } } /* Add these styles to your existing styles.css file */ /* Loading message styling */ .loading-message { text-align: center; color: #666; padding: 2rem; font-style: italic; font-size: 0.9rem; } /* Enhanced file item styling */ .file-item { display: flex; align-items: center; padding: 8px 12px; border-radius: 6px; cursor: pointer; transition: background-color 0.2s ease; margin-bottom: 4px; border: 1px solid transparent; } .file-item:hover { background-color: #f0f0f5; border-color: #e1e1e6; } .file-item-icon { margin-right: 10px; width: 24px; height: 24px; flex-shrink: 0; } .file-item-info { flex-grow: 1; min-width: 0; /* Allow text truncation */ } .file-item-name { font-size: 0.95rem; font-weight: 500; margin-bottom: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .file-item-details { font-size: 0.8rem; color: #666; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Popup content scrolling */ .popup-content { max-height: 60vh; overflow-y: auto; } /* Empty state styling */ .inbox-empty, .output-empty, .file-explorer-empty { text-align: center; color: #888; padding: 2rem; font-style: italic; font-size: 0.9rem; } /* File size warning */ .file-size-warning { background-color: #fff3cd; border: 1px solid #ffeeba; border-radius: 8px; padding: 0.75rem 1rem; margin: 1rem 0; color: #856404; font-size: 0.9rem; animation: fadeIn 0.3s ease-out; } /* Robot interaction feedback */ .robot-feedback { background-color: rgba(0, 0, 0, 0.8); color: white; padding: 8px 16px; border-radius: 12px; font-size: 0.85rem; font-weight: 500; display: none; white-space: nowrap; z-index: 100; animation: fadeIn 0.2s ease-out; text-align: center; margin: 0.5rem auto; width: fit-content; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .robot-feedback.listening { background-color: rgba(52, 199, 89, 0.9); } .robot-feedback.muted { background-color: rgba(255, 59, 48, 0.9); } .robot-feedback.stopping { background-color: rgba(255, 149, 0, 0.9); } /* Dynamic suggestion specific styles */ .dynamic-suggestion { background-color: #f0f8ff !important; color: #0066cc !important; border: 1px solid #cce0ff !important; font-weight: 600 !important; } .dynamic-suggestion:hover { background-color: #e6f2ff !important; border-color: #99ccff !important; transform: translateY(-2px) !important; } /* Ensure prompt suggestions container is visible */ .prompt-suggestions { min-height: 50px; display: flex !important; flex-direction: column !important; gap: 0.5rem !important; } /* Force visibility for all prompt suggestions */ .prompt-suggestion { display: block !important; opacity: 1 !important; transform: translateX(0) !important; transition: all 0.3s ease !important; } /* FORCE: Dynamic suggestions styling */ .prompt-suggestions { display: flex !important; flex-direction: column !important; gap: 0.5rem !important; min-height: 60px !important; opacity: 1 !important; visibility: visible !important; } /* FORCE: All suggestion buttons visible */ .prompt-suggestion { display: block !important; opacity: 1 !important; transform: translateX(0) !important; transition: all 0.2s ease !important; margin-bottom: 0.5rem !important; } /* FORCE: Dynamic suggestion distinctive styling */ [class*="dynamic-suggestion"] { background-color: #e3f2fd !important; color: #1565c0 !important; border: 2px solid #2196f3 !important; font-weight: 600 !important; box-shadow: 0 2px 4px rgba(33, 150, 243, 0.2) !important; } [class*="dynamic-suggestion"]:hover { background-color: #bbdefb !important; transform: translateY(-1px) !important; box-shadow: 0 4px 8px rgba(33, 150, 243, 0.3) !important; } /* FORCE: Gallery visibility */ .prompt-gallery { opacity: 1 !important; display: flex !important; visibility: visible !important; } /* Loading animations for suggestions */ .suggestion-loading, .sql-suggestion-loading { background-color: #f0f0f5; border-radius: 20px; padding: 0.5rem 0.75rem; margin-bottom: 0.5rem; height: 40px; width: 100%; display: flex; align-items: center; justify-content: center; opacity: 0.8; box-sizing: border-box; } .loading-shimmer { width: 80%; height: 20px; background: linear-gradient(90deg, #f0f0f5 25%, #e0e0e5 50%, #f0f0f5 75%); background-size: 200% 100%; border-radius: 10px; animation: shimmer 1.5s infinite; } .loading-dots { display: flex; gap: 4px; align-items: center; justify-content: center; width: 100%; } .loading-dots .dot { width: 6px; height: 6px; background-color: #0071e3; border-radius: 50%; animation: dotPulse 1.4s infinite ease-in-out both; } .loading-dots .dot:nth-child(1) { animation-delay: -0.32s; } .loading-dots .dot:nth-child(2) { animation-delay: -0.16s; } .loading-dots .dot:nth-child(3) { animation-delay: 0s; } /* Ensure parent containers have consistent styling */ .prompt-suggestions, .sql-prompt-suggestions { display: flex !important; flex-direction: column !important; gap: 0.5rem !important; width: 100% !important; align-items: stretch !important; } /* Gemini-style loading animation */ @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } @keyframes dotPulse { 0%, 80%, 100% { transform: scale(0.8); opacity: 0.5; } 40% { transform: scale(1.2); opacity: 1; } } /* Apple-style smooth transitions for suggestion updates */ .prompt-suggestions, .sql-prompt-suggestions { transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .prompt-suggestion, .sql-prompt-suggestion { transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); } /* Enhanced dynamic suggestion styling */ [class*="dynamic-suggestion"], [class*="dynamic-sql-suggestion"] { position: relative; overflow: hidden; } [class*="dynamic-suggestion"]::before, [class*="dynamic-sql-suggestion"]::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); transition: left 0.6s ease; } [class*="dynamic-suggestion"]:hover::before, [class*="dynamic-sql-suggestion"]:hover::before { left: 100%; } /* Suggestion generation loading state */ .prompt-gallery.generating, .sql-prompt-gallery.generating { opacity: 0.7; pointer-events: none; } /* Smooth entrance animations */ @keyframes slideInFromLeft { 0% { opacity: 0; transform: translateX(-30px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes slideInFromRight { 0% { opacity: 0; transform: translateX(30px); } 100% { opacity: 1; transform: translateX(0); } } .prompt-suggestion.entering { animation: slideInFromLeft 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .sql-prompt-suggestion.entering { animation: slideInFromRight 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); } /* Pulsing effect for dynamic suggestions */ [class*="dynamic-suggestion"], [class*="dynamic-sql-suggestion"] { animation: subtlePulse 2s infinite; } @keyframes subtlePulse { 0%, 100% { box-shadow: 0 2px 4px rgba(0, 123, 255, 0.2); } 50% { box-shadow: 0 4px 8px rgba(0, 123, 255, 0.4); } } /* Chat loading animation */ .chat-loading { opacity: 0; transform: translateY(10px); transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .chat-loading.show { opacity: 1; transform: translateY(0); } .chat-loading.fade-out { opacity: 0; transform: translateY(-10px); transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .chat-loading-content { display: flex; align-items: center; gap: 12px; padding: 8px 0; } .thinking-dots-chat { display: flex; gap: 4px; align-items: center; } .thinking-dots-chat .dot { width: 8px; height: 8px; background-color: #0071e3; border-radius: 50%; animation: chatDotPulse 1.4s infinite ease-in-out both; } .thinking-dots-chat .dot:nth-child(1) { animation-delay: -0.32s; } .thinking-dots-chat .dot:nth-child(2) { animation-delay: -0.16s; } .thinking-dots-chat .dot:nth-child(3) { animation-delay: 0s; } .loading-text { font-size: 0.9rem; color: #666; font-style: italic; animation: fadeInOut 2s infinite; } /* Animations */ @keyframes chatDotPulse { 0%, 80%, 100% { transform: scale(0.8); opacity: 0.5; } 40% { transform: scale(1.2); opacity: 1; } } @keyframes fadeInOut { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } } /* Enhanced chat message animations */ .chat-message { transform: translateY(20px); opacity: 0; animation: slideInMessage 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; } @keyframes slideInMessage { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } /* Typing indicator effect */ .chat-loading-content::after { content: ''; width: 20px; height: 20px; border: 2px solid #f3f3f3; border-top: 2px solid #0071e3; border-radius: 50%; animation: spin 1s linear infinite; margin-left: auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Smooth message transitions */ .chat-messages { scroll-behavior: smooth; } /* Loading shimmer effect for chat */ .chat-loading { background: linear-gradient(90deg, transparent 25%, rgba(0, 113, 227, 0.05) 50%, transparent 75%); background-size: 200% 100%; animation: chatShimmer 2s infinite; } @keyframes chatShimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* AI-generated prompt animations */ .ai-prompt-enter { opacity: 0; transform: translateY(10px) scale(0.95); animation: aiPromptReveal 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; } .ai-prompt-typing { overflow: hidden; white-space: nowrap; border-right: 2px solid transparent; animation: typeText 1.2s steps(40, end), blinkCursor 0.8s step-end 2; } .ai-prompt-glow { background: linear-gradient(45deg, #fafafa, #f8f8f8, #fafafa); border: 1px solid rgba(0, 113, 227, 0.1); box-shadow: 0 0 8px rgba(0, 113, 227, 0.05); } .ai-prompt-glow::before { background: linear-gradient(45deg, rgba(0, 113, 227, 0.02), rgba(0, 113, 227, 0.04), rgba(0, 113, 227, 0.02)); opacity: 0.3; } .ai-sparkle::after { color: rgba(0, 113, 227, 0.3); } @keyframes blinkCursor { 0%, 50% { border-right-color: rgba(0, 113, 227, 0.4); } 51%, 100% { border-right-color: transparent; } } .ai-suggestions-loading::before { background: linear-gradient(90deg, transparent, rgba(0, 113, 227, 0.03), transparent); } /* Keyframes */ @keyframes aiPromptReveal { 0% { opacity: 0; transform: translateY(10px) scale(0.95); } 50% { opacity: 0.7; transform: translateY(-2px) scale(1.02); } 100% { opacity: 1; transform: translateY(0) scale(1); } } @keyframes typeText { from { width: 0; } to { width: 100%; } } @keyframes blinkCursor { 0%, 50% { border-right-color: #2196f3; } 51%, 100% { border-right-color: transparent; } } @keyframes aiGradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes aiGlowShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes sparkleFloat { 0% { opacity: 0; transform: translate(0, 0) scale(0.5); } 25% { opacity: 1; transform: translate(-3px, -8px) scale(1); } 75% { opacity: 1; transform: translate(3px, -12px) scale(0.8); } 100% { opacity: 0; transform: translate(0, -15px) scale(0.3); } } /* Container animation when new AI suggestions load */ .ai-suggestions-loading { position: relative; overflow: hidden; } .ai-suggestions-loading::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(33, 150, 243, 0.1), transparent); animation: aiWave 1.5s ease-in-out; } @keyframes aiWave { 0% { left: -100%; } 100% { left: 100%; } } /* Hide prompt galleries by default */ .prompt-gallery { opacity: 0 !important; display: none !important; visibility: hidden !important; } .sql-prompt-gallery { opacity: 0 !important; display: none !important; visibility: hidden !important; } /* Show galleries when they have the 'show-gallery' class */ .prompt-gallery.show-gallery { opacity: 1 !important; display: flex !important; visibility: visible !important; } .sql-prompt-gallery.show-gallery { opacity: 1 !important; display: flex !important; visibility: visible !important; } .google-drive-file-item { padding: 10px; border: 1px solid #e1e1e6; border-radius: 8px; margin-bottom: 8px; cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; gap: 10px; } .google-drive-file-item:hover { background-color: #f0f0f5; } .google-drive-file-item.selected { background-color: #e3f2fd; border-color: #0071e3; } .google-drive-upload-selected-btn { background-color: #0071e3; color: white; border: none; border-radius: 20px; padding: 8px 16px; cursor: pointer; margin-top: 10px; } .google-drive-upload-selected-btn:disabled { background-color: #ccc; cursor: not-allowed; } .prompt-gallery { display: flex !important; flex-direction: column !important; visibility: visible !important; opacity: 1 !important; max-height: none !important; overflow: visible !important; } .sql-prompt-gallery { display: flex !important; flex-direction: column !important; visibility: visible !important; opacity: 1 !important; max-height: none !important; overflow: visible !important; } .prompt-gallery.show-gallery { display: flex !important; visibility: visible !important; opacity: 1 !important; } .sql-prompt-gallery.show-gallery { display: flex !important; visibility: visible !important; opacity: 1 !important; } .prompt-suggestions { display: flex !important; flex-direction: column !important; gap: 0.5rem !important; min-height: 60px !important; opacity: 1 !important; visibility: visible !important; } .sql-prompt-suggestions { display: flex !important; flex-direction: column !important; gap: 0.5rem !important; min-height: 60px !important; opacity: 1 !important; visibility: visible !important; } .prompt-suggestion { display: block !important; opacity: 1 !important; transform: translateX(0) !important; transition: all 0.2s ease !important; margin-bottom: 0.5rem !important; visibility: visible !important; } .sql-prompt-suggestion { display: block !important; opacity: 1 !important; transform: translateX(0) !important; transition: all 0.2s ease !important; margin-bottom: 0.5rem !important; visibility: visible !important; } [class*="dynamic-suggestion"] { background-color: #e3f2fd !important; color: #1565c0 !important; border: 2px solid #2196f3 !important; font-weight: 600 !important; box-shadow: 0 2px 4px rgba(33, 150, 243, 0.2) !important; } [class*="dynamic-sql-suggestion"] { background-color: #f3e5f5 !important; color: #7b1fa2 !important; border: 2px solid #9c27b0 !important; font-weight: 600 !important; box-shadow: 0 2px 4px rgba(156, 39, 176, 0.2) !important; } /* Hide prompt galleries by default */ .prompt-gallery, .sql-prompt-gallery { display: none !important; opacity: 0; transition: opacity 0.3s ease; } /* Show prompt galleries when file is loaded */ .prompt-gallery.visible, .sql-prompt-gallery.visible { display: flex !important; opacity: 1; } /* Enhanced ear clickability */ .robot-ear { cursor: pointer; transition: all 0.2s ease; z-index: 10; } .robot-ear:hover { transform: scale(1.1); filter: brightness(1.2); } .robot-ear.left:hover { transform: rotate(-45deg) scaleY(0.7) scale(1.1); } .robot-ear.right:hover { transform: rotate(45deg) scaleY(0.7) scale(1.1); } /* Enhanced mouth clickability */ .robot-mouth { cursor: pointer; z-index: 10; } .robot-mouth:hover { background-color: #ff3b30; height: 12px; box-shadow: 0 0 10px rgba(255, 59, 48, 0.5); border-color: #d32f2f; } /* Click feedback for ears */ .robot-ear:active { transform: scale(0.9); } .robot-ear.left:active { transform: rotate(-45deg) scaleY(0.7) scale(0.9); } .robot-ear.right:active { transform: rotate(45deg) scaleY(0.7) scale(0.9); } /* Click feedback for mouth */ .robot-mouth:active { transform: translateX(-50%) scale(0.95); } .superuser-button { background: #dc3545; color: white; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer; font-weight: bold; } .superuser-button:hover { background: #c82333; } .header { position: relative; text-align: center; padding: 1.5rem 0; } .super-user-button { position: absolute; top: 1.5rem; right: 2rem; background-color: #0071e3; color: white; border: none; border-radius: 20px; padding: 0.6rem 1.2rem; font-size: 0.9rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 2px 10px rgba(0, 113, 227, 0.3); } .super-user-button:hover { background-color: #0077ed; transform: translateY(-2px); box-shadow: 0 4px 15px rgba(0, 113, 227, 0.5); } .super-user-button.active { background-color: #ff3b30; } .super-user-button.active:hover { background-color: #ff2d2d; } .super-user-title { color: #ff3b30; font-size: 1.2rem; font-weight: 700; letter-spacing: 2px; margin-top: 0.5rem; text-shadow: 0 2px 4px rgba(255, 59, 48, 0.3); } .robot-container.super-user .robot-head { background-color: #ff3b30; border-color: #ff2d2d; box-shadow: 0 8px 24px rgba(255, 59, 48, 0.3); } .robot-container.super-user .robot-body { background-color: #ff3b30; border-color: #ff2d2d; box-shadow: 0 8px 24px rgba(255, 59, 48, 0.3); } .robot-container.super-user .robot-eye { background-color: #fff; animation: superUserPulse 1.5s infinite; } .robot-container.super-user .third-eye { display: block !important; position: absolute; width: 36px; height: 36px; background-color: #fff; border-radius: 50%; top: 10px; left: 50%; transform: translateX(-50%); animation: superUserPulse 1.5s infinite; } @keyframes superUserPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } .google-drive-file-item.selected { background-color: #e3f2fd; border-color: #0071e3; } .google-drive-picker-actions { display: flex; justify-content: space-between; align-items: center; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #e1e1e6; } .google-drive-upload-selected-btn { background-color: #0071e3; color: white; border: none; border-radius: 20px; padding: 8px 16px; cursor: pointer; font-weight: 500; } .google-drive-upload-selected-btn:disabled { background-color: #ccc; cursor: not-allowed; } .google-drive-upload-selected-btn:hover:not(:disabled) { background-color: #0077ed; } .selection-indicator { position: absolute; top: 10px; right: 10px; width: 24px; height: 24px; background-color: #0071e3; color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: bold; } /* Ask Me Button */ .ask-me-container { display: flex; justify-content: center; margin: 1rem 0; } .ask-me-button { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border: none; border-radius: 25px; color: white; padding: 12px 24px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 8px; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); } .ask-me-button:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4); background: linear-gradient(135deg, #764ba2 0%, #667eea 100%); } .ask-me-button:active { transform: translateY(0); } .ask-me-button.active { background: linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%); box-shadow: 0 4px 15px rgba(255, 107, 107, 0.3); } .ask-me-button.active:hover { background: linear-gradient(135deg, #ee5a24 0%, #ff6b6b 100%); box-shadow: 0 6px 20px rgba(255, 107, 107, 0.4); } .ask-me-icon { background: rgba(255, 255, 255, 0.2); border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 14px; } /* Super User Button - Now positioned under Ask Me button */ .super-user-container { display: flex; justify-content: center; margin: 0.5rem 0 1rem 0; } .super-user-button { position: static; /* Override absolute positioning */ background-color: #0071e3; color: white; border: none; border-radius: 20px; padding: 0.6rem 1.2rem; font-size: 0.9rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 2px 10px rgba(0, 113, 227, 0.3); } .super-user-button:hover { background-color: #0077ed; transform: translateY(-2px); box-shadow: 0 4px 15px rgba(0, 113, 227, 0.5); } .super-user-button.active { background-color: #ff3b30; } .super-user-button.active:hover { background-color: #ff2d2d; } /* Star Rating Styles */ .star-rating-container { display: flex; flex-direction: column; align-items: center; margin-top: 0.75rem; padding: 0.5rem; } .star-rating-title { font-size: 0.8rem; color: #666; margin-bottom: 0.5rem; font-weight: 500; } .star-rating { display: flex; gap: 0.25rem; align-items: center; } .star-btn { background: none; border: none; font-size: 1.5rem; color: #ddd; cursor: pointer; transition: all 0.2s ease; padding: 0.25rem; line-height: 1; user-select: none; } .star-btn:hover { transform: scale(1.1); } .star-btn.active { color: #ffd700; text-shadow: 0 0 10px rgba(255, 215, 0, 0.5); } .star-btn.hover-active { color: #ffed4e; }