/* Zanzibar Digital Freezone - Main CSS */ /* Based on the original Actix MVC app styling */ /* Custom CSS Variables for Very Soft Pastel Colors */ :root { /* Very Muted Pastel Colors */ --bs-primary: #d4e6f1; --bs-primary-rgb: 212, 230, 241; --bs-secondary: #e8eaed; --bs-secondary-rgb: 232, 234, 237; --bs-success: #d5f4e6; --bs-success-rgb: 213, 244, 230; --bs-info: #d6f0f7; --bs-info-rgb: 214, 240, 247; --bs-warning: #fef9e7; --bs-warning-rgb: 254, 249, 231; --bs-danger: #fdeaea; --bs-danger-rgb: 253, 234, 234; /* Light theme colors */ --bs-light: #f8f9fa; --bs-dark: #343a40; /* Text colors - always black or white */ --text-primary: #212529; --text-secondary: #495057; --text-muted: #6c757d; } /* Dark theme variables */ [data-bs-theme="dark"] { /* Very Muted Dark Pastels */ --bs-primary: #2c3e50; --bs-primary-rgb: 44, 62, 80; --bs-secondary: #34495e; --bs-secondary-rgb: 52, 73, 94; --bs-success: #27ae60; --bs-success-rgb: 39, 174, 96; --bs-info: #3498db; --bs-info-rgb: 52, 152, 219; --bs-warning: #f39c12; --bs-warning-rgb: 243, 156, 18; --bs-danger: #e74c3c; --bs-danger-rgb: 231, 76, 60; --text-primary: #ffffff; --text-secondary: #adb5bd; --text-muted: #6c757d; } /* Global Styles */ * { box-sizing: border-box; } body { padding-top: 50px; /* Height of the fixed header */ margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; background-color: var(--bs-light); color: var(--text-primary); transition: background-color 0.3s ease, color 0.3s ease; } /* Dark theme body */ [data-bs-theme="dark"] body { background-color: #1a1d20; color: var(--text-primary); } /* Header Styles */ .header { height: 50px; position: fixed; top: 0; width: 100%; z-index: 1030; background-color: #212529 !important; color: white; border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; } .header .container-fluid { height: 100%; } .header h5 { margin: 0; font-size: 1.1rem; font-weight: 500; } .header .navbar-toggler { border: none; padding: 0.25rem 0.5rem; background: none; } .header .navbar-toggler:focus { box-shadow: none; } .header .nav-link { color: white !important; text-decoration: none; padding: 0.5rem 1rem; } .header .nav-link:hover { color: #adb5bd !important; } .header .nav-link.active { color: white !important; font-weight: 600; } .header .dropdown-menu { border: 1px solid #dee2e6; box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); } /* Sidebar Styles */ .sidebar { width: 240px; position: fixed; height: calc(100vh - 90px); /* Subtract header and footer height */ top: 50px; /* Position below header */ background-color: #f8f9fa; border-right: 1px solid #dee2e6; overflow-y: auto; z-index: 1010; transition: background-color 0.3s ease; } /* Dark theme sidebar */ [data-bs-theme="dark"] .sidebar { background-color: #1a1d20 !important; border-right: 1px solid #495057; } .sidebar .nav-link { color: #495057; text-decoration: none; padding: 0.75rem 1rem; display: flex; align-items: center; border-radius: 0; transition: all 0.2s ease; } .sidebar .nav-link:hover { background-color: #e9ecef; color: #212529; } .sidebar .nav-link.active { background-color: #e7f3ff; color: #212529; border-left: 4px solid #d4e6f1; font-weight: 600; } /* Dark theme sidebar nav links */ [data-bs-theme="dark"] .sidebar .nav-link { color: #ffffff !important; } [data-bs-theme="dark"] .sidebar .nav-link:hover { background-color: #2d3339 !important; color: #ffffff !important; } [data-bs-theme="dark"] .sidebar .nav-link.active { background-color: #34495e !important; color: #ffffff !important; border-left: 4px solid #2c3e50 !important; } /* Dark theme sidebar cards */ [data-bs-theme="dark"] .sidebar .card { background-color: #2d3339 !important; border-color: #495057 !important; color: #ffffff !important; } [data-bs-theme="dark"] .sidebar .card.bg-white { background-color: #2d3339 !important; color: #ffffff !important; } [data-bs-theme="dark"] .sidebar .card.bg-dark { background-color: #34495e !important; color: #ffffff !important; } /* Dark theme sidebar card icons */ [data-bs-theme="dark"] .sidebar .bg-dark { background-color: #ffffff !important; color: #212529 !important; } [data-bs-theme="dark"] .sidebar .bg-white { background-color: #2d3339 !important; color: #ffffff !important; } /* Dark theme dividers */ [data-bs-theme="dark"] .sidebar hr { border-color: #495057 !important; opacity: 0.5; } /* Dark theme text colors */ [data-bs-theme="dark"] .sidebar .text-muted { color: #adb5bd !important; } [data-bs-theme="dark"] .sidebar h6 { color: #ffffff !important; } [data-bs-theme="dark"] .sidebar small { color: #adb5bd !important; } .sidebar .nav-link i { margin-right: 0.5rem; width: 1.2rem; text-align: center; } /* Main Content Area */ .main-content { margin-left: 240px; min-height: calc(100vh - 90px); padding: 1rem; } /* Footer Styles */ .footer { height: 40px; line-height: 40px; background-color: #212529 !important; color: white; position: relative; margin-top: auto; } .footer a { color: white; text-decoration: none; } .footer a:hover { color: #adb5bd; } /* Feature Cards (Home Page) */ .compact-card { max-height: 150px; overflow-y: auto; } .compact-card .card-body { padding: 0.75rem; } .compact-card .card-text { font-size: 0.875rem; line-height: 1.4; margin-bottom: 0; } .card-header { padding: 0.5rem 0.75rem; border-bottom: 1px solid rgba(0, 0, 0, 0.125); } .card-header h6 { margin: 0; font-size: 0.875rem; font-weight: 600; } /* Toast Notifications */ .toast-container { position: fixed; top: 1rem; right: 1rem; z-index: 1055; } .toast { min-width: 300px; margin-bottom: 0.5rem; border: none; box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); } .toast-header { border-bottom: 1px solid rgba(0, 0, 0, 0.125); padding: 0.5rem 0.75rem; } .toast-success .toast-header { background-color: var(--bs-success); color: var(--text-primary); } .toast-error .toast-header { background-color: var(--bs-danger); color: var(--text-primary); } .toast-warning .toast-header { background-color: var(--bs-warning); color: var(--text-primary); } .toast-info .toast-header { background-color: var(--bs-info); color: var(--text-primary); } .toast-body { padding: 0.75rem; background-color: white; } /* Login Form Styles */ .login-container { min-height: calc(100vh - 50px); display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #0099FF 0%, #00CC66 100%); } .login-card { width: 100%; max-width: 400px; box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); } .login-card .card-header { background-color: var(--bs-primary); color: var(--text-primary); border-bottom: none; } .login-card .form-control:focus { border-color: var(--bs-primary); box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25); } .login-card .btn-primary { background-color: var(--bs-primary); border-color: var(--bs-primary); color: var(--text-primary); } .login-card .btn-primary:hover { background-color: rgba(var(--bs-primary-rgb), 0.8); border-color: rgba(var(--bs-primary-rgb), 0.8); color: var(--text-primary); } /* Responsive Design */ @media (min-width: 768px) { .sidebar { width: 240px; position: fixed; height: calc(100vh - 90px); top: 50px; } .main-content { margin-left: 240px; min-height: calc(100vh - 90px); } } @media (max-width: 767.98px) { .sidebar { width: 240px; position: fixed; height: calc(100vh - 90px); top: 50px; left: -240px; transition: left 0.3s ease; z-index: 1020; box-shadow: 0.5rem 0 1rem rgba(0, 0, 0, 0.15); } .sidebar.show { left: 0; } .main-content { margin-left: 0; } .header .d-md-flex { display: none !important; } } /* Utility Classes */ .text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .shadow-sm { box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } .border-start { border-left: 1px solid #dee2e6 !important; } .border-4 { border-width: 4px !important; } /* Loading States */ .loading { opacity: 0.6; pointer-events: none; } .spinner-border-sm { width: 1rem; height: 1rem; } /* Focus States for Accessibility */ .nav-link:focus, .btn:focus, .form-control:focus { outline: 2px solid var(--bs-primary); outline-offset: 2px; } /* Button and component overrides for very muted pastel colors */ .btn-primary { background-color: var(--bs-primary); border-color: var(--bs-primary); color: #212529; } .btn-primary:hover { background-color: #c3d9ed; border-color: #c3d9ed; color: #212529; } .btn-outline-primary { color: #212529; border-color: var(--bs-primary); } .btn-outline-primary:hover { background-color: var(--bs-primary); border-color: var(--bs-primary); color: #212529; } .btn-success { background-color: var(--bs-success); border-color: var(--bs-success); color: #212529; } .btn-success:hover { background-color: #c8f0dd; border-color: #c8f0dd; color: #212529; } /* Dark theme button overrides */ [data-bs-theme="dark"] .btn-primary { background-color: var(--bs-primary); border-color: var(--bs-primary); color: #ffffff; } [data-bs-theme="dark"] .btn-primary:hover { background-color: #34495e; border-color: #34495e; color: #ffffff; } [data-bs-theme="dark"] .btn-outline-primary { color: #ffffff; border-color: var(--bs-primary); } [data-bs-theme="dark"] .btn-outline-primary:hover { background-color: var(--bs-primary); border-color: var(--bs-primary); color: #ffffff; } [data-bs-theme="dark"] .btn-success { background-color: var(--bs-success); border-color: var(--bs-success); color: #ffffff; } [data-bs-theme="dark"] .btn-success:hover { background-color: #2ecc71; border-color: #2ecc71; color: #ffffff; } /* Card styling improvements */ .card { border: 1px solid #e9ecef; background-color: #ffffff; color: #212529; } [data-bs-theme="dark"] .card { background-color: #2d3339 !important; border-color: #495057 !important; color: #ffffff !important; } /* Text color overrides - always black or white */ .text-primary { color: #212529 !important; } .text-secondary { color: #495057 !important; } .text-muted { color: #6c757d !important; } /* Dark theme text overrides */ [data-bs-theme="dark"] .text-primary { color: #ffffff !important; } [data-bs-theme="dark"] .text-secondary { color: #adb5bd !important; } [data-bs-theme="dark"] .text-muted { color: #6c757d !important; } /* Border color overrides */ .border-primary { border-color: var(--bs-primary) !important; } .border-success { border-color: var(--bs-success) !important; } /* Background color overrides */ .bg-primary { background-color: var(--bs-primary) !important; color: #212529 !important; } .bg-success { background-color: var(--bs-success) !important; color: #212529 !important; } /* Dark theme background overrides */ [data-bs-theme="dark"] .bg-primary { background-color: var(--bs-primary) !important; color: #ffffff !important; } [data-bs-theme="dark"] .bg-success { background-color: var(--bs-success) !important; color: #ffffff !important; } /* Print Styles */ @media print { .header, .sidebar, .footer { display: none !important; } .main-content { margin-left: 0 !important; padding: 0 !important; } }