Spaces:
Build error
Build error
| body, | |
| html { | |
| margin: 0; | |
| padding: 0; | |
| height: 100%; | |
| overflow-x: hidden; | |
| } | |
| body::before { | |
| content: ''; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background-image: | |
| linear-gradient(rgba(59, 130, 246, 0.03) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(59, 130, 246, 0.03) 1px, transparent 1px); | |
| background-size: 60px 60px; | |
| pointer-events: none; | |
| z-index: 0; | |
| background: | |
| radial-gradient(circle at 20% 15%, rgba(59, 130, 246, 0.12), transparent 40%), | |
| radial-gradient(circle at 80% 25%, rgba(139, 92, 246, 0.1), transparent 45%), | |
| radial-gradient(circle at 50% 70%, rgba(16, 185, 129, 0.08), transparent 50%), | |
| radial-gradient(circle at 10% 85%, rgba(236, 72, 153, 0.08), transparent 45%), | |
| linear-gradient(135deg, #0a0e27 0%, #1a1f3a 25%, #0f1629 50%, #1e2139 75%, #0d1425 100%) ; | |
| /* animation: gridScroll 30s linear infinite; */ | |
| } | |
| /* Hexagon pattern overlay */ | |
| body::after { | |
| content: ''; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background-image: | |
| repeating-linear-gradient(45deg, transparent, transparent 25px, rgba(174, 246, 59, 0.015) 35px, rgba(93, 205, 18, 0.015) 70px), | |
| repeating-linear-gradient(-45deg, transparent, transparent 25px, rgba(139, 92, 246, 0.015) 35px, rgba(139, 92, 246, 0.015) 70px); | |
| pointer-events: none; | |
| z-index: 0; | |
| opacity: 0.6; | |
| } | |
| /* ------------------------- */ | |
| /* FORCE GRADIO TO NOT WRAP */ | |
| /* ------------------------- */ | |
| /* Outer Gradio container */ | |
| .gradio-container, | |
| .gradio-container .wrap, | |
| .gradio-container .contain { | |
| display: flex ; | |
| flex-wrap: nowrap ; | |
| justify-content: space-between ; | |
| align-items: stretch ; | |
| } | |
| /* Prevent Gradio auto-min-width */ | |
| .gradio-container .contain>div[id^="component-"] { | |
| min-width: auto ; | |
| flex: 1 ; | |
| } | |
| /* Space between cards */ | |
| .gradio-container .contain>div[id^="component-"]>.gr-group, | |
| .gradio-container .contain>div[id^="component-"]>div { | |
| margin: 10px 15px ; | |
| } | |
| .gradio-container.gradio-container-6-1-0 .contain input[class*="svelte-"] { | |
| color: white; | |
| } | |
| /* .gradio-container { | |
| max-width: 100% !important; | |
| width: 100% !important; | |
| margin: 0 !important; | |
| padding: 0 !important; | |
| background-color: #17203D !important; | |
| min-height: 100vh; | |
| } */ | |
| .header-box { | |
| position: relative; | |
| padding: 0px 30px; | |
| background: | |
| radial-gradient(circle at 20% 10%, rgba(255, 255, 255, 0.25), transparent 55%), | |
| radial-gradient(circle at 85% 20%, rgba(45, 135, 255, 0.22), transparent 70%), | |
| linear-gradient(135deg, #0e1a2b, #0f1032, #03011a); | |
| color: white; | |
| border-bottom-left-radius: 40px; | |
| border-bottom-right-radius: 40px; | |
| box-shadow: 0 50px 90px -20px rgba(0, 0, 0, 0.6); | |
| display: flex; | |
| justify-content: space-; | |
| align-items: center; | |
| /* width:100%; */ | |
| } | |
| .header-title { | |
| font-size: 28px; | |
| font-weight: bold; | |
| color: white; | |
| margin: 0; | |
| text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); | |
| } | |
| .compact-section { | |
| background-color: rgba(255, 255, 255, 0.95); | |
| padding: 12px; | |
| border-radius: 10px; | |
| margin: 8px; | |
| height: calc(100vh - 180px); | |
| overflow-y: auto; | |
| } | |
| .card-box { | |
| background-color: rgba(255, 255, 255, 0.95); | |
| padding: 15px; | |
| border-radius: 12px; | |
| margin: 10px; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| border: 1px solid #e0e0e0; | |
| } | |
| /* Compact Upload Box */ | |
| .compact-upload-box { | |
| background-color: rgba(255, 255, 255, 0.95); | |
| padding: 12px; | |
| border-radius: 12px; | |
| margin: 10px; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| border: 1px solid #e0e0e0; | |
| max-width: 280px; | |
| } | |
| .compact-upload-box .upload-container { | |
| height: 180px ; | |
| min-height: 180px ; | |
| } | |
| .compact-upload-box input[type="file"] { | |
| height: 140px ; | |
| min-height: 140px ; | |
| } | |
| .how-to-use h3, | |
| .how-to-use li { | |
| color: white; | |
| } | |
| .how-to-use { | |
| background: rgba(255, 255, 255, 0.12); | |
| /* frosted glass transparency */ | |
| backdrop-filter: blur(12px) saturate(160%); | |
| /* glass blur effect */ | |
| -webkit-backdrop-filter: blur(12px) saturate(160%); | |
| border-radius: 18px; | |
| border: 1px solid rgba(255, 255, 255, 0.25); | |
| margin-bottom: 20px; | |
| max-height: 196px; | |
| height: 100%; | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25); | |
| /* soft floating shadow */ | |
| transition: all 0.3s ease; | |
| } | |
| .how-to-use:hover { | |
| background: rgba(255, 255, 255, 0.18); | |
| border-color: rgba(255, 255, 255, 0.4); | |
| transform: translateY(-3px); | |
| } | |
| .upload-card { | |
| background: rgba(255, 255, 255, 0.12); | |
| backdrop-filter: blur(14px) saturate(160%); | |
| -webkit-backdrop-filter: blur(14px) saturate(160%); | |
| max-height: 100px; | |
| height: 100%; | |
| padding: 22px; | |
| border-radius: 18px; | |
| border: 1px solid rgba(255, 255, 255, 0.25); | |
| box-shadow: 0 6px 26px rgba(0, 0, 0, 0.25); | |
| transition: 0.3s ease; | |
| } | |
| .first-row { | |
| max-height: 250px; | |
| height: 100%; | |
| } | |
| .upload-card:hover { | |
| background: rgba(255, 255, 255, 0.18); | |
| border-color: rgba(255, 255, 255, 0.35); | |
| } | |
| /* Floating Ask Me Button */ | |
| button.floating-chat-btn, | |
| .floating-chat-btn { | |
| position: fixed ; | |
| bottom: 30px ; | |
| right: 30px ; | |
| z-index: 1000 ; | |
| width: 65px ; | |
| height: 65px ; | |
| min-width: 65px ; | |
| min-height: 65px ; | |
| max-width: 65px ; | |
| max-height: 65px ; | |
| border-radius: 50% ; | |
| padding: 0 ; | |
| margin: 0 ; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) ; | |
| border: 3px solid rgba(255, 255, 255, 0.3) ; | |
| box-shadow: 0 8px 24px rgba(102, 126, 234, 0.6) ; | |
| cursor: pointer ; | |
| font-size: 32px ; | |
| line-height: 1 ; | |
| transition: all 0.3s ease ; | |
| display: flex ; | |
| align-items: center ; | |
| justify-content: center ; | |
| } | |
| button.floating-chat-btn:hover, | |
| .floating-chat-btn:hover { | |
| transform: scale(1.15) rotate(5deg) ; | |
| box-shadow: 0 10px 30px rgba(102, 126, 234, 0.8) ; | |
| border-color: rgba(255, 255, 255, 0.5) ; | |
| } | |
| /* Chat Popup Container */ | |
| .chat-popup-box { | |
| position: fixed ; | |
| bottom: 110px ; | |
| right: 30px ; | |
| width: 480px ; | |
| max-height: 75vh ; | |
| z-index: 999 ; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(250, 250, 255, 0.98) 100%) ; | |
| border-radius: 20px ; | |
| box-shadow: 0 12px 45px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(102, 126, 234, 0.2) ; | |
| overflow: hidden ; | |
| animation: slideInUp 0.3s ease-out ; | |
| } | |
| @keyframes slideInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Chat Header */ | |
| .chat-header { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) ; | |
| padding: 20px 24px ; | |
| color: white ; | |
| border-radius: 20px 20px 0 0 ; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) ; | |
| } | |
| .chat-header h3 { | |
| margin: 0 ; | |
| font-size: 20px ; | |
| font-weight: 600 ; | |
| color: white ; | |
| text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) ; | |
| } | |
| /* Chat Content */ | |
| .chat-content-area { | |
| padding: 20px ; | |
| max-height: calc(75vh - 80px) ; | |
| overflow-y: auto ; | |
| background: transparent ; | |
| pointer-events: auto ; | |
| position: relative ; | |
| z-index: 1 ; | |
| } | |
| .chat-content-area>* { | |
| margin-bottom: 15px ; | |
| } | |
| /* Sample Questions */ | |
| .sample-questions-box { | |
| background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) ; | |
| border-radius: 12px ; | |
| padding: 15px 18px ; | |
| margin-bottom: 18px ; | |
| border: 1px solid rgba(102, 126, 234, 0.15) ; | |
| } | |
| .sample-questions-box h4 { | |
| margin: 0 0 12px 0 ; | |
| color: #333 ; | |
| font-size: 15px ; | |
| font-weight: 600 ; | |
| } | |
| .sample-q-text { | |
| color: rgb(0, 0, 0) ; | |
| font-size: 13px ; | |
| margin: 0px ; | |
| line-height: 1.15 ; | |
| padding: 0px ; | |
| } | |
| .sample-q-text p { | |
| color: rgb(0, 0, 0) ; | |
| margin: 0px ; | |
| padding: 0px ; | |
| } | |
| /* Question Input */ | |
| .question-input-box { | |
| margin-top: 20px ; | |
| margin-bottom: 12px ; | |
| } | |
| .question-input-box h4 { | |
| margin: 0 0 10px 0 ; | |
| color: #333 ; | |
| font-size: 15px ; | |
| font-weight: 600 ; | |
| } | |
| /* Minimal textbox styling - let Gradio handle rendering */ | |
| .chat-content-area .chat-question-input { | |
| margin: 12px 0 ; | |
| } | |
| .chat-content-area textarea, | |
| .chat-content-area input[type="text"] { | |
| background: #ffffff ; | |
| border: 2px solid #667eea ; | |
| border-radius: 10px ; | |
| padding: 14px ; | |
| font-size: 14px ; | |
| } | |
| .chat-content-area textarea:focus, | |
| .chat-content-area input:focus { | |
| border-color: #764ba2 ; | |
| box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.15) ; | |
| outline: none ; | |
| } | |
| /* Submit Button in Chat */ | |
| .chat-submit-btn { | |
| width: 100% ; | |
| padding: 14px ; | |
| margin: 15px 0 ; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) ; | |
| border: none ; | |
| border-radius: 10px ; | |
| color: white ; | |
| font-size: 16px ; | |
| font-weight: 600 ; | |
| cursor: pointer ; | |
| transition: all 0.3s ease ; | |
| box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3) ; | |
| } | |
| .chat-submit-btn:hover { | |
| transform: translateY(-2px) ; | |
| box-shadow: 0 6px 18px rgba(102, 126, 234, 0.5) ; | |
| } | |
| /* Response Section */ | |
| .response-box { | |
| margin-top: 20px ; | |
| border-top: 2px solid #e9ecef ; | |
| padding-top: 20px ; | |
| } | |
| .response-box h4 { | |
| margin: 0 0 15px 0 ; | |
| color: #333 ; | |
| font-size: 15px ; | |
| font-weight: 600 ; | |
| } | |
| /* Tabs in Chat */ | |
| .chat-content-area .gr-tabs { | |
| background: transparent ; | |
| border: none ; | |
| } | |
| .chat-content-area .gr-tab { | |
| color: #555 ; | |
| background: #f8f9fa ; | |
| border: 1px solid #e9ecef ; | |
| border-radius: 8px 8px 0 0 ; | |
| padding: 10px 16px ; | |
| margin-right: 4px ; | |
| } | |
| .chat-content-area .gr-tab.selected { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) ; | |
| color: white ; | |
| border-color: #667eea ; | |
| } | |
| /* Output fields in chat */ | |
| .chat-content-area .gr-textbox, | |
| .chat-content-area .gr-plot, | |
| .chat-content-area .gr-dataframe { | |
| background: #ffffff ; | |
| border: 1px solid #e9ecef ; | |
| border-radius: 10px ; | |
| padding: 12px ; | |
| } | |
| .chat-content-area .gr-textbox textarea { | |
| color: #333 ; | |
| background: #f8f9fa ; | |
| border: 1px solid #e9ecef ; | |
| } | |
| /* Scrollbar for chat content */ | |
| .chat-content-area::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .chat-content-area::-webkit-scrollbar-track { | |
| background: rgba(0, 0, 0, 0.05); | |
| border-radius: 10px; | |
| } | |
| .chat-content-area::-webkit-scrollbar-thumb { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| border-radius: 10px; | |
| } | |
| .chat-content-area::-webkit-scrollbar-thumb:hover { | |
| background: linear-gradient(135deg, #764ba2 0%, #667eea 100%); | |
| } | |
| /* ------------------------- */ | |
| /* FORCE GRADIO TO NOT WRAP */ | |
| /* ------------------------- */ | |
| .first-row, | |
| .gr-row, | |
| .gr-column { | |
| display: flex ; | |
| flex-wrap: nowrap ; | |
| justify-content: space-between ; | |
| align-items: stretch ; | |
| } | |
| /* General card layout - VISIBLE BORDERS */ | |
| .upload-section, | |
| .how-to-use, | |
| .card-box, | |
| .upload-card, | |
| .gr-group, | |
| .gr-column>.gr-group, | |
| .gr-column>div.gr-group { | |
| background: rgba(255, 255, 255, 0.03) ; | |
| backdrop-filter: blur(14px) saturate(160%) ; | |
| -webkit-backdrop-filter: blur(14px) saturate(160%) ; | |
| border-radius: 18px ; | |
| border: 3px solid rgba(255, 255, 255, 0.7) ; | |
| padding: 20px ; | |
| box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25) ; | |
| transition: 0.25s ease-in-out ; | |
| } | |
| /* Hover effect */ | |
| .upload-section:hover, | |
| .how-to-use:hover, | |
| .gr-group:hover { | |
| transform: translateY(-4px) ; | |
| border-color: rgba(255, 255, 255, 0.7) ; | |
| background: rgba(255, 255, 255, 0.06) ; | |
| } | |
| /* REMOVE borders from specific sections */ | |
| .header-box, | |
| .header-box * { | |
| border: none ; | |
| } | |
| /* Remove borders from Sample Questions markdown sections */ | |
| .gr-markdown h3:contains("Sample Questions"), | |
| .gr-markdown:has(h3) { | |
| border: none ; | |
| } | |
| /* Remove borders from Analysis Results and related output sections */ | |
| [id*="output"], | |
| [id*="answer"], | |
| [id*="result"], | |
| .gr-textbox, | |
| .gr-plot, | |
| .gr-dataframe { | |
| border: 1px solid rgba(255, 255, 255, 0.1) ; | |
| } | |
| /* TARGET THE EXACT 3 BOXES BY ID - WHITE BORDERS ONLY */ | |
| #display-format-box, | |
| #analysis-type-box, | |
| #visualization-box { | |
| border: 6px solid #FFFFFF ; | |
| border-radius: 18px ; | |
| padding: 20px ; | |
| } | |
| /* ------------------------- */ | |
| /* CARD SIZING & SPACING */ | |
| /* ------------------------- */ | |
| .first-row>div, | |
| .first-row>.gr-column, | |
| .first-row>.gr-group { | |
| flex: 1 ; | |
| margin: 10px 15px ; | |
| } | |
| /* Prevent shrinking */ | |
| .gr-group { | |
| flex-shrink: 0 ; | |
| } | |
| /* Upload + Display + How-to-use row fixes */ | |
| .first-row { | |
| margin-top: 20px ; | |
| padding: 0 25px ; | |
| margin-bottom: 80px ; | |
| min-height: 200px ; | |
| } | |
| /* Second row - fixed spacing */ | |
| .second-row { | |
| margin-top: 80px ; | |
| padding: 0 25px ; | |
| clear: both ; | |
| } | |
| /* Ensure proper spacing between rows */ | |
| .first-row .gr-group { | |
| margin-bottom: 20px ; | |
| } | |
| /* Upload section dynamic height */ | |
| #upload-wrapper { | |
| min-height: 180px ; | |
| transition: height 0.3s ease ; | |
| } | |
| /* When upload info is present, expand */ | |
| #upload-wrapper .upload-info:not(:empty) { | |
| min-height: 60px ; | |
| padding: 10px ; | |
| margin-top: 10px ; | |
| } | |
| .upload-section { | |
| width: 100% ; | |
| min-height: 165px ; | |
| } | |
| /* Display Format card width */ | |
| .display-format-card { | |
| min-width: 260px ; | |
| } | |
| /* ------------------------- */ | |
| /* SECOND ROW (Analysis, Viz, Handling) */ | |
| /* ------------------------- */ | |
| .gr-row:nth-of-type(2)>.gr-group { | |
| flex: 1 ; | |
| margin: 10px 15px ; | |
| min-height: 170px ; | |
| } | |
| /* ------------------------- */ | |
| /* DATA PREVIEW + ANALYSIS */ | |
| /* ------------------------- */ | |
| .gr-column>.gr-markdown, | |
| .gr-dataframe, | |
| .gr-plot, | |
| .gr-textbox { | |
| background: rgba(255, 255, 255, 0.12) ; | |
| border-radius: 14px ; | |
| padding: 16px ; | |
| border: 1px solid rgba(255, 255, 255, 0.15) ; | |
| } | |
| /* Improve titles */ | |
| .gr-markdown h3, | |
| .gr-markdown h1, | |
| .gr-markdown h2, | |
| .gr-markdown h4, | |
| .gr-markdown h5, | |
| .gr-markdown h6 { | |
| color: white ; | |
| text-shadow: 0 0 6px rgba(255, 255, 255, 0.3) ; | |
| } | |
| /* Force all headings white */ | |
| h1, | |
| h2, | |
| h3, | |
| h4, | |
| h5, | |
| h6 { | |
| color: white ; | |
| } | |
| /* Specific markdown content */ | |
| .gr-group .gr-markdown, | |
| .gr-group .gr-markdown * { | |
| color: white ; | |
| } | |
| /* Make internal elements visible with white text */ | |
| .gr-textbox, | |
| .gr-textbox input, | |
| .gr-textbox textarea, | |
| .gr-file, | |
| .gr-file input { | |
| background: rgba(255, 255, 255, 0.05) ; | |
| border: 1px solid rgba(255, 255, 255, 0.1) ; | |
| border-radius: 8px ; | |
| color: white ; | |
| } | |
| .gr-dropdown:hover, | |
| .gr-textbox:hover, | |
| .gr-file:hover { | |
| background: rgba(255, 255, 255, 0.08) ; | |
| border-color: rgba(255, 255, 255, 0.15) ; | |
| } | |
| .gr-dropdown:focus-within, | |
| .gr-textbox:focus-within, | |
| .gr-file:focus-within { | |
| background: rgba(255, 255, 255, 0.1) ; | |
| border-color: rgba(59, 130, 246, 0.4) ; | |
| } | |
| /* Dropdown options */ | |
| .gr-dropdown .dropdown-content, | |
| .gr-dropdown .dropdown-menu { | |
| background: rgba(30, 41, 59, 0.95) ; | |
| border: 1px solid rgba(255, 255, 255, 0.1) ; | |
| backdrop-filter: blur(10px) ; | |
| } | |
| /* Labels */ | |
| .gr-form label { | |
| color: #d1d5db ; | |
| } | |
| /* Make all text content white */ | |
| .gr-markdown, | |
| .gr-markdown h1, | |
| .gr-markdown h2, | |
| .gr-markdown h3, | |
| .gr-markdown h4, | |
| .gr-markdown p, | |
| .gr-html, | |
| .gr-html ul, | |
| .gr-html li, | |
| .gr-button, | |
| .gr-dropdown label, | |
| .gr-textbox label, | |
| .gr-file label, | |
| span, | |
| div, | |
| p { | |
| background: transparent ; | |
| color: white ; | |
| } | |
| /* Dropdown styling - Force white text */ | |
| .gr-dropdown, | |
| .gr-dropdown select, | |
| .gr-dropdown .wrap, | |
| .gr-dropdown input, | |
| .gr-dropdown .selected-option { | |
| background: rgba(0, 0, 0, 0.3) ; | |
| color: white ; | |
| border: 1px solid rgba(255, 255, 255, 0.3) ; | |
| font-weight: 500 ; | |
| } | |
| /* Dropdown text visibility */ | |
| .gr-dropdown * { | |
| color: white ; | |
| } | |
| /* Dropdown options menu */ | |
| .gr-dropdown .dropdown-content, | |
| .gr-dropdown .dropdown-menu, | |
| .gr-dropdown option, | |
| .gr-dropdown select option { | |
| background: rgba(30, 41, 59, 0.95) ; | |
| color: white ; | |
| border: 1px solid rgba(255, 255, 255, 0.1) ; | |
| } | |
| /* Force all dropdown text white - AGGRESSIVE */ | |
| select, | |
| select option, | |
| .gr-dropdown select, | |
| .gr-dropdown select option, | |
| .gr-dropdown .wrap select, | |
| .gr-dropdown .wrap, | |
| .gr-dropdown input[type="text"], | |
| .gr-dropdown .selected-text, | |
| .gr-dropdown .current-selection { | |
| color: white ; | |
| background: rgba(0, 0, 0, 0.6) ; | |
| -webkit-text-fill-color: white ; | |
| text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8) ; | |
| } | |
| /* Gradio specific dropdown classes */ | |
| .gr-dropdown .wrap>*, | |
| .gr-dropdown .wrap input, | |
| .gr-dropdown .wrap select, | |
| .gr-dropdown .wrap .selected, | |
| .gr-dropdown .wrap .value { | |
| color: white ; | |
| background: rgba(0, 0, 0, 0.5) ; | |
| -webkit-text-fill-color: white ; | |
| } | |
| /* Override any theme colors */ | |
| * [class*="dropdown"] { | |
| color: white ; | |
| } | |
| * [class*="dropdown"] * { | |
| color: white ; | |
| } | |
| /* File upload text */ | |
| .gr-file .file-preview, | |
| .gr-file .upload-text { | |
| background: transparent ; | |
| color: white ; | |
| } | |
| /* Button text and borders - HIGHLY VISIBLE */ | |
| .gr-button, | |
| button { | |
| background: rgba(255, 255, 255, 0.05) ; | |
| border: 3px solid rgba(255, 255, 255, 0.5) ; | |
| color: white ; | |
| } | |
| /* ------------------------- */ | |
| /* BUTTON ENHANCEMENTS */ | |
| /* ------------------------- */ | |
| .gr-button-primary, | |
| button[class*="primary"] { | |
| background: linear-gradient(135deg, #4f63e4, #7a3cff) ; | |
| border-radius: 10px ; | |
| border: 3px solid rgba(255, 255, 255, 0.7) ; | |
| box-shadow: 0 4px 14px rgba(79, 99, 228, 0.4) ; | |
| transition: 0.25s ease ; | |
| } | |
| .gr-button-primary:hover, | |
| button[class*="primary"]:hover { | |
| transform: translateY(-3px) ; | |
| box-shadow: 0 6px 20px rgba(79, 99, 228, 0.55) ; | |
| border-color: rgba(255, 255, 255, 0.9) ; | |
| } | |
| .gr-button-secondary, | |
| button[class*="secondary"] { | |
| background: rgba(255, 255, 255, 0.12) ; | |
| border: 3px solid rgba(255, 255, 255, 0.6) ; | |
| border-radius: 10px ; | |
| } | |
| .gr-button-secondary:hover, | |
| button[class*="secondary"]:hover { | |
| background: rgba(255, 255, 255, 0.22) ; | |
| border-color: rgba(255, 255, 255, 0.8) ; | |
| } | |
| /* ------------------------- */ | |
| /* FIX MISALIGNED ELEMENTS */ | |
| /* ------------------------- */ | |
| .gr-group>* { | |
| width: 100% ; | |
| } | |
| .upload-section .gr-markdown { | |
| margin-bottom: 8px ; | |
| } | |
| .overflow-class { | |
| overflow: visible; | |
| } | |
| /* ---------- Upload wrapper: force size and glass style ---------- */ | |
| #upload-wrapper { | |
| width: 100% ; | |
| /* full width of its column */ | |
| min-width: 360px ; | |
| /* avoid collapsing on narrow screens */ | |
| max-width: 520px ; | |
| /* adjust as needed */ | |
| display: flex ; | |
| flex-direction: column ; | |
| gap: 12px ; | |
| padding: 20px ; | |
| margin: 8px 12px ; | |
| border-radius: 16px ; | |
| background: transparent; | |
| /* border: 1px solid rgba(255,255,255,0.12) !important; */ | |
| backdrop-filter: blur(18px) saturate(140%) ; | |
| -webkit-backdrop-filter: blur(18px) saturate(140%) ; | |
| box-shadow: 0 12px 30px rgba(2, 6, 23, 0.45) inset, 0 8px 28px rgba(6, 12, 40, 0.45) ; | |
| align-self: flex-start ; | |
| /* keep it aligned inside row */ | |
| } | |
| /* Make the title look consistent */ | |
| #upload-wrapper .upload-title h3 { | |
| color: #e6f0ff ; | |
| font-weight: 600 ; | |
| margin: 0 0 6px 0 ; | |
| } | |
| /* Make the file control visually large and centered */ | |
| #upload-wrapper .upload-card, | |
| #upload-wrapper .gr-file, | |
| #upload-wrapper input[type="file"] { | |
| width: 100% ; | |
| min-height: 110px ; | |
| padding: 16px ; | |
| border-radius: 12px ; | |
| background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)) ; | |
| border: 1px solid rgba(255, 255, 255, 0.06) ; | |
| box-shadow: 0 8px 20px rgba(12, 18, 40, 0.35) ; | |
| } | |
| /* dataset info text area - BLACK TEXT FOR VISIBILITY */ | |
| #upload-wrapper .upload-info, | |
| #upload-wrapper .gr-markdown { | |
| color: #000000 ; | |
| background: rgba(255, 255, 255, 0.85) ; | |
| padding: 12px ; | |
| border-radius: 8px ; | |
| font-size: 13px ; | |
| } | |
| /* Make the markdown text content black */ | |
| #upload-wrapper .upload-info *, | |
| #upload-wrapper .gr-markdown *, | |
| .upload-info, | |
| .upload-info strong, | |
| .upload-info p { | |
| color: #000000 ; | |
| } | |
| /* clear button alignment and style */ | |
| #upload-wrapper .upload-clear-btn { | |
| align-self: flex-end ; | |
| margin-top: 6px ; | |
| } | |
| /* if Gradio wraps the file input in an inner container */ | |
| #upload-wrapper [class*="file"], | |
| #upload-wrapper [class*="upload"] { | |
| width: 100% ; | |
| } | |
| /* Ensure it doesn't collapse when Gradio enforces min-width elsewhere */ | |
| #upload-wrapper>* { | |
| min-width: 0 ; | |
| } | |
| /* Optional responsive tweak: allow it to expand on larger screens */ | |
| @media (min-width: 1280px) { | |
| #upload-wrapper { | |
| max-width: 640px ; | |
| } | |
| } | |
| /* How to Use Box - Top Right Corner */ | |
| .how-to-use-sidebar { | |
| position: fixed ; | |
| top: 150px ; | |
| right: 20px ; | |
| left: auto ; | |
| transform: none ; | |
| width: 260px ; | |
| z-index: 1000 ; | |
| pointer-events: auto ; | |
| } | |
| .how-to-use-content { | |
| background: rgba(255, 255, 255, 0.12) ; | |
| backdrop-filter: blur(12px) saturate(160%) ; | |
| -webkit-backdrop-filter: blur(12px) saturate(160%) ; | |
| border-radius: 12px ; | |
| border: 1px solid rgba(255, 255, 255, 0.25) ; | |
| padding: 18px ; | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25) ; | |
| transition: all 0.3s ease ; | |
| } | |
| .how-to-use-content:hover { | |
| background: rgba(255, 255, 255, 0.18) ; | |
| border-color: rgba(255, 255, 255, 0.4) ; | |
| transform: translateY(-3px) ; | |
| } | |
| .how-to-use-content h3 { | |
| color: white ; | |
| margin: 0 0 10px 0 ; | |
| font-size: 17px ; | |
| font-weight: 600 ; | |
| text-shadow: 0 0 6px rgba(255, 255, 255, 0.3) ; | |
| } | |
| .how-to-use-content ul { | |
| list-style: none ; | |
| padding: 0 ; | |
| margin: 0 ; | |
| } | |
| .how-to-use-content li { | |
| color: white ; | |
| margin: 7px 0 ; | |
| padding-left: 0 ; | |
| line-height: 1.4 ; | |
| font-size: 13px ; | |
| opacity: 0.9 ; | |
| } | |
| /* Main container - Full width to cover left area */ | |
| .gradio-container { | |
| margin-left: 0 ; | |
| padding-left: 20px ; | |
| } | |
| /* Responsive: Remove margin on smaller screens */ | |
| @media (max-width: 1200px) { | |
| .gradio-container { | |
| margin-left: 0 ; | |
| padding-left: 0 ; | |
| } | |
| .how-to-use-sidebar { | |
| display: none ; | |
| } | |
| } | |
| /* Custom Dropdown Styling */ | |
| .custom-dropdown { | |
| width: 100%; | |
| } | |
| .custom-dropdown label { | |
| color: white ; | |
| font-size: 14px; | |
| margin-bottom: 8px; | |
| display: block; | |
| } | |
| .dropdown-container { | |
| position: relative; | |
| width: 100%; | |
| } | |
| .dropdown-button { | |
| background: white; | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| border-radius: 8px; | |
| padding: 12px 16px; | |
| cursor: pointer; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| color: #333; | |
| } | |
| .dropdown-button:hover { | |
| border-color: rgba(59, 130, 246, 0.5); | |
| } | |
| .dropdown-arrow { | |
| color: #666; | |
| font-size: 12px; | |
| } | |
| .dropdown-menu { | |
| display: none; | |
| position: absolute; | |
| top: 100%; | |
| left: 0; | |
| right: 0; | |
| background: white; | |
| border: 1px solid #ccc; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); | |
| max-height: 200px; | |
| overflow-y: auto; | |
| z-index: 1000; | |
| } | |
| .dropdown-item { | |
| padding: 12px 16px; | |
| cursor: pointer; | |
| color: #333; | |
| border-bottom: 1px solid #eee; | |
| } | |
| .dropdown-item:hover { | |
| background: #f0f8ff; | |
| } | |
| .dropdown-item.selected { | |
| background: #3b82f6; | |
| color: white; | |
| } | |
| .selected-columns { | |
| margin-top: 8px; | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| } | |
| .selected-tag { | |
| background: #3b82f6; | |
| color: white; | |
| padding: 4px 8px; | |
| border-radius: 6px; | |
| font-size: 12px; | |
| display: flex; | |
| align-items: center; | |
| gap: 4px; | |
| } | |
| .selected-tag span { | |
| cursor: pointer; | |
| font-weight: bold; | |
| opacity: 0.8; | |
| } | |
| .selected-tag span:hover { | |
| opacity: 1; | |
| } | |
| /* ========================= */ | |
| /* FIX: Prevent Dropdown Text Input */ | |
| /* ========================= */ | |
| /* Make dropdown input read-only - prevent typing */ | |
| .gr-dropdown input[type="text"] { | |
| cursor: pointer ; | |
| user-select: none ; | |
| caret-color: transparent ; | |
| } | |
| /* Allow clicking on the dropdown container itself */ | |
| .gr-dropdown .wrap { | |
| pointer-events: auto ; | |
| cursor: pointer ; | |
| } | |
| /* Ensure ALL dropdowns are clickable */ | |
| .gr-dropdown, | |
| .gr-dropdown *, | |
| .gr-dropdown button, | |
| .gr-dropdown .wrap, | |
| .gr-dropdown select { | |
| pointer-events: auto ; | |
| cursor: pointer ; | |
| } | |
| /* Make sure dropdown button/arrow is visible and clickable */ | |
| .gr-dropdown button, | |
| .gr-dropdown button svg, | |
| .gr-dropdown .icon, | |
| button[aria-label*="dropdown"], | |
| button[class*="dropdown"] { | |
| display: block ; | |
| visibility: visible ; | |
| opacity: 1 ; | |
| pointer-events: auto ; | |
| cursor: pointer ; | |
| } | |
| /* Ensure Group containers don't block dropdowns */ | |
| #display-format-box, | |
| #analysis-type-box, | |
| #visualization-box { | |
| pointer-events: auto ; | |
| } | |
| #display-format-box *, | |
| #analysis-type-box *, | |
| #visualization-box * { | |
| pointer-events: auto ; | |
| } | |
| /* Ensure column selector appears in correct order */ | |
| .gr-checkbox-group { | |
| order: 0 ; | |
| } | |
| /* FORCE Column Selector Labels to be BLACK - Very Specific */ | |
| [data-testid="checkbox-group"] label, | |
| [data-testid="checkbox-group"] label span, | |
| [data-testid="checkbox-group"] span, | |
| .wrap[data-testid="checkbox-group"] label, | |
| .wrap[data-testid="checkbox-group"] span, | |
| label[class*="svelte"] span, | |
| .checkbox-group label, | |
| .checkbox-group span { | |
| color: #000000 ; | |
| -webkit-text-fill-color: #000000 ; | |
| } | |
| /* Target any span inside checkbox labels */ | |
| input[type="checkbox"]+span, | |
| input[type="checkbox"]~span, | |
| label:has(input[type="checkbox"]) span { | |
| color: #000000 ; | |
| -webkit-text-fill-color: #000000 ; | |
| } | |
| /* Force all spans near checkboxes to be black */ | |
| span[class*="svelte"] { | |
| color: #000000 ; | |
| } | |
| /* Transparent background for checkbox container */ | |
| [data-testid="checkbox-group"], | |
| [data-testid="checkbox-group"]>div { | |
| background: transparent ; | |
| } | |
| /* Match wrap sizes for dropdowns */ | |
| div.wrap.svelte-vomtx { | |
| min-height: auto ; | |
| height: auto ; | |
| } | |
| div.wrap.svelte-vomtx, | |
| div.secondarywrap { | |
| padding: 8px ; | |
| } | |
| /* Make dropdown labels white */ | |
| .gr-dropdown label, | |
| .gr-dropdown .label { | |
| color: white ; | |
| } | |
| /* Display Format dropdown label - white text */ | |
| .gradio-container.gradio-container-4-20-0 .contain span[class*="svelte"] { | |
| color: rgb(255, 255, 255) ; | |
| } | |
| /* =========================================================== | |
| FIX: Force white text for the Gradio block-info label | |
| =========================================================== */ | |
| span[data-testid="block-info"], | |
| .gradio-container span[data-testid="block-info"] { | |
| color: #ffffff ; | |
| -webkit-text-fill-color: #ffffff ; | |
| } | |
| /* If the framework switches from <span> to <p>, also cover this */ | |
| p[data-testid="block-info"] { | |
| color: #ffffff ; | |
| -webkit-text-fill-color: #ffffff ; | |
| } | |
| .svelte-vomtxz.container { | |
| border: 2px solid white ; | |
| border-radius: 8px ; | |
| padding: 10px ; | |
| } | |
| /* Remove ALL purple outlines and focus states */ | |
| *, | |
| *:focus, | |
| *:focus-visible, | |
| *:active, | |
| button, | |
| button:focus, | |
| button:focus-visible, | |
| button:active, | |
| input, | |
| input:focus, | |
| input:focus-visible, | |
| textarea, | |
| textarea:focus, | |
| textarea:focus-visible, | |
| select, | |
| select:focus, | |
| .gr-button, | |
| .gr-button:focus, | |
| .gr-textbox, | |
| .gr-textbox:focus, | |
| .gr-tab, | |
| .gr-tab:focus, | |
| .gr-tab:active, | |
| [role="tab"], | |
| [role="tab"]:focus, | |
| [role="tab"]:active, | |
| .floating-chat-btn:focus, | |
| .chat-close-btn:focus, | |
| .chat-popup-box *, | |
| .chat-popup-box *:focus, | |
| .chat-popup-box *:active { | |
| outline: none ; | |
| box-shadow: none ; | |
| border: none ; | |
| } | |
| /* Force remove Gradio default focus styles */ | |
| .gradio-container *:focus { | |
| outline: none ; | |
| box-shadow: none ; | |
| } | |
| /* Remove browser default focus ring */ | |
| :focus { | |
| outline: none ; | |
| } | |
| /* Remove any purple/blue focus indicators */ | |
| *[style*="outline"], | |
| *[style*="box-shadow"] { | |
| outline: none ; | |
| box-shadow: none ; | |
| } |