/* 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 !important; visibility: hidden !important; opacity: 0 !important; height: 0 !important; overflow: hidden !important; } /* Ensure #imageControls can be shown for model selection in spatiotemporal detection */ /* This is the model selection div, not crop tools */ #imageControls { display: block !important; visibility: visible !important; opacity: 1 !important; height: auto !important; overflow: visible !important; position: relative !important; z-index: 10 !important; } /* Hide crop-related elements in spatiotemporal detection */ #cropOverlay, .crop-instructions { display: none !important; visibility: hidden !important; opacity: 0 !important; } /* 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" !important; 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 !important; width: 100% !important; background: linear-gradient(90deg, #B91D30 0%, #8B1523 100%) !important; background-color: #B91D30 !important; color: #ffffff !important; padding: 16px 0 !important; text-align: center !important; margin-top: 2rem !important; margin-bottom: 0 !important; box-shadow: 0 -4px 20px rgba(185, 29, 48, 0.8) !important; border-top: 3px solid rgba(255, 255, 255, 0.3) !important; display: block !important; visibility: visible !important; opacity: 1 !important; } .dev-banner-content { display: flex !important; align-items: center !important; justify-content: center !important; gap: 15px !important; font-size: 1.2rem !important; font-weight: 800 !important; letter-spacing: 2px !important; text-transform: uppercase !important; color: #ffffff !important; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5) !important; } .dev-banner-content span { color: #ffffff !important; font-weight: 800 !important; } .dev-banner-content i { animation: pulse 2s ease-in-out infinite !important; font-size: 1.3rem !important; color: #ffffff !important; } @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.1); } } .main-content { margin-top: 70px !important; /* Navbar (70px) only */ min-height: calc(100vh - 70px) !important; padding: 1rem 0 !important; overflow-y: visible !important; display: flex !important; flex-direction: column !important; position: relative !important; z-index: 1 !important; } /* 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 !important; background: #6B7280 !important; border-color: #6B7280 !important; color: #9CA3AF !important; } /* 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" !important; 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 !important; font-family: 'Times New Roman', serif !important; } 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 !important; font-family: 'Times New Roman', serif !important; } /* Override any italic classes or pseudo-elements */ .italic, .em, .emphasis, .oblique, .slanted { font-style: normal !important; font-family: 'Times New Roman', serif !important; } /* Override any inherited italic styles */ body, html { font-style: normal !important; font-family: 'Times New Roman', serif !important; } /* 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 !important; /* 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 !important; /* 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 !important; } /* 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 !important; } /* Left align "MV+ Vision Models" card */ .demo-card:last-child { text-align: left !important; } .demo-card:last-child .demo-header { text-align: left !important; } .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; }