/* Modern Admin Dashboard CSS - Matching Main Theme */ :root { --primary: #0f766e; --primary-dark: #0b3d4a; --primary-light: #14b8a6; --secondary: #365161; --success: #16a34a; --warning: #d97706; --danger: #dc2626; --info: #2563eb; --purple: #7c3aed; --orange: #ea580c; --dark: #102632; --light: #edf4f7; --gray-50: #f7fafc; --gray-100: #f4f9fc; --gray-200: #e5eff4; --gray-300: #d3e2ea; --gray-400: #9eb2be; --gray-500: #6f8796; --gray-600: #4b5563; --gray-700: #365161; --gray-800: #1f2937; --gray-900: #102632; } * { margin: 0; padding: 0; box-sizing: border-box; } body.admin-body { font-family: 'Manrope', 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif; background: radial-gradient(760px 250px at -4% -14%, rgba(20, 184, 166, 0.2), transparent 64%), radial-gradient(860px 260px at 104% 8%, rgba(234, 88, 12, 0.12), transparent 64%), linear-gradient(180deg, #f4f8fb 0%, #edf3f7 100%); background-attachment: fixed; min-height: 100vh; color: var(--dark); overflow-x: hidden; } .admin-backdrop { position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; } .admin-backdrop .orb { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.5; animation: float 25s ease-in-out infinite; } .admin-backdrop .orb-b { width: 500px; height: 500px; background: radial-gradient(circle, rgba(20, 184, 166, 0.3), transparent); top: -100px; right: -100px; animation-delay: -5s; } .admin-backdrop .orb-c { width: 400px; height: 400px; background: radial-gradient(circle, rgba(234, 88, 12, 0.2), transparent); bottom: -50px; left: -50px; animation-delay: -10s; } @keyframes float { 0%, 100% { transform: translate(0, 0) scale(1); } 33% { transform: translate(30px, -30px) scale(1.1); } 66% { transform: translate(-20px, 20px) scale(0.9); } } /* Sidebar Styles */ .admin-sidebar { position: fixed; left: 0; top: 0; bottom: 0; width: 294px; background: linear-gradient(180deg, #062634 0%, #0b3f50 48%, #0f766e 100%); border-right: 1px solid rgba(255, 255, 255, 0.12); box-shadow: 4px 0 32px rgba(6, 38, 52, 0.2); z-index: 1000; display: flex; flex-direction: column; transition: transform 0.3s ease, width 0.3s ease; } .sidebar-brand { padding: 1.5rem 1.25rem; border-bottom: 1px solid rgba(255, 255, 255, 0.14); } .sidebar-brand-main { display: flex; align-items: center; justify-content: space-between; } .sidebar-brand-link { display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: white; } .sidebar-brand-mark { width: 48px; height: 48px; background: rgba(255, 255, 255, 0.18); border: 1px solid rgba(255, 255, 255, 0.24); border-radius: 14px; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: white; backdrop-filter: blur(10px); } .sidebar-brand-copy { display: flex; flex-direction: column; line-height: 1.1; } .sidebar-brand-copy strong { display: block; font-size: 1.25rem; font-weight: 800; color: white; font-family: 'Outfit', sans-serif; } .sidebar-brand-copy small { display: block; font-size: 0.7rem; color: rgba(255, 255, 255, 0.75); text-transform: uppercase; letter-spacing: 1.2px; font-weight: 700; margin-top: 0.25rem; } .sidebar-menu { flex: 1; overflow-y: auto; padding: 0.75rem 0.5rem; } .sidebar-menu::-webkit-scrollbar { width: 6px; } .sidebar-menu::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); border-radius: 10px; } .menu-section { font-size: 0.7rem; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; color: rgba(217, 245, 239, 0.66); padding: 0.85rem 1rem 0.5rem; margin-top: 0.5rem; } .menu-item { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; margin: 0.25rem 0.5rem; border-radius: 13px; text-decoration: none; color: rgba(236, 250, 247, 0.94); font-weight: 700; transition: all 0.2s ease; position: relative; border-left: 3px solid transparent; } .menu-item:hover { background: rgba(255, 255, 255, 0.11); color: white; transform: translateX(2px); } .menu-item.active { background: rgba(20, 184, 166, 0.29); color: white; border-left-color: #9bf7dd; box-shadow: 0 4px 12px rgba(20, 184, 166, 0.2); } .menu-item.active::after { content: ''; position: absolute; right: 12px; width: 8px; height: 8px; background: #9bf7dd; border-radius: 50%; box-shadow: 0 0 0 4px rgba(155, 247, 221, 0.2); } .menu-icon { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 11px; background: rgba(255, 255, 255, 0.14); border: 1px solid rgba(255, 255, 255, 0.2); color: white; font-size: 1.1rem; transition: all 0.2s ease; flex-shrink: 0; } .menu-item:hover .menu-icon { background: rgba(255, 255, 255, 0.2); transform: scale(1.05); } .menu-item.active .menu-icon { background: rgba(255, 255, 255, 0.25); border-color: rgba(255, 255, 255, 0.35); } .menu-label { font-size: 0.95rem; flex: 1; } .sidebar-footer { padding: 1rem 1.25rem; border-top: 1px solid rgba(255, 255, 255, 0.14); background: rgba(0, 0, 0, 0.12); } .sidebar-status { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem; background: rgba(255, 255, 255, 0.08); border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.12); } .status-dot { width: 12px; height: 12px; background: #22c55e; border-radius: 50%; box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.2); animation: pulse 2s ease-in-out infinite; flex-shrink: 0; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .status-text small { display: block; font-size: 0.7rem; color: rgba(217, 245, 239, 0.68); text-transform: uppercase; letter-spacing: 0.8px; font-weight: 700; } .status-text strong { display: block; font-size: 0.85rem; color: white; margin-top: 2px; } /* Sidebar Overlay for Mobile */ .admin-sidebar-overlay { display: none; position: fixed; inset: 0; background: rgba(16, 38, 50, 0.6); backdrop-filter: blur(4px); z-index: 999; opacity: 0; transition: opacity 0.3s ease; } .admin-sidebar-overlay.show { display: block; opacity: 1; } /* Main Wrapper */ .admin-wrapper { margin-left: 294px; min-height: 100vh; transition: margin-left 0.3s ease; } /* Topbar Styles */ .admin-topbar { position: sticky; top: 0; z-index: 900; background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(20px); border-bottom: 1px solid rgba(16, 38, 50, 0.08); padding: 1rem 1.5rem; display: flex; align-items: center; justify-content: space-between; box-shadow: 0 2px 16px rgba(16, 38, 50, 0.06); } .topbar-left { display: flex; align-items: center; gap: 1rem; } .topbar-icon-btn { width: 44px; height: 44px; border: 1px solid rgba(16, 38, 50, 0.12); background: white; color: var(--gray-700); border-radius: 12px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s ease; } .topbar-icon-btn:hover { background: var(--primary); color: white; border-color: var(--primary); transform: scale(1.05); } .topbar-title-wrap small { display: block; font-size: 0.7rem; color: var(--gray-500); text-transform: uppercase; letter-spacing: 1.2px; font-weight: 800; } .topbar-title-wrap h5 { margin: 0.25rem 0 0; font-size: 1.5rem; font-weight: 800; color: var(--dark); font-family: 'Outfit', sans-serif; } .topbar-actions { display: flex; align-items: center; gap: 1rem; } .topbar-link-btn { padding: 0.625rem 1.25rem; border-radius: 12px; font-weight: 700; transition: all 0.2s ease; border: 1px solid rgba(16, 38, 50, 0.12); } .topbar-link-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .topbar-user { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem 1rem 0.5rem 0.5rem; background: var(--gray-50); border-radius: 999px; border: 1px solid rgba(16, 38, 50, 0.08); } .user-avatar { width: 44px; height: 44px; background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 1.1rem; box-shadow: 0 4px 12px rgba(15, 118, 110, 0.3); } /* Main Content */ .admin-content { padding: 2rem 1.5rem; animation: fadeIn 0.5s ease; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } /* Cards */ .card { background: linear-gradient(180deg, #ffffff, #f7fcff); border: 1px solid rgba(16, 38, 50, 0.12); border-radius: 20px; box-shadow: 0 6px 18px rgba(10, 34, 46, 0.08); overflow: hidden; transition: all 0.3s ease; } .card:hover { box-shadow: 0 14px 32px rgba(10, 34, 46, 0.13); transform: translateY(-4px); } .card-header { background: linear-gradient(180deg, #fcfeff, #eef6f9); border-bottom: 1px solid rgba(16, 38, 50, 0.09); padding: 1.25rem 1.5rem; font-weight: 800; } .card-body { padding: 1.5rem; } /* Stat Cards */ .stat-card { background: linear-gradient(180deg, #ffffff, #f5fbfc); border-radius: 20px; padding: 1.5rem; box-shadow: 0 6px 18px rgba(10, 34, 46, 0.08); transition: all 0.3s ease; position: relative; overflow: hidden; border: 1px solid rgba(15, 118, 110, 0.18); } .stat-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--primary-dark) 0%, var(--primary-light) 100%); } .stat-card:hover { transform: translateY(-8px); box-shadow: 0 16px 40px rgba(10, 34, 46, 0.16); } .stat-icon { width: 64px; height: 64px; border-radius: 18px; display: flex; align-items: center; justify-content: center; font-size: 1.75rem; margin-bottom: 1rem; color: white; box-shadow: 0 14px 24px rgba(15, 118, 110, 0.2); } .stat-icon.primary { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%); } .stat-icon.secondary { background: linear-gradient(135deg, #7c3aed 0%, #a78bfa 100%); } .stat-icon.warning { background: linear-gradient(135deg, #d97706 0%, #f59e0b 100%); } .stat-icon.success { background: linear-gradient(135deg, #15803d 0%, #22c55e 100%); } .stat-value { font-size: 2rem; font-weight: 800; color: var(--dark); margin-bottom: 0.5rem; font-family: 'Outfit', sans-serif; } .stat-label { font-size: 0.95rem; color: var(--gray-600); font-weight: 700; } /* Buttons */ .btn { padding: 0.625rem 1.5rem; border-radius: 12px; font-weight: 700; transition: all 0.2s ease; border: 1px solid transparent; } .btn-primary { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%); color: white; box-shadow: 0 12px 24px rgba(15, 118, 110, 0.24); } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 16px 30px rgba(15, 118, 110, 0.3); color: white; } .btn-success { background: linear-gradient(135deg, #15803d 0%, #22c55e 100%); box-shadow: 0 12px 24px rgba(22, 163, 74, 0.24); } .btn-danger { background: linear-gradient(135deg, #b91c1c 0%, #ef4444 100%); box-shadow: 0 12px 24px rgba(220, 38, 38, 0.24); } .btn-warning { background: linear-gradient(135deg, #b45309 0%, #f59e0b 100%); box-shadow: 0 12px 24px rgba(217, 119, 6, 0.24); } .btn-outline-primary { border-color: rgba(15, 118, 110, 0.36); color: var(--primary); background: white; } .btn-outline-primary:hover { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%); color: white; border-color: transparent; } .btn-outline-secondary { border-color: rgba(53, 81, 97, 0.3); color: var(--gray-700); background: white; } .btn-outline-secondary:hover { background: var(--gray-100); border-color: rgba(53, 81, 97, 0.45); } .btn-outline-danger { border-color: rgba(220, 38, 38, 0.36); color: var(--danger); background: white; } .btn-outline-danger:hover { background: linear-gradient(135deg, #b91c1c 0%, #ef4444 100%); color: white; border-color: transparent; } .btn-sm { padding: 0.5rem 1rem; font-size: 0.875rem; } /* Forms */ .form-control, .form-select { border: 1px solid #d3e2ea; border-radius: 11px; min-height: 46px; padding: 0.65rem 0.86rem; transition: all 0.2s ease; } .form-control:focus, .form-select:focus { border-color: rgba(20, 184, 166, 0.8); box-shadow: 0 0 0 0.22rem rgba(20, 184, 166, 0.16); } .form-label { font-weight: 700; color: var(--gray-700); margin-bottom: 0.5rem; } /* Tables */ .table { border-collapse: separate; border-spacing: 0; } .table thead th { background: linear-gradient(180deg, #eff6fa, #e5f0f6); color: #496273; font-weight: 800; text-transform: uppercase; font-size: 0.72rem; letter-spacing: 1.2px; padding: 1rem; border: none; } .table tbody td { padding: 1rem; border-top: 1px solid rgba(16, 38, 50, 0.08); vertical-align: middle; } .table tbody tr { transition: all 0.2s ease; } .table tbody tr:hover { background: rgba(14, 165, 160, 0.06); } /* Badges */ .badge { padding: 0.5rem 1rem; border-radius: 8px; font-weight: 700; font-size: 0.8rem; } .bg-primary { background: linear-gradient(135deg, var(--primary-dark), var(--primary-light)) !important; } .bg-success { background: linear-gradient(135deg, #15803d, #22c55e) !important; } .bg-warning { background: linear-gradient(135deg, #b45309, #f59e0b) !important; } .bg-danger { background: linear-gradient(135deg, #b91c1c, #ef4444) !important; } .bg-info { background: linear-gradient(135deg, #1d4ed8, #2563eb) !important; } /* Alerts */ .alert { border: none; border-radius: 12px; padding: 1rem 1.25rem; box-shadow: 0 6px 18px rgba(10, 34, 46, 0.08); } /* Collapsed Sidebar */ body.admin-collapsed .admin-sidebar { width: 80px; } body.admin-collapsed .admin-wrapper { margin-left: 80px; } body.admin-collapsed .sidebar-brand-copy, body.admin-collapsed .menu-label, body.admin-collapsed .menu-section, body.admin-collapsed .status-text { display: none; } body.admin-collapsed .menu-item { justify-content: center; padding: 0.75rem; } body.admin-collapsed .sidebar-status { justify-content: center; } body.admin-collapsed .menu-item.active::after { display: none; } /* Responsive */ @media (max-width: 991.98px) { .admin-sidebar { transform: translateX(-100%); } .admin-sidebar.show { transform: translateX(0); } .admin-wrapper { margin-left: 0; } body.admin-collapsed .admin-wrapper { margin-left: 0; } .admin-content { padding: 1.5rem 1rem; } } @media (max-width: 767.98px) { .admin-topbar { padding: 0.75rem 1rem; } .topbar-title-wrap h5 { font-size: 1.25rem; } .admin-content { padding: 1rem; } .stat-card { padding: 1.25rem; } .stat-value { font-size: 1.5rem; } .topbar-user { padding: 0.35rem 0.65rem 0.35rem 0.36rem; } .topbar-user > div { display: none; } } @media (max-width: 575.98px) { .topbar-link-btn { display: none !important; } .stat-icon { width: 56px; height: 56px; font-size: 1.5rem; } } /* Fade In Animation */ .fade-in { animation: fadeIn 0.5s ease; } /* Page Shell */ .page-shell { max-width: 1400px; margin: 0 auto; } /* Dropdown Menu */ .dropdown-menu { border: 1px solid rgba(16, 38, 50, 0.12); border-radius: 12px; box-shadow: 0 14px 32px rgba(10, 34, 46, 0.13); padding: 0.5rem; } .dropdown-item { border-radius: 8px; padding: 0.75rem 1rem; transition: all 0.2s ease; font-weight: 700; } .dropdown-item:hover { background: var(--gray-100); } /* DataTables Custom Styling */ .dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_filter input { border: 1px solid #d3e2ea; border-radius: 8px; padding: 0.5rem 0.75rem; } .dataTables_wrapper .dataTables_paginate .paginate_button { border-radius: 8px !important; margin: 0 2px; } .dataTables_wrapper .dataTables_paginate .paginate_button.current { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-light) 100%) !important; color: white !important; border: none !important; } /* Utility Classes */ .text-primary { color: var(--primary) !important; } .text-success { color: var(--success) !important; } .text-warning { color: var(--warning) !important; } .text-danger { color: var(--danger) !important; } .fw-semibold { font-weight: 600 !important; } .fw-bold { font-weight: 700 !important; } .rounded-2 { border-radius: 8px !important; } .rounded-3 { border-radius: 12px !important; } .rounded-circle { border-radius: 50% !important; }