/* ===== RESET & BASE ===== */ [x-cloak] { display: none !important; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: #f8fafc !important; font-family: 'Figtree', 'Segoe UI', sans-serif; min-height: 100vh; overflow-x: hidden; color: #1e293b; } /* ===== SIDEBAR STYLES ===== */ .sidebar { position: fixed; left: 0; top: 0; height: 100vh; width: 280px; background: #1e3a8a; border-right: 1px solid rgba(255, 255, 255, 0.1); z-index: 50; transition: all 0.3s ease; overflow-y: auto; box-shadow: 4px 0 10px rgba(0, 0, 0, 0.1); } .sidebar::-webkit-scrollbar { width: 5px; } .sidebar::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.1); } .sidebar::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.3); border-radius: 10px; } .sidebar::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.5); } /* Sidebar Header */ .sidebar-header { padding: 0 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.1); margin-bottom: 1rem; height: 64px; display: flex; align-items: center; } .sidebar-logo { display: flex; align-items: center; gap: 0.75rem; height: 100%; } .sidebar-logo-image { width: 38px; height: 38px; object-fit: contain; filter: brightness(0) invert(1); } .sidebar-logo-text { font-size: 1.2rem; font-weight: 900; color: white; line-height: 1.2; } .sidebar-logo-badge { font-size: 0.7rem; background: rgba(255, 255, 255, 0.15); color: rgba(255, 255, 255, 0.9); padding: 0.2rem 0.6rem; border-radius: 1rem; border: 1px solid rgba(255, 255, 255, 0.2); } /* Sidebar Menu Items */ .sidebar-menu-item { display: flex; align-items: center; padding: 0.875rem 1.5rem; margin: 0.5rem 1rem; border-radius: 0.75rem; color: rgba(255, 255, 255, 0.7); transition: all 0.3s ease; position: relative; overflow: hidden; font-weight: 600; text-decoration: none; } .sidebar-menu-item i { width: 24px; margin-right: 12px; font-size: 1.2rem; color: rgba(255, 255, 255, 0.7); } .sidebar-menu-item:hover { background: rgba(255, 255, 255, 0.1); color: white; } .sidebar-menu-item:hover i { color: white; } .sidebar-menu-item.active { background: rgba(255, 255, 255, 0.15); color: white; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.2); } .sidebar-menu-item.active i { color: white; } .sidebar-menu-item.active::before { content: ''; position: absolute; left: 0; top: 0; height: 100%; width: 4px; background: white; border-radius: 0 4px 4px 0; } /* Logout button special style */ .sidebar-menu-item.logout { color: #fca5a5; } .sidebar-menu-item.logout i { color: #fca5a5; } .sidebar-menu-item.logout:hover { background: rgba(239, 68, 68, 0.2); color: #fee2e2; } .sidebar-menu-item.logout:hover i { color: #fee2e2; } /* Sidebar Footer */ .sidebar-footer { position: absolute; bottom: 0; left: 0; right: 0; padding: 1.5rem; border-top: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.2); } .sidebar-user-info { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem; background: rgba(255, 255, 255, 0.1); border-radius: 0.75rem; } .sidebar-user-avatar { width: 40px; height: 40px; background: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; color: #1e3a8a; font-size: 1.1rem; } .sidebar-user-details { flex: 1; } .sidebar-user-name { font-weight: 700; color: white; font-size: 0.9rem; } .sidebar-user-role { font-size: 0.7rem; color: rgba(255, 255, 255, 0.7); } /* ===== MAIN CONTENT ===== */ .main-content { margin-left: 280px; min-height: 100vh; transition: margin-left 0.3s ease; } /* Navbar Sticky */ .navbar-sticky { position: sticky; top: 0; z-index: 40; background: #1e3a8a; border-bottom: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); height: 64px; display: flex; align-items: center; } /* ===== MOBILE MENU BUTTON ===== */ .mobile-menu-btn { display: none; position: fixed; bottom: 20px; right: 20px; z-index: 100; width: 50px; height: 50px; background: #1e3a8a; border-radius: 50%; color: white; align-items: center; justify-content: center; font-size: 1.5rem; box-shadow: 0 4px 6px -1px rgba(30, 58, 138, 0.3); cursor: pointer; border: none; transition: all 0.3s ease; } .mobile-menu-btn:hover { background: #2563eb; transform: scale(1.1); } /* ===== RESPONSIVE ===== */ @media (max-width: 768px) { .sidebar { transform: translateX(-100%); } .sidebar.open { transform: translateX(0); } .main-content { margin-left: 0; } .mobile-menu-btn { display: flex; } } /* ===== INPUT STYLES (hanya jika tidak menggunakan Tailwind) ===== */ input, select, textarea { background-color: #ffffff; border: 1px solid rgba(30, 58, 138, 0.2); color: #1e293b; border-radius: 0.5rem; padding: 0.5rem 0.75rem; transition: all 0.3s ease; } input:focus, select:focus, textarea:focus { border-color: #1e3a8a; outline: none; box-shadow: 0 0 0 3px rgba(30, 58, 138, 0.1); } input::placeholder { color: #94a3b8; } /* ===== TABLE SCROLL (khusus untuk scroll) ===== */ .table-scroll { max-height: 400px; overflow-y: auto; overflow-x: auto; border-radius: 0.75rem; } .table-scroll thead th { position: sticky; top: 0; background: rgba(30, 58, 138, 0.05); z-index: 10; } /* ===== CUSTOM SCROLLBAR ===== */ .custom-scrollbar::-webkit-scrollbar { width: 6px; height: 6px; } .custom-scrollbar::-webkit-scrollbar-track { background: #f1f5f9; } .custom-scrollbar::-webkit-scrollbar-thumb { background: #1e3a8a; border-radius: 10px; } .custom-scrollbar::-webkit-scrollbar-thumb:hover { background: #2563eb; } /* ===== MODAL (hanya untuk struktur) ===== */ .modal-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(4px); z-index: 100; } /* ===== ANIMATIONS ===== */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .animate-pulse-custom { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } @keyframes slideIn { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .animate-slide-in { animation: slideIn 0.3s ease-out; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .spinner { border: 3px solid rgba(30, 58, 138, 0.1); border-radius: 50%; border-top: 3px solid #1e3a8a; width: 40px; height: 40px; animation: spin 1s linear infinite; } /* ===== PRINT STYLES ===== */ @media print { .sidebar, .navbar-sticky, .mobile-menu-btn, .btn-primary, .btn-secondary { display: none !important; } .main-content { margin-left: 0 !important; } } /* ===== UTILITY CLASSES (hanya yang tidak ada di Tailwind) ===== */ .text-white-70 { color: rgba(255, 255, 255, 0.7); } .text-white-50 { color: rgba(255, 255, 255, 0.5); } .bg-white-10 { background: rgba(255, 255, 255, 0.1); } .bg-white-20 { background: rgba(255, 255, 255, 0.2); }