/* Modern Dashboard Styles for Bootstrap 5 */ :root { --sidebar-width: 250px; --navbar-height: 60px; --primary-color: #0d6efd; --secondary-color: #6c757d; --success-color: #198754; --danger-color: #dc3545; --warning-color: #ffc107; --info-color: #0dcaf0; --light-color: #f8f9fa; --dark-color: #212529; } /* Base Styles */ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; background-color: #f5f5f5; } /* Sidebar Styles */ #sidebar { min-width: var(--sidebar-width); max-width: var(--sidebar-width); min-height: 100vh; transition: all 0.3s; position: fixed; top: 0; left: 0; z-index: 999; } #sidebar.active { margin-left: calc(-1 * var(--sidebar-width)); } #sidebar .sidebar-header { background-color: rgba(0, 0, 0, 0.1); } #sidebar ul.components { padding: 20px 0; } #sidebar ul li a { padding: 10px; font-size: 0.95rem; display: block; transition: all 0.3s; } #sidebar ul li a:hover { background-color: rgba(255, 255, 255, 0.1); } #sidebar ul li a.active { background-color: var(--primary-color); color: white !important; } #sidebar ul ul a { font-size: 0.9rem; padding-left: 30px; } /* Page Content */ #page-content-wrapper { width: 100%; padding-left: var(--sidebar-width); transition: all 0.3s; } #page-content-wrapper.active { padding-left: 0; } /* Navbar Styles */ .navbar { box-shadow: 0 2px 4px rgba(0,0,0,.08); min-height: var(--navbar-height); } .navbar .form-control { border-radius: 20px; border: 1px solid #e0e0e0; } .navbar .form-control:focus { box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25); } /* Card Improvements */ .card { border: none; box-shadow: 0 0 20px rgba(0, 0, 0, 0.08); margin-bottom: 2rem; transition: transform 0.2s; } .card:hover { transform: translateY(-2px); box-shadow: 0 5px 25px rgba(0, 0, 0, 0.12); } .card-header { background-color: #f8f9fa; border-bottom: 1px solid #e9ecef; font-weight: 600; } /* Button Enhancements */ .btn { border-radius: 0.375rem; padding: 0.5rem 1rem; font-weight: 500; transition: all 0.2s; } .btn:hover { transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } /* Badge Improvements */ .badge { font-weight: 500; padding: 0.35em 0.65em; } /* Alert Improvements */ .alert { border: none; border-radius: 0.5rem; } /* Progress Bar Enhancements */ .progress { height: 1rem; border-radius: 0.5rem; background-color: #e9ecef; } .progress-bar { border-radius: 0.5rem; } /* Modal Improvements */ .modal-content { border: none; border-radius: 0.5rem; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1); } .modal-header { border-bottom: 1px solid #e9ecef; } .modal-footer { border-top: 1px solid #e9ecef; } /* Dropdown Improvements */ .dropdown-menu { border: none; box-shadow: 0 5px 25px rgba(0, 0, 0, 0.1); border-radius: 0.5rem; } .dropdown-item:hover { background-color: #f8f9fa; } /* Pagination Enhancements */ .pagination { --bs-pagination-border-radius: 0.375rem; } .page-link { color: var(--primary-color); } .page-item.active .page-link { background-color: var(--primary-color); border-color: var(--primary-color); } /* Sticky Navigation */ .sticky-top { top: 80px; } /* Section Spacing */ section { scroll-margin-top: 80px; } /* Footer Styles */ footer { margin-top: auto; } /* Responsive Adjustments */ @media (max-width: 768px) { #sidebar { margin-left: calc(-1 * var(--sidebar-width)); } #sidebar.active { margin-left: 0; } #page-content-wrapper { padding-left: 0; } #page-content-wrapper.active { padding-left: var(--sidebar-width); } .sticky-top { position: static !important; } } /* Utility Classes */ .gap-2 { gap: 0.5rem !important; } .gap-3 { gap: 1rem !important; } /* Animation Classes */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .fade-in { animation: fadeIn 0.3s ease-out; } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Focus Styles for Accessibility */ a:focus, button:focus, input:focus, select:focus, textarea:focus { outline: 2px solid var(--primary-color); outline-offset: 2px; } /* Skip Navigation Link */ .skip-navigation { position: absolute; left: -9999px; z-index: 999; } .skip-navigation:focus { position: fixed; top: 0; left: 0; background: var(--primary-color); color: white; padding: 0.5rem 1rem; text-decoration: none; }