/* Dashboard-specific styles */ .dashboard { max-width: 1400px; margin: 0 auto; } /* Page Header */ .page-header { text-align: center; margin-bottom: var(--spacing-xl); } .page-description { font-size: 1.125rem; color: var(--gray-600); max-width: 600px; margin: 0 auto; line-height: 1.6; } /* Status Banner */ .status-banner { background: white; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--spacing-md); margin-bottom: var(--spacing-xl); display: flex; align-items: center; justify-content: space-between; box-shadow: var(--shadow-sm); } .status-indicator { display: flex; align-items: center; gap: var(--spacing-sm); } .status-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--gray-400); animation: pulse 2s infinite; } .status-dot.healthy { background: var(--success-green); } .status-dot.error { background: var(--error-red); } .status-text { font-weight: 500; color: var(--gray-700); } .model-info { font-size: 0.875rem; color: var(--gray-500); } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* Dashboard Grid */ .dashboard-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-bottom: 3rem; width: 100%; } .panel { min-height: 600px; width: 100%; } /* Upload Area */ .upload-area { border: 2px dashed #d1d5db; border-radius: 12px; padding: 3rem; text-align: center; cursor: pointer; transition: all 0.2s ease; margin-bottom: 1.5rem; min-height: 200px; display: flex; align-items: center; justify-content: center; background: white; } .upload-area:hover { border-color: #2563eb; background-color: #f9fafb; } .upload-area.dragover { border-color: #2563eb; background-color: #eff6ff; transform: scale(1.02); } .upload-area.has-image { border-style: solid; border-color: var(--success-green); background-color: var(--gray-50); padding: var(--spacing-md); } .upload-content { display: flex; flex-direction: column; align-items: center; gap: var(--spacing-md); } .upload-icon { font-size: 3rem; color: var(--gray-400); } .upload-primary { font-size: 1.125rem; font-weight: 500; color: var(--gray-700); margin: 0; } .upload-secondary { font-size: 0.875rem; color: var(--gray-500); margin: 0; } /* Settings Section */ .settings-section { margin-bottom: var(--spacing-lg); padding-top: var(--spacing-lg); border-top: 1px solid var(--gray-200); } .settings-section h4 { margin-bottom: var(--spacing-md); color: var(--gray-700); } .settings-grid { display: grid; gap: var(--spacing-md); } .setting-item label { display: block; font-size: 0.875rem; font-weight: 500; color: var(--gray-700); margin-bottom: var(--spacing-xs); } .slider-container { display: flex; align-items: center; gap: var(--spacing-md); } .slider-container input[type="range"] { flex: 1; height: 6px; border-radius: 3px; background: var(--gray-200); outline: none; -webkit-appearance: none; } .slider-container input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--primary-blue); cursor: pointer; box-shadow: var(--shadow-sm); } .slider-container input[type="range"]::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: var(--primary-blue); cursor: pointer; border: none; box-shadow: var(--shadow-sm); } .slider-value { font-size: 0.875rem; font-weight: 500; color: var(--primary-blue); min-width: 40px; text-align: right; } /* Button Styles */ .btn-full { width: 100%; } /* Image Containers */ .image-container { border: 1px solid var(--gray-200); border-radius: var(--radius-md); overflow: hidden; min-height: 250px; display: flex; align-items: center; justify-content: center; background: var(--gray-50); } .image-container img { max-width: 100%; max-height: 100%; object-fit: contain; } .image-placeholder { text-align: center; color: var(--gray-400); } .placeholder-icon { font-size: 2rem; margin-bottom: var(--spacing-sm); } /* Results Sections */ .annotated-section, .metadata-section, .species-section { margin-bottom: var(--spacing-lg); } .annotated-section h4, .metadata-section h4, .species-section h4 { margin-bottom: var(--spacing-md); color: var(--gray-700); font-size: 1rem; font-weight: 600; } /* Metadata Grid */ .metadata-grid { display: grid; gap: var(--spacing-sm); } .metadata-item { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-sm); background: var(--gray-50); border-radius: var(--radius-sm); } .metadata-label { font-size: 0.875rem; color: var(--gray-600); } .metadata-value { font-size: 0.875rem; font-weight: 500; color: var(--gray-900); } /* Species List */ .species-list { display: grid; gap: var(--spacing-sm); max-height: 300px; overflow-y: auto; } .species-item { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-sm); background: white; border: 1px solid var(--gray-200); border-radius: var(--radius-sm); transition: all 0.2s ease; } .species-item:hover { border-color: var(--primary-blue); box-shadow: var(--shadow-sm); } .species-name { font-size: 0.875rem; font-weight: 500; color: var(--gray-900); } .species-confidence { font-size: 0.875rem; font-weight: 600; color: var(--primary-blue); } /* Responsive Design */ @media (max-width: 1024px) { .dashboard-grid { grid-template-columns: 1fr; gap: var(--spacing-lg); } .status-banner { flex-direction: column; gap: var(--spacing-sm); text-align: center; } } @media (max-width: 768px) { .upload-area { padding: var(--spacing-lg); min-height: 150px; } .upload-icon { font-size: 2rem; } .upload-primary { font-size: 1rem; } .settings-grid { gap: var(--spacing-sm); } .image-container { min-height: 200px; } }