Spaces:
Sleeping
Sleeping
| /* CSS Variables */ | |
| :root { | |
| --bg-primary: #0a0a0a; | |
| --bg-secondary: #1a1a1a; | |
| --bg-tertiary: #2a2a2a; | |
| --text-primary: #ffffff; | |
| --text-secondary: #cccccc; | |
| --accent-color: #B91D30; | |
| --border-color: #333333; | |
| --shadow-color: rgba(0, 0, 0, 0.3); | |
| --gradient-bg: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #0d1b1b 100%); | |
| } | |
| /* Hide image controls (rotate, flip, etc.) for all apps */ | |
| /* Exception: #imageControls in spatiotemporal_detection is for model selection, not image controls */ | |
| .image-controls:not(#imageControls), | |
| .compact-controls, | |
| .transform-buttons-compact, | |
| .status-display, | |
| .crop-instructions, | |
| .transform-btn-small:not(.reset-btn), | |
| .crop-content, | |
| .crop-container, | |
| .cropper-container, | |
| .cropper-view-box, | |
| .crop-overlay, | |
| .crop-btn, | |
| .transform-btn, | |
| .rotate-btn, | |
| .flip-btn { | |
| display: none ; | |
| visibility: hidden ; | |
| opacity: 0 ; | |
| height: 0 ; | |
| overflow: hidden ; | |
| } | |
| /* Ensure #imageControls can be shown for model selection in spatiotemporal detection */ | |
| /* This is the model selection div, not crop tools */ | |
| #imageControls { | |
| display: block ; | |
| visibility: visible ; | |
| opacity: 1 ; | |
| height: auto ; | |
| overflow: visible ; | |
| position: relative ; | |
| z-index: 10 ; | |
| } | |
| /* Hide crop-related elements in spatiotemporal detection */ | |
| #cropOverlay, | |
| .crop-instructions { | |
| display: none ; | |
| visibility: hidden ; | |
| opacity: 0 ; | |
| } | |
| /* Reset and Base Styles */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| font-style: normal; | |
| } | |
| /* Font Awesome fix */ | |
| .fa, .fas, .far, .fab { | |
| font-family: "Font Awesome 5 Free" ; | |
| font-weight: 900; | |
| } | |
| body { | |
| font-family: 'Times New Roman', serif; | |
| font-style: normal; | |
| font-weight: normal; | |
| line-height: 1.4; | |
| color: var(--text-primary); | |
| background: var(--gradient-bg); | |
| min-height: 100vh; | |
| transition: background 0.3s ease, color 0.3s ease; | |
| } | |
| .container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 0 20px; | |
| } | |
| /* Navigation */ | |
| .navbar { | |
| background: rgba(0, 0, 0, 0.95); | |
| backdrop-filter: blur(10px); | |
| -webkit-backdrop-filter: blur(10px); /* Safari support */ | |
| box-shadow: 0 2px 20px var(--shadow-color); | |
| border-bottom: 1px solid var(--accent-color); | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| z-index: 1000; | |
| height: 70px; | |
| transition: background 0.3s ease, border-color 0.3s ease; | |
| width: 100%; | |
| } | |
| .nav-container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 0 20px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| height: 70px; | |
| } | |
| .nav-logo { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 1.8rem; | |
| font-weight: 700; | |
| color: #B91D30; | |
| font-family: 'Times New Roman', 'Georgia', serif; | |
| position: relative; | |
| z-index: 1000; | |
| } | |
| .nav-logo-link { | |
| text-decoration: none; | |
| color: inherit; | |
| transition: color 0.3s ease; | |
| display: block; | |
| padding: 8px 12px; | |
| border-radius: 4px; | |
| } | |
| .nav-logo-link:hover { | |
| color: #ffffff; | |
| background-color: rgba(185, 29, 48, 0.1); | |
| } | |
| /* Ensure logo visibility across browsers */ | |
| .nav-logo span { | |
| display: inline-block; | |
| text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); | |
| -webkit-text-stroke: 0.5px rgba(0, 0, 0, 0.3); | |
| font-smoothing: antialiased; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| .nav-logo i { | |
| font-size: 1.8rem; | |
| } | |
| /* Animated quote */ | |
| .animated-quote { | |
| position: relative; | |
| width: 100%; | |
| height: 100vh; | |
| overflow: hidden; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| align-items: center; | |
| } | |
| .quote-text { | |
| font-size: 0.98rem; | |
| font-style: italic; | |
| font-family: 'Palatino', 'Palatino Linotype', 'Book Antiqua', 'Georgia', serif; | |
| color: #888888; | |
| margin: 0; | |
| white-space: nowrap; | |
| animation: slideLeftToRight 15s linear infinite; | |
| text-align: center; | |
| max-width: 90%; | |
| letter-spacing: 0.5px; | |
| transform: skew(-8deg); | |
| font-weight: 500; | |
| } | |
| .quote-attribution { | |
| font-size: 0.7rem; | |
| font-family: 'Courier New', 'Monaco', 'Menlo', 'Consolas', monospace; | |
| color: #666666; | |
| margin: 0.5rem 0 0 0; | |
| white-space: nowrap; | |
| animation: slideLeftToRight 15s linear infinite; | |
| text-align: center; | |
| font-weight: 500; | |
| letter-spacing: 0.3px; | |
| } | |
| @keyframes slideLeftToRight { | |
| 0% { | |
| transform: translateX(-100%); | |
| } | |
| 100% { | |
| transform: translateX(100%); | |
| } | |
| } | |
| .nav-menu { | |
| display: flex; | |
| gap: 30px; | |
| } | |
| .nav-link { | |
| text-decoration: none; | |
| color: #ffffff; | |
| font-weight: 500; | |
| padding: 10px 15px; | |
| border-radius: 8px; | |
| transition: all 0.3s ease; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .nav-link:hover, | |
| .nav-link.active { | |
| color: #B91D30; | |
| background: rgba(185, 29, 48, 0.1); | |
| } | |
| /* Main Content */ | |
| /* Development Banner - At bottom of page content, above footer */ | |
| .dev-banner { | |
| position: relative ; | |
| width: 100% ; | |
| background: linear-gradient(90deg, #B91D30 0%, #8B1523 100%) ; | |
| background-color: #B91D30 ; | |
| color: #ffffff ; | |
| padding: 16px 0 ; | |
| text-align: center ; | |
| margin-top: 2rem ; | |
| margin-bottom: 0 ; | |
| box-shadow: 0 -4px 20px rgba(185, 29, 48, 0.8) ; | |
| border-top: 3px solid rgba(255, 255, 255, 0.3) ; | |
| display: block ; | |
| visibility: visible ; | |
| opacity: 1 ; | |
| } | |
| .dev-banner-content { | |
| display: flex ; | |
| align-items: center ; | |
| justify-content: center ; | |
| gap: 15px ; | |
| font-size: 1.2rem ; | |
| font-weight: 800 ; | |
| letter-spacing: 2px ; | |
| text-transform: uppercase ; | |
| color: #ffffff ; | |
| text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5) ; | |
| } | |
| .dev-banner-content span { | |
| color: #ffffff ; | |
| font-weight: 800 ; | |
| } | |
| .dev-banner-content i { | |
| animation: pulse 2s ease-in-out infinite ; | |
| font-size: 1.3rem ; | |
| color: #ffffff ; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| 50% { | |
| opacity: 0.7; | |
| transform: scale(1.1); | |
| } | |
| } | |
| .main-content { | |
| margin-top: 70px ; /* Navbar (70px) only */ | |
| min-height: calc(100vh - 70px) ; | |
| padding: 1rem 0 ; | |
| overflow-y: visible ; | |
| display: flex ; | |
| flex-direction: column ; | |
| position: relative ; | |
| z-index: 1 ; | |
| } | |
| /* Hero Section */ | |
| .hero-section { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| height: 100%; | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 1rem 20px; | |
| text-align: center; | |
| } | |
| .hero-content { | |
| color: white; | |
| } | |
| .hero-title { | |
| font-size: 3.5rem; | |
| font-weight: 700; | |
| margin-bottom: 20px; | |
| display: flex; | |
| align-items: center; | |
| gap: 20px; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .hero-title i { | |
| color: #B91D30; | |
| } | |
| .hero-subtitle { | |
| font-size: 1.3rem; | |
| margin-bottom: 40px; | |
| opacity: 0.9; | |
| line-height: 1.5; | |
| } | |
| .hero-actions { | |
| display: flex; | |
| gap: 20px; | |
| flex-wrap: wrap; | |
| } | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 15px 30px; | |
| border: none; | |
| border-radius: 12px; | |
| font-size: 1.1rem; | |
| font-weight: 600; | |
| text-decoration: none; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| text-align: center; | |
| } | |
| .btn-primary { | |
| background: linear-gradient(135deg, #B91D30, #A00000); | |
| color: white; | |
| box-shadow: 0 4px 15px rgba(185, 29, 48, 0.3); | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 20px rgba(185, 29, 48, 0.4); | |
| } | |
| .btn-secondary { | |
| background: rgba(185, 29, 48, 0.2); | |
| color: white; | |
| border: 2px solid rgba(185, 29, 48, 0.5); | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .btn-secondary:hover { | |
| background: rgba(185, 29, 48, 0.3); | |
| transform: translateY(-2px); | |
| } | |
| .btn-large { | |
| padding: 18px 36px; | |
| font-size: 1.2rem; | |
| } | |
| .btn-small-text { | |
| font-size: 0.777rem; /* 50% increase from 0.518rem (0.518 * 1.5 = 0.777) */ | |
| padding: 18px 17px; /* Additional 30% reduction in horizontal padding (25px * 0.7 = 17px) */ | |
| } | |
| .btn:disabled { | |
| opacity: 0.4; | |
| cursor: not-allowed; | |
| transform: none ; | |
| background: #6B7280 ; | |
| border-color: #6B7280 ; | |
| color: #9CA3AF ; | |
| } | |
| /* Hero Visual */ | |
| .hero-visual { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| } | |
| .detection-preview { | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 20px; | |
| padding: 40px; | |
| backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| } | |
| .preview-box { | |
| width: 300px; | |
| height: 200px; | |
| border: 2px dashed rgba(255, 255, 255, 0.5); | |
| border-radius: 15px; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| color: rgba(255, 255, 255, 0.8); | |
| text-align: center; | |
| } | |
| .preview-box i { | |
| font-size: 3rem; | |
| margin-bottom: 15px; | |
| } | |
| /* Features Section */ | |
| .features-section { | |
| background: rgba(0, 0, 0, 0.7); | |
| margin: 80px 0; | |
| padding: 80px 0; | |
| backdrop-filter: blur(10px); | |
| border: 1px solid rgba(185, 29, 48, 0.2); | |
| } | |
| .section-title { | |
| text-align: center; | |
| font-size: 2.5rem; | |
| font-weight: 700; | |
| margin-bottom: 60px; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .features-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 40px; | |
| } | |
| .feature-card { | |
| text-align: center; | |
| padding: 40px 30px; | |
| border-radius: 20px; | |
| background: rgba(0, 0, 0, 0.8); | |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| transition: transform 0.3s ease; | |
| } | |
| .feature-card:hover { | |
| transform: translateY(-10px); | |
| border-color: #B91D30; | |
| } | |
| .feature-icon { | |
| width: 80px; | |
| height: 80px; | |
| background: linear-gradient(135deg, #B91D30, #A00000); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| margin: 0 auto 30px; | |
| color: white; | |
| font-size: 2rem; | |
| } | |
| .feature-card h3 { | |
| font-size: 1.5rem; | |
| font-weight: 600; | |
| margin-bottom: 15px; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .feature-card p { | |
| color: #cccccc; | |
| line-height: 1.6; | |
| } | |
| /* Stats Section */ | |
| .stats-section { | |
| background: rgba(0, 0, 0, 0.6); | |
| margin: 80px 0; | |
| padding: 80px 0; | |
| backdrop-filter: blur(10px); | |
| border-radius: 30px; | |
| border: 1px solid rgba(185, 29, 48, 0.2); | |
| } | |
| .stats-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 30px; | |
| margin-bottom: 60px; | |
| } | |
| .stat-card { | |
| background: rgba(255, 255, 255, 0.2); | |
| border-radius: 20px; | |
| padding: 40px 30px; | |
| text-align: center; | |
| color: white; | |
| backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| } | |
| .stat-icon { | |
| font-size: 3rem; | |
| margin-bottom: 20px; | |
| color: #B91D30; | |
| } | |
| .stat-content h3 { | |
| font-size: 3rem; | |
| font-weight: 700; | |
| margin-bottom: 10px; | |
| } | |
| .stat-content p { | |
| font-size: 1.1rem; | |
| opacity: 0.9; | |
| } | |
| .countries-section { | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 20px; | |
| padding: 40px; | |
| backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| } | |
| .countries-section h3 { | |
| color: white; | |
| font-size: 1.8rem; | |
| margin-bottom: 30px; | |
| text-align: center; | |
| } | |
| .countries-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 15px; | |
| } | |
| .country-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 15px 20px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 10px; | |
| color: white; | |
| } | |
| .country-name { | |
| font-weight: 600; | |
| } | |
| .country-count { | |
| opacity: 0.8; | |
| } | |
| /* Detection Page */ | |
| .detection-container { | |
| max-width: 1600px; | |
| margin: 0 auto; | |
| padding: 0.5rem 20px; | |
| display: flex; | |
| flex-direction: column; | |
| min-height: calc(100vh - 140px); | |
| } | |
| .detection-header { | |
| text-align: center; | |
| margin-bottom: 1rem; | |
| color: white; | |
| flex-shrink: 0; | |
| } | |
| .page-title { | |
| font-size: 3rem; | |
| font-weight: 700; | |
| margin-bottom: 20px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 20px; | |
| } | |
| .page-title i { | |
| color: #ffd700; | |
| } | |
| .page-subtitle { | |
| font-size: 1.3rem; | |
| opacity: 0.9; | |
| } | |
| .detection-content { | |
| background: rgba(0, 0, 0, 0.8); | |
| border-radius: 20px; | |
| padding: 0; | |
| backdrop-filter: blur(10px); | |
| box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3); | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| min-height: 500px; | |
| } | |
| .main-sections { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| width: 100%; | |
| } | |
| .sections-row { | |
| display: flex; | |
| flex-direction: row; | |
| gap: 30px; | |
| width: 100%; | |
| } | |
| .upload-section { | |
| flex: 1.2; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: stretch; | |
| padding: 20px; | |
| background: rgba(0, 0, 0, 0.3); | |
| border-radius: 15px; | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| } | |
| .batch-section { | |
| flex: 1.2; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: stretch; | |
| padding: 15px; | |
| background: rgba(0, 0, 0, 0.3); | |
| border-radius: 15px; | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| } | |
| .section-title { | |
| color: #fff; | |
| margin-bottom: 15px; | |
| text-align: center; | |
| font-size: 1.2rem; | |
| font-weight: 600; | |
| } | |
| .batch-upload-area { | |
| border: 3px dashed #B91D30; | |
| border-radius: 15px; | |
| padding: 8px; | |
| margin-bottom: 15px; | |
| transition: all 0.3s ease; | |
| cursor: pointer; | |
| min-height: 120px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .batch-upload-area:hover { | |
| border-color: #C92D3F; | |
| background: rgba(185, 29, 48, 0.1); | |
| } | |
| .batch-upload-content { | |
| text-align: center; | |
| color: #fff; | |
| } | |
| .batch-actions { | |
| text-align: center; | |
| margin-top: 15px; | |
| display: flex; | |
| gap: 10px; | |
| justify-content: center; | |
| flex-wrap: wrap; | |
| } | |
| .batch-info { | |
| margin-top: 15px; | |
| padding: 10px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 8px; | |
| color: #fff; | |
| text-align: center; | |
| } | |
| .upload-area { | |
| border: 3px dashed #B91D30; | |
| border-radius: 15px; | |
| padding: 8px; | |
| text-align: center; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| margin-bottom: 15px; | |
| min-height: 120px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .upload-area:hover, | |
| .upload-area.dragover { | |
| border-color: #ffffff; | |
| background: rgba(185, 29, 48, 0.1); | |
| } | |
| .upload-content i { | |
| font-size: 4rem; | |
| color: #B91D30; | |
| margin-bottom: 20px; | |
| } | |
| .upload-content h3 { | |
| font-size: 1.5rem; | |
| margin-bottom: 10px; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .upload-content p { | |
| color: #cccccc; | |
| font-size: 1.1rem; | |
| } | |
| .upload-actions { | |
| display: flex; | |
| gap: 8px; | |
| justify-content: center; | |
| flex-wrap: wrap; | |
| flex: 0 0 auto; | |
| margin-top: 20px; | |
| padding: 0 10px; | |
| } | |
| .upload-actions .btn { | |
| padding: 8px 16px; | |
| font-size: 0.9rem; | |
| min-width: 80px; | |
| height: 36px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .results-section { | |
| flex: 0 0 60%; | |
| display: flex; | |
| flex-direction: column; | |
| min-width: 0; | |
| align-items: stretch; | |
| margin-top: 0; | |
| } | |
| .results-header { | |
| display: flex; | |
| justify-content: flex-end; | |
| align-items: center; | |
| margin-bottom: 10px; | |
| flex: 0 0 auto; | |
| height: 36px; | |
| padding: 0 10px; | |
| } | |
| .results-header h3 { | |
| font-size: 1.4rem; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| margin: 0; | |
| } | |
| .loading-spinner { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| color: #B91D30; | |
| font-weight: 500; | |
| } | |
| .loading-spinner i { | |
| font-size: 1.2rem; | |
| } | |
| .results-content { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| height: 100%; | |
| margin-top: -36px; | |
| } | |
| .image-container { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 200px; | |
| max-height: 500px; | |
| overflow: visible; | |
| text-align: center; | |
| background: rgba(0, 0, 0, 0.1); | |
| border-radius: 15px; | |
| border: 2px solid rgba(185, 29, 48, 0.3); | |
| padding: 20px; | |
| } | |
| .image-container img { | |
| max-width: 100%; | |
| max-height: 100%; | |
| width: auto; | |
| height: auto; | |
| object-fit: contain; | |
| border-radius: 10px; | |
| box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); | |
| } | |
| .detections-list { | |
| background: rgba(0, 0, 0, 0.6); | |
| border-radius: 15px; | |
| padding: 15px; | |
| flex: 0 0 auto; | |
| max-height: 300px; | |
| overflow-y: auto; | |
| margin-top: 10px; | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| } | |
| .detection-item { | |
| background: rgba(185, 29, 48, 0.1); | |
| border-radius: 10px; | |
| padding: 15px; | |
| margin-bottom: 10px; | |
| box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| } | |
| .detection-info { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .detection-class { | |
| font-weight: 600; | |
| color: #ffffff; | |
| text-transform: capitalize; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .detection-confidence { | |
| background: #B91D30; | |
| color: white; | |
| padding: 4px 12px; | |
| border-radius: 20px; | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| } | |
| .no-detections { | |
| text-align: center; | |
| color: #cccccc; | |
| font-style: normal; | |
| padding: 20px; | |
| } | |
| /* Crop Content within Upload Area */ | |
| .crop-content { | |
| padding: 10px; | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| position: relative; | |
| } | |
| .crop-container { | |
| text-align: center; | |
| margin-bottom: 12px; | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 0; | |
| max-width: 100%; | |
| max-height: 144px; | |
| overflow: hidden; | |
| border-radius: 10px; | |
| } | |
| .crop-container img { | |
| max-width: 100%; | |
| max-height: 100%; | |
| border-radius: 10px; | |
| box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); | |
| display: block; | |
| object-fit: contain; | |
| width: auto; | |
| height: auto; | |
| } | |
| /* Cropper.js styling */ | |
| .cropper-container { | |
| border-radius: 15px; | |
| overflow: hidden; | |
| } | |
| .cropper-view-box { | |
| border-radius: 15px; | |
| } | |
| .cropper-face { | |
| background-color: rgba(185, 29, 48, 0.1); | |
| } | |
| .crop-instructions { | |
| text-align: center; | |
| flex: 0 0 auto; | |
| margin-bottom: 12px; | |
| padding: 5px; | |
| background: rgba(0, 0, 0, 0.2); | |
| border-radius: 6px; | |
| } | |
| .crop-tools { | |
| display: flex; | |
| justify-content: center; | |
| gap: 4px; | |
| margin-top: 15px; | |
| flex-wrap: wrap; | |
| flex: 0 0 auto; | |
| padding: 8px 5px; | |
| background: rgba(0, 0, 0, 0.3); | |
| border-radius: 8px; | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| margin-bottom: 10px; | |
| } | |
| .crop-tools .btn { | |
| padding: 4px 6px; | |
| font-size: 11px; | |
| min-width: 30px; | |
| height: 30px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .crop-tools .btn i { | |
| font-size: 12px; | |
| font-family: "Font Awesome 6 Free" ; | |
| font-weight: 900; | |
| } | |
| .crop-instructions p { | |
| color: #cccccc; | |
| font-size: 0.9rem; | |
| margin: 0; | |
| line-height: 1.3; | |
| } | |
| /* Global font style overrides - Force all text to be regular and Times New Roman */ | |
| *, *::before, *::after { | |
| font-style: normal ; | |
| font-family: 'Times New Roman', serif ; | |
| } | |
| h1, h2, h3, h4, h5, h6, p, span, div, a, button, input, textarea, select, label, li, td, th, caption, em, i, cite, dfn, var, address, blockquote, q, abbr, acronym, small, sub, sup, strong, b, u, s, strike, del, ins, mark, code, pre, kbd, samp, tt, big, small, font { | |
| font-style: normal ; | |
| font-family: 'Times New Roman', serif ; | |
| } | |
| /* Override any italic classes or pseudo-elements */ | |
| .italic, .em, .emphasis, .oblique, .slanted { | |
| font-style: normal ; | |
| font-family: 'Times New Roman', serif ; | |
| } | |
| /* Override any inherited italic styles */ | |
| body, html { | |
| font-style: normal ; | |
| font-family: 'Times New Roman', serif ; | |
| } | |
| /* About Page */ | |
| .about-container { | |
| max-width: 1000px; | |
| margin: 0 auto; | |
| padding: 1rem 20px; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| } | |
| .about-header { | |
| text-align: center; | |
| margin-bottom: 60px; | |
| color: white; | |
| } | |
| .about-content { | |
| background: var(--bg-secondary); | |
| border-radius: 20px; | |
| padding: 60px; | |
| backdrop-filter: blur(10px); | |
| box-shadow: 0 20px 40px var(--shadow-color); | |
| border: 1px solid var(--border-color); | |
| color: var(--text-primary); | |
| } | |
| .about-section { | |
| margin-bottom: 50px; | |
| } | |
| .about-section h2 { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| margin-bottom: 20px; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .about-section p { | |
| font-size: 1.1rem; | |
| line-height: 1.8; | |
| color: #cccccc; | |
| margin-bottom: 20px; | |
| } | |
| .features-list { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 30px; | |
| margin-top: 30px; | |
| } | |
| .feature-item { | |
| display: flex; | |
| gap: 20px; | |
| padding: 30px; | |
| background: rgba(0, 0, 0, 0.6); | |
| border-radius: 15px; | |
| transition: transform 0.3s ease; | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| } | |
| .feature-item:hover { | |
| transform: translateY(-5px); | |
| border-color: #B91D30; | |
| } | |
| .feature-item i { | |
| font-size: 2.5rem; | |
| color: #B91D30; | |
| margin-top: 5px; | |
| } | |
| .feature-item h3 { | |
| font-size: 1.3rem; | |
| font-weight: 600; | |
| margin-bottom: 10px; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .feature-item p { | |
| color: #cccccc; | |
| line-height: 1.6; | |
| } | |
| .object-classes { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 30px; | |
| margin-top: 30px; | |
| } | |
| .class-category { | |
| background: rgba(0, 0, 0, 0.6); | |
| border-radius: 15px; | |
| padding: 25px; | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| } | |
| .class-category h4 { | |
| font-size: 1.2rem; | |
| font-weight: 600; | |
| margin-bottom: 15px; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .class-tag { | |
| display: inline-block; | |
| background: #B91D30; | |
| color: white; | |
| padding: 5px 12px; | |
| border-radius: 20px; | |
| font-size: 0.9rem; | |
| margin: 5px 5px 5px 0; | |
| } | |
| .tech-stack { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 30px; | |
| margin-top: 30px; | |
| } | |
| .tech-item { | |
| text-align: center; | |
| padding: 30px 20px; | |
| background: rgba(0, 0, 0, 0.6); | |
| border-radius: 15px; | |
| transition: transform 0.3s ease; | |
| border: 1px solid rgba(185, 29, 48, 0.3); | |
| } | |
| .tech-item:hover { | |
| transform: translateY(-5px); | |
| border-color: #B91D30; | |
| } | |
| .tech-item i { | |
| font-size: 3rem; | |
| color: #B91D30; | |
| margin-bottom: 20px; | |
| } | |
| .tech-item h3 { | |
| font-size: 1.3rem; | |
| font-weight: 600; | |
| margin-bottom: 10px; | |
| color: #ffffff; | |
| font-family: 'Apple Garamond', 'Garamond', serif; | |
| } | |
| .tech-item p { | |
| color: #cccccc; | |
| font-size: 0.95rem; | |
| } | |
| /* Footer */ | |
| .footer { | |
| background: rgba(10, 10, 10, 0.95); | |
| color: white; | |
| padding: 30px 0; | |
| margin-top: auto; | |
| position: sticky; | |
| bottom: 0; | |
| z-index: 100; | |
| } | |
| .footer-content { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 0 20px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| gap: 20px; | |
| } | |
| .visitor-stats { | |
| display: flex; | |
| gap: 30px; | |
| flex-wrap: wrap; | |
| } | |
| .stat-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 0.95rem; | |
| } | |
| .stat-item i { | |
| color: #B91D30; | |
| } | |
| .footer-text p { | |
| opacity: 0.8; | |
| font-size: 0.9rem; | |
| } | |
| /* Authentication Styles */ | |
| .auth-container { | |
| padding: 2rem 20px; | |
| min-height: calc(100vh - 140px); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .auth-content { | |
| max-width: 500px; | |
| width: 100%; | |
| } | |
| .auth-header { | |
| text-align: center; | |
| margin-bottom: 2rem; | |
| } | |
| .auth-header h1 { | |
| font-size: 2.5rem; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin-bottom: 0.5rem; | |
| } | |
| .auth-header p { | |
| font-size: 1.1rem; | |
| color: var(--text-secondary); | |
| } | |
| .auth-form-container { | |
| background: var(--bg-secondary); | |
| border-radius: 15px; | |
| padding: 2rem; | |
| border: 1px solid var(--border-color); | |
| } | |
| .auth-form { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1.5rem; | |
| } | |
| .auth-btn { | |
| width: 100%; | |
| padding: 1rem; | |
| font-size: 1.1rem; | |
| } | |
| .auth-links { | |
| text-align: center; | |
| margin-top: 1.5rem; | |
| } | |
| .auth-links p { | |
| color: var(--text-secondary); | |
| } | |
| .auth-links a { | |
| color: #B91D30; | |
| text-decoration: none; | |
| font-weight: 500; | |
| } | |
| .auth-links a:hover { | |
| text-decoration: underline; | |
| } | |
| /* Navigation Dropdown Styles */ | |
| .nav-dropdown { | |
| position: relative; | |
| display: inline-block; | |
| z-index: 1002 ; /* Ensure dropdown container is above other elements */ | |
| } | |
| .nav-dropdown-content { | |
| display: none; | |
| position: absolute; | |
| background: var(--bg-secondary); | |
| min-width: 200px; | |
| box-shadow: 0 8px 16px var(--shadow-color); | |
| border-radius: 10px; | |
| border: 1px solid var(--border-color); | |
| z-index: 1002 ; /* Above navbar (1000) and banner (1001) */ | |
| top: 100%; | |
| left: 0; | |
| margin-top: 5px; | |
| } | |
| .nav-dropdown-content a { | |
| color: var(--text-primary); | |
| padding: 12px 16px; | |
| text-decoration: none; | |
| display: block; | |
| border-radius: 8px; | |
| margin: 4px; | |
| transition: background-color 0.3s ease; | |
| } | |
| .nav-dropdown-content a:hover { | |
| background: var(--bg-primary); | |
| color: #B91D30; | |
| } | |
| .nav-dropdown:hover .nav-dropdown-content { | |
| display: block; | |
| } | |
| .nav-dropdown:hover .nav-link { | |
| color: #B91D30; | |
| } | |
| /* User Menu Styles */ | |
| .user-menu, .auth-menu { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .user-greeting { | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| } | |
| .logout-link { | |
| color: #B91D30 ; | |
| } | |
| /* Projects and Deliverables Styles */ | |
| .projects-container, .deliverables-container, .create-deliverable-container, .edit-deliverable-container, .deliverable-detail-container { | |
| padding: 2rem 20px; | |
| } | |
| .projects-content, .deliverables-content, .create-deliverable-content, .edit-deliverable-content, .deliverable-detail-content { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| } | |
| .projects-header, .deliverables-header, .create-deliverable-header, .edit-deliverable-header, .deliverable-detail-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 2rem; | |
| flex-wrap: wrap; | |
| gap: 1rem; | |
| } | |
| .projects-header h1, .deliverables-header h1, .create-deliverable-header h1, .edit-deliverable-header h1, .deliverable-detail-header h1 { | |
| font-size: 2.5rem; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin: 0; | |
| } | |
| .projects-header p, .deliverables-header p, .create-deliverable-header p, .edit-deliverable-header p { | |
| color: var(--text-secondary); | |
| margin: 0; | |
| } | |
| .projects-grid, .deliverables-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .project-card, .deliverable-card { | |
| background: var(--bg-secondary); | |
| border-radius: 15px; | |
| padding: 1.5rem; | |
| border: 1px solid var(--border-color); | |
| transition: transform 0.3s ease, box-shadow 0.3s ease; | |
| } | |
| .project-card:hover, .deliverable-card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: 0 10px 30px var(--shadow-color); | |
| } | |
| .project-header, .deliverable-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| margin-bottom: 1rem; | |
| } | |
| .project-header h3, .deliverable-header h3 { | |
| color: var(--text-primary); | |
| margin: 0; | |
| font-size: 1.2rem; | |
| } | |
| .project-status, .deliverable-badges { | |
| display: flex; | |
| gap: 0.5rem; | |
| flex-wrap: wrap; | |
| } | |
| .status-badge, .priority-badge { | |
| padding: 0.25rem 0.75rem; | |
| border-radius: 20px; | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| text-transform: uppercase; | |
| } | |
| .status-badge.pending { | |
| background: #F59E0B; | |
| color: white; | |
| } | |
| .status-badge.in_progress { | |
| background: #3B82F6; | |
| color: white; | |
| } | |
| .status-badge.completed { | |
| background: #10B981; | |
| color: white; | |
| } | |
| .status-badge.active { | |
| background: #10B981; | |
| color: white; | |
| } | |
| .priority-badge.high { | |
| background: #EF4444; | |
| color: white; | |
| } | |
| .priority-badge.medium { | |
| background: #F59E0B; | |
| color: white; | |
| } | |
| .priority-badge.low { | |
| background: #6B7280; | |
| color: white; | |
| } | |
| .project-content, .deliverable-content { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| margin-bottom: 1rem; | |
| } | |
| .project-description, .deliverable-description { | |
| color: var(--text-secondary); | |
| margin: 0; | |
| line-height: 1.5; | |
| } | |
| .project-meta, .deliverable-meta { | |
| display: flex; | |
| gap: 1rem; | |
| flex-wrap: wrap; | |
| font-size: 0.9rem; | |
| } | |
| .project-type, .deliverable-type, .project-name, .project-date, .due-date { | |
| color: var(--text-secondary); | |
| } | |
| .project-actions, .deliverable-actions { | |
| display: flex; | |
| gap: 0.75rem; | |
| flex-wrap: wrap; | |
| } | |
| .no-projects, .no-deliverables { | |
| text-align: center; | |
| padding: 3rem; | |
| background: var(--bg-secondary); | |
| border-radius: 15px; | |
| border: 1px solid var(--border-color); | |
| } | |
| .no-projects h3, .no-deliverables h3 { | |
| color: var(--text-primary); | |
| margin-bottom: 1rem; | |
| } | |
| .no-projects p, .no-deliverables p { | |
| color: var(--text-secondary); | |
| margin-bottom: 1.5rem; | |
| } | |
| /* Deliverables Filters */ | |
| .deliverables-filters { | |
| display: flex; | |
| gap: 2rem; | |
| margin-bottom: 2rem; | |
| padding: 1rem; | |
| background: var(--bg-secondary); | |
| border-radius: 10px; | |
| border: 1px solid var(--border-color); | |
| flex-wrap: wrap; | |
| } | |
| .filter-group { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .filter-group label { | |
| color: var(--text-primary); | |
| font-weight: 500; | |
| white-space: nowrap; | |
| } | |
| .filter-group select { | |
| padding: 0.5rem; | |
| border: 1px solid var(--border-color); | |
| border-radius: 6px; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| min-width: 150px; | |
| } | |
| /* Form Styles */ | |
| .create-deliverable-form-container, .edit-deliverable-form-container { | |
| background: var(--bg-secondary); | |
| border-radius: 15px; | |
| padding: 2rem; | |
| border: 1px solid var(--border-color); | |
| } | |
| .create-deliverable-form, .edit-deliverable-form { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1.5rem; | |
| } | |
| .form-row { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 1rem; | |
| } | |
| .form-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .form-group label { | |
| color: var(--text-primary); | |
| font-weight: 500; | |
| } | |
| .form-group input, .form-group select, .form-group textarea { | |
| padding: 0.75rem; | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| font-size: 1rem; | |
| } | |
| .form-group input:focus, .form-group select:focus, .form-group textarea:focus { | |
| outline: none; | |
| border-color: #B91D30; | |
| box-shadow: 0 0 0 3px rgba(185, 29, 48, 0.1); | |
| } | |
| .form-actions { | |
| display: flex; | |
| gap: 1rem; | |
| justify-content: flex-end; | |
| margin-top: 1rem; | |
| } | |
| /* Deliverable Detail Styles */ | |
| .deliverable-detail-info { | |
| background: var(--bg-secondary); | |
| border-radius: 15px; | |
| padding: 2rem; | |
| margin-bottom: 2rem; | |
| border: 1px solid var(--border-color); | |
| } | |
| .info-section { | |
| margin-bottom: 2rem; | |
| } | |
| .info-section h3 { | |
| color: var(--text-primary); | |
| margin-bottom: 1rem; | |
| } | |
| .info-section p { | |
| color: var(--text-secondary); | |
| line-height: 1.6; | |
| } | |
| .info-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 1rem; | |
| } | |
| .info-item { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.25rem; | |
| } | |
| .info-item label { | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| } | |
| .info-item span { | |
| color: var(--text-primary); | |
| font-size: 1rem; | |
| } | |
| .deliverable-detail-actions { | |
| display: flex; | |
| gap: 1rem; | |
| flex-wrap: wrap; | |
| justify-content: center; | |
| } | |
| .btn-danger { | |
| background: #EF4444; | |
| color: white; | |
| border: 1px solid #EF4444; | |
| } | |
| .btn-danger:hover { | |
| background: #DC2626; | |
| border-color: #DC2626; | |
| transform: translateY(-2px); | |
| } | |
| .btn-warning { | |
| background: #6B7280; | |
| color: white; | |
| border: 2px solid #6B7280; | |
| } | |
| .btn-warning:hover { | |
| background: #4B5563; | |
| border-color: #4B5563; | |
| transform: translateY(-2px); | |
| } | |
| /* Completed and In Progress Specific Styles */ | |
| .deliverable-card.completed { | |
| border-left: 4px solid #10B981; | |
| } | |
| .deliverable-card.in-progress { | |
| border-left: 4px solid #3B82F6; | |
| } | |
| .completed-date { | |
| color: #10B981; | |
| font-weight: 500; | |
| } | |
| .due-date { | |
| color: #F59E0B; | |
| font-weight: 500; | |
| } | |
| /* Mobile Responsive for Dropdown */ | |
| @media (max-width: 768px) { | |
| .nav-dropdown-content { | |
| position: fixed; | |
| top: 70px; | |
| left: 0; | |
| right: 0; | |
| width: 100%; | |
| border-radius: 0; | |
| box-shadow: 0 4px 8px var(--shadow-color); | |
| } | |
| .nav-dropdown-content a { | |
| margin: 0; | |
| border-radius: 0; | |
| border-bottom: 1px solid var(--border-color); | |
| } | |
| .nav-dropdown-content a:last-child { | |
| border-bottom: none; | |
| } | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 768px) { | |
| .hero-section { | |
| grid-template-columns: 1fr; | |
| text-align: center; | |
| gap: 40px; | |
| } | |
| .hero-title { | |
| font-size: 2.5rem; | |
| flex-direction: column; | |
| gap: 10px; | |
| } | |
| .nav-menu { | |
| gap: 15px; | |
| } | |
| .nav-link { | |
| padding: 8px 12px; | |
| font-size: 0.9rem; | |
| } | |
| .results-content { | |
| grid-template-columns: 1fr; | |
| } | |
| .about-content { | |
| padding: 40px 30px; | |
| } | |
| .footer-content { | |
| flex-direction: column; | |
| text-align: center; | |
| } | |
| .visitor-stats { | |
| justify-content: center; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .hero-title { | |
| font-size: 2rem; | |
| } | |
| .hero-subtitle { | |
| font-size: 1.1rem; | |
| } | |
| .btn-large { | |
| padding: 15px 25px; | |
| font-size: 1rem; | |
| } | |
| .hero-actions { | |
| flex-direction: column; | |
| align-items: center; | |
| } | |
| .upload-actions { | |
| flex-direction: column; | |
| align-items: center; | |
| } | |
| .btn { | |
| width: 100%; | |
| max-width: 300px; | |
| } | |
| } | |
| /* Demos page styles */ | |
| .demos-container { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 2rem; | |
| } | |
| .demos-header { | |
| text-align: center; | |
| margin-bottom: 3rem; | |
| } | |
| .demos-header .page-title { | |
| font-size: 2.5rem; | |
| font-weight: 700; | |
| color: #ffffff; | |
| margin-bottom: 1rem; | |
| } | |
| .demos-header .page-subtitle { | |
| font-size: 1.2rem; | |
| color: #cccccc; | |
| max-width: 600px; | |
| margin: 0 auto; | |
| } | |
| .demo-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 2rem; | |
| margin-top: 2rem; | |
| align-items: stretch; | |
| } | |
| .demo-card { | |
| background: var(--bg-secondary); | |
| border-radius: 15px; | |
| padding: 2rem; | |
| border: 1px solid var(--border-color); | |
| transition: transform 0.3s ease, box-shadow 0.3s ease; | |
| } | |
| .demo-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 20px 40px var(--shadow-color); | |
| } | |
| .demo-header h3 { | |
| font-size: 1.5rem; | |
| font-weight: 600; | |
| color: #B91D30; | |
| margin-bottom: 0.5rem; | |
| } | |
| /* Hide "Other Vision Models" card */ | |
| .demo-card:first-child { | |
| display: none ; | |
| } | |
| /* Left align "MV+ Vision Models" card */ | |
| .demo-card:last-child { | |
| text-align: left ; | |
| } | |
| .demo-card:last-child .demo-header { | |
| text-align: left ; | |
| } | |
| .demo-header p { | |
| color: #cccccc; | |
| margin-bottom: 1.5rem; | |
| } | |
| .demo-features ul { | |
| list-style: none; | |
| padding: 0; | |
| margin-bottom: 2rem; | |
| } | |
| .demo-features li { | |
| color: #ffffff; | |
| margin-bottom: 0.5rem; | |
| padding-left: 1.5rem; | |
| position: relative; | |
| } | |
| .demo-features li:before { | |
| content: "✓"; | |
| position: absolute; | |
| left: 0; | |
| color: #B91D30; | |
| font-weight: bold; | |
| } | |
| .feature-link { | |
| color: #ffffff; | |
| text-decoration: none; | |
| transition: color 0.3s ease; | |
| } | |
| .feature-link:hover { | |
| color: #B91D30; | |
| text-decoration: underline; | |
| } | |
| .demo-actions { | |
| text-align: center; | |
| } | |
| .demo-actions .btn { | |
| min-width: 120px; | |
| } | |
| /* Responsive demo grid */ | |
| @media (max-width: 768px) { | |
| .demo-grid { | |
| grid-template-columns: 1fr; | |
| gap: 1.5rem; | |
| } | |
| } | |
| /* Screen fitting adjustments */ | |
| @media (max-height: 600px) { | |
| .main-content { | |
| min-height: calc(100vh - 70px); | |
| } | |
| .hero-section { | |
| min-height: 50vh; | |
| } | |
| } | |
| /* Ensure content fits viewport */ | |
| html, body { | |
| min-height: 100%; | |
| overflow-x: hidden; | |
| } | |
| #app { | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| /* Custom YOLOv8 Demo Styles */ | |
| .model-info { | |
| background: var(--bg-secondary); | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| padding: 1.5rem; | |
| margin: 2rem 0; | |
| } | |
| .model-info h3 { | |
| color: var(--text-primary); | |
| margin-bottom: 1rem; | |
| font-size: 1.5rem; | |
| } | |
| .model-details { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 2rem; | |
| } | |
| .model-classes h4, | |
| .model-stats h4 { | |
| color: var(--text-primary); | |
| margin-bottom: 0.75rem; | |
| font-size: 1.1rem; | |
| } | |
| .class-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); | |
| gap: 0.5rem; | |
| } | |
| .class-tag { | |
| display: inline-block; | |
| padding: 0.5rem 0.75rem; | |
| background: var(--bg-tertiary); | |
| border: 1px solid var(--border-color); | |
| border-radius: 4px; | |
| color: var(--text-primary); | |
| font-size: 0.9rem; | |
| text-align: center; | |
| transition: all 0.3s ease; | |
| } | |
| .class-tag:hover { | |
| background: var(--accent-color); | |
| color: var(--bg-primary); | |
| transform: translateY(-2px); | |
| } | |
| .model-stats ul { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .model-stats li { | |
| padding: 0.5rem 0; | |
| color: var(--text-secondary); | |
| border-bottom: 1px solid var(--border-color); | |
| } | |
| .model-stats li:last-child { | |
| border-bottom: none; | |
| } | |
| .model-stats strong { | |
| color: var(--text-primary); | |
| } | |
| /* Confidence Display Styles */ | |
| .confidence-section { | |
| margin-bottom: 2rem; | |
| } | |
| .confidence-section h4 { | |
| color: var(--text-primary); | |
| margin-bottom: 1rem; | |
| font-size: 1.2rem; | |
| } | |
| .confidence-grid { | |
| display: flex; | |
| flex-direction: row; | |
| gap: 0.75rem; | |
| margin-bottom: 1rem; | |
| flex-wrap: nowrap; | |
| width: 45%; | |
| margin-left: auto; | |
| margin-right: 0; | |
| } | |
| /* Scaled confidence section for pretrained page to match custom page */ | |
| .pretrained-confidence { | |
| transform: scale(1.0); | |
| transform-origin: top left; | |
| margin-bottom: 2rem; /* Same as default confidence section */ | |
| } | |
| .pretrained-confidence .confidence-grid { | |
| display: flex; | |
| flex-direction: row; | |
| gap: 0.75rem; | |
| margin-bottom: 1rem; | |
| flex-wrap: nowrap; | |
| width: 45%; | |
| margin-left: auto; | |
| margin-right: 0; | |
| } | |
| .pretrained-confidence .confidence-item { | |
| padding: 0.75rem 1rem; | |
| font-size: 1rem; | |
| flex: 1; | |
| min-width: 0; | |
| white-space: nowrap; | |
| } | |
| .confidence-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 0.75rem 1rem; | |
| background: var(--bg-tertiary); | |
| border: 1px solid var(--border-color); | |
| border-radius: 6px; | |
| transition: all 0.3s ease; | |
| flex: 1; | |
| min-width: 0; | |
| white-space: nowrap; | |
| } | |
| .confidence-item.detected { | |
| background: rgba(185, 29, 48, 0.1); | |
| border-color: var(--accent-color); | |
| box-shadow: 0 0 10px rgba(185, 29, 48, 0.2); | |
| } | |
| .confidence-item.not-detected { | |
| opacity: 0.6; | |
| } | |
| .confidence-class { | |
| color: var(--text-primary); | |
| font-weight: 500; | |
| text-transform: capitalize; | |
| } | |
| .confidence-value { | |
| color: var(--accent-color); | |
| font-weight: 600; | |
| font-size: 1.1rem; | |
| } | |
| .detections-section { | |
| margin-top: 1.5rem; | |
| } | |
| .detections-section h4 { | |
| color: var(--text-primary); | |
| margin-bottom: 1rem; | |
| font-size: 1.2rem; | |
| } | |
| .detections-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 0.75rem; | |
| } | |
| .detection-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 0.75rem 1rem; | |
| background: rgba(185, 29, 48, 0.15); | |
| border: 2px solid var(--accent-color); | |
| border-radius: 6px; | |
| box-shadow: 0 0 15px rgba(185, 29, 48, 0.3); | |
| } | |
| .detection-class { | |
| color: var(--text-primary); | |
| font-weight: 600; | |
| text-transform: capitalize; | |
| } | |
| .detection-confidence { | |
| color: var(--accent-color); | |
| font-weight: 700; | |
| font-size: 1.1rem; | |
| } | |
| .no-detections { | |
| color: var(--text-secondary); | |
| text-align: center; | |
| font-style: italic; | |
| padding: 2rem; | |
| background: var(--bg-tertiary); | |
| border-radius: 6px; | |
| border: 1px dashed var(--border-color); | |
| } | |
| /* Coming Soon Section */ | |
| .coming-soon-section { | |
| background: var(--bg-secondary); | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| padding: 2rem; | |
| margin: 2rem 0; | |
| text-align: center; | |
| } | |
| .coming-soon-content h3 { | |
| color: var(--text-primary); | |
| margin-bottom: 1rem; | |
| font-size: 1.5rem; | |
| } | |
| .coming-soon-content p { | |
| color: var(--text-secondary); | |
| margin-bottom: 1.5rem; | |
| font-size: 1.1rem; | |
| } | |
| .features-preview { | |
| text-align: left; | |
| max-width: 500px; | |
| margin: 0 auto; | |
| } | |
| .features-preview h4 { | |
| color: var(--text-primary); | |
| margin-bottom: 1rem; | |
| font-size: 1.2rem; | |
| } | |
| .features-preview ul { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .features-preview li { | |
| color: var(--text-secondary); | |
| padding: 0.5rem 0; | |
| padding-left: 1.5rem; | |
| position: relative; | |
| } | |
| .features-preview li::before { | |
| content: "✓"; | |
| color: var(--accent-color); | |
| font-weight: bold; | |
| position: absolute; | |
| left: 0; | |
| } | |
| /* Responsive model info */ | |
| @media (max-width: 768px) { | |
| .model-details { | |
| grid-template-columns: 1fr; | |
| gap: 1rem; | |
| } | |
| .class-grid { | |
| grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); | |
| } | |
| .confidence-grid, | |
| .detections-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .coming-soon-section { | |
| padding: 1.5rem; | |
| } | |
| } | |
| /* Responsive adjustments for side-by-side layout */ | |
| @media (max-width: 768px) { | |
| .detection-container { | |
| padding: 0.5rem 10px; | |
| } | |
| .detection-content { | |
| flex-direction: column; | |
| min-height: 400px; | |
| padding: 0; | |
| } | |
| .main-sections { | |
| flex-direction: column; | |
| gap: 15px; | |
| } | |
| .sections-row { | |
| flex-direction: column; | |
| gap: 15px; | |
| } | |
| .upload-section, | |
| .batch-section { | |
| padding: 15px; | |
| } | |
| .upload-area { | |
| min-height: 150px; | |
| } | |
| .batch-upload-area { | |
| min-height: 150px; | |
| } | |
| .batch-actions { | |
| flex-direction: column; | |
| align-items: center; | |
| } | |
| .batch-actions .btn { | |
| width: 100%; | |
| max-width: 200px; | |
| } | |
| .image-container { | |
| min-height: 150px; | |
| max-height: 400px; | |
| padding: 12px; | |
| } | |
| .image-container img { | |
| max-width: 100%; | |
| max-height: 100%; | |
| } | |
| .detections-list { | |
| max-height: 150px; | |
| } | |
| } | |
| /* Predictions container - flex layout for two columns side by side */ | |
| .predictions { | |
| display: flex; | |
| flex-direction: row; | |
| gap: 20px; | |
| align-items: flex-start; | |
| } | |
| /* Prediction column - contains heading and list */ | |
| .prediction-column { | |
| display: flex; | |
| flex-direction: column; | |
| width: 65%; | |
| } | |
| /* Upload area image - tight layout */ | |
| #uploadedImage { | |
| max-width: 100%; | |
| max-height: 150px; | |
| width: auto; | |
| height: auto; | |
| object-fit: contain; | |
| border-radius: 4px; | |
| margin-top: 10px; | |
| display: block; | |
| } | |
| /* Upload area content - tight layout */ | |
| .upload-content { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 120px; | |
| padding: 10px; | |
| } | |
| /* Predictions list styling - within column */ | |
| #predictionsList { | |
| width: 100%; | |
| margin-left: auto; | |
| margin-right: 0; | |
| padding-right: 0; | |
| position: relative; | |
| right: 0; | |
| } | |
| /* Second predictions list styling - within column */ | |
| #predictionsList2 { | |
| width: 100%; | |
| margin-left: auto; | |
| margin-right: 0; | |
| padding-right: 0; | |
| position: relative; | |
| right: 0; | |
| border-left: 2px solid #ff6b6b; | |
| padding-left: 10px; | |
| margin-left: 10px; | |
| } | |
| .prediction-item { | |
| width: 100%; | |
| margin-left: auto; | |
| margin-right: 0; | |
| font-size: 0.8rem; | |
| white-space: nowrap; | |
| overflow: visible; | |
| text-overflow: unset; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .prediction-class { | |
| flex: 3; | |
| font-size: 0.65rem; | |
| white-space: nowrap; | |
| overflow: visible; | |
| text-overflow: unset; | |
| min-width: 0; | |
| max-width: none; | |
| line-height: 1.1; | |
| } | |
| .prediction-confidence { | |
| font-size: 0.75rem; | |
| white-space: nowrap; | |
| flex-shrink: 0; | |
| } | |
| /* Move 'All Class Probabilities' heading to the right */ | |
| .predictions h3 { | |
| text-align: right; | |
| margin-right: 0; | |
| margin-left: auto; | |
| width: 65%; | |
| padding-right: 0; | |
| } | |