UNPKG

brainkb-assistant

Version:

A configurable, standalone BrainKB Assistant that can be integrated into any website

898 lines (804 loc) 24.8 kB
/* BrainKB Assistant Global Styles - ULTRA FORCE OVERRIDE v1.0.61 */ .brainkb-assistant-container { position: fixed !important; z-index: 999999 !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !important; bottom: 24px !important; right: 24px !important; } .brainkb-assistant-button { position: fixed !important; z-index: 999999 !important; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; color: white !important; border: none !important; border-radius: 50% !important; padding: 16px !important; cursor: pointer !important; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3) !important; transition: all 0.3s ease !important; font-size: 24px !important; line-height: 1 !important; display: flex !important; align-items: center !important; justify-content: center !important; min-width: 60px !important; min-height: 60px !important; width: 64px !important; height: 64px !important; } .brainkb-assistant-button:hover { transform: scale(1.1) !important; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4) !important; } .brainkb-assistant-chat { background: white !important; border-radius: 16px !important; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15) !important; border: 1px solid #e5e7eb !important; overflow: hidden !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !important; width: 400px !important; height: 600px !important; display: flex !important; flex-direction: column !important; max-width: 100% !important; box-sizing: border-box !important; } /* ULTRA FORCE OVERRIDE - Beautiful Header Styling v1.0.61 */ .brainkb-assistant-chat .brainkb-assistant-header, .brainkb-assistant-header, div[class*="brainkb-assistant-header"], div.brainkb-assistant-header, .brainkb-assistant-chat div[class*="header"], div[class*="header"] { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; background-image: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; color: white !important; padding: 20px 24px !important; border-radius: 16px 16px 0 0 !important; display: flex !important; align-items: center !important; justify-content: space-between !important; min-height: 70px !important; box-shadow: 0 4px 16px rgba(102, 126, 234, 0.2) !important; border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important; background-color: transparent !important; margin: 0 !important; border: none !important; } /* Force header content styling */ .brainkb-assistant-chat .header-content, .header-content, div[class*="header-content"], div.header-content { display: flex !important; align-items: center !important; gap: 16px !important; flex: 1 !important; color: white !important; } .brainkb-assistant-chat .header-icon, .header-icon, div[class*="header-icon"], div.header-icon { width: 40px !important; height: 40px !important; background: rgba(255, 255, 255, 0.15) !important; border-radius: 50% !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(10px) !important; border: 1px solid rgba(255, 255, 255, 0.2) !important; } .brainkb-assistant-chat .header-text, .header-text, div[class*="header-text"], div.header-text { display: flex !important; flex-direction: column !important; gap: 4px !important; color: white !important; } .brainkb-assistant-chat .header-title, .header-title, div[class*="header-title"], div.header-title { font-size: 18px !important; font-weight: 600 !important; color: white !important; margin: 0 !important; padding: 0 !important; } .brainkb-assistant-chat .header-subtitle, .header-subtitle, div[class*="header-subtitle"], div.header-subtitle { font-size: 14px !important; color: rgba(255, 255, 255, 0.8) !important; margin: 0 !important; padding: 0 !important; } .brainkb-assistant-chat .close-button, .close-button, div[class*="close-button"], button[class*="close-button"] { background: rgba(255, 255, 255, 0.1) !important; border: 1px solid rgba(255, 255, 255, 0.2) !important; border-radius: 50% !important; width: 32px !important; height: 32px !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: pointer !important; color: white !important; transition: all 0.2s ease !important; backdrop-filter: blur(10px) !important; } .brainkb-assistant-chat .close-button:hover, .close-button:hover, div[class*="close-button"]:hover, button[class*="close-button"]:hover { background: rgba(255, 255, 255, 0.2) !important; transform: scale(1.1) !important; color: white !important; } .brainkb-assistant-messages { background: #f8fafc !important; padding: 20px !important; overflow-y: auto !important; flex: 1 !important; max-height: none !important; box-sizing: border-box !important; word-wrap: break-word !important; overflow-wrap: break-word !important; hyphens: auto !important; } .brainkb-assistant-input { background: white !important; padding: 20px !important; border-top: 1px solid #e5e7eb !important; flex-shrink: 0 !important; box-sizing: border-box !important; min-height: 90px !important; } .brainkb-assistant-input input { width: 100% !important; padding: 14px 18px !important; border: 2px solid #e2e8f0 !important; border-radius: 12px !important; font-size: 15px !important; outline: none !important; box-sizing: border-box !important; min-width: 0 !important; max-width: 100% !important; transition: all 0.2s ease !important; background: #f8fafc !important; } .brainkb-assistant-input input:focus { border-color: #667eea !important; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1) !important; background: white !important; } .brainkb-assistant-input input::placeholder { color: #94a3b8 !important; font-weight: 400 !important; } /* Position classes */ .brainkb-assistant-bottom-right { bottom: 24px !important; right: 24px !important; } .brainkb-assistant-bottom-left { bottom: 24px !important; left: 24px !important; } .brainkb-assistant-top-right { top: 24px !important; right: 24px !important; } .brainkb-assistant-top-left { top: 24px !important; left: 24px !important; } /* High contrast mode for better visibility */ .brainkb-assistant-high-contrast { background: linear-gradient(135deg, #1f2937 0%, #374151 100%) !important; color: #ffffff !important; border: 2px solid #ffffff !important; } .brainkb-assistant-high-contrast .brainkb-assistant-chat { background: #1f2937 !important; color: #ffffff !important; border: 2px solid #ffffff !important; } /* Responsive design */ @media (max-width: 768px) { .brainkb-assistant-chat { width: calc(100vw - 48px) !important; max-width: 400px !important; min-width: 300px !important; } .brainkb-assistant-button { min-width: 50px !important; min-height: 50px !important; padding: 12px !important; } .brainkb-assistant-messages { padding: 16px !important; font-size: 14px !important; } .brainkb-assistant-input { padding: 16px !important; } .brainkb-assistant-input input { padding: 12px 16px !important; font-size: 14px !important; } } /* Content overflow handling - FIXED */ .brainkb-assistant-chat * { word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; box-sizing: border-box !important; } .brainkb-assistant-chat pre { white-space: pre-wrap !important; word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; overflow-x: auto !important; font-size: 13px !important; line-height: 1.4 !important; } .brainkb-assistant-chat code { word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; font-size: 13px !important; } .brainkb-assistant-chat p { word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; margin: 8px 0 !important; line-height: 1.5 !important; } .brainkb-assistant-chat div { word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; } /* Animation for better visibility */ @keyframes brainkb-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } .brainkb-assistant-pulse { animation: brainkb-pulse 2s infinite !important; } /* Ensure it's always on top */ .brainkb-assistant-container * { z-index: inherit !important; } /* ULTRA FORCE OVERRIDE - Clean Message Styling */ .brainkb-assistant-chat .message-bubble, .message-bubble, div[class*="message-bubble"] { background: #ffffff !important; border-radius: 12px !important; padding: 16px 20px !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important; border: 1px solid #e5e7eb !important; max-width: calc(100% - 32px) !important; word-wrap: break-word !important; overflow-wrap: break-word !important; font-size: 14px !important; line-height: 1.5 !important; position: relative !important; margin: 12px 0 !important; } .brainkb-assistant-chat .message-user, .message-user, div[class*="message-user"] { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; color: #ffffff !important; border: 1px solid rgba(255, 255, 255, 0.2) !important; } .brainkb-assistant-chat .message-assistant, .message-assistant, div[class*="message-assistant"] { background: #ffffff !important; color: #374151 !important; border: 1px solid #e5e7eb !important; } .brainkb-assistant-chat .message-timestamp, .message-timestamp, div[class*="message-timestamp"] { font-size: 11px !important; color: #9ca3af !important; font-weight: 400 !important; margin-top: 8px !important; display: flex !important; align-items: center !important; gap: 8px !important; } .brainkb-assistant-chat .message-avatar, .message-avatar, div[class*="message-avatar"] { width: 32px !important; height: 32px !important; border-radius: 50% !important; display: flex !important; align-items: center !important; justify-content: center !important; flex-shrink: 0 !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important; } /* ULTRA FORCE OVERRIDE - Clean Quick Actions Styling */ .brainkb-assistant-chat .quick-actions, .quick-actions, div[class*="quick-actions"] { display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 12px !important; padding: 20px 24px !important; background: #f9fafb !important; border-radius: 0 0 16px 16px !important; border-top: 1px solid #e5e7eb !important; min-height: 100px !important; } .brainkb-assistant-chat .quick-action-button, .quick-action-button, button[class*="quick-action-button"] { background: #ffffff !important; color: #374151 !important; border: 1px solid #e5e7eb !important; border-radius: 8px !important; padding: 12px 16px !important; cursor: pointer !important; transition: all 0.2s ease !important; display: flex !important; flex-direction: column !important; align-items: center !important; gap: 6px !important; min-height: 70px !important; justify-content: center !important; text-align: center !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; } .brainkb-assistant-chat .quick-action-button:hover, .quick-action-button:hover, button[class*="quick-action-button"]:hover { background: #f3f4f6 !important; border-color: #d1d5db !important; transform: translateY(-1px) !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important; } .brainkb-assistant-chat .quick-action-button .icon, .quick-action-button .icon, span[class*="icon"] { font-size: 18px !important; margin-bottom: 4px !important; color: #6b7280 !important; } .brainkb-assistant-chat .quick-action-button .text, .quick-action-button .text, span[class*="text"] { font-size: 11px !important; font-weight: 600 !important; line-height: 1.2 !important; color: #374151 !important; } /* ULTRA FORCE OVERRIDE - Clean Input Area */ .brainkb-assistant-chat .input-area, .input-area, div[class*="input-area"] { background: #ffffff !important; border: 1px solid #e5e7eb !important; border-radius: 12px !important; padding: 16px 20px !important; display: flex !important; align-items: center !important; gap: 12px !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important; min-height: 60px !important; margin: 16px !important; } .brainkb-assistant-chat .input-field, .input-field, input[class*="input-field"] { flex: 1 !important; border: none !important; outline: none !important; background: transparent !important; font-size: 14px !important; color: #374151 !important; line-height: 1.5 !important; min-height: 24px !important; resize: none !important; } .brainkb-assistant-chat .input-field::placeholder, .input-field::placeholder, input[class*="input-field"]::placeholder { color: #9ca3af !important; font-weight: 400 !important; } .brainkb-assistant-chat .send-button, .send-button, button[class*="send-button"] { width: 40px !important; height: 40px !important; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; border: none !important; border-radius: 8px !important; color: white !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: pointer !important; transition: all 0.2s ease !important; box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3) !important; } .brainkb-assistant-chat .send-button:hover, .send-button:hover, button[class*="send-button"]:hover { transform: translateY(-1px) !important; box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4) !important; } /* Download Button */ .download-button { background: linear-gradient(135deg, #10b981 0%, #059669 100%) !important; color: white !important; border: none !important; border-radius: 8px !important; padding: 12px 20px !important; font-size: 13px !important; font-weight: 600 !important; cursor: pointer !important; min-width: 140px !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; box-shadow: 0 2px 8px rgba(16, 185, 129, 0.3) !important; transition: all 0.2s ease !important; } .download-button:hover { transform: translateY(-1px) !important; box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4) !important; } .download-dropdown { position: absolute !important; top: 100% !important; right: 0 !important; margin-top: 8px !important; background: white !important; border: 1px solid #e5e7eb !important; border-radius: 8px !important; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15) !important; padding: 16px !important; min-width: 200px !important; z-index: 1000 !important; } /* Enhanced table styling - FIXED OVERFLOW */ .brainkb-assistant-chat .table-container { background: white !important; border-radius: 16px !important; border: 1px solid #e2e8f0 !important; overflow: hidden !important; margin: 16px 0 !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) !important; max-width: 100% !important; box-sizing: border-box !important; } .brainkb-assistant-chat .table-container table { width: 100% !important; border-collapse: collapse !important; font-size: 13px !important; line-height: 1.4 !important; table-layout: fixed !important; word-wrap: break-word !important; overflow-wrap: break-word !important; } .brainkb-assistant-chat .table-container thead { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%) !important; border-bottom: 2px solid #e2e8f0 !important; } .brainkb-assistant-chat .table-container th { padding: 12px 16px !important; text-align: left !important; font-weight: 600 !important; color: #1e293b !important; font-size: 13px !important; border-bottom: 1px solid #e2e8f0 !important; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%) !important; word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 120px !important; min-width: 80px !important; } .brainkb-assistant-chat .table-container tbody tr { border-bottom: 1px solid #f1f5f9 !important; transition: background-color 0.2s ease !important; } .brainkb-assistant-chat .table-container tbody tr:nth-child(even) { background-color: #fafbfc !important; } .brainkb-assistant-chat .table-container tbody tr:hover { background-color: #f1f5f9 !important; } .brainkb-assistant-chat .table-container td { padding: 12px 16px !important; color: #374151 !important; font-size: 12px !important; line-height: 1.4 !important; vertical-align: top !important; word-wrap: break-word !important; overflow-wrap: break-word !important; hyphens: auto !important; max-width: 120px !important; min-width: 80px !important; } /* Index cell styling */ .brainkb-assistant-chat .index-cell { font-weight: 600 !important; color: #1e293b !important; text-align: center !important; background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%) !important; border-radius: 8px !important; padding: 6px 10px !important; min-width: 40px !important; display: inline-block !important; border: 1px solid #bae6fd !important; font-size: 12px !important; } /* URI cell styling - FIXED OVERFLOW */ .brainkb-assistant-chat .uri-cell { font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace !important; font-size: 11px !important; color: #0369a1 !important; background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%) !important; border-radius: 6px !important; padding: 4px 8px !important; border: 1px solid #bae6fd !important; word-break: break-all !important; overflow-wrap: break-word !important; max-width: 100% !important; } /* Query summary styling */ .brainkb-assistant-chat .query-summary { background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%) !important; border: 1px solid #f59e0b !important; border-radius: 12px !important; padding: 12px 16px !important; margin: 12px 0 !important; font-size: 13px !important; color: #92400e !important; font-weight: 500 !important; word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; } /* Data highlight styling */ .brainkb-assistant-chat .data-highlight { background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%) !important; border: 1px solid #3b82f6 !important; border-radius: 8px !important; padding: 8px 12px !important; font-size: 12px !important; color: #1e40af !important; font-weight: 500 !important; display: inline-block !important; margin: 4px 0 !important; word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; } @keyframes slideIn { from { opacity: 0 !important; transform: translateY(10px) !important; } to { opacity: 1 !important; transform: translateY(0) !important; } } .brainkb-assistant-chat .download-dropdown::after { content: '' !important; position: absolute !important; top: 100% !important; right: 20px !important; width: 0 !important; height: 0 !important; border-left: 8px solid transparent !important; border-right: 8px solid transparent !important; border-top: 8px solid white !important; } .brainkb-assistant-chat .download-dropdown::before { content: '' !important; position: absolute !important; top: 100% !important; right: 18px !important; width: 0 !important; height: 0 !important; border-left: 10px solid transparent !important; border-right: 10px solid transparent !important; border-top: 10px solid #10b981 !important; z-index: -1 !important; } .brainkb-assistant-chat .download-option { display: flex !important; align-items: center !important; gap: 12px !important; padding: 14px 18px !important; border-radius: 10px !important; cursor: pointer !important; transition: all 0.2s ease !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; border: 1px solid transparent !important; background: transparent !important; width: 100% !important; text-align: left !important; } .brainkb-assistant-chat .download-option:hover { background-color: #f0fdf4 !important; border-color: #10b981 !important; transform: translateX(4px) !important; } .brainkb-assistant-chat .download-option .icon { font-size: 18px !important; width: 20px !important; height: 20px !important; display: flex !important; align-items: center !important; justify-content: center !important; flex-shrink: 0 !important; } /* Download button container - fixed positioning */ .brainkb-assistant-chat .download-container { position: relative !important; display: inline-block !important; z-index: 10 !important; } /* Table header with download button - fixed layout */ .brainkb-assistant-chat .table-header { display: flex !important; align-items: center !important; justify-content: space-between !important; padding: 24px 28px 20px 28px !important; border-bottom: 2px solid #e2e8f0 !important; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%) !important; position: relative !important; min-height: 70px !important; box-sizing: border-box !important; } .brainkb-assistant-chat .table-title { font-size: 18px !important; color: #1e293b !important; font-weight: 700 !important; display: flex !important; align-items: center !important; gap: 12px !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) !important; flex: 1 !important; word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; } .brainkb-assistant-chat .table-title::before { content: '📊' !important; font-size: 22px !important; } /* Add a pulsing animation to draw attention */ @keyframes pulse { 0% { box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3) !important; } 50% { box-shadow: 0 4px 20px rgba(16, 185, 129, 0.5) !important; } 100% { box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3) !important; } } .brainkb-assistant-chat .download-button { animation: pulse 2s infinite !important; } .brainkb-assistant-chat .download-button:hover { animation: none !important; } /* Fix layout issues - FIXED */ .brainkb-assistant-chat { max-height: 100% !important; overflow: hidden !important; display: flex !important; flex-direction: column !important; box-sizing: border-box !important; } .brainkb-assistant-chat .messages { flex: 1 !important; overflow-y: auto !important; padding: 20px !important; box-sizing: border-box !important; word-wrap: break-word !important; overflow-wrap: break-word !important; hyphens: auto !important; } /* Fix floating button positioning */ .brainkb-assistant-container { position: fixed !important; bottom: 24px !important; right: 24px !important; z-index: 999999 !important; } .brainkb-assistant-button { position: fixed !important; bottom: 24px !important; right: 24px !important; z-index: 999999 !important; } /* Fix input area clipping */ .brainkb-assistant-chat .input-area { padding: 20px 24px !important; border-top: 1px solid #e2e8f0 !important; background: white !important; flex-shrink: 0 !important; min-height: 90px !important; box-sizing: border-box !important; } /* Fix quick actions layout */ .brainkb-assistant-chat .quick-actions { display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 12px !important; padding: 20px 24px !important; background: #f9fafb !important; border-top: 1px solid #e5e7eb !important; flex-shrink: 0 !important; min-height: 100px !important; box-sizing: border-box !important; } /* Responsive improvements - FIXED */ @media (max-width: 480px) { .brainkb-assistant-header { padding: 16px 20px !important; min-height: 60px !important; } .header-title { font-size: 18px !important; } .header-subtitle { font-size: 13px !important; } .quick-actions { padding: 16px 20px !important; gap: 10px !important; grid-template-columns: repeat(2, 1fr) !important; } .quick-action-button { padding: 10px 12px !important; min-height: 60px !important; } .quick-action-button .text { font-size: 10px !important; } .message-bubble { padding: 14px 18px !important; font-size: 13px !important; } .input-area { padding: 14px 18px !important; min-height: 56px !important; } .input-field { font-size: 13px !important; } }