Spaces:
Sleeping
Sleeping
| /* βββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| VisionQuery AI β Taipy Custom Styles | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* ββ Fonts & Base ββββββββββββββββββββββββββββββββββββββββ */ | |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); | |
| body, .taipy-gui { | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| background: linear-gradient(135deg, #f0f4ff 0%, #faf5ff 100%) ; | |
| min-height: 100vh; | |
| } | |
| /* ββ Navigation βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .taipy-navbar { | |
| background: linear-gradient(90deg, #3730a3 0%, #6d28d9 100%) ; | |
| box-shadow: 0 2px 20px rgba(55, 48, 163, 0.35) ; | |
| padding: 0.5rem 2rem ; | |
| } | |
| .taipy-navbar a { | |
| color: rgba(255,255,255,0.85) ; | |
| font-weight: 500 ; | |
| letter-spacing: 0.02em ; | |
| font-size: 0.95rem ; | |
| transition: color 0.2s ease ; | |
| } | |
| .taipy-navbar a:hover, | |
| .taipy-navbar a.active { | |
| color: #ffffff ; | |
| background: rgba(255,255,255,0.15) ; | |
| border-radius: 6px ; | |
| } | |
| /* ββ Page Header βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .page-header { | |
| text-align: center; | |
| padding: 2.5rem 1rem 1.5rem ; | |
| } | |
| .page-header h1 { | |
| font-size: 2.4rem ; | |
| font-weight: 700 ; | |
| background: linear-gradient(135deg, #3730a3, #7c3aed) ; | |
| -webkit-background-clip: text ; | |
| -webkit-text-fill-color: transparent ; | |
| background-clip: text ; | |
| margin-bottom: 0.3rem ; | |
| } | |
| .page-header h3 { | |
| font-size: 1rem ; | |
| color: #64748b ; | |
| font-weight: 400 ; | |
| } | |
| /* ββ Main Layout βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .main-layout { | |
| max-width: 1300px; | |
| margin: 0 auto; | |
| padding: 0 1.5rem 2rem ; | |
| } | |
| /* ββ Cards βββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .card, .panel { | |
| background: #ffffff ; | |
| border-radius: 16px ; | |
| padding: 1.75rem ; | |
| box-shadow: 0 4px 24px rgba(0,0,0,0.07) ; | |
| border: 1px solid rgba(226,232,240,0.8) ; | |
| } | |
| /* ββ Upload Area βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .upload-btn button, | |
| .taipy-file-selector button { | |
| background: linear-gradient(135deg, #6366f1, #8b5cf6) ; | |
| color: white ; | |
| border: none ; | |
| border-radius: 10px ; | |
| padding: 0.65rem 1.5rem ; | |
| font-weight: 600 ; | |
| font-size: 0.95rem ; | |
| cursor: pointer ; | |
| transition: all 0.2s ease ; | |
| width: 100% ; | |
| margin-bottom: 1rem ; | |
| } | |
| .upload-btn button:hover { | |
| transform: translateY(-1px) ; | |
| box-shadow: 0 6px 20px rgba(99, 102, 241, 0.4) ; | |
| } | |
| /* ββ Image Preview βββββββββββββββββββββββββββββββββββββββββ */ | |
| .preview-img img { | |
| border-radius: 12px ; | |
| max-height: 280px ; | |
| object-fit: contain ; | |
| background: #f8fafc ; | |
| border: 1px solid #e2e8f0 ; | |
| width: 100% ; | |
| margin: 0.75rem 0 ; | |
| } | |
| /* ββ Label Input βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .fullwidth, | |
| .label-input { | |
| width: 100% ; | |
| } | |
| .label-input textarea, | |
| .label-input .taipy-input textarea { | |
| width: 100% ; | |
| border-radius: 10px ; | |
| border: 2px solid #e2e8f0 ; | |
| padding: 0.75rem 1rem ; | |
| font-size: 0.9rem ; | |
| font-family: inherit ; | |
| transition: border-color 0.2s ease ; | |
| resize: vertical ; | |
| } | |
| .label-input textarea:focus { | |
| border-color: #6366f1 ; | |
| outline: none ; | |
| } | |
| /* ββ Analyze Button ββββββββββββββββββββββββββββββββββββββββ */ | |
| .analyze-btn button { | |
| background: linear-gradient(135deg, #4f46e5, #7c3aed) ; | |
| color: white ; | |
| border-radius: 10px ; | |
| padding: 0.8rem 1.5rem ; | |
| font-size: 1rem ; | |
| font-weight: 700 ; | |
| letter-spacing: 0.02em ; | |
| width: 100% ; | |
| border: none ; | |
| cursor: pointer ; | |
| transition: all 0.2s ease ; | |
| margin-top: 0.5rem ; | |
| margin-bottom: 0.4rem ; | |
| } | |
| .analyze-btn button:hover:not(:disabled) { | |
| transform: translateY(-2px) ; | |
| box-shadow: 0 8px 25px rgba(79, 70, 229, 0.45) ; | |
| } | |
| .analyze-btn button:disabled { | |
| opacity: 0.65 ; | |
| cursor: not-allowed ; | |
| } | |
| /* ββ Reset Button ββββββββββββββββββββββββββββββββββββββββββ */ | |
| .reset-btn button { | |
| background: transparent ; | |
| color: #64748b ; | |
| border: 1.5px solid #e2e8f0 ; | |
| border-radius: 10px ; | |
| padding: 0.6rem 1.5rem ; | |
| font-size: 0.9rem ; | |
| font-weight: 500 ; | |
| width: 100% ; | |
| cursor: pointer ; | |
| transition: all 0.2s ease ; | |
| } | |
| .reset-btn button:hover { | |
| border-color: #94a3b8 ; | |
| background: #f8fafc ; | |
| } | |
| /* ββ Status Text βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .status-text p, .status-text span { | |
| font-size: 0.9rem ; | |
| color: #475569 ; | |
| font-weight: 500 ; | |
| margin-top: 0.75rem ; | |
| } | |
| .model-tag p, .model-tag span { | |
| font-size: 0.78rem ; | |
| color: #94a3b8 ; | |
| font-family: 'SFMono-Regular', Consolas, monospace ; | |
| margin-top: 0.25rem ; | |
| } | |
| /* ββ Winner Card βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .winner-card { | |
| background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%) ; | |
| border-radius: 14px ; | |
| padding: 1.25rem 1.5rem ; | |
| margin-bottom: 1.25rem ; | |
| border: none ; | |
| color: white ; | |
| box-shadow: 0 6px 24px rgba(79, 70, 229, 0.35) ; | |
| } | |
| .winner-card p, | |
| .winner-card span, | |
| .winner-card h1, | |
| .winner-card h2, | |
| .winner-card h3 { | |
| color: white ; | |
| } | |
| .winner-label p, .winner-label span { | |
| font-size: 1.4rem ; | |
| font-weight: 700 ; | |
| color: white ; | |
| text-transform: capitalize ; | |
| } | |
| .winner-score p, .winner-score span { | |
| font-size: 2rem ; | |
| font-weight: 800 ; | |
| color: #fbbf24 ; | |
| } | |
| /* ββ Score Table βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .score-table { | |
| margin-top: 1rem ; | |
| } | |
| .score-table .taipy-table table { | |
| border-radius: 10px ; | |
| overflow: hidden ; | |
| font-size: 0.88rem ; | |
| } | |
| .score-table .taipy-table thead th { | |
| background: #4f46e5 ; | |
| color: white ; | |
| font-weight: 600 ; | |
| padding: 0.65rem 1rem ; | |
| } | |
| .score-table .taipy-table tbody tr:nth-child(even) { | |
| background: #f8fafc ; | |
| } | |
| .score-table .taipy-table tbody tr:hover { | |
| background: #eef2ff ; | |
| } | |
| /* ββ About Page Cards ββββββββββββββββββββββββββββββββββββββ */ | |
| .problem-card { | |
| border-left: 4px solid #ef4444 ; | |
| } | |
| .solution-card { | |
| border-left: 4px solid #22c55e ; | |
| } | |
| .tech-card { | |
| border-top: 3px solid #6366f1 ; | |
| text-align: center ; | |
| } | |
| .use-card { | |
| border-radius: 12px ; | |
| border-top: 3px solid #8b5cf6 ; | |
| } | |
| .use-card h3 { | |
| font-size: 1rem ; | |
| margin-bottom: 0.5rem ; | |
| } | |
| /* ββ Tables (About page) βββββββββββββββββββββββββββββββββββ */ | |
| table { | |
| width: 100% ; | |
| border-collapse: collapse ; | |
| } | |
| table th { | |
| background: #f1f5f9 ; | |
| font-weight: 600 ; | |
| padding: 0.6rem 1rem ; | |
| text-align: left ; | |
| } | |
| table td { | |
| padding: 0.55rem 1rem ; | |
| border-bottom: 1px solid #e2e8f0 ; | |
| } | |
| /* ββ Dividers ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| hr { | |
| border: none ; | |
| border-top: 1px solid #e2e8f0 ; | |
| margin: 1.5rem 0 ; | |
| } | |
| /* ββ Headings ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| h2 { color: #1e293b ; font-size: 1.35rem ; font-weight: 700 ; } | |
| h3 { color: #334155 ; font-size: 1.05rem ; font-weight: 600 ; } | |
| h4 { color: #475569 ; font-size: 0.9rem ; font-weight: 600 ; text-transform: uppercase ; letter-spacing: 0.05em ; } | |
| /* ββ Responsive ββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 768px) { | |
| .page-header h1 { font-size: 1.8rem ; } | |
| .main-layout { padding: 0 0.75rem 1.5rem ; } | |
| .card, .panel { padding: 1.25rem ; } | |
| } | |