/* Marine Species API - Main Stylesheet */ :root { /* Color Palette */ --primary-blue: #2563eb; --success-green: #059669; --error-red: #dc2626; --warning-yellow: #d97706; /* Grays */ --gray-50: #f9fafb; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db; --gray-400: #9ca3af; --gray-500: #6b7280; --gray-600: #4b5563; --gray-700: #374151; --gray-800: #1f2937; --gray-900: #111827; /* Spacing */ --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem; --spacing-2xl: 3rem; /* Border Radius */ --radius-sm: 6px; --radius-md: 8px; --radius-lg: 12px; --radius-xl: 16px; /* Shadows */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } /* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-size: 1rem; line-height: 1.5; color: var(--gray-900); background-color: var(--gray-50); min-height: 100vh; display: flex; flex-direction: column; } /* Container */ .container { max-width: 1200px; margin: 0 auto; padding: 0 var(--spacing-md); } /* Header */ .header { background: white; border-bottom: 1px solid var(--gray-200); position: sticky; top: 0; z-index: 100; } .header .container { display: flex; align-items: center; justify-content: space-between; padding: var(--spacing-md); } .nav-brand { display: flex; align-items: center; gap: var(--spacing-sm); } .nav-icon { font-size: 1.5rem; } .nav-title { font-size: 1.25rem; font-weight: 600; color: var(--gray-900); } .nav-tabs { display: flex; gap: var(--spacing-lg); } .nav-tab { padding: var(--spacing-sm) var(--spacing-md); text-decoration: none; color: var(--gray-600); font-weight: 500; border-radius: var(--radius-md); transition: all 0.2s ease; } .nav-tab:hover { color: var(--primary-blue); background-color: var(--gray-100); } .nav-tab.active { color: var(--primary-blue); background-color: var(--gray-100); } /* Main Content */ .main { flex: 1; padding: var(--spacing-xl) 0; } /* Footer */ .footer { background: white; border-top: 1px solid var(--gray-200); padding: var(--spacing-lg) 0; margin-top: auto; } .footer p { text-align: center; color: var(--gray-500); font-size: 0.875rem; } /* Typography */ h1 { font-size: 2rem; font-weight: 600; color: var(--gray-900); margin-bottom: var(--spacing-lg); } h2 { font-size: 1.5rem; font-weight: 500; color: var(--gray-900); margin-bottom: var(--spacing-md); } h3 { font-size: 1.25rem; font-weight: 500; color: var(--gray-900); margin-bottom: var(--spacing-sm); } /* Cards */ .card { background: white; border: 1px solid #e5e7eb; border-radius: 12px; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); overflow: hidden; width: 100%; } .card-header { padding: 1.5rem; border-bottom: 1px solid #e5e7eb; background: #f9fafb; } .card-body { padding: 1.5rem; } .card-title { font-size: 1.125rem; font-weight: 600; color: var(--gray-900); margin: 0; } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--spacing-sm); padding: 12px 24px; font-size: 1rem; font-weight: 500; text-decoration: none; border: none; border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; min-height: 44px; } .btn-primary { background: var(--primary-blue); color: white; } .btn-primary:hover { background: #1d4ed8; transform: translateY(-1px); box-shadow: var(--shadow-md); } .btn-primary:disabled { background: var(--gray-300); cursor: not-allowed; transform: none; box-shadow: none; } .btn-secondary { background: white; color: var(--gray-700); border: 1px solid var(--gray-300); } .btn-secondary:hover { background: var(--gray-50); border-color: var(--gray-400); } /* Loading Spinner */ .spinner { width: 20px; height: 20px; border: 2px solid transparent; border-top: 2px solid currentColor; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Responsive Design */ @media (max-width: 768px) { .container { padding: 0 var(--spacing-sm); } .header .container { flex-direction: column; gap: var(--spacing-md); } .nav-tabs { gap: var(--spacing-md); } h1 { font-size: 1.75rem; } .main { padding: var(--spacing-lg) 0; } }