@import "primeicons/primeicons.css"; /* CSS Variables for Color Palette */ :root { --primary-red: #c80000; --dark-gray: #1a1a1a; --medium-gray: #2e2e2e; --white: #ffffff; --light-gray: #b0b0b0; --accent-green: #00cc66; --yellow-orange: #ffaa00; --red: #ff4444; } /* Main App Container */ .app-container { height: 100vh; display: flex; flex-direction: column; background-color: var(--white); } /* Top Navbar */ .top-navbar { background-color: var(--dark-gray); color: var(--white); padding: 0.5rem 1rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); z-index: 1000; height: 50px; display: flex; align-items: center; justify-content: space-between; border-bottom: 2px solid var(--primary-red); } .navbar-left { display: flex; align-items: center; gap: 1rem; } .logo { display: flex; align-items: center; gap: 0.5rem; font-size: 1.25rem; font-weight: bold; } .logo-text-white { color: var(--white); } .logo-text-red { color: var(--primary-red); } .navbar-right { display: flex; align-items: center; gap: 0.75rem; } .notification-btn { background: none; border: none; color: var(--white); padding: 0.25rem; border-radius: 4px; cursor: pointer; position: relative; display: flex; justify-items: center; align-items: center; padding-left: 12px; } .notification-badge { position: absolute; top: 5px; right: 4px; background-color: var(--red); color: var(--white); border-radius: 50%; width: 15px; height: 15px; font-size: 0.7rem; display: flex; align-items: center; justify-content: center; font-weight: bold; } .user-menu-btn { background: none; border: none; color: var(--white); padding: 0.25rem 0.5rem; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 0.25rem; display: flex; align-items: center; justify-content: center; padding-left: -2px; } /* Sidenav Container */ .sidenav-container { flex: 1; background-color: var(--white); } /* Sidebar - Full Width with Text */ .sidebar { background-color: var(--dark-gray); width: 250px; border-right: 1px solid #444; overflow-y: auto; } .sidebar-menu { padding: 0.5rem 0; } .menu-section { margin-bottom: 0.5rem; } .section-title { color: var(--light-gray); font-size: 0.75rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; padding: 0.5rem 1rem 0.25rem; margin: 0; display: flex; align-items: center; gap: 0.5rem; } .menu-item { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; color: var(--white); text-decoration: none; transition: all 0.2s ease; border-radius: 4px; margin: 0.125rem 0.5rem; font-size: 0.875rem; min-height: 48px; } .menu-item:hover { background-color: rgba(255, 255, 255, 0.1); color: var(--white); } .active-link { background-color: var(--primary-red); color: var(--white); } .active-link:hover { background-color: #b00000; } /* Main Content */ .main-content { background-color: var(--white); overflow-y: auto; padding: 0; } .content-wrapper { max-width: 100%; margin: 0 auto; background-color: var(--white); min-height: 100vh; } /* Content Header */ .content-header { background-color: var(--light-gray); padding: 0.75rem 1rem; border-bottom: 1px solid #ddd; } .content-header h1 { color: var(--dark-gray); font-size: 1.25rem; font-weight: 600; margin: 0; } /* Mobile Menu Toggle */ .mobile-menu-toggle { display: none; background: none; border: none; color: var(--white); padding: 0.25rem; border-radius: 4px; cursor: pointer; } .mobile-close-btn { display: none; position: fixed; top: 0.5rem; right: 0.5rem; background: var(--primary-red); border: none; color: var(--white); padding: 0.5rem; border-radius: 50%; cursor: pointer; z-index: 1001; } .mobile-overlay { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 999; } /* Custom Menu Styling */ .custom-menu { list-style: none; padding: 0; margin: 0; width: 500px; } .menu-item-custom { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0.75rem; /* color: var(--white); */ text-decoration: none; transition: all 0.2s ease; border-radius: 4px; margin: 0.0625rem 0.375rem; font-size: 0.8125rem; width: 200px !important; } .menu-item-custom:hover { background-color: rgba(255, 255, 255, 0.1); color: var(--medium-gray); } .menu-icon { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; } .notification-success { color: var(--accent-green); } .notification-warning { color: var(--yellow-orange); } .notification-info { color: var(--light-gray); } .menu-divider { height: 2px; background-color: var(--primary-red); margin: 0.5rem 1rem; } /* PrimeIcons Styling */ .pi { font-size: 1.25rem; display: inline-block; vertical-align: middle; } .pi.pi-bars, .pi.pi-times, .pi.pi-bell, .pi.pi-user, .pi.pi-cog, .pi.pi-shield, .pi.pi-sign-out, .pi.pi-check-circle, .pi.pi-exclamation-triangle, .pi.pi-info-circle, .pi.pi-home, .pi.pi-shopping-cart, .pi.pi-question-circle, .pi.pi-wrench { font-size: 1.25rem; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; } /* Responsive Design */ @media (max-width: 1024px) { .sidebar { width: 250px; /* Keep full width */ } .main-content { padding: 0; } } @media (max-width: 768px) { .top-navbar { padding: 0.25rem 0.75rem; height: 45px; } .logo { font-size: 1.125rem; } .mobile-menu-toggle { display: block; } .sidebar { width: 250px; /* Keep full width even on mobile */ position: fixed; top: 0; left: 0; height: 100vh; z-index: 1000; transform: translateX(-100%); transition: transform 0.3s ease; } .sidebar.open { transform: translateX(0); } .mobile-close-btn { display: block; } .mobile-overlay { display: block; } .main-content { padding: 0; margin-left: 0; } .menu-item { padding: 0.75rem 1rem; font-size: 0.875rem; min-height: 48px; color: var(--white) !important; } } @media (max-width: 480px) { .top-navbar { padding: 0.25rem 0.5rem; height: 40px; } .logo { font-size: 1rem; gap: 0.25rem; } .navbar-right { gap: 0.5rem; } .sidebar { width: 250px; } .main-content { padding: 0; } .menu-item { padding: 0.625rem 0.875rem; font-size: 0.8125rem; min-height: 44px; } } @media (max-width: 360px) { .top-navbar { height: 35px; } .logo { font-size: 0.875rem; } .sidebar { width: 250px; } .menu-item { padding: 0.5rem 0.75rem; font-size: 0.75rem; min-height: 40px; } } /* Animations */ .logo { transition: transform 0.2s ease; } .logo:hover { transform: scale(1.05); } .notification-btn:hover, .user-menu-btn:hover { background-color: rgba(255, 255, 255, 0.1); } .menu-item { transition: all 0.2s ease; } .menu-item:hover { transform: translateX(4px); } /* Compact spacing for better UX */ .sidenav-container { height: calc(100vh - 50px); } .main-content { min-height: calc(100vh - 50px); } /* Optimize for content density */ .content-wrapper { padding: 0; } /* Reduce unnecessary spacing */ .menu-section { margin-bottom: 0.25rem; } .section-title { padding: 0.5rem 1rem 0.25rem; margin: 0; } .menu-item { margin: 0.125rem 0.5rem; } /* Full width sidebar optimizations */ .sidebar { width: 250px; } .sidebar-menu { padding: 0.5rem 0; } .menu-item { padding: 0.75rem 1rem; font-size: 0.875rem; min-height: 48px; } .section-title { font-size: 0.75rem; padding: 0.5rem 1rem 0.25rem; } .menu-icon { width: 20px; height: 20px; font-size: 1.25rem; } /* Responsive adjustments for full width sidebar */ @media (max-width: 1024px) { .sidebar { width: 250px; } } @media (max-width: 768px) { .sidebar { width: 250px; } .menu-item { padding: 0.75rem 1rem; font-size: 0.875rem; min-height: 48px; } } .menu-content { display: flex; align-items: center; gap: 0.5rem; } .menu-icon { font-size: 1rem; width: 20px; text-align: center; }